src/index.test.ts
v0.3.0 · 1.9 KB
import { describe, expect, it } from 'vitest';
import * as kit from './index.js';
import * as accountMod from './account/index.js';
import * as riskMod from './risk/index.js';
import * as wsMod from './ws/index.js';
import * as assetsMod from './assets/index.js';
describe('package entry', () => {
it('exposes one namespace per module', () => {
for (const ns of ['format', 'assets', 'transport', 'errors', 'account', 'history', 'risk', 'ws', 'orders']) {
expect(typeof (kit as Record<string, unknown>)[ns]).toBe('object');
}
expect(kit.format.formatPrice).toBe(kit.formatPrice);
expect(kit.orders.buildOrder).toBe(kit.buildOrder);
});
it('re-exports the shared contract', () => {
expect(kit.API_URL.mainnet).toBe('https://api.hyperliquid.xyz');
expect(kit.WS_URL.testnet).toContain('testnet');
});
it('resolves name collisions explicitly', () => {
expect(kit.parseUserFees).toBe(accountMod.parseUserFees);
expect(kit.parseUserFeeRates).toBe(riskMod.parseUserFees);
expect(kit.normalizeAddress).toBe(accountMod.normalizeAddress);
expect(kit.normalizeWsAddress).toBe(wsMod.normalizeAddress);
expect(kit.isSpotCoin).toBe(assetsMod.isSpotCoin);
});
it('exports every runtime value of every module under the flat entry', () => {
const renamed: Record<string, string[]> = {
risk: ['parseUserFees'],
ws: ['normalizeAddress'],
history: ['isSpotCoin'],
};
for (const [name, mod] of Object.entries({
format: kit.format, assets: kit.assets, transport: kit.transport, errors: kit.errors,
account: kit.account, history: kit.history, risk: kit.risk, ws: kit.ws, orders: kit.orders,
})) {
for (const key of Object.keys(mod)) {
if (renamed[name]?.includes(key)) continue;
expect((kit as Record<string, unknown>)[key], `${name}.${key}`).toBe((mod as Record<string, unknown>)[key]);
}
}
});
});