@subql/node 6.4.1-0 → 6.4.4-0

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 (123) hide show
  1. package/CHANGELOG.md +13 -1
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/app.module.d.ts +2 -0
  4. package/dist/app.module.js +42 -0
  5. package/dist/app.module.js.map +1 -0
  6. package/dist/blockchain.service.d.ts +31 -0
  7. package/dist/blockchain.service.js +146 -0
  8. package/dist/blockchain.service.js.map +1 -0
  9. package/dist/configure/NodeConfig.d.ts +19 -0
  10. package/dist/configure/NodeConfig.js +28 -0
  11. package/dist/configure/NodeConfig.js.map +1 -0
  12. package/dist/configure/SubqueryProject.d.ts +13 -0
  13. package/dist/configure/SubqueryProject.js +29 -0
  14. package/dist/configure/SubqueryProject.js.map +1 -0
  15. package/dist/configure/configure.module.d.ts +11 -0
  16. package/dist/configure/configure.module.js +63 -0
  17. package/dist/configure/configure.module.js.map +1 -0
  18. package/dist/indexer/api.service.d.ts +36 -0
  19. package/dist/indexer/api.service.js +315 -0
  20. package/dist/indexer/api.service.js.map +1 -0
  21. package/dist/indexer/apiPromise.connection.d.ts +24 -0
  22. package/dist/indexer/apiPromise.connection.js +106 -0
  23. package/dist/indexer/apiPromise.connection.js.map +1 -0
  24. package/dist/indexer/dictionary/index.d.ts +2 -0
  25. package/dist/indexer/dictionary/index.js +21 -0
  26. package/dist/indexer/dictionary/index.js.map +1 -0
  27. package/dist/indexer/dictionary/substrateDictionary.service.d.ts +13 -0
  28. package/dist/indexer/dictionary/substrateDictionary.service.js +93 -0
  29. package/dist/indexer/dictionary/substrateDictionary.service.js.map +1 -0
  30. package/dist/indexer/dictionary/types.d.ts +10 -0
  31. package/dist/indexer/dictionary/types.js +5 -0
  32. package/dist/indexer/dictionary/types.js.map +1 -0
  33. package/dist/indexer/dictionary/v1/index.d.ts +1 -0
  34. package/dist/indexer/dictionary/v1/index.js +20 -0
  35. package/dist/indexer/dictionary/v1/index.js.map +1 -0
  36. package/dist/indexer/dictionary/v1/substrateDictionaryV1.d.ts +19 -0
  37. package/dist/indexer/dictionary/v1/substrateDictionaryV1.js +223 -0
  38. package/dist/indexer/dictionary/v1/substrateDictionaryV1.js.map +1 -0
  39. package/dist/indexer/dictionary/v2/index.d.ts +2 -0
  40. package/dist/indexer/dictionary/v2/index.js +21 -0
  41. package/dist/indexer/dictionary/v2/index.js.map +1 -0
  42. package/dist/indexer/dictionary/v2/substrateDictionaryV2.d.ts +20 -0
  43. package/dist/indexer/dictionary/v2/substrateDictionaryV2.js +46 -0
  44. package/dist/indexer/dictionary/v2/substrateDictionaryV2.js.map +1 -0
  45. package/dist/indexer/dictionary/v2/types.d.ts +5 -0
  46. package/dist/indexer/dictionary/v2/types.js +5 -0
  47. package/dist/indexer/dictionary/v2/types.js.map +1 -0
  48. package/dist/indexer/fetch.module.d.ts +2 -0
  49. package/dist/indexer/fetch.module.js +94 -0
  50. package/dist/indexer/fetch.module.js.map +1 -0
  51. package/dist/indexer/indexer.manager.d.ts +27 -0
  52. package/dist/indexer/indexer.manager.js +153 -0
  53. package/dist/indexer/indexer.manager.js.map +1 -0
  54. package/dist/indexer/runtime/base-runtime.service.d.ts +24 -0
  55. package/dist/indexer/runtime/base-runtime.service.js +136 -0
  56. package/dist/indexer/runtime/base-runtime.service.js.map +1 -0
  57. package/dist/indexer/runtime/runtimeService.d.ts +15 -0
  58. package/dist/indexer/runtime/runtimeService.js +94 -0
  59. package/dist/indexer/runtime/runtimeService.js.map +1 -0
  60. package/dist/indexer/runtime/workerRuntimeService.d.ts +9 -0
  61. package/dist/indexer/runtime/workerRuntimeService.js +43 -0
  62. package/dist/indexer/runtime/workerRuntimeService.js.map +1 -0
  63. package/dist/indexer/types.d.ts +20 -0
  64. package/dist/indexer/types.js +13 -0
  65. package/dist/indexer/types.js.map +1 -0
  66. package/dist/indexer/worker/worker-fetch.module.d.ts +5 -0
  67. package/dist/indexer/worker/worker-fetch.module.js +60 -0
  68. package/dist/indexer/worker/worker-fetch.module.js.map +1 -0
  69. package/dist/indexer/worker/worker.d.ts +9 -0
  70. package/dist/indexer/worker/worker.js +48 -0
  71. package/dist/indexer/worker/worker.js.map +1 -0
  72. package/dist/indexer/worker/worker.module.d.ts +2 -0
  73. package/dist/indexer/worker/worker.module.js +33 -0
  74. package/dist/indexer/worker/worker.module.js.map +1 -0
  75. package/dist/indexer/worker/worker.service.d.ts +26 -0
  76. package/dist/indexer/worker/worker.service.js +71 -0
  77. package/dist/indexer/worker/worker.service.js.map +1 -0
  78. package/dist/indexer/x-provider/cachedProvider.d.ts +2 -0
  79. package/dist/indexer/x-provider/cachedProvider.js +40 -0
  80. package/dist/indexer/x-provider/cachedProvider.js.map +1 -0
  81. package/dist/indexer/x-provider/http.d.ts +75 -0
  82. package/dist/indexer/x-provider/http.js +198 -0
  83. package/dist/indexer/x-provider/http.js.map +1 -0
  84. package/dist/init.d.ts +1 -0
  85. package/dist/init.js +41 -0
  86. package/dist/init.js.map +1 -0
  87. package/dist/main.d.ts +1 -0
  88. package/dist/main.js +19 -0
  89. package/dist/main.js.map +1 -0
  90. package/dist/subcommands/forceClean.init.d.ts +1 -0
  91. package/dist/subcommands/forceClean.init.js +10 -0
  92. package/dist/subcommands/forceClean.init.js.map +1 -0
  93. package/dist/subcommands/forceClean.module.d.ts +2 -0
  94. package/dist/subcommands/forceClean.module.js +28 -0
  95. package/dist/subcommands/forceClean.module.js.map +1 -0
  96. package/dist/subcommands/reindex.init.d.ts +3 -0
  97. package/dist/subcommands/reindex.init.js +33 -0
  98. package/dist/subcommands/reindex.init.js.map +1 -0
  99. package/dist/subcommands/reindex.module.d.ts +2 -0
  100. package/dist/subcommands/reindex.module.js +69 -0
  101. package/dist/subcommands/reindex.module.js.map +1 -0
  102. package/dist/subcommands/testing.init.d.ts +1 -0
  103. package/dist/subcommands/testing.init.js +21 -0
  104. package/dist/subcommands/testing.init.js.map +1 -0
  105. package/dist/subcommands/testing.module.d.ts +2 -0
  106. package/dist/subcommands/testing.module.js +65 -0
  107. package/dist/subcommands/testing.module.js.map +1 -0
  108. package/dist/subcommands/testing.service.d.ts +14 -0
  109. package/dist/subcommands/testing.service.js +60 -0
  110. package/dist/subcommands/testing.service.js.map +1 -0
  111. package/dist/utils/project.d.ts +9 -0
  112. package/dist/utils/project.js +116 -0
  113. package/dist/utils/project.js.map +1 -0
  114. package/dist/utils/substrate.d.ts +41 -0
  115. package/dist/utils/substrate.js +348 -0
  116. package/dist/utils/substrate.js.map +1 -0
  117. package/dist/utils/test.utils.d.ts +2 -0
  118. package/dist/utils/test.utils.js +70 -0
  119. package/dist/utils/test.utils.js.map +1 -0
  120. package/dist/yargs.d.ts +276 -0
  121. package/dist/yargs.js +27 -0
  122. package/dist/yargs.js.map +1 -0
  123. package/package.json +5 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"substrateDictionary.service.js","sourceRoot":"","sources":["../../../src/indexer/dictionary/substrateDictionary.service.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 { Inject, Injectable } from '@nestjs/common';\nimport { EventEmitter2 } from '@nestjs/event-emitter';\nimport { NETWORK_FAMILY } from '@subql/common';\nimport {\n NodeConfig,\n DictionaryService,\n getLogger,\n DsProcessorService,\n} from '@subql/node-core';\nimport { SubstrateBlock, SubstrateDatasource } from '@subql/types';\nimport { SubqueryProject } from '../../configure/SubqueryProject';\nimport { SpecVersion } from './types';\nimport { SubstrateDictionaryV1 } from './v1';\nimport { SubstrateDictionaryV2 } from './v2';\n\nconst logger = getLogger('SubstrateDictionary');\n\n@Injectable()\nexport class SubstrateDictionaryService extends DictionaryService<\n SubstrateDatasource,\n SubstrateBlock\n> {\n async initDictionaries(): Promise<void> {\n const dictionariesV1: SubstrateDictionaryV1[] = [];\n const dictionariesV2: SubstrateDictionaryV2[] = [];\n\n if (!this.project) {\n throw new Error(`Project in Dictionary service not initialized `);\n }\n const registryDictionaries = await this.resolveDictionary(\n NETWORK_FAMILY.substrate,\n this.project.network.chainId,\n this.nodeConfig.dictionaryRegistry,\n );\n\n logger.debug(`Dictionary registry endpoints: ${registryDictionaries}`);\n\n const dictionaryEndpoints: string[] = (\n !Array.isArray(this.project.network.dictionary)\n ? !this.project.network.dictionary\n ? []\n : [this.project.network.dictionary]\n : this.project.network.dictionary\n ).concat(registryDictionaries);\n\n for (const endpoint of dictionaryEndpoints) {\n try {\n const dictionaryV2 = await SubstrateDictionaryV2.create(\n endpoint,\n this.nodeConfig,\n this.project,\n this.project.network.chainId,\n );\n dictionariesV2.push(dictionaryV2);\n } catch (e) {\n try {\n const dictionaryV1 = await SubstrateDictionaryV1.create(\n this.project,\n this.nodeConfig,\n this.dsProcessorService.getDsProcessor.bind(\n this.dsProcessorService,\n ),\n endpoint,\n );\n dictionariesV1.push(dictionaryV1);\n } catch (e) {\n logger.warn(\n `Dictionary endpoint \"${endpoint}\" is not a valid dictionary`,\n );\n }\n }\n }\n\n // v2 should be prioritised\n this.init([...dictionariesV2, ...dictionariesV1]);\n }\n\n constructor(\n @Inject('ISubqueryProject') protected project: SubqueryProject,\n nodeConfig: NodeConfig,\n eventEmitter: EventEmitter2,\n protected dsProcessorService: DsProcessorService,\n ) {\n super(project.network.chainId, nodeConfig, eventEmitter);\n }\n\n private getV1Dictionary(): SubstrateDictionaryV1 | undefined {\n // TODO this needs to be removed once Substrate supports V2 dictionaries\n if (this._currentDictionaryIndex === undefined) return undefined;\n const dict = this._dictionaries[this._currentDictionaryIndex];\n if (!dict) return undefined;\n assert(\n dict instanceof SubstrateDictionaryV1,\n `Getting v1 dict returned a dictinoary that wasn't v1`,\n );\n return dict;\n }\n\n async getSpecVersions(): Promise<SpecVersion[] | undefined> {\n const dict = this.getV1Dictionary();\n if (!dict) return undefined;\n return dict.getSpecVersions();\n }\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import { MetaData } from '@subql/utils';
2
+ export type SpecVersion = {
3
+ id: string;
4
+ start: number;
5
+ end: number | null;
6
+ };
7
+ export type SpecVersionDictionary = {
8
+ _metadata: MetaData;
9
+ specVersions: SpecVersion[];
10
+ };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
3
+ // SPDX-License-Identifier: GPL-3.0
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/indexer/dictionary/types.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { MetaData } from '@subql/utils';\n\nexport type SpecVersion = {\n id: string;\n start: number; //start with this block\n end: number | null;\n};\n\nexport type SpecVersionDictionary = {\n _metadata: MetaData;\n specVersions: SpecVersion[];\n};\n"]}
@@ -0,0 +1 @@
1
+ export * from './substrateDictionaryV1';
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
3
+ // SPDX-License-Identifier: GPL-3.0
4
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
+ if (k2 === undefined) k2 = k;
6
+ var desc = Object.getOwnPropertyDescriptor(m, k);
7
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8
+ desc = { enumerable: true, get: function() { return m[k]; } };
9
+ }
10
+ Object.defineProperty(o, k2, desc);
11
+ }) : (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ o[k2] = m[k];
14
+ }));
15
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
17
+ };
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ __exportStar(require("./substrateDictionaryV1"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/indexer/dictionary/v1/index.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;;AAEnC,0DAAwC","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nexport * from './substrateDictionaryV1';\n"]}
@@ -0,0 +1,19 @@
1
+ import { SubstrateDataSource } from '@subql/common-substrate';
2
+ import { NodeConfig, DictionaryV1, DsProcessorService } from '@subql/node-core';
3
+ import { SubstrateDatasource } from '@subql/types';
4
+ import { DictionaryQueryEntry as DictionaryV1QueryEntry } from '@subql/types-core';
5
+ import { SubqueryProject } from '../../../configure/SubqueryProject';
6
+ import { SpecVersion, SpecVersionDictionary } from '../types';
7
+ type GetDsProcessor = DsProcessorService['getDsProcessor'];
8
+ export declare function buildDictionaryV1QueryEntries(dataSources: SubstrateDatasource[], getDsProcessor: GetDsProcessor): DictionaryV1QueryEntry[];
9
+ export declare class SubstrateDictionaryV1 extends DictionaryV1<SubstrateDataSource> {
10
+ protected getDsProcessor: GetDsProcessor;
11
+ constructor(project: SubqueryProject, nodeConfig: NodeConfig, getDsProcessor: GetDsProcessor, dictionaryUrl: string, chainId?: string);
12
+ static create(project: SubqueryProject, nodeConfig: NodeConfig, getDsProcessor: GetDsProcessor, dictionaryUrl: string, chainId?: string): Promise<SubstrateDictionaryV1>;
13
+ buildDictionaryQueryEntries(dataSources: SubstrateDataSource[]): DictionaryV1QueryEntry[];
14
+ parseSpecVersions(raw?: SpecVersionDictionary): SpecVersion[];
15
+ getSpecVersionsRaw(): Promise<SpecVersionDictionary | undefined>;
16
+ getSpecVersions(): Promise<SpecVersion[] | undefined>;
17
+ private specVersionQuery;
18
+ }
19
+ export {};
@@ -0,0 +1,223 @@
1
+ "use strict";
2
+ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
3
+ // SPDX-License-Identifier: GPL-3.0
4
+ var __importDefault = (this && this.__importDefault) || function (mod) {
5
+ return (mod && mod.__esModule) ? mod : { "default": mod };
6
+ };
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.SubstrateDictionaryV1 = void 0;
9
+ exports.buildDictionaryV1QueryEntries = buildDictionaryV1QueryEntries;
10
+ const assert_1 = __importDefault(require("assert"));
11
+ const core_1 = require("@apollo/client/core");
12
+ const common_substrate_1 = require("@subql/common-substrate");
13
+ const node_core_1 = require("@subql/node-core");
14
+ const utils_1 = require("@subql/utils");
15
+ const lodash_1 = require("lodash");
16
+ const project_1 = require("../../../utils/project");
17
+ function eventFilterToQueryEntry(filter) {
18
+ const conditions = [];
19
+ if (filter.method) {
20
+ conditions.push({ field: 'event', value: filter.method });
21
+ }
22
+ if (filter.module) {
23
+ conditions.push({ field: 'module', value: filter.module });
24
+ }
25
+ return {
26
+ entity: 'events',
27
+ conditions,
28
+ };
29
+ }
30
+ function callFilterToQueryEntry(filter) {
31
+ return {
32
+ entity: 'extrinsics',
33
+ conditions: Object.keys(filter)
34
+ .map((key) => ({
35
+ field: key === 'method' ? 'call' : key,
36
+ value: filter[key],
37
+ }))
38
+ .filter((c) => c.value !== undefined),
39
+ };
40
+ }
41
+ function getBaseHandlerKind(ds, handler, getDsProcessor) {
42
+ if ((0, common_substrate_1.isRuntimeDs)(ds) && (0, project_1.isBaseHandler)(handler)) {
43
+ return handler.kind;
44
+ }
45
+ else if ((0, common_substrate_1.isCustomDs)(ds) && (0, project_1.isCustomHandler)(handler)) {
46
+ const plugin = getDsProcessor(ds);
47
+ const baseHandler = plugin.handlerProcessors[handler.kind]?.baseHandlerKind;
48
+ if (!baseHandler) {
49
+ throw new Error(`handler type ${handler.kind} not found in processor for ${ds.kind}`);
50
+ }
51
+ return baseHandler;
52
+ }
53
+ }
54
+ function getBaseHandlerFilters(ds, handlerKind, getDsProcessor) {
55
+ if ((0, common_substrate_1.isCustomDs)(ds)) {
56
+ const plugin = getDsProcessor(ds);
57
+ const processor = plugin.handlerProcessors[handlerKind];
58
+ return processor.baseFilter instanceof Array
59
+ ? processor.baseFilter
60
+ : [processor.baseFilter];
61
+ }
62
+ else {
63
+ throw new Error(`Expected a custom datasource here`);
64
+ }
65
+ }
66
+ // eslint-disable-next-line complexity
67
+ function buildDictionaryV1QueryEntries(dataSources, getDsProcessor) {
68
+ const queryEntries = [];
69
+ for (const ds of dataSources) {
70
+ const plugin = (0, common_substrate_1.isCustomDs)(ds) ? getDsProcessor(ds) : undefined;
71
+ for (const handler of ds.mapping.handlers) {
72
+ const baseHandlerKind = getBaseHandlerKind(ds, handler, getDsProcessor);
73
+ let filterList = [];
74
+ if ((0, common_substrate_1.isCustomDs)(ds)) {
75
+ (0, assert_1.default)(plugin, 'plugin should be defined');
76
+ const processor = plugin.handlerProcessors[handler.kind];
77
+ const filter = handler.filter;
78
+ if (processor.dictionaryQuery && filter) {
79
+ const queryEntry = processor.dictionaryQuery(filter, ds);
80
+ if (queryEntry) {
81
+ queryEntries.push(queryEntry);
82
+ continue;
83
+ }
84
+ }
85
+ filterList = getBaseHandlerFilters(ds, handler.kind, getDsProcessor);
86
+ }
87
+ else if (handler.filter) {
88
+ filterList = [handler.filter];
89
+ }
90
+ // Filter out any undefined
91
+ filterList = filterList.filter(Boolean);
92
+ if (!filterList.length)
93
+ return [];
94
+ switch (baseHandlerKind) {
95
+ case common_substrate_1.SubstrateHandlerKind.Block:
96
+ for (const filter of filterList) {
97
+ if (filter.modulo === undefined) {
98
+ return [];
99
+ }
100
+ }
101
+ break;
102
+ case common_substrate_1.SubstrateHandlerKind.Call: {
103
+ for (const filter of filterList) {
104
+ if (filter.module !== undefined ||
105
+ filter.method !== undefined ||
106
+ filter.isSigned !== undefined ||
107
+ filter.success !== undefined) {
108
+ queryEntries.push(callFilterToQueryEntry(filter));
109
+ }
110
+ else {
111
+ return [];
112
+ }
113
+ }
114
+ break;
115
+ }
116
+ case common_substrate_1.SubstrateHandlerKind.Event: {
117
+ for (const filter of filterList) {
118
+ if (filter.module !== undefined || filter.method !== undefined) {
119
+ queryEntries.push(eventFilterToQueryEntry(filter));
120
+ }
121
+ else {
122
+ return [];
123
+ }
124
+ }
125
+ break;
126
+ }
127
+ default: {
128
+ throw new Error(`Unsupported handler kind: ${baseHandlerKind}`);
129
+ }
130
+ }
131
+ }
132
+ }
133
+ return (0, lodash_1.uniqBy)(queryEntries, (item) => `${item.entity}|${JSON.stringify((0, lodash_1.sortBy)(item.conditions, (c) => c.field))}`);
134
+ }
135
+ const logger = (0, node_core_1.getLogger)('substrate-dictionary-V1');
136
+ class SubstrateDictionaryV1 extends node_core_1.DictionaryV1 {
137
+ getDsProcessor;
138
+ constructor(project, nodeConfig, getDsProcessor, dictionaryUrl, chainId) {
139
+ super(dictionaryUrl, chainId ?? project.network.chainId, nodeConfig);
140
+ this.getDsProcessor = getDsProcessor;
141
+ }
142
+ static async create(project, nodeConfig, getDsProcessor, dictionaryUrl, chainId) {
143
+ const dictionary = new SubstrateDictionaryV1(project, nodeConfig, getDsProcessor, dictionaryUrl, chainId);
144
+ await dictionary.init();
145
+ return dictionary;
146
+ }
147
+ buildDictionaryQueryEntries(dataSources) {
148
+ return buildDictionaryV1QueryEntries(dataSources, this.getDsProcessor);
149
+ }
150
+ parseSpecVersions(raw) {
151
+ if (raw === undefined) {
152
+ return [];
153
+ }
154
+ const specVersionBlockHeightSet = new Set();
155
+ const specVersions = raw.specVersions.nodes;
156
+ const _metadata = raw._metadata;
157
+ // Add range for -1 specVersions
158
+ for (let i = 0; i < specVersions.length - 1; i++) {
159
+ specVersionBlockHeightSet.add({
160
+ id: specVersions[i].id,
161
+ start: Number(specVersions[i].blockHeight),
162
+ end: Number(specVersions[i + 1].blockHeight) - 1,
163
+ });
164
+ }
165
+ if (specVersions && specVersions.length >= 0) {
166
+ // Add range for the last specVersion
167
+ if (_metadata.lastProcessedHeight) {
168
+ specVersionBlockHeightSet.add({
169
+ id: specVersions[specVersions.length - 1].id,
170
+ start: Number(specVersions[specVersions.length - 1].blockHeight),
171
+ end: Number(_metadata.lastProcessedHeight),
172
+ });
173
+ }
174
+ }
175
+ return Array.from(specVersionBlockHeightSet);
176
+ }
177
+ async getSpecVersionsRaw() {
178
+ const { query } = this.specVersionQuery();
179
+ try {
180
+ const resp = await (0, node_core_1.timeout)(this.client.query({
181
+ query: (0, core_1.gql)(query),
182
+ }), this.nodeConfig.dictionaryTimeout);
183
+ const _metadata = resp.data._metadata;
184
+ const specVersions = resp.data.specVersions;
185
+ return { _metadata, specVersions };
186
+ }
187
+ catch (err) {
188
+ logger.warn(err, `failed to fetch specVersion result`);
189
+ return undefined;
190
+ }
191
+ }
192
+ async getSpecVersions() {
193
+ try {
194
+ return this.parseSpecVersions(await this.getSpecVersionsRaw());
195
+ }
196
+ catch {
197
+ return undefined;
198
+ }
199
+ }
200
+ specVersionQuery() {
201
+ const nodes = [
202
+ {
203
+ entity: '_metadata',
204
+ project: ['lastProcessedHeight', 'genesisHash'],
205
+ },
206
+ {
207
+ entity: 'specVersions',
208
+ project: [
209
+ {
210
+ entity: 'nodes',
211
+ project: ['id', 'blockHeight'],
212
+ },
213
+ ],
214
+ args: {
215
+ orderBy: 'BLOCK_HEIGHT_ASC',
216
+ },
217
+ },
218
+ ];
219
+ return (0, utils_1.buildQuery)([], nodes);
220
+ }
221
+ }
222
+ exports.SubstrateDictionaryV1 = SubstrateDictionaryV1;
223
+ //# sourceMappingURL=substrateDictionaryV1.js.map
@@ -0,0 +1 @@
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"]}
@@ -0,0 +1,2 @@
1
+ export * from './substrateDictionaryV2';
2
+ export * from './types';
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
3
+ // SPDX-License-Identifier: GPL-3.0
4
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
+ if (k2 === undefined) k2 = k;
6
+ var desc = Object.getOwnPropertyDescriptor(m, k);
7
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8
+ desc = { enumerable: true, get: function() { return m[k]; } };
9
+ }
10
+ Object.defineProperty(o, k2, desc);
11
+ }) : (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ o[k2] = m[k];
14
+ }));
15
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
17
+ };
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ __exportStar(require("./substrateDictionaryV2"), exports);
20
+ __exportStar(require("./types"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/indexer/dictionary/v2/index.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;;AAEnC,0DAAwC;AACxC,0CAAwB","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nexport * from './substrateDictionaryV2';\nexport * from './types';\n"]}
@@ -0,0 +1,20 @@
1
+ import { SubstrateDataSource } from '@subql/common-substrate';
2
+ import { NodeConfig, DictionaryV2, DictionaryResponse, DictionaryV2QueryEntry, RawDictionaryResponseData, IBlock } from '@subql/node-core';
3
+ import { SubstrateBlock, SubstrateDatasource } from '@subql/types';
4
+ import { SubqueryProject } from '../../../configure/SubqueryProject';
5
+ import { SubstrateDictionaryV2QueryEntry } from './types';
6
+ export declare function buildDictionaryV2QueryEntry(dataSources: SubstrateDataSource[]): SubstrateDictionaryV2QueryEntry;
7
+ export declare class SubstrateDictionaryV2 extends DictionaryV2<SubstrateBlock, SubstrateDatasource, SubstrateDictionaryV2QueryEntry> {
8
+ protected buildDictionaryQueryEntries(dataSources: SubstrateDataSource[]): DictionaryV2QueryEntry;
9
+ constructor(endpoint: string, nodeConfig: NodeConfig, project: SubqueryProject, chainId?: string);
10
+ static create(endpoint: string, nodeConfig: NodeConfig, project: SubqueryProject, chainId?: string): Promise<SubstrateDictionaryV2>;
11
+ /**
12
+ *
13
+ * @param startBlock
14
+ * @param queryEndBlock this block number will limit the max query range, increase dictionary query speed
15
+ * @param batchSize
16
+ * @param conditions
17
+ */
18
+ getData(startBlock: number, queryEndBlock: number, limit?: number): Promise<DictionaryResponse<IBlock<SubstrateBlock> | number> | undefined>;
19
+ convertResponseBlocks(result: RawDictionaryResponseData<any>): DictionaryResponse<IBlock<SubstrateBlock>> | undefined;
20
+ }
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
3
+ // SPDX-License-Identifier: GPL-3.0
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.SubstrateDictionaryV2 = void 0;
6
+ exports.buildDictionaryV2QueryEntry = buildDictionaryV2QueryEntry;
7
+ const node_core_1 = require("@subql/node-core");
8
+ const MIN_FETCH_LIMIT = 200;
9
+ function buildDictionaryV2QueryEntry(dataSources) {
10
+ const dictionaryConditions = {
11
+ logs: [],
12
+ transactions: [],
13
+ };
14
+ //TODO
15
+ return dictionaryConditions;
16
+ }
17
+ class SubstrateDictionaryV2 extends node_core_1.DictionaryV2 {
18
+ buildDictionaryQueryEntries(dataSources) {
19
+ return buildDictionaryV2QueryEntry(dataSources);
20
+ }
21
+ constructor(endpoint, nodeConfig, project, chainId) {
22
+ super(endpoint, chainId ?? project.network.chainId, nodeConfig);
23
+ }
24
+ static async create(endpoint, nodeConfig, project, chainId) {
25
+ const dictionary = new SubstrateDictionaryV2(endpoint, nodeConfig, project, chainId);
26
+ await dictionary.init();
27
+ return dictionary;
28
+ }
29
+ /**
30
+ *
31
+ * @param startBlock
32
+ * @param queryEndBlock this block number will limit the max query range, increase dictionary query speed
33
+ * @param batchSize
34
+ * @param conditions
35
+ */
36
+ // eslint-disable-next-line @typescript-eslint/require-await
37
+ async getData(startBlock, queryEndBlock, limit = MIN_FETCH_LIMIT) {
38
+ return this.getData(startBlock, queryEndBlock, limit);
39
+ }
40
+ // TODO, complete this once substrate support v2
41
+ convertResponseBlocks(result) {
42
+ return undefined;
43
+ }
44
+ }
45
+ exports.SubstrateDictionaryV2 = SubstrateDictionaryV2;
46
+ //# sourceMappingURL=substrateDictionaryV2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"substrateDictionaryV2.js","sourceRoot":"","sources":["../../../../src/indexer/dictionary/v2/substrateDictionaryV2.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;AAkBnC,kEASC;AAxBD,gDAQ0B;AAK1B,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B,SAAgB,2BAA2B,CACzC,WAAkC;IAElC,MAAM,oBAAoB,GAAoC;QAC5D,IAAI,EAAE,EAAE;QACR,YAAY,EAAE,EAAE;KACjB,CAAC;IACF,MAAM;IACN,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED,MAAa,qBAAsB,SAAQ,wBAI1C;IACW,2BAA2B,CACnC,WAAkC;QAElC,OAAO,2BAA2B,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;IAED,YACE,QAAgB,EAChB,UAAsB,EACtB,OAAwB,EACxB,OAAgB;QAEhB,KAAK,CAAC,QAAQ,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,QAAgB,EAChB,UAAsB,EACtB,OAAwB,EACxB,OAAgB;QAEhB,MAAM,UAAU,GAAG,IAAI,qBAAqB,CAC1C,QAAQ,EACR,UAAU,EACV,OAAO,EACP,OAAO,CACR,CAAC;QACF,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;QACxB,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;;;OAMG;IACH,4DAA4D;IAC5D,KAAK,CAAC,OAAO,CACX,UAAkB,EAClB,aAAqB,EACrB,KAAK,GAAG,eAAe;QAEvB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IAED,gDAAgD;IAChD,qBAAqB,CACnB,MAAsC;QAEtC,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AA1DD,sDA0DC","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { SubstrateDataSource } from '@subql/common-substrate';\nimport {\n NodeConfig,\n DictionaryV2,\n DictionaryResponse,\n getLogger,\n DictionaryV2QueryEntry,\n RawDictionaryResponseData,\n IBlock,\n} from '@subql/node-core';\nimport { SubstrateBlock, SubstrateDatasource } from '@subql/types';\nimport { SubqueryProject } from '../../../configure/SubqueryProject';\nimport { SubstrateDictionaryV2QueryEntry } from './types';\n\nconst MIN_FETCH_LIMIT = 200;\n\nexport function buildDictionaryV2QueryEntry(\n dataSources: SubstrateDataSource[],\n): SubstrateDictionaryV2QueryEntry {\n const dictionaryConditions: SubstrateDictionaryV2QueryEntry = {\n logs: [],\n transactions: [],\n };\n //TODO\n return dictionaryConditions;\n}\n\nexport class SubstrateDictionaryV2 extends DictionaryV2<\n SubstrateBlock,\n SubstrateDatasource,\n SubstrateDictionaryV2QueryEntry\n> {\n protected buildDictionaryQueryEntries(\n dataSources: SubstrateDataSource[],\n ): DictionaryV2QueryEntry {\n return buildDictionaryV2QueryEntry(dataSources);\n }\n\n constructor(\n endpoint: string,\n nodeConfig: NodeConfig,\n project: SubqueryProject,\n chainId?: string,\n ) {\n super(endpoint, chainId ?? project.network.chainId, nodeConfig);\n }\n\n static async create(\n endpoint: string,\n nodeConfig: NodeConfig,\n project: SubqueryProject,\n chainId?: string,\n ): Promise<SubstrateDictionaryV2> {\n const dictionary = new SubstrateDictionaryV2(\n endpoint,\n nodeConfig,\n project,\n chainId,\n );\n await dictionary.init();\n return dictionary;\n }\n\n /**\n *\n * @param startBlock\n * @param queryEndBlock this block number will limit the max query range, increase dictionary query speed\n * @param batchSize\n * @param conditions\n */\n // eslint-disable-next-line @typescript-eslint/require-await\n async getData(\n startBlock: number,\n queryEndBlock: number,\n limit = MIN_FETCH_LIMIT,\n ): Promise<DictionaryResponse<IBlock<SubstrateBlock> | number> | undefined> {\n return this.getData(startBlock, queryEndBlock, limit);\n }\n\n // TODO, complete this once substrate support v2\n convertResponseBlocks(\n result: RawDictionaryResponseData<any>,\n ): DictionaryResponse<IBlock<SubstrateBlock>> | undefined {\n return undefined;\n }\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import { DictionaryV2QueryEntry } from '@subql/node-core';
2
+ /**
3
+ * Substrate Fat dictionary RPC request filter conditions
4
+ */
5
+ export type SubstrateDictionaryV2QueryEntry = DictionaryV2QueryEntry;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
3
+ // SPDX-License-Identifier: GPL-3.0
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/indexer/dictionary/v2/types.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { DictionaryV2QueryEntry } from '@subql/node-core';\n\n/**\n * Substrate Fat dictionary RPC request filter conditions\n */\nexport type SubstrateDictionaryV2QueryEntry = DictionaryV2QueryEntry;\n"]}
@@ -0,0 +1,2 @@
1
+ export declare class FetchModule {
2
+ }
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
3
+ // SPDX-License-Identifier: GPL-3.0
4
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
6
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
7
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
8
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
9
+ };
10
+ var __importDefault = (this && this.__importDefault) || function (mod) {
11
+ return (mod && mod.__esModule) ? mod : { "default": mod };
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.FetchModule = void 0;
15
+ const path_1 = __importDefault(require("path"));
16
+ const common_1 = require("@nestjs/common");
17
+ const event_emitter_1 = require("@nestjs/event-emitter");
18
+ const node_core_1 = require("@subql/node-core");
19
+ const blockchain_service_1 = require("../blockchain.service");
20
+ const api_service_1 = require("./api.service");
21
+ const substrateDictionary_service_1 = require("./dictionary/substrateDictionary.service");
22
+ const indexer_manager_1 = require("./indexer.manager");
23
+ const runtimeService_1 = require("./runtime/runtimeService");
24
+ let FetchModule = class FetchModule {
25
+ };
26
+ exports.FetchModule = FetchModule;
27
+ exports.FetchModule = FetchModule = __decorate([
28
+ (0, common_1.Module)({
29
+ imports: [node_core_1.CoreModule],
30
+ providers: [
31
+ {
32
+ provide: 'APIService',
33
+ useFactory: api_service_1.ApiService.init,
34
+ inject: [
35
+ 'ISubqueryProject',
36
+ node_core_1.ConnectionPoolService,
37
+ event_emitter_1.EventEmitter2,
38
+ node_core_1.NodeConfig,
39
+ ],
40
+ },
41
+ {
42
+ provide: 'RuntimeService',
43
+ useClass: runtimeService_1.RuntimeService,
44
+ },
45
+ {
46
+ provide: 'IBlockchainService',
47
+ useClass: blockchain_service_1.BlockchainService,
48
+ },
49
+ node_core_1.DsProcessorService,
50
+ node_core_1.DynamicDsService,
51
+ {
52
+ provide: 'IUnfinalizedBlocksService',
53
+ useClass: node_core_1.UnfinalizedBlocksService,
54
+ },
55
+ {
56
+ useClass: node_core_1.ProjectService,
57
+ provide: 'IProjectService',
58
+ },
59
+ node_core_1.MultiChainRewindService,
60
+ indexer_manager_1.IndexerManager,
61
+ {
62
+ provide: 'IBlockDispatcher',
63
+ useFactory: (0, node_core_1.blockDispatcherFactory)(path_1.default.resolve(__dirname, '../../dist/indexer/worker/worker.js'), [
64
+ 'syncRuntimeService',
65
+ 'getSpecFromMap',
66
+ ]),
67
+ inject: [
68
+ node_core_1.NodeConfig,
69
+ event_emitter_1.EventEmitter2,
70
+ 'IProjectService',
71
+ 'IProjectUpgradeService',
72
+ node_core_1.InMemoryCacheService,
73
+ node_core_1.StoreService,
74
+ 'IStoreModelProvider',
75
+ node_core_1.PoiSyncService,
76
+ 'ISubqueryProject',
77
+ node_core_1.DynamicDsService,
78
+ 'IUnfinalizedBlocksService',
79
+ node_core_1.ConnectionPoolStateManager,
80
+ 'IBlockchainService',
81
+ indexer_manager_1.IndexerManager,
82
+ node_core_1.MultiChainRewindService,
83
+ node_core_1.MonitorService,
84
+ ],
85
+ },
86
+ {
87
+ provide: node_core_1.DictionaryService,
88
+ useClass: substrateDictionary_service_1.SubstrateDictionaryService,
89
+ },
90
+ node_core_1.FetchService,
91
+ ],
92
+ })
93
+ ], FetchModule);
94
+ //# sourceMappingURL=fetch.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.module.js","sourceRoot":"","sources":["../../src/indexer/fetch.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;AAEnC,gDAAwB;AACxB,2CAAwC;AACxC,yDAAsD;AACtD,gDAiB0B;AAE1B,8DAA0D;AAC1D,+CAA2C;AAE3C,0FAAsF;AACtF,uDAAmD;AACnD,6DAA0D;AA0EnD,IAAM,WAAW,GAAjB,MAAM,WAAW;CAAG,CAAA;AAAd,kCAAW;sBAAX,WAAW;IAtEvB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,sBAAU,CAAC;QACrB,SAAS,EAAE;YACT;gBACE,OAAO,EAAE,YAAY;gBACrB,UAAU,EAAE,wBAAU,CAAC,IAAI;gBAC3B,MAAM,EAAE;oBACN,kBAAkB;oBAClB,iCAAqB;oBACrB,6BAAa;oBACb,sBAAU;iBACX;aACF;YACD;gBACE,OAAO,EAAE,gBAAgB;gBACzB,QAAQ,EAAE,+BAAc;aACzB;YACD;gBACE,OAAO,EAAE,oBAAoB;gBAC7B,QAAQ,EAAE,sCAAiB;aAC5B;YACD,8BAAkB;YAClB,4BAAgB;YAChB;gBACE,OAAO,EAAE,2BAA2B;gBACpC,QAAQ,EAAE,oCAAwB;aACnC;YACD;gBACE,QAAQ,EAAE,0BAAc;gBACxB,OAAO,EAAE,iBAAiB;aAC3B;YACD,mCAAuB;YACvB,gCAAc;YACd;gBACE,OAAO,EAAE,kBAAkB;gBAC3B,UAAU,EAAE,IAAA,kCAAsB,EAKhC,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,qCAAqC,CAAC,EAAE;oBAChE,oBAAoB;oBACpB,gBAAgB;iBACjB,CAAC;gBACF,MAAM,EAAE;oBACN,sBAAU;oBACV,6BAAa;oBACb,iBAAiB;oBACjB,wBAAwB;oBACxB,gCAAoB;oBACpB,wBAAY;oBACZ,qBAAqB;oBACrB,0BAAc;oBACd,kBAAkB;oBAClB,4BAAgB;oBAChB,2BAA2B;oBAC3B,sCAA0B;oBAC1B,oBAAoB;oBACpB,gCAAc;oBACd,mCAAuB;oBACvB,0BAAc;iBACf;aACF;YACD;gBACE,OAAO,EAAE,6BAAiB;gBAC1B,QAAQ,EAAE,wDAA0B;aACrC;YACD,wBAAY;SACb;KACF,CAAC;GACW,WAAW,CAAG","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport path from 'path';\nimport { Module } from '@nestjs/common';\nimport { EventEmitter2 } from '@nestjs/event-emitter';\nimport {\n StoreService,\n NodeConfig,\n ConnectionPoolStateManager,\n PoiSyncService,\n InMemoryCacheService,\n MonitorService,\n CoreModule,\n ConnectionPoolService,\n UnfinalizedBlocksService,\n DsProcessorService,\n ProjectService,\n DynamicDsService,\n FetchService,\n DictionaryService,\n MultiChainRewindService,\n blockDispatcherFactory,\n} from '@subql/node-core';\nimport { SubstrateDatasource } from '@subql/types';\nimport { BlockchainService } from '../blockchain.service';\nimport { ApiService } from './api.service';\nimport { ApiPromiseConnection } from './apiPromise.connection';\nimport { SubstrateDictionaryService } from './dictionary/substrateDictionary.service';\nimport { IndexerManager } from './indexer.manager';\nimport { RuntimeService } from './runtime/runtimeService';\nimport { BlockContent, LightBlockContent } from './types';\nimport { IIndexerWorker } from './worker/worker';\n\n@Module({\n imports: [CoreModule],\n providers: [\n {\n provide: 'APIService',\n useFactory: ApiService.init,\n inject: [\n 'ISubqueryProject',\n ConnectionPoolService,\n EventEmitter2,\n NodeConfig,\n ],\n },\n {\n provide: 'RuntimeService',\n useClass: RuntimeService,\n },\n {\n provide: 'IBlockchainService',\n useClass: BlockchainService,\n },\n DsProcessorService,\n DynamicDsService,\n {\n provide: 'IUnfinalizedBlocksService',\n useClass: UnfinalizedBlocksService,\n },\n {\n useClass: ProjectService,\n provide: 'IProjectService',\n },\n MultiChainRewindService,\n IndexerManager,\n {\n provide: 'IBlockDispatcher',\n useFactory: blockDispatcherFactory<\n SubstrateDatasource,\n BlockContent | LightBlockContent,\n ApiPromiseConnection,\n IIndexerWorker\n >(path.resolve(__dirname, '../../dist/indexer/worker/worker.js'), [\n 'syncRuntimeService',\n 'getSpecFromMap',\n ]),\n inject: [\n NodeConfig,\n EventEmitter2,\n 'IProjectService',\n 'IProjectUpgradeService',\n InMemoryCacheService,\n StoreService,\n 'IStoreModelProvider',\n PoiSyncService,\n 'ISubqueryProject',\n DynamicDsService,\n 'IUnfinalizedBlocksService',\n ConnectionPoolStateManager,\n 'IBlockchainService',\n IndexerManager,\n MultiChainRewindService,\n MonitorService,\n ],\n },\n {\n provide: DictionaryService,\n useClass: SubstrateDictionaryService,\n },\n FetchService,\n ],\n})\nexport class FetchModule {}\n"]}
@@ -0,0 +1,27 @@
1
+ import { ApiPromise } from '@polkadot/api';
2
+ import { isBlockHandlerProcessor, isCallHandlerProcessor, isEventHandlerProcessor, SubstrateCustomDataSource, SubstrateHandlerKind, SubstrateRuntimeHandlerInputMap } from '@subql/common-substrate';
3
+ import { NodeConfig, SandboxService, IndexerSandbox, ProcessBlockResponse, BaseIndexerManager, DsProcessorService, IBlock, UnfinalizedBlocksService, DynamicDsService } from '@subql/node-core';
4
+ import { SubstrateBlock, SubstrateBlockFilter, SubstrateCustomDatasource, SubstrateDatasource } from '@subql/types';
5
+ import { BlockchainService } from '../blockchain.service';
6
+ import { SubstrateProjectDs } from '../configure/SubqueryProject';
7
+ import * as SubstrateUtil from '../utils/substrate';
8
+ import { ApiService as SubstrateApiService } from './api.service';
9
+ import { ApiAt, BlockContent, LightBlockContent } from './types';
10
+ export declare class IndexerManager extends BaseIndexerManager<ApiPromise, ApiAt, BlockContent | LightBlockContent, SubstrateApiService, SubstrateDatasource, SubstrateCustomDataSource, typeof FilterTypeMap, typeof ProcessorTypeMap, SubstrateRuntimeHandlerInputMap> {
11
+ constructor(apiService: SubstrateApiService, nodeConfig: NodeConfig, sandboxService: SandboxService<ApiAt, ApiPromise>, dsProcessorService: DsProcessorService<SubstrateDatasource, SubstrateCustomDatasource>, dynamicDsService: DynamicDsService<SubstrateDatasource>, unfinalizedBlocksService: UnfinalizedBlocksService<BlockContent | LightBlockContent>, blockchainService: BlockchainService);
12
+ indexBlock(block: IBlock<BlockContent | LightBlockContent>, dataSources: SubstrateDatasource[]): Promise<ProcessBlockResponse>;
13
+ protected indexBlockData(blockContent: LightBlockContent | BlockContent, dataSources: SubstrateProjectDs[], getVM: (d: SubstrateProjectDs) => Promise<IndexerSandbox>): Promise<void>;
14
+ private indexContent;
15
+ protected prepareFilteredData<T = any>(kind: SubstrateHandlerKind, data: T): Promise<T>;
16
+ }
17
+ declare const ProcessorTypeMap: {
18
+ "substrate/BlockHandler": typeof isBlockHandlerProcessor;
19
+ "substrate/EventHandler": typeof isEventHandlerProcessor;
20
+ "substrate/CallHandler": typeof isCallHandlerProcessor;
21
+ };
22
+ declare const FilterTypeMap: {
23
+ "substrate/BlockHandler": (block: SubstrateBlock, filter?: SubstrateBlockFilter) => boolean;
24
+ "substrate/EventHandler": typeof SubstrateUtil.filterEvent;
25
+ "substrate/CallHandler": typeof SubstrateUtil.filterExtrinsic;
26
+ };
27
+ export {};