@aeternity/aepp-sdk 8.2.0 → 10.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/README.md +16 -9
  2. package/dist/aepp-sdk.browser-script.js +1 -1
  3. package/dist/aepp-sdk.browser-script.js.LICENSE.txt +0 -9
  4. package/dist/aepp-sdk.browser-script.js.map +1 -1
  5. package/dist/aepp-sdk.browser.js +1 -1
  6. package/dist/aepp-sdk.browser.js.map +1 -1
  7. package/dist/aepp-sdk.js +1 -1
  8. package/dist/aepp-sdk.js.map +1 -1
  9. package/es/account/base.js +33 -119
  10. package/es/account/base.js.map +1 -1
  11. package/es/account/memory.js +17 -19
  12. package/es/account/memory.js.map +1 -1
  13. package/es/account/multiple.js +75 -154
  14. package/es/account/multiple.js.map +1 -1
  15. package/es/ae/aens.js +164 -599
  16. package/es/ae/aens.js.map +1 -1
  17. package/es/ae/contract.js +108 -916
  18. package/es/ae/contract.js.map +1 -1
  19. package/es/ae/index.js +89 -250
  20. package/es/ae/index.js.map +1 -1
  21. package/es/ae/oracle.js +132 -500
  22. package/es/ae/oracle.js.map +1 -1
  23. package/es/chain/index.js +4 -23
  24. package/es/chain/index.js.map +1 -1
  25. package/es/chain/node.js +292 -1018
  26. package/es/chain/node.js.map +1 -1
  27. package/es/channel/handlers.js +597 -1086
  28. package/es/channel/handlers.js.map +1 -1
  29. package/es/channel/index.js +203 -451
  30. package/es/channel/index.js.map +1 -1
  31. package/es/channel/internal.js +129 -301
  32. package/es/channel/internal.js.map +1 -1
  33. package/es/contract/aci/index.js +319 -491
  34. package/es/contract/aci/index.js.map +1 -1
  35. package/es/contract/aci/transformation.js +35 -711
  36. package/es/contract/aci/transformation.js.map +1 -1
  37. package/es/contract/compiler.js +129 -203
  38. package/es/contract/compiler.js.map +1 -1
  39. package/es/contract/ga/helpers.js +17 -122
  40. package/es/contract/ga/helpers.js.map +1 -1
  41. package/es/contract/ga/index.js +102 -247
  42. package/es/contract/ga/index.js.map +1 -1
  43. package/es/contract/index.js +1 -1
  44. package/es/contract/index.js.map +1 -1
  45. package/es/index.js +2 -3
  46. package/es/index.js.map +1 -1
  47. package/es/node-pool/index.js +54 -73
  48. package/es/node-pool/index.js.map +1 -1
  49. package/es/node.js +56 -157
  50. package/es/node.js.map +1 -1
  51. package/es/other.d.ts +1 -1
  52. package/es/tx/builder/helpers.js +49 -89
  53. package/es/tx/builder/helpers.js.map +1 -1
  54. package/es/tx/builder/index.js +205 -303
  55. package/es/tx/builder/index.js.map +1 -1
  56. package/es/tx/builder/schema.js +585 -573
  57. package/es/tx/builder/schema.js.map +1 -1
  58. package/es/tx/index.js +1 -1
  59. package/es/tx/index.js.map +1 -1
  60. package/es/tx/tx-object.js +105 -135
  61. package/es/tx/tx-object.js.map +1 -1
  62. package/es/tx/tx.js +810 -1586
  63. package/es/tx/tx.js.map +1 -1
  64. package/es/tx/validator.js +191 -426
  65. package/es/tx/validator.js.map +1 -1
  66. package/es/utils/aepp-wallet-communication/connection/browser-runtime.js +17 -21
  67. package/es/utils/aepp-wallet-communication/connection/browser-runtime.js.map +1 -1
  68. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js +38 -74
  69. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js.map +1 -1
  70. package/es/utils/aepp-wallet-communication/content-script-bridge.js +14 -15
  71. package/es/utils/aepp-wallet-communication/content-script-bridge.js.map +1 -1
  72. package/es/utils/aepp-wallet-communication/helpers.js +60 -105
  73. package/es/utils/aepp-wallet-communication/helpers.js.map +1 -1
  74. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js +179 -510
  75. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js.map +1 -1
  76. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js +70 -89
  77. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js.map +1 -1
  78. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js +354 -603
  79. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js.map +1 -1
  80. package/es/utils/aepp-wallet-communication/schema.js +43 -39
  81. package/es/utils/aepp-wallet-communication/schema.js.map +1 -1
  82. package/es/utils/aepp-wallet-communication/wallet-detector.js +32 -58
  83. package/es/utils/aepp-wallet-communication/wallet-detector.js.map +1 -1
  84. package/es/utils/amount-formatter.js +41 -61
  85. package/es/utils/amount-formatter.js.map +1 -1
  86. package/es/utils/async-init.js +28 -64
  87. package/es/utils/async-init.js.map +1 -1
  88. package/es/utils/bignumber.js +3 -11
  89. package/es/utils/bignumber.js.map +1 -1
  90. package/es/utils/bytes.js +5 -9
  91. package/es/utils/bytes.js.map +1 -1
  92. package/es/utils/crypto.js +49 -75
  93. package/es/utils/crypto.js.map +1 -1
  94. package/es/utils/hd-wallet.js +45 -81
  95. package/es/utils/hd-wallet.js.map +1 -1
  96. package/es/utils/json-big.js +16 -49
  97. package/es/utils/json-big.js.map +1 -1
  98. package/es/utils/keystore.js +81 -246
  99. package/es/utils/keystore.js.map +1 -1
  100. package/es/utils/mptree.js +88 -134
  101. package/es/utils/mptree.js.map +1 -1
  102. package/es/utils/other.js +10 -60
  103. package/es/utils/other.js.map +1 -1
  104. package/es/utils/semver-satisfies.js +9 -28
  105. package/es/utils/semver-satisfies.js.map +1 -1
  106. package/es/utils/string.js +4 -13
  107. package/es/utils/string.js.map +1 -1
  108. package/es/utils/swagger.js +85 -218
  109. package/es/utils/swagger.js.map +1 -1
  110. package/package.json +52 -43
  111. package/src/account/base.js +8 -9
  112. package/src/account/multiple.js +20 -16
  113. package/src/ae/aens.js +25 -21
  114. package/src/ae/contract.js +65 -246
  115. package/src/ae/index.js +31 -7
  116. package/src/ae/oracle.js +21 -17
  117. package/src/chain/index.js +2 -12
  118. package/src/chain/node.js +26 -29
  119. package/src/channel/handlers.js +0 -1
  120. package/src/channel/index.js +4 -5
  121. package/src/contract/aci/index.js +221 -106
  122. package/src/contract/aci/transformation.js +30 -422
  123. package/src/contract/compiler.js +45 -4
  124. package/src/contract/ga/helpers.js +2 -12
  125. package/src/contract/ga/index.js +22 -26
  126. package/src/index.js +2 -4
  127. package/src/node-pool/index.js +21 -12
  128. package/src/node.js +22 -26
  129. package/src/tx/builder/helpers.js +12 -24
  130. package/src/tx/builder/index.js +18 -15
  131. package/src/tx/builder/schema.js +43 -108
  132. package/src/tx/tx-object.js +0 -2
  133. package/src/tx/tx.js +157 -144
  134. package/src/tx/validator.js +134 -202
  135. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +1 -3
  136. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +9 -10
  137. package/src/utils/aepp-wallet-communication/schema.js +1 -3
  138. package/src/utils/amount-formatter.ts +1 -1
  139. package/src/utils/bignumber.ts +2 -1
  140. package/src/utils/crypto.js +4 -17
  141. package/src/utils/other.ts +1 -1
  142. package/src/utils/semver-satisfies.ts +1 -1
  143. package/src/utils/swagger.js +24 -7
  144. package/CHANGELOG.md +0 -1716
  145. package/src/contract/aci/helpers.js +0 -140
package/es/node.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/node.js"],"names":["AsyncInit","genSwaggerClient","semverSatisfies","getNetworkId","networkId","force","selectedNode","Error","getConsensusProtocolVersion","protocols","height","api","getCurrentKeyBlock","effectiveAtHeight","acc","p","version","Node","compose","init","url","internalUrl","ignoreVersion","replace","client","spec","info","NODE_GE_VERSION","NODE_LT_VERSION","getStatus","revision","nodeRevision","genesisHash","genesisKeyBlockHash","consensusProtocolVersion","nodeNetworkId","methods","getNodeInfo","props"],"mappings":"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","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2021 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 * Node module\n * @module @aeternity/aepp-sdk/es/node\n * @export Node\n * @example import { Node } from '@aeternity/aepp-sdk'\n */\n\nimport AsyncInit from './utils/async-init'\nimport genSwaggerClient from './utils/swagger'\nimport semverSatisfies from './utils/semver-satisfies'\n\n/**\n * Obtain networkId from account or node\n * @instance\n * @category async\n * @rtype () => networkId: String\n * @return {String} NetworkId\n */\nexport function getNetworkId ({ networkId, force = false } = {}) {\n if (!force && !networkId && !this.networkId && (!this.selectedNode || !this.selectedNode.networkId)) throw new Error('networkId is not provided')\n if (force && !networkId && !this.networkId && (!this.selectedNode || !this.selectedNode.networkId)) return null\n return networkId || this.networkId || this.selectedNode.networkId\n}\n\n/**\n * get consensus protocol version\n * @param {Array} protocols Array of protocols\n * @param {Number} height Height\n * @return {Number} version Protocol version\n */\nasync function getConsensusProtocolVersion (protocols = [], height) {\n if (!protocols) throw new Error('Protocols must be an array')\n if (!height) height = (await this.api.getCurrentKeyBlock()).height\n if (height < 0) throw new Error('height must be a number >= 0')\n\n return protocols\n .filter(({ effectiveAtHeight }) => height >= effectiveAtHeight)\n .reduce(\n (acc, p) => p.effectiveAtHeight > acc.effectiveAtHeight ? p : acc,\n { effectiveAtHeight: -1, version: 0 }\n )\n .version\n}\n\n/**\n * {@link genSwaggerClient} based Node remote API Stamp\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node\n * @rtype Stamp\n * @param {Object} [options={}] - Options\n * @param {String} options.url - Base URL for Node\n * @param {String} options.internalUrl - Base URL for internal requests\n * @param {String} options.axiosConfig - Object with axios configuration. Example { config: {}, errorHandler: (err) => throw err }\n * @return {Object} Node client\n * @example Node({url: 'https://testnet.aeternity.io'})\n */\nconst Node = AsyncInit.compose({\n async init ({ url, internalUrl, ignoreVersion }) {\n if (!url) throw new Error('\"url\" required')\n this.url = url.replace(/\\/$/, '')\n this.internalUrl = internalUrl ? internalUrl.replace(/\\/$/, '') : this.url\n const client = await genSwaggerClient(`${this.url}/api?oas3`, { internalUrl: this.internalUrl })\n this.version = client.spec.info.version\n if (\n !semverSatisfies(this.version, NODE_GE_VERSION, NODE_LT_VERSION) &&\n !ignoreVersion\n ) {\n throw new Error(\n `Unsupported node version ${this.version}. ` +\n `Supported: >= ${NODE_GE_VERSION} < ${NODE_LT_VERSION}`\n )\n }\n this.api = client.api\n\n const { nodeRevision: revision, genesisKeyBlockHash: genesisHash, networkId, protocols } = await this.api.getStatus()\n this.consensusProtocolVersion = await this.getConsensusProtocolVersion(protocols)\n this.nodeNetworkId = networkId\n return Object.assign(this, { revision, genesisHash })\n },\n methods: {\n getNodeInfo () {\n return {\n url: this.url,\n internalUrl: this.internalUrl,\n nodeNetworkId: this.nodeNetworkId,\n version: this.version,\n consensusProtocolVersion: this.consensusProtocolVersion\n }\n },\n getConsensusProtocolVersion\n },\n props: {\n version: null,\n consensusProtocolVersion: null,\n nodeNetworkId: null\n }\n})\n\nconst NODE_GE_VERSION = '6.0.0'\nconst NODE_LT_VERSION = '7.0.0'\n\nexport default Node\n"],"file":"node.js"}
1
+ {"version":3,"sources":["../src/node.js"],"names":["AsyncInit","genSwaggerClient","semverSatisfies","getNetworkId","networkId","force","selectedNode","Error","Node","compose","init","url","internalUrl","ignoreVersion","replace","client","responseInterceptor","response","ok","Object","assign","statusText","URL","pathname","slice","body","reason","version","spec","info","NODE_GE_VERSION","NODE_LT_VERSION","api","nodeRevision","revision","genesisKeyBlockHash","genesisHash","protocols","topBlockHeight","getStatus","consensusProtocolVersion","filter","effectiveAtHeight","reduce","acc","p","nodeNetworkId","methods","getNodeInfo","props"],"mappings":"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","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2021 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 * Node module\n * @module @aeternity/aepp-sdk/es/node\n * @export Node\n * @example import { Node } from '@aeternity/aepp-sdk'\n */\n\nimport AsyncInit from './utils/async-init'\nimport genSwaggerClient from './utils/swagger'\nimport semverSatisfies from './utils/semver-satisfies'\n\n/**\n * Obtain networkId from account or node\n * @instance\n * @category async\n * @rtype () => networkId: String\n * @return {String} NetworkId\n */\nexport function getNetworkId ({ networkId, force = false } = {}) {\n if (!force && !networkId && !this.networkId && (!this.selectedNode || !this.selectedNode.networkId)) throw new Error('networkId is not provided')\n if (force && !networkId && !this.networkId && (!this.selectedNode || !this.selectedNode.networkId)) return null\n return networkId || this.networkId || this.selectedNode.networkId\n}\n\n/**\n * {@link genSwaggerClient} based Node remote API Stamp\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node\n * @rtype Stamp\n * @param {Object} [options={}] - Options\n * @param {String} options.url - Base URL for Node\n * @param {String} options.internalUrl - Base URL for internal requests\n * @param {String} options.axiosConfig - Object with axios configuration. Example { config: {}, errorHandler: (err) => throw err }\n * @return {Object} Node client\n * @example Node({url: 'https://testnet.aeternity.io'})\n */\nconst Node = AsyncInit.compose({\n async init ({ url, internalUrl, ignoreVersion }) {\n if (!url) throw new Error('\"url\" required')\n this.url = url.replace(/\\/$/, '')\n this.internalUrl = internalUrl ? internalUrl.replace(/\\/$/, '') : this.url\n const client = await genSwaggerClient(`${this.url}/api?oas3`, {\n internalUrl: this.internalUrl,\n responseInterceptor: response => {\n if (response.ok) return\n return Object.assign(response, {\n statusText: `${new URL(response.url).pathname.slice(1)} error: ` + response.body.reason\n })\n }\n })\n this.version = client.spec.info.version\n if (\n !semverSatisfies(this.version, NODE_GE_VERSION, NODE_LT_VERSION) &&\n !ignoreVersion\n ) {\n throw new Error(\n `Unsupported node version ${this.version}. ` +\n `Supported: >= ${NODE_GE_VERSION} < ${NODE_LT_VERSION}`\n )\n }\n this.api = client.api\n\n const {\n nodeRevision: revision, genesisKeyBlockHash: genesisHash, networkId,\n protocols, topBlockHeight\n } = await this.api.getStatus()\n this.consensusProtocolVersion = protocols\n .filter(({ effectiveAtHeight }) => topBlockHeight >= effectiveAtHeight)\n .reduce(\n (acc, p) => p.effectiveAtHeight > acc.effectiveAtHeight ? p : acc,\n { effectiveAtHeight: -1, version: 0 }\n )\n .version\n this.nodeNetworkId = networkId\n return Object.assign(this, { revision, genesisHash })\n },\n methods: {\n getNodeInfo () {\n return {\n url: this.url,\n internalUrl: this.internalUrl,\n nodeNetworkId: this.nodeNetworkId,\n version: this.version,\n consensusProtocolVersion: this.consensusProtocolVersion\n }\n }\n },\n props: {\n version: null,\n consensusProtocolVersion: null,\n nodeNetworkId: null\n }\n})\n\nconst NODE_GE_VERSION = '6.2.0'\nconst NODE_LT_VERSION = '7.0.0'\n\nexport default Node\n"],"file":"node.js"}
package/es/other.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare const pause: (duration: number) => Promise<undefined>;
1
+ export declare const pause: (duration: number) => Promise<void>;
2
2
  export declare const mapObject: (object: object, fn: (value: [string, any], index: number, array: Array<[string, any]>) => Array<[string, any]>) => object;
3
3
  export declare const filterObject: (object: object, fn: (value: [string, any], index: number, array: Array<[string, any]>) => boolean) => object;
4
4
  /**
@@ -3,20 +3,10 @@ import _lte from "ramda/src/lte";
3
3
  import _always from "ramda/src/always";
4
4
  import _lt from "ramda/src/lt";
5
5
  import _cond from "ramda/src/cond";
6
- import _slicedToArray from "@babel/runtime-corejs3/helpers/slicedToArray";
7
- import _toConsumableArray from "@babel/runtime-corejs3/helpers/toConsumableArray";
8
- import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
9
- import _padStartInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/pad-start";
10
- import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
11
- import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/slice";
12
- import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
13
- import _Object$assign from "@babel/runtime-corejs3/core-js-stable/object/assign";
14
- import _endsWithInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/ends-with";
15
- import _findInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/find";
16
6
  import BigNumber from 'bignumber.js';
17
- import { assertedType, decodeBase58Check, decodeBase64Check, encodeBase58Check, encodeBase64Check, hash, salt } from '../../utils/crypto';
7
+ import { decodeBase58Check, decodeBase64Check, encodeBase58Check, encodeBase64Check, hash, salt } from '../../utils/crypto';
18
8
  import { toBytes } from '../../utils/bytes';
19
- import { ID_TAG_PREFIX, PREFIX_ID_TAG, NAME_BID_RANGES, NAME_BID_MAX_LENGTH, NAME_FEE, NAME_FEE_BID_INCREMENT, NAME_BID_TIMEOUTS, NAME_ID_KEY } from './schema';
9
+ import { ID_TAG_PREFIX, PREFIX_ID_TAG, NAME_BID_RANGES, NAME_BID_MAX_LENGTH, NAME_FEE, NAME_FEE_BID_INCREMENT, NAME_BID_TIMEOUTS, NAME_MAX_LENGTH_FEE, NAME_ID_KEY } from './schema';
20
10
  import { ceil } from '../../utils/bignumber';
21
11
  /**
22
12
  * JavaScript-based Transaction builder helper function's
@@ -25,8 +15,8 @@ import { ceil } from '../../utils/bignumber';
25
15
  * @example import { TxBuilderHelper } from '@aeternity/aepp-sdk'
26
16
  */
27
17
 
28
- export var createSalt = salt;
29
- var base64Types = ['tx', 'st', 'ss', 'pi', 'ov', 'or', 'cb', 'cs', 'ba'];
18
+ export const createSalt = salt;
19
+ const base64Types = ['tx', 'st', 'ss', 'pi', 'ov', 'or', 'cb', 'cs', 'ba'];
30
20
  /**
31
21
  * Build a contract public key
32
22
  * @function
@@ -37,27 +27,10 @@ var base64Types = ['tx', 'st', 'ss', 'pi', 'ov', 'or', 'cb', 'cs', 'ba'];
37
27
  */
38
28
 
39
29
  export function buildContractId(ownerId, nonce) {
40
- var _context;
41
-
42
- var ownerIdAndNonce = Buffer.from(_concatInstanceProperty(_context = []).call(_context, _toConsumableArray(decode(ownerId, 'ak')), _toConsumableArray(toBytes(nonce))));
43
- var b2bHash = hash(ownerIdAndNonce);
30
+ const ownerIdAndNonce = Buffer.from([...decode(ownerId, 'ak'), ...toBytes(nonce)]);
31
+ const b2bHash = hash(ownerIdAndNonce);
44
32
  return encode(b2bHash, 'ct');
45
33
  }
46
- /**
47
- * Build hash
48
- * @function
49
- * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
50
- * @param {String} prefix Transaction hash prefix
51
- * @param {Buffer} data Rlp encoded transaction buffer
52
- * @param {Object} options
53
- * @param {Boolean} options.raw
54
- * @return {String} Transaction hash
55
- */
56
-
57
- export function buildHash(prefix, data) {
58
- var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
59
- return options.raw ? hash(data) : encode(hash(data), prefix);
60
- }
61
34
  /**
62
35
  * Build a oracle query id
63
36
  * @function
@@ -69,14 +42,12 @@ export function buildHash(prefix, data) {
69
42
  */
70
43
 
71
44
  export function oracleQueryId(senderId, nonce, oracleId) {
72
- var _context2;
73
-
74
45
  function _int32(val) {
75
- var nonceBE = toBytes(val, true);
76
- return _concatInstanceProperty(Buffer).call(Buffer, [Buffer.alloc(32 - nonceBE.length), nonceBE]);
46
+ const nonceBE = toBytes(val, true);
47
+ return Buffer.concat([Buffer.alloc(32 - nonceBE.length), nonceBE]);
77
48
  }
78
49
 
79
- var b2bHash = hash(Buffer.from(_concatInstanceProperty(_context2 = []).call(_context2, _toConsumableArray(decode(senderId, 'ak')), _toConsumableArray(_int32(nonce)), _toConsumableArray(decode(oracleId, 'ok')))));
50
+ const b2bHash = hash(Buffer.from([...decode(senderId, 'ak'), ..._int32(nonce), ...decode(oracleId, 'ok')]));
80
51
  return encode(b2bHash, 'oq');
81
52
  }
82
53
  /**
@@ -88,9 +59,7 @@ export function oracleQueryId(senderId, nonce, oracleId) {
88
59
  */
89
60
 
90
61
  export function formatSalt(salt) {
91
- var _context3;
92
-
93
- return Buffer.from(_padStartInstanceProperty(_context3 = salt.toString(16)).call(_context3, 64, '0'), 'hex');
62
+ return Buffer.from(salt.toString(16).padStart(64, '0'), 'hex');
94
63
  }
95
64
  /**
96
65
  * Encode a domain name
@@ -118,23 +87,28 @@ export function produceNameId(name) {
118
87
  */
119
88
 
120
89
  export function commitmentHash(name) {
121
- var salt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createSalt();
90
+ let salt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createSalt();
122
91
  ensureNameValid(name);
123
- return "cm_".concat(encodeBase58Check(hash(_concatInstanceProperty(Buffer).call(Buffer, [Buffer.from(name.toLowerCase()), formatSalt(salt)]))));
92
+ return `cm_${encodeBase58Check(hash(Buffer.concat([Buffer.from(name.toLowerCase()), formatSalt(salt)])))}`;
124
93
  }
125
94
  /**
126
95
  * Decode data using the default encoding/decoding algorithm
127
96
  * @function
128
97
  * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
129
- * @param {string} data An encoded and prefixed string (ex tx_..., sg_..., ak_....)
130
- * @param {string} type Prefix of Transaction
131
- * @return {Buffer} Buffer of decoded Base58check or Base64check data
98
+ * @param {string} data An Base58check or Base64check encoded and prefixed string (ex tx_..., sg_..., ak_....)
99
+ * @param {string} [requiredPrefix] Ensure that data have this prefix
100
+ * @return {Buffer} Decoded data
132
101
  */
133
102
 
134
- export function decode(data) {
135
- var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
136
- if (!type) type = data.split('_')[0];
137
- return _includesInstanceProperty(base64Types).call(base64Types, type) ? decodeBase64Check(assertedType(data, type)) : decodeBase58Check(assertedType(data, type));
103
+ export function decode(data, requiredPrefix) {
104
+ const [prefix, payload, extra] = data.split('_');
105
+ if (extra) throw new Error(`Encoded string have extra parts: ${data}`);
106
+
107
+ if (requiredPrefix && requiredPrefix !== prefix) {
108
+ throw new Error(`Encoded string have a wrong type: ${prefix} (expected: ${requiredPrefix})`);
109
+ }
110
+
111
+ return (base64Types.includes(prefix) ? decodeBase64Check : decodeBase58Check)(payload);
138
112
  }
139
113
  /**
140
114
  * Encode data using the default encoding/decoding algorithm
@@ -146,9 +120,7 @@ export function decode(data) {
146
120
  */
147
121
 
148
122
  export function encode(data, type) {
149
- var _context4;
150
-
151
- return _concatInstanceProperty(_context4 = "".concat(type, "_")).call(_context4, _includesInstanceProperty(base64Types).call(base64Types, type) ? encodeBase64Check(data) : encodeBase58Check(data));
123
+ return `${type}_${base64Types.includes(type) ? encodeBase64Check(data) : encodeBase58Check(data)}`;
152
124
  }
153
125
  /**
154
126
  * Utility function to create and _id type
@@ -159,13 +131,10 @@ export function encode(data, type) {
159
131
  */
160
132
 
161
133
  export function writeId(hashId) {
162
- var _context5;
163
-
164
- var prefix = _sliceInstanceProperty(hashId).call(hashId, 0, 2);
165
-
166
- var idTag = PREFIX_ID_TAG[prefix];
167
- if (!idTag) throw new Error("Id tag for prefix ".concat(prefix, " not found."));
168
- return Buffer.from(_concatInstanceProperty(_context5 = []).call(_context5, _toConsumableArray(toBytes(idTag)), _toConsumableArray(decode(hashId, prefix))));
134
+ const prefix = hashId.slice(0, 2);
135
+ const idTag = PREFIX_ID_TAG[prefix];
136
+ if (!idTag) throw new Error(`Id tag for prefix ${prefix} not found.`);
137
+ return Buffer.from([...toBytes(idTag), ...decode(hashId, prefix)]);
169
138
  }
170
139
  /**
171
140
  * Utility function to read and _id type
@@ -176,10 +145,10 @@ export function writeId(hashId) {
176
145
  */
177
146
 
178
147
  export function readId(buf) {
179
- var tag = buf.readUIntBE(0, 1);
180
- var prefix = ID_TAG_PREFIX[tag];
181
- if (!prefix) throw new Error("Prefix for id-tag ".concat(tag, " not found."));
182
- return encode(_sliceInstanceProperty(buf).call(buf, 1, buf.length), prefix);
148
+ const tag = buf.readUIntBE(0, 1);
149
+ const prefix = ID_TAG_PREFIX[tag];
150
+ if (!prefix) throw new Error(`Prefix for id-tag ${tag} not found.`);
151
+ return encode(buf.slice(1, buf.length), prefix);
183
152
  }
184
153
  /**
185
154
  * Utility function to convert int to bytes
@@ -201,7 +170,7 @@ export function writeInt(val) {
201
170
  */
202
171
 
203
172
  export function readInt() {
204
- var buf = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Buffer.from([]);
173
+ let buf = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Buffer.from([]);
205
174
  return BigNumber(buf.toString('hex'), 16).toString(10);
206
175
  }
207
176
  /**
@@ -213,9 +182,7 @@ export function readInt() {
213
182
  */
214
183
 
215
184
  export function buildPointers(pointers) {
216
- return _mapInstanceProperty(pointers).call(pointers, function (p) {
217
- return [toBytes(p.key), writeId(p.id)];
218
- });
185
+ return pointers.map(p => [toBytes(p.key), writeId(p.id)]);
219
186
  }
220
187
  /**
221
188
  * Helper function to read pointers from name update TX
@@ -226,12 +193,9 @@ export function buildPointers(pointers) {
226
193
  */
227
194
 
228
195
  export function readPointers(pointers) {
229
- return _mapInstanceProperty(pointers).call(pointers, function (_ref) {
230
- var _ref2 = _slicedToArray(_ref, 2),
231
- key = _ref2[0],
232
- id = _ref2[1];
233
-
234
- return _Object$assign({
196
+ return pointers.map(_ref => {
197
+ let [key, id] = _ref;
198
+ return Object.assign({
235
199
  key: key.toString(),
236
200
  id: readId(id)
237
201
  });
@@ -248,7 +212,7 @@ export function readPointers(pointers) {
248
212
 
249
213
  export function ensureNameValid(name) {
250
214
  if (!name || typeof name !== 'string') throw new Error('Name must be a string');
251
- if (!_endsWithInstanceProperty(name).call(name, '.chain')) throw new Error("Name should end with .chain: ".concat(name));
215
+ if (!name.endsWith('.chain')) throw new Error(`Name should end with .chain: ${name}`);
252
216
  }
253
217
  /**
254
218
  * Is name valid
@@ -279,12 +243,12 @@ export function classify(s) {
279
243
  throw new Error('Not a valid hash');
280
244
  }
281
245
 
282
- var klass = s.substr(0, 2);
246
+ const klass = s.substr(0, 2);
283
247
 
284
248
  if (klass in NAME_ID_KEY) {
285
249
  return NAME_ID_KEY[klass];
286
250
  } else {
287
- throw new Error("Unknown class ".concat(klass));
251
+ throw new Error(`Unknown class ${klass}`);
288
252
  }
289
253
  }
290
254
  /**
@@ -296,12 +260,8 @@ export function classify(s) {
296
260
  */
297
261
 
298
262
  export function validatePointers() {
299
- var pointers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
300
- return !_findInstanceProperty(pointers).call(pointers, function (p) {
301
- var _context6;
302
-
303
- return !p || typeof p !== 'string' || !_includesInstanceProperty(_context6 = ['ak', 'ok', 'ct', 'ch']).call(_context6, p.split('_')[0]);
304
- });
263
+ let pointers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
264
+ return !pointers.find(p => !p || typeof p !== 'string' || !['ak', 'ok', 'ct', 'ch'].includes(p.split('_')[0]));
305
265
  }
306
266
  /**
307
267
  * Get the minimum name fee for a domain
@@ -312,8 +272,8 @@ export function validatePointers() {
312
272
  */
313
273
 
314
274
  export function getMinimumNameFee(domain) {
315
- var nameLength = domain.replace('.chain', '').length;
316
- return NAME_BID_RANGES[nameLength >= NAME_BID_MAX_LENGTH ? NAME_BID_MAX_LENGTH : nameLength];
275
+ const nameLength = domain.replace('.chain', '').length;
276
+ return NAME_BID_RANGES[nameLength >= NAME_MAX_LENGTH_FEE ? NAME_MAX_LENGTH_FEE : nameLength];
317
277
  }
318
278
  /**
319
279
  * Compute bid fee for AENS auction
@@ -326,10 +286,10 @@ export function getMinimumNameFee(domain) {
326
286
  */
327
287
 
328
288
  export function computeBidFee(domain) {
329
- var startFee = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : NAME_FEE;
330
- var increment = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : NAME_FEE_BID_INCREMENT;
331
- if (!(Number(increment) === increment && increment % 1 !== 0)) throw new Error("Increment must be float. Current increment ".concat(increment));
332
- if (increment < NAME_FEE_BID_INCREMENT) throw new Error("minimum increment percentage is ".concat(NAME_FEE_BID_INCREMENT));
289
+ let startFee = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : NAME_FEE;
290
+ let increment = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : NAME_FEE_BID_INCREMENT;
291
+ if (!(Number(increment) === increment && increment % 1 !== 0)) throw new Error(`Increment must be float. Current increment ${increment}`);
292
+ if (increment < NAME_FEE_BID_INCREMENT) throw new Error(`minimum increment percentage is ${NAME_FEE_BID_INCREMENT}`);
333
293
  return ceil(BigNumber(BigNumber(startFee).eq(NAME_FEE) ? getMinimumNameFee(domain) : startFee).times(BigNumber(NAME_FEE_BID_INCREMENT).plus(1)));
334
294
  }
335
295
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tx/builder/helpers.js"],"names":["BigNumber","assertedType","decodeBase58Check","decodeBase64Check","encodeBase58Check","encodeBase64Check","hash","salt","toBytes","ID_TAG_PREFIX","PREFIX_ID_TAG","NAME_BID_RANGES","NAME_BID_MAX_LENGTH","NAME_FEE","NAME_FEE_BID_INCREMENT","NAME_BID_TIMEOUTS","NAME_ID_KEY","ceil","createSalt","base64Types","buildContractId","ownerId","nonce","ownerIdAndNonce","Buffer","from","decode","b2bHash","encode","buildHash","prefix","data","options","raw","oracleQueryId","senderId","oracleId","_int32","val","nonceBE","alloc","length","formatSalt","toString","produceNameId","name","ensureNameValid","toLowerCase","commitmentHash","type","split","writeId","hashId","idTag","Error","readId","buf","tag","readUIntBE","writeInt","readInt","buildPointers","pointers","p","key","id","readPointers","isNameValid","error","classify","s","match","klass","substr","validatePointers","getMinimumNameFee","domain","nameLength","replace","computeBidFee","startFee","increment","Number","eq","times","plus","computeAuctionEndBlock","claimHeight","isAuctionName"],"mappings":"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","sourcesContent":["import * as R from 'ramda'\nimport BigNumber from 'bignumber.js'\n\nimport {\n assertedType,\n decodeBase58Check,\n decodeBase64Check,\n encodeBase58Check, encodeBase64Check,\n hash,\n salt\n} from '../../utils/crypto'\nimport { toBytes } from '../../utils/bytes'\nimport {\n ID_TAG_PREFIX,\n PREFIX_ID_TAG,\n NAME_BID_RANGES,\n NAME_BID_MAX_LENGTH,\n NAME_FEE,\n NAME_FEE_BID_INCREMENT,\n NAME_BID_TIMEOUTS,\n NAME_ID_KEY\n} from './schema'\nimport { ceil } from '../../utils/bignumber'\n\n/**\n * JavaScript-based Transaction builder helper function's\n * @module @aeternity/aepp-sdk/es/tx/builder/helpers\n * @export TxBuilderHelper\n * @example import { TxBuilderHelper } from '@aeternity/aepp-sdk'\n */\n\nexport const createSalt = salt\n\nconst base64Types = ['tx', 'st', 'ss', 'pi', 'ov', 'or', 'cb', 'cs', 'ba']\n\n/**\n * Build a contract public key\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} ownerId The public key of the owner account\n * @param {number} nonce the nonce of the transaction\n * @return {string} Contract public key\n */\nexport function buildContractId (ownerId, nonce) {\n const ownerIdAndNonce = Buffer.from([...decode(ownerId, 'ak'), ...toBytes(nonce)])\n const b2bHash = hash(ownerIdAndNonce)\n return encode(b2bHash, 'ct')\n}\n\n/**\n * Build hash\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} prefix Transaction hash prefix\n * @param {Buffer} data Rlp encoded transaction buffer\n * @param {Object} options\n * @param {Boolean} options.raw\n * @return {String} Transaction hash\n */\nexport function buildHash (prefix, data, options = {}) {\n return options.raw ? hash(data) : encode(hash(data), prefix)\n}\n\n/**\n * Build a oracle query id\n * @function\n * @function* @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} senderId The public key of the sender account\n * @param {Number} nonce the nonce of the transaction\n * @param {Number} oracleId The oracle public key\n * @return {string} Contract public key\n */\nexport function oracleQueryId (senderId, nonce, oracleId) {\n function _int32 (val) {\n const nonceBE = toBytes(val, true)\n return Buffer.concat([Buffer.alloc(32 - nonceBE.length), nonceBE])\n }\n\n const b2bHash = hash(Buffer.from([...decode(senderId, 'ak'), ..._int32(nonce), ...decode(oracleId, 'ok')]))\n return encode(b2bHash, 'oq')\n}\n\n/**\n * Format the salt into a 64-byte hex string\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {number} salt\n * @return {string} Zero-padded hex string of salt\n */\nexport function formatSalt (salt) {\n return Buffer.from(salt.toString(16).padStart(64, '0'), 'hex')\n}\n\n/**\n * Encode a domain name\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name Name to encode\n * @return {String} `nm_` prefixed encoded domain name\n */\nexport function produceNameId (name) {\n ensureNameValid(name)\n return encode(hash(name.toLowerCase()), 'nm')\n}\n\n/**\n * Generate the commitment hash by hashing the formatted salt and\n * name, base 58 encoding the result and prepending 'cm_'\n *\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @function commitmentHash\n * @category async\n * @rtype (name: String, salt?: String) => hash: Promise[String]\n * @param {String} name - Name to be registered\n * @param {Number} salt Random salt\n * @return {String} Commitment hash\n */\nexport function commitmentHash (name, salt = createSalt()) {\n ensureNameValid(name)\n return `cm_${encodeBase58Check(hash(Buffer.concat([Buffer.from(name.toLowerCase()), formatSalt(salt)])))}`\n}\n\n/**\n * Decode data using the default encoding/decoding algorithm\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} data An encoded and prefixed string (ex tx_..., sg_..., ak_....)\n * @param {string} type Prefix of Transaction\n * @return {Buffer} Buffer of decoded Base58check or Base64check data\n */\nexport function decode (data, type = '') {\n if (!type) type = data.split('_')[0]\n return base64Types.includes(type)\n ? decodeBase64Check(assertedType(data, type))\n : decodeBase58Check(assertedType(data, type))\n}\n\n/**\n * Encode data using the default encoding/decoding algorithm\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Buffer|String} data An decoded data\n * @param {string} type Prefix of Transaction\n * @return {String} Encoded string Base58check or Base64check data\n */\nexport function encode (data, type) {\n return `${type}_${base64Types.includes(type)\n ? encodeBase64Check(data)\n : encodeBase58Check(data)}`\n}\n\n/**\n * Utility function to create and _id type\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} hashId Encoded hash\n * @return {Buffer} Buffer Buffer with ID tag and decoded HASh\n */\nexport function writeId (hashId) {\n const prefix = hashId.slice(0, 2)\n const idTag = PREFIX_ID_TAG[prefix]\n if (!idTag) throw new Error(`Id tag for prefix ${prefix} not found.`)\n return Buffer.from([...toBytes(idTag), ...decode(hashId, prefix)])\n}\n\n/**\n * Utility function to read and _id type\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Buffer} buf Data\n * @return {String} Encoided hash string with prefix\n */\nexport function readId (buf) {\n const tag = buf.readUIntBE(0, 1)\n const prefix = ID_TAG_PREFIX[tag]\n if (!prefix) throw new Error(`Prefix for id-tag ${tag} not found.`)\n return encode(buf.slice(1, buf.length), prefix)\n}\n\n/**\n * Utility function to convert int to bytes\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Number|String|BigNumber} val Value\n * @return {Buffer} Buffer Buffer from number(BigEndian)\n */\nexport function writeInt (val) {\n return toBytes(val, true)\n}\n\n/**\n * Utility function to convert bytes to int\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Buffer} buf Value\n * @return {String} Buffer Buffer from number(BigEndian)\n */\nexport function readInt (buf = Buffer.from([])) {\n return BigNumber(buf.toString('hex'), 16).toString(10)\n}\n\n/**\n * Helper function to build pointers for name update TX\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Array} pointers - Array of pointers ([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])\n * @return {Array} Serialized pointers array\n */\nexport function buildPointers (pointers) {\n return pointers.map(\n p => [\n toBytes(p.key),\n writeId(p.id)\n ]\n )\n}\n\n/**\n * Helper function to read pointers from name update TX\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Array} pointers - Array of pointers ([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])\n * @return {Array} Deserialize pointer array\n */\nexport function readPointers (pointers) {\n return pointers.map(\n ([key, id]) => Object.assign({\n key: key.toString(),\n id: readId(id)\n })\n )\n}\n\n/**\n * Ensure that name is valid\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} name\n * @return void\n * @throws Error\n */\nexport function ensureNameValid (name) {\n if (!name || typeof name !== 'string') throw new Error('Name must be a string')\n if (!name.endsWith('.chain')) throw new Error(`Name should end with .chain: ${name}`)\n}\n\n/**\n * Is name valid\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} name\n * @return Boolean\n */\nexport function isNameValid (name) {\n try {\n ensureNameValid(name)\n return true\n } catch (error) {\n return false\n }\n}\n\n/**\n * What kind of a hash is this? If it begins with 'ak_' it is an\n * account key, if with 'ok_' it's an oracle key.\n *\n * @param s - the hash.\n * returns the type, or throws an exception if type not found.\n */\nexport function classify (s) {\n if (!s.match(/^[a-z]{2}_.+/)) {\n throw new Error('Not a valid hash')\n }\n\n const klass = s.substr(0, 2)\n if (klass in NAME_ID_KEY) {\n return NAME_ID_KEY[klass]\n } else {\n throw new Error(`Unknown class ${klass}`)\n }\n}\n\n/**\n * Validate name pointers array\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String[]} pointers Pointers array. Allowed values is: account(ak_), oracle(ok_), contract(ct_), channel(ch_)\n * @return {Boolean}\n */\nexport function validatePointers (pointers = []) {\n return !pointers\n .find(p => !p || typeof p !== 'string' || !['ak', 'ok', 'ct', 'ch'].includes(p.split('_')[0]))\n}\n\n/**\n * Get the minimum name fee for a domain\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} domain the domain name to get the fee for\n * @return {String} the minimum fee for the domain auction\n */\nexport function getMinimumNameFee (domain) {\n const nameLength = domain.replace('.chain', '').length\n return NAME_BID_RANGES[nameLength >= NAME_BID_MAX_LENGTH ? NAME_BID_MAX_LENGTH : nameLength]\n}\n\n/**\n * Compute bid fee for AENS auction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} domain the domain name to get the fee for\n * @param {Number|String} startFee Auction start fee\n * @param {Number} [increment=0.5] Bid multiplier(In percentage, must be between 0 and 1)\n * @return {String} Bid fee\n */\nexport function computeBidFee (domain, startFee = NAME_FEE, increment = NAME_FEE_BID_INCREMENT) {\n if (!(Number(increment) === increment && increment % 1 !== 0)) throw new Error(`Increment must be float. Current increment ${increment}`)\n if (increment < NAME_FEE_BID_INCREMENT) throw new Error(`minimum increment percentage is ${NAME_FEE_BID_INCREMENT}`)\n return ceil(\n BigNumber(BigNumber(startFee).eq(NAME_FEE) ? getMinimumNameFee(domain) : startFee).times(BigNumber(NAME_FEE_BID_INCREMENT).plus(1))\n )\n}\n\n/**\n * Compute auction end height\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} domain the domain name to get the fee for\n * @param {Number|String} claimHeight Auction starting height\n * @return {String} Auction end height\n */\nexport function computeAuctionEndBlock (domain, claimHeight) {\n return R.cond([\n [R.lt(5), R.always(NAME_BID_TIMEOUTS[4].plus(claimHeight))],\n [R.lt(9), R.always(NAME_BID_TIMEOUTS[8].plus(claimHeight))],\n [R.lte(NAME_BID_MAX_LENGTH), R.always(NAME_BID_TIMEOUTS[12].plus(claimHeight))],\n [R.T, R.always(BigNumber(claimHeight))]\n ])(domain.replace('.chain', '').length).toString(10)\n}\n\n/**\n * Is name accept going to auction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name Transaction abiVersion\n * @return {Boolean}\n */\nexport function isAuctionName (name) {\n return name.replace('.chain', '').length < 13\n}\n"],"file":"helpers.js"}
1
+ {"version":3,"sources":["../../../src/tx/builder/helpers.js"],"names":["BigNumber","decodeBase58Check","decodeBase64Check","encodeBase58Check","encodeBase64Check","hash","salt","toBytes","ID_TAG_PREFIX","PREFIX_ID_TAG","NAME_BID_RANGES","NAME_BID_MAX_LENGTH","NAME_FEE","NAME_FEE_BID_INCREMENT","NAME_BID_TIMEOUTS","NAME_MAX_LENGTH_FEE","NAME_ID_KEY","ceil","createSalt","base64Types","buildContractId","ownerId","nonce","ownerIdAndNonce","Buffer","from","decode","b2bHash","encode","oracleQueryId","senderId","oracleId","_int32","val","nonceBE","concat","alloc","length","formatSalt","toString","padStart","produceNameId","name","ensureNameValid","toLowerCase","commitmentHash","data","requiredPrefix","prefix","payload","extra","split","Error","includes","type","writeId","hashId","slice","idTag","readId","buf","tag","readUIntBE","writeInt","readInt","buildPointers","pointers","map","p","key","id","readPointers","Object","assign","endsWith","isNameValid","error","classify","s","match","klass","substr","validatePointers","find","getMinimumNameFee","domain","nameLength","replace","computeBidFee","startFee","increment","Number","eq","times","plus","computeAuctionEndBlock","claimHeight","isAuctionName"],"mappings":"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","sourcesContent":["import * as R from 'ramda'\nimport BigNumber from 'bignumber.js'\n\nimport {\n decodeBase58Check,\n decodeBase64Check,\n encodeBase58Check, encodeBase64Check,\n hash,\n salt\n} from '../../utils/crypto'\nimport { toBytes } from '../../utils/bytes'\nimport {\n ID_TAG_PREFIX,\n PREFIX_ID_TAG,\n NAME_BID_RANGES,\n NAME_BID_MAX_LENGTH,\n NAME_FEE,\n NAME_FEE_BID_INCREMENT,\n NAME_BID_TIMEOUTS,\n NAME_MAX_LENGTH_FEE,\n NAME_ID_KEY\n} from './schema'\nimport { ceil } from '../../utils/bignumber'\n\n/**\n * JavaScript-based Transaction builder helper function's\n * @module @aeternity/aepp-sdk/es/tx/builder/helpers\n * @export TxBuilderHelper\n * @example import { TxBuilderHelper } from '@aeternity/aepp-sdk'\n */\n\nexport const createSalt = salt\n\nconst base64Types = ['tx', 'st', 'ss', 'pi', 'ov', 'or', 'cb', 'cs', 'ba']\n\n/**\n * Build a contract public key\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} ownerId The public key of the owner account\n * @param {number} nonce the nonce of the transaction\n * @return {string} Contract public key\n */\nexport function buildContractId (ownerId, nonce) {\n const ownerIdAndNonce = Buffer.from([...decode(ownerId, 'ak'), ...toBytes(nonce)])\n const b2bHash = hash(ownerIdAndNonce)\n return encode(b2bHash, 'ct')\n}\n\n/**\n * Build a oracle query id\n * @function\n * @function* @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} senderId The public key of the sender account\n * @param {Number} nonce the nonce of the transaction\n * @param {Number} oracleId The oracle public key\n * @return {string} Contract public key\n */\nexport function oracleQueryId (senderId, nonce, oracleId) {\n function _int32 (val) {\n const nonceBE = toBytes(val, true)\n return Buffer.concat([Buffer.alloc(32 - nonceBE.length), nonceBE])\n }\n\n const b2bHash = hash(Buffer.from([...decode(senderId, 'ak'), ..._int32(nonce), ...decode(oracleId, 'ok')]))\n return encode(b2bHash, 'oq')\n}\n\n/**\n * Format the salt into a 64-byte hex string\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {number} salt\n * @return {string} Zero-padded hex string of salt\n */\nexport function formatSalt (salt) {\n return Buffer.from(salt.toString(16).padStart(64, '0'), 'hex')\n}\n\n/**\n * Encode a domain name\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name Name to encode\n * @return {String} `nm_` prefixed encoded domain name\n */\nexport function produceNameId (name) {\n ensureNameValid(name)\n return encode(hash(name.toLowerCase()), 'nm')\n}\n\n/**\n * Generate the commitment hash by hashing the formatted salt and\n * name, base 58 encoding the result and prepending 'cm_'\n *\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @function commitmentHash\n * @category async\n * @rtype (name: String, salt?: String) => hash: Promise[String]\n * @param {String} name - Name to be registered\n * @param {Number} salt Random salt\n * @return {String} Commitment hash\n */\nexport function commitmentHash (name, salt = createSalt()) {\n ensureNameValid(name)\n return `cm_${encodeBase58Check(hash(Buffer.concat([Buffer.from(name.toLowerCase()), formatSalt(salt)])))}`\n}\n\n/**\n * Decode data using the default encoding/decoding algorithm\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} data An Base58check or Base64check encoded and prefixed string (ex tx_..., sg_..., ak_....)\n * @param {string} [requiredPrefix] Ensure that data have this prefix\n * @return {Buffer} Decoded data\n */\nexport function decode (data, requiredPrefix) {\n const [prefix, payload, extra] = data.split('_')\n if (extra) throw new Error(`Encoded string have extra parts: ${data}`)\n if (requiredPrefix && requiredPrefix !== prefix) {\n throw new Error(`Encoded string have a wrong type: ${prefix} (expected: ${requiredPrefix})`)\n }\n return (base64Types.includes(prefix) ? decodeBase64Check : decodeBase58Check)(payload)\n}\n\n/**\n * Encode data using the default encoding/decoding algorithm\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Buffer|String} data An decoded data\n * @param {string} type Prefix of Transaction\n * @return {String} Encoded string Base58check or Base64check data\n */\nexport function encode (data, type) {\n return `${type}_${base64Types.includes(type)\n ? encodeBase64Check(data)\n : encodeBase58Check(data)}`\n}\n\n/**\n * Utility function to create and _id type\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} hashId Encoded hash\n * @return {Buffer} Buffer Buffer with ID tag and decoded HASh\n */\nexport function writeId (hashId) {\n const prefix = hashId.slice(0, 2)\n const idTag = PREFIX_ID_TAG[prefix]\n if (!idTag) throw new Error(`Id tag for prefix ${prefix} not found.`)\n return Buffer.from([...toBytes(idTag), ...decode(hashId, prefix)])\n}\n\n/**\n * Utility function to read and _id type\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Buffer} buf Data\n * @return {String} Encoided hash string with prefix\n */\nexport function readId (buf) {\n const tag = buf.readUIntBE(0, 1)\n const prefix = ID_TAG_PREFIX[tag]\n if (!prefix) throw new Error(`Prefix for id-tag ${tag} not found.`)\n return encode(buf.slice(1, buf.length), prefix)\n}\n\n/**\n * Utility function to convert int to bytes\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Number|String|BigNumber} val Value\n * @return {Buffer} Buffer Buffer from number(BigEndian)\n */\nexport function writeInt (val) {\n return toBytes(val, true)\n}\n\n/**\n * Utility function to convert bytes to int\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Buffer} buf Value\n * @return {String} Buffer Buffer from number(BigEndian)\n */\nexport function readInt (buf = Buffer.from([])) {\n return BigNumber(buf.toString('hex'), 16).toString(10)\n}\n\n/**\n * Helper function to build pointers for name update TX\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Array} pointers - Array of pointers ([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])\n * @return {Array} Serialized pointers array\n */\nexport function buildPointers (pointers) {\n return pointers.map(\n p => [\n toBytes(p.key),\n writeId(p.id)\n ]\n )\n}\n\n/**\n * Helper function to read pointers from name update TX\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Array} pointers - Array of pointers ([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])\n * @return {Array} Deserialize pointer array\n */\nexport function readPointers (pointers) {\n return pointers.map(\n ([key, id]) => Object.assign({\n key: key.toString(),\n id: readId(id)\n })\n )\n}\n\n/**\n * Ensure that name is valid\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} name\n * @return void\n * @throws Error\n */\nexport function ensureNameValid (name) {\n if (!name || typeof name !== 'string') throw new Error('Name must be a string')\n if (!name.endsWith('.chain')) throw new Error(`Name should end with .chain: ${name}`)\n}\n\n/**\n * Is name valid\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} name\n * @return Boolean\n */\nexport function isNameValid (name) {\n try {\n ensureNameValid(name)\n return true\n } catch (error) {\n return false\n }\n}\n\n/**\n * What kind of a hash is this? If it begins with 'ak_' it is an\n * account key, if with 'ok_' it's an oracle key.\n *\n * @param s - the hash.\n * returns the type, or throws an exception if type not found.\n */\nexport function classify (s) {\n if (!s.match(/^[a-z]{2}_.+/)) {\n throw new Error('Not a valid hash')\n }\n\n const klass = s.substr(0, 2)\n if (klass in NAME_ID_KEY) {\n return NAME_ID_KEY[klass]\n } else {\n throw new Error(`Unknown class ${klass}`)\n }\n}\n\n/**\n * Validate name pointers array\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String[]} pointers Pointers array. Allowed values is: account(ak_), oracle(ok_), contract(ct_), channel(ch_)\n * @return {Boolean}\n */\nexport function validatePointers (pointers = []) {\n return !pointers\n .find(p => !p || typeof p !== 'string' || !['ak', 'ok', 'ct', 'ch'].includes(p.split('_')[0]))\n}\n\n/**\n * Get the minimum name fee for a domain\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} domain the domain name to get the fee for\n * @return {String} the minimum fee for the domain auction\n */\nexport function getMinimumNameFee (domain) {\n const nameLength = domain.replace('.chain', '').length\n return NAME_BID_RANGES[nameLength >= NAME_MAX_LENGTH_FEE ? NAME_MAX_LENGTH_FEE : nameLength]\n}\n\n/**\n * Compute bid fee for AENS auction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} domain the domain name to get the fee for\n * @param {Number|String} startFee Auction start fee\n * @param {Number} [increment=0.5] Bid multiplier(In percentage, must be between 0 and 1)\n * @return {String} Bid fee\n */\nexport function computeBidFee (domain, startFee = NAME_FEE, increment = NAME_FEE_BID_INCREMENT) {\n if (!(Number(increment) === increment && increment % 1 !== 0)) throw new Error(`Increment must be float. Current increment ${increment}`)\n if (increment < NAME_FEE_BID_INCREMENT) throw new Error(`minimum increment percentage is ${NAME_FEE_BID_INCREMENT}`)\n return ceil(\n BigNumber(BigNumber(startFee).eq(NAME_FEE) ? getMinimumNameFee(domain) : startFee).times(BigNumber(NAME_FEE_BID_INCREMENT).plus(1))\n )\n}\n\n/**\n * Compute auction end height\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} domain the domain name to get the fee for\n * @param {Number|String} claimHeight Auction starting height\n * @return {String} Auction end height\n */\nexport function computeAuctionEndBlock (domain, claimHeight) {\n return R.cond([\n [R.lt(5), R.always(NAME_BID_TIMEOUTS[4].plus(claimHeight))],\n [R.lt(9), R.always(NAME_BID_TIMEOUTS[8].plus(claimHeight))],\n [R.lte(NAME_BID_MAX_LENGTH), R.always(NAME_BID_TIMEOUTS[12].plus(claimHeight))],\n [R.T, R.always(BigNumber(claimHeight))]\n ])(domain.replace('.chain', '').length).toString(10)\n}\n\n/**\n * Is name accept going to auction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name Transaction abiVersion\n * @return {Boolean}\n */\nexport function isAuctionName (name) {\n return name.replace('.chain', '').length < 13\n}\n"],"file":"helpers.js"}