@subql/node-algorand 3.16.0 → 4.0.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.
- package/CHANGELOG.md +14 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/algorand/algorand.spec.js +1 -1
- package/dist/algorand/algorand.spec.js.map +1 -1
- package/dist/algorand/api.algorand.js +1 -1
- package/dist/algorand/api.algorand.js.map +1 -1
- package/dist/algorand/api.connection.js +1 -1
- package/dist/algorand/api.connection.js.map +1 -1
- package/dist/algorand/api.service.algorand.js +1 -1
- package/dist/algorand/api.service.algorand.js.map +1 -1
- package/dist/algorand/index.js +1 -1
- package/dist/algorand/index.js.map +1 -1
- package/dist/algorand/utils.algorand.js +2 -1
- package/dist/algorand/utils.algorand.js.map +1 -1
- package/dist/algorand/utils.algorand.spec.js +1 -1
- package/dist/algorand/utils.algorand.spec.js.map +1 -1
- package/dist/app.module.js +1 -1
- package/dist/app.module.js.map +1 -1
- package/dist/blockchain.service.d.ts +30 -0
- package/dist/blockchain.service.js +96 -0
- package/dist/blockchain.service.js.map +1 -0
- package/dist/configure/SubqueryProject.js +1 -1
- package/dist/configure/SubqueryProject.js.map +1 -1
- package/dist/configure/configure.module.js +1 -1
- package/dist/configure/configure.module.js.map +1 -1
- package/dist/indexer/api.service.spec.js +1 -1
- package/dist/indexer/api.service.spec.js.map +1 -1
- package/dist/indexer/dictionary/algorandDictionary.service.d.ts +1 -2
- package/dist/indexer/dictionary/algorandDictionary.service.js +2 -3
- package/dist/indexer/dictionary/algorandDictionary.service.js.map +1 -1
- package/dist/indexer/dictionary/index.js +1 -1
- package/dist/indexer/dictionary/index.js.map +1 -1
- package/dist/indexer/dictionary/v1/algorandDictionaryV1.d.ts +1 -2
- package/dist/indexer/dictionary/v1/algorandDictionaryV1.js +1 -1
- package/dist/indexer/dictionary/v1/algorandDictionaryV1.js.map +1 -1
- package/dist/indexer/dictionary/v1/algorandDictionaryV1.spec.js +1 -1
- package/dist/indexer/dictionary/v1/algorandDictionaryV1.spec.js.map +1 -1
- package/dist/indexer/dictionary/v1/index.js +1 -1
- package/dist/indexer/dictionary/v1/index.js.map +1 -1
- package/dist/indexer/fetch.module.js +31 -23
- package/dist/indexer/fetch.module.js.map +1 -1
- package/dist/indexer/indexer.manager.d.ts +3 -5
- package/dist/indexer/indexer.manager.js +14 -9
- package/dist/indexer/indexer.manager.js.map +1 -1
- package/dist/indexer/types.js +1 -1
- package/dist/indexer/types.js.map +1 -1
- package/dist/indexer/worker/worker-fetch.module.js +7 -14
- package/dist/indexer/worker/worker-fetch.module.js.map +1 -1
- package/dist/indexer/worker/worker.js +1 -1
- package/dist/indexer/worker/worker.js.map +1 -1
- package/dist/indexer/worker/worker.module.js +1 -2
- package/dist/indexer/worker/worker.module.js.map +1 -1
- package/dist/indexer/worker/worker.service.js +2 -1
- package/dist/indexer/worker/worker.service.js.map +1 -1
- package/dist/init.js +2 -3
- package/dist/init.js.map +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/subcommands/forceClean.init.js +1 -1
- package/dist/subcommands/forceClean.init.js.map +1 -1
- package/dist/subcommands/forceClean.module.js +1 -1
- package/dist/subcommands/forceClean.module.js.map +1 -1
- package/dist/subcommands/forceClean.service.js +1 -1
- package/dist/subcommands/forceClean.service.js.map +1 -1
- package/dist/subcommands/reindex.init.js +1 -1
- package/dist/subcommands/reindex.init.js.map +1 -1
- package/dist/subcommands/reindex.module.js +20 -8
- package/dist/subcommands/reindex.module.js.map +1 -1
- package/dist/subcommands/testing.init.js +1 -1
- package/dist/subcommands/testing.init.js.map +1 -1
- package/dist/subcommands/testing.module.js +14 -28
- package/dist/subcommands/testing.module.js.map +1 -1
- package/dist/subcommands/testing.service.js +1 -3
- package/dist/subcommands/testing.service.js.map +1 -1
- package/dist/utils/project.js +1 -1
- package/dist/utils/project.js.map +1 -1
- package/dist/yargs.js +1 -1
- package/dist/yargs.js.map +1 -1
- package/package.json +9 -9
- package/dist/indexer/blockDispatcher/algorand-block-dispatcher.d.ts +0 -5
- package/dist/indexer/blockDispatcher/algorand-block-dispatcher.js +0 -5
- package/dist/indexer/blockDispatcher/algorand-block-dispatcher.js.map +0 -1
- package/dist/indexer/blockDispatcher/block-dispatcher.service.d.ts +0 -17
- package/dist/indexer/blockDispatcher/block-dispatcher.service.js +0 -55
- package/dist/indexer/blockDispatcher/block-dispatcher.service.js.map +0 -1
- package/dist/indexer/blockDispatcher/index.d.ts +0 -4
- package/dist/indexer/blockDispatcher/index.js +0 -10
- package/dist/indexer/blockDispatcher/index.js.map +0 -1
- package/dist/indexer/blockDispatcher/worker-block-dispatcher.service.d.ts +0 -18
- package/dist/indexer/blockDispatcher/worker-block-dispatcher.service.js +0 -48
- package/dist/indexer/blockDispatcher/worker-block-dispatcher.service.js.map +0 -1
- package/dist/indexer/ds-processor.service.d.ts +0 -11
- package/dist/indexer/ds-processor.service.js +0 -22
- package/dist/indexer/ds-processor.service.js.map +0 -1
- package/dist/indexer/dynamic-ds.service.d.ts +0 -9
- package/dist/indexer/dynamic-ds.service.js +0 -57
- package/dist/indexer/dynamic-ds.service.js.map +0 -1
- package/dist/indexer/fetch.service.d.ts +0 -22
- package/dist/indexer/fetch.service.js +0 -78
- package/dist/indexer/fetch.service.js.map +0 -1
- package/dist/indexer/project.service.d.ts +0 -16
- package/dist/indexer/project.service.js +0 -71
- package/dist/indexer/project.service.js.map +0 -1
- package/dist/indexer/unfinalizedBlocks.service.d.ts +0 -10
- package/dist/indexer/unfinalizedBlocks.service.js +0 -64
- package/dist/indexer/unfinalizedBlocks.service.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Copyright 2020-
|
|
2
|
+
// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
|
|
3
3
|
// SPDX-License-Identifier: GPL-3.0
|
|
4
4
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
5
5
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -19,7 +19,6 @@ const common_1 = require("@nestjs/common");
|
|
|
19
19
|
const event_emitter_1 = require("@nestjs/event-emitter");
|
|
20
20
|
const common_2 = require("@subql/common");
|
|
21
21
|
const node_core_1 = require("@subql/node-core");
|
|
22
|
-
const ds_processor_service_1 = require("../ds-processor.service");
|
|
23
22
|
const v1_1 = require("./v1");
|
|
24
23
|
const logger = (0, node_core_1.getLogger)('AlograndDictionary');
|
|
25
24
|
let AlgorandDictionaryService = class AlgorandDictionaryService extends node_core_1.DictionaryService {
|
|
@@ -59,7 +58,7 @@ AlgorandDictionaryService = __decorate([
|
|
|
59
58
|
__param(0, (0, common_1.Inject)('ISubqueryProject')),
|
|
60
59
|
__metadata("design:paramtypes", [Object, node_core_1.NodeConfig,
|
|
61
60
|
event_emitter_1.EventEmitter2,
|
|
62
|
-
|
|
61
|
+
node_core_1.DsProcessorService])
|
|
63
62
|
], AlgorandDictionaryService);
|
|
64
63
|
exports.AlgorandDictionaryService = AlgorandDictionaryService;
|
|
65
64
|
//# sourceMappingURL=algorandDictionary.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"algorandDictionary.service.js","sourceRoot":"","sources":["../../../src/indexer/dictionary/algorandDictionary.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,2CAAoD;AACpD,yDAAsD;AACtD,0CAA+C;AAC/C,
|
|
1
|
+
{"version":3,"file":"algorandDictionary.service.js","sourceRoot":"","sources":["../../../src/indexer/dictionary/algorandDictionary.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,2CAAoD;AACpD,yDAAsD;AACtD,0CAA+C;AAC/C,gDAK0B;AAG1B,6BAA4C;AAE5C,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,oBAAoB,CAAC,CAAC;AAGxC,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,6BAG9C;IA2CyC;IAG5B;IA7CZ,KAAK,CAAC,gBAAgB;QACpB,MAAM,cAAc,GAA2B,EAAE,CAAC;QAElD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;SACnE;QACD,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,iBAAiB,CACvD,uBAAc,CAAC,QAAQ,EACvB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAC5B,IAAI,CAAC,UAAU,CAAC,kBAAkB,CACnC,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,kCAAkC,oBAAoB,EAAE,CAAC,CAAC;QAEvE,MAAM,mBAAmB,GAAa,CACpC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;YAC7C,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU;gBAChC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;YACrC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CACpC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAE/B,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE;YAC1C,IAAI;gBACF,MAAM,YAAY,GAAG,MAAM,yBAAoB,CAAC,MAAM,CACpD,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EACjD,QAAQ,CACT,CAAC;gBACF,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;aACnC;YAAC,OAAO,CAAC,EAAE;gBACV,MAAM,CAAC,IAAI,CACT,wBAAwB,QAAQ,6BAA6B,CAC9D,CAAC;aACH;SACF;QAED,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC5B,CAAC;IAED,YACwC,OAAwB,EAC9D,UAAsB,EACtB,YAA2B,EACjB,kBAAsC;QAEhD,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;QALnB,YAAO,GAAP,OAAO,CAAiB;QAGpD,uBAAkB,GAAlB,kBAAkB,CAAoB;IAGlD,CAAC;CACF,CAAA;AArDY,yBAAyB;IADrC,IAAA,mBAAU,GAAE;IA+CR,WAAA,IAAA,eAAM,EAAC,kBAAkB,CAAC,CAAA;6CACf,sBAAU;QACR,6BAAa;QACG,8BAAkB;GAjDvC,yBAAyB,CAqDrC;AArDY,8DAAyB","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\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 { AlgorandBlock, AlgorandDataSource } from '@subql/types-algorand';\nimport { SubqueryProject } from '../../configure/SubqueryProject';\nimport { AlgorandDictionaryV1 } from './v1';\n\nconst logger = getLogger('AlograndDictionary');\n\n@Injectable()\nexport class AlgorandDictionaryService extends DictionaryService<\n AlgorandDataSource,\n AlgorandBlock\n> {\n async initDictionaries(): Promise<void> {\n const dictionariesV1: AlgorandDictionaryV1[] = [];\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.algorand,\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 dictionaryV1 = await AlgorandDictionaryV1.create(\n this.project,\n this.nodeConfig,\n this.dsProcessorService.getDsProcessor.bind(this),\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 this.init(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"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Copyright 2020-
|
|
2
|
+
// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
|
|
3
3
|
// SPDX-License-Identifier: GPL-3.0
|
|
4
4
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
5
5
|
if (k2 === undefined) k2 = k;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/indexer/dictionary/index.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;;AAEnC,+DAA6C","sourcesContent":["// Copyright 2020-
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/indexer/dictionary/index.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;;AAEnC,+DAA6C","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nexport * from './algorandDictionary.service';\n"]}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { NodeConfig, DictionaryV1 } from '@subql/node-core';
|
|
1
|
+
import { NodeConfig, DictionaryV1, DsProcessorService } from '@subql/node-core';
|
|
2
2
|
import { AlgorandDataSource } from '@subql/types-algorand';
|
|
3
3
|
import { DictionaryQueryEntry as DictionaryV1QueryEntry } from '@subql/types-core';
|
|
4
4
|
import { SubqueryProject } from '../../../configure/SubqueryProject';
|
|
5
|
-
import { DsProcessorService } from '../../ds-processor.service';
|
|
6
5
|
type GetDsProcessor = DsProcessorService['getDsProcessor'];
|
|
7
6
|
export declare class AlgorandDictionaryV1 extends DictionaryV1<AlgorandDataSource> {
|
|
8
7
|
protected getDsProcessor: GetDsProcessor;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Copyright 2020-
|
|
2
|
+
// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
|
|
3
3
|
// SPDX-License-Identifier: GPL-3.0
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.AlgorandDictionaryV1 = void 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"algorandDictionaryV1.js","sourceRoot":"","sources":["../../../../src/indexer/dictionary/v1/algorandDictionaryV1.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;AAEnC,4DAMgC;AAChC,
|
|
1
|
+
{"version":3,"file":"algorandDictionaryV1.js","sourceRoot":"","sources":["../../../../src/indexer/dictionary/v1/algorandDictionaryV1.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 {\n isCustomDs,\n AlgorandHandlerKind,\n AlgorandRuntimeHandlerFilter,\n AlgorandHandler,\n isRuntimeDs,\n} from '@subql/common-algorand';\nimport { NodeConfig, DictionaryV1, DsProcessorService } from '@subql/node-core';\nimport { AlgorandBlockFilter, AlgorandDataSource } from '@subql/types-algorand';\nimport {\n DictionaryQueryCondition,\n DictionaryQueryEntry as DictionaryV1QueryEntry,\n} from '@subql/types-core';\nimport { sortBy, uniqBy } from 'lodash';\nimport { SubqueryProject } from '../../../configure/SubqueryProject';\nimport { isBaseHandler, isCustomHandler } from '../../../utils/project';\n\ntype GetDsProcessor = DsProcessorService['getDsProcessor'];\n\nfunction getBaseHandlerKind(\n ds: AlgorandDataSource,\n handler: AlgorandHandler,\n getDsProcessor: GetDsProcessor,\n): AlgorandHandlerKind {\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 } else {\n throw new Error('unknown base handler kind');\n }\n}\n\nfunction getBaseHandlerFilters<T extends AlgorandRuntimeHandlerFilter>(\n ds: AlgorandDataSource,\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\nfunction buildDictionaryV1QueryEntries(\n dataSources: AlgorandDataSource[],\n getDsProcessor: GetDsProcessor,\n): DictionaryV1QueryEntry[] {\n const queryEntries: DictionaryV1QueryEntry[] = [];\n\n for (const ds of dataSources) {\n for (const handler of ds.mapping.handlers) {\n const baseHandlerKind = getBaseHandlerKind(ds, handler, getDsProcessor);\n let filterList: AlgorandRuntimeHandlerFilter[];\n if (isCustomDs(ds)) {\n filterList = getBaseHandlerFilters<AlgorandRuntimeHandlerFilter>(\n ds,\n handler.kind,\n getDsProcessor,\n );\n } else {\n filterList = handler.filter ? [handler.filter] : [];\n }\n // Filter out any undefined\n filterList = filterList.filter(Boolean);\n if (!filterList.length) return [];\n switch (baseHandlerKind) {\n case AlgorandHandlerKind.Block:\n for (const filter of filterList as AlgorandBlockFilter[]) {\n if (filter.modulo === undefined) {\n return [];\n }\n }\n break;\n case AlgorandHandlerKind.Transaction:\n filterList.forEach((f) => {\n const conditions: DictionaryQueryCondition[] = Object.entries(f)\n .filter(\n ([field, value]) =>\n field !== 'applicationArgs' && value !== undefined,\n )\n .map(([field, value]) => ({\n field,\n value,\n matcher: 'equalTo',\n }));\n queryEntries.push({\n entity: 'transactions',\n conditions,\n });\n });\n break;\n default:\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\nexport class AlgorandDictionaryV1 extends DictionaryV1<AlgorandDataSource> {\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<AlgorandDictionaryV1> {\n const dictionary = new AlgorandDictionaryV1(\n project,\n nodeConfig,\n getDsProcessor,\n dictionaryUrl,\n chainId,\n );\n await dictionary.init();\n return dictionary;\n }\n\n buildDictionaryQueryEntries(\n dataSources: AlgorandDataSource[],\n ): DictionaryV1QueryEntry[] {\n return buildDictionaryV1QueryEntries(dataSources, this.getDsProcessor);\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Copyright 2020-
|
|
2
|
+
// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
|
|
3
3
|
// SPDX-License-Identifier: GPL-3.0
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
const event_emitter_1 = require("@nestjs/event-emitter");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"algorandDictionaryV1.spec.js","sourceRoot":"","sources":["../../../../src/indexer/dictionary/v1/algorandDictionaryV1.spec.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2020-
|
|
1
|
+
{"version":3,"file":"algorandDictionaryV1.spec.js","sourceRoot":"","sources":["../../../../src/indexer/dictionary/v1/algorandDictionaryV1.spec.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;AAEnC,yDAAsD;AACtD,0CAA+C;AAC/C,gDAAiE;AACjE,0DAG+B;AAE/B,iEAA8D;AAE9D,MAAM,MAAM,GAAG;IACb;QACE,UAAU,EAAE,OAAO;QACnB,IAAI,EAAE,uCAAsB,CAAC,OAAO;QACpC,OAAO,EAAE;YACP,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE;wBACN,MAAM,EAAE,OAAO;wBACf,MAAM,EACJ,4DAA4D;wBAC9D,OAAO,EAAE,QAAQ;qBAClB;oBACD,IAAI,EAAE,6BAA6B;oBACnC,OAAO,EAAE,mBAAmB;iBAC7B;aACF;YACD,IAAI,EAAE,iBAAiB;SACxB;KACF;CACsB,CAAC;AAE1B,MAAM,UAAU,GAAG;IACjB,iBAAiB,EAAE,KAAK;IACxB,kBAAkB,EAChB,qEAAqE;CAC1D,CAAC;AAChB,MAAM,OAAO,GAAG;IACd,OAAO,EAAE;QACP,OAAO,EAAE,8CAA8C;KACxD;IACD,WAAW,EAAE,MAAM;CACb,CAAC;AAET,MAAM,qBAAsB,SAAQ,6BAA2B;IAC7D,KAAK,CAAC,gBAAgB;QACpB,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IACD,KAAK,CAAC,uBAAuB,CAAC,OAAe;QAC3C,OAAO,IAAI,CAAC,iBAAiB,CAC3B,uBAAc,CAAC,QAAQ,EACvB,OAAO,EACP,IAAI,CAAC,UAAU,CAAC,kBAAkB,CACnC,CAAC;IACJ,CAAC;CACF;AACD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,IAAI,UAAgC,CAAC;IACrC,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,qBAAqB,GAAG,IAAI,qBAAqB,CACrD,OAAO,CAAC,OAAO,CAAC,OAAO,EACvB,UAAU,EACV,IAAI,6BAAa,EAAE,CACpB,CAAC;QACF,MAAM,mBAAmB,GACvB,MAAM,qBAAqB,CAAC,uBAAuB,CACjD,OAAO,CAAC,OAAO,CAAC,OAAO,CACxB,CAAC;QACJ,UAAU,GAAG,MAAM,2CAAoB,CAAC,MAAM,CAC5C;YACE,OAAO,EAAE;gBACP,OAAO,EAAE,8CAA8C;gBACvD,UAAU,EAAE,mBAAmB,CAAC,CAAC,CAAC;aACnC;YACD,WAAW,EAAE,MAAM;SACb,EACR,EAAE,iBAAiB,EAAE,KAAK,EAAgB,EAC1C,IAAI,CAAC,EAAE,EAAE,EACT,mBAAmB,CAAC,CAAC,CAAC,CACvB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,6BAA6B;QAC7B,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvC,qBAAqB;QACrB,MAAM,CACH,UAAkB,CAAC,oBAAoB,CACtC;YACE,mBAAmB,EAAE,KAAK;YAC1B,YAAY,EAAE,KAAK;YACnB,KAAK,EAAE,8CAA8C;YACrD,WAAW,EAAE,8CAA8C;YAC3D,WAAW,EAAE,CAAC;SACH,EACb,CAAC,CACF,CACF,CAAC,UAAU,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,MAAM,CAAC,UAAU,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;YAC7D;gBACE,UAAU,EAAE;oBACV;wBACE,KAAK,EAAE,QAAQ;wBACf,OAAO,EAAE,SAAS;wBAClB,KAAK,EAAE,OAAO;qBACf;oBACD;wBACE,KAAK,EAAE,QAAQ;wBACf,OAAO,EAAE,SAAS;wBAClB,KAAK,EAAE,4DAA4D;qBACpE;oBACD;wBACE,KAAK,EAAE,SAAS;wBAChB,OAAO,EAAE,SAAS;wBAClB,KAAK,EAAE,QAAQ;qBAChB;iBACF;gBACD,MAAM,EAAE,cAAc;aACvB;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { EventEmitter2 } from '@nestjs/event-emitter';\nimport { NETWORK_FAMILY } from '@subql/common';\nimport { DictionaryService, NodeConfig } from '@subql/node-core';\nimport {\n AlgorandDataSource,\n AlgorandDataSourceKind,\n} from '@subql/types-algorand';\nimport { MetaData } from '@subql/utils';\nimport { AlgorandDictionaryV1 } from './algorandDictionaryV1';\n\nconst mockDs = [\n {\n startBlock: 8712119,\n kind: AlgorandDataSourceKind.Runtime,\n mapping: {\n handlers: [\n {\n filter: {\n txType: 'axfer',\n sender:\n 'ZW3ISEHZUHPO7OZGMKLKIIMKVICOUDRCERI454I3DB2BH52HGLSO67W754',\n assetId: 27165954,\n },\n kind: 'algorand/TransactionHandler',\n handler: 'handleTransaction',\n },\n ],\n file: './dist/index.js',\n },\n },\n] as AlgorandDataSource[];\n\nconst nodeConfig = {\n dictionaryTimeout: 10000,\n dictionaryRegistry:\n 'https://github.com/subquery/templates/raw/main/dist/dictionary.json',\n} as NodeConfig;\nconst project = {\n network: {\n chainId: 'wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8=',\n },\n dataSources: mockDs,\n} as any;\n\nclass TestDictionaryService extends DictionaryService<any, any> {\n async initDictionaries(): Promise<void> {\n return Promise.resolve(undefined);\n }\n async getRegistryDictionaries(chainId: string): Promise<string[]> {\n return this.resolveDictionary(\n NETWORK_FAMILY.algorand,\n chainId,\n this.nodeConfig.dictionaryRegistry,\n );\n }\n}\ndescribe('dictionary v1', () => {\n let dictionary: AlgorandDictionaryV1;\n beforeEach(async () => {\n const testDictionaryService = new TestDictionaryService(\n project.network.chainId,\n nodeConfig,\n new EventEmitter2(),\n );\n const dictionaryEndpoints =\n await testDictionaryService.getRegistryDictionaries(\n project.network.chainId,\n );\n dictionary = await AlgorandDictionaryV1.create(\n {\n network: {\n chainId: 'wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8=',\n dictionary: dictionaryEndpoints[1],\n },\n dataSources: mockDs,\n } as any,\n { dictionaryTimeout: 10000 } as NodeConfig,\n jest.fn(),\n dictionaryEndpoints[1], // use endpoint from network\n );\n });\n\n it('successfully validates metatada', () => {\n // start height from metadata\n expect(dictionary.startHeight).toBe(1);\n // further validation\n expect(\n (dictionary as any).dictionaryValidation(\n {\n lastProcessedHeight: 10000,\n targetHeight: 10000,\n chain: 'wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8=',\n genesisHash: 'wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8=',\n startHeight: 1,\n } as MetaData,\n 1,\n ),\n ).toBeTruthy();\n });\n\n it('build correct dictionary entries and remove undefined fields in filter', () => {\n expect(dictionary.buildDictionaryQueryEntries(mockDs)).toEqual([\n {\n conditions: [\n {\n field: 'txType',\n matcher: 'equalTo',\n value: 'axfer',\n },\n {\n field: 'sender',\n matcher: 'equalTo',\n value: 'ZW3ISEHZUHPO7OZGMKLKIIMKVICOUDRCERI454I3DB2BH52HGLSO67W754',\n },\n {\n field: 'assetId',\n matcher: 'equalTo',\n value: 27165954,\n },\n ],\n entity: 'transactions',\n },\n ]);\n });\n});\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Copyright 2020-
|
|
2
|
+
// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
|
|
3
3
|
// SPDX-License-Identifier: GPL-3.0
|
|
4
4
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
5
5
|
if (k2 === undefined) k2 = k;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/indexer/dictionary/v1/index.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;;AAEnC,yDAAuC","sourcesContent":["// Copyright 2020-
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/indexer/dictionary/v1/index.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;;AAEnC,yDAAuC","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nexport * from './algorandDictionaryV1';\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Copyright 2020-
|
|
2
|
+
// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
|
|
3
3
|
// SPDX-License-Identifier: GPL-3.0
|
|
4
4
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
5
5
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -7,65 +7,73 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
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
8
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
9
9
|
};
|
|
10
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
11
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
12
|
+
};
|
|
10
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
14
|
exports.FetchModule = void 0;
|
|
15
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
12
16
|
const common_1 = require("@nestjs/common");
|
|
13
17
|
const event_emitter_1 = require("@nestjs/event-emitter");
|
|
14
18
|
const node_core_1 = require("@subql/node-core");
|
|
15
19
|
const algorand_1 = require("../algorand");
|
|
16
|
-
const
|
|
20
|
+
const blockchain_service_1 = require("../blockchain.service");
|
|
17
21
|
const dictionary_1 = require("./dictionary");
|
|
18
|
-
const ds_processor_service_1 = require("./ds-processor.service");
|
|
19
|
-
const dynamic_ds_service_1 = require("./dynamic-ds.service");
|
|
20
|
-
const fetch_service_1 = require("./fetch.service");
|
|
21
22
|
const indexer_manager_1 = require("./indexer.manager");
|
|
22
|
-
const project_service_1 = require("./project.service");
|
|
23
|
-
const unfinalizedBlocks_service_1 = require("./unfinalizedBlocks.service");
|
|
24
23
|
let FetchModule = class FetchModule {
|
|
25
24
|
};
|
|
26
25
|
FetchModule = __decorate([
|
|
27
26
|
(0, common_1.Module)({
|
|
28
27
|
imports: [node_core_1.CoreModule],
|
|
29
28
|
providers: [
|
|
30
|
-
unfinalizedBlocks_service_1.UnfinalizedBlocksService,
|
|
31
29
|
{
|
|
32
|
-
provide:
|
|
30
|
+
provide: 'APIService',
|
|
33
31
|
useFactory: algorand_1.AlgorandApiService.init,
|
|
34
32
|
inject: ['ISubqueryProject', node_core_1.ConnectionPoolService, event_emitter_1.EventEmitter2],
|
|
35
33
|
},
|
|
34
|
+
{
|
|
35
|
+
provide: 'IBlockchainService',
|
|
36
|
+
useClass: blockchain_service_1.BlockchainService,
|
|
37
|
+
},
|
|
38
|
+
node_core_1.DsProcessorService,
|
|
39
|
+
node_core_1.DynamicDsService,
|
|
40
|
+
{
|
|
41
|
+
provide: 'IUnfinalizedBlocksService',
|
|
42
|
+
useClass: node_core_1.UnfinalizedBlocksService,
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
useClass: node_core_1.ProjectService,
|
|
46
|
+
provide: 'IProjectService',
|
|
47
|
+
},
|
|
48
|
+
node_core_1.MultiChainRewindService,
|
|
36
49
|
indexer_manager_1.IndexerManager,
|
|
37
50
|
{
|
|
38
51
|
provide: 'IBlockDispatcher',
|
|
39
|
-
useFactory: (
|
|
40
|
-
? new blockDispatcher_1.WorkerBlockDispatcherService(nodeConfig, eventEmitter, projectService, projectUpgradeService, cacheService, storeService, storeModelProvider, poiSyncService, project, dynamicDsService, unfinalizedBlocksService, connectionPoolState, monitorService)
|
|
41
|
-
: new blockDispatcher_1.BlockDispatcherService(apiService, nodeConfig, indexerManager, eventEmitter, projectService, projectUpgradeService, storeService, storeModelProvider, poiSyncService, project),
|
|
52
|
+
useFactory: (0, node_core_1.blockDispatcherFactory)(node_path_1.default.resolve(__dirname, '../../dist/indexer/worker/worker.js'), []),
|
|
42
53
|
inject: [
|
|
43
54
|
node_core_1.NodeConfig,
|
|
44
55
|
event_emitter_1.EventEmitter2,
|
|
45
56
|
'IProjectService',
|
|
46
57
|
'IProjectUpgradeService',
|
|
47
|
-
algorand_1.AlgorandApiService,
|
|
48
|
-
indexer_manager_1.IndexerManager,
|
|
49
58
|
node_core_1.InMemoryCacheService,
|
|
50
59
|
node_core_1.StoreService,
|
|
51
60
|
'IStoreModelProvider',
|
|
52
61
|
node_core_1.PoiSyncService,
|
|
53
62
|
'ISubqueryProject',
|
|
54
|
-
|
|
55
|
-
|
|
63
|
+
node_core_1.DynamicDsService,
|
|
64
|
+
'IUnfinalizedBlocksService',
|
|
56
65
|
node_core_1.ConnectionPoolStateManager,
|
|
66
|
+
'IBlockchainService',
|
|
67
|
+
indexer_manager_1.IndexerManager,
|
|
68
|
+
node_core_1.MultiChainRewindService,
|
|
57
69
|
node_core_1.MonitorService,
|
|
58
70
|
],
|
|
59
71
|
},
|
|
60
|
-
|
|
61
|
-
dictionary_1.AlgorandDictionaryService,
|
|
62
|
-
ds_processor_service_1.DsProcessorService,
|
|
63
|
-
dynamic_ds_service_1.DynamicDsService,
|
|
72
|
+
node_core_1.FetchService,
|
|
64
73
|
{
|
|
65
|
-
|
|
66
|
-
|
|
74
|
+
provide: node_core_1.DictionaryService,
|
|
75
|
+
useClass: dictionary_1.AlgorandDictionaryService,
|
|
67
76
|
},
|
|
68
|
-
node_core_1.MonitorService,
|
|
69
77
|
],
|
|
70
78
|
})
|
|
71
79
|
], FetchModule);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.module.js","sourceRoot":"","sources":["../../src/indexer/fetch.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC
|
|
1
|
+
{"version":3,"file":"fetch.module.js","sourceRoot":"","sources":["../../src/indexer/fetch.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;AAEnC,0DAA6B;AAC7B,2CAAwC;AACxC,yDAAsD;AACtD,gDAiB0B;AAC1B,0CAAiD;AACjD,8DAA0D;AAC1D,6CAAyD;AACzD,uDAAmD;AA0D5C,IAAM,WAAW,GAAjB,MAAM,WAAW;CAAG,CAAA;AAAd,WAAW;IAxDvB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,sBAAU,CAAC;QACrB,SAAS,EAAE;YACT;gBACE,OAAO,EAAE,YAAY;gBACrB,UAAU,EAAE,6BAAkB,CAAC,IAAI;gBACnC,MAAM,EAAE,CAAC,kBAAkB,EAAE,iCAAqB,EAAE,6BAAa,CAAC;aACnE;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,EAChC,mBAAI,CAAC,OAAO,CAAC,SAAS,EAAE,qCAAqC,CAAC,EAC9D,EAAE,CACH;gBACD,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,wBAAY;YACZ;gBACE,OAAO,EAAE,6BAAiB;gBAC1B,QAAQ,EAAE,sCAAyB;aACpC;SACF;KACF,CAAC;GACW,WAAW,CAAG;AAAd,kCAAW","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport path from 'node:path';\nimport { Module } from '@nestjs/common';\nimport { EventEmitter2 } from '@nestjs/event-emitter';\nimport {\n StoreService,\n PoiSyncService,\n NodeConfig,\n ConnectionPoolService,\n ConnectionPoolStateManager,\n InMemoryCacheService,\n MonitorService,\n CoreModule,\n blockDispatcherFactory,\n DsProcessorService,\n DynamicDsService,\n UnfinalizedBlocksService,\n ProjectService,\n MultiChainRewindService,\n DictionaryService,\n FetchService,\n} from '@subql/node-core';\nimport { AlgorandApiService } from '../algorand';\nimport { BlockchainService } from '../blockchain.service';\nimport { AlgorandDictionaryService } from './dictionary';\nimport { IndexerManager } from './indexer.manager';\n\n@Module({\n imports: [CoreModule],\n providers: [\n {\n provide: 'APIService',\n useFactory: AlgorandApiService.init,\n inject: ['ISubqueryProject', ConnectionPoolService, EventEmitter2],\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 path.resolve(__dirname, '../../dist/indexer/worker/worker.js'),\n [],\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 FetchService,\n {\n provide: DictionaryService,\n useClass: AlgorandDictionaryService,\n },\n ],\n})\nexport class FetchModule {}\n"]}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { isRuntimeDs, AlgorandHandlerKind, isCustomDs, isBlockHandlerProcessor, isTransactionHandlerProcessor, AlgorandRuntimeHandlerInputMap } from '@subql/common-algorand';
|
|
2
|
-
import { NodeConfig, IndexerSandbox, ProcessBlockResponse, BaseIndexerManager, IBlock, SandboxService } from '@subql/node-core';
|
|
2
|
+
import { NodeConfig, IndexerSandbox, ProcessBlockResponse, BaseIndexerManager, IBlock, SandboxService, DsProcessorService, DynamicDsService, UnfinalizedBlocksService } from '@subql/node-core';
|
|
3
3
|
import { AlgorandCustomDataSource, AlgorandDataSource, SafeAPI } from '@subql/types-algorand';
|
|
4
4
|
import { AlgorandApi, AlgorandApiService, SafeAPIService, filterBlock, filterTransaction } from '../algorand';
|
|
5
|
-
import {
|
|
6
|
-
import { DynamicDsService } from './dynamic-ds.service';
|
|
5
|
+
import { BlockchainService } from '../blockchain.service';
|
|
7
6
|
import { BlockContent } from './types';
|
|
8
|
-
import { UnfinalizedBlocksService } from './unfinalizedBlocks.service';
|
|
9
7
|
export declare class IndexerManager extends BaseIndexerManager<AlgorandApi, SafeAPIService, BlockContent, AlgorandApiService, AlgorandDataSource, AlgorandCustomDataSource, typeof FilterTypeMap, typeof ProcessorTypeMap, AlgorandRuntimeHandlerInputMap> {
|
|
10
|
-
constructor(apiService: AlgorandApiService, nodeConfig: NodeConfig, sandboxService: SandboxService<SafeAPI, AlgorandApi>, dsProcessorService: DsProcessorService, dynamicDsService: DynamicDsService
|
|
8
|
+
constructor(apiService: AlgorandApiService, nodeConfig: NodeConfig, sandboxService: SandboxService<SafeAPI, AlgorandApi>, dsProcessorService: DsProcessorService, dynamicDsService: DynamicDsService<AlgorandDataSource>, unfinalizedBlocksService: UnfinalizedBlocksService, blockchainService: BlockchainService);
|
|
11
9
|
protected isRuntimeDs: typeof isRuntimeDs;
|
|
12
10
|
protected isCustomDs: typeof isCustomDs;
|
|
13
11
|
indexBlock(block: IBlock<BlockContent>, dataSources: AlgorandDataSource[]): Promise<ProcessBlockResponse>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Copyright 2020-
|
|
2
|
+
// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
|
|
3
3
|
// SPDX-License-Identifier: GPL-3.0
|
|
4
4
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
5
5
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -10,18 +10,19 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
10
10
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
11
11
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
12
12
|
};
|
|
13
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
14
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
15
|
+
};
|
|
13
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
17
|
exports.IndexerManager = void 0;
|
|
15
18
|
const common_1 = require("@nestjs/common");
|
|
16
19
|
const common_algorand_1 = require("@subql/common-algorand");
|
|
17
20
|
const node_core_1 = require("@subql/node-core");
|
|
18
21
|
const algorand_1 = require("../algorand");
|
|
19
|
-
const
|
|
20
|
-
const dynamic_ds_service_1 = require("./dynamic-ds.service");
|
|
21
|
-
const unfinalizedBlocks_service_1 = require("./unfinalizedBlocks.service");
|
|
22
|
+
const blockchain_service_1 = require("../blockchain.service");
|
|
22
23
|
let IndexerManager = class IndexerManager extends node_core_1.BaseIndexerManager {
|
|
23
|
-
constructor(apiService, nodeConfig, sandboxService, dsProcessorService, dynamicDsService, unfinalizedBlocksService) {
|
|
24
|
-
super(apiService, nodeConfig, sandboxService, dsProcessorService, dynamicDsService, unfinalizedBlocksService, FilterTypeMap, ProcessorTypeMap);
|
|
24
|
+
constructor(apiService, nodeConfig, sandboxService, dsProcessorService, dynamicDsService, unfinalizedBlocksService, blockchainService) {
|
|
25
|
+
super(apiService, nodeConfig, sandboxService, dsProcessorService, dynamicDsService, unfinalizedBlocksService, FilterTypeMap, ProcessorTypeMap, blockchainService);
|
|
25
26
|
}
|
|
26
27
|
isRuntimeDs = common_algorand_1.isRuntimeDs;
|
|
27
28
|
isCustomDs = common_algorand_1.isCustomDs;
|
|
@@ -70,12 +71,16 @@ __decorate([
|
|
|
70
71
|
], IndexerManager.prototype, "indexBlock", null);
|
|
71
72
|
IndexerManager = __decorate([
|
|
72
73
|
(0, common_1.Injectable)(),
|
|
74
|
+
__param(0, (0, common_1.Inject)('APIService')),
|
|
75
|
+
__param(5, (0, common_1.Inject)('IUnfinalizedBlocksService')),
|
|
76
|
+
__param(6, (0, common_1.Inject)('IBlockchainService')),
|
|
73
77
|
__metadata("design:paramtypes", [algorand_1.AlgorandApiService,
|
|
74
78
|
node_core_1.NodeConfig,
|
|
75
79
|
node_core_1.SandboxService,
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
80
|
+
node_core_1.DsProcessorService,
|
|
81
|
+
node_core_1.DynamicDsService,
|
|
82
|
+
node_core_1.UnfinalizedBlocksService,
|
|
83
|
+
blockchain_service_1.BlockchainService])
|
|
79
84
|
], IndexerManager);
|
|
80
85
|
exports.IndexerManager = IndexerManager;
|
|
81
86
|
const ProcessorTypeMap = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexer.manager.js","sourceRoot":"","sources":["../../src/indexer/indexer.manager.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC
|
|
1
|
+
{"version":3,"file":"indexer.manager.js","sourceRoot":"","sources":["../../src/indexer/indexer.manager.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 { Inject, Injectable } from '@nestjs/common';\nimport {\n isRuntimeDs,\n AlgorandHandlerKind,\n isCustomDs,\n isBlockHandlerProcessor,\n isTransactionHandlerProcessor,\n AlgorandRuntimeHandlerInputMap,\n} from '@subql/common-algorand';\nimport {\n NodeConfig,\n profiler,\n IndexerSandbox,\n ProcessBlockResponse,\n BaseIndexerManager,\n IBlock,\n SandboxService,\n DsProcessorService,\n DynamicDsService,\n UnfinalizedBlocksService,\n} from '@subql/node-core';\nimport {\n AlgorandBlock,\n AlgorandCustomDataSource,\n AlgorandDataSource,\n AlgorandTransaction,\n SafeAPI,\n} from '@subql/types-algorand';\nimport {\n AlgorandApi,\n AlgorandApiService,\n SafeAPIService,\n filterBlock,\n filterTransaction,\n} from '../algorand';\nimport { BlockchainService } from '../blockchain.service';\nimport { BlockContent } from './types';\n\n@Injectable()\nexport class IndexerManager extends BaseIndexerManager<\n AlgorandApi,\n SafeAPIService,\n BlockContent,\n AlgorandApiService,\n AlgorandDataSource,\n AlgorandCustomDataSource,\n typeof FilterTypeMap,\n typeof ProcessorTypeMap,\n AlgorandRuntimeHandlerInputMap\n> {\n constructor(\n @Inject('APIService') apiService: AlgorandApiService,\n nodeConfig: NodeConfig,\n sandboxService: SandboxService<SafeAPI, AlgorandApi>,\n dsProcessorService: DsProcessorService,\n dynamicDsService: DynamicDsService<AlgorandDataSource>,\n @Inject('IUnfinalizedBlocksService')\n unfinalizedBlocksService: UnfinalizedBlocksService,\n @Inject('IBlockchainService') blockchainService: BlockchainService,\n ) {\n super(\n apiService,\n nodeConfig,\n sandboxService,\n dsProcessorService,\n dynamicDsService,\n unfinalizedBlocksService,\n FilterTypeMap,\n ProcessorTypeMap,\n blockchainService,\n );\n }\n\n protected isRuntimeDs = isRuntimeDs;\n protected isCustomDs = isCustomDs;\n\n @profiler()\n async indexBlock(\n block: IBlock<BlockContent>,\n dataSources: AlgorandDataSource[],\n ): Promise<ProcessBlockResponse> {\n return super.internalIndexBlock(block, dataSources, () =>\n this.getApi(block.block),\n );\n }\n\n async getApi(block: BlockContent): Promise<SafeAPIService> {\n return Promise.resolve(this.apiService.api.getSafeApi(block.round));\n }\n\n protected async indexBlockData(\n block: BlockContent,\n dataSources: AlgorandDataSource[],\n getVM: (d: AlgorandDataSource) => Promise<IndexerSandbox>,\n ): Promise<void> {\n await this.indexBlockContent(block, dataSources, getVM);\n\n for (const tx of block.transactions ?? []) {\n await this.indexBlockTransactionContent(tx, dataSources, getVM);\n }\n }\n\n private async indexBlockContent(\n block: AlgorandBlock,\n dataSources: AlgorandDataSource[],\n getVM: (d: AlgorandDataSource) => Promise<IndexerSandbox>,\n ): Promise<void> {\n for (const ds of dataSources) {\n await this.indexData(AlgorandHandlerKind.Block, block, ds, getVM);\n }\n }\n\n private async indexBlockTransactionContent(\n txn: AlgorandTransaction,\n dataSources: AlgorandDataSource[],\n getVM: (d: AlgorandDataSource) => Promise<IndexerSandbox>,\n ): Promise<void> {\n for (const ds of dataSources) {\n await this.indexData(AlgorandHandlerKind.Transaction, txn, ds, getVM);\n }\n }\n\n protected async prepareFilteredData<T = any>(\n kind: AlgorandHandlerKind,\n data: T,\n ): Promise<T> {\n // Algorand doesn't need to do anything here\n return Promise.resolve(data);\n }\n\n protected baseCustomHandlerFilter(\n kind: AlgorandHandlerKind,\n data: any,\n baseFilter: any,\n ): boolean {\n switch (kind) {\n case AlgorandHandlerKind.Block:\n return filterBlock(data as AlgorandBlock, baseFilter);\n case AlgorandHandlerKind.Transaction:\n return filterTransaction(data as AlgorandTransaction, baseFilter);\n default:\n throw new Error('Unsupported handler kind');\n }\n }\n}\n\ntype ProcessorTypeMap = {\n [AlgorandHandlerKind.Block]: typeof isBlockHandlerProcessor;\n [AlgorandHandlerKind.Transaction]: typeof isTransactionHandlerProcessor;\n};\nconst ProcessorTypeMap = {\n [AlgorandHandlerKind.Block]: isBlockHandlerProcessor,\n [AlgorandHandlerKind.Transaction]: isTransactionHandlerProcessor,\n};\nconst FilterTypeMap = {\n [AlgorandHandlerKind.Block]: filterBlock,\n [AlgorandHandlerKind.Transaction]: filterTransaction,\n};\n"]}
|
package/dist/indexer/types.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Copyright 2020-
|
|
2
|
+
// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
|
|
3
3
|
// SPDX-License-Identifier: GPL-3.0
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.getBlockSize = void 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/indexer/types.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;AAMnC,SAAgB,YAAY,CAAC,KAAmB;IAC9C,OAAO,CACL,KAAK,CAAC,YAAY,EAAE,MAAM,CACxB,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,sBAAsB,CAAC,EAAE,CAAC,EAC7C,CAAC,CACF,IAAI,CAAC,CACP,CAAC;AACJ,CAAC;AAPD,oCAOC;AAED,SAAS,sBAAsB,CAAC,EAAuB;IACrD,OAAO,CACL,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxE,CAAC,CACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright 2020-
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/indexer/types.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;AAMnC,SAAgB,YAAY,CAAC,KAAmB;IAC9C,OAAO,CACL,KAAK,CAAC,YAAY,EAAE,MAAM,CACxB,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,sBAAsB,CAAC,EAAE,CAAC,EAC7C,CAAC,CACF,IAAI,CAAC,CACP,CAAC;AACJ,CAAC;AAPD,oCAOC;AAED,SAAS,sBAAsB,CAAC,EAAuB;IACrD,OAAO,CACL,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxE,CAAC,CACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { AlgorandBlock, AlgorandTransaction } from '@subql/types-algorand';\n\nexport type BlockContent = AlgorandBlock;\n\nexport function getBlockSize(block: BlockContent): number {\n return (\n block.transactions?.reduce(\n (acc, tx) => acc + countInnerTransactions(tx),\n 0,\n ) ?? 0\n );\n}\n\nfunction countInnerTransactions(tx: AlgorandTransaction): number {\n return (\n tx.innerTxns?.reduce((acc, itx) => acc + countInnerTransactions(itx), 1) ??\n 1\n );\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Copyright 2020-
|
|
2
|
+
// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
|
|
3
3
|
// SPDX-License-Identifier: GPL-3.0
|
|
4
4
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
5
5
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -13,11 +13,8 @@ const common_1 = require("@nestjs/common");
|
|
|
13
13
|
const event_emitter_1 = require("@nestjs/event-emitter");
|
|
14
14
|
const node_core_1 = require("@subql/node-core");
|
|
15
15
|
const algorand_1 = require("../../algorand");
|
|
16
|
-
const
|
|
17
|
-
const dynamic_ds_service_1 = require("../dynamic-ds.service");
|
|
16
|
+
const blockchain_service_1 = require("../../blockchain.service");
|
|
18
17
|
const indexer_manager_1 = require("../indexer.manager");
|
|
19
|
-
const project_service_1 = require("../project.service");
|
|
20
|
-
const unfinalizedBlocks_service_1 = require("../unfinalizedBlocks.service");
|
|
21
18
|
const worker_service_1 = require("./worker.service");
|
|
22
19
|
let WorkerFetchModule = class WorkerFetchModule {
|
|
23
20
|
};
|
|
@@ -25,24 +22,20 @@ WorkerFetchModule = __decorate([
|
|
|
25
22
|
(0, common_1.Module)({
|
|
26
23
|
imports: [node_core_1.WorkerCoreModule],
|
|
27
24
|
providers: [
|
|
25
|
+
node_core_1.DsProcessorService,
|
|
28
26
|
indexer_manager_1.IndexerManager,
|
|
29
27
|
{
|
|
30
|
-
provide:
|
|
28
|
+
provide: 'APIService',
|
|
31
29
|
useFactory: algorand_1.AlgorandApiService.init,
|
|
32
30
|
inject: ['ISubqueryProject', node_core_1.ConnectionPoolService, event_emitter_1.EventEmitter2],
|
|
33
31
|
},
|
|
34
|
-
ds_processor_service_1.DsProcessorService,
|
|
35
|
-
{
|
|
36
|
-
provide: dynamic_ds_service_1.DynamicDsService,
|
|
37
|
-
useFactory: () => new node_core_1.WorkerDynamicDsService(global.host),
|
|
38
|
-
},
|
|
39
32
|
{
|
|
40
33
|
provide: 'IProjectService',
|
|
41
|
-
useClass:
|
|
34
|
+
useClass: node_core_1.ProjectService,
|
|
42
35
|
},
|
|
43
36
|
{
|
|
44
|
-
provide:
|
|
45
|
-
|
|
37
|
+
provide: 'IBlockchainService',
|
|
38
|
+
useClass: blockchain_service_1.BlockchainService,
|
|
46
39
|
},
|
|
47
40
|
worker_service_1.WorkerService,
|
|
48
41
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-fetch.module.js","sourceRoot":"","sources":["../../../src/indexer/worker/worker-fetch.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;AAEnC,2CAAwC;AACxC,yDAAsD;AACtD,gDAK0B;AAC1B,
|
|
1
|
+
{"version":3,"file":"worker-fetch.module.js","sourceRoot":"","sources":["../../../src/indexer/worker/worker-fetch.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;AAEnC,2CAAwC;AACxC,yDAAsD;AACtD,gDAK0B;AAC1B,6CAAoD;AACpD,iEAA6D;AAC7D,wDAAoD;AACpD,qDAAiD;AAwB1C,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;CAAG,CAAA;AAApB,iBAAiB;IAtB7B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,4BAAgB,CAAC;QAC3B,SAAS,EAAE;YACT,8BAAkB;YAClB,gCAAc;YACd;gBACE,OAAO,EAAE,YAAY;gBACrB,UAAU,EAAE,6BAAkB,CAAC,IAAI;gBACnC,MAAM,EAAE,CAAC,kBAAkB,EAAE,iCAAqB,EAAE,6BAAa,CAAC;aACnE;YACD;gBACE,OAAO,EAAE,iBAAiB;gBAC1B,QAAQ,EAAE,0BAAc;aACzB;YACD;gBACE,OAAO,EAAE,oBAAoB;gBAC7B,QAAQ,EAAE,sCAAiB;aAC5B;YACD,8BAAa;SACd;QACD,OAAO,EAAE,EAAE;KACZ,CAAC;GACW,iBAAiB,CAAG;AAApB,8CAAiB","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Module } from '@nestjs/common';\nimport { EventEmitter2 } from '@nestjs/event-emitter';\nimport {\n ConnectionPoolService,\n DsProcessorService,\n ProjectService,\n WorkerCoreModule,\n} from '@subql/node-core';\nimport { AlgorandApiService } from '../../algorand';\nimport { BlockchainService } from '../../blockchain.service';\nimport { IndexerManager } from '../indexer.manager';\nimport { WorkerService } from './worker.service';\n\n@Module({\n imports: [WorkerCoreModule],\n providers: [\n DsProcessorService,\n IndexerManager,\n {\n provide: 'APIService',\n useFactory: AlgorandApiService.init,\n inject: ['ISubqueryProject', ConnectionPoolService, EventEmitter2],\n },\n {\n provide: 'IProjectService',\n useClass: ProjectService,\n },\n {\n provide: 'IBlockchainService',\n useClass: BlockchainService,\n },\n WorkerService,\n ],\n exports: [],\n})\nexport class WorkerFetchModule {}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Copyright 2020-
|
|
2
|
+
// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
|
|
3
3
|
// SPDX-License-Identifier: GPL-3.0
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
// initlogger and yargs must be imported before all other imports
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/indexer/worker/worker.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;AAEnC,iEAAiE;AACjE,kDAAkD;AAClD,wCAAwC;AACxC,oDAAqD;AACrD,wCAAwC;AACxC,uCAA2C;AAE3C,MAAM,EAAE,IAAI,EAAE,GAAG,oBAAY,CAAC;AAE9B,IAAA,mBAAU,EACR,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,SAA+B,EACpC,IAAI,CAAC,QAA8B,CACpC,CAAC;AAEF,6DAA+C;AAC/C,uCAA2C;AAC3C,
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/indexer/worker/worker.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;AAEnC,iEAAiE;AACjE,kDAAkD;AAClD,wCAAwC;AACxC,oDAAqD;AACrD,wCAAwC;AACxC,uCAA2C;AAE3C,MAAM,EAAE,IAAI,EAAE,GAAG,oBAAY,CAAC;AAE9B,IAAA,mBAAU,EACR,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,SAA+B,EACpC,IAAI,CAAC,QAA8B,CACpC,CAAC;AAEF,6DAA+C;AAC/C,uCAA2C;AAC3C,gDAO0B;AAC1B,mDAA+C;AAC/C,qDAAiD;AAEjD,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,WAAW,8BAAQ,EAAE,CAAC,CAAC;AAEhD,KAAK,UAAU,UAAU,CAAC,WAAoB;IAC5C,IAAI;QACF,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,4BAAY,EAAE;YACjD,MAAM,EAAE,IAAI,sBAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,0EAA0E;SACjH,CAAC,CAAC;QAEH,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAEjB,MAAM,cAAc,GAAmB,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAClE,uGAAuG;QACvG,MAAM,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEvC,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,8BAAa,CAAC,CAAC;QAE7C,IAAA,8BAAkB,EAAC,GAAG,EAAE,aAAa,CAAC,CAAC;KACxC;IAAC,OAAO,CAAM,EAAE;QACf,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAC;QAC1C,MAAM,CAAC,CAAC;KACT;AACH,CAAC;AAIA,MAAc,CAAC,IAAI,GAAG,IAAA,4BAAgB,EAAC,EAAE,EAAE;IAC1C,UAAU;CACX,CAAC,CAAC","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\n// initlogger and yargs must be imported before all other imports\n// making sure logger is defined before its called\n// eslint-disable-next-line import/order\nimport { initLogger } from '@subql/node-core/logger';\n// eslint-disable-next-line import/order\nimport { yargsOptions } from '../../yargs';\n\nconst { argv } = yargsOptions;\n\ninitLogger(\n argv.debug,\n argv.outputFmt as 'json' | 'colored',\n argv.logLevel as string | undefined,\n);\n\nimport { threadId } from 'node:worker_threads';\nimport { NestFactory } from '@nestjs/core';\nimport {\n getLogger,\n NestLogger,\n createWorkerHost,\n IBaseIndexerWorker,\n initWorkerServices,\n ProjectService,\n} from '@subql/node-core';\nimport { WorkerModule } from './worker.module';\nimport { WorkerService } from './worker.service';\n\nconst logger = getLogger(`worker #${threadId}`);\n\nasync function initWorker(startHeight?: number): Promise<void> {\n try {\n const app = await NestFactory.create(WorkerModule, {\n logger: new NestLogger(!!argv.debug), // TIP: If the worker is crashing comment out this line for better logging\n });\n\n await app.init();\n\n const projectService: ProjectService = app.get('IProjectService');\n // Initialise async services, we do this here rather than in factories so we can capture one off events\n await projectService.init(startHeight);\n\n const workerService = app.get(WorkerService);\n\n initWorkerServices(app, workerService);\n } catch (e: any) {\n console.log('Failed to start worker', e);\n logger.error(e, 'Failed to start worker');\n throw e;\n }\n}\n\nexport type IIndexerWorker = IBaseIndexerWorker;\n\n(global as any).host = createWorkerHost([], {\n initWorker,\n});\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Copyright 2020-
|
|
2
|
+
// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
|
|
3
3
|
// SPDX-License-Identifier: GPL-3.0
|
|
4
4
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
5
5
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -20,7 +20,6 @@ let WorkerModule = class WorkerModule {
|
|
|
20
20
|
WorkerModule = __decorate([
|
|
21
21
|
(0, common_1.Module)({
|
|
22
22
|
imports: [
|
|
23
|
-
node_core_1.DbModule.forRoot(),
|
|
24
23
|
event_emitter_1.EventEmitterModule.forRoot(),
|
|
25
24
|
configure_module_1.ConfigureModule.register(),
|
|
26
25
|
schedule_1.ScheduleModule.forRoot(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.module.js","sourceRoot":"","sources":["../../../src/indexer/worker/worker.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;AAEnC,2CAAwC;AACxC,yDAA2D;AAC3D,+CAAkD;AAClD,
|
|
1
|
+
{"version":3,"file":"worker.module.js","sourceRoot":"","sources":["../../../src/indexer/worker/worker.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;AAEnC,2CAAwC;AACxC,yDAA2D;AAC3D,+CAAkD;AAClD,gDAAoD;AACpD,uEAAmE;AACnE,+DAA0D;AAYnD,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAG,CAAA;AAAf,YAAY;IAVxB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,kCAAkB,CAAC,OAAO,EAAE;YAC5B,kCAAe,CAAC,QAAQ,EAAE;YAC1B,yBAAc,CAAC,OAAO,EAAE;YACxB,4BAAgB;YAChB,uCAAiB;SAClB;QACD,WAAW,EAAE,EAAE;KAChB,CAAC;GACW,YAAY,CAAG;AAAf,oCAAY","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Module } from '@nestjs/common';\nimport { EventEmitterModule } from '@nestjs/event-emitter';\nimport { ScheduleModule } from '@nestjs/schedule';\nimport { WorkerCoreModule } from '@subql/node-core';\nimport { ConfigureModule } from '../../configure/configure.module';\nimport { WorkerFetchModule } from './worker-fetch.module';\n\n@Module({\n imports: [\n EventEmitterModule.forRoot(),\n ConfigureModule.register(),\n ScheduleModule.forRoot(),\n WorkerCoreModule,\n WorkerFetchModule,\n ],\n controllers: [],\n})\nexport class WorkerModule {}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Copyright 2020-
|
|
2
|
+
// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
|
|
3
3
|
// SPDX-License-Identifier: GPL-3.0
|
|
4
4
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
5
5
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -44,6 +44,7 @@ let WorkerService = class WorkerService extends node_core_1.BaseWorkerService {
|
|
|
44
44
|
};
|
|
45
45
|
WorkerService = __decorate([
|
|
46
46
|
(0, common_1.Injectable)(),
|
|
47
|
+
__param(0, (0, common_1.Inject)('APIService')),
|
|
47
48
|
__param(2, (0, common_1.Inject)('IProjectService')),
|
|
48
49
|
__param(3, (0, common_1.Inject)('IProjectUpgradeService')),
|
|
49
50
|
__metadata("design:paramtypes", [algorand_1.AlgorandApiService,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.service.js","sourceRoot":"","sources":["../../../src/indexer/worker/worker.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,2CAAoD;AACpD,gDAQ0B;AAE1B,6CAA2E;AAC3E,wDAAoD;AACpD,oCAAsD;AAY/C,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,6BAKlC;
|
|
1
|
+
{"version":3,"file":"worker.service.js","sourceRoot":"","sources":["../../../src/indexer/worker/worker.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,2CAAoD;AACpD,gDAQ0B;AAE1B,6CAA2E;AAC3E,wDAAoD;AACpD,oCAAsD;AAY/C,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,6BAKlC;IAEiC;IACtB;IAFV,YACgC,UAA8B,EACpD,cAA8B,EAEtC,cAAmD,EAEnD,qBAA6C,EAC7C,UAAsB;QAEtB,KAAK,CAAC,cAAc,EAAE,qBAAqB,EAAE,UAAU,CAAC,CAAC;QAR3B,eAAU,GAAV,UAAU,CAAoB;QACpD,mBAAc,GAAd,cAAc,CAAgB;IAQxC,CAAC;IAES,KAAK,CAAC,eAAe,CAC7B,OAAe;QAEf,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC;IACf,CAAC;IACS,eAAe,CAAC,KAAoB;QAC5C,OAAO,IAAA,gCAAqB,EAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IACS,KAAK,CAAC,mBAAmB,CACjC,KAA4B,EAC5B,WAAiC;QAEjC,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC5D,CAAC;IAES,YAAY,CAAC,KAA4B;QACjD,OAAO,IAAA,oBAAY,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;CACF,CAAA;AArCY,aAAa;IADzB,IAAA,mBAAU,GAAE;IAQR,WAAA,IAAA,eAAM,EAAC,YAAY,CAAC,CAAA;IAEpB,WAAA,IAAA,eAAM,EAAC,iBAAiB,CAAC,CAAA;IAEzB,WAAA,IAAA,eAAM,EAAC,wBAAwB,CAAC,CAAA;qCAJS,6BAAkB;QACpC,gCAAc,kBAK1B,sBAAU;GAbb,aAAa,CAqCzB;AArCY,sCAAa","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Inject, Injectable } from '@nestjs/common';\nimport {\n NodeConfig,\n IProjectService,\n BaseWorkerService,\n IProjectUpgradeService,\n IBlock,\n ProcessBlockResponse,\n Header,\n} from '@subql/node-core';\nimport { AlgorandBlock, AlgorandDataSource } from '@subql/types-algorand';\nimport { AlgorandApiService, algorandBlockToHeader } from '../../algorand';\nimport { IndexerManager } from '../indexer.manager';\nimport { BlockContent, getBlockSize } from '../types';\n\nexport type FetchBlockResponse = Header;\n\nexport type WorkerStatusResponse = {\n threadId: number;\n isIndexing: boolean;\n fetchedBlocks: number;\n toFetchBlocks: number;\n};\n\n@Injectable()\nexport class WorkerService extends BaseWorkerService<\n BlockContent,\n FetchBlockResponse,\n AlgorandDataSource,\n {}\n> {\n constructor(\n @Inject('APIService') private apiService: AlgorandApiService,\n private indexerManager: IndexerManager,\n @Inject('IProjectService')\n projectService: IProjectService<AlgorandDataSource>,\n @Inject('IProjectUpgradeService')\n projectUpgradeService: IProjectUpgradeService,\n nodeConfig: NodeConfig,\n ) {\n super(projectService, projectUpgradeService, nodeConfig);\n }\n\n protected async fetchChainBlock(\n heights: number,\n ): Promise<IBlock<AlgorandBlock>> {\n const [block] = await this.apiService.fetchBlocks([heights]);\n return block;\n }\n protected toBlockResponse(block: AlgorandBlock): Header {\n return algorandBlockToHeader(block);\n }\n protected async processFetchedBlock(\n block: IBlock<AlgorandBlock>,\n dataSources: AlgorandDataSource[],\n ): Promise<ProcessBlockResponse> {\n return this.indexerManager.indexBlock(block, dataSources);\n }\n\n protected getBlockSize(block: IBlock<AlgorandBlock>): number {\n return getBlockSize(block.block);\n }\n}\n"]}
|