@aeternity/aepp-sdk 13.2.1 → 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 +7288 -9464
- 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.d.ts +1 -1
- package/es/Middleware.mjs +32 -28
- 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 +11 -3
- package/es/Node.mjs +65 -57
- 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.d.ts +2 -5
- package/es/aepp-wallet-communication/wallet-detector.mjs +13 -9
- 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 +10 -2
- package/es/contract/Contract.mjs +83 -79
- 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 +12 -11
- package/es/contract/compiler/Cli.mjs +52 -25
- 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 +48 -0
- package/es/deprecated.mjs +66 -1
- package/es/deprecated.mjs.map +1 -1
- package/es/index-browser.d.ts +11 -6
- package/es/index-browser.mjs +10 -6
- 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 +6 -5
- package/es/tx/builder/constants.mjs +7 -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.d.ts +1 -1
- package/es/tx/builder/field-types/ct-version.mjs +4 -5
- 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 +57 -39
- 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 +53 -4
- 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 +41 -25
- 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 +9 -5
- package/es/utils/crypto.mjs +18 -14
- 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.d.ts +0 -2
- package/es/utils/typed-data.mjs +8 -23
- 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 +17 -9
- package/src/MiddlewareSubscriber.ts +1 -1
- package/src/Node.ts +51 -21
- 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 +14 -1
- package/src/aepp-wallet-communication/schema.ts +2 -0
- package/src/aepp-wallet-communication/wallet-detector.ts +10 -10
- 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 +36 -12
- package/src/contract/compiler/Base.ts +15 -8
- package/src/contract/compiler/Cli.ts +44 -23
- 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 +55 -1
- package/src/index-browser.ts +18 -11
- 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 +7 -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/ct-version.ts +1 -1
- package/src/tx/builder/field-types/entry.ts +1 -4
- package/src/tx/builder/field-types/fee.ts +72 -44
- package/src/tx/builder/field-types/gas-limit.ts +4 -4
- package/src/tx/builder/field-types/gas-price.ts +59 -3
- 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 +37 -28
- package/src/utils/crypto.ts +24 -14
- 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/typed-data.ts +4 -30
- 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/Middleware.d.ts +1 -1
- package/types-legacy/ts4.2/Node.d.ts +15 -2
- 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/aepp-wallet-communication/wallet-detector.d.ts +2 -5
- 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 +10 -2
- package/types-legacy/ts4.2/contract/compiler/Base.d.ts +14 -8
- package/types-legacy/ts4.2/contract/compiler/Cli.d.ts +12 -11
- 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 +48 -0
- package/types-legacy/ts4.2/index-browser.d.ts +11 -6
- 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 +6 -5
- 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/ct-version.d.ts +1 -1
- 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 +9 -5
- 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/typed-data.d.ts +0 -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/Middleware.d.ts +1 -1
- package/types-legacy/ts4.5/Node.d.ts +15 -2
- 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/aepp-wallet-communication/wallet-detector.d.ts +2 -5
- 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 +10 -2
- package/types-legacy/ts4.5/contract/compiler/Base.d.ts +14 -8
- package/types-legacy/ts4.5/contract/compiler/Cli.d.ts +12 -11
- 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 +48 -0
- package/types-legacy/ts4.5/index-browser.d.ts +11 -6
- 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 +6 -5
- 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/ct-version.d.ts +1 -1
- 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 +9 -5
- 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/typed-data.d.ts +0 -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/channel/internal.mjs
CHANGED
|
@@ -8,14 +8,14 @@ import { ChannelCallError, ChannelPingTimedOutError, UnexpectedTsError, UnknownC
|
|
|
8
8
|
import { encodeContractAddress } from "../utils/crypto.mjs";
|
|
9
9
|
import { buildTx } from "../tx/builder/index.mjs";
|
|
10
10
|
import { ensureError } from "../utils/other.mjs"; // TODO: SignTx shouldn't return number or null
|
|
11
|
+
/**
|
|
12
|
+
* @see {@link https://github.com/aeternity/protocol/blob/6734de2e4c7cce7e5e626caa8305fb535785131d/node/api/channels_api_usage.md#channel-establishing-parameters}
|
|
13
|
+
*/
|
|
11
14
|
// Send ping message every 10 seconds
|
|
12
15
|
const PING_TIMEOUT_MS = 10000;
|
|
13
16
|
// Close connection if pong message is not received within 15 seconds
|
|
14
17
|
const PONG_TIMEOUT_MS = 15000;
|
|
15
|
-
export function emit(channel) {
|
|
16
|
-
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
17
|
-
args[_key - 1] = arguments[_key];
|
|
18
|
-
}
|
|
18
|
+
export function emit(channel, ...args) {
|
|
19
19
|
const [eventName, ...rest] = args;
|
|
20
20
|
channel._eventEmitter.emit(eventName, ...rest);
|
|
21
21
|
}
|
|
@@ -24,6 +24,7 @@ function enterState(channel, nextState) {
|
|
|
24
24
|
if (nextState == null) {
|
|
25
25
|
throw new UnknownChannelStateError();
|
|
26
26
|
}
|
|
27
|
+
channel._debug('enter state', nextState.handler.name);
|
|
27
28
|
channel._fsm = nextState;
|
|
28
29
|
if ((nextState === null || nextState === void 0 || (_nextState$handler = nextState.handler) === null || _nextState$handler === void 0 ? void 0 : _nextState$handler.enter) != null) {
|
|
29
30
|
nextState.handler.enter(channel);
|
|
@@ -34,7 +35,8 @@ function enterState(channel, nextState) {
|
|
|
34
35
|
|
|
35
36
|
// TODO: rewrite to enum
|
|
36
37
|
|
|
37
|
-
export function changeStatus(channel, newStatus) {
|
|
38
|
+
export function changeStatus(channel, newStatus, debug) {
|
|
39
|
+
channel._debug(newStatus, `(prev. ${channel._status})`, debug !== null && debug !== void 0 ? debug : '');
|
|
38
40
|
if (newStatus === channel._status) return;
|
|
39
41
|
channel._status = newStatus;
|
|
40
42
|
emit(channel, 'statusChanged', newStatus);
|
|
@@ -44,14 +46,13 @@ export function changeState(channel, newState) {
|
|
|
44
46
|
emit(channel, 'stateChanged', newState);
|
|
45
47
|
}
|
|
46
48
|
function send(channel, message) {
|
|
47
|
-
|
|
49
|
+
channel._debug('send message', message.method, message.params);
|
|
48
50
|
channel._websocket.send(JsonBig.stringify({
|
|
49
51
|
jsonrpc: '2.0',
|
|
50
52
|
...message
|
|
51
53
|
}));
|
|
52
54
|
}
|
|
53
|
-
export function notify(channel, method) {
|
|
54
|
-
let params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
55
|
+
export function notify(channel, method, params = {}) {
|
|
55
56
|
send(channel, {
|
|
56
57
|
method,
|
|
57
58
|
params
|
|
@@ -141,7 +142,7 @@ function ping(channel) {
|
|
|
141
142
|
}
|
|
142
143
|
function onMessage(channel, data) {
|
|
143
144
|
const message = JsonBig.parse(data);
|
|
144
|
-
|
|
145
|
+
channel._debug('received message', message.method, message.params);
|
|
145
146
|
if (message.id != null) {
|
|
146
147
|
const callback = channel._rpcCallbacks.get(message.id);
|
|
147
148
|
if (callback == null) {
|
|
@@ -186,35 +187,25 @@ export async function call(channel, method, params) {
|
|
|
186
187
|
});
|
|
187
188
|
});
|
|
188
189
|
}
|
|
189
|
-
export async function initialize(channel, connectionHandler, openHandler,
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
} = _ref;
|
|
190
|
+
export async function initialize(channel, connectionHandler, openHandler, {
|
|
191
|
+
url,
|
|
192
|
+
...channelOptions
|
|
193
|
+
}) {
|
|
194
194
|
channel._options = {
|
|
195
195
|
url,
|
|
196
196
|
...channelOptions
|
|
197
197
|
};
|
|
198
|
-
channel._fsm = {
|
|
199
|
-
handler: connectionHandler
|
|
200
|
-
};
|
|
201
198
|
const wsUrl = new URL(url);
|
|
202
|
-
Object.entries(channelOptions).filter(
|
|
203
|
-
let [key] = _ref2;
|
|
204
|
-
return !['sign', 'debug'].includes(key);
|
|
205
|
-
}).forEach(_ref3 => {
|
|
206
|
-
let [key, value] = _ref3;
|
|
207
|
-
return wsUrl.searchParams.set(pascalToSnake(key), value.toString());
|
|
208
|
-
});
|
|
199
|
+
Object.entries(channelOptions).filter(([key]) => !['sign', 'debug'].includes(key)).forEach(([key, value]) => wsUrl.searchParams.set(pascalToSnake(key), value.toString()));
|
|
209
200
|
wsUrl.searchParams.set('protocol', 'json-rpc');
|
|
210
201
|
changeStatus(channel, 'connecting');
|
|
211
202
|
channel._websocket = new W3CWebSocket(wsUrl.toString());
|
|
212
203
|
await new Promise((resolve, reject) => {
|
|
213
204
|
Object.assign(channel._websocket, {
|
|
214
205
|
onerror: reject,
|
|
215
|
-
onopen: async
|
|
206
|
+
onopen: async event => {
|
|
216
207
|
resolve();
|
|
217
|
-
changeStatus(channel, 'connected');
|
|
208
|
+
changeStatus(channel, 'connected', event);
|
|
218
209
|
if (channelOptions.reconnectTx != null) {
|
|
219
210
|
enterState(channel, {
|
|
220
211
|
handler: openHandler
|
|
@@ -226,19 +217,20 @@ export async function initialize(channel, connectionHandler, openHandler, _ref)
|
|
|
226
217
|
throw new ChannelError('`signedTx` missed in state while reconnection');
|
|
227
218
|
}
|
|
228
219
|
changeState(channel, buildTx(signedTx));
|
|
220
|
+
} else {
|
|
221
|
+
enterState(channel, {
|
|
222
|
+
handler: connectionHandler
|
|
223
|
+
});
|
|
229
224
|
}
|
|
230
225
|
ping(channel);
|
|
231
226
|
},
|
|
232
|
-
onclose:
|
|
233
|
-
changeStatus(channel, 'disconnected');
|
|
227
|
+
onclose: event => {
|
|
228
|
+
changeStatus(channel, 'disconnected', event);
|
|
234
229
|
clearTimeout(channel._pingTimeoutId);
|
|
235
230
|
},
|
|
236
|
-
onmessage:
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
} = _ref4;
|
|
240
|
-
return onMessage(channel, data);
|
|
241
|
-
}
|
|
231
|
+
onmessage: ({
|
|
232
|
+
data
|
|
233
|
+
}) => onMessage(channel, data)
|
|
242
234
|
});
|
|
243
235
|
});
|
|
244
236
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.mjs","names":["_websocket","w3cwebsocket","W3CWebSocket","JsonBig","pascalToSnake","ChannelCallError","ChannelPingTimedOutError","UnexpectedTsError","UnknownChannelStateError","ChannelIncomingMessageError","ChannelError","encodeContractAddress","buildTx","ensureError","PING_TIMEOUT_MS","PONG_TIMEOUT_MS","emit","channel","_len","arguments","length","args","Array","_key","eventName","rest","_eventEmitter","enterState","nextState","_nextState$handler","_fsm","handler","enter","dequeueAction","changeStatus","newStatus","_status","changeState","newState","_state","send","message","_options","debug","console","log","stringify","jsonrpc","notify","method","params","undefined","_isActionQueueLocked","queue","_actionQueue","index","findIndex","action","guard","filter","_","i","enqueueAction","promise","Promise","resolve","reject","push","res","state","handleMessage","_message$params","st","data","updates","op","name","_message$params2","round","owner","dequeueMessage","_isMessageQueueLocked","_messageQueue","shift","error","disconnect","close","clearTimeout","_pingTimeoutId","ping","setTimeout","onMessage","parse","id","callback","_rpcCallbacks","get","delete","channel_id","_channelId","call","_nextRpcMessageId","set","_message$error$data$","details","result","initialize","connectionHandler","openHandler","_ref","url","channelOptions","wsUrl","URL","Object","entries","_ref2","key","includes","forEach","_ref3","value","searchParams","toString","assign","onerror","onopen","reconnectTx","signedTx","onclose","onmessage","_ref4"],"sources":["../../src/channel/internal.ts"],"sourcesContent":["import { w3cwebsocket as W3CWebSocket } from 'websocket';\nimport BigNumber from 'bignumber.js';\nimport type Channel from './Base';\nimport JsonBig from '../utils/json-big';\nimport { pascalToSnake } from '../utils/string';\nimport { Encoded } from '../utils/encoder';\nimport {\n BaseError,\n ChannelCallError,\n ChannelPingTimedOutError,\n UnexpectedTsError,\n UnknownChannelStateError,\n ChannelIncomingMessageError,\n ChannelError,\n} from '../utils/errors';\nimport { encodeContractAddress } from '../utils/crypto';\nimport { buildTx } from '../tx/builder';\nimport { ensureError } from '../utils/other';\n\nexport interface ChannelEvents {\n statusChanged: (status: ChannelStatus) => void;\n stateChanged: (tx: Encoded.Transaction | '') => void;\n depositLocked: () => void;\n ownDepositLocked: () => void;\n withdrawLocked: () => void;\n ownWithdrawLocked: () => void;\n peerDisconnected: () => void;\n channelReestablished: () => void;\n error: (error: Error) => void;\n onChainTx: (tx: Encoded.Transaction, details: { info: string; type: string }) => void;\n message: (message: string | Object) => void;\n newContract: (contractAddress: Encoded.ContractAddress) => void;\n}\n\nexport interface ChannelAction {\n guard: (channel: Channel, state?: ChannelFsm) => boolean;\n action: (channel: Channel, state?: ChannelFsm) => ChannelFsm;\n}\n\ninterface SignOptions {\n updates?: any[];\n [k: string]: any;\n}\nexport type SignTxWithTag = (tag: string, tx: Encoded.Transaction, options?: SignOptions) => (\n Promise<Encoded.Transaction>\n);\n// TODO: SignTx shouldn't return number or null\nexport type SignTx = (tx: Encoded.Transaction, options?: SignOptions) => (\n Promise<Encoded.Transaction | number | null>\n);\n\nexport interface ChannelOptions {\n existingFsmId?: Encoded.Bytearray;\n url: string;\n\n /**\n * @see {@link https://github.com/aeternity/protocol/blob/6734de2e4c7cce7e5e626caa8305fb535785131d/node/api/channels_api_usage.md#channel-establishing-parameters}\n */\n initiatorId: Encoded.AccountAddress;\n responderId: Encoded.AccountAddress;\n lockPeriod: number;\n pushAmount: number;\n initiatorAmount: BigNumber;\n responderAmount: BigNumber;\n channelReserve?: BigNumber | number;\n ttl?: number;\n host: string;\n port: number;\n role: 'initiator' | 'responder';\n minimumDepthStrategy?: 'txfee' | 'plain';\n minimumDepth?: number;\n fee?: BigNumber | number;\n gasPrice?: BigNumber | number;\n\n signedTx?: string;\n existingChannelId?: string;\n offChainTx?: string;\n reconnectTx?: string;\n timeoutIdle?: number;\n timeoutFundingCreate?: number;\n timeoutFundingSign?: number;\n timeoutFundingLock?: number;\n timeoutSign?: number;\n timeoutAccept?: number;\n timeoutInitialized?: number;\n timeoutAwaitingOpen?: number;\n statePassword?: string;\n debug: boolean;\n sign: SignTxWithTag;\n offchainTx?: string;\n}\n\nexport interface ChannelHandler extends Function {\n enter?: Function;\n}\n\nexport interface ChannelState {\n signedTx: Encoded.Transaction;\n resolve: (r?: any) => void;\n reject: (e: BaseError) => void;\n sign: SignTx;\n handler?: ChannelHandler;\n onOnChainTx?: (tx: Encoded.Transaction) => void;\n onOwnWithdrawLocked?: () => void;\n onWithdrawLocked?: () => void;\n onOwnDepositLocked?: () => void;\n onDepositLocked?: () => void;\n closeTx?: string;\n}\n\nexport interface ChannelFsm {\n handler: ChannelHandler;\n state?: ChannelState | {\n resolve: Function;\n reject: Function;\n };\n}\n\nexport interface ChannelMessage {\n id?: number;\n method: string;\n params: any;\n payload?: any;\n data?: any;\n error?: ChannelMessageError;\n}\n\ninterface ChannelMessageError {\n code: number;\n message: string;\n data: [{\n message: string;\n code: number;\n }];\n request: ChannelMessage;\n}\n\n// Send ping message every 10 seconds\nconst PING_TIMEOUT_MS = 10000;\n// Close connection if pong message is not received within 15 seconds\nconst PONG_TIMEOUT_MS = 15000;\n\nexport function emit<E extends keyof ChannelEvents>(\n channel: Channel,\n ...args: [E, ...Parameters<ChannelEvents[E]>]\n): void {\n const [eventName, ...rest] = args;\n channel._eventEmitter.emit(eventName, ...rest);\n}\n\nfunction enterState(channel: Channel, nextState: ChannelFsm): void {\n if (nextState == null) {\n throw new UnknownChannelStateError();\n }\n channel._fsm = nextState;\n if (nextState?.handler?.enter != null) {\n nextState.handler.enter(channel);\n }\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n void dequeueAction(channel);\n}\n\n// TODO: rewrite to enum\nexport type ChannelStatus = 'connecting' | 'connected' | 'accepted' | 'halfSigned' | 'signed'\n| 'open' | 'closing' | 'closed' | 'died' | 'disconnected';\n\nexport function changeStatus(channel: Channel, newStatus: ChannelStatus): void {\n if (newStatus === channel._status) return;\n channel._status = newStatus;\n emit(channel, 'statusChanged', newStatus);\n}\n\nexport function changeState(channel: Channel, newState: Encoded.Transaction | ''): void {\n channel._state = newState;\n emit(channel, 'stateChanged', newState);\n}\n\nfunction send(channel: Channel, message: ChannelMessage): void {\n if (channel._options.debug) console.log('Send message: ', message);\n channel._websocket.send(JsonBig.stringify({ jsonrpc: '2.0', ...message }));\n}\n\nexport function notify(channel: Channel, method: string, params: object = {}): void {\n send(channel, { method, params });\n}\n\nasync function dequeueAction(channel: Channel): Promise<void> {\n if (channel._isActionQueueLocked) return;\n const queue = channel._actionQueue;\n if (queue.length === 0) return;\n const index = queue.findIndex((action) => action.guard(channel, channel._fsm));\n if (index === -1) return;\n channel._actionQueue = queue.filter((_, i) => index !== i);\n channel._isActionQueueLocked = true;\n const nextState: ChannelFsm = await queue[index].action(channel, channel._fsm);\n channel._isActionQueueLocked = false;\n enterState(channel, nextState);\n}\n\nexport async function enqueueAction(\n channel: Channel,\n guard: ChannelAction['guard'],\n action: () => { handler: ChannelHandler; state?: Partial<ChannelState> },\n): Promise<any> {\n const promise = new Promise((resolve, reject) => {\n channel._actionQueue.push({\n guard,\n action() {\n const res = action();\n return { ...res, state: { ...res.state, resolve, reject } };\n },\n });\n });\n void dequeueAction(channel);\n return promise;\n}\n\nasync function handleMessage(channel: Channel, message: ChannelMessage): Promise<void> {\n const { handler, state: st } = channel._fsm;\n const nextState = await Promise.resolve(handler(channel, message, st));\n enterState(channel, nextState);\n // TODO: emit message and handler name (?) to move this code to Contract constructor\n if (\n message?.params?.data?.updates?.[0]?.op === 'OffChainNewContract'\n // if name is channelOpen, the contract was created by other participant\n && nextState?.handler.name === 'channelOpen'\n ) {\n const round = channel.round();\n if (round == null) throw new UnexpectedTsError('Round is null');\n const owner = message?.params?.data?.updates?.[0]?.owner;\n emit(channel, 'newContract', encodeContractAddress(owner, round + 1));\n }\n}\n\nasync function dequeueMessage(channel: Channel): Promise<void> {\n if (channel._isMessageQueueLocked) return;\n channel._isMessageQueueLocked = true;\n while (channel._messageQueue.length > 0) {\n const message = channel._messageQueue.shift();\n if (message == null) throw new UnexpectedTsError();\n try {\n await handleMessage(channel, message);\n } catch (error) {\n ensureError(error);\n emit(channel, 'error', new ChannelIncomingMessageError(error, message));\n }\n }\n channel._isMessageQueueLocked = false;\n}\n\nexport function disconnect(channel: Channel): void {\n channel._websocket.close();\n clearTimeout(channel._pingTimeoutId);\n}\n\nfunction ping(channel: Channel): void {\n clearTimeout(channel._pingTimeoutId);\n channel._pingTimeoutId = setTimeout(() => {\n notify(channel, 'channels.system', { action: 'ping' });\n channel._pingTimeoutId = setTimeout(() => {\n disconnect(channel);\n emit(channel, 'error', new ChannelPingTimedOutError());\n }, PONG_TIMEOUT_MS);\n }, PING_TIMEOUT_MS);\n}\n\nfunction onMessage(channel: Channel, data: string): void {\n const message = JsonBig.parse(data);\n if (channel._options.debug) console.log('Receive message: ', message);\n if (message.id != null) {\n const callback = channel._rpcCallbacks.get(message.id);\n if (callback == null) {\n emit(channel, 'error', new ChannelError(`Can't find callback by id: ${message.id}`));\n return;\n }\n try {\n callback(message);\n } finally {\n channel._rpcCallbacks.delete(message.id);\n }\n return;\n }\n if (message.method === 'channels.message') {\n emit(channel, 'message', message.params.data.message);\n return;\n }\n if (message.method === 'channels.system.pong') {\n if (message.params.channel_id === channel._channelId || channel._channelId == null) {\n ping(channel);\n }\n return;\n }\n channel._messageQueue.push(message);\n void dequeueMessage(channel);\n}\n\nexport async function call(channel: Channel, method: string, params: any): Promise<any> {\n return new Promise((resolve, reject) => {\n const id = channel._nextRpcMessageId;\n channel._nextRpcMessageId += 1;\n channel._rpcCallbacks.set(id, (\n message: { result: PromiseLike<any>; error?: ChannelMessageError },\n ) => {\n if (message.error != null) {\n const details = message.error.data[0].message ?? '';\n reject(new ChannelCallError(message.error.message + details));\n } else resolve(message.result);\n });\n send(channel, { method, id, params });\n });\n}\n\nexport async function initialize(\n channel: Channel,\n connectionHandler: Function,\n openHandler: Function,\n { url, ...channelOptions }: ChannelOptions,\n): Promise<void> {\n channel._options = { url, ...channelOptions };\n channel._fsm = { handler: connectionHandler };\n\n const wsUrl = new URL(url);\n Object.entries(channelOptions)\n .filter(([key]) => !['sign', 'debug'].includes(key))\n .forEach(([key, value]) => wsUrl.searchParams.set(pascalToSnake(key), value.toString()));\n wsUrl.searchParams.set('protocol', 'json-rpc');\n changeStatus(channel, 'connecting');\n channel._websocket = new W3CWebSocket(wsUrl.toString());\n await new Promise<void>((resolve, reject) => {\n Object.assign(channel._websocket, {\n onerror: reject,\n onopen: async () => {\n resolve();\n changeStatus(channel, 'connected');\n if (channelOptions.reconnectTx != null) {\n enterState(channel, { handler: openHandler });\n const { signedTx } = await channel.state();\n if (signedTx == null) {\n throw new ChannelError('`signedTx` missed in state while reconnection');\n }\n changeState(channel, buildTx(signedTx));\n }\n ping(channel);\n },\n onclose: () => {\n changeStatus(channel, 'disconnected');\n clearTimeout(channel._pingTimeoutId);\n },\n onmessage: ({ data }: { data: string }) => onMessage(channel, data),\n });\n });\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"internal.mjs","names":["_websocket","w3cwebsocket","W3CWebSocket","JsonBig","pascalToSnake","ChannelCallError","ChannelPingTimedOutError","UnexpectedTsError","UnknownChannelStateError","ChannelIncomingMessageError","ChannelError","encodeContractAddress","buildTx","ensureError","PING_TIMEOUT_MS","PONG_TIMEOUT_MS","emit","channel","args","eventName","rest","_eventEmitter","enterState","nextState","_nextState$handler","_debug","handler","name","_fsm","enter","dequeueAction","changeStatus","newStatus","debug","_status","changeState","newState","_state","send","message","method","params","stringify","jsonrpc","notify","_isActionQueueLocked","queue","_actionQueue","length","index","findIndex","action","guard","filter","_","i","enqueueAction","promise","Promise","resolve","reject","push","res","state","handleMessage","_message$params","st","data","updates","op","_message$params2","round","owner","dequeueMessage","_isMessageQueueLocked","_messageQueue","shift","error","disconnect","close","clearTimeout","_pingTimeoutId","ping","setTimeout","onMessage","parse","id","callback","_rpcCallbacks","get","delete","channel_id","_channelId","call","_nextRpcMessageId","set","_message$error$data$","details","result","initialize","connectionHandler","openHandler","url","channelOptions","_options","wsUrl","URL","Object","entries","key","includes","forEach","value","searchParams","toString","assign","onerror","onopen","event","reconnectTx","signedTx","onclose","onmessage"],"sources":["../../src/channel/internal.ts"],"sourcesContent":["import { w3cwebsocket as W3CWebSocket, ICloseEvent } from 'websocket';\nimport BigNumber from 'bignumber.js';\nimport type Channel from './Base';\nimport JsonBig from '../utils/json-big';\nimport { pascalToSnake } from '../utils/string';\nimport { Encoded } from '../utils/encoder';\nimport {\n BaseError,\n ChannelCallError,\n ChannelPingTimedOutError,\n UnexpectedTsError,\n UnknownChannelStateError,\n ChannelIncomingMessageError,\n ChannelError,\n} from '../utils/errors';\nimport { encodeContractAddress } from '../utils/crypto';\nimport { buildTx } from '../tx/builder';\nimport { ensureError } from '../utils/other';\n\nexport interface ChannelEvents {\n statusChanged: (status: ChannelStatus) => void;\n stateChanged: (tx: Encoded.Transaction | '') => void;\n depositLocked: () => void;\n ownDepositLocked: () => void;\n withdrawLocked: () => void;\n ownWithdrawLocked: () => void;\n peerDisconnected: () => void;\n channelReestablished: () => void;\n error: (error: Error) => void;\n onChainTx: (tx: Encoded.Transaction, details: { info: string; type: string }) => void;\n message: (message: string | Object) => void;\n newContract: (contractAddress: Encoded.ContractAddress) => void;\n}\n\nexport interface ChannelAction {\n guard: (channel: Channel, state?: ChannelFsm) => boolean;\n action: (channel: Channel, state?: ChannelFsm) => ChannelFsm;\n}\n\ninterface SignOptions {\n updates?: any[];\n [k: string]: any;\n}\nexport type SignTxWithTag = (tag: string, tx: Encoded.Transaction, options?: SignOptions) => (\n Promise<Encoded.Transaction>\n);\n// TODO: SignTx shouldn't return number or null\nexport type SignTx = (tx: Encoded.Transaction, options?: SignOptions) => (\n Promise<Encoded.Transaction | number | null>\n);\n\n/**\n * @see {@link https://github.com/aeternity/protocol/blob/6734de2e4c7cce7e5e626caa8305fb535785131d/node/api/channels_api_usage.md#channel-establishing-parameters}\n */\nexport interface ChannelOptions {\n existingFsmId?: Encoded.Bytearray;\n /**\n * Channel url (for example: \"ws://localhost:3001\")\n */\n url: string;\n\n /**\n * Initiator's public key\n */\n initiatorId: Encoded.AccountAddress;\n /**\n * Responder's public key\n */\n responderId: Encoded.AccountAddress;\n /**\n * Amount of blocks for disputing a solo close\n */\n lockPeriod: number;\n /**\n * Initial deposit in favour of the responder by the initiator\n */\n pushAmount: number;\n /**\n * Amount of coins the initiator has committed to the channel\n */\n initiatorAmount: BigNumber | number;\n /**\n * Amount of coins the responder has committed to the channel\n */\n responderAmount: BigNumber | number;\n /**\n * The minimum amount both peers need to maintain\n */\n channelReserve?: BigNumber | number;\n /**\n * Minimum block height to include the channel_create_tx\n */\n ttl?: number;\n /**\n * Host of the responder's node\n */\n host: string;\n /**\n * The port of the responders node\n */\n port: number;\n /**\n * Participant role\n */\n role: 'initiator' | 'responder';\n /**\n * How to calculate minimum depth (default: txfee)\n */\n minimumDepthStrategy?: 'txfee' | 'plain';\n /**\n * The minimum amount of blocks to be mined\n */\n minimumDepth?: number;\n /**\n * The fee to be used for the channel open transaction\n */\n fee?: BigNumber | number;\n /**\n * Used for the fee computation of the channel open transaction\n */\n gasPrice?: BigNumber | number;\n\n signedTx?: string;\n /**\n * Existing channel id (required if reestablishing a channel)\n */\n existingChannelId?: string;\n /**\n * Offchain transaction (required if reestablishing a channel)\n */\n offChainTx?: string;\n reconnectTx?: string;\n /**\n * The time waiting for a new event to be initiated (default: 600000)\n */\n timeoutIdle?: number;\n /**\n * The time waiting for the initiator to produce the create channel transaction after the noise\n * session had been established (default: 120000)\n */\n timeoutFundingCreate?: number;\n /**\n * The time frame the other client has to sign an off-chain update after our client had initiated\n * and signed it. This applies only for double signed on-chain intended updates: channel create\n * transaction, deposit, withdrawal and etc. (default: 120000)\n */\n timeoutFundingSign?: number;\n /**\n * The time frame the other client has to confirm an on-chain transaction reaching maturity\n * (passing minimum depth) after the local node has detected this. This applies only for double\n * signed on-chain intended updates: channel create transaction, deposit, withdrawal and etc.\n * (default: 360000)\n */\n timeoutFundingLock?: number;\n /**\n * The time frame the client has to return a signed off-chain update or to decline it.\n * This applies for all off-chain updates (default: 500000)\n */\n timeoutSign?: number;\n /**\n * The time frame the other client has to react to an event. This applies for all off-chain\n * updates that are not meant to land on-chain, as well as some special cases: opening a noise\n * connection, mutual closing acknowledgement and reestablishing an existing channel\n * (default: 120000)\n */\n timeoutAccept?: number;\n /**\n * the time frame the responder has to accept an incoming noise session.\n * Applicable only for initiator (default: timeout_accept's value)\n */\n timeoutInitialized?: number;\n /**\n * The time frame the initiator has to start an outgoing noise session to the responder's node.\n * Applicable only for responder (default: timeout_idle's value)\n */\n timeoutAwaitingOpen?: number;\n statePassword?: string;\n /**\n * Log websocket communication and state changes\n */\n debug?: boolean;\n /**\n * Function which verifies and signs transactions\n */\n sign: SignTxWithTag;\n offchainTx?: string;\n}\n\nexport interface ChannelHandler extends Function {\n enter?: Function;\n}\n\nexport interface ChannelState {\n signedTx: Encoded.Transaction;\n resolve: (r?: any) => void;\n reject: (e: BaseError) => void;\n sign: SignTx;\n handler?: ChannelHandler;\n /**\n * Called when transaction has been posted on chain\n */\n onOnChainTx?: (tx: Encoded.Transaction) => void;\n onOwnWithdrawLocked?: () => void;\n onWithdrawLocked?: () => void;\n onOwnDepositLocked?: () => void;\n onDepositLocked?: () => void;\n closeTx?: string;\n}\n\nexport interface ChannelFsm {\n handler: ChannelHandler;\n state?: ChannelState | {\n resolve: Function;\n reject: Function;\n };\n}\n\nexport interface ChannelMessage {\n id?: number;\n method: string;\n params: any;\n payload?: any;\n data?: any;\n error?: ChannelMessageError;\n}\n\ninterface ChannelMessageError {\n code: number;\n message: string;\n data: [{\n message: string;\n code: number;\n }];\n request: ChannelMessage;\n}\n\n// Send ping message every 10 seconds\nconst PING_TIMEOUT_MS = 10000;\n// Close connection if pong message is not received within 15 seconds\nconst PONG_TIMEOUT_MS = 15000;\n\nexport function emit<E extends keyof ChannelEvents>(\n channel: Channel,\n ...args: [E, ...Parameters<ChannelEvents[E]>]\n): void {\n const [eventName, ...rest] = args;\n channel._eventEmitter.emit(eventName, ...rest);\n}\n\nfunction enterState(channel: Channel, nextState: ChannelFsm): void {\n if (nextState == null) {\n throw new UnknownChannelStateError();\n }\n channel._debug('enter state', nextState.handler.name);\n channel._fsm = nextState;\n if (nextState?.handler?.enter != null) {\n nextState.handler.enter(channel);\n }\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n void dequeueAction(channel);\n}\n\n// TODO: rewrite to enum\nexport type ChannelStatus = 'connecting' | 'connected' | 'accepted' | 'halfSigned' | 'signed'\n| 'open' | 'closing' | 'closed' | 'died' | 'disconnected';\n\nexport function changeStatus(channel: Channel, newStatus: ChannelStatus, debug?: unknown): void {\n channel._debug(newStatus, `(prev. ${channel._status})`, debug ?? '');\n if (newStatus === channel._status) return;\n channel._status = newStatus;\n emit(channel, 'statusChanged', newStatus);\n}\n\nexport function changeState(channel: Channel, newState: Encoded.Transaction | ''): void {\n channel._state = newState;\n emit(channel, 'stateChanged', newState);\n}\n\nfunction send(channel: Channel, message: ChannelMessage): void {\n channel._debug('send message', message.method, message.params);\n channel._websocket.send(JsonBig.stringify({ jsonrpc: '2.0', ...message }));\n}\n\nexport function notify(channel: Channel, method: string, params: object = {}): void {\n send(channel, { method, params });\n}\n\nasync function dequeueAction(channel: Channel): Promise<void> {\n if (channel._isActionQueueLocked) return;\n const queue = channel._actionQueue;\n if (queue.length === 0) return;\n const index = queue.findIndex((action) => action.guard(channel, channel._fsm));\n if (index === -1) return;\n channel._actionQueue = queue.filter((_, i) => index !== i);\n channel._isActionQueueLocked = true;\n const nextState: ChannelFsm = await queue[index].action(channel, channel._fsm);\n channel._isActionQueueLocked = false;\n enterState(channel, nextState);\n}\n\nexport async function enqueueAction(\n channel: Channel,\n guard: ChannelAction['guard'],\n action: () => { handler: ChannelHandler; state?: Partial<ChannelState> },\n): Promise<any> {\n const promise = new Promise((resolve, reject) => {\n channel._actionQueue.push({\n guard,\n action() {\n const res = action();\n return { ...res, state: { ...res.state, resolve, reject } };\n },\n });\n });\n void dequeueAction(channel);\n return promise;\n}\n\nasync function handleMessage(channel: Channel, message: ChannelMessage): Promise<void> {\n const { handler, state: st } = channel._fsm;\n const nextState = await Promise.resolve(handler(channel, message, st));\n enterState(channel, nextState);\n // TODO: emit message and handler name (?) to move this code to Contract constructor\n if (\n message?.params?.data?.updates?.[0]?.op === 'OffChainNewContract'\n // if name is channelOpen, the contract was created by other participant\n && nextState?.handler.name === 'channelOpen'\n ) {\n const round = channel.round();\n if (round == null) throw new UnexpectedTsError('Round is null');\n const owner = message?.params?.data?.updates?.[0]?.owner;\n emit(channel, 'newContract', encodeContractAddress(owner, round + 1));\n }\n}\n\nasync function dequeueMessage(channel: Channel): Promise<void> {\n if (channel._isMessageQueueLocked) return;\n channel._isMessageQueueLocked = true;\n while (channel._messageQueue.length > 0) {\n const message = channel._messageQueue.shift();\n if (message == null) throw new UnexpectedTsError();\n try {\n await handleMessage(channel, message);\n } catch (error) {\n ensureError(error);\n emit(channel, 'error', new ChannelIncomingMessageError(error, message));\n }\n }\n channel._isMessageQueueLocked = false;\n}\n\nexport function disconnect(channel: Channel): void {\n channel._websocket.close();\n clearTimeout(channel._pingTimeoutId);\n}\n\nfunction ping(channel: Channel): void {\n clearTimeout(channel._pingTimeoutId);\n channel._pingTimeoutId = setTimeout(() => {\n notify(channel, 'channels.system', { action: 'ping' });\n channel._pingTimeoutId = setTimeout(() => {\n disconnect(channel);\n emit(channel, 'error', new ChannelPingTimedOutError());\n }, PONG_TIMEOUT_MS);\n }, PING_TIMEOUT_MS);\n}\n\nfunction onMessage(channel: Channel, data: string): void {\n const message = JsonBig.parse(data);\n channel._debug('received message', message.method, message.params);\n if (message.id != null) {\n const callback = channel._rpcCallbacks.get(message.id);\n if (callback == null) {\n emit(channel, 'error', new ChannelError(`Can't find callback by id: ${message.id}`));\n return;\n }\n try {\n callback(message);\n } finally {\n channel._rpcCallbacks.delete(message.id);\n }\n return;\n }\n if (message.method === 'channels.message') {\n emit(channel, 'message', message.params.data.message);\n return;\n }\n if (message.method === 'channels.system.pong') {\n if (message.params.channel_id === channel._channelId || channel._channelId == null) {\n ping(channel);\n }\n return;\n }\n channel._messageQueue.push(message);\n void dequeueMessage(channel);\n}\n\nexport async function call(channel: Channel, method: string, params: any): Promise<any> {\n return new Promise((resolve, reject) => {\n const id = channel._nextRpcMessageId;\n channel._nextRpcMessageId += 1;\n channel._rpcCallbacks.set(id, (\n message: { result: PromiseLike<any>; error?: ChannelMessageError },\n ) => {\n if (message.error != null) {\n const details = message.error.data[0].message ?? '';\n reject(new ChannelCallError(message.error.message + details));\n } else resolve(message.result);\n });\n send(channel, { method, id, params });\n });\n}\n\nexport async function initialize(\n channel: Channel,\n connectionHandler: Function,\n openHandler: Function,\n { url, ...channelOptions }: ChannelOptions,\n): Promise<void> {\n channel._options = { url, ...channelOptions };\n\n const wsUrl = new URL(url);\n Object.entries(channelOptions)\n .filter(([key]) => !['sign', 'debug'].includes(key))\n .forEach(([key, value]) => wsUrl.searchParams.set(pascalToSnake(key), value.toString()));\n wsUrl.searchParams.set('protocol', 'json-rpc');\n changeStatus(channel, 'connecting');\n channel._websocket = new W3CWebSocket(wsUrl.toString());\n await new Promise<void>((resolve, reject) => {\n Object.assign(channel._websocket, {\n onerror: reject,\n onopen: async (event: Event) => {\n resolve();\n changeStatus(channel, 'connected', event);\n if (channelOptions.reconnectTx != null) {\n enterState(channel, { handler: openHandler });\n const { signedTx } = await channel.state();\n if (signedTx == null) {\n throw new ChannelError('`signedTx` missed in state while reconnection');\n }\n changeState(channel, buildTx(signedTx));\n } else {\n enterState(channel, { handler: connectionHandler });\n }\n ping(channel);\n },\n onclose: (event: ICloseEvent) => {\n changeStatus(channel, 'disconnected', event);\n clearTimeout(channel._pingTimeoutId);\n },\n onmessage: ({ data }: { data: string }) => onMessage(channel, data),\n });\n });\n}\n"],"mappings":"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"}
|
|
@@ -11,7 +11,8 @@ import { Encoded } from '../utils/encoder';
|
|
|
11
11
|
import { ContractCallObject as NodeContractCallObject, Event as NodeEvent } from '../apis/node';
|
|
12
12
|
import CompilerBase, { Aci } from './compiler/Base';
|
|
13
13
|
import Node, { TransformNodeType } from '../Node';
|
|
14
|
-
import { txDryRun
|
|
14
|
+
import { txDryRun } from '../chain';
|
|
15
|
+
import { sendTransaction, SendTransactionOptions } from '../send-transaction';
|
|
15
16
|
import AccountBase from '../account/Base';
|
|
16
17
|
import { TxUnpacked } from '../tx/builder/schema.generated';
|
|
17
18
|
interface Event extends NodeEvent {
|
|
@@ -79,7 +80,7 @@ interface GetCallResultByHashReturnType<M extends ContractMethodsBase, Fn extend
|
|
|
79
80
|
* const staticCallResult = await contractIns.$call('setState', [123], { callStatic: true })
|
|
80
81
|
* ```
|
|
81
82
|
* Also you can call contract like: `await contractIns.setState(123, options)`
|
|
82
|
-
* Then sdk decide to make on-chain or static call(dry-run API) transaction based on function is
|
|
83
|
+
* Then sdk decide to make on-chain or static call (dry-run API) transaction based on function is
|
|
83
84
|
* stateful or not
|
|
84
85
|
*/
|
|
85
86
|
declare class Contract<M extends ContractMethodsBase> {
|
|
@@ -135,12 +136,19 @@ declare class Contract<M extends ContractMethodsBase> {
|
|
|
135
136
|
_name: string;
|
|
136
137
|
_calldata: Calldata;
|
|
137
138
|
$options: Omit<ConstructorParameters<typeof Contract>[0], 'aci'>;
|
|
139
|
+
/**
|
|
140
|
+
* @param options - Options
|
|
141
|
+
*/
|
|
138
142
|
constructor({ aci, ...otherOptions }: {
|
|
139
143
|
onCompiler?: CompilerBase;
|
|
140
144
|
onNode: Node;
|
|
141
145
|
bytecode?: Encoded.ContractBytearray;
|
|
142
146
|
aci: Aci;
|
|
143
147
|
address?: Encoded.ContractAddress;
|
|
148
|
+
/**
|
|
149
|
+
* Supported only in Ceres
|
|
150
|
+
*/
|
|
151
|
+
name?: AensName;
|
|
144
152
|
sourceCodePath?: Parameters<CompilerBase['compile']>[0];
|
|
145
153
|
sourceCode?: Parameters<CompilerBase['compileBySourceCode']>[0];
|
|
146
154
|
fileSystem?: Parameters<CompilerBase['compileBySourceCode']>[1];
|
package/es/contract/Contract.mjs
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import _classPrivateFieldSet from "@babel/runtime-corejs3/helpers/classPrivateFieldSet";
|
|
2
2
|
import _classPrivateFieldGet from "@babel/runtime-corejs3/helpers/classPrivateFieldGet";
|
|
3
|
+
var _Contract;
|
|
3
4
|
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
|
4
5
|
function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
|
|
5
6
|
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
|
6
|
-
function _classPrivateMethodGet(receiver, privateSet, fn) {
|
|
7
|
+
function _classPrivateMethodGet(receiver, privateSet, fn) { _assertClassBrand(privateSet, receiver); return fn; }
|
|
8
|
+
function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
|
|
7
9
|
/**
|
|
8
10
|
* Contract module - routines to interact with the æternity contract
|
|
9
11
|
*
|
|
@@ -15,13 +17,15 @@ import _aeternityAeppCalldata from '@aeternity/aepp-calldata';
|
|
|
15
17
|
const {
|
|
16
18
|
Encoder: Calldata
|
|
17
19
|
} = _aeternityAeppCalldata;
|
|
18
|
-
import { DRY_RUN_ACCOUNT } from "../tx/builder/
|
|
19
|
-
import { Tag } from "../tx/builder/constants.mjs";
|
|
20
|
+
import { Tag, ConsensusProtocolVersion, DRY_RUN_ACCOUNT } from "../tx/builder/constants.mjs";
|
|
20
21
|
import { buildContractIdByContractTx, unpackTx, buildTxAsync, buildTxHash } from "../tx/builder/index.mjs";
|
|
21
22
|
import { decode } from "../utils/encoder.mjs";
|
|
22
23
|
import { MissingContractDefError, MissingContractAddressError, InactiveContractError, BytecodeMismatchError, DuplicateContractError, MissingFunctionNameError, InvalidMethodInvocationError, NotPayableFunctionError, TypeError as _TypeError, NodeInvocationError, IllegalArgumentError, NoSuchContractFunctionError, MissingEventDefinitionError, AmbiguousEventDefinitionError, UnexpectedTsError, InternalError, NoWalletConnectedError, ContractError } from "../utils/errors.mjs";
|
|
23
24
|
import { hash as calcHash } from "../utils/crypto.mjs";
|
|
24
|
-
import { getAccount, getContract, getContractByteCode, resolveName, txDryRun
|
|
25
|
+
import { getAccount, getContract, getContractByteCode, resolveName, txDryRun } from "../chain.mjs";
|
|
26
|
+
import { sendTransaction } from "../send-transaction.mjs";
|
|
27
|
+
import { isAccountNotFoundError } from "../utils/other.mjs";
|
|
28
|
+
import { isNameValid, produceNameId } from "../tx/builder/helpers.mjs";
|
|
25
29
|
var _getCallResult = /*#__PURE__*/new WeakSet();
|
|
26
30
|
var _sendAndProcess = /*#__PURE__*/new WeakSet();
|
|
27
31
|
var _getFunctionAci = /*#__PURE__*/new WeakSet();
|
|
@@ -41,7 +45,7 @@ var _aciContract = /*#__PURE__*/new WeakMap();
|
|
|
41
45
|
* const staticCallResult = await contractIns.$call('setState', [123], { callStatic: true })
|
|
42
46
|
* ```
|
|
43
47
|
* Also you can call contract like: `await contractIns.setState(123, options)`
|
|
44
|
-
* Then sdk decide to make on-chain or static call(dry-run API) transaction based on function is
|
|
48
|
+
* Then sdk decide to make on-chain or static call (dry-run API) transaction based on function is
|
|
45
49
|
* stateful or not
|
|
46
50
|
*/
|
|
47
51
|
class Contract {
|
|
@@ -82,8 +86,7 @@ class Contract {
|
|
|
82
86
|
result: callInfoTyped
|
|
83
87
|
};
|
|
84
88
|
}
|
|
85
|
-
async _estimateGas(name, params) {
|
|
86
|
-
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
89
|
+
async _estimateGas(name, params, options = {}) {
|
|
87
90
|
const {
|
|
88
91
|
result
|
|
89
92
|
} = await this.$call(name, params, {
|
|
@@ -123,6 +126,7 @@ class Contract {
|
|
|
123
126
|
const ownerId = opt.onAccount.address;
|
|
124
127
|
if (this.$options.bytecode == null) throw new IllegalArgumentError('Can\'t deploy without bytecode');
|
|
125
128
|
const tx = await buildTxAsync({
|
|
129
|
+
_isInternalBuild: true,
|
|
126
130
|
...opt,
|
|
127
131
|
tag: Tag.ContractCreateTx,
|
|
128
132
|
gasLimit: (_opt$gasLimit = opt.gasLimit) !== null && _opt$gasLimit !== void 0 ? _opt$gasLimit : await this._estimateGas('init', params, opt),
|
|
@@ -130,7 +134,6 @@ class Contract {
|
|
|
130
134
|
code: this.$options.bytecode,
|
|
131
135
|
ownerId
|
|
132
136
|
});
|
|
133
|
-
this.$options.address = buildContractIdByContractTx(tx);
|
|
134
137
|
const {
|
|
135
138
|
hash,
|
|
136
139
|
...other
|
|
@@ -138,6 +141,7 @@ class Contract {
|
|
|
138
141
|
...opt,
|
|
139
142
|
onAccount: opt.onAccount
|
|
140
143
|
});
|
|
144
|
+
this.$options.address = buildContractIdByContractTx(other.rawTx);
|
|
141
145
|
return {
|
|
142
146
|
...other,
|
|
143
147
|
...(((_other$result = other.result) === null || _other$result === void 0 ? void 0 : _other$result.log) != null && {
|
|
@@ -162,9 +166,8 @@ class Contract {
|
|
|
162
166
|
* @param options - Array of function arguments
|
|
163
167
|
* @returns CallResult
|
|
164
168
|
*/
|
|
165
|
-
async $call(fn, params) {
|
|
169
|
+
async $call(fn, params, options = {}) {
|
|
166
170
|
var _opt$gasLimit2;
|
|
167
|
-
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
168
171
|
const {
|
|
169
172
|
callStatic,
|
|
170
173
|
top,
|
|
@@ -174,7 +177,12 @@ class Contract {
|
|
|
174
177
|
...options
|
|
175
178
|
};
|
|
176
179
|
const fnAci = _classPrivateMethodGet(this, _getFunctionAci, _getFunctionAci2).call(this, fn);
|
|
177
|
-
const
|
|
180
|
+
const {
|
|
181
|
+
address,
|
|
182
|
+
name
|
|
183
|
+
} = this.$options;
|
|
184
|
+
// TODO: call `produceNameId` on buildTx side
|
|
185
|
+
const contractId = name != null ? produceNameId(name) : address;
|
|
178
186
|
const {
|
|
179
187
|
onNode
|
|
180
188
|
} = opt;
|
|
@@ -194,12 +202,21 @@ class Contract {
|
|
|
194
202
|
}
|
|
195
203
|
const callData = this._calldata.encode(this._name, fn, params);
|
|
196
204
|
if (callStatic === true) {
|
|
197
|
-
if (opt.nonce == null
|
|
198
|
-
const
|
|
199
|
-
|
|
200
|
-
|
|
205
|
+
if (opt.nonce == null) {
|
|
206
|
+
const topOption = top != null && {
|
|
207
|
+
[typeof top === 'number' ? 'height' : 'hash']: top
|
|
208
|
+
};
|
|
209
|
+
const account = await getAccount(callerId, {
|
|
210
|
+
...topOption,
|
|
201
211
|
onNode
|
|
202
|
-
})
|
|
212
|
+
}).catch(error => {
|
|
213
|
+
if (!isAccountNotFoundError(error)) throw error;
|
|
214
|
+
return {
|
|
215
|
+
kind: 'basic',
|
|
216
|
+
nonce: 0
|
|
217
|
+
};
|
|
218
|
+
});
|
|
219
|
+
opt.nonce = account.kind === 'generalized' ? 0 : account.nonce + 1;
|
|
203
220
|
}
|
|
204
221
|
const txOpt = {
|
|
205
222
|
...opt,
|
|
@@ -248,6 +265,7 @@ class Contract {
|
|
|
248
265
|
if (top != null) throw new IllegalArgumentError('Can\'t handle `top` option in on-chain contract call');
|
|
249
266
|
if (contractId == null) throw new MissingContractAddressError('Can\'t call contract without address');
|
|
250
267
|
const tx = await buildTxAsync({
|
|
268
|
+
_isInternalBuild: true,
|
|
251
269
|
...opt,
|
|
252
270
|
tag: Tag.ContractCallTx,
|
|
253
271
|
gasLimit: (_opt$gasLimit2 = opt.gasLimit) !== null && _opt$gasLimit2 !== void 0 ? _opt$gasLimit2 : await this._estimateGas(fn, params, opt),
|
|
@@ -277,11 +295,10 @@ class Contract {
|
|
|
277
295
|
* @param options - Options
|
|
278
296
|
* @returns DecodedEvents
|
|
279
297
|
*/
|
|
280
|
-
$decodeEvents(events
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
298
|
+
$decodeEvents(events, {
|
|
299
|
+
omitUnknown,
|
|
300
|
+
...opt
|
|
301
|
+
} = {}) {
|
|
285
302
|
return events.map(event => {
|
|
286
303
|
const topics = event.topics.map(t => BigInt(t));
|
|
287
304
|
let contractName;
|
|
@@ -303,19 +320,18 @@ class Contract {
|
|
|
303
320
|
};
|
|
304
321
|
}).filter(e => e != null);
|
|
305
322
|
}
|
|
306
|
-
static async initialize(
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
} = _ref;
|
|
323
|
+
static async initialize({
|
|
324
|
+
onCompiler,
|
|
325
|
+
onNode,
|
|
326
|
+
bytecode,
|
|
327
|
+
aci,
|
|
328
|
+
address,
|
|
329
|
+
sourceCodePath,
|
|
330
|
+
sourceCode,
|
|
331
|
+
fileSystem,
|
|
332
|
+
validateBytecode,
|
|
333
|
+
...otherOptions
|
|
334
|
+
}) {
|
|
319
335
|
if (aci == null && onCompiler != null) {
|
|
320
336
|
let res;
|
|
321
337
|
if (sourceCodePath != null) res = await onCompiler.compile(sourceCodePath);
|
|
@@ -327,11 +343,14 @@ class Contract {
|
|
|
327
343
|
}
|
|
328
344
|
}
|
|
329
345
|
if (aci == null) throw new MissingContractDefError();
|
|
346
|
+
let name;
|
|
330
347
|
if (address != null) {
|
|
331
348
|
address = await resolveName(address, 'contract_pubkey', {
|
|
332
349
|
resolveByNode: true,
|
|
333
350
|
onNode
|
|
334
351
|
});
|
|
352
|
+
const isIris = (await onNode.getNodeInfo()).consensusProtocolVersion === ConsensusProtocolVersion.Iris;
|
|
353
|
+
if (!isIris && isNameValid(address)) name = address;
|
|
335
354
|
}
|
|
336
355
|
if (address == null && sourceCode == null && sourceCodePath == null && bytecode == null) {
|
|
337
356
|
throw new MissingContractAddressError('Can\'t create instance by ACI without address');
|
|
@@ -367,16 +386,18 @@ class Contract {
|
|
|
367
386
|
bytecode,
|
|
368
387
|
aci,
|
|
369
388
|
address,
|
|
389
|
+
name,
|
|
370
390
|
fileSystem,
|
|
371
391
|
...otherOptions
|
|
372
392
|
});
|
|
373
393
|
}
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
394
|
+
/**
|
|
395
|
+
* @param options - Options
|
|
396
|
+
*/
|
|
397
|
+
constructor({
|
|
398
|
+
aci,
|
|
399
|
+
...otherOptions
|
|
400
|
+
}) {
|
|
380
401
|
_classPrivateMethodInitSpec(this, _getContractNameByEvent);
|
|
381
402
|
_classPrivateMethodInitSpec(this, _getFunctionAci);
|
|
382
403
|
_classPrivateMethodInitSpec(this, _sendAndProcess);
|
|
@@ -409,24 +430,20 @@ class Contract {
|
|
|
409
430
|
* await contract.testFunction({ callStatic: false }) // send tx on-chain
|
|
410
431
|
* ```
|
|
411
432
|
*/
|
|
412
|
-
Object.assign(this, Object.fromEntries(_classPrivateFieldGet(this, _aciContract).functions.map(
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
} = _ref3;
|
|
433
|
+
Object.assign(this, Object.fromEntries(_classPrivateFieldGet(this, _aciContract).functions.map(({
|
|
434
|
+
name,
|
|
435
|
+
arguments: aciArgs,
|
|
436
|
+
stateful
|
|
437
|
+
}) => {
|
|
418
438
|
const callStatic = name !== 'init' && !stateful;
|
|
419
|
-
return [name, async
|
|
420
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
421
|
-
args[_key] = arguments[_key];
|
|
422
|
-
}
|
|
439
|
+
return [name, async (...args) => {
|
|
423
440
|
const options = args.length === aciArgs.length + 1 ? args.pop() : {};
|
|
424
441
|
if (typeof options !== 'object') throw new _TypeError(`Options should be an object: ${options}`);
|
|
425
|
-
if (name === 'init') return
|
|
442
|
+
if (name === 'init') return this.$deploy(args, {
|
|
426
443
|
callStatic,
|
|
427
444
|
...options
|
|
428
445
|
});
|
|
429
|
-
return
|
|
446
|
+
return this.$call(name, args, {
|
|
430
447
|
callStatic,
|
|
431
448
|
...options
|
|
432
449
|
});
|
|
@@ -434,12 +451,12 @@ class Contract {
|
|
|
434
451
|
})));
|
|
435
452
|
}
|
|
436
453
|
}
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
454
|
+
_Contract = Contract;
|
|
455
|
+
function _getCallResult2({
|
|
456
|
+
returnType,
|
|
457
|
+
returnValue,
|
|
458
|
+
log
|
|
459
|
+
}, fnName, transaction, options) {
|
|
443
460
|
let message;
|
|
444
461
|
switch (returnType) {
|
|
445
462
|
case 'ok':
|
|
@@ -488,12 +505,11 @@ function _getFunctionAci2(name) {
|
|
|
488
505
|
stateful: true
|
|
489
506
|
};
|
|
490
507
|
}
|
|
491
|
-
throw new NoSuchContractFunctionError(
|
|
508
|
+
throw new NoSuchContractFunctionError(name);
|
|
492
509
|
}
|
|
493
|
-
function _getContractNameByEvent2(ctAddress, nameHash,
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
} = _ref5;
|
|
510
|
+
function _getContractNameByEvent2(ctAddress, nameHash, {
|
|
511
|
+
contractAddressToName
|
|
512
|
+
}) {
|
|
497
513
|
const addressToName = {
|
|
498
514
|
...this.$options.contractAddressToName,
|
|
499
515
|
...contractAddressToName
|
|
@@ -502,22 +518,10 @@ function _getContractNameByEvent2(ctAddress, nameHash, _ref5) {
|
|
|
502
518
|
|
|
503
519
|
// TODO: consider using a third-party library
|
|
504
520
|
const isEqual = (a, b) => JSON.stringify(a) === JSON.stringify(b);
|
|
505
|
-
const contracts = this._aci.map(
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
return contract;
|
|
510
|
-
}).filter(contract => contract === null || contract === void 0 ? void 0 : contract.event);
|
|
511
|
-
const matchedEvents = contracts.map(contract => [contract.name, contract.event.variant]).map(_ref7 => {
|
|
512
|
-
let [name, events] = _ref7;
|
|
513
|
-
return events.map(event => [name, Object.keys(event)[0], Object.values(event)[0]]);
|
|
514
|
-
}).flat().filter(_ref8 => {
|
|
515
|
-
let [, eventName] = _ref8;
|
|
516
|
-
return BigInt(`0x${calcHash(eventName).toString('hex')}`) === nameHash;
|
|
517
|
-
}).filter((_ref9, idx, arr) => {
|
|
518
|
-
let [,, type] = _ref9;
|
|
519
|
-
return !arr.slice(0, idx).some(el => isEqual(el[2], type));
|
|
520
|
-
});
|
|
521
|
+
const contracts = this._aci.map(({
|
|
522
|
+
contract
|
|
523
|
+
}) => contract).filter(contract => contract === null || contract === void 0 ? void 0 : contract.event);
|
|
524
|
+
const matchedEvents = contracts.map(contract => [contract.name, contract.event.variant]).map(([name, events]) => events.map(event => [name, Object.keys(event)[0], Object.values(event)[0]])).flat().filter(([, eventName]) => BigInt(`0x${calcHash(eventName).toString('hex')}`) === nameHash).filter(([,, type], idx, arr) => !arr.slice(0, idx).some(el => isEqual(el[2], type)));
|
|
521
525
|
switch (matchedEvents.length) {
|
|
522
526
|
case 0:
|
|
523
527
|
throw new MissingEventDefinitionError(nameHash.toString(), ctAddress);
|