@polymarket/clob-client-v2 1.0.4 → 1.0.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.
Files changed (199) hide show
  1. package/dist/_virtual/rolldown_runtime.cjs +29 -0
  2. package/dist/client.cjs +886 -0
  3. package/dist/client.cjs.map +1 -0
  4. package/dist/client.d.cts +165 -0
  5. package/dist/client.d.ts +167 -0
  6. package/dist/client.js +886 -0
  7. package/dist/client.js.map +1 -0
  8. package/dist/config.cjs +35 -0
  9. package/dist/config.cjs.map +1 -0
  10. package/dist/config.d.cts +16 -0
  11. package/dist/config.d.ts +16 -0
  12. package/dist/config.js +32 -0
  13. package/dist/config.js.map +1 -0
  14. package/dist/constants.cjs +15 -0
  15. package/dist/constants.cjs.map +1 -0
  16. package/dist/constants.js +10 -0
  17. package/dist/constants.js.map +1 -0
  18. package/dist/endpoints.cjs +125 -0
  19. package/dist/endpoints.cjs.map +1 -0
  20. package/dist/endpoints.js +65 -0
  21. package/dist/endpoints.js.map +1 -0
  22. package/dist/errors.cjs +20 -0
  23. package/dist/errors.cjs.map +1 -0
  24. package/dist/errors.d.cts +11 -0
  25. package/dist/errors.d.ts +11 -0
  26. package/dist/errors.js +17 -0
  27. package/dist/errors.js.map +1 -0
  28. package/dist/fees/index.cjs +21 -0
  29. package/dist/fees/index.cjs.map +1 -0
  30. package/dist/fees/index.d.cts +5 -0
  31. package/dist/fees/index.d.ts +5 -0
  32. package/dist/fees/index.js +19 -0
  33. package/dist/fees/index.js.map +1 -0
  34. package/dist/headers/index.cjs +34 -0
  35. package/dist/headers/index.cjs.map +1 -0
  36. package/dist/headers/index.d.cts +9 -0
  37. package/dist/headers/index.d.ts +11 -0
  38. package/dist/headers/index.js +33 -0
  39. package/dist/headers/index.js.map +1 -0
  40. package/dist/http-helpers/index.cjs +109 -0
  41. package/dist/http-helpers/index.cjs.map +1 -0
  42. package/dist/http-helpers/index.js +101 -0
  43. package/dist/http-helpers/index.js.map +1 -0
  44. package/dist/index.cjs +35 -2600
  45. package/dist/index.d.cts +14 -1039
  46. package/dist/index.d.ts +16 -1039
  47. package/dist/index.js +15 -2543
  48. package/dist/order-builder/helpers/buildMarketOrderCreationArgs.cjs +43 -0
  49. package/dist/order-builder/helpers/buildMarketOrderCreationArgs.cjs.map +1 -0
  50. package/dist/order-builder/helpers/buildMarketOrderCreationArgs.js +42 -0
  51. package/dist/order-builder/helpers/buildMarketOrderCreationArgs.js.map +1 -0
  52. package/dist/order-builder/helpers/buildOrder.cjs +30 -0
  53. package/dist/order-builder/helpers/buildOrder.cjs.map +1 -0
  54. package/dist/order-builder/helpers/buildOrder.js +30 -0
  55. package/dist/order-builder/helpers/buildOrder.js.map +1 -0
  56. package/dist/order-builder/helpers/buildOrderCreationArgs.cjs +45 -0
  57. package/dist/order-builder/helpers/buildOrderCreationArgs.cjs.map +1 -0
  58. package/dist/order-builder/helpers/buildOrderCreationArgs.js +44 -0
  59. package/dist/order-builder/helpers/buildOrderCreationArgs.js.map +1 -0
  60. package/dist/order-builder/helpers/calculateBuyMarketPrice.cjs +24 -0
  61. package/dist/order-builder/helpers/calculateBuyMarketPrice.cjs.map +1 -0
  62. package/dist/order-builder/helpers/calculateBuyMarketPrice.js +24 -0
  63. package/dist/order-builder/helpers/calculateBuyMarketPrice.js.map +1 -0
  64. package/dist/order-builder/helpers/calculateSellMarketPrice.cjs +24 -0
  65. package/dist/order-builder/helpers/calculateSellMarketPrice.cjs.map +1 -0
  66. package/dist/order-builder/helpers/calculateSellMarketPrice.js +24 -0
  67. package/dist/order-builder/helpers/calculateSellMarketPrice.js.map +1 -0
  68. package/dist/order-builder/helpers/createMarketOrder.cjs +31 -0
  69. package/dist/order-builder/helpers/createMarketOrder.cjs.map +1 -0
  70. package/dist/order-builder/helpers/createMarketOrder.js +31 -0
  71. package/dist/order-builder/helpers/createMarketOrder.js.map +1 -0
  72. package/dist/order-builder/helpers/createOrder.cjs +31 -0
  73. package/dist/order-builder/helpers/createOrder.cjs.map +1 -0
  74. package/dist/order-builder/helpers/createOrder.js +31 -0
  75. package/dist/order-builder/helpers/createOrder.js.map +1 -0
  76. package/dist/order-builder/helpers/getMarketOrderRawAmounts.cjs +36 -0
  77. package/dist/order-builder/helpers/getMarketOrderRawAmounts.cjs.map +1 -0
  78. package/dist/order-builder/helpers/getMarketOrderRawAmounts.js +36 -0
  79. package/dist/order-builder/helpers/getMarketOrderRawAmounts.js.map +1 -0
  80. package/dist/order-builder/helpers/getOrderRawAmounts.cjs +36 -0
  81. package/dist/order-builder/helpers/getOrderRawAmounts.cjs.map +1 -0
  82. package/dist/order-builder/helpers/getOrderRawAmounts.js +36 -0
  83. package/dist/order-builder/helpers/getOrderRawAmounts.js.map +1 -0
  84. package/dist/order-builder/helpers/roundingConfig.cjs +28 -0
  85. package/dist/order-builder/helpers/roundingConfig.cjs.map +1 -0
  86. package/dist/order-builder/helpers/roundingConfig.js +27 -0
  87. package/dist/order-builder/helpers/roundingConfig.js.map +1 -0
  88. package/dist/order-builder/index.d.ts +1 -0
  89. package/dist/order-builder/orderBuilder.cjs +51 -0
  90. package/dist/order-builder/orderBuilder.cjs.map +1 -0
  91. package/dist/order-builder/orderBuilder.d.cts +37 -0
  92. package/dist/order-builder/orderBuilder.d.ts +39 -0
  93. package/dist/order-builder/orderBuilder.js +51 -0
  94. package/dist/order-builder/orderBuilder.js.map +1 -0
  95. package/dist/order-utils/exchangeOrderBuilderV1.cjs +128 -0
  96. package/dist/order-utils/exchangeOrderBuilderV1.cjs.map +1 -0
  97. package/dist/order-utils/exchangeOrderBuilderV1.d.ts +2 -0
  98. package/dist/order-utils/exchangeOrderBuilderV1.js +127 -0
  99. package/dist/order-utils/exchangeOrderBuilderV1.js.map +1 -0
  100. package/dist/order-utils/exchangeOrderBuilderV2.cjs +190 -0
  101. package/dist/order-utils/exchangeOrderBuilderV2.cjs.map +1 -0
  102. package/dist/order-utils/exchangeOrderBuilderV2.d.ts +2 -0
  103. package/dist/order-utils/exchangeOrderBuilderV2.js +189 -0
  104. package/dist/order-utils/exchangeOrderBuilderV2.js.map +1 -0
  105. package/dist/order-utils/index.d.ts +7 -0
  106. package/dist/order-utils/model/ctfExchangeV1TypedData.cjs +60 -0
  107. package/dist/order-utils/model/ctfExchangeV1TypedData.cjs.map +1 -0
  108. package/dist/order-utils/model/ctfExchangeV1TypedData.js +57 -0
  109. package/dist/order-utils/model/ctfExchangeV1TypedData.js.map +1 -0
  110. package/dist/order-utils/model/ctfExchangeV2TypedData.cjs +56 -0
  111. package/dist/order-utils/model/ctfExchangeV2TypedData.cjs.map +1 -0
  112. package/dist/order-utils/model/ctfExchangeV2TypedData.js +53 -0
  113. package/dist/order-utils/model/ctfExchangeV2TypedData.js.map +1 -0
  114. package/dist/order-utils/model/eip712.cjs +24 -0
  115. package/dist/order-utils/model/eip712.cjs.map +1 -0
  116. package/dist/order-utils/model/eip712.d.cts +9 -0
  117. package/dist/order-utils/model/eip712.d.ts +9 -0
  118. package/dist/order-utils/model/eip712.js +23 -0
  119. package/dist/order-utils/model/eip712.js.map +1 -0
  120. package/dist/order-utils/model/order.d.cts +5 -0
  121. package/dist/order-utils/model/order.d.ts +5 -0
  122. package/dist/order-utils/model/orderDataV1.d.cts +68 -0
  123. package/dist/order-utils/model/orderDataV1.d.ts +69 -0
  124. package/dist/order-utils/model/orderDataV2.d.cts +68 -0
  125. package/dist/order-utils/model/orderDataV2.d.ts +69 -0
  126. package/dist/order-utils/model/side.cjs +11 -0
  127. package/dist/order-utils/model/side.cjs.map +1 -0
  128. package/dist/order-utils/model/side.d.cts +8 -0
  129. package/dist/order-utils/model/side.d.ts +8 -0
  130. package/dist/order-utils/model/side.js +10 -0
  131. package/dist/order-utils/model/side.js.map +1 -0
  132. package/dist/order-utils/model/signatureTypeV1.cjs +21 -0
  133. package/dist/order-utils/model/signatureTypeV1.cjs.map +1 -0
  134. package/dist/order-utils/model/signatureTypeV1.d.cts +18 -0
  135. package/dist/order-utils/model/signatureTypeV1.d.ts +18 -0
  136. package/dist/order-utils/model/signatureTypeV1.js +20 -0
  137. package/dist/order-utils/model/signatureTypeV1.js.map +1 -0
  138. package/dist/order-utils/model/signatureTypeV2.cjs +25 -0
  139. package/dist/order-utils/model/signatureTypeV2.cjs.map +1 -0
  140. package/dist/order-utils/model/signatureTypeV2.d.cts +22 -0
  141. package/dist/order-utils/model/signatureTypeV2.d.ts +22 -0
  142. package/dist/order-utils/model/signatureTypeV2.js +24 -0
  143. package/dist/order-utils/model/signatureTypeV2.js.map +1 -0
  144. package/dist/order-utils/utils.cjs +9 -0
  145. package/dist/order-utils/utils.cjs.map +1 -0
  146. package/dist/order-utils/utils.js +8 -0
  147. package/dist/order-utils/utils.js.map +1 -0
  148. package/dist/signing/constants.cjs +7 -0
  149. package/dist/signing/constants.cjs.map +1 -0
  150. package/dist/signing/constants.js +6 -0
  151. package/dist/signing/constants.js.map +1 -0
  152. package/dist/signing/eip712.cjs +51 -0
  153. package/dist/signing/eip712.cjs.map +1 -0
  154. package/dist/signing/eip712.d.ts +2 -0
  155. package/dist/signing/eip712.js +51 -0
  156. package/dist/signing/eip712.js.map +1 -0
  157. package/dist/signing/hmac.cjs +40 -0
  158. package/dist/signing/hmac.cjs.map +1 -0
  159. package/dist/signing/hmac.js +39 -0
  160. package/dist/signing/hmac.js.map +1 -0
  161. package/dist/signing/index.d.ts +2 -0
  162. package/dist/signing/signer.cjs +41 -0
  163. package/dist/signing/signer.cjs.map +1 -0
  164. package/dist/signing/signer.d.cts +17 -0
  165. package/dist/signing/signer.d.ts +17 -0
  166. package/dist/signing/signer.js +39 -0
  167. package/dist/signing/signer.js.map +1 -0
  168. package/dist/types/clob.cjs +35 -0
  169. package/dist/types/clob.cjs.map +1 -0
  170. package/dist/types/clob.d.cts +425 -0
  171. package/dist/types/clob.d.ts +425 -0
  172. package/dist/types/clob.js +32 -0
  173. package/dist/types/clob.js.map +1 -0
  174. package/dist/types/index.d.ts +5 -0
  175. package/dist/types/ordersV1.cjs +29 -0
  176. package/dist/types/ordersV1.cjs.map +1 -0
  177. package/dist/types/ordersV1.d.cts +115 -0
  178. package/dist/types/ordersV1.d.ts +116 -0
  179. package/dist/types/ordersV1.js +28 -0
  180. package/dist/types/ordersV1.js.map +1 -0
  181. package/dist/types/ordersV2.cjs +30 -0
  182. package/dist/types/ordersV2.cjs.map +1 -0
  183. package/dist/types/ordersV2.d.cts +113 -0
  184. package/dist/types/ordersV2.d.ts +114 -0
  185. package/dist/types/ordersV2.js +29 -0
  186. package/dist/types/ordersV2.js.map +1 -0
  187. package/dist/types/unifiedOrder.cjs +10 -0
  188. package/dist/types/unifiedOrder.cjs.map +1 -0
  189. package/dist/types/unifiedOrder.d.cts +44 -0
  190. package/dist/types/unifiedOrder.d.ts +45 -0
  191. package/dist/types/unifiedOrder.js +9 -0
  192. package/dist/types/unifiedOrder.js.map +1 -0
  193. package/dist/utilities.cjs +50 -0
  194. package/dist/utilities.cjs.map +1 -0
  195. package/dist/utilities.js +43 -0
  196. package/dist/utilities.js.map +1 -0
  197. package/package.json +3 -3
  198. package/dist/index.cjs.map +0 -1
  199. package/dist/index.js.map +0 -1
@@ -0,0 +1,21 @@
1
+
2
+ //#region src/fees/index.ts
3
+ const MIN_FEE_SLIPPAGE_PERCENTAGE = 1;
4
+ const MAX_FEE_SLIPPAGE_PERCENTAGE = 100;
5
+ function validateFeeSlippage(feeSlippage) {
6
+ if (!Number.isFinite(feeSlippage) || feeSlippage < 0 || feeSlippage > MAX_FEE_SLIPPAGE_PERCENTAGE || feeSlippage > 0 && feeSlippage < MIN_FEE_SLIPPAGE_PERCENTAGE) throw new Error("feeSlippage must be 0 or a percentage between 1 and 100");
7
+ }
8
+ function adjustBuyAmountForFees(amount, price, userUSDCBalance, feeRate, feeExponent, builderTakerFeeRate, feeSlippage = 0) {
9
+ validateFeeSlippage(feeSlippage);
10
+ const effectivePlatformFeeRate = feeRate * (price * (1 - price)) ** feeExponent * (1 + feeSlippage / 100);
11
+ const feeBaseAmount = Math.min(amount, userUSDCBalance);
12
+ const platformFee = feeBaseAmount / price * effectivePlatformFeeRate;
13
+ const builderFee = feeBaseAmount * builderTakerFeeRate;
14
+ if (userUSDCBalance <= amount + platformFee + builderFee) return Math.max(userUSDCBalance - platformFee - builderFee, 0);
15
+ return amount;
16
+ }
17
+
18
+ //#endregion
19
+ exports.adjustBuyAmountForFees = adjustBuyAmountForFees;
20
+ exports.validateFeeSlippage = validateFeeSlippage;
21
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../../src/fees/index.ts"],"sourcesContent":["const MIN_FEE_SLIPPAGE_PERCENTAGE = 1;\nconst MAX_FEE_SLIPPAGE_PERCENTAGE = 100;\n\nexport function validateFeeSlippage(feeSlippage: number): void {\n\tif (\n\t\t!Number.isFinite(feeSlippage) ||\n\t\tfeeSlippage < 0 ||\n\t\tfeeSlippage > MAX_FEE_SLIPPAGE_PERCENTAGE ||\n\t\t(feeSlippage > 0 && feeSlippage < MIN_FEE_SLIPPAGE_PERCENTAGE)\n\t) {\n\t\tthrow new Error(\"feeSlippage must be 0 or a percentage between 1 and 100\");\n\t}\n}\n\nexport function adjustBuyAmountForFees(\n\tamount: number,\n\tprice: number,\n\tuserUSDCBalance: number,\n\tfeeRate: number,\n\tfeeExponent: number,\n\tbuilderTakerFeeRate: number,\n\tfeeSlippage = 0,\n): number {\n\tvalidateFeeSlippage(feeSlippage);\n\tconst platformFeeRate = feeRate * (price * (1 - price)) ** feeExponent;\n\tconst effectivePlatformFeeRate = platformFeeRate * (1 + feeSlippage / 100);\n\tconst feeBaseAmount = Math.min(amount, userUSDCBalance);\n\tconst platformFee = (feeBaseAmount / price) * effectivePlatformFeeRate;\n\tconst builderFee = feeBaseAmount * builderTakerFeeRate;\n\tconst totalCost = amount + platformFee + builderFee;\n\n\tif (userUSDCBalance <= totalCost) {\n\t\treturn Math.max(userUSDCBalance - platformFee - builderFee, 0);\n\t}\n\n\treturn amount;\n}\n"],"mappings":";;AAAA,MAAM,8BAA8B;AACpC,MAAM,8BAA8B;AAEpC,SAAgB,oBAAoB,aAA2B;AAC9D,KACC,CAAC,OAAO,SAAS,YAAY,IAC7B,cAAc,KACd,cAAc,+BACb,cAAc,KAAK,cAAc,4BAElC,OAAM,IAAI,MAAM,0DAA0D;;AAI5E,SAAgB,uBACf,QACA,OACA,iBACA,SACA,aACA,qBACA,cAAc,GACL;AACT,qBAAoB,YAAY;CAEhC,MAAM,2BADkB,WAAW,SAAS,IAAI,WAAW,eACP,IAAI,cAAc;CACtE,MAAM,gBAAgB,KAAK,IAAI,QAAQ,gBAAgB;CACvD,MAAM,cAAe,gBAAgB,QAAS;CAC9C,MAAM,aAAa,gBAAgB;AAGnC,KAAI,mBAFc,SAAS,cAAc,WAGxC,QAAO,KAAK,IAAI,kBAAkB,cAAc,YAAY,EAAE;AAG/D,QAAO"}
@@ -0,0 +1,5 @@
1
+ //#region src/fees/index.d.ts
2
+ declare function adjustBuyAmountForFees(amount: number, price: number, userUSDCBalance: number, feeRate: number, feeExponent: number, builderTakerFeeRate: number, feeSlippage?: number): number;
3
+ //#endregion
4
+ export { adjustBuyAmountForFees };
5
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1,5 @@
1
+ //#region src/fees/index.d.ts
2
+ declare function adjustBuyAmountForFees(amount: number, price: number, userUSDCBalance: number, feeRate: number, feeExponent: number, builderTakerFeeRate: number, feeSlippage?: number): number;
3
+ //#endregion
4
+ export { adjustBuyAmountForFees };
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,19 @@
1
+ //#region src/fees/index.ts
2
+ const MIN_FEE_SLIPPAGE_PERCENTAGE = 1;
3
+ const MAX_FEE_SLIPPAGE_PERCENTAGE = 100;
4
+ function validateFeeSlippage(feeSlippage) {
5
+ if (!Number.isFinite(feeSlippage) || feeSlippage < 0 || feeSlippage > MAX_FEE_SLIPPAGE_PERCENTAGE || feeSlippage > 0 && feeSlippage < MIN_FEE_SLIPPAGE_PERCENTAGE) throw new Error("feeSlippage must be 0 or a percentage between 1 and 100");
6
+ }
7
+ function adjustBuyAmountForFees(amount, price, userUSDCBalance, feeRate, feeExponent, builderTakerFeeRate, feeSlippage = 0) {
8
+ validateFeeSlippage(feeSlippage);
9
+ const effectivePlatformFeeRate = feeRate * (price * (1 - price)) ** feeExponent * (1 + feeSlippage / 100);
10
+ const feeBaseAmount = Math.min(amount, userUSDCBalance);
11
+ const platformFee = feeBaseAmount / price * effectivePlatformFeeRate;
12
+ const builderFee = feeBaseAmount * builderTakerFeeRate;
13
+ if (userUSDCBalance <= amount + platformFee + builderFee) return Math.max(userUSDCBalance - platformFee - builderFee, 0);
14
+ return amount;
15
+ }
16
+
17
+ //#endregion
18
+ export { adjustBuyAmountForFees, validateFeeSlippage };
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/fees/index.ts"],"sourcesContent":["const MIN_FEE_SLIPPAGE_PERCENTAGE = 1;\nconst MAX_FEE_SLIPPAGE_PERCENTAGE = 100;\n\nexport function validateFeeSlippage(feeSlippage: number): void {\n\tif (\n\t\t!Number.isFinite(feeSlippage) ||\n\t\tfeeSlippage < 0 ||\n\t\tfeeSlippage > MAX_FEE_SLIPPAGE_PERCENTAGE ||\n\t\t(feeSlippage > 0 && feeSlippage < MIN_FEE_SLIPPAGE_PERCENTAGE)\n\t) {\n\t\tthrow new Error(\"feeSlippage must be 0 or a percentage between 1 and 100\");\n\t}\n}\n\nexport function adjustBuyAmountForFees(\n\tamount: number,\n\tprice: number,\n\tuserUSDCBalance: number,\n\tfeeRate: number,\n\tfeeExponent: number,\n\tbuilderTakerFeeRate: number,\n\tfeeSlippage = 0,\n): number {\n\tvalidateFeeSlippage(feeSlippage);\n\tconst platformFeeRate = feeRate * (price * (1 - price)) ** feeExponent;\n\tconst effectivePlatformFeeRate = platformFeeRate * (1 + feeSlippage / 100);\n\tconst feeBaseAmount = Math.min(amount, userUSDCBalance);\n\tconst platformFee = (feeBaseAmount / price) * effectivePlatformFeeRate;\n\tconst builderFee = feeBaseAmount * builderTakerFeeRate;\n\tconst totalCost = amount + platformFee + builderFee;\n\n\tif (userUSDCBalance <= totalCost) {\n\t\treturn Math.max(userUSDCBalance - platformFee - builderFee, 0);\n\t}\n\n\treturn amount;\n}\n"],"mappings":";AAAA,MAAM,8BAA8B;AACpC,MAAM,8BAA8B;AAEpC,SAAgB,oBAAoB,aAA2B;AAC9D,KACC,CAAC,OAAO,SAAS,YAAY,IAC7B,cAAc,KACd,cAAc,+BACb,cAAc,KAAK,cAAc,4BAElC,OAAM,IAAI,MAAM,0DAA0D;;AAI5E,SAAgB,uBACf,QACA,OACA,iBACA,SACA,aACA,qBACA,cAAc,GACL;AACT,qBAAoB,YAAY;CAEhC,MAAM,2BADkB,WAAW,SAAS,IAAI,WAAW,eACP,IAAI,cAAc;CACtE,MAAM,gBAAgB,KAAK,IAAI,QAAQ,gBAAgB;CACvD,MAAM,cAAe,gBAAgB,QAAS;CAC9C,MAAM,aAAa,gBAAgB;AAGnC,KAAI,mBAFc,SAAS,cAAc,WAGxC,QAAO,KAAK,IAAI,kBAAkB,cAAc,YAAY,EAAE;AAG/D,QAAO"}
@@ -0,0 +1,34 @@
1
+ const require_signer = require('../signing/signer.cjs');
2
+ const require_eip712 = require('../signing/eip712.cjs');
3
+ const require_hmac = require('../signing/hmac.cjs');
4
+
5
+ //#region src/headers/index.ts
6
+ const createL1Headers = async (signer, chainId, nonce, timestamp, address) => {
7
+ let ts = Math.floor(Date.now() / 1e3);
8
+ if (timestamp !== void 0) ts = timestamp;
9
+ let n = 0;
10
+ if (nonce !== void 0) n = nonce;
11
+ const sig = await require_eip712.buildClobEip712Signature(signer, chainId, ts, n, address);
12
+ return {
13
+ POLY_ADDRESS: address ?? await require_signer.getSignerAddress(signer),
14
+ POLY_SIGNATURE: sig,
15
+ POLY_TIMESTAMP: `${ts}`,
16
+ POLY_NONCE: `${n}`
17
+ };
18
+ };
19
+ const createL2Headers = async (signer, creds, l2HeaderArgs, timestamp) => {
20
+ let ts = Math.floor(Date.now() / 1e3);
21
+ if (timestamp !== void 0) ts = timestamp;
22
+ return {
23
+ POLY_ADDRESS: await require_signer.getSignerAddress(signer),
24
+ POLY_SIGNATURE: await require_hmac.buildPolyHmacSignature(creds.secret, ts, l2HeaderArgs.method, l2HeaderArgs.requestPath, l2HeaderArgs.body),
25
+ POLY_TIMESTAMP: `${ts}`,
26
+ POLY_API_KEY: creds.key,
27
+ POLY_PASSPHRASE: creds.passphrase
28
+ };
29
+ };
30
+
31
+ //#endregion
32
+ exports.createL1Headers = createL1Headers;
33
+ exports.createL2Headers = createL2Headers;
34
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["buildClobEip712Signature","getSignerAddress","buildPolyHmacSignature"],"sources":["../../src/headers/index.ts"],"sourcesContent":["import {\n\tbuildClobEip712Signature,\n\tbuildPolyHmacSignature,\n\ttype ClobSigner,\n} from \"../signing/index.js\";\nimport { getSignerAddress } from \"../signing/signer.js\";\nimport type {\n\tApiKeyCreds,\n\tChain,\n\tL1PolyHeader,\n\tL2HeaderArgs,\n\tL2PolyHeader,\n} from \"../types/index.js\";\n\nexport const createL1Headers = async (\n\tsigner: ClobSigner,\n\tchainId: Chain,\n\tnonce?: number,\n\ttimestamp?: number,\n\taddress?: string,\n): Promise<L1PolyHeader> => {\n\tlet ts = Math.floor(Date.now() / 1000);\n\tif (timestamp !== undefined) {\n\t\tts = timestamp;\n\t}\n\tlet n = 0; // Default nonce is 0\n\tif (nonce !== undefined) {\n\t\tn = nonce;\n\t}\n\n\tconst sig = await buildClobEip712Signature(signer, chainId, ts, n, address);\n\tconst resolvedAddress = address ?? (await getSignerAddress(signer));\n\n\tconst headers = {\n\t\tPOLY_ADDRESS: resolvedAddress,\n\t\tPOLY_SIGNATURE: sig,\n\t\tPOLY_TIMESTAMP: `${ts}`,\n\t\tPOLY_NONCE: `${n}`,\n\t};\n\treturn headers;\n};\n\nexport const createL2Headers = async (\n\tsigner: ClobSigner,\n\tcreds: ApiKeyCreds,\n\tl2HeaderArgs: L2HeaderArgs,\n\ttimestamp?: number,\n): Promise<L2PolyHeader> => {\n\tlet ts = Math.floor(Date.now() / 1000);\n\tif (timestamp !== undefined) {\n\t\tts = timestamp;\n\t}\n\tconst address = await getSignerAddress(signer);\n\n\tconst sig = await buildPolyHmacSignature(\n\t\tcreds.secret,\n\t\tts,\n\t\tl2HeaderArgs.method,\n\t\tl2HeaderArgs.requestPath,\n\t\tl2HeaderArgs.body,\n\t);\n\n\tconst headers = {\n\t\tPOLY_ADDRESS: address,\n\t\tPOLY_SIGNATURE: sig,\n\t\tPOLY_TIMESTAMP: `${ts}`,\n\t\tPOLY_API_KEY: creds.key,\n\t\tPOLY_PASSPHRASE: creds.passphrase,\n\t};\n\n\treturn headers;\n};\n"],"mappings":";;;;;AAcA,MAAa,kBAAkB,OAC9B,QACA,SACA,OACA,WACA,YAC2B;CAC3B,IAAI,KAAK,KAAK,MAAM,KAAK,KAAK,GAAG,IAAK;AACtC,KAAI,cAAc,OACjB,MAAK;CAEN,IAAI,IAAI;AACR,KAAI,UAAU,OACb,KAAI;CAGL,MAAM,MAAM,MAAMA,wCAAyB,QAAQ,SAAS,IAAI,GAAG,QAAQ;AAS3E,QANgB;EACf,cAHuB,WAAY,MAAMC,gCAAiB,OAAO;EAIjE,gBAAgB;EAChB,gBAAgB,GAAG;EACnB,YAAY,GAAG;EACf;;AAIF,MAAa,kBAAkB,OAC9B,QACA,OACA,cACA,cAC2B;CAC3B,IAAI,KAAK,KAAK,MAAM,KAAK,KAAK,GAAG,IAAK;AACtC,KAAI,cAAc,OACjB,MAAK;AAoBN,QARgB;EACf,cAXe,MAAMA,gCAAiB,OAAO;EAY7C,gBAVW,MAAMC,oCACjB,MAAM,QACN,IACA,aAAa,QACb,aAAa,aACb,aAAa,KACb;EAKA,gBAAgB,GAAG;EACnB,cAAc,MAAM;EACpB,iBAAiB,MAAM;EACvB"}
@@ -0,0 +1,9 @@
1
+ import { ClobSigner } from "../signing/signer.cjs";
2
+ import { ApiKeyCreds, Chain, L1PolyHeader, L2HeaderArgs, L2PolyHeader } from "../types/clob.cjs";
3
+
4
+ //#region src/headers/index.d.ts
5
+ declare const createL1Headers: (signer: ClobSigner, chainId: Chain, nonce?: number, timestamp?: number, address?: string) => Promise<L1PolyHeader>;
6
+ declare const createL2Headers: (signer: ClobSigner, creds: ApiKeyCreds, l2HeaderArgs: L2HeaderArgs, timestamp?: number) => Promise<L2PolyHeader>;
7
+ //#endregion
8
+ export { createL1Headers, createL2Headers };
9
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1,11 @@
1
+ import { ClobSigner } from "../signing/signer.js";
2
+ import { ApiKeyCreds, Chain, L1PolyHeader, L2HeaderArgs, L2PolyHeader } from "../types/clob.js";
3
+ import "../types/index.js";
4
+ import "../signing/index.js";
5
+
6
+ //#region src/headers/index.d.ts
7
+ declare const createL1Headers: (signer: ClobSigner, chainId: Chain, nonce?: number, timestamp?: number, address?: string) => Promise<L1PolyHeader>;
8
+ declare const createL2Headers: (signer: ClobSigner, creds: ApiKeyCreds, l2HeaderArgs: L2HeaderArgs, timestamp?: number) => Promise<L2PolyHeader>;
9
+ //#endregion
10
+ export { createL1Headers, createL2Headers };
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,33 @@
1
+ import { getSignerAddress } from "../signing/signer.js";
2
+ import { buildClobEip712Signature } from "../signing/eip712.js";
3
+ import { buildPolyHmacSignature } from "../signing/hmac.js";
4
+
5
+ //#region src/headers/index.ts
6
+ const createL1Headers = async (signer, chainId, nonce, timestamp, address) => {
7
+ let ts = Math.floor(Date.now() / 1e3);
8
+ if (timestamp !== void 0) ts = timestamp;
9
+ let n = 0;
10
+ if (nonce !== void 0) n = nonce;
11
+ const sig = await buildClobEip712Signature(signer, chainId, ts, n, address);
12
+ return {
13
+ POLY_ADDRESS: address ?? await getSignerAddress(signer),
14
+ POLY_SIGNATURE: sig,
15
+ POLY_TIMESTAMP: `${ts}`,
16
+ POLY_NONCE: `${n}`
17
+ };
18
+ };
19
+ const createL2Headers = async (signer, creds, l2HeaderArgs, timestamp) => {
20
+ let ts = Math.floor(Date.now() / 1e3);
21
+ if (timestamp !== void 0) ts = timestamp;
22
+ return {
23
+ POLY_ADDRESS: await getSignerAddress(signer),
24
+ POLY_SIGNATURE: await buildPolyHmacSignature(creds.secret, ts, l2HeaderArgs.method, l2HeaderArgs.requestPath, l2HeaderArgs.body),
25
+ POLY_TIMESTAMP: `${ts}`,
26
+ POLY_API_KEY: creds.key,
27
+ POLY_PASSPHRASE: creds.passphrase
28
+ };
29
+ };
30
+
31
+ //#endregion
32
+ export { createL1Headers, createL2Headers };
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/headers/index.ts"],"sourcesContent":["import {\n\tbuildClobEip712Signature,\n\tbuildPolyHmacSignature,\n\ttype ClobSigner,\n} from \"../signing/index.js\";\nimport { getSignerAddress } from \"../signing/signer.js\";\nimport type {\n\tApiKeyCreds,\n\tChain,\n\tL1PolyHeader,\n\tL2HeaderArgs,\n\tL2PolyHeader,\n} from \"../types/index.js\";\n\nexport const createL1Headers = async (\n\tsigner: ClobSigner,\n\tchainId: Chain,\n\tnonce?: number,\n\ttimestamp?: number,\n\taddress?: string,\n): Promise<L1PolyHeader> => {\n\tlet ts = Math.floor(Date.now() / 1000);\n\tif (timestamp !== undefined) {\n\t\tts = timestamp;\n\t}\n\tlet n = 0; // Default nonce is 0\n\tif (nonce !== undefined) {\n\t\tn = nonce;\n\t}\n\n\tconst sig = await buildClobEip712Signature(signer, chainId, ts, n, address);\n\tconst resolvedAddress = address ?? (await getSignerAddress(signer));\n\n\tconst headers = {\n\t\tPOLY_ADDRESS: resolvedAddress,\n\t\tPOLY_SIGNATURE: sig,\n\t\tPOLY_TIMESTAMP: `${ts}`,\n\t\tPOLY_NONCE: `${n}`,\n\t};\n\treturn headers;\n};\n\nexport const createL2Headers = async (\n\tsigner: ClobSigner,\n\tcreds: ApiKeyCreds,\n\tl2HeaderArgs: L2HeaderArgs,\n\ttimestamp?: number,\n): Promise<L2PolyHeader> => {\n\tlet ts = Math.floor(Date.now() / 1000);\n\tif (timestamp !== undefined) {\n\t\tts = timestamp;\n\t}\n\tconst address = await getSignerAddress(signer);\n\n\tconst sig = await buildPolyHmacSignature(\n\t\tcreds.secret,\n\t\tts,\n\t\tl2HeaderArgs.method,\n\t\tl2HeaderArgs.requestPath,\n\t\tl2HeaderArgs.body,\n\t);\n\n\tconst headers = {\n\t\tPOLY_ADDRESS: address,\n\t\tPOLY_SIGNATURE: sig,\n\t\tPOLY_TIMESTAMP: `${ts}`,\n\t\tPOLY_API_KEY: creds.key,\n\t\tPOLY_PASSPHRASE: creds.passphrase,\n\t};\n\n\treturn headers;\n};\n"],"mappings":";;;;;AAcA,MAAa,kBAAkB,OAC9B,QACA,SACA,OACA,WACA,YAC2B;CAC3B,IAAI,KAAK,KAAK,MAAM,KAAK,KAAK,GAAG,IAAK;AACtC,KAAI,cAAc,OACjB,MAAK;CAEN,IAAI,IAAI;AACR,KAAI,UAAU,OACb,KAAI;CAGL,MAAM,MAAM,MAAM,yBAAyB,QAAQ,SAAS,IAAI,GAAG,QAAQ;AAS3E,QANgB;EACf,cAHuB,WAAY,MAAM,iBAAiB,OAAO;EAIjE,gBAAgB;EAChB,gBAAgB,GAAG;EACnB,YAAY,GAAG;EACf;;AAIF,MAAa,kBAAkB,OAC9B,QACA,OACA,cACA,cAC2B;CAC3B,IAAI,KAAK,KAAK,MAAM,KAAK,KAAK,GAAG,IAAK;AACtC,KAAI,cAAc,OACjB,MAAK;AAoBN,QARgB;EACf,cAXe,MAAM,iBAAiB,OAAO;EAY7C,gBAVW,MAAM,uBACjB,MAAM,QACN,IACA,aAAa,QACb,aAAa,aACb,aAAa,KACb;EAKA,gBAAgB,GAAG;EACnB,cAAc,MAAM;EACpB,iBAAiB,MAAM;EACvB"}
@@ -0,0 +1,109 @@
1
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
+ let axios = require("axios");
3
+ axios = require_rolldown_runtime.__toESM(axios);
4
+ let browser_or_node = require("browser-or-node");
5
+
6
+ //#region src/http-helpers/index.ts
7
+ const GET = "GET";
8
+ const POST = "POST";
9
+ const DELETE = "DELETE";
10
+ const overloadHeaders = (method, headers = {}) => {
11
+ if (browser_or_node.isBrowser) return;
12
+ headers["User-Agent"] = `@polymarket/clob-client`;
13
+ headers.Accept = "*/*";
14
+ headers.Connection = "keep-alive";
15
+ headers["Content-Type"] = "application/json";
16
+ if (method === GET) headers["Accept-Encoding"] = "gzip";
17
+ };
18
+ const request = async (endpoint, method, headers, data, params) => {
19
+ overloadHeaders(method, headers);
20
+ return await (0, axios.default)({
21
+ method,
22
+ url: endpoint,
23
+ headers,
24
+ data,
25
+ params
26
+ });
27
+ };
28
+ const sleep = (ms) => new Promise((res) => setTimeout(res, ms));
29
+ const post = async (endpoint, options, retryOnError = false) => {
30
+ try {
31
+ return (await request(endpoint, POST, options?.headers, options?.data, options?.params)).data;
32
+ } catch (err) {
33
+ if (retryOnError && isTransientAxiosError(err)) {
34
+ await sleep(30);
35
+ try {
36
+ return (await request(endpoint, POST, options?.headers, options?.data, options?.params)).data;
37
+ } catch (retryErr) {
38
+ return errorHandling(retryErr);
39
+ }
40
+ }
41
+ return errorHandling(err);
42
+ }
43
+ };
44
+ const get = async (endpoint, options) => {
45
+ try {
46
+ return (await request(endpoint, GET, options?.headers, options?.data, options?.params)).data;
47
+ } catch (err) {
48
+ return errorHandling(err);
49
+ }
50
+ };
51
+ const del = async (endpoint, options) => {
52
+ try {
53
+ return (await request(endpoint, DELETE, options?.headers, options?.data, options?.params)).data;
54
+ } catch (err) {
55
+ return errorHandling(err);
56
+ }
57
+ };
58
+ const errorHandling = (err) => {
59
+ if (axios.default.isAxiosError(err)) {
60
+ if (err.response) {
61
+ if (err.response?.data) {
62
+ if (typeof err.response?.data === "string" || err.response?.data instanceof String) return {
63
+ error: err.response?.data,
64
+ status: err.response?.status
65
+ };
66
+ if (!Object.prototype.hasOwnProperty.call(err.response?.data, "error")) return {
67
+ error: err.response?.data,
68
+ status: err.response?.status
69
+ };
70
+ return {
71
+ ...err.response?.data,
72
+ status: err.response?.status
73
+ };
74
+ }
75
+ }
76
+ if (err.message) return { error: err.message };
77
+ }
78
+ return { error: err };
79
+ };
80
+ const isTransientAxiosError = (err) => {
81
+ if (!axios.default.isAxiosError(err)) return false;
82
+ if (!err.response) return true;
83
+ const status = err.response.status ?? 0;
84
+ if (status >= 500 && status < 600) return true;
85
+ const code = (err.code ?? "").toString();
86
+ return [
87
+ "ECONNABORTED",
88
+ "ENETUNREACH",
89
+ "EAI_AGAIN",
90
+ "ETIMEDOUT"
91
+ ].includes(code);
92
+ };
93
+ const parseDropNotificationParams = (dropNotificationParams) => {
94
+ const params = {};
95
+ if (dropNotificationParams !== void 0) {
96
+ if (dropNotificationParams.ids !== void 0) params.ids = dropNotificationParams?.ids.join(",");
97
+ }
98
+ return params;
99
+ };
100
+
101
+ //#endregion
102
+ exports.DELETE = DELETE;
103
+ exports.GET = GET;
104
+ exports.POST = POST;
105
+ exports.del = del;
106
+ exports.get = get;
107
+ exports.parseDropNotificationParams = parseDropNotificationParams;
108
+ exports.post = post;
109
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["isBrowser","err: unknown","retryErr: unknown","params: QueryParams"],"sources":["../../src/http-helpers/index.ts"],"sourcesContent":["/* eslint-disable max-depth */\nimport axios, { type Method, type RawAxiosRequestHeaders } from \"axios\";\nimport { isBrowser } from \"browser-or-node\";\n\nimport type { DropNotificationParams, OrdersScoringParams } from \"../types/index.js\";\n\nexport const GET = \"GET\";\nexport const POST = \"POST\";\nexport const DELETE = \"DELETE\";\nexport const PUT = \"PUT\";\n\nconst overloadHeaders = (\n\tmethod: Method,\n\theaders: Record<string, string | number | boolean> = {},\n) => {\n\tif (isBrowser) {\n\t\treturn;\n\t}\n\n\theaders[\"User-Agent\"] = `@polymarket/clob-client`;\n\theaders.Accept = \"*/*\";\n\theaders.Connection = \"keep-alive\";\n\theaders[\"Content-Type\"] = \"application/json\";\n\n\tif (method === GET) {\n\t\theaders[\"Accept-Encoding\"] = \"gzip\";\n\t}\n};\n\nexport const request = async (\n\tendpoint: string,\n\tmethod: Method,\n\theaders?: any,\n\tdata?: any,\n\tparams?: any,\n): Promise<any> => {\n\toverloadHeaders(method, headers);\n\treturn await axios({ method, url: endpoint, headers, data, params });\n};\n\nexport type QueryParams = Record<string, any>;\n\nexport interface RequestOptions {\n\theaders?: RawAxiosRequestHeaders;\n\tdata?: any;\n\tparams?: QueryParams;\n}\n\nconst sleep = (ms: number) => new Promise(res => setTimeout(res, ms));\n\nexport const post = async (\n\tendpoint: string,\n\toptions?: RequestOptions,\n\tretryOnError: boolean = false,\n): Promise<any> => {\n\ttry {\n\t\tconst resp = await request(\n\t\t\tendpoint,\n\t\t\tPOST,\n\t\t\toptions?.headers,\n\t\t\toptions?.data,\n\t\t\toptions?.params,\n\t\t);\n\t\treturn resp.data;\n\t} catch (err: unknown) {\n\t\tif (retryOnError && isTransientAxiosError(err)) {\n\t\t\tawait sleep(30);\n\t\t\ttry {\n\t\t\t\tconst resp = await request(\n\t\t\t\t\tendpoint,\n\t\t\t\t\tPOST,\n\t\t\t\t\toptions?.headers,\n\t\t\t\t\toptions?.data,\n\t\t\t\t\toptions?.params,\n\t\t\t\t);\n\t\t\t\treturn resp.data;\n\t\t\t} catch (retryErr: unknown) {\n\t\t\t\treturn errorHandling(retryErr);\n\t\t\t}\n\t\t}\n\t\treturn errorHandling(err);\n\t}\n};\n\nexport const get = async (endpoint: string, options?: RequestOptions): Promise<any> => {\n\ttry {\n\t\tconst resp = await request(endpoint, GET, options?.headers, options?.data, options?.params);\n\t\treturn resp.data;\n\t} catch (err: unknown) {\n\t\treturn errorHandling(err);\n\t}\n};\n\nexport const del = async (endpoint: string, options?: RequestOptions): Promise<any> => {\n\ttry {\n\t\tconst resp = await request(\n\t\t\tendpoint,\n\t\t\tDELETE,\n\t\t\toptions?.headers,\n\t\t\toptions?.data,\n\t\t\toptions?.params,\n\t\t);\n\t\treturn resp.data;\n\t} catch (err: unknown) {\n\t\treturn errorHandling(err);\n\t}\n};\n\nconst errorHandling = (err: unknown) => {\n\tif (axios.isAxiosError(err)) {\n\t\tif (err.response) {\n\t\t\tif (err.response?.data) {\n\t\t\t\tif (\n\t\t\t\t\ttypeof err.response?.data === \"string\" ||\n\t\t\t\t\terr.response?.data instanceof String\n\t\t\t\t) {\n\t\t\t\t\treturn { error: err.response?.data, status: err.response?.status };\n\t\t\t\t}\n\t\t\t\t// biome-ignore lint/suspicious/noPrototypeBuiltins: ES2022 Object.hasOwn not available with current target\n\t\t\t\tif (!Object.prototype.hasOwnProperty.call(err.response?.data, \"error\")) {\n\t\t\t\t\treturn { error: err.response?.data, status: err.response?.status };\n\t\t\t\t}\n\t\t\t\t// in this case the field 'error' is included\n\t\t\t\treturn { ...err.response?.data, status: err.response?.status };\n\t\t\t}\n\t\t}\n\n\t\tif (err.message) {\n\t\t\treturn { error: err.message };\n\t\t}\n\t}\n\n\treturn { error: err };\n};\n\nconst isTransientAxiosError = (err: unknown): boolean => {\n\tif (!axios.isAxiosError(err)) return false;\n\tif (!err.response) return true; // network error\n\tconst status = err.response.status ?? 0;\n\tif (status >= 500 && status < 600) return true; // 5xx\n\tconst code = (err.code ?? \"\").toString();\n\treturn [\"ECONNABORTED\", \"ENETUNREACH\", \"EAI_AGAIN\", \"ETIMEDOUT\"].includes(code);\n};\n\nexport const parseOrdersScoringParams = (orderScoringParams?: OrdersScoringParams): QueryParams => {\n\tconst params: QueryParams = {};\n\tif (orderScoringParams !== undefined) {\n\t\tif (orderScoringParams.orderIds !== undefined) {\n\t\t\tparams.order_ids = orderScoringParams?.orderIds.join(\",\");\n\t\t}\n\t}\n\treturn params;\n};\n\nexport const parseDropNotificationParams = (\n\tdropNotificationParams?: DropNotificationParams,\n): QueryParams => {\n\tconst params: QueryParams = {};\n\tif (dropNotificationParams !== undefined) {\n\t\tif (dropNotificationParams.ids !== undefined) {\n\t\t\tparams.ids = dropNotificationParams?.ids.join(\",\");\n\t\t}\n\t}\n\treturn params;\n};\n"],"mappings":";;;;;;AAMA,MAAa,MAAM;AACnB,MAAa,OAAO;AACpB,MAAa,SAAS;AAGtB,MAAM,mBACL,QACA,UAAqD,EAAE,KACnD;AACJ,KAAIA,0BACH;AAGD,SAAQ,gBAAgB;AACxB,SAAQ,SAAS;AACjB,SAAQ,aAAa;AACrB,SAAQ,kBAAkB;AAE1B,KAAI,WAAW,IACd,SAAQ,qBAAqB;;AAI/B,MAAa,UAAU,OACtB,UACA,QACA,SACA,MACA,WACkB;AAClB,iBAAgB,QAAQ,QAAQ;AAChC,QAAO,yBAAY;EAAE;EAAQ,KAAK;EAAU;EAAS;EAAM;EAAQ,CAAC;;AAWrE,MAAM,SAAS,OAAe,IAAI,SAAQ,QAAO,WAAW,KAAK,GAAG,CAAC;AAErE,MAAa,OAAO,OACnB,UACA,SACA,eAAwB,UACN;AAClB,KAAI;AAQH,UAPa,MAAM,QAClB,UACA,MACA,SAAS,SACT,SAAS,MACT,SAAS,OACT,EACW;UACJC,KAAc;AACtB,MAAI,gBAAgB,sBAAsB,IAAI,EAAE;AAC/C,SAAM,MAAM,GAAG;AACf,OAAI;AAQH,YAPa,MAAM,QAClB,UACA,MACA,SAAS,SACT,SAAS,MACT,SAAS,OACT,EACW;YACJC,UAAmB;AAC3B,WAAO,cAAc,SAAS;;;AAGhC,SAAO,cAAc,IAAI;;;AAI3B,MAAa,MAAM,OAAO,UAAkB,YAA2C;AACtF,KAAI;AAEH,UADa,MAAM,QAAQ,UAAU,KAAK,SAAS,SAAS,SAAS,MAAM,SAAS,OAAO,EAC/E;UACJD,KAAc;AACtB,SAAO,cAAc,IAAI;;;AAI3B,MAAa,MAAM,OAAO,UAAkB,YAA2C;AACtF,KAAI;AAQH,UAPa,MAAM,QAClB,UACA,QACA,SAAS,SACT,SAAS,MACT,SAAS,OACT,EACW;UACJA,KAAc;AACtB,SAAO,cAAc,IAAI;;;AAI3B,MAAM,iBAAiB,QAAiB;AACvC,KAAI,cAAM,aAAa,IAAI,EAAE;AAC5B,MAAI,IAAI,UACP;OAAI,IAAI,UAAU,MAAM;AACvB,QACC,OAAO,IAAI,UAAU,SAAS,YAC9B,IAAI,UAAU,gBAAgB,OAE9B,QAAO;KAAE,OAAO,IAAI,UAAU;KAAM,QAAQ,IAAI,UAAU;KAAQ;AAGnE,QAAI,CAAC,OAAO,UAAU,eAAe,KAAK,IAAI,UAAU,MAAM,QAAQ,CACrE,QAAO;KAAE,OAAO,IAAI,UAAU;KAAM,QAAQ,IAAI,UAAU;KAAQ;AAGnE,WAAO;KAAE,GAAG,IAAI,UAAU;KAAM,QAAQ,IAAI,UAAU;KAAQ;;;AAIhE,MAAI,IAAI,QACP,QAAO,EAAE,OAAO,IAAI,SAAS;;AAI/B,QAAO,EAAE,OAAO,KAAK;;AAGtB,MAAM,yBAAyB,QAA0B;AACxD,KAAI,CAAC,cAAM,aAAa,IAAI,CAAE,QAAO;AACrC,KAAI,CAAC,IAAI,SAAU,QAAO;CAC1B,MAAM,SAAS,IAAI,SAAS,UAAU;AACtC,KAAI,UAAU,OAAO,SAAS,IAAK,QAAO;CAC1C,MAAM,QAAQ,IAAI,QAAQ,IAAI,UAAU;AACxC,QAAO;EAAC;EAAgB;EAAe;EAAa;EAAY,CAAC,SAAS,KAAK;;AAahF,MAAa,+BACZ,2BACiB;CACjB,MAAME,SAAsB,EAAE;AAC9B,KAAI,2BAA2B,QAC9B;MAAI,uBAAuB,QAAQ,OAClC,QAAO,MAAM,wBAAwB,IAAI,KAAK,IAAI;;AAGpD,QAAO"}
@@ -0,0 +1,101 @@
1
+ import axios from "axios";
2
+ import { isBrowser } from "browser-or-node";
3
+
4
+ //#region src/http-helpers/index.ts
5
+ const GET = "GET";
6
+ const POST = "POST";
7
+ const DELETE = "DELETE";
8
+ const overloadHeaders = (method, headers = {}) => {
9
+ if (isBrowser) return;
10
+ headers["User-Agent"] = `@polymarket/clob-client`;
11
+ headers.Accept = "*/*";
12
+ headers.Connection = "keep-alive";
13
+ headers["Content-Type"] = "application/json";
14
+ if (method === GET) headers["Accept-Encoding"] = "gzip";
15
+ };
16
+ const request = async (endpoint, method, headers, data, params) => {
17
+ overloadHeaders(method, headers);
18
+ return await axios({
19
+ method,
20
+ url: endpoint,
21
+ headers,
22
+ data,
23
+ params
24
+ });
25
+ };
26
+ const sleep = (ms) => new Promise((res) => setTimeout(res, ms));
27
+ const post = async (endpoint, options, retryOnError = false) => {
28
+ try {
29
+ return (await request(endpoint, POST, options?.headers, options?.data, options?.params)).data;
30
+ } catch (err) {
31
+ if (retryOnError && isTransientAxiosError(err)) {
32
+ await sleep(30);
33
+ try {
34
+ return (await request(endpoint, POST, options?.headers, options?.data, options?.params)).data;
35
+ } catch (retryErr) {
36
+ return errorHandling(retryErr);
37
+ }
38
+ }
39
+ return errorHandling(err);
40
+ }
41
+ };
42
+ const get = async (endpoint, options) => {
43
+ try {
44
+ return (await request(endpoint, GET, options?.headers, options?.data, options?.params)).data;
45
+ } catch (err) {
46
+ return errorHandling(err);
47
+ }
48
+ };
49
+ const del = async (endpoint, options) => {
50
+ try {
51
+ return (await request(endpoint, DELETE, options?.headers, options?.data, options?.params)).data;
52
+ } catch (err) {
53
+ return errorHandling(err);
54
+ }
55
+ };
56
+ const errorHandling = (err) => {
57
+ if (axios.isAxiosError(err)) {
58
+ if (err.response) {
59
+ if (err.response?.data) {
60
+ if (typeof err.response?.data === "string" || err.response?.data instanceof String) return {
61
+ error: err.response?.data,
62
+ status: err.response?.status
63
+ };
64
+ if (!Object.prototype.hasOwnProperty.call(err.response?.data, "error")) return {
65
+ error: err.response?.data,
66
+ status: err.response?.status
67
+ };
68
+ return {
69
+ ...err.response?.data,
70
+ status: err.response?.status
71
+ };
72
+ }
73
+ }
74
+ if (err.message) return { error: err.message };
75
+ }
76
+ return { error: err };
77
+ };
78
+ const isTransientAxiosError = (err) => {
79
+ if (!axios.isAxiosError(err)) return false;
80
+ if (!err.response) return true;
81
+ const status = err.response.status ?? 0;
82
+ if (status >= 500 && status < 600) return true;
83
+ const code = (err.code ?? "").toString();
84
+ return [
85
+ "ECONNABORTED",
86
+ "ENETUNREACH",
87
+ "EAI_AGAIN",
88
+ "ETIMEDOUT"
89
+ ].includes(code);
90
+ };
91
+ const parseDropNotificationParams = (dropNotificationParams) => {
92
+ const params = {};
93
+ if (dropNotificationParams !== void 0) {
94
+ if (dropNotificationParams.ids !== void 0) params.ids = dropNotificationParams?.ids.join(",");
95
+ }
96
+ return params;
97
+ };
98
+
99
+ //#endregion
100
+ export { DELETE, GET, POST, del, get, parseDropNotificationParams, post };
101
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["err: unknown","retryErr: unknown","params: QueryParams"],"sources":["../../src/http-helpers/index.ts"],"sourcesContent":["/* eslint-disable max-depth */\nimport axios, { type Method, type RawAxiosRequestHeaders } from \"axios\";\nimport { isBrowser } from \"browser-or-node\";\n\nimport type { DropNotificationParams, OrdersScoringParams } from \"../types/index.js\";\n\nexport const GET = \"GET\";\nexport const POST = \"POST\";\nexport const DELETE = \"DELETE\";\nexport const PUT = \"PUT\";\n\nconst overloadHeaders = (\n\tmethod: Method,\n\theaders: Record<string, string | number | boolean> = {},\n) => {\n\tif (isBrowser) {\n\t\treturn;\n\t}\n\n\theaders[\"User-Agent\"] = `@polymarket/clob-client`;\n\theaders.Accept = \"*/*\";\n\theaders.Connection = \"keep-alive\";\n\theaders[\"Content-Type\"] = \"application/json\";\n\n\tif (method === GET) {\n\t\theaders[\"Accept-Encoding\"] = \"gzip\";\n\t}\n};\n\nexport const request = async (\n\tendpoint: string,\n\tmethod: Method,\n\theaders?: any,\n\tdata?: any,\n\tparams?: any,\n): Promise<any> => {\n\toverloadHeaders(method, headers);\n\treturn await axios({ method, url: endpoint, headers, data, params });\n};\n\nexport type QueryParams = Record<string, any>;\n\nexport interface RequestOptions {\n\theaders?: RawAxiosRequestHeaders;\n\tdata?: any;\n\tparams?: QueryParams;\n}\n\nconst sleep = (ms: number) => new Promise(res => setTimeout(res, ms));\n\nexport const post = async (\n\tendpoint: string,\n\toptions?: RequestOptions,\n\tretryOnError: boolean = false,\n): Promise<any> => {\n\ttry {\n\t\tconst resp = await request(\n\t\t\tendpoint,\n\t\t\tPOST,\n\t\t\toptions?.headers,\n\t\t\toptions?.data,\n\t\t\toptions?.params,\n\t\t);\n\t\treturn resp.data;\n\t} catch (err: unknown) {\n\t\tif (retryOnError && isTransientAxiosError(err)) {\n\t\t\tawait sleep(30);\n\t\t\ttry {\n\t\t\t\tconst resp = await request(\n\t\t\t\t\tendpoint,\n\t\t\t\t\tPOST,\n\t\t\t\t\toptions?.headers,\n\t\t\t\t\toptions?.data,\n\t\t\t\t\toptions?.params,\n\t\t\t\t);\n\t\t\t\treturn resp.data;\n\t\t\t} catch (retryErr: unknown) {\n\t\t\t\treturn errorHandling(retryErr);\n\t\t\t}\n\t\t}\n\t\treturn errorHandling(err);\n\t}\n};\n\nexport const get = async (endpoint: string, options?: RequestOptions): Promise<any> => {\n\ttry {\n\t\tconst resp = await request(endpoint, GET, options?.headers, options?.data, options?.params);\n\t\treturn resp.data;\n\t} catch (err: unknown) {\n\t\treturn errorHandling(err);\n\t}\n};\n\nexport const del = async (endpoint: string, options?: RequestOptions): Promise<any> => {\n\ttry {\n\t\tconst resp = await request(\n\t\t\tendpoint,\n\t\t\tDELETE,\n\t\t\toptions?.headers,\n\t\t\toptions?.data,\n\t\t\toptions?.params,\n\t\t);\n\t\treturn resp.data;\n\t} catch (err: unknown) {\n\t\treturn errorHandling(err);\n\t}\n};\n\nconst errorHandling = (err: unknown) => {\n\tif (axios.isAxiosError(err)) {\n\t\tif (err.response) {\n\t\t\tif (err.response?.data) {\n\t\t\t\tif (\n\t\t\t\t\ttypeof err.response?.data === \"string\" ||\n\t\t\t\t\terr.response?.data instanceof String\n\t\t\t\t) {\n\t\t\t\t\treturn { error: err.response?.data, status: err.response?.status };\n\t\t\t\t}\n\t\t\t\t// biome-ignore lint/suspicious/noPrototypeBuiltins: ES2022 Object.hasOwn not available with current target\n\t\t\t\tif (!Object.prototype.hasOwnProperty.call(err.response?.data, \"error\")) {\n\t\t\t\t\treturn { error: err.response?.data, status: err.response?.status };\n\t\t\t\t}\n\t\t\t\t// in this case the field 'error' is included\n\t\t\t\treturn { ...err.response?.data, status: err.response?.status };\n\t\t\t}\n\t\t}\n\n\t\tif (err.message) {\n\t\t\treturn { error: err.message };\n\t\t}\n\t}\n\n\treturn { error: err };\n};\n\nconst isTransientAxiosError = (err: unknown): boolean => {\n\tif (!axios.isAxiosError(err)) return false;\n\tif (!err.response) return true; // network error\n\tconst status = err.response.status ?? 0;\n\tif (status >= 500 && status < 600) return true; // 5xx\n\tconst code = (err.code ?? \"\").toString();\n\treturn [\"ECONNABORTED\", \"ENETUNREACH\", \"EAI_AGAIN\", \"ETIMEDOUT\"].includes(code);\n};\n\nexport const parseOrdersScoringParams = (orderScoringParams?: OrdersScoringParams): QueryParams => {\n\tconst params: QueryParams = {};\n\tif (orderScoringParams !== undefined) {\n\t\tif (orderScoringParams.orderIds !== undefined) {\n\t\t\tparams.order_ids = orderScoringParams?.orderIds.join(\",\");\n\t\t}\n\t}\n\treturn params;\n};\n\nexport const parseDropNotificationParams = (\n\tdropNotificationParams?: DropNotificationParams,\n): QueryParams => {\n\tconst params: QueryParams = {};\n\tif (dropNotificationParams !== undefined) {\n\t\tif (dropNotificationParams.ids !== undefined) {\n\t\t\tparams.ids = dropNotificationParams?.ids.join(\",\");\n\t\t}\n\t}\n\treturn params;\n};\n"],"mappings":";;;;AAMA,MAAa,MAAM;AACnB,MAAa,OAAO;AACpB,MAAa,SAAS;AAGtB,MAAM,mBACL,QACA,UAAqD,EAAE,KACnD;AACJ,KAAI,UACH;AAGD,SAAQ,gBAAgB;AACxB,SAAQ,SAAS;AACjB,SAAQ,aAAa;AACrB,SAAQ,kBAAkB;AAE1B,KAAI,WAAW,IACd,SAAQ,qBAAqB;;AAI/B,MAAa,UAAU,OACtB,UACA,QACA,SACA,MACA,WACkB;AAClB,iBAAgB,QAAQ,QAAQ;AAChC,QAAO,MAAM,MAAM;EAAE;EAAQ,KAAK;EAAU;EAAS;EAAM;EAAQ,CAAC;;AAWrE,MAAM,SAAS,OAAe,IAAI,SAAQ,QAAO,WAAW,KAAK,GAAG,CAAC;AAErE,MAAa,OAAO,OACnB,UACA,SACA,eAAwB,UACN;AAClB,KAAI;AAQH,UAPa,MAAM,QAClB,UACA,MACA,SAAS,SACT,SAAS,MACT,SAAS,OACT,EACW;UACJA,KAAc;AACtB,MAAI,gBAAgB,sBAAsB,IAAI,EAAE;AAC/C,SAAM,MAAM,GAAG;AACf,OAAI;AAQH,YAPa,MAAM,QAClB,UACA,MACA,SAAS,SACT,SAAS,MACT,SAAS,OACT,EACW;YACJC,UAAmB;AAC3B,WAAO,cAAc,SAAS;;;AAGhC,SAAO,cAAc,IAAI;;;AAI3B,MAAa,MAAM,OAAO,UAAkB,YAA2C;AACtF,KAAI;AAEH,UADa,MAAM,QAAQ,UAAU,KAAK,SAAS,SAAS,SAAS,MAAM,SAAS,OAAO,EAC/E;UACJD,KAAc;AACtB,SAAO,cAAc,IAAI;;;AAI3B,MAAa,MAAM,OAAO,UAAkB,YAA2C;AACtF,KAAI;AAQH,UAPa,MAAM,QAClB,UACA,QACA,SAAS,SACT,SAAS,MACT,SAAS,OACT,EACW;UACJA,KAAc;AACtB,SAAO,cAAc,IAAI;;;AAI3B,MAAM,iBAAiB,QAAiB;AACvC,KAAI,MAAM,aAAa,IAAI,EAAE;AAC5B,MAAI,IAAI,UACP;OAAI,IAAI,UAAU,MAAM;AACvB,QACC,OAAO,IAAI,UAAU,SAAS,YAC9B,IAAI,UAAU,gBAAgB,OAE9B,QAAO;KAAE,OAAO,IAAI,UAAU;KAAM,QAAQ,IAAI,UAAU;KAAQ;AAGnE,QAAI,CAAC,OAAO,UAAU,eAAe,KAAK,IAAI,UAAU,MAAM,QAAQ,CACrE,QAAO;KAAE,OAAO,IAAI,UAAU;KAAM,QAAQ,IAAI,UAAU;KAAQ;AAGnE,WAAO;KAAE,GAAG,IAAI,UAAU;KAAM,QAAQ,IAAI,UAAU;KAAQ;;;AAIhE,MAAI,IAAI,QACP,QAAO,EAAE,OAAO,IAAI,SAAS;;AAI/B,QAAO,EAAE,OAAO,KAAK;;AAGtB,MAAM,yBAAyB,QAA0B;AACxD,KAAI,CAAC,MAAM,aAAa,IAAI,CAAE,QAAO;AACrC,KAAI,CAAC,IAAI,SAAU,QAAO;CAC1B,MAAM,SAAS,IAAI,SAAS,UAAU;AACtC,KAAI,UAAU,OAAO,SAAS,IAAK,QAAO;CAC1C,MAAM,QAAQ,IAAI,QAAQ,IAAI,UAAU;AACxC,QAAO;EAAC;EAAgB;EAAe;EAAa;EAAY,CAAC,SAAS,KAAK;;AAahF,MAAa,+BACZ,2BACiB;CACjB,MAAME,SAAsB,EAAE;AAC9B,KAAI,2BAA2B,QAC9B;MAAI,uBAAuB,QAAQ,OAClC,QAAO,MAAM,wBAAwB,IAAI,KAAK,IAAI;;AAGpD,QAAO"}