@newyorkcompute/kalshi-core 0.1.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cache.d.ts +71 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +96 -0
- package/dist/cache.js.map +1 -0
- package/dist/cache.test.d.ts +5 -0
- package/dist/cache.test.d.ts.map +1 -0
- package/dist/cache.test.js +108 -0
- package/dist/cache.test.js.map +1 -0
- package/dist/config.d.ts +61 -6
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +56 -5
- package/dist/config.js.map +1 -1
- package/dist/config.test.d.ts +2 -0
- package/dist/config.test.d.ts.map +1 -0
- package/dist/config.test.js +94 -0
- package/dist/config.test.js.map +1 -0
- package/dist/format.d.ts +110 -2
- package/dist/format.d.ts.map +1 -1
- package/dist/format.js +151 -2
- package/dist/format.js.map +1 -1
- package/dist/format.test.js +107 -2
- package/dist/format.test.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/rate-limiter.d.ts +80 -0
- package/dist/rate-limiter.d.ts.map +1 -0
- package/dist/rate-limiter.js +180 -0
- package/dist/rate-limiter.js.map +1 -0
- package/dist/rate-limiter.test.d.ts +5 -0
- package/dist/rate-limiter.test.d.ts.map +1 -0
- package/dist/rate-limiter.test.js +175 -0
- package/dist/rate-limiter.test.js.map +1 -0
- package/dist/websocket/auth.d.ts +28 -0
- package/dist/websocket/auth.d.ts.map +1 -0
- package/dist/websocket/auth.js +55 -0
- package/dist/websocket/auth.js.map +1 -0
- package/dist/websocket/auth.test.d.ts +2 -0
- package/dist/websocket/auth.test.d.ts.map +1 -0
- package/dist/websocket/auth.test.js +56 -0
- package/dist/websocket/auth.test.js.map +1 -0
- package/dist/websocket/client.d.ts +95 -0
- package/dist/websocket/client.d.ts.map +1 -0
- package/dist/websocket/client.js +352 -0
- package/dist/websocket/client.js.map +1 -0
- package/dist/websocket/index.d.ts +9 -0
- package/dist/websocket/index.d.ts.map +1 -0
- package/dist/websocket/index.js +9 -0
- package/dist/websocket/index.js.map +1 -0
- package/dist/websocket/types.d.ts +160 -0
- package/dist/websocket/types.d.ts.map +1 -0
- package/dist/websocket/types.js +12 -0
- package/dist/websocket/types.js.map +1 -0
- package/dist/websocket/types.test.d.ts +2 -0
- package/dist/websocket/types.test.d.ts.map +1 -0
- package/dist/websocket/types.test.js +17 -0
- package/dist/websocket/types.test.js.map +1 -0
- package/package.json +8 -4
package/dist/cache.d.ts
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TTL Cache
|
|
3
|
+
*
|
|
4
|
+
* Lightweight in-memory cache with time-to-live expiration.
|
|
5
|
+
* Useful for caching API responses to reduce rate limiting.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Get cached data if not expired
|
|
9
|
+
*
|
|
10
|
+
* @param key - Cache key
|
|
11
|
+
* @param ttl - Time-to-live in milliseconds (default: 60s)
|
|
12
|
+
* @returns Cached data or null if expired/missing
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* const data = getCached<Market[]>('markets', 30000);
|
|
17
|
+
* if (!data) {
|
|
18
|
+
* // Fetch fresh data
|
|
19
|
+
* }
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare function getCached<T>(key: string, ttl?: number): T | null;
|
|
23
|
+
/**
|
|
24
|
+
* Set cached data with current timestamp
|
|
25
|
+
*
|
|
26
|
+
* @param key - Cache key
|
|
27
|
+
* @param data - Data to cache
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```ts
|
|
31
|
+
* setCache('markets', marketData);
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare function setCache<T>(key: string, data: T): void;
|
|
35
|
+
/**
|
|
36
|
+
* Clear specific cache entry
|
|
37
|
+
*
|
|
38
|
+
* @param key - Cache key to clear
|
|
39
|
+
*/
|
|
40
|
+
export declare function clearCache(key: string): void;
|
|
41
|
+
/**
|
|
42
|
+
* Clear all cache entries
|
|
43
|
+
*/
|
|
44
|
+
export declare function clearAllCache(): void;
|
|
45
|
+
/**
|
|
46
|
+
* Get cache statistics (for debugging)
|
|
47
|
+
*
|
|
48
|
+
* @returns Object with cache size and keys
|
|
49
|
+
*/
|
|
50
|
+
export declare function getCacheStats(): {
|
|
51
|
+
size: number;
|
|
52
|
+
keys: string[];
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Common TTL constants for Kalshi data
|
|
56
|
+
*/
|
|
57
|
+
export declare const CACHE_TTL: {
|
|
58
|
+
/** 5 minutes - Trade history doesn't change rapidly */
|
|
59
|
+
readonly PRICE_HISTORY: number;
|
|
60
|
+
/** 10 minutes - Market titles/close times rarely change */
|
|
61
|
+
readonly MARKET_METADATA: number;
|
|
62
|
+
/** 1 minute - Events list */
|
|
63
|
+
readonly EVENTS: number;
|
|
64
|
+
/** No cache - Orderbook needs real-time data */
|
|
65
|
+
readonly ORDERBOOK: 0;
|
|
66
|
+
/** No cache - Balance needs real-time data */
|
|
67
|
+
readonly BALANCE: 0;
|
|
68
|
+
/** No cache - Positions need real-time data */
|
|
69
|
+
readonly POSITIONS: 0;
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAoB,GAAG,CAAC,GAAG,IAAI,CAY7E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAKtD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE5C;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAKhE;AAED;;GAEG;AACH,eAAO,MAAM,SAAS;IACpB,uDAAuD;;IAEvD,2DAA2D;;IAE3D,6BAA6B;;IAE7B,gDAAgD;;IAEhD,8CAA8C;;IAE9C,+CAA+C;;CAEvC,CAAC"}
|
package/dist/cache.js
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TTL Cache
|
|
3
|
+
*
|
|
4
|
+
* Lightweight in-memory cache with time-to-live expiration.
|
|
5
|
+
* Useful for caching API responses to reduce rate limiting.
|
|
6
|
+
*/
|
|
7
|
+
// Cache storage
|
|
8
|
+
const cache = new Map();
|
|
9
|
+
// Default TTL: 1 minute
|
|
10
|
+
const DEFAULT_TTL = 60 * 1000;
|
|
11
|
+
/**
|
|
12
|
+
* Get cached data if not expired
|
|
13
|
+
*
|
|
14
|
+
* @param key - Cache key
|
|
15
|
+
* @param ttl - Time-to-live in milliseconds (default: 60s)
|
|
16
|
+
* @returns Cached data or null if expired/missing
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* const data = getCached<Market[]>('markets', 30000);
|
|
21
|
+
* if (!data) {
|
|
22
|
+
* // Fetch fresh data
|
|
23
|
+
* }
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export function getCached(key, ttl = DEFAULT_TTL) {
|
|
27
|
+
const entry = cache.get(key);
|
|
28
|
+
if (!entry)
|
|
29
|
+
return null;
|
|
30
|
+
const isExpired = Date.now() - entry.timestamp > ttl;
|
|
31
|
+
if (isExpired) {
|
|
32
|
+
cache.delete(key);
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
return entry.data;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Set cached data with current timestamp
|
|
39
|
+
*
|
|
40
|
+
* @param key - Cache key
|
|
41
|
+
* @param data - Data to cache
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```ts
|
|
45
|
+
* setCache('markets', marketData);
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export function setCache(key, data) {
|
|
49
|
+
cache.set(key, {
|
|
50
|
+
data,
|
|
51
|
+
timestamp: Date.now(),
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Clear specific cache entry
|
|
56
|
+
*
|
|
57
|
+
* @param key - Cache key to clear
|
|
58
|
+
*/
|
|
59
|
+
export function clearCache(key) {
|
|
60
|
+
cache.delete(key);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Clear all cache entries
|
|
64
|
+
*/
|
|
65
|
+
export function clearAllCache() {
|
|
66
|
+
cache.clear();
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get cache statistics (for debugging)
|
|
70
|
+
*
|
|
71
|
+
* @returns Object with cache size and keys
|
|
72
|
+
*/
|
|
73
|
+
export function getCacheStats() {
|
|
74
|
+
return {
|
|
75
|
+
size: cache.size,
|
|
76
|
+
keys: Array.from(cache.keys()),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Common TTL constants for Kalshi data
|
|
81
|
+
*/
|
|
82
|
+
export const CACHE_TTL = {
|
|
83
|
+
/** 5 minutes - Trade history doesn't change rapidly */
|
|
84
|
+
PRICE_HISTORY: 5 * 60 * 1000,
|
|
85
|
+
/** 10 minutes - Market titles/close times rarely change */
|
|
86
|
+
MARKET_METADATA: 10 * 60 * 1000,
|
|
87
|
+
/** 1 minute - Events list */
|
|
88
|
+
EVENTS: 60 * 1000,
|
|
89
|
+
/** No cache - Orderbook needs real-time data */
|
|
90
|
+
ORDERBOOK: 0,
|
|
91
|
+
/** No cache - Balance needs real-time data */
|
|
92
|
+
BALANCE: 0,
|
|
93
|
+
/** No cache - Positions need real-time data */
|
|
94
|
+
POSITIONS: 0,
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,gBAAgB;AAChB,MAAM,KAAK,GAAG,IAAI,GAAG,EAA+B,CAAC;AAErD,wBAAwB;AACxB,MAAM,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC;AAE9B;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,SAAS,CAAI,GAAW,EAAE,MAAc,WAAW;IACjE,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAE7B,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;IACrD,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC,IAAS,CAAC;AACzB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,QAAQ,CAAI,GAAW,EAAE,IAAO;IAC9C,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;QACb,IAAI;QACJ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;KAC/B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,uDAAuD;IACvD,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;IAC5B,2DAA2D;IAC3D,eAAe,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;IAC/B,6BAA6B;IAC7B,MAAM,EAAE,EAAE,GAAG,IAAI;IACjB,gDAAgD;IAChD,SAAS,EAAE,CAAC;IACZ,8CAA8C;IAC9C,OAAO,EAAE,CAAC;IACV,+CAA+C;IAC/C,SAAS,EAAE,CAAC;CACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.test.d.ts","sourceRoot":"","sources":["../src/cache.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache Tests
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it, expect, beforeEach, vi, afterEach } from 'vitest';
|
|
5
|
+
import { getCached, setCache, clearCache, clearAllCache, getCacheStats, CACHE_TTL, } from './cache.js';
|
|
6
|
+
describe('cache', () => {
|
|
7
|
+
beforeEach(() => {
|
|
8
|
+
clearAllCache();
|
|
9
|
+
vi.useFakeTimers();
|
|
10
|
+
});
|
|
11
|
+
afterEach(() => {
|
|
12
|
+
vi.useRealTimers();
|
|
13
|
+
});
|
|
14
|
+
describe('setCache and getCached', () => {
|
|
15
|
+
it('should store and retrieve data', () => {
|
|
16
|
+
const data = { ticker: 'KXBTC', price: 50 };
|
|
17
|
+
setCache('market-1', data);
|
|
18
|
+
const result = getCached('market-1');
|
|
19
|
+
expect(result).toEqual(data);
|
|
20
|
+
});
|
|
21
|
+
it('should return null for non-existent key', () => {
|
|
22
|
+
const result = getCached('non-existent');
|
|
23
|
+
expect(result).toBeNull();
|
|
24
|
+
});
|
|
25
|
+
it('should return null after TTL expires', () => {
|
|
26
|
+
const data = { value: 42 };
|
|
27
|
+
setCache('test-key', data);
|
|
28
|
+
// Advance time past default TTL (60s)
|
|
29
|
+
vi.advanceTimersByTime(61 * 1000);
|
|
30
|
+
const result = getCached('test-key');
|
|
31
|
+
expect(result).toBeNull();
|
|
32
|
+
});
|
|
33
|
+
it('should return data before TTL expires', () => {
|
|
34
|
+
const data = { value: 42 };
|
|
35
|
+
setCache('test-key', data);
|
|
36
|
+
// Advance time but stay within TTL
|
|
37
|
+
vi.advanceTimersByTime(30 * 1000);
|
|
38
|
+
const result = getCached('test-key');
|
|
39
|
+
expect(result).toEqual(data);
|
|
40
|
+
});
|
|
41
|
+
it('should respect custom TTL', () => {
|
|
42
|
+
const data = { value: 'test' };
|
|
43
|
+
const customTTL = 5000; // 5 seconds
|
|
44
|
+
setCache('custom-ttl', data);
|
|
45
|
+
// Still valid at 4 seconds
|
|
46
|
+
vi.advanceTimersByTime(4000);
|
|
47
|
+
expect(getCached('custom-ttl', customTTL)).toEqual(data);
|
|
48
|
+
// Expired at 6 seconds
|
|
49
|
+
vi.advanceTimersByTime(2000);
|
|
50
|
+
expect(getCached('custom-ttl', customTTL)).toBeNull();
|
|
51
|
+
});
|
|
52
|
+
it('should overwrite existing cache entry', () => {
|
|
53
|
+
setCache('key', { v: 1 });
|
|
54
|
+
setCache('key', { v: 2 });
|
|
55
|
+
const result = getCached('key');
|
|
56
|
+
expect(result).toEqual({ v: 2 });
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
describe('clearCache', () => {
|
|
60
|
+
it('should clear specific cache entry', () => {
|
|
61
|
+
setCache('key1', 'value1');
|
|
62
|
+
setCache('key2', 'value2');
|
|
63
|
+
clearCache('key1');
|
|
64
|
+
expect(getCached('key1')).toBeNull();
|
|
65
|
+
expect(getCached('key2')).toBe('value2');
|
|
66
|
+
});
|
|
67
|
+
it('should handle clearing non-existent key', () => {
|
|
68
|
+
expect(() => clearCache('non-existent')).not.toThrow();
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
describe('clearAllCache', () => {
|
|
72
|
+
it('should clear all cache entries', () => {
|
|
73
|
+
setCache('key1', 'value1');
|
|
74
|
+
setCache('key2', 'value2');
|
|
75
|
+
setCache('key3', 'value3');
|
|
76
|
+
clearAllCache();
|
|
77
|
+
expect(getCached('key1')).toBeNull();
|
|
78
|
+
expect(getCached('key2')).toBeNull();
|
|
79
|
+
expect(getCached('key3')).toBeNull();
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
describe('getCacheStats', () => {
|
|
83
|
+
it('should return cache statistics', () => {
|
|
84
|
+
setCache('key1', 'value1');
|
|
85
|
+
setCache('key2', 'value2');
|
|
86
|
+
const stats = getCacheStats();
|
|
87
|
+
expect(stats.size).toBe(2);
|
|
88
|
+
expect(stats.keys).toContain('key1');
|
|
89
|
+
expect(stats.keys).toContain('key2');
|
|
90
|
+
});
|
|
91
|
+
it('should return empty stats for empty cache', () => {
|
|
92
|
+
const stats = getCacheStats();
|
|
93
|
+
expect(stats.size).toBe(0);
|
|
94
|
+
expect(stats.keys).toEqual([]);
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
describe('CACHE_TTL constants', () => {
|
|
98
|
+
it('should have expected TTL values', () => {
|
|
99
|
+
expect(CACHE_TTL.PRICE_HISTORY).toBe(5 * 60 * 1000);
|
|
100
|
+
expect(CACHE_TTL.MARKET_METADATA).toBe(10 * 60 * 1000);
|
|
101
|
+
expect(CACHE_TTL.EVENTS).toBe(60 * 1000);
|
|
102
|
+
expect(CACHE_TTL.ORDERBOOK).toBe(0);
|
|
103
|
+
expect(CACHE_TTL.BALANCE).toBe(0);
|
|
104
|
+
expect(CACHE_TTL.POSITIONS).toBe(0);
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
//# sourceMappingURL=cache.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.test.js","sourceRoot":"","sources":["../src/cache.test.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -5,7 +5,11 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Configuration, MarketApi, PortfolioApi, OrdersApi, EventsApi } from "kalshi-typescript";
|
|
7
7
|
/**
|
|
8
|
-
* Kalshi API configuration
|
|
8
|
+
* Kalshi API configuration credentials
|
|
9
|
+
*
|
|
10
|
+
* @property apiKey - Kalshi API key ID
|
|
11
|
+
* @property privateKey - RSA private key in PEM format
|
|
12
|
+
* @property basePath - API base URL (production or demo)
|
|
9
13
|
*/
|
|
10
14
|
export interface KalshiConfig {
|
|
11
15
|
apiKey: string;
|
|
@@ -23,27 +27,78 @@ export declare const DEMO_BASE_PATH = "https://demo-api.kalshi.co/trade-api/v2";
|
|
|
23
27
|
/**
|
|
24
28
|
* Get Kalshi configuration from environment variables
|
|
25
29
|
*
|
|
26
|
-
*
|
|
30
|
+
* Reads from:
|
|
31
|
+
* - `KALSHI_API_KEY` - Required API key ID
|
|
32
|
+
* - `KALSHI_PRIVATE_KEY` - Required RSA private key (PEM format)
|
|
33
|
+
* - `KALSHI_BASE_PATH` - Optional base URL (defaults to production)
|
|
34
|
+
*
|
|
35
|
+
* @returns Kalshi configuration object
|
|
36
|
+
* @throws Error if KALSHI_API_KEY or KALSHI_PRIVATE_KEY is missing
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```ts
|
|
40
|
+
* const config = getKalshiConfig();
|
|
41
|
+
* const marketApi = createMarketApi(config);
|
|
42
|
+
* ```
|
|
27
43
|
*/
|
|
28
44
|
export declare function getKalshiConfig(): KalshiConfig;
|
|
29
45
|
/**
|
|
30
46
|
* Create a configured Kalshi SDK Configuration instance
|
|
47
|
+
*
|
|
48
|
+
* @param config - Kalshi API credentials
|
|
49
|
+
* @returns SDK Configuration instance for API clients
|
|
31
50
|
*/
|
|
32
51
|
export declare function createSdkConfig(config: KalshiConfig): Configuration;
|
|
33
52
|
/**
|
|
34
|
-
* Create a MarketApi instance
|
|
53
|
+
* Create a MarketApi instance for market data operations
|
|
54
|
+
*
|
|
55
|
+
* @param config - Kalshi API credentials
|
|
56
|
+
* @returns Configured MarketApi client
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```ts
|
|
60
|
+
* const api = createMarketApi(config);
|
|
61
|
+
* const markets = await api.getMarkets();
|
|
62
|
+
* ```
|
|
35
63
|
*/
|
|
36
64
|
export declare function createMarketApi(config: KalshiConfig): MarketApi;
|
|
37
65
|
/**
|
|
38
|
-
* Create a PortfolioApi instance
|
|
66
|
+
* Create a PortfolioApi instance for portfolio operations
|
|
67
|
+
*
|
|
68
|
+
* @param config - Kalshi API credentials
|
|
69
|
+
* @returns Configured PortfolioApi client
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```ts
|
|
73
|
+
* const api = createPortfolioApi(config);
|
|
74
|
+
* const balance = await api.getBalance();
|
|
75
|
+
* ```
|
|
39
76
|
*/
|
|
40
77
|
export declare function createPortfolioApi(config: KalshiConfig): PortfolioApi;
|
|
41
78
|
/**
|
|
42
|
-
* Create an OrdersApi instance
|
|
79
|
+
* Create an OrdersApi instance for order management
|
|
80
|
+
*
|
|
81
|
+
* @param config - Kalshi API credentials
|
|
82
|
+
* @returns Configured OrdersApi client
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```ts
|
|
86
|
+
* const api = createOrdersApi(config);
|
|
87
|
+
* const orders = await api.getOrders();
|
|
88
|
+
* ```
|
|
43
89
|
*/
|
|
44
90
|
export declare function createOrdersApi(config: KalshiConfig): OrdersApi;
|
|
45
91
|
/**
|
|
46
|
-
* Create an EventsApi instance
|
|
92
|
+
* Create an EventsApi instance for event data operations
|
|
93
|
+
*
|
|
94
|
+
* @param config - Kalshi API credentials
|
|
95
|
+
* @returns Configured EventsApi client
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* ```ts
|
|
99
|
+
* const api = createEventsApi(config);
|
|
100
|
+
* const events = await api.getEvents();
|
|
101
|
+
* ```
|
|
47
102
|
*/
|
|
48
103
|
export declare function createEventsApi(config: KalshiConfig): EventsApi;
|
|
49
104
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,aAAa,EACb,SAAS,EACT,YAAY,EACZ,SAAS,EACT,SAAS,EACV,MAAM,mBAAmB,CAAC;AAE3B
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,aAAa,EACb,SAAS,EACT,YAAY,EACZ,SAAS,EACT,SAAS,EACV,MAAM,mBAAmB,CAAC;AAE3B;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,kDAAkD,CAAC;AAEjF;;GAEG;AACH,eAAO,MAAM,cAAc,4CAA4C,CAAC;AAExE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAc9C;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,aAAa,CAMnE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAG/D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAGrE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAG/D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAG/D"}
|
package/dist/config.js
CHANGED
|
@@ -15,7 +15,19 @@ export const DEMO_BASE_PATH = "https://demo-api.kalshi.co/trade-api/v2";
|
|
|
15
15
|
/**
|
|
16
16
|
* Get Kalshi configuration from environment variables
|
|
17
17
|
*
|
|
18
|
-
*
|
|
18
|
+
* Reads from:
|
|
19
|
+
* - `KALSHI_API_KEY` - Required API key ID
|
|
20
|
+
* - `KALSHI_PRIVATE_KEY` - Required RSA private key (PEM format)
|
|
21
|
+
* - `KALSHI_BASE_PATH` - Optional base URL (defaults to production)
|
|
22
|
+
*
|
|
23
|
+
* @returns Kalshi configuration object
|
|
24
|
+
* @throws Error if KALSHI_API_KEY or KALSHI_PRIVATE_KEY is missing
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* const config = getKalshiConfig();
|
|
29
|
+
* const marketApi = createMarketApi(config);
|
|
30
|
+
* ```
|
|
19
31
|
*/
|
|
20
32
|
export function getKalshiConfig() {
|
|
21
33
|
const apiKey = process.env.KALSHI_API_KEY;
|
|
@@ -31,6 +43,9 @@ export function getKalshiConfig() {
|
|
|
31
43
|
}
|
|
32
44
|
/**
|
|
33
45
|
* Create a configured Kalshi SDK Configuration instance
|
|
46
|
+
*
|
|
47
|
+
* @param config - Kalshi API credentials
|
|
48
|
+
* @returns SDK Configuration instance for API clients
|
|
34
49
|
*/
|
|
35
50
|
export function createSdkConfig(config) {
|
|
36
51
|
return new Configuration({
|
|
@@ -40,28 +55,64 @@ export function createSdkConfig(config) {
|
|
|
40
55
|
});
|
|
41
56
|
}
|
|
42
57
|
/**
|
|
43
|
-
* Create a MarketApi instance
|
|
58
|
+
* Create a MarketApi instance for market data operations
|
|
59
|
+
*
|
|
60
|
+
* @param config - Kalshi API credentials
|
|
61
|
+
* @returns Configured MarketApi client
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```ts
|
|
65
|
+
* const api = createMarketApi(config);
|
|
66
|
+
* const markets = await api.getMarkets();
|
|
67
|
+
* ```
|
|
44
68
|
*/
|
|
45
69
|
export function createMarketApi(config) {
|
|
46
70
|
const sdkConfig = createSdkConfig(config);
|
|
47
71
|
return new MarketApi(sdkConfig);
|
|
48
72
|
}
|
|
49
73
|
/**
|
|
50
|
-
* Create a PortfolioApi instance
|
|
74
|
+
* Create a PortfolioApi instance for portfolio operations
|
|
75
|
+
*
|
|
76
|
+
* @param config - Kalshi API credentials
|
|
77
|
+
* @returns Configured PortfolioApi client
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```ts
|
|
81
|
+
* const api = createPortfolioApi(config);
|
|
82
|
+
* const balance = await api.getBalance();
|
|
83
|
+
* ```
|
|
51
84
|
*/
|
|
52
85
|
export function createPortfolioApi(config) {
|
|
53
86
|
const sdkConfig = createSdkConfig(config);
|
|
54
87
|
return new PortfolioApi(sdkConfig);
|
|
55
88
|
}
|
|
56
89
|
/**
|
|
57
|
-
* Create an OrdersApi instance
|
|
90
|
+
* Create an OrdersApi instance for order management
|
|
91
|
+
*
|
|
92
|
+
* @param config - Kalshi API credentials
|
|
93
|
+
* @returns Configured OrdersApi client
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```ts
|
|
97
|
+
* const api = createOrdersApi(config);
|
|
98
|
+
* const orders = await api.getOrders();
|
|
99
|
+
* ```
|
|
58
100
|
*/
|
|
59
101
|
export function createOrdersApi(config) {
|
|
60
102
|
const sdkConfig = createSdkConfig(config);
|
|
61
103
|
return new OrdersApi(sdkConfig);
|
|
62
104
|
}
|
|
63
105
|
/**
|
|
64
|
-
* Create an EventsApi instance
|
|
106
|
+
* Create an EventsApi instance for event data operations
|
|
107
|
+
*
|
|
108
|
+
* @param config - Kalshi API credentials
|
|
109
|
+
* @returns Configured EventsApi client
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* ```ts
|
|
113
|
+
* const api = createEventsApi(config);
|
|
114
|
+
* const events = await api.getEvents();
|
|
115
|
+
* ```
|
|
65
116
|
*/
|
|
66
117
|
export function createEventsApi(config) {
|
|
67
118
|
const sdkConfig = createSdkConfig(config);
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,aAAa,EACb,SAAS,EACT,YAAY,EACZ,SAAS,EACT,SAAS,GACV,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,aAAa,EACb,SAAS,EACT,YAAY,EACZ,SAAS,EACT,SAAS,GACV,MAAM,mBAAmB,CAAC;AAe3B;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,+CAA+C,CAAC;AAEjF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,yCAAyC,CAAC;AAExE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,iBAAiB,CAAC;IAEnE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AAC1C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,MAAoB;IAClD,OAAO,IAAI,aAAa,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,aAAa,EAAE,MAAM,CAAC,UAAU;QAChC,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAAC,MAAoB;IAClD,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAoB;IACrD,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAAC,MAAoB;IAClD,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAAC,MAAoB;IAClD,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.test.d.ts","sourceRoot":"","sources":["../src/config.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
|
|
2
|
+
import { getKalshiConfig, createSdkConfig, createMarketApi, createPortfolioApi, createOrdersApi, createEventsApi, DEFAULT_BASE_PATH, DEMO_BASE_PATH, } from "./config.js";
|
|
3
|
+
// Mock kalshi-typescript
|
|
4
|
+
vi.mock("kalshi-typescript", () => ({
|
|
5
|
+
Configuration: vi.fn().mockImplementation((config) => ({
|
|
6
|
+
apiKey: config.apiKey,
|
|
7
|
+
privateKeyPem: config.privateKeyPem,
|
|
8
|
+
basePath: config.basePath,
|
|
9
|
+
})),
|
|
10
|
+
MarketApi: vi.fn().mockImplementation(() => ({ name: "MarketApi" })),
|
|
11
|
+
PortfolioApi: vi.fn().mockImplementation(() => ({ name: "PortfolioApi" })),
|
|
12
|
+
OrdersApi: vi.fn().mockImplementation(() => ({ name: "OrdersApi" })),
|
|
13
|
+
EventsApi: vi.fn().mockImplementation(() => ({ name: "EventsApi" })),
|
|
14
|
+
}));
|
|
15
|
+
describe("constants", () => {
|
|
16
|
+
it("exports DEFAULT_BASE_PATH", () => {
|
|
17
|
+
expect(DEFAULT_BASE_PATH).toBe("https://api.elections.kalshi.com/trade-api/v2");
|
|
18
|
+
});
|
|
19
|
+
it("exports DEMO_BASE_PATH", () => {
|
|
20
|
+
expect(DEMO_BASE_PATH).toBe("https://demo-api.kalshi.co/trade-api/v2");
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
describe("getKalshiConfig", () => {
|
|
24
|
+
const originalEnv = process.env;
|
|
25
|
+
beforeEach(() => {
|
|
26
|
+
vi.resetModules();
|
|
27
|
+
process.env = { ...originalEnv };
|
|
28
|
+
});
|
|
29
|
+
afterEach(() => {
|
|
30
|
+
process.env = originalEnv;
|
|
31
|
+
});
|
|
32
|
+
it("returns config from environment variables", () => {
|
|
33
|
+
process.env.KALSHI_API_KEY = "test-api-key";
|
|
34
|
+
process.env.KALSHI_PRIVATE_KEY = "test-private-key";
|
|
35
|
+
const config = getKalshiConfig();
|
|
36
|
+
expect(config.apiKey).toBe("test-api-key");
|
|
37
|
+
expect(config.privateKey).toBe("test-private-key");
|
|
38
|
+
expect(config.basePath).toBe(DEFAULT_BASE_PATH);
|
|
39
|
+
});
|
|
40
|
+
it("uses custom base path from environment", () => {
|
|
41
|
+
process.env.KALSHI_API_KEY = "test-api-key";
|
|
42
|
+
process.env.KALSHI_PRIVATE_KEY = "test-private-key";
|
|
43
|
+
process.env.KALSHI_BASE_PATH = DEMO_BASE_PATH;
|
|
44
|
+
const config = getKalshiConfig();
|
|
45
|
+
expect(config.basePath).toBe(DEMO_BASE_PATH);
|
|
46
|
+
});
|
|
47
|
+
it("throws error if KALSHI_API_KEY is missing", () => {
|
|
48
|
+
delete process.env.KALSHI_API_KEY;
|
|
49
|
+
process.env.KALSHI_PRIVATE_KEY = "test-private-key";
|
|
50
|
+
expect(() => getKalshiConfig()).toThrow("KALSHI_API_KEY environment variable is required");
|
|
51
|
+
});
|
|
52
|
+
it("throws error if KALSHI_PRIVATE_KEY is missing", () => {
|
|
53
|
+
process.env.KALSHI_API_KEY = "test-api-key";
|
|
54
|
+
delete process.env.KALSHI_PRIVATE_KEY;
|
|
55
|
+
expect(() => getKalshiConfig()).toThrow("KALSHI_PRIVATE_KEY environment variable is required");
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
describe("createSdkConfig", () => {
|
|
59
|
+
it("creates Configuration with correct parameters", () => {
|
|
60
|
+
const config = {
|
|
61
|
+
apiKey: "test-api-key",
|
|
62
|
+
privateKey: "test-private-key",
|
|
63
|
+
basePath: DEFAULT_BASE_PATH,
|
|
64
|
+
};
|
|
65
|
+
const sdkConfig = createSdkConfig(config);
|
|
66
|
+
expect(sdkConfig.apiKey).toBe("test-api-key");
|
|
67
|
+
expect(sdkConfig.privateKeyPem).toBe("test-private-key");
|
|
68
|
+
expect(sdkConfig.basePath).toBe(DEFAULT_BASE_PATH);
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
describe("API factory functions", () => {
|
|
72
|
+
const testConfig = {
|
|
73
|
+
apiKey: "test-api-key",
|
|
74
|
+
privateKey: "test-private-key",
|
|
75
|
+
basePath: DEFAULT_BASE_PATH,
|
|
76
|
+
};
|
|
77
|
+
it("createMarketApi returns MarketApi instance", () => {
|
|
78
|
+
const api = createMarketApi(testConfig);
|
|
79
|
+
expect(api).toEqual({ name: "MarketApi" });
|
|
80
|
+
});
|
|
81
|
+
it("createPortfolioApi returns PortfolioApi instance", () => {
|
|
82
|
+
const api = createPortfolioApi(testConfig);
|
|
83
|
+
expect(api).toEqual({ name: "PortfolioApi" });
|
|
84
|
+
});
|
|
85
|
+
it("createOrdersApi returns OrdersApi instance", () => {
|
|
86
|
+
const api = createOrdersApi(testConfig);
|
|
87
|
+
expect(api).toEqual({ name: "OrdersApi" });
|
|
88
|
+
});
|
|
89
|
+
it("createEventsApi returns EventsApi instance", () => {
|
|
90
|
+
const api = createEventsApi(testConfig);
|
|
91
|
+
expect(api).toEqual({ name: "EventsApi" });
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
//# sourceMappingURL=config.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.test.js","sourceRoot":"","sources":["../src/config.test.ts"],"names":[],"mappings":"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"}
|