@aeternity/aepp-sdk 8.2.1 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/CHANGELOG.md +216 -337
  2. package/README.md +16 -9
  3. package/dist/aepp-sdk.browser-script.js +1 -1
  4. package/dist/aepp-sdk.browser-script.js.LICENSE.txt +0 -9
  5. package/dist/aepp-sdk.browser-script.js.map +1 -1
  6. package/dist/aepp-sdk.browser.js +1 -1
  7. package/dist/aepp-sdk.browser.js.map +1 -1
  8. package/dist/aepp-sdk.js +1 -1
  9. package/dist/aepp-sdk.js.map +1 -1
  10. package/es/account/base.js +36 -120
  11. package/es/account/base.js.map +1 -1
  12. package/es/account/memory.js +17 -19
  13. package/es/account/memory.js.map +1 -1
  14. package/es/account/multiple.js +79 -156
  15. package/es/account/multiple.js.map +1 -1
  16. package/es/ae/aens.js +205 -626
  17. package/es/ae/aens.js.map +1 -1
  18. package/es/ae/contract.js +114 -918
  19. package/es/ae/contract.js.map +1 -1
  20. package/es/ae/index.js +90 -250
  21. package/es/ae/index.js.map +1 -1
  22. package/es/ae/oracle.js +136 -504
  23. package/es/ae/oracle.js.map +1 -1
  24. package/es/ae/universal.js.map +1 -1
  25. package/es/chain/index.js +12 -27
  26. package/es/chain/index.js.map +1 -1
  27. package/es/chain/node.js +289 -1020
  28. package/es/chain/node.js.map +1 -1
  29. package/es/channel/handlers.js +597 -1086
  30. package/es/channel/handlers.js.map +1 -1
  31. package/es/channel/index.js +238 -465
  32. package/es/channel/index.js.map +1 -1
  33. package/es/channel/internal.js +129 -301
  34. package/es/channel/internal.js.map +1 -1
  35. package/es/contract/aci/index.js +328 -495
  36. package/es/contract/aci/index.js.map +1 -1
  37. package/es/contract/aci/transformation.js +35 -711
  38. package/es/contract/aci/transformation.js.map +1 -1
  39. package/es/contract/compiler.js +131 -203
  40. package/es/contract/compiler.js.map +1 -1
  41. package/es/contract/ga/helpers.js +17 -122
  42. package/es/contract/ga/helpers.js.map +1 -1
  43. package/es/contract/ga/index.js +108 -249
  44. package/es/contract/ga/index.js.map +1 -1
  45. package/es/contract/index.js +7 -3
  46. package/es/contract/index.js.map +1 -1
  47. package/es/index.js +3 -3
  48. package/es/index.js.map +1 -1
  49. package/es/node-pool/index.js +57 -74
  50. package/es/node-pool/index.js.map +1 -1
  51. package/es/node.js +65 -161
  52. package/es/node.js.map +1 -1
  53. package/es/other.d.ts +1 -1
  54. package/es/tx/builder/helpers.js +62 -115
  55. package/es/tx/builder/helpers.js.map +1 -1
  56. package/es/tx/builder/index.js +218 -309
  57. package/es/tx/builder/index.js.map +1 -1
  58. package/es/tx/builder/schema.js +586 -573
  59. package/es/tx/builder/schema.js.map +1 -1
  60. package/es/tx/index.js +102 -13
  61. package/es/tx/index.js.map +1 -1
  62. package/es/tx/tx-object.js +114 -138
  63. package/es/tx/tx-object.js.map +1 -1
  64. package/es/tx/tx.js +810 -1586
  65. package/es/tx/tx.js.map +1 -1
  66. package/es/tx/validator.js +191 -426
  67. package/es/tx/validator.js.map +1 -1
  68. package/es/utils/aepp-wallet-communication/connection/browser-runtime.js +20 -23
  69. package/es/utils/aepp-wallet-communication/connection/browser-runtime.js.map +1 -1
  70. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js +53 -80
  71. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js.map +1 -1
  72. package/es/utils/aepp-wallet-communication/connection/index.js +2 -1
  73. package/es/utils/aepp-wallet-communication/connection/index.js.map +1 -1
  74. package/es/utils/aepp-wallet-communication/content-script-bridge.js +24 -19
  75. package/es/utils/aepp-wallet-communication/content-script-bridge.js.map +1 -1
  76. package/es/utils/aepp-wallet-communication/helpers.js +60 -105
  77. package/es/utils/aepp-wallet-communication/helpers.js.map +1 -1
  78. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js +191 -514
  79. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js.map +1 -1
  80. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js +78 -93
  81. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js.map +1 -1
  82. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js +381 -613
  83. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js.map +1 -1
  84. package/es/utils/aepp-wallet-communication/schema.js +43 -39
  85. package/es/utils/aepp-wallet-communication/schema.js.map +1 -1
  86. package/es/utils/aepp-wallet-communication/wallet-detector.js +32 -58
  87. package/es/utils/aepp-wallet-communication/wallet-detector.js.map +1 -1
  88. package/es/utils/amount-formatter.js +41 -61
  89. package/es/utils/amount-formatter.js.map +1 -1
  90. package/es/utils/async-init.js +28 -64
  91. package/es/utils/async-init.js.map +1 -1
  92. package/es/utils/bignumber.js +3 -11
  93. package/es/utils/bignumber.js.map +1 -1
  94. package/es/utils/bytes.js +5 -9
  95. package/es/utils/bytes.js.map +1 -1
  96. package/es/utils/crypto.js +41 -106
  97. package/es/utils/crypto.js.map +1 -1
  98. package/es/utils/hd-wallet.js +45 -81
  99. package/es/utils/hd-wallet.js.map +1 -1
  100. package/es/utils/json-big.js +16 -49
  101. package/es/utils/json-big.js.map +1 -1
  102. package/es/utils/keystore.js +81 -246
  103. package/es/utils/keystore.js.map +1 -1
  104. package/es/utils/mptree.js +88 -134
  105. package/es/utils/mptree.js.map +1 -1
  106. package/es/utils/other.js +10 -60
  107. package/es/utils/other.js.map +1 -1
  108. package/es/utils/semver-satisfies.js +9 -28
  109. package/es/utils/semver-satisfies.js.map +1 -1
  110. package/es/utils/string.js +4 -13
  111. package/es/utils/string.js.map +1 -1
  112. package/es/utils/swagger.js +87 -224
  113. package/es/utils/swagger.js.map +1 -1
  114. package/package.json +51 -44
  115. package/src/account/base.js +11 -10
  116. package/src/account/multiple.js +24 -18
  117. package/src/ae/aens.js +64 -61
  118. package/src/ae/contract.js +71 -248
  119. package/src/ae/index.js +34 -9
  120. package/src/ae/oracle.js +30 -22
  121. package/src/ae/universal.js +3 -1
  122. package/src/chain/index.js +10 -16
  123. package/src/chain/node.js +38 -38
  124. package/src/channel/handlers.js +10 -4
  125. package/src/channel/index.js +44 -20
  126. package/src/contract/aci/index.js +234 -112
  127. package/src/contract/aci/transformation.js +30 -422
  128. package/src/contract/compiler.js +50 -5
  129. package/src/contract/ga/helpers.js +6 -14
  130. package/src/contract/ga/index.js +28 -28
  131. package/src/contract/index.js +6 -2
  132. package/src/index.js +4 -4
  133. package/src/node-pool/index.js +24 -13
  134. package/src/node.js +29 -30
  135. package/src/tx/builder/helpers.js +31 -56
  136. package/src/tx/builder/index.js +67 -28
  137. package/src/tx/builder/schema.js +79 -121
  138. package/src/tx/index.js +101 -12
  139. package/src/tx/tx-object.js +25 -8
  140. package/src/tx/tx.js +229 -150
  141. package/src/tx/validator.js +134 -202
  142. package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +3 -2
  143. package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +25 -7
  144. package/src/utils/aepp-wallet-communication/connection/index.js +2 -1
  145. package/src/utils/aepp-wallet-communication/content-script-bridge.js +10 -4
  146. package/src/utils/aepp-wallet-communication/helpers.js +4 -2
  147. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +33 -12
  148. package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +9 -5
  149. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +59 -29
  150. package/src/utils/aepp-wallet-communication/schema.js +1 -3
  151. package/src/utils/aepp-wallet-communication/wallet-detector.js +4 -1
  152. package/src/utils/amount-formatter.ts +1 -1
  153. package/src/utils/bignumber.ts +2 -1
  154. package/src/utils/crypto.js +4 -68
  155. package/src/utils/keystore.js +10 -2
  156. package/src/utils/other.ts +1 -1
  157. package/src/utils/semver-satisfies.ts +1 -1
  158. package/src/utils/swagger.js +22 -10
  159. package/src/contract/aci/helpers.js +0 -140
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ae/contract.js"],"names":["Ae","ContractCompilerAPI","ContractBase","getContractInstance","NodePool","AMOUNT","DEPOSIT","DRY_RUN_ACCOUNT","GAS","MIN_GAS_PRICE","decode","produceNameId","TxObject","_sendAndProcess","tx","source","name","options","send","txData","result","hash","rawTx","waitMined","getTxInfo","txInfo","_handleCallError","returnType","contractDecodeCallResultAPI","returnValue","error","message","revert","Error","contractEncodeCall","args","contractEncodeCallDataAPI","contractDecodeData","fn","callValue","callResult","contractCallStatic","address","pub","callerId","top","getKeyBlock","defaults","getAccount","nonce","callData","txOpt","contractCreateTx","code","bytecode","ownerId","resolveName","resolveByNode","contractId","contractCallTx","txDryRun","callObj","dryRunOther","contractCall","argsOrCallData","opt","contractDeploy","initState","owner","transaction","call","callStatic","createdAt","Date","contractCompile","compileContractAPI","encodeCall","deploy","init","deployStatic","delegateSignatureCommon","ids","Buffer","from","getNetworkId","e","sign","then","s","toString","delegateNamePreclaimSignature","delegateNameClaimSignature","delegateNameTransferSignature","delegateNameRevokeSignature","delegateOracleRegisterSignature","delegateOracleExtendSignature","delegateOracleRespondSignature","queryId","ContractAPI","compose","methods","deepProps","deposit","gasPrice","amount","gas","Contract","ContractWithCompiler"],"mappings":"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","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Contract module - routines to interact with the æternity contract\n *\n * High level documentation of the contracts are available at\n * https://github.com/aeternity/protocol/tree/master/contracts and\n *\n * @module @aeternity/aepp-sdk/es/ae/contract\n * @export Contract\n * @example import { Contract } from '@aeternity/aepp-sdk'\n */\n\nimport Ae from './'\nimport * as R from 'ramda'\nimport ContractCompilerAPI from '../contract/compiler'\nimport ContractBase from '../contract'\nimport getContractInstance from '../contract/aci'\nimport NodePool from '../node-pool'\nimport { AMOUNT, DEPOSIT, DRY_RUN_ACCOUNT, GAS, MIN_GAS_PRICE } from '../tx/builder/schema'\nimport { decode, produceNameId } from '../tx/builder/helpers'\nimport TxObject from '../tx/tx-object'\n\nasync function _sendAndProcess (tx, source, name, options) {\n const txData = await this.send(tx, options)\n const result = { hash: txData.hash, tx: TxObject({ tx: txData.rawTx }), txData, rawTx: txData.rawTx }\n if (options.waitMined === false) return result\n const txInfo = await this.getTxInfo(txData.hash)\n await this._handleCallError(source, name, txInfo)\n return { ...result, result: txInfo }\n}\n\n/**\n * Handle contract call error\n * @function\n * @private\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} source contract source code\n * @param {String} name name of called method\n * @param {Object} result call result object\n * @throws Error Decoded error\n * @return {Promise<void>}\n */\nasync function _handleCallError (source, name, result) {\n if (result.returnType === 'ok') return\n const error = await this.contractDecodeCallResultAPI(source, name, result.returnValue, result.returnType)\n const message = error[{ revert: 'abort' }[result.returnType] || result.returnType][0]\n throw new Error(`Invocation failed${message ? `: \"${message}\"` : ''}`)\n}\n\n/**\n * Encode call data for contract call\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} source Contract source code\n * @param {String} name Name of function to call\n * @param {Array} args Argument's for call\n * @param {Object} [options={}] Options\n * @param {Object} [options.filesystem={}] Contract external namespaces map\n * @return {Promise<String>}\n */\nasync function contractEncodeCall (source, name, args, options) {\n return this.contractEncodeCallDataAPI(source, name, args, options)\n}\n\n/**\n * Decode contract call result data\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} source - source code\n * @param {String } fn - function name\n * @param {String} callValue - result call data\n * @param {String} callResult - result status\n * @param {Object} [options={}] Options\n * @param {Object} [options.filesystem={}] Contract external namespaces map\n * @return {Promise<String>} Result object\n * @example\n * const decodedData = await client.contractDecodeData(SourceCode ,'functionName', 'cb_asdasdasd...', 'ok|revert')lt\n */\nasync function contractDecodeData (source, fn, callValue, callResult, options) {\n return this.contractDecodeCallResultAPI(source, fn, callValue, callResult, options)\n}\n\n/**\n * Static contract call(using dry-run)\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} source Contract source code\n * @param {String} address Contract address\n * @param {String} name Name of function to call\n * @param {Array|String} args Argument's or callData for call/deploy transaction\n * @param {Object} [options]\n * @param {Number|String} [options.top] Block height or hash on which you want to call contract\n * @param {String} [options.bytecode] Block hash on which you want to call contract\n * @param {Object} [options.filesystem] Contract external namespaces map\n * @return {Promise<Object>} Result object\n * @example\n * const callResult = await client.contractCallStatic(source, address, fnName, args)\n * {\n * result: TX_DATA,\n * decode: (type) => Decode call result\n * }\n */\nasync function contractCallStatic (source, address, name, args = [], options = {}) {\n const callerId = await this.address(options).catch(() => DRY_RUN_ACCOUNT.pub)\n if (typeof options.top === 'number') {\n options.top = (await this.getKeyBlock(options.top)).hash\n }\n const txOpt = {\n ...this.Ae.defaults,\n ...options,\n callData: Array.isArray(args) ? await this.contractEncodeCall(source, name, args, options) : args,\n nonce: options.top && (await this.getAccount(callerId, { hash: options.top })).nonce + 1\n }\n const tx = name === 'init'\n ? (await this.contractCreateTx({\n ...txOpt,\n code: options.bytecode,\n ownerId: callerId\n })).tx\n : await this.contractCallTx({\n ...txOpt,\n callerId,\n contractId: await this.resolveName(address, 'ct', { resolveByNode: true })\n })\n\n const { callObj, ...dryRunOther } = await this.txDryRun(tx, callerId, options)\n\n await this._handleCallError(source, name, callObj)\n const { returnType, returnValue } = callObj\n return {\n ...dryRunOther,\n tx: TxObject({ tx }),\n result: callObj,\n decode: () => this.contractDecodeData(source, name, returnValue, returnType, options)\n }\n}\n\n/**\n * Call contract function\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} source Contract source code\n * @param {String} address Contract address or AENS name\n * @param {String} name Name of function to call\n * @param {Array|String} argsOrCallData Argument's array or callData for call function\n * @param {Object} [options={}] Transaction options (fee, ttl, gas, amount, deposit)\n * @param {Object} [options.filesystem={}] Contract external namespaces map* @return {Promise<Object>} Result object\n * @example\n * const callResult = await client.contractCall(source, address, fnName, args = [], options)\n * {\n * hash: TX_HASH,\n * result: TX_DATA,\n * decode: (type) => Decode call result\n * }\n */\nasync function contractCall (source, address, name, argsOrCallData = [], options = {}) {\n const opt = R.merge(this.Ae.defaults, options)\n\n const tx = await this.contractCallTx(R.merge(opt, {\n callerId: await this.address(opt),\n contractId: await this.resolveName(address, 'ct', { resolveByNode: true }),\n callData: Array.isArray(argsOrCallData) ? await this.contractEncodeCall(source, name, argsOrCallData, opt) : argsOrCallData\n }))\n\n const { hash, rawTx, result, txData } = await this._sendAndProcess(tx, source, name, opt)\n return {\n hash,\n rawTx,\n result,\n txData,\n decode: () => result ? this.contractDecodeData(source, name, result.returnValue, result.returnType, opt) : {}\n }\n}\n\n/**\n * Deploy contract to the node\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} code Compiled contract\n * @param {String} source Contract source code\n * @param {Array|String} initState Arguments of contract constructor(init) function. Can be array of arguments or callData string\n * @param {Object} [options={}] Transaction options (fee, ttl, gas, amount, deposit)\n * @param {Object} [options.filesystem={}] Contract external namespaces map* @return {Promise<Object>} Result object\n * @return {Promise<Object>} Result object\n * @example\n * const deployed = await client.contractDeploy(bytecode, source, init = [], options)\n * {\n * owner: OWNER_PUB_KEY,\n * transaction: TX_HASH,\n * address: CONTRACT_ADDRESS,\n * createdAt: Date,\n * result: DEPLOY_TX_DATA,\n * call: (fnName, args = [], options) => Call contract function,\n * callStatic: (fnName, args = [], options) => Static all contract function\n * }\n */\nasync function contractDeploy (code, source, initState = [], options = {}) {\n const opt = { ...this.Ae.defaults, ...options }\n const callData = Array.isArray(initState) ? await this.contractEncodeCall(source, 'init', initState, opt) : initState\n const ownerId = await this.address(opt)\n\n const { tx, contractId } = await this.contractCreateTx(R.merge(opt, {\n callData,\n code,\n ownerId\n }))\n\n const { hash, rawTx, result, txData } = await this._sendAndProcess(tx, source, 'init', opt)\n return Object.freeze({\n result,\n owner: ownerId,\n transaction: hash,\n rawTx,\n txData,\n address: contractId,\n call: (name, args, options) =>\n this.contractCall(source, contractId, name, args, { ...opt, ...options }),\n callStatic: (name, args, options) =>\n this.contractCallStatic(source, contractId, name, args, { ...opt, ...options }),\n createdAt: new Date()\n })\n}\n\n/**\n * Compile contract source code\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} source Contract sourece code\n * @param {Object} [options={}] Transaction options (fee, ttl, gas, amount, deposit)\n * @param {Object} [options.filesystem={}] Contract external namespaces map* @return {Promise<Object>} Result object\n * @return {Promise<Object>} Result object\n * @example\n * const compiled = await client.contractCompile(SOURCE_CODE)\n * {\n * bytecode: CONTRACT_BYTE_CODE,\n * deploy: (init = [], options = {}) => Deploy Contract,\n * encodeCall: (fnName, args = []) => Prepare callData\n * }\n */\nasync function contractCompile (source, options = {}) {\n const opt = { ...this.Ae.defaults, ...options }\n const bytecode = await this.compileContractAPI(source, options)\n return Object.freeze({\n encodeCall: (name, args) => this.contractEncodeCall(source, name, args, opt),\n deploy: (init, options) => this.contractDeploy(bytecode, source, init, { ...opt, ...options }),\n deployStatic: (init, options) => this.contractCallStatic(source, null, 'init', init, {\n ...opt,\n ...options,\n bytecode\n }),\n bytecode\n })\n}\n\n/**\n * Utility method to create a delegate signature for a contract\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String[]} ids The list of id's to prepend\n * @param {Object} [opt={}] options\n * @param {{ onAccount: String | Object }} [opt={}] opt Options\n * @return {Promise<String>} Signature in hex representation\n */\nasync function delegateSignatureCommon (ids = [], opt = {}) {\n return this.sign(\n Buffer.concat(\n [\n Buffer.from(this.getNetworkId(opt)),\n decode(await this.address(opt)),\n ...ids.map(e => decode(e))\n ]\n ),\n opt\n ).then(s => Buffer.from(s).toString('hex'))\n}\n\n/**\n * Helper to generate a signature to delegate a name pre-claim to a contract.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} contractId Contract Id\n * @param {{ onAccount: String | Object }} [opt={}] opt Options\n * @return {Promise<String>} Signature for delegation\n */\nasync function delegateNamePreclaimSignature (contractId, opt = {}) {\n return this.delegateSignatureCommon([contractId], opt)\n}\n\n/**\n * Helper to generate a signature to delegate a name claim to a contract.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} name The name being claimed\n * @param {String} contractId Contract Id\n * @param {{ onAccount: String | Object }} [opt={}] opt Options\n * @return {Promise<String>} Signature for delegation\n */\nasync function delegateNameClaimSignature (contractId, name, opt = {}) {\n return this.delegateSignatureCommon([produceNameId(name), contractId], opt)\n}\n\n/**\n * Helper to generate a signature to delegate a name transfer to a contract.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} contractId Contract Id\n * @param {String} name The name being transferred\n * @param {{ onAccount: String | Object }} [opt={}] opt Options\n * @return {Promise<String>} Signature for delegation\n */\nasync function delegateNameTransferSignature (contractId, name, opt = {}) {\n return this.delegateSignatureCommon([produceNameId(name), contractId], opt)\n}\n\n/**\n * Helper to generate a signature to delegate a name revoke to a contract.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} contractId Contract Id\n * @param {String} name The name being revoked\n * @param {{ onAccount: String | Object }} [opt={}] opt Options\n * @return {Promise<String>} Signature for delegation\n */\nasync function delegateNameRevokeSignature (contractId, name, opt = {}) {\n return this.delegateSignatureCommon([produceNameId(name), contractId], opt)\n}\n\n/**\n * Helper to generate a signature to delegate a Oracle register to a contract.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} contractId Contract Id\n * @param {{ onAccount: String | Object }} [opt={}] opt Options\n * @return {Promise<String>} Signature for delegation\n */\nasync function delegateOracleRegisterSignature (contractId, opt = {}) {\n return this.delegateSignatureCommon([contractId], opt)\n}\n\n/**\n * Helper to generate a signature to delegate a Oracle extend to a contract.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} contractId Contract Id\n * @param {{ onAccount: String | Object }} [opt={}] opt Options\n * @return {Promise<String>} Signature for delegation\n */\nasync function delegateOracleExtendSignature (contractId, opt = {}) {\n return this.delegateSignatureCommon([contractId], opt)\n}\n\n/**\n * Helper to generate a signature to delegate a Oracle respond to a contract.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} queryId Oracle Query Id\n * @param {String} contractId Contract Id\n * @param {{ onAccount: String | Object }} [opt={}] opt Options\n * @return {Promise<String>} Signature for delegation\n */\nasync function delegateOracleRespondSignature (queryId, contractId, opt = {}) {\n return this.delegateSignatureCommon([queryId, contractId], opt)\n}\n\n/**\n * Contract Stamp\n *\n * Provide contract implementation\n * {@link module:@aeternity/aepp-sdk/es/ae--Ae} clients.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Contract instance\n * @example\n * import Transaction from '@aeternity/aepp-sdk/es/tx/tx\n * import MemoryAccount from '@aeternity/aepp-sdk/es/account/memory\n * import ChainNode from '@aeternity/aepp-sdk/es/chain/node\n * import ContractCompilerAPI from '@aeternity/aepp-sdk/es/contract/compiler\n * // or using bundle\n * import {\n * Transaction,\n * MemoryAccount,\n * ChainNode,\n * ContractCompilerAPI\n * } from '@aeternity/aepp-sdk\n *\n * const ContractWithAE = await Contract\n * .compose(Transaction, MemoryAccount, ChainNode) // AE implementation\n * .compose(ContractCompilerAPI) // ContractBase implementation\n * const client = await ContractWithAe({ url, internalUrl, compilerUrl, keypair, ... })\n *\n */\nexport const ContractAPI = Ae.compose(ContractBase, {\n methods: {\n getContractInstance,\n contractCompile,\n contractCallStatic,\n contractDeploy,\n contractCall,\n contractEncodeCall,\n contractDecodeData,\n _handleCallError,\n _sendAndProcess,\n // Delegation for contract\n // AENS\n delegateSignatureCommon,\n delegateNamePreclaimSignature,\n delegateNameClaimSignature,\n delegateNameTransferSignature,\n delegateNameRevokeSignature,\n // Oracle\n delegateOracleRegisterSignature,\n delegateOracleExtendSignature,\n delegateOracleRespondSignature\n },\n deepProps: {\n Ae: {\n defaults: {\n deposit: DEPOSIT,\n gasPrice: MIN_GAS_PRICE,\n amount: AMOUNT,\n gas: GAS\n }\n }\n }\n})\n\nexport const Contract = ContractAPI.compose(NodePool)\nexport const ContractWithCompiler = Contract.compose(ContractCompilerAPI)\nexport default ContractWithCompiler\n"],"file":"contract.js"}
1
+ {"version":3,"sources":["../../src/ae/contract.js"],"names":["Ae","ContractCompilerAPI","ContractBase","getContractInstance","NodePool","AMOUNT","DEPOSIT","GAS","MIN_GAS_PRICE","decode","produceNameId","contractCallStatic","source","contractAddress","name","args","options","contract","call","callStatic","contractCall","contractDeploy","code","params","bytecode","deploy","contractCompile","opt","defaults","compileContractAPI","Object","freeze","encodeCall","contractEncodeCallDataAPI","init","deployStatic","delegateSignatureCommon","ids","signature","sign","Buffer","concat","from","getNetworkId","prototype","hasOwnProperty","address","map","e","toString","createAensDelegationSignature","contractId","createOracleDelegationSignature","queryId","ContractAPI","compose","methods","deepProps","deposit","gasPrice","amount","gas","Contract","ContractWithCompiler"],"mappings":"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","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Contract module - routines to interact with the æternity contract\n *\n * High level documentation of the contracts are available at\n * https://github.com/aeternity/protocol/tree/master/contracts and\n *\n * @module @aeternity/aepp-sdk/es/ae/contract\n * @export Contract\n * @example import { Contract } from '@aeternity/aepp-sdk'\n */\n\nimport Ae from './'\nimport ContractCompilerAPI from '../contract/compiler'\nimport ContractBase from '../contract'\nimport getContractInstance from '../contract/aci'\nimport NodePool from '../node-pool'\nimport { AMOUNT, DEPOSIT, GAS, MIN_GAS_PRICE } from '../tx/builder/schema'\nimport { decode, produceNameId } from '../tx/builder/helpers'\n\n/**\n * Static contract call(using dry-run)\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @deprecated\n * @param {String} source Contract source code\n * @param {String} contractAddress Contract address\n * @param {String} name Name of function to call\n * @param {Array} args Arguments array for call/deploy transaction\n * @param {Object} [options]\n * @param {Number|String} [options.top] Block height or hash on which you want to call contract\n * @param {String} [options.bytecode] Block hash on which you want to call contract\n * @param {Object} [options.filesystem] Contract external namespaces map\n * @return {Promise<Object>} Result object\n * @example\n * const callResult = await client.contractCallStatic(source, address, fnName, args)\n * {\n * result: TX_DATA,\n * decode: (type) => Decode call result\n * }\n */\nasync function contractCallStatic (source, contractAddress, name, args = [], options) {\n const contract = await this.getContractInstance({ ...options, source, contractAddress })\n return contract.call(name, args, { ...options, callStatic: true })\n}\n\n/**\n * Call contract function\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @deprecated\n * @param {String} source Contract source code\n * @param {String} contractAddress Contract address or AENS name\n * @param {String} name Name of function to call\n * @param {Array} args Arguments array for call/deploy transaction\n * @param {Object} [options] Transaction options (fee, ttl, gas, amount, deposit)\n * @param {Object} [options.filesystem] Contract external namespaces map\n * @return {Promise<Object>} Result object\n * @example\n * const callResult = await client.contractCall(source, address, fnName, args = [], options)\n * {\n * hash: TX_HASH,\n * result: TX_DATA,\n * decode: (type) => Decode call result\n * }\n */\nasync function contractCall (source, contractAddress, name, args, options) {\n const contract = await this.getContractInstance({ ...options, source, contractAddress })\n return contract.call(name, args, options)\n}\n\n/**\n * Deploy contract to the node\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @deprecated\n * @param {String} code Compiled contract\n * @param {String} source Contract source code\n * @param {Array} params Arguments of contract constructor(init) function. Can be array of\n * arguments or callData string\n * @param {Object} [options] Transaction options (fee, ttl, gas, amount, deposit)\n * @param {Object} [options.filesystem={}] Contract external namespaces map*\n * @return {Promise<Object>} Result object\n * @example\n * const deployed = await client.contractDeploy(bytecode, source, init = [], options)\n * {\n * owner: OWNER_PUB_KEY,\n * transaction: TX_HASH,\n * address: CONTRACT_ADDRESS,\n * createdAt: Date,\n * result: DEPLOY_TX_DATA,\n * call: (fnName, args = [], options) => Call contract function,\n * callStatic: (fnName, args = [], options) => Static all contract function\n * }\n */\nasync function contractDeploy (code, source, params, options) {\n const contract = await this.getContractInstance({ ...options, source })\n contract.bytecode = code\n return contract.deploy(params, options)\n}\n\n/**\n * Compile contract source code\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} source Contract sourece code\n * @param {Object} [options={}] Transaction options (fee, ttl, gas, amount, deposit)\n * @param {Object} [options.filesystem={}] Contract external namespaces map*\n * @return {Promise<Object>} Result object\n * @example\n * const compiled = await client.contractCompile(SOURCE_CODE)\n * {\n * bytecode: CONTRACT_BYTE_CODE,\n * deploy: (init = [], options = {}) => Deploy Contract,\n * encodeCall: (fnName, args = []) => Prepare callData\n * }\n */\nasync function contractCompile (source, options = {}) {\n const opt = { ...this.Ae.defaults, ...options }\n const bytecode = await this.compileContractAPI(source, options)\n return Object.freeze({\n encodeCall: (name, args) => this.contractEncodeCallDataAPI(source, name, args, opt),\n deploy: (init, options) => this.contractDeploy(bytecode, source, init, { ...opt, ...options }),\n deployStatic: (init, options) => this.contractCallStatic(source, null, 'init', init, {\n ...opt,\n ...options,\n bytecode\n }),\n bytecode\n })\n}\n\n/**\n * Utility method to create a delegate signature for a contract\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String[]} ids The list of id's to prepend\n * @param {Object} [opt={}] options\n * @param {{ onAccount: String | Object }} [opt={}] opt Options\n * @return {Promise<String>} Signature in hex representation\n */\nasync function delegateSignatureCommon (ids = [], opt = {}) {\n const signature = await this.sign(\n Buffer.concat([\n Buffer.from(this.getNetworkId(opt)),\n ...(Object.prototype.hasOwnProperty.call(opt, 'onAccount') ? [decode(await this.address(opt))] : []),\n ...ids.map(e => decode(e))\n ]),\n opt\n )\n return Buffer.from(signature).toString('hex')\n}\n\n/**\n * Helper to generate a signature to delegate pre-claim/claim/transfer/revoke of a name to\n * a contract.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} contractId Contract Id\n * @param {String} [name] The name\n * @param {{ onAccount: String | Object }} [opt={}] opt Options\n * @return {Promise<String>} Signature for delegation\n * @example\n * const client = await Universal({ ... })\n * const contractId = 'ct_asd2ks...' // contract address\n * const name = 'example.chain' // AENS name\n * const onAccount = await client.address() // Sign with a specific account\n * // Preclaim signature\n * const params = { contractId }\n * const preclaimSig = await client.createAensDelegationSignature(params, { onAccount: current })\n * // Claim, transfer and revoke signature\n * const params = { contractId, name }\n * const aensDelegationSig = await contract.createAensDelegationSignature(\n * params, name, { onAccount: current }\n * )\n */\nasync function createAensDelegationSignature ({ contractId, name }, opt = {}) {\n return this.delegateSignatureCommon([...name ? [produceNameId(name)] : [], contractId], opt)\n}\n\n/**\n * Helper to generate a signature to delegate register/extend/respond of a Oracle to a contract.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} contractId Contract Id\n * @param {String} [queryId] Oracle Query Id\n * @param {{ onAccount: String | Object }} [opt={}] opt Options\n * @return {Promise<String>} Signature for delegation\n * @example\n * const client = await Universal({ ... })\n * const contractId = 'ct_asd2ks...' // contract address\n * const queryId = 'oq_...' // Oracle Query Id\n * const onAccount = await client.address() // Sign with a specific account\n * // Oracle register and extend signature\n * const params = { contractId }\n * const oracleDelegationSig = await contract.createOracleDelegationSignature(params, { onAccount })\n * // Oracle respond signature\n * const params = { contractId, queryId }\n * const respondSig = await contract.createOracleDelegationSignature(params, queryId)\n */\nasync function createOracleDelegationSignature ({ contractId, queryId }, opt = {}) {\n return this.delegateSignatureCommon([...queryId ? [queryId] : [], contractId], opt)\n}\n\n/**\n * Contract Stamp\n *\n * Provide contract implementation\n * {@link module:@aeternity/aepp-sdk/es/ae--Ae} clients.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Contract instance\n * @example\n * import Transaction from '@aeternity/aepp-sdk/es/tx/tx\n * import MemoryAccount from '@aeternity/aepp-sdk/es/account/memory\n * import ChainNode from '@aeternity/aepp-sdk/es/chain/node\n * import ContractCompilerAPI from '@aeternity/aepp-sdk/es/contract/compiler\n * // or using bundle\n * import {\n * Transaction,\n * MemoryAccount,\n * ChainNode,\n * ContractCompilerAPI\n * } from '@aeternity/aepp-sdk\n *\n * const ContractWithAE = await Contract\n * .compose(Transaction, MemoryAccount, ChainNode) // AE implementation\n * .compose(ContractCompilerAPI) // ContractBase implementation\n * const client = await ContractWithAe({ url, internalUrl, compilerUrl, keypair, ... })\n *\n */\nexport const ContractAPI = Ae.compose(ContractBase, {\n methods: {\n getContractInstance,\n contractCompile,\n contractCallStatic,\n contractDeploy,\n contractCall,\n // Delegation for contract\n delegateSignatureCommon,\n // AENS\n createAensDelegationSignature,\n // Oracle\n createOracleDelegationSignature\n },\n deepProps: {\n Ae: {\n defaults: {\n deposit: DEPOSIT,\n gasPrice: MIN_GAS_PRICE,\n amount: AMOUNT,\n gas: GAS\n }\n }\n }\n})\n\nexport const Contract = ContractAPI.compose(NodePool)\nexport const ContractWithCompiler = Contract.compose(ContractCompilerAPI)\nexport default ContractWithCompiler\n"],"file":"contract.js"}
package/es/ae/index.js CHANGED
@@ -1,23 +1,3 @@
1
- import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/objectWithoutProperties";
2
- import _defineProperty from "@babel/runtime-corejs3/helpers/defineProperty";
3
- import _merge from "ramda/src/merge";
4
- import _asyncToGenerator from "@babel/runtime-corejs3/helpers/asyncToGenerator";
5
- var _excluded = ["authData", "authFun"];
6
- import _regeneratorRuntime from "@babel/runtime-corejs3/regenerator";
7
-
8
- function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); if (enumerableOnly) { symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
9
-
10
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context5; _forEachInstanceProperty(_context5 = ownKeys(Object(source), true)).call(_context5, function (key) { _defineProperty(target, key, source[key]); }); } else if (_Object$getOwnPropertyDescriptors) { _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)); } else { var _context6; _forEachInstanceProperty(_context6 = ownKeys(Object(source))).call(_context6, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } } return target; }
11
-
12
- import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
13
- import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
14
- import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
15
- import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
16
- import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor";
17
- import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
18
- import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
19
- import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
20
-
21
1
  /*
22
2
  * ISC License (ISC)
23
3
  * Copyright (c) 2018 aeternity developers
@@ -55,82 +35,38 @@ import { AE_AMOUNT_FORMATS } from '../utils/amount-formatter';
55
35
  * @rtype (tx: String, options: Object) => Promise[String]
56
36
  * @param {String} tx - Transaction
57
37
  * @param {Object} [options={}] options - Options
58
- * @param {Object} [options.verify] verify - Verify transaction before broadcast, throw error if not valid
38
+ * @param {Object} [options.verify=true] - Verify transaction before broadcast, throw error if not
39
+ * valid
59
40
  * @return {Object} Transaction
60
41
  */
61
42
 
62
- function send(_x) {
63
- return _send.apply(this, arguments);
64
- }
65
-
66
- function _send() {
67
- _send = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(tx) {
68
- var options,
69
- opt,
70
- _yield$this$getAccoun,
71
- gaId,
72
- authFun,
73
- signed,
74
- _args = arguments;
75
-
76
- return _regeneratorRuntime.wrap(function _callee$(_context) {
77
- while (1) {
78
- switch (_context.prev = _context.next) {
79
- case 0:
80
- options = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};
81
- opt = _merge(this.Ae.defaults, options);
82
- _context.t0 = this;
83
- _context.next = 5;
84
- return this.address(opt);
85
-
86
- case 5:
87
- _context.t1 = _context.sent;
88
- _context.next = 8;
89
- return _context.t0.getAccount.call(_context.t0, _context.t1);
90
-
91
- case 8:
92
- _yield$this$getAccoun = _context.sent;
93
- gaId = _yield$this$getAccoun.contractId;
94
- authFun = _yield$this$getAccoun.authFun;
95
-
96
- if (!gaId) {
97
- _context.next = 17;
98
- break;
99
- }
100
-
101
- _context.next = 14;
102
- return this.signUsingGA(tx, _objectSpread(_objectSpread({}, opt), {}, {
103
- authFun: authFun
104
- }));
105
-
106
- case 14:
107
- _context.t2 = _context.sent;
108
- _context.next = 20;
109
- break;
110
-
111
- case 17:
112
- _context.next = 19;
113
- return this.signTransaction(tx, opt);
114
-
115
- case 19:
116
- _context.t2 = _context.sent;
117
-
118
- case 20:
119
- signed = _context.t2;
120
- return _context.abrupt("return", this.sendTransaction(signed, opt));
121
-
122
- case 22:
123
- case "end":
124
- return _context.stop();
125
- }
126
- }
127
- }, _callee, this);
128
- }));
129
- return _send.apply(this, arguments);
43
+ async function send(tx) {
44
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
45
+ const opt = { ...this.Ae.defaults,
46
+ ...options
47
+ };
48
+ const {
49
+ contractId,
50
+ authFun
51
+ } = options.innerTx ? {
52
+ contractId: false
53
+ } : await this.getAccount(await this.address(opt));
54
+ const signed = contractId ? await this.signUsingGA(tx, { ...opt,
55
+ authFun
56
+ }) : await this.signTransaction(tx, opt);
57
+ return opt.innerTx ? {
58
+ hash: TxBuilder.buildTxHash(signed),
59
+ rawTx: signed
60
+ } : this.sendTransaction(signed, opt);
130
61
  }
131
62
 
132
- function signUsingGA(_x2) {
133
- return _signUsingGA.apply(this, arguments);
63
+ async function signUsingGA(tx) {
64
+ let {
65
+ authData,
66
+ authFun,
67
+ ...options
68
+ } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
69
+ return this.createMetaTx(tx, authData, authFun, options);
134
70
  }
135
71
  /**
136
72
  * Send tokens to another account
@@ -144,34 +80,15 @@ function signUsingGA(_x2) {
144
80
  */
145
81
 
146
82
 
147
- function _signUsingGA() {
148
- _signUsingGA = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(tx) {
149
- var _ref,
150
- authData,
151
- authFun,
152
- options,
153
- _args2 = arguments;
154
-
155
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
156
- while (1) {
157
- switch (_context2.prev = _context2.next) {
158
- case 0:
159
- _ref = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : {};
160
- authData = _ref.authData, authFun = _ref.authFun, options = _objectWithoutProperties(_ref, _excluded);
161
- return _context2.abrupt("return", this.createMetaTx(tx, authData, authFun, options));
162
-
163
- case 3:
164
- case "end":
165
- return _context2.stop();
166
- }
167
- }
168
- }, _callee2, this);
169
- }));
170
- return _signUsingGA.apply(this, arguments);
171
- }
172
-
173
- function spend(_x3, _x4, _x5) {
174
- return _spend.apply(this, arguments);
83
+ async function spend(amount, recipientIdOrName, options) {
84
+ const opt = { ...this.Ae.defaults,
85
+ ...options
86
+ };
87
+ return this.send(await this.spendTx({ ...opt,
88
+ senderId: await this.address(opt),
89
+ recipientId: await this.resolveName(recipientIdOrName, 'account_pubkey', opt),
90
+ amount
91
+ }), opt);
175
92
  } // TODO: Rename to spendFraction
176
93
 
177
94
  /**
@@ -186,56 +103,54 @@ function spend(_x3, _x4, _x5) {
186
103
  */
187
104
 
188
105
 
189
- function _spend() {
190
- _spend = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(amount, recipientIdOrName, options) {
191
- var opt;
192
- return _regeneratorRuntime.wrap(function _callee3$(_context3) {
193
- while (1) {
194
- switch (_context3.prev = _context3.next) {
195
- case 0:
196
- opt = _objectSpread(_objectSpread({}, this.Ae.defaults), options);
197
- _context3.t0 = this;
198
- _context3.t1 = this;
199
- _context3.t2 = _objectSpread;
200
- _context3.t3 = _objectSpread({}, opt);
201
- _context3.t4 = {};
202
- _context3.next = 8;
203
- return this.address(opt);
204
-
205
- case 8:
206
- _context3.t5 = _context3.sent;
207
- _context3.next = 11;
208
- return this.resolveName(recipientIdOrName, 'ak', opt);
209
-
210
- case 11:
211
- _context3.t6 = _context3.sent;
212
- _context3.t7 = amount;
213
- _context3.t8 = {
214
- senderId: _context3.t5,
215
- recipientId: _context3.t6,
216
- amount: _context3.t7
217
- };
218
- _context3.t9 = (0, _context3.t2)(_context3.t3, _context3.t4, _context3.t8);
219
- _context3.next = 17;
220
- return _context3.t1.spendTx.call(_context3.t1, _context3.t9);
221
-
222
- case 17:
223
- _context3.t10 = _context3.sent;
224
- _context3.t11 = opt;
225
- return _context3.abrupt("return", _context3.t0.send.call(_context3.t0, _context3.t10, _context3.t11));
106
+ async function transferFunds(fraction, recipientIdOrName, options) {
107
+ if (fraction < 0 || fraction > 1) {
108
+ throw new Error(`Fraction should be a number between 0 and 1, got ${fraction}`);
109
+ }
226
110
 
227
- case 20:
228
- case "end":
229
- return _context3.stop();
230
- }
231
- }
232
- }, _callee3, this);
233
- }));
234
- return _spend.apply(this, arguments);
111
+ const opt = { ...this.Ae.defaults,
112
+ ...options
113
+ };
114
+ const recipientId = await this.resolveName(recipientIdOrName, 'account_pubkey', opt);
115
+ const senderId = await this.address(opt);
116
+ const balance = new BigNumber(await this.balance(senderId));
117
+ const desiredAmount = balance.times(fraction).integerValue(BigNumber.ROUND_HALF_UP);
118
+ const {
119
+ tx: {
120
+ fee
121
+ }
122
+ } = TxBuilder.unpackTx(await this.spendTx({ ...opt,
123
+ senderId,
124
+ recipientId,
125
+ amount: desiredAmount
126
+ })); // Reducing of the amount may reduce transaction fee, so this is not completely accurate
127
+
128
+ const amount = desiredAmount.plus(fee).gt(balance) ? balance.minus(fee) : desiredAmount;
129
+ return this.send(await this.spendTx({ ...opt,
130
+ senderId,
131
+ recipientId,
132
+ amount
133
+ }), opt);
235
134
  }
135
+ /**
136
+ * Submit transaction of another account paying for it (fee and gas)
137
+ * @instance
138
+ * @category async
139
+ * @rtype (transaction: String, options?: Object) => Promise[String]
140
+ * @param {String} transaction - tx_<base64>-encoded transaction
141
+ * @param {Object} [options]
142
+ * @return {Object} Transaction
143
+ */
236
144
 
237
- function transferFunds(_x6, _x7, _x8) {
238
- return _transferFunds.apply(this, arguments);
145
+
146
+ async function payForTransaction(transaction, options) {
147
+ const opt = { ...this.Ae.defaults,
148
+ ...options
149
+ };
150
+ return this.send(await this.payingForTx({ ...opt,
151
+ payerId: await this.address(opt),
152
+ tx: transaction
153
+ }), opt);
239
154
  }
240
155
  /**
241
156
  * Remove all listeners for RPC
@@ -244,86 +159,10 @@ function transferFunds(_x6, _x7, _x8) {
244
159
  */
245
160
 
246
161
 
247
- function _transferFunds() {
248
- _transferFunds = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(fraction, recipientIdOrName, options) {
249
- var opt, recipientId, senderId, balance, desiredAmount, _TxBuilder$unpackTx, fee, amount;
250
-
251
- return _regeneratorRuntime.wrap(function _callee4$(_context4) {
252
- while (1) {
253
- switch (_context4.prev = _context4.next) {
254
- case 0:
255
- if (!(fraction < 0 || fraction > 1)) {
256
- _context4.next = 2;
257
- break;
258
- }
259
-
260
- throw new Error("Fraction should be a number between 0 and 1, got ".concat(fraction));
261
-
262
- case 2:
263
- opt = _objectSpread(_objectSpread({}, this.Ae.defaults), options);
264
- _context4.next = 5;
265
- return this.resolveName(recipientIdOrName, 'ak', opt);
266
-
267
- case 5:
268
- recipientId = _context4.sent;
269
- _context4.next = 8;
270
- return this.address(opt);
271
-
272
- case 8:
273
- senderId = _context4.sent;
274
- _context4.t0 = BigNumber;
275
- _context4.next = 12;
276
- return this.balance(senderId);
277
-
278
- case 12:
279
- _context4.t1 = _context4.sent;
280
- balance = new _context4.t0(_context4.t1);
281
- desiredAmount = balance.times(fraction).integerValue(BigNumber.ROUND_HALF_UP);
282
- _context4.t2 = TxBuilder;
283
- _context4.next = 18;
284
- return this.spendTx(_objectSpread(_objectSpread({}, opt), {}, {
285
- senderId: senderId,
286
- recipientId: recipientId,
287
- amount: desiredAmount
288
- }));
289
-
290
- case 18:
291
- _context4.t3 = _context4.sent;
292
- _TxBuilder$unpackTx = _context4.t2.unpackTx.call(_context4.t2, _context4.t3);
293
- fee = _TxBuilder$unpackTx.tx.fee;
294
- // Reducing of the amount may reduce transaction fee, so this is not completely accurate
295
- amount = desiredAmount.plus(fee).gt(balance) ? balance.minus(fee) : desiredAmount;
296
- _context4.t4 = this;
297
- _context4.next = 25;
298
- return this.spendTx(_objectSpread(_objectSpread({}, opt), {}, {
299
- senderId: senderId,
300
- recipientId: recipientId,
301
- amount: amount
302
- }));
303
-
304
- case 25:
305
- _context4.t5 = _context4.sent;
306
- _context4.t6 = opt;
307
- return _context4.abrupt("return", _context4.t4.send.call(_context4.t4, _context4.t5, _context4.t6));
308
-
309
- case 28:
310
- case "end":
311
- return _context4.stop();
312
- }
313
- }
314
- }, _callee4, this);
315
- }));
316
- return _transferFunds.apply(this, arguments);
317
- }
318
-
319
162
  function destroyInstance() {
320
- var _this = this;
321
-
322
- var destroyMethods = ['destroyClient', 'destroyServer']; // Array with destroy function's
163
+ const destroyMethods = ['destroyClient', 'destroyServer']; // Array with destroy function's
323
164
 
324
- _forEachInstanceProperty(destroyMethods).call(destroyMethods, function (m) {
325
- return _this[m] && typeof _this[m] === 'function' && _this[m]();
326
- });
165
+ destroyMethods.forEach(m => this[m] && typeof this[m] === 'function' && this[m]());
327
166
  }
328
167
  /**
329
168
  * Basic Ae Stamp
@@ -346,13 +185,14 @@ function destroyInstance() {
346
185
  */
347
186
 
348
187
 
349
- var Ae = stampit(Tx, AccountBase, Chain, {
188
+ const Ae = stampit(Tx, AccountBase, Chain, {
350
189
  methods: {
351
- send: send,
352
- spend: spend,
353
- transferFunds: transferFunds,
354
- destroyInstance: destroyInstance,
355
- signUsingGA: signUsingGA
190
+ send,
191
+ spend,
192
+ transferFunds,
193
+ payForTransaction,
194
+ destroyInstance,
195
+ signUsingGA
356
196
  },
357
197
  deepProps: {
358
198
  Ae: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ae/index.js"],"names":["stampit","Tx","Chain","AccountBase","TxBuilder","BigNumber","AE_AMOUNT_FORMATS","send","tx","options","opt","Ae","defaults","address","getAccount","gaId","contractId","authFun","signUsingGA","signTransaction","signed","sendTransaction","authData","createMetaTx","spend","amount","recipientIdOrName","resolveName","senderId","recipientId","spendTx","transferFunds","fraction","Error","balance","desiredAmount","times","integerValue","ROUND_HALF_UP","unpackTx","fee","plus","gt","minus","destroyInstance","destroyMethods","m","methods","deepProps","denomination","AETTOS"],"mappings":"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","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Ae module\n * @module @aeternity/aepp-sdk/es/ae\n * @export Ae\n * @example import { Ae } from '@aeternity/aepp-sdk'\n */\n\nimport stampit from '@stamp/it'\nimport Tx from '../tx'\nimport Chain from '../chain'\nimport AccountBase from '../account/base'\nimport TxBuilder from '../tx/builder'\nimport * as R from 'ramda'\nimport BigNumber from 'bignumber.js'\nimport { AE_AMOUNT_FORMATS } from '../utils/amount-formatter'\n\n/**\n * Sign and post a transaction to the chain\n * @instance\n * @category async\n * @rtype (tx: String, options: Object) => Promise[String]\n * @param {String} tx - Transaction\n * @param {Object} [options={}] options - Options\n * @param {Object} [options.verify] verify - Verify transaction before broadcast, throw error if not valid\n * @return {Object} Transaction\n */\nasync function send (tx, options = {}) {\n const opt = R.merge(this.Ae.defaults, options)\n const { contractId: gaId, authFun } = await this.getAccount(await this.address(opt))\n const signed = gaId\n ? await this.signUsingGA(tx, { ...opt, authFun })\n : await this.signTransaction(tx, opt)\n return this.sendTransaction(signed, opt)\n}\n\nasync function signUsingGA (tx, { authData, authFun, ...options } = {}) {\n return this.createMetaTx(tx, authData, authFun, options)\n}\n\n/**\n * Send tokens to another account\n * @instance\n * @category async\n * @rtype (amount: Number|String, recipientIdOrName: String, options?: Object) => Promise[String]\n * @param {Number|String} amount - Amount to spend\n * @param {String} recipientIdOrName - Address or name of recipient account\n * @param {Object} [options] - Options\n * @return {Object} Transaction\n */\nasync function spend (amount, recipientIdOrName, options) {\n const opt = { ...this.Ae.defaults, ...options }\n return this.send(\n await this.spendTx({\n ...opt,\n senderId: await this.address(opt),\n recipientId: await this.resolveName(recipientIdOrName, 'ak', opt),\n amount\n }),\n opt\n )\n}\n\n// TODO: Rename to spendFraction\n/**\n * Send a fraction of token balance to another account\n * @instance\n * @category async\n * @rtype (fraction: Number|String, recipientIdOrName: String, options?: Object) => Promise[String]\n * @param {Number|String} fraction - Fraction of balance to spend (between 0 and 1)\n * @param {String} recipientIdOrName - Address or name of recipient account\n * @param {Object} [options] - Options\n * @return {Object} Transaction\n */\nasync function transferFunds (fraction, recipientIdOrName, options) {\n if (fraction < 0 || fraction > 1) {\n throw new Error(`Fraction should be a number between 0 and 1, got ${fraction}`)\n }\n const opt = { ...this.Ae.defaults, ...options }\n const recipientId = await this.resolveName(recipientIdOrName, 'ak', opt)\n const senderId = await this.address(opt)\n const balance = new BigNumber(await this.balance(senderId))\n const desiredAmount = balance.times(fraction).integerValue(BigNumber.ROUND_HALF_UP)\n const { tx: { fee } } = TxBuilder.unpackTx(\n await this.spendTx({ ...opt, senderId, recipientId, amount: desiredAmount })\n )\n // Reducing of the amount may reduce transaction fee, so this is not completely accurate\n const amount = desiredAmount.plus(fee).gt(balance) ? balance.minus(fee) : desiredAmount\n return this.send(await this.spendTx({ ...opt, senderId, recipientId, amount }), opt)\n}\n\n/**\n * Remove all listeners for RPC\n * @instance\n * @return {void}\n */\nfunction destroyInstance () {\n const destroyMethods = ['destroyClient', 'destroyServer'] // Array with destroy function's\n destroyMethods.forEach(m => this[m] && typeof this[m] === 'function' && this[m]())\n}\n\n/**\n * Basic Ae Stamp\n *\n * Attempting to create instances from the Stamp without overwriting all\n * abstract methods using composition will result in an exception.\n *\n * Ae objects are the composition of three basic building blocks:\n * * {@link module:@aeternity/aepp-sdk/es/tx--Tx}\n * * {@link module:@aeternity/aepp-sdk/es/account--Account}\n * * {@link module:@aeternity/aepp-sdk/es/chain--Chain}\n * Only by providing the joint functionality of those three, most more advanced\n * operations, i.e. the ones with actual use value on the chain, become\n * available.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Ae instance\n */\nconst Ae = stampit(Tx, AccountBase, Chain, {\n methods: { send, spend, transferFunds, destroyInstance, signUsingGA },\n deepProps: { Ae: { defaults: { denomination: AE_AMOUNT_FORMATS.AETTOS } } }\n})\n\nexport default Ae\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/ae/index.js"],"names":["stampit","Tx","Chain","AccountBase","TxBuilder","BigNumber","AE_AMOUNT_FORMATS","send","tx","options","opt","Ae","defaults","contractId","authFun","innerTx","getAccount","address","signed","signUsingGA","signTransaction","hash","buildTxHash","rawTx","sendTransaction","authData","createMetaTx","spend","amount","recipientIdOrName","spendTx","senderId","recipientId","resolveName","transferFunds","fraction","Error","balance","desiredAmount","times","integerValue","ROUND_HALF_UP","fee","unpackTx","plus","gt","minus","payForTransaction","transaction","payingForTx","payerId","destroyInstance","destroyMethods","forEach","m","methods","deepProps","denomination","AETTOS"],"mappings":"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","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Ae module\n * @module @aeternity/aepp-sdk/es/ae\n * @export Ae\n * @example import { Ae } from '@aeternity/aepp-sdk'\n */\n\nimport stampit from '@stamp/it'\nimport Tx from '../tx'\nimport Chain from '../chain'\nimport AccountBase from '../account/base'\nimport TxBuilder from '../tx/builder'\nimport BigNumber from 'bignumber.js'\nimport { AE_AMOUNT_FORMATS } from '../utils/amount-formatter'\n\n/**\n * Sign and post a transaction to the chain\n * @instance\n * @category async\n * @rtype (tx: String, options: Object) => Promise[String]\n * @param {String} tx - Transaction\n * @param {Object} [options={}] options - Options\n * @param {Object} [options.verify=true] - Verify transaction before broadcast, throw error if not\n * valid\n * @return {Object} Transaction\n */\nasync function send (tx, options = {}) {\n const opt = { ...this.Ae.defaults, ...options }\n const { contractId, authFun } = options.innerTx\n ? { contractId: false }\n : await this.getAccount(await this.address(opt))\n const signed = contractId\n ? await this.signUsingGA(tx, { ...opt, authFun })\n : await this.signTransaction(tx, opt)\n return opt.innerTx\n ? { hash: TxBuilder.buildTxHash(signed), rawTx: signed }\n : this.sendTransaction(signed, opt)\n}\n\nasync function signUsingGA (tx, { authData, authFun, ...options } = {}) {\n return this.createMetaTx(tx, authData, authFun, options)\n}\n\n/**\n * Send tokens to another account\n * @instance\n * @category async\n * @rtype (amount: Number|String, recipientIdOrName: String, options?: Object) => Promise[String]\n * @param {Number|String} amount - Amount to spend\n * @param {String} recipientIdOrName - Address or name of recipient account\n * @param {Object} [options] - Options\n * @return {Object} Transaction\n */\nasync function spend (amount, recipientIdOrName, options) {\n const opt = { ...this.Ae.defaults, ...options }\n return this.send(\n await this.spendTx({\n ...opt,\n senderId: await this.address(opt),\n recipientId: await this.resolveName(recipientIdOrName, 'account_pubkey', opt),\n amount\n }),\n opt\n )\n}\n\n// TODO: Rename to spendFraction\n/**\n * Send a fraction of token balance to another account\n * @instance\n * @category async\n * @rtype (fraction: Number|String, recipientIdOrName: String, options?: Object) => Promise[String]\n * @param {Number|String} fraction - Fraction of balance to spend (between 0 and 1)\n * @param {String} recipientIdOrName - Address or name of recipient account\n * @param {Object} [options] - Options\n * @return {Object} Transaction\n */\nasync function transferFunds (fraction, recipientIdOrName, options) {\n if (fraction < 0 || fraction > 1) {\n throw new Error(`Fraction should be a number between 0 and 1, got ${fraction}`)\n }\n const opt = { ...this.Ae.defaults, ...options }\n const recipientId = await this.resolveName(recipientIdOrName, 'account_pubkey', opt)\n const senderId = await this.address(opt)\n const balance = new BigNumber(await this.balance(senderId))\n const desiredAmount = balance.times(fraction).integerValue(BigNumber.ROUND_HALF_UP)\n const { tx: { fee } } = TxBuilder.unpackTx(\n await this.spendTx({ ...opt, senderId, recipientId, amount: desiredAmount })\n )\n // Reducing of the amount may reduce transaction fee, so this is not completely accurate\n const amount = desiredAmount.plus(fee).gt(balance) ? balance.minus(fee) : desiredAmount\n return this.send(await this.spendTx({ ...opt, senderId, recipientId, amount }), opt)\n}\n\n/**\n * Submit transaction of another account paying for it (fee and gas)\n * @instance\n * @category async\n * @rtype (transaction: String, options?: Object) => Promise[String]\n * @param {String} transaction - tx_<base64>-encoded transaction\n * @param {Object} [options]\n * @return {Object} Transaction\n */\nasync function payForTransaction (transaction, options) {\n const opt = { ...this.Ae.defaults, ...options }\n return this.send(\n await this.payingForTx({\n ...opt,\n payerId: await this.address(opt),\n tx: transaction\n }),\n opt\n )\n}\n\n/**\n * Remove all listeners for RPC\n * @instance\n * @return {void}\n */\nfunction destroyInstance () {\n const destroyMethods = ['destroyClient', 'destroyServer'] // Array with destroy function's\n destroyMethods.forEach(m => this[m] && typeof this[m] === 'function' && this[m]())\n}\n\n/**\n * Basic Ae Stamp\n *\n * Attempting to create instances from the Stamp without overwriting all\n * abstract methods using composition will result in an exception.\n *\n * Ae objects are the composition of three basic building blocks:\n * * {@link module:@aeternity/aepp-sdk/es/tx--Tx}\n * * {@link module:@aeternity/aepp-sdk/es/account--Account}\n * * {@link module:@aeternity/aepp-sdk/es/chain--Chain}\n * Only by providing the joint functionality of those three, most more advanced\n * operations, i.e. the ones with actual use value on the chain, become\n * available.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Ae instance\n */\nconst Ae = stampit(Tx, AccountBase, Chain, {\n methods: { send, spend, transferFunds, payForTransaction, destroyInstance, signUsingGA },\n deepProps: { Ae: { defaults: { denomination: AE_AMOUNT_FORMATS.AETTOS } } }\n})\n\nexport default Ae\n"],"file":"index.js"}