@varla/polymarket 2.2.6 → 2.4.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/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # @varla/polymarket
2
2
 
3
+ ## 2.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - fd7f6c8: Added configurable proactive rate limiting for GammaClient requests.
8
+
9
+ - add optional rateLimit settings to GammaClient to shape general and /markets request throughput
10
+ - introduce default Gamma API rate limit constants and apply sliding-window limiting before requests
11
+
12
+ - 99ae9fd: Add optional concurrency control for resolving Gamma market chunks.
13
+
14
+ - Added `maxConcurrentRequests` option to `resolveBinaryMarketsByConditionId` to limit concurrent Gamma requests.
15
+
16
+ ## 2.3.0
17
+
18
+ ### Minor Changes
19
+
20
+ - 70422c9: Added Polymarket event URL utilities and enriched resolved market data with event slug and URL fields.
21
+
22
+ - export polymarketEventUrl for constructing Polymarket event links,- include eventSlug and url on ResolvedBinaryMarket results using event slug when available
23
+
3
24
  ## 2.2.6
4
25
 
5
26
  ### Patch Changes
@@ -1,3 +1,4 @@
1
+ import { SlidingWindowLimiter } from "./rate-limits.js";
1
2
  import type { GammaBuilderLeaderboardEntry, GammaBuilderVolumePoint, GammaComment, GammaEvent, GammaMarket, GammaPublicProfile, GammaSearchResult, GammaSeries, GammaSport, GammaSportsMarketType, GammaTag, GammaTagRelationship, GammaTeam } from "./types.js";
2
3
  export type GammaClientOpts = {
3
4
  /** Optional override for Gamma base URL. */
@@ -11,6 +12,13 @@ export type GammaClientOpts = {
11
12
  multiplier?: number;
12
13
  jitterFactor?: number;
13
14
  };
15
+ rateLimit?: {
16
+ enabled?: boolean;
17
+ windowMs?: number;
18
+ generalMaxPerWindow?: number;
19
+ marketsMaxPerWindow?: number;
20
+ now?: () => number;
21
+ };
14
22
  log?: (level: "debug" | "info" | "warn" | "error", msg: string, fields?: Record<string, unknown>) => void;
15
23
  };
16
24
  export declare class GammaClient {
@@ -19,8 +27,12 @@ export declare class GammaClient {
19
27
  readonly maxAttempts: number;
20
28
  readonly fetchFn: typeof fetch;
21
29
  readonly retry: Required<NonNullable<GammaClientOpts["retry"]>>;
30
+ readonly rateLimitEnabled: boolean;
31
+ readonly generalLimiter: SlidingWindowLimiter;
32
+ readonly marketsLimiter: SlidingWindowLimiter;
22
33
  readonly log?: GammaClientOpts["log"];
23
34
  constructor(opts?: GammaClientOpts);
35
+ private acquireRateLimitPermit;
24
36
  private isRetryable;
25
37
  private request;
26
38
  listMarkets(params: {
@@ -1 +1 @@
1
- {"version":3,"file":"gamma-client.d.ts","sourceRoot":"","sources":["../src/gamma-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gamma-client.d.ts","sourceRoot":"","sources":["../src/gamma-client.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -19,5 +19,6 @@ export * from "./rate-limits.js";
19
19
  export { parseDecimalToBigint } from "./utils/decimal.js";
20
20
  export { twapFromHistory } from "./utils/twap.js";
21
21
  export { probToE8, collateralPriceFromMarkets } from "./utils/pricing.js";
22
+ export { polymarketEventUrl } from "./utils/url.js";
22
23
  export * from "./bridge-client.js";
23
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,mBAAmB,CAAC;AAMlC,cAAc,gBAAgB,CAAC;AAM/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAM9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AAMjC,cAAc,sBAAsB,CAAC;AAMrC,cAAc,UAAU,CAAC;AAMzB,cAAc,kBAAkB,CAAC;AAMjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAM1E,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,mBAAmB,CAAC;AAMlC,cAAc,gBAAgB,CAAC;AAM/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAM9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AAMjC,cAAc,sBAAsB,CAAC;AAMrC,cAAc,UAAU,CAAC;AAMzB,cAAc,kBAAkB,CAAC;AAMjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAMpD,cAAc,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -825,6 +825,8 @@ var KEEPER_CLOB_DELETE_ORDER_MAX_PER_10S = 15;
825
825
  var KEEPER_CLOB_DELETE_ORDER_MAX_PER_10MIN = 150;
826
826
  var KEEPER_CLOB_CANCEL_ALL_MAX_PER_10S = 3;
827
827
  var KEEPER_CLOB_CANCEL_ALL_MAX_PER_10MIN = 30;
828
+ var KEEPER_GAMMA_GENERAL_MAX_PER_10S = 800;
829
+ var KEEPER_GAMMA_MARKETS_MAX_PER_10S = 120;
828
830
 
829
831
  class SlidingWindowLimiter {
830
832
  maxRequests;
@@ -1372,6 +1374,9 @@ class GammaClient {
1372
1374
  maxAttempts;
1373
1375
  fetchFn;
1374
1376
  retry;
1377
+ rateLimitEnabled;
1378
+ generalLimiter;
1379
+ marketsLimiter;
1375
1380
  log;
1376
1381
  constructor(opts = {}) {
1377
1382
  this.baseUrl = opts.baseUrl ?? POLYMARKET_ENDPOINTS.gammaBaseUrl;
@@ -1384,8 +1389,26 @@ class GammaClient {
1384
1389
  multiplier: opts.retry?.multiplier ?? 2,
1385
1390
  jitterFactor: opts.retry?.jitterFactor ?? 0.3
1386
1391
  };
1392
+ const rateLimitWindowMs = Math.max(100, opts.rateLimit?.windowMs ?? 1e4);
1393
+ this.rateLimitEnabled = opts.rateLimit?.enabled ?? true;
1394
+ this.generalLimiter = new SlidingWindowLimiter(Math.max(1, Math.floor(opts.rateLimit?.generalMaxPerWindow ?? KEEPER_GAMMA_GENERAL_MAX_PER_10S)), rateLimitWindowMs, opts.rateLimit?.now ?? Date.now);
1395
+ this.marketsLimiter = new SlidingWindowLimiter(Math.max(1, Math.floor(opts.rateLimit?.marketsMaxPerWindow ?? KEEPER_GAMMA_MARKETS_MAX_PER_10S)), rateLimitWindowMs, opts.rateLimit?.now ?? Date.now);
1387
1396
  this.log = opts.log;
1388
1397
  }
1398
+ async acquireRateLimitPermit(url) {
1399
+ if (!this.rateLimitEnabled)
1400
+ return;
1401
+ await this.generalLimiter.acquire();
1402
+ let pathname = "";
1403
+ try {
1404
+ pathname = new URL(url).pathname;
1405
+ } catch {
1406
+ return;
1407
+ }
1408
+ if (pathname.startsWith("/markets")) {
1409
+ await this.marketsLimiter.acquire();
1410
+ }
1411
+ }
1389
1412
  isRetryable(err) {
1390
1413
  if (err instanceof SyntaxError)
1391
1414
  return true;
@@ -1393,7 +1416,10 @@ class GammaClient {
1393
1416
  return /timeout|ETIMEDOUT|ECONNRESET|fetch failed|network|socket|aborted|AbortError|429|500|502|503|504/i.test(msg);
1394
1417
  }
1395
1418
  async request(url) {
1396
- return withRetry(async () => fetchJson(url, { timeoutMs: this.timeoutMs, fetchFn: this.fetchFn }), {
1419
+ return withRetry(async () => {
1420
+ await this.acquireRateLimitPermit(url);
1421
+ return fetchJson(url, { timeoutMs: this.timeoutMs, fetchFn: this.fetchFn });
1422
+ }, {
1397
1423
  maxAttempts: this.maxAttempts,
1398
1424
  baseBackoffMs: this.retry.baseBackoffMs,
1399
1425
  maxBackoffMs: this.retry.maxBackoffMs,
@@ -1584,6 +1610,12 @@ function chunk(xs, size) {
1584
1610
  out.push(xs.slice(i, i + size));
1585
1611
  return out;
1586
1612
  }
1613
+ // src/utils/url.ts
1614
+ var POLYMARKET_BASE = "https://polymarket.com/event";
1615
+ function polymarketEventUrl(slug) {
1616
+ return `${POLYMARKET_BASE}/${encodeURIComponent(slug)}`;
1617
+ }
1618
+
1587
1619
  // src/resolver.ts
1588
1620
  function parseJsonStringArray(field, value) {
1589
1621
  const parsed = JSON.parse(value);
@@ -1606,10 +1638,13 @@ function resolveBinaryMarketFromGammaMarket(m) {
1606
1638
  if (yesIdx === -1 || noIdx === -1) {
1607
1639
  throw new Error(`Gamma market ${m.id} outcomes are not Yes/No: ${outcomes.join(",")}`);
1608
1640
  }
1641
+ const eventSlug = m.events?.[0]?.slug;
1609
1642
  return {
1610
1643
  conditionId: m.conditionId,
1611
1644
  gammaMarketId: m.id,
1612
1645
  slug: m.slug,
1646
+ eventSlug,
1647
+ url: polymarketEventUrl(eventSlug ?? m.slug),
1613
1648
  yesTokenId: tokenIds[yesIdx] ?? (() => {
1614
1649
  throw new Error(`Missing YES tokenId for market ${m.id}`);
1615
1650
  })(),
@@ -1623,24 +1658,37 @@ function resolveBinaryMarketFromGammaMarket(m) {
1623
1658
  async function resolveBinaryMarketsByConditionId(conditionIds, opts = {}) {
1624
1659
  const gamma = opts.gamma ?? new GammaClient;
1625
1660
  const chunkSize = opts.chunkSize ?? 50;
1661
+ const maxConcurrentRequests = Math.max(1, Math.floor(opts.maxConcurrentRequests ?? 3));
1626
1662
  const out = new Map;
1627
- for (const group of chunk(conditionIds, chunkSize)) {
1628
- let markets = [];
1629
- try {
1630
- markets = await gamma.getMarketsByConditionIds(group);
1631
- } catch (err) {
1632
- opts.log?.("warn", "Gamma getMarketsByConditionIds failed", {
1633
- chunkSize: group.length,
1634
- err: String(err)
1635
- });
1636
- continue;
1637
- }
1638
- for (const m of markets) {
1663
+ const groups = chunk(conditionIds, chunkSize);
1664
+ let nextGroupIdx = 0;
1665
+ const workers = Array.from({ length: Math.min(maxConcurrentRequests, groups.length) }, async () => {
1666
+ while (true) {
1667
+ const idx = nextGroupIdx++;
1668
+ const group = groups[idx];
1669
+ if (!group)
1670
+ return;
1671
+ let markets = [];
1639
1672
  try {
1640
- const r = resolveBinaryMarketFromGammaMarket(m);
1641
- out.set(r.conditionId, r);
1642
- } catch {}
1673
+ markets = await gamma.getMarketsByConditionIds(group);
1674
+ } catch (err) {
1675
+ opts.log?.("warn", "Gamma getMarketsByConditionIds failed", {
1676
+ chunkSize: group.length,
1677
+ chunkIndex: idx,
1678
+ err: String(err)
1679
+ });
1680
+ continue;
1681
+ }
1682
+ for (const m of markets) {
1683
+ try {
1684
+ const r = resolveBinaryMarketFromGammaMarket(m);
1685
+ out.set(r.conditionId, r);
1686
+ } catch {}
1687
+ }
1643
1688
  }
1689
+ });
1690
+ for (const worker of workers) {
1691
+ await worker;
1644
1692
  }
1645
1693
  return out;
1646
1694
  }
@@ -3283,6 +3331,7 @@ export {
3283
3331
  resetClobClient,
3284
3332
  probToE8,
3285
3333
  priceValid,
3334
+ polymarketEventUrl,
3286
3335
  parseRetryAfter,
3287
3336
  parseDecimalToBigint,
3288
3337
  isValidPrice,
@@ -3340,6 +3389,8 @@ export {
3340
3389
  POLYMARKET_GENERAL_LIMIT_PER_10S,
3341
3390
  POLYMARKET_ENDPOINTS,
3342
3391
  OrderValidationError,
3392
+ KEEPER_GAMMA_MARKETS_MAX_PER_10S,
3393
+ KEEPER_GAMMA_GENERAL_MAX_PER_10S,
3343
3394
  KEEPER_CLOB_READ_RPS,
3344
3395
  KEEPER_CLOB_READ_BURST,
3345
3396
  KEEPER_CLOB_POST_ORDER_MAX_PER_10S,
@@ -69,6 +69,10 @@ export declare const KEEPER_CLOB_DELETE_ORDER_MAX_PER_10MIN = 150;
69
69
  /** Internal budget: DELETE /cancel-all. */
70
70
  export declare const KEEPER_CLOB_CANCEL_ALL_MAX_PER_10S = 3;
71
71
  export declare const KEEPER_CLOB_CANCEL_ALL_MAX_PER_10MIN = 30;
72
+ /** Internal budget: Gamma API general requests per 10s. */
73
+ export declare const KEEPER_GAMMA_GENERAL_MAX_PER_10S = 800;
74
+ /** Internal budget: Gamma /markets requests per 10s. */
75
+ export declare const KEEPER_GAMMA_MARKETS_MAX_PER_10S = 120;
72
76
  /**
73
77
  * Lightweight sliding-window rate limiter.
74
78
  *
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limits.d.ts","sourceRoot":"","sources":["../src/rate-limits.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rate-limits.d.ts","sourceRoot":"","sources":["../src/rate-limits.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,17 @@ import type { GammaMarket } from "./types.js";
3
3
  export type ResolvedBinaryMarket = {
4
4
  conditionId: `0x${string}`;
5
5
  gammaMarketId: string;
6
+ /** Market-level slug from Gamma API. */
6
7
  slug: string;
8
+ /** Parent event slug (when the Gamma response includes nested events). */
9
+ eventSlug?: string;
10
+ /**
11
+ * Best-effort Polymarket UI link.
12
+ * Constructed as `https://polymarket.com/event/<eventSlug ?? slug>`.
13
+ * Uses the event slug when available (correct for Polymarket routing),
14
+ * falls back to the market slug otherwise.
15
+ */
16
+ url: string;
7
17
  yesTokenId: string;
8
18
  noTokenId: string;
9
19
  endDateIso?: string;
@@ -14,6 +24,8 @@ export type ConditionResolverOpts = {
14
24
  gamma?: GammaClient;
15
25
  /** How many conditionIds per Gamma request. */
16
26
  chunkSize?: number;
27
+ /** Max number of in-flight Gamma chunk requests. */
28
+ maxConcurrentRequests?: number;
17
29
  log?: (level: "debug" | "info" | "warn" | "error", msg: string, fields?: Record<string, unknown>) => void;
18
30
  };
19
31
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAS,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAUF,wBAAgB,kCAAkC,CAAC,CAAC,EAAE,WAAW,GAAG,oBAAoB,CAkCvF;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,CACJ,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,EAC1C,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B,IAAI,CAAC;CACX,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,iCAAiC,CACrD,YAAY,EAAE,KAAK,MAAM,EAAE,EAAE,EAC7B,IAAI,GAAE,qBAA0B,GAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CA4BnD"}
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAS,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9C,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAUF,wBAAgB,kCAAkC,CAAC,CAAC,EAAE,WAAW,GAAG,oBAAoB,CAsCvF;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,GAAG,CAAC,EAAE,CACJ,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,EAC1C,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B,IAAI,CAAC;CACX,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,iCAAiC,CACrD,YAAY,EAAE,KAAK,MAAM,EAAE,EAAE,EAC7B,IAAI,GAAE,qBAA0B,GAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CA6CnD"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Construct a full Polymarket event URL from a Gamma slug.
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * polymarketEventUrl("will-bitcoin-hit-1m-before-gta-vi")
7
+ * // => "https://polymarket.com/event/will-bitcoin-hit-1m-before-gta-vi"
8
+ * ```
9
+ */
10
+ export declare function polymarketEventUrl(slug: string): string;
11
+ //# sourceMappingURL=url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../src/utils/url.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@varla/polymarket",
3
- "version": "2.2.6",
3
+ "version": "2.4.0",
4
4
  "description": "High-performance Polymarket SDK",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",