@aeternity/aepp-sdk 10.0.0-beta.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.
- package/CHANGELOG.md +1603 -0
- package/dist/aepp-sdk.browser-script.js +1 -1
- package/dist/aepp-sdk.browser-script.js.map +1 -1
- package/dist/aepp-sdk.browser.js +1 -1
- package/dist/aepp-sdk.browser.js.map +1 -1
- package/dist/aepp-sdk.js +1 -1
- package/dist/aepp-sdk.js.map +1 -1
- package/es/account/base.js +3 -1
- package/es/account/base.js.map +1 -1
- package/es/account/multiple.js +4 -2
- package/es/account/multiple.js.map +1 -1
- package/es/ae/aens.js +52 -38
- package/es/ae/aens.js.map +1 -1
- package/es/ae/contract.js +9 -5
- package/es/ae/contract.js.map +1 -1
- package/es/ae/index.js +4 -3
- package/es/ae/index.js.map +1 -1
- package/es/ae/oracle.js +4 -4
- package/es/ae/oracle.js.map +1 -1
- package/es/ae/universal.js.map +1 -1
- package/es/chain/index.js +8 -4
- package/es/chain/index.js.map +1 -1
- package/es/chain/node.js +15 -20
- package/es/chain/node.js.map +1 -1
- package/es/channel/handlers.js.map +1 -1
- package/es/channel/index.js +35 -14
- package/es/channel/index.js.map +1 -1
- package/es/contract/aci/index.js +12 -7
- package/es/contract/aci/index.js.map +1 -1
- package/es/contract/compiler.js +3 -1
- package/es/contract/compiler.js.map +1 -1
- package/es/contract/ga/helpers.js +6 -6
- package/es/contract/ga/helpers.js.map +1 -1
- package/es/contract/ga/index.js +6 -2
- package/es/contract/ga/index.js.map +1 -1
- package/es/contract/index.js +6 -2
- package/es/contract/index.js.map +1 -1
- package/es/index.js +1 -0
- package/es/index.js.map +1 -1
- package/es/node-pool/index.js +4 -2
- package/es/node-pool/index.js.map +1 -1
- package/es/node.js +9 -4
- package/es/node.js.map +1 -1
- package/es/tx/builder/helpers.js +20 -33
- package/es/tx/builder/helpers.js.map +1 -1
- package/es/tx/builder/index.js +13 -6
- package/es/tx/builder/index.js.map +1 -1
- package/es/tx/builder/schema.js +5 -4
- package/es/tx/builder/schema.js.map +1 -1
- package/es/tx/index.js +101 -12
- package/es/tx/index.js.map +1 -1
- package/es/tx/tx-object.js +9 -3
- package/es/tx/tx-object.js.map +1 -1
- package/es/tx/tx.js.map +1 -1
- package/es/utils/aepp-wallet-communication/connection/browser-runtime.js +3 -2
- package/es/utils/aepp-wallet-communication/connection/browser-runtime.js.map +1 -1
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.js +15 -6
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.js.map +1 -1
- package/es/utils/aepp-wallet-communication/connection/index.js +2 -1
- package/es/utils/aepp-wallet-communication/connection/index.js.map +1 -1
- package/es/utils/aepp-wallet-communication/content-script-bridge.js +10 -4
- package/es/utils/aepp-wallet-communication/content-script-bridge.js.map +1 -1
- package/es/utils/aepp-wallet-communication/helpers.js.map +1 -1
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js +13 -5
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js.map +1 -1
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.js +9 -5
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.js.map +1 -1
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js +57 -40
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js.map +1 -1
- package/es/utils/aepp-wallet-communication/wallet-detector.js.map +1 -1
- package/es/utils/crypto.js +1 -40
- package/es/utils/crypto.js.map +1 -1
- package/es/utils/keystore.js.map +1 -1
- package/es/utils/swagger.js +3 -1
- package/es/utils/swagger.js.map +1 -1
- package/package.json +11 -13
- package/src/account/base.js +3 -1
- package/src/account/multiple.js +4 -2
- package/src/ae/aens.js +41 -42
- package/src/ae/contract.js +9 -5
- package/src/ae/index.js +4 -3
- package/src/ae/oracle.js +9 -5
- package/src/ae/universal.js +3 -1
- package/src/chain/index.js +8 -4
- package/src/chain/node.js +17 -14
- package/src/channel/handlers.js +10 -3
- package/src/channel/index.js +40 -15
- package/src/contract/aci/index.js +15 -8
- package/src/contract/compiler.js +6 -2
- package/src/contract/ga/helpers.js +5 -3
- package/src/contract/ga/index.js +6 -2
- package/src/contract/index.js +6 -2
- package/src/index.js +2 -0
- package/src/node-pool/index.js +4 -2
- package/src/node.js +7 -4
- package/src/tx/builder/helpers.js +20 -33
- package/src/tx/builder/index.js +49 -13
- package/src/tx/builder/schema.js +37 -14
- package/src/tx/index.js +101 -12
- package/src/tx/tx-object.js +25 -6
- package/src/tx/tx.js +94 -28
- package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +3 -2
- package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +25 -7
- package/src/utils/aepp-wallet-communication/connection/index.js +2 -1
- package/src/utils/aepp-wallet-communication/content-script-bridge.js +10 -4
- package/src/utils/aepp-wallet-communication/helpers.js +4 -2
- package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +32 -9
- package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +9 -5
- package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +53 -22
- package/src/utils/aepp-wallet-communication/wallet-detector.js +4 -1
- package/src/utils/crypto.js +1 -52
- package/src/utils/keystore.js +10 -2
- package/src/utils/swagger.js +1 -1
package/es/contract/aci/index.js
CHANGED
|
@@ -29,7 +29,8 @@ function getFunctionACI(aci, name, external) {
|
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
|
-
* Generate contract ACI object with predefined js methods for contract usage - can be used for
|
|
32
|
+
* Generate contract ACI object with predefined js methods for contract usage - can be used for
|
|
33
|
+
* creating a reference to already deployed contracts
|
|
33
34
|
* @alias module:@aeternity/aepp-sdk/es/contract/aci
|
|
34
35
|
* @param {Object} [options={}] Options object
|
|
35
36
|
* @param {String} [options.source] Contract source code
|
|
@@ -42,10 +43,13 @@ function getFunctionACI(aci, name, external) {
|
|
|
42
43
|
* @example
|
|
43
44
|
* const contractIns = await client.getContractInstance({ source })
|
|
44
45
|
* await contractIns.deploy([321]) or await contractIns.methods.init(321)
|
|
45
|
-
* const callResult = await contractIns.call('setState', [123]) or
|
|
46
|
-
*
|
|
46
|
+
* const callResult = await contractIns.call('setState', [123]) or
|
|
47
|
+
* await contractIns.methods.setState.send(123, options)
|
|
48
|
+
* const staticCallResult = await contractIns.call('setState', [123], { callStatic: true }) or
|
|
49
|
+
* await contractIns.methods.setState.get(123, options)
|
|
47
50
|
* Also you can call contract like: await contractIns.methods.setState(123, options)
|
|
48
|
-
* Then sdk decide to make on-chain or static call(dry-run API) transaction based on function is
|
|
51
|
+
* Then sdk decide to make on-chain or static call(dry-run API) transaction based on function is
|
|
52
|
+
* stateful or not
|
|
49
53
|
*/
|
|
50
54
|
|
|
51
55
|
|
|
@@ -65,7 +69,7 @@ export default async function getContractInstance() {
|
|
|
65
69
|
filesystem
|
|
66
70
|
}));
|
|
67
71
|
if (!aci) throw new Error('Either ACI or source code is required');
|
|
68
|
-
contractAddress = contractAddress && (await this.resolveName(contractAddress, '
|
|
72
|
+
contractAddress = contractAddress && (await this.resolveName(contractAddress, 'contract_pubkey', {
|
|
69
73
|
resolveByNode: true
|
|
70
74
|
}));
|
|
71
75
|
if (!contractAddress && !source && !bytecode) throw new Error('Can\'t create instance by ACI without address');
|
|
@@ -80,7 +84,7 @@ export default async function getContractInstance() {
|
|
|
80
84
|
interface: _defaultTo(null, _prop('interface', aci)),
|
|
81
85
|
aci: _defaultTo(null, _path(['encoded_aci', 'contract'], aci)),
|
|
82
86
|
calldata: new Calldata([aci.encoded_aci, ...aci.external_encoded_aci]),
|
|
83
|
-
externalAci: aci.external_encoded_aci
|
|
87
|
+
externalAci: (aci.external_encoded_aci ?? []).map(a => a.contract || a.namespace),
|
|
84
88
|
source,
|
|
85
89
|
bytecode,
|
|
86
90
|
deployInfo: {
|
|
@@ -314,7 +318,8 @@ export default async function getContractInstance() {
|
|
|
314
318
|
/**
|
|
315
319
|
* Generate proto function based on contract function using Contract ACI schema
|
|
316
320
|
* All function can be called like:
|
|
317
|
-
* 'await contract.methods.testFunction()' -> then sdk will decide to use dry-run or send tx
|
|
321
|
+
* 'await contract.methods.testFunction()' -> then sdk will decide to use dry-run or send tx
|
|
322
|
+
* on-chain base on if function stateful or not.
|
|
318
323
|
* Also you can manually do that:
|
|
319
324
|
* `await contract.methods.testFunction.get()` -> use call-static(dry-run)
|
|
320
325
|
* `await contract.methods.testFunction.send()` -> send tx on-chain
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/contract/aci/index.js"],"names":["BigNumber","Encoder","Calldata","decodeEvents","DRY_RUN_ACCOUNT","DEPOSIT","TxObject","decode","getFunctionACI","aci","name","external","fn","functions","find","f","Error","bindings","state","type_defs","map","event","variant","getContractInstance","source","bytecode","contractAddress","filesystem","validateBytecode","otherOptions","contractGetACI","resolveName","resolveByNode","contract","getContract","catch","active","instance","interface","calldata","encoded_aci","external_encoded_aci","externalAci","a","namespace","deployInfo","address","options","Ae","defaults","callStatic","compilerVersion","onChanBytecode","getContractByteCode","isValid","validateByteCodeAPI","compile","contractCompile","sendAndProcess","tx","txData","send","result","hash","rawTx","waitMined","txInfo","getTxInfo","handleCallError","returnType","returnValue","message","decodeFateString","toString","deploy","params","opt","deposit","call","ownerId","contractId","contractCreateTx","callData","encode","code","Object","freeze","owner","transaction","args","contractCall","contractCallStatic","createdAt","Date","fnACI","amount","gt","prototype","hasOwnProperty","payable","callerId","error","pub","res","top","getKeyBlock","txOpt","nonce","getAccount","contractCallTx","callObj","dryRunOther","txDryRun","decodedResult","returns","decodedEvents","log","events","eventsACI","eventsSchema","e","keys","types","methods","fromEntries","arguments","aciArgs","stateful","genHandler","length","pop","assign","get"],"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 * ContractACI module\n *\n * @module @aeternity/aepp-sdk/es/contract/aci\n * @export getContractInstance\n */\n\nimport * as R from 'ramda'\nimport BigNumber from 'bignumber.js'\nimport { Encoder as Calldata } from '@aeternity/aepp-calldata'\nimport { decodeEvents } from './transformation'\nimport { DRY_RUN_ACCOUNT, DEPOSIT } from '../../tx/builder/schema'\nimport TxObject from '../../tx/tx-object'\nimport { decode } from '../../tx/builder/helpers'\n\n/**\n * Get function schema from contract ACI object\n * @param {Object} aci Contract ACI object\n * @param {String} name Function name\n * @param external\n * @return {Object} function ACI\n */\nfunction getFunctionACI (aci, name, external) {\n const fn = aci.functions.find(f => f.name === name)\n if (!fn && name !== 'init') throw new Error(`Function ${name} doesn't exist in contract`)\n\n return {\n ...fn,\n bindings: [\n {\n state: aci.state,\n type_defs: aci.type_defs,\n name: aci.name\n },\n ...external.map(R.pick(['state', 'type_defs', 'name']))\n ],\n event: aci.event ? aci.event.variant : []\n }\n}\n\n/**\n * Generate contract ACI object with predefined js methods for contract usage - can be used for creating a reference to already deployed contracts\n * @alias module:@aeternity/aepp-sdk/es/contract/aci\n * @param {Object} [options={}] Options object\n * @param {String} [options.source] Contract source code\n * @param {String} [options.bytecode] Contract bytecode\n * @param {Object} [options.aci] Contract ACI\n * @param {String} [options.contractAddress] Contract address\n * @param {Object} [options.filesystem] Contact source external namespaces map\n * @param {Boolean} [options.validateBytecode] Compare source code with on-chain version\n * @return {ContractInstance} JS Contract API\n * @example\n * const contractIns = await client.getContractInstance({ source })\n * await contractIns.deploy([321]) or await contractIns.methods.init(321)\n * const callResult = await contractIns.call('setState', [123]) or await contractIns.methods.setState.send(123, options)\n * const staticCallResult = await contractIns.call('setState', [123], { callStatic: true }) or await contractIns.methods.setState.get(123, options)\n * Also you can call contract like: await contractIns.methods.setState(123, options)\n * Then sdk decide to make on-chain or static call(dry-run API) transaction based on function is stateful or not\n */\nexport default async function getContractInstance ({\n source,\n bytecode,\n aci,\n contractAddress,\n filesystem = {},\n validateBytecode,\n ...otherOptions\n} = {}) {\n aci = aci || (source && await this.contractGetACI(source, { filesystem }))\n if (!aci) throw new Error('Either ACI or source code is required')\n contractAddress = contractAddress && await this.resolveName(\n contractAddress, 'ct', { resolveByNode: true }\n )\n if (!contractAddress && !source && !bytecode) throw new Error('Can\\'t create instance by ACI without address')\n\n if (contractAddress) {\n const contract = await this.getContract(contractAddress).catch(() => null)\n if (!contract) throw new Error(`Contract with address ${contractAddress} not found on-chain`)\n if (!contract.active) throw new Error(`Contract with address ${contractAddress} not active`)\n }\n\n const instance = {\n interface: R.defaultTo(null, R.prop('interface', aci)),\n aci: R.defaultTo(null, R.path(['encoded_aci', 'contract'], aci)),\n calldata: new Calldata([aci.encoded_aci, ...aci.external_encoded_aci]),\n externalAci: aci.external_encoded_aci ? aci.external_encoded_aci.map(a => a.contract || a.namespace) : [],\n source,\n bytecode,\n deployInfo: { address: contractAddress },\n options: {\n ...this.Ae.defaults,\n callStatic: false,\n filesystem,\n ...otherOptions\n },\n compilerVersion: this.compilerVersion\n }\n\n if (validateBytecode) {\n if (!contractAddress) throw new Error('Can\\'t validate bytecode without contract address')\n const onChanBytecode = (await this.getContractByteCode(contractAddress)).bytecode\n const isValid = (source && await this\n .validateByteCodeAPI(onChanBytecode, source, instance.options).catch(() => false)) ||\n bytecode === onChanBytecode\n if (!isValid) throw new Error(`Contract ${source ? 'source' : 'bytecode'} do not correspond to the bytecode deployed on the chain`)\n }\n\n /**\n * Compile contract\n * @alias module:@aeternity/aepp-sdk/es/contract/aci\n * @rtype () => ContractInstance: Object\n * @return {String} bytecode bytecode\n */\n instance.compile = async (options = {}) => {\n if (instance.bytecode) throw new Error('Contract already compiled')\n if (!instance.source) throw new Error('Can\\'t compile without source code')\n const { bytecode } = await this.contractCompile(instance.source, { ...instance.options, ...options })\n instance.bytecode = bytecode\n return instance.bytecode\n }\n\n const sendAndProcess = async (tx, options) => {\n const txData = await this.send(tx, options)\n const result = {\n hash: txData.hash, tx: TxObject({ tx: txData.rawTx }), txData, rawTx: txData.rawTx\n }\n if (options.waitMined === false) return result\n const txInfo = await this.getTxInfo(txData.hash)\n await handleCallError(txInfo)\n return { ...result, result: txInfo }\n }\n\n const handleCallError = ({ returnType, returnValue }) => {\n let message\n // TODO: ensure that it works correctly https://github.com/aeternity/aepp-calldata-js/issues/88\n switch (returnType) {\n case 'ok': return\n case 'revert':\n message = instance.calldata.decodeFateString(returnValue)\n break\n case 'error':\n message = decode(returnValue).toString()\n break\n default: throw new Error(`Unknown returnType: ${returnType}`)\n }\n throw new Error(`Invocation failed${message ? `: \"${message}\"` : ''}`)\n }\n\n /**\n * Deploy contract\n * @alias module:@aeternity/aepp-sdk/es/contract/aci\n * @rtype (init: Array, options: Object) => ContractInstance: Object\n * @param {Array} params Contract init function arguments array\n * @param {Object} [options] options\n * @return {Object} deploy info\n */\n instance.deploy = async (params = [], options) => {\n const opt = { ...instance.options, ...options, deposit: DEPOSIT }\n if (!instance.bytecode) await instance.compile(opt)\n if (opt.callStatic) return instance.call('init', params, opt)\n if (instance.deployInfo.address) throw new Error('Contract already deployed')\n\n const ownerId = await this.address(opt)\n const { tx, contractId } = await this.contractCreateTx({\n ...opt,\n callData: instance.calldata.encode(instance.aci.name, 'init', params),\n code: instance.bytecode,\n ownerId\n })\n const { hash, rawTx, result, txData } = await sendAndProcess(tx, opt)\n instance.deployInfo = 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(instance.source, contractId, name, args, { ...opt, ...options }),\n callStatic: (name, args, options) =>\n this.contractCallStatic(instance.source, contractId, name, args, { ...opt, ...options }),\n createdAt: new Date()\n })\n return instance.deployInfo\n }\n\n /**\n * Call contract function\n * @alias module:@aeternity/aepp-sdk/es/contract/aci\n * @rtype (init: Array, options: Object = { callStatic: false }) => CallResult: Object\n * @param {String} fn Function name\n * @param {Array} params Array of function arguments\n * @param {Object} [options={}] Array of function arguments\n * @param {Boolean} [options.callStatic=false] Static function call\n * @return {Object} CallResult\n */\n instance.call = async (fn, params = [], options = {}) => {\n const opt = { ...instance.options, ...options }\n const fnACI = getFunctionACI(instance.aci, fn, instance.externalAci)\n const contractId = instance.deployInfo.address\n\n if (!fn) throw new Error('Function name is required')\n if (fn === 'init' && !opt.callStatic) throw new Error('\"init\" can be called only via dryRun')\n if (!contractId && fn !== 'init') throw new Error('You need to deploy contract before calling!')\n if (\n BigNumber(opt.amount).gt(0) &&\n (Object.prototype.hasOwnProperty.call(fnACI, 'payable') && !fnACI.payable)\n ) throw new Error(`You try to pay \"${opt.amount}\" to function \"${fn}\" which is not payable. Only payable function can accept tokens`)\n\n const callerId = await this.address(opt).catch(error => {\n if (opt.callStatic) return DRY_RUN_ACCOUNT.pub\n else throw error\n })\n const callData = instance.calldata.encode(instance.aci.name, fn, params)\n\n let res\n if (opt.callStatic) {\n if (typeof opt.top === 'number') {\n opt.top = (await this.getKeyBlock(opt.top)).hash\n }\n const txOpt = {\n ...opt,\n callData,\n nonce: opt.top && (await this.getAccount(callerId, { hash: opt.top })).nonce + 1\n }\n const tx = fn === 'init'\n ? (await this.contractCreateTx({ ...txOpt, code: instance.bytecode, ownerId: callerId })).tx\n : await this.contractCallTx({ ...txOpt, callerId, contractId })\n\n const { callObj, ...dryRunOther } = await this.txDryRun(tx, callerId, opt)\n await handleCallError(callObj)\n res = { ...dryRunOther, tx: TxObject({ tx }), result: callObj }\n } else {\n const tx = await this.contractCallTx({ ...opt, callerId, contractId, callData })\n res = await sendAndProcess(tx, opt)\n }\n if (opt.waitMined || opt.callStatic) {\n res.decodedResult = fnACI.returns && fnACI.returns !== 'unit' && fn !== 'init' &&\n instance.calldata.decode(instance.aci.name, fn, res.result.returnValue)\n res.decodedEvents = instance.decodeEvents(res.result.log)\n }\n return res\n }\n\n /**\n * Decode Events\n * @alias module:@aeternity/aepp-sdk/es/contract/aci\n * @rtype (events: Array) => DecodedEvents: Array\n * @param {Array} events Array of encoded events(callRes.result.log)\n * @return {Object} DecodedEvents\n */\n instance.decodeEvents = (events) => {\n const eventsACI = instance.aci.event ? instance.aci.event.variant : []\n const eventsSchema = eventsACI.map(e => {\n const name = Object.keys(e)[0]\n return { name, types: e[name] }\n })\n\n return decodeEvents(events, eventsSchema)\n }\n\n /**\n * Generate proto function based on contract function using Contract ACI schema\n * All function can be called like:\n * 'await contract.methods.testFunction()' -> then sdk will decide to use dry-run or send tx on-chain base on if function stateful or not.\n * Also you can manually do that:\n * `await contract.methods.testFunction.get()` -> use call-static(dry-run)\n * `await contract.methods.testFunction.send()` -> send tx on-chain\n */\n instance.methods = Object.fromEntries(instance.aci.functions\n .map(({ name, arguments: aciArgs, stateful }) => {\n const genHandler = callStatic => (...args) => {\n const options = args.length === aciArgs.length + 1 ? args.pop() : {}\n if (typeof options !== 'object') throw new Error(`Options should be an object: ${options}`)\n if (name === 'init') return instance.deploy(args, { callStatic, ...options })\n return instance.call(name, args, { callStatic, ...options })\n }\n return [\n name,\n Object.assign(\n genHandler(name === 'init' ? false : !stateful),\n {\n get: genHandler(true),\n send: genHandler(false),\n decodeEvents: events => instance.decodeEvents(events)\n }\n )\n ]\n })\n )\n\n return instance\n}\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/contract/aci/index.js"],"names":["BigNumber","Encoder","Calldata","decodeEvents","DRY_RUN_ACCOUNT","DEPOSIT","TxObject","decode","getFunctionACI","aci","name","external","fn","functions","find","f","Error","bindings","state","type_defs","map","event","variant","getContractInstance","source","bytecode","contractAddress","filesystem","validateBytecode","otherOptions","contractGetACI","resolveName","resolveByNode","contract","getContract","catch","active","instance","interface","calldata","encoded_aci","external_encoded_aci","externalAci","a","namespace","deployInfo","address","options","Ae","defaults","callStatic","compilerVersion","onChanBytecode","getContractByteCode","isValid","validateByteCodeAPI","compile","contractCompile","sendAndProcess","tx","txData","send","result","hash","rawTx","waitMined","txInfo","getTxInfo","handleCallError","returnType","returnValue","message","decodeFateString","toString","deploy","params","opt","deposit","call","ownerId","contractId","contractCreateTx","callData","encode","code","Object","freeze","owner","transaction","args","contractCall","contractCallStatic","createdAt","Date","fnACI","amount","gt","prototype","hasOwnProperty","payable","callerId","error","pub","res","top","getKeyBlock","txOpt","nonce","getAccount","contractCallTx","callObj","dryRunOther","txDryRun","decodedResult","returns","decodedEvents","log","events","eventsACI","eventsSchema","e","keys","types","methods","fromEntries","arguments","aciArgs","stateful","genHandler","length","pop","assign","get"],"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 * ContractACI module\n *\n * @module @aeternity/aepp-sdk/es/contract/aci\n * @export getContractInstance\n */\n\nimport * as R from 'ramda'\nimport BigNumber from 'bignumber.js'\nimport { Encoder as Calldata } from '@aeternity/aepp-calldata'\nimport { decodeEvents } from './transformation'\nimport { DRY_RUN_ACCOUNT, DEPOSIT } from '../../tx/builder/schema'\nimport TxObject from '../../tx/tx-object'\nimport { decode } from '../../tx/builder/helpers'\n\n/**\n * Get function schema from contract ACI object\n * @param {Object} aci Contract ACI object\n * @param {String} name Function name\n * @param external\n * @return {Object} function ACI\n */\nfunction getFunctionACI (aci, name, external) {\n const fn = aci.functions.find(f => f.name === name)\n if (!fn && name !== 'init') throw new Error(`Function ${name} doesn't exist in contract`)\n\n return {\n ...fn,\n bindings: [\n {\n state: aci.state,\n type_defs: aci.type_defs,\n name: aci.name\n },\n ...external.map(R.pick(['state', 'type_defs', 'name']))\n ],\n event: aci.event ? aci.event.variant : []\n }\n}\n\n/**\n * Generate contract ACI object with predefined js methods for contract usage - can be used for\n * creating a reference to already deployed contracts\n * @alias module:@aeternity/aepp-sdk/es/contract/aci\n * @param {Object} [options={}] Options object\n * @param {String} [options.source] Contract source code\n * @param {String} [options.bytecode] Contract bytecode\n * @param {Object} [options.aci] Contract ACI\n * @param {String} [options.contractAddress] Contract address\n * @param {Object} [options.filesystem] Contact source external namespaces map\n * @param {Boolean} [options.validateBytecode] Compare source code with on-chain version\n * @return {ContractInstance} JS Contract API\n * @example\n * const contractIns = await client.getContractInstance({ source })\n * await contractIns.deploy([321]) or await contractIns.methods.init(321)\n * const callResult = await contractIns.call('setState', [123]) or\n * await contractIns.methods.setState.send(123, options)\n * const staticCallResult = await contractIns.call('setState', [123], { callStatic: true }) or\n * await contractIns.methods.setState.get(123, options)\n * Also you can call contract like: await contractIns.methods.setState(123, options)\n * Then sdk decide to make on-chain or static call(dry-run API) transaction based on function is\n * stateful or not\n */\nexport default async function getContractInstance ({\n source,\n bytecode,\n aci,\n contractAddress,\n filesystem = {},\n validateBytecode,\n ...otherOptions\n} = {}) {\n aci = aci || (source && await this.contractGetACI(source, { filesystem }))\n if (!aci) throw new Error('Either ACI or source code is required')\n contractAddress = contractAddress && await this.resolveName(\n contractAddress, 'contract_pubkey', { resolveByNode: true }\n )\n if (!contractAddress && !source && !bytecode) throw new Error('Can\\'t create instance by ACI without address')\n\n if (contractAddress) {\n const contract = await this.getContract(contractAddress).catch(() => null)\n if (!contract) throw new Error(`Contract with address ${contractAddress} not found on-chain`)\n if (!contract.active) throw new Error(`Contract with address ${contractAddress} not active`)\n }\n\n const instance = {\n interface: R.defaultTo(null, R.prop('interface', aci)),\n aci: R.defaultTo(null, R.path(['encoded_aci', 'contract'], aci)),\n calldata: new Calldata([aci.encoded_aci, ...aci.external_encoded_aci]),\n externalAci: (aci.external_encoded_aci ?? []).map(a => a.contract || a.namespace),\n source,\n bytecode,\n deployInfo: { address: contractAddress },\n options: {\n ...this.Ae.defaults,\n callStatic: false,\n filesystem,\n ...otherOptions\n },\n compilerVersion: this.compilerVersion\n }\n\n if (validateBytecode) {\n if (!contractAddress) throw new Error('Can\\'t validate bytecode without contract address')\n const onChanBytecode = (await this.getContractByteCode(contractAddress)).bytecode\n const isValid = (source && await this\n .validateByteCodeAPI(onChanBytecode, source, instance.options).catch(() => false)) ||\n bytecode === onChanBytecode\n if (!isValid) throw new Error(`Contract ${source ? 'source' : 'bytecode'} do not correspond to the bytecode deployed on the chain`)\n }\n\n /**\n * Compile contract\n * @alias module:@aeternity/aepp-sdk/es/contract/aci\n * @rtype () => ContractInstance: Object\n * @return {String} bytecode bytecode\n */\n instance.compile = async (options = {}) => {\n if (instance.bytecode) throw new Error('Contract already compiled')\n if (!instance.source) throw new Error('Can\\'t compile without source code')\n const { bytecode } = await this.contractCompile(\n instance.source, { ...instance.options, ...options }\n )\n instance.bytecode = bytecode\n return instance.bytecode\n }\n\n const sendAndProcess = async (tx, options) => {\n const txData = await this.send(tx, options)\n const result = {\n hash: txData.hash, tx: TxObject({ tx: txData.rawTx }), txData, rawTx: txData.rawTx\n }\n if (options.waitMined === false) return result\n const txInfo = await this.getTxInfo(txData.hash)\n await handleCallError(txInfo)\n return { ...result, result: txInfo }\n }\n\n const handleCallError = ({ returnType, returnValue }) => {\n let message\n // TODO: ensure that it works correctly https://github.com/aeternity/aepp-calldata-js/issues/88\n switch (returnType) {\n case 'ok': return\n case 'revert':\n message = instance.calldata.decodeFateString(returnValue)\n break\n case 'error':\n message = decode(returnValue).toString()\n break\n default: throw new Error(`Unknown returnType: ${returnType}`)\n }\n throw new Error(`Invocation failed${message ? `: \"${message}\"` : ''}`)\n }\n\n /**\n * Deploy contract\n * @alias module:@aeternity/aepp-sdk/es/contract/aci\n * @rtype (init: Array, options: Object) => ContractInstance: Object\n * @param {Array} params Contract init function arguments array\n * @param {Object} [options] options\n * @return {Object} deploy info\n */\n instance.deploy = async (params = [], options) => {\n const opt = { ...instance.options, ...options, deposit: DEPOSIT }\n if (!instance.bytecode) await instance.compile(opt)\n if (opt.callStatic) return instance.call('init', params, opt)\n if (instance.deployInfo.address) throw new Error('Contract already deployed')\n\n const ownerId = await this.address(opt)\n const { tx, contractId } = await this.contractCreateTx({\n ...opt,\n callData: instance.calldata.encode(instance.aci.name, 'init', params),\n code: instance.bytecode,\n ownerId\n })\n const { hash, rawTx, result, txData } = await sendAndProcess(tx, opt)\n instance.deployInfo = 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(instance.source, contractId, name, args, { ...opt, ...options }),\n callStatic: (name, args, options) =>\n this.contractCallStatic(instance.source, contractId, name, args, { ...opt, ...options }),\n createdAt: new Date()\n })\n return instance.deployInfo\n }\n\n /**\n * Call contract function\n * @alias module:@aeternity/aepp-sdk/es/contract/aci\n * @rtype (init: Array, options: Object = { callStatic: false }) => CallResult: Object\n * @param {String} fn Function name\n * @param {Array} params Array of function arguments\n * @param {Object} [options={}] Array of function arguments\n * @param {Boolean} [options.callStatic=false] Static function call\n * @return {Object} CallResult\n */\n instance.call = async (fn, params = [], options = {}) => {\n const opt = { ...instance.options, ...options }\n const fnACI = getFunctionACI(instance.aci, fn, instance.externalAci)\n const contractId = instance.deployInfo.address\n\n if (!fn) throw new Error('Function name is required')\n if (fn === 'init' && !opt.callStatic) throw new Error('\"init\" can be called only via dryRun')\n if (!contractId && fn !== 'init') throw new Error('You need to deploy contract before calling!')\n if (\n BigNumber(opt.amount).gt(0) &&\n (Object.prototype.hasOwnProperty.call(fnACI, 'payable') && !fnACI.payable)\n ) throw new Error(`You try to pay \"${opt.amount}\" to function \"${fn}\" which is not payable. Only payable function can accept tokens`)\n\n const callerId = await this.address(opt).catch(error => {\n if (opt.callStatic) return DRY_RUN_ACCOUNT.pub\n else throw error\n })\n const callData = instance.calldata.encode(instance.aci.name, fn, params)\n\n let res\n if (opt.callStatic) {\n if (typeof opt.top === 'number') {\n opt.top = (await this.getKeyBlock(opt.top)).hash\n }\n const txOpt = {\n ...opt,\n callData,\n nonce: opt.top && (await this.getAccount(callerId, { hash: opt.top })).nonce + 1\n }\n const tx = fn === 'init'\n ? (await this.contractCreateTx({ ...txOpt, code: instance.bytecode, ownerId: callerId })).tx\n : await this.contractCallTx({ ...txOpt, callerId, contractId })\n\n const { callObj, ...dryRunOther } = await this.txDryRun(tx, callerId, opt)\n await handleCallError(callObj)\n res = { ...dryRunOther, tx: TxObject({ tx }), result: callObj }\n } else {\n const tx = await this.contractCallTx({ ...opt, callerId, contractId, callData })\n res = await sendAndProcess(tx, opt)\n }\n if (opt.waitMined || opt.callStatic) {\n res.decodedResult = fnACI.returns && fnACI.returns !== 'unit' && fn !== 'init' &&\n instance.calldata.decode(instance.aci.name, fn, res.result.returnValue)\n res.decodedEvents = instance.decodeEvents(res.result.log)\n }\n return res\n }\n\n /**\n * Decode Events\n * @alias module:@aeternity/aepp-sdk/es/contract/aci\n * @rtype (events: Array) => DecodedEvents: Array\n * @param {Array} events Array of encoded events(callRes.result.log)\n * @return {Object} DecodedEvents\n */\n instance.decodeEvents = (events) => {\n const eventsACI = instance.aci.event ? instance.aci.event.variant : []\n const eventsSchema = eventsACI.map(e => {\n const name = Object.keys(e)[0]\n return { name, types: e[name] }\n })\n\n return decodeEvents(events, eventsSchema)\n }\n\n /**\n * Generate proto function based on contract function using Contract ACI schema\n * All function can be called like:\n * 'await contract.methods.testFunction()' -> then sdk will decide to use dry-run or send tx\n * on-chain base on if function stateful or not.\n * Also you can manually do that:\n * `await contract.methods.testFunction.get()` -> use call-static(dry-run)\n * `await contract.methods.testFunction.send()` -> send tx on-chain\n */\n instance.methods = Object.fromEntries(instance.aci.functions\n .map(({ name, arguments: aciArgs, stateful }) => {\n const genHandler = callStatic => (...args) => {\n const options = args.length === aciArgs.length + 1 ? args.pop() : {}\n if (typeof options !== 'object') throw new Error(`Options should be an object: ${options}`)\n if (name === 'init') return instance.deploy(args, { callStatic, ...options })\n return instance.call(name, args, { callStatic, ...options })\n }\n return [\n name,\n Object.assign(\n genHandler(name === 'init' ? false : !stateful),\n {\n get: genHandler(true),\n send: genHandler(false),\n decodeEvents: events => instance.decodeEvents(events)\n }\n )\n ]\n })\n )\n\n return instance\n}\n"],"file":"index.js"}
|
package/es/contract/compiler.js
CHANGED
|
@@ -189,7 +189,9 @@ export default AsyncInit.compose(ContractBase, {
|
|
|
189
189
|
* @param {Object} [options.filesystem={}] Contract external namespaces map
|
|
190
190
|
* @return {Promise<String>} Result object
|
|
191
191
|
* @example
|
|
192
|
-
* const decodedData = await sdk.contractDecodeCallResultAPI(
|
|
192
|
+
* const decodedData = await sdk.contractDecodeCallResultAPI(
|
|
193
|
+
* SourceCode ,'functionName', 'cb_asdasdasd...', 'ok|revert'
|
|
194
|
+
* )
|
|
193
195
|
*/
|
|
194
196
|
contractDecodeCallResultAPI(source, fn, callValue, callResult, options) {
|
|
195
197
|
this._ensureCompilerReady();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/contract/compiler.js"],"names":["ContractBase","semverSatisfies","AsyncInit","genSwaggerClient","compose","init","compilerUrl","ignoreVersion","setCompilerUrl","methods","Error","replace","client","disableBigNumbers","disableCaseConversion","responseInterceptor","response","ok","message","URL","url","pathname","slice","body","reason","parameter","info","JSON","stringify","Array","isArray","map","e","type","pos","line","col","context","trim","join","statusText","compilerVersion","spec","version","_compilerApi","api","COMPILER_GE_VERSION","COMPILER_LT_VERSION","_ensureCompilerReady","_prepareCompilerOptions","filesystem","file_system","getCompilerVersion","Promise","resolve","contractEncodeCallDataAPI","source","name","args","options","calldata","encodeCalldata","function","arguments","compileContractAPI","code","bytecode","compileContract","contractGetACI","generateACI","contractDecodeCallDataByCodeAPI","decodeCalldataBytecode","contractDecodeCallDataBySourceAPI","fn","callData","decodeCalldataSource","contractDecodeCallResultAPI","callValue","callResult","decodeCallResult","validateByteCodeAPI","res","validateByteCode","getFateAssembler","getFateAssemblerCode","getBytecodeCompilerVersion","props"],"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 * ContractCompilerAPI module\n *\n * This is the complement to {@link module:@aeternity/aepp-sdk/es/contract}.\n * @module @aeternity/aepp-sdk/es/contract/compiler\n * @export ContractCompilerAPI\n * @example import { ContractCompilerAPI } from '@aeternity/aepp-sdk'\n */\n\nimport ContractBase from './index'\nimport semverSatisfies from '../utils/semver-satisfies'\nimport AsyncInit from '../utils/async-init'\nimport genSwaggerClient from '../utils/swagger'\n\n/**\n * Contract Compiler Stamp\n *\n * This stamp include api call's related to contract compiler functionality.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/contract/compiler\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {String} [options.compilerUrl] compilerUrl - Url for compiler API\n * @return {Object} Contract compiler instance\n * @example ContractCompilerAPI({ compilerUrl: 'COMPILER_URL' })\n */\nexport default AsyncInit.compose(ContractBase, {\n async init ({ compilerUrl, ignoreVersion }) {\n if (!compilerUrl) return\n await this.setCompilerUrl(compilerUrl, { ignoreVersion })\n },\n methods: {\n async setCompilerUrl (compilerUrl, { ignoreVersion = false } = {}) {\n if (!compilerUrl) throw new Error('\"compilerUrl\" required')\n compilerUrl = compilerUrl.replace(/\\/$/, '')\n const client = await genSwaggerClient(`${compilerUrl}/api`, {\n disableBigNumbers: true,\n disableCaseConversion: true,\n responseInterceptor: response => {\n if (response.ok) return\n let message = `${new URL(response.url).pathname.slice(1)} error`\n if (response.body.reason) {\n message += ': ' + response.body.reason +\n (response.body.parameter ? ` in ${response.body.parameter}` : '') +\n // TODO: revising after improving documentation https://github.com/aeternity/aesophia_http/issues/78\n (response.body.info ? ` (${JSON.stringify(response.body.info)})` : '')\n }\n if (Array.isArray(response.body)) {\n message += ':\\n' + response.body\n .map(e => `${e.type}:${e.pos.line}:${e.pos.col}: ${e.message}${e.context ? `(${e.context})` : ''}`)\n .map(e => e.trim()) // TODO: remove after fixing https://github.com/aeternity/aesophia_http/issues/80\n .join('\\n')\n }\n response.statusText = message\n return response\n }\n })\n this.compilerVersion = client.spec.info.version\n this._compilerApi = client.api\n\n if (ignoreVersion) return\n if (!semverSatisfies(this.compilerVersion, COMPILER_GE_VERSION, COMPILER_LT_VERSION)) {\n throw new Error(`Unsupported compiler version ${this.compilerVersion}. ` +\n `Supported: >= ${COMPILER_GE_VERSION} < ${COMPILER_LT_VERSION}`)\n }\n },\n _ensureCompilerReady () {\n if (!this._compilerApi) throw new Error('Compiler is not ready')\n },\n _prepareCompilerOptions ({ filesystem = {} } = {}) {\n return { file_system: filesystem }\n },\n getCompilerVersion () {\n this._ensureCompilerReady()\n return Promise.resolve(this.compilerVersion)\n },\n /**\n * Encode call data for contract call\n * @function\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 */\n async contractEncodeCallDataAPI (source, name, args = [], options) {\n this._ensureCompilerReady()\n const { calldata } = await this._compilerApi.encodeCalldata({\n source,\n function: name,\n arguments: args,\n options: this._prepareCompilerOptions(options)\n })\n return calldata\n },\n async compileContractAPI (code, options) {\n this._ensureCompilerReady()\n const { bytecode } = await this._compilerApi.compileContract({\n code,\n options: this._prepareCompilerOptions(options)\n })\n return bytecode\n },\n contractGetACI (code, options) {\n this._ensureCompilerReady()\n return this._compilerApi.generateACI({ code, options: this._prepareCompilerOptions(options) })\n },\n contractDecodeCallDataByCodeAPI (bytecode, calldata) {\n this._ensureCompilerReady()\n return this._compilerApi.decodeCalldataBytecode({ bytecode, calldata })\n },\n contractDecodeCallDataBySourceAPI (source, fn, callData, options) {\n this._ensureCompilerReady()\n return this._compilerApi.decodeCalldataSource({\n function: fn,\n source,\n calldata: callData,\n options: this._prepareCompilerOptions(options)\n })\n },\n /**\n * Decode contract call result data\n * @function\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 sdk.contractDecodeCallResultAPI(SourceCode ,'functionName', 'cb_asdasdasd...', 'ok|revert')lt\n */\n contractDecodeCallResultAPI (source, fn, callValue, callResult, options) {\n this._ensureCompilerReady()\n return this._compilerApi.decodeCallResult({\n function: fn,\n source,\n 'call-result': callResult,\n 'call-value': callValue,\n options: this._prepareCompilerOptions(options)\n })\n },\n async validateByteCodeAPI (bytecode, source, options) {\n this._ensureCompilerReady()\n const res = await this._compilerApi.validateByteCode({\n bytecode,\n source,\n options: this._prepareCompilerOptions(options)\n })\n return typeof res === 'object' ? true : res\n },\n getFateAssembler (bytecode, options) {\n this._ensureCompilerReady()\n return this._compilerApi.getFateAssemblerCode({ bytecode, options: this._prepareCompilerOptions(options) })\n },\n getBytecodeCompilerVersion (bytecode, options) {\n this._ensureCompilerReady()\n return this._compilerApi.getCompilerVersion({\n bytecode,\n options: this._prepareCompilerOptions(options)\n })\n }\n },\n props: {\n compilerVersion: null\n }\n})\n\nconst COMPILER_GE_VERSION = '6.0.0'\nconst COMPILER_LT_VERSION = '7.0.0'\n"],"file":"compiler.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/contract/compiler.js"],"names":["ContractBase","semverSatisfies","AsyncInit","genSwaggerClient","compose","init","compilerUrl","ignoreVersion","setCompilerUrl","methods","Error","replace","client","disableBigNumbers","disableCaseConversion","responseInterceptor","response","ok","message","URL","url","pathname","slice","body","reason","parameter","info","JSON","stringify","Array","isArray","map","e","type","pos","line","col","context","trim","join","statusText","compilerVersion","spec","version","_compilerApi","api","COMPILER_GE_VERSION","COMPILER_LT_VERSION","_ensureCompilerReady","_prepareCompilerOptions","filesystem","file_system","getCompilerVersion","Promise","resolve","contractEncodeCallDataAPI","source","name","args","options","calldata","encodeCalldata","function","arguments","compileContractAPI","code","bytecode","compileContract","contractGetACI","generateACI","contractDecodeCallDataByCodeAPI","decodeCalldataBytecode","contractDecodeCallDataBySourceAPI","fn","callData","decodeCalldataSource","contractDecodeCallResultAPI","callValue","callResult","decodeCallResult","validateByteCodeAPI","res","validateByteCode","getFateAssembler","getFateAssemblerCode","getBytecodeCompilerVersion","props"],"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 * ContractCompilerAPI module\n *\n * This is the complement to {@link module:@aeternity/aepp-sdk/es/contract}.\n * @module @aeternity/aepp-sdk/es/contract/compiler\n * @export ContractCompilerAPI\n * @example import { ContractCompilerAPI } from '@aeternity/aepp-sdk'\n */\n\nimport ContractBase from './index'\nimport semverSatisfies from '../utils/semver-satisfies'\nimport AsyncInit from '../utils/async-init'\nimport genSwaggerClient from '../utils/swagger'\n\n/**\n * Contract Compiler Stamp\n *\n * This stamp include api call's related to contract compiler functionality.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/contract/compiler\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {String} [options.compilerUrl] compilerUrl - Url for compiler API\n * @return {Object} Contract compiler instance\n * @example ContractCompilerAPI({ compilerUrl: 'COMPILER_URL' })\n */\nexport default AsyncInit.compose(ContractBase, {\n async init ({ compilerUrl, ignoreVersion }) {\n if (!compilerUrl) return\n await this.setCompilerUrl(compilerUrl, { ignoreVersion })\n },\n methods: {\n async setCompilerUrl (compilerUrl, { ignoreVersion = false } = {}) {\n if (!compilerUrl) throw new Error('\"compilerUrl\" required')\n compilerUrl = compilerUrl.replace(/\\/$/, '')\n const client = await genSwaggerClient(`${compilerUrl}/api`, {\n disableBigNumbers: true,\n disableCaseConversion: true,\n responseInterceptor: response => {\n if (response.ok) return\n let message = `${new URL(response.url).pathname.slice(1)} error`\n if (response.body.reason) {\n message += ': ' + response.body.reason +\n (response.body.parameter ? ` in ${response.body.parameter}` : '') +\n // TODO: revising after improving documentation https://github.com/aeternity/aesophia_http/issues/78\n (response.body.info ? ` (${JSON.stringify(response.body.info)})` : '')\n }\n if (Array.isArray(response.body)) {\n message += ':\\n' + response.body\n .map(e => `${e.type}:${e.pos.line}:${e.pos.col}: ${e.message}${e.context ? `(${e.context})` : ''}`)\n .map(e => e.trim()) // TODO: remove after fixing https://github.com/aeternity/aesophia_http/issues/80\n .join('\\n')\n }\n response.statusText = message\n return response\n }\n })\n this.compilerVersion = client.spec.info.version\n this._compilerApi = client.api\n\n if (ignoreVersion) return\n if (!semverSatisfies(this.compilerVersion, COMPILER_GE_VERSION, COMPILER_LT_VERSION)) {\n throw new Error(`Unsupported compiler version ${this.compilerVersion}. ` +\n `Supported: >= ${COMPILER_GE_VERSION} < ${COMPILER_LT_VERSION}`)\n }\n },\n _ensureCompilerReady () {\n if (!this._compilerApi) throw new Error('Compiler is not ready')\n },\n _prepareCompilerOptions ({ filesystem = {} } = {}) {\n return { file_system: filesystem }\n },\n getCompilerVersion () {\n this._ensureCompilerReady()\n return Promise.resolve(this.compilerVersion)\n },\n /**\n * Encode call data for contract call\n * @function\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 */\n async contractEncodeCallDataAPI (source, name, args = [], options) {\n this._ensureCompilerReady()\n const { calldata } = await this._compilerApi.encodeCalldata({\n source,\n function: name,\n arguments: args,\n options: this._prepareCompilerOptions(options)\n })\n return calldata\n },\n async compileContractAPI (code, options) {\n this._ensureCompilerReady()\n const { bytecode } = await this._compilerApi.compileContract({\n code,\n options: this._prepareCompilerOptions(options)\n })\n return bytecode\n },\n contractGetACI (code, options) {\n this._ensureCompilerReady()\n return this._compilerApi.generateACI({ code, options: this._prepareCompilerOptions(options) })\n },\n contractDecodeCallDataByCodeAPI (bytecode, calldata) {\n this._ensureCompilerReady()\n return this._compilerApi.decodeCalldataBytecode({ bytecode, calldata })\n },\n contractDecodeCallDataBySourceAPI (source, fn, callData, options) {\n this._ensureCompilerReady()\n return this._compilerApi.decodeCalldataSource({\n function: fn,\n source,\n calldata: callData,\n options: this._prepareCompilerOptions(options)\n })\n },\n /**\n * Decode contract call result data\n * @function\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 sdk.contractDecodeCallResultAPI(\n * SourceCode ,'functionName', 'cb_asdasdasd...', 'ok|revert'\n * )\n */\n contractDecodeCallResultAPI (source, fn, callValue, callResult, options) {\n this._ensureCompilerReady()\n return this._compilerApi.decodeCallResult({\n function: fn,\n source,\n 'call-result': callResult,\n 'call-value': callValue,\n options: this._prepareCompilerOptions(options)\n })\n },\n async validateByteCodeAPI (bytecode, source, options) {\n this._ensureCompilerReady()\n const res = await this._compilerApi.validateByteCode({\n bytecode,\n source,\n options: this._prepareCompilerOptions(options)\n })\n return typeof res === 'object' ? true : res\n },\n getFateAssembler (bytecode, options) {\n this._ensureCompilerReady()\n return this._compilerApi.getFateAssemblerCode(\n { bytecode, options: this._prepareCompilerOptions(options) }\n )\n },\n getBytecodeCompilerVersion (bytecode, options) {\n this._ensureCompilerReady()\n return this._compilerApi.getCompilerVersion({\n bytecode,\n options: this._prepareCompilerOptions(options)\n })\n }\n },\n props: {\n compilerVersion: null\n }\n})\n\nconst COMPILER_GE_VERSION = '6.0.0'\nconst COMPILER_LT_VERSION = '7.0.0'\n"],"file":"compiler.js"}
|
|
@@ -11,12 +11,12 @@ export const prepareGaParams = ins => async (authData, authFnName) => {
|
|
|
11
11
|
authCallData: authData.callData,
|
|
12
12
|
gas
|
|
13
13
|
};
|
|
14
|
-
} else {
|
|
15
|
-
if (!authData.source || !authData.args) throw new Error('Auth data must contain source code and arguments.');
|
|
16
|
-
return {
|
|
17
|
-
authCallData: await ins.contractEncodeCallDataAPI(authData.source, authFnName, authData.args),
|
|
18
|
-
gas
|
|
19
|
-
};
|
|
20
14
|
}
|
|
15
|
+
|
|
16
|
+
if (!authData.source || !authData.args) throw new Error('Auth data must contain source code and arguments.');
|
|
17
|
+
return {
|
|
18
|
+
authCallData: await ins.contractEncodeCallDataAPI(authData.source, authFnName, authData.args),
|
|
19
|
+
gas
|
|
20
|
+
};
|
|
21
21
|
};
|
|
22
22
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/contract/ga/helpers.js"],"names":["BigNumber","MAX_AUTH_FUN_GAS","prepareGaParams","ins","authData","authFnName","Error","gas","gt","callData","split","authCallData","source","args","contractEncodeCallDataAPI"],"mappings":"AAAA,OAAOA,SAAP,MAAsB,cAAtB;AACA,SAASC,gBAAT,QAAiC,yBAAjC;AAEA,OAAO,MAAMC,eAAe,GAAIC,GAAD,IAAS,OAAOC,QAAP,EAAiBC,UAAjB,KAAgC;AACtE,MAAI,OAAOD,QAAP,KAAoB,QAAxB,EAAkC,MAAM,IAAIE,KAAJ,CAAU,4BAAV,CAAN;AAClC,MAAIF,QAAQ,CAACG,GAAT,IAAgBP,SAAS,CAACI,QAAQ,CAACG,GAAV,CAAT,CAAwBC,EAAxB,CAA2BP,gBAA3B,CAApB,EAAkE,MAAM,IAAIK,KAAJ,CAAW,2CAA0CL,gBAAiB,SAAQG,QAAQ,CAACG,GAAI,EAA3F,CAAN;AAClE,QAAMA,GAAG,GAAGH,QAAQ,CAACG,GAAT,IAAgBN,gBAA5B;;AACA,MAAIG,QAAQ,CAACK,QAAb,EAAuB;AACrB,QAAIL,QAAQ,CAACK,QAAT,CAAkBC,KAAlB,CAAwB,GAAxB,EAA6B,CAA7B,MAAoC,IAAxC,EAA8C,MAAM,IAAIJ,KAAJ,CAAU,8CAAV,CAAN;AAC9C,WAAO;AAAEK,MAAAA,YAAY,EAAEP,QAAQ,CAACK,QAAzB;AAAmCF,MAAAA;AAAnC,KAAP;AACD,
|
|
1
|
+
{"version":3,"sources":["../../../src/contract/ga/helpers.js"],"names":["BigNumber","MAX_AUTH_FUN_GAS","prepareGaParams","ins","authData","authFnName","Error","gas","gt","callData","split","authCallData","source","args","contractEncodeCallDataAPI"],"mappings":"AAAA,OAAOA,SAAP,MAAsB,cAAtB;AACA,SAASC,gBAAT,QAAiC,yBAAjC;AAEA,OAAO,MAAMC,eAAe,GAAIC,GAAD,IAAS,OAAOC,QAAP,EAAiBC,UAAjB,KAAgC;AACtE,MAAI,OAAOD,QAAP,KAAoB,QAAxB,EAAkC,MAAM,IAAIE,KAAJ,CAAU,4BAAV,CAAN;AAClC,MAAIF,QAAQ,CAACG,GAAT,IAAgBP,SAAS,CAACI,QAAQ,CAACG,GAAV,CAAT,CAAwBC,EAAxB,CAA2BP,gBAA3B,CAApB,EAAkE,MAAM,IAAIK,KAAJ,CAAW,2CAA0CL,gBAAiB,SAAQG,QAAQ,CAACG,GAAI,EAA3F,CAAN;AAClE,QAAMA,GAAG,GAAGH,QAAQ,CAACG,GAAT,IAAgBN,gBAA5B;;AACA,MAAIG,QAAQ,CAACK,QAAb,EAAuB;AACrB,QAAIL,QAAQ,CAACK,QAAT,CAAkBC,KAAlB,CAAwB,GAAxB,EAA6B,CAA7B,MAAoC,IAAxC,EAA8C,MAAM,IAAIJ,KAAJ,CAAU,8CAAV,CAAN;AAC9C,WAAO;AAAEK,MAAAA,YAAY,EAAEP,QAAQ,CAACK,QAAzB;AAAmCF,MAAAA;AAAnC,KAAP;AACD;;AACD,MAAI,CAACH,QAAQ,CAACQ,MAAV,IAAoB,CAACR,QAAQ,CAACS,IAAlC,EAAwC,MAAM,IAAIP,KAAJ,CAAU,mDAAV,CAAN;AACxC,SAAO;AACLK,IAAAA,YAAY,EAAE,MAAMR,GAAG,CAACW,yBAAJ,CAA8BV,QAAQ,CAACQ,MAAvC,EAA+CP,UAA/C,EAA2DD,QAAQ,CAACS,IAApE,CADf;AAELN,IAAAA;AAFK,GAAP;AAID,CAbM","sourcesContent":["import BigNumber from 'bignumber.js'\nimport { MAX_AUTH_FUN_GAS } from '../../tx/builder/schema'\n\nexport const prepareGaParams = (ins) => async (authData, authFnName) => {\n if (typeof authData !== 'object') throw new Error('AuthData must be an object')\n if (authData.gas && BigNumber(authData.gas).gt(MAX_AUTH_FUN_GAS)) throw new Error(`the maximum gas value for ga authFun is ${MAX_AUTH_FUN_GAS}, got ${authData.gas}`)\n const gas = authData.gas || MAX_AUTH_FUN_GAS\n if (authData.callData) {\n if (authData.callData.split('_')[0] !== 'cb') throw new Error('Auth data must be a string with \"cb\" prefix.')\n return { authCallData: authData.callData, gas }\n }\n if (!authData.source || !authData.args) throw new Error('Auth data must contain source code and arguments.')\n return {\n authCallData: await ins.contractEncodeCallDataAPI(authData.source, authFnName, authData.args),\n gas\n }\n}\n"],"file":"helpers.js"}
|
package/es/contract/ga/index.js
CHANGED
|
@@ -44,7 +44,9 @@ import { hash } from '../../utils/crypto';
|
|
|
44
44
|
* const callData = 'cb_...' // encoded call data for auth contract
|
|
45
45
|
* await client.spend(10000, receiverPub, { authData: { callData } })
|
|
46
46
|
* // or
|
|
47
|
-
* await client.spend(10000, receiverPub, {
|
|
47
|
+
* await client.spend(10000, receiverPub, {
|
|
48
|
+
* authData: { source: authContract, args: [...authContractArgs] }
|
|
49
|
+
* }) // sdk will prepare callData itself
|
|
48
50
|
*/
|
|
49
51
|
|
|
50
52
|
export const GeneralizeAccount = ContractAPI.compose({
|
|
@@ -77,7 +79,9 @@ async function isGA(address) {
|
|
|
77
79
|
* @param {String} source - Auth contract source code
|
|
78
80
|
* @param {Array} [args] - init arguments
|
|
79
81
|
* @param {Object} [options] - Options
|
|
80
|
-
* @return {Promise<Readonly<{
|
|
82
|
+
* @return {Promise<Readonly<{
|
|
83
|
+
* result: *, owner: *, createdAt: Date, address, rawTx: *, transaction: *
|
|
84
|
+
* }>>}
|
|
81
85
|
*/
|
|
82
86
|
|
|
83
87
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/contract/ga/index.js"],"names":["ContractAPI","TX_TYPE","buildTx","unpackTx","prepareGaParams","hash","GeneralizeAccount","compose","methods","createGeneralizeAccount","createMetaTx","isGA","address","contractId","getAccount","authFnName","source","args","options","opt","Ae","defaults","ownerId","Error","tx","gaAttachTx","code","contractCompile","bytecode","callData","contractEncodeCallDataAPI","authFun","transaction","rawTx","send","Object","freeze","owner","gaContractId","wrapInEmptySignedTx","encodedTx","signatures","signed","rawTransaction","authData","authCallData","gas","abiVersion","getVmVersion","contractCall","wrappedTx","params","txObject","gaId","vsn","fee","prepareTxParams","gaMeta","rlpEncoded","metaTxRlp"],"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 * Generalize Account module - routines to use generalize account\n *\n * @module @aeternity/aepp-sdk/es/contract/ga\n * @export GeneralizeAccount\n * @example import { GeneralizeAccount } from '@aeternity/aepp-sdk'\n */\nimport { ContractAPI } from '../../ae/contract'\nimport { TX_TYPE } from '../../tx/builder/schema'\nimport { buildTx, unpackTx } from '../../tx/builder'\nimport { prepareGaParams } from './helpers'\nimport { hash } from '../../utils/crypto'\n\n/**\n * GeneralizeAccount Stamp\n *\n * Provide Generalize Account implementation\n * {@link module:@aeternity/aepp-sdk/es/contract/ga} clients.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/contract/ga\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} GeneralizeAccount instance\n * @example\n * const authContract = ``\n * await client.createGeneralizeAccount(authFnName, authContract, [...authFnArguments]\n * // Make spend using GA\n * const callData = 'cb_...' // encoded call data for auth contract\n * await client.spend(10000, receiverPub, { authData: { callData } })\n * // or\n * await client.spend(10000, receiverPub, { authData: { source: authContract, args: [...authContractArgs] } }) // sdk will prepare callData itself\n */\nexport const GeneralizeAccount = ContractAPI.compose({\n methods: {\n createGeneralizeAccount,\n createMetaTx,\n isGA\n }\n})\nexport default GeneralizeAccount\n\n/**\n * @alias module:@aeternity/aepp-sdk/es/contract/ga\n * @function\n * Check if account is GA account\n * @param {String} address - Account address\n * @return {Boolean}\n */\nasync function isGA (address) {\n const { contractId } = await this.getAccount(address)\n return !!contractId\n}\n\n/**\n * Convert current account to GA account\n * @alias module:@aeternity/aepp-sdk/es/contract/ga\n * @function\n * @param {String} authFnName - Authorization function name\n * @param {String} source - Auth contract source code\n * @param {Array} [args] - init arguments\n * @param {Object} [options] - Options\n * @return {Promise<Readonly<{result: *, owner: *, createdAt: Date, address, rawTx: *, transaction: *}>>}\n */\nasync function createGeneralizeAccount (authFnName, source, args = [], options = {}) {\n const opt = { ...this.Ae.defaults, ...options }\n const ownerId = await this.address(opt)\n\n if (await this.isGA(ownerId)) throw new Error(`Account ${ownerId} is already GA`)\n\n const { tx, contractId } = await this.gaAttachTx({\n ...opt,\n ownerId,\n code: (await this.contractCompile(source)).bytecode,\n callData: await this.contractEncodeCallDataAPI(source, 'init', args),\n authFun: hash(authFnName)\n })\n\n const { hash: transaction, rawTx } = await this.send(tx, opt)\n\n return Object.freeze({\n owner: ownerId,\n transaction,\n rawTx,\n gaContractId: contractId\n })\n}\n\nconst wrapInEmptySignedTx = (tx) => buildTx({ encodedTx: tx, signatures: [] }, TX_TYPE.signed)\n\n/**\n * Create a metaTx transaction\n * @alias module:@aeternity/aepp-sdk/es/contract/ga\n * @function\n * @param {String} rawTransaction Inner transaction\n * @param {Object} authData Object with gaMeta params\n * @param {String} authFnName - Authorization function name\n * @param {Object} options - Options\n * @return {String}\n */\nasync function createMetaTx (rawTransaction, authData, authFnName, options = {}) {\n if (!authData) throw new Error('authData is required')\n // Check if authData is callData or if it's an object prepare a callData from source and args\n const { authCallData, gas } = await prepareGaParams(this)(authData, authFnName)\n const opt = { ...this.Ae.defaults, ...options }\n const { abiVersion } = await this.getVmVersion(TX_TYPE.contractCall)\n const wrappedTx = wrapInEmptySignedTx(unpackTx(rawTransaction))\n const params = {\n ...opt,\n tx: {\n ...wrappedTx,\n tx: wrappedTx.txObject\n },\n gaId: await this.address(opt),\n abiVersion: abiVersion,\n authData: authCallData,\n gas,\n vsn: 2\n }\n const { fee } = await this.prepareTxParams(TX_TYPE.gaMeta, params)\n const { rlpEncoded: metaTxRlp } = buildTx(\n { ...params, fee: `${fee}` },\n TX_TYPE.gaMeta,\n { vsn: 2 }\n )\n return wrapInEmptySignedTx(metaTxRlp).tx\n}\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/contract/ga/index.js"],"names":["ContractAPI","TX_TYPE","buildTx","unpackTx","prepareGaParams","hash","GeneralizeAccount","compose","methods","createGeneralizeAccount","createMetaTx","isGA","address","contractId","getAccount","authFnName","source","args","options","opt","Ae","defaults","ownerId","Error","tx","gaAttachTx","code","contractCompile","bytecode","callData","contractEncodeCallDataAPI","authFun","transaction","rawTx","send","Object","freeze","owner","gaContractId","wrapInEmptySignedTx","encodedTx","signatures","signed","rawTransaction","authData","authCallData","gas","abiVersion","getVmVersion","contractCall","wrappedTx","params","txObject","gaId","vsn","fee","prepareTxParams","gaMeta","rlpEncoded","metaTxRlp"],"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 * Generalize Account module - routines to use generalize account\n *\n * @module @aeternity/aepp-sdk/es/contract/ga\n * @export GeneralizeAccount\n * @example import { GeneralizeAccount } from '@aeternity/aepp-sdk'\n */\nimport { ContractAPI } from '../../ae/contract'\nimport { TX_TYPE } from '../../tx/builder/schema'\nimport { buildTx, unpackTx } from '../../tx/builder'\nimport { prepareGaParams } from './helpers'\nimport { hash } from '../../utils/crypto'\n\n/**\n * GeneralizeAccount Stamp\n *\n * Provide Generalize Account implementation\n * {@link module:@aeternity/aepp-sdk/es/contract/ga} clients.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/contract/ga\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} GeneralizeAccount instance\n * @example\n * const authContract = ``\n * await client.createGeneralizeAccount(authFnName, authContract, [...authFnArguments]\n * // Make spend using GA\n * const callData = 'cb_...' // encoded call data for auth contract\n * await client.spend(10000, receiverPub, { authData: { callData } })\n * // or\n * await client.spend(10000, receiverPub, {\n * authData: { source: authContract, args: [...authContractArgs] }\n * }) // sdk will prepare callData itself\n */\nexport const GeneralizeAccount = ContractAPI.compose({\n methods: {\n createGeneralizeAccount,\n createMetaTx,\n isGA\n }\n})\nexport default GeneralizeAccount\n\n/**\n * @alias module:@aeternity/aepp-sdk/es/contract/ga\n * @function\n * Check if account is GA account\n * @param {String} address - Account address\n * @return {Boolean}\n */\nasync function isGA (address) {\n const { contractId } = await this.getAccount(address)\n return !!contractId\n}\n\n/**\n * Convert current account to GA account\n * @alias module:@aeternity/aepp-sdk/es/contract/ga\n * @function\n * @param {String} authFnName - Authorization function name\n * @param {String} source - Auth contract source code\n * @param {Array} [args] - init arguments\n * @param {Object} [options] - Options\n * @return {Promise<Readonly<{\n * result: *, owner: *, createdAt: Date, address, rawTx: *, transaction: *\n * }>>}\n */\nasync function createGeneralizeAccount (authFnName, source, args = [], options = {}) {\n const opt = { ...this.Ae.defaults, ...options }\n const ownerId = await this.address(opt)\n\n if (await this.isGA(ownerId)) throw new Error(`Account ${ownerId} is already GA`)\n\n const { tx, contractId } = await this.gaAttachTx({\n ...opt,\n ownerId,\n code: (await this.contractCompile(source)).bytecode,\n callData: await this.contractEncodeCallDataAPI(source, 'init', args),\n authFun: hash(authFnName)\n })\n\n const { hash: transaction, rawTx } = await this.send(tx, opt)\n\n return Object.freeze({\n owner: ownerId,\n transaction,\n rawTx,\n gaContractId: contractId\n })\n}\n\nconst wrapInEmptySignedTx = (tx) => buildTx({ encodedTx: tx, signatures: [] }, TX_TYPE.signed)\n\n/**\n * Create a metaTx transaction\n * @alias module:@aeternity/aepp-sdk/es/contract/ga\n * @function\n * @param {String} rawTransaction Inner transaction\n * @param {Object} authData Object with gaMeta params\n * @param {String} authFnName - Authorization function name\n * @param {Object} options - Options\n * @return {String}\n */\nasync function createMetaTx (rawTransaction, authData, authFnName, options = {}) {\n if (!authData) throw new Error('authData is required')\n // Check if authData is callData or if it's an object prepare a callData from source and args\n const { authCallData, gas } = await prepareGaParams(this)(authData, authFnName)\n const opt = { ...this.Ae.defaults, ...options }\n const { abiVersion } = await this.getVmVersion(TX_TYPE.contractCall)\n const wrappedTx = wrapInEmptySignedTx(unpackTx(rawTransaction))\n const params = {\n ...opt,\n tx: {\n ...wrappedTx,\n tx: wrappedTx.txObject\n },\n gaId: await this.address(opt),\n abiVersion: abiVersion,\n authData: authCallData,\n gas,\n vsn: 2\n }\n const { fee } = await this.prepareTxParams(TX_TYPE.gaMeta, params)\n const { rlpEncoded: metaTxRlp } = buildTx(\n { ...params, fee: `${fee}` },\n TX_TYPE.gaMeta,\n { vsn: 2 }\n )\n return wrapInEmptySignedTx(metaTxRlp).tx\n}\n"],"file":"index.js"}
|
package/es/contract/index.js
CHANGED
|
@@ -83,7 +83,9 @@ const ContractBase = stampit(required({
|
|
|
83
83
|
* @instance
|
|
84
84
|
* @abstract
|
|
85
85
|
* @category async
|
|
86
|
-
* @rtype (
|
|
86
|
+
* @rtype (
|
|
87
|
+
* source: String, fn: String, callValue: String, callResult: String, options: Array
|
|
88
|
+
* ) => decodedResult: Promise[String]
|
|
87
89
|
* @param {String} source - Contract source
|
|
88
90
|
* @param {String} fn - Fn name
|
|
89
91
|
* @param {String} callValue - result data (cb_das...)
|
|
@@ -99,7 +101,9 @@ const ContractBase = stampit(required({
|
|
|
99
101
|
* @instance
|
|
100
102
|
* @abstract
|
|
101
103
|
* @category async
|
|
102
|
-
* @rtype (
|
|
104
|
+
* @rtype (
|
|
105
|
+
* source: String, function: String, callData: String, options: Array
|
|
106
|
+
* ) => decodedResult: Promise[String]
|
|
103
107
|
* @param {String} source - contract source
|
|
104
108
|
* @param {String} function - function name
|
|
105
109
|
* @param {String} callData - Encoded contract call data
|
package/es/contract/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/contract/index.js"],"names":["stampit","required","ContractBase","methods","contractEncodeCallDataAPI","compileContractAPI","contractGetACI","setCompilerUrl","getCompilerVersion","contractDecodeCallResultAPI","validateByteCodeAPI","getFateAssembler","getBytecodeCompilerVersion"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA,OAAOA,OAAP,MAAoB,WAApB;AACA,SAASC,QAAT,QAAyB,iBAAzB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,YAAY,GAAGF,OAAO,CAACC,QAAQ,CAAC;AACpCE,EAAAA,OAAO,EAAE;AACPC,IAAAA,yBAAyB,EAAEH,QADpB;AAEPI,IAAAA,kBAAkB,EAAEJ,QAFb;AAGPK,IAAAA,cAAc,EAAEL,QAHT;AAIPM,IAAAA,cAAc,EAAEN,QAJT;AAKPO,IAAAA,kBAAkB,EAAEP,QALb;AAMPQ,IAAAA,2BAA2B,EAAER,QANtB;AAOPS,IAAAA,mBAAmB,EAAET,QAPd;AAQPU,IAAAA,gBAAgB,EAAEV,QARX;AASPW,IAAAA,0BAA0B,EAAEX;AATrB;AAD2B,CAAD,CAAT,CAA5B;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAeC,YAAf","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 Base module\n * @module @aeternity/aepp-sdk/es/contract\n * @export Contract\n * @example import ContractBase from '@aeternity/aepp-sdk/es/contract'\n */\n\nimport stampit from '@stamp/it'\nimport { required } from '@stamp/required'\n\n/**\n * Basic Contract Stamp\n *\n * This stamp include api call's related to contract functionality.\n * Attempting to create instances from the Stamp without overwriting all\n * abstract methods using composition will result in an exception.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/contract\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Contract instance\n */\nconst ContractBase = stampit(required({\n methods: {\n contractEncodeCallDataAPI: required,\n compileContractAPI: required,\n contractGetACI: required,\n setCompilerUrl: required,\n getCompilerVersion: required,\n contractDecodeCallResultAPI: required,\n validateByteCodeAPI: required,\n getFateAssembler: required,\n getBytecodeCompilerVersion: required\n }\n}))\n\n/**\n * Get contract ACI\n * @function contractGetACI\n * @instance\n * @abstract\n * @category async\n * @rtype (source: String, options: Array) => aciObject: Promise[Object]\n * @param {String} source - Contract source code\n * @param {Object} [options={}] Options\n * @param {Object} [options.filesystem] Contract external namespaces map\n * @return {Object} - Contract aci object\n */\n\n/**\n * Encode contract data\n * @function contractEncodeCallDataAPI\n * @instance\n * @abstract\n * @category async\n * @rtype (source: String, name: String, args: Array, options: Array) => callData: Promise[String]\n * @param {String} source - Contract source code\n * @param {String} name - Function name\n * @param {Array} args - Function argument's\n * @param {Object} [options={}] Options\n * @param {Object} [options.filesystem] Contract external namespaces map\n * @return {String} - Contract encoded data\n */\n\n/**\n * Decode contract call result data\n * @function contractDecodeCallResultAPI\n * @instance\n * @abstract\n * @category async\n * @rtype (source: String, fn: String, callValue: String, callResult: String, options: Array) => decodedResult: Promise[String]\n * @param {String} source - Contract source\n * @param {String} fn - Fn name\n * @param {String} callValue - result data (cb_das...)\n * @param {String} callResult - contract call result status('ok', 'revert', ...)\n * @param {Object} [options={}] Options\n * @param {Object} [options.filesystem] Contract external namespaces map\n * @return {String} - Decoded contract call result\n */\n\n/**\n * Decode call data by source\n * @function contractDecodeCallDataBySourceAPI\n * @instance\n * @abstract\n * @category async\n * @rtype (source: String, function: String, callData: String, options: Array) => decodedResult: Promise[String]\n * @param {String} source - contract source\n * @param {String} function - function name\n * @param {String} callData - Encoded contract call data\n * @param {Object} [options={}] Options\n * @param {Object} [options.filesystem] Contract external namespaces map\n * @return {String} - Decoded contract call data\n */\n\n/**\n * Decode call data by bytecode\n * @function contractDecodeCallDataByCodeAPI\n * @instance\n * @abstract\n * @category async\n * @rtype (code: String, callData: String) => decodedResult: Promise[String]\n * @param {String} code - contract byte code\n * @param {String} callData - Encoded contract call data\n * @return {String} - Decoded contract call data\n */\n\n/**\n * Compile contract\n * @function compileContractAPI\n * @instance\n * @abstract\n * @category async\n * @rtype (code: String, options?: Object) => compiledContract: Object\n * @param {String} code - Contract source code\n * @param {Object} [options={}] Options\n * @param {Object} [options.filesystem] Contract external namespaces map\n * @return {Object} Object which contain bytecode of contract\n */\n\n/**\n * Set compiler url\n * @function setCompilerUrl\n * @instance\n * @abstract\n * @category async\n * @rtype (url: String) => void\n * @param {String} url - Compiler url\n * @return {void}\n */\n\n/**\n * Get Compiler Version\n * @function getCompilerVersion\n * @instance\n * @abstract\n * @category async\n * @rtype () => String\n * @return {String} Compiler version\n */\n\nexport default ContractBase\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/contract/index.js"],"names":["stampit","required","ContractBase","methods","contractEncodeCallDataAPI","compileContractAPI","contractGetACI","setCompilerUrl","getCompilerVersion","contractDecodeCallResultAPI","validateByteCodeAPI","getFateAssembler","getBytecodeCompilerVersion"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA,OAAOA,OAAP,MAAoB,WAApB;AACA,SAASC,QAAT,QAAyB,iBAAzB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,YAAY,GAAGF,OAAO,CAACC,QAAQ,CAAC;AACpCE,EAAAA,OAAO,EAAE;AACPC,IAAAA,yBAAyB,EAAEH,QADpB;AAEPI,IAAAA,kBAAkB,EAAEJ,QAFb;AAGPK,IAAAA,cAAc,EAAEL,QAHT;AAIPM,IAAAA,cAAc,EAAEN,QAJT;AAKPO,IAAAA,kBAAkB,EAAEP,QALb;AAMPQ,IAAAA,2BAA2B,EAAER,QANtB;AAOPS,IAAAA,mBAAmB,EAAET,QAPd;AAQPU,IAAAA,gBAAgB,EAAEV,QARX;AASPW,IAAAA,0BAA0B,EAAEX;AATrB;AAD2B,CAAD,CAAT,CAA5B;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAeC,YAAf","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 Base module\n * @module @aeternity/aepp-sdk/es/contract\n * @export Contract\n * @example import ContractBase from '@aeternity/aepp-sdk/es/contract'\n */\n\nimport stampit from '@stamp/it'\nimport { required } from '@stamp/required'\n\n/**\n * Basic Contract Stamp\n *\n * This stamp include api call's related to contract functionality.\n * Attempting to create instances from the Stamp without overwriting all\n * abstract methods using composition will result in an exception.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/contract\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Contract instance\n */\nconst ContractBase = stampit(required({\n methods: {\n contractEncodeCallDataAPI: required,\n compileContractAPI: required,\n contractGetACI: required,\n setCompilerUrl: required,\n getCompilerVersion: required,\n contractDecodeCallResultAPI: required,\n validateByteCodeAPI: required,\n getFateAssembler: required,\n getBytecodeCompilerVersion: required\n }\n}))\n\n/**\n * Get contract ACI\n * @function contractGetACI\n * @instance\n * @abstract\n * @category async\n * @rtype (source: String, options: Array) => aciObject: Promise[Object]\n * @param {String} source - Contract source code\n * @param {Object} [options={}] Options\n * @param {Object} [options.filesystem] Contract external namespaces map\n * @return {Object} - Contract aci object\n */\n\n/**\n * Encode contract data\n * @function contractEncodeCallDataAPI\n * @instance\n * @abstract\n * @category async\n * @rtype (source: String, name: String, args: Array, options: Array) => callData: Promise[String]\n * @param {String} source - Contract source code\n * @param {String} name - Function name\n * @param {Array} args - Function argument's\n * @param {Object} [options={}] Options\n * @param {Object} [options.filesystem] Contract external namespaces map\n * @return {String} - Contract encoded data\n */\n\n/**\n * Decode contract call result data\n * @function contractDecodeCallResultAPI\n * @instance\n * @abstract\n * @category async\n * @rtype (\n * source: String, fn: String, callValue: String, callResult: String, options: Array\n * ) => decodedResult: Promise[String]\n * @param {String} source - Contract source\n * @param {String} fn - Fn name\n * @param {String} callValue - result data (cb_das...)\n * @param {String} callResult - contract call result status('ok', 'revert', ...)\n * @param {Object} [options={}] Options\n * @param {Object} [options.filesystem] Contract external namespaces map\n * @return {String} - Decoded contract call result\n */\n\n/**\n * Decode call data by source\n * @function contractDecodeCallDataBySourceAPI\n * @instance\n * @abstract\n * @category async\n * @rtype (\n * source: String, function: String, callData: String, options: Array\n * ) => decodedResult: Promise[String]\n * @param {String} source - contract source\n * @param {String} function - function name\n * @param {String} callData - Encoded contract call data\n * @param {Object} [options={}] Options\n * @param {Object} [options.filesystem] Contract external namespaces map\n * @return {String} - Decoded contract call data\n */\n\n/**\n * Decode call data by bytecode\n * @function contractDecodeCallDataByCodeAPI\n * @instance\n * @abstract\n * @category async\n * @rtype (code: String, callData: String) => decodedResult: Promise[String]\n * @param {String} code - contract byte code\n * @param {String} callData - Encoded contract call data\n * @return {String} - Decoded contract call data\n */\n\n/**\n * Compile contract\n * @function compileContractAPI\n * @instance\n * @abstract\n * @category async\n * @rtype (code: String, options?: Object) => compiledContract: Object\n * @param {String} code - Contract source code\n * @param {Object} [options={}] Options\n * @param {Object} [options.filesystem] Contract external namespaces map\n * @return {Object} Object which contain bytecode of contract\n */\n\n/**\n * Set compiler url\n * @function setCompilerUrl\n * @instance\n * @abstract\n * @category async\n * @rtype (url: String) => void\n * @param {String} url - Compiler url\n * @return {void}\n */\n\n/**\n * Get Compiler Version\n * @function getCompilerVersion\n * @instance\n * @abstract\n * @category async\n * @rtype () => String\n * @return {String} Compiler version\n */\n\nexport default ContractBase\n"],"file":"index.js"}
|
package/es/index.js
CHANGED
|
@@ -52,5 +52,6 @@ export { _AeppWalletSchema as AeppWalletSchema };
|
|
|
52
52
|
export { default as WalletDetector } from './utils/aepp-wallet-communication/wallet-detector';
|
|
53
53
|
export { default as BrowserRuntimeConnection } from './utils/aepp-wallet-communication/connection/browser-runtime';
|
|
54
54
|
export { default as BrowserWindowMessageConnection } from './utils/aepp-wallet-communication/connection/browser-window-message';
|
|
55
|
+
export const getDefaultPointerKey = TxBuilderHelper.getDefaultPointerKey;
|
|
55
56
|
export { AmountFormatter, AccountBase, AccountMultiple, Ae, Aens, Bytes, Contract, ContractCompilerAPI, ACITransformation, ChainNode, RpcAepp, RpcWallet, Channel, Crypto, Keystore, Chain, GeneralizeAccount, HdWallet, MemoryAccount, Node, NodePool, Oracle, genSwaggerClient, Transaction, verifyTransaction, Tx, TxBuilder, TxBuilderHelper, Universal, SCHEMA };
|
|
56
57
|
//# sourceMappingURL=index.js.map
|
package/es/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["Crypto","Keystore","Bytes","TxBuilder","TxBuilderHelper","SCHEMA","ACITransformation","AmountFormatter","HdWallet","Ae","Chain","ChainNode","Node","NodePool","Tx","Transaction","verifyTransaction","AccountBase","AccountMultiple","MemoryAccount","Aens","Contract","GeneralizeAccount","ContractCompilerAPI","RpcAepp","RpcWallet","Oracle","genSwaggerClient","Channel","Universal","default","ContentScriptBridge","AeppWalletHelpers","AeppWalletSchema","WalletDetector","BrowserRuntimeConnection","BrowserWindowMessageConnection"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,OAAO,KAAKA,MAAZ,MAAwB,gBAAxB;AACA,OAAO,KAAKC,QAAZ,MAA0B,kBAA1B;AACA,OAAO,KAAKC,KAAZ,MAAuB,eAAvB;AACA,OAAO,KAAKC,SAAZ,MAA2B,cAA3B;AACA,OAAO,KAAKC,eAAZ,MAAiC,sBAAjC;AACA,OAAO,KAAKC,MAAZ,MAAwB,qBAAxB;AACA,OAAO,KAAKC,iBAAZ,MAAmC,+BAAnC;AACA,OAAO,KAAKC,eAAZ,MAAiC,0BAAjC;AACA,OAAOC,QAAP,MAAqB,mBAArB;AAEA,OAAOC,EAAP,MAAe,MAAf;AACA,OAAOC,KAAP,MAAkB,SAAlB;AACA,OAAOC,SAAP,MAAsB,cAAtB;AACA,OAAOC,IAAP,MAAiB,QAAjB;AACA,OAAOC,QAAP,MAAqB,aAArB;AACA,OAAOC,EAAP,MAAe,MAAf;AACA,OAAOC,WAAP,MAAwB,SAAxB;AACA,OAAOC,iBAAP,MAA8B,gBAA9B;AACA,OAAOC,WAAP,MAAwB,gBAAxB;AACA,OAAOC,eAAP,MAA4B,oBAA5B;AACA,OAAOC,aAAP,MAA0B,kBAA1B;AACA,OAAOC,IAAP,MAAiB,WAAjB;AACA,OAAOC,QAAP,MAAqB,eAArB;AACA,OAAOC,iBAAP,MAA8B,eAA9B;AACA,OAAOC,mBAAP,MAAgC,qBAAhC;AACA,OAAOC,OAAP,MAAoB,WAApB;AACA,OAAOC,SAAP,MAAsB,aAAtB;AACA,OAAOC,MAAP,MAAmB,aAAnB;AACA,OAAOC,gBAAP,MAA6B,iBAA7B;AACA,OAAOC,OAAP,MAAoB,WAApB;AACA,OAAOC,SAAP,MAAsB,gBAAtB;AAEA,SAASC,OAAO,IAAIC,mBAApB,QAA+C,yDAA/C;oCACmC,2C;+BAAvBC,iB;mCACsB,0C;8BAAtBC,gB;AACZ,SAASH,OAAO,IAAII,cAApB,QAA0C,mDAA1C;AACA,SAASJ,OAAO,IAAIK,wBAApB,QAAoD,8DAApD;AACA,SAASL,OAAO,IAAIM,8BAApB,QAA0D,qEAA1D;AAEA,
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["Crypto","Keystore","Bytes","TxBuilder","TxBuilderHelper","SCHEMA","ACITransformation","AmountFormatter","HdWallet","Ae","Chain","ChainNode","Node","NodePool","Tx","Transaction","verifyTransaction","AccountBase","AccountMultiple","MemoryAccount","Aens","Contract","GeneralizeAccount","ContractCompilerAPI","RpcAepp","RpcWallet","Oracle","genSwaggerClient","Channel","Universal","default","ContentScriptBridge","AeppWalletHelpers","AeppWalletSchema","WalletDetector","BrowserRuntimeConnection","BrowserWindowMessageConnection","getDefaultPointerKey"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,OAAO,KAAKA,MAAZ,MAAwB,gBAAxB;AACA,OAAO,KAAKC,QAAZ,MAA0B,kBAA1B;AACA,OAAO,KAAKC,KAAZ,MAAuB,eAAvB;AACA,OAAO,KAAKC,SAAZ,MAA2B,cAA3B;AACA,OAAO,KAAKC,eAAZ,MAAiC,sBAAjC;AACA,OAAO,KAAKC,MAAZ,MAAwB,qBAAxB;AACA,OAAO,KAAKC,iBAAZ,MAAmC,+BAAnC;AACA,OAAO,KAAKC,eAAZ,MAAiC,0BAAjC;AACA,OAAOC,QAAP,MAAqB,mBAArB;AAEA,OAAOC,EAAP,MAAe,MAAf;AACA,OAAOC,KAAP,MAAkB,SAAlB;AACA,OAAOC,SAAP,MAAsB,cAAtB;AACA,OAAOC,IAAP,MAAiB,QAAjB;AACA,OAAOC,QAAP,MAAqB,aAArB;AACA,OAAOC,EAAP,MAAe,MAAf;AACA,OAAOC,WAAP,MAAwB,SAAxB;AACA,OAAOC,iBAAP,MAA8B,gBAA9B;AACA,OAAOC,WAAP,MAAwB,gBAAxB;AACA,OAAOC,eAAP,MAA4B,oBAA5B;AACA,OAAOC,aAAP,MAA0B,kBAA1B;AACA,OAAOC,IAAP,MAAiB,WAAjB;AACA,OAAOC,QAAP,MAAqB,eAArB;AACA,OAAOC,iBAAP,MAA8B,eAA9B;AACA,OAAOC,mBAAP,MAAgC,qBAAhC;AACA,OAAOC,OAAP,MAAoB,WAApB;AACA,OAAOC,SAAP,MAAsB,aAAtB;AACA,OAAOC,MAAP,MAAmB,aAAnB;AACA,OAAOC,gBAAP,MAA6B,iBAA7B;AACA,OAAOC,OAAP,MAAoB,WAApB;AACA,OAAOC,SAAP,MAAsB,gBAAtB;AAEA,SAASC,OAAO,IAAIC,mBAApB,QAA+C,yDAA/C;oCACmC,2C;+BAAvBC,iB;mCACsB,0C;8BAAtBC,gB;AACZ,SAASH,OAAO,IAAII,cAApB,QAA0C,mDAA1C;AACA,SAASJ,OAAO,IAAIK,wBAApB,QAAoD,8DAApD;AACA,SAASL,OAAO,IAAIM,8BAApB,QAA0D,qEAA1D;AAEA,OAAO,MAAMC,oBAAoB,GAAGjC,eAAe,CAACiC,oBAA7C;AAEP,SACE9B,eADF,EAEEU,WAFF,EAGEC,eAHF,EAIET,EAJF,EAKEW,IALF,EAMElB,KANF,EAOEmB,QAPF,EAQEE,mBARF,EASEjB,iBATF,EAUEK,SAVF,EAWEa,OAXF,EAYEC,SAZF,EAaEG,OAbF,EAcE5B,MAdF,EAeEC,QAfF,EAgBES,KAhBF,EAiBEY,iBAjBF,EAkBEd,QAlBF,EAmBEW,aAnBF,EAoBEP,IApBF,EAqBEC,QArBF,EAsBEa,MAtBF,EAuBEC,gBAvBF,EAwBEZ,WAxBF,EAyBEC,iBAzBF,EA0BEF,EA1BF,EA2BEX,SA3BF,EA4BEC,eA5BF,EA6BEyB,SA7BF,EA8BExB,MA9BF","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport * as Crypto from './utils/crypto'\nimport * as Keystore from './utils/keystore'\nimport * as Bytes from './utils/bytes'\nimport * as TxBuilder from './tx/builder'\nimport * as TxBuilderHelper from './tx/builder/helpers'\nimport * as SCHEMA from './tx/builder/schema'\nimport * as ACITransformation from './contract/aci/transformation'\nimport * as AmountFormatter from './utils/amount-formatter'\nimport HdWallet from './utils/hd-wallet'\n\nimport Ae from './ae'\nimport Chain from './chain'\nimport ChainNode from './chain/node'\nimport Node from './node'\nimport NodePool from './node-pool'\nimport Tx from './tx'\nimport Transaction from './tx/tx'\nimport verifyTransaction from './tx/validator'\nimport AccountBase from './account/base'\nimport AccountMultiple from './account/multiple'\nimport MemoryAccount from './account/memory'\nimport Aens from './ae/aens'\nimport Contract from './ae/contract'\nimport GeneralizeAccount from './contract/ga'\nimport ContractCompilerAPI from './contract/compiler'\nimport RpcAepp from './ae/aepp'\nimport RpcWallet from './ae/wallet'\nimport Oracle from './ae/oracle'\nimport genSwaggerClient from './utils/swagger'\nimport Channel from './channel'\nimport Universal from './ae/universal'\n\nexport { default as ContentScriptBridge } from './utils/aepp-wallet-communication/content-script-bridge'\nexport * as AeppWalletHelpers from './utils/aepp-wallet-communication/helpers'\nexport * as AeppWalletSchema from './utils/aepp-wallet-communication/schema'\nexport { default as WalletDetector } from './utils/aepp-wallet-communication/wallet-detector'\nexport { default as BrowserRuntimeConnection } from './utils/aepp-wallet-communication/connection/browser-runtime'\nexport { default as BrowserWindowMessageConnection } from './utils/aepp-wallet-communication/connection/browser-window-message'\n\nexport const getDefaultPointerKey = TxBuilderHelper.getDefaultPointerKey\n\nexport {\n AmountFormatter,\n AccountBase,\n AccountMultiple,\n Ae,\n Aens,\n Bytes,\n Contract,\n ContractCompilerAPI,\n ACITransformation,\n ChainNode,\n RpcAepp,\n RpcWallet,\n Channel,\n Crypto,\n Keystore,\n Chain,\n GeneralizeAccount,\n HdWallet,\n MemoryAccount,\n Node,\n NodePool,\n Oracle,\n genSwaggerClient,\n Transaction,\n verifyTransaction,\n Tx,\n TxBuilder,\n TxBuilderHelper,\n Universal,\n SCHEMA\n}\n"],"file":"index.js"}
|
package/es/node-pool/index.js
CHANGED
|
@@ -60,7 +60,8 @@ export default stampit({
|
|
|
60
60
|
* @param {Boolean} select - Select this node as current
|
|
61
61
|
* @return {void}
|
|
62
62
|
* @example
|
|
63
|
-
*
|
|
63
|
+
* // add and select new node with name 'testNode'
|
|
64
|
+
* nodePool.addNode('testNode', awaitNode({ url, internalUrl }), true)
|
|
64
65
|
*/
|
|
65
66
|
addNode(name, node) {
|
|
66
67
|
let select = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
@@ -160,7 +161,8 @@ export default stampit({
|
|
|
160
161
|
},
|
|
161
162
|
|
|
162
163
|
validateNodes(nodes) {
|
|
163
|
-
// TODO: validate it on TypeScript level instead
|
|
164
|
+
// TODO: validate it on TypeScript level instead
|
|
165
|
+
// (to speedup development, save runtime resources)
|
|
164
166
|
if (!Array.isArray(nodes)) throw new Error('"nodes" should be an array');
|
|
165
167
|
const notObject = nodes.map(n => typeof n).find(t => t !== 'object');
|
|
166
168
|
if (notObject) throw new Error(`Each node should be an object, got ${notObject} instead`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/node-pool/index.js"],"names":["stampit","getNetworkId","init","nodes","pool","Map","validateNodes","forEach","node","i","name","instance","addNode","length","selectNode","propertyDescriptors","api","enumerable","configurable","get","selectedNode","Error","methods","select","has","set","url","internalUrl","networkId","nodeNetworkId","version","consensusProtocolVersion","isNodeConnected","getNodeInfo","getNodesInPool","Array","from","entries","map","isArray","notObject","n","find","t","wrongFields","JSON","stringify","wrongInstanceFields","genesisHash","props"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,OAAOA,OAAP,MAAoB,WAApB;AACA,SAASC,YAAT,QAA6B,SAA7B;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAeD,OAAO,CAAC;AACrBE,EAAAA,IAAI,GAAuB;AAAA,QAArB;AAAEC,MAAAA,KAAK,GAAG;AAAV,KAAqB,uEAAJ,EAAI;AACzB,SAAKC,IAAL,GAAY,IAAIC,GAAJ,EAAZ;AACA,SAAKC,aAAL,CAAmBH,KAAnB;AAEAA,IAAAA,KAAK,CAACI,OAAN,CAAc,CAACC,IAAD,EAAOC,CAAP,KAAa;AACzB,YAAM;AAAEC,QAAAA,IAAF;AAAQC,QAAAA;AAAR,UAAqBH,IAA3B;AACA,WAAKI,OAAL,CAAaF,IAAb,EAAmBC,QAAnB,EAA6BF,CAAC,KAAK,CAAnC;AACD,KAHD;AAIA,QAAIN,KAAK,CAACU,MAAV,EAAkB,KAAKC,UAAL,CAAgBX,KAAK,CAAC,CAAD,CAAL,CAASO,IAAzB;AACnB,GAVoB;;AAWrBK,EAAAA,mBAAmB,EAAE;AACnBC,IAAAA,GAAG,EAAE;AACHC,MAAAA,UAAU,EAAE,IADT;AAEHC,MAAAA,YAAY,EAAE,KAFX;;AAGHC,MAAAA,GAAG,GAAI;AACL,YAAI,CAAC,KAAKC,YAAN,IAAsB,CAAC,KAAKA,YAAL,CAAkBT,QAA7C,EAAuD;AACrD,gBAAM,IAAIU,KAAJ,CAAU,gEAAV,CAAN;AACD;;AACD,eAAO,KAAKD,YAAL,CAAkBT,QAAlB,CAA2BK,GAAlC;AACD;;AARE;AADc,GAXA;AAuBrBM,EAAAA,OAAO,EAAE;AACP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIV,IAAAA,OAAO,CAAEF,IAAF,EAAQF,IAAR,EAA8B;AAAA,UAAhBe,MAAgB,uEAAP,KAAO;AACnC,UAAI,KAAKnB,IAAL,CAAUoB,GAAV,CAAcd,IAAd,CAAJ,EAAyB,MAAM,IAAIW,KAAJ,CAAW,kBAAiBX,IAAK,gBAAjC,CAAN;AAEzB,WAAKJ,aAAL,CAAmB,CAAC;AAAEI,QAAAA,IAAF;AAAQC,QAAAA,QAAQ,EAAEH;AAAlB,OAAD,CAAnB;AAEA,WAAKJ,IAAL,CAAUqB,GAAV,CAAcf,IAAd,EAAoB;AAClBA,QAAAA,IADkB;AAElBC,QAAAA,QAAQ,EAAEH,IAFQ;AAGlBkB,QAAAA,GAAG,EAAElB,IAAI,CAACkB,GAHQ;AAIlBC,QAAAA,WAAW,EAAEnB,IAAI,CAACmB,WAJA;AAKlBC,QAAAA,SAAS,EAAEpB,IAAI,CAACqB,aALE;AAMlBC,QAAAA,OAAO,EAAEtB,IAAI,CAACsB,OANI;AAOlBC,QAAAA,wBAAwB,EAAEvB,IAAI,CAACuB;AAPb,OAApB;;AASA,UAAIR,MAAM,IAAI,CAAC,KAAKH,YAApB,EAAkC;AAChC,aAAKN,UAAL,CAAgBJ,IAAhB;AACD;AACF,
|
|
1
|
+
{"version":3,"sources":["../../src/node-pool/index.js"],"names":["stampit","getNetworkId","init","nodes","pool","Map","validateNodes","forEach","node","i","name","instance","addNode","length","selectNode","propertyDescriptors","api","enumerable","configurable","get","selectedNode","Error","methods","select","has","set","url","internalUrl","networkId","nodeNetworkId","version","consensusProtocolVersion","isNodeConnected","getNodeInfo","getNodesInPool","Array","from","entries","map","isArray","notObject","n","find","t","wrongFields","JSON","stringify","wrongInstanceFields","genesisHash","props"],"mappings":"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","sourcesContent":["/**\n * NodePool module\n * @module @aeternity/aepp-sdk/es/node-pool\n * @export NodePool\n * @example import { NodePool } from '@aeternity/aepp-sdk'\n */\nimport stampit from '@stamp/it'\nimport { getNetworkId } from '../node'\n\n/**\n * Node Pool Stamp\n * This stamp allow you to make basic manipulation(add, remove, select) on list of nodes\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node-pool\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {Array} [options.nodes] - Array with Node instances\n * @return {Object} NodePool instance\n */\nexport default stampit({\n init ({ nodes = [] } = {}) {\n this.pool = new Map()\n this.validateNodes(nodes)\n\n nodes.forEach((node, i) => {\n const { name, instance } = node\n this.addNode(name, instance, i === 0)\n })\n if (nodes.length) this.selectNode(nodes[0].name)\n },\n propertyDescriptors: {\n api: {\n enumerable: true,\n configurable: false,\n get () {\n if (!this.selectedNode || !this.selectedNode.instance) {\n throw new Error('You can\\'t use Node API. Node is not connected or not defined!')\n }\n return this.selectedNode.instance.api\n }\n }\n },\n methods: {\n /**\n * Add Node\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node-pool\n * @rtype (name: String, nodeInstance: Object, select: Boolean) => void\n * @param {String} name - Node name\n * @param {Object} node - Node instance\n * @param {Boolean} select - Select this node as current\n * @return {void}\n * @example\n * // add and select new node with name 'testNode'\n * nodePool.addNode('testNode', awaitNode({ url, internalUrl }), true)\n */\n addNode (name, node, select = false) {\n if (this.pool.has(name)) throw new Error(`Node with name ${name} already exist`)\n\n this.validateNodes([{ name, instance: node }])\n\n this.pool.set(name, {\n name,\n instance: node,\n url: node.url,\n internalUrl: node.internalUrl,\n networkId: node.nodeNetworkId,\n version: node.version,\n consensusProtocolVersion: node.consensusProtocolVersion\n })\n if (select || !this.selectedNode) {\n this.selectNode(name)\n }\n },\n /**\n * Select Node\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node-pool\n * @rtype (name: String) => void\n * @param {String} name - Node name\n * @return {void}\n * @example\n * nodePool.selectNode('testNode')\n */\n selectNode (name) {\n if (!this.pool.has(name)) throw new Error(`Node with name ${name} not in pool`)\n\n this.selectedNode = this.pool.get(name)\n },\n /**\n * Get NetworkId of current Node\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node-pool\n * @rtype () => String\n * @return {String}\n * @example\n * nodePool.getNetworkId()\n */\n getNetworkId,\n /**\n * Check if you have selected node\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node-pool\n * @rtype () => Boolean\n * @return {Boolean}\n * @example\n * nodePool.isNodeConnected()\n */\n isNodeConnected () {\n return !!this.selectedNode.instance\n },\n /**\n * Get information about node\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node-pool\n * @rtype () => Object\n * @return {Object}\n * @example\n * nodePool.getNodeInfo() // { name, version, networkId, protocol, ... }\n */\n getNodeInfo () {\n if (!this.isNodeConnected()) throw new Error('Can not get node info. Node is not connected')\n return {\n name: this.selectedNode.name,\n ...this.selectedNode.instance.getNodeInfo()\n }\n },\n /**\n * Get array of available nodes\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node-pool\n * @rtype () => Object[]\n * @return {Object[]}\n * @example\n * nodePool.getNodesInPool()\n */\n getNodesInPool () {\n return Array.from(this.pool.entries()).map(([name, node]) => ({\n name,\n ...node.instance.getNodeInfo()\n }))\n },\n validateNodes (nodes) {\n // TODO: validate it on TypeScript level instead\n // (to speedup development, save runtime resources)\n if (!Array.isArray(nodes)) throw new Error('\"nodes\" should be an array')\n const notObject = nodes.map(n => typeof n).find(t => t !== 'object')\n if (notObject) throw new Error(`Each node should be an object, got ${notObject} instead`)\n const wrongFields = nodes.find(n => typeof n.name !== 'string' || typeof n.instance !== 'object')\n if (notObject) {\n throw new Error(\n 'Each node should have name (string), instance (object) ' +\n `fields, got ${JSON.stringify(wrongFields)} instead`\n )\n }\n const wrongInstanceFields = nodes\n .map(n => n.instance)\n .find(i => typeof i.api !== 'object' || typeof i.genesisHash !== 'string' ||\n typeof i.consensusProtocolVersion !== 'number')\n if (wrongInstanceFields) {\n throw new Error(\n 'Each node instance should have api (object), consensusProtocolVersion (number), ' +\n `genesisHash (string) fields, got ${JSON.stringify(wrongInstanceFields)} instead`\n )\n }\n }\n },\n props: {\n selectedNode: {}\n }\n})\n"],"file":"index.js"}
|
package/es/node.js
CHANGED
|
@@ -33,13 +33,16 @@ import semverSatisfies from './utils/semver-satisfies';
|
|
|
33
33
|
*/
|
|
34
34
|
|
|
35
35
|
export function getNetworkId() {
|
|
36
|
+
var _this$selectedNode;
|
|
37
|
+
|
|
36
38
|
let {
|
|
37
39
|
networkId,
|
|
38
40
|
force = false
|
|
39
41
|
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
40
|
-
|
|
41
|
-
if (force && !
|
|
42
|
-
|
|
42
|
+
const res = networkId || this.networkId || ((_this$selectedNode = this.selectedNode) === null || _this$selectedNode === void 0 ? void 0 : _this$selectedNode.networkId);
|
|
43
|
+
if (!force && !res) throw new Error('networkId is not provided');
|
|
44
|
+
if (force && !res) return null;
|
|
45
|
+
return res;
|
|
43
46
|
}
|
|
44
47
|
/**
|
|
45
48
|
* {@link genSwaggerClient} based Node remote API Stamp
|
|
@@ -49,7 +52,9 @@ export function getNetworkId() {
|
|
|
49
52
|
* @param {Object} [options={}] - Options
|
|
50
53
|
* @param {String} options.url - Base URL for Node
|
|
51
54
|
* @param {String} options.internalUrl - Base URL for internal requests
|
|
52
|
-
* @param {
|
|
55
|
+
* @param {Object} options.axiosConfig - Object with axios configuration
|
|
56
|
+
* @param {Object} options.axiosConfig.config
|
|
57
|
+
* @param {Function} options.axiosConfig.errorHandler - (err) => throw err
|
|
53
58
|
* @return {Object} Node client
|
|
54
59
|
* @example Node({url: 'https://testnet.aeternity.io'})
|
|
55
60
|
*/
|