@subql/node-ethereum 2.12.6-1 → 2.12.6-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/configure/NodeConfig.d.ts +21 -0
- package/dist/configure/NodeConfig.js +31 -0
- package/dist/configure/NodeConfig.js.map +1 -0
- package/dist/configure/SubqueryProject.d.ts +21 -29
- package/dist/configure/SubqueryProject.js +48 -72
- package/dist/configure/SubqueryProject.js.map +1 -1
- package/dist/configure/configure.module.d.ts +2 -2
- package/dist/configure/configure.module.js +19 -89
- package/dist/configure/configure.module.js.map +1 -1
- package/dist/ethereum/api.connection.d.ts +7 -7
- package/dist/ethereum/api.connection.js +4 -4
- package/dist/ethereum/api.connection.js.map +1 -1
- package/dist/ethereum/api.ethereum.d.ts +14 -8
- package/dist/ethereum/api.ethereum.js +24 -13
- package/dist/ethereum/api.ethereum.js.map +1 -1
- package/dist/ethereum/api.ethereum.test.js +29 -32
- package/dist/ethereum/api.ethereum.test.js.map +1 -1
- package/dist/ethereum/api.service.ethereum.d.ts +9 -7
- package/dist/ethereum/api.service.ethereum.js +56 -64
- package/dist/ethereum/api.service.ethereum.js.map +1 -1
- package/dist/ethereum/api.service.ethereum.test.js +8 -13
- package/dist/ethereum/api.service.ethereum.test.js.map +1 -1
- package/dist/ethereum/block.ethereum.d.ts +6 -15
- package/dist/ethereum/block.ethereum.js +52 -79
- package/dist/ethereum/block.ethereum.js.map +1 -1
- package/dist/ethereum/ethers/celo/celo-json-rpc-batch-provider.spec.js +3 -6
- package/dist/ethereum/ethers/celo/celo-json-rpc-batch-provider.spec.js.map +1 -1
- package/dist/ethereum/ethers/celo/celo-json-rpc-provider.spec.js +3 -6
- package/dist/ethereum/ethers/celo/celo-json-rpc-provider.spec.js.map +1 -1
- package/dist/ethereum/ethers/celo/celo-ws-provider.spec.js +3 -6
- package/dist/ethereum/ethers/celo/celo-ws-provider.spec.js.map +1 -1
- package/dist/indexer/blockDispatcher/block-dispatcher.service.d.ts +7 -7
- package/dist/indexer/blockDispatcher/block-dispatcher.service.js +7 -6
- package/dist/indexer/blockDispatcher/block-dispatcher.service.js.map +1 -1
- package/dist/indexer/blockDispatcher/worker-block-dispatcher.service.d.ts +4 -4
- package/dist/indexer/blockDispatcher/worker-block-dispatcher.service.js +9 -18
- package/dist/indexer/blockDispatcher/worker-block-dispatcher.service.js.map +1 -1
- package/dist/indexer/dictionary.service.d.ts +3 -3
- package/dist/indexer/dictionary.service.js +7 -5
- package/dist/indexer/dictionary.service.js.map +1 -1
- package/dist/indexer/dynamic-ds.service.d.ts +3 -3
- package/dist/indexer/dynamic-ds.service.js.map +1 -1
- package/dist/indexer/fetch.module.js +8 -10
- package/dist/indexer/fetch.module.js.map +1 -1
- package/dist/indexer/fetch.service.d.ts +10 -10
- package/dist/indexer/fetch.service.js +22 -43
- package/dist/indexer/fetch.service.js.map +1 -1
- package/dist/indexer/fetch.service.spec.js +25 -45
- package/dist/indexer/fetch.service.spec.js.map +1 -1
- package/dist/indexer/indexer.manager.d.ts +10 -12
- package/dist/indexer/indexer.manager.js +20 -30
- package/dist/indexer/indexer.manager.js.map +1 -1
- package/dist/indexer/project.service.d.ts +8 -6
- package/dist/indexer/project.service.js +19 -12
- package/dist/indexer/project.service.js.map +1 -1
- package/dist/indexer/project.service.test.d.ts +1 -0
- package/dist/indexer/project.service.test.js +26 -0
- package/dist/indexer/project.service.test.js.map +1 -0
- package/dist/indexer/sandbox.service.d.ts +1 -1
- package/dist/indexer/sandbox.service.js +1 -0
- package/dist/indexer/sandbox.service.js.map +1 -1
- package/dist/indexer/types.d.ts +2 -11
- package/dist/indexer/types.js +0 -6
- package/dist/indexer/types.js.map +1 -1
- package/dist/indexer/unfinalizedBlocks.service.d.ts +4 -4
- package/dist/indexer/unfinalizedBlocks.service.js +25 -1
- package/dist/indexer/unfinalizedBlocks.service.js.map +1 -1
- package/dist/indexer/worker/worker.d.ts +4 -28
- package/dist/indexer/worker/worker.js +8 -71
- package/dist/indexer/worker/worker.js.map +1 -1
- package/dist/indexer/worker/worker.module.js +2 -2
- package/dist/indexer/worker/worker.module.js.map +1 -1
- package/dist/indexer/worker/worker.service.d.ts +11 -13
- package/dist/indexer/worker/worker.service.js +14 -56
- package/dist/indexer/worker/worker.service.js.map +1 -1
- package/dist/indexer/worker/worker.unfinalizedBlocks.service.d.ts +4 -8
- package/dist/indexer/worker/worker.unfinalizedBlocks.service.js +8 -7
- package/dist/indexer/worker/worker.unfinalizedBlocks.service.js.map +1 -1
- package/dist/indexer/worker-fetch.module.d.ts +2 -0
- package/dist/indexer/{indexer.module.js → worker-fetch.module.js} +10 -33
- package/dist/indexer/worker-fetch.module.js.map +1 -0
- package/dist/init.js +1 -1
- package/dist/init.js.map +1 -1
- package/dist/main.js +4 -8
- package/dist/main.js.map +1 -1
- package/dist/subcommands/reindex.init.js +1 -2
- package/dist/subcommands/reindex.init.js.map +1 -1
- package/dist/subcommands/reindex.module.js +10 -6
- package/dist/subcommands/reindex.module.js.map +1 -1
- package/dist/subcommands/testing.init.js +2 -4
- package/dist/subcommands/testing.init.js.map +1 -1
- package/dist/subcommands/testing.module.js +3 -8
- package/dist/subcommands/testing.module.js.map +1 -1
- package/dist/subcommands/testing.service.d.ts +8 -5
- package/dist/subcommands/testing.service.js +3 -8
- package/dist/subcommands/testing.service.js.map +1 -1
- package/dist/utils/project.d.ts +5 -4
- package/dist/utils/project.js +17 -1
- package/dist/utils/project.js.map +1 -1
- package/dist/yargs.d.ts +7 -90
- package/dist/yargs.js +9 -112
- package/dist/yargs.js.map +1 -1
- package/package.json +8 -8
- package/dist/indexer/indexer.module.d.ts +0 -2
- package/dist/indexer/indexer.module.js.map +0 -1
- package/dist/subcommands/mmrMigrate.init.d.ts +0 -2
- package/dist/subcommands/mmrMigrate.init.js +0 -28
- package/dist/subcommands/mmrMigrate.init.js.map +0 -1
- package/dist/subcommands/mmrMigrate.module.d.ts +0 -2
- package/dist/subcommands/mmrMigrate.module.js +0 -28
- package/dist/subcommands/mmrMigrate.module.js.map +0 -1
- package/dist/subcommands/mmrRegenerate.init.d.ts +0 -1
- package/dist/subcommands/mmrRegenerate.init.js +0 -28
- package/dist/subcommands/mmrRegenerate.init.js.map +0 -1
- package/dist/subcommands/mmrRegenerate.module.d.ts +0 -2
- package/dist/subcommands/mmrRegenerate.module.js +0 -30
- package/dist/subcommands/mmrRegenerate.module.js.map +0 -1
- package/dist/subcommands/reindex.service.d.ts +0 -11
- package/dist/subcommands/reindex.service.js +0 -46
- package/dist/subcommands/reindex.service.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.service.js","sourceRoot":"","sources":["../../../src/indexer/worker/worker.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,
|
|
1
|
+
{"version":3,"file":"worker.service.js","sourceRoot":"","sources":["../../../src/indexer/worker/worker.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,2CAAoD;AAEpD,gDAO0B;AAE1B,wDAAoD;AAa7C,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,6BAKlC;IACC,YACU,UAAsB,EACtB,cAA8B,EAEtC,cAAkD,EAElD,qBAA6C,EAC7C,UAAsB;QAEtB,KAAK,CAAC,cAAc,EAAE,qBAAqB,EAAE,UAAU,CAAC,CAAC;QARjD,eAAU,GAAV,UAAU,CAAY;QACtB,mBAAc,GAAd,cAAc,CAAgB;IAQxC,CAAC;IAES,KAAK,CAAC,eAAe,CAC7B,OAAe,EACf,KAAS;QAET,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC;IACf,CAAC;IAES,eAAe,CAAC,KAAmB;QAC3C,OAAO;YACL,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,mBAAmB,CACjC,KAAmB,EACnB,WAAsC;QAEtC,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC5D,CAAC;CACF,CAAA;AAtCY,aAAa;IADzB,IAAA,mBAAU,GAAE;IAUR,WAAA,IAAA,eAAM,EAAC,iBAAiB,CAAC,CAAA;IAEzB,WAAA,IAAA,eAAM,EAAC,wBAAwB,CAAC,CAAA;qCAJb,sBAAU;QACN,gCAAc,kBAK1B,sBAAU;GAbb,aAAa,CAsCzB;AAtCY,sCAAa","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Inject, Injectable } from '@nestjs/common';\nimport { SubqlEthereumDataSource } from '@subql/common-ethereum';\nimport {\n NodeConfig,\n IProjectService,\n ProcessBlockResponse,\n ApiService,\n BaseWorkerService,\n IProjectUpgradeService,\n} from '@subql/node-core';\nimport { EthereumProjectDs } from '../../configure/SubqueryProject';\nimport { IndexerManager } from '../indexer.manager';\nimport { BlockContent } from '../types';\n\nexport type FetchBlockResponse = { parentHash: string } | undefined;\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 SubqlEthereumDataSource,\n {}\n> {\n constructor(\n private apiService: ApiService,\n private indexerManager: IndexerManager,\n @Inject('IProjectService')\n projectService: IProjectService<EthereumProjectDs>,\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 extra: {},\n ): Promise<BlockContent> {\n const [block] = await this.apiService.fetchBlocks([heights]);\n return block;\n }\n\n protected toBlockResponse(block: BlockContent): { parentHash: string } {\n return {\n parentHash: block.parentHash,\n };\n }\n\n protected async processFetchedBlock(\n block: BlockContent,\n dataSources: SubqlEthereumDataSource[],\n ): Promise<ProcessBlockResponse> {\n return this.indexerManager.indexBlock(block, dataSources);\n }\n}\n"]}
|
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
import { Header, IUnfinalizedBlocksService } from '@subql/node-core';
|
|
2
|
-
import {
|
|
3
|
-
export
|
|
4
|
-
unfinalizedBlocksProcess: (header: Header) => Promise<number | null>;
|
|
5
|
-
};
|
|
6
|
-
export declare const hostUnfinalizedBlocksKeys: (keyof HostUnfinalizedBlocks)[];
|
|
7
|
-
export declare class WorkerUnfinalizedBlocksService implements IUnfinalizedBlocksService<BlockWrapper> {
|
|
1
|
+
import { Header, HostUnfinalizedBlocks, IUnfinalizedBlocksService } from '@subql/node-core';
|
|
2
|
+
import { BlockContent } from '../types';
|
|
3
|
+
export declare class WorkerUnfinalizedBlocksService implements IUnfinalizedBlocksService<BlockContent> {
|
|
8
4
|
private host;
|
|
9
5
|
constructor(host: HostUnfinalizedBlocks);
|
|
10
6
|
processUnfinalizedBlockHeader(header: Header): Promise<number | null>;
|
|
11
|
-
processUnfinalizedBlocks({
|
|
7
|
+
processUnfinalizedBlocks({ hash, number, parentHash, }: BlockContent): Promise<number | null>;
|
|
12
8
|
init(reindex: (targetHeight: number) => Promise<void>): Promise<number>;
|
|
13
9
|
resetUnfinalizedBlocks(): void;
|
|
14
10
|
resetLastFinalizedVerifiedHeight(): void;
|
|
@@ -11,22 +11,23 @@ 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
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.WorkerUnfinalizedBlocksService =
|
|
14
|
+
exports.WorkerUnfinalizedBlocksService = void 0;
|
|
15
|
+
const worker_threads_1 = require("worker_threads");
|
|
15
16
|
const common_1 = require("@nestjs/common");
|
|
16
|
-
exports.hostUnfinalizedBlocksKeys = [
|
|
17
|
-
'unfinalizedBlocksProcess',
|
|
18
|
-
];
|
|
19
17
|
let WorkerUnfinalizedBlocksService = class WorkerUnfinalizedBlocksService {
|
|
20
18
|
constructor(host) {
|
|
21
19
|
this.host = host;
|
|
20
|
+
if (worker_threads_1.isMainThread) {
|
|
21
|
+
throw new Error('Expected to be worker thread');
|
|
22
|
+
}
|
|
22
23
|
}
|
|
23
24
|
async processUnfinalizedBlockHeader(header) {
|
|
24
25
|
return this.host.unfinalizedBlocksProcess(header);
|
|
25
26
|
}
|
|
26
|
-
async processUnfinalizedBlocks({
|
|
27
|
+
async processUnfinalizedBlocks({ hash, number, parentHash, }) {
|
|
27
28
|
return this.host.unfinalizedBlocksProcess({
|
|
28
|
-
blockHash,
|
|
29
|
-
blockHeight,
|
|
29
|
+
blockHash: hash,
|
|
30
|
+
blockHeight: number,
|
|
30
31
|
parentHash,
|
|
31
32
|
});
|
|
32
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.unfinalizedBlocks.service.js","sourceRoot":"","sources":["../../../src/indexer/worker/worker.unfinalizedBlocks.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;AAEnC,
|
|
1
|
+
{"version":3,"file":"worker.unfinalizedBlocks.service.js","sourceRoot":"","sources":["../../../src/indexer/worker/worker.unfinalizedBlocks.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;AAEnC,mDAA8C;AAC9C,2CAA4C;AASrC,IAAM,8BAA8B,GAApC,MAAM,8BAA8B;IAGzC,YAAoB,IAA2B;QAA3B,SAAI,GAAJ,IAAI,CAAuB;QAC7C,IAAI,6BAAY,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;SACjD;IACH,CAAC;IAED,KAAK,CAAC,6BAA6B,CAAC,MAAc;QAChD,OAAO,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,EAC7B,IAAI,EACJ,MAAM,EACN,UAAU,GACG;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC;YACxC,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,MAAM;YACnB,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,qEAAqE;IACrE,IAAI,CAAC,OAAgD;QACnD,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,sBAAsB;QACpB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,gCAAgC;QAC9B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,qEAAqE;IACrE,4BAA4B;QAC1B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;CACF,CAAA;AAvCY,8BAA8B;IAD1C,IAAA,mBAAU,GAAE;;GACA,8BAA8B,CAuC1C;AAvCY,wEAA8B","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { isMainThread } from 'worker_threads';\nimport { Injectable } from '@nestjs/common';\nimport {\n Header,\n HostUnfinalizedBlocks,\n IUnfinalizedBlocksService,\n} from '@subql/node-core';\nimport { BlockContent } from '../types';\n\n@Injectable()\nexport class WorkerUnfinalizedBlocksService\n implements IUnfinalizedBlocksService<BlockContent>\n{\n constructor(private host: HostUnfinalizedBlocks) {\n if (isMainThread) {\n throw new Error('Expected to be worker thread');\n }\n }\n\n async processUnfinalizedBlockHeader(header: Header): Promise<number | null> {\n return this.host.unfinalizedBlocksProcess(header);\n }\n\n async processUnfinalizedBlocks({\n hash,\n number,\n parentHash,\n }: BlockContent): Promise<number | null> {\n return this.host.unfinalizedBlocksProcess({\n blockHash: hash,\n blockHeight: number,\n parentHash,\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n init(reindex: (targetHeight: number) => Promise<void>): Promise<number> {\n throw new Error('This method should not be called from a worker');\n }\n resetUnfinalizedBlocks(): void {\n throw new Error('This method should not be called from a worker');\n }\n resetLastFinalizedVerifiedHeight(): void {\n throw new Error('This method should not be called from a worker');\n }\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n getMetadataUnfinalizedBlocks(): Promise<Header[]> {\n throw new Error('This method should not be called from a worker');\n }\n}\n"]}
|
|
@@ -8,8 +8,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
9
9
|
};
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
exports.
|
|
12
|
-
const worker_threads_1 = require("worker_threads");
|
|
11
|
+
exports.WorkerFetchModule = void 0;
|
|
13
12
|
const common_1 = require("@nestjs/common");
|
|
14
13
|
const event_emitter_1 = require("@nestjs/event-emitter");
|
|
15
14
|
const node_core_1 = require("@subql/node-core");
|
|
@@ -22,22 +21,15 @@ const sandbox_service_1 = require("./sandbox.service");
|
|
|
22
21
|
const unfinalizedBlocks_service_1 = require("./unfinalizedBlocks.service");
|
|
23
22
|
const worker_service_1 = require("./worker/worker.service");
|
|
24
23
|
const worker_unfinalizedBlocks_service_1 = require("./worker/worker.unfinalizedBlocks.service");
|
|
25
|
-
let
|
|
24
|
+
let WorkerFetchModule = class WorkerFetchModule {
|
|
26
25
|
};
|
|
27
|
-
|
|
26
|
+
WorkerFetchModule = __decorate([
|
|
28
27
|
(0, common_1.Module)({
|
|
29
28
|
providers: [
|
|
30
29
|
indexer_manager_1.IndexerManager,
|
|
31
|
-
node_core_1.StoreCacheService,
|
|
32
|
-
node_core_1.StoreService,
|
|
33
30
|
{
|
|
34
31
|
provide: node_core_1.ConnectionPoolStateManager,
|
|
35
|
-
useFactory: () =>
|
|
36
|
-
if (worker_threads_1.isMainThread) {
|
|
37
|
-
throw new Error('Expected to be worker thread');
|
|
38
|
-
}
|
|
39
|
-
return new node_core_1.WorkerConnectionPoolStateManager(global.host);
|
|
40
|
-
},
|
|
32
|
+
useFactory: () => new node_core_1.WorkerConnectionPoolStateManager(global.host),
|
|
41
33
|
},
|
|
42
34
|
node_core_1.ConnectionPoolService,
|
|
43
35
|
{
|
|
@@ -58,34 +50,19 @@ IndexerModule = __decorate([
|
|
|
58
50
|
ds_processor_service_1.DsProcessorService,
|
|
59
51
|
{
|
|
60
52
|
provide: dynamic_ds_service_1.DynamicDsService,
|
|
61
|
-
useFactory: () =>
|
|
62
|
-
if (worker_threads_1.isMainThread) {
|
|
63
|
-
throw new Error('Expected to be worker thread');
|
|
64
|
-
}
|
|
65
|
-
return new node_core_1.WorkerDynamicDsService(global.host);
|
|
66
|
-
},
|
|
53
|
+
useFactory: () => new node_core_1.WorkerDynamicDsService(global.host),
|
|
67
54
|
},
|
|
68
|
-
node_core_1.PoiService,
|
|
69
|
-
node_core_1.MmrService,
|
|
70
|
-
node_core_1.PgMmrCacheService,
|
|
71
|
-
node_core_1.MmrQueryService,
|
|
72
55
|
{
|
|
73
56
|
provide: 'IProjectService',
|
|
74
57
|
useClass: project_service_1.ProjectService,
|
|
75
58
|
},
|
|
76
|
-
worker_service_1.WorkerService,
|
|
77
59
|
{
|
|
78
60
|
provide: unfinalizedBlocks_service_1.UnfinalizedBlocksService,
|
|
79
|
-
useFactory: () =>
|
|
80
|
-
if (worker_threads_1.isMainThread) {
|
|
81
|
-
throw new Error('Expected to be worker thread');
|
|
82
|
-
}
|
|
83
|
-
return new worker_unfinalizedBlocks_service_1.WorkerUnfinalizedBlocksService(global.host);
|
|
84
|
-
},
|
|
61
|
+
useFactory: () => new worker_unfinalizedBlocks_service_1.WorkerUnfinalizedBlocksService(global.host),
|
|
85
62
|
},
|
|
63
|
+
worker_service_1.WorkerService,
|
|
86
64
|
],
|
|
87
|
-
exports: [node_core_1.StoreService, node_core_1.MmrService, node_core_1.MmrQueryService],
|
|
88
65
|
})
|
|
89
|
-
],
|
|
90
|
-
exports.
|
|
91
|
-
//# sourceMappingURL=
|
|
66
|
+
], WorkerFetchModule);
|
|
67
|
+
exports.WorkerFetchModule = WorkerFetchModule;
|
|
68
|
+
//# sourceMappingURL=worker-fetch.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-fetch.module.js","sourceRoot":"","sources":["../../src/indexer/worker-fetch.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;AAEnC,2CAAwC;AACxC,yDAAsD;AACtD,gDAO0B;AAE1B,0CAAiD;AAEjD,iEAA4D;AAC5D,6DAAwD;AACxD,uDAAmD;AACnD,uDAAmD;AACnD,uDAAmD;AACnD,2EAAuE;AACvE,4DAAwD;AACxD,gGAA2F;AAqDpF,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;CAAG,CAAA;AAApB,iBAAiB;IAnD7B,IAAA,eAAM,EAAC;QACN,SAAS,EAAE;YACT,gCAAc;YACd;gBACE,OAAO,EAAE,sCAA0B;gBACnC,UAAU,EAAE,GAAG,EAAE,CACf,IAAI,4CAAgC,CAAE,MAAc,CAAC,IAAI,CAAC;aAC7D;YACD,iCAAqB;YACrB;gBACE,OAAO,EAAE,sBAAU;gBACnB,UAAU,EAAE,KAAK,EACf,OAAwB,EACxB,qBAAmE,EACnE,YAA2B,EAC3B,UAAsB,EACtB,EAAE;oBACF,MAAM,UAAU,GAAG,IAAI,6BAAkB,CACvC,OAAO,EACP,qBAAqB,EACrB,YAAY,EACZ,UAAU,CACX,CAAC;oBACF,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;oBACxB,OAAO,UAAU,CAAC;gBACpB,CAAC;gBACD,MAAM,EAAE;oBACN,kBAAkB;oBAClB,iCAAqB;oBACrB,6BAAa;oBACb,sBAAU;iBACX;aACF;YACD,gCAAc;YACd,yCAAkB;YAClB;gBACE,OAAO,EAAE,qCAAgB;gBACzB,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,kCAAsB,CAAE,MAAc,CAAC,IAAI,CAAC;aACnE;YACD;gBACE,OAAO,EAAE,iBAAiB;gBAC1B,QAAQ,EAAE,gCAAc;aACzB;YACD;gBACE,OAAO,EAAE,oDAAwB;gBACjC,UAAU,EAAE,GAAG,EAAE,CACf,IAAI,iEAA8B,CAAE,MAAc,CAAC,IAAI,CAAC;aAC3D;YACD,8BAAa;SACd;KACF,CAAC;GACW,iBAAiB,CAAG;AAApB,8CAAiB","sourcesContent":["// Copyright 2020-2023 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 ApiService,\n ConnectionPoolService,\n WorkerDynamicDsService,\n WorkerConnectionPoolStateManager,\n ConnectionPoolStateManager,\n NodeConfig,\n} from '@subql/node-core';\nimport { SubqueryProject } from '../configure/SubqueryProject';\nimport { EthereumApiService } from '../ethereum';\nimport { EthereumApiConnection } from '../ethereum/api.connection';\nimport { DsProcessorService } from './ds-processor.service';\nimport { DynamicDsService } from './dynamic-ds.service';\nimport { IndexerManager } from './indexer.manager';\nimport { ProjectService } from './project.service';\nimport { SandboxService } from './sandbox.service';\nimport { UnfinalizedBlocksService } from './unfinalizedBlocks.service';\nimport { WorkerService } from './worker/worker.service';\nimport { WorkerUnfinalizedBlocksService } from './worker/worker.unfinalizedBlocks.service';\n\n@Module({\n providers: [\n IndexerManager,\n {\n provide: ConnectionPoolStateManager,\n useFactory: () =>\n new WorkerConnectionPoolStateManager((global as any).host),\n },\n ConnectionPoolService,\n {\n provide: ApiService,\n useFactory: async (\n project: SubqueryProject,\n connectionPoolService: ConnectionPoolService<EthereumApiConnection>,\n eventEmitter: EventEmitter2,\n nodeConfig: NodeConfig,\n ) => {\n const apiService = new EthereumApiService(\n project,\n connectionPoolService,\n eventEmitter,\n nodeConfig,\n );\n await apiService.init();\n return apiService;\n },\n inject: [\n 'ISubqueryProject',\n ConnectionPoolService,\n EventEmitter2,\n NodeConfig,\n ],\n },\n SandboxService,\n DsProcessorService,\n {\n provide: DynamicDsService,\n useFactory: () => new WorkerDynamicDsService((global as any).host),\n },\n {\n provide: 'IProjectService',\n useClass: ProjectService,\n },\n {\n provide: UnfinalizedBlocksService,\n useFactory: () =>\n new WorkerUnfinalizedBlocksService((global as any).host),\n },\n WorkerService,\n ],\n})\nexport class WorkerFetchModule {}\n"]}
|
package/dist/init.js
CHANGED
|
@@ -32,7 +32,7 @@ async function bootstrap() {
|
|
|
32
32
|
}
|
|
33
33
|
try {
|
|
34
34
|
const app = await core_1.NestFactory.create(app_module_1.AppModule, {
|
|
35
|
-
logger:
|
|
35
|
+
logger: new node_core_1.NestLogger(debug),
|
|
36
36
|
});
|
|
37
37
|
await app.init();
|
|
38
38
|
const projectService = app.get('IProjectService');
|
package/dist/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;AAEnC,uCAA2C;AAC3C,0CAAiE;AACjE,gDAAyD;AACzD,6CAAyC;AACzC,2DAAuD;AAEvD,mCAAuC;AACvC,MAAM,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEzC,MAAM,EAAE,IAAI,EAAE,GAAG,oBAAY,CAAC;AAE9B,MAAM,YAAY,GAAG,IAAI,CAAC;AAC1B,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,YAAY,CAAC,CAAC;AAEvC,IAAA,sBAAa,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAEtB,KAAK,UAAU,SAAS;;IAC7B,MAAM,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,eAAe,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAEzB,MAAM,QAAQ,GAAG,CAAC,CAAM,EAAE,EAAE;QAC1B,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACtB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,MAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,mCAAI,CAAC,MAAM,IAAA,0BAAiB,EAAC,YAAY,CAAC,CAAC,CAAC;IAC5E,IAAI,CAAC,IAAI,EAAE;QACT,MAAM,CAAC,KAAK,CACV,wDAAwD,IAAI,KAC1D,IAAI,GAAG,EACT,iEAAiE,CAClE,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IAED,IAAI,IAAI,CAAC,MAAM,EAAE;QACf,MAAM,CAAC,IAAI,CACT,mHAAmH,CACpH,CAAC;KACH;IAED,IAAI;QACF,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,sBAAS,EAAE;YAC9C,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;AAEnC,uCAA2C;AAC3C,0CAAiE;AACjE,gDAAyD;AACzD,6CAAyC;AACzC,2DAAuD;AAEvD,mCAAuC;AACvC,MAAM,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEzC,MAAM,EAAE,IAAI,EAAE,GAAG,oBAAY,CAAC;AAE9B,MAAM,YAAY,GAAG,IAAI,CAAC;AAC1B,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,YAAY,CAAC,CAAC;AAEvC,IAAA,sBAAa,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAEtB,KAAK,UAAU,SAAS;;IAC7B,MAAM,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,eAAe,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAEzB,MAAM,QAAQ,GAAG,CAAC,CAAM,EAAE,EAAE;QAC1B,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACtB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,MAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,mCAAI,CAAC,MAAM,IAAA,0BAAiB,EAAC,YAAY,CAAC,CAAC,CAAC;IAC5E,IAAI,CAAC,IAAI,EAAE;QACT,MAAM,CAAC,KAAK,CACV,wDAAwD,IAAI,KAC1D,IAAI,GAAG,EACT,iEAAiE,CAClE,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IAED,IAAI,IAAI,CAAC,MAAM,EAAE;QACf,MAAM,CAAC,IAAI,CACT,mHAAmH,CACpH,CAAC;KACH;IAED,IAAI;QACF,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,sBAAS,EAAE;YAC9C,MAAM,EAAE,IAAI,sBAAU,CAAC,KAAK,CAAC;SAC9B,CAAC,CAAC;QACH,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAEjB,MAAM,cAAc,GAAmB,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAClE,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,4BAAY,CAAC,CAAC;QAE3C,yGAAyG;QACzG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAEpD,GAAG,CAAC,mBAAmB,EAAE,CAAC;QAE1B,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEvB,MAAM,CAAC,IAAI,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;KAC9C;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;AACH,CAAC;AA/CD,8BA+CC","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { NestFactory } from '@nestjs/core';\nimport { findAvailablePort, notifyUpdates } from '@subql/common';\nimport { getLogger, NestLogger } from '@subql/node-core';\nimport { AppModule } from './app.module';\nimport { FetchService } from './indexer/fetch.service';\nimport { ProjectService } from './indexer/project.service';\nimport { yargsOptions } from './yargs';\nconst pjson = require('../package.json');\n\nconst { argv } = yargsOptions;\n\nconst DEFAULT_PORT = 3000;\nconst logger = getLogger('subql-node');\n\nnotifyUpdates(pjson, logger);\n\nexport async function bootstrap(): Promise<void> {\n logger.info(`Current ${pjson.name} version is ${pjson.version}`);\n const debug = argv.debug;\n\n const validate = (x: any) => {\n const p = parseInt(x);\n return isNaN(p) ? null : p;\n };\n\n const port = validate(argv.port) ?? (await findAvailablePort(DEFAULT_PORT));\n if (!port) {\n logger.error(\n `Unable to find available port (tried ports in range (${port}..${\n port + 10\n })). Try setting a free port manually by setting the --port flag`,\n );\n process.exit(1);\n }\n\n if (argv.unsafe) {\n logger.warn(\n 'UNSAFE MODE IS ENABLED. This is not recommended for most projects and will not be supported by our hosted service',\n );\n }\n\n try {\n const app = await NestFactory.create(AppModule, {\n logger: new NestLogger(debug),\n });\n await app.init();\n\n const projectService: ProjectService = app.get('IProjectService');\n const fetchService = app.get(FetchService);\n\n // Initialise async services, we do this here rather than in factories, so we can capture one off eventss\n await projectService.init();\n await fetchService.init(projectService.startHeight);\n\n app.enableShutdownHooks();\n\n await app.listen(port);\n\n logger.info(`Node started on port: ${port}`);\n } catch (e) {\n logger.error(e, 'Node failed to start');\n process.exit(1);\n }\n}\n"]}
|
package/dist/main.js
CHANGED
|
@@ -10,14 +10,10 @@ BigInt.prototype.toJSON = function () {
|
|
|
10
10
|
};
|
|
11
11
|
// initLogger is imported from true path, to make sure getLogger (or other logger values that relies on logger) isn't initialised
|
|
12
12
|
(0, logger_1.initLogger)(argv.debug, argv.outputFmt, argv.logLevel);
|
|
13
|
-
|
|
14
|
-
//
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
argv._[0] === 'mmr-migrate' ||
|
|
18
|
-
argv._[0] === 'mmr-regen' ||
|
|
19
|
-
argv._[0] === 'force-clean' ||
|
|
20
|
-
argv._[0] === 'reindex')) {
|
|
13
|
+
if (argv._[0] === undefined) {
|
|
14
|
+
// Lazy import, to allow logger to be initialised before bootstrap()
|
|
15
|
+
// As bootstrap runs services that requires logger
|
|
16
|
+
const { bootstrap } = require('./init');
|
|
21
17
|
void bootstrap();
|
|
22
18
|
}
|
|
23
19
|
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;AAEnC,oDAAqD;AACrD,mCAAuC;AAEvC,MAAM,EAAE,IAAI,EAAE,GAAG,oBAAY,CAAC;AAE7B,MAAM,CAAC,SAAiB,CAAC,MAAM,GAAG;IACjC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;AACzB,CAAC,CAAC;AAEF,iIAAiI;AACjI,IAAA,mBAAU,EACR,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,SAA+B,EACpC,IAAI,CAAC,QAA8B,CACpC,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;AAEnC,oDAAqD;AACrD,mCAAuC;AAEvC,MAAM,EAAE,IAAI,EAAE,GAAG,oBAAY,CAAC;AAE7B,MAAM,CAAC,SAAiB,CAAC,MAAM,GAAG;IACjC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;AACzB,CAAC,CAAC;AAEF,iIAAiI;AACjI,IAAA,mBAAU,EACR,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,SAA+B,EACpC,IAAI,CAAC,QAA8B,CACpC,CAAC;AAEF,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;IAC3B,oEAAoE;IACpE,kDAAkD;IAClD,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,KAAK,SAAS,EAAE,CAAC;CAClB","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { initLogger } from '@subql/node-core/logger';\nimport { yargsOptions } from './yargs';\n\nconst { argv } = yargsOptions;\n\n(BigInt.prototype as any).toJSON = function () {\n return this.toString();\n};\n\n// initLogger is imported from true path, to make sure getLogger (or other logger values that relies on logger) isn't initialised\ninitLogger(\n argv.debug,\n argv.outputFmt as 'json' | 'colored',\n argv.logLevel as string | undefined,\n);\n\nif (argv._[0] === undefined) {\n // Lazy import, to allow logger to be initialised before bootstrap()\n // As bootstrap runs services that requires logger\n const { bootstrap } = require('./init');\n void bootstrap();\n}\n"]}
|
|
@@ -6,13 +6,12 @@ exports.reindexInit = void 0;
|
|
|
6
6
|
const core_1 = require("@nestjs/core");
|
|
7
7
|
const node_core_1 = require("@subql/node-core");
|
|
8
8
|
const reindex_module_1 = require("./reindex.module");
|
|
9
|
-
const reindex_service_1 = require("./reindex.service");
|
|
10
9
|
const logger = (0, node_core_1.getLogger)('CLI-Reindex');
|
|
11
10
|
async function reindexInit(targetHeight) {
|
|
12
11
|
try {
|
|
13
12
|
const app = await core_1.NestFactory.create(reindex_module_1.ReindexModule);
|
|
14
13
|
await app.init();
|
|
15
|
-
const reindexService = app.get(
|
|
14
|
+
const reindexService = app.get(node_core_1.ReindexService);
|
|
16
15
|
await reindexService.init();
|
|
17
16
|
const actualReindexHeight = await reindexService.getTargetHeightWithUnfinalizedBlocks(targetHeight);
|
|
18
17
|
if (actualReindexHeight !== targetHeight) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reindex.init.js","sourceRoot":"","sources":["../../src/subcommands/reindex.init.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;AAEnC,uCAA2C;AAC3C,
|
|
1
|
+
{"version":3,"file":"reindex.init.js","sourceRoot":"","sources":["../../src/subcommands/reindex.init.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;AAEnC,uCAA2C;AAC3C,gDAA6D;AAC7D,qDAAiD;AAEjD,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,aAAa,CAAC,CAAC;AACjC,KAAK,UAAU,WAAW,CAAC,YAAoB;IACpD,IAAI;QACF,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,8BAAa,CAAC,CAAC;QAEpD,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,cAAc,GAAG,GAAG,CAAC,GAAG,CAAC,0BAAc,CAAC,CAAC;QAE/C,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,mBAAmB,GACvB,MAAM,cAAc,CAAC,oCAAoC,CAAC,YAAY,CAAC,CAAC;QAC1E,IAAI,mBAAmB,KAAK,YAAY,EAAE;YACxC,MAAM,CAAC,IAAI,CACT,6BAA6B,YAAY,qCAAqC,mBAAmB,mBAAmB,mBAAmB,EAAE,CAC1I,CAAC;SACH;QACD,MAAM,cAAc,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;KACnD;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,2BAA2B,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AArBD,kCAqBC","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { NestFactory } from '@nestjs/core';\nimport { getLogger, ReindexService } from '@subql/node-core';\nimport { ReindexModule } from './reindex.module';\n\nconst logger = getLogger('CLI-Reindex');\nexport async function reindexInit(targetHeight: number): Promise<void> {\n try {\n const app = await NestFactory.create(ReindexModule);\n\n await app.init();\n const reindexService = app.get(ReindexService);\n\n await reindexService.init();\n const actualReindexHeight =\n await reindexService.getTargetHeightWithUnfinalizedBlocks(targetHeight);\n if (actualReindexHeight !== targetHeight) {\n logger.info(\n `Found index target height ${targetHeight} beyond indexed unfinalized block ${actualReindexHeight}, will index to ${actualReindexHeight}`,\n );\n }\n await reindexService.reindex(actualReindexHeight);\n } catch (e) {\n logger.error(e, 'Reindex failed to execute');\n process.exit(1);\n }\n process.exit(0);\n}\n"]}
|
|
@@ -17,7 +17,6 @@ const configure_module_1 = require("../configure/configure.module");
|
|
|
17
17
|
const ds_processor_service_1 = require("../indexer/ds-processor.service");
|
|
18
18
|
const dynamic_ds_service_1 = require("../indexer/dynamic-ds.service");
|
|
19
19
|
const unfinalizedBlocks_service_1 = require("../indexer/unfinalizedBlocks.service");
|
|
20
|
-
const reindex_service_1 = require("./reindex.service");
|
|
21
20
|
let ReindexFeatureModule = class ReindexFeatureModule {
|
|
22
21
|
};
|
|
23
22
|
ReindexFeatureModule = __decorate([
|
|
@@ -25,12 +24,17 @@ ReindexFeatureModule = __decorate([
|
|
|
25
24
|
providers: [
|
|
26
25
|
node_core_1.StoreCacheService,
|
|
27
26
|
node_core_1.StoreService,
|
|
28
|
-
|
|
29
|
-
node_core_1.
|
|
30
|
-
node_core_1.PgMmrCacheService,
|
|
27
|
+
node_core_1.ReindexService,
|
|
28
|
+
node_core_1.PoiService,
|
|
31
29
|
node_core_1.ForceCleanService,
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
{
|
|
31
|
+
provide: 'UnfinalizedBlocksService',
|
|
32
|
+
useClass: unfinalizedBlocks_service_1.UnfinalizedBlocksService,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
provide: 'DynamicDsService',
|
|
36
|
+
useClass: dynamic_ds_service_1.DynamicDsService,
|
|
37
|
+
},
|
|
34
38
|
ds_processor_service_1.DsProcessorService,
|
|
35
39
|
{
|
|
36
40
|
// Used to work with DI for unfinalizedBlocksService but not used with reindex
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reindex.module.js","sourceRoot":"","sources":["../../src/subcommands/reindex.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;AAEnC,2CAAwC;AACxC,yDAA2D;AAC3D,+CAAqD;AACrD,gDAQ0B;AAC1B,oEAAgE;AAChE,0EAAqE;AACrE,sEAAiE;AACjE,oFAAgF;
|
|
1
|
+
{"version":3,"file":"reindex.module.js","sourceRoot":"","sources":["../../src/subcommands/reindex.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;AAEnC,2CAAwC;AACxC,yDAA2D;AAC3D,+CAAqD;AACrD,gDAQ0B;AAC1B,oEAAgE;AAChE,0EAAqE;AACrE,sEAAiE;AACjE,oFAAgF;AA2BzE,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;CAAG,CAAA;AAAvB,oBAAoB;IAzBhC,IAAA,eAAM,EAAC;QACN,SAAS,EAAE;YACT,6BAAiB;YACjB,wBAAY;YACZ,0BAAc;YACd,sBAAU;YACV,6BAAiB;YACjB;gBACE,OAAO,EAAE,0BAA0B;gBACnC,QAAQ,EAAE,oDAAwB;aACnC;YACD;gBACE,OAAO,EAAE,kBAAkB;gBAC3B,QAAQ,EAAE,qCAAgB;aAC3B;YACD,yCAAkB;YAClB;gBACE,8EAA8E;gBAC9E,OAAO,EAAE,sBAAU;gBACnB,UAAU,EAAE,GAAG,EAAE,CAAC,SAAS;aAC5B;YACD,4BAAiB;SAClB;QACD,WAAW,EAAE,EAAE;KAChB,CAAC;GACW,oBAAoB,CAAG;AAAvB,oDAAoB;AAW1B,IAAM,aAAa,GAAnB,MAAM,aAAa;CAAG,CAAA;AAAhB,aAAa;IATzB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,oBAAQ,CAAC,OAAO,EAAE;YAClB,kCAAe,CAAC,QAAQ,EAAE;YAC1B,oBAAoB;YACpB,kCAAkB,CAAC,OAAO,EAAE;SAC7B;QACD,WAAW,EAAE,EAAE;KAChB,CAAC;GACW,aAAa,CAAG;AAAhB,sCAAa","sourcesContent":["// Copyright 2020-2023 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 { SchedulerRegistry } from '@nestjs/schedule';\nimport {\n ApiService,\n DbModule,\n ForceCleanService,\n StoreCacheService,\n StoreService,\n ReindexService,\n PoiService,\n} from '@subql/node-core';\nimport { ConfigureModule } from '../configure/configure.module';\nimport { DsProcessorService } from '../indexer/ds-processor.service';\nimport { DynamicDsService } from '../indexer/dynamic-ds.service';\nimport { UnfinalizedBlocksService } from '../indexer/unfinalizedBlocks.service';\n\n@Module({\n providers: [\n StoreCacheService,\n StoreService,\n ReindexService,\n PoiService,\n ForceCleanService,\n {\n provide: 'UnfinalizedBlocksService',\n useClass: UnfinalizedBlocksService,\n },\n {\n provide: 'DynamicDsService',\n useClass: DynamicDsService,\n },\n DsProcessorService,\n {\n // Used to work with DI for unfinalizedBlocksService but not used with reindex\n provide: ApiService,\n useFactory: () => undefined,\n },\n SchedulerRegistry,\n ],\n controllers: [],\n})\nexport class ReindexFeatureModule {}\n\n@Module({\n imports: [\n DbModule.forRoot(),\n ConfigureModule.register(),\n ReindexFeatureModule,\n EventEmitterModule.forRoot(),\n ],\n controllers: [],\n})\nexport class ReindexModule {}\n"]}
|
|
@@ -9,10 +9,8 @@ const testing_service_1 = require("./testing.service");
|
|
|
9
9
|
const logger = (0, node_core_1.getLogger)('Testing');
|
|
10
10
|
async function testingInit() {
|
|
11
11
|
try {
|
|
12
|
-
const {
|
|
13
|
-
const
|
|
14
|
-
const testingService = new testing_service_1.TestingService(config, subqueryProject);
|
|
15
|
-
await testingService.init();
|
|
12
|
+
const { nodeConfig, project } = await configure_module_1.ConfigureModule.getInstance();
|
|
13
|
+
const testingService = new testing_service_1.TestingService(nodeConfig, project);
|
|
16
14
|
await testingService.run();
|
|
17
15
|
}
|
|
18
16
|
catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.init.js","sourceRoot":"","sources":["../../src/subcommands/testing.init.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;AAEnC,gDAA6C;AAC7C,oEAAgE;AAChE,uDAAmD;AAEnD,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,SAAS,CAAC,CAAC;AAC7B,KAAK,UAAU,WAAW;IAC/B,IAAI;QACF,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"testing.init.js","sourceRoot":"","sources":["../../src/subcommands/testing.init.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;AAEnC,gDAA6C;AAC7C,oEAAgE;AAChE,uDAAmD;AAEnD,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,SAAS,CAAC,CAAC;AAC7B,KAAK,UAAU,WAAW;IAC/B,IAAI;QACF,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,MAAM,kCAAe,CAAC,WAAW,EAAE,CAAC;QAEpE,MAAM,cAAc,GAAG,IAAI,gCAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC/D,MAAM,cAAc,CAAC,GAAG,EAAE,CAAC;KAC5B;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAXD,kCAWC","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { getLogger } from '@subql/node-core';\nimport { ConfigureModule } from '../configure/configure.module';\nimport { TestingService } from './testing.service';\n\nconst logger = getLogger('Testing');\nexport async function testingInit(): Promise<void> {\n try {\n const { nodeConfig, project } = await ConfigureModule.getInstance();\n\n const testingService = new TestingService(nodeConfig, project);\n await testingService.run();\n } catch (e) {\n logger.error(e, 'Testing failed');\n process.exit(1);\n }\n process.exit(0);\n}\n"]}
|
|
@@ -17,28 +17,24 @@ const configure_module_1 = require("../configure/configure.module");
|
|
|
17
17
|
const ethereum_1 = require("../ethereum");
|
|
18
18
|
const ds_processor_service_1 = require("../indexer/ds-processor.service");
|
|
19
19
|
const dynamic_ds_service_1 = require("../indexer/dynamic-ds.service");
|
|
20
|
-
const fetch_module_1 = require("../indexer/fetch.module");
|
|
21
20
|
const indexer_manager_1 = require("../indexer/indexer.manager");
|
|
22
21
|
const project_service_1 = require("../indexer/project.service");
|
|
23
22
|
const sandbox_service_1 = require("../indexer/sandbox.service");
|
|
24
23
|
const unfinalizedBlocks_service_1 = require("../indexer/unfinalizedBlocks.service");
|
|
25
|
-
const meta_module_1 = require("../meta/meta.module");
|
|
26
|
-
const testing_service_1 = require("./testing.service");
|
|
27
24
|
let TestingFeatureModule = class TestingFeatureModule {
|
|
28
25
|
};
|
|
29
26
|
TestingFeatureModule = __decorate([
|
|
30
27
|
(0, common_1.Module)({
|
|
31
28
|
providers: [
|
|
32
29
|
node_core_1.StoreService,
|
|
33
|
-
|
|
30
|
+
node_core_1.StoreCacheService,
|
|
34
31
|
event_emitter_1.EventEmitter2,
|
|
35
32
|
node_core_1.PoiService,
|
|
36
33
|
sandbox_service_1.SandboxService,
|
|
37
34
|
ds_processor_service_1.DsProcessorService,
|
|
38
35
|
dynamic_ds_service_1.DynamicDsService,
|
|
39
36
|
unfinalizedBlocks_service_1.UnfinalizedBlocksService,
|
|
40
|
-
|
|
41
|
-
unfinalizedBlocks_service_1.UnfinalizedBlocksService,
|
|
37
|
+
node_core_1.ConnectionPoolStateManager,
|
|
42
38
|
node_core_1.ConnectionPoolService,
|
|
43
39
|
{
|
|
44
40
|
provide: 'IProjectService',
|
|
@@ -62,14 +58,13 @@ TestingFeatureModule = __decorate([
|
|
|
62
58
|
node_core_1.TestRunner,
|
|
63
59
|
{
|
|
64
60
|
provide: 'IApi',
|
|
65
|
-
|
|
61
|
+
useExisting: node_core_1.ApiService,
|
|
66
62
|
},
|
|
67
63
|
{
|
|
68
64
|
provide: 'IIndexerManager',
|
|
69
65
|
useClass: indexer_manager_1.IndexerManager,
|
|
70
66
|
},
|
|
71
67
|
],
|
|
72
|
-
imports: [meta_module_1.MetaModule, fetch_module_1.FetchModule],
|
|
73
68
|
controllers: [],
|
|
74
69
|
exports: [node_core_1.TestRunner],
|
|
75
70
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.module.js","sourceRoot":"","sources":["../../src/subcommands/testing.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;AAEnC,2CAAwC;AACxC,yDAA0E;AAC1E,+CAAqE;AACrE,
|
|
1
|
+
{"version":3,"file":"testing.module.js","sourceRoot":"","sources":["../../src/subcommands/testing.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;AAEnC,2CAAwC;AACxC,yDAA0E;AAC1E,+CAAqE;AACrE,gDAU0B;AAC1B,oEAAgE;AAEhE,0CAAiD;AAEjD,0EAAqE;AACrE,sEAAiE;AACjE,gEAA4D;AAC5D,gEAA4D;AAC5D,gEAA4D;AAC5D,oFAAgF;AAwDzE,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;CAAG,CAAA;AAAvB,oBAAoB;IAtDhC,IAAA,eAAM,EAAC;QACN,SAAS,EAAE;YACT,wBAAY;YACZ,6BAAiB;YACjB,6BAAa;YACb,sBAAU;YACV,gCAAc;YACd,yCAAkB;YAClB,qCAAgB;YAChB,oDAAwB;YACxB,sCAA0B;YAC1B,iCAAqB;YACrB;gBACE,OAAO,EAAE,iBAAiB;gBAC1B,QAAQ,EAAE,gCAAc;aACzB;YACD;gBACE,OAAO,EAAE,sBAAU;gBACnB,UAAU,EAAE,KAAK,EACf,OAAwB,EACxB,qBAAmE,EACnE,YAA2B,EAC3B,UAAsB,EACtB,EAAE;oBACF,MAAM,UAAU,GAAG,IAAI,6BAAkB,CACvC,OAAO,EACP,qBAAqB,EACrB,YAAY,EACZ,UAAU,CACX,CAAC;oBACF,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;oBACxB,OAAO,UAAU,CAAC;gBACpB,CAAC;gBACD,MAAM,EAAE;oBACN,kBAAkB;oBAClB,iCAAqB;oBACrB,6BAAa;oBACb,sBAAU;iBACX;aACF;YACD,4BAAiB;YACjB,sBAAU;YACV;gBACE,OAAO,EAAE,MAAM;gBACf,WAAW,EAAE,sBAAU;aACxB;YACD;gBACE,OAAO,EAAE,iBAAiB;gBAC1B,QAAQ,EAAE,gCAAc;aACzB;SACF;QACD,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,CAAC,sBAAU,CAAC;KACtB,CAAC;GACW,oBAAoB,CAAG;AAAvB,oDAAoB;AAY1B,IAAM,aAAa,GAAnB,MAAM,aAAa;CAAG,CAAA;AAAhB,aAAa;IAVzB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,oBAAQ,CAAC,OAAO,EAAE;YAClB,kCAAe,CAAC,QAAQ,EAAE;YAC1B,kCAAkB,CAAC,OAAO,EAAE;YAC5B,yBAAc,CAAC,OAAO,EAAE;YACxB,oBAAoB;SACrB;QACD,WAAW,EAAE,EAAE;KAChB,CAAC;GACW,aAAa,CAAG;AAAhB,sCAAa","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Module } from '@nestjs/common';\nimport { EventEmitter2, EventEmitterModule } from '@nestjs/event-emitter';\nimport { ScheduleModule, SchedulerRegistry } from '@nestjs/schedule';\nimport {\n ApiService,\n ConnectionPoolService,\n ConnectionPoolStateManager,\n DbModule,\n NodeConfig,\n PoiService,\n StoreCacheService,\n StoreService,\n TestRunner,\n} from '@subql/node-core';\nimport { ConfigureModule } from '../configure/configure.module';\nimport { SubqueryProject } from '../configure/SubqueryProject';\nimport { EthereumApiService } from '../ethereum';\nimport { EthereumApiConnection } from '../ethereum/api.connection';\nimport { DsProcessorService } from '../indexer/ds-processor.service';\nimport { DynamicDsService } from '../indexer/dynamic-ds.service';\nimport { IndexerManager } from '../indexer/indexer.manager';\nimport { ProjectService } from '../indexer/project.service';\nimport { SandboxService } from '../indexer/sandbox.service';\nimport { UnfinalizedBlocksService } from '../indexer/unfinalizedBlocks.service';\n\n@Module({\n providers: [\n StoreService,\n StoreCacheService,\n EventEmitter2,\n PoiService,\n SandboxService,\n DsProcessorService,\n DynamicDsService,\n UnfinalizedBlocksService,\n ConnectionPoolStateManager,\n ConnectionPoolService,\n {\n provide: 'IProjectService',\n useClass: ProjectService,\n },\n {\n provide: ApiService,\n useFactory: async (\n project: SubqueryProject,\n connectionPoolService: ConnectionPoolService<EthereumApiConnection>,\n eventEmitter: EventEmitter2,\n nodeConfig: NodeConfig,\n ) => {\n const apiService = new EthereumApiService(\n project,\n connectionPoolService,\n eventEmitter,\n nodeConfig,\n );\n await apiService.init();\n return apiService;\n },\n inject: [\n 'ISubqueryProject',\n ConnectionPoolService,\n EventEmitter2,\n NodeConfig,\n ],\n },\n SchedulerRegistry,\n TestRunner,\n {\n provide: 'IApi',\n useExisting: ApiService,\n },\n {\n provide: 'IIndexerManager',\n useClass: IndexerManager,\n },\n ],\n controllers: [],\n exports: [TestRunner],\n})\nexport class TestingFeatureModule {}\n\n@Module({\n imports: [\n DbModule.forRoot(),\n ConfigureModule.register(),\n EventEmitterModule.forRoot(),\n ScheduleModule.forRoot(),\n TestingFeatureModule,\n ],\n controllers: [],\n})\nexport class TestingModule {}\n"]}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { NodeConfig, TestingService as BaseTestingService, TestRunner } from '@subql/node-core';
|
|
2
|
-
import {
|
|
3
|
-
import { SubqlProjectDs, SubqueryProject } from '../configure/SubqueryProject';
|
|
2
|
+
import { EthereumProjectDs, SubqueryProject } from '../configure/SubqueryProject';
|
|
4
3
|
import { EthereumApi } from '../ethereum';
|
|
5
4
|
import SafeEthProvider from '../ethereum/safe-api';
|
|
6
5
|
import { IndexerManager } from '../indexer/indexer.manager';
|
|
7
|
-
|
|
6
|
+
import { BlockContent } from '../indexer/types';
|
|
7
|
+
export declare class TestingService extends BaseTestingService<EthereumApi, SafeEthProvider, BlockContent, EthereumProjectDs> {
|
|
8
8
|
constructor(nodeConfig: NodeConfig, project: SubqueryProject);
|
|
9
|
-
getTestRunner(): Promise<
|
|
10
|
-
|
|
9
|
+
getTestRunner(): Promise<[
|
|
10
|
+
close: () => Promise<void>,
|
|
11
|
+
runner: TestRunner<EthereumApi, SafeEthProvider, BlockContent, EthereumProjectDs>
|
|
12
|
+
]>;
|
|
13
|
+
indexBlock(block: BlockContent, handler: string, indexerManager: IndexerManager): Promise<void>;
|
|
11
14
|
}
|
|
@@ -19,8 +19,6 @@ const common_1 = require("@nestjs/common");
|
|
|
19
19
|
const core_1 = require("@nestjs/core");
|
|
20
20
|
const node_core_1 = require("@subql/node-core");
|
|
21
21
|
const SubqueryProject_1 = require("../configure/SubqueryProject");
|
|
22
|
-
const ethereum_1 = require("../ethereum");
|
|
23
|
-
const project_service_1 = require("../indexer/project.service");
|
|
24
22
|
const testing_module_1 = require("./testing.module");
|
|
25
23
|
let TestingService = class TestingService extends node_core_1.TestingService {
|
|
26
24
|
constructor(nodeConfig, project) {
|
|
@@ -28,15 +26,12 @@ let TestingService = class TestingService extends node_core_1.TestingService {
|
|
|
28
26
|
}
|
|
29
27
|
async getTestRunner() {
|
|
30
28
|
const testContext = await core_1.NestFactory.createApplicationContext(testing_module_1.TestingModule, {
|
|
31
|
-
logger: new node_core_1.NestLogger(),
|
|
29
|
+
logger: new node_core_1.NestLogger(this.nodeConfig.debug),
|
|
32
30
|
});
|
|
33
31
|
await testContext.init();
|
|
34
|
-
const projectService = testContext.get(
|
|
35
|
-
const apiService = testContext.get(ethereum_1.EthereumApi);
|
|
36
|
-
// Initialise async services, we do this here rather than in factories, so we can capture one off events
|
|
37
|
-
await apiService.init();
|
|
32
|
+
const projectService = testContext.get('IProjectService');
|
|
38
33
|
await projectService.init();
|
|
39
|
-
return testContext.get(node_core_1.TestRunner);
|
|
34
|
+
return [testContext.close.bind(testContext), testContext.get(node_core_1.TestRunner)];
|
|
40
35
|
}
|
|
41
36
|
async indexBlock(block, handler, indexerManager) {
|
|
42
37
|
await indexerManager.indexBlock(block, this.getDsWithHandler(handler));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.service.js","sourceRoot":"","sources":["../../src/subcommands/testing.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,2CAAoD;AACpD,uCAA2C;AAE3C,
|
|
1
|
+
{"version":3,"file":"testing.service.js","sourceRoot":"","sources":["../../src/subcommands/testing.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,2CAAoD;AACpD,uCAA2C;AAE3C,gDAK0B;AAC1B,kEAGsC;AAMtC,qDAAiD;AAG1C,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,0BAKnC;IACC,YACE,UAAsB,EACM,OAAwB;QAEpD,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,aAAa;QAWjB,MAAM,WAAW,GAAG,MAAM,kBAAW,CAAC,wBAAwB,CAC5D,8BAAa,EACb;YACE,MAAM,EAAE,IAAI,sBAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;SAC9C,CACF,CAAC;QAEF,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;QAEzB,MAAM,cAAc,GAAmB,WAAW,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAE1E,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QAE5B,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,sBAAU,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,UAAU,CACd,KAAmB,EACnB,OAAe,EACf,cAA8B;QAE9B,MAAM,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;IACzE,CAAC;CACF,CAAA;AA/CY,cAAc;IAD1B,IAAA,mBAAU,GAAE;IASR,WAAA,IAAA,eAAM,EAAC,kBAAkB,CAAC,CAAA;qCADf,sBAAU;QACe,iCAAe;GAR3C,cAAc,CA+C1B;AA/CY,wCAAc","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Inject, Injectable } from '@nestjs/common';\nimport { NestFactory } from '@nestjs/core';\n\nimport {\n NodeConfig,\n TestingService as BaseTestingService,\n NestLogger,\n TestRunner,\n} from '@subql/node-core';\nimport {\n EthereumProjectDs,\n SubqueryProject,\n} from '../configure/SubqueryProject';\nimport { EthereumApi } from '../ethereum';\nimport SafeEthProvider from '../ethereum/safe-api';\nimport { IndexerManager } from '../indexer/indexer.manager';\nimport { ProjectService } from '../indexer/project.service';\nimport { BlockContent } from '../indexer/types';\nimport { TestingModule } from './testing.module';\n\n@Injectable()\nexport class TestingService extends BaseTestingService<\n EthereumApi,\n SafeEthProvider,\n BlockContent,\n EthereumProjectDs\n> {\n constructor(\n nodeConfig: NodeConfig,\n @Inject('ISubqueryProject') project: SubqueryProject,\n ) {\n super(nodeConfig, project);\n }\n\n async getTestRunner(): Promise<\n [\n close: () => Promise<void>,\n runner: TestRunner<\n EthereumApi,\n SafeEthProvider,\n BlockContent,\n EthereumProjectDs\n >,\n ]\n > {\n const testContext = await NestFactory.createApplicationContext(\n TestingModule,\n {\n logger: new NestLogger(this.nodeConfig.debug),\n },\n );\n\n await testContext.init();\n\n const projectService: ProjectService = testContext.get('IProjectService');\n\n await projectService.init();\n\n return [testContext.close.bind(testContext), testContext.get(TestRunner)];\n }\n\n async indexBlock(\n block: BlockContent,\n handler: string,\n indexerManager: IndexerManager,\n ): Promise<void> {\n await indexerManager.indexBlock(block, this.getDsWithHandler(handler));\n }\n}\n"]}
|
package/dist/utils/project.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { Reader } from '@subql/common';
|
|
2
1
|
import { SubqlRuntimeHandler, SubqlCustomHandler, SubqlHandler } from '@subql/common-ethereum';
|
|
2
|
+
import { Reader } from '@subql/types-core';
|
|
3
3
|
import { SubqlDatasource } from '@subql/types-ethereum';
|
|
4
|
-
import {
|
|
4
|
+
import { EthereumProjectDs, SubqueryProject } from '../configure/SubqueryProject';
|
|
5
5
|
export declare function isBaseHandler(handler: SubqlHandler): handler is SubqlRuntimeHandler;
|
|
6
6
|
export declare function isCustomHandler(handler: SubqlHandler): handler is SubqlCustomHandler;
|
|
7
7
|
export declare function retryOnFailEth<T>(request: () => Promise<T>, errors?: string[]): Promise<T>;
|
|
8
|
-
export declare function onlyHasLogDataSources(dataSources:
|
|
9
|
-
export declare function updateDatasourcesFlare(_dataSources: SubqlDatasource[], reader: Reader, root: string): Promise<
|
|
8
|
+
export declare function onlyHasLogDataSources(dataSources: EthereumProjectDs[]): boolean;
|
|
9
|
+
export declare function updateDatasourcesFlare(_dataSources: SubqlDatasource[], reader: Reader, root: string): Promise<EthereumProjectDs[]>;
|
|
10
|
+
export declare function isOnlyEventHandlers(project: SubqueryProject): boolean;
|
package/dist/utils/project.js
CHANGED
|
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
6
6
|
};
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.updateDatasourcesFlare = exports.onlyHasLogDataSources = exports.retryOnFailEth = exports.isCustomHandler = exports.isBaseHandler = void 0;
|
|
8
|
+
exports.isOnlyEventHandlers = exports.updateDatasourcesFlare = exports.onlyHasLogDataSources = exports.retryOnFailEth = exports.isCustomHandler = exports.isBaseHandler = void 0;
|
|
9
9
|
const fs_1 = __importDefault(require("fs"));
|
|
10
10
|
const path_1 = __importDefault(require("path"));
|
|
11
11
|
const common_1 = require("@subql/common");
|
|
@@ -80,4 +80,20 @@ async function updateDatasourcesFlare(_dataSources, reader, root) {
|
|
|
80
80
|
return (0, node_core_1.updateDataSourcesV1_0_0)(partialUpdate, reader, root, common_ethereum_1.isCustomDs);
|
|
81
81
|
}
|
|
82
82
|
exports.updateDatasourcesFlare = updateDatasourcesFlare;
|
|
83
|
+
function dsContainsNonEventHandlers(ds) {
|
|
84
|
+
if ((0, common_ethereum_1.isRuntimeDs)(ds)) {
|
|
85
|
+
return !!ds.mapping.handlers.find((handler) => handler.kind !== common_ethereum_1.EthereumHandlerKind.Event);
|
|
86
|
+
}
|
|
87
|
+
else if ((0, common_ethereum_1.isCustomDs)(ds)) {
|
|
88
|
+
// TODO this can be improved upon in the future.
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
function isOnlyEventHandlers(project) {
|
|
94
|
+
const hasNonEventHandler = !!project.dataSources.find((ds) => dsContainsNonEventHandlers(ds));
|
|
95
|
+
const hasNonEventTemplate = !!project.templates.find((ds) => dsContainsNonEventHandlers(ds));
|
|
96
|
+
return !hasNonEventHandler && !hasNonEventTemplate;
|
|
97
|
+
}
|
|
98
|
+
exports.isOnlyEventHandlers = isOnlyEventHandlers;
|
|
83
99
|
//# sourceMappingURL=project.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/utils/project.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;AAEnC,4CAAoB;AACpB,gDAAwB;AACxB,
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/utils/project.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport fs from 'fs';\nimport path from 'path';\nimport { LocalReader } from '@subql/common';\nimport {\n SubqlRuntimeHandler,\n SubqlCustomHandler,\n SubqlHandler,\n EthereumHandlerKind,\n SubqlEthereumHandlerKind,\n isCustomDs,\n isRuntimeDs,\n} from '@subql/common-ethereum';\nimport { retryOnFail, updateDataSourcesV1_0_0 } from '@subql/node-core';\nimport { Reader } from '@subql/types-core';\nimport { EthereumDatasourceKind, SubqlDatasource } from '@subql/types-ethereum';\nimport {\n EthereumProjectDs,\n SubqueryProject,\n} from '../configure/SubqueryProject';\n\nexport function isBaseHandler(\n handler: SubqlHandler,\n): handler is SubqlRuntimeHandler {\n return Object.values<string>(EthereumHandlerKind).includes(handler.kind);\n}\n\nexport function isCustomHandler(\n handler: SubqlHandler,\n): handler is SubqlCustomHandler {\n return !isBaseHandler(handler);\n}\n\nconst handledErrors = ['timeout'];\n// eslint-disable-next-line @typescript-eslint/require-await\nexport async function retryOnFailEth<T>(\n request: () => Promise<T>,\n errors = handledErrors,\n): Promise<T> {\n return retryOnFail(request, (e) => !!errors.find((t) => t === e?.reason));\n}\n\nexport function onlyHasLogDataSources(\n dataSources: EthereumProjectDs[],\n): boolean {\n for (const ds of dataSources) {\n for (const handler of ds.mapping.handlers) {\n if (\n handler.kind !== SubqlEthereumHandlerKind.EthEvent &&\n handler.kind !== SubqlEthereumHandlerKind.FlareEvent\n ) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nexport async function updateDatasourcesFlare(\n _dataSources: SubqlDatasource[],\n reader: Reader,\n root: string,\n): Promise<EthereumProjectDs[]> {\n // Cast to any to make types happy\n const partialUpdate = await Promise.all(\n _dataSources.map(async (dataSource) => {\n if ((dataSource.kind as string) === 'flare/Runtime') {\n dataSource.kind = EthereumDatasourceKind.Runtime;\n }\n dataSource.mapping.handlers = dataSource.mapping.handlers.map(\n (handler) => {\n switch (handler.kind as string) {\n case 'flare/BlockHandler': {\n handler.kind = EthereumHandlerKind.Block;\n break;\n }\n case 'flare/TransactionHandler': {\n handler.kind = EthereumHandlerKind.Call;\n break;\n }\n case 'flare/LogHandler': {\n handler.kind = EthereumHandlerKind.Event;\n break;\n }\n default:\n }\n return handler;\n },\n );\n\n if (dataSource.assets) {\n for (const [, asset] of Object.entries(dataSource.assets)) {\n if (reader instanceof LocalReader) {\n asset.file = path.resolve(root, asset.file);\n } else {\n const res = await reader.getFile(asset.file);\n const outputPath = path.resolve(\n root,\n asset.file.replace('ipfs://', ''),\n );\n await fs.promises.writeFile(outputPath, res as string);\n asset.file = outputPath;\n }\n }\n }\n\n return dataSource;\n }),\n );\n\n return updateDataSourcesV1_0_0(partialUpdate, reader, root, isCustomDs);\n}\n\nfunction dsContainsNonEventHandlers(ds: EthereumProjectDs): boolean {\n if (isRuntimeDs(ds)) {\n return !!ds.mapping.handlers.find(\n (handler) => handler.kind !== EthereumHandlerKind.Event,\n );\n } else if (isCustomDs(ds)) {\n // TODO this can be improved upon in the future.\n return true;\n }\n return true;\n}\n\nexport function isOnlyEventHandlers(project: SubqueryProject): boolean {\n const hasNonEventHandler = !!project.dataSources.find((ds) =>\n dsContainsNonEventHandlers(ds),\n );\n const hasNonEventTemplate = !!project.templates.find((ds) =>\n dsContainsNonEventHandlers(ds as EthereumProjectDs),\n );\n\n return !hasNonEventHandler && !hasNonEventTemplate;\n}\n"]}
|