@aeternity/aepp-sdk 11.0.1 → 12.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/dist/aepp-sdk.browser-script.js +1 -1
- package/dist/aepp-sdk.browser-script.js.LICENSE.txt +12 -19
- 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 +1 -1
- package/dist/aepp-sdk.js.map +1 -1
- package/es/AeSdk.d.ts +37 -0
- package/es/AeSdk.mjs +81 -0
- package/es/AeSdk.mjs.map +1 -0
- package/es/AeSdkAepp.d.ts +69 -0
- package/es/AeSdkAepp.mjs +175 -0
- package/es/AeSdkAepp.mjs.map +1 -0
- package/es/AeSdkBase.d.ts +212 -0
- package/es/AeSdkBase.mjs +310 -0
- package/es/AeSdkBase.mjs.map +1 -0
- package/es/AeSdkWallet.d.ts +103 -0
- package/es/AeSdkWallet.mjs +322 -0
- package/es/AeSdkWallet.mjs.map +1 -0
- package/es/Node.d.ts +44 -0
- package/es/Node.mjs +141 -0
- package/es/Node.mjs.map +1 -0
- package/es/account/Base.d.ts +65 -0
- package/es/account/Base.mjs +123 -0
- package/es/account/Base.mjs.map +1 -0
- package/es/account/Memory.d.ts +25 -0
- package/es/account/Memory.mjs +81 -0
- package/es/account/Memory.mjs.map +1 -0
- package/es/account/Rpc.d.ts +27 -0
- package/es/account/Rpc.mjs +79 -0
- package/es/account/Rpc.mjs.map +1 -0
- package/es/aens.d.ts +209 -0
- package/es/aens.mjs +332 -0
- package/es/aens.mjs.map +1 -0
- package/es/aepp-wallet-communication/connection/Browser.d.ts +32 -0
- package/es/aepp-wallet-communication/connection/Browser.mjs +70 -0
- package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -0
- package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +17 -0
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +57 -0
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -0
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +35 -0
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +142 -0
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -0
- package/es/aepp-wallet-communication/connection-proxy.d.ts +10 -0
- package/{src/utils/crypto-ts.ts → es/aepp-wallet-communication/connection-proxy.mjs} +15 -11
- package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -0
- package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +33 -0
- package/es/aepp-wallet-communication/rpc/RpcClient.mjs +169 -0
- package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -0
- package/es/aepp-wallet-communication/rpc/types.d.ts +77 -0
- package/es/aepp-wallet-communication/rpc/types.mjs +3 -0
- package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -0
- package/es/aepp-wallet-communication/schema.d.ts +90 -46
- package/es/aepp-wallet-communication/schema.mjs +214 -0
- package/es/aepp-wallet-communication/schema.mjs.map +1 -0
- package/es/aepp-wallet-communication/wallet-detector.d.ts +24 -0
- package/es/aepp-wallet-communication/wallet-detector.mjs +63 -0
- package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -0
- package/es/apis/compiler/compiler.d.ts +92 -0
- package/es/apis/compiler/compiler.mjs +576 -0
- package/es/apis/compiler/compiler.mjs.map +1 -0
- package/es/apis/compiler/index.d.ts +2 -0
- package/es/apis/compiler/index.mjs +3 -0
- package/es/apis/compiler/index.mjs.map +1 -0
- package/es/apis/compiler/models/index.d.ts +248 -0
- package/es/apis/compiler/models/index.mjs +48 -0
- package/es/apis/compiler/models/index.mjs.map +1 -0
- package/es/apis/compiler/models/mappers.d.ts +23 -0
- package/es/apis/compiler/models/mappers.mjs +585 -0
- package/es/apis/compiler/models/mappers.mjs.map +1 -0
- package/es/apis/compiler/models/parameters.d.ts +13 -0
- package/es/apis/compiler/models/parameters.mjs +71 -0
- package/es/apis/compiler/models/parameters.mjs.map +1 -0
- package/es/apis/node/index.d.ts +2 -0
- package/es/apis/node/index.mjs +3 -0
- package/es/apis/node/index.mjs.map +1 -0
- package/es/apis/node/models/index.d.ts +1061 -0
- package/es/apis/node/models/index.mjs +2 -0
- package/es/apis/node/models/index.mjs.map +1 -0
- package/es/apis/node/models/mappers.d.ts +95 -0
- package/es/apis/node/models/mappers.mjs +4164 -0
- package/es/apis/node/models/mappers.mjs.map +1 -0
- package/es/apis/node/models/parameters.d.ts +17 -0
- package/es/apis/node/models/parameters.mjs +165 -0
- package/es/apis/node/models/parameters.mjs.map +1 -0
- package/es/apis/node/node.d.ts +215 -0
- package/es/apis/node/node.mjs +1165 -0
- package/es/apis/node/node.mjs.map +1 -0
- package/es/chain.d.ts +220 -0
- package/es/chain.mjs +524 -0
- package/es/chain.mjs.map +1 -0
- package/es/channel/handlers.d.ts +34 -0
- package/es/channel/handlers.mjs +147 -112
- package/es/channel/handlers.mjs.map +1 -1
- package/es/channel/index.d.ts +634 -0
- package/es/channel/index.mjs +898 -900
- package/es/channel/index.mjs.map +1 -1
- package/es/channel/internal.d.ts +100 -0
- package/es/channel/internal.mjs +97 -51
- package/es/channel/internal.mjs.map +1 -1
- package/es/contract/Compiler.d.ts +17 -0
- package/es/contract/Compiler.mjs +67 -0
- package/es/contract/Compiler.mjs.map +1 -0
- package/es/contract/aci.d.ts +125 -0
- package/es/contract/aci.mjs +199 -180
- package/es/contract/aci.mjs.map +1 -1
- package/es/contract/ga.d.ts +68 -0
- package/es/contract/ga.mjs +190 -0
- package/es/contract/ga.mjs.map +1 -0
- package/es/contract/methods.d.ts +68 -0
- package/es/contract/methods.mjs +101 -0
- package/es/contract/methods.mjs.map +1 -0
- package/es/index.d.ts +32 -0
- package/es/index.mjs +32 -40
- package/es/index.mjs.map +1 -1
- package/es/oracle.d.ts +154 -0
- package/es/oracle.mjs +288 -0
- package/es/oracle.mjs.map +1 -0
- package/es/spend.d.ts +61 -0
- package/es/spend.mjs +122 -0
- package/es/spend.mjs.map +1 -0
- package/es/tx/builder/constants.d.ts +41 -0
- package/es/tx/builder/constants.mjs +11 -19
- package/es/tx/builder/constants.mjs.map +1 -1
- package/es/tx/builder/field-types.d.ts +62 -0
- package/es/tx/builder/field-types.mjs +62 -10
- package/es/tx/builder/field-types.mjs.map +1 -1
- package/es/tx/builder/helpers.d.ts +131 -0
- package/es/tx/builder/helpers.mjs +71 -169
- package/es/tx/builder/helpers.mjs.map +1 -1
- package/es/tx/builder/index.d.ts +75 -0
- package/es/tx/builder/index.mjs +141 -323
- package/es/tx/builder/index.mjs.map +1 -1
- package/es/tx/builder/schema.d.ts +350 -0
- package/es/tx/builder/schema.mjs +173 -510
- package/es/tx/builder/schema.mjs.map +1 -1
- package/es/tx/index.d.ts +63 -0
- package/es/tx/index.mjs +171 -265
- package/es/tx/index.mjs.map +1 -1
- package/es/tx/min-fee.d.ts +20 -0
- package/es/tx/min-fee.mjs +148 -0
- package/es/tx/min-fee.mjs.map +1 -0
- package/es/tx/validator.d.ts +19 -0
- package/es/tx/validator.mjs +64 -71
- package/es/tx/validator.mjs.map +1 -1
- package/es/typings/@aeternity__argon2-browser/index.d.mjs +2 -0
- package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +1 -0
- package/es/typings/@aeternity__uuid/index.d.mjs +2 -0
- package/es/typings/@aeternity__uuid/index.d.mjs.map +1 -0
- package/es/typings/bip32-path/index.d.mjs +2 -0
- package/es/typings/bip32-path/index.d.mjs.map +1 -0
- package/es/typings/blakejs/index.d.mjs.map +1 -1
- package/es/typings/tweetnacl-auth/index.d.mjs +2 -0
- package/es/typings/tweetnacl-auth/index.d.mjs.map +1 -0
- package/es/utils/amount-formatter.d.ts +42 -0
- package/es/utils/amount-formatter.mjs +28 -41
- package/es/utils/amount-formatter.mjs.map +1 -1
- package/es/utils/autorest.d.ts +6 -0
- package/es/utils/autorest.mjs +97 -0
- package/es/utils/autorest.mjs.map +1 -0
- package/es/utils/bignumber.d.ts +13 -0
- package/es/utils/bignumber.mjs +10 -8
- package/es/utils/bignumber.mjs.map +1 -1
- package/es/{bytes.d.ts → utils/bytes.d.ts} +10 -13
- package/es/utils/bytes.mjs +10 -14
- package/es/utils/bytes.mjs.map +1 -1
- package/es/utils/crypto.d.ts +103 -0
- package/es/utils/crypto.mjs +60 -68
- package/es/utils/crypto.mjs.map +1 -1
- package/es/utils/encoder.d.ts +26 -0
- package/es/utils/encoder.mjs +47 -51
- package/es/utils/encoder.mjs.map +1 -1
- package/es/{errors.d.ts → utils/errors.d.ts} +254 -57
- package/es/utils/errors.mjs +318 -125
- package/es/utils/errors.mjs.map +1 -1
- package/es/utils/hd-wallet.d.ts +34 -0
- package/es/utils/hd-wallet.mjs +27 -16
- package/es/utils/hd-wallet.mjs.map +1 -1
- package/es/utils/json-big.d.ts +5 -0
- package/es/utils/json-big.mjs +10 -14
- package/es/utils/json-big.mjs.map +1 -1
- package/es/utils/keystore.d.ts +51 -0
- package/es/utils/keystore.mjs +98 -193
- package/es/utils/keystore.mjs.map +1 -1
- package/es/{mptree.d.ts → utils/mptree.d.ts} +5 -8
- package/es/utils/mptree.mjs +13 -14
- package/es/utils/mptree.mjs.map +1 -1
- package/es/utils/other.d.ts +14 -0
- package/es/utils/other.mjs +21 -36
- package/es/utils/other.mjs.map +1 -1
- package/es/{semver-satisfies.d.ts → utils/semver-satisfies.d.ts} +0 -0
- package/es/utils/semver-satisfies.mjs.map +1 -1
- package/es/utils/string.d.ts +24 -0
- package/es/utils/string.mjs +8 -10
- package/es/utils/string.mjs.map +1 -1
- package/package.json +49 -39
- package/src/AeSdk.ts +65 -0
- package/src/AeSdkAepp.ts +167 -0
- package/src/AeSdkBase.ts +320 -0
- package/src/AeSdkWallet.ts +332 -0
- package/src/Node.ts +167 -0
- package/src/account/Base.ts +114 -0
- package/src/account/Memory.ts +83 -0
- package/src/account/Rpc.ts +67 -0
- package/src/aens.ts +391 -0
- package/src/aepp-wallet-communication/connection/Browser.ts +68 -0
- package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +58 -0
- package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +111 -0
- package/{es/utils/crypto-ts.mjs → src/aepp-wallet-communication/connection-proxy.ts} +16 -17
- package/src/aepp-wallet-communication/rpc/RpcClient.ts +137 -0
- package/src/aepp-wallet-communication/rpc/types.ts +66 -0
- package/src/aepp-wallet-communication/schema.ts +181 -0
- package/src/aepp-wallet-communication/wallet-detector.ts +71 -0
- package/src/apis/compiler/code-model-v4.yaml +2649 -0
- package/src/apis/compiler/compiler.ts +585 -0
- package/src/apis/compiler/index.ts +2 -0
- package/src/apis/compiler/models/index.ts +301 -0
- package/src/apis/compiler/models/mappers.ts +583 -0
- package/src/apis/compiler/models/parameters.ts +93 -0
- package/src/apis/node/code-model-v4.yaml +10046 -0
- package/src/apis/node/index.ts +2 -0
- package/src/apis/node/models/index.ts +1253 -0
- package/src/apis/node/models/mappers.ts +4278 -0
- package/src/apis/node/models/parameters.ts +188 -0
- package/src/apis/node/node.ts +1299 -0
- package/src/chain.ts +444 -0
- package/src/channel/{handlers.js → handlers.ts} +220 -128
- package/src/channel/index.ts +991 -0
- package/src/channel/internal.ts +345 -0
- package/src/contract/Compiler.ts +66 -0
- package/src/contract/aci.ts +529 -0
- package/src/contract/ga.ts +178 -0
- package/src/contract/methods.ts +118 -0
- package/src/index.ts +51 -0
- package/src/oracle.ts +342 -0
- package/src/spend.ts +152 -0
- package/src/tx/builder/{constants.js → constants.ts} +12 -16
- package/src/tx/builder/field-types.ts +111 -0
- package/src/tx/builder/helpers.ts +253 -0
- package/src/tx/builder/index.ts +394 -0
- package/src/tx/builder/schema.ts +771 -0
- package/src/tx/index.ts +199 -0
- package/src/tx/min-fee.ts +136 -0
- package/src/tx/validator.ts +226 -0
- package/src/typings/@aeternity__argon2-browser/index.d.ts +3 -0
- package/src/typings/@aeternity__uuid/index.d.ts +3 -0
- package/src/typings/bip32-path/index.d.ts +33 -0
- package/src/typings/tweetnacl-auth/index.d.ts +14 -0
- package/src/utils/amount-formatter.ts +29 -42
- package/src/utils/autorest.ts +90 -0
- package/src/utils/bignumber.ts +9 -11
- package/src/utils/bytes.ts +12 -14
- package/src/utils/crypto.ts +217 -0
- package/src/utils/encoder.ts +52 -55
- package/src/utils/errors.ts +268 -134
- package/src/utils/hd-wallet.ts +134 -0
- package/src/utils/json-big.ts +26 -0
- package/src/utils/keystore.ts +179 -0
- package/src/utils/mptree.ts +14 -14
- package/src/utils/other.ts +28 -43
- package/src/utils/string.ts +8 -10
- package/es/account/base.mjs +0 -179
- package/es/account/base.mjs.map +0 -1
- package/es/account/memory.mjs +0 -99
- package/es/account/memory.mjs.map +0 -1
- package/es/account/multiple.mjs +0 -179
- package/es/account/multiple.mjs.map +0 -1
- package/es/ae/aens.mjs +0 -404
- package/es/ae/aens.mjs.map +0 -1
- package/es/ae/aepp.mjs +0 -45
- package/es/ae/aepp.mjs.map +0 -1
- package/es/ae/contract.mjs +0 -159
- package/es/ae/contract.mjs.map +0 -1
- package/es/ae/index.mjs +0 -207
- package/es/ae/index.mjs.map +0 -1
- package/es/ae/oracle.mjs +0 -339
- package/es/ae/oracle.mjs.map +0 -1
- package/es/ae/universal.mjs +0 -45
- package/es/ae/universal.mjs.map +0 -1
- package/es/ae/wallet.mjs +0 -50
- package/es/ae/wallet.mjs.map +0 -1
- package/es/amount-formatter.d.ts +0 -58
- package/es/bignumber.d.ts +0 -18
- package/es/chain/index.mjs +0 -272
- package/es/chain/index.mjs.map +0 -1
- package/es/chain/node.mjs +0 -442
- package/es/chain/node.mjs.map +0 -1
- package/es/contract/compiler.mjs +0 -115
- package/es/contract/compiler.mjs.map +0 -1
- package/es/contract/ga/helpers.mjs +0 -30
- package/es/contract/ga/helpers.mjs.map +0 -1
- package/es/contract/ga/index.mjs +0 -178
- package/es/contract/ga/index.mjs.map +0 -1
- package/es/crypto-ts.d.ts +0 -9
- package/es/encoder.d.ts +0 -26
- package/es/node-pool/index.mjs +0 -188
- package/es/node-pool/index.mjs.map +0 -1
- package/es/node.mjs +0 -133
- package/es/node.mjs.map +0 -1
- package/es/other.d.ts +0 -31
- package/es/string.d.ts +0 -26
- package/es/tx/tx-object.mjs +0 -283
- package/es/tx/tx-object.mjs.map +0 -1
- package/es/tx/tx.mjs +0 -938
- package/es/tx/tx.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs +0 -132
- package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs +0 -183
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/connection/index.mjs +0 -87
- package/es/utils/aepp-wallet-communication/connection/index.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/content-script-bridge.mjs +0 -98
- package/es/utils/aepp-wallet-communication/content-script-bridge.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/helpers.mjs +0 -92
- package/es/utils/aepp-wallet-communication/helpers.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs +0 -375
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs +0 -275
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs +0 -541
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/schema.mjs +0 -102
- package/es/utils/aepp-wallet-communication/schema.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/wallet-detector.mjs +0 -110
- package/es/utils/aepp-wallet-communication/wallet-detector.mjs.map +0 -1
- package/es/utils/async-init.mjs +0 -64
- package/es/utils/async-init.mjs.map +0 -1
- package/es/utils/crypto-ts.mjs.map +0 -1
- package/es/utils/swagger.mjs +0 -164
- package/es/utils/swagger.mjs.map +0 -1
- package/src/account/base.js +0 -153
- package/src/account/memory.js +0 -83
- package/src/account/multiple.js +0 -162
- package/src/ae/aens.js +0 -361
- package/src/ae/aepp.js +0 -45
- package/src/ae/contract.js +0 -148
- package/src/ae/index.js +0 -168
- package/src/ae/oracle.js +0 -311
- package/src/ae/universal.js +0 -47
- package/src/ae/wallet.js +0 -50
- package/src/chain/index.js +0 -269
- package/src/chain/node.js +0 -320
- package/src/channel/index.js +0 -903
- package/src/channel/internal.js +0 -236
- package/src/contract/aci.js +0 -376
- package/src/contract/compiler.js +0 -100
- package/src/contract/ga/helpers.js +0 -19
- package/src/contract/ga/index.js +0 -150
- package/src/index.js +0 -89
- package/src/node-pool/index.js +0 -172
- package/src/node.js +0 -116
- package/src/tx/builder/field-types.js +0 -61
- package/src/tx/builder/helpers.js +0 -334
- package/src/tx/builder/index.js +0 -465
- package/src/tx/builder/schema.js +0 -1100
- package/src/tx/index.js +0 -301
- package/src/tx/tx-object.js +0 -187
- package/src/tx/tx.js +0 -631
- package/src/tx/validator.js +0 -181
- package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -119
- package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -165
- package/src/utils/aepp-wallet-communication/connection/index.js +0 -85
- package/src/utils/aepp-wallet-communication/content-script-bridge.js +0 -86
- package/src/utils/aepp-wallet-communication/helpers.js +0 -60
- package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -294
- package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -232
- package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -401
- package/src/utils/aepp-wallet-communication/schema.ts +0 -80
- package/src/utils/aepp-wallet-communication/wallet-detector.js +0 -92
- package/src/utils/async-init.js +0 -45
- package/src/utils/crypto.js +0 -219
- package/src/utils/hd-wallet.js +0 -100
- package/src/utils/json-big.js +0 -26
- package/src/utils/keystore.js +0 -219
- package/src/utils/swagger.js +0 -156
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/channel/internal.js"],"names":["JsonBig","pascalToSnake","ChannelCallError","ChannelPingTimedOutError","UnknownChannelStateError","PING_TIMEOUT_MS","PONG_TIMEOUT_MS","options","WeakMap","status","state","fsm","websockets","eventEmitters","messageQueue","messageQueueLocked","actionQueue","actionQueueLocked","sequence","channelId","rpcCallbacks","pingTimeoutId","pongTimeoutId","fsmId","emit","channel","args","get","enterState","nextState","set","handler","enter","dequeueAction","changeStatus","newStatus","prevStatus","changeState","newState","send","message","debug","console","log","stringify","enqueueAction","guard","action","locked","queue","length","index","findIndex","item","filter","_","i","Promise","resolve","handleMessage","dequeueMessage","messages","shift","error","ping","clearTimeout","setTimeout","jsonrpc","method","params","disconnect","onMessage","data","parse","id","callback","delete","channel_id","push","call","reject","result","details","close","initialize","connectionHandler","openHandler","url","channelOptions","EventEmitter","Map","wsUrl","URL","Object","entries","key","includes","forEach","value","searchParams","ws","W3CWebSocket","toString","assign","onerror","onopen","reconnectTx","signed_tx","onclose","onmessage"],"mappings":"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","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport { w3cwebsocket as W3CWebSocket } from 'websocket'\nimport { EventEmitter } from 'events'\nimport JsonBig from '../utils/json-big'\nimport { pascalToSnake } from '../utils/string'\nimport { ChannelCallError, ChannelPingTimedOutError, UnknownChannelStateError } from '../utils/errors'\n\n// Send ping message every 10 seconds\nconst PING_TIMEOUT_MS = 10000\n// Close connection if pong message is not received within 5 seconds\nconst PONG_TIMEOUT_MS = 5000\n\nexport const options = new WeakMap()\nexport const status = new WeakMap()\nexport const state = new WeakMap()\nconst fsm = new WeakMap()\nconst websockets = new WeakMap()\nexport const eventEmitters = new WeakMap()\nconst messageQueue = new WeakMap()\nconst messageQueueLocked = new WeakMap()\nconst actionQueue = new WeakMap()\nconst actionQueueLocked = new WeakMap()\nconst sequence = new WeakMap()\nexport const channelId = new WeakMap()\nconst rpcCallbacks = new WeakMap()\nconst pingTimeoutId = new WeakMap()\nconst pongTimeoutId = new WeakMap()\nexport const fsmId = new WeakMap()\n\nexport function emit (channel, ...args) {\n eventEmitters.get(channel).emit(...args)\n}\n\nfunction enterState (channel, nextState) {\n if (!nextState) {\n throw new UnknownChannelStateError()\n }\n fsm.set(channel, nextState)\n if (nextState.handler.enter) {\n nextState.handler.enter(channel)\n }\n dequeueAction(channel)\n}\n\nexport function changeStatus (channel, newStatus) {\n const prevStatus = status.get(channel)\n if (newStatus !== prevStatus) {\n status.set(channel, newStatus)\n emit(channel, 'statusChanged', newStatus)\n }\n}\n\nexport function changeState (channel, newState) {\n state.set(channel, newState)\n emit(channel, 'stateChanged', newState)\n}\n\nexport function send (channel, message) {\n const { debug = false } = options.get(channel)\n if (debug) console.log('Send message: ', message)\n websockets.get(channel).send(JsonBig.stringify(message))\n}\n\nexport function enqueueAction (channel, guard, action) {\n actionQueue.set(channel, [\n ...actionQueue.get(channel) || [],\n { guard, action }\n ])\n dequeueAction(channel)\n}\n\nasync function dequeueAction (channel) {\n const locked = actionQueueLocked.get(channel)\n const queue = actionQueue.get(channel) || []\n if (locked || !queue.length) {\n return\n }\n const state = fsm.get(channel)\n const index = queue.findIndex(item => item.guard(channel, state))\n if (index === -1) {\n return\n }\n actionQueue.set(channel, queue.filter((_, i) => index !== i))\n actionQueueLocked.set(channel, true)\n const nextState = await Promise.resolve(queue[index].action(channel, state))\n actionQueueLocked.set(channel, false)\n enterState(channel, nextState)\n}\n\nasync function handleMessage (channel, message) {\n const { handler, state } = fsm.get(channel)\n enterState(channel, await Promise.resolve(handler(channel, message, state)))\n}\n\nasync function dequeueMessage (channel) {\n if (messageQueueLocked.get(channel)) return\n const messages = messageQueue.get(channel)\n if (!messages.length) return\n messageQueueLocked.set(channel, true)\n while (messages.length) {\n const message = messages.shift()\n try {\n await handleMessage(channel, message)\n } catch (error) {\n console.error('Error handling incoming message:')\n console.error(message)\n console.error(error)\n }\n }\n messageQueueLocked.set(channel, false)\n}\n\nfunction ping (channel) {\n clearTimeout(pingTimeoutId.get(channel))\n clearTimeout(pongTimeoutId.get(channel))\n pingTimeoutId.set(channel, setTimeout(() => {\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.system',\n params: {\n action: 'ping'\n }\n })\n pongTimeoutId.set(channel, setTimeout(() => {\n disconnect(channel)\n emit(channel, 'error', new ChannelPingTimedOutError())\n }, PONG_TIMEOUT_MS))\n }, PING_TIMEOUT_MS))\n}\n\nfunction onMessage (channel, data) {\n const message = JsonBig.parse(data)\n const { debug = false } = options.get(channel)\n if (debug) console.log('Receive message: ', message)\n if (message.id) {\n const callback = rpcCallbacks.get(channel).get(message.id)\n try {\n callback(message)\n } finally {\n rpcCallbacks.get(channel).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 (\n (message.params.channel_id === channelId.get(channel)) ||\n // Skip channelId check if channelId is not known yet\n (channelId.get(channel) == null)\n ) {\n ping(channel)\n }\n return\n }\n messageQueue.get(channel).push(message)\n dequeueMessage(channel)\n}\n\nexport function call (channel, method, params) {\n return new Promise((resolve, reject) => {\n const id = sequence.set(channel, sequence.get(channel) + 1).get(channel)\n rpcCallbacks.get(channel).set(id, (message) => {\n if (message.result) return resolve(message.result)\n if (message.error) {\n const [{ message: details } = {}] = message.error.data || []\n return reject(new ChannelCallError(message.error.message + (details ? `: ${details}` : '')))\n }\n })\n send(channel, { jsonrpc: '2.0', method, id, params })\n })\n}\n\nexport function disconnect (channel) {\n websockets.get(channel).close()\n clearTimeout(pingTimeoutId.get(channel))\n clearTimeout(pongTimeoutId.get(channel))\n}\n\nexport async function initialize (\n channel, connectionHandler, openHandler, { url, ...channelOptions }\n) {\n options.set(channel, channelOptions)\n fsm.set(channel, { handler: connectionHandler })\n eventEmitters.set(channel, new EventEmitter())\n sequence.set(channel, 0)\n rpcCallbacks.set(channel, new Map())\n messageQueue.set(channel, [])\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))\n wsUrl.searchParams.set('protocol', 'json-rpc')\n changeStatus(channel, 'connecting')\n const ws = new W3CWebSocket(wsUrl.toString())\n await new Promise((resolve, reject) => Object.assign(ws, {\n onerror: reject,\n onopen: () => {\n resolve()\n changeStatus(channel, 'connected')\n if (channelOptions.reconnectTx) {\n enterState(channel, { handler: openHandler })\n setTimeout(async () => changeState(channel,\n (await call(channel, 'channels.get.offchain_state', {})).signed_tx\n ))\n }\n ping(channel)\n },\n onclose: () => {\n changeStatus(channel, 'disconnected')\n clearTimeout(pingTimeoutId.get(channel))\n clearTimeout(pongTimeoutId.get(channel))\n },\n onmessage: ({ data }) => onMessage(channel, data)\n }))\n websockets.set(channel, ws)\n}\n"],"file":"internal.mjs"}
|
|
1
|
+
{"version":3,"file":"internal.mjs","names":["JsonBig","pascalToSnake","ChannelCallError","ChannelPingTimedOutError","UnknownChannelStateError","PING_TIMEOUT_MS","PONG_TIMEOUT_MS","options","WeakMap","status","state","fsm","websockets","eventEmitters","messageQueue","messageQueueLocked","actionQueue","actionQueueLocked","sequence","channelId","rpcCallbacks","pingTimeoutId","pongTimeoutId","fsmId","emit","channel","args","eventName","rest","get","enterState","nextState","set","handler","enter","dequeueAction","changeStatus","newStatus","prevStatus","changeState","newState","send","message","debug","console","log","stringify","enqueueAction","guard","action","queue","locked","Boolean","length","index","findIndex","filter","_","i","Promise","resolve","handleMessage","fsmState","dequeueMessage","messages","shift","error","ping","pingTimeoutIdValue","pongTimeoutIdValue","clearTimeout","setTimeout","jsonrpc","method","params","disconnect","onMessage","data","parse","id","callback","delete","channel_id","push","call","reject","currentSequence","result","details","close","initialize","connectionHandler","openHandler","url","channelOptions","EventEmitter","Map","wsUrl","URL","Object","entries","key","forEach","value","searchParams","ws","W3CWebSocket","toString","assign","onerror","onopen","reconnectTx","signedTx","signed_tx","onclose","onmessage"],"sources":["../../src/channel/internal.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport { w3cwebsocket as W3CWebSocket } from 'websocket'\nimport { EventEmitter } from 'events'\nimport BigNumber from 'bignumber.js'\nimport Channel from '.'\nimport JsonBig from '../utils/json-big'\nimport { pascalToSnake } from '../utils/string'\nimport { EncodedData } from '../utils/encoder'\nimport { ChannelCallError, ChannelPingTimedOutError, UnknownChannelStateError } from '../utils/errors'\n\ninterface ChannelAction {\n guard: (channel: Channel, state?: ChannelFsm) => boolean\n action: (channel: Channel, state?: ChannelFsm) => ChannelFsm\n}\n\nexport type SignTxWithTag = (tag: string, tx: EncodedData<'tx'>, options?: object) => Promise<EncodedData<'tx'>>\n// TODO: SignTx shouldn't return number or null\nexport type SignTx = (tx: EncodedData<'tx'>, options?: object) => Promise<EncodedData<'tx'> | number | null>\n\nexport interface ChannelOptions {\n existingFsmId?: string\n url: string\n role: 'initiator' | 'responder'\n initiatorId: EncodedData<'ak'>\n responderId: EncodedData<'ak'>\n pushAmount: number\n initiatorAmount: BigNumber\n responderAmount: BigNumber\n channelReserve?: BigNumber | number\n signedTx?: string\n ttl?: number\n host: string\n port: number\n lockPeriod: number\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: any\n resolve: Function\n reject: Function\n sign: SignTx\n handler?: ChannelHandler\n onOnChainTx?: Function\n onOwnWithdrawLocked?: Function\n onWithdrawLocked?: Function\n onOwnDepositLocked?: Function\n onDepositLocked?: Function\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 jsonrpc: string\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 5 seconds\nconst PONG_TIMEOUT_MS = 5000\n\n// TODO: move to Channel instance to avoid is-null checks and for easier debugging\nexport const options = new WeakMap<Channel, ChannelOptions>()\nexport const status = new WeakMap<Channel, string>()\nexport const state = new WeakMap<Channel, EncodedData<'tx'>>()\nconst fsm = new WeakMap<Channel, ChannelFsm>()\nconst websockets = new WeakMap<Channel, W3CWebSocket>()\nexport const eventEmitters = new WeakMap<Channel, EventEmitter>()\nconst messageQueue = new WeakMap<Channel, string[]>()\nconst messageQueueLocked = new WeakMap<Channel, boolean>()\nconst actionQueue = new WeakMap<Channel, ChannelAction[]>()\nconst actionQueueLocked = new WeakMap<Channel, boolean>()\nconst sequence = new WeakMap<Channel, number>()\nexport const channelId = new WeakMap<Channel, string>()\nconst rpcCallbacks = new WeakMap<Channel, Map<number, Function>>()\nconst pingTimeoutId = new WeakMap<Channel, NodeJS.Timeout>()\nconst pongTimeoutId = new WeakMap<Channel, NodeJS.Timeout>()\nexport const fsmId = new WeakMap<Channel, string>()\n\nexport function emit (channel: Channel, ...args: any[]): void {\n const [eventName, ...rest] = args\n eventEmitters.get(channel)?.emit(eventName, ...rest)\n}\n\nfunction enterState (channel: Channel, nextState: ChannelFsm): void {\n if (nextState == null) {\n throw new UnknownChannelStateError()\n }\n fsm.set(channel, nextState)\n if (nextState?.handler?.enter != null) {\n nextState.handler.enter(channel)\n }\n void dequeueAction(channel)\n}\n\nexport function changeStatus (channel: Channel, newStatus: string): void {\n const prevStatus = status.get(channel)\n if (newStatus !== prevStatus) {\n status.set(channel, newStatus)\n emit(channel, 'statusChanged', newStatus)\n }\n}\n\nexport function changeState (channel: Channel, newState: EncodedData<'tx'>): void {\n state.set(channel, newState)\n emit(channel, 'stateChanged', newState)\n}\n\nexport function send (channel: Channel, message: ChannelMessage): void {\n const debug: boolean = options.get(channel)?.debug ?? false\n if (debug) console.log('Send message: ', message)\n\n websockets.get(channel)?.send(JsonBig.stringify(message))\n}\n\nexport function enqueueAction (channel: Channel, guard: ChannelAction['guard'], action: ChannelAction['action']): void {\n const queue = actionQueue.get(channel) ?? []\n actionQueue.set(channel, [\n ...queue,\n { guard, action }\n ])\n void dequeueAction(channel)\n}\n\nasync function dequeueAction (channel: Channel): Promise<void> {\n const locked = actionQueueLocked.get(channel)\n const queue = actionQueue.get(channel) ?? []\n if (Boolean(locked) || queue.length === 0) {\n return\n }\n const state = fsm.get(channel)\n if (state == null) return\n const index = queue.findIndex((action: ChannelAction) => action.guard(channel, state))\n if (index === -1) {\n return\n }\n actionQueue.set(channel, queue.filter((_: ChannelAction, i: number) => index !== i))\n actionQueueLocked.set(channel, true)\n const nextState: ChannelFsm = await Promise.resolve(queue[index].action(channel, state))\n actionQueueLocked.set(channel, false)\n enterState(channel, nextState)\n}\n\nasync function handleMessage (channel: Channel, message: string): Promise<void> {\n const fsmState = fsm.get(channel)\n if (fsmState == null) throw new UnknownChannelStateError()\n const { handler, state } = fsmState\n enterState(channel, await Promise.resolve(handler(channel, message, state)))\n}\n\nasync function dequeueMessage (channel: Channel): Promise<void> {\n const locked: boolean = messageQueueLocked.get(channel) ?? false\n if (locked) return\n const messages: string[] = messageQueue.get(channel) ?? []\n if (messages.length === 0) return\n messageQueueLocked.set(channel, true)\n while (messages.length > 0) {\n const message: string = messages.shift() ?? ''\n try {\n await handleMessage(channel, message)\n } catch (error) {\n console.error('Error handling incoming message:')\n console.error(message)\n console.error(error)\n }\n }\n messageQueueLocked.set(channel, false)\n}\n\nfunction ping (channel: Channel): void {\n const pingTimeoutIdValue = pingTimeoutId.get(channel)\n const pongTimeoutIdValue = pongTimeoutId.get(channel)\n if (pingTimeoutIdValue != null) clearTimeout(pingTimeoutIdValue)\n if (pongTimeoutIdValue != null) clearTimeout(pongTimeoutIdValue)\n pingTimeoutId.set(channel, setTimeout(() => {\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.system',\n params: {\n action: 'ping'\n }\n })\n pongTimeoutId.set(channel, 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 const debug: boolean = options.get(channel)?.debug ?? false\n if (debug) console.log('Receive message: ', message)\n if (message.id != null) {\n const callback = rpcCallbacks.get(channel)?.get(message.id)\n try {\n callback?.(message)\n } finally {\n rpcCallbacks.get(channel)?.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 (\n (message.params.channel_id === channelId.get(channel)) ||\n // Skip channelId check if channelId is not known yet\n (channelId.get(channel) == null)\n ) {\n ping(channel)\n }\n return\n }\n messageQueue.get(channel)?.push(message)\n void dequeueMessage(channel)\n}\n\nexport async function call (channel: Channel, method: string, params: any): Promise<any> {\n return await new Promise((resolve, reject) => {\n const currentSequence: number = sequence.get(channel) ?? 0\n const id = sequence.set(channel, currentSequence + 1).get(channel) ?? 1\n rpcCallbacks.get(channel)?.set(id, (message: {\n result: PromiseLike<any>\n error?: ChannelMessageError }) => {\n if (message.result != null) return resolve(message.result)\n if (message.error != null) {\n const [{ message: details } = { message: '' }] = message.error.data ?? []\n return reject(new ChannelCallError(message.error.message + details))\n }\n })\n send(channel, { jsonrpc: '2.0', method, id, params })\n })\n}\n\nexport function disconnect (channel: Channel): void {\n websockets.get(channel)?.close()\n const pingTimeoutIdValue = pingTimeoutId.get(channel)\n const pongTimeoutIdValue = pongTimeoutId.get(channel)\n if (pingTimeoutIdValue != null) clearTimeout(pingTimeoutIdValue)\n if (pongTimeoutIdValue != null) clearTimeout(pongTimeoutIdValue)\n}\n\nexport async function initialize (\n channel: Channel,\n connectionHandler: Function,\n openHandler: Function,\n { url, ...channelOptions }: ChannelOptions\n): Promise<void> {\n options.set(channel, { url, ...channelOptions })\n fsm.set(channel, { handler: connectionHandler })\n eventEmitters.set(channel, new EventEmitter())\n sequence.set(channel, 0)\n rpcCallbacks.set(channel, new Map())\n messageQueue.set(channel, [])\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))\n wsUrl.searchParams.set('protocol', 'json-rpc')\n changeStatus(channel, 'connecting')\n const ws = new W3CWebSocket(wsUrl.toString())\n await new Promise<void>((resolve, reject) => Object.assign(ws, {\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 call(channel, 'channels.get.offchain_state', {})).signed_tx\n changeState(channel, signedTx)\n }\n ping(channel)\n },\n onclose: () => {\n changeStatus(channel, 'disconnected')\n const pingTimeoutIdValue = pingTimeoutId.get(channel)\n const pongTimeoutIdValue = pongTimeoutId.get(channel)\n if (pingTimeoutIdValue != null) clearTimeout(pingTimeoutIdValue)\n if (pongTimeoutIdValue != null) clearTimeout(pongTimeoutIdValue)\n },\n onmessage: ({ data }: {data: string}) => onMessage(channel, data)\n }))\n websockets.set(channel, ws)\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Compiler as CompilerApi } from '../apis/compiler';
|
|
2
|
+
/**
|
|
3
|
+
* Contract Compiler
|
|
4
|
+
*
|
|
5
|
+
* This class include api call's related to contract compiler functionality.
|
|
6
|
+
* @example Compiler('COMPILER_URL')
|
|
7
|
+
*/
|
|
8
|
+
export default class Compiler extends CompilerApi {
|
|
9
|
+
/**
|
|
10
|
+
* @param compilerUrl - Url for compiler API
|
|
11
|
+
* @param options - Options
|
|
12
|
+
* @param options.ignoreVersion - Don't check compiler version
|
|
13
|
+
*/
|
|
14
|
+
constructor(compilerUrl: string, { ignoreVersion }?: {
|
|
15
|
+
ignoreVersion?: boolean;
|
|
16
|
+
});
|
|
17
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ISC License (ISC)
|
|
3
|
+
* Copyright (c) 2022 aeternity developers
|
|
4
|
+
*
|
|
5
|
+
* Permission to use, copy, modify, and/or distribute this software for any
|
|
6
|
+
* purpose with or without fee is hereby granted, provided that the above
|
|
7
|
+
* copyright notice and this permission notice appear in all copies.
|
|
8
|
+
*
|
|
9
|
+
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
10
|
+
* REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
11
|
+
* AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
12
|
+
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
13
|
+
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
14
|
+
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
15
|
+
* PERFORMANCE OF THIS SOFTWARE.
|
|
16
|
+
*/
|
|
17
|
+
import { Compiler as CompilerApi } from "../apis/compiler/index.mjs";
|
|
18
|
+
import { genErrorFormatterPolicy, genVersionCheckPolicy } from "../utils/autorest.mjs";
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Contract Compiler
|
|
22
|
+
*
|
|
23
|
+
* This class include api call's related to contract compiler functionality.
|
|
24
|
+
* @example Compiler('COMPILER_URL')
|
|
25
|
+
*/
|
|
26
|
+
export default class Compiler extends CompilerApi {
|
|
27
|
+
/**
|
|
28
|
+
* @param compilerUrl - Url for compiler API
|
|
29
|
+
* @param options - Options
|
|
30
|
+
* @param options.ignoreVersion - Don't check compiler version
|
|
31
|
+
*/
|
|
32
|
+
constructor(compilerUrl) {
|
|
33
|
+
let {
|
|
34
|
+
ignoreVersion
|
|
35
|
+
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
36
|
+
super(compilerUrl, {
|
|
37
|
+
allowInsecureConnection: true,
|
|
38
|
+
additionalPolicies: [genErrorFormatterPolicy(body => {
|
|
39
|
+
let message = '';
|
|
40
|
+
|
|
41
|
+
if ('reason' in body) {
|
|
42
|
+
message += ' ' + body.reason + (body.parameter != null ? ` in ${body.parameter}` : '') + ( // TODO: revising after improving documentation https://github.com/aeternity/aesophia_http/issues/78
|
|
43
|
+
body.info != null ? ` (${JSON.stringify(body.info)})` : '');
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (Array.isArray(body)) {
|
|
47
|
+
message += '\n' + body.map(e => `${e.type}:${e.pos.line}:${e.pos.col}: ${e.message}${e.context != null ? `(${e.context})` : ''}`).map(e => e.trim()) // TODO: remove after fixing https://github.com/aeternity/aesophia_http/issues/80
|
|
48
|
+
.join('\n');
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return message;
|
|
52
|
+
})]
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
if (ignoreVersion !== true) {
|
|
56
|
+
const versionPromise = this.aPIVersion().then(_ref => {
|
|
57
|
+
let {
|
|
58
|
+
apiVersion
|
|
59
|
+
} = _ref;
|
|
60
|
+
return apiVersion;
|
|
61
|
+
});
|
|
62
|
+
this.pipeline.addPolicy(genVersionCheckPolicy('compiler', '/api-version', versionPromise, '6.1.0', '7.0.0'));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=Compiler.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Compiler.mjs","names":["Compiler","CompilerApi","genErrorFormatterPolicy","genVersionCheckPolicy","constructor","compilerUrl","ignoreVersion","allowInsecureConnection","additionalPolicies","body","message","reason","parameter","info","JSON","stringify","Array","isArray","map","e","type","pos","line","col","context","trim","join","versionPromise","aPIVersion","then","apiVersion","pipeline","addPolicy"],"sources":["../../src/contract/Compiler.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\nimport { Compiler as CompilerApi, ErrorModel, CompilerError } from '../apis/compiler'\nimport { genErrorFormatterPolicy, genVersionCheckPolicy } from '../utils/autorest'\n\ntype GeneralCompilerError = ErrorModel & {\n info?: object\n parameter?: string\n}\n\n/**\n * Contract Compiler\n *\n * This class include api call's related to contract compiler functionality.\n * @example Compiler('COMPILER_URL')\n */\nexport default class Compiler extends CompilerApi {\n /**\n * @param compilerUrl - Url for compiler API\n * @param options - Options\n * @param options.ignoreVersion - Don't check compiler version\n */\n constructor (compilerUrl: string, { ignoreVersion }: { ignoreVersion?: boolean } = {}) {\n super(compilerUrl, {\n allowInsecureConnection: true,\n additionalPolicies: [\n genErrorFormatterPolicy((body: GeneralCompilerError | CompilerError[]) => {\n let message = ''\n if ('reason' in body) {\n message += ' ' + body.reason +\n (body.parameter != null ? ` in ${body.parameter}` : '') +\n // TODO: revising after improving documentation https://github.com/aeternity/aesophia_http/issues/78\n (body.info != null ? ` (${JSON.stringify(body.info)})` : '')\n }\n if (Array.isArray(body)) {\n message += '\\n' + body\n .map(e => `${e.type}:${e.pos.line}:${e.pos.col}: ${e.message}${e.context != null ? `(${e.context})` : ''}`)\n .map(e => e.trim()) // TODO: remove after fixing https://github.com/aeternity/aesophia_http/issues/80\n .join('\\n')\n }\n return message\n })\n ]\n })\n if (ignoreVersion !== true) {\n const versionPromise = this.aPIVersion().then(({ apiVersion }) => apiVersion)\n this.pipeline.addPolicy(\n genVersionCheckPolicy('compiler', '/api-version', versionPromise, '6.1.0', '7.0.0')\n )\n }\n }\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;SACSA,QAAQ,IAAIC,W;SACZC,uB,EAAyBC,qB;;AAOlC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAMH,QAAN,SAAuBC,WAAvB,CAAmC;EAChD;AACF;AACA;AACA;AACA;EACEG,WAAW,CAAEC,WAAF,EAA4E;IAAA,IAArD;MAAEC;IAAF,CAAqD,uEAAJ,EAAI;IACrF,MAAMD,WAAN,EAAmB;MACjBE,uBAAuB,EAAE,IADR;MAEjBC,kBAAkB,EAAE,CAClBN,uBAAuB,CAAEO,IAAD,IAAkD;QACxE,IAAIC,OAAO,GAAG,EAAd;;QACA,IAAI,YAAYD,IAAhB,EAAsB;UACpBC,OAAO,IAAI,MAAMD,IAAI,CAACE,MAAX,IACRF,IAAI,CAACG,SAAL,IAAkB,IAAlB,GAA0B,OAAMH,IAAI,CAACG,SAAU,EAA/C,GAAmD,EAD3C,MAET;UACCH,IAAI,CAACI,IAAL,IAAa,IAAb,GAAqB,KAAIC,IAAI,CAACC,SAAL,CAAeN,IAAI,CAACI,IAApB,CAA0B,GAAnD,GAAwD,EAHhD,CAAX;QAID;;QACD,IAAIG,KAAK,CAACC,OAAN,CAAcR,IAAd,CAAJ,EAAyB;UACvBC,OAAO,IAAI,OAAOD,IAAI,CACnBS,GADe,CACXC,CAAC,IAAK,GAAEA,CAAC,CAACC,IAAK,IAAGD,CAAC,CAACE,GAAF,CAAMC,IAAK,IAAGH,CAAC,CAACE,GAAF,CAAME,GAAI,KAAIJ,CAAC,CAACT,OAAQ,GAAES,CAAC,CAACK,OAAF,IAAa,IAAb,GAAqB,IAAGL,CAAC,CAACK,OAAQ,GAAlC,GAAuC,EAAG,EADzF,EAEfN,GAFe,CAEXC,CAAC,IAAIA,CAAC,CAACM,IAAF,EAFM,EAEI;UAFJ,CAGfC,IAHe,CAGV,IAHU,CAAlB;QAID;;QACD,OAAOhB,OAAP;MACD,CAfsB,CADL;IAFH,CAAnB;;IAqBA,IAAIJ,aAAa,KAAK,IAAtB,EAA4B;MAC1B,MAAMqB,cAAc,GAAG,KAAKC,UAAL,GAAkBC,IAAlB,CAAuB;QAAA,IAAC;UAAEC;QAAF,CAAD;QAAA,OAAoBA,UAApB;MAAA,CAAvB,CAAvB;MACA,KAAKC,QAAL,CAAcC,SAAd,CACE7B,qBAAqB,CAAC,UAAD,EAAa,cAAb,EAA6BwB,cAA7B,EAA6C,OAA7C,EAAsD,OAAtD,CADvB;IAGD;EACF;;AAlC+C"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { AensName } from '../tx/builder/schema';
|
|
2
|
+
import { send } from '../spend';
|
|
3
|
+
import { EncodedData } from '../utils/encoder';
|
|
4
|
+
import { Aci as BaseAci } from '../apis/compiler';
|
|
5
|
+
import Compiler from './Compiler';
|
|
6
|
+
import Node from '../Node';
|
|
7
|
+
import AccountBase from '../account/Base';
|
|
8
|
+
interface FunctionACI {
|
|
9
|
+
arguments: any[];
|
|
10
|
+
name: string;
|
|
11
|
+
payable: boolean;
|
|
12
|
+
returns: string;
|
|
13
|
+
stateful: boolean;
|
|
14
|
+
}
|
|
15
|
+
interface Aci extends BaseAci {
|
|
16
|
+
encodedAci: {
|
|
17
|
+
contract: {
|
|
18
|
+
name: string;
|
|
19
|
+
event: any;
|
|
20
|
+
kind: string;
|
|
21
|
+
state: any;
|
|
22
|
+
type_defs: any[];
|
|
23
|
+
functions: FunctionACI[];
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
externalEncodedAci: any[];
|
|
27
|
+
}
|
|
28
|
+
interface Event {
|
|
29
|
+
address: EncodedData<'ct'>;
|
|
30
|
+
data: string;
|
|
31
|
+
topics: Array<string | number>;
|
|
32
|
+
}
|
|
33
|
+
interface DecodedEvent {
|
|
34
|
+
name: string;
|
|
35
|
+
args: unknown;
|
|
36
|
+
contract: {
|
|
37
|
+
name: string;
|
|
38
|
+
address: EncodedData<'ct'>;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
declare type TxData = Awaited<ReturnType<typeof send>>;
|
|
42
|
+
export interface ContractInstance {
|
|
43
|
+
_aci: Aci;
|
|
44
|
+
_name: string;
|
|
45
|
+
calldata: any;
|
|
46
|
+
source?: string;
|
|
47
|
+
bytecode?: EncodedData<'cb'>;
|
|
48
|
+
deployInfo: {
|
|
49
|
+
address?: EncodedData<'ct'>;
|
|
50
|
+
result?: {
|
|
51
|
+
callerId: string;
|
|
52
|
+
callerNonce: string;
|
|
53
|
+
contractId: string;
|
|
54
|
+
gasPrice: bigint;
|
|
55
|
+
gasUsed: number;
|
|
56
|
+
height: number;
|
|
57
|
+
log: any[];
|
|
58
|
+
returnType: string;
|
|
59
|
+
returnValue: string;
|
|
60
|
+
};
|
|
61
|
+
owner?: EncodedData<'ak'>;
|
|
62
|
+
transaction?: string;
|
|
63
|
+
rawTx?: string;
|
|
64
|
+
txData?: TxData;
|
|
65
|
+
};
|
|
66
|
+
options: any;
|
|
67
|
+
compile: (options?: {}) => Promise<EncodedData<'cb'>>;
|
|
68
|
+
_estimateGas: (name: string, params: any[], options: object) => Promise<number>;
|
|
69
|
+
deploy: (params?: any[], options?: object) => Promise<any>;
|
|
70
|
+
call: (fn: string, params?: any[], options?: {}) => Promise<{
|
|
71
|
+
hash: string;
|
|
72
|
+
tx: any;
|
|
73
|
+
txData: TxData;
|
|
74
|
+
rawTx: string;
|
|
75
|
+
result: {
|
|
76
|
+
callerId: EncodedData<'ak'>;
|
|
77
|
+
callerNonce: number;
|
|
78
|
+
contractId: EncodedData<'ct'>;
|
|
79
|
+
gasPrice: number;
|
|
80
|
+
gasUsed: number;
|
|
81
|
+
height: number;
|
|
82
|
+
log: any[];
|
|
83
|
+
returnType: string;
|
|
84
|
+
returnValue: string;
|
|
85
|
+
};
|
|
86
|
+
decodedResult: any;
|
|
87
|
+
decodedEvents: DecodedEvent[];
|
|
88
|
+
}>;
|
|
89
|
+
decodeEvents: (events: Event[], options?: {
|
|
90
|
+
omitUnknown?: boolean;
|
|
91
|
+
contractAddressToName?: any;
|
|
92
|
+
}) => DecodedEvent[];
|
|
93
|
+
methods: any;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Generate contract ACI object with predefined js methods for contract usage - can be used for
|
|
97
|
+
* creating a reference to already deployed contracts
|
|
98
|
+
* @param options - Options object
|
|
99
|
+
* @returns JS Contract API
|
|
100
|
+
* @example
|
|
101
|
+
* ```js
|
|
102
|
+
* const contractIns = await aeSdk.getContractInstance({ source })
|
|
103
|
+
* await contractIns.deploy([321]) or await contractIns.methods.init(321)
|
|
104
|
+
* const callResult = await contractIns.call('setState', [123]) or
|
|
105
|
+
* await contractIns.methods.setState.send(123, options)
|
|
106
|
+
* const staticCallResult = await contractIns.call('setState', [123], { callStatic: true }) or
|
|
107
|
+
* await contractIns.methods.setState.get(123, options)
|
|
108
|
+
* ```
|
|
109
|
+
* Also you can call contract like: `await contractIns.methods.setState(123, options)`
|
|
110
|
+
* Then sdk decide to make on-chain or static call(dry-run API) transaction based on function is
|
|
111
|
+
* stateful or not
|
|
112
|
+
*/
|
|
113
|
+
export default function getContractInstance({ onAccount, onCompiler, onNode, source, bytecode, aci: _aci, contractAddress, fileSystem, validateBytecode, ...otherOptions }: {
|
|
114
|
+
onAccount: AccountBase;
|
|
115
|
+
onCompiler: Compiler;
|
|
116
|
+
onNode: Node;
|
|
117
|
+
source?: string;
|
|
118
|
+
bytecode?: EncodedData<'cb'>;
|
|
119
|
+
aci?: Aci;
|
|
120
|
+
contractAddress?: EncodedData<'ct'> | AensName;
|
|
121
|
+
fileSystem?: Record<string, string>;
|
|
122
|
+
validateBytecode?: boolean;
|
|
123
|
+
[key: string]: any;
|
|
124
|
+
}): Promise<ContractInstance>;
|
|
125
|
+
export {};
|