@debridge-finance/borderless-validation-sdk 0.0.6 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/helpers/eip712-types.js +29 -0
- package/dist/cjs/helpers/eip712-types.js.map +1 -0
- package/dist/cjs/helpers/evm-action.js +18 -2
- package/dist/cjs/helpers/evm-action.js.map +1 -1
- package/dist/cjs/helpers/evm-dln-hook-pack.js +8 -6
- package/dist/cjs/helpers/evm-dln-hook-pack.js.map +1 -1
- package/dist/cjs/helpers/evm-gas-compensation-tx.js +26 -7
- package/dist/cjs/helpers/evm-gas-compensation-tx.js.map +1 -1
- package/dist/cjs/helpers/evm-intent-id.js +6 -5
- package/dist/cjs/helpers/evm-intent-id.js.map +1 -1
- package/dist/cjs/helpers/evm-token.js +1 -1
- package/dist/cjs/helpers/evm-token.js.map +1 -1
- package/dist/cjs/helpers/evm-trade-amounts.js +2 -1
- package/dist/cjs/helpers/evm-trade-amounts.js.map +1 -1
- package/dist/cjs/helpers/expected-delegate.js +10 -11
- package/dist/cjs/helpers/expected-delegate.js.map +1 -1
- package/dist/cjs/helpers/gas-compensation.js +3 -0
- package/dist/cjs/helpers/gas-compensation.js.map +1 -1
- package/dist/cjs/helpers/hex.js +35 -0
- package/dist/cjs/helpers/hex.js.map +1 -1
- package/dist/cjs/helpers/integer.js +10 -0
- package/dist/cjs/helpers/integer.js.map +1 -0
- package/dist/cjs/helpers/placeholder.js +99 -4
- package/dist/cjs/helpers/placeholder.js.map +1 -1
- package/dist/cjs/helpers/solana-intent-id.js +6 -5
- package/dist/cjs/helpers/solana-intent-id.js.map +1 -1
- package/dist/cjs/helpers/synthetic-native-wrap.js +56 -0
- package/dist/cjs/helpers/synthetic-native-wrap.js.map +1 -0
- package/dist/cjs/types/enums.js +2 -0
- package/dist/cjs/types/enums.js.map +1 -1
- package/dist/cjs/types/request.js +25 -5
- package/dist/cjs/types/request.js.map +1 -1
- package/dist/cjs/types/response.js +10 -3
- package/dist/cjs/types/response.js.map +1 -1
- package/dist/cjs/types/validation.js +28 -1
- package/dist/cjs/types/validation.js.map +1 -1
- package/dist/cjs/validations/accumulative-token.js +5 -4
- package/dist/cjs/validations/accumulative-token.js.map +1 -1
- package/dist/cjs/validations/compensation-hook.js +14 -4
- package/dist/cjs/validations/compensation-hook.js.map +1 -1
- package/dist/cjs/validations/dln-metadata.js +63 -0
- package/dist/cjs/validations/dln-metadata.js.map +1 -0
- package/dist/cjs/validations/evm-caveats.js +12 -11
- package/dist/cjs/validations/evm-caveats.js.map +1 -1
- package/dist/cjs/validations/evm-op-budget.js +162 -53
- package/dist/cjs/validations/evm-op-budget.js.map +1 -1
- package/dist/cjs/validations/evm-op-hook.js +67 -26
- package/dist/cjs/validations/evm-op-hook.js.map +1 -1
- package/dist/cjs/validations/evm-op-wrap.js +29 -26
- package/dist/cjs/validations/evm-op-wrap.js.map +1 -1
- package/dist/cjs/validations/evm-permit.js +143 -42
- package/dist/cjs/validations/evm-permit.js.map +1 -1
- package/dist/cjs/validations/evm-permit2.js +32 -39
- package/dist/cjs/validations/evm-permit2.js.map +1 -1
- package/dist/cjs/validations/evm-required-actions.js +17 -9
- package/dist/cjs/validations/evm-required-actions.js.map +1 -1
- package/dist/cjs/validations/evm-sign712-metamask.js +126 -3
- package/dist/cjs/validations/evm-sign712-metamask.js.map +1 -1
- package/dist/cjs/validations/evm-sign712-shared.js +4 -5
- package/dist/cjs/validations/evm-sign712-shared.js.map +1 -1
- package/dist/cjs/validations/evm-sign712.js +3 -23
- package/dist/cjs/validations/evm-sign712.js.map +1 -1
- package/dist/cjs/validations/evm-sign7702.js +4 -5
- package/dist/cjs/validations/evm-sign7702.js.map +1 -1
- package/dist/cjs/validations/external-call.js +330 -0
- package/dist/cjs/validations/external-call.js.map +1 -0
- package/dist/cjs/validations/hooks-common.js +279 -25
- package/dist/cjs/validations/hooks-common.js.map +1 -1
- package/dist/cjs/validations/intent-tokens.js +23 -15
- package/dist/cjs/validations/intent-tokens.js.map +1 -1
- package/dist/cjs/validations/intent.js +194 -72
- package/dist/cjs/validations/intent.js.map +1 -1
- package/dist/cjs/validations/ptp.js +7 -6
- package/dist/cjs/validations/ptp.js.map +1 -1
- package/dist/cjs/validations/required-actions.js +6 -4
- package/dist/cjs/validations/required-actions.js.map +1 -1
- package/dist/cjs/validations/solana-hook.js +74 -9
- package/dist/cjs/validations/solana-hook.js.map +1 -1
- package/dist/cjs/validations/solana-op-budget.js +71 -2
- package/dist/cjs/validations/solana-op-budget.js.map +1 -1
- package/dist/cjs/validations/solana-op-wrap.js +32 -4
- package/dist/cjs/validations/solana-op-wrap.js.map +1 -1
- package/dist/cjs/validations/solana-sign.js +31 -15
- package/dist/cjs/validations/solana-sign.js.map +1 -1
- package/dist/cjs/validations/solana-transaction.js +29 -2
- package/dist/cjs/validations/solana-transaction.js.map +1 -1
- package/dist/cjs/validations/total-dst-amount.js +36 -22
- package/dist/cjs/validations/total-dst-amount.js.map +1 -1
- package/dist/cjs/validations/trade-grouping.js +67 -31
- package/dist/cjs/validations/trade-grouping.js.map +1 -1
- package/dist/cjs/validations/trade-matching.js +112 -0
- package/dist/cjs/validations/trade-matching.js.map +1 -0
- package/dist/cjs/validations/trades.js +53 -52
- package/dist/cjs/validations/trades.js.map +1 -1
- package/dist/cjs/validator.js +19 -7
- package/dist/cjs/validator.js.map +1 -1
- package/dist/cjs/whitelists/environment-config.js +65 -16
- package/dist/cjs/whitelists/environment-config.js.map +1 -1
- package/dist/cjs/whitelists/solana/intent-signature.js +7 -2
- package/dist/cjs/whitelists/solana/intent-signature.js.map +1 -1
- package/dist/cjs/whitelists/types.js.map +1 -1
- package/dist/esm/helpers/eip712-types.js +26 -0
- package/dist/esm/helpers/eip712-types.js.map +1 -0
- package/dist/esm/helpers/evm-action.js +16 -2
- package/dist/esm/helpers/evm-action.js.map +1 -1
- package/dist/esm/helpers/evm-dln-hook-pack.js +8 -6
- package/dist/esm/helpers/evm-dln-hook-pack.js.map +1 -1
- package/dist/esm/helpers/evm-gas-compensation-tx.js +26 -7
- package/dist/esm/helpers/evm-gas-compensation-tx.js.map +1 -1
- package/dist/esm/helpers/evm-intent-id.js +6 -5
- package/dist/esm/helpers/evm-intent-id.js.map +1 -1
- package/dist/esm/helpers/evm-token.js +3 -3
- package/dist/esm/helpers/evm-token.js.map +1 -1
- package/dist/esm/helpers/evm-trade-amounts.js +2 -1
- package/dist/esm/helpers/evm-trade-amounts.js.map +1 -1
- package/dist/esm/helpers/expected-delegate.js +10 -11
- package/dist/esm/helpers/expected-delegate.js.map +1 -1
- package/dist/esm/helpers/gas-compensation.js +3 -0
- package/dist/esm/helpers/gas-compensation.js.map +1 -1
- package/dist/esm/helpers/hex.js +29 -0
- package/dist/esm/helpers/hex.js.map +1 -1
- package/dist/esm/helpers/integer.js +7 -0
- package/dist/esm/helpers/integer.js.map +1 -0
- package/dist/esm/helpers/placeholder.js +98 -4
- package/dist/esm/helpers/placeholder.js.map +1 -1
- package/dist/esm/helpers/solana-intent-id.js +6 -5
- package/dist/esm/helpers/solana-intent-id.js.map +1 -1
- package/dist/esm/helpers/synthetic-native-wrap.js +52 -0
- package/dist/esm/helpers/synthetic-native-wrap.js.map +1 -0
- package/dist/esm/types/enums.js +2 -0
- package/dist/esm/types/enums.js.map +1 -1
- package/dist/esm/types/request.js +23 -4
- package/dist/esm/types/request.js.map +1 -1
- package/dist/esm/types/response.js +10 -3
- package/dist/esm/types/response.js.map +1 -1
- package/dist/esm/types/validation.js +28 -1
- package/dist/esm/types/validation.js.map +1 -1
- package/dist/esm/validations/accumulative-token.js +5 -4
- package/dist/esm/validations/accumulative-token.js.map +1 -1
- package/dist/esm/validations/compensation-hook.js +14 -4
- package/dist/esm/validations/compensation-hook.js.map +1 -1
- package/dist/esm/validations/dln-metadata.js +56 -0
- package/dist/esm/validations/dln-metadata.js.map +1 -0
- package/dist/esm/validations/evm-caveats.js +12 -11
- package/dist/esm/validations/evm-caveats.js.map +1 -1
- package/dist/esm/validations/evm-op-budget.js +162 -54
- package/dist/esm/validations/evm-op-budget.js.map +1 -1
- package/dist/esm/validations/evm-op-hook.js +68 -27
- package/dist/esm/validations/evm-op-hook.js.map +1 -1
- package/dist/esm/validations/evm-op-wrap.js +30 -27
- package/dist/esm/validations/evm-op-wrap.js.map +1 -1
- package/dist/esm/validations/evm-permit.js +144 -43
- package/dist/esm/validations/evm-permit.js.map +1 -1
- package/dist/esm/validations/evm-permit2.js +33 -40
- package/dist/esm/validations/evm-permit2.js.map +1 -1
- package/dist/esm/validations/evm-required-actions.js +18 -10
- package/dist/esm/validations/evm-required-actions.js.map +1 -1
- package/dist/esm/validations/evm-sign712-metamask.js +126 -3
- package/dist/esm/validations/evm-sign712-metamask.js.map +1 -1
- package/dist/esm/validations/evm-sign712-shared.js +4 -5
- package/dist/esm/validations/evm-sign712-shared.js.map +1 -1
- package/dist/esm/validations/evm-sign712.js +3 -23
- package/dist/esm/validations/evm-sign712.js.map +1 -1
- package/dist/esm/validations/evm-sign7702.js +4 -5
- package/dist/esm/validations/evm-sign7702.js.map +1 -1
- package/dist/esm/validations/external-call.js +325 -0
- package/dist/esm/validations/external-call.js.map +1 -0
- package/dist/esm/validations/hooks-common.js +280 -26
- package/dist/esm/validations/hooks-common.js.map +1 -1
- package/dist/esm/validations/intent-tokens.js +23 -15
- package/dist/esm/validations/intent-tokens.js.map +1 -1
- package/dist/esm/validations/intent.js +197 -75
- package/dist/esm/validations/intent.js.map +1 -1
- package/dist/esm/validations/ptp.js +7 -6
- package/dist/esm/validations/ptp.js.map +1 -1
- package/dist/esm/validations/required-actions.js +7 -5
- package/dist/esm/validations/required-actions.js.map +1 -1
- package/dist/esm/validations/solana-hook.js +74 -9
- package/dist/esm/validations/solana-hook.js.map +1 -1
- package/dist/esm/validations/solana-op-budget.js +71 -2
- package/dist/esm/validations/solana-op-budget.js.map +1 -1
- package/dist/esm/validations/solana-op-wrap.js +32 -4
- package/dist/esm/validations/solana-op-wrap.js.map +1 -1
- package/dist/esm/validations/solana-sign.js +31 -15
- package/dist/esm/validations/solana-sign.js.map +1 -1
- package/dist/esm/validations/solana-transaction.js +29 -2
- package/dist/esm/validations/solana-transaction.js.map +1 -1
- package/dist/esm/validations/total-dst-amount.js +36 -22
- package/dist/esm/validations/total-dst-amount.js.map +1 -1
- package/dist/esm/validations/trade-grouping.js +67 -31
- package/dist/esm/validations/trade-grouping.js.map +1 -1
- package/dist/esm/validations/trade-matching.js +109 -0
- package/dist/esm/validations/trade-matching.js.map +1 -0
- package/dist/esm/validations/trades.js +53 -52
- package/dist/esm/validations/trades.js.map +1 -1
- package/dist/esm/validator.js +19 -7
- package/dist/esm/validator.js.map +1 -1
- package/dist/esm/whitelists/environment-config.js +65 -16
- package/dist/esm/whitelists/environment-config.js.map +1 -1
- package/dist/esm/whitelists/solana/intent-signature.js +7 -2
- package/dist/esm/whitelists/solana/intent-signature.js.map +1 -1
- package/dist/esm/whitelists/types.js.map +1 -1
- package/dist/types/helpers/eip712-types.d.ts +7 -0
- package/dist/types/helpers/eip712-types.d.ts.map +1 -0
- package/dist/types/helpers/evm-action.d.ts +6 -0
- package/dist/types/helpers/evm-action.d.ts.map +1 -1
- package/dist/types/helpers/evm-dln-hook-pack.d.ts.map +1 -1
- package/dist/types/helpers/evm-gas-compensation-tx.d.ts +3 -1
- package/dist/types/helpers/evm-gas-compensation-tx.d.ts.map +1 -1
- package/dist/types/helpers/evm-intent-id.d.ts.map +1 -1
- package/dist/types/helpers/evm-token.d.ts.map +1 -1
- package/dist/types/helpers/evm-trade-amounts.d.ts.map +1 -1
- package/dist/types/helpers/expected-delegate.d.ts.map +1 -1
- package/dist/types/helpers/gas-compensation.d.ts.map +1 -1
- package/dist/types/helpers/hex.d.ts +6 -0
- package/dist/types/helpers/hex.d.ts.map +1 -1
- package/dist/types/helpers/integer.d.ts +2 -0
- package/dist/types/helpers/integer.d.ts.map +1 -0
- package/dist/types/helpers/placeholder.d.ts +3 -1
- package/dist/types/helpers/placeholder.d.ts.map +1 -1
- package/dist/types/helpers/solana-intent-id.d.ts.map +1 -1
- package/dist/types/helpers/synthetic-native-wrap.d.ts +4 -0
- package/dist/types/helpers/synthetic-native-wrap.d.ts.map +1 -0
- package/dist/types/types/enums.d.ts +4 -2
- package/dist/types/types/enums.d.ts.map +1 -1
- package/dist/types/types/request.d.ts +83 -6
- package/dist/types/types/request.d.ts.map +1 -1
- package/dist/types/types/response.d.ts +95 -12
- package/dist/types/types/response.d.ts.map +1 -1
- package/dist/types/types/validation.d.ts +29 -1
- package/dist/types/types/validation.d.ts.map +1 -1
- package/dist/types/validations/accumulative-token.d.ts.map +1 -1
- package/dist/types/validations/compensation-hook.d.ts +2 -1
- package/dist/types/validations/compensation-hook.d.ts.map +1 -1
- package/dist/types/validations/dln-metadata.d.ts +7 -0
- package/dist/types/validations/dln-metadata.d.ts.map +1 -0
- package/dist/types/validations/evm-caveats.d.ts +2 -1
- package/dist/types/validations/evm-caveats.d.ts.map +1 -1
- package/dist/types/validations/evm-op-budget.d.ts +8 -0
- package/dist/types/validations/evm-op-budget.d.ts.map +1 -1
- package/dist/types/validations/evm-op-hook.d.ts +2 -1
- package/dist/types/validations/evm-op-hook.d.ts.map +1 -1
- package/dist/types/validations/evm-op-wrap.d.ts.map +1 -1
- package/dist/types/validations/evm-permit.d.ts.map +1 -1
- package/dist/types/validations/evm-permit2.d.ts.map +1 -1
- package/dist/types/validations/evm-required-actions.d.ts +1 -1
- package/dist/types/validations/evm-required-actions.d.ts.map +1 -1
- package/dist/types/validations/evm-sign712-metamask.d.ts +2 -1
- package/dist/types/validations/evm-sign712-metamask.d.ts.map +1 -1
- package/dist/types/validations/evm-sign712-shared.d.ts +3 -2
- package/dist/types/validations/evm-sign712-shared.d.ts.map +1 -1
- package/dist/types/validations/evm-sign712.d.ts.map +1 -1
- package/dist/types/validations/evm-sign7702.d.ts +3 -2
- package/dist/types/validations/evm-sign7702.d.ts.map +1 -1
- package/dist/types/validations/external-call.d.ts +15 -0
- package/dist/types/validations/external-call.d.ts.map +1 -0
- package/dist/types/validations/hooks-common.d.ts +5 -1
- package/dist/types/validations/hooks-common.d.ts.map +1 -1
- package/dist/types/validations/intent-tokens.d.ts.map +1 -1
- package/dist/types/validations/intent.d.ts +1 -1
- package/dist/types/validations/intent.d.ts.map +1 -1
- package/dist/types/validations/ptp.d.ts.map +1 -1
- package/dist/types/validations/required-actions.d.ts +1 -1
- package/dist/types/validations/required-actions.d.ts.map +1 -1
- package/dist/types/validations/solana-hook.d.ts +2 -1
- package/dist/types/validations/solana-hook.d.ts.map +1 -1
- package/dist/types/validations/solana-op-budget.d.ts.map +1 -1
- package/dist/types/validations/solana-op-wrap.d.ts.map +1 -1
- package/dist/types/validations/solana-transaction.d.ts.map +1 -1
- package/dist/types/validations/total-dst-amount.d.ts.map +1 -1
- package/dist/types/validations/trade-grouping.d.ts +2 -1
- package/dist/types/validations/trade-grouping.d.ts.map +1 -1
- package/dist/types/validations/trade-matching.d.ts +13 -0
- package/dist/types/validations/trade-matching.d.ts.map +1 -0
- package/dist/types/validations/trades.d.ts +2 -1
- package/dist/types/validations/trades.d.ts.map +1 -1
- package/dist/types/validator.d.ts.map +1 -1
- package/dist/types/whitelists/environment-config.d.ts.map +1 -1
- package/dist/types/whitelists/solana/intent-signature.d.ts +1 -0
- package/dist/types/whitelists/solana/intent-signature.d.ts.map +1 -1
- package/dist/types/whitelists/types.d.ts +9 -0
- package/dist/types/whitelists/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.eip712TypesEqual = eip712TypesEqual;
|
|
4
|
+
function eip712TypesEqual(actual, expected) {
|
|
5
|
+
const actualKeys = Object.keys(actual).sort();
|
|
6
|
+
const expectedKeys = Object.keys(expected).sort();
|
|
7
|
+
if (actualKeys.length !== expectedKeys.length)
|
|
8
|
+
return false;
|
|
9
|
+
if (!actualKeys.every((key, i) => key === expectedKeys[i]))
|
|
10
|
+
return false;
|
|
11
|
+
for (const key of expectedKeys) {
|
|
12
|
+
if (!eip712TypeFieldsEqual(actual[key], expected[key]))
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
function eip712TypeFieldsEqual(actual, expected) {
|
|
18
|
+
if (!actual)
|
|
19
|
+
return false;
|
|
20
|
+
if (actual.length !== expected.length)
|
|
21
|
+
return false;
|
|
22
|
+
for (let i = 0; i < expected.length; i++) {
|
|
23
|
+
if (actual[i].name !== expected[i].name || actual[i].type !== expected[i].type) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=eip712-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eip712-types.js","sourceRoot":"","sources":["../../../src/helpers/eip712-types.ts"],"names":[],"mappings":";;AAOA,4CAeC;AAfD,SAAgB,gBAAgB,CAC5B,MAAmB,EACnB,QAAqB;IAErB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IAElD,IAAI,UAAU,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC5D,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAEzE,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC7B,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IACzE,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,qBAAqB,CAC1B,MAAqC,EACrC,QAA2B;IAE3B,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAEpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7E,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC"}
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.actionUsesTransactionCalls = actionUsesTransactionCalls;
|
|
4
4
|
exports.getTransactionCalls = getTransactionCalls;
|
|
5
|
+
exports.getTransactionCallRefs = getTransactionCallRefs;
|
|
6
|
+
exports.getTransactionCallsContainerPath = getTransactionCallsContainerPath;
|
|
5
7
|
const types_1 = require("../types");
|
|
6
8
|
// Transaction and Sign712MetaMaskCaveats(WithPlaceholders) actions carry
|
|
7
9
|
// transactionCalls; Sign712 (Permit/Permit2) and Sign7702Authorization do not.
|
|
@@ -14,9 +16,23 @@ function actionUsesTransactionCalls(action) {
|
|
|
14
16
|
// For Sign712MetaMaskCaveats(WithPlaceholders)-type actions (AA), the calls
|
|
15
17
|
// are in details.transactionCalls.
|
|
16
18
|
function getTransactionCalls(action) {
|
|
19
|
+
return getTransactionCallRefs(action, "").map(ref => ref.call);
|
|
20
|
+
}
|
|
21
|
+
function getTransactionCallRefs(action, actionPath) {
|
|
17
22
|
if (action.type === types_1.EvmActionKind.Transaction) {
|
|
18
|
-
return [
|
|
23
|
+
return [{
|
|
24
|
+
call: action.data,
|
|
25
|
+
path: `${actionPath}.data`,
|
|
26
|
+
}];
|
|
19
27
|
}
|
|
20
|
-
return action.details?.transactionCalls ?? []
|
|
28
|
+
return (action.details?.transactionCalls ?? []).map((call, index) => ({
|
|
29
|
+
call,
|
|
30
|
+
path: `${actionPath}.details.transactionCalls[${index}]`,
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
function getTransactionCallsContainerPath(action, actionPath) {
|
|
34
|
+
return action.type === types_1.EvmActionKind.Transaction
|
|
35
|
+
? `${actionPath}.data`
|
|
36
|
+
: `${actionPath}.details.transactionCalls`;
|
|
21
37
|
}
|
|
22
38
|
//# sourceMappingURL=evm-action.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evm-action.js","sourceRoot":"","sources":["../../../src/helpers/evm-action.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"evm-action.js","sourceRoot":"","sources":["../../../src/helpers/evm-action.ts"],"names":[],"mappings":";;AASA,gEAIC;AAKD,kDAEC;AAED,wDAeC;AAED,4EAOC;AA9CD,oCAAgF;AAOhF,yEAAyE;AACzE,+EAA+E;AAC/E,SAAgB,0BAA0B,CAAC,MAAyB;IAChE,OAAO,MAAM,CAAC,IAAI,KAAK,qBAAa,CAAC,WAAW;WACzC,MAAM,CAAC,IAAI,KAAK,qBAAa,CAAC,sBAAsB;WACpD,MAAM,CAAC,IAAI,KAAK,qBAAa,CAAC,sCAAsC,CAAC;AAChF,CAAC;AAED,8EAA8E;AAC9E,4EAA4E;AAC5E,mCAAmC;AACnC,SAAgB,mBAAmB,CAAC,MAAyB;IACzD,OAAO,sBAAsB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnE,CAAC;AAED,SAAgB,sBAAsB,CAClC,MAAyB,EACzB,UAAkB;IAElB,IAAI,MAAM,CAAC,IAAI,KAAK,qBAAa,CAAC,WAAW,EAAE,CAAC;QAC5C,OAAO,CAAC;gBACJ,IAAI,EAAE,MAAM,CAAC,IAA0B;gBACvC,IAAI,EAAE,GAAG,UAAU,OAAO;aAC7B,CAAC,CAAC;IACP,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,gBAAgB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAClE,IAAI;QACJ,IAAI,EAAE,GAAG,UAAU,6BAA6B,KAAK,GAAG;KAC3D,CAAC,CAAC,CAAC;AACR,CAAC;AAED,SAAgB,gCAAgC,CAC5C,MAAyB,EACzB,UAAkB;IAElB,OAAO,MAAM,CAAC,IAAI,KAAK,qBAAa,CAAC,WAAW;QAC5C,CAAC,CAAC,GAAG,UAAU,OAAO;QACtB,CAAC,CAAC,GAAG,UAAU,2BAA2B,CAAC;AACnD,CAAC"}
|
|
@@ -5,6 +5,7 @@ exports.packEvmTransactionCall = packEvmTransactionCall;
|
|
|
5
5
|
exports.serializeDlnHook = serializeDlnHook;
|
|
6
6
|
const viem_1 = require("viem");
|
|
7
7
|
const enums_1 = require("../types/enums");
|
|
8
|
+
const hex_1 = require("./hex");
|
|
8
9
|
// Hook envelope: ABI-encoded tuple prefixed with a `uint8 version=1` byte.
|
|
9
10
|
// keccak256 of these bytes is what ends up in `intent.externalCallHash`.
|
|
10
11
|
const ENVELOPE_TUPLE = {
|
|
@@ -26,7 +27,7 @@ function packEvmHookV1(data) {
|
|
|
26
27
|
executionFee: BigInt(data.reward),
|
|
27
28
|
allowDelayedExecution: data.isNonAtomic,
|
|
28
29
|
requireSuccessfullExecution: data.isSuccessRequired,
|
|
29
|
-
payload: data.targetPayload,
|
|
30
|
+
payload: (0, hex_1.normalizeHexByteString)(data.targetPayload),
|
|
30
31
|
}]);
|
|
31
32
|
return (0, viem_1.concatHex)([ENVELOPE_VERSION_PREFIX, tuple]);
|
|
32
33
|
}
|
|
@@ -48,7 +49,7 @@ function packEvmTransactionCall(data, dstChainAuthorityAddress) {
|
|
|
48
49
|
}], [{
|
|
49
50
|
to: data.to,
|
|
50
51
|
txGas: Number(data.gas ?? 0),
|
|
51
|
-
callData: data.calldata,
|
|
52
|
+
callData: (0, hex_1.normalizeHexByteString)(data.calldata),
|
|
52
53
|
}]);
|
|
53
54
|
return packEvmHookV1({
|
|
54
55
|
fallbackAddress: dstChainAuthorityAddress,
|
|
@@ -59,10 +60,11 @@ function packEvmTransactionCall(data, dstChainAuthorityAddress) {
|
|
|
59
60
|
targetPayload: inner,
|
|
60
61
|
});
|
|
61
62
|
}
|
|
62
|
-
// Parses
|
|
63
|
-
//
|
|
64
|
-
//
|
|
65
|
-
//
|
|
63
|
+
// Parses an EVM request trade's `dlnHook` JSON and returns the serialized
|
|
64
|
+
// external-call bytes used for hashing. Returns `undefined` when the trade has
|
|
65
|
+
// no hook. Throws on unknown / Solana hook types; Solana hooks are verified
|
|
66
|
+
// through response trade `externalCallData`, because their serialized bytes may
|
|
67
|
+
// depend on route-level external-call processing.
|
|
66
68
|
function serializeDlnHook(trade) {
|
|
67
69
|
if (!trade.dlnHook)
|
|
68
70
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evm-dln-hook-pack.js","sourceRoot":"","sources":["../../../src/helpers/evm-dln-hook-pack.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"evm-dln-hook-pack.js","sourceRoot":"","sources":["../../../src/helpers/evm-dln-hook-pack.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,8 @@ exports.validateEvmGasCompensationTx = validateEvmGasCompensationTx;
|
|
|
4
4
|
const evm_calldata_1 = require("./evm-calldata");
|
|
5
5
|
const evm_token_1 = require("./evm-token");
|
|
6
6
|
const address_1 = require("./address");
|
|
7
|
+
const integer_1 = require("./integer");
|
|
8
|
+
const types_1 = require("../whitelists/types");
|
|
7
9
|
// Validates an EVM `{to, data, value}` triplet that is expected to encode a
|
|
8
10
|
// gas-compensation transfer. `groups` are the gas-compensation groups
|
|
9
11
|
// associated with this triplet's source (already filtered to the relevant
|
|
@@ -14,13 +16,13 @@ const address_1 = require("./address");
|
|
|
14
16
|
// and at least one group must carry a native token).
|
|
15
17
|
// - otherwise → ERC20 compensation (`triplet.to` matches some non-native
|
|
16
18
|
// group's tokenAddress, data is `transfer(...)`, value === "0").
|
|
17
|
-
function validateEvmGasCompensationTx(triplet, groups, realChainId, basePath, codes) {
|
|
19
|
+
function validateEvmGasCompensationTx(triplet, groups, realChainId, basePath, codes, delegateContracts) {
|
|
18
20
|
if (triplet.data === "0x") {
|
|
19
|
-
return validateNativeCompensation(triplet, groups, basePath, codes);
|
|
21
|
+
return validateNativeCompensation(triplet, groups, realChainId, basePath, codes, delegateContracts);
|
|
20
22
|
}
|
|
21
|
-
return validateErc20Compensation(triplet, groups, realChainId, basePath, codes);
|
|
23
|
+
return validateErc20Compensation(triplet, groups, realChainId, basePath, codes, delegateContracts);
|
|
22
24
|
}
|
|
23
|
-
function validateNativeCompensation(triplet, groups, basePath, codes) {
|
|
25
|
+
function validateNativeCompensation(triplet, groups, realChainId, basePath, codes, delegateContracts) {
|
|
24
26
|
const violations = [];
|
|
25
27
|
// CRITICAL: data="0x" implies native — must have at least one native group.
|
|
26
28
|
const hasNativeGroup = groups.some(g => (0, evm_token_1.isNativeToken)(g.tokenAddress, g.realChainId));
|
|
@@ -33,13 +35,22 @@ function validateNativeCompensation(triplet, groups, basePath, codes) {
|
|
|
33
35
|
actual: "0x",
|
|
34
36
|
});
|
|
35
37
|
}
|
|
38
|
+
// CRITICAL: native compensation must transfer to the configured delegate.
|
|
39
|
+
if (!(0, types_1.isWhitelisted)(delegateContracts, realChainId, triplet.to)) {
|
|
40
|
+
violations.push({
|
|
41
|
+
code: codes.recipientMismatch,
|
|
42
|
+
message: "native compensation recipient is not whitelisted",
|
|
43
|
+
path: `${basePath}.to`,
|
|
44
|
+
actual: triplet.to,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
36
47
|
// HIGH: native compensation value must parse and be > 0.
|
|
37
48
|
violations.push(...validateNativeValue(triplet.value, basePath, codes));
|
|
38
49
|
return violations;
|
|
39
50
|
}
|
|
40
51
|
function validateNativeValue(rawValue, basePath, codes) {
|
|
41
52
|
try {
|
|
42
|
-
if (
|
|
53
|
+
if ((0, integer_1.parseIntegerString)(rawValue) <= 0n) {
|
|
43
54
|
return [{
|
|
44
55
|
code: codes.valueInvalid,
|
|
45
56
|
message: "native compensation must have value > 0",
|
|
@@ -59,7 +70,7 @@ function validateNativeValue(rawValue, basePath, codes) {
|
|
|
59
70
|
}];
|
|
60
71
|
}
|
|
61
72
|
}
|
|
62
|
-
function validateErc20Compensation(triplet, groups, realChainId, basePath, codes) {
|
|
73
|
+
function validateErc20Compensation(triplet, groups, realChainId, basePath, codes, delegateContracts) {
|
|
63
74
|
const violations = [];
|
|
64
75
|
// CRITICAL: `to` must equal some non-native group's tokenAddress.
|
|
65
76
|
const erc20Groups = groups.filter(g => !(0, evm_token_1.isNativeToken)(g.tokenAddress, g.realChainId));
|
|
@@ -76,7 +87,15 @@ function validateErc20Compensation(triplet, groups, realChainId, basePath, codes
|
|
|
76
87
|
}
|
|
77
88
|
// CRITICAL: data must be a valid ERC20 transfer calldata.
|
|
78
89
|
try {
|
|
79
|
-
(0, evm_calldata_1.decodeTransferCalldata)(triplet.data);
|
|
90
|
+
const decoded = (0, evm_calldata_1.decodeTransferCalldata)(triplet.data);
|
|
91
|
+
if (!(0, types_1.isWhitelisted)(delegateContracts, realChainId, decoded.to)) {
|
|
92
|
+
violations.push({
|
|
93
|
+
code: codes.recipientMismatch,
|
|
94
|
+
message: "ERC20 compensation transfer recipient is not whitelisted",
|
|
95
|
+
path: `${basePath}.data`,
|
|
96
|
+
actual: decoded.to,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
80
99
|
}
|
|
81
100
|
catch (error) {
|
|
82
101
|
violations.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evm-gas-compensation-tx.js","sourceRoot":"","sources":["../../../src/helpers/evm-gas-compensation-tx.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"evm-gas-compensation-tx.js","sourceRoot":"","sources":["../../../src/helpers/evm-gas-compensation-tx.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ const viem_1 = require("viem");
|
|
|
5
5
|
const evm_intent_id_abi_1 = require("./evm-intent-id-abi");
|
|
6
6
|
const address_1 = require("./address");
|
|
7
7
|
const subscription_to_chain_id_1 = require("../whitelists/subscription-to-chain-id");
|
|
8
|
+
const integer_1 = require("./integer");
|
|
8
9
|
function computeIntentId(intent) {
|
|
9
10
|
const struct = convertToIntentStruct(intent);
|
|
10
11
|
const encoded = (0, viem_1.encodeAbiParameters)(evm_intent_id_abi_1.SUBMIT_INTENT_ABI_PARAMS, [struct]);
|
|
@@ -53,9 +54,9 @@ function convertInputTokens(tokens) {
|
|
|
53
54
|
return [];
|
|
54
55
|
return tokens.map(t => ({
|
|
55
56
|
token: t.address,
|
|
56
|
-
minPartialAmount:
|
|
57
|
-
maxPartialAmount:
|
|
58
|
-
budget:
|
|
57
|
+
minPartialAmount: (0, integer_1.parseIntegerString)(t.minPartialAmount),
|
|
58
|
+
maxPartialAmount: (0, integer_1.parseIntegerString)(t.maxPartialAmount),
|
|
59
|
+
budget: (0, integer_1.parseIntegerString)(t.constraintBudget),
|
|
59
60
|
}));
|
|
60
61
|
}
|
|
61
62
|
function convertGiveTokens(tokens) {
|
|
@@ -64,7 +65,7 @@ function convertGiveTokens(tokens) {
|
|
|
64
65
|
return tokens.map(t => ({
|
|
65
66
|
inputToken: t.inputTokenAddress,
|
|
66
67
|
giveToken: t.giveTokenAddress,
|
|
67
|
-
numerator:
|
|
68
|
+
numerator: (0, integer_1.parseIntegerString)(t.numerator),
|
|
68
69
|
denominator: Number(t.denominator),
|
|
69
70
|
}));
|
|
70
71
|
}
|
|
@@ -76,7 +77,7 @@ function convertTakeTokens(tokens) {
|
|
|
76
77
|
giveToken: t.fromTokenAddress,
|
|
77
78
|
takeTokenChain: t.takeTokenChainId,
|
|
78
79
|
takeToken: (0, address_1.addressToHex)(realChainId, t.takeTokenAddress),
|
|
79
|
-
numerator:
|
|
80
|
+
numerator: (0, integer_1.parseIntegerString)(t.numerator),
|
|
80
81
|
denominator: Number(t.denominator),
|
|
81
82
|
};
|
|
82
83
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evm-intent-id.js","sourceRoot":"","sources":["../../../src/helpers/evm-intent-id.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"evm-intent-id.js","sourceRoot":"","sources":["../../../src/helpers/evm-intent-id.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ function resolveWrappedTokenAddress(tokenAddress, realChainId) {
|
|
|
19
19
|
if (!(0, address_1.isNativeToken)(tokenAddress, realChainId)) {
|
|
20
20
|
return tokenAddress;
|
|
21
21
|
}
|
|
22
|
-
if (realChainId === enums_1.
|
|
22
|
+
if ((0, address_1.getChainEngine)(realChainId) === enums_1.ChainEngine.Solana) {
|
|
23
23
|
return programs_1.SPL_NATIVE_MINT;
|
|
24
24
|
}
|
|
25
25
|
const wethAddresses = evm_1.WETH_CONTRACTS[realChainId] ?? evm_1.WETH_CONTRACTS[enums_1.ChainId.Wildcard];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evm-token.js","sourceRoot":"","sources":["../../../src/helpers/evm-token.ts"],"names":[],"mappings":";;;AAcA,gEAaC;AA3BD,2CAAmD;AACnD,4DAAgE;AAChE,
|
|
1
|
+
{"version":3,"file":"evm-token.js","sourceRoot":"","sources":["../../../src/helpers/evm-token.ts"],"names":[],"mappings":";;;AAcA,gEAaC;AA3BD,2CAAmD;AACnD,4DAAgE;AAChE,0CAAsD;AACtD,uCAA0D;AAE1D,mEAAmE;AACnE,sCAAsC;AACtC,qCAA0C;AAAjC,wGAAA,aAAa,OAAA;AAEtB,kGAAkG;AAClG,iEAAiE;AACjE,6DAA6D;AAC7D,wDAAwD;AACxD,iDAAiD;AACjD,SAAgB,0BAA0B,CACtC,YAAoB,EACpB,WAAoB;IAEpB,IAAI,CAAC,IAAA,uBAAa,EAAC,YAAY,EAAE,WAAW,CAAC,EAAE,CAAC;QAC5C,OAAO,YAAY,CAAC;IACxB,CAAC;IACD,IAAI,IAAA,wBAAc,EAAC,WAAW,CAAC,KAAK,mBAAW,CAAC,MAAM,EAAE,CAAC;QACrD,OAAO,0BAAe,CAAC;IAC3B,CAAC;IACD,MAAM,aAAa,GAAG,oBAAc,CAAC,WAAW,CAAC,IAAI,oBAAc,CAAC,eAAO,CAAC,QAAQ,CAAC,CAAC;IACtF,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACnE,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -4,6 +4,7 @@ exports.sumTradeAmounts = sumTradeAmounts;
|
|
|
4
4
|
const types_1 = require("../types");
|
|
5
5
|
const address_1 = require("./address");
|
|
6
6
|
const evm_token_1 = require("./evm-token");
|
|
7
|
+
const integer_1 = require("./integer");
|
|
7
8
|
// Sums `response.trades[i].srcChainTokenIn.amount` over trades whose input
|
|
8
9
|
// token resolves to the given address. Returns `skip` only when the response
|
|
9
10
|
// has fewer trades than the request (a separate Violation is already raised
|
|
@@ -37,7 +38,7 @@ function sumTradeAmounts(trades, tokenAddress, realChainId, responseTrades) {
|
|
|
37
38
|
}
|
|
38
39
|
const responseAmount = responseTrade.srcChainTokenIn.amount;
|
|
39
40
|
try {
|
|
40
|
-
sum +=
|
|
41
|
+
sum += (0, integer_1.parseIntegerString)(responseAmount);
|
|
41
42
|
}
|
|
42
43
|
catch {
|
|
43
44
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evm-trade-amounts.js","sourceRoot":"","sources":["../../../src/helpers/evm-trade-amounts.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"evm-trade-amounts.js","sourceRoot":"","sources":["../../../src/helpers/evm-trade-amounts.ts"],"names":[],"mappings":";;AA2BA,0CAkDC;AA7ED,oCAMkB;AAClB,uCAA6C;AAC7C,2CAAyD;AACzD,uCAA+C;AAO/C,2EAA2E;AAC3E,6EAA6E;AAC7E,4EAA4E;AAC5E,6EAA6E;AAC7E,EAAE;AACF,8EAA8E;AAC9E,4EAA4E;AAC5E,qEAAqE;AACrE,6EAA6E;AAC7E,6EAA6E;AAC7E,+CAA+C;AAC/C,SAAgB,eAAe,CAC3B,MAAsB,EACtB,YAAoB,EACpB,WAAoB,EACpB,cAA6C;IAE7C,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,6FAA6F;IAC7F,MAAM,aAAa,GAAG,IAAA,sCAA0B,EAAC,YAAY,EAAE,WAAW,CAAC,IAAI,YAAY,CAAC;IAC5F,MAAM,UAAU,GAAG,IAAA,0BAAgB,EAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAEhE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,kBAAkB,GAAG,IAAA,sCAA0B,EAAC,KAAK,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;QAC1F,MAAM,oBAAoB,GAAG,IAAA,0BAAgB,EACzC,WAAW,EAAE,kBAAkB,IAAI,KAAK,CAAC,eAAe,CAC3D,CAAC;QACF,IAAI,oBAAoB,KAAK,UAAU,EAAE,CAAC;YACtC,SAAS;QACb,CAAC;QAED,UAAU,GAAG,IAAI,CAAC;QAClB,MAAM,aAAa,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;QACxC,qEAAqE;QACrE,uBAAuB;QACvB,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC1B,CAAC;QAED,MAAM,cAAc,GAAG,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC;QAC5D,IAAI,CAAC;YACD,GAAG,IAAI,IAAA,4BAAkB,EAAC,cAAc,CAAC,CAAC;QAC9C,CAAC;QAAC,MAAM,CAAC;YACL,OAAO;gBACH,UAAU,EAAE,CAAC;wBACT,IAAI,EAAE,qBAAa,CAAC,kBAAkB;wBACtC,OAAO,EACH,gEAAgE;wBACpE,IAAI,EAAE,mBAAmB,CAAC,0BAA0B;wBACpD,MAAM,EAAE,cAAc;qBACzB,CAAC;aACL,CAAC;QACN,CAAC;IACL,CAAC;IAED,oDAAoD;IACpD,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;IAEpC,OAAO,EAAE,GAAG,EAAE,CAAC;AACnB,CAAC"}
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Helpers that derive the user-controlled
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
// the Solana
|
|
8
|
-
//
|
|
9
|
-
// request
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
// `undefined` and the caller skips the check.
|
|
2
|
+
// Helpers that derive the user-controlled delegate value from request trades.
|
|
3
|
+
// When a chain has a configured solver executor, intent.srcAllowedSender is
|
|
4
|
+
// hardcoded to that executor. Otherwise the API uses the first request
|
|
5
|
+
// srcAllowedSender as the selected delegate. The same selected delegate also
|
|
6
|
+
// appears in scoped action fields such as EVM Sign712MetaMaskCaveats
|
|
7
|
+
// data.message.delegate and the Solana SignTransaction feePayer.
|
|
8
|
+
//
|
|
9
|
+
// Without a request-side value the API substitutes its own per-chain
|
|
10
|
+
// delegateAddress from config; we have no whitelist for that fallback, so
|
|
11
|
+
// these helpers return undefined and the caller skips the check.
|
|
13
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
13
|
exports.hasSolverExecutorOverride = hasSolverExecutorOverride;
|
|
15
14
|
exports.getExpectedIntentDelegate = getExpectedIntentDelegate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expected-delegate.js","sourceRoot":"","sources":["../../../src/helpers/expected-delegate.ts"],"names":[],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"expected-delegate.js","sourceRoot":"","sources":["../../../src/helpers/expected-delegate.ts"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,4EAA4E;AAC5E,uEAAuE;AACvE,6EAA6E;AAC7E,qEAAqE;AACrE,iEAAiE;AACjE,EAAE;AACF,qEAAqE;AACrE,0EAA0E;AAC1E,iEAAiE;;AAQjE,8DAKC;AAMD,8DAMC;AAMD,sEAaC;AAtCD,wEAAwE;AACxE,iCAAiC;AACjC,SAAgB,yBAAyB,CACrC,uBAAwC,EACxC,OAAgB;IAEhB,OAAO,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/D,CAAC;AAED,iEAAiE;AACjE,sEAAsE;AACtE,uEAAuE;AACvE,oDAAoD;AACpD,SAAgB,yBAAyB,CACrC,MAA+B;IAE/B,OAAO,MAAM;SACR,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;SAC5B,IAAI,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;AACnD,CAAC;AAED,0EAA0E;AAC1E,uEAAuE;AACvE,uEAAuE;AACvE,yCAAyC;AACzC,SAAgB,6BAA6B,CACzC,MAA+B,EAC/B,kBAA0B;IAE1B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,IACI,KAAK,CAAC,UAAU,KAAK,kBAAkB;eACpC,KAAK,CAAC,gBAAgB,KAAK,SAAS,EACzC,CAAC;YACC,OAAO,KAAK,CAAC,gBAAgB,CAAC;QAClC,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.extractGasCompensationGroups = extractGasCompensationGroups;
|
|
4
4
|
const address_1 = require("./address");
|
|
5
5
|
const subscription_to_chain_id_1 = require("../whitelists/subscription-to-chain-id");
|
|
6
|
+
const request_1 = require("../types/request");
|
|
6
7
|
// Groups `gasCompensationInfo` entries from request.preHooks by
|
|
7
8
|
// (chainId, tokenAddress, sender). One compensation hook per
|
|
8
9
|
// unique group is expected to be appended to response.preHooks.
|
|
@@ -12,6 +13,8 @@ function extractGasCompensationGroups(request) {
|
|
|
12
13
|
const seen = new Set();
|
|
13
14
|
const groups = [];
|
|
14
15
|
for (const hook of request.preHooks ?? []) {
|
|
16
|
+
if (!(0, request_1.isRequestHookV2)(hook))
|
|
17
|
+
continue;
|
|
15
18
|
const info = hook.gasCompensationInfo;
|
|
16
19
|
if (!info)
|
|
17
20
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gas-compensation.js","sourceRoot":"","sources":["../../../src/helpers/gas-compensation.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"gas-compensation.js","sourceRoot":"","sources":["../../../src/helpers/gas-compensation.ts"],"names":[],"mappings":";;AAkBA,oEA+BC;AA/CD,uCAA6C;AAC7C,qFAAwE;AACxE,8CAAmD;AASnD,gEAAgE;AAChE,6DAA6D;AAC7D,gEAAgE;AAChE,+EAA+E;AAC/E,uDAAuD;AACvD,SAAgB,4BAA4B,CACxC,OAA8B;IAE9B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QACxC,IAAI,CAAC,IAAA,yBAAe,EAAC,IAAI,CAAC;YAAE,SAAS;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACtC,IAAI,CAAC,IAAI;YAAE,SAAS;QAEpB,MAAM,WAAW,GAAG,IAAA,yCAAc,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,WAAW,KAAK,SAAS;YAAE,SAAS;QAExC,MAAM,GAAG,GAAG,GAAG,WAAW,EAAE;cACtB,IAAI,IAAA,0BAAgB,EAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE;cACtD,IAAI,IAAA,0BAAgB,EAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAEvD,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAE5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEd,MAAM,CAAC,IAAI,CAAC;YACR,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW;YACX,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;SACtB,CAAC,CAAC;IACP,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC"}
|
package/dist/cjs/helpers/hex.js
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.isEmptyHex = isEmptyHex;
|
|
4
4
|
exports.hexEquals = hexEquals;
|
|
5
|
+
exports.isHexByteString = isHexByteString;
|
|
6
|
+
exports.isHexString = isHexString;
|
|
7
|
+
exports.isNonEmptyHexString = isNonEmptyHexString;
|
|
8
|
+
exports.getHexByteLength = getHexByteLength;
|
|
9
|
+
exports.getHexPairByteLength = getHexPairByteLength;
|
|
10
|
+
exports.normalizeHexByteString = normalizeHexByteString;
|
|
5
11
|
const viem_1 = require("viem");
|
|
6
12
|
// Treats undefined, "0x" and `zeroHash` (`0x000...0`) as the same empty value.
|
|
7
13
|
function isEmptyHex(value) {
|
|
@@ -21,4 +27,33 @@ function hexEquals(a, b) {
|
|
|
21
27
|
return false;
|
|
22
28
|
return a.toLowerCase() === b.toLowerCase();
|
|
23
29
|
}
|
|
30
|
+
function isHexByteString(value) {
|
|
31
|
+
return /^0x(?:[0-9a-f]{2})*$/iu.test(value);
|
|
32
|
+
}
|
|
33
|
+
function isHexString(value) {
|
|
34
|
+
return /^0x[0-9a-f]*$/iu.test(value);
|
|
35
|
+
}
|
|
36
|
+
function isNonEmptyHexString(value) {
|
|
37
|
+
return /^0x[0-9a-f]+$/iu.test(value);
|
|
38
|
+
}
|
|
39
|
+
function getHexByteLength(value) {
|
|
40
|
+
if (!isHexByteString(value))
|
|
41
|
+
return undefined;
|
|
42
|
+
const hexPrefixLength = 2;
|
|
43
|
+
const hexCharsPerByte = 2;
|
|
44
|
+
return (value.length - hexPrefixLength) / hexCharsPerByte;
|
|
45
|
+
}
|
|
46
|
+
function getHexPairByteLength(value) {
|
|
47
|
+
if (!isHexString(value))
|
|
48
|
+
return undefined;
|
|
49
|
+
const hexPrefixLength = 2;
|
|
50
|
+
const hexCharsPerByte = 2;
|
|
51
|
+
return Math.floor((value.length - hexPrefixLength) / hexCharsPerByte);
|
|
52
|
+
}
|
|
53
|
+
function normalizeHexByteString(value) {
|
|
54
|
+
const hexPrefixLength = 2;
|
|
55
|
+
const hexBody = value.slice(hexPrefixLength);
|
|
56
|
+
const normalizedBody = hexBody.length % 2 === 0 ? hexBody : `0${hexBody}`;
|
|
57
|
+
return `0x${normalizedBody}`;
|
|
58
|
+
}
|
|
24
59
|
//# sourceMappingURL=hex.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hex.js","sourceRoot":"","sources":["../../../src/helpers/hex.ts"],"names":[],"mappings":";;AAGA,gCAIC;AAKD,8BAUC;
|
|
1
|
+
{"version":3,"file":"hex.js","sourceRoot":"","sources":["../../../src/helpers/hex.ts"],"names":[],"mappings":";;AAGA,gCAIC;AAKD,8BAUC;AAED,0CAEC;AAED,kCAEC;AAED,kDAEC;AAED,4CAMC;AAED,oDAMC;AAED,wDAKC;AAzDD,+BAAgC;AAEhC,+EAA+E;AAC/E,SAAgB,UAAU,CAAC,KAAyB;IAChD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACvC,OAAO,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,eAAQ,CAAC;AAC1D,CAAC;AAED,4EAA4E;AAC5E,8EAA8E;AAC9E,yDAAyD;AACzD,SAAgB,SAAS,CACrB,CAAqB,EACrB,CAAqB;IAErB,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAEhD,kEAAkE;IAClE,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAErD,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAC/C,CAAC;AAED,SAAgB,eAAe,CAAC,KAAa;IACzC,OAAO,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,SAAgB,WAAW,CAAC,KAAa;IACrC,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,SAAgB,mBAAmB,CAAC,KAAa;IAC7C,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,SAAgB,gBAAgB,CAAC,KAAa;IAC1C,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAE9C,MAAM,eAAe,GAAG,CAAC,CAAC;IAC1B,MAAM,eAAe,GAAG,CAAC,CAAC;IAC1B,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,eAAe,CAAC,GAAG,eAAe,CAAC;AAC9D,CAAC;AAED,SAAgB,oBAAoB,CAAC,KAAa;IAC9C,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAE1C,MAAM,eAAe,GAAG,CAAC,CAAC;IAC1B,MAAM,eAAe,GAAG,CAAC,CAAC;IAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,eAAe,CAAC,GAAG,eAAe,CAAC,CAAC;AAC1E,CAAC;AAED,SAAgB,sBAAsB,CAAC,KAAa;IAChD,MAAM,eAAe,GAAG,CAAC,CAAC;IAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC7C,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;IAC1E,OAAO,KAAK,cAAc,EAAE,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseIntegerString = parseIntegerString;
|
|
4
|
+
function parseIntegerString(value) {
|
|
5
|
+
if (value.length === 0 || value.trim() !== value) {
|
|
6
|
+
throw new Error(`Integer string is empty or contains surrounding whitespace: "${value}"`);
|
|
7
|
+
}
|
|
8
|
+
return BigInt(value);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=integer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integer.js","sourceRoot":"","sources":["../../../src/helpers/integer.ts"],"names":[],"mappings":";;AAAA,gDAKC;AALD,SAAgB,kBAAkB,CAAC,KAAa;IAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,gEAAgE,KAAK,GAAG,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -4,8 +4,10 @@ exports.PlaceholderResolutionErrorReason = exports.HookMode = exports.SOLANA_DEF
|
|
|
4
4
|
exports.encodePlaceholderAmount = encodePlaceholderAmount;
|
|
5
5
|
exports.computeCumulativeTradeAmount = computeCumulativeTradeAmount;
|
|
6
6
|
exports.resolveEagerPlaceholders = resolveEagerPlaceholders;
|
|
7
|
+
exports.resolveEagerValuePlaceholders = resolveEagerValuePlaceholders;
|
|
7
8
|
const enums_1 = require("../types/enums");
|
|
8
9
|
const address_1 = require("./address");
|
|
10
|
+
const integer_1 = require("./integer");
|
|
9
11
|
const MIN_PLACEHOLDER_BYTE_COUNT = 1;
|
|
10
12
|
const MAX_PLACEHOLDER_BYTE_COUNT = 32;
|
|
11
13
|
exports.EVM_DEFAULT_PLACEHOLDER_BYTE_COUNT = MAX_PLACEHOLDER_BYTE_COUNT;
|
|
@@ -22,7 +24,8 @@ var PlaceholderResolutionErrorReason;
|
|
|
22
24
|
PlaceholderResolutionErrorReason[PlaceholderResolutionErrorReason["Overflow"] = 2] = "Overflow";
|
|
23
25
|
PlaceholderResolutionErrorReason[PlaceholderResolutionErrorReason["InvalidByteCount"] = 3] = "InvalidByteCount";
|
|
24
26
|
PlaceholderResolutionErrorReason[PlaceholderResolutionErrorReason["InvalidAdditionalAmount"] = 4] = "InvalidAdditionalAmount";
|
|
25
|
-
PlaceholderResolutionErrorReason[PlaceholderResolutionErrorReason["
|
|
27
|
+
PlaceholderResolutionErrorReason[PlaceholderResolutionErrorReason["InvalidTradeAmount"] = 5] = "InvalidTradeAmount";
|
|
28
|
+
PlaceholderResolutionErrorReason[PlaceholderResolutionErrorReason["NoMatchingTradeOrAdditional"] = 6] = "NoMatchingTradeOrAdditional";
|
|
26
29
|
})(PlaceholderResolutionErrorReason || (exports.PlaceholderResolutionErrorReason = PlaceholderResolutionErrorReason = {}));
|
|
27
30
|
// Encodes a non-negative integer as a zero-padded hex string (no "0x" prefix),
|
|
28
31
|
// fitting exactly `byteCount` bytes, using the chain engine's endianness.
|
|
@@ -87,7 +90,7 @@ function computeCumulativeTradeAmount(trades, mode, chainId, tokenAddress, addre
|
|
|
87
90
|
const amount = mode === HookMode.PreHooks
|
|
88
91
|
? trade.srcChainTokenIn.amount
|
|
89
92
|
: trade.dstChainTokenOut.amount;
|
|
90
|
-
sum +=
|
|
93
|
+
sum += (0, integer_1.parseIntegerString)(amount);
|
|
91
94
|
matchCount++;
|
|
92
95
|
}
|
|
93
96
|
return { cumulative: sum, matchCount };
|
|
@@ -121,7 +124,7 @@ function resolveEagerPlaceholders(data, hookChainId, placeholders, trades, mode)
|
|
|
121
124
|
let additional = 0n;
|
|
122
125
|
if (placeholder.additionalAmount !== undefined) {
|
|
123
126
|
try {
|
|
124
|
-
additional =
|
|
127
|
+
additional = (0, integer_1.parseIntegerString)(placeholder.additionalAmount);
|
|
125
128
|
}
|
|
126
129
|
catch (error) {
|
|
127
130
|
errors.push({
|
|
@@ -132,7 +135,19 @@ function resolveEagerPlaceholders(data, hookChainId, placeholders, trades, mode)
|
|
|
132
135
|
continue;
|
|
133
136
|
}
|
|
134
137
|
}
|
|
135
|
-
|
|
138
|
+
let cumulative;
|
|
139
|
+
let matchCount;
|
|
140
|
+
try {
|
|
141
|
+
({ cumulative, matchCount } = computeCumulativeTradeAmount(trades, mode, hookChainId, placeholder.tokenAddress, placeholder.address));
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
errors.push({
|
|
145
|
+
nameVariable: placeholder.nameVariable,
|
|
146
|
+
reason: PlaceholderResolutionErrorReason.InvalidTradeAmount,
|
|
147
|
+
details: error,
|
|
148
|
+
});
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
136
151
|
const expectedAmount = cumulative + additional;
|
|
137
152
|
const nameEscaped = escapeRegex(placeholder.nameVariable);
|
|
138
153
|
const markerRegex = new RegExp(`\\{${nameEscaped}(?:\\.(\\d+))?\\}`, "g");
|
|
@@ -168,6 +183,86 @@ function resolveEagerPlaceholders(data, hookChainId, placeholders, trades, mode)
|
|
|
168
183
|
}
|
|
169
184
|
return { resolved: result, errors };
|
|
170
185
|
}
|
|
186
|
+
// Applies eager-placeholder substitution to an EVM value string. Value is a
|
|
187
|
+
// decimal integer, so markers are replaced with the decimal resolved amount
|
|
188
|
+
// instead of ABI-width hex bytes. Deferred markers remain untouched.
|
|
189
|
+
function resolveEagerValuePlaceholders(value, hookChainId, placeholders, trades, mode) {
|
|
190
|
+
let result = value;
|
|
191
|
+
const errors = [];
|
|
192
|
+
for (const placeholder of placeholders) {
|
|
193
|
+
if (placeholder.type === enums_1.PlaceholderType.Deferred)
|
|
194
|
+
continue;
|
|
195
|
+
const resolved = resolveSingleValuePlaceholder(placeholder, hookChainId, trades, mode);
|
|
196
|
+
if (!resolved.ok) {
|
|
197
|
+
errors.push(resolved.error);
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
const nameEscaped = escapeRegex(placeholder.nameVariable);
|
|
201
|
+
const markerRegex = new RegExp(`\\{${nameEscaped}(?:\\.(\\d+))?\\}`, "g");
|
|
202
|
+
if (resolved.matchCount === 0
|
|
203
|
+
&& placeholder.additionalAmount === undefined
|
|
204
|
+
&& markerRegex.test(result)) {
|
|
205
|
+
errors.push({
|
|
206
|
+
nameVariable: placeholder.nameVariable,
|
|
207
|
+
reason: PlaceholderResolutionErrorReason.NoMatchingTradeOrAdditional,
|
|
208
|
+
});
|
|
209
|
+
markerRegex.lastIndex = 0;
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
result = result.replace(markerRegex, resolved.amount.toString());
|
|
213
|
+
}
|
|
214
|
+
return { resolved: result, errors };
|
|
215
|
+
}
|
|
216
|
+
function resolveSingleValuePlaceholder(placeholder, hookChainId, trades, mode) {
|
|
217
|
+
if (placeholder.tokenAddress === undefined || placeholder.address === undefined) {
|
|
218
|
+
return {
|
|
219
|
+
ok: false,
|
|
220
|
+
error: {
|
|
221
|
+
nameVariable: placeholder.nameVariable,
|
|
222
|
+
reason: PlaceholderResolutionErrorReason.MissingTokenOrAddress,
|
|
223
|
+
},
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
const additional = parseAdditionalAmount(placeholder);
|
|
227
|
+
if (!additional.ok)
|
|
228
|
+
return additional;
|
|
229
|
+
try {
|
|
230
|
+
const { cumulative, matchCount } = computeCumulativeTradeAmount(trades, mode, hookChainId, placeholder.tokenAddress, placeholder.address);
|
|
231
|
+
return { ok: true, amount: cumulative + additional.amount, matchCount };
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
return {
|
|
235
|
+
ok: false,
|
|
236
|
+
error: {
|
|
237
|
+
nameVariable: placeholder.nameVariable,
|
|
238
|
+
reason: PlaceholderResolutionErrorReason.InvalidTradeAmount,
|
|
239
|
+
details: error,
|
|
240
|
+
},
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
function parseAdditionalAmount(placeholder) {
|
|
245
|
+
if (placeholder.additionalAmount === undefined) {
|
|
246
|
+
return { ok: true, amount: 0n, matchCount: 0 };
|
|
247
|
+
}
|
|
248
|
+
try {
|
|
249
|
+
return {
|
|
250
|
+
ok: true,
|
|
251
|
+
amount: (0, integer_1.parseIntegerString)(placeholder.additionalAmount),
|
|
252
|
+
matchCount: 0,
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
catch (error) {
|
|
256
|
+
return {
|
|
257
|
+
ok: false,
|
|
258
|
+
error: {
|
|
259
|
+
nameVariable: placeholder.nameVariable,
|
|
260
|
+
reason: PlaceholderResolutionErrorReason.InvalidAdditionalAmount,
|
|
261
|
+
details: error,
|
|
262
|
+
},
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
}
|
|
171
266
|
function escapeRegex(s) {
|
|
172
267
|
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
173
268
|
}
|