@subql/node 6.3.6-0 → 6.3.6-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -19,7 +19,7 @@ export declare function filterBlockModulo(block: SubstrateBlock, filter: Substra
|
|
|
19
19
|
export declare function filterExtrinsic({ block, extrinsic, success }: SubstrateExtrinsic, filter?: SubstrateCallFilter): boolean;
|
|
20
20
|
export declare function filterExtrinsics(extrinsics: SubstrateExtrinsic[], filterOrFilters: SubstrateCallFilter | SubstrateCallFilter[] | undefined): SubstrateExtrinsic[];
|
|
21
21
|
export declare function filterEvent({ block, event }: SubstrateEvent, filter?: SubstrateEventFilter): boolean;
|
|
22
|
-
export declare function filterEvents(events: SubstrateEvent[], filterOrFilters?: SubstrateEventFilter | SubstrateEventFilter[]
|
|
22
|
+
export declare function filterEvents(events: SubstrateEvent[], filterOrFilters?: SubstrateEventFilter | SubstrateEventFilter[]): SubstrateEvent[];
|
|
23
23
|
export declare function prefetchMetadata(api: ApiPromise, hash: BlockHash): Promise<void>;
|
|
24
24
|
/**
|
|
25
25
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"substrate.js","sourceRoot":"","sources":["../../src/utils/substrate.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport assert from 'assert';\nimport { ApiPromise } from '@polkadot/api';\nimport { Vec } from '@polkadot/types';\nimport '@polkadot/api-augment/substrate';\nimport {\n BlockHash,\n EventRecord,\n RuntimeVersion,\n SignedBlock,\n Header as SubstrateHeader,\n} from '@polkadot/types/interfaces';\nimport { BN, BN_THOUSAND, BN_TWO, bnMin } from '@polkadot/util';\nimport {\n getLogger,\n IBlock,\n Header,\n filterBlockTimestamp,\n} from '@subql/node-core';\nimport {\n SpecVersionRange,\n SubstrateBlockFilter,\n SubstrateCallFilter,\n SubstrateEventFilter,\n SubstrateBlock,\n SubstrateEvent,\n SubstrateExtrinsic,\n BlockHeader,\n} from '@subql/types';\nimport { merge } from 'lodash';\nimport { SubqlProjectBlockFilter } from '../configure/SubqueryProject';\nimport { ApiPromiseConnection } from '../indexer/apiPromise.connection';\nimport { BlockContent, LightBlockContent } from '../indexer/types';\n\nconst logger = getLogger('fetch');\nconst INTERVAL_THRESHOLD = BN_THOUSAND.div(BN_TWO);\nconst DEFAULT_TIME = new BN(6_000);\nconst A_DAY = new BN(24 * 60 * 60 * 1000);\n\ntype MissTsHeader = Omit<Header, 'timestamp'>;\n\nexport function substrateHeaderToHeader(header: SubstrateHeader): MissTsHeader {\n return {\n blockHeight: header.number.toNumber(),\n blockHash: header.hash.toHex(),\n parentHash: header.parentHash.toHex(),\n };\n}\n\nexport function substrateBlockToHeader(block: SignedBlock): Header {\n const timestamp = getTimestamp(block);\n assert(\n timestamp,\n 'Failed to retrieve a reliable timestamp. This issue is more likely to occur on networks like Shiden',\n );\n\n return {\n ...substrateHeaderToHeader(block.block.header),\n timestamp,\n };\n}\n\nexport function wrapBlock(\n signedBlock: SignedBlock,\n events: EventRecord[],\n specVersion: number,\n): SubstrateBlock {\n return merge(signedBlock, {\n timestamp: getTimestamp(signedBlock),\n specVersion: specVersion,\n events,\n });\n}\n\nexport function getTimestamp({\n block: { extrinsics },\n}: SignedBlock): Date | undefined {\n // extrinsics can be undefined when fetching light blocks\n if (extrinsics) {\n for (const e of extrinsics) {\n const {\n method: { method, section },\n } = e;\n if (section === 'timestamp' && method === 'set') {\n const date = new Date(e.args[0].toJSON() as number);\n if (isNaN(date.getTime())) {\n throw new Error('timestamp args type wrong');\n }\n return date;\n }\n }\n }\n // For network that doesn't use timestamp-set, return undefined\n // See test `return undefined if no timestamp set extrinsic`\n // E.g Shiden\n return undefined;\n}\n\nexport async function getHeaderForHash(\n api: ApiPromise,\n blockHash: string,\n): Promise<Header> {\n const block = await api.rpc.chain.getBlock(blockHash).catch((e) => {\n logger.error(\n `failed to fetch Block hash=\"${blockHash}\" ${getApiDecodeErrMsg(\n e.message,\n )}`,\n );\n throw ApiPromiseConnection.handleError(e);\n });\n\n return substrateBlockToHeader(block);\n}\n\nexport function wrapExtrinsics(\n wrappedBlock: SubstrateBlock,\n allEvents: EventRecord[],\n): SubstrateExtrinsic[] {\n const groupedEvents = groupEventsByExtrinsic(allEvents);\n return wrappedBlock.block.extrinsics.map((extrinsic, idx) => {\n const events = groupedEvents[idx];\n return {\n idx,\n extrinsic,\n block: wrappedBlock,\n events,\n success: getExtrinsicSuccess(events),\n };\n });\n}\n\nfunction getExtrinsicSuccess(events: EventRecord[]): boolean {\n return (\n events.findIndex((evt) => evt.event.method === 'ExtrinsicSuccess') > -1\n );\n}\n\nfunction groupEventsByExtrinsic(\n events: EventRecord[],\n): Record<number, EventRecord[]> {\n return events.reduce(\n (acc, event) => {\n const extrinsicIdx = event.phase.isApplyExtrinsic\n ? event.phase.asApplyExtrinsic.toNumber()\n : undefined;\n if (extrinsicIdx === undefined) {\n return acc;\n }\n acc[extrinsicIdx] ??= [];\n acc[extrinsicIdx].push(event);\n return acc;\n },\n {} as Record<number, EventRecord[]>,\n );\n}\n\nexport function wrapEvents(\n extrinsics: SubstrateExtrinsic[],\n events: EventRecord[],\n block: SubstrateBlock,\n): SubstrateEvent[] {\n return events.reduce((acc, event, idx) => {\n const { phase } = event;\n const wrappedEvent: SubstrateEvent = merge(event, { idx, block });\n if (phase.isApplyExtrinsic) {\n wrappedEvent.extrinsic = extrinsics[phase.asApplyExtrinsic.toNumber()];\n }\n acc.push(wrappedEvent);\n return acc;\n }, [] as SubstrateEvent[]);\n}\n\nfunction checkSpecRange(\n specVersionRange: SpecVersionRange,\n specVersion: number,\n) {\n const [lowerBond, upperBond] = specVersionRange;\n return (\n (lowerBond === undefined ||\n lowerBond === null ||\n specVersion >= lowerBond) &&\n (upperBond === undefined || upperBond === null || specVersion <= upperBond)\n );\n}\n\nexport function filterBlock(\n block: SubstrateBlock,\n filter?: SubstrateBlockFilter,\n): SubstrateBlock | undefined {\n if (!filter) return block;\n if (!filterBlockModulo(block, filter)) return;\n if (\n block.timestamp &&\n !filterBlockTimestamp(\n block.timestamp.getTime(),\n filter as SubqlProjectBlockFilter,\n )\n ) {\n return;\n }\n return filter.specVersion === undefined ||\n block.specVersion === undefined ||\n checkSpecRange(filter.specVersion, block.specVersion)\n ? block\n : undefined;\n}\n\nexport function filterBlockModulo(\n block: SubstrateBlock,\n filter: SubstrateBlockFilter,\n): boolean {\n const { modulo } = filter;\n if (!modulo) return true;\n return block.block.header.number.toNumber() % modulo === 0;\n}\n\nexport function filterExtrinsic(\n { block, extrinsic, success }: SubstrateExtrinsic,\n filter?: SubstrateCallFilter,\n): boolean {\n if (!filter) return true;\n return (\n (filter.specVersion === undefined ||\n block.specVersion === undefined ||\n checkSpecRange(filter.specVersion, block.specVersion)) &&\n (filter.module === undefined ||\n extrinsic.method.section === filter.module) &&\n (filter.method === undefined ||\n extrinsic.method.method === filter.method) &&\n (filter.success === undefined || success === filter.success) &&\n (filter.isSigned === undefined || extrinsic.isSigned === filter.isSigned)\n );\n}\n\nexport function filterExtrinsics(\n extrinsics: SubstrateExtrinsic[],\n filterOrFilters: SubstrateCallFilter | SubstrateCallFilter[] | undefined,\n): SubstrateExtrinsic[] {\n if (\n !filterOrFilters ||\n (filterOrFilters instanceof Array && filterOrFilters.length === 0)\n ) {\n return extrinsics;\n }\n const filters =\n filterOrFilters instanceof Array ? filterOrFilters : [filterOrFilters];\n return extrinsics.filter((extrinsic) =>\n filters.find((filter) => filterExtrinsic(extrinsic, filter)),\n );\n}\n\nexport function filterEvent(\n { block, event }: SubstrateEvent,\n filter?: SubstrateEventFilter,\n): boolean {\n if (!filter) return true;\n return (\n (filter.specVersion === undefined ||\n block.specVersion === undefined ||\n checkSpecRange(filter.specVersion, block.specVersion)) &&\n (filter.module ? event.section === filter.module : true) &&\n (filter.method ? event.method === filter.method : true)\n );\n}\n\nexport function filterEvents(\n events: SubstrateEvent[],\n filterOrFilters?: SubstrateEventFilter | SubstrateEventFilter[] | undefined,\n): SubstrateEvent[] {\n if (\n !filterOrFilters ||\n (filterOrFilters instanceof Array && filterOrFilters.length === 0)\n ) {\n return events;\n }\n const filters =\n filterOrFilters instanceof Array ? filterOrFilters : [filterOrFilters];\n return events.filter((event) =>\n filters.find((filter) => filterEvent(event, filter)),\n );\n}\n\n// TODO: prefetch all known runtime upgrades at once\nexport async function prefetchMetadata(\n api: ApiPromise,\n hash: BlockHash,\n): Promise<void> {\n await api.getBlockRegistry(hash);\n}\n\n/**\n *\n * @param api\n * @param startHeight\n * @param endHeight\n * @param overallSpecVer exists if all blocks in the range have same parant specVersion\n */\n\nexport async function getBlockByHeight(\n api: ApiPromise,\n height: number,\n): Promise<SignedBlock> {\n const blockHash = await api.rpc.chain.getBlockHash(height).catch((e) => {\n logger.error(`failed to fetch BlockHash ${height}`);\n throw ApiPromiseConnection.handleError(e);\n });\n\n const block = await api.rpc.chain.getBlock(blockHash).catch((e) => {\n logger.error(\n `failed to fetch Block hash=\"${blockHash}\" height=\"${height}\"${getApiDecodeErrMsg(\n e.message,\n )}`,\n );\n throw ApiPromiseConnection.handleError(e);\n });\n\n // validate block is valid\n if (block.block.header.hash.toHex() !== blockHash.toHex()) {\n throw new Error(\n `fetched block header hash ${block.block.header.hash.toHex()} is not match with blockHash ${blockHash.toHex()} at block ${height}. This is likely a problem with the rpc provider.`,\n );\n }\n return block;\n}\n\nexport async function getHeaderByHeight(\n api: ApiPromise,\n height: number,\n): Promise<SubstrateHeader> {\n const blockHash = await api.rpc.chain.getBlockHash(height).catch((e) => {\n logger.error(`failed to fetch BlockHash ${height}`);\n throw ApiPromiseConnection.handleError(e);\n });\n\n const header = await api.rpc.chain.getHeader(blockHash).catch((e) => {\n logger.error(\n `failed to fetch Block Header hash=\"${blockHash}\" height=\"${height}\"`,\n );\n throw ApiPromiseConnection.handleError(e);\n });\n // validate block is valid\n if (header.hash.toHex() !== blockHash.toHex()) {\n throw new Error(\n `fetched block header hash ${header.hash.toHex()} is not match with blockHash ${blockHash.toHex()} at block ${height}. This is likely a problem with the rpc provider.`,\n );\n }\n return header;\n}\n\nexport async function fetchBlocksArray(\n api: ApiPromise,\n blockArray: number[],\n): Promise<SignedBlock[]> {\n return Promise.all(\n blockArray.map(async (height) => getBlockByHeight(api, height)),\n );\n}\n\nexport async function fetchHeaderArray(\n api: ApiPromise,\n blockArray: number[],\n): Promise<SubstrateHeader[]> {\n return Promise.all(\n blockArray.map(async (height) => getHeaderByHeight(api, height)),\n );\n}\n\nexport async function fetchEventsRange(\n api: ApiPromise,\n hashs: BlockHash[],\n): Promise<Vec<EventRecord>[]> {\n return Promise.all(\n hashs.map((hash) =>\n api.query.system.events.at(hash).catch((e) => {\n logger.error(\n `failed to fetch events at block ${hash}${getApiDecodeErrMsg(\n e.message,\n )}`,\n );\n throw ApiPromiseConnection.handleError(e);\n }),\n ),\n );\n}\n\nexport async function fetchRuntimeVersionRange(\n api: ApiPromise,\n hashs: BlockHash[],\n): Promise<RuntimeVersion[]> {\n return Promise.all(\n hashs.map((hash) =>\n api.rpc.state.getRuntimeVersion(hash).catch((e) => {\n logger.error(`failed to fetch RuntimeVersion at block ${hash}`);\n throw ApiPromiseConnection.handleError(e);\n }),\n ),\n );\n}\n\nexport async function fetchBlocksBatches(\n api: ApiPromise,\n blockArray: number[],\n overallSpecVer?: number,\n): Promise<IBlock<BlockContent>[]> {\n const blocks = await fetchBlocksArray(api, blockArray);\n const blockHashs = blocks.map((b) => b.block.header.hash);\n const parentBlockHashs = blocks.map((b) => b.block.header.parentHash);\n // If overallSpecVersion passed, we don't need to use api to get runtimeVersions\n // wrap block with specVersion\n // If specVersion changed, we also not guarantee in this batch contains multiple runtimes,\n // therefore we better to fetch runtime over all blocks\n const [blockEvents, runtimeVersions] = await Promise.all([\n fetchEventsRange(api, blockHashs),\n overallSpecVer !== undefined // note, we need to be careful if spec version is 0\n ? undefined\n : fetchRuntimeVersionRange(api, parentBlockHashs),\n ]);\n\n return blocks.map((block, idx) => {\n const events = blockEvents[idx];\n const parentSpecVersion =\n overallSpecVer ?? runtimeVersions?.[idx].specVersion.toNumber();\n assert(parentSpecVersion !== undefined, 'parentSpecVersion is undefined');\n\n const wrappedBlock = wrapBlock(block, events.toArray(), parentSpecVersion);\n const wrappedExtrinsics = wrapExtrinsics(wrappedBlock, events);\n const wrappedEvents = wrapEvents(wrappedExtrinsics, events, wrappedBlock);\n\n return {\n getHeader: () => substrateBlockToHeader(wrappedBlock),\n block: {\n block: wrappedBlock,\n extrinsics: wrappedExtrinsics,\n events: wrappedEvents,\n },\n };\n });\n}\n\n// TODO why is fetchBlocksBatches a breadth first function rather than depth?\nexport async function fetchLightBlock(\n api: ApiPromise,\n height: number,\n): Promise<IBlock<LightBlockContent>> {\n const blockHash = await api.rpc.chain.getBlockHash(height).catch((e) => {\n logger.error(`failed to fetch BlockHash ${height}`);\n throw ApiPromiseConnection.handleError(e);\n });\n\n const [header, events, timestamp] = await Promise.all([\n api.rpc.chain.getHeader(blockHash).catch((e) => {\n logger.error(\n `failed to fetch Block Header hash=\"${blockHash}\" height=\"${height}\"`,\n );\n throw ApiPromiseConnection.handleError(e);\n }),\n api.query.system.events.at(blockHash).catch((e) => {\n logger.error(`failed to fetch events at block ${blockHash}`);\n throw ApiPromiseConnection.handleError(e);\n }),\n // TODO: Maybe api.query.timestamp.now.at(blockHash) is the only option. If we do use it we need sufficient tests and errors if a chain doesn't support getting the timestamp.\n (await api.at(blockHash)).query.timestamp.now(),\n ]);\n\n const blockHeader: BlockHeader = {\n block: { header },\n events: events.toArray(),\n };\n return {\n block: {\n block: blockHeader,\n events: events.map((evt, idx) => merge(evt, { idx, block: blockHeader })),\n },\n getHeader: () => {\n return {\n ...substrateHeaderToHeader(blockHeader.block.header),\n timestamp: new Date(timestamp.toNumber()),\n };\n },\n };\n}\n\nexport async function fetchBlocksBatchesLight(\n api: ApiPromise,\n blockArray: number[],\n): Promise<IBlock<LightBlockContent>[]> {\n return Promise.all(blockArray.map((height) => fetchLightBlock(api, height)));\n}\n\nexport function calcInterval(api: ApiPromise): BN {\n return bnMin(\n A_DAY,\n api.consts.babe?.expectedBlockTime ||\n (api.consts.difficulty?.targetBlockTime as any) ||\n api.consts.subspace?.expectedBlockTime ||\n (api.consts.timestamp?.minimumPeriod.gte(INTERVAL_THRESHOLD)\n ? api.consts.timestamp.minimumPeriod.mul(BN_TWO)\n : api.query.parachainSystem\n ? DEFAULT_TIME.mul(BN_TWO)\n : DEFAULT_TIME),\n );\n}\n\nfunction getApiDecodeErrMsg(errMsg: string): string {\n const decodedErrMsgs = [\n 'Unable to decode',\n 'failed decoding',\n 'unknown type',\n ];\n\n if (!decodedErrMsgs.find((decodedErrMsg) => errMsg.includes(decodedErrMsg))) {\n return '';\n }\n\n return (\n `\\nThis is because the block cannot be decoded. To solve this you can either:` +\n '\\n* Skip the block' +\n '\\n* Update the chain types. You can test this by viewing the block with https://polkadot.js.org/apps/' +\n '\\nFor further information please read the docs: https://academy.subquery.network/'\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"substrate.js","sourceRoot":"","sources":["../../src/utils/substrate.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport assert from 'assert';\nimport { ApiPromise } from '@polkadot/api';\nimport { Vec } from '@polkadot/types';\nimport '@polkadot/api-augment/substrate';\nimport {\n BlockHash,\n EventRecord,\n RuntimeVersion,\n SignedBlock,\n Header as SubstrateHeader,\n} from '@polkadot/types/interfaces';\nimport { BN, BN_THOUSAND, BN_TWO, bnMin } from '@polkadot/util';\nimport {\n getLogger,\n IBlock,\n Header,\n filterBlockTimestamp,\n} from '@subql/node-core';\nimport {\n SpecVersionRange,\n SubstrateBlockFilter,\n SubstrateCallFilter,\n SubstrateEventFilter,\n SubstrateBlock,\n SubstrateEvent,\n SubstrateExtrinsic,\n BlockHeader,\n} from '@subql/types';\nimport { merge } from 'lodash';\nimport { SubqlProjectBlockFilter } from '../configure/SubqueryProject';\nimport { ApiPromiseConnection } from '../indexer/apiPromise.connection';\nimport { BlockContent, LightBlockContent } from '../indexer/types';\n\nconst logger = getLogger('fetch');\nconst INTERVAL_THRESHOLD = BN_THOUSAND.div(BN_TWO);\nconst DEFAULT_TIME = new BN(6_000);\nconst A_DAY = new BN(24 * 60 * 60 * 1000);\n\ntype MissTsHeader = Omit<Header, 'timestamp'>;\n\nexport function substrateHeaderToHeader(header: SubstrateHeader): MissTsHeader {\n return {\n blockHeight: header.number.toNumber(),\n blockHash: header.hash.toHex(),\n parentHash: header.parentHash.toHex(),\n };\n}\n\nexport function substrateBlockToHeader(block: SignedBlock): Header {\n const timestamp = getTimestamp(block);\n assert(\n timestamp,\n 'Failed to retrieve a reliable timestamp. This issue is more likely to occur on networks like Shiden',\n );\n\n return {\n ...substrateHeaderToHeader(block.block.header),\n timestamp,\n };\n}\n\nexport function wrapBlock(\n signedBlock: SignedBlock,\n events: EventRecord[],\n specVersion: number,\n): SubstrateBlock {\n return merge(signedBlock, {\n timestamp: getTimestamp(signedBlock),\n specVersion: specVersion,\n events,\n });\n}\n\nexport function getTimestamp({\n block: { extrinsics },\n}: SignedBlock): Date | undefined {\n // extrinsics can be undefined when fetching light blocks\n if (extrinsics) {\n for (const e of extrinsics) {\n const {\n method: { method, section },\n } = e;\n if (section === 'timestamp' && method === 'set') {\n const date = new Date(e.args[0].toJSON() as number);\n if (isNaN(date.getTime())) {\n throw new Error('timestamp args type wrong');\n }\n return date;\n }\n }\n }\n // For network that doesn't use timestamp-set, return undefined\n // See test `return undefined if no timestamp set extrinsic`\n // E.g Shiden\n return undefined;\n}\n\nexport async function getHeaderForHash(\n api: ApiPromise,\n blockHash: string,\n): Promise<Header> {\n const block = await api.rpc.chain.getBlock(blockHash).catch((e) => {\n logger.error(\n `failed to fetch Block hash=\"${blockHash}\" ${getApiDecodeErrMsg(e.message)}`,\n );\n throw ApiPromiseConnection.handleError(e);\n });\n\n return substrateBlockToHeader(block);\n}\n\nexport function wrapExtrinsics(\n wrappedBlock: SubstrateBlock,\n allEvents: EventRecord[],\n): SubstrateExtrinsic[] {\n const groupedEvents = groupEventsByExtrinsic(allEvents);\n return wrappedBlock.block.extrinsics.map((extrinsic, idx) => {\n const events = groupedEvents[idx];\n return {\n idx,\n extrinsic,\n block: wrappedBlock,\n events,\n success: getExtrinsicSuccess(events),\n };\n });\n}\n\nfunction getExtrinsicSuccess(events: EventRecord[]): boolean {\n return (\n events.findIndex((evt) => evt.event.method === 'ExtrinsicSuccess') > -1\n );\n}\n\nfunction groupEventsByExtrinsic(\n events: EventRecord[],\n): Record<number, EventRecord[]> {\n return events.reduce(\n (acc, event) => {\n const extrinsicIdx = event.phase.isApplyExtrinsic\n ? event.phase.asApplyExtrinsic.toNumber()\n : undefined;\n if (extrinsicIdx === undefined) {\n return acc;\n }\n acc[extrinsicIdx] ??= [];\n acc[extrinsicIdx].push(event);\n return acc;\n },\n {} as Record<number, EventRecord[]>,\n );\n}\n\nexport function wrapEvents(\n extrinsics: SubstrateExtrinsic[],\n events: EventRecord[],\n block: SubstrateBlock,\n): SubstrateEvent[] {\n return events.reduce((acc, event, idx) => {\n const { phase } = event;\n const wrappedEvent: SubstrateEvent = merge(event, { idx, block });\n if (phase.isApplyExtrinsic) {\n wrappedEvent.extrinsic = extrinsics[phase.asApplyExtrinsic.toNumber()];\n }\n acc.push(wrappedEvent);\n return acc;\n }, [] as SubstrateEvent[]);\n}\n\nfunction checkSpecRange(\n specVersionRange: SpecVersionRange,\n specVersion: number,\n) {\n const [lowerBond, upperBond] = specVersionRange;\n return (\n (lowerBond === undefined ||\n lowerBond === null ||\n specVersion >= lowerBond) &&\n (upperBond === undefined || upperBond === null || specVersion <= upperBond)\n );\n}\n\nexport function filterBlock(\n block: SubstrateBlock,\n filter?: SubstrateBlockFilter,\n): SubstrateBlock | undefined {\n if (!filter) return block;\n if (!filterBlockModulo(block, filter)) return;\n if (\n block.timestamp &&\n !filterBlockTimestamp(\n block.timestamp.getTime(),\n filter as SubqlProjectBlockFilter,\n )\n ) {\n return;\n }\n return filter.specVersion === undefined ||\n block.specVersion === undefined ||\n checkSpecRange(filter.specVersion, block.specVersion)\n ? block\n : undefined;\n}\n\nexport function filterBlockModulo(\n block: SubstrateBlock,\n filter: SubstrateBlockFilter,\n): boolean {\n const { modulo } = filter;\n if (!modulo) return true;\n return block.block.header.number.toNumber() % modulo === 0;\n}\n\nexport function filterExtrinsic(\n { block, extrinsic, success }: SubstrateExtrinsic,\n filter?: SubstrateCallFilter,\n): boolean {\n if (!filter) return true;\n return (\n (filter.specVersion === undefined ||\n block.specVersion === undefined ||\n checkSpecRange(filter.specVersion, block.specVersion)) &&\n (filter.module === undefined ||\n extrinsic.method.section === filter.module) &&\n (filter.method === undefined ||\n extrinsic.method.method === filter.method) &&\n (filter.success === undefined || success === filter.success) &&\n (filter.isSigned === undefined || extrinsic.isSigned === filter.isSigned)\n );\n}\n\nexport function filterExtrinsics(\n extrinsics: SubstrateExtrinsic[],\n filterOrFilters: SubstrateCallFilter | SubstrateCallFilter[] | undefined,\n): SubstrateExtrinsic[] {\n if (\n !filterOrFilters ||\n (filterOrFilters instanceof Array && filterOrFilters.length === 0)\n ) {\n return extrinsics;\n }\n const filters =\n filterOrFilters instanceof Array ? filterOrFilters : [filterOrFilters];\n return extrinsics.filter((extrinsic) =>\n filters.find((filter) => filterExtrinsic(extrinsic, filter)),\n );\n}\n\nexport function filterEvent(\n { block, event }: SubstrateEvent,\n filter?: SubstrateEventFilter,\n): boolean {\n if (!filter) return true;\n return (\n (filter.specVersion === undefined ||\n block.specVersion === undefined ||\n checkSpecRange(filter.specVersion, block.specVersion)) &&\n (filter.module ? event.section === filter.module : true) &&\n (filter.method ? event.method === filter.method : true)\n );\n}\n\nexport function filterEvents(\n events: SubstrateEvent[],\n filterOrFilters?: SubstrateEventFilter | SubstrateEventFilter[],\n): SubstrateEvent[] {\n if (\n !filterOrFilters ||\n (filterOrFilters instanceof Array && filterOrFilters.length === 0)\n ) {\n return events;\n }\n const filters =\n filterOrFilters instanceof Array ? filterOrFilters : [filterOrFilters];\n return events.filter((event) =>\n filters.find((filter) => filterEvent(event, filter)),\n );\n}\n\n// TODO: prefetch all known runtime upgrades at once\nexport async function prefetchMetadata(\n api: ApiPromise,\n hash: BlockHash,\n): Promise<void> {\n await api.getBlockRegistry(hash);\n}\n\n/**\n *\n * @param api\n * @param startHeight\n * @param endHeight\n * @param overallSpecVer exists if all blocks in the range have same parant specVersion\n */\n\nexport async function getBlockByHeight(\n api: ApiPromise,\n height: number,\n): Promise<SignedBlock> {\n const blockHash = await api.rpc.chain.getBlockHash(height).catch((e) => {\n logger.error(`failed to fetch BlockHash ${height}`);\n throw ApiPromiseConnection.handleError(e);\n });\n\n const block = await api.rpc.chain.getBlock(blockHash).catch((e) => {\n logger.error(\n `failed to fetch Block hash=\"${blockHash}\" height=\"${height}\"${getApiDecodeErrMsg(e.message)}`,\n );\n throw ApiPromiseConnection.handleError(e);\n });\n\n // validate block is valid\n if (block.block.header.hash.toHex() !== blockHash.toHex()) {\n throw new Error(\n `fetched block header hash ${block.block.header.hash.toHex()} is not match with blockHash ${blockHash.toHex()} at block ${height}. This is likely a problem with the rpc provider.`,\n );\n }\n return block;\n}\n\nexport async function getHeaderByHeight(\n api: ApiPromise,\n height: number,\n): Promise<SubstrateHeader> {\n const blockHash = await api.rpc.chain.getBlockHash(height).catch((e) => {\n logger.error(`failed to fetch BlockHash ${height}`);\n throw ApiPromiseConnection.handleError(e);\n });\n\n const header = await api.rpc.chain.getHeader(blockHash).catch((e) => {\n logger.error(\n `failed to fetch Block Header hash=\"${blockHash}\" height=\"${height}\"`,\n );\n throw ApiPromiseConnection.handleError(e);\n });\n // validate block is valid\n if (header.hash.toHex() !== blockHash.toHex()) {\n throw new Error(\n `fetched block header hash ${header.hash.toHex()} is not match with blockHash ${blockHash.toHex()} at block ${height}. This is likely a problem with the rpc provider.`,\n );\n }\n return header;\n}\n\nexport async function fetchBlocksArray(\n api: ApiPromise,\n blockArray: number[],\n): Promise<SignedBlock[]> {\n return Promise.all(\n blockArray.map(async (height) => getBlockByHeight(api, height)),\n );\n}\n\nexport async function fetchHeaderArray(\n api: ApiPromise,\n blockArray: number[],\n): Promise<SubstrateHeader[]> {\n return Promise.all(\n blockArray.map(async (height) => getHeaderByHeight(api, height)),\n );\n}\n\nexport async function fetchEventsRange(\n api: ApiPromise,\n hashs: BlockHash[],\n): Promise<Vec<EventRecord>[]> {\n return Promise.all(\n hashs.map((hash) =>\n api.query.system.events.at(hash).catch((e) => {\n logger.error(\n `failed to fetch events at block ${hash}${getApiDecodeErrMsg(e.message)}`,\n );\n throw ApiPromiseConnection.handleError(e);\n }),\n ),\n );\n}\n\nexport async function fetchRuntimeVersionRange(\n api: ApiPromise,\n hashs: BlockHash[],\n): Promise<RuntimeVersion[]> {\n return Promise.all(\n hashs.map((hash) =>\n api.rpc.state.getRuntimeVersion(hash).catch((e) => {\n logger.error(`failed to fetch RuntimeVersion at block ${hash}`);\n throw ApiPromiseConnection.handleError(e);\n }),\n ),\n );\n}\n\nexport async function fetchBlocksBatches(\n api: ApiPromise,\n blockArray: number[],\n overallSpecVer?: number,\n): Promise<IBlock<BlockContent>[]> {\n const blocks = await fetchBlocksArray(api, blockArray);\n const blockHashs = blocks.map((b) => b.block.header.hash);\n const parentBlockHashs = blocks.map((b) => b.block.header.parentHash);\n // If overallSpecVersion passed, we don't need to use api to get runtimeVersions\n // wrap block with specVersion\n // If specVersion changed, we also not guarantee in this batch contains multiple runtimes,\n // therefore we better to fetch runtime over all blocks\n const [blockEvents, runtimeVersions] = await Promise.all([\n fetchEventsRange(api, blockHashs),\n overallSpecVer !== undefined // note, we need to be careful if spec version is 0\n ? undefined\n : fetchRuntimeVersionRange(api, parentBlockHashs),\n ]);\n\n return blocks.map((block, idx) => {\n const events = blockEvents[idx];\n const parentSpecVersion =\n overallSpecVer ?? runtimeVersions?.[idx].specVersion.toNumber();\n assert(parentSpecVersion !== undefined, 'parentSpecVersion is undefined');\n\n const wrappedBlock = wrapBlock(block, events.toArray(), parentSpecVersion);\n const wrappedExtrinsics = wrapExtrinsics(wrappedBlock, events);\n const wrappedEvents = wrapEvents(wrappedExtrinsics, events, wrappedBlock);\n\n return {\n getHeader: () => substrateBlockToHeader(wrappedBlock),\n block: {\n block: wrappedBlock,\n extrinsics: wrappedExtrinsics,\n events: wrappedEvents,\n },\n };\n });\n}\n\n// TODO why is fetchBlocksBatches a breadth first function rather than depth?\nexport async function fetchLightBlock(\n api: ApiPromise,\n height: number,\n): Promise<IBlock<LightBlockContent>> {\n const blockHash = await api.rpc.chain.getBlockHash(height).catch((e) => {\n logger.error(`failed to fetch BlockHash ${height}`);\n throw ApiPromiseConnection.handleError(e);\n });\n\n const [header, events, timestamp] = await Promise.all([\n api.rpc.chain.getHeader(blockHash).catch((e) => {\n logger.error(\n `failed to fetch Block Header hash=\"${blockHash}\" height=\"${height}\"`,\n );\n throw ApiPromiseConnection.handleError(e);\n }),\n api.query.system.events.at(blockHash).catch((e) => {\n logger.error(`failed to fetch events at block ${blockHash}`);\n throw ApiPromiseConnection.handleError(e);\n }),\n // TODO: Maybe api.query.timestamp.now.at(blockHash) is the only option. If we do use it we need sufficient tests and errors if a chain doesn't support getting the timestamp.\n (await api.at(blockHash)).query.timestamp.now(),\n ]);\n\n const blockHeader: BlockHeader = {\n block: { header },\n events: events.toArray(),\n };\n return {\n block: {\n block: blockHeader,\n events: events.map((evt, idx) => merge(evt, { idx, block: blockHeader })),\n },\n getHeader: () => {\n return {\n ...substrateHeaderToHeader(blockHeader.block.header),\n timestamp: new Date(timestamp.toNumber()),\n };\n },\n };\n}\n\nexport async function fetchBlocksBatchesLight(\n api: ApiPromise,\n blockArray: number[],\n): Promise<IBlock<LightBlockContent>[]> {\n return Promise.all(blockArray.map((height) => fetchLightBlock(api, height)));\n}\n\nexport function calcInterval(api: ApiPromise): BN {\n return bnMin(\n A_DAY,\n api.consts.babe?.expectedBlockTime ||\n (api.consts.difficulty?.targetBlockTime as any) ||\n api.consts.subspace?.expectedBlockTime ||\n (api.consts.timestamp?.minimumPeriod.gte(INTERVAL_THRESHOLD)\n ? api.consts.timestamp.minimumPeriod.mul(BN_TWO)\n : api.query.parachainSystem\n ? DEFAULT_TIME.mul(BN_TWO)\n : DEFAULT_TIME),\n );\n}\n\nfunction getApiDecodeErrMsg(errMsg: string): string {\n const decodedErrMsgs = [\n 'Unable to decode',\n 'failed decoding',\n 'unknown type',\n ];\n\n if (!decodedErrMsgs.find((decodedErrMsg) => errMsg.includes(decodedErrMsg))) {\n return '';\n }\n\n return (\n `\\nThis is because the block cannot be decoded. To solve this you can either:` +\n '\\n* Skip the block' +\n '\\n* Update the chain types. You can test this by viewing the block with https://polkadot.js.org/apps/' +\n '\\nFor further information please read the docs: https://academy.subquery.network/'\n );\n}\n"]}
|
package/dist/utils/test.utils.js
CHANGED
|
@@ -23,7 +23,8 @@ const mockInstance = async (cid, schemaName, historical, useSubscription, timest
|
|
|
23
23
|
subscription: useSubscription,
|
|
24
24
|
// unfinalizedBlocks: false,
|
|
25
25
|
};
|
|
26
|
-
return (0, node_core_1.registerApp)(argv, SubqueryProject_1.createSubQueryProject, jest.fn(),
|
|
26
|
+
return (0, node_core_1.registerApp)(argv, SubqueryProject_1.createSubQueryProject, () => { }, //jest.fn(),
|
|
27
|
+
'');
|
|
27
28
|
};
|
|
28
29
|
async function mockRegister(cid, schemaName, historical, useSubscription, timestampField) {
|
|
29
30
|
const { nodeConfig, project } = await mockInstance(cid, schemaName, historical, useSubscription, timestampField);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.utils.js","sourceRoot":"","sources":["../../src/utils/test.utils.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;AAwFnC,gCA4BC;AA/GD,yDAA2D;AAC3D,+CAAkD;AAClD,6CAAuC;AACvC,gDAM0B;AAC1B,oEAAgE;AAChE,kEAGsC;AACtC,0DAAsD;AAEtD,MAAM,YAAY,GAAG,KAAK,EACxB,GAAW,EACX,UAAkB,EAClB,UAA0B,EAC1B,eAAwB,EACxB,cAAuB,EACvB,EAAE;IACF,MAAM,IAAI,GAAwB;QAChC,CAAC,EAAE,EAAE;QACL,UAAU;QACV,QAAQ,EAAE,UAAU,GAAG,EAAE;QACzB,QAAQ,EAAE,UAAU;QACpB,oBAAoB,EAAE,IAAI;QAC1B,IAAI,EAAE,iDAAiD;QACvD,eAAe,EAAE,gCAAgC;QACjD,cAAc;QACd,YAAY,EAAE,eAAe;QAC7B,4BAA4B;KAC7B,CAAC;IACF,OAAO,IAAA,uBAAW,EAChB,IAAI,EACJ,uCAAqB,EACrB,
|
|
1
|
+
{"version":3,"file":"test.utils.js","sourceRoot":"","sources":["../../src/utils/test.utils.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;AAwFnC,gCA4BC;AA/GD,yDAA2D;AAC3D,+CAAkD;AAClD,6CAAuC;AACvC,gDAM0B;AAC1B,oEAAgE;AAChE,kEAGsC;AACtC,0DAAsD;AAEtD,MAAM,YAAY,GAAG,KAAK,EACxB,GAAW,EACX,UAAkB,EAClB,UAA0B,EAC1B,eAAwB,EACxB,cAAuB,EACvB,EAAE;IACF,MAAM,IAAI,GAAwB;QAChC,CAAC,EAAE,EAAE;QACL,UAAU;QACV,QAAQ,EAAE,UAAU,GAAG,EAAE;QACzB,QAAQ,EAAE,UAAU;QACpB,oBAAoB,EAAE,IAAI;QAC1B,IAAI,EAAE,iDAAiD;QACvD,eAAe,EAAE,gCAAgC;QACjD,cAAc;QACd,YAAY,EAAE,eAAe;QAC7B,4BAA4B;KAC7B,CAAC;IACF,OAAO,IAAA,uBAAW,EAChB,IAAI,EACJ,uCAAqB,EACrB,GAAG,EAAE,GAAE,CAAC,EAAE,YAAY;IACtB,EAAE,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,KAAK,UAAU,YAAY,CACzB,GAAW,EACX,UAAkB,EAClB,UAA0B,EAC1B,eAAwB,EACxB,cAAuB;IAEvB,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,MAAM,YAAY,CAChD,GAAG,EACH,UAAU,EACV,UAAU,EACV,eAAe,EACf,cAAc,CACf,CAAC;IAEF,OAAO;QACL,MAAM,EAAE,kCAAe;QACvB,SAAS,EAAE;YACT;gBACE,OAAO,EAAE,sBAAU;gBACnB,QAAQ,EAAE,UAAU;aACrB;YACD;gBACE,OAAO,EAAE,kBAAkB;gBAC3B,QAAQ,EAAE,OAAO;aAClB;YACD;gBACE,OAAO,EAAE,wBAAwB;gBACjC,QAAQ,EAAE,OAAO;aAClB;YACD;gBACE,OAAO,EAAE,MAAM;gBACf,QAAQ,EAAE,IAAI;aACf;SACF;QACD,OAAO,EAAE,CAAC,sBAAU,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,CAAC;KAC5E,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,UAAU,CAC9B,UAAkB,EAClB,GAAW,EACX,iBAAiB,GAAG,KAAK,EACzB,eAAe,GAAG,KAAK,EACvB,cAAc,GAAG,KAAK;IAEtB,MAAM,CAAC,GAAG,MAAM,cAAI,CAAC,mBAAmB,CAAC;QACvC,OAAO,EAAE;YACP,oBAAQ,CAAC,OAAO,EAAE;YAClB,kCAAkB,CAAC,OAAO,EAAE;YAC5B,YAAY,CACV,GAAG,EACH,UAAU,EACV,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EACpC,eAAe,EACf,cAAc,CACf;YACD,yBAAc,CAAC,OAAO,EAAE;YACxB,sBAAU;YACV,0BAAW;SACZ;QACD,WAAW,EAAE,EAAE;KAChB,CAAC,CAAC,OAAO,EAAE,CAAC;IAEb,MAAM,GAAG,GAAG,CAAC,CAAC,qBAAqB,EAAE,CAAC;IACtC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IACjB,OAAO,GAAG,CAAC;AACb,CAAC","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\n// Utils for integration tests\n\nimport { DynamicModule, INestApplication } from '@nestjs/common';\nimport { EventEmitterModule } from '@nestjs/event-emitter';\nimport { ScheduleModule } from '@nestjs/schedule';\nimport { Test } from '@nestjs/testing';\nimport {\n CoreModule,\n DbModule,\n HistoricalMode,\n NodeConfig,\n registerApp,\n} from '@subql/node-core';\nimport { ConfigureModule } from '../configure/configure.module';\nimport {\n createSubQueryProject,\n SubqueryProject,\n} from '../configure/SubqueryProject';\nimport { FetchModule } from '../indexer/fetch.module';\n\nconst mockInstance = async (\n cid: string,\n schemaName: string,\n historical: HistoricalMode,\n useSubscription: boolean,\n timestampField: boolean,\n) => {\n const argv: Record<string, any> = {\n _: [],\n historical,\n subquery: `ipfs://${cid}`,\n dbSchema: schemaName,\n allowSchemaMigration: true,\n ipfs: 'https://unauthipfs.subquery.network/ipfs/api/v0',\n networkEndpoint: 'https://rpc.polkadot.io/public',\n timestampField,\n subscription: useSubscription,\n // unfinalizedBlocks: false,\n };\n return registerApp<SubqueryProject>(\n argv,\n createSubQueryProject,\n () => {}, //jest.fn(),\n '',\n );\n};\n\nasync function mockRegister(\n cid: string,\n schemaName: string,\n historical: HistoricalMode,\n useSubscription: boolean,\n timestampField: boolean,\n): Promise<DynamicModule> {\n const { nodeConfig, project } = await mockInstance(\n cid,\n schemaName,\n historical,\n useSubscription,\n timestampField,\n );\n\n return {\n module: ConfigureModule,\n providers: [\n {\n provide: NodeConfig,\n useValue: nodeConfig,\n },\n {\n provide: 'ISubqueryProject',\n useValue: project,\n },\n {\n provide: 'IProjectUpgradeService',\n useValue: project,\n },\n {\n provide: 'Null',\n useValue: null,\n },\n ],\n exports: [NodeConfig, 'ISubqueryProject', 'IProjectUpgradeService', 'Null'],\n };\n}\n\nexport async function prepareApp(\n schemaName: string,\n cid: string,\n disableHistorical = false,\n useSubscription = false,\n timestampField = false,\n): Promise<INestApplication> {\n const m = await Test.createTestingModule({\n imports: [\n DbModule.forRoot(),\n EventEmitterModule.forRoot(),\n mockRegister(\n cid,\n schemaName,\n disableHistorical ? false : 'height',\n useSubscription,\n timestampField,\n ),\n ScheduleModule.forRoot(),\n CoreModule,\n FetchModule,\n ],\n controllers: [],\n }).compile();\n\n const app = m.createNestApplication();\n await app.init();\n return app;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@subql/node",
|
|
3
|
-
"version": "6.3.6-
|
|
3
|
+
"version": "6.3.6-1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "Ian He",
|
|
6
6
|
"license": "GPL-3.0",
|
|
@@ -27,9 +27,9 @@
|
|
|
27
27
|
"@nestjs/schedule": "^5.0.1",
|
|
28
28
|
"@polkadot/api": "^16.4.7",
|
|
29
29
|
"@subql/common-substrate": "~4.5.2",
|
|
30
|
-
"@subql/node-core": "~18.4.
|
|
31
|
-
"@subql/types": "~3.14.
|
|
32
|
-
"@subql/utils": "~2.21.
|
|
30
|
+
"@subql/node-core": "~18.4.1-1",
|
|
31
|
+
"@subql/types": "~3.14.3-0",
|
|
32
|
+
"@subql/utils": "~2.21.3-0",
|
|
33
33
|
"fetch-h2": "3.0.2",
|
|
34
34
|
"lodash": "^4.17.21",
|
|
35
35
|
"reflect-metadata": "^0.2.2"
|
|
@@ -59,5 +59,5 @@
|
|
|
59
59
|
"README.md",
|
|
60
60
|
"CHANGELOG.md"
|
|
61
61
|
],
|
|
62
|
-
"stableVersion": "6.3.
|
|
62
|
+
"stableVersion": "6.3.6-0"
|
|
63
63
|
}
|