@apicity/polymarket 0.2.6 → 0.2.8

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/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  [![TypeScript](https://img.shields.io/badge/TypeScript-strict-blue?logo=typescript&logoColor=white)](tsconfig.json)
6
6
  [![docs](https://img.shields.io/badge/docs-docs.polymarket.com-blue)](https://docs.polymarket.com/api-reference/introduction)
7
7
 
8
- Polymarket public-data API provider — Gamma, Data, and CLOB market-data endpoints (no auth).
8
+ Polymarket API provider — Gamma, Data, and CLOB market-data/trading endpoints.
9
9
 
10
10
  ## Installation
11
11
 
@@ -25,10 +25,175 @@ const polymarket = createPolymarket();
25
25
 
26
26
  ## API Reference
27
27
 
28
- 46 endpoints across 3 groups. Each method mirrors an upstream URL path.
28
+ 70 endpoints across 3 groups. Each method mirrors an upstream URL path.
29
29
 
30
30
  ### clob
31
31
 
32
+ <details>
33
+ <summary><code>DELETE</code> <b><code>polymarket.clob.auth.apiKey</code></b></summary>
34
+
35
+ <code>DELETE https://clob.polymarket.com/auth/api-key</code>
36
+
37
+ [Upstream docs ↗](https://docs.polymarket.com/api-reference/authentication)
38
+
39
+ ```typescript
40
+ const res = await polymarket.clob.auth.apiKey({ /* ... */ });
41
+ ```
42
+
43
+ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
44
+
45
+ </details>
46
+
47
+ <details>
48
+ <summary><code>DELETE</code> <b><code>polymarket.clob.cancelAll</code></b></summary>
49
+
50
+ <code>DELETE https://clob.polymarket.com/cancel-all</code>
51
+
52
+ [Upstream docs ↗](https://docs.polymarket.com/api-reference/trade/cancel-all-orders)
53
+
54
+ ```typescript
55
+ const res = await polymarket.clob.cancelAll({ /* ... */ });
56
+ ```
57
+
58
+ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
59
+
60
+ </details>
61
+
62
+ <details>
63
+ <summary><code>DELETE</code> <b><code>polymarket.clob.cancelMarketOrders</code></b></summary>
64
+
65
+ <code>DELETE https://clob.polymarket.com/cancel-market-orders</code>
66
+
67
+ [Upstream docs ↗](https://docs.polymarket.com/api-reference/trade/cancel-orders-for-a-market)
68
+
69
+ ```typescript
70
+ const res = await polymarket.clob.cancelMarketOrders({ /* ... */ });
71
+ ```
72
+
73
+ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
74
+
75
+ </details>
76
+
77
+ <details>
78
+ <summary><code>DELETE</code> <b><code>polymarket.clob.notifications</code></b></summary>
79
+
80
+ <code>DELETE https://clob.polymarket.com/notifications{query}</code>
81
+
82
+ [Upstream docs ↗](https://docs.polymarket.com/api-reference/authentication)
83
+
84
+ ```typescript
85
+ const res = await polymarket.clob.notifications({ /* ... */ });
86
+ ```
87
+
88
+ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
89
+
90
+ </details>
91
+
92
+ <details>
93
+ <summary><code>DELETE</code> <b><code>polymarket.clob.order</code></b></summary>
94
+
95
+ <code>DELETE https://clob.polymarket.com/order</code>
96
+
97
+ [Upstream docs ↗](https://docs.polymarket.com/api-reference/trade/cancel-single-order)
98
+
99
+ ```typescript
100
+ const res = await polymarket.clob.order({ /* ... */ });
101
+ ```
102
+
103
+ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
104
+
105
+ </details>
106
+
107
+ <details>
108
+ <summary><code>DELETE</code> <b><code>polymarket.clob.orders</code></b></summary>
109
+
110
+ <code>DELETE https://clob.polymarket.com/orders</code>
111
+
112
+ [Upstream docs ↗](https://docs.polymarket.com/api-reference/trade/cancel-multiple-orders)
113
+
114
+ ```typescript
115
+ const res = await polymarket.clob.orders({ /* ... */ });
116
+ ```
117
+
118
+ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
119
+
120
+ </details>
121
+
122
+ <details>
123
+ <summary><code>GET</code> <b><code>polymarket.clob.auth.apiKeys</code></b></summary>
124
+
125
+ <code>GET https://clob.polymarket.com/auth/api-keys</code>
126
+
127
+ [Upstream docs ↗](https://docs.polymarket.com/api-reference/authentication)
128
+
129
+ ```typescript
130
+ const res = await polymarket.clob.auth.apiKeys({ /* ... */ });
131
+ ```
132
+
133
+ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
134
+
135
+ </details>
136
+
137
+ <details>
138
+ <summary><code>GET</code> <b><code>polymarket.clob.auth.banStatus.closedOnly</code></b></summary>
139
+
140
+ <code>GET https://clob.polymarket.com/auth/ban-status/closed-only</code>
141
+
142
+ [Upstream docs ↗](https://docs.polymarket.com/api-reference/authentication)
143
+
144
+ ```typescript
145
+ const res = await polymarket.clob.auth.banStatus.closedOnly({ /* ... */ });
146
+ ```
147
+
148
+ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
149
+
150
+ </details>
151
+
152
+ <details>
153
+ <summary><code>GET</code> <b><code>polymarket.clob.auth.deriveApiKey</code></b></summary>
154
+
155
+ <code>GET https://clob.polymarket.com/auth/derive-api-key</code>
156
+
157
+ [Upstream docs ↗](https://docs.polymarket.com/api-reference/authentication)
158
+
159
+ ```typescript
160
+ const res = await polymarket.clob.auth.deriveApiKey({ /* ... */ });
161
+ ```
162
+
163
+ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
164
+
165
+ </details>
166
+
167
+ <details>
168
+ <summary><code>GET</code> <b><code>polymarket.clob.balanceAllowance</code></b></summary>
169
+
170
+ <code>GET https://clob.polymarket.com/balance-allowance{query}</code>
171
+
172
+ [Upstream docs ↗](https://docs.polymarket.com/api-reference/authentication)
173
+
174
+ ```typescript
175
+ const res = await polymarket.clob.balanceAllowance({ /* ... */ });
176
+ ```
177
+
178
+ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
179
+
180
+ </details>
181
+
182
+ <details>
183
+ <summary><code>GET</code> <b><code>polymarket.clob.balanceAllowance.update</code></b></summary>
184
+
185
+ <code>GET https://clob.polymarket.com/balance-allowance/update{query}</code>
186
+
187
+ [Upstream docs ↗](https://docs.polymarket.com/api-reference/authentication)
188
+
189
+ ```typescript
190
+ const res = await polymarket.clob.balanceAllowance.update({ /* ... */ });
191
+ ```
192
+
193
+ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
194
+
195
+ </details>
196
+
32
197
  <details>
33
198
  <summary><code>GET</code> <b><code>polymarket.clob.book</code></b></summary>
34
199
 
@@ -59,6 +224,51 @@ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
59
224
 
60
225
  </details>
61
226
 
227
+ <details>
228
+ <summary><code>GET</code> <b><code>polymarket.clob.data.order</code></b></summary>
229
+
230
+ <code>GET https://clob.polymarket.com/data/order/{orderID}</code>
231
+
232
+ [Upstream docs ↗](https://docs.polymarket.com/api-reference/trade/get-single-order-by-id)
233
+
234
+ ```typescript
235
+ const res = await polymarket.clob.data.order({ /* ... */ });
236
+ ```
237
+
238
+ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
239
+
240
+ </details>
241
+
242
+ <details>
243
+ <summary><code>GET</code> <b><code>polymarket.clob.data.orders</code></b></summary>
244
+
245
+ <code>GET https://clob.polymarket.com/data/orders{query}</code>
246
+
247
+ [Upstream docs ↗](https://docs.polymarket.com/api-reference/trade/get-user-orders)
248
+
249
+ ```typescript
250
+ const res = await polymarket.clob.data.orders({ /* ... */ });
251
+ ```
252
+
253
+ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
254
+
255
+ </details>
256
+
257
+ <details>
258
+ <summary><code>GET</code> <b><code>polymarket.clob.data.trades</code></b></summary>
259
+
260
+ <code>GET https://clob.polymarket.com/data/trades{query}</code>
261
+
262
+ [Upstream docs ↗](https://docs.polymarket.com/api-reference/trade/get-trades)
263
+
264
+ ```typescript
265
+ const res = await polymarket.clob.data.trades({ /* ... */ });
266
+ ```
267
+
268
+ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
269
+
270
+ </details>
271
+
62
272
  <details>
63
273
  <summary><code>GET</code> <b><code>polymarket.clob.feeRate</code></b></summary>
64
274
 
@@ -134,6 +344,51 @@ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
134
344
 
135
345
  </details>
136
346
 
347
+ <details>
348
+ <summary><code>GET</code> <b><code>polymarket.clob.notifications</code></b></summary>
349
+
350
+ <code>GET https://clob.polymarket.com/notifications{query}</code>
351
+
352
+ [Upstream docs ↗](https://docs.polymarket.com/api-reference/authentication)
353
+
354
+ ```typescript
355
+ const res = await polymarket.clob.notifications({ /* ... */ });
356
+ ```
357
+
358
+ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
359
+
360
+ </details>
361
+
362
+ <details>
363
+ <summary><code>GET</code> <b><code>polymarket.clob.orderScoring</code></b></summary>
364
+
365
+ <code>GET https://clob.polymarket.com/order-scoring{query}</code>
366
+
367
+ [Upstream docs ↗](https://docs.polymarket.com/api-reference/trade/get-order-scoring-status)
368
+
369
+ ```typescript
370
+ const res = await polymarket.clob.orderScoring({ /* ... */ });
371
+ ```
372
+
373
+ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
374
+
375
+ </details>
376
+
377
+ <details>
378
+ <summary><code>GET</code> <b><code>polymarket.clob.ordersScoring</code></b></summary>
379
+
380
+ <code>GET https://clob.polymarket.com/orders-scoring{query}</code>
381
+
382
+ [Upstream docs ↗](https://docs.polymarket.com/api-reference/trade/get-order-scoring-status)
383
+
384
+ ```typescript
385
+ const res = await polymarket.clob.ordersScoring({ /* ... */ });
386
+ ```
387
+
388
+ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
389
+
390
+ </details>
391
+
137
392
  <details>
138
393
  <summary><code>GET</code> <b><code>polymarket.clob.price</code></b></summary>
139
394
 
@@ -254,6 +509,21 @@ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
254
509
 
255
510
  </details>
256
511
 
512
+ <details>
513
+ <summary><code>POST</code> <b><code>polymarket.clob.auth.apiKey</code></b></summary>
514
+
515
+ <code>POST https://clob.polymarket.com/auth/api-key</code>
516
+
517
+ [Upstream docs ↗](https://docs.polymarket.com/api-reference/authentication)
518
+
519
+ ```typescript
520
+ const res = await polymarket.clob.auth.apiKey({ /* ... */ });
521
+ ```
522
+
523
+ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
524
+
525
+ </details>
526
+
257
527
  <details>
258
528
  <summary><code>POST</code> <b><code>polymarket.clob.batchPricesHistory</code></b></summary>
259
529
 
@@ -284,6 +554,21 @@ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
284
554
 
285
555
  </details>
286
556
 
557
+ <details>
558
+ <summary><code>POST</code> <b><code>polymarket.clob.heartbeats</code></b></summary>
559
+
560
+ <code>POST https://clob.polymarket.com/heartbeats</code>
561
+
562
+ [Upstream docs ↗](https://docs.polymarket.com/api-reference/trade/send-heartbeat)
563
+
564
+ ```typescript
565
+ const res = await polymarket.clob.heartbeats({ /* ... */ });
566
+ ```
567
+
568
+ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
569
+
570
+ </details>
571
+
287
572
  <details>
288
573
  <summary><code>POST</code> <b><code>polymarket.clob.lastTradesPrices</code></b></summary>
289
574
 
@@ -314,6 +599,51 @@ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
314
599
 
315
600
  </details>
316
601
 
602
+ <details>
603
+ <summary><code>POST</code> <b><code>polymarket.clob.order</code></b></summary>
604
+
605
+ <code>POST https://clob.polymarket.com/order</code>
606
+
607
+ [Upstream docs ↗](https://docs.polymarket.com/api-reference/trade/post-a-new-order)
608
+
609
+ ```typescript
610
+ const res = await polymarket.clob.order({ /* ... */ });
611
+ ```
612
+
613
+ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
614
+
615
+ </details>
616
+
617
+ <details>
618
+ <summary><code>POST</code> <b><code>polymarket.clob.orders</code></b></summary>
619
+
620
+ <code>POST https://clob.polymarket.com/orders</code>
621
+
622
+ [Upstream docs ↗](https://docs.polymarket.com/api-reference/trade/post-multiple-orders)
623
+
624
+ ```typescript
625
+ const res = await polymarket.clob.orders({ /* ... */ });
626
+ ```
627
+
628
+ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
629
+
630
+ </details>
631
+
632
+ <details>
633
+ <summary><code>POST</code> <b><code>polymarket.clob.ordersScoring</code></b></summary>
634
+
635
+ <code>POST https://clob.polymarket.com/orders-scoring</code>
636
+
637
+ [Upstream docs ↗](https://docs.polymarket.com/api-reference/trade/get-order-scoring-status)
638
+
639
+ ```typescript
640
+ const res = await polymarket.clob.ordersScoring({ /* ... */ });
641
+ ```
642
+
643
+ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
644
+
645
+ </details>
646
+
317
647
  <details>
318
648
  <summary><code>POST</code> <b><code>polymarket.clob.prices</code></b></summary>
319
649
 
@@ -344,6 +674,36 @@ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
344
674
 
345
675
  </details>
346
676
 
677
+ <details>
678
+ <summary><code>POST</code> <b><code>polymarket.clob.v1.heartbeats</code></b></summary>
679
+
680
+ <code>POST https://clob.polymarket.com/v1/heartbeats</code>
681
+
682
+ [Upstream docs ↗](https://docs.polymarket.com/api-reference/trade/send-heartbeat)
683
+
684
+ ```typescript
685
+ const res = await polymarket.clob.v1.heartbeats({ /* ... */ });
686
+ ```
687
+
688
+ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
689
+
690
+ </details>
691
+
692
+ <details>
693
+ <summary><code>PUT</code> <b><code>polymarket.clob.balanceAllowance</code></b></summary>
694
+
695
+ <code>PUT https://clob.polymarket.com/balance-allowance{query}</code>
696
+
697
+ [Upstream docs ↗](https://docs.polymarket.com/api-reference/authentication)
698
+
699
+ ```typescript
700
+ const res = await polymarket.clob.balanceAllowance({ /* ... */ });
701
+ ```
702
+
703
+ Source: [`packages/provider/polymarket/src/clob.ts`](src/clob.ts)
704
+
705
+ </details>
706
+
347
707
  ### data
348
708
 
349
709
  <details>
@@ -1,3 +1,5 @@
1
+ import type { PolymarketClobL1Headers, PolymarketOptions } from "./zod";
2
+ type AuthenticatedMethod = "GET" | "POST" | "PUT" | "DELETE";
1
3
  export declare function attachAbortHandler(signal: AbortSignal, controller: AbortController): void;
2
4
  export declare function formatErrorMessage(status: number, body: unknown): string;
3
5
  export declare function readErrorBody(res: Response): Promise<unknown>;
@@ -5,6 +7,10 @@ export interface PolymarketRequestHelpers {
5
7
  makeGetRequest<T>(url: string, signal?: AbortSignal): Promise<T>;
6
8
  makeGetTextRequest(url: string, signal?: AbortSignal): Promise<string>;
7
9
  makeJsonRequest<T>(url: string, body: unknown, signal?: AbortSignal): Promise<T>;
10
+ makeAuthenticatedRequest<T>(method: AuthenticatedMethod, url: string, body?: unknown, signal?: AbortSignal): Promise<T>;
11
+ makeL1Request<T>(method: "GET" | "POST", url: string, headers?: PolymarketClobL1Headers, signal?: AbortSignal): Promise<T>;
8
12
  }
9
- export declare function createRequestHelpers(doFetch: typeof fetch, timeout: number): PolymarketRequestHelpers;
13
+ export declare function createRequestHelpers(doFetch: typeof fetch, timeout: number, opts?: PolymarketOptions): PolymarketRequestHelpers;
14
+ export declare function buildPolyHmacSignature(secret: string, timestamp: number, method: string, requestPath: string, body?: string): Promise<string>;
15
+ export {};
10
16
  //# sourceMappingURL=_helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"_helpers.d.ts","sourceRoot":"","sources":["../../src/_helpers.ts"],"names":[],"mappings":"AAWA,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,eAAe,GAC1B,IAAI,CAMN;AAMD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAcxE;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAUnE;AAED,MAAM,WAAW,wBAAwB;IACvC,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACjE,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvE,eAAe,CAAC,CAAC,EACf,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,OAAO,EACb,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,CAAC,CAAC,CAAC;CACf;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,KAAK,EACrB,OAAO,EAAE,MAAM,GACd,wBAAwB,CAkG1B"}
1
+ {"version":3,"file":"_helpers.d.ts","sourceRoot":"","sources":["../../src/_helpers.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAEV,uBAAuB,EAEvB,iBAAiB,EAClB,MAAM,OAAO,CAAC;AAEf,KAAK,mBAAmB,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;AAE7D,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,eAAe,GAC1B,IAAI,CAMN;AAMD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAcxE;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAUnE;AAmBD,MAAM,WAAW,wBAAwB;IACvC,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACjE,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvE,eAAe,CAAC,CAAC,EACf,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,OAAO,EACb,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,CAAC,CAAC,CAAC;IACd,wBAAwB,CAAC,CAAC,EACxB,MAAM,EAAE,mBAAmB,EAC3B,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,CAAC,CAAC,CAAC;IACd,aAAa,CAAC,CAAC,EACb,MAAM,EAAE,KAAK,GAAG,MAAM,EACtB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,uBAAuB,EACjC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,CAAC,CAAC,CAAC;CACf;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,KAAK,EACrB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,iBAAsB,GAC3B,wBAAwB,CAsQ1B;AA6BD,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAwBjB"}
@@ -45,7 +45,106 @@ export async function readErrorBody(res) {
45
45
  return null;
46
46
  }
47
47
  }
48
- export function createRequestHelpers(doFetch, timeout) {
48
+ async function readSuccessBody(res) {
49
+ if (res.status === 204) {
50
+ return undefined;
51
+ }
52
+ const text = await res.text();
53
+ if (text.length === 0) {
54
+ return undefined;
55
+ }
56
+ const ct = res.headers.get("content-type") ?? "";
57
+ if (ct.includes("application/json")) {
58
+ return JSON.parse(text);
59
+ }
60
+ return text;
61
+ }
62
+ export function createRequestHelpers(doFetch, timeout, opts = {}) {
63
+ function credentialsFromOptions() {
64
+ if (opts.clobApiCredentials)
65
+ return opts.clobApiCredentials;
66
+ if (opts.clobApiKey && opts.clobApiSecret && opts.clobApiPassphrase) {
67
+ return {
68
+ key: opts.clobApiKey,
69
+ secret: opts.clobApiSecret,
70
+ passphrase: opts.clobApiPassphrase,
71
+ };
72
+ }
73
+ return null;
74
+ }
75
+ function requestPath(url) {
76
+ const u = new URL(url);
77
+ return u.pathname;
78
+ }
79
+ function normalizeL1Headers(headers) {
80
+ const h = headers ?? opts.clobL1Headers;
81
+ if (!h) {
82
+ throw new PolymarketError("Polymarket CLOB L1 headers are required for this endpoint", 401);
83
+ }
84
+ return {
85
+ POLY_ADDRESS: h.address,
86
+ POLY_SIGNATURE: h.signature,
87
+ POLY_TIMESTAMP: String(h.timestamp),
88
+ POLY_NONCE: String(h.nonce ?? 0),
89
+ };
90
+ }
91
+ function normalizeL2Headers(headers) {
92
+ return {
93
+ POLY_ADDRESS: headers.address,
94
+ POLY_SIGNATURE: headers.signature,
95
+ POLY_TIMESTAMP: String(headers.timestamp),
96
+ POLY_API_KEY: headers.apiKey,
97
+ POLY_PASSPHRASE: headers.passphrase,
98
+ };
99
+ }
100
+ async function l2HeadersFor(method, url, body) {
101
+ const timestamp = Math.floor(Date.now() / 1000);
102
+ const path = requestPath(url);
103
+ if (opts.clobL2HeaderSigner) {
104
+ return normalizeL2Headers(await opts.clobL2HeaderSigner({
105
+ method,
106
+ requestPath: path,
107
+ body,
108
+ timestamp,
109
+ }));
110
+ }
111
+ const creds = credentialsFromOptions();
112
+ if (!creds || !opts.clobAddress) {
113
+ throw new PolymarketError("Polymarket CLOB L2 credentials and clobAddress are required", 401);
114
+ }
115
+ const signature = await buildPolyHmacSignature(creds.secret, timestamp, method, path, body);
116
+ return {
117
+ POLY_ADDRESS: opts.clobAddress,
118
+ POLY_SIGNATURE: signature,
119
+ POLY_TIMESTAMP: String(timestamp),
120
+ POLY_API_KEY: creds.key,
121
+ POLY_PASSPHRASE: creds.passphrase,
122
+ };
123
+ }
124
+ async function makeRawRequest(url, init, signal) {
125
+ const controller = new AbortController();
126
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
127
+ if (signal)
128
+ attachAbortHandler(signal, controller);
129
+ try {
130
+ const res = await doFetch(url, {
131
+ ...init,
132
+ signal: controller.signal,
133
+ });
134
+ clearTimeout(timeoutId);
135
+ if (!res.ok) {
136
+ const resBody = await readErrorBody(res);
137
+ throw new PolymarketError(formatErrorMessage(res.status, resBody), res.status, resBody);
138
+ }
139
+ return await readSuccessBody(res);
140
+ }
141
+ catch (error) {
142
+ clearTimeout(timeoutId);
143
+ if (error instanceof PolymarketError)
144
+ throw error;
145
+ throw new PolymarketError(`Polymarket request failed: ${error}`, 500);
146
+ }
147
+ }
49
148
  async function makeGetRequest(url, signal) {
50
149
  const controller = new AbortController();
51
150
  const timeoutId = setTimeout(() => controller.abort(), timeout);
@@ -61,7 +160,7 @@ export function createRequestHelpers(doFetch, timeout) {
61
160
  const resBody = await readErrorBody(res);
62
161
  throw new PolymarketError(formatErrorMessage(res.status, resBody), res.status, resBody);
63
162
  }
64
- return (await res.json());
163
+ return await readSuccessBody(res);
65
164
  }
66
165
  catch (error) {
67
166
  clearTimeout(timeoutId);
@@ -114,7 +213,7 @@ export function createRequestHelpers(doFetch, timeout) {
114
213
  const resBody = await readErrorBody(res);
115
214
  throw new PolymarketError(formatErrorMessage(res.status, resBody), res.status, resBody);
116
215
  }
117
- return (await res.json());
216
+ return await readSuccessBody(res);
118
217
  }
119
218
  catch (error) {
120
219
  clearTimeout(timeoutId);
@@ -123,6 +222,65 @@ export function createRequestHelpers(doFetch, timeout) {
123
222
  throw new PolymarketError(`Polymarket request failed: ${error}`, 500);
124
223
  }
125
224
  }
126
- return { makeGetRequest, makeGetTextRequest, makeJsonRequest };
225
+ async function makeAuthenticatedRequest(method, url, body, signal) {
226
+ const bodyText = body === undefined ? undefined : JSON.stringify(body);
227
+ const authHeaders = await l2HeadersFor(method, url, bodyText);
228
+ return makeRawRequest(url, {
229
+ method,
230
+ headers: {
231
+ ...authHeaders,
232
+ ...(bodyText ? { "Content-Type": "application/json" } : {}),
233
+ },
234
+ ...(bodyText ? { body: bodyText } : {}),
235
+ }, signal);
236
+ }
237
+ async function makeL1Request(method, url, headers, signal) {
238
+ return makeRawRequest(url, {
239
+ method,
240
+ headers: normalizeL1Headers(headers),
241
+ }, signal);
242
+ }
243
+ return {
244
+ makeGetRequest,
245
+ makeGetTextRequest,
246
+ makeJsonRequest,
247
+ makeAuthenticatedRequest,
248
+ makeL1Request,
249
+ };
250
+ }
251
+ function replaceAll(s, search, replacement) {
252
+ return s.split(search).join(replacement);
253
+ }
254
+ function base64ToArrayBuffer(base64) {
255
+ const clean = base64
256
+ .replace(/-/g, "+")
257
+ .replace(/_/g, "/")
258
+ .replace(/[^A-Za-z0-9+/=]/g, "");
259
+ const padded = clean + "=".repeat((4 - (clean.length % 4)) % 4);
260
+ const binary = atob(padded);
261
+ const bytes = new Uint8Array(binary.length);
262
+ for (let i = 0; i < binary.length; i++) {
263
+ bytes[i] = binary.charCodeAt(i);
264
+ }
265
+ return bytes.buffer;
266
+ }
267
+ function arrayBufferToBase64(buffer) {
268
+ const bytes = new Uint8Array(buffer);
269
+ let binary = "";
270
+ for (let i = 0; i < bytes.byteLength; i++) {
271
+ binary += String.fromCharCode(bytes[i]);
272
+ }
273
+ return btoa(binary);
274
+ }
275
+ export async function buildPolyHmacSignature(secret, timestamp, method, requestPath, body) {
276
+ if (!globalThis.crypto?.subtle) {
277
+ throw new PolymarketError("Polymarket CLOB HMAC signing requires Web Crypto", 500);
278
+ }
279
+ const keyData = base64ToArrayBuffer(secret);
280
+ const key = await globalThis.crypto.subtle.importKey("raw", keyData, { name: "HMAC", hash: "SHA-256" }, false, ["sign"]);
281
+ const message = `${timestamp}${method}${requestPath}${body ?? ""}`;
282
+ const signature = await globalThis.crypto.subtle.sign("HMAC", key, new TextEncoder().encode(message));
283
+ const base64 = arrayBufferToBase64(signature);
284
+ return replaceAll(replaceAll(base64, "+", "-"), "/", "_");
127
285
  }
128
286
  //# sourceMappingURL=_helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_helpers.js","sourceRoot":"","sources":["../../src/_helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_helpers.js","sourceRoot":"","sources":["../../src/_helpers.ts"],"names":[],"mappings":"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"}