@aeternity/aepp-sdk 13.1.0 → 13.2.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.
Files changed (159) hide show
  1. package/dist/aepp-sdk.browser-script.js +1 -1
  2. package/dist/aepp-sdk.browser-script.js.map +1 -1
  3. package/dist/aepp-sdk.browser.js +1 -1
  4. package/dist/aepp-sdk.browser.js.map +1 -1
  5. package/dist/aepp-sdk.js +2162 -1566
  6. package/dist/aepp-sdk.js.map +1 -1
  7. package/es/AeSdkAepp.mjs.map +1 -1
  8. package/es/AeSdkBase.d.ts +10 -0
  9. package/es/AeSdkBase.mjs +27 -0
  10. package/es/AeSdkBase.mjs.map +1 -1
  11. package/es/AeSdkMethods.mjs.map +1 -1
  12. package/es/AeSdkWallet.d.ts +1 -1
  13. package/es/AeSdkWallet.mjs +53 -20
  14. package/es/AeSdkWallet.mjs.map +1 -1
  15. package/es/Middleware.mjs.map +1 -1
  16. package/es/MiddlewareSubscriber.mjs +3 -3
  17. package/es/MiddlewareSubscriber.mjs.map +1 -1
  18. package/es/Node.mjs.map +1 -1
  19. package/es/account/Base.d.ts +44 -2
  20. package/es/account/Base.mjs +95 -1
  21. package/es/account/Base.mjs.map +1 -1
  22. package/es/account/Generalized.d.ts +3 -0
  23. package/es/account/Generalized.mjs +15 -0
  24. package/es/account/Generalized.mjs.map +1 -1
  25. package/es/account/Ledger.d.ts +3 -0
  26. package/es/account/Ledger.mjs +15 -0
  27. package/es/account/Ledger.mjs.map +1 -1
  28. package/es/account/LedgerFactory.mjs.map +1 -1
  29. package/es/account/Memory.d.ts +10 -0
  30. package/es/account/Memory.mjs +34 -0
  31. package/es/account/Memory.mjs.map +1 -1
  32. package/es/account/Rpc.d.ts +4 -0
  33. package/es/account/Rpc.mjs +29 -0
  34. package/es/account/Rpc.mjs.map +1 -1
  35. package/es/aens.mjs.map +1 -1
  36. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -1
  37. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -1
  38. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -1
  39. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -1
  40. package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -1
  41. package/es/aepp-wallet-communication/rpc/types.d.ts +9 -0
  42. package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -1
  43. package/es/aepp-wallet-communication/schema.d.ts +1 -0
  44. package/es/aepp-wallet-communication/schema.mjs +20 -19
  45. package/es/aepp-wallet-communication/schema.mjs.map +1 -1
  46. package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -1
  47. package/es/apis/compiler/compiler.mjs.map +1 -1
  48. package/es/apis/middleware/middleware.mjs.map +1 -1
  49. package/es/apis/middleware/models/index.mjs +340 -124
  50. package/es/apis/middleware/models/index.mjs.map +1 -1
  51. package/es/apis/node/node.mjs.map +1 -1
  52. package/es/chain.mjs +1 -1
  53. package/es/chain.mjs.map +1 -1
  54. package/es/channel/Base.mjs.map +1 -1
  55. package/es/channel/Contract.mjs.map +1 -1
  56. package/es/channel/Spend.mjs.map +1 -1
  57. package/es/channel/handlers.mjs +2 -2
  58. package/es/channel/handlers.mjs.map +1 -1
  59. package/es/channel/internal.mjs +6 -6
  60. package/es/channel/internal.mjs.map +1 -1
  61. package/es/contract/Contract.mjs +1 -1
  62. package/es/contract/Contract.mjs.map +1 -1
  63. package/es/contract/compiler/Cli.mjs.map +1 -1
  64. package/es/contract/compiler/Http.mjs.map +1 -1
  65. package/es/contract/delegation-signature.d.ts +2 -1
  66. package/es/contract/delegation-signature.mjs +39 -8
  67. package/es/contract/delegation-signature.mjs.map +1 -1
  68. package/es/contract/ga.mjs.map +1 -1
  69. package/es/oracle.mjs.map +1 -1
  70. package/es/spend.d.ts +2 -1
  71. package/es/spend.mjs +4 -2
  72. package/es/spend.mjs.map +1 -1
  73. package/es/tx/builder/constants.mjs +26 -23
  74. package/es/tx/builder/constants.mjs.map +1 -1
  75. package/es/tx/builder/field-types/abi-version.mjs.map +1 -1
  76. package/es/tx/builder/field-types/coin-amount.mjs.map +1 -1
  77. package/es/tx/builder/field-types/ct-version.mjs.map +1 -1
  78. package/es/tx/builder/field-types/deposit.mjs.map +1 -1
  79. package/es/tx/builder/field-types/entry.mjs.map +1 -1
  80. package/es/tx/builder/field-types/fee.mjs.map +1 -1
  81. package/es/tx/builder/field-types/field.mjs.map +1 -1
  82. package/es/tx/builder/field-types/gas-limit.mjs.map +1 -1
  83. package/es/tx/builder/field-types/gas-price.mjs.map +1 -1
  84. package/es/tx/builder/field-types/index.d.ts +28 -150
  85. package/es/tx/builder/field-types/index.mjs +28 -56
  86. package/es/tx/builder/field-types/index.mjs.map +1 -1
  87. package/es/tx/builder/field-types/map.mjs.map +1 -1
  88. package/es/tx/builder/field-types/mptree.mjs +3 -3
  89. package/es/tx/builder/field-types/mptree.mjs.map +1 -1
  90. package/es/tx/builder/field-types/name-fee.mjs.map +1 -1
  91. package/es/tx/builder/field-types/pointers.mjs.map +1 -1
  92. package/es/tx/builder/field-types/string.mjs.map +1 -1
  93. package/es/tx/builder/field-types/ttl.mjs.map +1 -1
  94. package/es/tx/builder/field-types/u-int.mjs +1 -1
  95. package/es/tx/builder/field-types/u-int.mjs.map +1 -1
  96. package/es/tx/builder/helpers.mjs.map +1 -1
  97. package/es/tx/builder/index.mjs.map +1 -1
  98. package/es/tx/builder/schema.mjs +11 -10
  99. package/es/tx/builder/schema.mjs.map +1 -1
  100. package/es/tx/execution-cost.mjs.map +1 -1
  101. package/es/tx/transaction-signer.mjs.map +1 -1
  102. package/es/tx/validator.mjs.map +1 -1
  103. package/es/utils/amount-formatter.mjs +7 -7
  104. package/es/utils/amount-formatter.mjs.map +1 -1
  105. package/es/utils/autorest.mjs.map +1 -1
  106. package/es/utils/bignumber.mjs.map +1 -1
  107. package/es/utils/bytes.mjs.map +1 -1
  108. package/es/utils/crypto.mjs.map +1 -1
  109. package/es/utils/encoder-types.mjs +3 -3
  110. package/es/utils/encoder-types.mjs.map +1 -1
  111. package/es/utils/encoder.mjs.map +1 -1
  112. package/es/utils/errors.mjs.map +1 -1
  113. package/es/utils/hd-wallet.mjs.map +1 -1
  114. package/es/utils/keystore.mjs.map +1 -1
  115. package/es/utils/other.mjs.map +1 -1
  116. package/es/utils/semver-satisfies.mjs.map +1 -1
  117. package/es/utils/string.mjs.map +1 -1
  118. package/es/utils/typed-data.mjs +0 -1
  119. package/es/utils/typed-data.mjs.map +1 -1
  120. package/package.json +35 -35
  121. package/src/AeSdkBase.ts +36 -0
  122. package/src/AeSdkWallet.ts +36 -12
  123. package/src/account/Base.ts +84 -3
  124. package/src/account/Generalized.ts +15 -0
  125. package/src/account/Ledger.ts +15 -0
  126. package/src/account/Memory.ts +53 -1
  127. package/src/account/Rpc.ts +35 -0
  128. package/src/aepp-wallet-communication/rpc/types.ts +10 -0
  129. package/src/aepp-wallet-communication/schema.ts +1 -0
  130. package/src/chain.ts +1 -1
  131. package/src/contract/Contract.ts +1 -1
  132. package/src/contract/delegation-signature.ts +37 -11
  133. package/src/spend.ts +2 -2
  134. package/src/tx/builder/field-types/index.ts +28 -58
  135. package/src/tx/builder/field-types/u-int.ts +1 -1
  136. package/types-legacy/ts4.2/AeSdkBase.d.ts +10 -0
  137. package/types-legacy/ts4.2/AeSdkWallet.d.ts +1 -1
  138. package/types-legacy/ts4.2/account/Base.d.ts +44 -2
  139. package/types-legacy/ts4.2/account/Generalized.d.ts +3 -0
  140. package/types-legacy/ts4.2/account/Ledger.d.ts +3 -0
  141. package/types-legacy/ts4.2/account/Memory.d.ts +10 -0
  142. package/types-legacy/ts4.2/account/Rpc.d.ts +4 -0
  143. package/types-legacy/ts4.2/aepp-wallet-communication/rpc/types.d.ts +9 -0
  144. package/types-legacy/ts4.2/aepp-wallet-communication/schema.d.ts +1 -0
  145. package/types-legacy/ts4.2/contract/delegation-signature.d.ts +2 -1
  146. package/types-legacy/ts4.2/spend.d.ts +2 -1
  147. package/types-legacy/ts4.2/tx/builder/field-types/index.d.ts +28 -153
  148. package/types-legacy/ts4.5/AeSdkBase.d.ts +10 -0
  149. package/types-legacy/ts4.5/AeSdkWallet.d.ts +1 -1
  150. package/types-legacy/ts4.5/account/Base.d.ts +44 -2
  151. package/types-legacy/ts4.5/account/Generalized.d.ts +3 -0
  152. package/types-legacy/ts4.5/account/Ledger.d.ts +3 -0
  153. package/types-legacy/ts4.5/account/Memory.d.ts +10 -0
  154. package/types-legacy/ts4.5/account/Rpc.d.ts +4 -0
  155. package/types-legacy/ts4.5/aepp-wallet-communication/rpc/types.d.ts +9 -0
  156. package/types-legacy/ts4.5/aepp-wallet-communication/schema.d.ts +1 -0
  157. package/types-legacy/ts4.5/contract/delegation-signature.d.ts +2 -1
  158. package/types-legacy/ts4.5/spend.d.ts +2 -1
  159. package/types-legacy/ts4.5/tx/builder/field-types/index.d.ts +28 -153
@@ -1 +1 @@
1
- {"version":3,"file":"AeSdkAepp.mjs","names":["AeSdkBase","AccountRpc","decode","RPC_VERSION","RpcClient","METHODS","AlreadyConnectedError","NoWalletConnectedError","UnsubscribedAccountError","UnAuthorizedAccountError","RpcConnectionError","Node","AeSdkAepp","constructor","_ref","name","onAddressChange","onDisconnect","onNetworkChange","other","_resolveAccount","account","arguments","length","undefined","addresses","address","includes","_ensureConnected","rpcClient","_ensureAccountAccess","_accounts","current","Object","keys","connected","connectToWallet","connection","connectNode","disconnectParams","updateNetwork","params","_params$node","node","url","pool","delete","addNode","client","updateAddress","closeConnection","disconnect","readyToConnect","walletInfo","request","connect","version","disconnectWallet","notify","reason","askAddresses","subscribeAddress","type","value","result"],"sources":["../src/AeSdkAepp.ts"],"sourcesContent":["import AeSdkBase from './AeSdkBase';\nimport { OnAccount } from './AeSdkMethods';\nimport AccountBase from './account/Base';\nimport AccountRpc from './account/Rpc';\nimport { decode, Encoded } from './utils/encoder';\nimport {\n Accounts, RPC_VERSION, WalletInfo, Network, WalletApi, AeppApi, Node as NodeRpc,\n} from './aepp-wallet-communication/rpc/types';\nimport RpcClient from './aepp-wallet-communication/rpc/RpcClient';\nimport { METHODS, SUBSCRIPTION_TYPES } from './aepp-wallet-communication/schema';\nimport {\n AlreadyConnectedError,\n NoWalletConnectedError,\n UnsubscribedAccountError,\n UnAuthorizedAccountError,\n RpcConnectionError,\n} from './utils/errors';\nimport Node from './Node';\nimport BrowserConnection from './aepp-wallet-communication/connection/Browser';\n\n/**\n * RPC handler for AEPP side\n * Contain functionality for wallet interaction and connect it to sdk\n * @category aepp wallet communication\n */\nexport default class AeSdkAepp extends AeSdkBase {\n name: string;\n\n onAddressChange: (a: Accounts) => void;\n\n onDisconnect: (p: any) => void;\n\n onNetworkChange: (a: Network) => void;\n\n rpcClient?: RpcClient<WalletApi, AeppApi>;\n\n _accounts?: Accounts;\n\n /**\n * @param options - Options\n * @param options.name - Aepp name\n * @param options.onAddressChange - Call-back function for update address event\n * @param options.onDisconnect - Call-back function for disconnect event\n * @param options.onNetworkChange - Call-back function for update network event\n */\n constructor({\n name,\n onAddressChange = () => {},\n onDisconnect = () => {},\n onNetworkChange = () => {},\n ...other\n }: {\n name: string;\n onAddressChange?: (a: Accounts) => void;\n onDisconnect?: (p: any) => void;\n onNetworkChange?: (a: Network) => void;\n } & ConstructorParameters<typeof AeSdkBase>[0]) {\n super(other);\n this.onAddressChange = onAddressChange;\n this.onDisconnect = onDisconnect;\n this.onNetworkChange = onNetworkChange;\n this.name = name;\n }\n\n override _resolveAccount(account: OnAccount = this.addresses()[0]): AccountBase {\n if (typeof account === 'string') {\n const address = account as Encoded.AccountAddress;\n decode(address);\n if (!this.addresses().includes(address)) throw new UnAuthorizedAccountError(address);\n this._ensureConnected();\n account = new AccountRpc(this.rpcClient, address);\n }\n if (account == null) this._ensureAccountAccess();\n return super._resolveAccount(account);\n }\n\n override addresses(): Encoded.AccountAddress[] {\n if (this._accounts == null) return [];\n const current = Object.keys(this._accounts.current)[0];\n return [\n ...current != null ? [current] : [], ...Object.keys(this._accounts.connected),\n ] as Encoded.AccountAddress[];\n }\n\n /**\n * Connect to wallet\n * @param connection - Wallet connection object\n * @param options - Options\n * @param options.connectNode - Request wallet to bind node\n * @param options.name - Node name\n * @param options.select - Select this node as current\n */\n async connectToWallet(\n connection: BrowserConnection,\n { connectNode = false, name = 'wallet-node' }: { connectNode?: boolean; name?: string } = {},\n ): Promise<WalletInfo & { node?: NodeRpc }> {\n if (this.rpcClient != null) throw new AlreadyConnectedError('You are already connected to wallet');\n let disconnectParams: any;\n\n const updateNetwork = (params: Network): void => {\n if (connectNode) {\n if (params.node?.url == null) throw new RpcConnectionError('Missing URLs of the Node');\n this.pool.delete(name);\n this.addNode(name, new Node(params.node.url), true);\n }\n this.onNetworkChange(params);\n };\n\n const client = new RpcClient<WalletApi, AeppApi>(\n connection,\n () => {\n delete this.rpcClient;\n delete this._accounts;\n this.onDisconnect(disconnectParams);\n },\n {\n [METHODS.updateAddress]: (params) => {\n this._accounts = params;\n this.onAddressChange(params);\n },\n [METHODS.updateNetwork]: updateNetwork,\n [METHODS.closeConnection]: (params) => {\n disconnectParams = params;\n client.connection.disconnect();\n },\n [METHODS.readyToConnect]: () => {},\n },\n );\n const walletInfo = await client\n .request(METHODS.connect, { name: this.name, version: RPC_VERSION, connectNode });\n updateNetwork(walletInfo);\n this.rpcClient = client;\n return walletInfo;\n }\n\n /**\n * Disconnect from wallet\n */\n disconnectWallet(): void {\n this._ensureConnected();\n this.rpcClient.notify(METHODS.closeConnection, { reason: 'bye' });\n this.rpcClient.connection.disconnect();\n }\n\n /**\n * Ask addresses from wallet\n * @returns Addresses from wallet\n */\n async askAddresses(): Promise<Encoded.AccountAddress[]> {\n this._ensureAccountAccess();\n return this.rpcClient.request(METHODS.address, undefined);\n }\n\n /**\n * Subscribe for addresses from wallet\n * @param type - Subscription type\n * @param value - Should be one of 'current' (the selected account), 'connected' (all)\n * @returns Accounts from wallet\n */\n async subscribeAddress(\n type: SUBSCRIPTION_TYPES,\n value: 'current' | 'connected',\n ): Promise<ReturnType<WalletApi[METHODS.subscribeAddress]>> {\n this._ensureConnected();\n const result = await this.rpcClient.request(METHODS.subscribeAddress, { type, value });\n this._accounts = result.address;\n return result;\n }\n\n _ensureConnected(): asserts this is AeSdkAepp & { rpcClient: NonNullable<AeSdkAepp['rpcClient']> } {\n if (this.rpcClient != null) return;\n throw new NoWalletConnectedError('You are not connected to Wallet');\n }\n\n _ensureAccountAccess(): asserts this is AeSdkAepp & { rpcClient: NonNullable<AeSdkAepp['rpcClient']> } {\n this._ensureConnected();\n if (this.addresses().length !== 0) return;\n throw new UnsubscribedAccountError();\n }\n}\n"],"mappings":"OAAOA,SAAS;AAAA,OAGTC,UAAU;AAAA,SACRC,MAAM;AAAA,SAEHC,WAAW;AAAA,OAEhBC,SAAS;AAAA,SACPC,OAAO;AAAA,SAEdC,qBAAqB,EACrBC,sBAAsB,EACtBC,wBAAwB,EACxBC,wBAAwB,EACxBC,kBAAkB;AAAA,OAEbC,IAAI;AAGX;AACA;AACA;AACA;AACA;AACA,eAAe,MAAMC,SAAS,SAASZ,SAAS,CAAC;EAa/C;AACF;AACA;AACA;AACA;AACA;AACA;EACEa,WAAWA,CAAAC,IAAA,EAWqC;IAAA,IAXpC;MACVC,IAAI;MACJC,eAAe,GAAGA,CAAA,KAAM,CAAC,CAAC;MAC1BC,YAAY,GAAGA,CAAA,KAAM,CAAC,CAAC;MACvBC,eAAe,GAAGA,CAAA,KAAM,CAAC,CAAC;MAC1B,GAAGC;IAMwC,CAAC,GAAAL,IAAA;IAC5C,KAAK,CAACK,KAAK,CAAC;IACZ,IAAI,CAACH,eAAe,GAAGA,eAAe;IACtC,IAAI,CAACC,YAAY,GAAGA,YAAY;IAChC,IAAI,CAACC,eAAe,GAAGA,eAAe;IACtC,IAAI,CAACH,IAAI,GAAGA,IAAI;EAClB;EAESK,eAAeA,CAAA,EAAwD;IAAA,IAAvDC,OAAkB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI,CAACG,SAAS,EAAE,CAAC,CAAC,CAAC;IAC/D,IAAI,OAAOJ,OAAO,KAAK,QAAQ,EAAE;MAC/B,MAAMK,OAAO,GAAGL,OAAiC;MACjDnB,MAAM,CAACwB,OAAO,CAAC;MACf,IAAI,CAAC,IAAI,CAACD,SAAS,EAAE,CAACE,QAAQ,CAACD,OAAO,CAAC,EAAE,MAAM,IAAIjB,wBAAwB,CAACiB,OAAO,CAAC;MACpF,IAAI,CAACE,gBAAgB,EAAE;MACvBP,OAAO,GAAG,IAAIpB,UAAU,CAAC,IAAI,CAAC4B,SAAS,EAAEH,OAAO,CAAC;IACnD;IACA,IAAIL,OAAO,IAAI,IAAI,EAAE,IAAI,CAACS,oBAAoB,EAAE;IAChD,OAAO,KAAK,CAACV,eAAe,CAACC,OAAO,CAAC;EACvC;EAESI,SAASA,CAAA,EAA6B;IAC7C,IAAI,IAAI,CAACM,SAAS,IAAI,IAAI,EAAE,OAAO,EAAE;IACrC,MAAMC,OAAO,GAAGC,MAAM,CAACC,IAAI,CAAC,IAAI,CAACH,SAAS,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;IACtD,OAAO,CACL,IAAGA,OAAO,IAAI,IAAI,GAAG,CAACA,OAAO,CAAC,GAAG,EAAE,GAAE,GAAGC,MAAM,CAACC,IAAI,CAAC,IAAI,CAACH,SAAS,CAACI,SAAS,CAAC,CAC9E;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMC,eAAeA,CACnBC,UAA6B,EAEa;IAAA,IAD1C;MAAEC,WAAW,GAAG,KAAK;MAAEvB,IAAI,GAAG;IAAwD,CAAC,GAAAO,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAE5F,IAAI,IAAI,CAACO,SAAS,IAAI,IAAI,EAAE,MAAM,IAAIvB,qBAAqB,CAAC,qCAAqC,CAAC;IAClG,IAAIiC,gBAAqB;IAEzB,MAAMC,aAAa,GAAIC,MAAe,IAAW;MAC/C,IAAIH,WAAW,EAAE;QAAA,IAAAI,YAAA;QACf,IAAI,EAAAA,YAAA,GAAAD,MAAM,CAACE,IAAI,cAAAD,YAAA,uBAAXA,YAAA,CAAaE,GAAG,KAAI,IAAI,EAAE,MAAM,IAAIlC,kBAAkB,CAAC,0BAA0B,CAAC;QACtF,IAAI,CAACmC,IAAI,CAACC,MAAM,CAAC/B,IAAI,CAAC;QACtB,IAAI,CAACgC,OAAO,CAAChC,IAAI,EAAE,IAAIJ,IAAI,CAAC8B,MAAM,CAACE,IAAI,CAACC,GAAG,CAAC,EAAE,IAAI,CAAC;MACrD;MACA,IAAI,CAAC1B,eAAe,CAACuB,MAAM,CAAC;IAC9B,CAAC;IAED,MAAMO,MAAM,GAAG,IAAI5C,SAAS,CAC1BiC,UAAU,EACV,MAAM;MACJ,OAAO,IAAI,CAACR,SAAS;MACrB,OAAO,IAAI,CAACE,SAAS;MACrB,IAAI,CAACd,YAAY,CAACsB,gBAAgB,CAAC;IACrC,CAAC,EACD;MACE,CAAClC,OAAO,CAAC4C,aAAa,GAAIR,MAAM,IAAK;QACnC,IAAI,CAACV,SAAS,GAAGU,MAAM;QACvB,IAAI,CAACzB,eAAe,CAACyB,MAAM,CAAC;MAC9B,CAAC;MACD,CAACpC,OAAO,CAACmC,aAAa,GAAGA,aAAa;MACtC,CAACnC,OAAO,CAAC6C,eAAe,GAAIT,MAAM,IAAK;QACrCF,gBAAgB,GAAGE,MAAM;QACzBO,MAAM,CAACX,UAAU,CAACc,UAAU,EAAE;MAChC,CAAC;MACD,CAAC9C,OAAO,CAAC+C,cAAc,GAAG,MAAM,CAAC;IACnC,CAAC,CACF;IACD,MAAMC,UAAU,GAAG,MAAML,MAAM,CAC5BM,OAAO,CAACjD,OAAO,CAACkD,OAAO,EAAE;MAAExC,IAAI,EAAE,IAAI,CAACA,IAAI;MAAEyC,OAAO,EAAErD,WAAW;MAAEmC;IAAY,CAAC,CAAC;IACnFE,aAAa,CAACa,UAAU,CAAC;IACzB,IAAI,CAACxB,SAAS,GAAGmB,MAAM;IACvB,OAAOK,UAAU;EACnB;;EAEA;AACF;AACA;EACEI,gBAAgBA,CAAA,EAAS;IACvB,IAAI,CAAC7B,gBAAgB,EAAE;IACvB,IAAI,CAACC,SAAS,CAAC6B,MAAM,CAACrD,OAAO,CAAC6C,eAAe,EAAE;MAAES,MAAM,EAAE;IAAM,CAAC,CAAC;IACjE,IAAI,CAAC9B,SAAS,CAACQ,UAAU,CAACc,UAAU,EAAE;EACxC;;EAEA;AACF;AACA;AACA;EACE,MAAMS,YAAYA,CAAA,EAAsC;IACtD,IAAI,CAAC9B,oBAAoB,EAAE;IAC3B,OAAO,IAAI,CAACD,SAAS,CAACyB,OAAO,CAACjD,OAAO,CAACqB,OAAO,EAAEF,SAAS,CAAC;EAC3D;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,MAAMqC,gBAAgBA,CACpBC,IAAwB,EACxBC,KAA8B,EAC4B;IAC1D,IAAI,CAACnC,gBAAgB,EAAE;IACvB,MAAMoC,MAAM,GAAG,MAAM,IAAI,CAACnC,SAAS,CAACyB,OAAO,CAACjD,OAAO,CAACwD,gBAAgB,EAAE;MAAEC,IAAI;MAAEC;IAAM,CAAC,CAAC;IACtF,IAAI,CAAChC,SAAS,GAAGiC,MAAM,CAACtC,OAAO;IAC/B,OAAOsC,MAAM;EACf;EAEApC,gBAAgBA,CAAA,EAAmF;IACjG,IAAI,IAAI,CAACC,SAAS,IAAI,IAAI,EAAE;IAC5B,MAAM,IAAItB,sBAAsB,CAAC,iCAAiC,CAAC;EACrE;EAEAuB,oBAAoBA,CAAA,EAAmF;IACrG,IAAI,CAACF,gBAAgB,EAAE;IACvB,IAAI,IAAI,CAACH,SAAS,EAAE,CAACF,MAAM,KAAK,CAAC,EAAE;IACnC,MAAM,IAAIf,wBAAwB,EAAE;EACtC;AACF"}
1
+ {"version":3,"file":"AeSdkAepp.mjs","names":["AeSdkBase","AccountRpc","decode","RPC_VERSION","RpcClient","METHODS","AlreadyConnectedError","NoWalletConnectedError","UnsubscribedAccountError","UnAuthorizedAccountError","RpcConnectionError","Node","AeSdkAepp","constructor","_ref","name","onAddressChange","onDisconnect","onNetworkChange","other","_resolveAccount","account","arguments","length","undefined","addresses","address","includes","_ensureConnected","rpcClient","_ensureAccountAccess","_accounts","current","Object","keys","connected","connectToWallet","connection","connectNode","disconnectParams","updateNetwork","params","_params$node","node","url","pool","delete","addNode","client","updateAddress","closeConnection","disconnect","readyToConnect","walletInfo","request","connect","version","disconnectWallet","notify","reason","askAddresses","subscribeAddress","type","value","result"],"sources":["../src/AeSdkAepp.ts"],"sourcesContent":["import AeSdkBase from './AeSdkBase';\nimport { OnAccount } from './AeSdkMethods';\nimport AccountBase from './account/Base';\nimport AccountRpc from './account/Rpc';\nimport { decode, Encoded } from './utils/encoder';\nimport {\n Accounts, RPC_VERSION, WalletInfo, Network, WalletApi, AeppApi, Node as NodeRpc,\n} from './aepp-wallet-communication/rpc/types';\nimport RpcClient from './aepp-wallet-communication/rpc/RpcClient';\nimport { METHODS, SUBSCRIPTION_TYPES } from './aepp-wallet-communication/schema';\nimport {\n AlreadyConnectedError,\n NoWalletConnectedError,\n UnsubscribedAccountError,\n UnAuthorizedAccountError,\n RpcConnectionError,\n} from './utils/errors';\nimport Node from './Node';\nimport BrowserConnection from './aepp-wallet-communication/connection/Browser';\n\n/**\n * RPC handler for AEPP side\n * Contain functionality for wallet interaction and connect it to sdk\n * @category aepp wallet communication\n */\nexport default class AeSdkAepp extends AeSdkBase {\n name: string;\n\n onAddressChange: (a: Accounts) => void;\n\n onDisconnect: (p: any) => void;\n\n onNetworkChange: (a: Network) => void;\n\n rpcClient?: RpcClient<WalletApi, AeppApi>;\n\n _accounts?: Accounts;\n\n /**\n * @param options - Options\n * @param options.name - Aepp name\n * @param options.onAddressChange - Call-back function for update address event\n * @param options.onDisconnect - Call-back function for disconnect event\n * @param options.onNetworkChange - Call-back function for update network event\n */\n constructor({\n name,\n onAddressChange = () => {},\n onDisconnect = () => {},\n onNetworkChange = () => {},\n ...other\n }: {\n name: string;\n onAddressChange?: (a: Accounts) => void;\n onDisconnect?: (p: any) => void;\n onNetworkChange?: (a: Network) => void;\n } & ConstructorParameters<typeof AeSdkBase>[0]) {\n super(other);\n this.onAddressChange = onAddressChange;\n this.onDisconnect = onDisconnect;\n this.onNetworkChange = onNetworkChange;\n this.name = name;\n }\n\n override _resolveAccount(account: OnAccount = this.addresses()[0]): AccountBase {\n if (typeof account === 'string') {\n const address = account as Encoded.AccountAddress;\n decode(address);\n if (!this.addresses().includes(address)) throw new UnAuthorizedAccountError(address);\n this._ensureConnected();\n account = new AccountRpc(this.rpcClient, address);\n }\n if (account == null) this._ensureAccountAccess();\n return super._resolveAccount(account);\n }\n\n override addresses(): Encoded.AccountAddress[] {\n if (this._accounts == null) return [];\n const current = Object.keys(this._accounts.current)[0];\n return [\n ...current != null ? [current] : [], ...Object.keys(this._accounts.connected),\n ] as Encoded.AccountAddress[];\n }\n\n /**\n * Connect to wallet\n * @param connection - Wallet connection object\n * @param options - Options\n * @param options.connectNode - Request wallet to bind node\n * @param options.name - Node name\n * @param options.select - Select this node as current\n */\n async connectToWallet(\n connection: BrowserConnection,\n { connectNode = false, name = 'wallet-node' }: { connectNode?: boolean; name?: string } = {},\n ): Promise<WalletInfo & { node?: NodeRpc }> {\n if (this.rpcClient != null) throw new AlreadyConnectedError('You are already connected to wallet');\n let disconnectParams: any;\n\n const updateNetwork = (params: Network): void => {\n if (connectNode) {\n if (params.node?.url == null) throw new RpcConnectionError('Missing URLs of the Node');\n this.pool.delete(name);\n this.addNode(name, new Node(params.node.url), true);\n }\n this.onNetworkChange(params);\n };\n\n const client = new RpcClient<WalletApi, AeppApi>(\n connection,\n () => {\n delete this.rpcClient;\n delete this._accounts;\n this.onDisconnect(disconnectParams);\n },\n {\n [METHODS.updateAddress]: (params) => {\n this._accounts = params;\n this.onAddressChange(params);\n },\n [METHODS.updateNetwork]: updateNetwork,\n [METHODS.closeConnection]: (params) => {\n disconnectParams = params;\n client.connection.disconnect();\n },\n [METHODS.readyToConnect]: () => {},\n },\n );\n const walletInfo = await client\n .request(METHODS.connect, { name: this.name, version: RPC_VERSION, connectNode });\n updateNetwork(walletInfo);\n this.rpcClient = client;\n return walletInfo;\n }\n\n /**\n * Disconnect from wallet\n */\n disconnectWallet(): void {\n this._ensureConnected();\n this.rpcClient.notify(METHODS.closeConnection, { reason: 'bye' });\n this.rpcClient.connection.disconnect();\n }\n\n /**\n * Ask addresses from wallet\n * @returns Addresses from wallet\n */\n async askAddresses(): Promise<Encoded.AccountAddress[]> {\n this._ensureAccountAccess();\n return this.rpcClient.request(METHODS.address, undefined);\n }\n\n /**\n * Subscribe for addresses from wallet\n * @param type - Subscription type\n * @param value - Should be one of 'current' (the selected account), 'connected' (all)\n * @returns Accounts from wallet\n */\n async subscribeAddress(\n type: SUBSCRIPTION_TYPES,\n value: 'current' | 'connected',\n ): Promise<ReturnType<WalletApi[METHODS.subscribeAddress]>> {\n this._ensureConnected();\n const result = await this.rpcClient.request(METHODS.subscribeAddress, { type, value });\n this._accounts = result.address;\n return result;\n }\n\n _ensureConnected(): asserts this is AeSdkAepp & { rpcClient: NonNullable<AeSdkAepp['rpcClient']> } {\n if (this.rpcClient != null) return;\n throw new NoWalletConnectedError('You are not connected to Wallet');\n }\n\n _ensureAccountAccess(): asserts this is AeSdkAepp & { rpcClient: NonNullable<AeSdkAepp['rpcClient']> } {\n this._ensureConnected();\n if (this.addresses().length !== 0) return;\n throw new UnsubscribedAccountError();\n }\n}\n"],"mappings":"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"}
package/es/AeSdkBase.d.ts CHANGED
@@ -3,6 +3,7 @@ import AccountBase from './account/Base';
3
3
  import { Encoded } from './utils/encoder';
4
4
  import CompilerBase from './contract/compiler/Base';
5
5
  import AeSdkMethods, { OnAccount, AeSdkMethodsOptions } from './AeSdkMethods';
6
+ import { AensName } from './tx/builder/constants';
6
7
  type NodeInfo = Awaited<ReturnType<Node['getNodeInfo']>> & {
7
8
  name: string;
8
9
  };
@@ -90,6 +91,15 @@ export default class AeSdkBase extends AeSdkMethods {
90
91
  signTypedData(data: Encoded.ContractBytearray, aci: Parameters<AccountBase['signTypedData']>[1], { onAccount, ...options }?: {
91
92
  onAccount?: OnAccount;
92
93
  } & Parameters<AccountBase['signTypedData']>[2]): Promise<Encoded.Signature>;
94
+ signDelegationToContract(contractAddress: Encoded.ContractAddress, { onAccount, ...options }?: {
95
+ onAccount?: OnAccount;
96
+ } & Parameters<AccountBase['signDelegationToContract']>[1]): Promise<Encoded.Signature>;
97
+ signNameDelegationToContract(contractAddress: Encoded.ContractAddress, name: AensName, { onAccount, ...options }?: {
98
+ onAccount?: OnAccount;
99
+ } & Parameters<AccountBase['signNameDelegationToContract']>[2]): Promise<Encoded.Signature>;
100
+ signOracleQueryDelegationToContract(contractAddress: Encoded.ContractAddress, oracleQueryId: Encoded.OracleQueryId, { onAccount, ...options }?: {
101
+ onAccount?: OnAccount;
102
+ } & Parameters<AccountBase['signOracleQueryDelegationToContract']>[2]): Promise<Encoded.Signature>;
93
103
  _getOptions(callOptions?: AeSdkMethodsOptions): {
94
104
  onNode: Node;
95
105
  onAccount: AccountBase;
package/es/AeSdkBase.mjs CHANGED
@@ -167,6 +167,33 @@ export default class AeSdkBase extends AeSdkMethods {
167
167
  } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
168
168
  return this._resolveAccount(onAccount).signTypedData(data, aci, options);
169
169
  }
170
+ async signDelegationToContract(contractAddress) {
171
+ var _options$networkId;
172
+ let {
173
+ onAccount,
174
+ ...options
175
+ } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
176
+ (_options$networkId = options.networkId) !== null && _options$networkId !== void 0 ? _options$networkId : options.networkId = this.selectedNodeName !== null ? await this.api.getNetworkId() : undefined;
177
+ return this._resolveAccount(onAccount).signDelegationToContract(contractAddress, options);
178
+ }
179
+ async signNameDelegationToContract(contractAddress, name) {
180
+ var _options$networkId2;
181
+ let {
182
+ onAccount,
183
+ ...options
184
+ } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
185
+ (_options$networkId2 = options.networkId) !== null && _options$networkId2 !== void 0 ? _options$networkId2 : options.networkId = this.selectedNodeName !== null ? await this.api.getNetworkId() : undefined;
186
+ return this._resolveAccount(onAccount).signNameDelegationToContract(contractAddress, name, options);
187
+ }
188
+ async signOracleQueryDelegationToContract(contractAddress, oracleQueryId) {
189
+ var _options$networkId3;
190
+ let {
191
+ onAccount,
192
+ ...options
193
+ } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
194
+ (_options$networkId3 = options.networkId) !== null && _options$networkId3 !== void 0 ? _options$networkId3 : options.networkId = this.selectedNodeName !== null ? await this.api.getNetworkId() : undefined;
195
+ return this._resolveAccount(onAccount).signOracleQueryDelegationToContract(contractAddress, oracleQueryId, options);
196
+ }
170
197
  _getOptions() {
171
198
  let callOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
172
199
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"AeSdkBase.mjs","names":["CompilerError","DuplicateNodeError","NodeNotFoundError","NotImplementedError","TypeError","AeSdkMethods","getValueOrErrorProxy","AeSdkBase","constructor","nodes","options","arguments","length","undefined","_defineProperty","Map","forEach","_ref","i","name","instance","addNode","compilerApi","_options","onCompiler","api","ensureNodeConnected","pool","get","selectedNodeName","node","select","has","set","selectNode","isNodeConnected","getNodeInfo","getNodesInPool","Promise","all","Array","from","entries","map","_ref2","addresses","_resolveAccount","account","onAccount","String","address","sign","data","signTransaction","tx","networkId","getNetworkId","signMessage","message","signTypedData","aci","_getOptions","callOptions","onNode"],"sources":["../src/AeSdkBase.ts"],"sourcesContent":["import Node from './Node';\nimport AccountBase from './account/Base';\nimport {\n CompilerError, DuplicateNodeError, NodeNotFoundError, NotImplementedError, TypeError,\n} from './utils/errors';\nimport { Encoded } from './utils/encoder';\nimport CompilerBase from './contract/compiler/Base';\nimport AeSdkMethods, { OnAccount, getValueOrErrorProxy, AeSdkMethodsOptions } from './AeSdkMethods';\n\ntype NodeInfo = Awaited<ReturnType<Node['getNodeInfo']>> & { name: string };\n\n/**\n * Basic AeSdk class implements:\n * - node selector,\n * - integrated compiler support,\n * - wrappers of account methods mapped to the current account.\n */\nexport default class AeSdkBase extends AeSdkMethods {\n pool: Map<string, Node> = new Map();\n\n selectedNodeName?: string;\n\n /**\n * @param options - Options\n * @param options.nodes - Array of nodes\n */\n constructor(\n { nodes = [], ...options }: AeSdkMethodsOptions & {\n nodes?: Array<{ name: string; instance: Node }>;\n } = {},\n ) {\n super(options);\n\n nodes.forEach(({ name, instance }, i) => this.addNode(name, instance, i === 0));\n }\n\n // TODO: consider dropping this getter, because:\n // compiler is not intended to be used separately any more (functionality limited to sdk needs)\n // and user creates its instance by himself\n get compilerApi(): CompilerBase {\n if (this._options.onCompiler == null) {\n throw new CompilerError('You can\\'t use Compiler API. Compiler is not ready!');\n }\n return this._options.onCompiler;\n }\n\n get api(): Node {\n this.ensureNodeConnected();\n return this.pool.get(this.selectedNodeName) as Node;\n }\n\n /**\n * Add Node\n * @param name - Node name\n * @param node - Node instance\n * @param select - Select this node as current\n * @example\n * ```js\n * // add and select new node with name 'testNode'\n * aeSdkBase.addNode('testNode', new Node({ url }), true)\n * ```\n */\n addNode(name: string, node: Node, select = false): void {\n if (this.pool.has(name)) throw new DuplicateNodeError(name);\n\n this.pool.set(name, node);\n if (select || this.selectedNodeName == null) {\n this.selectNode(name);\n }\n }\n\n /**\n * Select Node\n * @param name - Node name\n * @example\n * nodePool.selectNode('testNode')\n */\n selectNode(name: string): void {\n if (!this.pool.has(name)) throw new NodeNotFoundError(`Node with name ${name} not in pool`);\n this.selectedNodeName = name;\n }\n\n /**\n * Check if you have selected node\n * @example\n * nodePool.isNodeConnected()\n */\n isNodeConnected(): this is AeSdkBase & { selectedNodeName: string } {\n return this.selectedNodeName != null;\n }\n\n protected ensureNodeConnected(): asserts this is AeSdkBase & { selectedNodeName: string } {\n if (!this.isNodeConnected()) {\n throw new NodeNotFoundError('You can\\'t use Node API. Node is not connected or not defined!');\n }\n }\n\n /**\n * Get information about node\n * @example\n * ```js\n * nodePool.getNodeInfo() // { name, version, networkId, protocol, ... }\n * ```\n */\n async getNodeInfo(): Promise<NodeInfo> {\n this.ensureNodeConnected();\n return {\n name: this.selectedNodeName,\n ...await this.api.getNodeInfo(),\n };\n }\n\n /**\n * Get array of available nodes\n * @example\n * nodePool.getNodesInPool()\n */\n async getNodesInPool(): Promise<NodeInfo[]> {\n return Promise.all(\n Array.from(this.pool.entries()).map(async ([name, node]) => ({\n name,\n ...await node.getNodeInfo(),\n })),\n );\n }\n\n // eslint-disable-next-line class-methods-use-this\n addresses(): Encoded.AccountAddress[] {\n return [];\n }\n\n /**\n * Resolves an account\n * @param account - ak-address, instance of AccountBase, or keypair\n */\n _resolveAccount(account: OnAccount = this._options.onAccount): AccountBase {\n if (typeof account === 'string') throw new NotImplementedError('Address in AccountResolver');\n if (typeof account === 'object') return account;\n throw new TypeError(\n 'Account should be an address (ak-prefixed string), '\n + `or instance of AccountBase, got ${String(account)} instead`,\n );\n }\n\n get address(): Encoded.AccountAddress {\n return this._resolveAccount().address;\n }\n\n async sign(\n data: string | Uint8Array,\n { onAccount, ...options }: { onAccount?: OnAccount } = {},\n ): Promise<Uint8Array> {\n return this._resolveAccount(onAccount).sign(data, options);\n }\n\n async signTransaction(\n tx: Encoded.Transaction,\n { onAccount, ...options }: { onAccount?: OnAccount } & Parameters<AccountBase['signTransaction']>[1] = {},\n ): Promise<Encoded.Transaction> {\n const networkId = this.selectedNodeName !== null ? await this.api.getNetworkId() : undefined;\n return this._resolveAccount(onAccount).signTransaction(tx, { networkId, ...options });\n }\n\n async signMessage(\n message: string,\n { onAccount, ...options }: { onAccount?: OnAccount } & Parameters<AccountBase['signMessage']>[1] = {},\n ): Promise<Uint8Array> {\n return this._resolveAccount(onAccount).signMessage(message, options);\n }\n\n async signTypedData(\n data: Encoded.ContractBytearray,\n aci: Parameters<AccountBase['signTypedData']>[1],\n { onAccount, ...options }: { onAccount?: OnAccount } & Parameters<AccountBase['signTypedData']>[2] = {},\n ): Promise<Encoded.Signature> {\n return this._resolveAccount(onAccount).signTypedData(data, aci, options);\n }\n\n override _getOptions(callOptions: AeSdkMethodsOptions = {}): {\n onNode: Node;\n onAccount: AccountBase;\n onCompiler: CompilerBase;\n } {\n return {\n ...this._options,\n onNode: getValueOrErrorProxy(() => this.api),\n onCompiler: getValueOrErrorProxy(() => this.compilerApi),\n ...callOptions,\n onAccount: getValueOrErrorProxy(() => this._resolveAccount(callOptions.onAccount)),\n };\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"AeSdkBase.mjs","names":["CompilerError","DuplicateNodeError","NodeNotFoundError","NotImplementedError","TypeError","AeSdkMethods","getValueOrErrorProxy","AeSdkBase","constructor","nodes","options","arguments","length","undefined","_defineProperty","Map","forEach","_ref","i","name","instance","addNode","compilerApi","_options","onCompiler","api","ensureNodeConnected","pool","get","selectedNodeName","node","select","has","set","selectNode","isNodeConnected","getNodeInfo","getNodesInPool","Promise","all","Array","from","entries","map","_ref2","addresses","_resolveAccount","account","onAccount","String","address","sign","data","signTransaction","tx","networkId","getNetworkId","signMessage","message","signTypedData","aci","signDelegationToContract","contractAddress","_options$networkId","signNameDelegationToContract","_options$networkId2","signOracleQueryDelegationToContract","oracleQueryId","_options$networkId3","_getOptions","callOptions","onNode"],"sources":["../src/AeSdkBase.ts"],"sourcesContent":["import Node from './Node';\nimport AccountBase from './account/Base';\nimport {\n CompilerError, DuplicateNodeError, NodeNotFoundError, NotImplementedError, TypeError,\n} from './utils/errors';\nimport { Encoded } from './utils/encoder';\nimport CompilerBase from './contract/compiler/Base';\nimport AeSdkMethods, { OnAccount, getValueOrErrorProxy, AeSdkMethodsOptions } from './AeSdkMethods';\nimport { AensName } from './tx/builder/constants';\n\ntype NodeInfo = Awaited<ReturnType<Node['getNodeInfo']>> & { name: string };\n\n/**\n * Basic AeSdk class implements:\n * - node selector,\n * - integrated compiler support,\n * - wrappers of account methods mapped to the current account.\n */\nexport default class AeSdkBase extends AeSdkMethods {\n pool: Map<string, Node> = new Map();\n\n selectedNodeName?: string;\n\n /**\n * @param options - Options\n * @param options.nodes - Array of nodes\n */\n constructor(\n { nodes = [], ...options }: AeSdkMethodsOptions & {\n nodes?: Array<{ name: string; instance: Node }>;\n } = {},\n ) {\n super(options);\n\n nodes.forEach(({ name, instance }, i) => this.addNode(name, instance, i === 0));\n }\n\n // TODO: consider dropping this getter, because:\n // compiler is not intended to be used separately any more (functionality limited to sdk needs)\n // and user creates its instance by himself\n get compilerApi(): CompilerBase {\n if (this._options.onCompiler == null) {\n throw new CompilerError('You can\\'t use Compiler API. Compiler is not ready!');\n }\n return this._options.onCompiler;\n }\n\n get api(): Node {\n this.ensureNodeConnected();\n return this.pool.get(this.selectedNodeName) as Node;\n }\n\n /**\n * Add Node\n * @param name - Node name\n * @param node - Node instance\n * @param select - Select this node as current\n * @example\n * ```js\n * // add and select new node with name 'testNode'\n * aeSdkBase.addNode('testNode', new Node({ url }), true)\n * ```\n */\n addNode(name: string, node: Node, select = false): void {\n if (this.pool.has(name)) throw new DuplicateNodeError(name);\n\n this.pool.set(name, node);\n if (select || this.selectedNodeName == null) {\n this.selectNode(name);\n }\n }\n\n /**\n * Select Node\n * @param name - Node name\n * @example\n * nodePool.selectNode('testNode')\n */\n selectNode(name: string): void {\n if (!this.pool.has(name)) throw new NodeNotFoundError(`Node with name ${name} not in pool`);\n this.selectedNodeName = name;\n }\n\n /**\n * Check if you have selected node\n * @example\n * nodePool.isNodeConnected()\n */\n isNodeConnected(): this is AeSdkBase & { selectedNodeName: string } {\n return this.selectedNodeName != null;\n }\n\n protected ensureNodeConnected(): asserts this is AeSdkBase & { selectedNodeName: string } {\n if (!this.isNodeConnected()) {\n throw new NodeNotFoundError('You can\\'t use Node API. Node is not connected or not defined!');\n }\n }\n\n /**\n * Get information about node\n * @example\n * ```js\n * nodePool.getNodeInfo() // { name, version, networkId, protocol, ... }\n * ```\n */\n async getNodeInfo(): Promise<NodeInfo> {\n this.ensureNodeConnected();\n return {\n name: this.selectedNodeName,\n ...await this.api.getNodeInfo(),\n };\n }\n\n /**\n * Get array of available nodes\n * @example\n * nodePool.getNodesInPool()\n */\n async getNodesInPool(): Promise<NodeInfo[]> {\n return Promise.all(\n Array.from(this.pool.entries()).map(async ([name, node]) => ({\n name,\n ...await node.getNodeInfo(),\n })),\n );\n }\n\n // eslint-disable-next-line class-methods-use-this\n addresses(): Encoded.AccountAddress[] {\n return [];\n }\n\n /**\n * Resolves an account\n * @param account - ak-address, instance of AccountBase, or keypair\n */\n _resolveAccount(account: OnAccount = this._options.onAccount): AccountBase {\n if (typeof account === 'string') throw new NotImplementedError('Address in AccountResolver');\n if (typeof account === 'object') return account;\n throw new TypeError(\n 'Account should be an address (ak-prefixed string), '\n + `or instance of AccountBase, got ${String(account)} instead`,\n );\n }\n\n get address(): Encoded.AccountAddress {\n return this._resolveAccount().address;\n }\n\n async sign(\n data: string | Uint8Array,\n { onAccount, ...options }: { onAccount?: OnAccount } = {},\n ): Promise<Uint8Array> {\n return this._resolveAccount(onAccount).sign(data, options);\n }\n\n async signTransaction(\n tx: Encoded.Transaction,\n { onAccount, ...options }: { onAccount?: OnAccount } & Parameters<AccountBase['signTransaction']>[1] = {},\n ): Promise<Encoded.Transaction> {\n const networkId = this.selectedNodeName !== null ? await this.api.getNetworkId() : undefined;\n return this._resolveAccount(onAccount).signTransaction(tx, { networkId, ...options });\n }\n\n async signMessage(\n message: string,\n { onAccount, ...options }: { onAccount?: OnAccount } & Parameters<AccountBase['signMessage']>[1] = {},\n ): Promise<Uint8Array> {\n return this._resolveAccount(onAccount).signMessage(message, options);\n }\n\n async signTypedData(\n data: Encoded.ContractBytearray,\n aci: Parameters<AccountBase['signTypedData']>[1],\n { onAccount, ...options }: { onAccount?: OnAccount } & Parameters<AccountBase['signTypedData']>[2] = {},\n ): Promise<Encoded.Signature> {\n return this._resolveAccount(onAccount).signTypedData(data, aci, options);\n }\n\n async signDelegationToContract(\n contractAddress: Encoded.ContractAddress,\n { onAccount, ...options }: { onAccount?: OnAccount }\n & Parameters<AccountBase['signDelegationToContract']>[1] = {},\n ): Promise<Encoded.Signature> {\n options.networkId ??= this.selectedNodeName !== null\n ? await this.api.getNetworkId() : undefined;\n return this._resolveAccount(onAccount)\n .signDelegationToContract(contractAddress, options);\n }\n\n async signNameDelegationToContract(\n contractAddress: Encoded.ContractAddress,\n name: AensName,\n { onAccount, ...options }: { onAccount?: OnAccount }\n & Parameters<AccountBase['signNameDelegationToContract']>[2] = {},\n ): Promise<Encoded.Signature> {\n options.networkId ??= this.selectedNodeName !== null\n ? await this.api.getNetworkId() : undefined;\n return this._resolveAccount(onAccount)\n .signNameDelegationToContract(contractAddress, name, options);\n }\n\n async signOracleQueryDelegationToContract(\n contractAddress: Encoded.ContractAddress,\n oracleQueryId: Encoded.OracleQueryId,\n { onAccount, ...options }: { onAccount?: OnAccount }\n & Parameters<AccountBase['signOracleQueryDelegationToContract']>[2] = {},\n ): Promise<Encoded.Signature> {\n options.networkId ??= this.selectedNodeName !== null\n ? await this.api.getNetworkId() : undefined;\n return this._resolveAccount(onAccount)\n .signOracleQueryDelegationToContract(contractAddress, oracleQueryId, options);\n }\n\n override _getOptions(callOptions: AeSdkMethodsOptions = {}): {\n onNode: Node;\n onAccount: AccountBase;\n onCompiler: CompilerBase;\n } {\n return {\n ...this._options,\n onNode: getValueOrErrorProxy(() => this.api),\n onCompiler: getValueOrErrorProxy(() => this.compilerApi),\n ...callOptions,\n onAccount: getValueOrErrorProxy(() => this._resolveAccount(callOptions.onAccount)),\n };\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AeSdkMethods.mjs","names":["chainMethods","aensMethods","spendMethods","oracleMethods","Contract","createDelegationSignature","contractGaMethods","buildTxAsync","mapObject","getValueOrErrorProxy","valueCb","Proxy","Object","fromEntries","map","name","t","target","_len","arguments","length","args","Array","_key","res","Reflect","bind","InvalidTxError","_2","chainMethodsOther","methods","AeSdkMethods","constructor","options","undefined","_defineProperty","assign","_options","_getOptions","callOptions","onAccount","onNode","onCompiler","buildTx","initializeContract","initialize","prototype","_ref","handler","methodWrapper","_len2","_key2","AeSdkMethodsTyped"],"sources":["../src/AeSdkMethods.ts"],"sourcesContent":["import * as chainMethods from './chain';\nimport * as aensMethods from './aens';\nimport * as spendMethods from './spend';\nimport * as oracleMethods from './oracle';\nimport Contract, { ContractMethodsBase } from './contract/Contract';\nimport createDelegationSignature from './contract/delegation-signature';\nimport * as contractGaMethods from './contract/ga';\nimport { buildTxAsync } from './tx/builder';\nimport { mapObject, UnionToIntersection } from './utils/other';\nimport Node from './Node';\nimport { TxParamsAsync } from './tx/builder/schema.generated';\nimport AccountBase from './account/Base';\nimport { Encoded } from './utils/encoder';\nimport CompilerBase from './contract/compiler/Base';\n\nexport type OnAccount = Encoded.AccountAddress | AccountBase | undefined;\n\nexport function getValueOrErrorProxy<Value extends object | undefined>(\n valueCb: () => Value,\n): NonNullable<Value> {\n return new Proxy(\n {},\n Object.fromEntries(([\n 'apply', 'construct', 'defineProperty', 'deleteProperty', 'getOwnPropertyDescriptor',\n 'getPrototypeOf', 'isExtensible', 'ownKeys', 'preventExtensions', 'set', 'setPrototypeOf',\n 'get', 'has',\n ] as const).map((name) => [name, (t: {}, ...args: unknown[]) => {\n const target = valueCb() as object; // to get a native exception in case it missed\n const res = (Reflect[name] as any)(target, ...args);\n return typeof res === 'function' && name === 'get'\n ? res.bind(target) // otherwise it fails with attempted to get private field on non-instance\n : res;\n }])),\n ) as NonNullable<Value>;\n}\n\nconst { InvalidTxError: _2, ...chainMethodsOther } = chainMethods;\n\nconst methods = {\n ...chainMethodsOther,\n ...aensMethods,\n ...spendMethods,\n ...oracleMethods,\n createDelegationSignature,\n ...contractGaMethods,\n} as const;\n\ntype Decrement<Number extends number> = [-1, 0, 1, 2, 3, 4, 5][Number];\ntype GetMethodsOptions <Methods extends { [key: string]: Function }> =\n {\n [Name in keyof Methods]:\n Methods[Name] extends (...args: infer Args) => any\n ? Args[Decrement<Args['length']>] : never\n };\ntype MethodsOptions = GetMethodsOptions<typeof methods>;\nexport interface AeSdkMethodsOptions\n extends Partial<UnionToIntersection<MethodsOptions[keyof MethodsOptions]>> {\n}\n\n/**\n * AeSdkMethods is the composition of:\n * - chain methods\n * - tx methods\n * - aens methods\n * - spend methods\n * - oracle methods\n * - contract methods\n * - contract ga methods\n *\n * While these methods can be used separately, this class provides a handy way to store\n * their context (current account, network, and compiler to use).\n */\nclass AeSdkMethods {\n _options: AeSdkMethodsOptions = {};\n\n /**\n * @param options - Options\n */\n constructor(options: AeSdkMethodsOptions = {}) {\n Object.assign(this._options, options);\n }\n\n _getOptions(\n callOptions: AeSdkMethodsOptions = {},\n ): AeSdkMethodsOptions & { onAccount: AccountBase; onCompiler: CompilerBase; onNode: Node } {\n return {\n ...this._options,\n onAccount: getValueOrErrorProxy(() => this._options.onAccount),\n onNode: getValueOrErrorProxy(() => this._options.onNode),\n onCompiler: getValueOrErrorProxy(() => this._options.onCompiler),\n ...callOptions,\n };\n }\n\n async buildTx(options: TxParamsAsync): Promise<Encoded.Transaction> {\n return buildTxAsync({ ...this._getOptions(), ...options });\n }\n\n async initializeContract<Methods extends ContractMethodsBase>(\n options?: Omit<Parameters<typeof Contract.initialize>[0], 'onNode'> & { onNode?: Node },\n ): Promise<Contract<Methods>> {\n return Contract.initialize<Methods>(this._getOptions(options as AeSdkMethodsOptions));\n }\n}\n\ntype RequiredKeys<T> = {\n [K in keyof T]-?: {} extends Pick<T, K> ? never : K\n}[keyof T];\n\ntype OptionalIfNotRequired<T extends [any]> = RequiredKeys<T[0]> extends never ? T | [] : T;\n\ntype ReplaceOnAccount<Options> = Options extends { onAccount: any }\n ? Omit<Options, 'onAccount'> & { onAccount: OnAccount } : Options;\n\ntype MakeOptional<Options> = OptionalIfNotRequired<[\n Omit<Options, 'onNode' | 'onCompiler' | 'onAccount'> & Partial<ReplaceOnAccount<Options>>,\n]>;\n\ntype TransformMethods <Methods extends { [key: string]: Function }> =\n {\n [Name in keyof Methods]:\n Methods[Name] extends (...args: [...infer Args, infer Options]) => infer Ret\n ? (...args: [...Args, ...MakeOptional<Options>]) => Ret\n : never\n };\n\ninterface AeSdkMethodsTransformed extends TransformMethods<typeof methods> {}\n\nObject.assign(AeSdkMethods.prototype, mapObject<Function, Function>(\n methods,\n ([name, handler]) => [\n name,\n function methodWrapper(this: AeSdkMethods, ...args: any[]) {\n args.length = handler.length;\n const options = args[args.length - 1];\n args[args.length - 1] = this._getOptions(options);\n return handler(...args);\n },\n ],\n));\n\ntype AeSdkMethodsTyped = AeSdkMethods & AeSdkMethodsTransformed;\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nconst AeSdkMethodsTyped = AeSdkMethods as new (options?: AeSdkMethodsOptions) => AeSdkMethodsTyped;\nexport default AeSdkMethodsTyped;\n"],"mappings":"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"}
1
+ {"version":3,"file":"AeSdkMethods.mjs","names":["chainMethods","aensMethods","spendMethods","oracleMethods","Contract","createDelegationSignature","contractGaMethods","buildTxAsync","mapObject","getValueOrErrorProxy","valueCb","Proxy","Object","fromEntries","map","name","t","target","_len","arguments","length","args","Array","_key","res","Reflect","bind","InvalidTxError","_2","chainMethodsOther","methods","AeSdkMethods","constructor","options","undefined","_defineProperty","assign","_options","_getOptions","callOptions","onAccount","onNode","onCompiler","buildTx","initializeContract","initialize","prototype","_ref","handler","methodWrapper","_len2","_key2","AeSdkMethodsTyped"],"sources":["../src/AeSdkMethods.ts"],"sourcesContent":["import * as chainMethods from './chain';\nimport * as aensMethods from './aens';\nimport * as spendMethods from './spend';\nimport * as oracleMethods from './oracle';\nimport Contract, { ContractMethodsBase } from './contract/Contract';\nimport createDelegationSignature from './contract/delegation-signature';\nimport * as contractGaMethods from './contract/ga';\nimport { buildTxAsync } from './tx/builder';\nimport { mapObject, UnionToIntersection } from './utils/other';\nimport Node from './Node';\nimport { TxParamsAsync } from './tx/builder/schema.generated';\nimport AccountBase from './account/Base';\nimport { Encoded } from './utils/encoder';\nimport CompilerBase from './contract/compiler/Base';\n\nexport type OnAccount = Encoded.AccountAddress | AccountBase | undefined;\n\nexport function getValueOrErrorProxy<Value extends object | undefined>(\n valueCb: () => Value,\n): NonNullable<Value> {\n return new Proxy(\n {},\n Object.fromEntries(([\n 'apply', 'construct', 'defineProperty', 'deleteProperty', 'getOwnPropertyDescriptor',\n 'getPrototypeOf', 'isExtensible', 'ownKeys', 'preventExtensions', 'set', 'setPrototypeOf',\n 'get', 'has',\n ] as const).map((name) => [name, (t: {}, ...args: unknown[]) => {\n const target = valueCb() as object; // to get a native exception in case it missed\n const res = (Reflect[name] as any)(target, ...args);\n return typeof res === 'function' && name === 'get'\n ? res.bind(target) // otherwise it fails with attempted to get private field on non-instance\n : res;\n }])),\n ) as NonNullable<Value>;\n}\n\nconst { InvalidTxError: _2, ...chainMethodsOther } = chainMethods;\n\nconst methods = {\n ...chainMethodsOther,\n ...aensMethods,\n ...spendMethods,\n ...oracleMethods,\n createDelegationSignature,\n ...contractGaMethods,\n} as const;\n\ntype Decrement<Number extends number> = [-1, 0, 1, 2, 3, 4, 5][Number];\ntype GetMethodsOptions <Methods extends { [key: string]: Function }> =\n {\n [Name in keyof Methods]:\n Methods[Name] extends (...args: infer Args) => any\n ? Args[Decrement<Args['length']>] : never\n };\ntype MethodsOptions = GetMethodsOptions<typeof methods>;\nexport interface AeSdkMethodsOptions\n extends Partial<UnionToIntersection<MethodsOptions[keyof MethodsOptions]>> {\n}\n\n/**\n * AeSdkMethods is the composition of:\n * - chain methods\n * - tx methods\n * - aens methods\n * - spend methods\n * - oracle methods\n * - contract methods\n * - contract ga methods\n *\n * While these methods can be used separately, this class provides a handy way to store\n * their context (current account, network, and compiler to use).\n */\nclass AeSdkMethods {\n _options: AeSdkMethodsOptions = {};\n\n /**\n * @param options - Options\n */\n constructor(options: AeSdkMethodsOptions = {}) {\n Object.assign(this._options, options);\n }\n\n _getOptions(\n callOptions: AeSdkMethodsOptions = {},\n ): AeSdkMethodsOptions & { onAccount: AccountBase; onCompiler: CompilerBase; onNode: Node } {\n return {\n ...this._options,\n onAccount: getValueOrErrorProxy(() => this._options.onAccount),\n onNode: getValueOrErrorProxy(() => this._options.onNode),\n onCompiler: getValueOrErrorProxy(() => this._options.onCompiler),\n ...callOptions,\n };\n }\n\n async buildTx(options: TxParamsAsync): Promise<Encoded.Transaction> {\n return buildTxAsync({ ...this._getOptions(), ...options });\n }\n\n async initializeContract<Methods extends ContractMethodsBase>(\n options?: Omit<Parameters<typeof Contract.initialize>[0], 'onNode'> & { onNode?: Node },\n ): Promise<Contract<Methods>> {\n return Contract.initialize<Methods>(this._getOptions(options as AeSdkMethodsOptions));\n }\n}\n\ntype RequiredKeys<T> = {\n [K in keyof T]-?: {} extends Pick<T, K> ? never : K\n}[keyof T];\n\ntype OptionalIfNotRequired<T extends [any]> = RequiredKeys<T[0]> extends never ? T | [] : T;\n\ntype ReplaceOnAccount<Options> = Options extends { onAccount: any }\n ? Omit<Options, 'onAccount'> & { onAccount: OnAccount } : Options;\n\ntype MakeOptional<Options> = OptionalIfNotRequired<[\n Omit<Options, 'onNode' | 'onCompiler' | 'onAccount'> & Partial<ReplaceOnAccount<Options>>,\n]>;\n\ntype TransformMethods <Methods extends { [key: string]: Function }> =\n {\n [Name in keyof Methods]:\n Methods[Name] extends (...args: [...infer Args, infer Options]) => infer Ret\n ? (...args: [...Args, ...MakeOptional<Options>]) => Ret\n : never\n };\n\ninterface AeSdkMethodsTransformed extends TransformMethods<typeof methods> {}\n\nObject.assign(AeSdkMethods.prototype, mapObject<Function, Function>(\n methods,\n ([name, handler]) => [\n name,\n function methodWrapper(this: AeSdkMethods, ...args: any[]) {\n args.length = handler.length;\n const options = args[args.length - 1];\n args[args.length - 1] = this._getOptions(options);\n return handler(...args);\n },\n ],\n));\n\ntype AeSdkMethodsTyped = AeSdkMethods & AeSdkMethodsTransformed;\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nconst AeSdkMethodsTyped = AeSdkMethods as new (options?: AeSdkMethodsOptions) => AeSdkMethodsTyped;\nexport default AeSdkMethodsTyped;\n"],"mappings":"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"}
@@ -49,6 +49,7 @@ export default class AeSdkWallet extends AeSdk {
49
49
  onDisconnect: OnDisconnect;
50
50
  onAskAccounts: OnAskAccounts;
51
51
  } & ConstructorParameters<typeof AeSdk>[0]);
52
+ _getAccountsForClient({ addressSubscription }: RpcClientsInfo): Accounts;
52
53
  _pushAccountsToApps(): void;
53
54
  selectAccount(address: Encoded.AccountAddress): void;
54
55
  addAccount(account: AccountBase, options?: Parameters<AeSdk['addAccount']>[1]): void;
@@ -57,7 +58,6 @@ export default class AeSdkWallet extends AeSdk {
57
58
  };
58
59
  selectNode(name: string): Promise<void>;
59
60
  _getClient(clientId: string): RpcClientsInfo;
60
- _isRpcClientSubscribed(clientId: string): boolean;
61
61
  _isRpcClientConnected(clientId: string): boolean;
62
62
  _disconnectRpcClient(clientId: string): void;
63
63
  /**
@@ -47,9 +47,22 @@ export default class AeSdkWallet extends AeSdk {
47
47
  this.id = id;
48
48
  this._type = type;
49
49
  }
50
+ _getAccountsForClient(_ref2) {
51
+ let {
52
+ addressSubscription
53
+ } = _ref2;
54
+ const {
55
+ current,
56
+ connected
57
+ } = this.getAccounts();
58
+ return {
59
+ current: addressSubscription.has('current') || addressSubscription.has('connected') ? current : {},
60
+ connected: addressSubscription.has('connected') ? connected : {}
61
+ };
62
+ }
50
63
  _pushAccountsToApps() {
51
64
  if (this._clients == null) return;
52
- Array.from(this._clients.keys()).filter(clientId => this._isRpcClientSubscribed(clientId)).map(clientId => this._getClient(clientId).rpc).forEach(client => client.notify(METHODS.updateAddress, this.getAccounts()));
65
+ Array.from(this._clients.keys()).filter(clientId => this._isRpcClientConnected(clientId)).map(clientId => this._getClient(clientId)).filter(client => client.addressSubscription.size !== 0).forEach(client => client.rpc.notify(METHODS.updateAddress, this._getAccountsForClient(client)));
53
66
  }
54
67
  selectAccount(address) {
55
68
  super.selectAccount(address);
@@ -83,9 +96,6 @@ export default class AeSdkWallet extends AeSdk {
83
96
  if (client == null) throw new UnknownRpcClientError(clientId);
84
97
  return client;
85
98
  }
86
- _isRpcClientSubscribed(clientId) {
87
- return this._isRpcClientConnected(clientId) && this._getClient(clientId).addressSubscription.size !== 0;
88
- }
89
99
  _isRpcClientConnected(clientId) {
90
100
  return RPC_STATUS.CONNECTED === this._getClient(clientId).status && this._getClient(clientId).rpc.connection.isConnected();
91
101
  }
@@ -130,13 +140,13 @@ export default class AeSdkWallet extends AeSdk {
130
140
  },
131
141
  // Store client info and prepare two fn for each client `connect` and `denyConnection`
132
142
  // which automatically prepare and send response for that client
133
- [METHODS.connect]: async (_ref2, origin) => {
143
+ [METHODS.connect]: async (_ref3, origin) => {
134
144
  let {
135
145
  name,
136
146
  version,
137
147
  icons,
138
148
  connectNode
139
- } = _ref2;
149
+ } = _ref3;
140
150
  if (version !== RPC_VERSION) throw new RpcUnsupportedProtocolError();
141
151
  await this.onConnection(id, {
142
152
  name,
@@ -150,18 +160,19 @@ export default class AeSdkWallet extends AeSdk {
150
160
  ...(connectNode && this._getNode())
151
161
  };
152
162
  },
153
- [METHODS.subscribeAddress]: async (_ref3, origin) => {
163
+ [METHODS.subscribeAddress]: async (_ref4, origin) => {
154
164
  let {
155
165
  type,
156
166
  value
157
- } = _ref3;
167
+ } = _ref4;
158
168
  if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError();
159
- await this.onSubscription(id, {
160
- type,
161
- value
162
- }, origin);
163
169
  switch (type) {
164
170
  case SUBSCRIPTION_TYPES.subscribe:
171
+ // TODO: remove `type` as it always subscribe
172
+ await this.onSubscription(id, {
173
+ type,
174
+ value
175
+ }, origin);
165
176
  client.addressSubscription.add(value);
166
177
  break;
167
178
  case SUBSCRIPTION_TYPES.unsubscribe:
@@ -172,21 +183,21 @@ export default class AeSdkWallet extends AeSdk {
172
183
  }
173
184
  return {
174
185
  subscription: Array.from(client.addressSubscription),
175
- address: this.getAccounts()
186
+ address: this._getAccountsForClient(client)
176
187
  };
177
188
  },
178
189
  [METHODS.address]: async (params, origin) => {
179
- if (!this._isRpcClientSubscribed(id)) throw new RpcNotAuthorizeError();
190
+ if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError();
180
191
  await this.onAskAccounts(id, params, origin);
181
192
  return this.addresses();
182
193
  },
183
- [METHODS.sign]: async (_ref4, origin) => {
194
+ [METHODS.sign]: async (_ref5, origin) => {
184
195
  let {
185
196
  tx,
186
197
  onAccount = this.address,
187
198
  returnSigned,
188
199
  innerTx
189
- } = _ref4;
200
+ } = _ref5;
190
201
  if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError();
191
202
  if (!this.addresses().includes(onAccount)) {
192
203
  throw new RpcPermissionDenyError(onAccount);
@@ -215,11 +226,11 @@ export default class AeSdkWallet extends AeSdk {
215
226
  throw error;
216
227
  }
217
228
  },
218
- [METHODS.signMessage]: async (_ref5, origin) => {
229
+ [METHODS.signMessage]: async (_ref6, origin) => {
219
230
  let {
220
231
  message,
221
232
  onAccount = this.address
222
- } = _ref5;
233
+ } = _ref6;
223
234
  if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError();
224
235
  if (!this.addresses().includes(onAccount)) {
225
236
  throw new RpcPermissionDenyError(onAccount);
@@ -233,13 +244,13 @@ export default class AeSdkWallet extends AeSdk {
233
244
  signature: _Buffer.from(await this.signMessage(message, parameters)).toString('hex')
234
245
  };
235
246
  },
236
- [METHODS.signTypedData]: async (_ref6, origin) => {
247
+ [METHODS.signTypedData]: async (_ref7, origin) => {
237
248
  let {
238
249
  domain,
239
250
  aci,
240
251
  data,
241
252
  onAccount = this.address
242
- } = _ref6;
253
+ } = _ref7;
243
254
  if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError();
244
255
  if (!this.addresses().includes(onAccount)) {
245
256
  throw new RpcPermissionDenyError(onAccount);
@@ -253,6 +264,28 @@ export default class AeSdkWallet extends AeSdk {
253
264
  return {
254
265
  signature: await this.signTypedData(data, aci, parameters)
255
266
  };
267
+ },
268
+ [METHODS.signDelegationToContract]: async (_ref8, origin) => {
269
+ var _ref9, _ref10;
270
+ let {
271
+ contractAddress,
272
+ name,
273
+ oracleQueryId,
274
+ onAccount = this.address
275
+ } = _ref8;
276
+ if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError();
277
+ if (!this.addresses().includes(onAccount)) {
278
+ throw new RpcPermissionDenyError(onAccount);
279
+ }
280
+ const parameters = {
281
+ onAccount,
282
+ aeppOrigin: origin,
283
+ aeppRpcClientId: id
284
+ };
285
+ const signature = await ((_ref9 = (_ref10 = name == null ? null : this.signNameDelegationToContract(contractAddress, name, parameters)) !== null && _ref10 !== void 0 ? _ref10 : oracleQueryId == null ? null : this.signOracleQueryDelegationToContract(contractAddress, oracleQueryId, parameters)) !== null && _ref9 !== void 0 ? _ref9 : this.signDelegationToContract(contractAddress, parameters));
286
+ return {
287
+ signature
288
+ };
256
289
  }
257
290
  })
258
291
  };
@@ -1 +1 @@
1
- {"version":3,"file":"AeSdkWallet.mjs","names":["v4","uuid","AeSdk","verifyTransaction","RpcClient","METHODS","RPC_STATUS","SUBSCRIPTION_TYPES","RpcInvalidTransactionError","RpcNotAuthorizeError","RpcPermissionDenyError","RpcUnsupportedProtocolError","InternalError","UnknownRpcClientError","RPC_VERSION","jsonBig","AeSdkWallet","constructor","_ref","name","id","type","onConnection","onSubscription","onDisconnect","onAskAccounts","options","_defineProperty","Map","_type","_pushAccountsToApps","_clients","Array","from","keys","filter","clientId","_isRpcClientSubscribed","map","_getClient","rpc","forEach","client","notify","updateAddress","getAccounts","selectAccount","address","addAccount","account","_getNode","ensureNodeConnected","node","url","api","$host","selectedNodeName","selectNode","networkId","getNetworkId","_isRpcClientConnected","updateNetwork","connectNode","get","addressSubscription","size","CONNECTED","status","connection","isConnected","_disconnectRpcClient","disconnect","DISCONNECTED","Set","removeRpcClient","delete","addRpcClient","clientConnection","disconnectParams","WAITING_FOR_CONNECTION_REQUEST","closeConnection","params","connect","_ref2","origin","version","icons","getWalletInfo","subscribeAddress","_ref3","value","subscribe","add","unsubscribe","subscription","addresses","sign","_ref4","tx","onAccount","returnSigned","innerTx","includes","parameters","aeppOrigin","aeppRpcClientId","signedTransaction","signTransaction","parse","stringify","transactionHash","sendTransaction","verify","error","validation","length","signMessage","_ref5","message","signature","_Buffer","toString","signTypedData","_ref6","domain","aci","data","set","shareWalletInfo","readyToConnect","window","location","current","selectedAddress","connected","a","reduce","acc"],"sources":["../src/AeSdkWallet.ts"],"sourcesContent":["import { v4 as uuid } from '@aeternity/uuid';\nimport AeSdk from './AeSdk';\nimport verifyTransaction from './tx/validator';\nimport RpcClient from './aepp-wallet-communication/rpc/RpcClient';\nimport {\n METHODS, RPC_STATUS, SUBSCRIPTION_TYPES, WALLET_TYPE,\n RpcInvalidTransactionError,\n RpcNotAuthorizeError, RpcPermissionDenyError, RpcUnsupportedProtocolError,\n} from './aepp-wallet-communication/schema';\nimport { InternalError, UnknownRpcClientError } from './utils/errors';\nimport AccountBase from './account/Base';\nimport BrowserConnection from './aepp-wallet-communication/connection/Browser';\nimport {\n Accounts,\n AeppApi,\n Network,\n RPC_VERSION,\n WalletApi,\n WalletInfo,\n} from './aepp-wallet-communication/rpc/types';\nimport { Encoded } from './utils/encoder';\nimport jsonBig from './utils/json-big';\n\ntype RpcClientWallet = RpcClient<AeppApi, WalletApi>;\n\ntype OnConnection = (\n clientId: string, params: Omit<Parameters<WalletApi[METHODS.connect]>[0], 'version'>, origin: string\n) => void;\n\ntype OnSubscription = (\n clientId: string, params: Parameters<WalletApi[METHODS.subscribeAddress]>[0], origin: string\n) => void;\n\ntype OnDisconnect = (\n clientId: string, params: Parameters<WalletApi[METHODS.closeConnection]>[0]\n) => void;\n\ntype OnAskAccounts = (\n clientId: string, params: undefined, origin: string\n) => void;\n\ninterface RpcClientsInfo {\n id: string;\n status: RPC_STATUS;\n connectNode: boolean;\n addressSubscription: Set<'connected' | 'current'>;\n rpc: RpcClientWallet;\n}\n\n/**\n * Contain functionality for aepp interaction and managing multiple aepps\n * @category aepp wallet communication\n */\nexport default class AeSdkWallet extends AeSdk {\n id: string;\n\n _type: WALLET_TYPE;\n\n name: string;\n\n _clients = new Map<string, RpcClientsInfo>();\n\n onConnection: OnConnection;\n\n onSubscription: OnSubscription;\n\n onDisconnect: OnDisconnect;\n\n onAskAccounts: OnAskAccounts;\n\n /**\n * @param options - Options\n * @param options.name - Wallet name\n * @param options.id - Wallet id\n * @param options.type - Wallet type\n * @param options.onConnection - Call-back function for incoming AEPP connection\n * @param options.onSubscription - Call-back function for incoming AEPP account subscription\n * @param options.onAskAccounts - Call-back function for incoming AEPP get address request\n * @param options.onDisconnect - Call-back function for disconnect event\n */\n constructor({\n name,\n id,\n type,\n onConnection,\n onSubscription,\n onDisconnect,\n onAskAccounts,\n ...options\n }: {\n id: string;\n type: WALLET_TYPE;\n name: string;\n onConnection: OnConnection;\n onSubscription: OnSubscription;\n onDisconnect: OnDisconnect;\n onAskAccounts: OnAskAccounts;\n } & ConstructorParameters<typeof AeSdk>[0]) {\n super(options);\n this.onConnection = onConnection;\n this.onSubscription = onSubscription;\n this.onDisconnect = onDisconnect;\n this.onAskAccounts = onAskAccounts;\n this.name = name;\n this.id = id;\n this._type = type;\n }\n\n _pushAccountsToApps(): void {\n if (this._clients == null) return;\n Array.from(this._clients.keys())\n .filter((clientId) => this._isRpcClientSubscribed(clientId))\n .map((clientId) => this._getClient(clientId).rpc)\n .forEach((client) => client.notify(METHODS.updateAddress, this.getAccounts()));\n }\n\n override selectAccount(address: Encoded.AccountAddress): void {\n super.selectAccount(address);\n this._pushAccountsToApps();\n }\n\n override addAccount(account: AccountBase, options?: Parameters<AeSdk['addAccount']>[1]): void {\n super.addAccount(account, options);\n this._pushAccountsToApps();\n }\n\n _getNode(): { node: Network['node'] } {\n this.ensureNodeConnected();\n return { node: { url: this.api.$host, name: this.selectedNodeName } };\n }\n\n override async selectNode(name: string): Promise<void> {\n super.selectNode(name);\n const networkId = await this.api.getNetworkId();\n Array.from(this._clients.keys())\n .filter((clientId) => this._isRpcClientConnected(clientId))\n .map((clientId) => this._getClient(clientId))\n .forEach((client) => {\n client.rpc.notify(METHODS.updateNetwork, {\n networkId,\n ...client.connectNode && this._getNode(),\n });\n });\n }\n\n _getClient(clientId: string): RpcClientsInfo {\n const client = this._clients.get(clientId);\n if (client == null) throw new UnknownRpcClientError(clientId);\n return client;\n }\n\n _isRpcClientSubscribed(clientId: string): boolean {\n return this._isRpcClientConnected(clientId)\n && this._getClient(clientId).addressSubscription.size !== 0;\n }\n\n _isRpcClientConnected(clientId: string): boolean {\n return RPC_STATUS.CONNECTED === this._getClient(clientId).status\n && this._getClient(clientId).rpc.connection.isConnected();\n }\n\n _disconnectRpcClient(clientId: string): void {\n const client = this._getClient(clientId);\n client.rpc.connection.disconnect();\n client.status = RPC_STATUS.DISCONNECTED;\n client.addressSubscription = new Set();\n }\n\n /**\n * Remove specific RpcClient by ID\n * @param id - Client ID\n */\n removeRpcClient(id: string): void {\n this._disconnectRpcClient(id);\n this._clients.delete(id);\n }\n\n /**\n * Add new client by AEPP connection\n * @param clientConnection - AEPP connection object\n * @returns Client ID\n */\n addRpcClient(clientConnection: BrowserConnection): string {\n // @TODO detect if aepp has some history based on origin????\n // if yes use this instance for connection\n const id = uuid();\n let disconnectParams: any;\n const client: RpcClientsInfo = {\n id,\n status: RPC_STATUS.WAITING_FOR_CONNECTION_REQUEST,\n addressSubscription: new Set(),\n connectNode: false,\n rpc: new RpcClient<AeppApi, WalletApi>(\n clientConnection,\n () => {\n this._clients.delete(id);\n this.onDisconnect(id, disconnectParams); // also related info\n },\n {\n [METHODS.closeConnection]: (params) => {\n disconnectParams = params;\n this._disconnectRpcClient(id);\n },\n // Store client info and prepare two fn for each client `connect` and `denyConnection`\n // which automatically prepare and send response for that client\n [METHODS.connect]: async ({\n name, version, icons, connectNode,\n }, origin) => {\n if (version !== RPC_VERSION) throw new RpcUnsupportedProtocolError();\n\n await this.onConnection(id, { name, icons, connectNode }, origin);\n client.status = RPC_STATUS.CONNECTED;\n client.connectNode = connectNode;\n return {\n ...await this.getWalletInfo(),\n ...connectNode && this._getNode(),\n };\n },\n [METHODS.subscribeAddress]: async ({ type, value }, origin) => {\n if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError();\n\n await this.onSubscription(id, { type, value }, origin);\n\n switch (type) {\n case SUBSCRIPTION_TYPES.subscribe:\n client.addressSubscription.add(value);\n break;\n case SUBSCRIPTION_TYPES.unsubscribe:\n client.addressSubscription.delete(value);\n break;\n default:\n throw new InternalError(`Unknown subscription type: ${type}`);\n }\n\n return {\n subscription: Array.from(client.addressSubscription),\n address: this.getAccounts(),\n };\n },\n [METHODS.address]: async (params, origin) => {\n if (!this._isRpcClientSubscribed(id)) throw new RpcNotAuthorizeError();\n await this.onAskAccounts(id, params, origin);\n return this.addresses();\n },\n [METHODS.sign]: async (\n {\n tx, onAccount = this.address, returnSigned, innerTx,\n },\n origin,\n ) => {\n if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError();\n if (!this.addresses().includes(onAccount)) {\n throw new RpcPermissionDenyError(onAccount);\n }\n\n const parameters = {\n onAccount, aeppOrigin: origin, aeppRpcClientId: id, innerTx,\n };\n if (returnSigned || innerTx === true) {\n return { signedTransaction: await this.signTransaction(tx, parameters) };\n }\n try {\n return jsonBig.parse(jsonBig.stringify({\n transactionHash: await this.sendTransaction(tx, { ...parameters, verify: false }),\n }));\n } catch (error) {\n const validation = await verifyTransaction(tx, this.api);\n if (validation.length > 0) throw new RpcInvalidTransactionError(validation);\n throw error;\n }\n },\n [METHODS.signMessage]: async ({ message, onAccount = this.address }, origin) => {\n if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError();\n if (!this.addresses().includes(onAccount)) {\n throw new RpcPermissionDenyError(onAccount);\n }\n\n const parameters = { onAccount, aeppOrigin: origin, aeppRpcClientId: id };\n return {\n signature: Buffer.from(await this.signMessage(message, parameters)).toString('hex'),\n };\n },\n [METHODS.signTypedData]: async ({\n domain, aci, data, onAccount = this.address,\n }, origin) => {\n if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError();\n if (!this.addresses().includes(onAccount)) {\n throw new RpcPermissionDenyError(onAccount);\n }\n\n const parameters = {\n ...domain, onAccount, aeppOrigin: origin, aeppRpcClientId: id,\n };\n return {\n signature: await this.signTypedData(data, aci, parameters),\n };\n },\n },\n ),\n };\n this._clients.set(id, client);\n return id;\n }\n\n /**\n * Send shareWalletInfo message to notify AEPP about wallet\n * @param clientId - ID of RPC client send message to\n */\n async shareWalletInfo(clientId: string): Promise<void> {\n this._getClient(clientId).rpc.notify(METHODS.readyToConnect, await this.getWalletInfo());\n }\n\n /**\n * Get Wallet info object\n * @returns Object with wallet information\n */\n async getWalletInfo(): Promise<WalletInfo> {\n return {\n id: this.id,\n name: this.name,\n networkId: await this.api.getNetworkId(),\n origin: window.location.origin,\n type: this._type,\n };\n }\n\n /**\n * Get Wallet accounts\n * @returns Object with accounts information (\\{ connected: Object, current: Object \\})\n */\n getAccounts(): Accounts {\n return {\n current: this.selectedAddress != null ? { [this.selectedAddress]: {} } : {},\n connected: this.addresses()\n .filter((a) => a !== this.selectedAddress)\n .reduce((acc, a) => ({ ...acc, [a]: {} }), {}),\n };\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"AeSdkWallet.mjs","names":["v4","uuid","AeSdk","verifyTransaction","RpcClient","METHODS","RPC_STATUS","SUBSCRIPTION_TYPES","RpcInvalidTransactionError","RpcNotAuthorizeError","RpcPermissionDenyError","RpcUnsupportedProtocolError","InternalError","UnknownRpcClientError","RPC_VERSION","jsonBig","AeSdkWallet","constructor","_ref","name","id","type","onConnection","onSubscription","onDisconnect","onAskAccounts","options","_defineProperty","Map","_type","_getAccountsForClient","_ref2","addressSubscription","current","connected","getAccounts","has","_pushAccountsToApps","_clients","Array","from","keys","filter","clientId","_isRpcClientConnected","map","_getClient","client","size","forEach","rpc","notify","updateAddress","selectAccount","address","addAccount","account","_getNode","ensureNodeConnected","node","url","api","$host","selectedNodeName","selectNode","networkId","getNetworkId","updateNetwork","connectNode","get","CONNECTED","status","connection","isConnected","_disconnectRpcClient","disconnect","DISCONNECTED","Set","removeRpcClient","delete","addRpcClient","clientConnection","disconnectParams","WAITING_FOR_CONNECTION_REQUEST","closeConnection","params","connect","_ref3","origin","version","icons","getWalletInfo","subscribeAddress","_ref4","value","subscribe","add","unsubscribe","subscription","addresses","sign","_ref5","tx","onAccount","returnSigned","innerTx","includes","parameters","aeppOrigin","aeppRpcClientId","signedTransaction","signTransaction","parse","stringify","transactionHash","sendTransaction","verify","error","validation","length","signMessage","_ref6","message","signature","_Buffer","toString","signTypedData","_ref7","domain","aci","data","signDelegationToContract","_ref8","_ref9","_ref10","contractAddress","oracleQueryId","signNameDelegationToContract","signOracleQueryDelegationToContract","set","shareWalletInfo","readyToConnect","window","location","selectedAddress","a","reduce","acc"],"sources":["../src/AeSdkWallet.ts"],"sourcesContent":["import { v4 as uuid } from '@aeternity/uuid';\nimport AeSdk from './AeSdk';\nimport verifyTransaction from './tx/validator';\nimport RpcClient from './aepp-wallet-communication/rpc/RpcClient';\nimport {\n METHODS, RPC_STATUS, SUBSCRIPTION_TYPES, WALLET_TYPE,\n RpcInvalidTransactionError,\n RpcNotAuthorizeError, RpcPermissionDenyError, RpcUnsupportedProtocolError,\n} from './aepp-wallet-communication/schema';\nimport { InternalError, UnknownRpcClientError } from './utils/errors';\nimport AccountBase from './account/Base';\nimport BrowserConnection from './aepp-wallet-communication/connection/Browser';\nimport {\n Accounts,\n AeppApi,\n Network,\n RPC_VERSION,\n WalletApi,\n WalletInfo,\n} from './aepp-wallet-communication/rpc/types';\nimport { Encoded } from './utils/encoder';\nimport jsonBig from './utils/json-big';\n\ntype RpcClientWallet = RpcClient<AeppApi, WalletApi>;\n\ntype OnConnection = (\n clientId: string, params: Omit<Parameters<WalletApi[METHODS.connect]>[0], 'version'>, origin: string\n) => void;\n\ntype OnSubscription = (\n clientId: string, params: Parameters<WalletApi[METHODS.subscribeAddress]>[0], origin: string\n) => void;\n\ntype OnDisconnect = (\n clientId: string, params: Parameters<WalletApi[METHODS.closeConnection]>[0]\n) => void;\n\ntype OnAskAccounts = (\n clientId: string, params: undefined, origin: string\n) => void;\n\ninterface RpcClientsInfo {\n id: string;\n status: RPC_STATUS;\n connectNode: boolean;\n addressSubscription: Set<'connected' | 'current'>;\n rpc: RpcClientWallet;\n}\n\n/**\n * Contain functionality for aepp interaction and managing multiple aepps\n * @category aepp wallet communication\n */\nexport default class AeSdkWallet extends AeSdk {\n id: string;\n\n _type: WALLET_TYPE;\n\n name: string;\n\n _clients = new Map<string, RpcClientsInfo>();\n\n onConnection: OnConnection;\n\n onSubscription: OnSubscription;\n\n onDisconnect: OnDisconnect;\n\n onAskAccounts: OnAskAccounts;\n\n /**\n * @param options - Options\n * @param options.name - Wallet name\n * @param options.id - Wallet id\n * @param options.type - Wallet type\n * @param options.onConnection - Call-back function for incoming AEPP connection\n * @param options.onSubscription - Call-back function for incoming AEPP account subscription\n * @param options.onAskAccounts - Call-back function for incoming AEPP get address request\n * @param options.onDisconnect - Call-back function for disconnect event\n */\n constructor({\n name,\n id,\n type,\n onConnection,\n onSubscription,\n onDisconnect,\n onAskAccounts,\n ...options\n }: {\n id: string;\n type: WALLET_TYPE;\n name: string;\n onConnection: OnConnection;\n onSubscription: OnSubscription;\n onDisconnect: OnDisconnect;\n onAskAccounts: OnAskAccounts;\n } & ConstructorParameters<typeof AeSdk>[0]) {\n super(options);\n this.onConnection = onConnection;\n this.onSubscription = onSubscription;\n this.onDisconnect = onDisconnect;\n this.onAskAccounts = onAskAccounts;\n this.name = name;\n this.id = id;\n this._type = type;\n }\n\n _getAccountsForClient({ addressSubscription }: RpcClientsInfo): Accounts {\n const { current, connected } = this.getAccounts();\n return {\n current: addressSubscription.has('current') || addressSubscription.has('connected')\n ? current : {},\n connected: addressSubscription.has('connected') ? connected : {},\n };\n }\n\n _pushAccountsToApps(): void {\n if (this._clients == null) return;\n Array.from(this._clients.keys())\n .filter((clientId) => this._isRpcClientConnected(clientId))\n .map((clientId) => this._getClient(clientId))\n .filter((client) => client.addressSubscription.size !== 0)\n .forEach((client) => client.rpc\n .notify(METHODS.updateAddress, this._getAccountsForClient(client)));\n }\n\n override selectAccount(address: Encoded.AccountAddress): void {\n super.selectAccount(address);\n this._pushAccountsToApps();\n }\n\n override addAccount(account: AccountBase, options?: Parameters<AeSdk['addAccount']>[1]): void {\n super.addAccount(account, options);\n this._pushAccountsToApps();\n }\n\n _getNode(): { node: Network['node'] } {\n this.ensureNodeConnected();\n return { node: { url: this.api.$host, name: this.selectedNodeName } };\n }\n\n override async selectNode(name: string): Promise<void> {\n super.selectNode(name);\n const networkId = await this.api.getNetworkId();\n Array.from(this._clients.keys())\n .filter((clientId) => this._isRpcClientConnected(clientId))\n .map((clientId) => this._getClient(clientId))\n .forEach((client) => {\n client.rpc.notify(METHODS.updateNetwork, {\n networkId,\n ...client.connectNode && this._getNode(),\n });\n });\n }\n\n _getClient(clientId: string): RpcClientsInfo {\n const client = this._clients.get(clientId);\n if (client == null) throw new UnknownRpcClientError(clientId);\n return client;\n }\n\n _isRpcClientConnected(clientId: string): boolean {\n return RPC_STATUS.CONNECTED === this._getClient(clientId).status\n && this._getClient(clientId).rpc.connection.isConnected();\n }\n\n _disconnectRpcClient(clientId: string): void {\n const client = this._getClient(clientId);\n client.rpc.connection.disconnect();\n client.status = RPC_STATUS.DISCONNECTED;\n client.addressSubscription = new Set();\n }\n\n /**\n * Remove specific RpcClient by ID\n * @param id - Client ID\n */\n removeRpcClient(id: string): void {\n this._disconnectRpcClient(id);\n this._clients.delete(id);\n }\n\n /**\n * Add new client by AEPP connection\n * @param clientConnection - AEPP connection object\n * @returns Client ID\n */\n addRpcClient(clientConnection: BrowserConnection): string {\n // @TODO detect if aepp has some history based on origin????\n // if yes use this instance for connection\n const id = uuid();\n let disconnectParams: any;\n const client: RpcClientsInfo = {\n id,\n status: RPC_STATUS.WAITING_FOR_CONNECTION_REQUEST,\n addressSubscription: new Set(),\n connectNode: false,\n rpc: new RpcClient<AeppApi, WalletApi>(\n clientConnection,\n () => {\n this._clients.delete(id);\n this.onDisconnect(id, disconnectParams); // also related info\n },\n {\n [METHODS.closeConnection]: (params) => {\n disconnectParams = params;\n this._disconnectRpcClient(id);\n },\n // Store client info and prepare two fn for each client `connect` and `denyConnection`\n // which automatically prepare and send response for that client\n [METHODS.connect]: async ({\n name, version, icons, connectNode,\n }, origin) => {\n if (version !== RPC_VERSION) throw new RpcUnsupportedProtocolError();\n\n await this.onConnection(id, { name, icons, connectNode }, origin);\n client.status = RPC_STATUS.CONNECTED;\n client.connectNode = connectNode;\n return {\n ...await this.getWalletInfo(),\n ...connectNode && this._getNode(),\n };\n },\n [METHODS.subscribeAddress]: async ({ type, value }, origin) => {\n if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError();\n\n switch (type) {\n case SUBSCRIPTION_TYPES.subscribe:\n // TODO: remove `type` as it always subscribe\n await this.onSubscription(id, { type, value }, origin);\n client.addressSubscription.add(value);\n break;\n case SUBSCRIPTION_TYPES.unsubscribe:\n client.addressSubscription.delete(value);\n break;\n default:\n throw new InternalError(`Unknown subscription type: ${type}`);\n }\n\n return {\n subscription: Array.from(client.addressSubscription),\n address: this._getAccountsForClient(client),\n };\n },\n [METHODS.address]: async (params, origin) => {\n if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError();\n await this.onAskAccounts(id, params, origin);\n return this.addresses();\n },\n [METHODS.sign]: async (\n {\n tx, onAccount = this.address, returnSigned, innerTx,\n },\n origin,\n ) => {\n if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError();\n if (!this.addresses().includes(onAccount)) {\n throw new RpcPermissionDenyError(onAccount);\n }\n\n const parameters = {\n onAccount, aeppOrigin: origin, aeppRpcClientId: id, innerTx,\n };\n if (returnSigned || innerTx === true) {\n return { signedTransaction: await this.signTransaction(tx, parameters) };\n }\n try {\n return jsonBig.parse(jsonBig.stringify({\n transactionHash: await this.sendTransaction(tx, { ...parameters, verify: false }),\n }));\n } catch (error) {\n const validation = await verifyTransaction(tx, this.api);\n if (validation.length > 0) throw new RpcInvalidTransactionError(validation);\n throw error;\n }\n },\n [METHODS.signMessage]: async ({ message, onAccount = this.address }, origin) => {\n if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError();\n if (!this.addresses().includes(onAccount)) {\n throw new RpcPermissionDenyError(onAccount);\n }\n\n const parameters = { onAccount, aeppOrigin: origin, aeppRpcClientId: id };\n return {\n signature: Buffer.from(await this.signMessage(message, parameters)).toString('hex'),\n };\n },\n [METHODS.signTypedData]: async ({\n domain, aci, data, onAccount = this.address,\n }, origin) => {\n if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError();\n if (!this.addresses().includes(onAccount)) {\n throw new RpcPermissionDenyError(onAccount);\n }\n\n const parameters = {\n ...domain, onAccount, aeppOrigin: origin, aeppRpcClientId: id,\n };\n return {\n signature: await this.signTypedData(data, aci, parameters),\n };\n },\n [METHODS.signDelegationToContract]: async ({\n contractAddress, name, oracleQueryId, onAccount = this.address,\n }, origin) => {\n if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError();\n if (!this.addresses().includes(onAccount)) {\n throw new RpcPermissionDenyError(onAccount);\n }\n\n const parameters = { onAccount, aeppOrigin: origin, aeppRpcClientId: id };\n const signature = await (\n (name == null ? null : this\n .signNameDelegationToContract(contractAddress, name, parameters))\n ?? (oracleQueryId == null ? null : this\n .signOracleQueryDelegationToContract(contractAddress, oracleQueryId, parameters))\n ?? this.signDelegationToContract(contractAddress, parameters)\n );\n return { signature };\n },\n },\n ),\n };\n this._clients.set(id, client);\n return id;\n }\n\n /**\n * Send shareWalletInfo message to notify AEPP about wallet\n * @param clientId - ID of RPC client send message to\n */\n async shareWalletInfo(clientId: string): Promise<void> {\n this._getClient(clientId).rpc.notify(METHODS.readyToConnect, await this.getWalletInfo());\n }\n\n /**\n * Get Wallet info object\n * @returns Object with wallet information\n */\n async getWalletInfo(): Promise<WalletInfo> {\n return {\n id: this.id,\n name: this.name,\n networkId: await this.api.getNetworkId(),\n origin: window.location.origin,\n type: this._type,\n };\n }\n\n /**\n * Get Wallet accounts\n * @returns Object with accounts information (\\{ connected: Object, current: Object \\})\n */\n getAccounts(): Accounts {\n return {\n current: this.selectedAddress != null ? { [this.selectedAddress]: {} } : {},\n connected: this.addresses()\n .filter((a) => a !== this.selectedAddress)\n .reduce((acc, a) => ({ ...acc, [a]: {} }), {}),\n };\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Middleware.mjs","names":["BigNumber","genRequestQueuesPolicy","genCombineGetRequestsPolicy","genErrorFormatterPolicy","genVersionCheckPolicy","genRetryOnFailurePolicy","Middleware","MiddlewareApi","mapObject","bigIntPropertyNames","numberPropertyNames","_mapData","WeakSet","_encodeArg","_decodeRes","MiddlewareTransformed","constructor","arguments","_classPrivateMethodInitSpec","sendOperationRequest","operationArguments","operationSpec","args","_ref","key","value","_classPrivateMethodGet","_encodeArg2","call","_decodeRes2","_mapData2","data","transform","Array","isArray","map","d","_ref3","some","k","bigInt","number","toFixed","toString","BigInt","url","ignoreVersion","retryCount","retryOverallDelay","options","length","undefined","allowInsecureConnection","additionalPolicies","body","error","statusPromise","getStatus","versionPromise","then","_ref2","mdwVersion","pipeline","addPolicy"],"sources":["../src/Middleware.ts"],"sourcesContent":["// eslint-disable-next-line max-classes-per-file\nimport BigNumber from 'bignumber.js';\nimport { OperationArguments, OperationSpec } from '@azure/core-client';\nimport {\n genRequestQueuesPolicy, genCombineGetRequestsPolicy, genErrorFormatterPolicy,\n genVersionCheckPolicy, genRetryOnFailurePolicy,\n} from './utils/autorest';\nimport { Middleware as MiddlewareApi, MiddlewareOptionalParams, ErrorResponse } from './apis/middleware';\nimport { mapObject } from './utils/other';\nimport { Encoded } from './utils/encoder';\nimport { ConsensusProtocolVersion } from './tx/builder/constants';\n\nconst bigIntPropertyNames = [] as const;\n\nconst numberPropertyNames = [] as const;\n\nclass MiddlewareTransformed extends MiddlewareApi {\n override async sendOperationRequest(\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n ): Promise<any> {\n const args = mapObject(\n operationArguments,\n ([key, value]) => [key, this.#encodeArg(value)],\n ) as OperationArguments;\n return this.#decodeRes(await super.sendOperationRequest(args, operationSpec));\n }\n\n #mapData(data: any, transform: {\n bigInt: (v: any) => any;\n number: (v: any) => any;\n }): unknown {\n if (Array.isArray(data)) return data.map((d) => this.#mapData(d, transform));\n if (data != null && typeof data === 'object') {\n return mapObject(data, ([key, value]) => {\n if (value == null) return [key, value];\n if (bigIntPropertyNames.some((k) => k === key)) return [key, transform.bigInt(value)];\n if (numberPropertyNames.some((k) => k === key)) return [key, transform.number(value)];\n return [key, this.#mapData(value, transform)];\n });\n }\n return data;\n }\n\n #encodeArg(data: any): any {\n return this.#mapData(data, {\n bigInt: (value) => {\n if (value instanceof BigNumber) return value.toFixed();\n return value.toString();\n },\n number: (value) => value.toString(),\n });\n }\n\n #decodeRes(data: any): any {\n return this.#mapData(data, {\n bigInt: (value) => BigInt(value),\n number: (value) => +value,\n });\n }\n}\n\ntype BigIntPropertyNames = typeof bigIntPropertyNames[number];\ntype NumberPropertyNames = typeof numberPropertyNames[number];\ntype PreserveOptional<NewType, OrigType> =\n OrigType extends undefined ? NewType | undefined : NewType;\nexport type TransformMiddlewareType<Type> =\n Type extends (...args: infer Args) => infer Ret\n ? (...args: TransformMiddlewareType<Args>) => TransformMiddlewareType<Ret>\n : Type extends [infer Item, ...infer Rest]\n ? [TransformMiddlewareType<Item>, ...TransformMiddlewareType<Rest>]\n : Type extends Array<infer Item>\n ? Array<TransformMiddlewareType<Item>>\n : Type extends Promise<infer T>\n ? Promise<TransformMiddlewareType<T>>\n : Type extends { [P in any]: any }\n ? {\n [Property in keyof Type]:\n Property extends BigIntPropertyNames\n ? PreserveOptional<bigint, Type[Property]>\n : Property extends NumberPropertyNames\n ? PreserveOptional<number, Type[Property]>\n : Property extends 'txHash'\n ? PreserveOptional<Encoded.TxHash, Type[Property]>\n : Property extends 'bytecode'\n ? PreserveOptional<Encoded.ContractBytearray, Type[Property]>\n : TransformMiddlewareType<Type[Property]>\n }\n : Type;\ntype MiddlewareTransformedApi = new (...args: ConstructorParameters<typeof MiddlewareApi>) => {\n [Name in keyof InstanceType<typeof MiddlewareApi>]:\n Name extends 'pipeline' | 'sendRequest' | 'sendOperationRequest'\n ? MiddlewareApi[Name] : TransformMiddlewareType<MiddlewareApi[Name]>\n};\n\nexport interface MiddlewareInfo {\n url: string;\n nodeNetworkId: string;\n version: string;\n consensusProtocolVersion: ConsensusProtocolVersion;\n}\n\nexport default class Middleware\n extends (MiddlewareTransformed as unknown as MiddlewareTransformedApi) {\n /**\n * @param url - Url for middleware API\n * @param options - Options\n * @param options.ignoreVersion - Don't check node version\n * @param options.retryCount - Amount of extra requests to do in case of failure\n * @param options.retryOverallDelay - Time in ms to wait between all retries\n */\n constructor(\n url: string,\n {\n ignoreVersion = false, retryCount = 3, retryOverallDelay = 800, ...options\n }: MiddlewareOptionalParams & {\n ignoreVersion?: boolean;\n retryCount?: number;\n retryOverallDelay?: number;\n } = {},\n ) {\n // eslint-disable-next-line constructor-super\n super(url, {\n allowInsecureConnection: true,\n additionalPolicies: [\n genRequestQueuesPolicy(),\n genCombineGetRequestsPolicy(),\n genRetryOnFailurePolicy(retryCount, retryOverallDelay),\n genErrorFormatterPolicy((body: ErrorResponse) => ` ${body.error}`),\n ],\n ...options,\n });\n if (!ignoreVersion) {\n const statusPromise = this.getStatus();\n const versionPromise = statusPromise.then(({ mdwVersion }) => mdwVersion, (error) => error);\n this.pipeline.addPolicy(\n genVersionCheckPolicy('middleware', '/v2/status', versionPromise, '1.47.0', '2.0.0'),\n );\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Middleware.mjs","names":["BigNumber","genRequestQueuesPolicy","genCombineGetRequestsPolicy","genErrorFormatterPolicy","genVersionCheckPolicy","genRetryOnFailurePolicy","Middleware","MiddlewareApi","mapObject","bigIntPropertyNames","numberPropertyNames","_mapData","WeakSet","_encodeArg","_decodeRes","MiddlewareTransformed","constructor","arguments","_classPrivateMethodInitSpec","sendOperationRequest","operationArguments","operationSpec","args","_ref","key","value","_classPrivateMethodGet","_encodeArg2","call","_decodeRes2","_mapData2","data","transform","Array","isArray","map","d","_ref3","some","k","bigInt","number","toFixed","toString","BigInt","url","ignoreVersion","retryCount","retryOverallDelay","options","length","undefined","allowInsecureConnection","additionalPolicies","body","error","statusPromise","getStatus","versionPromise","then","_ref2","mdwVersion","pipeline","addPolicy"],"sources":["../src/Middleware.ts"],"sourcesContent":["// eslint-disable-next-line max-classes-per-file\nimport BigNumber from 'bignumber.js';\nimport { OperationArguments, OperationSpec } from '@azure/core-client';\nimport {\n genRequestQueuesPolicy, genCombineGetRequestsPolicy, genErrorFormatterPolicy,\n genVersionCheckPolicy, genRetryOnFailurePolicy,\n} from './utils/autorest';\nimport { Middleware as MiddlewareApi, MiddlewareOptionalParams, ErrorResponse } from './apis/middleware';\nimport { mapObject } from './utils/other';\nimport { Encoded } from './utils/encoder';\nimport { ConsensusProtocolVersion } from './tx/builder/constants';\n\nconst bigIntPropertyNames = [] as const;\n\nconst numberPropertyNames = [] as const;\n\nclass MiddlewareTransformed extends MiddlewareApi {\n override async sendOperationRequest(\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n ): Promise<any> {\n const args = mapObject(\n operationArguments,\n ([key, value]) => [key, this.#encodeArg(value)],\n ) as OperationArguments;\n return this.#decodeRes(await super.sendOperationRequest(args, operationSpec));\n }\n\n #mapData(data: any, transform: {\n bigInt: (v: any) => any;\n number: (v: any) => any;\n }): unknown {\n if (Array.isArray(data)) return data.map((d) => this.#mapData(d, transform));\n if (data != null && typeof data === 'object') {\n return mapObject(data, ([key, value]) => {\n if (value == null) return [key, value];\n if (bigIntPropertyNames.some((k) => k === key)) return [key, transform.bigInt(value)];\n if (numberPropertyNames.some((k) => k === key)) return [key, transform.number(value)];\n return [key, this.#mapData(value, transform)];\n });\n }\n return data;\n }\n\n #encodeArg(data: any): any {\n return this.#mapData(data, {\n bigInt: (value) => {\n if (value instanceof BigNumber) return value.toFixed();\n return value.toString();\n },\n number: (value) => value.toString(),\n });\n }\n\n #decodeRes(data: any): any {\n return this.#mapData(data, {\n bigInt: (value) => BigInt(value),\n number: (value) => +value,\n });\n }\n}\n\ntype BigIntPropertyNames = typeof bigIntPropertyNames[number];\ntype NumberPropertyNames = typeof numberPropertyNames[number];\ntype PreserveOptional<NewType, OrigType> =\n OrigType extends undefined ? NewType | undefined : NewType;\nexport type TransformMiddlewareType<Type> =\n Type extends (...args: infer Args) => infer Ret\n ? (...args: TransformMiddlewareType<Args>) => TransformMiddlewareType<Ret>\n : Type extends [infer Item, ...infer Rest]\n ? [TransformMiddlewareType<Item>, ...TransformMiddlewareType<Rest>]\n : Type extends Array<infer Item>\n ? Array<TransformMiddlewareType<Item>>\n : Type extends Promise<infer T>\n ? Promise<TransformMiddlewareType<T>>\n : Type extends { [P in any]: any }\n ? {\n [Property in keyof Type]:\n Property extends BigIntPropertyNames\n ? PreserveOptional<bigint, Type[Property]>\n : Property extends NumberPropertyNames\n ? PreserveOptional<number, Type[Property]>\n : Property extends 'txHash'\n ? PreserveOptional<Encoded.TxHash, Type[Property]>\n : Property extends 'bytecode'\n ? PreserveOptional<Encoded.ContractBytearray, Type[Property]>\n : TransformMiddlewareType<Type[Property]>\n }\n : Type;\ntype MiddlewareTransformedApi = new (...args: ConstructorParameters<typeof MiddlewareApi>) => {\n [Name in keyof InstanceType<typeof MiddlewareApi>]:\n Name extends 'pipeline' | 'sendRequest' | 'sendOperationRequest'\n ? MiddlewareApi[Name] : TransformMiddlewareType<MiddlewareApi[Name]>\n};\n\nexport interface MiddlewareInfo {\n url: string;\n nodeNetworkId: string;\n version: string;\n consensusProtocolVersion: ConsensusProtocolVersion;\n}\n\nexport default class Middleware\n extends (MiddlewareTransformed as unknown as MiddlewareTransformedApi) {\n /**\n * @param url - Url for middleware API\n * @param options - Options\n * @param options.ignoreVersion - Don't check node version\n * @param options.retryCount - Amount of extra requests to do in case of failure\n * @param options.retryOverallDelay - Time in ms to wait between all retries\n */\n constructor(\n url: string,\n {\n ignoreVersion = false, retryCount = 3, retryOverallDelay = 800, ...options\n }: MiddlewareOptionalParams & {\n ignoreVersion?: boolean;\n retryCount?: number;\n retryOverallDelay?: number;\n } = {},\n ) {\n // eslint-disable-next-line constructor-super\n super(url, {\n allowInsecureConnection: true,\n additionalPolicies: [\n genRequestQueuesPolicy(),\n genCombineGetRequestsPolicy(),\n genRetryOnFailurePolicy(retryCount, retryOverallDelay),\n genErrorFormatterPolicy((body: ErrorResponse) => ` ${body.error}`),\n ],\n ...options,\n });\n if (!ignoreVersion) {\n const statusPromise = this.getStatus();\n const versionPromise = statusPromise.then(({ mdwVersion }) => mdwVersion, (error) => error);\n this.pipeline.addPolicy(\n genVersionCheckPolicy('middleware', '/v2/status', versionPromise, '1.47.0', '2.0.0'),\n );\n }\n }\n}\n"],"mappings":"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"}
@@ -7,12 +7,12 @@ function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(
7
7
  /* eslint-disable max-classes-per-file */
8
8
  import WebSocket from 'isomorphic-ws';
9
9
  import { BaseError, UnexpectedTsError, InternalError } from "./utils/errors.mjs";
10
- var Source;
11
- (function (Source) {
10
+ var Source = /*#__PURE__*/function (Source) {
12
11
  Source["Middleware"] = "mdw";
13
12
  Source["Node"] = "node";
14
13
  Source["All"] = "all";
15
- })(Source || (Source = {}));
14
+ return Source;
15
+ }(Source || {});
16
16
  export class MiddlewareSubscriberError extends BaseError {
17
17
  constructor(message) {
18
18
  super(message);