@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.
Files changed (40) hide show
  1. package/bin/aesophia_cli_8 +0 -0
  2. package/dist/aepp-sdk.browser-script.js +1 -1
  3. package/dist/aepp-sdk.browser-script.js.map +1 -1
  4. package/dist/aepp-sdk.browser.js +1 -1
  5. package/dist/aepp-sdk.browser.js.map +1 -1
  6. package/dist/aepp-sdk.js +36 -43
  7. package/dist/aepp-sdk.js.map +1 -1
  8. package/es/chain.d.ts +5 -5
  9. package/es/chain.mjs +18 -20
  10. package/es/chain.mjs.map +1 -1
  11. package/es/contract/Contract.mjs +3 -0
  12. package/es/contract/Contract.mjs.map +1 -1
  13. package/es/oracle.d.ts +2 -2
  14. package/es/oracle.mjs +6 -10
  15. package/es/oracle.mjs.map +1 -1
  16. package/es/tx/builder/field-types/gas-price.mjs +1 -4
  17. package/es/tx/builder/field-types/gas-price.mjs.map +1 -1
  18. package/es/tx/builder/field-types/ttl.d.ts +3 -2
  19. package/es/tx/builder/field-types/ttl.mjs.map +1 -1
  20. package/es/tx/builder/schema.d.ts +69 -46
  21. package/es/utils/semver-satisfies.d.ts +1 -1
  22. package/es/utils/semver-satisfies.mjs +8 -9
  23. package/es/utils/semver-satisfies.mjs.map +1 -1
  24. package/package.json +2 -2
  25. package/src/chain.ts +28 -18
  26. package/src/contract/Contract.ts +3 -0
  27. package/src/oracle.ts +7 -7
  28. package/src/tx/builder/field-types/gas-price.ts +67 -70
  29. package/src/tx/builder/field-types/ttl.ts +1 -1
  30. package/src/utils/semver-satisfies.ts +14 -13
  31. package/types-legacy/ts4.2/chain.d.ts +5 -5
  32. package/types-legacy/ts4.2/oracle.d.ts +2 -2
  33. package/types-legacy/ts4.2/tx/builder/field-types/ttl.d.ts +3 -2
  34. package/types-legacy/ts4.2/tx/builder/schema.d.ts +69 -46
  35. package/types-legacy/ts4.2/utils/semver-satisfies.d.ts +1 -1
  36. package/types-legacy/ts4.5/chain.d.ts +5 -5
  37. package/types-legacy/ts4.5/oracle.d.ts +2 -2
  38. package/types-legacy/ts4.5/tx/builder/field-types/ttl.d.ts +3 -2
  39. package/types-legacy/ts4.5/tx/builder/schema.d.ts +69 -46
  40. 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":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AANA,SAQSA,SAAS,EAAEC,KAAK;AAAA,SAChBC,aAAa;AAAA,SACbC,QAAQ,EAAEC,YAAY;AAAA,SACtBC,GAAG;AAAA,SACHC,oBAAoB;AAAA,SAE3BC,MAAM,EAAEC,MAAM,EAAWC,QAAQ;AAAA,SAE1BC,gBAAgB,EAAEC,SAAS;AAAA,SAC3BC,eAAe;AAMxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAC5BC,QAA+B,EAC/BC,OAA+C,EAC/C;EAAEC,QAAQ;EAAEC,MAAM;EAAE,GAAGC;AACgB,CAAC,EAC5B;EAAA,IAAAC,SAAA;EACZ,CAAAA,SAAA,GAAAH,QAAQ,cAAAG,SAAA,cAAAA,SAAA,GAARH,QAAQ,GAAKN,gBAAgB,CAAC,YAAY,EAAEQ,OAAO,CAAC;EACpD,MAAME,aAAa,GAAG,IAAIC,GAAG,CAAC,CAAC;EAC/B,MAAMC,eAAe,GAAG,MAAAA,CAAA,KAA2B;IAAA,IAAAC,qBAAA;IACjD,MAAMC,OAAO,GAAG,EAAAD,qBAAA,GAAC,CAAC,MAAMN,MAAM,CAACQ,wBAAwB,CAACX,QAAQ,CAAC,EAAEY,aAAa,cAAAH,qBAAA,cAAAA,qBAAA,GAAI,EAAE,EACnFI,MAAM,CAAC,CAAC;MAAEC;IAAG,CAAC,KAAK,CAACR,aAAa,CAACS,GAAG,CAACD,EAAE,CAAC,CAAC;IAC7CJ,OAAO,CAACM,OAAO,CAAEC,KAAK,IAAK;MACzBX,aAAa,CAACY,GAAG,CAACD,KAAK,CAACH,EAAE,CAAC;MAC3Bb,OAAO,CAACgB,KAAK,CAAC;IAChB,CAAC,CAAC;EACJ,CAAC;EAED,IAAIE,OAAO,GAAG,KAAK;;EAEnB;EACA,CAAC,YAAY;IACX,OAAO,CAACA,OAAO,EAAE;MAAE;MACjB;MACA,MAAMX,eAAe,CAAC,CAAC,CAACY,KAAK,CAACC,OAAO,CAACC,KAAK,CAAC;MAC5C,MAAMnC,KAAK,CAACe,QAAQ,CAAC;IACvB;EACF,CAAC,EAAE,CAAC;EACJ,OAAO,MAAM;IAAEiB,OAAO,GAAG,IAAI;EAAE,CAAC;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeI,oBAAoBA,CACxCvB,QAA+B,EAC/BwB,OAA8B,EAC9B;EAAEtB,QAAQ;EAAEC,MAAM;EAAE,GAAGC;AACoD,CAAC,EAC3D;EAAA,IAAAqB,UAAA;EACjB,CAAAA,UAAA,GAAAvB,QAAQ,cAAAuB,UAAA,cAAAA,UAAA,GAARvB,QAAQ,GAAKN,gBAAgB,CAAC,YAAY,EAAEQ,OAAO,CAAC;EACpD,IAAIsB,MAAM;EACV,IAAIC,GAAG;EACP,IAAIC,QAAQ;EACZ,GAAG;IACD,CAAC;MAAEA,QAAQ;MAAED;IAAI,CAAC,GAAG,MAAMxB,MAAM,CAAC0B,gCAAgC,CAAC7B,QAAQ,EAAEwB,OAAO,CAAC;IACrF,MAAMM,cAAc,GAAGrC,MAAM,CAACmC,QAAkC,CAAC;IACjE,IAAIE,cAAc,CAACC,MAAM,GAAG,CAAC,EAAE,OAAOD,cAAc,CAACE,QAAQ,CAAC,CAAC;IAC/D,MAAM7C,KAAK,CAACe,QAAQ,CAAC;IACrBwB,MAAM,GAAG,MAAM7B,SAAS,CAAC;MAAE,GAAGO,OAAO;MAAED,MAAM;MAAE8B,MAAM,EAAE;IAAK,CAAC,CAAC;EAChE,CAAC,QAAQN,GAAG,IAAID,MAAM;EACtB,MAAM,IAAIlC,oBAAoB,CAACkC,MAAM,CAAC;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeQ,cAAcA,CAClClC,QAA+B,EAC/BwB,OAA8B,EAC9BpB,OAA2E,EACxC;EACnC,MAAM+B,MAAM,GAAG,MAAM/B,OAAO,CAACD,MAAM,CAAC0B,gCAAgC,CAAC7B,QAAQ,EAAEwB,OAAO,CAAC;EACvF,OAAO;IACL,GAAGW,MAAM;IACTC,YAAY,EAAE3C,MAAM,CAAC0C,MAAM,CAAClB,KAA8B,CAAC,CAACe,QAAQ,CAAC,CAAC;IACtEK,eAAe,EAAE5C,MAAM,CAAC0C,MAAM,CAACP,QAAkC,CAAC,CAACI,QAAQ,CAAC,CAAC;IAC7EM,OAAO,EAAE,MAAAA,CAAOV,QAAQ,EAAEW,GAAG;IAC3B;IACAC,cAAc,CAAChB,OAAO,EAAEI,QAAQ,EAAE;MAAE,GAAGxB,OAAO;MAAE,GAAGmC;IAAI,CAAC,CACzD;IACDE,eAAe,EAAE,MAAOF,GAAG,IAAKhB,oBAAoB,CAACvB,QAAQ,EAAEwB,OAAO,EAAE;MAAE,GAAGpB,OAAO;MAAE,GAAGmC;IAAI,CAAC;EAChG,CAAC;AACH;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeG,iBAAiBA,CACrC1C,QAA+B,EAC/BiB,KAAa,EACbb,OAAiC,EAG/B;EACF,MAAMuC,QAAQ,GAAGvC,OAAO,CAACwC,SAAS,CAACC,OAAO;EAE1C,MAAMC,aAAa,GAAG,MAAMxD,YAAY,CAAC;IACvCyD,gBAAgB,EAAE,IAAI;IACtB,GAAG3C,OAAO;IACV4C,GAAG,EAAEzD,GAAG,CAAC0D,aAAa;IACtBjD,QAAQ;IACR2C,QAAQ;IACR1B;EACF,CAAC,CAAC;EACF,MAAM;IAAEiC;EAAM,CAAC,GAAG7D,QAAQ,CAACyD,aAAa,EAAEvD,GAAG,CAAC0D,aAAa,CAAC;EAC5D,MAAMzB,OAAO,GAAGpC,aAAa,CAACuD,QAAQ,EAAEO,KAAK,EAAElD,QAAQ,CAAC;EACxD,OAAO;IACL,IAAG,MAAMF,eAAe,CAACgD,aAAa,EAAE1C,OAAO,CAAC;IAChD,IAAG,MAAM8B,cAAc,CAAClC,QAAQ,EAAEwB,OAAO,EAAEpB,OAAO,CAAC;EACrD,CAAC;AACH;AAOA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAe+C,eAAeA,CAAC/C,OAA+B,EAEnE;EACA,MAAMJ,QAAQ,GAAGN,MAAM,CAACD,MAAM,CAACW,OAAO,CAACwC,SAAS,CAACC,OAAO,CAAC,EAAElD,QAAQ,CAACyD,aAAa,CAAC;EAClF,MAAMC,cAAc,GAAG,MAAM/D,YAAY,CAAC;IACxCyD,gBAAgB,EAAE,IAAI;IACtB,GAAG3C,OAAO;IACV4C,GAAG,EAAEzD,GAAG,CAAC+D,cAAc;IACvBtD;EACF,CAAC,CAAC;EACF,OAAO;IACL,IAAG,MAAMF,eAAe,CAACuD,cAAc,EAAEjD,OAAO,CAAC;IACjD;IACA,IAAG,MAAMmD,eAAe,CAACvD,QAAQ,EAAEI,OAAO,CAAC;EAC7C,CAAC;AACH;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeoC,cAAcA,CAClChB,OAA8B,EAC9BI,QAAgB,EAChBxB,OAA8B,EAG5B;EACF,MAAMJ,QAAQ,GAAGN,MAAM,CAACD,MAAM,CAACW,OAAO,CAACwC,SAAS,CAACC,OAAO,CAAC,EAAElD,QAAQ,CAACyD,aAAa,CAAC;EAClF,MAAMI,eAAe,GAAG,MAAMlE,YAAY,CAAC;IACzCyD,gBAAgB,EAAE,IAAI;IACtB,GAAG3C,OAAO;IACV4C,GAAG,EAAEzD,GAAG,CAACkE,gBAAgB;IACzBzD,QAAQ;IACRwB,OAAO;IACPI;EACF,CAAC,CAAC;EACF,OAAO;IACL,IAAG,MAAM9B,eAAe,CAAC0D,eAAe,EAAEpD,OAAO,CAAC;IAClD;IACA,IAAG,MAAMmD,eAAe,CAACvD,QAAQ,EAAEI,OAAO,CAAC;EAC7C,CAAC;AACH;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAemD,eAAeA,CACnCvD,QAA+B,EAC/BI,OAAiD,EACb;EACpC,OAAO;IACL,IAAG,MAAMA,OAAO,CAACD,MAAM,CAACuD,iBAAiB,CAAC1D,QAAQ,CAAC;IACnDU,OAAO,EAAE,CAAC,MAAMN,OAAO,CAACD,MAAM,CAACQ,wBAAwB,CAACX,QAAQ,CAAC,EAAEY,aAAa;IAChF,GAAG1B,SAAS,CACV;MACEyE,WAAW,EAAE5D,cAAc;MAC3B6D,SAAS,EAAElB,iBAAiB;MAC5BF,cAAc;MACdqB,YAAY,EAAEV,eAAe;MAC7BW,QAAQ,EAAE5B;IACZ,CAAC,EACD,CAAC,CAAC6B,IAAI,EAAEC,OAAO,CAAC,KAAK,CACnBD,IAAI,EACJ,CAAC,GAAGE,IAAS,KAAK;MAChB,MAAMC,OAAO,GAAGD,IAAI,CAACA,IAAI,CAAClC,MAAM,GAAG,CAAC,CAAC;MACrC,IAAImC,OAAO,IAAI,IAAI,IAAI,OAAOA,OAAO,KAAK,QAAQ,IAAIA,OAAO,CAACC,WAAW,KAAKC,MAAM,EAAE;QACpFA,MAAM,CAACC,MAAM,CAACH,OAAO,EAAE;UAAE,GAAG9D,OAAO;UAAE,GAAG8D;QAAQ,CAAC,CAAC;MACpD,CAAC,MAAMD,IAAI,CAACK,IAAI,CAAClE,OAAO,CAAC;MACzB,OAAO4D,OAAO,CACZ,IAAG,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAACO,QAAQ,CAACR,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC/D,QAAQ,CAAC,GACtE,GAAGiE,IACL,CAAC;IACH,CAAC,CAEL;EACF,CAAC;AACH;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeO,cAAcA,CAClCC,WAAmB,EACnBC,cAAsB,EACtBtE,OAA8B,EAG5B;EACF,MAAMuE,SAAS,GAAGvE,OAAO,CAACwC,SAAS,CAACC,OAAO;EAC3C,MAAM+B,gBAAgB,GAAG,MAAMtF,YAAY,CAAC;IAC1CyD,gBAAgB,EAAE,IAAI;IACtB,GAAG3C,OAAO;IACV4C,GAAG,EAAEzD,GAAG,CAACsF,gBAAgB;IACzBF,SAAS;IACTF,WAAW;IACXC;EACF,CAAC,CAAC;EACF,OAAO;IACL,IAAG,MAAM5E,eAAe,CAAC8E,gBAAgB,EAAExE,OAAO,CAAC;IACnD,IAAG,MAAMmD,eAAe,CAAC7D,MAAM,CAACD,MAAM,CAACkF,SAAS,CAAC,EAAEhF,QAAQ,CAACyD,aAAa,CAAC,EAAEhD,OAAO,CAAC;EACtF,CAAC;AACH"}
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
- // TODO: remove remove '6.12.0+' check after releasing 6.13.0
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","startsWith","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';\r\nimport coinAmount from './coin-amount';\r\nimport { ArgumentError, IllegalArgumentError } from '../../../utils/errors';\r\nimport { Int, MIN_GAS_PRICE } from '../constants';\r\nimport Node from '../../../Node';\r\nimport { AE_AMOUNT_FORMATS, formatAmount } from '../../../utils/amount-formatter';\r\nimport semverSatisfies from '../../../utils/semver-satisfies';\r\n\r\nconst gasPriceCache: WeakMap<Node, { time: number; gasPrice: bigint }> = new WeakMap();\r\n\r\nexport async function getCachedIncreasedGasPrice(node: Node): Promise<bigint> {\r\n const cache = gasPriceCache.get(node);\r\n if (cache != null && cache.time > Date.now() - 20 * 1000) {\r\n return cache.gasPrice;\r\n }\r\n\r\n // TODO: remove after requiring node@6.13.0\r\n const { nodeVersion } = await node._getCachedStatus();\r\n // TODO: remove remove '6.12.0+' check after releasing 6.13.0\r\n if (!nodeVersion.startsWith('6.12.0+') && !semverSatisfies(nodeVersion, '6.13.0', '8.0.0')) {\r\n return 0n;\r\n }\r\n\r\n const { minGasPrice, utilization } = (await node.getRecentGasPrices())[0];\r\n let gasPrice = utilization < 70 ? 0n : BigInt(\r\n new BigNumber(minGasPrice.toString()).times(1.01).integerValue().toFixed(),\r\n );\r\n\r\n const maxSafeGasPrice = BigInt(MIN_GAS_PRICE) * 100000n; // max microblock fee is 600ae or 35usd\r\n if (gasPrice > maxSafeGasPrice) {\r\n console.warn([\r\n `Estimated gas price ${gasPrice} exceeds the maximum safe value for unknown reason.`,\r\n `It will be limited to ${maxSafeGasPrice}.`,\r\n 'To overcome this restriction provide `gasPrice`/`fee` in options.',\r\n ].join(' '));\r\n gasPrice = maxSafeGasPrice;\r\n }\r\n\r\n gasPriceCache.set(node, { gasPrice, time: Date.now() });\r\n return gasPrice;\r\n}\r\n\r\n// TODO: use withFormatting after using a single type for coins representation\r\nexport default {\r\n ...coinAmount,\r\n\r\n async prepare(\r\n value: Int | undefined,\r\n params: {},\r\n { onNode, denomination }: {\r\n onNode?: Node;\r\n denomination?: AE_AMOUNT_FORMATS;\r\n },\r\n ): Promise<Int | undefined> {\r\n if (value != null) return value;\r\n if (onNode == null) {\r\n throw new ArgumentError('onNode', 'provided (or provide `gasPrice` instead)', onNode);\r\n }\r\n const gasPrice = await getCachedIncreasedGasPrice(onNode);\r\n if (gasPrice === 0n) return undefined;\r\n return formatAmount(gasPrice, { targetDenomination: denomination });\r\n },\r\n\r\n serializeAettos(value: string | undefined = MIN_GAS_PRICE.toString()): string {\r\n if (+value < MIN_GAS_PRICE) {\r\n throw new IllegalArgumentError(`Gas price ${value.toString()} must be bigger than ${MIN_GAS_PRICE}`);\r\n }\r\n return value;\r\n },\r\n};\r\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;EACA,IAAI,CAACD,WAAW,CAACE,UAAU,CAAC,SAAS,CAAC,IAAI,CAACb,eAAe,CAACW,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE;IAC1F,OAAO,EAAE;EACX;EAEA,MAAM;IAAEG,WAAW;IAAEC;EAAY,CAAC,GAAG,CAAC,MAAMX,IAAI,CAACY,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC;EACzE,IAAIN,QAAQ,GAAGK,WAAW,GAAG,EAAE,GAAG,EAAE,GAAGE,MAAM,CAC3C,IAAIvB,SAAS,CAACoB,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,CAACnB,aAAa,CAAC,GAAG,OAAO,CAAC,CAAC;EACzD,IAAIY,QAAQ,GAAGY,eAAe,EAAE;IAC9BC,OAAO,CAACC,IAAI,CAAC,CACV,uBAAsBd,QAAS,qDAAoD,EACnF,yBAAwBY,eAAgB,GAAE,EAC3C,mEAAmE,CACpE,CAACG,IAAI,CAAC,GAAG,CAAC,CAAC;IACZf,QAAQ,GAAGY,eAAe;EAC5B;EAEArB,aAAa,CAACyB,GAAG,CAACtB,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,MAAMgC,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,IAAIlC,aAAa,CAAC,QAAQ,EAAE,0CAA0C,EAAEkC,MAAM,CAAC;IACvF;IACA,MAAMpB,QAAQ,GAAG,MAAMP,0BAA0B,CAAC2B,MAAM,CAAC;IACzD,IAAIpB,QAAQ,KAAK,EAAE,EAAE,OAAOsB,SAAS;IACrC,OAAOjC,YAAY,CAACW,QAAQ,EAAE;MAAEuB,kBAAkB,EAAEF;IAAa,CAAC,CAAC;EACrE,CAAC;EAEDG,eAAeA,CAACN,KAAyB,GAAG9B,aAAa,CAACoB,QAAQ,CAAC,CAAC,EAAU;IAC5E,IAAI,CAACU,KAAK,GAAG9B,aAAa,EAAE;MAC1B,MAAM,IAAID,oBAAoB,CAAE,aAAY+B,KAAK,CAACV,QAAQ,CAAC,CAAE,wBAAuBpB,aAAc,EAAC,CAAC;IACtG;IACA,OAAO8B,KAAK;EACd;AACF,CAAC"}
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
- }): Promise<number | undefined>;
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],\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;EAKH,CAAC,EAC1C;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"}
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
- }): Promise<number | undefined>;
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
- }): Promise<number | undefined>;
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
- }): Promise<number | undefined>;
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
- }): Promise<number | undefined>;
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
- }): Promise<number | undefined>;
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
- }): Promise<number | undefined>;
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
- }): Promise<number | undefined>;
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
- }): Promise<number | undefined>;
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
- }): Promise<number | undefined>;
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
- }): Promise<number | undefined>;
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
- }): Promise<number | undefined>;
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
- }): Promise<number | undefined>;
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
- }): Promise<number | undefined>;
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
- }): Promise<number | undefined>;
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
- }): Promise<number | undefined>;
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
- }): Promise<number | undefined>;
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
- }): Promise<number | undefined>;
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
- }): Promise<number | undefined>;
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
- }): Promise<number | undefined>;
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
- }): Promise<number | undefined>;
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
- }): Promise<number | undefined>;
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
- }): Promise<number | undefined>;
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
- }): Promise<number | undefined>;
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: string): boolean;
1
+ export default function semverSatisfies(version: string, geVersion: string, ltVersion?: string): boolean;
@@ -1,13 +1,12 @@
1
- export default function semverSatisfies(version, geVersion, ltVersion) {
1
+ function verCmp(a, b) {
2
2
  const getComponents = v => v.split(/[-+]/)[0].split('.').map(i => +i);
3
- const versionComponents = getComponents(version);
4
- const geComponents = getComponents(geVersion);
5
- const ltComponents = getComponents(ltVersion);
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
- const vNumber = componentsToNumber(versionComponents);
9
- const geNumber = componentsToNumber(geComponents);
10
- const ltNumber = componentsToNumber(ltComponents);
11
- return vNumber >= geNumber && vNumber < ltNumber;
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":["semverSatisfies","version","geVersion","ltVersion","getComponents","v","split","map","i","versionComponents","geComponents","ltComponents","base","Math","max","componentsToNumber","components","reverse","reduce","acc","n","idx","vNumber","geNumber","ltNumber"],"sources":["../../src/utils/semver-satisfies.ts"],"sourcesContent":["export default function semverSatisfies(\n version: string,\n geVersion: string,\n ltVersion: string,\n): boolean {\n const getComponents = (v: string): number[] => v\n .split(/[-+]/)[0].split('.').map((i) => +i);\n\n const versionComponents = getComponents(version);\n const geComponents = getComponents(geVersion);\n const ltComponents = getComponents(ltVersion);\n\n const base = Math.max(...versionComponents, ...geComponents, ...ltComponents) + 1;\n const componentsToNumber = (components: number[]): number => components.reverse()\n .reduce((acc, n, idx) => acc + n * base ** idx, 0);\n\n const vNumber = componentsToNumber(versionComponents);\n const geNumber = componentsToNumber(geComponents);\n const ltNumber = componentsToNumber(ltComponents);\n return vNumber >= geNumber && vNumber < ltNumber;\n}\n"],"mappings":"AAAA,eAAe,SAASA,eAAeA,CACrCC,OAAe,EACfC,SAAiB,EACjBC,SAAiB,EACR;EACT,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,iBAAiB,GAAGL,aAAa,CAACH,OAAO,CAAC;EAChD,MAAMS,YAAY,GAAGN,aAAa,CAACF,SAAS,CAAC;EAC7C,MAAMS,YAAY,GAAGP,aAAa,CAACD,SAAS,CAAC;EAE7C,MAAMS,IAAI,GAAGC,IAAI,CAACC,GAAG,CAAC,GAAGL,iBAAiB,EAAE,GAAGC,YAAY,EAAE,GAAGC,YAAY,CAAC,GAAG,CAAC;EACjF,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,MAAMC,OAAO,GAAGP,kBAAkB,CAACN,iBAAiB,CAAC;EACrD,MAAMc,QAAQ,GAAGR,kBAAkB,CAACL,YAAY,CAAC;EACjD,MAAMc,QAAQ,GAAGT,kBAAkB,CAACJ,YAAY,CAAC;EACjD,OAAOW,OAAO,IAAIC,QAAQ,IAAID,OAAO,GAAGE,QAAQ;AAClD"}
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.1",
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: 'block' | 'microblock', // TODO: rename to 'key-block' | 'micro-block'
26
- { _expectedMineRate = 180000, _microBlockCycle = 3000 }:
27
- { _expectedMineRate?: number; _microBlockCycle?: number },
28
- ): number {
29
- const base = {
30
- block: _expectedMineRate,
31
- microblock: _microBlockCycle,
32
- }[type];
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, onNode, ...options
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('microblock', options);
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, onNode, cached: true }) + blocks;
101
+ : await getHeight({ ...options, cached: true }) + blocks;
92
102
  }
93
103
  await pause(interval);
94
- } while (max === -1 ? true : await getHeight({ ...options, onNode, cached: true }) < max);
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, onNode, ...options }:
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({ onNode });
126
+ currentHeight = await getHeight(options);
117
127
  } while (currentHeight < height);
118
128
  return currentHeight;
119
129
  }