@lifi/perps-sdk 23.1.0 → 25.0.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 +102 -56
- package/dist/cjs/client/PerpsClient.d.ts +3 -2
- package/dist/cjs/client/PerpsClient.d.ts.map +1 -1
- package/dist/cjs/client/PerpsClient.js +16 -9
- package/dist/cjs/client/PerpsClient.js.map +1 -1
- package/dist/cjs/decimal/arithmetic.d.ts +15 -0
- package/dist/cjs/decimal/arithmetic.d.ts.map +1 -0
- package/dist/cjs/decimal/arithmetic.js +53 -0
- package/dist/cjs/decimal/arithmetic.js.map +1 -0
- package/dist/cjs/decimal/big.d.ts +0 -1
- package/dist/cjs/decimal/big.d.ts.map +1 -1
- package/dist/cjs/decimal/big.js +0 -4
- package/dist/cjs/decimal/big.js.map +1 -1
- package/dist/cjs/decimal/compare.d.ts +6 -2
- package/dist/cjs/decimal/compare.d.ts.map +1 -1
- package/dist/cjs/decimal/compare.js +15 -2
- package/dist/cjs/decimal/compare.js.map +1 -1
- package/dist/cjs/decimal/convert.d.ts +10 -6
- package/dist/cjs/decimal/convert.d.ts.map +1 -1
- package/dist/cjs/decimal/convert.js +34 -21
- package/dist/cjs/decimal/convert.js.map +1 -1
- package/dist/cjs/decimal/decimalStringToBig.d.ts +5 -0
- package/dist/cjs/decimal/decimalStringToBig.d.ts.map +1 -0
- package/dist/cjs/decimal/decimalStringToBig.js +25 -0
- package/dist/cjs/decimal/decimalStringToBig.js.map +1 -0
- package/dist/cjs/decimal/format.d.ts.map +1 -1
- package/dist/cjs/decimal/format.js +70 -52
- package/dist/cjs/decimal/format.js.map +1 -1
- package/dist/cjs/decimal/parse.d.ts +5 -4
- package/dist/cjs/decimal/parse.d.ts.map +1 -1
- package/dist/cjs/decimal/parse.js +43 -25
- package/dist/cjs/decimal/parse.js.map +1 -1
- package/dist/cjs/errors/invalidInput.d.ts +3 -0
- package/dist/cjs/errors/invalidInput.d.ts.map +1 -0
- package/dist/cjs/errors/invalidInput.js +9 -0
- package/dist/cjs/errors/invalidInput.js.map +1 -0
- package/dist/cjs/index.d.ts +15 -12
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +69 -9
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/math/fills.d.ts +1 -1
- package/dist/cjs/math/fills.d.ts.map +1 -1
- package/dist/cjs/math/fills.js +28 -13
- package/dist/cjs/math/fills.js.map +1 -1
- package/dist/cjs/math/order.d.ts +27 -16
- package/dist/cjs/math/order.d.ts.map +1 -1
- package/dist/cjs/math/order.js +131 -134
- package/dist/cjs/math/order.js.map +1 -1
- package/dist/cjs/math/position.d.ts +85 -35
- package/dist/cjs/math/position.d.ts.map +1 -1
- package/dist/cjs/math/position.js +93 -94
- package/dist/cjs/math/position.js.map +1 -1
- package/dist/cjs/services/getGasRecommendation.js +1 -1
- package/dist/cjs/services/getGasRecommendation.js.map +1 -1
- package/dist/cjs/services/getQuote.d.ts +1 -1
- package/dist/cjs/services/resolveSubscribeQuote.d.ts.map +1 -1
- package/dist/cjs/services/resolveSubscribeQuote.js +3 -2
- package/dist/cjs/services/resolveSubscribeQuote.js.map +1 -1
- package/dist/cjs/transport/request.d.ts +1 -0
- package/dist/cjs/transport/request.d.ts.map +1 -1
- package/dist/cjs/transport/request.js +2 -2
- package/dist/cjs/transport/request.js.map +1 -1
- package/dist/cjs/types/api.d.ts +4 -0
- package/dist/cjs/types/api.d.ts.map +1 -1
- package/dist/cjs/types/provider.d.ts +9 -5
- package/dist/cjs/types/provider.d.ts.map +1 -1
- package/dist/cjs/types/withdrawal.d.ts +12 -4
- package/dist/cjs/types/withdrawal.d.ts.map +1 -1
- package/dist/cjs/utils/createSafeFunction.d.ts +2 -0
- package/dist/cjs/utils/createSafeFunction.d.ts.map +1 -0
- package/dist/cjs/utils/createSafeFunction.js +15 -0
- package/dist/cjs/utils/createSafeFunction.js.map +1 -0
- package/dist/cjs/utils/timestampToIsoString.d.ts +3 -0
- package/dist/cjs/utils/timestampToIsoString.d.ts.map +1 -0
- package/dist/cjs/utils/timestampToIsoString.js +16 -0
- package/dist/cjs/utils/timestampToIsoString.js.map +1 -0
- package/dist/cjs/utils/warnOnce.d.ts +6 -0
- package/dist/cjs/utils/warnOnce.d.ts.map +1 -1
- package/dist/cjs/utils/warnOnce.js +19 -1
- package/dist/cjs/utils/warnOnce.js.map +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/websocket/PerpsWsClient.d.ts +2 -0
- package/dist/cjs/websocket/PerpsWsClient.d.ts.map +1 -1
- package/dist/cjs/websocket/PerpsWsClient.js +14 -1
- package/dist/cjs/websocket/PerpsWsClient.js.map +1 -1
- package/dist/cjs/websocket/wsLog.d.ts +2 -0
- package/dist/cjs/websocket/wsLog.d.ts.map +1 -1
- package/dist/cjs/websocket/wsLog.js +9 -0
- package/dist/cjs/websocket/wsLog.js.map +1 -1
- package/dist/cjs/wire/orderAmounts.d.ts +3 -2
- package/dist/cjs/wire/orderAmounts.d.ts.map +1 -1
- package/dist/cjs/wire/orderAmounts.js +22 -21
- package/dist/cjs/wire/orderAmounts.js.map +1 -1
- package/dist/cjs/wire/refuel.d.ts +4 -1
- package/dist/cjs/wire/refuel.d.ts.map +1 -1
- package/dist/cjs/wire/refuel.js +23 -6
- package/dist/cjs/wire/refuel.js.map +1 -1
- package/dist/cjs/wire/transferable.js +3 -3
- package/dist/cjs/wire/transferable.js.map +1 -1
- package/dist/cjs/wire/withdraw.d.ts.map +1 -1
- package/dist/cjs/wire/withdraw.js +3 -3
- package/dist/cjs/wire/withdraw.js.map +1 -1
- package/dist/esm/client/PerpsClient.d.ts +17 -4
- package/dist/esm/client/PerpsClient.d.ts.map +1 -1
- package/dist/esm/client/PerpsClient.js +30 -8
- package/dist/esm/client/PerpsClient.js.map +1 -1
- package/dist/esm/decimal/arithmetic.d.ts +98 -0
- package/dist/esm/decimal/arithmetic.d.ts.map +1 -0
- package/dist/esm/decimal/arithmetic.js +126 -0
- package/dist/esm/decimal/arithmetic.js.map +1 -0
- package/dist/esm/decimal/big.d.ts +0 -2
- package/dist/esm/decimal/big.d.ts.map +1 -1
- package/dist/esm/decimal/big.js +0 -4
- package/dist/esm/decimal/big.js.map +1 -1
- package/dist/esm/decimal/compare.d.ts +40 -6
- package/dist/esm/decimal/compare.d.ts.map +1 -1
- package/dist/esm/decimal/compare.js +46 -6
- package/dist/esm/decimal/compare.js.map +1 -1
- package/dist/esm/decimal/convert.d.ts +50 -36
- package/dist/esm/decimal/convert.d.ts.map +1 -1
- package/dist/esm/decimal/convert.js +64 -42
- package/dist/esm/decimal/convert.js.map +1 -1
- package/dist/esm/decimal/decimalStringToBig.d.ts +25 -0
- package/dist/esm/decimal/decimalStringToBig.d.ts.map +1 -0
- package/dist/esm/decimal/decimalStringToBig.js +37 -0
- package/dist/esm/decimal/decimalStringToBig.js.map +1 -0
- package/dist/esm/decimal/format.d.ts +4 -1
- package/dist/esm/decimal/format.d.ts.map +1 -1
- package/dist/esm/decimal/format.js +71 -70
- package/dist/esm/decimal/format.js.map +1 -1
- package/dist/esm/decimal/parse.d.ts +29 -13
- package/dist/esm/decimal/parse.d.ts.map +1 -1
- package/dist/esm/decimal/parse.js +61 -44
- package/dist/esm/decimal/parse.js.map +1 -1
- package/dist/esm/errors/invalidInput.d.ts +4 -0
- package/dist/esm/errors/invalidInput.d.ts.map +1 -0
- package/dist/esm/errors/invalidInput.js +7 -0
- package/dist/esm/errors/invalidInput.js.map +1 -0
- package/dist/esm/index.d.ts +15 -12
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +11 -8
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/math/fills.d.ts +6 -3
- package/dist/esm/math/fills.d.ts.map +1 -1
- package/dist/esm/math/fills.js +31 -16
- package/dist/esm/math/fills.js.map +1 -1
- package/dist/esm/math/order.d.ts +84 -66
- package/dist/esm/math/order.d.ts.map +1 -1
- package/dist/esm/math/order.js +178 -175
- package/dist/esm/math/order.js.map +1 -1
- package/dist/esm/math/position.d.ts +155 -98
- package/dist/esm/math/position.d.ts.map +1 -1
- package/dist/esm/math/position.js +160 -156
- package/dist/esm/math/position.js.map +1 -1
- package/dist/esm/services/getGasRecommendation.js +1 -1
- package/dist/esm/services/getGasRecommendation.js.map +1 -1
- package/dist/esm/services/getQuote.d.ts +2 -2
- package/dist/esm/services/getQuote.js +1 -1
- package/dist/esm/services/resolveSubscribeQuote.d.ts +1 -1
- package/dist/esm/services/resolveSubscribeQuote.d.ts.map +1 -1
- package/dist/esm/services/resolveSubscribeQuote.js +4 -3
- package/dist/esm/services/resolveSubscribeQuote.js.map +1 -1
- package/dist/esm/transport/request.d.ts +5 -0
- package/dist/esm/transport/request.d.ts.map +1 -1
- package/dist/esm/transport/request.js +2 -2
- package/dist/esm/transport/request.js.map +1 -1
- package/dist/esm/types/api.d.ts +9 -0
- package/dist/esm/types/api.d.ts.map +1 -1
- package/dist/esm/types/provider.d.ts +30 -16
- package/dist/esm/types/provider.d.ts.map +1 -1
- package/dist/esm/types/withdrawal.d.ts +32 -7
- package/dist/esm/types/withdrawal.d.ts.map +1 -1
- package/dist/esm/utils/createSafeFunction.d.ts +9 -0
- package/dist/esm/utils/createSafeFunction.d.ts.map +1 -0
- package/dist/esm/utils/createSafeFunction.js +19 -0
- package/dist/esm/utils/createSafeFunction.js.map +1 -0
- package/dist/esm/utils/timestampToIsoString.d.ts +15 -0
- package/dist/esm/utils/timestampToIsoString.d.ts.map +1 -0
- package/dist/esm/utils/timestampToIsoString.js +24 -0
- package/dist/esm/utils/timestampToIsoString.js.map +1 -0
- package/dist/esm/utils/warnOnce.d.ts +27 -0
- package/dist/esm/utils/warnOnce.d.ts.map +1 -1
- package/dist/esm/utils/warnOnce.js +36 -0
- package/dist/esm/utils/warnOnce.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/websocket/PerpsWsClient.d.ts +7 -0
- package/dist/esm/websocket/PerpsWsClient.d.ts.map +1 -1
- package/dist/esm/websocket/PerpsWsClient.js +20 -2
- package/dist/esm/websocket/PerpsWsClient.js.map +1 -1
- package/dist/esm/websocket/wsLog.d.ts +12 -0
- package/dist/esm/websocket/wsLog.d.ts.map +1 -1
- package/dist/esm/websocket/wsLog.js +19 -0
- package/dist/esm/websocket/wsLog.js.map +1 -1
- package/dist/esm/wire/orderAmounts.d.ts +9 -7
- package/dist/esm/wire/orderAmounts.d.ts.map +1 -1
- package/dist/esm/wire/orderAmounts.js +24 -20
- package/dist/esm/wire/orderAmounts.js.map +1 -1
- package/dist/esm/wire/refuel.d.ts +24 -14
- package/dist/esm/wire/refuel.d.ts.map +1 -1
- package/dist/esm/wire/refuel.js +38 -17
- package/dist/esm/wire/refuel.js.map +1 -1
- package/dist/esm/wire/transferable.d.ts +2 -2
- package/dist/esm/wire/transferable.js +5 -5
- package/dist/esm/wire/transferable.js.map +1 -1
- package/dist/esm/wire/withdraw.d.ts.map +1 -1
- package/dist/esm/wire/withdraw.js +3 -3
- package/dist/esm/wire/withdraw.js.map +1 -1
- package/dist/types/client/PerpsClient.d.ts +17 -4
- package/dist/types/client/PerpsClient.d.ts.map +1 -1
- package/dist/types/decimal/arithmetic.d.ts +98 -0
- package/dist/types/decimal/arithmetic.d.ts.map +1 -0
- package/dist/types/decimal/big.d.ts +0 -2
- package/dist/types/decimal/big.d.ts.map +1 -1
- package/dist/types/decimal/compare.d.ts +40 -6
- package/dist/types/decimal/compare.d.ts.map +1 -1
- package/dist/types/decimal/convert.d.ts +50 -36
- package/dist/types/decimal/convert.d.ts.map +1 -1
- package/dist/types/decimal/decimalStringToBig.d.ts +25 -0
- package/dist/types/decimal/decimalStringToBig.d.ts.map +1 -0
- package/dist/types/decimal/format.d.ts +4 -1
- package/dist/types/decimal/format.d.ts.map +1 -1
- package/dist/types/decimal/parse.d.ts +29 -13
- package/dist/types/decimal/parse.d.ts.map +1 -1
- package/dist/types/errors/invalidInput.d.ts +4 -0
- package/dist/types/errors/invalidInput.d.ts.map +1 -0
- package/dist/types/index.d.ts +15 -12
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/math/fills.d.ts +6 -3
- package/dist/types/math/fills.d.ts.map +1 -1
- package/dist/types/math/order.d.ts +84 -66
- package/dist/types/math/order.d.ts.map +1 -1
- package/dist/types/math/position.d.ts +155 -98
- package/dist/types/math/position.d.ts.map +1 -1
- package/dist/types/services/getQuote.d.ts +2 -2
- package/dist/types/services/resolveSubscribeQuote.d.ts +1 -1
- package/dist/types/services/resolveSubscribeQuote.d.ts.map +1 -1
- package/dist/types/transport/request.d.ts +5 -0
- package/dist/types/transport/request.d.ts.map +1 -1
- package/dist/types/types/api.d.ts +9 -0
- package/dist/types/types/api.d.ts.map +1 -1
- package/dist/types/types/provider.d.ts +30 -16
- package/dist/types/types/provider.d.ts.map +1 -1
- package/dist/types/types/withdrawal.d.ts +32 -7
- package/dist/types/types/withdrawal.d.ts.map +1 -1
- package/dist/types/utils/createSafeFunction.d.ts +9 -0
- package/dist/types/utils/createSafeFunction.d.ts.map +1 -0
- package/dist/types/utils/timestampToIsoString.d.ts +15 -0
- package/dist/types/utils/timestampToIsoString.d.ts.map +1 -0
- package/dist/types/utils/warnOnce.d.ts +27 -0
- package/dist/types/utils/warnOnce.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/websocket/PerpsWsClient.d.ts +7 -0
- package/dist/types/websocket/PerpsWsClient.d.ts.map +1 -1
- package/dist/types/websocket/wsLog.d.ts +12 -0
- package/dist/types/websocket/wsLog.d.ts.map +1 -1
- package/dist/types/wire/orderAmounts.d.ts +9 -7
- package/dist/types/wire/orderAmounts.d.ts.map +1 -1
- package/dist/types/wire/refuel.d.ts +24 -14
- package/dist/types/wire/refuel.d.ts.map +1 -1
- package/dist/types/wire/transferable.d.ts +2 -2
- package/dist/types/wire/withdraw.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/client/PerpsClient.ts +48 -10
- package/src/decimal/arithmetic.ts +170 -0
- package/src/decimal/big.ts +0 -5
- package/src/decimal/compare.ts +61 -11
- package/src/decimal/convert.ts +105 -63
- package/src/decimal/decimalStringToBig.ts +42 -0
- package/src/decimal/format.ts +81 -72
- package/src/decimal/parse.ts +78 -57
- package/src/errors/invalidInput.ts +10 -0
- package/src/index.ts +80 -12
- package/src/math/fills.ts +32 -17
- package/src/math/order.ts +279 -226
- package/src/math/position.ts +280 -196
- package/src/services/getGasRecommendation.ts +1 -1
- package/src/services/getQuote.ts +2 -2
- package/src/services/resolveSubscribeQuote.ts +4 -3
- package/src/transport/request.ts +7 -2
- package/src/types/api.ts +10 -0
- package/src/types/provider.ts +39 -16
- package/src/types/withdrawal.ts +35 -8
- package/src/utils/createSafeFunction.ts +20 -0
- package/src/utils/timestampToIsoString.ts +31 -0
- package/src/utils/warnOnce.ts +60 -0
- package/src/version.ts +1 -1
- package/src/websocket/PerpsWsClient.ts +25 -2
- package/src/websocket/wsLog.ts +44 -0
- package/src/wire/orderAmounts.ts +45 -26
- package/src/wire/refuel.ts +56 -20
- package/src/wire/transferable.ts +5 -5
- package/src/wire/withdraw.ts +3 -5
- package/dist/cjs/decimal/requireDecimal.d.ts +0 -4
- package/dist/cjs/decimal/requireDecimal.d.ts.map +0 -1
- package/dist/cjs/decimal/requireDecimal.js +0 -12
- package/dist/cjs/decimal/requireDecimal.js.map +0 -1
- package/dist/esm/decimal/requireDecimal.d.ts +0 -5
- package/dist/esm/decimal/requireDecimal.d.ts.map +0 -1
- package/dist/esm/decimal/requireDecimal.js +0 -7
- package/dist/esm/decimal/requireDecimal.js.map +0 -1
- package/dist/types/decimal/requireDecimal.d.ts +0 -5
- package/dist/types/decimal/requireDecimal.d.ts.map +0 -1
- package/src/decimal/requireDecimal.ts +0 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../../src/decimal/compare.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../../src/decimal/compare.ts"],"names":[],"mappings":"AAWA,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAExE;AAQD,eAAO,MAAM,8BAA8B,+CAG1C,CAAA;AASD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE1D;AAOD,eAAO,MAAM,uBAAuB,wCAGnC,CAAA;AASD,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAEtE;AAOD,eAAO,MAAM,yBAAyB,kDAGrC,CAAA"}
|
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.safeCompareDecimalStrings = exports.safeIsDecimalStringZero = exports.safeIsDecimalStringGreaterThan = void 0;
|
|
3
4
|
exports.isDecimalStringGreaterThan = isDecimalStringGreaterThan;
|
|
4
|
-
|
|
5
|
+
exports.isDecimalStringZero = isDecimalStringZero;
|
|
6
|
+
exports.compareDecimalStrings = compareDecimalStrings;
|
|
7
|
+
const createSafeFunction_js_1 = require("../utils/createSafeFunction.js");
|
|
8
|
+
const decimalStringToBig_js_1 = require("./decimalStringToBig.js");
|
|
5
9
|
function isDecimalStringGreaterThan(a, b) {
|
|
6
|
-
return (0,
|
|
10
|
+
return (0, decimalStringToBig_js_1.decimalStringToBig)(a).gt((0, decimalStringToBig_js_1.decimalStringToBig)(b));
|
|
7
11
|
}
|
|
12
|
+
exports.safeIsDecimalStringGreaterThan = (0, createSafeFunction_js_1.createSafeFunction)('isDecimalStringGreaterThan', isDecimalStringGreaterThan);
|
|
13
|
+
function isDecimalStringZero(value) {
|
|
14
|
+
return (0, decimalStringToBig_js_1.decimalStringToBig)(value).eq(0);
|
|
15
|
+
}
|
|
16
|
+
exports.safeIsDecimalStringZero = (0, createSafeFunction_js_1.createSafeFunction)('isDecimalStringZero', isDecimalStringZero);
|
|
17
|
+
function compareDecimalStrings(a, b) {
|
|
18
|
+
return (0, decimalStringToBig_js_1.decimalStringToBig)(a).cmp((0, decimalStringToBig_js_1.decimalStringToBig)(b));
|
|
19
|
+
}
|
|
20
|
+
exports.safeCompareDecimalStrings = (0, createSafeFunction_js_1.createSafeFunction)('compareDecimalStrings', compareDecimalStrings);
|
|
8
21
|
//# sourceMappingURL=compare.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../src/decimal/compare.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../src/decimal/compare.ts"],"names":[],"mappings":";;;AAWA,gEAEC;AAoBD,kDAEC;AAmBD,sDAEC;AAxDD,0EAAmE;AACnE,mEAA4D;AAU5D,SAAgB,0BAA0B,CAAC,CAAS,EAAE,CAAS;IAC7D,OAAO,IAAA,0CAAkB,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,0CAAkB,EAAC,CAAC,CAAC,CAAC,CAAA;AACxD,CAAC;AAQY,QAAA,8BAA8B,GAAG,IAAA,0CAAkB,EAC9D,4BAA4B,EAC5B,0BAA0B,CAC3B,CAAA;AASD,SAAgB,mBAAmB,CAAC,KAAa;IAC/C,OAAO,IAAA,0CAAkB,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AACxC,CAAC;AAOY,QAAA,uBAAuB,GAAG,IAAA,0CAAkB,EACvD,qBAAqB,EACrB,mBAAmB,CACpB,CAAA;AASD,SAAgB,qBAAqB,CAAC,CAAS,EAAE,CAAS;IACxD,OAAO,IAAA,0CAAkB,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAA,0CAAkB,EAAC,CAAC,CAAC,CAAC,CAAA;AACzD,CAAC;AAOY,QAAA,yBAAyB,GAAG,IAAA,0CAAkB,EACzD,uBAAuB,EACvB,qBAAqB,CACtB,CAAA"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
export declare const
|
|
4
|
-
export declare function
|
|
5
|
-
export declare
|
|
6
|
-
export declare
|
|
1
|
+
export type DecimalRounding = 'truncate' | 'round' | 'up';
|
|
2
|
+
export declare function roundDecimalString(value: string, decimals: number, rounding: DecimalRounding): string;
|
|
3
|
+
export declare const safeRoundDecimalString: (value: string, decimals: number, rounding: DecimalRounding) => string | undefined;
|
|
4
|
+
export declare function decimalStringToScaledInteger(value: string, decimals: number, rounding: DecimalRounding): number;
|
|
5
|
+
export declare const safeDecimalStringToScaledInteger: (value: string, decimals: number, rounding: DecimalRounding) => number | undefined;
|
|
6
|
+
export declare const BASE_UNITS_PATTERN: RegExp;
|
|
7
|
+
export declare function scaledIntegerToDecimalString(amount: string, decimals: number): string;
|
|
8
|
+
export declare const safeScaledIntegerToDecimalString: (amount: string, decimals: number) => string | undefined;
|
|
9
|
+
export declare function numberToDecimalString(value: number): string;
|
|
10
|
+
export declare const safeNumberToDecimalString: (value: number) => string | undefined;
|
|
7
11
|
//# sourceMappingURL=convert.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../src/decimal/convert.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../src/decimal/convert.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,OAAO,GAAG,IAAI,CAAA;AAiBzD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,eAAe,GACxB,MAAM,CAUR;AAOD,eAAO,MAAM,sBAAsB,oFAGlC,CAAA;AAYD,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,eAAe,GACxB,MAAM,CAuBR;AAQD,eAAO,MAAM,gCAAgC,oFAG5C,CAAA;AAED,eAAO,MAAM,kBAAkB,QAAY,CAAA;AAU3C,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,MAAM,CAcR;AAQD,eAAO,MAAM,gCAAgC,0DAG5C,CAAA;AAYD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAS3D;AAOD,eAAO,MAAM,yBAAyB,uCAGrC,CAAA"}
|
|
@@ -3,45 +3,57 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
7
|
-
exports.
|
|
8
|
-
exports.
|
|
6
|
+
exports.safeNumberToDecimalString = exports.safeScaledIntegerToDecimalString = exports.BASE_UNITS_PATTERN = exports.safeDecimalStringToScaledInteger = exports.safeRoundDecimalString = void 0;
|
|
7
|
+
exports.roundDecimalString = roundDecimalString;
|
|
8
|
+
exports.decimalStringToScaledInteger = decimalStringToScaledInteger;
|
|
9
|
+
exports.scaledIntegerToDecimalString = scaledIntegerToDecimalString;
|
|
9
10
|
exports.numberToDecimalString = numberToDecimalString;
|
|
10
11
|
const perps_types_1 = require("@lifi/perps-types");
|
|
11
12
|
const big_js_1 = __importDefault(require("big.js"));
|
|
12
13
|
const viem_1 = require("viem");
|
|
13
14
|
const PerpsError_js_1 = require("../errors/PerpsError.js");
|
|
14
|
-
const
|
|
15
|
-
const
|
|
15
|
+
const createSafeFunction_js_1 = require("../utils/createSafeFunction.js");
|
|
16
|
+
const decimalStringToBig_js_1 = require("./decimalStringToBig.js");
|
|
17
|
+
const parse_js_1 = require("./parse.js");
|
|
18
|
+
const BIG_ROUNDING = {
|
|
19
|
+
truncate: big_js_1.default.roundDown,
|
|
20
|
+
round: big_js_1.default.roundHalfUp,
|
|
21
|
+
up: big_js_1.default.roundUp,
|
|
22
|
+
};
|
|
23
|
+
function roundDecimalString(value, decimals, rounding) {
|
|
24
|
+
if (!Number.isInteger(decimals) || decimals < 0) {
|
|
25
|
+
throw new PerpsError_js_1.PerpsError(perps_types_1.PerpsErrorCode.ValidationError, `Invalid decimals for rounding: ${decimals}`);
|
|
26
|
+
}
|
|
27
|
+
return (0, decimalStringToBig_js_1.bigToDecimalString)((0, decimalStringToBig_js_1.decimalStringToBig)(value).round(decimals, BIG_ROUNDING[rounding]));
|
|
28
|
+
}
|
|
29
|
+
exports.safeRoundDecimalString = (0, createSafeFunction_js_1.createSafeFunction)('roundDecimalString', roundDecimalString);
|
|
30
|
+
function decimalStringToScaledInteger(value, decimals, rounding) {
|
|
31
|
+
if (!(0, parse_js_1.isDecimalString)(value)) {
|
|
32
|
+
throw new PerpsError_js_1.PerpsError(perps_types_1.PerpsErrorCode.ValidationError, `'${value}' does not match the decimal pattern.`);
|
|
33
|
+
}
|
|
16
34
|
if (!Number.isInteger(decimals) || decimals < 0) {
|
|
17
35
|
throw new PerpsError_js_1.PerpsError(perps_types_1.PerpsErrorCode.ValidationError, `Invalid decimals for integer scaling: ${decimals}`);
|
|
18
36
|
}
|
|
19
|
-
const scaled =
|
|
37
|
+
const scaled = new big_js_1.default(value)
|
|
20
38
|
.times(new big_js_1.default(10).pow(decimals))
|
|
21
|
-
.round(0, rounding
|
|
39
|
+
.round(0, BIG_ROUNDING[rounding]);
|
|
22
40
|
if (scaled.abs().gt(Number.MAX_SAFE_INTEGER)) {
|
|
23
41
|
throw new PerpsError_js_1.PerpsError(perps_types_1.PerpsErrorCode.ValidationError, `Scaled value ${scaled.toFixed()} exceeds Number.MAX_SAFE_INTEGER and cannot be encoded exactly.`);
|
|
24
42
|
}
|
|
25
43
|
return scaled.toNumber();
|
|
26
|
-
}
|
|
27
|
-
exports.
|
|
28
|
-
|
|
29
|
-
function
|
|
44
|
+
}
|
|
45
|
+
exports.safeDecimalStringToScaledInteger = (0, createSafeFunction_js_1.createSafeFunction)('decimalStringToScaledInteger', decimalStringToScaledInteger);
|
|
46
|
+
exports.BASE_UNITS_PATTERN = /^-?\d+$/;
|
|
47
|
+
function scaledIntegerToDecimalString(amount, decimals) {
|
|
30
48
|
if (!Number.isInteger(decimals) || decimals < 0) {
|
|
31
|
-
throw new PerpsError_js_1.PerpsError(perps_types_1.PerpsErrorCode.ValidationError, `Invalid \`
|
|
49
|
+
throw new PerpsError_js_1.PerpsError(perps_types_1.PerpsErrorCode.ValidationError, `Invalid \`scaledIntegerToDecimalString(decimals)\`: ${decimals} is not a non-negative integer.`);
|
|
32
50
|
}
|
|
33
|
-
if (!BASE_UNITS_PATTERN.test(amount)) {
|
|
34
|
-
throw new PerpsError_js_1.PerpsError(perps_types_1.PerpsErrorCode.ValidationError, `Invalid \`
|
|
51
|
+
if (!exports.BASE_UNITS_PATTERN.test(amount)) {
|
|
52
|
+
throw new PerpsError_js_1.PerpsError(perps_types_1.PerpsErrorCode.ValidationError, `Invalid \`scaledIntegerToDecimalString(amount)\`: '${amount}' is not an integer base-unit string.`);
|
|
35
53
|
}
|
|
36
54
|
return (0, viem_1.formatUnits)(BigInt(amount), decimals);
|
|
37
55
|
}
|
|
38
|
-
|
|
39
|
-
if (!Number.isInteger(decimals) || decimals < 0) {
|
|
40
|
-
throw new PerpsError_js_1.PerpsError(perps_types_1.PerpsErrorCode.ValidationError, `Invalid decimals for truncation: ${decimals}`);
|
|
41
|
-
}
|
|
42
|
-
const truncated = (0, requireDecimal_js_1.requireDecimal)(value, 'truncateDecimal(value)').round(decimals, big_js_1.default.roundDown);
|
|
43
|
-
return (truncated.eq(0) ? new big_js_1.default(0) : truncated).toFixed(decimals);
|
|
44
|
-
}
|
|
56
|
+
exports.safeScaledIntegerToDecimalString = (0, createSafeFunction_js_1.createSafeFunction)('scaledIntegerToDecimalString', scaledIntegerToDecimalString);
|
|
45
57
|
function numberToDecimalString(value) {
|
|
46
58
|
if (!Number.isFinite(value)) {
|
|
47
59
|
throw new PerpsError_js_1.PerpsError(perps_types_1.PerpsErrorCode.ValidationError, `Invalid number for decimal conversion: ${value}`);
|
|
@@ -49,4 +61,5 @@ function numberToDecimalString(value) {
|
|
|
49
61
|
const parsed = new big_js_1.default(value);
|
|
50
62
|
return (parsed.eq(0) ? new big_js_1.default(0) : parsed).toFixed();
|
|
51
63
|
}
|
|
64
|
+
exports.safeNumberToDecimalString = (0, createSafeFunction_js_1.createSafeFunction)('numberToDecimalString', numberToDecimalString);
|
|
52
65
|
//# sourceMappingURL=convert.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../src/decimal/convert.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../src/decimal/convert.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import Big from 'big.js';
|
|
2
|
+
export declare function decimalStringToBig(value: string): Big;
|
|
3
|
+
export declare function bigToDecimalString(value: Big): string;
|
|
4
|
+
export declare function decimalStringToDivBig(value: string): Big;
|
|
5
|
+
//# sourceMappingURL=decimalStringToBig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decimalStringToBig.d.ts","sourceRoot":"","sources":["../../../src/decimal/decimalStringToBig.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,QAAQ,CAAA;AAYxB,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAQrD;AAOD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAErD;AASD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAExD"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.decimalStringToBig = decimalStringToBig;
|
|
7
|
+
exports.bigToDecimalString = bigToDecimalString;
|
|
8
|
+
exports.decimalStringToDivBig = decimalStringToDivBig;
|
|
9
|
+
const perps_types_1 = require("@lifi/perps-types");
|
|
10
|
+
const big_js_1 = __importDefault(require("big.js"));
|
|
11
|
+
const PerpsError_js_1 = require("../errors/PerpsError.js");
|
|
12
|
+
const big_js_2 = require("./big.js");
|
|
13
|
+
function decimalStringToBig(value) {
|
|
14
|
+
if (typeof value !== 'string' || !perps_types_1.DECIMAL_PATTERN.test(value)) {
|
|
15
|
+
throw new PerpsError_js_1.PerpsError(perps_types_1.PerpsErrorCode.ValidationError, `'${String(value)}' does not match the decimal pattern.`);
|
|
16
|
+
}
|
|
17
|
+
return new big_js_1.default(value);
|
|
18
|
+
}
|
|
19
|
+
function bigToDecimalString(value) {
|
|
20
|
+
return value.eq(0) ? '0' : value.toFixed();
|
|
21
|
+
}
|
|
22
|
+
function decimalStringToDivBig(value) {
|
|
23
|
+
return new big_js_2.DivBig(decimalStringToBig(value));
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=decimalStringToBig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decimalStringToBig.js","sourceRoot":"","sources":["../../../src/decimal/decimalStringToBig.ts"],"names":[],"mappings":";;;;;AAaA,gDAQC;AAOD,gDAEC;AASD,sDAEC;AAzCD,mDAAmE;AACnE,oDAAwB;AACxB,2DAAoD;AACpD,qCAAiC;AAUjC,SAAgB,kBAAkB,CAAC,KAAa;IAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,6BAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,0BAAU,CAClB,4BAAc,CAAC,eAAe,EAC9B,IAAI,MAAM,CAAC,KAAK,CAAC,uCAAuC,CACzD,CAAA;IACH,CAAC;IACD,OAAO,IAAI,gBAAG,CAAC,KAAK,CAAC,CAAA;AACvB,CAAC;AAOD,SAAgB,kBAAkB,CAAC,KAAU;IAC3C,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAA;AAC5C,CAAC;AASD,SAAgB,qBAAqB,CAAC,KAAa;IACjD,OAAO,IAAI,eAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAA;AAC9C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/decimal/format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/decimal/format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAStD,MAAM,WAAW,aAAa;IAE5B,QAAQ,CAAC,EAAE,MAAM,CAAA;IAKjB,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,MAAM,CAAC,EAAE,MAAM,CAAA;IAOf,QAAQ,CAAC,EAAE,YAAY,CAAA;CACxB;AAOD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAA;AAI7C,KAAK,WAAW,GAAG,MAAM,GAAG,aAAa,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;AA2FrE,wBAAgB,YAAY,CAC1B,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE,aAAkB,GAC1B,MAAM,CAgBR;AAUD,wBAAgB,SAAS,CACvB,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE,aAAkB,GAC1B,MAAM,CAgBR;AAWD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE,aAAkB,GAC1B,MAAM,CAgBR;AAWD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE,aAAkB,GAC1B,MAAM,CAgBR;AAYD,wBAAgB,WAAW,CACzB,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE,aAAkB,GAC1B,MAAM,CAwBR;AAWD,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE,aAAkB,GAC1B,MAAM,CAqBR"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.formatNumber = formatNumber;
|
|
4
7
|
exports.formatUsd = formatUsd;
|
|
@@ -6,121 +9,136 @@ exports.formatSignedUsd = formatSignedUsd;
|
|
|
6
9
|
exports.formatSignedPercent = formatSignedPercent;
|
|
7
10
|
exports.formatPrice = formatPrice;
|
|
8
11
|
exports.formatCompactUsd = formatCompactUsd;
|
|
12
|
+
const big_js_1 = __importDefault(require("big.js"));
|
|
13
|
+
const decimalStringToBig_js_1 = require("./decimalStringToBig.js");
|
|
9
14
|
const DEFAULT_PLACEHOLDER = '—';
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
if (!cleaned) {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
n = Number(cleaned);
|
|
19
|
-
}
|
|
20
|
-
else if (typeof value === 'number') {
|
|
21
|
-
n = value;
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
15
|
+
function toBig(value) {
|
|
16
|
+
if (typeof value === 'number') {
|
|
17
|
+
return Number.isFinite(value) ? new big_js_1.default(value) : null;
|
|
18
|
+
}
|
|
19
|
+
if (typeof value !== 'string' || value.trim() === '') {
|
|
24
20
|
return null;
|
|
25
21
|
}
|
|
26
|
-
|
|
22
|
+
try {
|
|
23
|
+
return (0, decimalStringToBig_js_1.decimalStringToBig)(value);
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
27
28
|
}
|
|
28
|
-
function
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const s = abs.toFixed(Math.min(decimals + FLOAT_GUARD_DIGITS, 100));
|
|
33
|
-
const dot = s.indexOf('.');
|
|
34
|
-
const cut = decimals === 0 ? dot : dot + 1 + decimals;
|
|
35
|
-
return Number(s.slice(0, cut));
|
|
29
|
+
function decimalSeparator(locale) {
|
|
30
|
+
return (new Intl.NumberFormat(locale)
|
|
31
|
+
.formatToParts(1.5)
|
|
32
|
+
.find((part) => part.type === 'decimal')?.value ?? '.');
|
|
36
33
|
}
|
|
37
|
-
function signAndBody(
|
|
38
|
-
const reduced = rounding === 'floor'
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
34
|
+
function signAndBody(value, decimals, locale, grouping, rounding, signed) {
|
|
35
|
+
const reduced = value.round(decimals, rounding === 'floor' ? big_js_1.default.roundDown : big_js_1.default.roundHalfUp);
|
|
36
|
+
const sign = reduced.lt(0) ? '-' : signed && reduced.gt(0) ? '+' : '';
|
|
37
|
+
const [integerPart = '0', fractionPart] = reduced
|
|
38
|
+
.abs()
|
|
39
|
+
.toFixed(decimals)
|
|
40
|
+
.split('.');
|
|
41
|
+
const integerBody = grouping
|
|
42
|
+
? BigInt(integerPart).toLocaleString(locale)
|
|
43
|
+
: integerPart;
|
|
44
|
+
const body = fractionPart === undefined
|
|
45
|
+
? integerBody
|
|
46
|
+
: `${integerBody}${decimalSeparator(locale)}${fractionPart}`;
|
|
47
47
|
return { sign, body };
|
|
48
48
|
}
|
|
49
49
|
function autoDecimals(abs) {
|
|
50
|
-
if (abs
|
|
50
|
+
if (abs.gte(1)) {
|
|
51
51
|
return 2;
|
|
52
52
|
}
|
|
53
|
-
if (abs
|
|
53
|
+
if (abs.gte('0.1')) {
|
|
54
54
|
return 4;
|
|
55
55
|
}
|
|
56
|
-
if (abs
|
|
56
|
+
if (abs.gte('0.01')) {
|
|
57
57
|
return 5;
|
|
58
58
|
}
|
|
59
59
|
return 6;
|
|
60
60
|
}
|
|
61
61
|
function formatNumber(value, options = {}) {
|
|
62
62
|
const { decimals = 2, placeholder = DEFAULT_PLACEHOLDER, locale, rounding = 'halfUp', } = options;
|
|
63
|
-
const n =
|
|
63
|
+
const n = toBig(value);
|
|
64
64
|
if (n === null) {
|
|
65
65
|
return placeholder;
|
|
66
66
|
}
|
|
67
|
+
if (typeof n === 'string') {
|
|
68
|
+
return n;
|
|
69
|
+
}
|
|
67
70
|
const { sign, body } = signAndBody(n, decimals, locale, true, rounding, false);
|
|
68
71
|
return `${sign}${body}`;
|
|
69
72
|
}
|
|
70
73
|
function formatUsd(value, options = {}) {
|
|
71
74
|
const { decimals = 2, placeholder = DEFAULT_PLACEHOLDER, locale, rounding = 'halfUp', } = options;
|
|
72
|
-
const n =
|
|
75
|
+
const n = toBig(value);
|
|
73
76
|
if (n === null) {
|
|
74
77
|
return placeholder;
|
|
75
78
|
}
|
|
79
|
+
if (typeof n === 'string') {
|
|
80
|
+
return n;
|
|
81
|
+
}
|
|
76
82
|
const { sign, body } = signAndBody(n, decimals, locale, true, rounding, false);
|
|
77
83
|
return `${sign}$${body}`;
|
|
78
84
|
}
|
|
79
85
|
function formatSignedUsd(value, options = {}) {
|
|
80
86
|
const { decimals = 2, placeholder = DEFAULT_PLACEHOLDER, locale, rounding = 'halfUp', } = options;
|
|
81
|
-
const n =
|
|
87
|
+
const n = toBig(value);
|
|
82
88
|
if (n === null) {
|
|
83
89
|
return placeholder;
|
|
84
90
|
}
|
|
91
|
+
if (typeof n === 'string') {
|
|
92
|
+
return n;
|
|
93
|
+
}
|
|
85
94
|
const { sign, body } = signAndBody(n, decimals, locale, true, rounding, true);
|
|
86
95
|
return `${sign}$${body}`;
|
|
87
96
|
}
|
|
88
97
|
function formatSignedPercent(value, options = {}) {
|
|
89
98
|
const { decimals = 2, placeholder = DEFAULT_PLACEHOLDER, locale, rounding = 'halfUp', } = options;
|
|
90
|
-
const n =
|
|
99
|
+
const n = toBig(value);
|
|
91
100
|
if (n === null) {
|
|
92
101
|
return placeholder;
|
|
93
102
|
}
|
|
103
|
+
if (typeof n === 'string') {
|
|
104
|
+
return n;
|
|
105
|
+
}
|
|
94
106
|
const { sign, body } = signAndBody(n, decimals, locale, false, rounding, true);
|
|
95
107
|
return `${sign}${body}%`;
|
|
96
108
|
}
|
|
97
109
|
function formatPrice(value, options = {}) {
|
|
98
110
|
const { placeholder = DEFAULT_PLACEHOLDER, locale, rounding = 'halfUp', } = options;
|
|
99
|
-
const n =
|
|
111
|
+
const n = toBig(value);
|
|
100
112
|
if (n === null) {
|
|
101
113
|
return placeholder;
|
|
102
114
|
}
|
|
103
|
-
|
|
115
|
+
if (typeof n === 'string') {
|
|
116
|
+
return n;
|
|
117
|
+
}
|
|
118
|
+
const abs = n.abs();
|
|
104
119
|
const decimals = options.decimals ?? autoDecimals(abs);
|
|
105
|
-
const { sign, body } = signAndBody(n, decimals, locale, abs
|
|
120
|
+
const { sign, body } = signAndBody(n, decimals, locale, abs.gte(1000), rounding, false);
|
|
106
121
|
return `${sign}$${body}`;
|
|
107
122
|
}
|
|
108
123
|
function formatCompactUsd(value, options = {}) {
|
|
109
124
|
const { decimals = 2, placeholder = DEFAULT_PLACEHOLDER } = options;
|
|
110
|
-
const n =
|
|
125
|
+
const n = toBig(value);
|
|
111
126
|
if (n === null) {
|
|
112
127
|
return placeholder;
|
|
113
128
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
129
|
+
if (typeof n === 'string') {
|
|
130
|
+
return n;
|
|
131
|
+
}
|
|
132
|
+
const sign = n.lt(0) ? '-' : '';
|
|
133
|
+
const abs = n.abs();
|
|
134
|
+
if (abs.gte(1_000_000_000)) {
|
|
135
|
+
return `${sign}$${abs.div(1_000_000_000).toFixed(decimals)}B`;
|
|
118
136
|
}
|
|
119
|
-
if (abs
|
|
120
|
-
return `${sign}$${(
|
|
137
|
+
if (abs.gte(1_000_000)) {
|
|
138
|
+
return `${sign}$${abs.div(1_000_000).toFixed(decimals)}M`;
|
|
121
139
|
}
|
|
122
|
-
if (abs
|
|
123
|
-
return `${sign}$${(
|
|
140
|
+
if (abs.gte(1_000)) {
|
|
141
|
+
return `${sign}$${abs.div(1_000).toFixed(decimals)}K`;
|
|
124
142
|
}
|
|
125
143
|
return `${sign}$${abs.toFixed(decimals)}`;
|
|
126
144
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/decimal/format.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/decimal/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
export declare
|
|
3
|
-
export declare function isDecimalString(value: unknown): value is
|
|
4
|
-
export declare function
|
|
1
|
+
export declare function decimalStringToNumber(value: string): number;
|
|
2
|
+
export declare const safeDecimalStringToNumber: (value: string) => number | undefined;
|
|
3
|
+
export declare function isDecimalString(value: unknown): value is string;
|
|
4
|
+
export declare function unknownToDecimalString(value: unknown, field: string, tool: string): string;
|
|
5
|
+
export declare const safeUnknownToDecimalString: (value: unknown, field: string, tool: string) => string | undefined;
|
|
5
6
|
//# sourceMappingURL=parse.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../src/decimal/parse.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../src/decimal/parse.ts"],"names":[],"mappings":"AAeA,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAS3D;AAOD,eAAO,MAAM,yBAAyB,uCAGrC,CAAA;AAQD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAE/D;AAqCD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,MAAM,CAWR;AAQD,eAAO,MAAM,0BAA0B,qEAGtC,CAAA"}
|
|
@@ -1,41 +1,59 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
6
|
+
exports.safeUnknownToDecimalString = exports.safeDecimalStringToNumber = void 0;
|
|
7
|
+
exports.decimalStringToNumber = decimalStringToNumber;
|
|
4
8
|
exports.isDecimalString = isDecimalString;
|
|
5
|
-
exports.
|
|
9
|
+
exports.unknownToDecimalString = unknownToDecimalString;
|
|
6
10
|
const perps_types_1 = require("@lifi/perps-types");
|
|
11
|
+
const big_js_1 = __importDefault(require("big.js"));
|
|
7
12
|
const PerpsError_js_1 = require("../errors/PerpsError.js");
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
13
|
+
const createSafeFunction_js_1 = require("../utils/createSafeFunction.js");
|
|
14
|
+
const decimalStringToBig_js_1 = require("./decimalStringToBig.js");
|
|
15
|
+
function decimalStringToNumber(value) {
|
|
16
|
+
const parsed = (0, decimalStringToBig_js_1.decimalStringToBig)(value).toNumber();
|
|
17
|
+
if (!Number.isFinite(parsed)) {
|
|
18
|
+
throw new PerpsError_js_1.PerpsError(perps_types_1.PerpsErrorCode.ValidationError, `'${value}' is too large for a finite number.`);
|
|
11
19
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return
|
|
20
|
+
return parsed;
|
|
21
|
+
}
|
|
22
|
+
exports.safeDecimalStringToNumber = (0, createSafeFunction_js_1.createSafeFunction)('decimalStringToNumber', decimalStringToNumber);
|
|
23
|
+
function isDecimalString(value) {
|
|
24
|
+
return typeof value === 'string' && perps_types_1.DECIMAL_PATTERN.test(value);
|
|
17
25
|
}
|
|
18
|
-
const
|
|
19
|
-
function
|
|
20
|
-
if (value
|
|
26
|
+
const MAX_SPELLED_EXPONENT = 1000;
|
|
27
|
+
function spellDecimal(value) {
|
|
28
|
+
if (isDecimalString(value)) {
|
|
29
|
+
return value;
|
|
30
|
+
}
|
|
31
|
+
if (typeof value !== 'string' && typeof value !== 'number') {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
if (typeof value === 'number' && !Number.isFinite(value)) {
|
|
21
35
|
return undefined;
|
|
22
36
|
}
|
|
23
|
-
|
|
24
|
-
|
|
37
|
+
let parsed;
|
|
38
|
+
try {
|
|
39
|
+
parsed = new big_js_1.default(value);
|
|
25
40
|
}
|
|
26
|
-
|
|
41
|
+
catch {
|
|
27
42
|
return undefined;
|
|
28
43
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
return typeof value === 'string' && perps_types_1.DECIMAL_PATTERN.test(value);
|
|
44
|
+
if (Math.abs(parsed.e) > MAX_SPELLED_EXPONENT) {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
return (parsed.eq(0) ? new big_js_1.default(0) : parsed).toFixed();
|
|
34
48
|
}
|
|
35
|
-
function
|
|
36
|
-
|
|
37
|
-
|
|
49
|
+
function unknownToDecimalString(value, field, tool) {
|
|
50
|
+
const decimal = spellDecimal(value);
|
|
51
|
+
if (decimal !== undefined) {
|
|
52
|
+
return decimal;
|
|
38
53
|
}
|
|
39
|
-
|
|
54
|
+
const error = new PerpsError_js_1.PerpsError(perps_types_1.PerpsErrorCode.SDKError, `${tool} field \`${field}\` is not a valid decimal: '${String(value)}'`);
|
|
55
|
+
error.tool = tool;
|
|
56
|
+
throw error;
|
|
40
57
|
}
|
|
58
|
+
exports.safeUnknownToDecimalString = (0, createSafeFunction_js_1.createSafeFunction)('unknownToDecimalString', unknownToDecimalString);
|
|
41
59
|
//# sourceMappingURL=parse.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/decimal/parse.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/decimal/parse.ts"],"names":[],"mappings":";;;;;;AAeA,sDASC;AAkBD,0CAEC;AAqCD,wDAeC;AAhGD,mDAAmE;AACnE,oDAAwB;AACxB,2DAAoD;AACpD,0EAAmE;AACnE,mEAA4D;AAW5D,SAAgB,qBAAqB,CAAC,KAAa;IACjD,MAAM,MAAM,GAAG,IAAA,0CAAkB,EAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAA;IACnD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,0BAAU,CAClB,4BAAc,CAAC,eAAe,EAC9B,IAAI,KAAK,qCAAqC,CAC/C,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAOY,QAAA,yBAAyB,GAAG,IAAA,0CAAkB,EACzD,uBAAuB,EACvB,qBAAqB,CACtB,CAAA;AAQD,SAAgB,eAAe,CAAC,KAAc;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,6BAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACjE,CAAC;AAED,MAAM,oBAAoB,GAAG,IAAI,CAAA;AAEjC,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC3D,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,MAAW,CAAA;IACf,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,gBAAG,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,oBAAoB,EAAE,CAAC;QAC9C,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,gBAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAA;AACvD,CAAC;AAYD,SAAgB,sBAAsB,CACpC,KAAc,EACd,KAAa,EACb,IAAY;IAEZ,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;IACnC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAA;IAChB,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,0BAAU,CAC1B,4BAAc,CAAC,QAAQ,EACvB,GAAG,IAAI,YAAY,KAAK,+BAA+B,MAAM,CAAC,KAAK,CAAC,GAAG,CACxE,CAAA;IACD,KAAK,CAAC,IAAI,GAAG,IAAI,CAAA;IACjB,MAAM,KAAK,CAAA;AACb,CAAC;AAQY,QAAA,0BAA0B,GAAG,IAAA,0CAAkB,EAC1D,wBAAwB,EACxB,sBAAsB,CACvB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invalidInput.d.ts","sourceRoot":"","sources":["../../../src/errors/invalidInput.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAG5C,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAKxE"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.invalidInput = invalidInput;
|
|
4
|
+
const perps_types_1 = require("@lifi/perps-types");
|
|
5
|
+
const PerpsError_js_1 = require("./PerpsError.js");
|
|
6
|
+
function invalidInput(parameter, rule) {
|
|
7
|
+
return new PerpsError_js_1.PerpsError(perps_types_1.PerpsErrorCode.ValidationError, `\`${parameter}\` ${rule}.`);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=invalidInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invalidInput.js","sourceRoot":"","sources":["../../../src/errors/invalidInput.ts"],"names":[],"mappings":";;AAIA,oCAKC;AATD,mDAAkD;AAClD,mDAA4C;AAG5C,SAAgB,YAAY,CAAC,SAAiB,EAAE,IAAY;IAC1D,OAAO,IAAI,0BAAU,CACnB,4BAAc,CAAC,eAAe,EAC9B,KAAK,SAAS,MAAM,IAAI,GAAG,CAC5B,CAAA;AACH,CAAC"}
|