@aeternity/aepp-sdk 12.0.0 → 12.1.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 (283) hide show
  1. package/dist/aepp-sdk.browser-script.js +1 -1
  2. package/dist/aepp-sdk.browser-script.js.LICENSE.txt +0 -15
  3. package/dist/aepp-sdk.browser-script.js.map +1 -1
  4. package/dist/aepp-sdk.browser.js +2 -1
  5. package/dist/aepp-sdk.browser.js.LICENSE.txt +1 -0
  6. package/dist/aepp-sdk.browser.js.map +1 -1
  7. package/dist/aepp-sdk.js +20764 -1
  8. package/dist/aepp-sdk.js.map +1 -1
  9. package/es/AeSdk.d.ts +7 -7
  10. package/es/AeSdk.mjs.map +1 -1
  11. package/es/AeSdkAepp.d.ts +4 -3
  12. package/es/AeSdkAepp.mjs +2 -1
  13. package/es/AeSdkAepp.mjs.map +1 -1
  14. package/es/AeSdkBase.d.ts +22 -21
  15. package/es/AeSdkBase.mjs +25 -21
  16. package/es/AeSdkBase.mjs.map +1 -1
  17. package/es/AeSdkWallet.d.ts +4 -3
  18. package/es/AeSdkWallet.mjs +5 -1
  19. package/es/AeSdkWallet.mjs.map +1 -1
  20. package/es/Node.d.ts +7 -10
  21. package/es/Node.mjs +63 -57
  22. package/es/Node.mjs.map +1 -1
  23. package/es/account/Base.d.ts +7 -4
  24. package/es/account/Base.mjs +3 -3
  25. package/es/account/Base.mjs.map +1 -1
  26. package/es/account/Memory.d.ts +5 -4
  27. package/es/account/Memory.mjs +24 -2
  28. package/es/account/Memory.mjs.map +1 -1
  29. package/es/account/Rpc.d.ts +6 -6
  30. package/es/account/Rpc.mjs +3 -2
  31. package/es/account/Rpc.mjs.map +1 -1
  32. package/es/aens.d.ts +27 -14
  33. package/es/aens.mjs +27 -21
  34. package/es/aens.mjs.map +1 -1
  35. package/es/aepp-wallet-communication/connection/Browser.d.ts +2 -1
  36. package/es/aepp-wallet-communication/connection/Browser.mjs +5 -2
  37. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -1
  38. package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +1 -0
  39. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +1 -0
  40. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -1
  41. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +1 -0
  42. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +5 -1
  43. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -1
  44. package/es/aepp-wallet-communication/connection-proxy.d.ts +1 -0
  45. package/es/aepp-wallet-communication/connection-proxy.mjs +1 -0
  46. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -1
  47. package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +1 -0
  48. package/es/aepp-wallet-communication/rpc/RpcClient.mjs +5 -5
  49. package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -1
  50. package/es/aepp-wallet-communication/rpc/types.d.ts +8 -8
  51. package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -1
  52. package/es/aepp-wallet-communication/schema.d.ts +17 -2
  53. package/es/aepp-wallet-communication/schema.mjs +54 -17
  54. package/es/aepp-wallet-communication/schema.mjs.map +1 -1
  55. package/es/aepp-wallet-communication/wallet-detector.d.ts +2 -1
  56. package/es/aepp-wallet-communication/wallet-detector.mjs +2 -3
  57. package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -1
  58. package/es/apis/node/models/index.d.ts +6 -2
  59. package/es/apis/node/models/index.mjs.map +1 -1
  60. package/es/apis/node/models/mappers.mjs +4 -2
  61. package/es/apis/node/models/mappers.mjs.map +1 -1
  62. package/es/chain.d.ts +92 -64
  63. package/es/chain.mjs +190 -154
  64. package/es/chain.mjs.map +1 -1
  65. package/es/channel/handlers.d.ts +3 -3
  66. package/es/channel/handlers.mjs +42 -44
  67. package/es/channel/handlers.mjs.map +1 -1
  68. package/es/channel/index.d.ts +43 -52
  69. package/es/channel/index.mjs +46 -49
  70. package/es/channel/index.mjs.map +1 -1
  71. package/es/channel/internal.d.ts +16 -15
  72. package/es/channel/internal.mjs +67 -62
  73. package/es/channel/internal.mjs.map +1 -1
  74. package/es/contract/Compiler.d.ts +1 -0
  75. package/es/contract/Compiler.mjs +5 -4
  76. package/es/contract/Compiler.mjs.map +1 -1
  77. package/es/contract/aci.d.ts +17 -15
  78. package/es/contract/aci.mjs +58 -45
  79. package/es/contract/aci.mjs.map +1 -1
  80. package/es/contract/ga.d.ts +16 -15
  81. package/es/contract/ga.mjs +12 -7
  82. package/es/contract/ga.mjs.map +1 -1
  83. package/es/contract/methods.d.ts +9 -6
  84. package/es/contract/methods.mjs +9 -6
  85. package/es/contract/methods.mjs.map +1 -1
  86. package/es/deprecated/index.d.ts +143 -0
  87. package/es/deprecated/index.mjs +162 -0
  88. package/es/deprecated/index.mjs.map +1 -0
  89. package/es/deprecated/methods.d.ts +18 -0
  90. package/es/deprecated/methods.mjs +26 -0
  91. package/es/deprecated/methods.mjs.map +1 -0
  92. package/es/index.d.ts +4 -1
  93. package/es/index.mjs +4 -1
  94. package/es/index.mjs.map +1 -1
  95. package/es/oracle.d.ts +69 -62
  96. package/es/oracle.mjs +121 -103
  97. package/es/oracle.mjs.map +1 -1
  98. package/es/spend.d.ts +16 -15
  99. package/es/spend.mjs +19 -30
  100. package/es/spend.mjs.map +1 -1
  101. package/es/tx/builder/address.d.ts +25 -0
  102. package/es/tx/builder/address.mjs +45 -0
  103. package/es/tx/builder/address.mjs.map +1 -0
  104. package/es/tx/builder/constants.d.ts +55 -26
  105. package/es/tx/builder/constants.mjs +60 -38
  106. package/es/tx/builder/constants.mjs.map +1 -1
  107. package/es/tx/builder/field-types/coin-amount.d.ts +13 -0
  108. package/es/tx/builder/field-types/coin-amount.mjs +26 -0
  109. package/es/tx/builder/field-types/coin-amount.mjs.map +1 -0
  110. package/es/tx/builder/field-types/deposit.d.ts +15 -0
  111. package/es/tx/builder/field-types/deposit.mjs +19 -0
  112. package/es/tx/builder/field-types/deposit.mjs.map +1 -0
  113. package/es/tx/builder/field-types/fee.d.ts +25 -0
  114. package/es/tx/{min-fee.mjs → builder/field-types/fee.mjs} +62 -60
  115. package/es/tx/builder/field-types/fee.mjs.map +1 -0
  116. package/es/tx/builder/field-types/field.d.ts +6 -0
  117. package/es/tx/builder/field-types/field.mjs +15 -0
  118. package/es/tx/builder/field-types/field.mjs.map +1 -0
  119. package/es/tx/builder/field-types/gas-limit.d.ts +12 -0
  120. package/es/tx/builder/field-types/gas-limit.mjs +33 -0
  121. package/es/tx/builder/field-types/gas-limit.mjs.map +1 -0
  122. package/es/tx/builder/field-types/gas-price.d.ts +8 -0
  123. package/es/tx/builder/field-types/gas-price.mjs +18 -0
  124. package/es/tx/builder/field-types/gas-price.mjs.map +1 -0
  125. package/es/tx/builder/field-types/index.d.ts +70 -0
  126. package/es/tx/builder/field-types/index.mjs +25 -0
  127. package/es/tx/builder/field-types/index.mjs.map +1 -0
  128. package/es/tx/builder/field-types/name-fee.d.ts +20 -0
  129. package/es/tx/builder/field-types/name-fee.mjs +24 -0
  130. package/es/tx/builder/field-types/name-fee.mjs.map +1 -0
  131. package/es/tx/builder/field-types/name-id.d.ts +14 -0
  132. package/es/tx/builder/field-types/name-id.mjs +19 -0
  133. package/es/tx/builder/field-types/name-id.mjs.map +1 -0
  134. package/es/tx/builder/field-types/name.d.ts +13 -0
  135. package/es/tx/builder/field-types/name.mjs +18 -0
  136. package/es/tx/builder/field-types/name.mjs.map +1 -0
  137. package/es/tx/builder/field-types/short-u-int.d.ts +6 -0
  138. package/es/tx/builder/field-types/short-u-int.mjs +12 -0
  139. package/es/tx/builder/field-types/short-u-int.mjs.map +1 -0
  140. package/es/tx/builder/field-types/u-int.d.ts +8 -0
  141. package/es/tx/builder/field-types/u-int.mjs +14 -0
  142. package/es/tx/builder/field-types/u-int.mjs.map +1 -0
  143. package/es/tx/builder/helpers.d.ts +27 -33
  144. package/es/tx/builder/helpers.mjs +41 -47
  145. package/es/tx/builder/helpers.mjs.map +1 -1
  146. package/es/tx/builder/index.d.ts +25 -12
  147. package/es/tx/builder/index.mjs +74 -83
  148. package/es/tx/builder/index.mjs.map +1 -1
  149. package/es/tx/builder/schema.d.ts +995 -144
  150. package/es/tx/builder/schema.mjs +121 -170
  151. package/es/tx/builder/schema.mjs.map +1 -1
  152. package/es/tx/index.d.ts +28 -27
  153. package/es/tx/index.mjs +97 -117
  154. package/es/tx/index.mjs.map +1 -1
  155. package/es/tx/validator.d.ts +4 -3
  156. package/es/tx/validator.mjs +79 -92
  157. package/es/tx/validator.mjs.map +1 -1
  158. package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +1 -1
  159. package/es/typings/@aeternity__uuid/index.d.mjs.map +1 -1
  160. package/es/typings/bip32-path/index.d.mjs.map +1 -1
  161. package/es/typings/blakejs/index.d.mjs.map +1 -1
  162. package/es/typings/sha-js/index.d.mjs +2 -0
  163. package/es/typings/sha-js/index.d.mjs.map +1 -0
  164. package/es/typings/tweetnacl-auth/index.d.mjs.map +1 -1
  165. package/es/utils/amount-formatter.d.ts +9 -9
  166. package/es/utils/amount-formatter.mjs +17 -17
  167. package/es/utils/amount-formatter.mjs.map +1 -1
  168. package/es/utils/autorest.mjs +7 -7
  169. package/es/utils/autorest.mjs.map +1 -1
  170. package/es/utils/bignumber.mjs +2 -1
  171. package/es/utils/bignumber.mjs.map +1 -1
  172. package/es/utils/bytes.mjs +1 -1
  173. package/es/utils/bytes.mjs.map +1 -1
  174. package/es/utils/crypto.d.ts +8 -23
  175. package/es/utils/crypto.mjs +15 -41
  176. package/es/utils/crypto.mjs.map +1 -1
  177. package/es/utils/encoder-types.d.ts +61 -0
  178. package/es/utils/encoder-types.mjs +36 -0
  179. package/es/utils/encoder-types.mjs.map +1 -0
  180. package/es/utils/encoder.d.ts +6 -7
  181. package/es/utils/encoder.mjs +42 -26
  182. package/es/utils/encoder.mjs.map +1 -1
  183. package/es/utils/errors.d.ts +1 -11
  184. package/es/utils/errors.mjs +4 -20
  185. package/es/utils/errors.mjs.map +1 -1
  186. package/es/utils/hd-wallet.d.ts +18 -2
  187. package/es/utils/hd-wallet.mjs +64 -34
  188. package/es/utils/hd-wallet.mjs.map +1 -1
  189. package/es/utils/json-big.mjs +2 -2
  190. package/es/utils/json-big.mjs.map +1 -1
  191. package/es/utils/keystore.mjs +4 -2
  192. package/es/utils/keystore.mjs.map +1 -1
  193. package/es/utils/mptree.d.ts +2 -2
  194. package/es/utils/mptree.mjs +11 -6
  195. package/es/utils/mptree.mjs.map +1 -1
  196. package/es/utils/other.d.ts +8 -2
  197. package/es/utils/other.mjs +15 -3
  198. package/es/utils/other.mjs.map +1 -1
  199. package/es/utils/semver-satisfies.d.ts +1 -1
  200. package/es/utils/semver-satisfies.mjs +2 -2
  201. package/es/utils/semver-satisfies.mjs.map +1 -1
  202. package/es/utils/string.mjs.map +1 -1
  203. package/package.json +35 -33
  204. package/src/AeSdk.ts +30 -27
  205. package/src/AeSdkAepp.ts +93 -84
  206. package/src/AeSdkBase.ts +148 -130
  207. package/src/AeSdkWallet.ts +172 -156
  208. package/src/Node.ts +108 -102
  209. package/src/account/Base.ts +42 -32
  210. package/src/account/Memory.ts +45 -30
  211. package/src/account/Rpc.ts +32 -30
  212. package/src/aens.ts +124 -108
  213. package/src/aepp-wallet-communication/connection/Browser.ts +18 -15
  214. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +22 -21
  215. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +63 -52
  216. package/src/aepp-wallet-communication/connection-proxy.ts +8 -7
  217. package/src/aepp-wallet-communication/rpc/RpcClient.ts +67 -61
  218. package/src/aepp-wallet-communication/rpc/types.ts +32 -32
  219. package/src/aepp-wallet-communication/schema.ts +117 -74
  220. package/src/aepp-wallet-communication/wallet-detector.ts +29 -28
  221. package/src/apis/node/code-model-v4.yaml +54 -20
  222. package/src/apis/node/models/index.ts +6 -2
  223. package/src/apis/node/models/mappers.ts +4 -2
  224. package/src/chain.ts +286 -228
  225. package/src/channel/handlers.ts +424 -372
  226. package/src/channel/index.ts +285 -251
  227. package/src/channel/internal.ts +248 -232
  228. package/src/contract/Compiler.ts +22 -21
  229. package/src/contract/aci.ts +267 -258
  230. package/src/contract/ga.ts +93 -72
  231. package/src/contract/methods.ts +32 -27
  232. package/src/deprecated/index.ts +170 -0
  233. package/src/deprecated/methods.ts +25 -0
  234. package/src/index.ts +37 -32
  235. package/src/oracle.ts +211 -189
  236. package/src/spend.ts +82 -70
  237. package/src/tx/builder/address.ts +50 -0
  238. package/src/tx/builder/constants.ts +82 -52
  239. package/src/tx/builder/field-types/coin-amount.ts +27 -0
  240. package/src/tx/builder/field-types/deposit.ts +21 -0
  241. package/src/tx/builder/field-types/fee.ts +143 -0
  242. package/src/tx/builder/field-types/field.ts +9 -0
  243. package/src/tx/builder/field-types/gas-limit.ts +41 -0
  244. package/src/tx/builder/field-types/gas-price.ts +16 -0
  245. package/src/tx/builder/field-types/index.ts +45 -0
  246. package/src/tx/builder/field-types/name-fee.ts +32 -0
  247. package/src/tx/builder/field-types/name-id.ts +20 -0
  248. package/src/tx/builder/field-types/name.ts +18 -0
  249. package/src/tx/builder/field-types/short-u-int.ts +11 -0
  250. package/src/tx/builder/field-types/u-int.ts +16 -0
  251. package/src/tx/builder/helpers.ts +112 -117
  252. package/src/tx/builder/index.ts +203 -197
  253. package/src/tx/builder/schema.ts +421 -465
  254. package/src/tx/index.ts +128 -135
  255. package/src/tx/validator.ts +165 -161
  256. package/src/typings/@aeternity__argon2-browser/index.d.ts +1 -1
  257. package/src/typings/@aeternity__uuid/index.d.ts +3 -1
  258. package/src/typings/bip32-path/index.d.ts +6 -6
  259. package/src/typings/blakejs/index.d.ts +4 -32
  260. package/src/typings/sha-js/index.d.ts +5 -0
  261. package/src/typings/tweetnacl-auth/index.d.ts +2 -2
  262. package/src/utils/amount-formatter.ts +41 -41
  263. package/src/utils/autorest.ts +57 -54
  264. package/src/utils/bignumber.ts +7 -6
  265. package/src/utils/bytes.ts +19 -19
  266. package/src/utils/crypto.ts +82 -94
  267. package/src/utils/encoder-types.ts +63 -0
  268. package/src/utils/encoder.ts +104 -56
  269. package/src/utils/errors.ts +246 -264
  270. package/src/utils/hd-wallet.ts +114 -82
  271. package/src/utils/json-big.ts +16 -15
  272. package/src/utils/keystore.ts +65 -62
  273. package/src/utils/mptree.ts +59 -56
  274. package/src/utils/other.ts +26 -18
  275. package/src/utils/semver-satisfies.ts +15 -11
  276. package/src/utils/string.ts +10 -10
  277. package/es/tx/builder/field-types.d.ts +0 -62
  278. package/es/tx/builder/field-types.mjs +0 -126
  279. package/es/tx/builder/field-types.mjs.map +0 -1
  280. package/es/tx/min-fee.d.ts +0 -20
  281. package/es/tx/min-fee.mjs.map +0 -1
  282. package/src/tx/builder/field-types.ts +0 -111
  283. package/src/tx/min-fee.ts +0 -136
@@ -23,9 +23,10 @@ export default class AccountRpc extends AccountBase {
23
23
  super(options);
24
24
  this._rpcClient = rpcClient;
25
25
  this._address = address;
26
- }
26
+ } // eslint-disable-next-line class-methods-use-this
27
+
27
28
 
28
- async sign(data, options) {
29
+ async sign() {
29
30
  throw new NotImplementedError('RAW signing using wallet');
30
31
  }
31
32
 
@@ -1 +1 @@
1
- {"version":3,"file":"Rpc.mjs","names":["AccountBase","METHODS","NotImplementedError","AccountRpc","constructor","rpcClient","address","options","_rpcClient","_address","sign","data","signTransaction","tx","innerTx","networkId","res","request","onAccount","returnSigned","signedTransaction","signMessage","message","returnHex","signature","from"],"sources":["../../src/account/Rpc.ts"],"sourcesContent":["import AccountBase from './Base'\nimport { METHODS } from '../aepp-wallet-communication/schema'\nimport { NotImplementedError } from '../utils/errors'\nimport { EncodedData } from '../utils/encoder'\n\n/**\n * Account provided by wallet\n * @param params - Params\n * @param params.rpcClient - RpcClient instance\n * @param params.address - RPC account address\n * @returns AccountRpc instance\n */\nexport default class AccountRpc extends AccountBase {\n _rpcClient: any\n _address: EncodedData<'ak'>\n\n constructor (\n { rpcClient, address, ...options }:\n { rpcClient: any, address: EncodedData<'ak'> } & ConstructorParameters<typeof AccountBase>[0]\n ) {\n super(options)\n this._rpcClient = rpcClient\n this._address = address\n }\n\n async sign (data: string | Uint8Array, options?: any): Promise<Uint8Array> {\n throw new NotImplementedError('RAW signing using wallet')\n }\n\n async address (): Promise<EncodedData<'ak'>> {\n return this._address\n }\n\n /**\n * @returns Signed transaction\n */\n async signTransaction (\n tx: EncodedData<'tx'>,\n { innerTx, networkId }: Parameters<AccountBase['signTransaction']>[1] = {}\n ): Promise<EncodedData<'tx'>> {\n if (innerTx != null) throw new NotImplementedError('innerTx option in AccountRpc')\n const res = await this._rpcClient.request(METHODS.sign, {\n onAccount: this._address,\n tx,\n returnSigned: true,\n /**\n * @deprecated Wallet provided networkId will be used (current network)\n * required to maintain backward compatibility with wallets using SDK v11.0.1 and below\n * @see {@link https://github.com/aeternity/aepp-sdk-js/commit/153fd89a52c4eab39fcd659b356b36d32129c1ba}\n */\n networkId\n })\n return res.signedTransaction\n }\n\n /**\n * @returns Signed message\n */\n async signMessage (\n message: string, { returnHex = false }: Parameters<AccountBase['signMessage']>[1] = {}\n ): Promise<string | Uint8Array> {\n const { signature } = await this._rpcClient.request(\n METHODS.signMessage, { onAccount: this._address, message }\n )\n return returnHex ? signature : Buffer.from(signature, 'hex')\n }\n}\n"],"mappings":";;;;OAAOA,W;SACEC,O;SACAC,mB;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAMC,UAAN,SAAyBH,WAAzB,CAAqC;EAIlDI,WAAW,OAGT;IAAA,IAFA;MAAEC,SAAF;MAAaC,OAAb;MAAsB,GAAGC;IAAzB,CAEA;IACA,MAAMA,OAAN;IACA,KAAKC,UAAL,GAAkBH,SAAlB;IACA,KAAKI,QAAL,GAAgBH,OAAhB;EACD;;EAES,MAAJI,IAAI,CAAEC,IAAF,EAA6BJ,OAA7B,EAAiE;IACzE,MAAM,IAAIL,mBAAJ,CAAwB,0BAAxB,CAAN;EACD;;EAEY,MAAPI,OAAO,GAAgC;IAC3C,OAAO,KAAKG,QAAZ;EACD;EAED;AACF;AACA;;;EACuB,MAAfG,eAAe,CACnBC,EADmB,EAGS;IAAA,IAD5B;MAAEC,OAAF;MAAWC;IAAX,CAC4B,uEAD4C,EAC5C;IAC5B,IAAID,OAAO,IAAI,IAAf,EAAqB,MAAM,IAAIZ,mBAAJ,CAAwB,8BAAxB,CAAN;IACrB,MAAMc,GAAG,GAAG,MAAM,KAAKR,UAAL,CAAgBS,OAAhB,CAAwBhB,OAAO,CAACS,IAAhC,EAAsC;MACtDQ,SAAS,EAAE,KAAKT,QADsC;MAEtDI,EAFsD;MAGtDM,YAAY,EAAE,IAHwC;;MAItD;AACN;AACA;AACA;AACA;MACMJ;IATsD,CAAtC,CAAlB;IAWA,OAAOC,GAAG,CAACI,iBAAX;EACD;EAED;AACF;AACA;;;EACmB,MAAXC,WAAW,CACfC,OADe,EAEe;IAAA,IADb;MAAEC,SAAS,GAAG;IAAd,CACa,uEADsD,EACtD;IAC9B,MAAM;MAAEC;IAAF,IAAgB,MAAM,KAAKhB,UAAL,CAAgBS,OAAhB,CAC1BhB,OAAO,CAACoB,WADkB,EACL;MAAEH,SAAS,EAAE,KAAKT,QAAlB;MAA4Ba;IAA5B,CADK,CAA5B;IAGA,OAAOC,SAAS,GAAGC,SAAH,GAAe,QAAOC,IAAP,CAAYD,SAAZ,EAAuB,KAAvB,CAA/B;EACD;;AArDiD"}
1
+ {"version":3,"file":"Rpc.mjs","names":["AccountBase","METHODS","NotImplementedError","AccountRpc","constructor","rpcClient","address","options","_rpcClient","_address","sign","signTransaction","tx","innerTx","networkId","res","request","onAccount","returnSigned","signedTransaction","signMessage","message","returnHex","signature","from"],"sources":["../../src/account/Rpc.ts"],"sourcesContent":["import AccountBase from './Base';\nimport { METHODS } from '../aepp-wallet-communication/schema';\nimport { NotImplementedError } from '../utils/errors';\nimport { Encoded } from '../utils/encoder';\n\n/**\n * Account provided by wallet\n * @param params - Params\n * @param params.rpcClient - RpcClient instance\n * @param params.address - RPC account address\n * @returns AccountRpc instance\n */\nexport default class AccountRpc extends AccountBase {\n _rpcClient: any;\n\n _address: Encoded.AccountAddress;\n\n constructor(\n { rpcClient, address, ...options }: { rpcClient: any; address: Encoded.AccountAddress }\n & ConstructorParameters<typeof AccountBase>[0],\n ) {\n super(options);\n this._rpcClient = rpcClient;\n this._address = address;\n }\n\n // eslint-disable-next-line class-methods-use-this\n async sign(): Promise<Uint8Array> {\n throw new NotImplementedError('RAW signing using wallet');\n }\n\n async address(): Promise<Encoded.AccountAddress> {\n return this._address;\n }\n\n /**\n * @returns Signed transaction\n */\n async signTransaction(\n tx: Encoded.Transaction,\n { innerTx, networkId }: Parameters<AccountBase['signTransaction']>[1] = {},\n ): Promise<Encoded.Transaction> {\n if (innerTx != null) throw new NotImplementedError('innerTx option in AccountRpc');\n const res = await this._rpcClient.request(METHODS.sign, {\n onAccount: this._address,\n tx,\n returnSigned: true,\n /**\n * @deprecated Wallet provided networkId will be used (current network)\n * required to maintain backward compatibility with wallets using SDK v11.0.1 and below\n * @see {@link https://github.com/aeternity/aepp-sdk-js/commit/153fd89a52c4eab39fcd659b356b36d32129c1ba}\n */\n networkId,\n });\n return res.signedTransaction;\n }\n\n /**\n * @returns Signed message\n */\n async signMessage(\n message: string,\n { returnHex = false }: Parameters<AccountBase['signMessage']>[1] = {},\n ): Promise<string | Uint8Array> {\n const { signature } = await this._rpcClient\n .request(METHODS.signMessage, { onAccount: this._address, message });\n return returnHex ? signature : Buffer.from(signature, 'hex');\n }\n}\n"],"mappings":";;;;OAAOA,W;SACEC,O;SACAC,mB;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAMC,UAAN,SAAyBH,WAAzB,CAAqC;EAKlDI,WAAW,OAGT;IAAA,IAFA;MAAEC,SAAF;MAAaC,OAAb;MAAsB,GAAGC;IAAzB,CAEA;IACA,MAAMA,OAAN;IACA,KAAKC,UAAL,GAAkBH,SAAlB;IACA,KAAKI,QAAL,GAAgBH,OAAhB;EACD,CAZiD,CAclD;;;EACU,MAAJI,IAAI,GAAwB;IAChC,MAAM,IAAIR,mBAAJ,CAAwB,0BAAxB,CAAN;EACD;;EAEY,MAAPI,OAAO,GAAoC;IAC/C,OAAO,KAAKG,QAAZ;EACD;EAED;AACF;AACA;;;EACuB,MAAfE,eAAe,CACnBC,EADmB,EAGW;IAAA,IAD9B;MAAEC,OAAF;MAAWC;IAAX,CAC8B,uEAD0C,EAC1C;IAC9B,IAAID,OAAO,IAAI,IAAf,EAAqB,MAAM,IAAIX,mBAAJ,CAAwB,8BAAxB,CAAN;IACrB,MAAMa,GAAG,GAAG,MAAM,KAAKP,UAAL,CAAgBQ,OAAhB,CAAwBf,OAAO,CAACS,IAAhC,EAAsC;MACtDO,SAAS,EAAE,KAAKR,QADsC;MAEtDG,EAFsD;MAGtDM,YAAY,EAAE,IAHwC;;MAItD;AACN;AACA;AACA;AACA;MACMJ;IATsD,CAAtC,CAAlB;IAWA,OAAOC,GAAG,CAACI,iBAAX;EACD;EAED;AACF;AACA;;;EACmB,MAAXC,WAAW,CACfC,OADe,EAGe;IAAA,IAD9B;MAAEC,SAAS,GAAG;IAAd,CAC8B,uEADqC,EACrC;IAC9B,MAAM;MAAEC;IAAF,IAAgB,MAAM,KAAKf,UAAL,CACzBQ,OADyB,CACjBf,OAAO,CAACmB,WADS,EACI;MAAEH,SAAS,EAAE,KAAKR,QAAlB;MAA4BY;IAA5B,CADJ,CAA5B;IAEA,OAAOC,SAAS,GAAGC,SAAH,GAAe,QAAOC,IAAP,CAAYD,SAAZ,EAAuB,KAAvB,CAA/B;EACD;;AAvDiD"}
package/es/aens.d.ts CHANGED
@@ -1,19 +1,26 @@
1
1
  /// <reference types="node" />
2
- import { Pointer } from './tx/builder/helpers';
3
- import { TX_TYPE, AensName } from './tx/builder/schema';
4
- import { EncodedData } from './utils/encoder';
2
+ /**
3
+ * Aens methods - routines to interact with the æternity naming system
4
+ *
5
+ * The high-level description of the naming system is
6
+ * https://github.com/aeternity/protocol/blob/master/AENS.md in the protocol
7
+ * repository.
8
+ */
5
9
  import BigNumber from 'bignumber.js';
10
+ import { Tag, AensName } from './tx/builder/constants';
11
+ import { Encoded } from './utils/encoder';
6
12
  import { send, SendOptions } from './spend';
7
13
  import { getName } from './chain';
8
14
  import { BuildTxOptions } from './tx';
9
15
  import { TransformNodeType } from './Node';
10
- import { NameEntry } from './apis/node';
16
+ import { NameEntry, NamePointer } from './apis/node';
11
17
  import AccountBase from './account/Base';
12
18
  interface KeyPointers {
13
19
  [key: string]: string | Buffer;
14
20
  }
15
21
  /**
16
22
  * Revoke a name
23
+ * @category AENS
17
24
  * @param name - Name hash
18
25
  * @param options - Options
19
26
  * @param options.onAccount - Make operation on specific account from sdk (you pass
@@ -33,10 +40,11 @@ interface KeyPointers {
33
40
  * ```
34
41
  */
35
42
  export declare function aensRevoke(name: AensName, options: AensRevokeOptions): ReturnType<typeof send>;
36
- interface AensRevokeOptions extends BuildTxOptions<TX_TYPE.nameRevoke, 'nameId' | 'accountId'>, SendOptions {
43
+ interface AensRevokeOptions extends BuildTxOptions<Tag.NameRevokeTx, 'nameId' | 'accountId'>, SendOptions {
37
44
  }
38
45
  /**
39
46
  * Update a name
47
+ * @category AENS
40
48
  * @param name - AENS name
41
49
  * @param pointers - Map of pointer keys to corresponding addresses
42
50
  * @param options - Options
@@ -64,13 +72,14 @@ interface AensRevokeOptions extends BuildTxOptions<TX_TYPE.nameRevoke, 'nameId'
64
72
  * ```
65
73
  */
66
74
  export declare function aensUpdate(name: AensName, pointers: KeyPointers, { extendPointers, ...options }: AensUpdateOptions): ReturnType<typeof send>;
67
- interface AensUpdateOptions extends BuildTxOptions<TX_TYPE.nameUpdate, 'nameId' | 'accountId' | 'pointers' | 'clientTtl' | 'nameTtl'>, SendOptions {
75
+ interface AensUpdateOptions extends BuildTxOptions<Tag.NameUpdateTx, 'nameId' | 'accountId' | 'pointers' | 'clientTtl' | 'nameTtl'>, SendOptions {
68
76
  extendPointers?: boolean;
69
77
  clientTtl?: number;
70
78
  nameTtl?: number;
71
79
  }
72
80
  /**
73
81
  * Transfer a domain to another account
82
+ * @category AENS
74
83
  * @param name - AENS name
75
84
  * @param account - Recipient account publick key
76
85
  * @param options - Options
@@ -91,12 +100,13 @@ interface AensUpdateOptions extends BuildTxOptions<TX_TYPE.nameUpdate, 'nameId'
91
100
  * await nameObject.transfer(recipientPub, { ttl, fee, nonce })
92
101
  * ```
93
102
  */
94
- export declare function aensTransfer(name: AensName, account: EncodedData<'ak'>, options: AensTransferOptions): ReturnType<typeof send>;
95
- interface AensTransferOptions extends BuildTxOptions<TX_TYPE.nameTransfer, 'nameId' | 'accountId' | 'recipientId'>, SendOptions {
103
+ export declare function aensTransfer(name: AensName, account: Encoded.AccountAddress, options: AensTransferOptions): ReturnType<typeof send>;
104
+ interface AensTransferOptions extends BuildTxOptions<Tag.NameTransferTx, 'nameId' | 'accountId' | 'recipientId'>, SendOptions {
96
105
  }
97
106
  /**
98
107
  * Query the AENS name info from the node
99
108
  * and return the object with info and predefined functions for manipulating name
109
+ * @category AENS
100
110
  * @param name - AENS name
101
111
  * @param opt - Options
102
112
  * @returns
@@ -115,14 +125,14 @@ interface AensTransferOptions extends BuildTxOptions<TX_TYPE.nameTransfer, 'name
115
125
  * ```
116
126
  */
117
127
  export declare function aensQuery(name: AensName, opt: Parameters<typeof getName>[1] & Parameters<typeof aensUpdate>[2] & Parameters<typeof aensTransfer>[2]): Promise<Readonly<TransformNodeType<NameEntry> & {
118
- id: EncodedData<'nm'>;
119
- owner: EncodedData<'ak'>;
120
- pointers: KeyPointers | Pointer[];
128
+ id: Encoded.Name;
129
+ owner: Encoded.AccountAddress;
130
+ pointers: KeyPointers | NamePointer[];
121
131
  ttl: number;
122
132
  update: (pointers: KeyPointers, options?: Omit<Parameters<typeof aensQuery>[1], 'onNode' | 'onCompiler' | 'onAccount'> & {
123
133
  onAccount?: AccountBase;
124
134
  }) => ReturnType<typeof aensUpdate> & ReturnType<typeof aensQuery>;
125
- transfer: (account: EncodedData<'ak'>, options?: Parameters<typeof aensQuery>[1]) => ReturnType<typeof aensUpdate> & ReturnType<typeof aensQuery>;
135
+ transfer: (account: Encoded.AccountAddress, options?: Parameters<typeof aensQuery>[1]) => ReturnType<typeof aensUpdate> & ReturnType<typeof aensQuery>;
126
136
  revoke: (options?: Omit<Parameters<typeof aensRevoke>[1], 'onNode' | 'onCompiler' | 'onAccount'> & {
127
137
  onAccount?: AccountBase;
128
138
  }) => ReturnType<typeof aensRevoke>;
@@ -131,6 +141,7 @@ export declare function aensQuery(name: AensName, opt: Parameters<typeof getName
131
141
  /**
132
142
  * Claim a previously preclaimed registration. This can only be done after the
133
143
  * preclaim step
144
+ * @category AENS
134
145
  * @param name - AENS name
135
146
  * @param salt - Salt from pre-claim, or 0 if it's a bid
136
147
  * @param options - options
@@ -150,13 +161,14 @@ export declare function aensQuery(name: AensName, opt: Parameters<typeof getName
150
161
  * ```
151
162
  */
152
163
  export declare function aensClaim(name: AensName, salt: number, options: AensClaimOptions): Promise<AensClaimReturnType>;
153
- declare type AensClaimOptionsType = BuildTxOptions<TX_TYPE.nameClaim, 'accountId' | 'nameSalt' | 'name'> & SendOptions & Parameters<typeof aensQuery>[1];
164
+ declare type AensClaimOptionsType = BuildTxOptions<Tag.NameClaimTx, 'accountId' | 'nameSalt' | 'name'> & SendOptions & Parameters<typeof aensQuery>[1];
154
165
  interface AensClaimOptions extends AensClaimOptionsType {
155
166
  }
156
167
  interface AensClaimReturnType extends Awaited<ReturnType<typeof send>>, Partial<Awaited<ReturnType<typeof aensQuery>>> {
157
168
  }
158
169
  /**
159
170
  * Preclaim a name. Sends a hash of the name and a random salt to the node
171
+ * @category AENS
160
172
  * @param name - AENS name
161
173
  * @param options - Options
162
174
  * @param options.onAccount - Make operation on specific account from sdk (you pass
@@ -184,10 +196,11 @@ export declare function aensPreclaim(name: AensName, options: AensPreclaimOption
184
196
  commitmentId: string;
185
197
  claim: (opts?: Parameters<typeof aensClaim>[2]) => ReturnType<typeof aensClaim>;
186
198
  }>>;
187
- interface AensPreclaimOptions extends BuildTxOptions<TX_TYPE.namePreClaim, 'accountId' | 'commitmentId'>, SendOptions, AensClaimOptions {
199
+ interface AensPreclaimOptions extends BuildTxOptions<Tag.NamePreclaimTx, 'accountId' | 'commitmentId'>, SendOptions, AensClaimOptions {
188
200
  }
189
201
  /**
190
202
  * Bid to name auction
203
+ * @category AENS
191
204
  * @param name - Domain name
192
205
  * @param nameFee - Name fee (bid fee)
193
206
  * @param options - Options
package/es/aens.mjs CHANGED
@@ -22,16 +22,17 @@
22
22
  * https://github.com/aeternity/protocol/blob/master/AENS.md in the protocol
23
23
  * repository.
24
24
  */
25
- import { salt } from "./utils/crypto.mjs";
25
+ import { genSalt } from "./utils/crypto.mjs";
26
26
  import { commitmentHash, isAuctionName } from "./tx/builder/helpers.mjs";
27
- import { CLIENT_TTL, NAME_TTL, TX_TYPE } from "./tx/builder/schema.mjs";
27
+ import { CLIENT_TTL, NAME_TTL, Tag } from "./tx/builder/constants.mjs";
28
28
  import { ArgumentError } from "./utils/errors.mjs";
29
29
  import { send } from "./spend.mjs";
30
- import { getName, height } from "./chain.mjs";
30
+ import { getName, getHeight } from "./chain.mjs";
31
31
  import { _buildTx } from "./tx/index.mjs";
32
32
 
33
33
  /**
34
34
  * Revoke a name
35
+ * @category AENS
35
36
  * @param name - Name hash
36
37
  * @param options - Options
37
38
  * @param options.onAccount - Make operation on specific account from sdk (you pass
@@ -51,15 +52,16 @@ import { _buildTx } from "./tx/index.mjs";
51
52
  * ```
52
53
  */
53
54
  export async function aensRevoke(name, options) {
54
- const nameRevokeTx = await _buildTx(TX_TYPE.nameRevoke, { ...options,
55
+ const nameRevokeTx = await _buildTx(Tag.NameRevokeTx, { ...options,
55
56
  nameId: name,
56
57
  accountId: await options.onAccount.address(options)
57
58
  });
58
- return await send(nameRevokeTx, options);
59
+ return send(nameRevokeTx, options);
59
60
  }
60
61
 
61
62
  /**
62
63
  * Update a name
64
+ * @category AENS
63
65
  * @param name - AENS name
64
66
  * @param pointers - Map of pointer keys to corresponding addresses
65
67
  * @param options - Options
@@ -100,7 +102,7 @@ export async function aensUpdate(name, pointers, _ref) {
100
102
  }))),
101
103
  ...pointers
102
104
  };
103
- const nameUpdateTx = await _buildTx(TX_TYPE.nameUpdate, {
105
+ const nameUpdateTx = await _buildTx(Tag.NameUpdateTx, {
104
106
  clientTtl: CLIENT_TTL,
105
107
  nameTtl: NAME_TTL,
106
108
  ...options,
@@ -114,11 +116,12 @@ export async function aensUpdate(name, pointers, _ref) {
114
116
  };
115
117
  })
116
118
  });
117
- return await send(nameUpdateTx, options);
119
+ return send(nameUpdateTx, options);
118
120
  }
119
121
 
120
122
  /**
121
123
  * Transfer a domain to another account
124
+ * @category AENS
122
125
  * @param name - AENS name
123
126
  * @param account - Recipient account publick key
124
127
  * @param options - Options
@@ -140,17 +143,18 @@ export async function aensUpdate(name, pointers, _ref) {
140
143
  * ```
141
144
  */
142
145
  export async function aensTransfer(name, account, options) {
143
- const nameTransferTx = await _buildTx(TX_TYPE.nameTransfer, { ...options,
146
+ const nameTransferTx = await _buildTx(Tag.NameTransferTx, { ...options,
144
147
  nameId: name,
145
148
  accountId: await options.onAccount.address(options),
146
149
  recipientId: account
147
150
  });
148
- return await send(nameTransferTx, options);
151
+ return send(nameTransferTx, options);
149
152
  }
150
153
 
151
154
  /**
152
155
  * Query the AENS name info from the node
153
156
  * and return the object with info and predefined functions for manipulating name
157
+ * @category AENS
154
158
  * @param name - AENS name
155
159
  * @param opt - Options
156
160
  * @returns
@@ -195,14 +199,14 @@ export async function aensQuery(name, opt) {
195
199
  },
196
200
 
197
201
  async revoke(options) {
198
- return await aensRevoke(name, { ...opt,
202
+ return aensRevoke(name, { ...opt,
199
203
  ...options
200
204
  });
201
205
  },
202
206
 
203
207
  async extendTtl() {
204
208
  let nameTtl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : NAME_TTL;
205
- let options = arguments.length > 1 ? arguments[1] : undefined;
209
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
206
210
 
207
211
  if (nameTtl > NAME_TTL || nameTtl <= 0) {
208
212
  throw new ArgumentError('nameTtl', `a number between 1 and ${NAME_TTL} blocks`, nameTtl);
@@ -224,6 +228,7 @@ export async function aensQuery(name, opt) {
224
228
  /**
225
229
  * Claim a previously preclaimed registration. This can only be done after the
226
230
  * preclaim step
231
+ * @category AENS
227
232
  * @param name - AENS name
228
233
  * @param salt - Salt from pre-claim, or 0 if it's a bid
229
234
  * @param options - options
@@ -244,7 +249,7 @@ export async function aensQuery(name, opt) {
244
249
  */
245
250
 
246
251
  export async function aensClaim(name, salt, options) {
247
- const claimTx = await _buildTx(TX_TYPE.nameClaim, { ...options,
252
+ const claimTx = await _buildTx(Tag.NameClaimTx, { ...options,
248
253
  accountId: await options.onAccount.address(options),
249
254
  nameSalt: salt,
250
255
  name
@@ -261,6 +266,7 @@ export async function aensClaim(name, salt, options) {
261
266
 
262
267
  /**
263
268
  * Preclaim a name. Sends a hash of the name and a random salt to the node
269
+ * @category AENS
264
270
  * @param name - AENS name
265
271
  * @param options - Options
266
272
  * @param options.onAccount - Make operation on specific account from sdk (you pass
@@ -283,21 +289,20 @@ export async function aensClaim(name, salt, options) {
283
289
  * ```
284
290
  */
285
291
  export async function aensPreclaim(name, options) {
286
- const _salt = salt();
287
-
288
- const currentHeight = await height(options);
289
- const commitmentId = commitmentHash(name, _salt);
290
- const preclaimTx = await _buildTx(TX_TYPE.namePreClaim, { ...options,
292
+ const salt = genSalt();
293
+ const height = await getHeight(options);
294
+ const commitmentId = commitmentHash(name, salt);
295
+ const preclaimTx = await _buildTx(Tag.NamePreclaimTx, { ...options,
291
296
  accountId: await options.onAccount.address(options),
292
297
  commitmentId
293
298
  });
294
299
  return Object.freeze({ ...(await send(preclaimTx, options)),
295
- height: currentHeight,
296
- salt: _salt,
300
+ height,
301
+ salt,
297
302
  commitmentId,
298
303
 
299
304
  async claim(opts) {
300
- return await aensClaim(name, _salt, { ...options,
305
+ return aensClaim(name, salt, { ...options,
301
306
  ...opts
302
307
  });
303
308
  }
@@ -307,6 +312,7 @@ export async function aensPreclaim(name, options) {
307
312
 
308
313
  /**
309
314
  * Bid to name auction
315
+ * @category AENS
310
316
  * @param name - Domain name
311
317
  * @param nameFee - Name fee (bid fee)
312
318
  * @param options - Options
@@ -325,7 +331,7 @@ export async function aensPreclaim(name, options) {
325
331
  * ```
326
332
  */
327
333
  export async function aensBid(name, nameFee, options) {
328
- return await aensClaim(name, 0, { ...options,
334
+ return aensClaim(name, 0, { ...options,
329
335
  nameFee
330
336
  });
331
337
  }
package/es/aens.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"aens.mjs","names":["salt","commitmentHash","isAuctionName","CLIENT_TTL","NAME_TTL","TX_TYPE","ArgumentError","send","getName","height","_buildTx","aensRevoke","name","options","nameRevokeTx","nameRevoke","nameId","accountId","onAccount","address","aensUpdate","pointers","extendPointers","allPointers","Object","fromEntries","map","key","id","nameUpdateTx","nameUpdate","clientTtl","nameTtl","entries","toString","aensTransfer","account","nameTransferTx","nameTransfer","recipientId","aensQuery","opt","nameEntry","freeze","owner","update","transfer","revoke","extendTtl","aensClaim","claimTx","nameClaim","nameSalt","result","nameInter","blockHeight","assign","aensPreclaim","_salt","currentHeight","commitmentId","preclaimTx","namePreClaim","claim","opts","aensBid","nameFee"],"sources":["../src/aens.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Aens methods - routines to interact with the æternity naming system\n *\n * The high-level description of the naming system is\n * https://github.com/aeternity/protocol/blob/master/AENS.md in the protocol\n * repository.\n */\n\nimport { salt } from './utils/crypto'\nimport { commitmentHash, isAuctionName, Pointer } from './tx/builder/helpers'\nimport { CLIENT_TTL, NAME_TTL, TX_TYPE, AensName } from './tx/builder/schema'\nimport { ArgumentError } from './utils/errors'\nimport { EncodedData } from './utils/encoder'\nimport BigNumber from 'bignumber.js'\nimport { send, SendOptions } from './spend'\nimport { getName, height } from './chain'\nimport { _buildTx, BuildTxOptions } from './tx'\nimport { TransformNodeType } from './Node'\nimport { NameEntry } from './apis/node'\nimport AccountBase from './account/Base'\n\ninterface KeyPointers {\n [key: string]: string | Buffer\n}\n\n/**\n * Revoke a name\n * @param name - Name hash\n * @param options - Options\n * @param options.onAccount - Make operation on specific account from sdk (you pass\n * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param options.fee - fee\n * @param options.ttl - ttl\n * @param options.nonce - nonce\n * @returns Transaction result\n * @example\n * ```js\n * const name = 'test.chain'\n * const nameObject = await sdkInstance.aensQuery(name)\n *\n * await sdkInstance.aensRevoke(name, { fee, ttl , nonce })\n * // or\n * await nameObject.revoke({ fee, ttl, nonce })\n * ```\n */\nexport async function aensRevoke (\n name: AensName, options: AensRevokeOptions\n): ReturnType<typeof send> {\n const nameRevokeTx = await _buildTx(TX_TYPE.nameRevoke, {\n ...options,\n nameId: name,\n accountId: await options.onAccount.address(options)\n })\n return await send(nameRevokeTx, options)\n}\n\ninterface AensRevokeOptions extends\n BuildTxOptions<TX_TYPE.nameRevoke, 'nameId' | 'accountId'>,\n SendOptions {}\n\n/**\n * Update a name\n * @param name - AENS name\n * @param pointers - Map of pointer keys to corresponding addresses\n * @param options - Options\n * @param options.extendPointers - Get the pointers from the node and merge with provided\n * ones. Pointers with the same type will be overwritten\n * @param options.onAccount - Make operation on specific account from sdk (you\n * pass publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param options.fee - fee\n * @param options.ttl - ttl\n * @param options.nonce - nonce\n * @param options.nameTtl - Name ttl represented in number of\n * blocks (Max value is 50000 blocks)\n * @param options.clientTtl=84600 a suggestion as to how long any\n * clients should cache this information\n * @throws Invalid pointer array error\n * @example\n * ```js\n * const name = 'test.chain'\n * const pointersArray = ['ak_asd23dasdas...,' 'ct_asdf34fasdasd...']\n * const nameObject = await sdkInstance.aensQuery(name)\n *\n * await sdkInstance.aensUpdate(name, pointersArray, { nameTtl, ttl, fee, nonce, clientTtl })\n * // or\n * await nameObject.update(pointers, { nameTtl, ttl, fee, nonce, clientTtl })\n * ```\n */\nexport async function aensUpdate (\n name: AensName, pointers: KeyPointers, { extendPointers, ...options }: AensUpdateOptions\n): ReturnType<typeof send> {\n const allPointers = {\n ...extendPointers === true && Object.fromEntries(\n (await getName(name, options)).pointers\n .map(({ key, id }: { key: string, id: string }) => [key, id])\n ),\n ...pointers\n }\n\n const nameUpdateTx = await _buildTx(TX_TYPE.nameUpdate, {\n clientTtl: CLIENT_TTL,\n nameTtl: NAME_TTL,\n ...options,\n nameId: name,\n accountId: await options.onAccount.address(options),\n pointers: Object.entries(allPointers).map(([key, id]) => ({ key, id: id.toString() }))\n })\n\n return await send(nameUpdateTx, options)\n}\n\ninterface AensUpdateOptions extends\n BuildTxOptions<TX_TYPE.nameUpdate, 'nameId' | 'accountId' | 'pointers' | 'clientTtl' | 'nameTtl'>,\n SendOptions {\n extendPointers?: boolean\n clientTtl?: number\n nameTtl?: number\n}\n\n/**\n * Transfer a domain to another account\n * @param name - AENS name\n * @param account - Recipient account publick key\n * @param options - Options\n * @param options.onAccount - Make operation on specific account from sdk (you pass\n * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param options.fee - fee\n * @param options.ttl - ttl\n * @param options.nonce - nonce\n * @returns Transaction result\n * @example\n * ```js\n * const name = 'test.chain'\n * const recipientPub = 'ak_asd23dasdas...'\n * const nameObject = await sdkInstance.aensQuery(name)\n *\n * await sdkInstance.aensTransfer(name, recipientPub, { ttl, fee, nonce })\n * // or\n * await nameObject.transfer(recipientPub, { ttl, fee, nonce })\n * ```\n */\nexport async function aensTransfer (\n name: AensName, account: EncodedData<'ak'>, options: AensTransferOptions\n): ReturnType<typeof send> {\n const nameTransferTx = await _buildTx(TX_TYPE.nameTransfer, {\n ...options,\n nameId: name,\n accountId: await options.onAccount.address(options),\n recipientId: account\n })\n\n return await send(nameTransferTx, options)\n}\n\ninterface AensTransferOptions extends\n BuildTxOptions<TX_TYPE.nameTransfer, 'nameId' | 'accountId' | 'recipientId'>,\n SendOptions {}\n\n/**\n * Query the AENS name info from the node\n * and return the object with info and predefined functions for manipulating name\n * @param name - AENS name\n * @param opt - Options\n * @returns\n * @example\n * ```js\n * const nameObject = sdkInstance.aensQuery('test.chain')\n * console.log(nameObject)\n * {\n * id, // name hash\n * pointers, // array of pointers\n * update, // Update name function\n * extendTtl, // Extend Ttl name function\n * transfer, // Transfer name function\n * revoke // Revoke name function\n * }\n * ```\n */\nexport async function aensQuery (\n name: AensName,\n opt: Parameters<typeof getName>[1] & Parameters<typeof aensUpdate>[2]\n & Parameters<typeof aensTransfer>[2]\n): Promise<Readonly<\n TransformNodeType<NameEntry> & {\n id: EncodedData<'nm'>\n owner: EncodedData<'ak'>\n pointers: KeyPointers | Pointer[]\n ttl: number\n update: (\n pointers: KeyPointers,\n options?: Omit<Parameters<typeof aensQuery>[1], 'onNode' | 'onCompiler' | 'onAccount'> & {\n onAccount?: AccountBase\n }\n ) => ReturnType<typeof aensUpdate> & ReturnType<typeof aensQuery>\n transfer: (\n account: EncodedData<'ak'>,\n options?: Parameters<typeof aensQuery>[1]\n ) => ReturnType<typeof aensUpdate> & ReturnType<typeof aensQuery>\n revoke: (options?: Omit<Parameters<typeof aensRevoke>[1], 'onNode' | 'onCompiler' | 'onAccount'> & {\n onAccount?: AccountBase\n }\n ) => ReturnType<typeof aensRevoke>\n extendTtl: (\n nameTtl: number,\n options?: Omit<Parameters<typeof aensQuery>[1], 'onNode' | 'onCompiler' | 'onAccount'>\n ) => ReturnType<typeof aensUpdate> & ReturnType<typeof aensQuery>\n }\n >> {\n const nameEntry = await getName(name, opt)\n return Object.freeze({\n ...nameEntry,\n id: nameEntry.id as EncodedData<'nm'>,\n owner: nameEntry.owner as EncodedData<'ak'>,\n async update (pointers, options) {\n return {\n ...await aensUpdate(name, pointers, { ...opt, ...options }),\n ...await aensQuery(name, { ...opt, ...options })\n }\n },\n async transfer (account, options) {\n return {\n ...await aensTransfer(name, account, { ...opt, ...options }),\n ...await aensQuery(name, { ...opt, ...options })\n }\n },\n async revoke (options) {\n return await aensRevoke(name, { ...opt, ...options })\n },\n async extendTtl (nameTtl = NAME_TTL, options) {\n if (nameTtl > NAME_TTL || nameTtl <= 0) {\n throw new ArgumentError('nameTtl', `a number between 1 and ${NAME_TTL} blocks`, nameTtl)\n }\n\n return {\n ...await aensUpdate(name, {}, { ...opt, ...options, nameTtl, extendPointers: true }),\n ...await aensQuery(name, { ...opt, ...options })\n }\n }\n })\n}\n\n/**\n * Claim a previously preclaimed registration. This can only be done after the\n * preclaim step\n * @param name - AENS name\n * @param salt - Salt from pre-claim, or 0 if it's a bid\n * @param options - options\n * @param options.onAccount - Make operation on specific account from sdk (you pass\n * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param options.fee - fee\n * @param options.ttl - ttl\n * @param options.nonce - nonce\n * @param options.nameFee - Name Fee (By default calculated by sdk)\n * @returns the result of the claim\n * @example\n * ```js\n * const name = 'test.chain'\n * const salt = preclaimResult.salt // salt from pre-claim transaction\n *\n * await sdkInstance.aensClaim(name, salt, { ttl, fee, nonce, nameFee })\n * ```\n */\nexport async function aensClaim (\n name: AensName, salt: number, options: AensClaimOptions\n): Promise<AensClaimReturnType> {\n const claimTx = await _buildTx(TX_TYPE.nameClaim, {\n ...options,\n accountId: await options.onAccount.address(options),\n nameSalt: salt,\n name\n })\n\n const result = await send(claimTx, options)\n if (!isAuctionName(name)) {\n const nameInter = result.blockHeight != null && result.blockHeight > 0\n ? await aensQuery(name, options)\n : {}\n return Object.assign(result, nameInter)\n }\n return result\n}\n\ntype AensClaimOptionsType = BuildTxOptions<TX_TYPE.nameClaim, 'accountId' | 'nameSalt' | 'name'>\n& SendOptions & Parameters<typeof aensQuery>[1]\ninterface AensClaimOptions extends AensClaimOptionsType {}\ninterface AensClaimReturnType extends\n Awaited<ReturnType<typeof send>>,\n Partial<Awaited<ReturnType<typeof aensQuery>>> {}\n\n/**\n * Preclaim a name. Sends a hash of the name and a random salt to the node\n * @param name - AENS name\n * @param options - Options\n * @param options.onAccount - Make operation on specific account from sdk (you pass\n * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param options.fee - fee\n * @param options.ttl - ttl\n * @param options.nonce - nonce\n * @example\n * ```js\n * const name = 'test.chain'\n * const salt = preclaimResult.salt // salt from pre-claim transaction\n *\n * await sdkInstance.aensPreclaim(name, { ttl, fee, nonce })\n * {\n * ...transactionResult,\n * claim, // Claim function (options={}) => claimTransactionResult\n * salt,\n * commitmentId\n * }\n * ```\n */\nexport async function aensPreclaim (\n name: AensName, options: AensPreclaimOptions\n): Promise<Readonly<\n Awaited<ReturnType<typeof send>> & {\n height: number\n salt: number\n commitmentId: string\n claim: (opts?: Parameters<typeof aensClaim>[2]) => ReturnType<typeof aensClaim>\n }\n >> {\n const _salt = salt()\n const currentHeight = await height(options)\n const commitmentId = commitmentHash(name, _salt)\n\n const preclaimTx = await _buildTx(TX_TYPE.namePreClaim, {\n ...options,\n accountId: await options.onAccount.address(options),\n commitmentId\n })\n\n return Object.freeze({\n ...await send(preclaimTx, options),\n height: currentHeight,\n salt: _salt,\n commitmentId,\n async claim (opts?: Parameters<typeof aensClaim>[2]) {\n return await aensClaim(name, _salt, { ...options, ...opts })\n }\n })\n}\n\ninterface AensPreclaimOptions extends\n BuildTxOptions<TX_TYPE.namePreClaim, 'accountId' | 'commitmentId'>,\n SendOptions,\n AensClaimOptions {}\n\n/**\n * Bid to name auction\n * @param name - Domain name\n * @param nameFee - Name fee (bid fee)\n * @param options - Options\n * @param options.onAccount - Make operation on specific account from sdk (you pass\n * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param options.fee - fee\n * @param options.ttl - ttl\n * @param options.nonce - nonce\n * @returns Transaction result\n * @example\n * ```js\n * const name = 'test.chain'\n * const bidFee = computeBidFee(name, startFee, incrementPercentage)\n *\n * await sdkInstance.aensBid(name, 213109412839123, { ttl, fee, nonce })\n * ```\n */\nexport async function aensBid (\n name: AensName,\n nameFee: number | string | BigNumber,\n options: Omit<Parameters<typeof aensClaim>[2], 'nameFee'>\n): ReturnType<typeof aensClaim> {\n return await aensClaim(name, 0, { ...options, nameFee })\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"aens.mjs","names":["genSalt","commitmentHash","isAuctionName","CLIENT_TTL","NAME_TTL","Tag","ArgumentError","send","getName","getHeight","_buildTx","aensRevoke","name","options","nameRevokeTx","NameRevokeTx","nameId","accountId","onAccount","address","aensUpdate","pointers","extendPointers","allPointers","Object","fromEntries","map","key","id","nameUpdateTx","NameUpdateTx","clientTtl","nameTtl","entries","toString","aensTransfer","account","nameTransferTx","NameTransferTx","recipientId","aensQuery","opt","nameEntry","freeze","owner","update","transfer","revoke","extendTtl","aensClaim","salt","claimTx","NameClaimTx","nameSalt","result","nameInter","blockHeight","assign","aensPreclaim","height","commitmentId","preclaimTx","NamePreclaimTx","claim","opts","aensBid","nameFee"],"sources":["../src/aens.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Aens methods - routines to interact with the æternity naming system\n *\n * The high-level description of the naming system is\n * https://github.com/aeternity/protocol/blob/master/AENS.md in the protocol\n * repository.\n */\n\nimport BigNumber from 'bignumber.js';\nimport { genSalt } from './utils/crypto';\nimport { commitmentHash, isAuctionName } from './tx/builder/helpers';\nimport {\n CLIENT_TTL, NAME_TTL, Tag, AensName,\n} from './tx/builder/constants';\nimport { ArgumentError } from './utils/errors';\nimport { Encoded } from './utils/encoder';\nimport { send, SendOptions } from './spend';\nimport { getName, getHeight } from './chain';\nimport { _buildTx, BuildTxOptions } from './tx';\nimport { TransformNodeType } from './Node';\nimport { NameEntry, NamePointer } from './apis/node';\nimport AccountBase from './account/Base';\n\ninterface KeyPointers {\n [key: string]: string | Buffer;\n}\n\n/**\n * Revoke a name\n * @category AENS\n * @param name - Name hash\n * @param options - Options\n * @param options.onAccount - Make operation on specific account from sdk (you pass\n * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param options.fee - fee\n * @param options.ttl - ttl\n * @param options.nonce - nonce\n * @returns Transaction result\n * @example\n * ```js\n * const name = 'test.chain'\n * const nameObject = await sdkInstance.aensQuery(name)\n *\n * await sdkInstance.aensRevoke(name, { fee, ttl , nonce })\n * // or\n * await nameObject.revoke({ fee, ttl, nonce })\n * ```\n */\nexport async function aensRevoke(\n name: AensName,\n options: AensRevokeOptions,\n): ReturnType<typeof send> {\n const nameRevokeTx = await _buildTx(Tag.NameRevokeTx, {\n ...options,\n nameId: name,\n accountId: await options.onAccount.address(options),\n });\n return send(nameRevokeTx, options);\n}\n\ninterface AensRevokeOptions extends\n BuildTxOptions<Tag.NameRevokeTx, 'nameId' | 'accountId'>,\n SendOptions {}\n\n/**\n * Update a name\n * @category AENS\n * @param name - AENS name\n * @param pointers - Map of pointer keys to corresponding addresses\n * @param options - Options\n * @param options.extendPointers - Get the pointers from the node and merge with provided\n * ones. Pointers with the same type will be overwritten\n * @param options.onAccount - Make operation on specific account from sdk (you\n * pass publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param options.fee - fee\n * @param options.ttl - ttl\n * @param options.nonce - nonce\n * @param options.nameTtl - Name ttl represented in number of\n * blocks (Max value is 50000 blocks)\n * @param options.clientTtl=84600 a suggestion as to how long any\n * clients should cache this information\n * @throws Invalid pointer array error\n * @example\n * ```js\n * const name = 'test.chain'\n * const pointersArray = ['ak_asd23dasdas...,' 'ct_asdf34fasdasd...']\n * const nameObject = await sdkInstance.aensQuery(name)\n *\n * await sdkInstance.aensUpdate(name, pointersArray, { nameTtl, ttl, fee, nonce, clientTtl })\n * // or\n * await nameObject.update(pointers, { nameTtl, ttl, fee, nonce, clientTtl })\n * ```\n */\nexport async function aensUpdate(\n name: AensName,\n pointers: KeyPointers,\n { extendPointers, ...options }: AensUpdateOptions,\n): ReturnType<typeof send> {\n const allPointers = {\n ...extendPointers === true && Object.fromEntries(\n (await getName(name, options)).pointers\n .map(({ key, id }: { key: string; id: string }) => [key, id]),\n ),\n ...pointers,\n };\n\n const nameUpdateTx = await _buildTx(Tag.NameUpdateTx, {\n clientTtl: CLIENT_TTL,\n nameTtl: NAME_TTL,\n ...options,\n nameId: name,\n accountId: await options.onAccount.address(options),\n pointers: Object.entries(allPointers).map(([key, id]) => ({ key, id: id.toString() })),\n });\n\n return send(nameUpdateTx, options);\n}\n\ninterface AensUpdateOptions extends\n BuildTxOptions<Tag.NameUpdateTx, 'nameId' | 'accountId' | 'pointers' | 'clientTtl' | 'nameTtl'>,\n SendOptions {\n extendPointers?: boolean;\n clientTtl?: number;\n nameTtl?: number;\n}\n\n/**\n * Transfer a domain to another account\n * @category AENS\n * @param name - AENS name\n * @param account - Recipient account publick key\n * @param options - Options\n * @param options.onAccount - Make operation on specific account from sdk (you pass\n * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param options.fee - fee\n * @param options.ttl - ttl\n * @param options.nonce - nonce\n * @returns Transaction result\n * @example\n * ```js\n * const name = 'test.chain'\n * const recipientPub = 'ak_asd23dasdas...'\n * const nameObject = await sdkInstance.aensQuery(name)\n *\n * await sdkInstance.aensTransfer(name, recipientPub, { ttl, fee, nonce })\n * // or\n * await nameObject.transfer(recipientPub, { ttl, fee, nonce })\n * ```\n */\nexport async function aensTransfer(\n name: AensName,\n account: Encoded.AccountAddress,\n options: AensTransferOptions,\n): ReturnType<typeof send> {\n const nameTransferTx = await _buildTx(Tag.NameTransferTx, {\n ...options,\n nameId: name,\n accountId: await options.onAccount.address(options),\n recipientId: account,\n });\n\n return send(nameTransferTx, options);\n}\n\ninterface AensTransferOptions extends\n BuildTxOptions<Tag.NameTransferTx, 'nameId' | 'accountId' | 'recipientId'>,\n SendOptions {}\n\n/**\n * Query the AENS name info from the node\n * and return the object with info and predefined functions for manipulating name\n * @category AENS\n * @param name - AENS name\n * @param opt - Options\n * @returns\n * @example\n * ```js\n * const nameObject = sdkInstance.aensQuery('test.chain')\n * console.log(nameObject)\n * {\n * id, // name hash\n * pointers, // array of pointers\n * update, // Update name function\n * extendTtl, // Extend Ttl name function\n * transfer, // Transfer name function\n * revoke // Revoke name function\n * }\n * ```\n */\nexport async function aensQuery(\n name: AensName,\n opt: Parameters<typeof getName>[1] & Parameters<typeof aensUpdate>[2]\n & Parameters<typeof aensTransfer>[2],\n): Promise<Readonly<\n TransformNodeType<NameEntry> & {\n id: Encoded.Name;\n owner: Encoded.AccountAddress;\n pointers: KeyPointers | NamePointer[];\n ttl: number;\n update: (\n pointers: KeyPointers,\n options?: Omit<Parameters<typeof aensQuery>[1], 'onNode' | 'onCompiler' | 'onAccount'> & {\n onAccount?: AccountBase;\n }\n ) => ReturnType<typeof aensUpdate> & ReturnType<typeof aensQuery>;\n transfer: (\n account: Encoded.AccountAddress,\n options?: Parameters<typeof aensQuery>[1]\n ) => ReturnType<typeof aensUpdate> & ReturnType<typeof aensQuery>;\n revoke: (options?: Omit<Parameters<typeof aensRevoke>[1], 'onNode' | 'onCompiler' | 'onAccount'> & {\n onAccount?: AccountBase;\n }\n ) => ReturnType<typeof aensRevoke>;\n extendTtl: (\n nameTtl: number,\n options?: Omit<Parameters<typeof aensQuery>[1], 'onNode' | 'onCompiler' | 'onAccount'>\n ) => ReturnType<typeof aensUpdate> & ReturnType<typeof aensQuery>;\n }\n >> {\n const nameEntry = await getName(name, opt);\n return Object.freeze({\n ...nameEntry,\n id: nameEntry.id as Encoded.Name,\n owner: nameEntry.owner as Encoded.AccountAddress,\n async update(pointers, options) {\n return {\n ...await aensUpdate(name, pointers, { ...opt, ...options }),\n ...await aensQuery(name, { ...opt, ...options }),\n };\n },\n async transfer(account, options) {\n return {\n ...await aensTransfer(name, account, { ...opt, ...options }),\n ...await aensQuery(name, { ...opt, ...options }),\n };\n },\n async revoke(options) {\n return aensRevoke(name, { ...opt, ...options });\n },\n async extendTtl(nameTtl = NAME_TTL, options = {}) {\n if (nameTtl > NAME_TTL || nameTtl <= 0) {\n throw new ArgumentError('nameTtl', `a number between 1 and ${NAME_TTL} blocks`, nameTtl);\n }\n\n return {\n ...await aensUpdate(name, {}, {\n ...opt, ...options, nameTtl, extendPointers: true,\n }),\n ...await aensQuery(name, { ...opt, ...options }),\n };\n },\n });\n}\n\n/**\n * Claim a previously preclaimed registration. This can only be done after the\n * preclaim step\n * @category AENS\n * @param name - AENS name\n * @param salt - Salt from pre-claim, or 0 if it's a bid\n * @param options - options\n * @param options.onAccount - Make operation on specific account from sdk (you pass\n * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param options.fee - fee\n * @param options.ttl - ttl\n * @param options.nonce - nonce\n * @param options.nameFee - Name Fee (By default calculated by sdk)\n * @returns the result of the claim\n * @example\n * ```js\n * const name = 'test.chain'\n * const salt = preclaimResult.salt // salt from pre-claim transaction\n *\n * await sdkInstance.aensClaim(name, salt, { ttl, fee, nonce, nameFee })\n * ```\n */\nexport async function aensClaim(\n name: AensName,\n salt: number,\n options: AensClaimOptions,\n): Promise<AensClaimReturnType> {\n const claimTx = await _buildTx(Tag.NameClaimTx, {\n ...options,\n accountId: await options.onAccount.address(options),\n nameSalt: salt,\n name,\n });\n\n const result = await send(claimTx, options);\n if (!isAuctionName(name)) {\n const nameInter = result.blockHeight != null && result.blockHeight > 0\n ? await aensQuery(name, options)\n : {};\n return Object.assign(result, nameInter);\n }\n return result;\n}\n\ntype AensClaimOptionsType = BuildTxOptions<Tag.NameClaimTx, 'accountId' | 'nameSalt' | 'name'>\n& SendOptions & Parameters<typeof aensQuery>[1];\ninterface AensClaimOptions extends AensClaimOptionsType {}\ninterface AensClaimReturnType extends\n Awaited<ReturnType<typeof send>>,\n Partial<Awaited<ReturnType<typeof aensQuery>>> {}\n\n/**\n * Preclaim a name. Sends a hash of the name and a random salt to the node\n * @category AENS\n * @param name - AENS name\n * @param options - Options\n * @param options.onAccount - Make operation on specific account from sdk (you pass\n * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param options.fee - fee\n * @param options.ttl - ttl\n * @param options.nonce - nonce\n * @example\n * ```js\n * const name = 'test.chain'\n * const salt = preclaimResult.salt // salt from pre-claim transaction\n *\n * await sdkInstance.aensPreclaim(name, { ttl, fee, nonce })\n * {\n * ...transactionResult,\n * claim, // Claim function (options={}) => claimTransactionResult\n * salt,\n * commitmentId\n * }\n * ```\n */\nexport async function aensPreclaim(name: AensName, options: AensPreclaimOptions): Promise<Readonly<\nAwaited<ReturnType<typeof send>> & {\n height: number;\n salt: number;\n commitmentId: string;\n claim: (opts?: Parameters<typeof aensClaim>[2]) => ReturnType<typeof aensClaim>;\n}\n>> {\n const salt = genSalt();\n const height = await getHeight(options);\n const commitmentId = commitmentHash(name, salt);\n\n const preclaimTx = await _buildTx(Tag.NamePreclaimTx, {\n ...options,\n accountId: await options.onAccount.address(options),\n commitmentId,\n });\n\n return Object.freeze({\n ...await send(preclaimTx, options),\n height,\n salt,\n commitmentId,\n async claim(opts?: Parameters<typeof aensClaim>[2]) {\n return aensClaim(name, salt, { ...options, ...opts });\n },\n });\n}\n\ninterface AensPreclaimOptions extends\n BuildTxOptions<Tag.NamePreclaimTx, 'accountId' | 'commitmentId'>,\n SendOptions,\n AensClaimOptions {}\n\n/**\n * Bid to name auction\n * @category AENS\n * @param name - Domain name\n * @param nameFee - Name fee (bid fee)\n * @param options - Options\n * @param options.onAccount - Make operation on specific account from sdk (you pass\n * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param options.fee - fee\n * @param options.ttl - ttl\n * @param options.nonce - nonce\n * @returns Transaction result\n * @example\n * ```js\n * const name = 'test.chain'\n * const bidFee = computeBidFee(name, startFee, incrementPercentage)\n *\n * await sdkInstance.aensBid(name, 213109412839123, { ttl, fee, nonce })\n * ```\n */\nexport async function aensBid(\n name: AensName,\n nameFee: number | string | BigNumber,\n options: Omit<Parameters<typeof aensClaim>[2], 'nameFee'>,\n): ReturnType<typeof aensClaim> {\n return aensClaim(name, 0, { ...options, nameFee });\n}\n"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  /**
2
2
  * Browser connection base interface
3
+ * @category aepp wallet communication
3
4
  */
4
5
  export default abstract class BrowserConnection {
5
6
  debug: boolean;
@@ -17,7 +18,7 @@ export default abstract class BrowserConnection {
17
18
  */
18
19
  disconnect(): void;
19
20
  /**
20
- * Send message
21
+ * Receive message
21
22
  */
22
23
  protected receiveMessage(message: any): void;
23
24
  /**
@@ -17,6 +17,7 @@
17
17
  import { AlreadyConnectedError, NoWalletConnectedError } from "../../utils/errors.mjs";
18
18
  /**
19
19
  * Browser connection base interface
20
+ * @category aepp wallet communication
20
21
  */
21
22
 
22
23
  export default class BrowserConnection {
@@ -33,7 +34,9 @@ export default class BrowserConnection {
33
34
  */
34
35
 
35
36
 
36
- connect(onMessage, onDisconnect) {
37
+ connect( // eslint-disable-next-line @typescript-eslint/no-unused-vars
38
+ onMessage, // eslint-disable-next-line @typescript-eslint/no-unused-vars
39
+ onDisconnect) {
37
40
  if (this.isConnected()) throw new AlreadyConnectedError('You already connected');
38
41
  }
39
42
  /**
@@ -45,7 +48,7 @@ export default class BrowserConnection {
45
48
  if (!this.isConnected()) throw new NoWalletConnectedError('You dont have connection. Please connect before');
46
49
  }
47
50
  /**
48
- * Send message
51
+ * Receive message
49
52
  */
50
53
 
51
54
 
@@ -1 +1 @@
1
- {"version":3,"file":"Browser.mjs","names":["AlreadyConnectedError","NoWalletConnectedError","BrowserConnection","constructor","debug","connect","onMessage","onDisconnect","isConnected","disconnect","receiveMessage","message","console","log","sendMessage"],"sources":["../../../src/aepp-wallet-communication/connection/Browser.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport { AlreadyConnectedError, NoWalletConnectedError } from '../../utils/errors'\n\n/**\n * Browser connection base interface\n */\nexport default abstract class BrowserConnection {\n debug: boolean\n\n protected constructor ({ debug = false }: { debug?: boolean }) {\n this.debug = debug\n }\n\n /**\n * Connect\n * @param onMessage - Message handler\n * @param onDisconnect - trigger when runtime connection in closed\n */\n connect (\n onMessage: (message: any, origin: string, source: any) => void,\n onDisconnect: () => void\n ): void {\n if (this.isConnected()) throw new AlreadyConnectedError('You already connected')\n }\n\n /**\n * Disconnect\n */\n disconnect (): void {\n if (!this.isConnected()) throw new NoWalletConnectedError('You dont have connection. Please connect before')\n }\n\n /**\n * Send message\n */\n protected receiveMessage (message: any): void {\n if (this.debug) console.log('Receive message:', message)\n }\n\n /**\n * Send message\n */\n sendMessage (message: any): void {\n if (this.debug) console.log('Send message:', message)\n }\n\n /**\n * Check if connected\n * @returns Is connected\n */\n abstract isConnected (): boolean\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;SAESA,qB,EAAuBC,sB;AAEhC;AACA;AACA;;AACA,eAAe,MAAeC,iBAAf,CAAiC;EAGpCC,WAAW,OAA0C;IAAA,IAAxC;MAAEC,KAAK,GAAG;IAAV,CAAwC;IAC7D,KAAKA,KAAL,GAAaA,KAAb;EACD;EAED;AACF;AACA;AACA;AACA;;;EACEC,OAAO,CACLC,SADK,EAELC,YAFK,EAGC;IACN,IAAI,KAAKC,WAAL,EAAJ,EAAwB,MAAM,IAAIR,qBAAJ,CAA0B,uBAA1B,CAAN;EACzB;EAED;AACF;AACA;;;EACES,UAAU,GAAU;IAClB,IAAI,CAAC,KAAKD,WAAL,EAAL,EAAyB,MAAM,IAAIP,sBAAJ,CAA2B,iDAA3B,CAAN;EAC1B;EAED;AACF;AACA;;;EACYS,cAAc,CAAEC,OAAF,EAAsB;IAC5C,IAAI,KAAKP,KAAT,EAAgBQ,OAAO,CAACC,GAAR,CAAY,kBAAZ,EAAgCF,OAAhC;EACjB;EAED;AACF;AACA;;;EACEG,WAAW,CAAEH,OAAF,EAAsB;IAC/B,IAAI,KAAKP,KAAT,EAAgBQ,OAAO,CAACC,GAAR,CAAY,eAAZ,EAA6BF,OAA7B;EACjB;EAED;AACF;AACA;AACA;;;AA3CgD"}
1
+ {"version":3,"file":"Browser.mjs","names":["AlreadyConnectedError","NoWalletConnectedError","BrowserConnection","constructor","debug","connect","onMessage","onDisconnect","isConnected","disconnect","receiveMessage","message","console","log","sendMessage"],"sources":["../../../src/aepp-wallet-communication/connection/Browser.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport { AlreadyConnectedError, NoWalletConnectedError } from '../../utils/errors';\n\n/**\n * Browser connection base interface\n * @category aepp wallet communication\n */\nexport default abstract class BrowserConnection {\n debug: boolean;\n\n protected constructor({ debug = false }: { debug?: boolean }) {\n this.debug = debug;\n }\n\n /**\n * Connect\n * @param onMessage - Message handler\n * @param onDisconnect - trigger when runtime connection in closed\n */\n connect(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onMessage: (message: any, origin: string, source: any) => void,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onDisconnect: () => void,\n ): void {\n if (this.isConnected()) throw new AlreadyConnectedError('You already connected');\n }\n\n /**\n * Disconnect\n */\n disconnect(): void {\n if (!this.isConnected()) throw new NoWalletConnectedError('You dont have connection. Please connect before');\n }\n\n /**\n * Receive message\n */\n protected receiveMessage(message: any): void {\n if (this.debug) console.log('Receive message:', message);\n }\n\n /**\n * Send message\n */\n sendMessage(message: any): void {\n if (this.debug) console.log('Send message:', message);\n }\n\n /**\n * Check if connected\n * @returns Is connected\n */\n abstract isConnected(): boolean;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;SAESA,qB,EAAuBC,sB;AAEhC;AACA;AACA;AACA;;AACA,eAAe,MAAeC,iBAAf,CAAiC;EAGpCC,WAAW,OAAyC;IAAA,IAAxC;MAAEC,KAAK,GAAG;IAAV,CAAwC;IAC5D,KAAKA,KAAL,GAAaA,KAAb;EACD;EAED;AACF;AACA;AACA;AACA;;;EACEC,OAAO,EACL;EACAC,SAFK,EAGL;EACAC,YAJK,EAKC;IACN,IAAI,KAAKC,WAAL,EAAJ,EAAwB,MAAM,IAAIR,qBAAJ,CAA0B,uBAA1B,CAAN;EACzB;EAED;AACF;AACA;;;EACES,UAAU,GAAS;IACjB,IAAI,CAAC,KAAKD,WAAL,EAAL,EAAyB,MAAM,IAAIP,sBAAJ,CAA2B,iDAA3B,CAAN;EAC1B;EAED;AACF;AACA;;;EACYS,cAAc,CAACC,OAAD,EAAqB;IAC3C,IAAI,KAAKP,KAAT,EAAgBQ,OAAO,CAACC,GAAR,CAAY,kBAAZ,EAAgCF,OAAhC;EACjB;EAED;AACF;AACA;;;EACEG,WAAW,CAACH,OAAD,EAAqB;IAC9B,IAAI,KAAKP,KAAT,EAAgBQ,OAAO,CAACC,GAAR,CAAY,eAAZ,EAA6BF,OAA7B;EACjB;EAED;AACF;AACA;AACA;;;AA7CgD"}
@@ -3,6 +3,7 @@ import BrowserConnection from './Browser';
3
3
  /**
4
4
  * BrowserRuntimeConnection
5
5
  * Handle browser runtime communication
6
+ * @category aepp wallet communication
6
7
  */
7
8
  export default class BrowserRuntimeConnection extends BrowserConnection {
8
9
  port: Runtime.Port;
@@ -18,6 +18,7 @@ import BrowserConnection from "./Browser.mjs";
18
18
  /**
19
19
  * BrowserRuntimeConnection
20
20
  * Handle browser runtime communication
21
+ * @category aepp wallet communication
21
22
  */
22
23
 
23
24
  export default class BrowserRuntimeConnection extends BrowserConnection {
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserRuntime.mjs","names":["BrowserConnection","BrowserRuntimeConnection","constructor","port","options","disconnect","connect","onMessage","onDisconnect","addListener","message","receiveMessage","name","sendMessage","postMessage","isConnected","hasListeners"],"sources":["../../../src/aepp-wallet-communication/connection/BrowserRuntime.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport { Runtime } from 'webextension-polyfill'\nimport BrowserConnection from './Browser'\n\n/**\n * BrowserRuntimeConnection\n * Handle browser runtime communication\n */\nexport default class BrowserRuntimeConnection extends BrowserConnection {\n port: Runtime.Port\n\n constructor ({ port, ...options }: { port: Runtime.Port, debug: boolean }) {\n super(options)\n this.port = port\n }\n\n disconnect (): void {\n super.disconnect()\n this.port.disconnect()\n }\n\n connect (\n onMessage: (message: any, origin: string, source: Runtime.Port) => void,\n onDisconnect: () => void\n ): void {\n super.connect(onMessage, onDisconnect)\n this.port.onMessage.addListener((message, port) => {\n this.receiveMessage(message)\n onMessage(message, port.name, port)\n })\n this.port.onDisconnect.addListener(onDisconnect)\n }\n\n sendMessage (message: any): void {\n super.sendMessage(message)\n this.port.postMessage(message)\n }\n\n isConnected (): boolean {\n return this.port.onMessage.hasListeners()\n }\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;OAGOA,iB;AAEP;AACA;AACA;AACA;;AACA,eAAe,MAAMC,wBAAN,SAAuCD,iBAAvC,CAAyD;EAGtEE,WAAW,OAAgE;IAAA,IAA9D;MAAEC,IAAF;MAAQ,GAAGC;IAAX,CAA8D;IACzE,MAAMA,OAAN;IACA,KAAKD,IAAL,GAAYA,IAAZ;EACD;;EAEDE,UAAU,GAAU;IAClB,MAAMA,UAAN;IACA,KAAKF,IAAL,CAAUE,UAAV;EACD;;EAEDC,OAAO,CACLC,SADK,EAELC,YAFK,EAGC;IACN,MAAMF,OAAN,CAAcC,SAAd,EAAyBC,YAAzB;IACA,KAAKL,IAAL,CAAUI,SAAV,CAAoBE,WAApB,CAAgC,CAACC,OAAD,EAAUP,IAAV,KAAmB;MACjD,KAAKQ,cAAL,CAAoBD,OAApB;MACAH,SAAS,CAACG,OAAD,EAAUP,IAAI,CAACS,IAAf,EAAqBT,IAArB,CAAT;IACD,CAHD;IAIA,KAAKA,IAAL,CAAUK,YAAV,CAAuBC,WAAvB,CAAmCD,YAAnC;EACD;;EAEDK,WAAW,CAAEH,OAAF,EAAsB;IAC/B,MAAMG,WAAN,CAAkBH,OAAlB;IACA,KAAKP,IAAL,CAAUW,WAAV,CAAsBJ,OAAtB;EACD;;EAEDK,WAAW,GAAa;IACtB,OAAO,KAAKZ,IAAL,CAAUI,SAAV,CAAoBS,YAApB,EAAP;EACD;;AAhCqE"}
1
+ {"version":3,"file":"BrowserRuntime.mjs","names":["BrowserConnection","BrowserRuntimeConnection","constructor","port","options","disconnect","connect","onMessage","onDisconnect","addListener","message","receiveMessage","name","sendMessage","postMessage","isConnected","hasListeners"],"sources":["../../../src/aepp-wallet-communication/connection/BrowserRuntime.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport { Runtime } from 'webextension-polyfill';\nimport BrowserConnection from './Browser';\n\n/**\n * BrowserRuntimeConnection\n * Handle browser runtime communication\n * @category aepp wallet communication\n */\nexport default class BrowserRuntimeConnection extends BrowserConnection {\n port: Runtime.Port;\n\n constructor({ port, ...options }: { port: Runtime.Port; debug: boolean }) {\n super(options);\n this.port = port;\n }\n\n disconnect(): void {\n super.disconnect();\n this.port.disconnect();\n }\n\n connect(\n onMessage: (message: any, origin: string, source: Runtime.Port) => void,\n onDisconnect: () => void,\n ): void {\n super.connect(onMessage, onDisconnect);\n this.port.onMessage.addListener((message, port) => {\n this.receiveMessage(message);\n onMessage(message, port.name, port);\n });\n this.port.onDisconnect.addListener(onDisconnect);\n }\n\n sendMessage(message: any): void {\n super.sendMessage(message);\n this.port.postMessage(message);\n }\n\n isConnected(): boolean {\n return this.port.onMessage.hasListeners();\n }\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;OAGOA,iB;AAEP;AACA;AACA;AACA;AACA;;AACA,eAAe,MAAMC,wBAAN,SAAuCD,iBAAvC,CAAyD;EAGtEE,WAAW,OAA+D;IAAA,IAA9D;MAAEC,IAAF;MAAQ,GAAGC;IAAX,CAA8D;IACxE,MAAMA,OAAN;IACA,KAAKD,IAAL,GAAYA,IAAZ;EACD;;EAEDE,UAAU,GAAS;IACjB,MAAMA,UAAN;IACA,KAAKF,IAAL,CAAUE,UAAV;EACD;;EAEDC,OAAO,CACLC,SADK,EAELC,YAFK,EAGC;IACN,MAAMF,OAAN,CAAcC,SAAd,EAAyBC,YAAzB;IACA,KAAKL,IAAL,CAAUI,SAAV,CAAoBE,WAApB,CAAgC,CAACC,OAAD,EAAUP,IAAV,KAAmB;MACjD,KAAKQ,cAAL,CAAoBD,OAApB;MACAH,SAAS,CAACG,OAAD,EAAUP,IAAI,CAACS,IAAf,EAAqBT,IAArB,CAAT;IACD,CAHD;IAIA,KAAKA,IAAL,CAAUK,YAAV,CAAuBC,WAAvB,CAAmCD,YAAnC;EACD;;EAEDK,WAAW,CAACH,OAAD,EAAqB;IAC9B,MAAMG,WAAN,CAAkBH,OAAlB;IACA,KAAKP,IAAL,CAAUW,WAAV,CAAsBJ,OAAtB;EACD;;EAEDK,WAAW,GAAY;IACrB,OAAO,KAAKZ,IAAL,CAAUI,SAAV,CAAoBS,YAApB,EAAP;EACD;;AAhCqE"}
@@ -3,6 +3,7 @@ import { MESSAGE_DIRECTION } from '../schema';
3
3
  export declare type ImplPostMessage = Pick<Window, 'addEventListener' | 'removeEventListener' | 'postMessage'>;
4
4
  /**
5
5
  * Browser window Post Message connector module
6
+ * @category aepp wallet communication
6
7
  */
7
8
  export default class BrowserWindowMessageConnection extends BrowserConnection {
8
9
  #private;
@@ -33,6 +33,7 @@ var _self = /*#__PURE__*/new WeakMap();
33
33
 
34
34
  /**
35
35
  * Browser window Post Message connector module
36
+ * @category aepp wallet communication
36
37
  */
37
38
  export default class BrowserWindowMessageConnection extends BrowserConnection {
38
39
  /**
@@ -88,7 +89,10 @@ export default class BrowserWindowMessageConnection extends BrowserConnection {
88
89
  super.connect(onMessage, onDisconnect);
89
90
 
90
91
  this.listener = message => {
91
- if (typeof message.data !== 'object') return;
92
+ var _message$data$jsonrpc, _message$data$data;
93
+
94
+ // TODO: strict validate origin and source instead of checking message structure
95
+ if (typeof message.data !== 'object' || ((_message$data$jsonrpc = message.data.jsonrpc) !== null && _message$data$jsonrpc !== void 0 ? _message$data$jsonrpc : (_message$data$data = message.data.data) === null || _message$data$data === void 0 ? void 0 : _message$data$data.jsonrpc) !== '2.0') return;
92
96
  if (this.origin != null && this.origin !== message.origin) return;
93
97
  if (_classPrivateFieldGet(this, _target) != null && _classPrivateFieldGet(this, _target) !== message.source) return;
94
98
  this.receiveMessage(message);
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserWindowMessage.mjs","names":["BrowserConnection","MESSAGE_DIRECTION","InternalError","RpcConnectionError","BrowserWindowMessageConnection","constructor","target","self","window","origin","sendDirection","receiveDirection","to_aepp","options","isConnected","listener","connect","onMessage","onDisconnect","message","data","source","receiveMessage","type","addEventListener","disconnect","removeEventListener","undefined","sendMessage","msg","postMessage"],"sources":["../../../src/aepp-wallet-communication/connection/BrowserWindowMessage.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport BrowserConnection from './Browser'\nimport { MESSAGE_DIRECTION } from '../schema'\nimport { InternalError, RpcConnectionError } from '../../utils/errors'\n\nexport type ImplPostMessage = Pick<Window, 'addEventListener' | 'removeEventListener' | 'postMessage'>\n\n/**\n * Browser window Post Message connector module\n */\nexport default class BrowserWindowMessageConnection extends BrowserConnection {\n origin?: string\n sendDirection?: MESSAGE_DIRECTION\n receiveDirection: MESSAGE_DIRECTION\n listener?: (this: Window, ev: MessageEvent<any>) => void\n #onDisconnect?: () => void\n #target?: ImplPostMessage\n #self: ImplPostMessage\n\n /**\n * @param options - Options\n * @param options.target Target window for message\n * @param options.self Host window for message\n * @param options.origin Origin of receiver\n * @param options.sendDirection Wrapping messages into additional struct\n * `({ type: 'to_aepp' || 'to_waellet', data })`\n * Used for handling messages between content script and page\n * @param options.receiveDirection Unwrapping messages from additional struct\n */\n constructor ({\n target,\n self = window,\n origin,\n sendDirection,\n receiveDirection = MESSAGE_DIRECTION.to_aepp,\n ...options\n }: {\n target?: ImplPostMessage\n self?: ImplPostMessage\n origin?: string\n sendDirection?: MESSAGE_DIRECTION\n receiveDirection?: MESSAGE_DIRECTION\n debug?: boolean\n } = {}) {\n super(options)\n this.#target = target\n this.#self = self\n this.origin = origin\n this.sendDirection = sendDirection\n this.receiveDirection = receiveDirection\n }\n\n isConnected (): boolean {\n return this.listener != null\n }\n\n connect (\n onMessage: (message: any, origin: string, source: MessageEventSource | null) => void,\n onDisconnect: () => void\n ): void {\n super.connect(onMessage, onDisconnect)\n this.listener = (message: MessageEvent<any>) => {\n if (typeof message.data !== 'object') return\n if (this.origin != null && this.origin !== message.origin) return\n if (this.#target != null && this.#target !== message.source) return\n this.receiveMessage(message)\n let { data } = message\n if (data.type != null) {\n if (message.data.type !== this.receiveDirection) return\n data = data.data\n }\n onMessage(data, message.origin, message.source)\n }\n this.#self.addEventListener('message', this.listener)\n this.#onDisconnect = onDisconnect\n }\n\n disconnect (): void {\n super.disconnect()\n if (this.listener == null || this.#onDisconnect == null) {\n throw new InternalError('Expected to not happen, required for TS')\n }\n this.#self.removeEventListener('message', this.listener)\n delete this.listener\n this.#onDisconnect()\n this.#onDisconnect = undefined\n }\n\n sendMessage (msg: any): void {\n if (this.#target == null) throw new RpcConnectionError('Can\\'t send messages without target')\n const message = this.sendDirection != null ? { type: this.sendDirection, data: msg } : msg\n super.sendMessage(message)\n this.#target.postMessage(message, this.origin ?? '*')\n }\n}\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;OAEOA,iB;SACEC,iB;SACAC,a,EAAeC,kB;;;;;;;;AAIxB;AACA;AACA;AACA,eAAe,MAAMC,8BAAN,SAA6CJ,iBAA7C,CAA+D;EAS5E;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEK,WAAW,GAcH;IAAA,IAdK;MACXC,MADW;MAEXC,IAAI,GAAGC,MAFI;MAGXC,MAHW;MAIXC,aAJW;MAKXC,gBAAgB,GAAGV,iBAAiB,CAACW,OAL1B;MAMX,GAAGC;IANQ,CAcL,uEAAJ,EAAI;IACN,MAAMA,OAAN;;IADM;MAAA;MAAA;IAAA;;IAAA;MAAA;MAAA;IAAA;;IAAA;MAAA;MAAA;IAAA;;IAEN,qCAAeP,MAAf;;IACA,mCAAaC,IAAb;;IACA,KAAKE,MAAL,GAAcA,MAAd;IACA,KAAKC,aAAL,GAAqBA,aAArB;IACA,KAAKC,gBAAL,GAAwBA,gBAAxB;EACD;;EAEDG,WAAW,GAAa;IACtB,OAAO,KAAKC,QAAL,IAAiB,IAAxB;EACD;;EAEDC,OAAO,CACLC,SADK,EAELC,YAFK,EAGC;IACN,MAAMF,OAAN,CAAcC,SAAd,EAAyBC,YAAzB;;IACA,KAAKH,QAAL,GAAiBI,OAAD,IAAgC;MAC9C,IAAI,OAAOA,OAAO,CAACC,IAAf,KAAwB,QAA5B,EAAsC;MACtC,IAAI,KAAKX,MAAL,IAAe,IAAf,IAAuB,KAAKA,MAAL,KAAgBU,OAAO,CAACV,MAAnD,EAA2D;MAC3D,IAAI,wCAAgB,IAAhB,IAAwB,yCAAiBU,OAAO,CAACE,MAArD,EAA6D;MAC7D,KAAKC,cAAL,CAAoBH,OAApB;MACA,IAAI;QAAEC;MAAF,IAAWD,OAAf;;MACA,IAAIC,IAAI,CAACG,IAAL,IAAa,IAAjB,EAAuB;QACrB,IAAIJ,OAAO,CAACC,IAAR,CAAaG,IAAb,KAAsB,KAAKZ,gBAA/B,EAAiD;QACjDS,IAAI,GAAGA,IAAI,CAACA,IAAZ;MACD;;MACDH,SAAS,CAACG,IAAD,EAAOD,OAAO,CAACV,MAAf,EAAuBU,OAAO,CAACE,MAA/B,CAAT;IACD,CAXD;;IAYA,mCAAWG,gBAAX,CAA4B,SAA5B,EAAuC,KAAKT,QAA5C;;IACA,2CAAqBG,YAArB;EACD;;EAEDO,UAAU,GAAU;IAClB,MAAMA,UAAN;;IACA,IAAI,KAAKV,QAAL,IAAiB,IAAjB,IAAyB,8CAAsB,IAAnD,EAAyD;MACvD,MAAM,IAAIb,aAAJ,CAAkB,yCAAlB,CAAN;IACD;;IACD,mCAAWwB,mBAAX,CAA+B,SAA/B,EAA0C,KAAKX,QAA/C;;IACA,OAAO,KAAKA,QAAZ;;IACA;;IACA,2CAAqBY,SAArB;EACD;;EAEDC,WAAW,CAAEC,GAAF,EAAkB;IAAA;;IAC3B,IAAI,wCAAgB,IAApB,EAA0B,MAAM,IAAI1B,kBAAJ,CAAuB,qCAAvB,CAAN;IAC1B,MAAMgB,OAAO,GAAG,KAAKT,aAAL,IAAsB,IAAtB,GAA6B;MAAEa,IAAI,EAAE,KAAKb,aAAb;MAA4BU,IAAI,EAAES;IAAlC,CAA7B,GAAuEA,GAAvF;IACA,MAAMD,WAAN,CAAkBT,OAAlB;;IACA,qCAAaW,WAAb,CAAyBX,OAAzB,kBAAkC,KAAKV,MAAvC,uDAAiD,GAAjD;EACD;;AAnF2E"}
1
+ {"version":3,"file":"BrowserWindowMessage.mjs","names":["BrowserConnection","MESSAGE_DIRECTION","InternalError","RpcConnectionError","BrowserWindowMessageConnection","constructor","target","self","window","origin","sendDirection","receiveDirection","to_aepp","options","isConnected","listener","connect","onMessage","onDisconnect","message","data","jsonrpc","source","receiveMessage","type","addEventListener","disconnect","removeEventListener","undefined","sendMessage","msg","postMessage"],"sources":["../../../src/aepp-wallet-communication/connection/BrowserWindowMessage.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport BrowserConnection from './Browser';\nimport { MESSAGE_DIRECTION } from '../schema';\nimport { InternalError, RpcConnectionError } from '../../utils/errors';\n\nexport type ImplPostMessage = Pick<Window, 'addEventListener' | 'removeEventListener' | 'postMessage'>;\n\n/**\n * Browser window Post Message connector module\n * @category aepp wallet communication\n */\nexport default class BrowserWindowMessageConnection extends BrowserConnection {\n origin?: string;\n\n sendDirection?: MESSAGE_DIRECTION;\n\n receiveDirection: MESSAGE_DIRECTION;\n\n listener?: (this: Window, ev: MessageEvent<any>) => void;\n\n #onDisconnect?: () => void;\n\n #target?: ImplPostMessage;\n\n #self: ImplPostMessage;\n\n /**\n * @param options - Options\n * @param options.target Target window for message\n * @param options.self Host window for message\n * @param options.origin Origin of receiver\n * @param options.sendDirection Wrapping messages into additional struct\n * `({ type: 'to_aepp' || 'to_waellet', data })`\n * Used for handling messages between content script and page\n * @param options.receiveDirection Unwrapping messages from additional struct\n */\n constructor({\n target,\n self = window,\n origin,\n sendDirection,\n receiveDirection = MESSAGE_DIRECTION.to_aepp,\n ...options\n }: {\n target?: ImplPostMessage;\n self?: ImplPostMessage;\n origin?: string;\n sendDirection?: MESSAGE_DIRECTION;\n receiveDirection?: MESSAGE_DIRECTION;\n debug?: boolean;\n } = {}) {\n super(options);\n this.#target = target;\n this.#self = self;\n this.origin = origin;\n this.sendDirection = sendDirection;\n this.receiveDirection = receiveDirection;\n }\n\n isConnected(): boolean {\n return this.listener != null;\n }\n\n connect(\n onMessage: (message: any, origin: string, source: MessageEventSource | null) => void,\n onDisconnect: () => void,\n ): void {\n super.connect(onMessage, onDisconnect);\n this.listener = (message: MessageEvent<any>) => {\n // TODO: strict validate origin and source instead of checking message structure\n if (\n typeof message.data !== 'object'\n || (message.data.jsonrpc ?? message.data.data?.jsonrpc) !== '2.0'\n ) return;\n if (this.origin != null && this.origin !== message.origin) return;\n if (this.#target != null && this.#target !== message.source) return;\n this.receiveMessage(message);\n let { data } = message;\n if (data.type != null) {\n if (message.data.type !== this.receiveDirection) return;\n data = data.data;\n }\n onMessage(data, message.origin, message.source);\n };\n this.#self.addEventListener('message', this.listener);\n this.#onDisconnect = onDisconnect;\n }\n\n disconnect(): void {\n super.disconnect();\n if (this.listener == null || this.#onDisconnect == null) {\n throw new InternalError('Expected to not happen, required for TS');\n }\n this.#self.removeEventListener('message', this.listener);\n delete this.listener;\n this.#onDisconnect();\n this.#onDisconnect = undefined;\n }\n\n sendMessage(msg: any): void {\n if (this.#target == null) throw new RpcConnectionError('Can\\'t send messages without target');\n const message = this.sendDirection != null ? { type: this.sendDirection, data: msg } : msg;\n super.sendMessage(message);\n this.#target.postMessage(message, this.origin ?? '*');\n }\n}\n"],"mappings":"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"}
@@ -2,6 +2,7 @@ import BrowserConnection from './connection/Browser';
2
2
  /**
3
3
  * Browser connection proxy
4
4
  * Provide functionality to easily forward messages from one connection to another and back
5
+ * @category aepp wallet communication
5
6
  * @param con1 - first connection
6
7
  * @param con2 - second connection
7
8
  * @returns a function to stop proxying