@aeternity/aepp-sdk 13.2.2 → 13.3.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/LICENSE +1 -1
- package/README.md +1 -1
- package/bin/aesophia_cli +0 -0
- package/bin/aesophia_cli_8 +0 -0
- package/dist/aepp-sdk.browser-script.js +1 -1
- package/dist/aepp-sdk.browser-script.js.map +1 -1
- package/dist/aepp-sdk.browser.js +1 -1
- package/dist/aepp-sdk.browser.js.map +1 -1
- package/dist/aepp-sdk.js +9171 -7086
- package/dist/aepp-sdk.js.map +1 -1
- package/es/AeSdk.d.ts +3 -0
- package/es/AeSdk.mjs +12 -12
- package/es/AeSdk.mjs.map +1 -1
- package/es/AeSdkAepp.d.ts +0 -1
- package/es/AeSdkAepp.mjs +12 -16
- package/es/AeSdkAepp.mjs.map +1 -1
- package/es/AeSdkBase.d.ts +61 -6
- package/es/AeSdkBase.mjs +150 -69
- package/es/AeSdkBase.mjs.map +1 -1
- package/es/AeSdkMethods.d.ts +19 -7
- package/es/AeSdkMethods.mjs +39 -38
- package/es/AeSdkMethods.mjs.map +1 -1
- package/es/AeSdkWallet.mjs +86 -55
- package/es/AeSdkWallet.mjs.map +1 -1
- package/es/Middleware.mjs +31 -27
- package/es/Middleware.mjs.map +1 -1
- package/es/MiddlewareSubscriber.mjs +5 -14
- package/es/MiddlewareSubscriber.mjs.map +1 -1
- package/es/Node.d.ts +10 -2
- package/es/Node.mjs +53 -54
- package/es/Node.mjs.map +1 -1
- package/es/account/Base.d.ts +39 -3
- package/es/account/Base.mjs +35 -1
- package/es/account/Base.mjs.map +1 -1
- package/es/account/Generalized.d.ts +2 -0
- package/es/account/Generalized.mjs +15 -6
- package/es/account/Generalized.mjs.map +1 -1
- package/es/account/Ledger.d.ts +2 -0
- package/es/account/Ledger.mjs +14 -5
- package/es/account/Ledger.mjs.map +1 -1
- package/es/account/LedgerFactory.mjs +4 -6
- package/es/account/LedgerFactory.mjs.map +1 -1
- package/es/account/Memory.d.ts +15 -4
- package/es/account/Memory.mjs +96 -31
- package/es/account/Memory.mjs.map +1 -1
- package/es/account/Rpc.d.ts +16 -5
- package/es/account/Rpc.mjs +94 -21
- package/es/account/Rpc.mjs.map +1 -1
- package/es/aens.d.ts +17 -44
- package/es/aens.mjs +32 -71
- package/es/aens.mjs.map +1 -1
- package/es/aepp-wallet-communication/connection/Browser.mjs +3 -4
- package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -1
- package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +3 -0
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +7 -5
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -1
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +8 -9
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -1
- package/es/aepp-wallet-communication/rpc/RpcClient.mjs +7 -7
- package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -1
- package/es/aepp-wallet-communication/rpc/types.d.ts +14 -0
- package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -1
- package/es/aepp-wallet-communication/schema.d.ts +2 -0
- package/es/aepp-wallet-communication/schema.mjs +2 -0
- package/es/aepp-wallet-communication/schema.mjs.map +1 -1
- package/es/aepp-wallet-communication/wallet-detector.mjs +4 -5
- package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -1
- package/es/apis/compiler/compiler.mjs.map +1 -1
- package/es/apis/compiler/models/index.d.ts +1 -0
- package/es/apis/compiler/models/index.mjs.map +1 -1
- package/es/apis/compiler/models/mappers.mjs +13 -0
- package/es/apis/compiler/models/mappers.mjs.map +1 -1
- package/es/apis/compiler/models/parameters.mjs.map +1 -1
- package/es/apis/middleware/middleware.d.ts +23 -5
- package/es/apis/middleware/middleware.mjs +114 -18
- package/es/apis/middleware/middleware.mjs.map +1 -1
- package/es/apis/middleware/models/index.d.ts +164 -15
- package/es/apis/middleware/models/index.mjs +53 -3
- package/es/apis/middleware/models/index.mjs.map +1 -1
- package/es/apis/middleware/models/mappers.d.ts +8 -1
- package/es/apis/middleware/models/mappers.mjs +376 -3
- package/es/apis/middleware/models/mappers.mjs.map +1 -1
- package/es/apis/middleware/models/parameters.d.ts +6 -3
- package/es/apis/middleware/models/parameters.mjs +38 -11
- package/es/apis/middleware/models/parameters.mjs.map +1 -1
- package/es/apis/node/models/index.d.ts +66 -2
- package/es/apis/node/models/index.mjs.map +1 -1
- package/es/apis/node/models/mappers.d.ts +5 -1
- package/es/apis/node/models/mappers.mjs +229 -7
- package/es/apis/node/models/mappers.mjs.map +1 -1
- package/es/apis/node/models/parameters.d.ts +2 -2
- package/es/apis/node/models/parameters.mjs +2 -2
- package/es/apis/node/models/parameters.mjs.map +1 -1
- package/es/apis/node/node.d.ts +24 -3
- package/es/apis/node/node.mjs +135 -3
- package/es/apis/node/node.mjs.map +1 -1
- package/es/chain.d.ts +14 -44
- package/es/chain.mjs +125 -219
- package/es/chain.mjs.map +1 -1
- package/es/channel/Base.d.ts +3 -47
- package/es/channel/Base.mjs +21 -54
- package/es/channel/Base.mjs.map +1 -1
- package/es/channel/Contract.d.ts +16 -25
- package/es/channel/Contract.mjs +39 -63
- package/es/channel/Contract.mjs.map +1 -1
- package/es/channel/Spend.d.ts +0 -8
- package/es/channel/Spend.mjs +17 -29
- package/es/channel/Spend.mjs.map +1 -1
- package/es/channel/handlers.mjs +1 -1
- package/es/channel/handlers.mjs.map +1 -1
- package/es/channel/internal.d.ts +104 -5
- package/es/channel/internal.mjs +26 -34
- package/es/channel/internal.mjs.map +1 -1
- package/es/contract/Contract.d.ts +9 -1
- package/es/contract/Contract.mjs +67 -73
- package/es/contract/Contract.mjs.map +1 -1
- package/es/contract/compiler/Base.d.ts +14 -8
- package/es/contract/compiler/Base.mjs.map +1 -1
- package/es/contract/compiler/Cli.d.ts +5 -9
- package/es/contract/compiler/Cli.mjs +45 -23
- package/es/contract/compiler/Cli.mjs.map +1 -1
- package/es/contract/compiler/Cli8.d.ts +13 -0
- package/es/contract/compiler/Cli8.mjs +22 -0
- package/es/contract/compiler/Cli8.mjs.map +1 -0
- package/es/contract/compiler/Http.d.ts +3 -9
- package/es/contract/compiler/Http.mjs +28 -16
- package/es/contract/compiler/Http.mjs.map +1 -1
- package/es/contract/compiler/HttpNode.d.ts +2 -5
- package/es/contract/compiler/HttpNode.mjs.map +1 -1
- package/es/contract/delegation-signature.d.ts +2 -1
- package/es/contract/delegation-signature.mjs +18 -14
- package/es/contract/delegation-signature.mjs.map +1 -1
- package/es/contract/ga.d.ts +1 -2
- package/es/contract/ga.mjs +23 -25
- package/es/contract/ga.mjs.map +1 -1
- package/es/deprecated.d.ts +38 -0
- package/es/deprecated.mjs +45 -0
- package/es/deprecated.mjs.map +1 -1
- package/es/index-browser.d.ts +10 -5
- package/es/index-browser.mjs +9 -5
- package/es/index-browser.mjs.map +1 -1
- package/es/index.d.ts +1 -0
- package/es/index.mjs +1 -0
- package/es/index.mjs.map +1 -1
- package/es/oracle.d.ts +6 -37
- package/es/oracle.mjs +32 -66
- package/es/oracle.mjs.map +1 -1
- package/es/send-transaction.d.ts +53 -0
- package/es/send-transaction.mjs +109 -0
- package/es/send-transaction.mjs.map +1 -0
- package/es/spend.d.ts +4 -3
- package/es/spend.mjs +6 -1
- package/es/spend.mjs.map +1 -1
- package/es/tx/builder/common.d.ts +29 -0
- package/es/tx/builder/common.mjs +42 -0
- package/es/tx/builder/common.mjs.map +1 -0
- package/es/tx/builder/constants.d.ts +4 -4
- package/es/tx/builder/constants.mjs +6 -15
- package/es/tx/builder/constants.mjs.map +1 -1
- package/es/tx/builder/delegation/index.d.ts +20 -0
- package/es/tx/builder/delegation/index.mjs +24 -0
- package/es/tx/builder/delegation/index.mjs.map +1 -0
- package/es/tx/builder/delegation/schema.d.ts +130 -0
- package/es/tx/builder/delegation/schema.generated.d.ts +141 -0
- package/es/tx/builder/delegation/schema.generated.mjs +2 -0
- package/es/tx/builder/delegation/schema.generated.mjs.map +1 -0
- package/es/tx/builder/delegation/schema.mjs +54 -0
- package/es/tx/builder/delegation/schema.mjs.map +1 -0
- package/es/tx/builder/field-types/abi-version.mjs +8 -11
- package/es/tx/builder/field-types/abi-version.mjs.map +1 -1
- package/es/tx/builder/field-types/address.mjs +1 -4
- package/es/tx/builder/field-types/address.mjs.map +1 -1
- package/es/tx/builder/field-types/coin-amount.d.ts +2 -2
- package/es/tx/builder/field-types/coin-amount.mjs +6 -6
- package/es/tx/builder/field-types/coin-amount.mjs.map +1 -1
- package/es/tx/builder/field-types/ct-version.mjs +3 -4
- package/es/tx/builder/field-types/ct-version.mjs.map +1 -1
- package/es/tx/builder/field-types/entry.mjs +7 -13
- package/es/tx/builder/field-types/entry.mjs.map +1 -1
- package/es/tx/builder/field-types/fee.d.ts +19 -11
- package/es/tx/builder/field-types/fee.mjs +56 -38
- package/es/tx/builder/field-types/fee.mjs.map +1 -1
- package/es/tx/builder/field-types/gas-limit.mjs +13 -15
- package/es/tx/builder/field-types/gas-limit.mjs.map +1 -1
- package/es/tx/builder/field-types/gas-price.d.ts +10 -2
- package/es/tx/builder/field-types/gas-price.mjs +52 -3
- package/es/tx/builder/field-types/gas-price.mjs.map +1 -1
- package/es/tx/builder/field-types/index.d.ts +31 -29
- package/es/tx/builder/field-types/index.mjs +31 -29
- package/es/tx/builder/field-types/index.mjs.map +1 -1
- package/es/tx/builder/field-types/map.mjs +20 -31
- package/es/tx/builder/field-types/map.mjs.map +1 -1
- package/es/tx/builder/field-types/mptree.mjs +14 -29
- package/es/tx/builder/field-types/mptree.mjs.map +1 -1
- package/es/tx/builder/field-types/name-fee.d.ts +1 -1
- package/es/tx/builder/field-types/name-fee.mjs +1 -1
- package/es/tx/builder/field-types/name-fee.mjs.map +1 -1
- package/es/tx/builder/field-types/nonce.d.ts +1 -0
- package/es/tx/builder/field-types/nonce.mjs +2 -0
- package/es/tx/builder/field-types/nonce.mjs.map +1 -1
- package/es/tx/builder/field-types/pointers.mjs +4 -7
- package/es/tx/builder/field-types/pointers.mjs.map +1 -1
- package/es/tx/builder/field-types/pointers2.d.ts +23 -0
- package/es/tx/builder/field-types/pointers2.mjs +65 -0
- package/es/tx/builder/field-types/pointers2.mjs.map +1 -0
- package/es/tx/builder/field-types/query-fee.d.ts +19 -0
- package/es/tx/builder/field-types/query-fee.mjs +20 -0
- package/es/tx/builder/field-types/query-fee.mjs.map +1 -0
- package/es/tx/builder/field-types/ttl.d.ts +9 -1
- package/es/tx/builder/field-types/ttl.mjs +19 -8
- package/es/tx/builder/field-types/ttl.mjs.map +1 -1
- package/es/tx/builder/field-types/with-default.d.ts +7 -0
- package/es/tx/builder/field-types/with-default.mjs +9 -0
- package/es/tx/builder/field-types/with-default.mjs.map +1 -0
- package/es/tx/builder/field-types/with-formatting.d.ts +7 -0
- package/es/tx/builder/field-types/with-formatting.mjs +9 -0
- package/es/tx/builder/field-types/with-formatting.mjs.map +1 -0
- package/es/tx/builder/field-types/wrapped.mjs +6 -8
- package/es/tx/builder/field-types/wrapped.mjs.map +1 -1
- package/es/tx/builder/helpers.d.ts +2 -2
- package/es/tx/builder/helpers.mjs +12 -21
- package/es/tx/builder/helpers.mjs.map +1 -1
- package/es/tx/builder/index.d.ts +17 -10
- package/es/tx/builder/index.mjs +39 -65
- package/es/tx/builder/index.mjs.map +1 -1
- package/es/tx/builder/schema.d.ts +478 -257
- package/es/tx/builder/schema.generated.d.ts +39 -3
- package/es/tx/builder/schema.generated.mjs.map +1 -1
- package/es/tx/builder/schema.mjs +48 -36
- package/es/tx/builder/schema.mjs.map +1 -1
- package/es/tx/execution-cost.d.ts +6 -5
- package/es/tx/execution-cost.mjs +16 -17
- package/es/tx/execution-cost.mjs.map +1 -1
- package/es/tx/transaction-signer.mjs +1 -4
- package/es/tx/transaction-signer.mjs.map +1 -1
- package/es/tx/validator.mjs +61 -42
- package/es/tx/validator.mjs.map +1 -1
- package/es/utils/amount-formatter.mjs +15 -22
- package/es/utils/amount-formatter.mjs.map +1 -1
- package/es/utils/autorest.d.ts +2 -3
- package/es/utils/autorest.mjs +40 -24
- package/es/utils/autorest.mjs.map +1 -1
- package/es/utils/bytes.mjs +1 -2
- package/es/utils/bytes.mjs.map +1 -1
- package/es/utils/crypto.d.ts +8 -4
- package/es/utils/crypto.mjs +17 -13
- package/es/utils/crypto.mjs.map +1 -1
- package/es/utils/errors.d.ts +6 -0
- package/es/utils/errors.mjs +12 -6
- package/es/utils/errors.mjs.map +1 -1
- package/es/utils/hd-wallet.d.ts +2 -0
- package/es/utils/hd-wallet.mjs +6 -5
- package/es/utils/hd-wallet.mjs.map +1 -1
- package/es/utils/json-big.mjs +2 -10
- package/es/utils/json-big.mjs.map +1 -1
- package/es/utils/jwt.d.ts +53 -0
- package/es/utils/jwt.mjs +120 -0
- package/es/utils/jwt.mjs.map +1 -0
- package/es/utils/keystore.d.ts +6 -2
- package/es/utils/keystore.mjs +8 -16
- package/es/utils/keystore.mjs.map +1 -1
- package/es/utils/typed-data.mjs +1 -0
- package/es/utils/typed-data.mjs.map +1 -1
- package/es/utils/wrap-proxy.d.ts +2 -0
- package/es/utils/wrap-proxy.mjs +15 -0
- package/es/utils/wrap-proxy.mjs.map +1 -0
- package/package.json +57 -51
- package/src/AeSdk.ts +3 -0
- package/src/AeSdkAepp.ts +0 -1
- package/src/AeSdkBase.ts +97 -10
- package/src/AeSdkMethods.ts +37 -33
- package/src/AeSdkWallet.ts +22 -3
- package/src/Middleware.ts +16 -8
- package/src/MiddlewareSubscriber.ts +1 -1
- package/src/Node.ts +37 -18
- package/src/account/Base.ts +62 -3
- package/src/account/Generalized.ts +10 -0
- package/src/account/Ledger.ts +10 -0
- package/src/account/Memory.ts +83 -9
- package/src/account/Rpc.ts +69 -6
- package/src/aens.ts +35 -56
- package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +3 -0
- package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +2 -2
- package/src/aepp-wallet-communication/rpc/RpcClient.ts +4 -2
- package/src/aepp-wallet-communication/rpc/types.ts +13 -0
- package/src/aepp-wallet-communication/schema.ts +2 -0
- package/src/apis/compiler/compiler.ts +93 -93
- package/src/apis/compiler/models/index.ts +1 -0
- package/src/apis/compiler/models/mappers.ts +178 -165
- package/src/apis/compiler/models/parameters.ts +18 -18
- package/src/apis/middleware/middleware.ts +462 -341
- package/src/apis/middleware/models/index.ts +258 -56
- package/src/apis/middleware/models/mappers.ts +2357 -1919
- package/src/apis/middleware/models/parameters.ts +172 -142
- package/src/apis/node/models/index.ts +79 -2
- package/src/apis/node/models/mappers.ts +1529 -1302
- package/src/apis/node/models/parameters.ts +51 -51
- package/src/apis/node/node.ts +420 -275
- package/src/chain.ts +42 -128
- package/src/channel/Base.ts +14 -47
- package/src/channel/Contract.ts +18 -26
- package/src/channel/Spend.ts +0 -8
- package/src/channel/internal.ts +115 -13
- package/src/contract/Contract.ts +26 -8
- package/src/contract/compiler/Base.ts +15 -8
- package/src/contract/compiler/Cli.ts +37 -21
- package/src/contract/compiler/Cli8.ts +17 -0
- package/src/contract/compiler/Http.ts +24 -14
- package/src/contract/compiler/HttpNode.ts +2 -2
- package/src/contract/delegation-signature.ts +11 -5
- package/src/contract/ga.ts +4 -3
- package/src/deprecated.ts +36 -0
- package/src/index-browser.ts +14 -7
- package/src/index.ts +1 -0
- package/src/oracle.ts +11 -54
- package/src/send-transaction.ts +136 -0
- package/src/spend.ts +25 -11
- package/src/tx/builder/common.ts +74 -0
- package/src/tx/builder/constants.ts +6 -9
- package/src/tx/builder/delegation/index.ts +28 -0
- package/src/tx/builder/delegation/schema.generated.ts +143 -0
- package/src/tx/builder/delegation/schema.ts +61 -0
- package/src/tx/builder/field-types/coin-amount.ts +3 -2
- package/src/tx/builder/field-types/entry.ts +1 -4
- package/src/tx/builder/field-types/fee.ts +71 -43
- package/src/tx/builder/field-types/gas-limit.ts +4 -4
- package/src/tx/builder/field-types/gas-price.ts +58 -2
- package/src/tx/builder/field-types/index.ts +31 -59
- package/src/tx/builder/field-types/name-fee.ts +1 -1
- package/src/tx/builder/field-types/nonce.ts +7 -1
- package/src/tx/builder/field-types/pointers2.ts +62 -0
- package/src/tx/builder/field-types/query-fee.ts +25 -0
- package/src/tx/builder/field-types/ttl.ts +13 -3
- package/src/tx/builder/field-types/with-default.ts +18 -0
- package/src/tx/builder/field-types/with-formatting.ts +18 -0
- package/src/tx/builder/helpers.ts +2 -2
- package/src/tx/builder/index.ts +42 -59
- package/src/tx/builder/schema.generated.ts +39 -3
- package/src/tx/builder/schema.ts +55 -29
- package/src/tx/execution-cost.ts +6 -5
- package/src/tx/validator.ts +31 -5
- package/src/utils/autorest.ts +36 -27
- package/src/utils/crypto.ts +23 -13
- package/src/utils/errors.ts +10 -0
- package/src/utils/hd-wallet.ts +2 -0
- package/src/utils/jwt.ts +126 -0
- package/src/utils/keystore.ts +6 -2
- package/src/utils/wrap-proxy.ts +24 -0
- package/types-legacy/ts4.2/AeSdk.d.ts +3 -0
- package/types-legacy/ts4.2/AeSdkAepp.d.ts +0 -1
- package/types-legacy/ts4.2/AeSdkBase.d.ts +61 -6
- package/types-legacy/ts4.2/AeSdkMethods.d.ts +19 -7
- package/types-legacy/ts4.2/Node.d.ts +14 -1
- package/types-legacy/ts4.2/account/Base.d.ts +39 -3
- package/types-legacy/ts4.2/account/Generalized.d.ts +2 -0
- package/types-legacy/ts4.2/account/Ledger.d.ts +2 -0
- package/types-legacy/ts4.2/account/Memory.d.ts +15 -4
- package/types-legacy/ts4.2/account/Rpc.d.ts +16 -5
- package/types-legacy/ts4.2/aens.d.ts +17 -44
- package/types-legacy/ts4.2/aepp-wallet-communication/connection/BrowserRuntime.d.ts +3 -0
- package/types-legacy/ts4.2/aepp-wallet-communication/rpc/types.d.ts +14 -0
- package/types-legacy/ts4.2/aepp-wallet-communication/schema.d.ts +2 -0
- package/types-legacy/ts4.2/apis/compiler/models/index.d.ts +1 -0
- package/types-legacy/ts4.2/apis/middleware/middleware.d.ts +23 -5
- package/types-legacy/ts4.2/apis/middleware/models/index.d.ts +164 -15
- package/types-legacy/ts4.2/apis/middleware/models/mappers.d.ts +8 -1
- package/types-legacy/ts4.2/apis/middleware/models/parameters.d.ts +6 -3
- package/types-legacy/ts4.2/apis/node/models/index.d.ts +66 -2
- package/types-legacy/ts4.2/apis/node/models/mappers.d.ts +5 -1
- package/types-legacy/ts4.2/apis/node/models/parameters.d.ts +2 -2
- package/types-legacy/ts4.2/apis/node/node.d.ts +24 -3
- package/types-legacy/ts4.2/chain.d.ts +14 -44
- package/types-legacy/ts4.2/channel/Base.d.ts +3 -47
- package/types-legacy/ts4.2/channel/Contract.d.ts +16 -25
- package/types-legacy/ts4.2/channel/Spend.d.ts +0 -8
- package/types-legacy/ts4.2/channel/internal.d.ts +104 -5
- package/types-legacy/ts4.2/contract/Contract.d.ts +9 -1
- package/types-legacy/ts4.2/contract/compiler/Base.d.ts +14 -8
- package/types-legacy/ts4.2/contract/compiler/Cli.d.ts +5 -9
- package/types-legacy/ts4.2/contract/compiler/Cli8.d.ts +13 -0
- package/types-legacy/ts4.2/contract/compiler/Http.d.ts +3 -9
- package/types-legacy/ts4.2/contract/compiler/HttpNode.d.ts +2 -5
- package/types-legacy/ts4.2/contract/delegation-signature.d.ts +2 -1
- package/types-legacy/ts4.2/contract/ga.d.ts +1 -2
- package/types-legacy/ts4.2/deprecated.d.ts +38 -0
- package/types-legacy/ts4.2/index-browser.d.ts +10 -5
- package/types-legacy/ts4.2/index.d.ts +1 -0
- package/types-legacy/ts4.2/oracle.d.ts +6 -37
- package/types-legacy/ts4.2/send-transaction.d.ts +53 -0
- package/types-legacy/ts4.2/spend.d.ts +4 -3
- package/types-legacy/ts4.2/tx/builder/common.d.ts +32 -0
- package/types-legacy/ts4.2/tx/builder/constants.d.ts +4 -4
- package/types-legacy/ts4.2/tx/builder/delegation/index.d.ts +20 -0
- package/types-legacy/ts4.2/tx/builder/delegation/schema.d.ts +136 -0
- package/types-legacy/ts4.2/tx/builder/delegation/schema.generated.d.ts +141 -0
- package/types-legacy/ts4.2/tx/builder/field-types/coin-amount.d.ts +2 -2
- package/types-legacy/ts4.2/tx/builder/field-types/fee.d.ts +19 -11
- package/types-legacy/ts4.2/tx/builder/field-types/gas-price.d.ts +10 -2
- package/types-legacy/ts4.2/tx/builder/field-types/index.d.ts +31 -29
- package/types-legacy/ts4.2/tx/builder/field-types/name-fee.d.ts +1 -1
- package/types-legacy/ts4.2/tx/builder/field-types/nonce.d.ts +1 -0
- package/types-legacy/ts4.2/tx/builder/field-types/pointers2.d.ts +26 -0
- package/types-legacy/ts4.2/tx/builder/field-types/query-fee.d.ts +19 -0
- package/types-legacy/ts4.2/tx/builder/field-types/ttl.d.ts +9 -1
- package/types-legacy/ts4.2/tx/builder/field-types/with-default.d.ts +7 -0
- package/types-legacy/ts4.2/tx/builder/field-types/with-formatting.d.ts +7 -0
- package/types-legacy/ts4.2/tx/builder/helpers.d.ts +2 -2
- package/types-legacy/ts4.2/tx/builder/index.d.ts +17 -10
- package/types-legacy/ts4.2/tx/builder/schema.d.ts +482 -257
- package/types-legacy/ts4.2/tx/builder/schema.generated.d.ts +39 -3
- package/types-legacy/ts4.2/tx/execution-cost.d.ts +6 -5
- package/types-legacy/ts4.2/utils/autorest.d.ts +2 -3
- package/types-legacy/ts4.2/utils/crypto.d.ts +8 -4
- package/types-legacy/ts4.2/utils/errors.d.ts +6 -0
- package/types-legacy/ts4.2/utils/hd-wallet.d.ts +2 -0
- package/types-legacy/ts4.2/utils/jwt.d.ts +53 -0
- package/types-legacy/ts4.2/utils/keystore.d.ts +6 -2
- package/types-legacy/ts4.2/utils/wrap-proxy.d.ts +2 -0
- package/types-legacy/ts4.5/AeSdk.d.ts +3 -0
- package/types-legacy/ts4.5/AeSdkAepp.d.ts +0 -1
- package/types-legacy/ts4.5/AeSdkBase.d.ts +61 -6
- package/types-legacy/ts4.5/AeSdkMethods.d.ts +19 -7
- package/types-legacy/ts4.5/Node.d.ts +14 -1
- package/types-legacy/ts4.5/account/Base.d.ts +39 -3
- package/types-legacy/ts4.5/account/Generalized.d.ts +2 -0
- package/types-legacy/ts4.5/account/Ledger.d.ts +2 -0
- package/types-legacy/ts4.5/account/Memory.d.ts +15 -4
- package/types-legacy/ts4.5/account/Rpc.d.ts +16 -5
- package/types-legacy/ts4.5/aens.d.ts +17 -44
- package/types-legacy/ts4.5/aepp-wallet-communication/connection/BrowserRuntime.d.ts +3 -0
- package/types-legacy/ts4.5/aepp-wallet-communication/rpc/types.d.ts +14 -0
- package/types-legacy/ts4.5/aepp-wallet-communication/schema.d.ts +2 -0
- package/types-legacy/ts4.5/apis/compiler/models/index.d.ts +1 -0
- package/types-legacy/ts4.5/apis/middleware/middleware.d.ts +23 -5
- package/types-legacy/ts4.5/apis/middleware/models/index.d.ts +164 -15
- package/types-legacy/ts4.5/apis/middleware/models/mappers.d.ts +8 -1
- package/types-legacy/ts4.5/apis/middleware/models/parameters.d.ts +6 -3
- package/types-legacy/ts4.5/apis/node/models/index.d.ts +66 -2
- package/types-legacy/ts4.5/apis/node/models/mappers.d.ts +5 -1
- package/types-legacy/ts4.5/apis/node/models/parameters.d.ts +2 -2
- package/types-legacy/ts4.5/apis/node/node.d.ts +24 -3
- package/types-legacy/ts4.5/chain.d.ts +14 -44
- package/types-legacy/ts4.5/channel/Base.d.ts +3 -47
- package/types-legacy/ts4.5/channel/Contract.d.ts +16 -25
- package/types-legacy/ts4.5/channel/Spend.d.ts +0 -8
- package/types-legacy/ts4.5/channel/internal.d.ts +104 -5
- package/types-legacy/ts4.5/contract/Contract.d.ts +9 -1
- package/types-legacy/ts4.5/contract/compiler/Base.d.ts +14 -8
- package/types-legacy/ts4.5/contract/compiler/Cli.d.ts +5 -9
- package/types-legacy/ts4.5/contract/compiler/Cli8.d.ts +13 -0
- package/types-legacy/ts4.5/contract/compiler/Http.d.ts +3 -9
- package/types-legacy/ts4.5/contract/compiler/HttpNode.d.ts +2 -5
- package/types-legacy/ts4.5/contract/delegation-signature.d.ts +2 -1
- package/types-legacy/ts4.5/contract/ga.d.ts +1 -2
- package/types-legacy/ts4.5/deprecated.d.ts +38 -0
- package/types-legacy/ts4.5/index-browser.d.ts +10 -5
- package/types-legacy/ts4.5/index.d.ts +1 -0
- package/types-legacy/ts4.5/oracle.d.ts +6 -37
- package/types-legacy/ts4.5/send-transaction.d.ts +53 -0
- package/types-legacy/ts4.5/spend.d.ts +4 -3
- package/types-legacy/ts4.5/tx/builder/common.d.ts +32 -0
- package/types-legacy/ts4.5/tx/builder/constants.d.ts +4 -4
- package/types-legacy/ts4.5/tx/builder/delegation/index.d.ts +20 -0
- package/types-legacy/ts4.5/tx/builder/delegation/schema.d.ts +136 -0
- package/types-legacy/ts4.5/tx/builder/delegation/schema.generated.d.ts +141 -0
- package/types-legacy/ts4.5/tx/builder/field-types/coin-amount.d.ts +2 -2
- package/types-legacy/ts4.5/tx/builder/field-types/fee.d.ts +19 -11
- package/types-legacy/ts4.5/tx/builder/field-types/gas-price.d.ts +10 -2
- package/types-legacy/ts4.5/tx/builder/field-types/index.d.ts +31 -29
- package/types-legacy/ts4.5/tx/builder/field-types/name-fee.d.ts +1 -1
- package/types-legacy/ts4.5/tx/builder/field-types/nonce.d.ts +1 -0
- package/types-legacy/ts4.5/tx/builder/field-types/pointers2.d.ts +26 -0
- package/types-legacy/ts4.5/tx/builder/field-types/query-fee.d.ts +19 -0
- package/types-legacy/ts4.5/tx/builder/field-types/ttl.d.ts +9 -1
- package/types-legacy/ts4.5/tx/builder/field-types/with-default.d.ts +7 -0
- package/types-legacy/ts4.5/tx/builder/field-types/with-formatting.d.ts +7 -0
- package/types-legacy/ts4.5/tx/builder/helpers.d.ts +2 -2
- package/types-legacy/ts4.5/tx/builder/index.d.ts +17 -10
- package/types-legacy/ts4.5/tx/builder/schema.d.ts +482 -257
- package/types-legacy/ts4.5/tx/builder/schema.generated.d.ts +39 -3
- package/types-legacy/ts4.5/tx/execution-cost.d.ts +6 -5
- package/types-legacy/ts4.5/utils/autorest.d.ts +2 -3
- package/types-legacy/ts4.5/utils/crypto.d.ts +8 -4
- package/types-legacy/ts4.5/utils/errors.d.ts +6 -0
- package/types-legacy/ts4.5/utils/hd-wallet.d.ts +2 -0
- package/types-legacy/ts4.5/utils/jwt.d.ts +53 -0
- package/types-legacy/ts4.5/utils/keystore.d.ts +6 -2
- package/types-legacy/ts4.5/utils/wrap-proxy.d.ts +2 -0
- package/es/tx/builder/field-types/deposit.d.ts +0 -15
- package/es/tx/builder/field-types/deposit.mjs +0 -18
- package/es/tx/builder/field-types/deposit.mjs.map +0 -1
- package/src/tx/builder/field-types/deposit.ts +0 -23
- package/types-legacy/ts4.2/tx/builder/field-types/deposit.d.ts +0 -15
- package/types-legacy/ts4.5/tx/builder/field-types/deposit.d.ts +0 -15
package/es/tx/validator.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.mjs","names":["RestError","hash","verify","ProtocolToVmAbi","Tag","buildTx","unpackTx","concatBuffers","isAccountNotFoundError","decode","Node","genAggressiveCacheGetResponsesPolicy","UnexpectedTsError","getTransactionSignerAddress","getExecutionCostUsingNode","validators","verifyTransactionInternal","tx","node","parentTxTypes","address","account","height","consensusProtocolVersion","nodeNetworkId","Promise","all","getAccountByPubkey","catch","error","id","balance","nonce","then","acc","getCurrentKeyBlockHeight","getNodeInfo","map","v","flat","verifyTransaction","transaction","nodeNotCached","$host","ignoreVersion","pipeline","clone","additionalPolicies","push","_ref","tag","SignedTx","encodedTx","signatures","length","prefix","_Buffer","from","includes","PayingForTx","join","txBinary","txWithNetworkId","txHashWithNetworkId","message","key","checkedKeys","_ref2","nestedTx","_ref3","ttl","_ref4","cost","_ref5","kind","GaMetaTx","_ref6","_ref7","_ref8","oracleCall","Oracle","OracleRegisterTx","contractCreate","ContractCreateTx","GaAttachTx","contractCall","ContractCallTx","type","protocol","ctVersion","abiVersion","vmVersion","JSON","stringify","_ref9","active","getContract","contractId","_error$response","response","bodyAsText","parse","reason"],"sources":["../../src/tx/validator.ts"],"sourcesContent":["import { RestError } from '@azure/core-rest-pipeline';\nimport { hash, verify } from '../utils/crypto';\nimport { TxUnpacked } from './builder/schema.generated';\nimport { CtVersion, ProtocolToVmAbi } from './builder/field-types/ct-version';\nimport { Tag, ConsensusProtocolVersion } from './builder/constants';\nimport { buildTx, unpackTx } from './builder';\nimport { concatBuffers, isAccountNotFoundError } from '../utils/other';\nimport { Encoded, decode } from '../utils/encoder';\nimport Node, { TransformNodeType } from '../Node';\nimport { Account } from '../apis/node';\nimport { genAggressiveCacheGetResponsesPolicy } from '../utils/autorest';\nimport { UnexpectedTsError } from '../utils/errors';\nimport getTransactionSignerAddress from './transaction-signer';\nimport { getExecutionCostUsingNode } from './execution-cost';\n\nexport interface ValidatorResult {\n message: string;\n key: string;\n checkedKeys: string[];\n}\n\ntype Validator = (\n tx: TxUnpacked,\n options: {\n // TODO: remove after fixing node types\n account: TransformNodeType<Account> & { id: Encoded.AccountAddress };\n nodeNetworkId: string;\n parentTxTypes: Tag[];\n node: Node;\n height: number;\n consensusProtocolVersion: ConsensusProtocolVersion;\n }\n) => ValidatorResult[] | Promise<ValidatorResult[]>;\n\nconst validators: Validator[] = [];\n\nasync function verifyTransactionInternal(\n tx: TxUnpacked,\n node: Node,\n parentTxTypes: Tag[],\n): Promise<ValidatorResult[]> {\n const address = getTransactionSignerAddress(buildTx(tx));\n const [account, { height }, { consensusProtocolVersion, nodeNetworkId }] = await Promise.all([\n node.getAccountByPubkey(address)\n .catch((error) => {\n if (!isAccountNotFoundError(error)) throw error;\n return { id: address, balance: 0n, nonce: 0 };\n })\n // TODO: remove after fixing https://github.com/aeternity/aepp-sdk-js/issues/1537\n .then((acc) => ({ ...acc, id: acc.id as Encoded.AccountAddress })),\n node.getCurrentKeyBlockHeight(),\n node.getNodeInfo(),\n ]);\n\n return (await Promise.all(\n validators.map(async (v) => v(\n tx,\n {\n node, account, height, consensusProtocolVersion, nodeNetworkId, parentTxTypes,\n },\n )),\n )).flat();\n}\n\n/**\n * Transaction Validator\n * This function validates some transaction properties,\n * to make sure it can be posted it to the chain\n * @category transaction builder\n * @param transaction - Base64Check-encoded transaction\n * @param nodeNotCached - Node to validate transaction against\n * @returns Array with verification errors\n * @example const errors = await verifyTransaction(transaction, node)\n */\nexport default async function verifyTransaction(\n transaction: Parameters<typeof unpackTx>[0],\n nodeNotCached: Node,\n): Promise<ValidatorResult[]> {\n const node = new Node(nodeNotCached.$host, {\n ignoreVersion: true,\n pipeline: nodeNotCached.pipeline.clone(),\n additionalPolicies: [genAggressiveCacheGetResponsesPolicy()],\n });\n return verifyTransactionInternal(unpackTx(transaction), node, []);\n}\n\nvalidators.push(\n (tx, { account, nodeNetworkId, parentTxTypes }) => {\n if (tx.tag !== Tag.SignedTx) return [];\n const { encodedTx, signatures } = tx;\n if ((encodedTx ?? signatures) == null) return [];\n if (signatures.length !== 1) return []; // TODO: Support multisignature like in state channels\n const prefix = Buffer.from([\n nodeNetworkId,\n ...parentTxTypes.includes(Tag.PayingForTx) ? ['inner_tx'] : [],\n ].join('-'));\n const txBinary = decode(buildTx(encodedTx));\n const txWithNetworkId = concatBuffers([prefix, txBinary]);\n const txHashWithNetworkId = concatBuffers([prefix, hash(txBinary)]);\n if (verify(txWithNetworkId, signatures[0], account.id)\n || verify(txHashWithNetworkId, signatures[0], account.id)) return [];\n return [{\n message: 'Signature cannot be verified, please ensure that you transaction have'\n + ' the correct prefix and the correct private key for the sender address',\n key: 'InvalidSignature',\n checkedKeys: ['encodedTx', 'signatures'],\n }];\n },\n async (tx, { node, parentTxTypes }) => {\n let nestedTx;\n if ('encodedTx' in tx) nestedTx = tx.encodedTx;\n if ('tx' in tx) nestedTx = tx.tx;\n if (nestedTx == null) return [];\n return verifyTransactionInternal(nestedTx, node, [...parentTxTypes, tx.tag]);\n },\n (tx, { height }) => {\n if (!('ttl' in tx)) return [];\n if (tx.ttl === 0 || tx.ttl >= height) return [];\n return [{\n message: `TTL ${tx.ttl} is already expired, current height is ${height}`,\n key: 'ExpiredTTL',\n checkedKeys: ['ttl'],\n }];\n },\n async (tx, { account, parentTxTypes, node }) => {\n if (parentTxTypes.length !== 0) return [];\n const cost = await getExecutionCostUsingNode(buildTx(tx), node).catch(() => 0n);\n if (cost <= account.balance) return [];\n return [{\n message: `Account balance ${account.balance} is not enough to execute the transaction that costs ${cost}`,\n key: 'InsufficientBalance',\n checkedKeys: ['amount', 'fee', 'nameFee', 'gasLimit', 'gasPrice'],\n }];\n },\n (tx, { account }) => {\n let message;\n if (tx.tag === Tag.SignedTx && account.kind === 'generalized' && tx.signatures.length !== 0) {\n message = 'Generalized account can\\'t be used to generate SignedTx with signatures';\n }\n if (tx.tag === Tag.GaMetaTx && account.kind === 'basic') {\n message = 'Basic account can\\'t be used to generate GaMetaTx';\n }\n if (message == null) return [];\n return [{ message, key: 'InvalidAccountType', checkedKeys: ['tag'] }];\n },\n // TODO: revert nonce check\n // TODO: ensure nonce valid when paying for own tx\n (tx, { consensusProtocolVersion }) => {\n const oracleCall = Tag.Oracle === tx.tag || Tag.OracleRegisterTx === tx.tag;\n const contractCreate = Tag.ContractCreateTx === tx.tag || Tag.GaAttachTx === tx.tag;\n const contractCall = Tag.ContractCallTx === tx.tag || Tag.GaMetaTx === tx.tag;\n const type = (oracleCall ? 'oracle-call' : null)\n ?? (contractCreate ? 'contract-create' : null)\n ?? (contractCall ? 'contract-call' : null);\n if (type == null) return [];\n const protocol = ProtocolToVmAbi[consensusProtocolVersion][type] as {\n abiVersion: readonly any[];\n vmVersion: readonly any[];\n };\n\n let ctVersion: Partial<CtVersion> | undefined;\n if ('abiVersion' in tx) ctVersion = { abiVersion: tx.abiVersion };\n if ('ctVersion' in tx) ctVersion = tx.ctVersion;\n if (ctVersion == null) throw new UnexpectedTsError();\n if (\n !protocol.abiVersion.includes(ctVersion.abiVersion)\n || (contractCreate && !protocol.vmVersion.includes(ctVersion.vmVersion))\n ) {\n return [{\n message: `ABI/VM version ${JSON.stringify(ctVersion)} is wrong, supported is: ${JSON.stringify(protocol)}`,\n key: 'VmAndAbiVersionMismatch',\n checkedKeys: ['ctVersion', 'abiVersion'],\n }];\n }\n return [];\n },\n async (tx, { node }) => {\n if (Tag.ContractCallTx !== tx.tag) return [];\n try {\n const { active } = await node.getContract(tx.contractId);\n if (active) return [];\n return [{\n message: `Contract ${tx.contractId} is not active`,\n key: 'ContractNotActive',\n checkedKeys: ['contractId'],\n }];\n } catch (error) {\n if (!(error instanceof RestError) || error.response?.bodyAsText == null) throw error;\n return [{\n message: JSON.parse(error.response.bodyAsText).reason, // TODO: use parsedBody instead\n key: 'ContractNotFound',\n checkedKeys: ['contractId'],\n }];\n }\n },\n);\n"],"mappings":";;;;AAAA,SAASA,SAAS,QAAQ,2BAA2B;AAAC,SAC7CC,IAAI,EAAEC,MAAM;AAAA,SAEDC,eAAe;AAAA,SAC1BC,GAAG;AAAA,SACHC,OAAO,EAAEC,QAAQ;AAAA,SACjBC,aAAa,EAAEC,sBAAsB;AAAA,SAC5BC,MAAM;AAAA,OACjBC,IAAI;AAAA,SAEFC,oCAAoC;AAAA,SACpCC,iBAAiB;AAAA,OACnBC,2BAA2B;AAAA,SACzBC,yBAAyB;AAqBlC,MAAMC,UAAuB,GAAG,EAAE;AAElC,eAAeC,yBAAyBA,CACtCC,EAAc,EACdC,IAAU,EACVC,aAAoB,EACQ;EAC5B,MAAMC,OAAO,GAAGP,2BAA2B,CAACR,OAAO,CAACY,EAAE,CAAC,CAAC;EACxD,MAAM,CAACI,OAAO,EAAE;IAAEC;EAAO,CAAC,EAAE;IAAEC,wBAAwB;IAAEC;EAAc,CAAC,CAAC,GAAG,MAAMC,OAAO,CAACC,GAAG,CAAC,CAC3FR,IAAI,CAACS,kBAAkB,CAACP,OAAO,CAAC,CAC7BQ,KAAK,CAAEC,KAAK,IAAK;IAChB,IAAI,CAACrB,sBAAsB,CAACqB,KAAK,CAAC,EAAE,MAAMA,KAAK;IAC/C,OAAO;MAAEC,EAAE,EAAEV,OAAO;MAAEW,OAAO,EAAE,EAAE;MAAEC,KAAK,EAAE;IAAE,CAAC;EAC/C,CAAC;EACD;EAAA,CACCC,IAAI,CAAEC,GAAG,KAAM;IAAE,GAAGA,GAAG;IAAEJ,EAAE,EAAEI,GAAG,CAACJ;EAA6B,CAAC,CAAC,CAAC,EACpEZ,IAAI,CAACiB,wBAAwB,CAAC,CAAC,EAC/BjB,IAAI,CAACkB,WAAW,CAAC,CAAC,CACnB,CAAC;EAEF,OAAO,CAAC,MAAMX,OAAO,CAACC,GAAG,CACvBX,UAAU,CAACsB,GAAG,CAAC,MAAOC,CAAC,IAAKA,CAAC,CAC3BrB,EAAE,EACF;IACEC,IAAI;IAAEG,OAAO;IAAEC,MAAM;IAAEC,wBAAwB;IAAEC,aAAa;IAAEL;EAClE,CACF,CAAC,CACH,CAAC,EAAEoB,IAAI,CAAC,CAAC;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAeC,iBAAiBA,CAC7CC,WAA2C,EAC3CC,aAAmB,EACS;EAC5B,MAAMxB,IAAI,GAAG,IAAIR,IAAI,CAACgC,aAAa,CAACC,KAAK,EAAE;IACzCC,aAAa,EAAE,IAAI;IACnBC,QAAQ,EAAEH,aAAa,CAACG,QAAQ,CAACC,KAAK,CAAC,CAAC;IACxCC,kBAAkB,EAAE,CAACpC,oCAAoC,CAAC,CAAC;EAC7D,CAAC,CAAC;EACF,OAAOK,yBAAyB,CAACV,QAAQ,CAACmC,WAAW,CAAC,EAAEvB,IAAI,EAAE,EAAE,CAAC;AACnE;AAEAH,UAAU,CAACiC,IAAI,CACb,CAAC/B,EAAE,EAAAgC,IAAA,KAAgD;EAAA,IAA9C;IAAE5B,OAAO;IAAEG,aAAa;IAAEL;EAAc,CAAC,GAAA8B,IAAA;EAC5C,IAAIhC,EAAE,CAACiC,GAAG,KAAK9C,GAAG,CAAC+C,QAAQ,EAAE,OAAO,EAAE;EACtC,MAAM;IAAEC,SAAS;IAAEC;EAAW,CAAC,GAAGpC,EAAE;EACpC,IAAI,CAACmC,SAAS,aAATA,SAAS,cAATA,SAAS,GAAIC,UAAU,KAAK,IAAI,EAAE,OAAO,EAAE;EAChD,IAAIA,UAAU,CAACC,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;EACxC,MAAMC,MAAM,GAAGC,OAAA,CAAOC,IAAI,CAAC,CACzBjC,aAAa,EACb,IAAGL,aAAa,CAACuC,QAAQ,CAACtD,GAAG,CAACuD,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,EAC/D,CAACC,IAAI,CAAC,GAAG,CAAC,CAAC;EACZ,MAAMC,QAAQ,GAAGpD,MAAM,CAACJ,OAAO,CAAC+C,SAAS,CAAC,CAAC;EAC3C,MAAMU,eAAe,GAAGvD,aAAa,CAAC,CAACgD,MAAM,EAAEM,QAAQ,CAAC,CAAC;EACzD,MAAME,mBAAmB,GAAGxD,aAAa,CAAC,CAACgD,MAAM,EAAEtD,IAAI,CAAC4D,QAAQ,CAAC,CAAC,CAAC;EACnE,IAAI3D,MAAM,CAAC4D,eAAe,EAAET,UAAU,CAAC,CAAC,CAAC,EAAEhC,OAAO,CAACS,EAAE,CAAC,IACjD5B,MAAM,CAAC6D,mBAAmB,EAAEV,UAAU,CAAC,CAAC,CAAC,EAAEhC,OAAO,CAACS,EAAE,CAAC,EAAE,OAAO,EAAE;EACtE,OAAO,CAAC;IACNkC,OAAO,EAAE,uEAAuE,GAC5E,wEAAwE;IAC5EC,GAAG,EAAE,kBAAkB;IACvBC,WAAW,EAAE,CAAC,WAAW,EAAE,YAAY;EACzC,CAAC,CAAC;AACJ,CAAC,EACD,OAAOjD,EAAE,EAAAkD,KAAA,KAA8B;EAAA,IAA5B;IAAEjD,IAAI;IAAEC;EAAc,CAAC,GAAAgD,KAAA;EAChC,IAAIC,QAAQ;EACZ,IAAI,WAAW,IAAInD,EAAE,EAAEmD,QAAQ,GAAGnD,EAAE,CAACmC,SAAS;EAC9C,IAAI,IAAI,IAAInC,EAAE,EAAEmD,QAAQ,GAAGnD,EAAE,CAACA,EAAE;EAChC,IAAImD,QAAQ,IAAI,IAAI,EAAE,OAAO,EAAE;EAC/B,OAAOpD,yBAAyB,CAACoD,QAAQ,EAAElD,IAAI,EAAE,CAAC,GAAGC,aAAa,EAAEF,EAAE,CAACiC,GAAG,CAAC,CAAC;AAC9E,CAAC,EACD,CAACjC,EAAE,EAAAoD,KAAA,KAAiB;EAAA,IAAf;IAAE/C;EAAO,CAAC,GAAA+C,KAAA;EACb,IAAI,EAAE,KAAK,IAAIpD,EAAE,CAAC,EAAE,OAAO,EAAE;EAC7B,IAAIA,EAAE,CAACqD,GAAG,KAAK,CAAC,IAAIrD,EAAE,CAACqD,GAAG,IAAIhD,MAAM,EAAE,OAAO,EAAE;EAC/C,OAAO,CAAC;IACN0C,OAAO,EAAG,OAAM/C,EAAE,CAACqD,GAAI,0CAAyChD,MAAO,EAAC;IACxE2C,GAAG,EAAE,YAAY;IACjBC,WAAW,EAAE,CAAC,KAAK;EACrB,CAAC,CAAC;AACJ,CAAC,EACD,OAAOjD,EAAE,EAAAsD,KAAA,KAAuC;EAAA,IAArC;IAAElD,OAAO;IAAEF,aAAa;IAAED;EAAK,CAAC,GAAAqD,KAAA;EACzC,IAAIpD,aAAa,CAACmC,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE;EACzC,MAAMkB,IAAI,GAAG,MAAM1D,yBAAyB,CAACT,OAAO,CAACY,EAAE,CAAC,EAAEC,IAAI,CAAC,CAACU,KAAK,CAAC,MAAM,EAAE,CAAC;EAC/E,IAAI4C,IAAI,IAAInD,OAAO,CAACU,OAAO,EAAE,OAAO,EAAE;EACtC,OAAO,CAAC;IACNiC,OAAO,EAAG,mBAAkB3C,OAAO,CAACU,OAAQ,wDAAuDyC,IAAK,EAAC;IACzGP,GAAG,EAAE,qBAAqB;IAC1BC,WAAW,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU;EAClE,CAAC,CAAC;AACJ,CAAC,EACD,CAACjD,EAAE,EAAAwD,KAAA,KAAkB;EAAA,IAAhB;IAAEpD;EAAQ,CAAC,GAAAoD,KAAA;EACd,IAAIT,OAAO;EACX,IAAI/C,EAAE,CAACiC,GAAG,KAAK9C,GAAG,CAAC+C,QAAQ,IAAI9B,OAAO,CAACqD,IAAI,KAAK,aAAa,IAAIzD,EAAE,CAACoC,UAAU,CAACC,MAAM,KAAK,CAAC,EAAE;IAC3FU,OAAO,GAAG,yEAAyE;EACrF;EACA,IAAI/C,EAAE,CAACiC,GAAG,KAAK9C,GAAG,CAACuE,QAAQ,IAAItD,OAAO,CAACqD,IAAI,KAAK,OAAO,EAAE;IACvDV,OAAO,GAAG,mDAAmD;EAC/D;EACA,IAAIA,OAAO,IAAI,IAAI,EAAE,OAAO,EAAE;EAC9B,OAAO,CAAC;IAAEA,OAAO;IAAEC,GAAG,EAAE,oBAAoB;IAAEC,WAAW,EAAE,CAAC,KAAK;EAAE,CAAC,CAAC;AACvE,CAAC;AACD;AACA;AACA,CAACjD,EAAE,EAAA2D,KAAA,KAAmC;EAAA,IAAAC,KAAA,EAAAC,KAAA;EAAA,IAAjC;IAAEvD;EAAyB,CAAC,GAAAqD,KAAA;EAC/B,MAAMG,UAAU,GAAG3E,GAAG,CAAC4E,MAAM,KAAK/D,EAAE,CAACiC,GAAG,IAAI9C,GAAG,CAAC6E,gBAAgB,KAAKhE,EAAE,CAACiC,GAAG;EAC3E,MAAMgC,cAAc,GAAG9E,GAAG,CAAC+E,gBAAgB,KAAKlE,EAAE,CAACiC,GAAG,IAAI9C,GAAG,CAACgF,UAAU,KAAKnE,EAAE,CAACiC,GAAG;EACnF,MAAMmC,YAAY,GAAGjF,GAAG,CAACkF,cAAc,KAAKrE,EAAE,CAACiC,GAAG,IAAI9C,GAAG,CAACuE,QAAQ,KAAK1D,EAAE,CAACiC,GAAG;EAC7E,MAAMqC,IAAI,IAAAV,KAAA,IAAAC,KAAA,GAAIC,UAAU,GAAG,aAAa,GAAG,IAAI,cAAAD,KAAA,cAAAA,KAAA,GACzCI,cAAc,GAAG,iBAAiB,GAAG,IAAI,cAAAL,KAAA,cAAAA,KAAA,GACzCQ,YAAY,GAAG,eAAe,GAAG,IAAK;EAC5C,IAAIE,IAAI,IAAI,IAAI,EAAE,OAAO,EAAE;EAC3B,MAAMC,QAAQ,GAAGrF,eAAe,CAACoB,wBAAwB,CAAC,CAACgE,IAAI,CAG9D;EAED,IAAIE,SAAyC;EAC7C,IAAI,YAAY,IAAIxE,EAAE,EAAEwE,SAAS,GAAG;IAAEC,UAAU,EAAEzE,EAAE,CAACyE;EAAW,CAAC;EACjE,IAAI,WAAW,IAAIzE,EAAE,EAAEwE,SAAS,GAAGxE,EAAE,CAACwE,SAAS;EAC/C,IAAIA,SAAS,IAAI,IAAI,EAAE,MAAM,IAAI7E,iBAAiB,CAAC,CAAC;EACpD,IACE,CAAC4E,QAAQ,CAACE,UAAU,CAAChC,QAAQ,CAAC+B,SAAS,CAACC,UAAU,CAAC,IAC/CR,cAAc,IAAI,CAACM,QAAQ,CAACG,SAAS,CAACjC,QAAQ,CAAC+B,SAAS,CAACE,SAAS,CAAE,EACxE;IACA,OAAO,CAAC;MACN3B,OAAO,EAAG,kBAAiB4B,IAAI,CAACC,SAAS,CAACJ,SAAS,CAAE,4BAA2BG,IAAI,CAACC,SAAS,CAACL,QAAQ,CAAE,EAAC;MAC1GvB,GAAG,EAAE,yBAAyB;MAC9BC,WAAW,EAAE,CAAC,WAAW,EAAE,YAAY;IACzC,CAAC,CAAC;EACJ;EACA,OAAO,EAAE;AACX,CAAC,EACD,OAAOjD,EAAE,EAAA6E,KAAA,KAAe;EAAA,IAAb;IAAE5E;EAAK,CAAC,GAAA4E,KAAA;EACjB,IAAI1F,GAAG,CAACkF,cAAc,KAAKrE,EAAE,CAACiC,GAAG,EAAE,OAAO,EAAE;EAC5C,IAAI;IACF,MAAM;MAAE6C;IAAO,CAAC,GAAG,MAAM7E,IAAI,CAAC8E,WAAW,CAAC/E,EAAE,CAACgF,UAAU,CAAC;IACxD,IAAIF,MAAM,EAAE,OAAO,EAAE;IACrB,OAAO,CAAC;MACN/B,OAAO,EAAG,YAAW/C,EAAE,CAACgF,UAAW,gBAAe;MAClDhC,GAAG,EAAE,mBAAmB;MACxBC,WAAW,EAAE,CAAC,YAAY;IAC5B,CAAC,CAAC;EACJ,CAAC,CAAC,OAAOrC,KAAK,EAAE;IAAA,IAAAqE,eAAA;IACd,IAAI,EAAErE,KAAK,YAAY7B,SAAS,CAAC,IAAI,EAAAkG,eAAA,GAAArE,KAAK,CAACsE,QAAQ,cAAAD,eAAA,uBAAdA,eAAA,CAAgBE,UAAU,KAAI,IAAI,EAAE,MAAMvE,KAAK;IACpF,OAAO,CAAC;MACNmC,OAAO,EAAE4B,IAAI,CAACS,KAAK,CAACxE,KAAK,CAACsE,QAAQ,CAACC,UAAU,CAAC,CAACE,MAAM;MAAE;MACvDrC,GAAG,EAAE,kBAAkB;MACvBC,WAAW,EAAE,CAAC,YAAY;IAC5B,CAAC,CAAC;EACJ;AACF,CACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"validator.mjs","names":["RestError","hash","isAddressValid","verify","ProtocolToVmAbi","Tag","ConsensusProtocolVersion","buildTx","unpackTx","concatBuffers","isAccountNotFoundError","Encoding","decode","Node","genAggressiveCacheGetResponsesPolicy","UnexpectedTsError","getTransactionSignerAddress","getExecutionCostUsingNode","validators","verifyTransactionInternal","tx","node","parentTxTypes","address","account","height","consensusProtocolVersion","nodeNetworkId","Promise","all","getAccountByPubkey","catch","error","id","balance","nonce","then","acc","getCurrentKeyBlockHeight","getNodeInfo","map","v","flat","verifyTransaction","transaction","nodeNotCached","$host","ignoreVersion","pipeline","clone","additionalPolicies","push","tag","SignedTx","encodedTx","signatures","length","prefix","_Buffer","from","includes","PayingForTx","join","txBinary","txWithNetworkId","txHashWithNetworkId","message","key","checkedKeys","nestedTx","ttl","cost","SpendTx","recipientId","Name","recipient","payable","kind","GaMetaTx","_ref","_ref2","oracleCall","OracleRegisterTx","contractCreate","ContractCreateTx","GaAttachTx","contractCall","ContractCallTx","type","protocol","ctVersion","abiVersion","vmVersion","JSON","stringify","contractId","startsWith","active","getContract","_error$response","response","bodyAsText","parse","reason","Ceres","ownerId"],"sources":["../../src/tx/validator.ts"],"sourcesContent":["import { RestError } from '@azure/core-rest-pipeline';\nimport { hash, isAddressValid, verify } from '../utils/crypto';\nimport { TxUnpacked } from './builder/schema.generated';\nimport { CtVersion, ProtocolToVmAbi } from './builder/field-types/ct-version';\nimport { Tag, ConsensusProtocolVersion } from './builder/constants';\nimport { buildTx, unpackTx } from './builder';\nimport { concatBuffers, isAccountNotFoundError } from '../utils/other';\nimport { Encoded, Encoding, decode } from '../utils/encoder';\nimport Node, { TransformNodeType } from '../Node';\nimport { Account } from '../apis/node';\nimport { genAggressiveCacheGetResponsesPolicy } from '../utils/autorest';\nimport { UnexpectedTsError } from '../utils/errors';\nimport getTransactionSignerAddress from './transaction-signer';\nimport { getExecutionCostUsingNode } from './execution-cost';\n\nexport interface ValidatorResult {\n message: string;\n key: string;\n checkedKeys: string[];\n}\n\ntype Validator = (\n tx: TxUnpacked,\n options: {\n // TODO: remove after fixing node types\n account: TransformNodeType<Account> & { id: Encoded.AccountAddress };\n nodeNetworkId: string;\n parentTxTypes: Tag[];\n node: Node;\n height: number;\n consensusProtocolVersion: ConsensusProtocolVersion;\n }\n) => ValidatorResult[] | Promise<ValidatorResult[]>;\n\nconst validators: Validator[] = [];\n\nasync function verifyTransactionInternal(\n tx: TxUnpacked,\n node: Node,\n parentTxTypes: Tag[],\n): Promise<ValidatorResult[]> {\n const address = getTransactionSignerAddress(buildTx(tx));\n const [account, { height }, { consensusProtocolVersion, nodeNetworkId }] = await Promise.all([\n node.getAccountByPubkey(address)\n .catch((error) => {\n if (!isAccountNotFoundError(error)) throw error;\n return { id: address, balance: 0n, nonce: 0 };\n })\n // TODO: remove after fixing https://github.com/aeternity/aepp-sdk-js/issues/1537\n .then((acc) => ({ ...acc, id: acc.id as Encoded.AccountAddress })),\n node.getCurrentKeyBlockHeight(), // TODO: don't request height on each validation, use caching\n node.getNodeInfo(),\n ]);\n\n return (await Promise.all(\n validators.map(async (v) => v(\n tx,\n {\n node, account, height, consensusProtocolVersion, nodeNetworkId, parentTxTypes,\n },\n )),\n )).flat();\n}\n\n/**\n * Transaction Validator\n * This function validates some transaction properties,\n * to make sure it can be posted it to the chain\n * @category transaction builder\n * @param transaction - Base64Check-encoded transaction\n * @param nodeNotCached - Node to validate transaction against\n * @returns Array with verification errors\n * @example const errors = await verifyTransaction(transaction, node)\n */\nexport default async function verifyTransaction(\n transaction: Parameters<typeof unpackTx>[0],\n nodeNotCached: Node,\n): Promise<ValidatorResult[]> {\n const node = new Node(nodeNotCached.$host, {\n ignoreVersion: true,\n pipeline: nodeNotCached.pipeline.clone(),\n additionalPolicies: [genAggressiveCacheGetResponsesPolicy()],\n });\n return verifyTransactionInternal(unpackTx(transaction), node, []);\n}\n\nvalidators.push(\n (tx, { account, nodeNetworkId, parentTxTypes }) => {\n if (tx.tag !== Tag.SignedTx) return [];\n const { encodedTx, signatures } = tx;\n if ((encodedTx ?? signatures) == null) return [];\n if (signatures.length !== 1) return []; // TODO: Support multisignature like in state channels\n const prefix = Buffer.from([\n nodeNetworkId,\n ...parentTxTypes.includes(Tag.PayingForTx) ? ['inner_tx'] : [],\n ].join('-'));\n const txBinary = decode(buildTx(encodedTx));\n const txWithNetworkId = concatBuffers([prefix, txBinary]);\n const txHashWithNetworkId = concatBuffers([prefix, hash(txBinary)]);\n if (verify(txWithNetworkId, signatures[0], account.id)\n || verify(txHashWithNetworkId, signatures[0], account.id)) return [];\n return [{\n message: 'Signature cannot be verified, please ensure that you transaction have'\n + ' the correct prefix and the correct private key for the sender address',\n key: 'InvalidSignature',\n checkedKeys: ['encodedTx', 'signatures'],\n }];\n },\n async (tx, { node, parentTxTypes }) => {\n let nestedTx;\n if ('encodedTx' in tx) nestedTx = tx.encodedTx;\n if ('tx' in tx) nestedTx = tx.tx;\n if (nestedTx == null) return [];\n return verifyTransactionInternal(nestedTx, node, [...parentTxTypes, tx.tag]);\n },\n (tx, { height }) => {\n if (!('ttl' in tx)) return [];\n if (tx.ttl === 0 || tx.ttl > height) return [];\n return [{\n message: `TTL ${tx.ttl} is already expired, current height is ${height}`,\n key: 'ExpiredTTL',\n checkedKeys: ['ttl'],\n }];\n },\n async (tx, { account, parentTxTypes, node }) => {\n if (parentTxTypes.length !== 0) return [];\n const cost = await getExecutionCostUsingNode(buildTx(tx), node).catch(() => 0n);\n if (cost <= account.balance) return [];\n return [{\n message: `Account balance ${account.balance} is not enough to execute the transaction that costs ${cost}`,\n key: 'InsufficientBalance',\n checkedKeys: ['amount', 'fee', 'nameFee', 'gasLimit', 'gasPrice'],\n }];\n },\n async (tx, { node }) => {\n if (tx.tag !== Tag.SpendTx || isAddressValid(tx.recipientId, Encoding.Name)) return [];\n const recipient = await node.getAccountByPubkey(tx.recipientId).catch((error) => {\n if (!isAccountNotFoundError(error)) throw error;\n return null;\n });\n if (recipient == null || recipient.payable === true) return [];\n return [{\n message: 'Recipient account is not payable',\n key: 'RecipientAccountNotPayable',\n checkedKeys: ['recipientId'],\n }];\n },\n (tx, { account }) => {\n let message;\n if (tx.tag === Tag.SignedTx && account.kind === 'generalized' && tx.signatures.length !== 0) {\n message = 'Generalized account can\\'t be used to generate SignedTx with signatures';\n }\n if (tx.tag === Tag.GaMetaTx && account.kind === 'basic') {\n message = 'Basic account can\\'t be used to generate GaMetaTx';\n }\n if (message == null) return [];\n return [{ message, key: 'InvalidAccountType', checkedKeys: ['tag'] }];\n },\n // TODO: revert nonce check\n // TODO: ensure nonce valid when paying for own tx\n (tx, { consensusProtocolVersion }) => {\n const oracleCall = Tag.OracleRegisterTx === tx.tag;\n const contractCreate = Tag.ContractCreateTx === tx.tag || Tag.GaAttachTx === tx.tag;\n const contractCall = Tag.ContractCallTx === tx.tag || Tag.GaMetaTx === tx.tag;\n const type = (oracleCall ? 'oracle-call' : null)\n ?? (contractCreate ? 'contract-create' : null)\n ?? (contractCall ? 'contract-call' : null);\n if (type == null) return [];\n const protocol = ProtocolToVmAbi[consensusProtocolVersion][type] as {\n abiVersion: readonly any[];\n vmVersion: readonly any[];\n };\n\n let ctVersion: Partial<CtVersion> | undefined;\n if ('abiVersion' in tx) ctVersion = { abiVersion: tx.abiVersion };\n if ('ctVersion' in tx) ctVersion = tx.ctVersion;\n if (ctVersion == null) throw new UnexpectedTsError();\n if (\n !protocol.abiVersion.includes(ctVersion.abiVersion)\n || (contractCreate && !protocol.vmVersion.includes(ctVersion.vmVersion))\n ) {\n return [{\n message: `ABI/VM version ${JSON.stringify(ctVersion)} is wrong, supported is: ${JSON.stringify(protocol)}`,\n key: 'VmAndAbiVersionMismatch',\n checkedKeys: ['ctVersion', 'abiVersion'],\n }];\n }\n return [];\n },\n async (tx, { node }) => {\n if (Tag.ContractCallTx !== tx.tag) return [];\n // TODO: remove after solving https://github.com/aeternity/aeternity/issues/3669\n if (tx.contractId.startsWith('nm_')) return [];\n try {\n const { active } = await node.getContract(tx.contractId);\n if (active) return [];\n return [{\n message: `Contract ${tx.contractId} is not active`,\n key: 'ContractNotActive',\n checkedKeys: ['contractId'],\n }];\n } catch (error) {\n if (!(error instanceof RestError) || error.response?.bodyAsText == null) throw error;\n return [{\n message: JSON.parse(error.response.bodyAsText).reason, // TODO: use parsedBody instead\n key: 'ContractNotFound',\n checkedKeys: ['contractId'],\n }];\n }\n },\n // TODO: move to fee field of tx builder after dropping Iris\n (tx, { consensusProtocolVersion }) => ((\n Tag.GaAttachTx === tx.tag\n && ConsensusProtocolVersion.Ceres === consensusProtocolVersion\n && tx.nonce !== 1\n ) ? [{\n message: `Account ${tx.ownerId} can't become generalized because it is already used`,\n key: 'AccountUsed',\n checkedKeys: ['nonce'],\n }]\n : []),\n);\n"],"mappings":"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"}
|
|
@@ -33,11 +33,10 @@ const DENOMINATION_MAGNITUDE = {
|
|
|
33
33
|
* @param options.targetDenomination - target denomination,
|
|
34
34
|
* can be ['ae', 'aettos']
|
|
35
35
|
*/
|
|
36
|
-
export const formatAmount = (value,
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
} = _ref;
|
|
36
|
+
export const formatAmount = (value, {
|
|
37
|
+
denomination = AE_AMOUNT_FORMATS.AETTOS,
|
|
38
|
+
targetDenomination = AE_AMOUNT_FORMATS.AETTOS
|
|
39
|
+
}) => {
|
|
41
40
|
if (!isBigNumber(value)) throw new ArgumentError('value', 'a number', value);
|
|
42
41
|
return new BigNumber(typeof value === 'bigint' ? value.toString() : value).shiftedBy(DENOMINATION_MAGNITUDE[denomination] - DENOMINATION_MAGNITUDE[targetDenomination]).toFixed();
|
|
43
42
|
};
|
|
@@ -48,15 +47,12 @@ export const formatAmount = (value, _ref) => {
|
|
|
48
47
|
* @param options - options
|
|
49
48
|
* @param options.denomination - denomination of amount, can be ['ae', 'aettos']
|
|
50
49
|
*/
|
|
51
|
-
export const toAe =
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
targetDenomination: AE_AMOUNT_FORMATS.AE
|
|
58
|
-
});
|
|
59
|
-
};
|
|
50
|
+
export const toAe = (value, {
|
|
51
|
+
denomination = AE_AMOUNT_FORMATS.AETTOS
|
|
52
|
+
} = {}) => formatAmount(value, {
|
|
53
|
+
denomination,
|
|
54
|
+
targetDenomination: AE_AMOUNT_FORMATS.AE
|
|
55
|
+
});
|
|
60
56
|
|
|
61
57
|
/**
|
|
62
58
|
* Convert amount to aettos
|
|
@@ -64,14 +60,11 @@ export const toAe = function (value) {
|
|
|
64
60
|
* @param options - options
|
|
65
61
|
* @param options.denomination - denomination of amount, can be ['ae', 'aettos']
|
|
66
62
|
*/
|
|
67
|
-
export const toAettos =
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
denomination
|
|
73
|
-
});
|
|
74
|
-
};
|
|
63
|
+
export const toAettos = (value, {
|
|
64
|
+
denomination = AE_AMOUNT_FORMATS.AE
|
|
65
|
+
} = {}) => formatAmount(value, {
|
|
66
|
+
denomination
|
|
67
|
+
});
|
|
75
68
|
const prefixes = [{
|
|
76
69
|
name: 'exa',
|
|
77
70
|
magnitude: 18
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"amount-formatter.mjs","names":["BigNumber","isBigNumber","ArgumentError","AE_AMOUNT_FORMATS","DENOMINATION_MAGNITUDE","AE","MILI_AE","MICRO_AE","NANO_AE","PICO_AE","FEMTO_AE","AETTOS","formatAmount","value","
|
|
1
|
+
{"version":3,"file":"amount-formatter.mjs","names":["BigNumber","isBigNumber","ArgumentError","AE_AMOUNT_FORMATS","DENOMINATION_MAGNITUDE","AE","MILI_AE","MICRO_AE","NANO_AE","PICO_AE","FEMTO_AE","AETTOS","formatAmount","value","denomination","targetDenomination","toString","shiftedBy","toFixed","toAe","toAettos","prefixes","name","magnitude","getNearestPrefix","exponent","reduce","p","n","Math","abs","getLowerBoundPrefix","_prefixes$find","find","length","prefixedAmount","rawValue","_value$e","exp","e","v","precision","min"],"sources":["../../src/utils/amount-formatter.ts"],"sourcesContent":["import BigNumber from 'bignumber.js';\nimport { isBigNumber } from './bignumber';\nimport { ArgumentError } from './errors';\n\nexport enum AE_AMOUNT_FORMATS {\n AE = 'ae',\n MILI_AE = 'miliAE',\n MICRO_AE = 'microAE',\n NANO_AE = 'nanoAE',\n PICO_AE = 'picoAE',\n FEMTO_AE = 'femtoAE',\n AETTOS = 'aettos',\n}\n\n/**\n * DENOMINATION_MAGNITUDE\n */\nconst DENOMINATION_MAGNITUDE = {\n [AE_AMOUNT_FORMATS.AE]: 0,\n [AE_AMOUNT_FORMATS.MILI_AE]: -3,\n [AE_AMOUNT_FORMATS.MICRO_AE]: -6,\n [AE_AMOUNT_FORMATS.NANO_AE]: -9,\n [AE_AMOUNT_FORMATS.PICO_AE]: -12,\n [AE_AMOUNT_FORMATS.FEMTO_AE]: -15,\n [AE_AMOUNT_FORMATS.AETTOS]: -18,\n} as const;\n\n/**\n * Convert amount from one to other denomination\n * @param value - amount to convert\n * @param options - options\n * @param options.denomination - denomination of amount, can be ['ae', 'aettos']\n * @param options.targetDenomination - target denomination,\n * can be ['ae', 'aettos']\n */\nexport const formatAmount = (\n value: string | number | bigint | BigNumber,\n { denomination = AE_AMOUNT_FORMATS.AETTOS, targetDenomination = AE_AMOUNT_FORMATS.AETTOS }:\n { denomination?: AE_AMOUNT_FORMATS; targetDenomination?: AE_AMOUNT_FORMATS },\n): string => {\n if (!isBigNumber(value)) throw new ArgumentError('value', 'a number', value);\n\n return new BigNumber(typeof value === 'bigint' ? value.toString() : value)\n .shiftedBy(DENOMINATION_MAGNITUDE[denomination] - DENOMINATION_MAGNITUDE[targetDenomination])\n .toFixed();\n};\n\n/**\n * Convert amount to AE\n * @param value - amount to convert\n * @param options - options\n * @param options.denomination - denomination of amount, can be ['ae', 'aettos']\n */\nexport const toAe = (\n value: string | number | BigNumber,\n { denomination = AE_AMOUNT_FORMATS.AETTOS }: { denomination?: AE_AMOUNT_FORMATS } = {},\n): string => formatAmount(value, { denomination, targetDenomination: AE_AMOUNT_FORMATS.AE });\n\n/**\n * Convert amount to aettos\n * @param value - amount to convert\n * @param options - options\n * @param options.denomination - denomination of amount, can be ['ae', 'aettos']\n */\nexport const toAettos = (\n value: string | number | BigNumber,\n { denomination = AE_AMOUNT_FORMATS.AE }: { denomination?: AE_AMOUNT_FORMATS } = {},\n): string => formatAmount(value, { denomination });\n\ninterface Prefix {\n name: string;\n magnitude: number;\n}\n\nconst prefixes: Prefix[] = [\n { name: 'exa', magnitude: 18 },\n { name: 'giga', magnitude: 9 },\n { name: '', magnitude: 0 },\n { name: 'pico', magnitude: -12 },\n];\n\nconst getNearestPrefix = (exponent: number): Prefix => prefixes.reduce((p, n) => (\n Math.abs(n.magnitude - exponent) < Math.abs(p.magnitude - exponent) ? n : p));\n\nconst getLowerBoundPrefix = (exponent: number): Prefix => prefixes\n .find((p) => p.magnitude <= exponent) ?? prefixes[prefixes.length - 1];\n\nexport const prefixedAmount = (rawValue: string | number | BigNumber): string => {\n const value: BigNumber = new BigNumber(rawValue);\n\n const exp = value.e ?? 0;\n const { name, magnitude } = (exp < 0 ? getNearestPrefix : getLowerBoundPrefix)(exp);\n const v = value\n .shiftedBy(-magnitude)\n .precision(9 + Math.min(exp - magnitude, 0))\n .toFixed();\n return `${v}${name !== '' ? ' ' : ''}${name}`;\n};\n"],"mappings":"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"}
|
package/es/utils/autorest.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { AdditionalPolicyConfig } from '@azure/core-client';
|
|
1
|
+
import { AdditionalPolicyConfig, OperationOptions } from '@azure/core-client';
|
|
3
2
|
export declare const genRequestQueuesPolicy: () => AdditionalPolicyConfig;
|
|
4
3
|
export declare const genCombineGetRequestsPolicy: () => AdditionalPolicyConfig;
|
|
5
4
|
export declare const genAggressiveCacheGetResponsesPolicy: () => AdditionalPolicyConfig;
|
|
6
5
|
export declare const genErrorFormatterPolicy: (getMessage: (b: any) => string) => AdditionalPolicyConfig;
|
|
7
|
-
export declare const genVersionCheckPolicy: (name: string,
|
|
6
|
+
export declare const genVersionCheckPolicy: (name: string, versionCb: (options: OperationOptions) => Promise<string>, geVersion: string, ltVersion: string) => AdditionalPolicyConfig;
|
|
8
7
|
export declare const genRetryOnFailurePolicy: (retryCount: number, retryOverallDelay: number) => AdditionalPolicyConfig;
|
package/es/utils/autorest.mjs
CHANGED
|
@@ -14,9 +14,7 @@ export const genRequestQueuesPolicy = () => {
|
|
|
14
14
|
const getResponse = async () => next(request);
|
|
15
15
|
if (key == null) return getResponse();
|
|
16
16
|
const req = ((_requestQueues$get = requestQueues.get(key)) !== null && _requestQueues$get !== void 0 ? _requestQueues$get : Promise.resolve()).then(getResponse);
|
|
17
|
-
|
|
18
|
-
// gap to ensure that node won't reject the nonce
|
|
19
|
-
requestQueues.set(key, req.then(async () => pause(750), () => {}));
|
|
17
|
+
requestQueues.set(key, req.catch(() => {}));
|
|
20
18
|
return req;
|
|
21
19
|
}
|
|
22
20
|
},
|
|
@@ -70,15 +68,14 @@ export const genErrorFormatterPolicy = getMessage => ({
|
|
|
70
68
|
} catch (error) {
|
|
71
69
|
var _error$response;
|
|
72
70
|
if (!(error instanceof RestError) || error.request == null) throw error;
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
body = JSON.parse(error.response.bodyAsText);
|
|
77
|
-
} catch (e) {
|
|
71
|
+
const prefix = `${new URL(error.request.url).pathname.slice(1)} error`;
|
|
72
|
+
if (((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.bodyAsText) == null) {
|
|
73
|
+
if (error.message === '') error.message = `${prefix}: ${error.code}`;
|
|
78
74
|
throw error;
|
|
79
75
|
}
|
|
80
|
-
|
|
81
|
-
|
|
76
|
+
const body = error.response.parsedBody;
|
|
77
|
+
error.message = prefix;
|
|
78
|
+
const message = body == null ? ` ${error.response.status} status code` : getMessage(body);
|
|
82
79
|
if (message !== '') error.message += `:${message}`;
|
|
83
80
|
throw error;
|
|
84
81
|
}
|
|
@@ -86,28 +83,47 @@ export const genErrorFormatterPolicy = getMessage => ({
|
|
|
86
83
|
},
|
|
87
84
|
position: 'perCall'
|
|
88
85
|
});
|
|
89
|
-
export const genVersionCheckPolicy = (name,
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
86
|
+
export const genVersionCheckPolicy = (name, versionCb, geVersion, ltVersion) => ({
|
|
87
|
+
policy: {
|
|
88
|
+
name: 'version-check',
|
|
89
|
+
async sendRequest(request, next) {
|
|
90
|
+
if (request.headers.has('__version-check')) {
|
|
91
|
+
request.headers.delete('__version-check');
|
|
92
|
+
return next(request);
|
|
93
|
+
}
|
|
94
|
+
const options = {
|
|
95
|
+
requestOptions: {
|
|
96
|
+
customHeaders: {
|
|
97
|
+
'__version-check': 'true'
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
const args = [await versionCb(options), geVersion, ltVersion];
|
|
102
|
+
if (!semverSatisfies(...args)) throw new UnsupportedVersionError(name, ...args);
|
|
103
|
+
return next(request);
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
position: 'perCall'
|
|
99
107
|
});
|
|
100
108
|
export const genRetryOnFailurePolicy = (retryCount, retryOverallDelay) => ({
|
|
101
109
|
policy: {
|
|
102
110
|
name: 'retry-on-failure',
|
|
103
111
|
async sendRequest(request, next) {
|
|
104
|
-
|
|
112
|
+
var _request$headers$get;
|
|
113
|
+
const retryCode = (_request$headers$get = request.headers.get('__retry-code')) !== null && _request$headers$get !== void 0 ? _request$headers$get : NaN;
|
|
114
|
+
request.headers.delete('__retry-code');
|
|
115
|
+
const statusesToNotRetry = [200, 400, 403, 410, 500].filter(c => c !== +retryCode);
|
|
105
116
|
const intervals = new Array(retryCount).fill(0).map((_, idx) => ((idx + 1) / retryCount) ** 2);
|
|
106
|
-
const intervalSum = intervals.reduce((a, b) => a + b);
|
|
107
|
-
const intervalsInMs = intervals.map(
|
|
117
|
+
const intervalSum = intervals.reduce((a, b) => a + b, 0);
|
|
118
|
+
const intervalsInMs = intervals.map(e => Math.floor(e / intervalSum * retryOverallDelay));
|
|
108
119
|
let error = new RestError('Not expected to be thrown');
|
|
109
120
|
for (let attempt = 0; attempt <= retryCount; attempt += 1) {
|
|
110
|
-
if (attempt !== 0)
|
|
121
|
+
if (attempt !== 0) {
|
|
122
|
+
await pause(intervalsInMs[attempt - 1]);
|
|
123
|
+
const urlParsed = new URL(request.url);
|
|
124
|
+
urlParsed.searchParams.set('__sdk-retry', attempt.toString());
|
|
125
|
+
request.url = urlParsed.toString();
|
|
126
|
+
}
|
|
111
127
|
try {
|
|
112
128
|
return await next(request);
|
|
113
129
|
} catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autorest.mjs","names":["RestError","pause","semverSatisfies","UnsupportedVersionError","genRequestQueuesPolicy","requestQueues","Map","policy","name","sendRequest","request","next","_requestQueues$get","key","headers","get","delete","getResponse","req","Promise","resolve","then","set","position","genCombineGetRequestsPolicy","pendingGetRequests","_pendingGetRequests$g","method","JSON","stringify","url","body","response","genAggressiveCacheGetResponsesPolicy","getRequests","_getRequests$get","genErrorFormatterPolicy","getMessage","error","_error$response","bodyAsText","parse","e","message","URL","pathname","slice","genVersionCheckPolicy","ignorePath","versionPromise","geVersion","ltVersion","version","Error","args","genRetryOnFailurePolicy","retryCount","retryOverallDelay","statusesToNotRetry","intervals","Array","fill","map","_","idx","intervalSum","reduce","a","b","intervalsInMs","el","attempt","_e$response$status","_e$response","includes","status"],"sources":["../../src/utils/autorest.ts"],"sourcesContent":["import { RestError, PipelineResponse, PipelinePolicy } from '@azure/core-rest-pipeline';\nimport { AdditionalPolicyConfig } from '@azure/core-client';\nimport { pause } from './other';\nimport semverSatisfies from './semver-satisfies';\nimport { UnsupportedVersionError } from './errors';\n\nexport const genRequestQueuesPolicy = (): AdditionalPolicyConfig => {\n const requestQueues = new Map<string, Promise<unknown>>();\n\n return {\n policy: {\n name: 'request-queues',\n async sendRequest(request, next) {\n const key = request.headers.get('__queue');\n request.headers.delete('__queue');\n const getResponse = async (): Promise<PipelineResponse> => next(request);\n if (key == null) return getResponse();\n const req = (requestQueues.get(key) ?? Promise.resolve()).then(getResponse);\n // TODO: remove pause after fixing https://github.com/aeternity/aeternity/issues/3803\n // gap to ensure that node won't reject the nonce\n requestQueues.set(key, req.then(async () => pause(750), () => {}));\n return req;\n },\n },\n position: 'perCall',\n };\n};\n\nexport const genCombineGetRequestsPolicy = (): AdditionalPolicyConfig => {\n const pendingGetRequests = new Map<string, Promise<PipelineResponse>>();\n\n return {\n policy: {\n name: 'combine-get-requests',\n async sendRequest(request, next) {\n if (request.method !== 'GET') return next(request);\n const key = JSON.stringify([request.url, request.body]);\n const response = pendingGetRequests.get(key) ?? next(request);\n pendingGetRequests.set(key, response);\n try {\n return await response;\n } finally {\n pendingGetRequests.delete(key);\n }\n },\n },\n position: 'perCall',\n };\n};\n\nexport const genAggressiveCacheGetResponsesPolicy = (): AdditionalPolicyConfig => {\n const getRequests = new Map<string, Promise<PipelineResponse>>();\n\n return {\n policy: {\n name: 'aggressive-cache-get-responses',\n async sendRequest(request, next) {\n if (request.method !== 'GET') return next(request);\n const key = JSON.stringify([request.url, request.body]);\n const response = getRequests.get(key) ?? next(request);\n getRequests.set(key, response);\n return response;\n },\n },\n position: 'perCall',\n };\n};\n\nexport const genErrorFormatterPolicy = (\n getMessage: (b: any) => string,\n): AdditionalPolicyConfig => ({\n policy: {\n name: 'error-formatter',\n async sendRequest(request, next) {\n try {\n return await next(request);\n } catch (error) {\n if (!(error instanceof RestError) || error.request == null) throw error;\n if (error.response?.bodyAsText == null) throw error;\n\n let body;\n try {\n body = JSON.parse(error.response.bodyAsText);\n } catch (e) {\n throw error;\n }\n error.message = `${new URL(error.request.url).pathname.slice(1)} error`;\n const message = getMessage(body);\n if (message !== '') error.message += `:${message}`;\n throw error;\n }\n },\n },\n position: 'perCall',\n});\n\nexport const genVersionCheckPolicy = (\n name: string,\n ignorePath: string,\n versionPromise: Promise<string | Error>,\n geVersion: string,\n ltVersion: string,\n): PipelinePolicy => ({\n name: 'version-check',\n async sendRequest(request, next) {\n if (new URL(request.url).pathname === ignorePath) return next(request);\n const version = await versionPromise;\n if (version instanceof Error) throw version;\n const args = [version, geVersion, ltVersion] as const;\n if (!semverSatisfies(...args)) throw new UnsupportedVersionError(name, ...args);\n return next(request);\n },\n});\n\nexport const genRetryOnFailurePolicy = (\n retryCount: number,\n retryOverallDelay: number,\n): AdditionalPolicyConfig => ({\n policy: {\n name: 'retry-on-failure',\n async sendRequest(request, next) {\n const statusesToNotRetry = [200, 400, 403, 500];\n\n const intervals = new Array(retryCount).fill(0)\n .map((_, idx) => ((idx + 1) / retryCount) ** 2);\n const intervalSum = intervals.reduce((a, b) => a + b);\n const intervalsInMs = intervals.map((el) => (el / intervalSum) * retryOverallDelay);\n\n let error = new RestError('Not expected to be thrown');\n for (let attempt = 0; attempt <= retryCount; attempt += 1) {\n if (attempt !== 0) await pause(intervalsInMs[attempt - 1]);\n try {\n return await next(request);\n } catch (e) {\n if (!(e instanceof RestError)) throw e;\n if (statusesToNotRetry.includes(e.response?.status ?? 0)) throw e;\n error = e;\n }\n }\n throw error;\n },\n },\n position: 'perCall',\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"autorest.mjs","names":["RestError","pause","semverSatisfies","UnsupportedVersionError","genRequestQueuesPolicy","requestQueues","Map","policy","name","sendRequest","request","next","_requestQueues$get","key","headers","get","delete","getResponse","req","Promise","resolve","then","set","catch","position","genCombineGetRequestsPolicy","pendingGetRequests","_pendingGetRequests$g","method","JSON","stringify","url","body","response","genAggressiveCacheGetResponsesPolicy","getRequests","_getRequests$get","genErrorFormatterPolicy","getMessage","error","_error$response","prefix","URL","pathname","slice","bodyAsText","message","code","parsedBody","status","genVersionCheckPolicy","versionCb","geVersion","ltVersion","has","options","requestOptions","customHeaders","args","genRetryOnFailurePolicy","retryCount","retryOverallDelay","_request$headers$get","retryCode","NaN","statusesToNotRetry","filter","c","intervals","Array","fill","map","_","idx","intervalSum","reduce","a","b","intervalsInMs","e","Math","floor","attempt","urlParsed","searchParams","toString","_e$response$status","_e$response","includes"],"sources":["../../src/utils/autorest.ts"],"sourcesContent":["import { RestError, PipelineResponse } from '@azure/core-rest-pipeline';\nimport { AdditionalPolicyConfig, FullOperationResponse, OperationOptions } from '@azure/core-client';\nimport { pause } from './other';\nimport semverSatisfies from './semver-satisfies';\nimport { UnsupportedVersionError } from './errors';\n\nexport const genRequestQueuesPolicy = (): AdditionalPolicyConfig => {\n const requestQueues = new Map<string, Promise<unknown>>();\n\n return {\n policy: {\n name: 'request-queues',\n async sendRequest(request, next) {\n const key = request.headers.get('__queue');\n request.headers.delete('__queue');\n const getResponse = async (): Promise<PipelineResponse> => next(request);\n if (key == null) return getResponse();\n const req = (requestQueues.get(key) ?? Promise.resolve()).then(getResponse);\n requestQueues.set(key, req.catch(() => {}));\n return req;\n },\n },\n position: 'perCall',\n };\n};\n\nexport const genCombineGetRequestsPolicy = (): AdditionalPolicyConfig => {\n const pendingGetRequests = new Map<string, Promise<PipelineResponse>>();\n\n return {\n policy: {\n name: 'combine-get-requests',\n async sendRequest(request, next) {\n if (request.method !== 'GET') return next(request);\n const key = JSON.stringify([request.url, request.body]);\n const response = pendingGetRequests.get(key) ?? next(request);\n pendingGetRequests.set(key, response);\n try {\n return await response;\n } finally {\n pendingGetRequests.delete(key);\n }\n },\n },\n position: 'perCall',\n };\n};\n\nexport const genAggressiveCacheGetResponsesPolicy = (): AdditionalPolicyConfig => {\n const getRequests = new Map<string, Promise<PipelineResponse>>();\n\n return {\n policy: {\n name: 'aggressive-cache-get-responses',\n async sendRequest(request, next) {\n if (request.method !== 'GET') return next(request);\n const key = JSON.stringify([request.url, request.body]);\n const response = getRequests.get(key) ?? next(request);\n getRequests.set(key, response);\n return response;\n },\n },\n position: 'perCall',\n };\n};\n\nexport const genErrorFormatterPolicy = (\n getMessage: (b: any) => string,\n): AdditionalPolicyConfig => ({\n policy: {\n name: 'error-formatter',\n async sendRequest(request, next) {\n try {\n return await next(request);\n } catch (error) {\n if (!(error instanceof RestError) || error.request == null) throw error;\n const prefix = `${new URL(error.request.url).pathname.slice(1)} error`;\n\n if (error.response?.bodyAsText == null) {\n if (error.message === '') error.message = `${prefix}: ${error.code}`;\n throw error;\n }\n\n const body = (error.response as FullOperationResponse).parsedBody;\n error.message = prefix;\n const message = body == null ? ` ${error.response.status} status code` : getMessage(body);\n if (message !== '') error.message += `:${message}`;\n throw error;\n }\n },\n },\n position: 'perCall',\n});\n\nexport const genVersionCheckPolicy = (\n name: string,\n versionCb: (options: OperationOptions) => Promise<string>,\n geVersion: string,\n ltVersion: string,\n): AdditionalPolicyConfig => ({\n policy: {\n name: 'version-check',\n async sendRequest(request, next) {\n if (request.headers.has('__version-check')) {\n request.headers.delete('__version-check');\n return next(request);\n }\n const options = { requestOptions: { customHeaders: { '__version-check': 'true' } } };\n const args = [await versionCb(options), geVersion, ltVersion] as const;\n if (!semverSatisfies(...args)) throw new UnsupportedVersionError(name, ...args);\n return next(request);\n },\n },\n position: 'perCall',\n});\n\nexport const genRetryOnFailurePolicy = (\n retryCount: number,\n retryOverallDelay: number,\n): AdditionalPolicyConfig => ({\n policy: {\n name: 'retry-on-failure',\n async sendRequest(request, next) {\n const retryCode = request.headers.get('__retry-code') ?? NaN;\n request.headers.delete('__retry-code');\n const statusesToNotRetry = [200, 400, 403, 410, 500].filter((c) => c !== +retryCode);\n\n const intervals = new Array(retryCount).fill(0)\n .map((_, idx) => ((idx + 1) / retryCount) ** 2);\n const intervalSum = intervals.reduce((a, b) => a + b, 0);\n const intervalsInMs = intervals.map((e) => Math.floor((e / intervalSum) * retryOverallDelay));\n\n let error = new RestError('Not expected to be thrown');\n for (let attempt = 0; attempt <= retryCount; attempt += 1) {\n if (attempt !== 0) {\n await pause(intervalsInMs[attempt - 1]);\n const urlParsed = new URL(request.url);\n urlParsed.searchParams.set('__sdk-retry', attempt.toString());\n request.url = urlParsed.toString();\n }\n try {\n return await next(request);\n } catch (e) {\n if (!(e instanceof RestError)) throw e;\n if (statusesToNotRetry.includes(e.response?.status ?? 0)) throw e;\n error = e;\n }\n }\n throw error;\n },\n },\n position: 'perCall',\n});\n"],"mappings":"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"}
|
package/es/utils/bytes.mjs
CHANGED
|
@@ -11,8 +11,7 @@ import { NoSerializerFoundError, TypeError } from "./errors.mjs";
|
|
|
11
11
|
* @returns Buffer
|
|
12
12
|
*/
|
|
13
13
|
// eslint-disable-next-line import/prefer-default-export
|
|
14
|
-
export function toBytes(val) {
|
|
15
|
-
let big = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
14
|
+
export function toBytes(val, big = false) {
|
|
16
15
|
// Encode a value to bytes.
|
|
17
16
|
// If the value is an int it will be encoded as bytes big endian
|
|
18
17
|
// Raises ValueError if the input is not an int or string
|
package/es/utils/bytes.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bytes.mjs","names":["BigNumber","NoSerializerFoundError","TypeError","toBytes","val","big","
|
|
1
|
+
{"version":3,"file":"bytes.mjs","names":["BigNumber","NoSerializerFoundError","TypeError","toBytes","val","big","_Buffer","from","Number","isInteger","isBigNumber","toFixed","hexString","toString","length"],"sources":["../../src/utils/bytes.ts"],"sourcesContent":["import BigNumber from 'bignumber.js';\nimport { NoSerializerFoundError, TypeError } from './errors';\n\n/**\n * Convert string, number, or BigNumber to byte array\n * @param val - value to convert\n * @param big - enables force conversion to BigNumber\n * @returns Buffer\n */\n// eslint-disable-next-line import/prefer-default-export\nexport function toBytes(val?: null | string | number | BigNumber, big = false): Buffer {\n // Encode a value to bytes.\n // If the value is an int it will be encoded as bytes big endian\n // Raises ValueError if the input is not an int or string\n\n if (val == null) return Buffer.from([]);\n if (Number.isInteger(val) || BigNumber.isBigNumber(val) || big) {\n if (!BigNumber.isBigNumber(val)) val = new BigNumber(val);\n if (!val.isInteger()) throw new TypeError(`Unexpected not integer value: ${val.toFixed()}`);\n let hexString = val.toString(16);\n if (hexString.length % 2 === 1) hexString = `0${hexString}`;\n return Buffer.from(hexString, 'hex');\n }\n if (typeof val === 'string') {\n return Buffer.from(val);\n }\n throw new NoSerializerFoundError();\n}\n"],"mappings":";;;;AAAA,OAAOA,SAAS,MAAM,cAAc;AAAC,SAC5BC,sBAAsB,EAAEC,SAAS;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,OAAOA,CAACC,GAAwC,EAAEC,GAAG,GAAG,KAAK,EAAU;EACrF;EACA;EACA;;EAEA,IAAID,GAAG,IAAI,IAAI,EAAE,OAAOE,OAAA,CAAOC,IAAI,CAAC,EAAE,CAAC;EACvC,IAAIC,MAAM,CAACC,SAAS,CAACL,GAAG,CAAC,IAAIJ,SAAS,CAACU,WAAW,CAACN,GAAG,CAAC,IAAIC,GAAG,EAAE;IAC9D,IAAI,CAACL,SAAS,CAACU,WAAW,CAACN,GAAG,CAAC,EAAEA,GAAG,GAAG,IAAIJ,SAAS,CAACI,GAAG,CAAC;IACzD,IAAI,CAACA,GAAG,CAACK,SAAS,CAAC,CAAC,EAAE,MAAM,IAAIP,SAAS,CAAE,iCAAgCE,GAAG,CAACO,OAAO,CAAC,CAAE,EAAC,CAAC;IAC3F,IAAIC,SAAS,GAAGR,GAAG,CAACS,QAAQ,CAAC,EAAE,CAAC;IAChC,IAAID,SAAS,CAACE,MAAM,GAAG,CAAC,KAAK,CAAC,EAAEF,SAAS,GAAI,IAAGA,SAAU,EAAC;IAC3D,OAAON,OAAA,CAAOC,IAAI,CAACK,SAAS,EAAE,KAAK,CAAC;EACtC;EACA,IAAI,OAAOR,GAAG,KAAK,QAAQ,EAAE;IAC3B,OAAOE,OAAA,CAAOC,IAAI,CAACH,GAAG,CAAC;EACzB;EACA,MAAM,IAAIH,sBAAsB,CAAC,CAAC;AACpC"}
|
package/es/utils/crypto.d.ts
CHANGED
|
@@ -9,11 +9,15 @@ import { Encoded, Encoding } from './encoder';
|
|
|
9
9
|
export declare function getAddressFromPriv(secret: string | Uint8Array): Encoded.AccountAddress;
|
|
10
10
|
/**
|
|
11
11
|
* Check if address is valid
|
|
12
|
-
* @param
|
|
13
|
-
* @param prefix - Transaction prefix. Default: 'ak'
|
|
14
|
-
* @returns is valid
|
|
12
|
+
* @param maybeAddress - Address to check
|
|
15
13
|
*/
|
|
16
|
-
export declare function isAddressValid(
|
|
14
|
+
export declare function isAddressValid(maybeAddress: string): maybeAddress is Encoded.AccountAddress;
|
|
15
|
+
/**
|
|
16
|
+
* Check if data is encoded in one of provided encodings
|
|
17
|
+
* @param maybeEncoded - Data to check
|
|
18
|
+
* @param encodings - Rest parameters with encodings to check against
|
|
19
|
+
*/
|
|
20
|
+
export declare function isAddressValid<E extends Encoding>(maybeEncoded: string, ...encodings: E[]): maybeEncoded is Encoded.Generic<E>;
|
|
17
21
|
/**
|
|
18
22
|
* Generate a random salt (positive integer)
|
|
19
23
|
* @returns random salt
|
package/es/utils/crypto.mjs
CHANGED
|
@@ -13,7 +13,7 @@ import _varuintBitcoin from 'varuint-bitcoin';
|
|
|
13
13
|
const {
|
|
14
14
|
encode: varuintEncode
|
|
15
15
|
} = _varuintBitcoin;
|
|
16
|
-
import { concatBuffers } from "./other.mjs";
|
|
16
|
+
import { concatBuffers, isItemOfArray } from "./other.mjs";
|
|
17
17
|
import { decode, encode, Encoding } from "./encoder.mjs";
|
|
18
18
|
import { ArgumentError } from "./errors.mjs";
|
|
19
19
|
/**
|
|
@@ -29,20 +29,25 @@ export function getAddressFromPriv(secret) {
|
|
|
29
29
|
|
|
30
30
|
/**
|
|
31
31
|
* Check if address is valid
|
|
32
|
-
* @param
|
|
33
|
-
* @param prefix - Transaction prefix. Default: 'ak'
|
|
34
|
-
* @returns is valid
|
|
32
|
+
* @param maybeAddress - Address to check
|
|
35
33
|
*/
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Check if data is encoded in one of provided encodings
|
|
37
|
+
* @param maybeEncoded - Data to check
|
|
38
|
+
* @param encodings - Rest parameters with encodings to check against
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
export function isAddressValid(maybeEncoded, ...encodings) {
|
|
42
|
+
if (encodings.length === 0) encodings = [Encoding.AccountAddress];
|
|
38
43
|
try {
|
|
39
|
-
decode(
|
|
40
|
-
const
|
|
41
|
-
if (
|
|
42
|
-
throw new ArgumentError('Encoded string type',
|
|
44
|
+
decode(maybeEncoded);
|
|
45
|
+
const encoding = maybeEncoded.split('_')[0];
|
|
46
|
+
if (!isItemOfArray(encoding, encodings)) {
|
|
47
|
+
throw new ArgumentError('Encoded string type', encodings.length > 1 ? `one of ${encodings.join(', ')}` : encodings[0], encoding);
|
|
43
48
|
}
|
|
44
49
|
return true;
|
|
45
|
-
} catch (
|
|
50
|
+
} catch (error) {
|
|
46
51
|
return false;
|
|
47
52
|
}
|
|
48
53
|
}
|
|
@@ -108,8 +113,7 @@ export function generateKeyPairFromSecret(secret) {
|
|
|
108
113
|
* @returns Key pair
|
|
109
114
|
*/
|
|
110
115
|
|
|
111
|
-
export function generateKeyPair() {
|
|
112
|
-
let raw = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
116
|
+
export function generateKeyPair(raw = false) {
|
|
113
117
|
const keyPair = nacl.sign.keyPair();
|
|
114
118
|
const publicBuffer = _Buffer.from(keyPair.publicKey);
|
|
115
119
|
const secretBuffer = _Buffer.from(keyPair.secretKey);
|
package/es/utils/crypto.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.mjs","names":["nacl","_blakejsBlake2bJs","blake2b","_varuintBitcoin","encode","varuintEncode","concatBuffers","decode","Encoding","ArgumentError","getAddressFromPriv","secret","secretBuffer","_Buffer","from","keys","sign","keyPair","fromSecretKey","publicKey","AccountAddress","isAddressValid","address","prefix","arguments","length","undefined","actualPrefix","split","e","genSalt","random","BigUint64Array","randomBytes","buffer","Number","BigInt","MAX_SAFE_INTEGER","encodeUnsigned","value","binary","allocUnsafe","writeUInt32BE","slice","findIndex","i","hash","input","encodeContractAddress","owner","nonce","ContractAddress","generateKeyPairFromSecret","generateKeyPair","raw","publicBuffer","secretKey","toString","data","privateKey","detached","verify","signature","messagePrefix","messagePrefixLength","messageToHash","message","msg","signMessage","verifyMessage","isValidKeypair","publicKeyBuffer"],"sources":["../../src/utils/crypto.ts"],"sourcesContent":["import nacl, { SignKeyPair } from 'tweetnacl';\n// js extension is required for mjs build, not importing the whole package to reduce bundle size\n// eslint-disable-next-line import/extensions\nimport { blake2b } from 'blakejs/blake2b.js';\nimport { encode as varuintEncode } from 'varuint-bitcoin';\n\nimport { concatBuffers } from './other';\nimport {\n decode, encode, Encoded, Encoding,\n} from './encoder';\nimport { ArgumentError } from './errors';\n\n/**\n * Generate address from secret key\n * @param secret - Private key as hex string\n * @returns Public key encoded as address\n */\nexport function getAddressFromPriv(secret: string | Uint8Array): Encoded.AccountAddress {\n const secretBuffer = typeof secret === 'string' ? Buffer.from(secret, 'hex') : secret;\n const keys = nacl.sign.keyPair.fromSecretKey(secretBuffer);\n return encode(keys.publicKey, Encoding.AccountAddress);\n}\n\n/**\n * Check if address is valid\n * @param address - Address\n * @param prefix - Transaction prefix. Default: 'ak'\n * @returns is valid\n */\nexport function isAddressValid(\n address: string,\n prefix: Encoding = Encoding.AccountAddress,\n): boolean {\n try {\n decode(address as Encoded.Generic<typeof prefix>);\n const actualPrefix = address.split('_')[0];\n if (actualPrefix !== prefix) {\n throw new ArgumentError('Encoded string type', prefix, actualPrefix);\n }\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Generate a random salt (positive integer)\n * @returns random salt\n */\nexport function genSalt(): number {\n const [random] = new BigUint64Array(nacl.randomBytes(8).buffer);\n return Number(random % BigInt(Number.MAX_SAFE_INTEGER));\n}\n\n/**\n * Converts a positive integer to the smallest possible\n * representation in a binary digit representation\n * @param value - Value to encode\n * @returns Encoded number\n */\nexport function encodeUnsigned(value: number): Buffer {\n const binary = Buffer.allocUnsafe(4);\n binary.writeUInt32BE(value);\n return binary.slice(binary.findIndex((i) => i !== 0));\n}\n\n/**\n * Calculate 256bits Blake2b hash of `input`\n * @param input - Data to hash\n * @returns Hash\n */\nexport function hash(input: string | Uint8Array): Buffer {\n return Buffer.from(blake2b(input, undefined, 32)); // 256 bits\n}\n\n// Todo Duplicated in tx builder. remove\n/**\n * Compute contract address\n * @category contract\n * @param owner - Address of contract owner\n * @param nonce - Round when contract was created\n * @returns Contract address\n */\nexport function encodeContractAddress(\n owner: Encoded.AccountAddress,\n nonce: number,\n): Encoded.ContractAddress {\n const publicKey = decode(owner);\n const binary = concatBuffers([publicKey, encodeUnsigned(nonce)]);\n return encode(hash(binary), Encoding.ContractAddress);\n}\n\n// KEY-PAIR HELPERS\n\n/**\n * Generate keyPair from secret key\n * @param secret - secret key\n * @returns Object with Private(privateKey) and Public(publicKey) keys\n */\nexport function generateKeyPairFromSecret(secret: Uint8Array): SignKeyPair {\n return nacl.sign.keyPair.fromSecretKey(secret);\n}\n\n/**\n * Generate a random ED25519 keypair\n * @param raw - Whether to return raw (binary) keys\n * @returns Key pair\n */\nexport function generateKeyPair(raw: true): { publicKey: Buffer; secretKey: Buffer };\nexport function generateKeyPair(raw?: false): {\n publicKey: Encoded.AccountAddress; secretKey: string;\n};\nexport function generateKeyPair(raw = false): {\n publicKey: Encoded.AccountAddress | Buffer;\n secretKey: string | Buffer;\n} {\n const keyPair = nacl.sign.keyPair();\n const publicBuffer = Buffer.from(keyPair.publicKey);\n const secretBuffer = Buffer.from(keyPair.secretKey);\n\n if (raw) {\n return {\n publicKey: publicBuffer,\n secretKey: secretBuffer,\n };\n }\n return {\n publicKey: encode(publicBuffer, Encoding.AccountAddress),\n secretKey: secretBuffer.toString('hex'),\n };\n}\n\n// SIGNATURES\n\n/**\n * Generate signature\n * @param data - Data to sign\n * @param privateKey - Key to sign with\n * @returns Signature\n */\nexport function sign(data: string | Uint8Array, privateKey: string | Uint8Array): Uint8Array {\n return nacl.sign.detached(Buffer.from(data), Buffer.from(privateKey));\n}\n\n/**\n * Verify that signature was signed by public key\n * @param data - Data that was signed\n * @param signature - Signature of data\n * @param address - Address to verify against\n * @returns is data was signed by address\n */\nexport function verify(\n data: Uint8Array,\n signature: Uint8Array,\n address: Encoded.AccountAddress,\n): boolean {\n return nacl.sign.detached.verify(data, signature, decode(address));\n}\n\nconst messagePrefix = Buffer.from('aeternity Signed Message:\\n', 'utf8');\nexport const messagePrefixLength = varuintEncode(messagePrefix.length);\n\n// TODO: consider rename to hashMessage\nexport function messageToHash(message: string): Buffer {\n const msg = Buffer.from(message, 'utf8');\n return hash(concatBuffers([messagePrefixLength, messagePrefix, varuintEncode(msg.length), msg]));\n}\n\nexport function signMessage(message: string, privateKey: string | Buffer): Uint8Array {\n return sign(messageToHash(message), privateKey);\n}\n\n/**\n * Verify that message was signed by address\n * @param message - Message that was signed\n * @param signature - Signature of message\n * @param address - Address to verify against\n * @returns is data was signed by address\n */\n// TODO: deprecate in favour of `verify(messageToHash(message), ...`, also the name is confusing\n// it should contain \"signature\"\nexport function verifyMessage(\n message: string,\n signature: Uint8Array,\n address: Encoded.AccountAddress,\n): boolean {\n return verify(messageToHash(message), signature, address);\n}\n\n/**\n * Check key pair for validity\n *\n * Signs a message, and then verifies that signature\n * @param privateKey - Private key to verify\n * @param publicKey - Public key to verify as hex string\n * @returns Valid?\n */\nexport function isValidKeypair(\n privateKey: string | Uint8Array,\n publicKey: string | Uint8Array,\n): boolean {\n const message = Buffer.from('TheMessage');\n const signature = sign(message, privateKey);\n const publicKeyBuffer = typeof publicKey === 'string' ? Buffer.from(publicKey, 'hex') : publicKey;\n return verify(message, signature, encode(publicKeyBuffer, Encoding.AccountAddress));\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"crypto.mjs","names":["nacl","_blakejsBlake2bJs","blake2b","_varuintBitcoin","encode","varuintEncode","concatBuffers","isItemOfArray","decode","Encoding","ArgumentError","getAddressFromPriv","secret","secretBuffer","_Buffer","from","keys","sign","keyPair","fromSecretKey","publicKey","AccountAddress","isAddressValid","maybeEncoded","encodings","length","encoding","split","join","error","genSalt","random","BigUint64Array","randomBytes","buffer","Number","BigInt","MAX_SAFE_INTEGER","encodeUnsigned","value","binary","allocUnsafe","writeUInt32BE","slice","findIndex","i","hash","input","undefined","encodeContractAddress","owner","nonce","ContractAddress","generateKeyPairFromSecret","generateKeyPair","raw","publicBuffer","secretKey","toString","data","privateKey","detached","verify","signature","address","messagePrefix","messagePrefixLength","messageToHash","message","msg","signMessage","verifyMessage","isValidKeypair","publicKeyBuffer"],"sources":["../../src/utils/crypto.ts"],"sourcesContent":["import nacl, { SignKeyPair } from 'tweetnacl';\n// js extension is required for mjs build, not importing the whole package to reduce bundle size\n// eslint-disable-next-line import/extensions\nimport { blake2b } from 'blakejs/blake2b.js';\nimport { encode as varuintEncode } from 'varuint-bitcoin';\n\nimport { concatBuffers, isItemOfArray } from './other';\nimport {\n decode, encode, Encoded, Encoding,\n} from './encoder';\nimport { ArgumentError } from './errors';\n\n/**\n * Generate address from secret key\n * @param secret - Private key as hex string\n * @returns Public key encoded as address\n */\nexport function getAddressFromPriv(secret: string | Uint8Array): Encoded.AccountAddress {\n const secretBuffer = typeof secret === 'string' ? Buffer.from(secret, 'hex') : secret;\n const keys = nacl.sign.keyPair.fromSecretKey(secretBuffer);\n return encode(keys.publicKey, Encoding.AccountAddress);\n}\n\n/**\n * Check if address is valid\n * @param maybeAddress - Address to check\n */\nexport function isAddressValid(maybeAddress: string): maybeAddress is Encoded.AccountAddress;\n/**\n * Check if data is encoded in one of provided encodings\n * @param maybeEncoded - Data to check\n * @param encodings - Rest parameters with encodings to check against\n */\nexport function isAddressValid<E extends Encoding>(\n maybeEncoded: string,\n ...encodings: E[]\n): maybeEncoded is Encoded.Generic<E>;\nexport function isAddressValid(maybeEncoded: string, ...encodings: Encoding[]): boolean {\n if (encodings.length === 0) encodings = [Encoding.AccountAddress];\n try {\n decode(maybeEncoded as Encoded.Any);\n const encoding = maybeEncoded.split('_')[0];\n if (!isItemOfArray(encoding, encodings)) {\n throw new ArgumentError(\n 'Encoded string type',\n encodings.length > 1 ? `one of ${encodings.join(', ')}` : encodings[0],\n encoding,\n );\n }\n return true;\n } catch (error) {\n return false;\n }\n}\n\n/**\n * Generate a random salt (positive integer)\n * @returns random salt\n */\nexport function genSalt(): number {\n const [random] = new BigUint64Array(nacl.randomBytes(8).buffer);\n return Number(random % BigInt(Number.MAX_SAFE_INTEGER));\n}\n\n/**\n * Converts a positive integer to the smallest possible\n * representation in a binary digit representation\n * @param value - Value to encode\n * @returns Encoded number\n */\nexport function encodeUnsigned(value: number): Buffer {\n const binary = Buffer.allocUnsafe(4);\n binary.writeUInt32BE(value);\n return binary.slice(binary.findIndex((i) => i !== 0));\n}\n\n/**\n * Calculate 256bits Blake2b hash of `input`\n * @param input - Data to hash\n * @returns Hash\n */\nexport function hash(input: string | Uint8Array): Buffer {\n return Buffer.from(blake2b(input, undefined, 32)); // 256 bits\n}\n\n// Todo Duplicated in tx builder. remove\n/**\n * Compute contract address\n * @category contract\n * @param owner - Address of contract owner\n * @param nonce - Round when contract was created\n * @returns Contract address\n */\nexport function encodeContractAddress(\n owner: Encoded.AccountAddress,\n nonce: number,\n): Encoded.ContractAddress {\n const publicKey = decode(owner);\n const binary = concatBuffers([publicKey, encodeUnsigned(nonce)]);\n return encode(hash(binary), Encoding.ContractAddress);\n}\n\n// KEY-PAIR HELPERS\n\n/**\n * Generate keyPair from secret key\n * @param secret - secret key\n * @returns Object with Private(privateKey) and Public(publicKey) keys\n */\nexport function generateKeyPairFromSecret(secret: Uint8Array): SignKeyPair {\n return nacl.sign.keyPair.fromSecretKey(secret);\n}\n\n/**\n * Generate a random ED25519 keypair\n * @param raw - Whether to return raw (binary) keys\n * @returns Key pair\n */\nexport function generateKeyPair(raw: true): { publicKey: Buffer; secretKey: Buffer };\nexport function generateKeyPair(raw?: false): {\n publicKey: Encoded.AccountAddress; secretKey: string;\n};\nexport function generateKeyPair(raw = false): {\n publicKey: Encoded.AccountAddress | Buffer;\n secretKey: string | Buffer;\n} {\n const keyPair = nacl.sign.keyPair();\n const publicBuffer = Buffer.from(keyPair.publicKey);\n const secretBuffer = Buffer.from(keyPair.secretKey);\n\n if (raw) {\n return {\n publicKey: publicBuffer,\n secretKey: secretBuffer,\n };\n }\n return {\n publicKey: encode(publicBuffer, Encoding.AccountAddress),\n secretKey: secretBuffer.toString('hex'),\n };\n}\n\n// SIGNATURES\n\n/**\n * Generate signature\n * @param data - Data to sign\n * @param privateKey - Key to sign with\n * @returns Signature\n */\nexport function sign(data: string | Uint8Array, privateKey: string | Uint8Array): Uint8Array {\n return nacl.sign.detached(Buffer.from(data), Buffer.from(privateKey));\n}\n\n/**\n * Verify that signature was signed by public key\n * @param data - Data that was signed\n * @param signature - Signature of data\n * @param address - Address to verify against\n * @returns is data was signed by address\n */\nexport function verify(\n data: Uint8Array,\n signature: Uint8Array,\n address: Encoded.AccountAddress,\n): boolean {\n return nacl.sign.detached.verify(data, signature, decode(address));\n}\n\nconst messagePrefix = Buffer.from('aeternity Signed Message:\\n', 'utf8');\nexport const messagePrefixLength = varuintEncode(messagePrefix.length);\n\n// TODO: consider rename to hashMessage\nexport function messageToHash(message: string): Buffer {\n const msg = Buffer.from(message, 'utf8');\n return hash(concatBuffers([messagePrefixLength, messagePrefix, varuintEncode(msg.length), msg]));\n}\n\nexport function signMessage(message: string, privateKey: string | Buffer): Uint8Array {\n return sign(messageToHash(message), privateKey);\n}\n\n/**\n * Verify that message was signed by address\n * @param message - Message that was signed\n * @param signature - Signature of message\n * @param address - Address to verify against\n * @returns is data was signed by address\n */\n// TODO: deprecate in favour of `verify(messageToHash(message), ...`, also the name is confusing\n// it should contain \"signature\"\nexport function verifyMessage(\n message: string,\n signature: Uint8Array,\n address: Encoded.AccountAddress,\n): boolean {\n return verify(messageToHash(message), signature, address);\n}\n\n/**\n * Check key pair for validity\n *\n * Signs a message, and then verifies that signature\n * @param privateKey - Private key to verify\n * @param publicKey - Public key to verify as hex string\n * @returns Valid?\n */\nexport function isValidKeypair(\n privateKey: string | Uint8Array,\n publicKey: string | Uint8Array,\n): boolean {\n const message = Buffer.from('TheMessage');\n const signature = sign(message, privateKey);\n const publicKeyBuffer = typeof publicKey === 'string' ? Buffer.from(publicKey, 'hex') : publicKey;\n return verify(message, signature, encode(publicKeyBuffer, Encoding.AccountAddress));\n}\n"],"mappings":"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"}
|
package/es/utils/errors.d.ts
CHANGED
|
@@ -146,6 +146,12 @@ export declare class NotImplementedError extends BaseError {
|
|
|
146
146
|
export declare class UnsupportedVersionError extends BaseError {
|
|
147
147
|
constructor(dependency: string, version: string, geVersion: string, ltVersion: string);
|
|
148
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* @category exception
|
|
151
|
+
*/
|
|
152
|
+
export declare class LogicError extends BaseError {
|
|
153
|
+
constructor(message: string);
|
|
154
|
+
}
|
|
149
155
|
/**
|
|
150
156
|
* @category exception
|
|
151
157
|
*/
|
package/es/utils/errors.mjs
CHANGED
|
@@ -241,6 +241,16 @@ export class UnsupportedVersionError extends BaseError {
|
|
|
241
241
|
}
|
|
242
242
|
}
|
|
243
243
|
|
|
244
|
+
/**
|
|
245
|
+
* @category exception
|
|
246
|
+
*/
|
|
247
|
+
export class LogicError extends BaseError {
|
|
248
|
+
constructor(message) {
|
|
249
|
+
super(message);
|
|
250
|
+
this.name = 'LogicError';
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
244
254
|
/**
|
|
245
255
|
* @category exception
|
|
246
256
|
*/
|
|
@@ -255,8 +265,7 @@ export class InternalError extends BaseError {
|
|
|
255
265
|
* @category exception
|
|
256
266
|
*/
|
|
257
267
|
export class UnexpectedTsError extends InternalError {
|
|
258
|
-
constructor() {
|
|
259
|
-
let message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'Expected to not happen, required for TS';
|
|
268
|
+
constructor(message = 'Expected to not happen, required for TS') {
|
|
260
269
|
super(message);
|
|
261
270
|
this.name = 'UnexpectedTsError';
|
|
262
271
|
}
|
|
@@ -540,10 +549,7 @@ export class MissingEventDefinitionError extends ContractError {
|
|
|
540
549
|
*/
|
|
541
550
|
export class AmbiguousEventDefinitionError extends ContractError {
|
|
542
551
|
constructor(eventAddress, matchedEvents) {
|
|
543
|
-
super(`Found multiple definitions of "${matchedEvents[0][1]}" event with different types emitted by` + ` ${eventAddress} in ${matchedEvents.map(
|
|
544
|
-
let [name] = _ref;
|
|
545
|
-
return `"${name}"`;
|
|
546
|
-
}).join(', ')} contracts` + ' (use contractAddressToName option to specify contract name corresponding to address)');
|
|
552
|
+
super(`Found multiple definitions of "${matchedEvents[0][1]}" event with different types emitted by` + ` ${eventAddress} in ${matchedEvents.map(([name]) => `"${name}"`).join(', ')} contracts` + ' (use contractAddressToName option to specify contract name corresponding to address)');
|
|
547
553
|
this.name = 'AmbiguousEventDefinitionError';
|
|
548
554
|
}
|
|
549
555
|
}
|