@subql/node 6.3.3 → 6.3.4
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"substrateDictionaryV1.js","sourceRoot":"","sources":["../../../../src/indexer/dictionary/v1/substrateDictionaryV1.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;AAwGnC,sEAgFC;AAtLD,oDAA4B;AAC5B,8CAA0C;AAC1C,8DAUiC;AACjC,gDAM0B;AAM1B,wCAA6D;AAC7D,mCAAwC;AAExC,oDAAwE;AAKxE,SAAS,uBAAuB,CAC9B,MAA4B;IAE5B,MAAM,UAAU,GAA+B,EAAE,CAAC;IAClD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO;QACL,MAAM,EAAE,QAAQ;QAChB,UAAU;KACX,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,MAA2B;IAE3B,OAAO;QACL,MAAM,EAAE,YAAY;QACpB,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;aAC5B,GAAG,CACF,CAAC,GAAG,EAAE,EAAE,CACN,CAAC;YACC,KAAK,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;YACtC,KAAK,EAAE,MAAM,CAAC,GAAgC,CAAC;SAChD,CAA6B,CACjC;aACA,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC;KACxC,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,EAAuB,EACvB,OAAyB,EACzB,cAA8B;IAE9B,IAAI,IAAA,8BAAW,EAAC,EAAE,CAAC,IAAI,IAAA,uBAAa,EAAC,OAAO,CAAC,EAAE,CAAC;QAC9C,OAAO,OAAO,CAAC,IAAI,CAAC;IACtB,CAAC;SAAM,IAAI,IAAA,6BAAU,EAAC,EAAE,CAAC,IAAI,IAAA,yBAAe,EAAC,OAAO,CAAC,EAAE,CAAC;QACtD,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;QAClC,MAAM,WAAW,GAAG,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC;QAC5E,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,gBAAgB,OAAO,CAAC,IAAI,+BAA+B,EAAE,CAAC,IAAI,EAAE,CACrE,CAAC;QACJ,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAC5B,EAAuB,EACvB,WAAmB,EACnB,cAA8B;IAE9B,IAAI,IAAA,6BAAU,EAAC,EAAE,CAAC,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;QAClC,MAAM,SAAS,GAAG,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACxD,OAAO,SAAS,CAAC,UAAU,YAAY,KAAK;YAC1C,CAAC,CAAE,SAAS,CAAC,UAAkB;YAC/B,CAAC,CAAE,CAAC,SAAS,CAAC,UAAU,CAAS,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED,sCAAsC;AACtC,SAAgB,6BAA6B,CAC3C,WAAkC,EAClC,cAA8B;IAE9B,MAAM,YAAY,GAA6B,EAAE,CAAC;IAElD,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAA,6BAAU,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/D,KAAK,MAAM,OAAO,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC1C,MAAM,eAAe,GAAG,kBAAkB,CAAC,EAAE,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;YACxE,IAAI,UAAU,GAAoC,EAAE,CAAC;YACrD,IAAI,IAAA,6BAAU,EAAC,EAAE,CAAC,EAAE,CAAC;gBACnB,IAAA,gBAAM,EAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;gBAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACzD,MAAM,MAAM,GAAI,OAAkC,CAAC,MAAM,CAAC;gBAC1D,IAAI,SAAS,CAAC,eAAe,IAAI,MAAM,EAAE,CAAC;oBACxC,MAAM,UAAU,GAAG,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;oBACzD,IAAI,UAAU,EAAE,CAAC;wBACf,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wBAC9B,SAAS;oBACX,CAAC;gBACH,CAAC;gBACD,UAAU,GAAG,qBAAqB,CAChC,EAAE,EACF,OAAO,CAAC,IAAI,EACZ,cAAc,CACf,CAAC;YACJ,CAAC;iBAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC1B,UAAU,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;YACD,2BAA2B;YAC3B,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACxC,IAAI,CAAC,UAAU,CAAC,MAAM;gBAAE,OAAO,EAAE,CAAC;YAClC,QAAQ,eAAe,EAAE,CAAC;gBACxB,KAAK,uCAAoB,CAAC,KAAK;oBAC7B,KAAK,MAAM,MAAM,IAAI,UAAoC,EAAE,CAAC;wBAC1D,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;4BAChC,OAAO,EAAE,CAAC;wBACZ,CAAC;oBACH,CAAC;oBACD,MAAM;gBACR,KAAK,uCAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC/B,KAAK,MAAM,MAAM,IAAI,UAAmC,EAAE,CAAC;wBACzD,IACE,MAAM,CAAC,MAAM,KAAK,SAAS;4BAC3B,MAAM,CAAC,MAAM,KAAK,SAAS;4BAC3B,MAAM,CAAC,QAAQ,KAAK,SAAS;4BAC7B,MAAM,CAAC,OAAO,KAAK,SAAS,EAC5B,CAAC;4BACD,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC;wBACpD,CAAC;6BAAM,CAAC;4BACN,OAAO,EAAE,CAAC;wBACZ,CAAC;oBACH,CAAC;oBACD,MAAM;gBACR,CAAC;gBACD,KAAK,uCAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;oBAChC,KAAK,MAAM,MAAM,IAAI,UAAoC,EAAE,CAAC;wBAC1D,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;4BAC/D,YAAY,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;wBACrD,CAAC;6BAAM,CAAC;4BACN,OAAO,EAAE,CAAC;wBACZ,CAAC;oBACH,CAAC;oBACD,MAAM;gBACR,CAAC;gBACD,OAAO,CAAC,CAAC,CAAC;oBACR,MAAM,IAAI,KAAK,CAAC,6BAA6B,eAAe,EAAE,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAA,eAAM,EACX,YAAY,EACZ,CAAC,IAAI,EAAE,EAAE,CACP,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAC9B,IAAA,eAAM,EAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CACxC,EAAE,CACN,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,yBAAyB,CAAC,CAAC;AAEpD,MAAa,qBAAsB,SAAQ,wBAAiC;IAI9D;IAHZ,YACE,OAAwB,EACxB,UAAsB,EACZ,cAA8B,EACxC,aAAqB,EACrB,OAAgB;QAEhB,KAAK,CAAC,aAAa,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAJ3D,mBAAc,GAAd,cAAc,CAAgB;IAK1C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,OAAwB,EACxB,UAAsB,EACtB,cAA8B,EAC9B,aAAqB,EACrB,OAAgB;QAEhB,MAAM,UAAU,GAAG,IAAI,qBAAqB,CAC1C,OAAO,EACP,UAAU,EACV,cAAc,EACd,aAAa,EACb,OAAO,CACR,CAAC;QACF,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;QACxB,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,2BAA2B,CACzB,WAAkC;QAElC,OAAO,6BAA6B,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IACzE,CAAC;IAED,iBAAiB,CAAC,GAA2B;QAC3C,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,yBAAyB,GAAG,IAAI,GAAG,EAAe,CAAC;QACzD,MAAM,YAAY,GAAI,GAAG,CAAC,YAAoB,CAAC,KAAK,CAAC;QACrD,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;QAEhC,gCAAgC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,yBAAyB,CAAC,GAAG,CAAC;gBAC5B,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;gBACtB,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;gBAC1C,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC;aACjD,CAAC,CAAC;QACL,CAAC;QACD,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC7C,qCAAqC;YACrC,IAAI,SAAS,CAAC,mBAAmB,EAAE,CAAC;gBAClC,yBAAyB,CAAC,GAAG,CAAC;oBAC5B,EAAE,EAAE,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE;oBAC5C,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC;oBAChE,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC;iBAC3C,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAA,mBAAO,EACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBAChB,KAAK,EAAE,IAAA,UAAG,EAAC,KAAK,CAAC;aAClB,CAAC,EACF,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAClC,CAAC;YAEF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACtC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;YAC5C,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;QACrC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;YACvD,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACjE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAEO,gBAAgB;QACtB,MAAM,KAAK,GAAc;YACvB;gBACE,MAAM,EAAE,WAAW;gBACnB,OAAO,EAAE,CAAC,qBAAqB,EAAE,aAAa,CAAC;aAChD;YACD;gBACE,MAAM,EAAE,cAAc;gBACtB,OAAO,EAAE;oBACP;wBACE,MAAM,EAAE,OAAO;wBACf,OAAO,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC;qBAC/B;iBACF;gBACD,IAAI,EAAE;oBACJ,OAAO,EAAE,kBAAkB;iBAC5B;aACF;SACF,CAAC;QACF,OAAO,IAAA,kBAAU,EAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;CACF;AAhHD,sDAgHC","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport assert from 'assert';\nimport { gql } from '@apollo/client/core';\nimport {\n isCustomDs,\n isRuntimeDs,\n SubstrateCallFilter,\n SubstrateCustomHandler,\n SubstrateDataSource,\n SubstrateEventFilter,\n SubstrateHandler,\n SubstrateHandlerKind,\n SubstrateRuntimeHandlerFilter,\n} from '@subql/common-substrate';\nimport {\n NodeConfig,\n DictionaryV1,\n timeout,\n getLogger,\n DsProcessorService,\n} from '@subql/node-core';\nimport { SubstrateBlockFilter, SubstrateDatasource } from '@subql/types';\nimport {\n DictionaryQueryCondition,\n DictionaryQueryEntry as DictionaryV1QueryEntry,\n} from '@subql/types-core';\nimport { buildQuery, GqlNode, GqlQuery } from '@subql/utils';\nimport { sortBy, uniqBy } from 'lodash';\nimport { SubqueryProject } from '../../../configure/SubqueryProject';\nimport { isBaseHandler, isCustomHandler } from '../../../utils/project';\nimport { SpecVersion, SpecVersionDictionary } from '../types';\n\ntype GetDsProcessor = DsProcessorService['getDsProcessor'];\n\nfunction eventFilterToQueryEntry(\n filter: SubstrateEventFilter,\n): DictionaryV1QueryEntry {\n const conditions: DictionaryQueryCondition[] = [];\n if (filter.method) {\n conditions.push({ field: 'event', value: filter.method });\n }\n if (filter.module) {\n conditions.push({ field: 'module', value: filter.module });\n }\n return {\n entity: 'events',\n conditions,\n };\n}\n\nfunction callFilterToQueryEntry(\n filter: SubstrateCallFilter,\n): DictionaryV1QueryEntry {\n return {\n entity: 'extrinsics',\n conditions: Object.keys(filter)\n .map(\n (key) =>\n ({\n field: key === 'method' ? 'call' : key,\n value: filter[key as keyof SubstrateCallFilter],\n }) as DictionaryQueryCondition,\n )\n .filter((c) => c.value !== undefined),\n };\n}\n\nfunction getBaseHandlerKind(\n ds: SubstrateDataSource,\n handler: SubstrateHandler,\n getDsProcessor: GetDsProcessor,\n): SubstrateHandlerKind | undefined {\n if (isRuntimeDs(ds) && isBaseHandler(handler)) {\n return handler.kind;\n } else if (isCustomDs(ds) && isCustomHandler(handler)) {\n const plugin = getDsProcessor(ds);\n const baseHandler = plugin.handlerProcessors[handler.kind]?.baseHandlerKind;\n if (!baseHandler) {\n throw new Error(\n `handler type ${handler.kind} not found in processor for ${ds.kind}`,\n );\n }\n return baseHandler;\n }\n}\n\nfunction getBaseHandlerFilters<T extends SubstrateRuntimeHandlerFilter>(\n ds: SubstrateDataSource,\n handlerKind: string,\n getDsProcessor: GetDsProcessor,\n): T[] {\n if (isCustomDs(ds)) {\n const plugin = getDsProcessor(ds);\n const processor = plugin.handlerProcessors[handlerKind];\n return processor.baseFilter instanceof Array\n ? (processor.baseFilter as T[])\n : ([processor.baseFilter] as T[]);\n } else {\n throw new Error(`Expected a custom datasource here`);\n }\n}\n\n// eslint-disable-next-line complexity\nexport function buildDictionaryV1QueryEntries(\n dataSources: SubstrateDatasource[],\n getDsProcessor: GetDsProcessor,\n): DictionaryV1QueryEntry[] {\n const queryEntries: DictionaryV1QueryEntry[] = [];\n\n for (const ds of dataSources) {\n const plugin = isCustomDs(ds) ? getDsProcessor(ds) : undefined;\n for (const handler of ds.mapping.handlers) {\n const baseHandlerKind = getBaseHandlerKind(ds, handler, getDsProcessor);\n let filterList: SubstrateRuntimeHandlerFilter[] = [];\n if (isCustomDs(ds)) {\n assert(plugin, 'plugin should be defined');\n const processor = plugin.handlerProcessors[handler.kind];\n const filter = (handler as SubstrateCustomHandler).filter;\n if (processor.dictionaryQuery && filter) {\n const queryEntry = processor.dictionaryQuery(filter, ds);\n if (queryEntry) {\n queryEntries.push(queryEntry);\n continue;\n }\n }\n filterList = getBaseHandlerFilters<SubstrateRuntimeHandlerFilter>(\n ds,\n handler.kind,\n getDsProcessor,\n );\n } else if (handler.filter) {\n filterList = [handler.filter];\n }\n // Filter out any undefined\n filterList = filterList.filter(Boolean);\n if (!filterList.length) return [];\n switch (baseHandlerKind) {\n case SubstrateHandlerKind.Block:\n for (const filter of filterList as SubstrateBlockFilter[]) {\n if (filter.modulo === undefined) {\n return [];\n }\n }\n break;\n case SubstrateHandlerKind.Call: {\n for (const filter of filterList as SubstrateCallFilter[]) {\n if (\n filter.module !== undefined ||\n filter.method !== undefined ||\n filter.isSigned !== undefined ||\n filter.success !== undefined\n ) {\n queryEntries.push(callFilterToQueryEntry(filter));\n } else {\n return [];\n }\n }\n break;\n }\n case SubstrateHandlerKind.Event: {\n for (const filter of filterList as SubstrateEventFilter[]) {\n if (filter.module !== undefined || filter.method !== undefined) {\n queryEntries.push(eventFilterToQueryEntry(filter));\n } else {\n return [];\n }\n }\n break;\n }\n default: {\n throw new Error(`Unsupported handler kind: ${baseHandlerKind}`);\n }\n }\n }\n }\n\n return uniqBy(\n queryEntries,\n (item) =>\n `${item.entity}|${JSON.stringify(\n sortBy(item.conditions, (c) => c.field),\n )}`,\n );\n}\n\nconst logger = getLogger('substrate-dictionary-V1');\n\nexport class SubstrateDictionaryV1 extends DictionaryV1<SubstrateDataSource> {\n constructor(\n project: SubqueryProject,\n nodeConfig: NodeConfig,\n protected getDsProcessor: GetDsProcessor,\n dictionaryUrl: string,\n chainId?: string,\n ) {\n super(dictionaryUrl, chainId ?? project.network.chainId, nodeConfig);\n }\n\n static async create(\n project: SubqueryProject,\n nodeConfig: NodeConfig,\n getDsProcessor: GetDsProcessor,\n dictionaryUrl: string,\n chainId?: string,\n ): Promise<SubstrateDictionaryV1> {\n const dictionary = new SubstrateDictionaryV1(\n project,\n nodeConfig,\n getDsProcessor,\n dictionaryUrl,\n chainId,\n );\n await dictionary.init();\n return dictionary;\n }\n\n buildDictionaryQueryEntries(\n dataSources: SubstrateDataSource[],\n ): DictionaryV1QueryEntry[] {\n return buildDictionaryV1QueryEntries(dataSources, this.getDsProcessor);\n }\n\n parseSpecVersions(raw?: SpecVersionDictionary): SpecVersion[] {\n if (raw === undefined) {\n return [];\n }\n const specVersionBlockHeightSet = new Set<SpecVersion>();\n const specVersions = (raw.specVersions as any).nodes;\n const _metadata = raw._metadata;\n\n // Add range for -1 specVersions\n for (let i = 0; i < specVersions.length - 1; i++) {\n specVersionBlockHeightSet.add({\n id: specVersions[i].id,\n start: Number(specVersions[i].blockHeight),\n end: Number(specVersions[i + 1].blockHeight) - 1,\n });\n }\n if (specVersions && specVersions.length >= 0) {\n // Add range for the last specVersion\n if (_metadata.lastProcessedHeight) {\n specVersionBlockHeightSet.add({\n id: specVersions[specVersions.length - 1].id,\n start: Number(specVersions[specVersions.length - 1].blockHeight),\n end: Number(_metadata.lastProcessedHeight),\n });\n }\n }\n return Array.from(specVersionBlockHeightSet);\n }\n\n async getSpecVersionsRaw(): Promise<SpecVersionDictionary | undefined> {\n const { query } = this.specVersionQuery();\n try {\n const resp = await timeout(\n this.client.query({\n query: gql(query),\n }),\n this.nodeConfig.dictionaryTimeout,\n );\n\n const _metadata = resp.data._metadata;\n const specVersions = resp.data.specVersions;\n return { _metadata, specVersions };\n } catch (err: any) {\n logger.warn(err, `failed to fetch specVersion result`);\n return undefined;\n }\n }\n\n async getSpecVersions(): Promise<SpecVersion[] | undefined> {\n try {\n return this.parseSpecVersions(await this.getSpecVersionsRaw());\n } catch {\n return undefined;\n }\n }\n\n private specVersionQuery(): GqlQuery {\n const nodes: GqlNode[] = [\n {\n entity: '_metadata',\n project: ['lastProcessedHeight', 'genesisHash'],\n },\n {\n entity: 'specVersions',\n project: [\n {\n entity: 'nodes',\n project: ['id', 'blockHeight'],\n },\n ],\n args: {\n orderBy: 'BLOCK_HEIGHT_ASC',\n },\n },\n ];\n return buildQuery([], nodes);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"substrateDictionaryV1.js","sourceRoot":"","sources":["../../../../src/indexer/dictionary/v1/substrateDictionaryV1.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 { gql } from '@apollo/client/core';\nimport {\n isCustomDs,\n isRuntimeDs,\n SubstrateCallFilter,\n SubstrateCustomHandler,\n SubstrateDataSource,\n SubstrateEventFilter,\n SubstrateHandler,\n SubstrateHandlerKind,\n SubstrateRuntimeHandlerFilter,\n} from '@subql/common-substrate';\nimport {\n NodeConfig,\n DictionaryV1,\n timeout,\n getLogger,\n DsProcessorService,\n} from '@subql/node-core';\nimport { SubstrateBlockFilter, SubstrateDatasource } from '@subql/types';\nimport {\n DictionaryQueryCondition,\n DictionaryQueryEntry as DictionaryV1QueryEntry,\n} from '@subql/types-core';\nimport { buildQuery, GqlNode, GqlQuery } from '@subql/utils';\nimport { sortBy, uniqBy } from 'lodash';\nimport { SubqueryProject } from '../../../configure/SubqueryProject';\nimport { isBaseHandler, isCustomHandler } from '../../../utils/project';\nimport { SpecVersion, SpecVersionDictionary } from '../types';\n\ntype GetDsProcessor = DsProcessorService['getDsProcessor'];\n\nfunction eventFilterToQueryEntry(\n filter: SubstrateEventFilter,\n): DictionaryV1QueryEntry {\n const conditions: DictionaryQueryCondition[] = [];\n if (filter.method) {\n conditions.push({ field: 'event', value: filter.method });\n }\n if (filter.module) {\n conditions.push({ field: 'module', value: filter.module });\n }\n return {\n entity: 'events',\n conditions,\n };\n}\n\nfunction callFilterToQueryEntry(\n filter: SubstrateCallFilter,\n): DictionaryV1QueryEntry {\n return {\n entity: 'extrinsics',\n conditions: Object.keys(filter)\n .map(\n (key) =>\n ({\n field: key === 'method' ? 'call' : key,\n value: filter[key as keyof SubstrateCallFilter],\n }) as DictionaryQueryCondition,\n )\n .filter((c) => c.value !== undefined),\n };\n}\n\nfunction getBaseHandlerKind(\n ds: SubstrateDataSource,\n handler: SubstrateHandler,\n getDsProcessor: GetDsProcessor,\n): SubstrateHandlerKind | undefined {\n if (isRuntimeDs(ds) && isBaseHandler(handler)) {\n return handler.kind;\n } else if (isCustomDs(ds) && isCustomHandler(handler)) {\n const plugin = getDsProcessor(ds);\n const baseHandler = plugin.handlerProcessors[handler.kind]?.baseHandlerKind;\n if (!baseHandler) {\n throw new Error(\n `handler type ${handler.kind} not found in processor for ${ds.kind}`,\n );\n }\n return baseHandler;\n }\n}\n\nfunction getBaseHandlerFilters<T extends SubstrateRuntimeHandlerFilter>(\n ds: SubstrateDataSource,\n handlerKind: string,\n getDsProcessor: GetDsProcessor,\n): T[] {\n if (isCustomDs(ds)) {\n const plugin = getDsProcessor(ds);\n const processor = plugin.handlerProcessors[handlerKind];\n return processor.baseFilter instanceof Array\n ? (processor.baseFilter as T[])\n : ([processor.baseFilter] as T[]);\n } else {\n throw new Error(`Expected a custom datasource here`);\n }\n}\n\n// eslint-disable-next-line complexity\nexport function buildDictionaryV1QueryEntries(\n dataSources: SubstrateDatasource[],\n getDsProcessor: GetDsProcessor,\n): DictionaryV1QueryEntry[] {\n const queryEntries: DictionaryV1QueryEntry[] = [];\n\n for (const ds of dataSources) {\n const plugin = isCustomDs(ds) ? getDsProcessor(ds) : undefined;\n for (const handler of ds.mapping.handlers) {\n const baseHandlerKind = getBaseHandlerKind(ds, handler, getDsProcessor);\n let filterList: SubstrateRuntimeHandlerFilter[] = [];\n if (isCustomDs(ds)) {\n assert(plugin, 'plugin should be defined');\n const processor = plugin.handlerProcessors[handler.kind];\n const filter = (handler as SubstrateCustomHandler).filter;\n if (processor.dictionaryQuery && filter) {\n const queryEntry = processor.dictionaryQuery(filter, ds);\n if (queryEntry) {\n queryEntries.push(queryEntry);\n continue;\n }\n }\n filterList = getBaseHandlerFilters<SubstrateRuntimeHandlerFilter>(\n ds,\n handler.kind,\n getDsProcessor,\n );\n } else if (handler.filter) {\n filterList = [handler.filter];\n }\n // Filter out any undefined\n filterList = filterList.filter(Boolean);\n if (!filterList.length) return [];\n switch (baseHandlerKind) {\n case SubstrateHandlerKind.Block:\n for (const filter of filterList as SubstrateBlockFilter[]) {\n if (filter.modulo === undefined) {\n return [];\n }\n }\n break;\n case SubstrateHandlerKind.Call: {\n for (const filter of filterList as SubstrateCallFilter[]) {\n if (\n filter.module !== undefined ||\n filter.method !== undefined ||\n filter.isSigned !== undefined ||\n filter.success !== undefined\n ) {\n queryEntries.push(callFilterToQueryEntry(filter));\n } else {\n return [];\n }\n }\n break;\n }\n case SubstrateHandlerKind.Event: {\n for (const filter of filterList as SubstrateEventFilter[]) {\n if (filter.module !== undefined || filter.method !== undefined) {\n queryEntries.push(eventFilterToQueryEntry(filter));\n } else {\n return [];\n }\n }\n break;\n }\n default: {\n throw new Error(`Unsupported handler kind: ${baseHandlerKind}`);\n }\n }\n }\n }\n\n return uniqBy(\n queryEntries,\n (item) =>\n `${item.entity}|${JSON.stringify(sortBy(item.conditions, (c) => c.field))}`,\n );\n}\n\nconst logger = getLogger('substrate-dictionary-V1');\n\nexport class SubstrateDictionaryV1 extends DictionaryV1<SubstrateDataSource> {\n constructor(\n project: SubqueryProject,\n nodeConfig: NodeConfig,\n protected getDsProcessor: GetDsProcessor,\n dictionaryUrl: string,\n chainId?: string,\n ) {\n super(dictionaryUrl, chainId ?? project.network.chainId, nodeConfig);\n }\n\n static async create(\n project: SubqueryProject,\n nodeConfig: NodeConfig,\n getDsProcessor: GetDsProcessor,\n dictionaryUrl: string,\n chainId?: string,\n ): Promise<SubstrateDictionaryV1> {\n const dictionary = new SubstrateDictionaryV1(\n project,\n nodeConfig,\n getDsProcessor,\n dictionaryUrl,\n chainId,\n );\n await dictionary.init();\n return dictionary;\n }\n\n buildDictionaryQueryEntries(\n dataSources: SubstrateDataSource[],\n ): DictionaryV1QueryEntry[] {\n return buildDictionaryV1QueryEntries(dataSources, this.getDsProcessor);\n }\n\n parseSpecVersions(raw?: SpecVersionDictionary): SpecVersion[] {\n if (raw === undefined) {\n return [];\n }\n const specVersionBlockHeightSet = new Set<SpecVersion>();\n const specVersions = (raw.specVersions as any).nodes;\n const _metadata = raw._metadata;\n\n // Add range for -1 specVersions\n for (let i = 0; i < specVersions.length - 1; i++) {\n specVersionBlockHeightSet.add({\n id: specVersions[i].id,\n start: Number(specVersions[i].blockHeight),\n end: Number(specVersions[i + 1].blockHeight) - 1,\n });\n }\n if (specVersions && specVersions.length >= 0) {\n // Add range for the last specVersion\n if (_metadata.lastProcessedHeight) {\n specVersionBlockHeightSet.add({\n id: specVersions[specVersions.length - 1].id,\n start: Number(specVersions[specVersions.length - 1].blockHeight),\n end: Number(_metadata.lastProcessedHeight),\n });\n }\n }\n return Array.from(specVersionBlockHeightSet);\n }\n\n async getSpecVersionsRaw(): Promise<SpecVersionDictionary | undefined> {\n const { query } = this.specVersionQuery();\n try {\n const resp = await timeout(\n this.client.query({\n query: gql(query),\n }),\n this.nodeConfig.dictionaryTimeout,\n );\n\n const _metadata = resp.data._metadata;\n const specVersions = resp.data.specVersions;\n return { _metadata, specVersions };\n } catch (err: any) {\n logger.warn(err, `failed to fetch specVersion result`);\n return undefined;\n }\n }\n\n async getSpecVersions(): Promise<SpecVersion[] | undefined> {\n try {\n return this.parseSpecVersions(await this.getSpecVersionsRaw());\n } catch {\n return undefined;\n }\n }\n\n private specVersionQuery(): GqlQuery {\n const nodes: GqlNode[] = [\n {\n entity: '_metadata',\n project: ['lastProcessedHeight', 'genesisHash'],\n },\n {\n entity: 'specVersions',\n project: [\n {\n entity: 'nodes',\n project: ['id', 'blockHeight'],\n },\n ],\n args: {\n orderBy: 'BLOCK_HEIGHT_ASC',\n },\n },\n ];\n return buildQuery([], nodes);\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@subql/node",
|
|
3
|
-
"version": "6.3.
|
|
3
|
+
"version": "6.3.4",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "Ian He",
|
|
6
6
|
"license": "GPL-3.0",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"@nestjs/schedule": "^5.0.1",
|
|
27
27
|
"@polkadot/api": "^16.4.1",
|
|
28
28
|
"@subql/common-substrate": "~4.5.2",
|
|
29
|
-
"@subql/node-core": "~18.3.
|
|
29
|
+
"@subql/node-core": "~18.3.3",
|
|
30
30
|
"@subql/types": "~3.14.1",
|
|
31
31
|
"@subql/utils": "~2.21.1",
|
|
32
32
|
"fetch-h2": "3.0.2",
|