pmxt-core 2.48.5 → 2.48.6
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/BaseExchange.js +2 -0
- package/dist/exchanges/baozi/normalizer.js +3 -3
- package/dist/exchanges/kalshi/api.d.ts +1 -1
- package/dist/exchanges/kalshi/api.js +1 -1
- package/dist/exchanges/limitless/api.d.ts +1 -1
- package/dist/exchanges/limitless/api.js +1 -1
- package/dist/exchanges/myriad/api.d.ts +1 -1
- package/dist/exchanges/myriad/api.js +1 -1
- package/dist/exchanges/opinion/api.d.ts +1 -1
- package/dist/exchanges/opinion/api.js +1 -1
- package/dist/exchanges/opinion/normalizer.js +9 -5
- package/dist/exchanges/opinion/utils.d.ts +1 -1
- package/dist/exchanges/opinion/utils.js +3 -1
- package/dist/exchanges/polymarket/api-clob.d.ts +1 -1
- package/dist/exchanges/polymarket/api-clob.js +1 -1
- package/dist/exchanges/polymarket/api-data.d.ts +1 -1
- package/dist/exchanges/polymarket/api-data.js +1 -1
- package/dist/exchanges/polymarket/api-gamma.d.ts +1 -1
- package/dist/exchanges/polymarket/api-gamma.js +1 -1
- package/dist/exchanges/probable/api.d.ts +1 -1
- package/dist/exchanges/probable/api.js +1 -1
- package/dist/server/openapi.yaml +3 -2
- package/dist/types.d.ts +4 -2
- package/package.json +3 -3
package/dist/BaseExchange.js
CHANGED
|
@@ -756,6 +756,8 @@ class PredictionMarketExchange {
|
|
|
756
756
|
// ResolutionDate filter
|
|
757
757
|
if (criteria.resolutionDate) {
|
|
758
758
|
const resDate = market.resolutionDate;
|
|
759
|
+
if (!resDate)
|
|
760
|
+
return false;
|
|
759
761
|
if (criteria.resolutionDate.before && resDate >= criteria.resolutionDate.before) {
|
|
760
762
|
return false;
|
|
761
763
|
}
|
|
@@ -170,10 +170,10 @@ function applyFilters(markets, params) {
|
|
|
170
170
|
if (status !== 'all') {
|
|
171
171
|
const now = Date.now();
|
|
172
172
|
if (status === 'active') {
|
|
173
|
-
result = result.filter(m => m.resolutionDate.getTime() > now);
|
|
173
|
+
result = result.filter(m => !m.resolutionDate || m.resolutionDate.getTime() > now);
|
|
174
174
|
}
|
|
175
175
|
else {
|
|
176
|
-
result = result.filter(m => m.resolutionDate.getTime() <= now);
|
|
176
|
+
result = result.filter(m => m.resolutionDate && m.resolutionDate.getTime() <= now);
|
|
177
177
|
}
|
|
178
178
|
}
|
|
179
179
|
// Text search
|
|
@@ -198,7 +198,7 @@ function applyFilters(markets, params) {
|
|
|
198
198
|
result.sort((a, b) => b.liquidity - a.liquidity);
|
|
199
199
|
}
|
|
200
200
|
else if (params?.sort === 'newest') {
|
|
201
|
-
result.sort((a, b) => b.resolutionDate
|
|
201
|
+
result.sort((a, b) => (b.resolutionDate?.getTime() ?? 0) - (a.resolutionDate?.getTime() ?? 0));
|
|
202
202
|
}
|
|
203
203
|
else {
|
|
204
204
|
result.sort((a, b) => (b.volume || 0) - (a.volume || 0));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/kalshi/Kalshi.yaml
|
|
3
|
-
* Generated at: 2026-06-
|
|
3
|
+
* Generated at: 2026-06-04T11:40:47.252Z
|
|
4
4
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
5
5
|
*/
|
|
6
6
|
export declare const kalshiApiSpec: {
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.kalshiApiSpec = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/kalshi/Kalshi.yaml
|
|
6
|
-
* Generated at: 2026-06-
|
|
6
|
+
* Generated at: 2026-06-04T11:40:47.252Z
|
|
7
7
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
8
8
|
*/
|
|
9
9
|
exports.kalshiApiSpec = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/limitless/Limitless.yaml
|
|
3
|
-
* Generated at: 2026-06-
|
|
3
|
+
* Generated at: 2026-06-04T11:40:47.289Z
|
|
4
4
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
5
5
|
*/
|
|
6
6
|
export declare const limitlessApiSpec: {
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.limitlessApiSpec = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/limitless/Limitless.yaml
|
|
6
|
-
* Generated at: 2026-06-
|
|
6
|
+
* Generated at: 2026-06-04T11:40:47.289Z
|
|
7
7
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
8
8
|
*/
|
|
9
9
|
exports.limitlessApiSpec = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/myriad/myriad.yaml
|
|
3
|
-
* Generated at: 2026-06-
|
|
3
|
+
* Generated at: 2026-06-04T11:40:47.300Z
|
|
4
4
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
5
5
|
*/
|
|
6
6
|
export declare const myriadApiSpec: {
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.myriadApiSpec = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/myriad/myriad.yaml
|
|
6
|
-
* Generated at: 2026-06-
|
|
6
|
+
* Generated at: 2026-06-04T11:40:47.300Z
|
|
7
7
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
8
8
|
*/
|
|
9
9
|
exports.myriadApiSpec = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/opinion/opinion-openapi.yaml
|
|
3
|
-
* Generated at: 2026-06-
|
|
3
|
+
* Generated at: 2026-06-04T11:40:47.305Z
|
|
4
4
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
5
5
|
*/
|
|
6
6
|
export declare const opinionApiSpec: {
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.opinionApiSpec = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/opinion/opinion-openapi.yaml
|
|
6
|
-
* Generated at: 2026-06-
|
|
6
|
+
* Generated at: 2026-06-04T11:40:47.305Z
|
|
7
7
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
8
8
|
*/
|
|
9
9
|
exports.opinionApiSpec = {
|
|
@@ -157,7 +157,7 @@ class OpinionNormalizer {
|
|
|
157
157
|
normalizeTrade(raw, index) {
|
|
158
158
|
return {
|
|
159
159
|
id: raw.txHash || String(index),
|
|
160
|
-
timestamp: (0, utils_1.toMillis)(raw.createdAt),
|
|
160
|
+
timestamp: (0, utils_1.toMillis)(raw.createdAt) ?? 0,
|
|
161
161
|
price: (0, utils_1.parseNumStr)(raw.price),
|
|
162
162
|
amount: (0, utils_1.parseNumStr)(raw.shares),
|
|
163
163
|
side: raw.side === 'BUY' ? 'buy' : raw.side === 'SELL' ? 'sell' : 'unknown',
|
|
@@ -167,7 +167,7 @@ class OpinionNormalizer {
|
|
|
167
167
|
normalizeUserTrade(raw, index) {
|
|
168
168
|
return {
|
|
169
169
|
id: raw.txHash || String(index),
|
|
170
|
-
timestamp: (0, utils_1.toMillis)(raw.createdAt),
|
|
170
|
+
timestamp: (0, utils_1.toMillis)(raw.createdAt) ?? 0,
|
|
171
171
|
price: (0, utils_1.parseNumStr)(raw.price),
|
|
172
172
|
amount: (0, utils_1.parseNumStr)(raw.shares),
|
|
173
173
|
side: raw.side === 'BUY' ? 'buy' : raw.side === 'SELL' ? 'sell' : 'unknown',
|
|
@@ -203,7 +203,7 @@ class OpinionNormalizer {
|
|
|
203
203
|
status: (0, utils_1.mapOrderStatus)(raw.status),
|
|
204
204
|
filled: filledShares,
|
|
205
205
|
remaining: orderShares - filledShares,
|
|
206
|
-
timestamp: (0, utils_1.toMillis)(raw.createdAt),
|
|
206
|
+
timestamp: (0, utils_1.toMillis)(raw.createdAt) ?? 0,
|
|
207
207
|
};
|
|
208
208
|
}
|
|
209
209
|
// -- Price enrichment -----------------------------------------------------
|
|
@@ -279,7 +279,9 @@ class OpinionNormalizer {
|
|
|
279
279
|
title: raw.marketTitle || '',
|
|
280
280
|
description: raw.rules || '',
|
|
281
281
|
outcomes: [yesOutcome, noOutcome],
|
|
282
|
-
resolutionDate:
|
|
282
|
+
resolutionDate: (0, utils_1.toMillis)(raw.cutoffAt) !== null
|
|
283
|
+
? new Date((0, utils_1.toMillis)(raw.cutoffAt))
|
|
284
|
+
: undefined,
|
|
283
285
|
volume24h: (0, utils_1.parseNumStr)(raw.volume24h),
|
|
284
286
|
volume: (0, utils_1.parseNumStr)(raw.volume),
|
|
285
287
|
liquidity: 0,
|
|
@@ -324,7 +326,9 @@ class OpinionNormalizer {
|
|
|
324
326
|
title: combinedTitle,
|
|
325
327
|
description: child.rules || '',
|
|
326
328
|
outcomes: [yesOutcome, noOutcome],
|
|
327
|
-
resolutionDate:
|
|
329
|
+
resolutionDate: (0, utils_1.toMillis)(child.cutoffAt || parent.cutoffAt) !== null
|
|
330
|
+
? new Date((0, utils_1.toMillis)(child.cutoffAt || parent.cutoffAt))
|
|
331
|
+
: undefined,
|
|
328
332
|
volume24h,
|
|
329
333
|
volume: (0, utils_1.parseNumStr)(child.volume),
|
|
330
334
|
liquidity: 0,
|
|
@@ -19,5 +19,5 @@ export declare function mapSortToOpinion(sort?: string): number | undefined;
|
|
|
19
19
|
export declare function mapIntervalToOpinion(interval: CandleInterval): string;
|
|
20
20
|
export declare function mapOrderStatus(status: number): 'pending' | 'open' | 'filled' | 'canceled' | 'rejected';
|
|
21
21
|
export declare function parseNumStr(value: string | undefined | null): number;
|
|
22
|
-
export declare function toMillis(ts: number | undefined | null): number;
|
|
22
|
+
export declare function toMillis(ts: number | undefined | null): number | null;
|
|
23
23
|
export declare function intervalToMs(interval: CandleInterval): number;
|
|
@@ -76,9 +76,11 @@ function parseNumStr(value) {
|
|
|
76
76
|
}
|
|
77
77
|
// Convert a raw timestamp to milliseconds.
|
|
78
78
|
// If the value is under 10_000_000_000 it is assumed to be in seconds.
|
|
79
|
+
// Returns null when the input is missing/zero so callers can distinguish
|
|
80
|
+
// "no timestamp" from "epoch" instead of coercing both to 1970-01-01.
|
|
79
81
|
function toMillis(ts) {
|
|
80
82
|
if (!ts)
|
|
81
|
-
return
|
|
83
|
+
return null;
|
|
82
84
|
return ts < 10_000_000_000 ? ts * 1000 : ts;
|
|
83
85
|
}
|
|
84
86
|
// Return the bucket size in milliseconds for a given CandleInterval
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/polymarket/PolymarketClobAPI.yaml
|
|
3
|
-
* Generated at: 2026-06-
|
|
3
|
+
* Generated at: 2026-06-04T11:40:47.258Z
|
|
4
4
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
5
5
|
*/
|
|
6
6
|
export declare const polymarketClobSpec: {
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.polymarketClobSpec = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/polymarket/PolymarketClobAPI.yaml
|
|
6
|
-
* Generated at: 2026-06-
|
|
6
|
+
* Generated at: 2026-06-04T11:40:47.258Z
|
|
7
7
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
8
8
|
*/
|
|
9
9
|
exports.polymarketClobSpec = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/polymarket/Polymarket_Data_API.yaml
|
|
3
|
-
* Generated at: 2026-06-
|
|
3
|
+
* Generated at: 2026-06-04T11:40:47.271Z
|
|
4
4
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
5
5
|
*/
|
|
6
6
|
export declare const polymarketDataSpec: {
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.polymarketDataSpec = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/polymarket/Polymarket_Data_API.yaml
|
|
6
|
-
* Generated at: 2026-06-
|
|
6
|
+
* Generated at: 2026-06-04T11:40:47.271Z
|
|
7
7
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
8
8
|
*/
|
|
9
9
|
exports.polymarketDataSpec = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/polymarket/PolymarketGammaAPI.yaml
|
|
3
|
-
* Generated at: 2026-06-
|
|
3
|
+
* Generated at: 2026-06-04T11:40:47.268Z
|
|
4
4
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
5
5
|
*/
|
|
6
6
|
export declare const polymarketGammaSpec: {
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.polymarketGammaSpec = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/polymarket/PolymarketGammaAPI.yaml
|
|
6
|
-
* Generated at: 2026-06-
|
|
6
|
+
* Generated at: 2026-06-04T11:40:47.268Z
|
|
7
7
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
8
8
|
*/
|
|
9
9
|
exports.polymarketGammaSpec = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/probable/probable.yaml
|
|
3
|
-
* Generated at: 2026-06-
|
|
3
|
+
* Generated at: 2026-06-04T11:40:47.295Z
|
|
4
4
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
5
5
|
*/
|
|
6
6
|
export declare const probableApiSpec: {
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.probableApiSpec = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/probable/probable.yaml
|
|
6
|
-
* Generated at: 2026-06-
|
|
6
|
+
* Generated at: 2026-06-04T11:40:47.295Z
|
|
7
7
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
8
8
|
*/
|
|
9
9
|
exports.probableApiSpec = {
|
package/dist/server/openapi.yaml
CHANGED
|
@@ -2655,7 +2655,9 @@ components:
|
|
|
2655
2655
|
resolutionDate:
|
|
2656
2656
|
type: string
|
|
2657
2657
|
format: date-time
|
|
2658
|
-
description:
|
|
2658
|
+
description: >-
|
|
2659
|
+
When the market is scheduled to resolve. Optional because some venues do not publish a cutoff for every
|
|
2660
|
+
market (e.g. Opinion categorical children) — emit `undefined` rather than coercing to epoch.
|
|
2659
2661
|
volume24h:
|
|
2660
2662
|
type: number
|
|
2661
2663
|
description: Trading volume over the past 24 hours (USD).
|
|
@@ -2728,7 +2730,6 @@ components:
|
|
|
2728
2730
|
- title
|
|
2729
2731
|
- description
|
|
2730
2732
|
- outcomes
|
|
2731
|
-
- resolutionDate
|
|
2732
2733
|
- volume24h
|
|
2733
2734
|
- liquidity
|
|
2734
2735
|
- url
|
package/dist/types.d.ts
CHANGED
|
@@ -55,8 +55,10 @@ export interface UnifiedMarket {
|
|
|
55
55
|
slug?: string;
|
|
56
56
|
/** The possible outcomes for this market. */
|
|
57
57
|
outcomes: MarketOutcome[];
|
|
58
|
-
/** When the market is scheduled to resolve.
|
|
59
|
-
|
|
58
|
+
/** When the market is scheduled to resolve. Optional because some venues
|
|
59
|
+
* do not publish a cutoff for every market (e.g. Opinion categorical
|
|
60
|
+
* children) — emit `undefined` rather than coercing to epoch. */
|
|
61
|
+
resolutionDate?: Date;
|
|
60
62
|
/** Trading volume over the past 24 hours (USD). */
|
|
61
63
|
volume24h: number;
|
|
62
64
|
volume?: number;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pmxt-core",
|
|
3
|
-
"version": "2.48.
|
|
3
|
+
"version": "2.48.6",
|
|
4
4
|
"description": "pmxt is a unified prediction market data API. The ccxt for prediction markets.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
"test": "jest -c jest.config.js",
|
|
30
30
|
"server": "tsx watch src/server/index.ts",
|
|
31
31
|
"server:prod": "node dist/server/index.js",
|
|
32
|
-
"generate:sdk:python": "npx @openapitools/openapi-generator-cli generate -i src/server/openapi.yaml -g python -o ../sdks/python/generated --package-name pmxt_internal --additional-properties=projectName=pmxt-internal,packageVersion=2.48.
|
|
33
|
-
"generate:sdk:typescript": "npx @openapitools/openapi-generator-cli generate -i src/server/openapi.yaml -g typescript-fetch -o ../sdks/typescript/generated --additional-properties=npmName=pmxtjs,npmVersion=2.48.
|
|
32
|
+
"generate:sdk:python": "npx @openapitools/openapi-generator-cli generate -i src/server/openapi.yaml -g python -o ../sdks/python/generated --package-name pmxt_internal --additional-properties=projectName=pmxt-internal,packageVersion=2.48.6,library=urllib3",
|
|
33
|
+
"generate:sdk:typescript": "npx @openapitools/openapi-generator-cli generate -i src/server/openapi.yaml -g typescript-fetch -o ../sdks/typescript/generated --additional-properties=npmName=pmxtjs,npmVersion=2.48.6,supportsES6=true,typescriptThreePlus=true && node ../sdks/typescript/scripts/fix-generated.js",
|
|
34
34
|
"fetch:openapi": "node scripts/fetch-openapi-specs.js",
|
|
35
35
|
"extract:jsdoc": "node ../scripts/extract-jsdoc.js",
|
|
36
36
|
"generate:docs": "npm run extract:jsdoc && node ../scripts/generate-api-docs.js",
|