@polymarket/clob-client-v2 1.0.5 → 1.0.6-pr79.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/README.md +3 -0
- package/dist/_virtual/rolldown_runtime.cjs +29 -0
- package/dist/client.cjs +886 -0
- package/dist/client.cjs.map +1 -0
- package/dist/client.d.cts +165 -0
- package/dist/client.d.ts +167 -0
- package/dist/client.js +886 -0
- package/dist/client.js.map +1 -0
- package/dist/config.cjs +37 -0
- package/dist/config.cjs.map +1 -0
- package/dist/config.d.cts +17 -0
- package/dist/config.d.ts +17 -0
- package/dist/config.js +34 -0
- package/dist/config.js.map +1 -0
- package/dist/constants.cjs +15 -0
- package/dist/constants.cjs.map +1 -0
- package/dist/constants.js +10 -0
- package/dist/constants.js.map +1 -0
- package/dist/endpoints.cjs +125 -0
- package/dist/endpoints.cjs.map +1 -0
- package/dist/endpoints.js +65 -0
- package/dist/endpoints.js.map +1 -0
- package/dist/errors.cjs +20 -0
- package/dist/errors.cjs.map +1 -0
- package/dist/errors.d.cts +11 -0
- package/dist/errors.d.ts +11 -0
- package/dist/errors.js +17 -0
- package/dist/errors.js.map +1 -0
- package/dist/fees/index.cjs +21 -0
- package/dist/fees/index.cjs.map +1 -0
- package/dist/fees/index.d.cts +5 -0
- package/dist/fees/index.d.ts +5 -0
- package/dist/fees/index.js +19 -0
- package/dist/fees/index.js.map +1 -0
- package/dist/headers/index.cjs +34 -0
- package/dist/headers/index.cjs.map +1 -0
- package/dist/headers/index.d.cts +9 -0
- package/dist/headers/index.d.ts +11 -0
- package/dist/headers/index.js +33 -0
- package/dist/headers/index.js.map +1 -0
- package/dist/http-helpers/index.cjs +109 -0
- package/dist/http-helpers/index.cjs.map +1 -0
- package/dist/http-helpers/index.js +101 -0
- package/dist/http-helpers/index.js.map +1 -0
- package/dist/index.cjs +35 -2620
- package/dist/index.d.cts +14 -1039
- package/dist/index.d.ts +16 -1039
- package/dist/index.js +15 -2563
- package/dist/order-builder/helpers/buildMarketOrderCreationArgs.cjs +43 -0
- package/dist/order-builder/helpers/buildMarketOrderCreationArgs.cjs.map +1 -0
- package/dist/order-builder/helpers/buildMarketOrderCreationArgs.js +42 -0
- package/dist/order-builder/helpers/buildMarketOrderCreationArgs.js.map +1 -0
- package/dist/order-builder/helpers/buildOrder.cjs +34 -0
- package/dist/order-builder/helpers/buildOrder.cjs.map +1 -0
- package/dist/order-builder/helpers/buildOrder.js +34 -0
- package/dist/order-builder/helpers/buildOrder.js.map +1 -0
- package/dist/order-builder/helpers/buildOrderCreationArgs.cjs +45 -0
- package/dist/order-builder/helpers/buildOrderCreationArgs.cjs.map +1 -0
- package/dist/order-builder/helpers/buildOrderCreationArgs.js +44 -0
- package/dist/order-builder/helpers/buildOrderCreationArgs.js.map +1 -0
- package/dist/order-builder/helpers/calculateBuyMarketPrice.cjs +24 -0
- package/dist/order-builder/helpers/calculateBuyMarketPrice.cjs.map +1 -0
- package/dist/order-builder/helpers/calculateBuyMarketPrice.js +24 -0
- package/dist/order-builder/helpers/calculateBuyMarketPrice.js.map +1 -0
- package/dist/order-builder/helpers/calculateSellMarketPrice.cjs +24 -0
- package/dist/order-builder/helpers/calculateSellMarketPrice.cjs.map +1 -0
- package/dist/order-builder/helpers/calculateSellMarketPrice.js +24 -0
- package/dist/order-builder/helpers/calculateSellMarketPrice.js.map +1 -0
- package/dist/order-builder/helpers/createMarketOrder.cjs +34 -0
- package/dist/order-builder/helpers/createMarketOrder.cjs.map +1 -0
- package/dist/order-builder/helpers/createMarketOrder.js +34 -0
- package/dist/order-builder/helpers/createMarketOrder.js.map +1 -0
- package/dist/order-builder/helpers/createOrder.cjs +34 -0
- package/dist/order-builder/helpers/createOrder.cjs.map +1 -0
- package/dist/order-builder/helpers/createOrder.js +34 -0
- package/dist/order-builder/helpers/createOrder.js.map +1 -0
- package/dist/order-builder/helpers/getMarketOrderRawAmounts.cjs +36 -0
- package/dist/order-builder/helpers/getMarketOrderRawAmounts.cjs.map +1 -0
- package/dist/order-builder/helpers/getMarketOrderRawAmounts.js +36 -0
- package/dist/order-builder/helpers/getMarketOrderRawAmounts.js.map +1 -0
- package/dist/order-builder/helpers/getOrderRawAmounts.cjs +36 -0
- package/dist/order-builder/helpers/getOrderRawAmounts.cjs.map +1 -0
- package/dist/order-builder/helpers/getOrderRawAmounts.js +36 -0
- package/dist/order-builder/helpers/getOrderRawAmounts.js.map +1 -0
- package/dist/order-builder/helpers/roundingConfig.cjs +28 -0
- package/dist/order-builder/helpers/roundingConfig.cjs.map +1 -0
- package/dist/order-builder/helpers/roundingConfig.js +27 -0
- package/dist/order-builder/helpers/roundingConfig.js.map +1 -0
- package/dist/order-builder/index.d.ts +1 -0
- package/dist/order-builder/orderBuilder.cjs +51 -0
- package/dist/order-builder/orderBuilder.cjs.map +1 -0
- package/dist/order-builder/orderBuilder.d.cts +37 -0
- package/dist/order-builder/orderBuilder.d.ts +39 -0
- package/dist/order-builder/orderBuilder.js +51 -0
- package/dist/order-builder/orderBuilder.js.map +1 -0
- package/dist/order-utils/exchangeOrderBuilderV1.cjs +128 -0
- package/dist/order-utils/exchangeOrderBuilderV1.cjs.map +1 -0
- package/dist/order-utils/exchangeOrderBuilderV1.d.ts +2 -0
- package/dist/order-utils/exchangeOrderBuilderV1.js +127 -0
- package/dist/order-utils/exchangeOrderBuilderV1.js.map +1 -0
- package/dist/order-utils/exchangeOrderBuilderV2.cjs +196 -0
- package/dist/order-utils/exchangeOrderBuilderV2.cjs.map +1 -0
- package/dist/order-utils/exchangeOrderBuilderV2.d.ts +2 -0
- package/dist/order-utils/exchangeOrderBuilderV2.js +194 -0
- package/dist/order-utils/exchangeOrderBuilderV2.js.map +1 -0
- package/dist/order-utils/index.d.ts +7 -0
- package/dist/order-utils/model/ctfExchangeV1TypedData.cjs +60 -0
- package/dist/order-utils/model/ctfExchangeV1TypedData.cjs.map +1 -0
- package/dist/order-utils/model/ctfExchangeV1TypedData.js +57 -0
- package/dist/order-utils/model/ctfExchangeV1TypedData.js.map +1 -0
- package/dist/order-utils/model/ctfExchangeV2TypedData.cjs +58 -0
- package/dist/order-utils/model/ctfExchangeV2TypedData.cjs.map +1 -0
- package/dist/order-utils/model/ctfExchangeV2TypedData.js +54 -0
- package/dist/order-utils/model/ctfExchangeV2TypedData.js.map +1 -0
- package/dist/order-utils/model/eip712.cjs +24 -0
- package/dist/order-utils/model/eip712.cjs.map +1 -0
- package/dist/order-utils/model/eip712.d.cts +9 -0
- package/dist/order-utils/model/eip712.d.ts +9 -0
- package/dist/order-utils/model/eip712.js +23 -0
- package/dist/order-utils/model/eip712.js.map +1 -0
- package/dist/order-utils/model/order.d.cts +5 -0
- package/dist/order-utils/model/order.d.ts +5 -0
- package/dist/order-utils/model/orderDataV1.d.cts +68 -0
- package/dist/order-utils/model/orderDataV1.d.ts +69 -0
- package/dist/order-utils/model/orderDataV2.d.cts +68 -0
- package/dist/order-utils/model/orderDataV2.d.ts +69 -0
- package/dist/order-utils/model/side.cjs +11 -0
- package/dist/order-utils/model/side.cjs.map +1 -0
- package/dist/order-utils/model/side.d.cts +8 -0
- package/dist/order-utils/model/side.d.ts +8 -0
- package/dist/order-utils/model/side.js +10 -0
- package/dist/order-utils/model/side.js.map +1 -0
- package/dist/order-utils/model/signatureTypeV1.cjs +21 -0
- package/dist/order-utils/model/signatureTypeV1.cjs.map +1 -0
- package/dist/order-utils/model/signatureTypeV1.d.cts +18 -0
- package/dist/order-utils/model/signatureTypeV1.d.ts +18 -0
- package/dist/order-utils/model/signatureTypeV1.js +20 -0
- package/dist/order-utils/model/signatureTypeV1.js.map +1 -0
- package/dist/order-utils/model/signatureTypeV2.cjs +25 -0
- package/dist/order-utils/model/signatureTypeV2.cjs.map +1 -0
- package/dist/order-utils/model/signatureTypeV2.d.cts +22 -0
- package/dist/order-utils/model/signatureTypeV2.d.ts +22 -0
- package/dist/order-utils/model/signatureTypeV2.js +24 -0
- package/dist/order-utils/model/signatureTypeV2.js.map +1 -0
- package/dist/order-utils/utils.cjs +9 -0
- package/dist/order-utils/utils.cjs.map +1 -0
- package/dist/order-utils/utils.js +8 -0
- package/dist/order-utils/utils.js.map +1 -0
- package/dist/signing/constants.cjs +7 -0
- package/dist/signing/constants.cjs.map +1 -0
- package/dist/signing/constants.js +6 -0
- package/dist/signing/constants.js.map +1 -0
- package/dist/signing/eip712.cjs +51 -0
- package/dist/signing/eip712.cjs.map +1 -0
- package/dist/signing/eip712.d.ts +2 -0
- package/dist/signing/eip712.js +51 -0
- package/dist/signing/eip712.js.map +1 -0
- package/dist/signing/hmac.cjs +40 -0
- package/dist/signing/hmac.cjs.map +1 -0
- package/dist/signing/hmac.js +39 -0
- package/dist/signing/hmac.js.map +1 -0
- package/dist/signing/index.d.ts +2 -0
- package/dist/signing/signer.cjs +41 -0
- package/dist/signing/signer.cjs.map +1 -0
- package/dist/signing/signer.d.cts +17 -0
- package/dist/signing/signer.d.ts +17 -0
- package/dist/signing/signer.js +39 -0
- package/dist/signing/signer.js.map +1 -0
- package/dist/types/clob.cjs +35 -0
- package/dist/types/clob.cjs.map +1 -0
- package/dist/types/clob.d.cts +427 -0
- package/dist/types/clob.d.ts +427 -0
- package/dist/types/clob.js +32 -0
- package/dist/types/clob.js.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/ordersV1.cjs +29 -0
- package/dist/types/ordersV1.cjs.map +1 -0
- package/dist/types/ordersV1.d.cts +115 -0
- package/dist/types/ordersV1.d.ts +116 -0
- package/dist/types/ordersV1.js +28 -0
- package/dist/types/ordersV1.js.map +1 -0
- package/dist/types/ordersV2.cjs +30 -0
- package/dist/types/ordersV2.cjs.map +1 -0
- package/dist/types/ordersV2.d.cts +113 -0
- package/dist/types/ordersV2.d.ts +114 -0
- package/dist/types/ordersV2.js +29 -0
- package/dist/types/ordersV2.js.map +1 -0
- package/dist/types/unifiedOrder.cjs +10 -0
- package/dist/types/unifiedOrder.cjs.map +1 -0
- package/dist/types/unifiedOrder.d.cts +56 -0
- package/dist/types/unifiedOrder.d.ts +57 -0
- package/dist/types/unifiedOrder.js +9 -0
- package/dist/types/unifiedOrder.js.map +1 -0
- package/dist/utilities.cjs +50 -0
- package/dist/utilities.cjs.map +1 -0
- package/dist/utilities.js +43 -0
- package/dist/utilities.js.map +1 -0
- package/package.json +3 -3
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","names":[],"sources":["../src/errors.ts"],"sourcesContent":["export const L1_AUTH_UNAVAILABLE_ERROR = new Error(\n\t\"Signer is needed to interact with this endpoint!\",\n);\n\nexport const L2_AUTH_NOT_AVAILABLE = new Error(\n\t\"API Credentials are needed to interact with this endpoint!\",\n);\n\nexport class ApiError extends Error {\n\treadonly status?: number;\n\treadonly data?: unknown;\n\n\tconstructor(message: string, status?: number, data?: unknown) {\n\t\tsuper(message);\n\t\tthis.name = \"ApiError\";\n\t\tthis.status = status;\n\t\tthis.data = data;\n\t}\n}\n"],"mappings":";AAAA,MAAa,4CAA4B,IAAI,MAC5C,mDACA;AAED,MAAa,wCAAwB,IAAI,MACxC,6DACA;AAED,IAAa,WAAb,cAA8B,MAAM;CACnC,AAAS;CACT,AAAS;CAET,YAAY,SAAiB,QAAiB,MAAgB;AAC7D,QAAM,QAAQ;AACd,OAAK,OAAO;AACZ,OAAK,SAAS;AACd,OAAK,OAAO"}
|
|
@@ -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"}
|