@aeternity/aepp-sdk 13.3.1 → 13.3.2
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/bin/aesophia_cli_8 +0 -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 +36 -43
- package/dist/aepp-sdk.js.map +1 -1
- package/es/chain.d.ts +5 -5
- package/es/chain.mjs +18 -20
- package/es/chain.mjs.map +1 -1
- package/es/contract/Contract.mjs +3 -0
- package/es/contract/Contract.mjs.map +1 -1
- package/es/oracle.d.ts +2 -2
- package/es/oracle.mjs +6 -10
- package/es/oracle.mjs.map +1 -1
- package/es/tx/builder/field-types/gas-price.mjs +1 -4
- package/es/tx/builder/field-types/gas-price.mjs.map +1 -1
- package/es/tx/builder/field-types/ttl.d.ts +3 -2
- package/es/tx/builder/field-types/ttl.mjs.map +1 -1
- package/es/tx/builder/schema.d.ts +69 -46
- package/es/utils/semver-satisfies.d.ts +1 -1
- package/es/utils/semver-satisfies.mjs +8 -9
- package/es/utils/semver-satisfies.mjs.map +1 -1
- package/package.json +2 -2
- package/src/chain.ts +28 -18
- package/src/contract/Contract.ts +3 -0
- package/src/oracle.ts +7 -7
- package/src/tx/builder/field-types/gas-price.ts +67 -70
- package/src/tx/builder/field-types/ttl.ts +1 -1
- package/src/utils/semver-satisfies.ts +14 -13
- package/types-legacy/ts4.2/chain.d.ts +5 -5
- package/types-legacy/ts4.2/oracle.d.ts +2 -2
- package/types-legacy/ts4.2/tx/builder/field-types/ttl.d.ts +3 -2
- package/types-legacy/ts4.2/tx/builder/schema.d.ts +69 -46
- package/types-legacy/ts4.2/utils/semver-satisfies.d.ts +1 -1
- package/types-legacy/ts4.5/chain.d.ts +5 -5
- package/types-legacy/ts4.5/oracle.d.ts +2 -2
- package/types-legacy/ts4.5/tx/builder/field-types/ttl.d.ts +3 -2
- package/types-legacy/ts4.5/tx/builder/schema.d.ts +69 -46
- package/types-legacy/ts4.5/utils/semver-satisfies.d.ts +1 -1
package/es/oracle.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oracle.mjs","names":["mapObject","pause","oracleQueryId","unpackTx","buildTxAsync","Tag","RequestTimedOutError","decode","encode","Encoding","_getPollInterval","getHeight","sendTransaction","pollForQueries","oracleId","onQuery","interval","onNode","options","_interval","knownQueryIds","Set","checkNewQueries","_await$onNode$getOrac","queries","getOracleQueriesByPubkey","oracleQueries","filter","id","has","forEach","query","add","stopped","catch","console","error","pollForQueryResponse","queryId","_interval2","height","ttl","response","getOracleQueryByPubkeyAndQueryId","responseBuffer","length","toString","cached","getQueryObject","record","decodedQuery","decodedResponse","respond","opt","respondToQuery","pollForResponse","postQueryToOracle","senderId","onAccount","address","oracleQueryTx","_isInternalBuild","tag","OracleQueryTx","nonce","extendOracleTtl","OracleAddress","oracleExtendTx","OracleExtendTx","getOracleObject","oracleRespondTx","OracleResponseTx","getOracleByPubkey","pollQueries","postQuery","extendOracle","getQuery","name","handler","args","lastArg","constructor","Object","assign","push","includes","registerOracle","queryFormat","responseFormat","accountId","oracleRegisterTx","OracleRegisterTx"],"sources":["../src/oracle.ts"],"sourcesContent":["/**\n * Oracle methods - routines to interact with the æternity oracle system\n *\n * The high-level description of the oracle system is\n * https://github.com/aeternity/protocol/blob/master/ORACLE.md in the protocol\n * repository.\n */\n\nimport { mapObject, pause } from './utils/other';\nimport { oracleQueryId } from './tx/builder/helpers';\nimport { unpackTx, buildTxAsync, BuildTxOptions } from './tx/builder';\nimport { Tag } from './tx/builder/constants';\nimport { RequestTimedOutError } from './utils/errors';\nimport {\n decode, encode, Encoded, Encoding,\n} from './utils/encoder';\nimport { _getPollInterval, getHeight } from './chain';\nimport { sendTransaction, SendTransactionOptions } from './send-transaction';\nimport Node from './Node';\nimport AccountBase from './account/Base';\n\ntype OracleQueries = Awaited<ReturnType<Node['getOracleQueriesByPubkey']>>['oracleQueries'];\n\n/**\n * Poll for oracle queries\n * @category oracle\n * @param oracleId - Oracle public key\n * @param onQuery - OnQuery callback\n * @param options - Options object\n * @param options.interval - Poll interval(default: 5000)\n * @param options.onNode - Node to use\n * @returns Callback to stop polling function\n */\nexport function pollForQueries(\n oracleId: Encoded.OracleAddress,\n onQuery: (query: OracleQueries[number]) => void,\n { interval, onNode, ...options }: { interval?: number; onNode: Node }\n & Parameters<typeof _getPollInterval>[1],\n): () => void {\n interval ??= _getPollInterval('microblock', options);\n const knownQueryIds = new Set();\n const checkNewQueries = async (): Promise<void> => {\n const queries = ((await onNode.getOracleQueriesByPubkey(oracleId)).oracleQueries ?? [])\n .filter(({ id }) => !knownQueryIds.has(id));\n queries.forEach((query) => {\n knownQueryIds.add(query.id);\n onQuery(query);\n });\n };\n\n let stopped = false;\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n (async () => {\n while (!stopped) { // eslint-disable-line no-unmodified-loop-condition\n // TODO: allow to handle this error somehow\n await checkNewQueries().catch(console.error);\n await pause(interval);\n }\n })();\n return () => { stopped = true; };\n}\n\n/**\n * Poll for oracle query response\n * @category oracle\n * @param oracleId - Oracle public key\n * @param queryId - Oracle Query id\n * @param options - Options object\n * @param options.interval - Poll interval\n * @param options.onNode - Node to use\n * @returns OracleQuery object\n */\nexport async function pollForQueryResponse(\n oracleId: Encoded.OracleAddress,\n queryId: Encoded.OracleQueryId,\n { interval, onNode, ...options }:\n { interval?: number; onNode: Node } & Parameters<typeof _getPollInterval>[1],\n): Promise<string> {\n interval ??= _getPollInterval('microblock', options);\n let height;\n let ttl;\n let response;\n do {\n ({ response, ttl } = await onNode.getOracleQueryByPubkeyAndQueryId(oracleId, queryId));\n const responseBuffer = decode(response as Encoded.OracleResponse);\n if (responseBuffer.length > 0) return responseBuffer.toString();\n await pause(interval);\n height = await getHeight({ ...options, onNode, cached: true });\n } while (ttl >= height);\n throw new RequestTimedOutError(height);\n}\n\n/**\n * Constructor for OracleQuery Object (helper object for using OracleQuery)\n * @category oracle\n * @param oracleId - Oracle public key\n * @param queryId - Oracle Query id\n * @param options - Options\n * @returns OracleQuery object\n */\nexport async function getQueryObject(\n oracleId: Encoded.OracleAddress,\n queryId: Encoded.OracleQueryId,\n options: RespondToQueryOptions & Parameters<typeof pollForQueryResponse>[2],\n): Promise<GetQueryObjectReturnType> {\n const record = await options.onNode.getOracleQueryByPubkeyAndQueryId(oracleId, queryId);\n return {\n ...record,\n decodedQuery: decode(record.query as Encoded.OracleQueryId).toString(),\n decodedResponse: decode(record.response as Encoded.OracleResponse).toString(),\n respond: async (response, opt) => (\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n respondToQuery(queryId, response, { ...options, ...opt })\n ),\n pollForResponse: async (opt) => pollForQueryResponse(oracleId, queryId, { ...options, ...opt }),\n };\n}\n\ninterface GetQueryObjectReturnType extends Awaited<ReturnType<Node['getOracleQueryByPubkeyAndQueryId']>> {\n decodedQuery: string;\n decodedResponse: string;\n respond: (response: string, options?: Parameters<typeof respondToQuery>[2]) =>\n ReturnType<typeof respondToQuery>;\n pollForResponse: (options?: Parameters<typeof pollForQueryResponse>[2]) =>\n ReturnType<typeof pollForQueryResponse>;\n}\n\n/**\n * Post query to oracle\n * @category oracle\n * @param oracleId - Oracle public key\n * @param query - Oracle query object\n * @param options - Options object\n * @returns Query object\n */\nexport async function postQueryToOracle(\n oracleId: Encoded.OracleAddress,\n query: string,\n options: PostQueryToOracleOptions,\n): Promise<\n Awaited<ReturnType<typeof sendTransaction>> & Awaited<ReturnType<typeof getQueryObject>>\n > {\n const senderId = options.onAccount.address;\n\n const oracleQueryTx = await buildTxAsync({\n _isInternalBuild: true,\n ...options,\n tag: Tag.OracleQueryTx,\n oracleId,\n senderId,\n query,\n });\n const { nonce } = unpackTx(oracleQueryTx, Tag.OracleQueryTx);\n const queryId = oracleQueryId(senderId, nonce, oracleId);\n return {\n ...await sendTransaction(oracleQueryTx, options),\n ...await getQueryObject(oracleId, queryId, options),\n };\n}\n\ntype PostQueryToOracleOptionsType = Parameters<typeof sendTransaction>[1]\n& Parameters<typeof getQueryObject>[2]\n& BuildTxOptions<Tag.OracleQueryTx, 'oracleId' | 'senderId' | 'query'>;\ninterface PostQueryToOracleOptions extends PostQueryToOracleOptionsType {}\n\n/**\n * Extend oracle ttl\n * @category oracle\n * @param options - Options object\n * @returns Oracle object\n */\nexport async function extendOracleTtl(options: ExtendOracleTtlOptions): Promise<\nAwaited<ReturnType<typeof sendTransaction>> & Awaited<ReturnType<typeof getOracleObject>>\n> {\n const oracleId = encode(decode(options.onAccount.address), Encoding.OracleAddress);\n const oracleExtendTx = await buildTxAsync({\n _isInternalBuild: true,\n ...options,\n tag: Tag.OracleExtendTx,\n oracleId,\n });\n return {\n ...await sendTransaction(oracleExtendTx, options),\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n ...await getOracleObject(oracleId, options),\n };\n}\n\ntype ExtendOracleTtlOptionsType = SendTransactionOptions & Parameters<typeof getOracleObject>[1]\n& BuildTxOptions<Tag.OracleExtendTx, 'callerId' | 'oracleId'>;\ninterface ExtendOracleTtlOptions extends ExtendOracleTtlOptionsType {}\n\n/**\n * Extend oracle ttl\n * @category oracle\n * @param queryId - Oracle query id\n * @param response - Oracle query response\n * @param options - Options object\n * @returns Oracle object\n */\nexport async function respondToQuery(\n queryId: Encoded.OracleQueryId,\n response: string,\n options: RespondToQueryOptions,\n): Promise<\n Awaited<ReturnType<typeof sendTransaction>> & Awaited<ReturnType<typeof getOracleObject>>\n > {\n const oracleId = encode(decode(options.onAccount.address), Encoding.OracleAddress);\n const oracleRespondTx = await buildTxAsync({\n _isInternalBuild: true,\n ...options,\n tag: Tag.OracleResponseTx,\n oracleId,\n queryId,\n response,\n });\n return {\n ...await sendTransaction(oracleRespondTx, options),\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n ...await getOracleObject(oracleId, options),\n };\n}\n\ntype RespondToQueryOptionsType = SendTransactionOptions & Parameters<typeof getOracleObject>[1]\n& BuildTxOptions<Tag.OracleResponseTx, 'callerId' | 'oracleId' | 'queryId' | 'response'>;\ninterface RespondToQueryOptions extends RespondToQueryOptionsType {}\n\n/**\n * Constructor for Oracle Object (helper object for using Oracle)\n * @category oracle\n * @param oracleId - Oracle public key\n * @param options - Options\n * @returns Oracle object\n */\nexport async function getOracleObject(\n oracleId: Encoded.OracleAddress,\n options: { onNode: Node; onAccount: AccountBase },\n): Promise<GetOracleObjectReturnType> {\n return {\n ...await options.onNode.getOracleByPubkey(oracleId),\n queries: (await options.onNode.getOracleQueriesByPubkey(oracleId)).oracleQueries,\n ...mapObject<Function, Function>(\n {\n pollQueries: pollForQueries,\n postQuery: postQueryToOracle,\n respondToQuery,\n extendOracle: extendOracleTtl,\n getQuery: getQueryObject,\n },\n ([name, handler]) => [\n name,\n (...args: any) => {\n const lastArg = args[args.length - 1];\n if (lastArg != null && typeof lastArg === 'object' && lastArg.constructor === Object) {\n Object.assign(lastArg, { ...options, ...lastArg });\n } else args.push(options);\n return handler(\n ...['extendOracle', 'respondToQuery'].includes(name) ? [] : [oracleId],\n ...args,\n );\n },\n ],\n ),\n } as any;\n}\n\ninterface GetOracleObjectReturnType extends Awaited<ReturnType<Node['getOracleByPubkey']>> {\n id: Encoded.OracleAddress;\n queries: OracleQueries;\n // TODO: replace getOracleObject with a class\n pollQueries: (cb: Parameters<typeof pollForQueries>[1]) => ReturnType<typeof pollForQueries>;\n postQuery: Function;\n respondToQuery: Function;\n extendOracle: Function;\n getQuery: Function;\n}\n\n/**\n * Register oracle\n * @category oracle\n * @param queryFormat - Format of query\n * @param responseFormat - Format of query response\n * @param options - Options\n * @returns Oracle object\n */\nexport async function registerOracle(\n queryFormat: string,\n responseFormat: string,\n options: RegisterOracleOptions,\n): Promise<\n Awaited<ReturnType<typeof sendTransaction>> & Awaited<ReturnType<typeof getOracleObject>>\n > {\n const accountId = options.onAccount.address;\n const oracleRegisterTx = await buildTxAsync({\n _isInternalBuild: true,\n ...options,\n tag: Tag.OracleRegisterTx,\n accountId,\n queryFormat,\n responseFormat,\n });\n return {\n ...await sendTransaction(oracleRegisterTx, options),\n ...await getOracleObject(encode(decode(accountId), Encoding.OracleAddress), options),\n };\n}\n\ntype RegisterOracleOptionsType = SendTransactionOptions & Parameters<typeof getOracleObject>[1]\n& BuildTxOptions<Tag.OracleRegisterTx, 'accountId' | 'queryFormat' | 'responseFormat'>;\ninterface RegisterOracleOptions extends RegisterOracleOptionsType {}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"oracle.mjs","names":["mapObject","pause","oracleQueryId","unpackTx","buildTxAsync","Tag","RequestTimedOutError","decode","encode","Encoding","_getPollInterval","getHeight","sendTransaction","pollForQueries","oracleId","onQuery","interval","options","knownQueryIds","Set","checkNewQueries","_await$options$onNode","queries","onNode","getOracleQueriesByPubkey","oracleQueries","filter","id","has","forEach","query","add","stopped","_interval","catch","console","error","pollForQueryResponse","queryId","_interval2","height","ttl","response","getOracleQueryByPubkeyAndQueryId","responseBuffer","length","toString","cached","getQueryObject","record","decodedQuery","decodedResponse","respond","opt","respondToQuery","pollForResponse","postQueryToOracle","senderId","onAccount","address","oracleQueryTx","_isInternalBuild","tag","OracleQueryTx","nonce","extendOracleTtl","OracleAddress","oracleExtendTx","OracleExtendTx","getOracleObject","oracleRespondTx","OracleResponseTx","getOracleByPubkey","pollQueries","postQuery","extendOracle","getQuery","name","handler","args","lastArg","constructor","Object","assign","push","includes","registerOracle","queryFormat","responseFormat","accountId","oracleRegisterTx","OracleRegisterTx"],"sources":["../src/oracle.ts"],"sourcesContent":["/**\n * Oracle methods - routines to interact with the æternity oracle system\n *\n * The high-level description of the oracle system is\n * https://github.com/aeternity/protocol/blob/master/ORACLE.md in the protocol\n * repository.\n */\n\nimport { mapObject, pause } from './utils/other';\nimport { oracleQueryId } from './tx/builder/helpers';\nimport { unpackTx, buildTxAsync, BuildTxOptions } from './tx/builder';\nimport { Tag } from './tx/builder/constants';\nimport { RequestTimedOutError } from './utils/errors';\nimport {\n decode, encode, Encoded, Encoding,\n} from './utils/encoder';\nimport { _getPollInterval, getHeight } from './chain';\nimport { sendTransaction, SendTransactionOptions } from './send-transaction';\nimport Node from './Node';\nimport AccountBase from './account/Base';\n\ntype OracleQueries = Awaited<ReturnType<Node['getOracleQueriesByPubkey']>>['oracleQueries'];\n\n/**\n * Poll for oracle queries\n * @category oracle\n * @param oracleId - Oracle public key\n * @param onQuery - OnQuery callback\n * @param options - Options object\n * @param options.interval - Poll interval(default: 5000)\n * @param options.onNode - Node to use\n * @returns Callback to stop polling function\n */\nexport function pollForQueries(\n oracleId: Encoded.OracleAddress,\n onQuery: (query: OracleQueries[number]) => void,\n { interval, ...options }: { interval?: number; onNode: Node }\n & Parameters<typeof _getPollInterval>[1],\n): () => void {\n const knownQueryIds = new Set();\n const checkNewQueries = async (): Promise<void> => {\n const queries = ((await options.onNode.getOracleQueriesByPubkey(oracleId)).oracleQueries ?? [])\n .filter(({ id }) => !knownQueryIds.has(id));\n queries.forEach((query) => {\n knownQueryIds.add(query.id);\n onQuery(query);\n });\n };\n\n let stopped = false;\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n (async () => {\n interval ??= await _getPollInterval('micro-block', options);\n while (!stopped) { // eslint-disable-line no-unmodified-loop-condition\n // TODO: allow to handle this error somehow\n await checkNewQueries().catch(console.error);\n await pause(interval);\n }\n })();\n return () => { stopped = true; };\n}\n\n/**\n * Poll for oracle query response\n * @category oracle\n * @param oracleId - Oracle public key\n * @param queryId - Oracle Query id\n * @param options - Options object\n * @param options.interval - Poll interval\n * @param options.onNode - Node to use\n * @returns OracleQuery object\n */\nexport async function pollForQueryResponse(\n oracleId: Encoded.OracleAddress,\n queryId: Encoded.OracleQueryId,\n { interval, ...options }:\n { interval?: number; onNode: Node } & Parameters<typeof _getPollInterval>[1],\n): Promise<string> {\n interval ??= await _getPollInterval('micro-block', options);\n let height;\n let ttl;\n let response;\n do {\n ({ response, ttl } = await options.onNode.getOracleQueryByPubkeyAndQueryId(oracleId, queryId));\n const responseBuffer = decode(response as Encoded.OracleResponse);\n if (responseBuffer.length > 0) return responseBuffer.toString();\n await pause(interval);\n height = await getHeight({ ...options, cached: true });\n } while (ttl >= height);\n throw new RequestTimedOutError(height);\n}\n\n/**\n * Constructor for OracleQuery Object (helper object for using OracleQuery)\n * @category oracle\n * @param oracleId - Oracle public key\n * @param queryId - Oracle Query id\n * @param options - Options\n * @returns OracleQuery object\n */\nexport async function getQueryObject(\n oracleId: Encoded.OracleAddress,\n queryId: Encoded.OracleQueryId,\n options: RespondToQueryOptions & Parameters<typeof pollForQueryResponse>[2],\n): Promise<GetQueryObjectReturnType> {\n const record = await options.onNode.getOracleQueryByPubkeyAndQueryId(oracleId, queryId);\n return {\n ...record,\n decodedQuery: decode(record.query as Encoded.OracleQueryId).toString(),\n decodedResponse: decode(record.response as Encoded.OracleResponse).toString(),\n respond: async (response, opt) => (\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n respondToQuery(queryId, response, { ...options, ...opt })\n ),\n pollForResponse: async (opt) => pollForQueryResponse(oracleId, queryId, { ...options, ...opt }),\n };\n}\n\ninterface GetQueryObjectReturnType extends Awaited<ReturnType<Node['getOracleQueryByPubkeyAndQueryId']>> {\n decodedQuery: string;\n decodedResponse: string;\n respond: (response: string, options?: Parameters<typeof respondToQuery>[2]) =>\n ReturnType<typeof respondToQuery>;\n pollForResponse: (options?: Parameters<typeof pollForQueryResponse>[2]) =>\n ReturnType<typeof pollForQueryResponse>;\n}\n\n/**\n * Post query to oracle\n * @category oracle\n * @param oracleId - Oracle public key\n * @param query - Oracle query object\n * @param options - Options object\n * @returns Query object\n */\nexport async function postQueryToOracle(\n oracleId: Encoded.OracleAddress,\n query: string,\n options: PostQueryToOracleOptions,\n): Promise<\n Awaited<ReturnType<typeof sendTransaction>> & Awaited<ReturnType<typeof getQueryObject>>\n > {\n const senderId = options.onAccount.address;\n\n const oracleQueryTx = await buildTxAsync({\n _isInternalBuild: true,\n ...options,\n tag: Tag.OracleQueryTx,\n oracleId,\n senderId,\n query,\n });\n const { nonce } = unpackTx(oracleQueryTx, Tag.OracleQueryTx);\n const queryId = oracleQueryId(senderId, nonce, oracleId);\n return {\n ...await sendTransaction(oracleQueryTx, options),\n ...await getQueryObject(oracleId, queryId, options),\n };\n}\n\ntype PostQueryToOracleOptionsType = Parameters<typeof sendTransaction>[1]\n& Parameters<typeof getQueryObject>[2]\n& BuildTxOptions<Tag.OracleQueryTx, 'oracleId' | 'senderId' | 'query'>;\ninterface PostQueryToOracleOptions extends PostQueryToOracleOptionsType {}\n\n/**\n * Extend oracle ttl\n * @category oracle\n * @param options - Options object\n * @returns Oracle object\n */\nexport async function extendOracleTtl(options: ExtendOracleTtlOptions): Promise<\nAwaited<ReturnType<typeof sendTransaction>> & Awaited<ReturnType<typeof getOracleObject>>\n> {\n const oracleId = encode(decode(options.onAccount.address), Encoding.OracleAddress);\n const oracleExtendTx = await buildTxAsync({\n _isInternalBuild: true,\n ...options,\n tag: Tag.OracleExtendTx,\n oracleId,\n });\n return {\n ...await sendTransaction(oracleExtendTx, options),\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n ...await getOracleObject(oracleId, options),\n };\n}\n\ntype ExtendOracleTtlOptionsType = SendTransactionOptions & Parameters<typeof getOracleObject>[1]\n& BuildTxOptions<Tag.OracleExtendTx, 'callerId' | 'oracleId'>;\ninterface ExtendOracleTtlOptions extends ExtendOracleTtlOptionsType {}\n\n/**\n * Extend oracle ttl\n * @category oracle\n * @param queryId - Oracle query id\n * @param response - Oracle query response\n * @param options - Options object\n * @returns Oracle object\n */\nexport async function respondToQuery(\n queryId: Encoded.OracleQueryId,\n response: string,\n options: RespondToQueryOptions,\n): Promise<\n Awaited<ReturnType<typeof sendTransaction>> & Awaited<ReturnType<typeof getOracleObject>>\n > {\n const oracleId = encode(decode(options.onAccount.address), Encoding.OracleAddress);\n const oracleRespondTx = await buildTxAsync({\n _isInternalBuild: true,\n ...options,\n tag: Tag.OracleResponseTx,\n oracleId,\n queryId,\n response,\n });\n return {\n ...await sendTransaction(oracleRespondTx, options),\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n ...await getOracleObject(oracleId, options),\n };\n}\n\ntype RespondToQueryOptionsType = SendTransactionOptions & Parameters<typeof getOracleObject>[1]\n& BuildTxOptions<Tag.OracleResponseTx, 'callerId' | 'oracleId' | 'queryId' | 'response'>;\ninterface RespondToQueryOptions extends RespondToQueryOptionsType {}\n\n/**\n * Constructor for Oracle Object (helper object for using Oracle)\n * @category oracle\n * @param oracleId - Oracle public key\n * @param options - Options\n * @returns Oracle object\n */\nexport async function getOracleObject(\n oracleId: Encoded.OracleAddress,\n options: { onNode: Node; onAccount: AccountBase },\n): Promise<GetOracleObjectReturnType> {\n return {\n ...await options.onNode.getOracleByPubkey(oracleId),\n queries: (await options.onNode.getOracleQueriesByPubkey(oracleId)).oracleQueries,\n ...mapObject<Function, Function>(\n {\n pollQueries: pollForQueries,\n postQuery: postQueryToOracle,\n respondToQuery,\n extendOracle: extendOracleTtl,\n getQuery: getQueryObject,\n },\n ([name, handler]) => [\n name,\n (...args: any) => {\n const lastArg = args[args.length - 1];\n if (lastArg != null && typeof lastArg === 'object' && lastArg.constructor === Object) {\n Object.assign(lastArg, { ...options, ...lastArg });\n } else args.push(options);\n return handler(\n ...['extendOracle', 'respondToQuery'].includes(name) ? [] : [oracleId],\n ...args,\n );\n },\n ],\n ),\n } as any;\n}\n\ninterface GetOracleObjectReturnType extends Awaited<ReturnType<Node['getOracleByPubkey']>> {\n id: Encoded.OracleAddress;\n queries: OracleQueries;\n // TODO: replace getOracleObject with a class\n pollQueries: (cb: Parameters<typeof pollForQueries>[1]) => ReturnType<typeof pollForQueries>;\n postQuery: Function;\n respondToQuery: Function;\n extendOracle: Function;\n getQuery: Function;\n}\n\n/**\n * Register oracle\n * @category oracle\n * @param queryFormat - Format of query\n * @param responseFormat - Format of query response\n * @param options - Options\n * @returns Oracle object\n */\nexport async function registerOracle(\n queryFormat: string,\n responseFormat: string,\n options: RegisterOracleOptions,\n): Promise<\n Awaited<ReturnType<typeof sendTransaction>> & Awaited<ReturnType<typeof getOracleObject>>\n > {\n const accountId = options.onAccount.address;\n const oracleRegisterTx = await buildTxAsync({\n _isInternalBuild: true,\n ...options,\n tag: Tag.OracleRegisterTx,\n accountId,\n queryFormat,\n responseFormat,\n });\n return {\n ...await sendTransaction(oracleRegisterTx, options),\n ...await getOracleObject(encode(decode(accountId), Encoding.OracleAddress), options),\n };\n}\n\ntype RegisterOracleOptionsType = SendTransactionOptions & Parameters<typeof getOracleObject>[1]\n& BuildTxOptions<Tag.OracleRegisterTx, 'accountId' | 'queryFormat' | 'responseFormat'>;\ninterface RegisterOracleOptions extends RegisterOracleOptionsType {}\n"],"mappings":"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"}
|
|
@@ -15,10 +15,7 @@ export async function getCachedIncreasedGasPrice(node) {
|
|
|
15
15
|
const {
|
|
16
16
|
nodeVersion
|
|
17
17
|
} = await node._getCachedStatus();
|
|
18
|
-
|
|
19
|
-
if (!nodeVersion.startsWith('6.12.0+') && !semverSatisfies(nodeVersion, '6.13.0', '8.0.0')) {
|
|
20
|
-
return 0n;
|
|
21
|
-
}
|
|
18
|
+
if (!semverSatisfies(nodeVersion, '6.13.0')) return 0n;
|
|
22
19
|
const {
|
|
23
20
|
minGasPrice,
|
|
24
21
|
utilization
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gas-price.mjs","names":["BigNumber","coinAmount","ArgumentError","IllegalArgumentError","MIN_GAS_PRICE","formatAmount","semverSatisfies","gasPriceCache","WeakMap","getCachedIncreasedGasPrice","node","cache","get","time","Date","now","gasPrice","nodeVersion","_getCachedStatus","
|
|
1
|
+
{"version":3,"file":"gas-price.mjs","names":["BigNumber","coinAmount","ArgumentError","IllegalArgumentError","MIN_GAS_PRICE","formatAmount","semverSatisfies","gasPriceCache","WeakMap","getCachedIncreasedGasPrice","node","cache","get","time","Date","now","gasPrice","nodeVersion","_getCachedStatus","minGasPrice","utilization","getRecentGasPrices","BigInt","toString","times","integerValue","toFixed","maxSafeGasPrice","console","warn","join","set","prepare","value","params","onNode","denomination","undefined","targetDenomination","serializeAettos"],"sources":["../../../../src/tx/builder/field-types/gas-price.ts"],"sourcesContent":["import BigNumber from 'bignumber.js';\nimport coinAmount from './coin-amount';\nimport { ArgumentError, IllegalArgumentError } from '../../../utils/errors';\nimport { Int, MIN_GAS_PRICE } from '../constants';\nimport Node from '../../../Node';\nimport { AE_AMOUNT_FORMATS, formatAmount } from '../../../utils/amount-formatter';\nimport semverSatisfies from '../../../utils/semver-satisfies';\n\nconst gasPriceCache: WeakMap<Node, { time: number; gasPrice: bigint }> = new WeakMap();\n\nexport async function getCachedIncreasedGasPrice(node: Node): Promise<bigint> {\n const cache = gasPriceCache.get(node);\n if (cache != null && cache.time > Date.now() - 20 * 1000) {\n return cache.gasPrice;\n }\n\n // TODO: remove after requiring node@6.13.0\n const { nodeVersion } = await node._getCachedStatus();\n if (!semverSatisfies(nodeVersion, '6.13.0')) return 0n;\n\n const { minGasPrice, utilization } = (await node.getRecentGasPrices())[0];\n let gasPrice = utilization < 70 ? 0n : BigInt(\n new BigNumber(minGasPrice.toString()).times(1.01).integerValue().toFixed(),\n );\n\n const maxSafeGasPrice = BigInt(MIN_GAS_PRICE) * 100000n; // max microblock fee is 600ae or 35usd\n if (gasPrice > maxSafeGasPrice) {\n console.warn([\n `Estimated gas price ${gasPrice} exceeds the maximum safe value for unknown reason.`,\n `It will be limited to ${maxSafeGasPrice}.`,\n 'To overcome this restriction provide `gasPrice`/`fee` in options.',\n ].join(' '));\n gasPrice = maxSafeGasPrice;\n }\n\n gasPriceCache.set(node, { gasPrice, time: Date.now() });\n return gasPrice;\n}\n\n// TODO: use withFormatting after using a single type for coins representation\nexport default {\n ...coinAmount,\n\n async prepare(\n value: Int | undefined,\n params: {},\n { onNode, denomination }: {\n onNode?: Node;\n denomination?: AE_AMOUNT_FORMATS;\n },\n ): Promise<Int | undefined> {\n if (value != null) return value;\n if (onNode == null) {\n throw new ArgumentError('onNode', 'provided (or provide `gasPrice` instead)', onNode);\n }\n const gasPrice = await getCachedIncreasedGasPrice(onNode);\n if (gasPrice === 0n) return undefined;\n return formatAmount(gasPrice, { targetDenomination: denomination });\n },\n\n serializeAettos(value: string | undefined = MIN_GAS_PRICE.toString()): string {\n if (+value < MIN_GAS_PRICE) {\n throw new IllegalArgumentError(`Gas price ${value.toString()} must be bigger than ${MIN_GAS_PRICE}`);\n }\n return value;\n },\n};\n"],"mappings":"AAAA,OAAOA,SAAS,MAAM,cAAc;AAAC,OAC9BC,UAAU;AAAA,SACRC,aAAa,EAAEC,oBAAoB;AAAA,SAC9BC,aAAa;AAAA,SAECC,YAAY;AAAA,OACjCC,eAAe;AAEtB,MAAMC,aAAgE,GAAG,IAAIC,OAAO,CAAC,CAAC;AAEtF,OAAO,eAAeC,0BAA0BA,CAACC,IAAU,EAAmB;EAC5E,MAAMC,KAAK,GAAGJ,aAAa,CAACK,GAAG,CAACF,IAAI,CAAC;EACrC,IAAIC,KAAK,IAAI,IAAI,IAAIA,KAAK,CAACE,IAAI,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE;IACxD,OAAOJ,KAAK,CAACK,QAAQ;EACvB;;EAEA;EACA,MAAM;IAAEC;EAAY,CAAC,GAAG,MAAMP,IAAI,CAACQ,gBAAgB,CAAC,CAAC;EACrD,IAAI,CAACZ,eAAe,CAACW,WAAW,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE;EAEtD,MAAM;IAAEE,WAAW;IAAEC;EAAY,CAAC,GAAG,CAAC,MAAMV,IAAI,CAACW,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC;EACzE,IAAIL,QAAQ,GAAGI,WAAW,GAAG,EAAE,GAAG,EAAE,GAAGE,MAAM,CAC3C,IAAItB,SAAS,CAACmB,WAAW,CAACI,QAAQ,CAAC,CAAC,CAAC,CAACC,KAAK,CAAC,IAAI,CAAC,CAACC,YAAY,CAAC,CAAC,CAACC,OAAO,CAAC,CAC3E,CAAC;EAED,MAAMC,eAAe,GAAGL,MAAM,CAAClB,aAAa,CAAC,GAAG,OAAO,CAAC,CAAC;EACzD,IAAIY,QAAQ,GAAGW,eAAe,EAAE;IAC9BC,OAAO,CAACC,IAAI,CAAC,CACV,uBAAsBb,QAAS,qDAAoD,EACnF,yBAAwBW,eAAgB,GAAE,EAC3C,mEAAmE,CACpE,CAACG,IAAI,CAAC,GAAG,CAAC,CAAC;IACZd,QAAQ,GAAGW,eAAe;EAC5B;EAEApB,aAAa,CAACwB,GAAG,CAACrB,IAAI,EAAE;IAAEM,QAAQ;IAAEH,IAAI,EAAEC,IAAI,CAACC,GAAG,CAAC;EAAE,CAAC,CAAC;EACvD,OAAOC,QAAQ;AACjB;;AAEA;AACA,eAAe;EACb,GAAGf,UAAU;EAEb,MAAM+B,OAAOA,CACXC,KAAsB,EACtBC,MAAU,EACV;IAAEC,MAAM;IAAEC;EAGV,CAAC,EACyB;IAC1B,IAAIH,KAAK,IAAI,IAAI,EAAE,OAAOA,KAAK;IAC/B,IAAIE,MAAM,IAAI,IAAI,EAAE;MAClB,MAAM,IAAIjC,aAAa,CAAC,QAAQ,EAAE,0CAA0C,EAAEiC,MAAM,CAAC;IACvF;IACA,MAAMnB,QAAQ,GAAG,MAAMP,0BAA0B,CAAC0B,MAAM,CAAC;IACzD,IAAInB,QAAQ,KAAK,EAAE,EAAE,OAAOqB,SAAS;IACrC,OAAOhC,YAAY,CAACW,QAAQ,EAAE;MAAEsB,kBAAkB,EAAEF;IAAa,CAAC,CAAC;EACrE,CAAC;EAEDG,eAAeA,CAACN,KAAyB,GAAG7B,aAAa,CAACmB,QAAQ,CAAC,CAAC,EAAU;IAC5E,IAAI,CAACU,KAAK,GAAG7B,aAAa,EAAE;MAC1B,MAAM,IAAID,oBAAoB,CAAE,aAAY8B,KAAK,CAACV,QAAQ,CAAC,CAAE,wBAAuBnB,aAAc,EAAC,CAAC;IACtG;IACA,OAAO6B,KAAK;EACd;AACF,CAAC"}
|
|
@@ -10,10 +10,11 @@ declare const _default: {
|
|
|
10
10
|
onNode?: Node | undefined;
|
|
11
11
|
absoluteTtl?: boolean | undefined;
|
|
12
12
|
_isInternalBuild?: boolean | undefined;
|
|
13
|
-
} & {
|
|
13
|
+
} & Omit<{
|
|
14
14
|
_expectedMineRate?: number | undefined;
|
|
15
15
|
_microBlockCycle?: number | undefined;
|
|
16
|
-
|
|
16
|
+
onNode: Node;
|
|
17
|
+
}, "onNode">): Promise<number | undefined>;
|
|
17
18
|
deserialize(value: Buffer): number;
|
|
18
19
|
};
|
|
19
20
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ttl.mjs","names":["shortUInt","ArgumentError","getHeight","serialize","value","prepare","params","onNode","absoluteTtl","_isInternalBuild","options","_value","cached"],"sources":["../../../../src/tx/builder/field-types/ttl.ts"],"sourcesContent":["import shortUInt from './short-u-int';\nimport Node from '../../../Node';\nimport { ArgumentError } from '../../../utils/errors';\nimport { _getPollInterval, getHeight } from '../../../chain';\n\n/**\n * Time to leave\n */\nexport default {\n ...shortUInt,\n\n serialize(value: number | undefined): Buffer {\n return shortUInt.serialize(value ?? 0);\n },\n\n async prepare(\n value: number | undefined,\n params: {},\n // TODO: { absoluteTtl: true } | { absoluteTtl: false, onNode: Node }\n {\n onNode, absoluteTtl, _isInternalBuild, ...options\n }: {\n onNode?: Node;\n absoluteTtl?: boolean;\n _isInternalBuild?: boolean;\n } & Parameters<typeof _getPollInterval>[1]
|
|
1
|
+
{"version":3,"file":"ttl.mjs","names":["shortUInt","ArgumentError","getHeight","serialize","value","prepare","params","onNode","absoluteTtl","_isInternalBuild","options","_value","cached"],"sources":["../../../../src/tx/builder/field-types/ttl.ts"],"sourcesContent":["import shortUInt from './short-u-int';\nimport Node from '../../../Node';\nimport { ArgumentError } from '../../../utils/errors';\nimport { _getPollInterval, getHeight } from '../../../chain';\n\n/**\n * Time to leave\n */\nexport default {\n ...shortUInt,\n\n serialize(value: number | undefined): Buffer {\n return shortUInt.serialize(value ?? 0);\n },\n\n async prepare(\n value: number | undefined,\n params: {},\n // TODO: { absoluteTtl: true } | { absoluteTtl: false, onNode: Node }\n {\n onNode, absoluteTtl, _isInternalBuild, ...options\n }: {\n onNode?: Node;\n absoluteTtl?: boolean;\n _isInternalBuild?: boolean;\n } & Omit<Parameters<typeof _getPollInterval>[1], 'onNode'>,\n ) {\n if (absoluteTtl !== true && value !== 0 && (value != null || _isInternalBuild === true)) {\n if (onNode == null) throw new ArgumentError('onNode', 'provided', onNode);\n value = (value ?? 3) + await getHeight({ ...options, onNode, cached: true });\n }\n return value;\n },\n};\n"],"mappings":"OAAOA,SAAS;AAAA,SAEPC,aAAa;AAAA,SACKC,SAAS;AAEpC;AACA;AACA;AACA,eAAe;EACb,GAAGF,SAAS;EAEZG,SAASA,CAACC,KAAyB,EAAU;IAC3C,OAAOJ,SAAS,CAACG,SAAS,CAACC,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAC;EACxC,CAAC;EAED,MAAMC,OAAOA,CACXD,KAAyB,EACzBE,MAAU;EACV;EACA;IACEC,MAAM;IAAEC,WAAW;IAAEC,gBAAgB;IAAE,GAAGC;EAKa,CAAC,EAC1D;IACA,IAAIF,WAAW,KAAK,IAAI,IAAIJ,KAAK,KAAK,CAAC,KAAKA,KAAK,IAAI,IAAI,IAAIK,gBAAgB,KAAK,IAAI,CAAC,EAAE;MAAA,IAAAE,MAAA;MACvF,IAAIJ,MAAM,IAAI,IAAI,EAAE,MAAM,IAAIN,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAEM,MAAM,CAAC;MACzEH,KAAK,GAAG,EAAAO,MAAA,GAACP,KAAK,cAAAO,MAAA,cAAAA,MAAA,GAAI,CAAC,KAAI,MAAMT,SAAS,CAAC;QAAE,GAAGQ,OAAO;QAAEH,MAAM;QAAEK,MAAM,EAAE;MAAK,CAAC,CAAC;IAC9E;IACA,OAAOR,KAAK;EACd;AACF,CAAC"}
|
|
@@ -223,10 +223,11 @@ export declare const txSchema: readonly [{
|
|
|
223
223
|
onNode?: import("../..").Node | undefined;
|
|
224
224
|
absoluteTtl?: boolean | undefined;
|
|
225
225
|
_isInternalBuild?: boolean | undefined;
|
|
226
|
-
} & {
|
|
226
|
+
} & Omit<{
|
|
227
227
|
_expectedMineRate?: number | undefined;
|
|
228
228
|
_microBlockCycle?: number | undefined;
|
|
229
|
-
|
|
229
|
+
onNode: import("../..").Node;
|
|
230
|
+
}, "onNode">): Promise<number | undefined>;
|
|
230
231
|
deserialize(value: Buffer): number;
|
|
231
232
|
};
|
|
232
233
|
readonly nonce: {
|
|
@@ -335,10 +336,11 @@ export declare const txSchema: readonly [{
|
|
|
335
336
|
onNode?: import("../..").Node | undefined;
|
|
336
337
|
absoluteTtl?: boolean | undefined;
|
|
337
338
|
_isInternalBuild?: boolean | undefined;
|
|
338
|
-
} & {
|
|
339
|
+
} & Omit<{
|
|
339
340
|
_expectedMineRate?: number | undefined;
|
|
340
341
|
_microBlockCycle?: number | undefined;
|
|
341
|
-
|
|
342
|
+
onNode: import("../..").Node;
|
|
343
|
+
}, "onNode">): Promise<number | undefined>;
|
|
342
344
|
deserialize(value: Buffer): number;
|
|
343
345
|
};
|
|
344
346
|
}, {
|
|
@@ -409,10 +411,11 @@ export declare const txSchema: readonly [{
|
|
|
409
411
|
onNode?: import("../..").Node | undefined;
|
|
410
412
|
absoluteTtl?: boolean | undefined;
|
|
411
413
|
_isInternalBuild?: boolean | undefined;
|
|
412
|
-
} & {
|
|
414
|
+
} & Omit<{
|
|
413
415
|
_expectedMineRate?: number | undefined;
|
|
414
416
|
_microBlockCycle?: number | undefined;
|
|
415
|
-
|
|
417
|
+
onNode: import("../..").Node;
|
|
418
|
+
}, "onNode">): Promise<number | undefined>;
|
|
416
419
|
deserialize(value: Buffer): number;
|
|
417
420
|
};
|
|
418
421
|
}, {
|
|
@@ -484,10 +487,11 @@ export declare const txSchema: readonly [{
|
|
|
484
487
|
onNode?: import("../..").Node | undefined;
|
|
485
488
|
absoluteTtl?: boolean | undefined;
|
|
486
489
|
_isInternalBuild?: boolean | undefined;
|
|
487
|
-
} & {
|
|
490
|
+
} & Omit<{
|
|
488
491
|
_expectedMineRate?: number | undefined;
|
|
489
492
|
_microBlockCycle?: number | undefined;
|
|
490
|
-
|
|
493
|
+
onNode: import("../..").Node;
|
|
494
|
+
}, "onNode">): Promise<number | undefined>;
|
|
491
495
|
deserialize(value: Buffer): number;
|
|
492
496
|
};
|
|
493
497
|
}, {
|
|
@@ -559,10 +563,11 @@ export declare const txSchema: readonly [{
|
|
|
559
563
|
onNode?: import("../..").Node | undefined;
|
|
560
564
|
absoluteTtl?: boolean | undefined;
|
|
561
565
|
_isInternalBuild?: boolean | undefined;
|
|
562
|
-
} & {
|
|
566
|
+
} & Omit<{
|
|
563
567
|
_expectedMineRate?: number | undefined;
|
|
564
568
|
_microBlockCycle?: number | undefined;
|
|
565
|
-
|
|
569
|
+
onNode: import("../..").Node;
|
|
570
|
+
}, "onNode">): Promise<number | undefined>;
|
|
566
571
|
deserialize(value: Buffer): number;
|
|
567
572
|
};
|
|
568
573
|
}, {
|
|
@@ -622,10 +627,11 @@ export declare const txSchema: readonly [{
|
|
|
622
627
|
onNode?: import("../..").Node | undefined;
|
|
623
628
|
absoluteTtl?: boolean | undefined;
|
|
624
629
|
_isInternalBuild?: boolean | undefined;
|
|
625
|
-
} & {
|
|
630
|
+
} & Omit<{
|
|
626
631
|
_expectedMineRate?: number | undefined;
|
|
627
632
|
_microBlockCycle?: number | undefined;
|
|
628
|
-
|
|
633
|
+
onNode: import("../..").Node;
|
|
634
|
+
}, "onNode">): Promise<number | undefined>;
|
|
629
635
|
deserialize(value: Buffer): number;
|
|
630
636
|
};
|
|
631
637
|
}, {
|
|
@@ -681,10 +687,11 @@ export declare const txSchema: readonly [{
|
|
|
681
687
|
onNode?: import("../..").Node | undefined;
|
|
682
688
|
absoluteTtl?: boolean | undefined;
|
|
683
689
|
_isInternalBuild?: boolean | undefined;
|
|
684
|
-
} & {
|
|
690
|
+
} & Omit<{
|
|
685
691
|
_expectedMineRate?: number | undefined;
|
|
686
692
|
_microBlockCycle?: number | undefined;
|
|
687
|
-
|
|
693
|
+
onNode: import("../..").Node;
|
|
694
|
+
}, "onNode">): Promise<number | undefined>;
|
|
688
695
|
deserialize(value: Buffer): number;
|
|
689
696
|
};
|
|
690
697
|
}, {
|
|
@@ -800,10 +807,11 @@ export declare const txSchema: readonly [{
|
|
|
800
807
|
onNode?: import("../..").Node | undefined;
|
|
801
808
|
absoluteTtl?: boolean | undefined;
|
|
802
809
|
_isInternalBuild?: boolean | undefined;
|
|
803
|
-
} & {
|
|
810
|
+
} & Omit<{
|
|
804
811
|
_expectedMineRate?: number | undefined;
|
|
805
812
|
_microBlockCycle?: number | undefined;
|
|
806
|
-
|
|
813
|
+
onNode: import("../..").Node;
|
|
814
|
+
}, "onNode">): Promise<number | undefined>;
|
|
807
815
|
deserialize(value: Buffer): number;
|
|
808
816
|
};
|
|
809
817
|
readonly deposit: {
|
|
@@ -914,10 +922,11 @@ export declare const txSchema: readonly [{
|
|
|
914
922
|
onNode?: import("../..").Node | undefined;
|
|
915
923
|
absoluteTtl?: boolean | undefined;
|
|
916
924
|
_isInternalBuild?: boolean | undefined;
|
|
917
|
-
} & {
|
|
925
|
+
} & Omit<{
|
|
918
926
|
_expectedMineRate?: number | undefined;
|
|
919
927
|
_microBlockCycle?: number | undefined;
|
|
920
|
-
|
|
928
|
+
onNode: import("../..").Node;
|
|
929
|
+
}, "onNode">): Promise<number | undefined>;
|
|
921
930
|
deserialize(value: Buffer): number;
|
|
922
931
|
};
|
|
923
932
|
readonly amount: {
|
|
@@ -1126,10 +1135,11 @@ export declare const txSchema: readonly [{
|
|
|
1126
1135
|
onNode?: import("../..").Node | undefined;
|
|
1127
1136
|
absoluteTtl?: boolean | undefined;
|
|
1128
1137
|
_isInternalBuild?: boolean | undefined;
|
|
1129
|
-
} & {
|
|
1138
|
+
} & Omit<{
|
|
1130
1139
|
_expectedMineRate?: number | undefined;
|
|
1131
1140
|
_microBlockCycle?: number | undefined;
|
|
1132
|
-
|
|
1141
|
+
onNode: import("../..").Node;
|
|
1142
|
+
}, "onNode">): Promise<number | undefined>;
|
|
1133
1143
|
deserialize(value: Buffer): number;
|
|
1134
1144
|
};
|
|
1135
1145
|
readonly abiVersion: {
|
|
@@ -1204,10 +1214,11 @@ export declare const txSchema: readonly [{
|
|
|
1204
1214
|
onNode?: import("../..").Node | undefined;
|
|
1205
1215
|
absoluteTtl?: boolean | undefined;
|
|
1206
1216
|
_isInternalBuild?: boolean | undefined;
|
|
1207
|
-
} & {
|
|
1217
|
+
} & Omit<{
|
|
1208
1218
|
_expectedMineRate?: number | undefined;
|
|
1209
1219
|
_microBlockCycle?: number | undefined;
|
|
1210
|
-
|
|
1220
|
+
onNode: import("../..").Node;
|
|
1221
|
+
}, "onNode">): Promise<number | undefined>;
|
|
1211
1222
|
deserialize(value: Buffer): number;
|
|
1212
1223
|
};
|
|
1213
1224
|
}, {
|
|
@@ -1294,10 +1305,11 @@ export declare const txSchema: readonly [{
|
|
|
1294
1305
|
onNode?: import("../..").Node | undefined;
|
|
1295
1306
|
absoluteTtl?: boolean | undefined;
|
|
1296
1307
|
_isInternalBuild?: boolean | undefined;
|
|
1297
|
-
} & {
|
|
1308
|
+
} & Omit<{
|
|
1298
1309
|
_expectedMineRate?: number | undefined;
|
|
1299
1310
|
_microBlockCycle?: number | undefined;
|
|
1300
|
-
|
|
1311
|
+
onNode: import("../..").Node;
|
|
1312
|
+
}, "onNode">): Promise<number | undefined>;
|
|
1301
1313
|
deserialize(value: Buffer): number;
|
|
1302
1314
|
};
|
|
1303
1315
|
}, {
|
|
@@ -1365,10 +1377,11 @@ export declare const txSchema: readonly [{
|
|
|
1365
1377
|
onNode?: import("../..").Node | undefined;
|
|
1366
1378
|
absoluteTtl?: boolean | undefined;
|
|
1367
1379
|
_isInternalBuild?: boolean | undefined;
|
|
1368
|
-
} & {
|
|
1380
|
+
} & Omit<{
|
|
1369
1381
|
_expectedMineRate?: number | undefined;
|
|
1370
1382
|
_microBlockCycle?: number | undefined;
|
|
1371
|
-
|
|
1383
|
+
onNode: import("../..").Node;
|
|
1384
|
+
}, "onNode">): Promise<number | undefined>;
|
|
1372
1385
|
deserialize(value: Buffer): number;
|
|
1373
1386
|
};
|
|
1374
1387
|
}, {
|
|
@@ -1414,10 +1427,11 @@ export declare const txSchema: readonly [{
|
|
|
1414
1427
|
onNode?: import("../..").Node | undefined;
|
|
1415
1428
|
absoluteTtl?: boolean | undefined;
|
|
1416
1429
|
_isInternalBuild?: boolean | undefined;
|
|
1417
|
-
} & {
|
|
1430
|
+
} & Omit<{
|
|
1418
1431
|
_expectedMineRate?: number | undefined;
|
|
1419
1432
|
_microBlockCycle?: number | undefined;
|
|
1420
|
-
|
|
1433
|
+
onNode: import("../..").Node;
|
|
1434
|
+
}, "onNode">): Promise<number | undefined>;
|
|
1421
1435
|
deserialize(value: Buffer): number;
|
|
1422
1436
|
};
|
|
1423
1437
|
readonly fee: {
|
|
@@ -1493,10 +1507,11 @@ export declare const txSchema: readonly [{
|
|
|
1493
1507
|
onNode?: import("../..").Node | undefined;
|
|
1494
1508
|
absoluteTtl?: boolean | undefined;
|
|
1495
1509
|
_isInternalBuild?: boolean | undefined;
|
|
1496
|
-
} & {
|
|
1510
|
+
} & Omit<{
|
|
1497
1511
|
_expectedMineRate?: number | undefined;
|
|
1498
1512
|
_microBlockCycle?: number | undefined;
|
|
1499
|
-
|
|
1513
|
+
onNode: import("../..").Node;
|
|
1514
|
+
}, "onNode">): Promise<number | undefined>;
|
|
1500
1515
|
deserialize(value: Buffer): number;
|
|
1501
1516
|
};
|
|
1502
1517
|
readonly fee: {
|
|
@@ -1557,10 +1572,11 @@ export declare const txSchema: readonly [{
|
|
|
1557
1572
|
onNode?: import("../..").Node | undefined;
|
|
1558
1573
|
absoluteTtl?: boolean | undefined;
|
|
1559
1574
|
_isInternalBuild?: boolean | undefined;
|
|
1560
|
-
} & {
|
|
1575
|
+
} & Omit<{
|
|
1561
1576
|
_expectedMineRate?: number | undefined;
|
|
1562
1577
|
_microBlockCycle?: number | undefined;
|
|
1563
|
-
|
|
1578
|
+
onNode: import("../..").Node;
|
|
1579
|
+
}, "onNode">): Promise<number | undefined>;
|
|
1564
1580
|
deserialize(value: Buffer): number;
|
|
1565
1581
|
};
|
|
1566
1582
|
readonly fee: {
|
|
@@ -1621,10 +1637,11 @@ export declare const txSchema: readonly [{
|
|
|
1621
1637
|
onNode?: import("../..").Node | undefined;
|
|
1622
1638
|
absoluteTtl?: boolean | undefined;
|
|
1623
1639
|
_isInternalBuild?: boolean | undefined;
|
|
1624
|
-
} & {
|
|
1640
|
+
} & Omit<{
|
|
1625
1641
|
_expectedMineRate?: number | undefined;
|
|
1626
1642
|
_microBlockCycle?: number | undefined;
|
|
1627
|
-
|
|
1643
|
+
onNode: import("../..").Node;
|
|
1644
|
+
}, "onNode">): Promise<number | undefined>;
|
|
1628
1645
|
deserialize(value: Buffer): number;
|
|
1629
1646
|
};
|
|
1630
1647
|
readonly fee: {
|
|
@@ -1684,10 +1701,11 @@ export declare const txSchema: readonly [{
|
|
|
1684
1701
|
onNode?: import("../..").Node | undefined;
|
|
1685
1702
|
absoluteTtl?: boolean | undefined;
|
|
1686
1703
|
_isInternalBuild?: boolean | undefined;
|
|
1687
|
-
} & {
|
|
1704
|
+
} & Omit<{
|
|
1688
1705
|
_expectedMineRate?: number | undefined;
|
|
1689
1706
|
_microBlockCycle?: number | undefined;
|
|
1690
|
-
|
|
1707
|
+
onNode: import("../..").Node;
|
|
1708
|
+
}, "onNode">): Promise<number | undefined>;
|
|
1691
1709
|
deserialize(value: Buffer): number;
|
|
1692
1710
|
};
|
|
1693
1711
|
readonly fee: {
|
|
@@ -1755,10 +1773,11 @@ export declare const txSchema: readonly [{
|
|
|
1755
1773
|
onNode?: import("../..").Node | undefined;
|
|
1756
1774
|
absoluteTtl?: boolean | undefined;
|
|
1757
1775
|
_isInternalBuild?: boolean | undefined;
|
|
1758
|
-
} & {
|
|
1776
|
+
} & Omit<{
|
|
1759
1777
|
_expectedMineRate?: number | undefined;
|
|
1760
1778
|
_microBlockCycle?: number | undefined;
|
|
1761
|
-
|
|
1779
|
+
onNode: import("../..").Node;
|
|
1780
|
+
}, "onNode">): Promise<number | undefined>;
|
|
1762
1781
|
deserialize(value: Buffer): number;
|
|
1763
1782
|
};
|
|
1764
1783
|
readonly fee: {
|
|
@@ -1830,10 +1849,11 @@ export declare const txSchema: readonly [{
|
|
|
1830
1849
|
onNode?: import("../..").Node | undefined;
|
|
1831
1850
|
absoluteTtl?: boolean | undefined;
|
|
1832
1851
|
_isInternalBuild?: boolean | undefined;
|
|
1833
|
-
} & {
|
|
1852
|
+
} & Omit<{
|
|
1834
1853
|
_expectedMineRate?: number | undefined;
|
|
1835
1854
|
_microBlockCycle?: number | undefined;
|
|
1836
|
-
|
|
1855
|
+
onNode: import("../..").Node;
|
|
1856
|
+
}, "onNode">): Promise<number | undefined>;
|
|
1837
1857
|
deserialize(value: Buffer): number;
|
|
1838
1858
|
};
|
|
1839
1859
|
readonly fee: {
|
|
@@ -1909,10 +1929,11 @@ export declare const txSchema: readonly [{
|
|
|
1909
1929
|
onNode?: import("../..").Node | undefined;
|
|
1910
1930
|
absoluteTtl?: boolean | undefined;
|
|
1911
1931
|
_isInternalBuild?: boolean | undefined;
|
|
1912
|
-
} & {
|
|
1932
|
+
} & Omit<{
|
|
1913
1933
|
_expectedMineRate?: number | undefined;
|
|
1914
1934
|
_microBlockCycle?: number | undefined;
|
|
1915
|
-
|
|
1935
|
+
onNode: import("../..").Node;
|
|
1936
|
+
}, "onNode">): Promise<number | undefined>;
|
|
1916
1937
|
deserialize(value: Buffer): number;
|
|
1917
1938
|
};
|
|
1918
1939
|
readonly fee: {
|
|
@@ -2070,10 +2091,11 @@ export declare const txSchema: readonly [{
|
|
|
2070
2091
|
onNode?: import("../..").Node | undefined;
|
|
2071
2092
|
absoluteTtl?: boolean | undefined;
|
|
2072
2093
|
_isInternalBuild?: boolean | undefined;
|
|
2073
|
-
} & {
|
|
2094
|
+
} & Omit<{
|
|
2074
2095
|
_expectedMineRate?: number | undefined;
|
|
2075
2096
|
_microBlockCycle?: number | undefined;
|
|
2076
|
-
|
|
2097
|
+
onNode: import("../..").Node;
|
|
2098
|
+
}, "onNode">): Promise<number | undefined>;
|
|
2077
2099
|
deserialize(value: Buffer): number;
|
|
2078
2100
|
};
|
|
2079
2101
|
readonly fee: {
|
|
@@ -2798,10 +2820,11 @@ export declare const txSchema: readonly [{
|
|
|
2798
2820
|
onNode?: import("../..").Node | undefined;
|
|
2799
2821
|
absoluteTtl?: boolean | undefined;
|
|
2800
2822
|
_isInternalBuild?: boolean | undefined;
|
|
2801
|
-
} & {
|
|
2823
|
+
} & Omit<{
|
|
2802
2824
|
_expectedMineRate?: number | undefined;
|
|
2803
2825
|
_microBlockCycle?: number | undefined;
|
|
2804
|
-
|
|
2826
|
+
onNode: import("../..").Node;
|
|
2827
|
+
}, "onNode">): Promise<number | undefined>;
|
|
2805
2828
|
deserialize(value: Buffer): number;
|
|
2806
2829
|
};
|
|
2807
2830
|
readonly gasLimit: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export default function semverSatisfies(version: string, geVersion: string, ltVersion
|
|
1
|
+
export default function semverSatisfies(version: string, geVersion: string, ltVersion?: string): boolean;
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
function verCmp(a, b) {
|
|
2
2
|
const getComponents = v => v.split(/[-+]/)[0].split('.').map(i => +i);
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const base = Math.max(...versionComponents, ...geComponents, ...ltComponents) + 1;
|
|
3
|
+
const aComponents = getComponents(a);
|
|
4
|
+
const bComponents = getComponents(b);
|
|
5
|
+
const base = Math.max(...aComponents, ...bComponents) + 1;
|
|
7
6
|
const componentsToNumber = components => components.reverse().reduce((acc, n, idx) => acc + n * base ** idx, 0);
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
return
|
|
7
|
+
return componentsToNumber(aComponents) - componentsToNumber(bComponents);
|
|
8
|
+
}
|
|
9
|
+
export default function semverSatisfies(version, geVersion, ltVersion) {
|
|
10
|
+
return verCmp(version, geVersion) >= 0 && (ltVersion == null || verCmp(version, ltVersion) < 0);
|
|
12
11
|
}
|
|
13
12
|
//# sourceMappingURL=semver-satisfies.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semver-satisfies.mjs","names":["
|
|
1
|
+
{"version":3,"file":"semver-satisfies.mjs","names":["verCmp","a","b","getComponents","v","split","map","i","aComponents","bComponents","base","Math","max","componentsToNumber","components","reverse","reduce","acc","n","idx","semverSatisfies","version","geVersion","ltVersion"],"sources":["../../src/utils/semver-satisfies.ts"],"sourcesContent":["function verCmp(a: string, b: string): number {\n const getComponents = (v: string): number[] => v\n .split(/[-+]/)[0].split('.').map((i) => +i);\n\n const aComponents = getComponents(a);\n const bComponents = getComponents(b);\n\n const base = Math.max(...aComponents, ...bComponents) + 1;\n const componentsToNumber = (components: number[]): number => components.reverse()\n .reduce((acc, n, idx) => acc + n * base ** idx, 0);\n\n return componentsToNumber(aComponents) - componentsToNumber(bComponents);\n}\n\nexport default function semverSatisfies(\n version: string,\n geVersion: string,\n ltVersion?: string,\n): boolean {\n return verCmp(version, geVersion) >= 0\n && (ltVersion == null || verCmp(version, ltVersion) < 0);\n}\n"],"mappings":"AAAA,SAASA,MAAMA,CAACC,CAAS,EAAEC,CAAS,EAAU;EAC5C,MAAMC,aAAa,GAAIC,CAAS,IAAeA,CAAC,CAC7CC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAACA,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAAEC,CAAC,IAAK,CAACA,CAAC,CAAC;EAE7C,MAAMC,WAAW,GAAGL,aAAa,CAACF,CAAC,CAAC;EACpC,MAAMQ,WAAW,GAAGN,aAAa,CAACD,CAAC,CAAC;EAEpC,MAAMQ,IAAI,GAAGC,IAAI,CAACC,GAAG,CAAC,GAAGJ,WAAW,EAAE,GAAGC,WAAW,CAAC,GAAG,CAAC;EACzD,MAAMI,kBAAkB,GAAIC,UAAoB,IAAaA,UAAU,CAACC,OAAO,CAAC,CAAC,CAC9EC,MAAM,CAAC,CAACC,GAAG,EAAEC,CAAC,EAAEC,GAAG,KAAKF,GAAG,GAAGC,CAAC,GAAGR,IAAI,IAAIS,GAAG,EAAE,CAAC,CAAC;EAEpD,OAAON,kBAAkB,CAACL,WAAW,CAAC,GAAGK,kBAAkB,CAACJ,WAAW,CAAC;AAC1E;AAEA,eAAe,SAASW,eAAeA,CACrCC,OAAe,EACfC,SAAiB,EACjBC,SAAkB,EACT;EACT,OAAOvB,MAAM,CAACqB,OAAO,EAAEC,SAAS,CAAC,IAAI,CAAC,KAChCC,SAAS,IAAI,IAAI,IAAIvB,MAAM,CAACqB,OAAO,EAAEE,SAAS,CAAC,GAAG,CAAC,CAAC;AAC5D"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aeternity/aepp-sdk",
|
|
3
|
-
"version": "13.3.
|
|
3
|
+
"version": "13.3.2",
|
|
4
4
|
"description": "SDK for the æternity blockchain",
|
|
5
5
|
"main": "dist/aepp-sdk.js",
|
|
6
6
|
"types": "es/index.d.ts",
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
},
|
|
112
112
|
"repository": {
|
|
113
113
|
"type": "git",
|
|
114
|
-
"url": "https://github.com/aeternity/aepp-sdk-js"
|
|
114
|
+
"url": "git+https://github.com/aeternity/aepp-sdk-js.git"
|
|
115
115
|
},
|
|
116
116
|
"devDependencies": {
|
|
117
117
|
"@babel/cli": "^7.23.9",
|
package/src/chain.ts
CHANGED
|
@@ -21,15 +21,25 @@ import {
|
|
|
21
21
|
* @param type - Type
|
|
22
22
|
* @param options - Options
|
|
23
23
|
*/
|
|
24
|
-
export function _getPollInterval(
|
|
25
|
-
type: '
|
|
26
|
-
{ _expectedMineRate
|
|
27
|
-
{ _expectedMineRate?: number; _microBlockCycle?: number },
|
|
28
|
-
): number {
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
24
|
+
export async function _getPollInterval(
|
|
25
|
+
type: 'key-block' | 'micro-block',
|
|
26
|
+
{ _expectedMineRate, _microBlockCycle, onNode }:
|
|
27
|
+
{ _expectedMineRate?: number; _microBlockCycle?: number; onNode: Node },
|
|
28
|
+
): Promise<number> {
|
|
29
|
+
const getVal = async (
|
|
30
|
+
t: string,
|
|
31
|
+
val: number | undefined,
|
|
32
|
+
devModeDef: number,
|
|
33
|
+
def: number,
|
|
34
|
+
): Promise<number | null> => {
|
|
35
|
+
if (t !== type) return null;
|
|
36
|
+
if (val != null) return val;
|
|
37
|
+
return await onNode?.getNetworkId() === 'ae_dev' ? devModeDef : def;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const base = await getVal('key-block', _expectedMineRate, 0, 180000)
|
|
41
|
+
?? await getVal('micro-block', _microBlockCycle, 0, 3000)
|
|
42
|
+
?? (() => { throw new InternalError(`Unknown type: ${type}`); })();
|
|
33
43
|
return Math.floor(base / 3);
|
|
34
44
|
}
|
|
35
45
|
|
|
@@ -53,7 +63,7 @@ export async function getHeight(
|
|
|
53
63
|
const onNode = unwrapProxy(options.onNode);
|
|
54
64
|
if (cached) {
|
|
55
65
|
const cache = heightCache.get(onNode);
|
|
56
|
-
if (cache != null && cache.time > Date.now() - _getPollInterval('block', options)) {
|
|
66
|
+
if (cache != null && cache.time > Date.now() - await _getPollInterval('key-block', options)) {
|
|
57
67
|
return cache.height;
|
|
58
68
|
}
|
|
59
69
|
}
|
|
@@ -77,21 +87,21 @@ export async function getHeight(
|
|
|
77
87
|
export async function poll(
|
|
78
88
|
th: Encoded.TxHash,
|
|
79
89
|
{
|
|
80
|
-
blocks = 5, interval,
|
|
90
|
+
blocks = 5, interval, ...options
|
|
81
91
|
}:
|
|
82
92
|
{ blocks?: number; interval?: number; onNode: Node } & Parameters<typeof _getPollInterval>[1],
|
|
83
93
|
): Promise<TransformNodeType<SignedTx>> {
|
|
84
|
-
interval ??= _getPollInterval('
|
|
94
|
+
interval ??= await _getPollInterval('micro-block', options);
|
|
85
95
|
let max;
|
|
86
96
|
do {
|
|
87
|
-
const tx = await onNode.getTransactionByHash(th);
|
|
97
|
+
const tx = await options.onNode.getTransactionByHash(th);
|
|
88
98
|
if (tx.blockHeight !== -1) return tx;
|
|
89
99
|
if (max == null) {
|
|
90
100
|
max = tx.tx.ttl !== 0 ? -1
|
|
91
|
-
: await getHeight({ ...options,
|
|
101
|
+
: await getHeight({ ...options, cached: true }) + blocks;
|
|
92
102
|
}
|
|
93
103
|
await pause(interval);
|
|
94
|
-
} while (max === -1 ? true : await getHeight({ ...options,
|
|
104
|
+
} while (max === -1 ? true : await getHeight({ ...options, cached: true }) < max);
|
|
95
105
|
throw new TxTimedOutError(blocks, th);
|
|
96
106
|
}
|
|
97
107
|
|
|
@@ -106,14 +116,14 @@ export async function poll(
|
|
|
106
116
|
*/
|
|
107
117
|
export async function awaitHeight(
|
|
108
118
|
height: number,
|
|
109
|
-
{ interval,
|
|
119
|
+
{ interval, ...options }:
|
|
110
120
|
{ interval?: number; onNode: Node } & Parameters<typeof _getPollInterval>[1],
|
|
111
121
|
): Promise<number> {
|
|
112
|
-
interval ??= Math.min(_getPollInterval('block', options), 5000);
|
|
122
|
+
interval ??= Math.min(await _getPollInterval('key-block', options), 5000);
|
|
113
123
|
let currentHeight;
|
|
114
124
|
do {
|
|
115
125
|
if (currentHeight != null) await pause(interval);
|
|
116
|
-
currentHeight = await getHeight(
|
|
126
|
+
currentHeight = await getHeight(options);
|
|
117
127
|
} while (currentHeight < height);
|
|
118
128
|
return currentHeight;
|
|
119
129
|
}
|