@subql/node-stellar 2.12.1 → 2.12.2-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/dist/.tsbuildinfo +1 -1
- package/dist/configure/SubqueryProject.d.ts +19 -19
- package/dist/configure/SubqueryProject.js +49 -88
- package/dist/configure/SubqueryProject.js.map +1 -1
- package/dist/configure/configure.module.d.ts +3 -6
- package/dist/configure/configure.module.js +22 -89
- package/dist/configure/configure.module.js.map +1 -1
- package/dist/indexer/blockDispatcher/block-dispatcher.service.d.ts +4 -4
- package/dist/indexer/blockDispatcher/block-dispatcher.service.js +6 -5
- 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 -27
- 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 -2
- package/dist/indexer/dictionary.service.js.map +1 -1
- package/dist/indexer/ds-processor.service.d.ts +4 -4
- package/dist/indexer/ds-processor.service.js.map +1 -1
- package/dist/indexer/dynamic-ds.service.d.ts +3 -3
- package/dist/indexer/dynamic-ds.service.js +12 -2
- package/dist/indexer/dynamic-ds.service.js.map +1 -1
- package/dist/indexer/fetch.module.js +13 -10
- package/dist/indexer/fetch.module.js.map +1 -1
- package/dist/indexer/fetch.service.d.ts +12 -8
- package/dist/indexer/fetch.service.js +25 -47
- package/dist/indexer/fetch.service.js.map +1 -1
- package/dist/indexer/fetch.service.spec.js +4 -4
- package/dist/indexer/fetch.service.spec.js.map +1 -1
- package/dist/indexer/indexer.manager.d.ts +2 -2
- package/dist/indexer/indexer.manager.js.map +1 -1
- package/dist/indexer/project.service.d.ts +10 -6
- package/dist/indexer/project.service.js +19 -14
- package/dist/indexer/project.service.js.map +1 -1
- 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/unfinalizedBlocks.service.js +24 -0
- package/dist/indexer/unfinalizedBlocks.service.js.map +1 -1
- package/dist/indexer/worker/worker-fetch.module.d.ts +2 -0
- package/dist/indexer/{indexer.module.js → worker/worker-fetch.module.js} +23 -25
- package/dist/indexer/worker/worker-fetch.module.js.map +1 -0
- 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 -54
- package/dist/indexer/worker/worker.service.js.map +1 -1
- package/dist/indexer/worker/worker.unfinalizedBlocks.service.d.ts +1 -5
- package/dist/indexer/worker/worker.unfinalizedBlocks.service.js +1 -4
- package/dist/indexer/worker/worker.unfinalizedBlocks.service.js.map +1 -1
- package/dist/init.js +2 -1
- package/dist/init.js.map +1 -1
- package/dist/main.js +4 -7
- package/dist/main.js.map +1 -1
- package/dist/stellar/api.connection.d.ts +1 -1
- package/dist/stellar/api.connection.js.map +1 -1
- package/dist/stellar/api.service.stellar.d.ts +4 -6
- package/dist/stellar/api.service.stellar.js +33 -68
- package/dist/stellar/api.service.stellar.js.map +1 -1
- package/dist/stellar/api.service.stellar.spec.d.ts +1 -5
- package/dist/stellar/api.service.stellar.spec.js +7 -6
- package/dist/stellar/api.service.stellar.spec.js.map +1 -1
- package/dist/stellar/api.stellar.js +1 -7
- package/dist/stellar/api.stellar.js.map +1 -1
- package/dist/stellar/soroban.server.spec.js +1 -1
- package/dist/stellar/soroban.server.spec.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 +9 -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 +9 -7
- package/dist/subcommands/testing.module.js.map +1 -1
- package/dist/subcommands/testing.service.d.ts +7 -4
- package/dist/subcommands/testing.service.js +2 -7
- package/dist/subcommands/testing.service.js.map +1 -1
- package/dist/utils/project.js.map +1 -1
- package/package.json +8 -7
- 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,26 +1,26 @@
|
|
|
1
|
-
import { Reader, RunnerSpecs } from '@subql/common';
|
|
2
1
|
import { StellarProjectNetworkConfig, SubqlStellarDataSource } from '@subql/common-stellar';
|
|
2
|
+
import { ISubqueryProject, SubqlProjectDs } from '@subql/node-core';
|
|
3
|
+
import { ParentProject, Reader, RunnerSpecs } from '@subql/types-core';
|
|
4
|
+
import { CustomDatasourceTemplate, RuntimeDatasourceTemplate } from '@subql/types-stellar';
|
|
3
5
|
import { GraphQLSchema } from 'graphql';
|
|
4
|
-
export type
|
|
5
|
-
|
|
6
|
-
entryScript: string;
|
|
7
|
-
};
|
|
8
|
-
};
|
|
9
|
-
export type SubqlProjectDsTemplate = Omit<SubqlProjectDs, 'startBlock'> & {
|
|
10
|
-
name: string;
|
|
11
|
-
};
|
|
6
|
+
export type StellarProjectDs = SubqlProjectDs<SubqlStellarDataSource>;
|
|
7
|
+
export type StellarProjectDsTemplate = SubqlProjectDs<RuntimeDatasourceTemplate> | SubqlProjectDs<CustomDatasourceTemplate>;
|
|
12
8
|
type NetworkConfig = StellarProjectNetworkConfig & {
|
|
13
9
|
chainId: string;
|
|
14
10
|
};
|
|
15
|
-
export declare class SubqueryProject {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
schema: GraphQLSchema;
|
|
21
|
-
templates:
|
|
22
|
-
runner?: RunnerSpecs;
|
|
23
|
-
|
|
11
|
+
export declare class SubqueryProject implements ISubqueryProject {
|
|
12
|
+
#private;
|
|
13
|
+
readonly id: string;
|
|
14
|
+
readonly root: string;
|
|
15
|
+
readonly network: NetworkConfig;
|
|
16
|
+
readonly schema: GraphQLSchema;
|
|
17
|
+
readonly templates: StellarProjectDsTemplate[];
|
|
18
|
+
readonly runner?: RunnerSpecs;
|
|
19
|
+
readonly parent?: ParentProject;
|
|
20
|
+
constructor(id: string, root: string, network: NetworkConfig, dataSources: StellarProjectDs[], schema: GraphQLSchema, templates: StellarProjectDsTemplate[], runner?: RunnerSpecs, parent?: ParentProject);
|
|
21
|
+
get dataSources(): StellarProjectDs[];
|
|
22
|
+
static create(path: string, rawManifest: unknown, reader: Reader, root?: string, networkOverrides?: Partial<StellarProjectNetworkConfig>): Promise<SubqueryProject>;
|
|
23
|
+
applyCronTimestamps(getTimestamp: (height: number) => Promise<Date>): Promise<void>;
|
|
24
24
|
}
|
|
25
|
-
export declare function dsHasSorobanEventHandler(dataSources:
|
|
25
|
+
export declare function dsHasSorobanEventHandler(dataSources: StellarProjectDs[]): boolean;
|
|
26
26
|
export {};
|
|
@@ -7,18 +7,53 @@ 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 __metadata = (this && this.__metadata) || function (k, v) {
|
|
11
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
12
|
+
};
|
|
13
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
14
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
15
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
16
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
17
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
18
|
+
};
|
|
19
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
20
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
21
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
22
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
23
|
+
};
|
|
24
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
25
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
26
|
+
};
|
|
27
|
+
var _SubqueryProject_dataSources;
|
|
10
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
29
|
exports.dsHasSorobanEventHandler = exports.SubqueryProject = void 0;
|
|
30
|
+
const assert_1 = __importDefault(require("assert"));
|
|
12
31
|
const common_1 = require("@nestjs/common");
|
|
13
32
|
const common_2 = require("@subql/common");
|
|
14
33
|
const common_stellar_1 = require("@subql/common-stellar");
|
|
15
34
|
const node_core_1 = require("@subql/node-core");
|
|
16
35
|
const utils_1 = require("@subql/utils");
|
|
36
|
+
const graphql_1 = require("graphql");
|
|
37
|
+
const { version: packageVersion } = require('../../package.json');
|
|
17
38
|
const NOT_SUPPORT = (name) => {
|
|
18
39
|
throw new Error(`Manifest specVersion ${name} is not supported`);
|
|
19
40
|
};
|
|
20
41
|
let SubqueryProject = class SubqueryProject {
|
|
21
|
-
|
|
42
|
+
constructor(id, root, network, dataSources, schema, templates, runner, parent) {
|
|
43
|
+
this.id = id;
|
|
44
|
+
this.root = root;
|
|
45
|
+
this.network = network;
|
|
46
|
+
this.schema = schema;
|
|
47
|
+
this.templates = templates;
|
|
48
|
+
this.runner = runner;
|
|
49
|
+
this.parent = parent;
|
|
50
|
+
_SubqueryProject_dataSources.set(this, void 0);
|
|
51
|
+
__classPrivateFieldSet(this, _SubqueryProject_dataSources, dataSources, "f");
|
|
52
|
+
}
|
|
53
|
+
get dataSources() {
|
|
54
|
+
return __classPrivateFieldGet(this, _SubqueryProject_dataSources, "f");
|
|
55
|
+
}
|
|
56
|
+
static async create(path, rawManifest, reader, root, networkOverrides) {
|
|
22
57
|
// rawManifest and reader can be reused here.
|
|
23
58
|
// It has been pre-fetched and used for rebase manifest runner options with args
|
|
24
59
|
// in order to generate correct configs.
|
|
@@ -29,15 +64,20 @@ let SubqueryProject = class SubqueryProject {
|
|
|
29
64
|
}
|
|
30
65
|
const manifest = (0, common_stellar_1.parseStellarProjectManifest)(rawManifest);
|
|
31
66
|
if (manifest.isV1_0_0) {
|
|
32
|
-
return
|
|
67
|
+
return loadProjectFromManifestBase(manifest.asV1_0_0, reader, path, root, networkOverrides);
|
|
33
68
|
}
|
|
34
69
|
else {
|
|
35
70
|
NOT_SUPPORT(manifest.specVersion);
|
|
36
71
|
}
|
|
37
72
|
}
|
|
73
|
+
async applyCronTimestamps(getTimestamp) {
|
|
74
|
+
__classPrivateFieldSet(this, _SubqueryProject_dataSources, await (0, node_core_1.insertBlockFiltersCronSchedules)(this.dataSources, getTimestamp, common_stellar_1.isRuntimeDs, common_stellar_1.StellarHandlerKind.Block), "f");
|
|
75
|
+
}
|
|
38
76
|
};
|
|
77
|
+
_SubqueryProject_dataSources = new WeakMap();
|
|
39
78
|
SubqueryProject = __decorate([
|
|
40
|
-
(0, common_1.Injectable)()
|
|
79
|
+
(0, common_1.Injectable)(),
|
|
80
|
+
__metadata("design:paramtypes", [String, String, Object, Array, graphql_1.GraphQLSchema, Array, Object, Object])
|
|
41
81
|
], SubqueryProject);
|
|
42
82
|
exports.SubqueryProject = SubqueryProject;
|
|
43
83
|
function processChainId(network) {
|
|
@@ -50,8 +90,7 @@ function processChainId(network) {
|
|
|
50
90
|
delete network.genesisHash;
|
|
51
91
|
return network;
|
|
52
92
|
}
|
|
53
|
-
async function loadProjectFromManifestBase(projectManifest, reader, path,
|
|
54
|
-
root = root !== null && root !== void 0 ? root : (await (0, node_core_1.getProjectRoot)(reader));
|
|
93
|
+
async function loadProjectFromManifestBase(projectManifest, reader, path, root, networkOverrides) {
|
|
55
94
|
if (typeof projectManifest.network.endpoint === 'string') {
|
|
56
95
|
projectManifest.network.endpoint = [projectManifest.network.endpoint];
|
|
57
96
|
}
|
|
@@ -68,38 +107,11 @@ async function loadProjectFromManifestBase(projectManifest, reader, path, networ
|
|
|
68
107
|
}
|
|
69
108
|
const schema = (0, utils_1.buildSchemaFromString)(schemaString);
|
|
70
109
|
const dataSources = await (0, node_core_1.updateDataSourcesV1_0_0)(projectManifest.dataSources, reader, root, common_stellar_1.isCustomDs);
|
|
71
|
-
const templates = await loadProjectTemplates(projectManifest, root, reader);
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
!network.sorobanEndpoint) {
|
|
77
|
-
throw new Error(`Soroban network endpoint must be provided for network. chainId="${network.chainId}"`);
|
|
78
|
-
}
|
|
79
|
-
return {
|
|
80
|
-
id: reader.root ? reader.root : path,
|
|
81
|
-
root,
|
|
82
|
-
network,
|
|
83
|
-
dataSources,
|
|
84
|
-
schema,
|
|
85
|
-
templates,
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
const { version: packageVersion } = require('../../package.json');
|
|
89
|
-
async function loadProjectFromManifest1_0_0(projectManifest, reader, path, networkOverrides, root) {
|
|
90
|
-
const project = await loadProjectFromManifestBase(projectManifest, reader, path, networkOverrides, root);
|
|
91
|
-
project.runner = projectManifest.runner;
|
|
92
|
-
if (!(0, common_2.validateSemver)(packageVersion, project.runner.node.version)) {
|
|
93
|
-
throw new Error(`Runner require node version ${project.runner.node.version}, current node ${packageVersion}`);
|
|
94
|
-
}
|
|
95
|
-
return project;
|
|
96
|
-
}
|
|
97
|
-
async function loadProjectTemplates(projectManifest, root, reader) {
|
|
98
|
-
if (!projectManifest.templates || !projectManifest.templates.length) {
|
|
99
|
-
return [];
|
|
100
|
-
}
|
|
101
|
-
const dsTemplates = await (0, node_core_1.updateDataSourcesV1_0_0)(projectManifest.templates, reader, root, common_stellar_1.isCustomDs);
|
|
102
|
-
return dsTemplates.map((ds, index) => (Object.assign(Object.assign({}, ds), { name: projectManifest.templates[index].name })));
|
|
110
|
+
const templates = await (0, node_core_1.loadProjectTemplates)(projectManifest.templates, root, reader, common_stellar_1.isCustomDs);
|
|
111
|
+
const runner = projectManifest.runner;
|
|
112
|
+
(0, assert_1.default)((0, common_2.validateSemver)(packageVersion, runner.node.version), new Error(`Runner require node version ${runner.node.version}, current node ${packageVersion}`));
|
|
113
|
+
return new SubqueryProject(reader.root ? reader.root : path, //TODO, need to method to get project_id
|
|
114
|
+
root, network, dataSources, schema, templates, runner, projectManifest.parent);
|
|
103
115
|
}
|
|
104
116
|
function dsHasSorobanEventHandler(dataSources) {
|
|
105
117
|
return (dataSources.findIndex(function (ds) {
|
|
@@ -110,55 +122,4 @@ function dsHasSorobanEventHandler(dataSources) {
|
|
|
110
122
|
}) !== -1);
|
|
111
123
|
}
|
|
112
124
|
exports.dsHasSorobanEventHandler = dsHasSorobanEventHandler;
|
|
113
|
-
/*
|
|
114
|
-
// eslint-disable-next-line @typescript-eslint/require-await
|
|
115
|
-
export async function generateTimestampReferenceForBlockFilters(
|
|
116
|
-
dataSources: SubqlProjectDs[],
|
|
117
|
-
api: StellarApi,
|
|
118
|
-
): Promise<SubqlProjectDs[]> {
|
|
119
|
-
const cron = new Cron();
|
|
120
|
-
|
|
121
|
-
dataSources = await Promise.all(
|
|
122
|
-
dataSources.map(async (ds) => {
|
|
123
|
-
if (isRuntimeDs(ds)) {
|
|
124
|
-
const startBlock = ds.startBlock ?? 1;
|
|
125
|
-
let block: Block;
|
|
126
|
-
let timestampReference: Date;
|
|
127
|
-
|
|
128
|
-
ds.mapping.handlers = await Promise.all(
|
|
129
|
-
ds.mapping.handlers.map(async (handler) => {
|
|
130
|
-
if (handler.kind === StellarHandlerKind.Block) {
|
|
131
|
-
if (handler.filter?.timestamp) {
|
|
132
|
-
if (!block) {
|
|
133
|
-
block = await api.getBlockByHeightOrHash(startBlock);
|
|
134
|
-
timestampReference = new Date(block.timestamp * 1000); // Add millis
|
|
135
|
-
}
|
|
136
|
-
try {
|
|
137
|
-
cron.fromString(handler.filter.timestamp);
|
|
138
|
-
} catch (e) {
|
|
139
|
-
throw new Error(
|
|
140
|
-
`Invalid Cron string: ${handler.filter.timestamp}`,
|
|
141
|
-
);
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
const schedule = cron.schedule(timestampReference);
|
|
145
|
-
(handler.filter as SubqlProjectBlockFilter).cronSchedule = {
|
|
146
|
-
schedule: schedule,
|
|
147
|
-
get next() {
|
|
148
|
-
return Date.parse(this.schedule.next().format());
|
|
149
|
-
},
|
|
150
|
-
};
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
return handler;
|
|
154
|
-
}),
|
|
155
|
-
);
|
|
156
|
-
}
|
|
157
|
-
return ds;
|
|
158
|
-
}),
|
|
159
|
-
);
|
|
160
|
-
|
|
161
|
-
return dataSources;
|
|
162
|
-
}
|
|
163
|
-
*/
|
|
164
125
|
//# sourceMappingURL=SubqueryProject.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubqueryProject.js","sourceRoot":"","sources":["../../src/configure/SubqueryProject.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 { Injectable } from '@nestjs/common';\nimport { Reader, RunnerSpecs, validateSemver } from '@subql/common';\nimport {\n StellarProjectNetworkConfig,\n parseStellarProjectManifest,\n SubqlStellarDataSource,\n ProjectManifestV1_0_0Impl,\n isCustomDs,\n StellarHandlerKind,\n isRuntimeDs,\n} from '@subql/common-stellar';\nimport { getProjectRoot, updateDataSourcesV1_0_0 } from '@subql/node-core';\nimport { buildSchemaFromString } from '@subql/utils';\nimport { GraphQLSchema } from 'graphql';\n\nexport type SubqlProjectDs = SubqlStellarDataSource & {\n mapping: SubqlStellarDataSource['mapping'] & { entryScript: string };\n};\n\nexport type SubqlProjectDsTemplate = Omit<SubqlProjectDs, 'startBlock'> & {\n name: string;\n};\n\nconst NOT_SUPPORT = (name: string) => {\n throw new Error(`Manifest specVersion ${name} is not supported`);\n};\n\n// This is the runtime type after we have mapped genesisHash to chainId and endpoint/dict have been provided when dealing with deployments\ntype NetworkConfig = StellarProjectNetworkConfig & { chainId: string };\n\n@Injectable()\nexport class SubqueryProject {\n id: string;\n root: string;\n network: NetworkConfig;\n dataSources: SubqlProjectDs[];\n schema: GraphQLSchema;\n templates: SubqlProjectDsTemplate[];\n runner?: RunnerSpecs;\n\n static async create(\n path: string,\n rawManifest: unknown,\n reader: Reader,\n networkOverrides?: Partial<StellarProjectNetworkConfig>,\n root?: string,\n ): Promise<SubqueryProject> {\n // rawManifest and reader can be reused here.\n // It has been pre-fetched and used for rebase manifest runner options with args\n // in order to generate correct configs.\n\n // But we still need reader here, because path can be remote or local\n // and the `loadProjectManifest(projectPath)` only support local mode\n if (rawManifest === undefined) {\n throw new Error(`Get manifest from project path ${path} failed`);\n }\n const manifest = parseStellarProjectManifest(rawManifest);\n\n if (manifest.isV1_0_0) {\n return loadProjectFromManifest1_0_0(\n manifest.asV1_0_0,\n reader,\n path,\n networkOverrides,\n root,\n );\n } else {\n NOT_SUPPORT(manifest.specVersion);\n }\n }\n}\n\nfunction processChainId(network: any): NetworkConfig {\n if (network.chainId && network.genesisHash) {\n throw new Error('Please only provide one of chainId and genesisHash');\n } else if (network.genesisHash && !network.chainId) {\n network.chainId = network.genesisHash;\n }\n delete network.genesisHash;\n return network;\n}\n\ntype SUPPORT_MANIFEST = ProjectManifestV1_0_0Impl;\n\nasync function loadProjectFromManifestBase(\n projectManifest: SUPPORT_MANIFEST,\n reader: Reader,\n path: string,\n networkOverrides?: Partial<StellarProjectNetworkConfig>,\n root?: string,\n): Promise<SubqueryProject> {\n root = root ?? (await getProjectRoot(reader));\n\n if (typeof projectManifest.network.endpoint === 'string') {\n projectManifest.network.endpoint = [projectManifest.network.endpoint];\n }\n\n const network = processChainId({\n ...projectManifest.network,\n ...networkOverrides,\n });\n\n if (!network.endpoint) {\n throw new Error(\n `Stellar network endpoint must be provided for network. chainId=\"${network.chainId}\"`,\n );\n }\n\n let schemaString: string;\n try {\n schemaString = await reader.getFile(projectManifest.schema.file);\n } catch (e) {\n throw new Error(\n `unable to fetch the schema from ${projectManifest.schema.file}`,\n );\n }\n const schema = buildSchemaFromString(schemaString);\n\n const dataSources = await updateDataSourcesV1_0_0(\n projectManifest.dataSources,\n reader,\n root,\n isCustomDs,\n );\n\n const templates = await loadProjectTemplates(projectManifest, root, reader);\n\n if (\n dsHasSorobanEventHandler([\n ...dataSources,\n ...(templates as SubqlProjectDs[]),\n ]) &&\n !network.sorobanEndpoint\n ) {\n throw new Error(\n `Soroban network endpoint must be provided for network. chainId=\"${network.chainId}\"`,\n );\n }\n\n return {\n id: reader.root ? reader.root : path, //TODO, need to method to get project_id\n root,\n network,\n dataSources,\n schema,\n templates,\n };\n}\n\nconst { version: packageVersion } = require('../../package.json');\n\nasync function loadProjectFromManifest1_0_0(\n projectManifest: ProjectManifestV1_0_0Impl,\n reader: Reader,\n path: string,\n networkOverrides?: Partial<StellarProjectNetworkConfig>,\n root?: string,\n): Promise<SubqueryProject> {\n const project = await loadProjectFromManifestBase(\n projectManifest,\n reader,\n path,\n networkOverrides,\n root,\n );\n project.runner = projectManifest.runner;\n if (!validateSemver(packageVersion, project.runner.node.version)) {\n throw new Error(\n `Runner require node version ${project.runner.node.version}, current node ${packageVersion}`,\n );\n }\n return project;\n}\n\nasync function loadProjectTemplates(\n projectManifest: ProjectManifestV1_0_0Impl,\n root: string,\n reader: Reader,\n): Promise<SubqlProjectDsTemplate[]> {\n if (!projectManifest.templates || !projectManifest.templates.length) {\n return [];\n }\n const dsTemplates = await updateDataSourcesV1_0_0(\n projectManifest.templates,\n reader,\n root,\n isCustomDs,\n );\n\n return dsTemplates.map((ds, index) => ({\n ...ds,\n name: projectManifest.templates[index].name,\n }));\n}\n\nexport function dsHasSorobanEventHandler(\n dataSources: SubqlProjectDs[],\n): boolean {\n return (\n dataSources.findIndex(function (ds) {\n return (\n isRuntimeDs(ds) &&\n ds.mapping.handlers.findIndex(function (handler) {\n return handler.kind === StellarHandlerKind.Event;\n }) !== -1\n );\n }) !== -1\n );\n}\n\n/*\n// eslint-disable-next-line @typescript-eslint/require-await\nexport async function generateTimestampReferenceForBlockFilters(\n dataSources: SubqlProjectDs[],\n api: StellarApi,\n): Promise<SubqlProjectDs[]> {\n const cron = new Cron();\n\n dataSources = await Promise.all(\n dataSources.map(async (ds) => {\n if (isRuntimeDs(ds)) {\n const startBlock = ds.startBlock ?? 1;\n let block: Block;\n let timestampReference: Date;\n\n ds.mapping.handlers = await Promise.all(\n ds.mapping.handlers.map(async (handler) => {\n if (handler.kind === StellarHandlerKind.Block) {\n if (handler.filter?.timestamp) {\n if (!block) {\n block = await api.getBlockByHeightOrHash(startBlock);\n timestampReference = new Date(block.timestamp * 1000); // Add millis\n }\n try {\n cron.fromString(handler.filter.timestamp);\n } catch (e) {\n throw new Error(\n `Invalid Cron string: ${handler.filter.timestamp}`,\n );\n }\n\n const schedule = cron.schedule(timestampReference);\n (handler.filter as SubqlProjectBlockFilter).cronSchedule = {\n schedule: schedule,\n get next() {\n return Date.parse(this.schedule.next().format());\n },\n };\n }\n }\n return handler;\n }),\n );\n }\n return ds;\n }),\n );\n\n return dataSources;\n}\n*/\n"]}
|
|
1
|
+
{"version":3,"file":"SubqueryProject.js","sourceRoot":"","sources":["../../src/configure/SubqueryProject.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 assert from 'assert';\nimport { Injectable } from '@nestjs/common';\nimport { validateSemver } from '@subql/common';\nimport {\n StellarProjectNetworkConfig,\n parseStellarProjectManifest,\n SubqlStellarDataSource,\n ProjectManifestV1_0_0Impl,\n isCustomDs,\n StellarHandlerKind,\n isRuntimeDs,\n} from '@subql/common-stellar';\nimport {\n insertBlockFiltersCronSchedules,\n ISubqueryProject,\n loadProjectTemplates,\n SubqlProjectDs,\n updateDataSourcesV1_0_0,\n} from '@subql/node-core';\nimport { ParentProject, Reader, RunnerSpecs } from '@subql/types-core';\nimport {\n CustomDatasourceTemplate,\n RuntimeDatasourceTemplate,\n} from '@subql/types-stellar';\nimport { buildSchemaFromString } from '@subql/utils';\nimport { GraphQLSchema } from 'graphql';\n\nconst { version: packageVersion } = require('../../package.json');\n\nexport type StellarProjectDs = SubqlProjectDs<SubqlStellarDataSource>;\n\nexport type StellarProjectDsTemplate =\n | SubqlProjectDs<RuntimeDatasourceTemplate>\n | SubqlProjectDs<CustomDatasourceTemplate>;\n\nconst NOT_SUPPORT = (name: string) => {\n throw new Error(`Manifest specVersion ${name} is not supported`);\n};\n\n// This is the runtime type after we have mapped genesisHash to chainId and endpoint/dict have been provided when dealing with deployments\ntype NetworkConfig = StellarProjectNetworkConfig & { chainId: string };\n\n@Injectable()\nexport class SubqueryProject implements ISubqueryProject {\n #dataSources: StellarProjectDs[];\n\n constructor(\n readonly id: string,\n readonly root: string,\n readonly network: NetworkConfig,\n dataSources: StellarProjectDs[],\n readonly schema: GraphQLSchema,\n readonly templates: StellarProjectDsTemplate[],\n readonly runner?: RunnerSpecs,\n readonly parent?: ParentProject,\n ) {\n this.#dataSources = dataSources;\n }\n\n get dataSources(): StellarProjectDs[] {\n return this.#dataSources;\n }\n\n static async create(\n path: string,\n rawManifest: unknown,\n reader: Reader,\n root?: string,\n networkOverrides?: Partial<StellarProjectNetworkConfig>,\n ): Promise<SubqueryProject> {\n // rawManifest and reader can be reused here.\n // It has been pre-fetched and used for rebase manifest runner options with args\n // in order to generate correct configs.\n\n // But we still need reader here, because path can be remote or local\n // and the `loadProjectManifest(projectPath)` only support local mode\n if (rawManifest === undefined) {\n throw new Error(`Get manifest from project path ${path} failed`);\n }\n const manifest = parseStellarProjectManifest(rawManifest);\n\n if (manifest.isV1_0_0) {\n return loadProjectFromManifestBase(\n manifest.asV1_0_0,\n reader,\n path,\n root,\n networkOverrides,\n );\n } else {\n NOT_SUPPORT(manifest.specVersion);\n }\n }\n\n async applyCronTimestamps(\n getTimestamp: (height: number) => Promise<Date>,\n ): Promise<void> {\n this.#dataSources = await insertBlockFiltersCronSchedules(\n this.dataSources,\n getTimestamp,\n isRuntimeDs,\n StellarHandlerKind.Block,\n );\n }\n}\n\nfunction processChainId(network: any): NetworkConfig {\n if (network.chainId && network.genesisHash) {\n throw new Error('Please only provide one of chainId and genesisHash');\n } else if (network.genesisHash && !network.chainId) {\n network.chainId = network.genesisHash;\n }\n delete network.genesisHash;\n return network;\n}\n\ntype SUPPORT_MANIFEST = ProjectManifestV1_0_0Impl;\n\nasync function loadProjectFromManifestBase(\n projectManifest: SUPPORT_MANIFEST,\n reader: Reader,\n path: string,\n root: string,\n networkOverrides?: Partial<StellarProjectNetworkConfig>,\n): Promise<SubqueryProject> {\n if (typeof projectManifest.network.endpoint === 'string') {\n projectManifest.network.endpoint = [projectManifest.network.endpoint];\n }\n\n const network = processChainId({\n ...projectManifest.network,\n ...networkOverrides,\n });\n\n if (!network.endpoint) {\n throw new Error(\n `Stellar network endpoint must be provided for network. chainId=\"${network.chainId}\"`,\n );\n }\n\n let schemaString: string;\n try {\n schemaString = await reader.getFile(projectManifest.schema.file);\n } catch (e) {\n throw new Error(\n `unable to fetch the schema from ${projectManifest.schema.file}`,\n );\n }\n const schema = buildSchemaFromString(schemaString);\n\n const dataSources = await updateDataSourcesV1_0_0(\n projectManifest.dataSources,\n reader,\n root,\n isCustomDs,\n );\n\n const templates = await loadProjectTemplates(\n projectManifest.templates,\n root,\n reader,\n isCustomDs,\n );\n\n const runner = projectManifest.runner;\n assert(\n validateSemver(packageVersion, runner.node.version),\n new Error(\n `Runner require node version ${runner.node.version}, current node ${packageVersion}`,\n ),\n );\n\n return new SubqueryProject(\n reader.root ? reader.root : path, //TODO, need to method to get project_id\n root,\n network,\n dataSources,\n schema,\n templates,\n runner,\n projectManifest.parent,\n );\n}\n\nexport function dsHasSorobanEventHandler(\n dataSources: StellarProjectDs[],\n): boolean {\n return (\n dataSources.findIndex(function (ds) {\n return (\n isRuntimeDs(ds) &&\n ds.mapping.handlers.findIndex(function (handler) {\n return handler.kind === StellarHandlerKind.Event;\n }) !== -1\n );\n }) !== -1\n );\n}\n"]}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import { DynamicModule } from '@nestjs/common';
|
|
2
|
-
import {
|
|
2
|
+
import { NodeConfig } from '@subql/node-core';
|
|
3
3
|
import { SubqueryProject } from './SubqueryProject';
|
|
4
|
-
export interface IStellarConfig extends IConfig {
|
|
5
|
-
sorobanNetworkEndpoint: string;
|
|
6
|
-
}
|
|
7
4
|
export declare class ConfigureModule {
|
|
8
5
|
static getInstance(): Promise<{
|
|
9
|
-
|
|
10
|
-
project:
|
|
6
|
+
nodeConfig: NodeConfig;
|
|
7
|
+
project: SubqueryProject;
|
|
11
8
|
}>;
|
|
12
9
|
static register(): Promise<DynamicModule>;
|
|
13
10
|
}
|
|
@@ -7,118 +7,51 @@ 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
|
-
};
|
|
13
10
|
var ConfigureModule_1;
|
|
14
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
12
|
exports.ConfigureModule = void 0;
|
|
16
|
-
const assert_1 = __importDefault(require("assert"));
|
|
17
13
|
const common_1 = require("@nestjs/common");
|
|
18
|
-
const common_2 = require("@subql/common");
|
|
19
14
|
const node_core_1 = require("@subql/node-core");
|
|
20
|
-
const lodash_1 = require("lodash");
|
|
21
15
|
const yargs_1 = require("../yargs");
|
|
22
16
|
const SubqueryProject_1 = require("./SubqueryProject");
|
|
23
|
-
const
|
|
24
|
-
const YargsNameMapping = {};
|
|
25
|
-
function yargsToIConfig(yargs) {
|
|
26
|
-
return Object.entries(yargs).reduce((acc, [key, value]) => {
|
|
27
|
-
var _a;
|
|
28
|
-
if (['_', '$0'].includes(key))
|
|
29
|
-
return acc;
|
|
30
|
-
if (key === 'network-registry') {
|
|
31
|
-
try {
|
|
32
|
-
value = JSON.parse(value);
|
|
33
|
-
}
|
|
34
|
-
catch (e) {
|
|
35
|
-
throw new Error('Argument `network-registry` is not valid JSON');
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
acc[(_a = YargsNameMapping[key]) !== null && _a !== void 0 ? _a : (0, lodash_1.camelCase)(key)] = value;
|
|
39
|
-
return acc;
|
|
40
|
-
}, {});
|
|
41
|
-
}
|
|
42
|
-
function warnDeprecations() {
|
|
43
|
-
const { argv } = yargs_1.yargsOptions;
|
|
44
|
-
if (argv['subquery-name']) {
|
|
45
|
-
logger.warn('Note that argument --subquery-name has been deprecated in favour of --db-schema');
|
|
46
|
-
}
|
|
47
|
-
if (argv.local) {
|
|
48
|
-
logger.warn('Note that argument --local has been deprecated');
|
|
49
|
-
}
|
|
50
|
-
}
|
|
17
|
+
const pjson = require('../../package.json');
|
|
51
18
|
let ConfigureModule = ConfigureModule_1 = class ConfigureModule {
|
|
52
19
|
static async getInstance() {
|
|
53
20
|
const { argv } = yargs_1.yargsOptions;
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
const isTest = argv._[0] === 'test';
|
|
58
|
-
// Override order : Sub-command/Args/Flags > Manifest Runner options > Default configs
|
|
59
|
-
// Therefore, we should rebase the manifest runner options with args first but not the config in the end
|
|
60
|
-
if (argv.config) {
|
|
61
|
-
// get manifest options
|
|
62
|
-
config = node_core_1.NodeConfig.fromFile(argv.config, yargsToIConfig(argv), isTest);
|
|
63
|
-
reader = await common_2.ReaderFactory.create(config.subquery, {
|
|
64
|
-
ipfs: config.ipfs,
|
|
65
|
-
});
|
|
66
|
-
rawManifest = await reader.getProjectSchema();
|
|
67
|
-
(0, node_core_1.rebaseArgsWithManifest)(argv, rawManifest);
|
|
68
|
-
// use rebased argv generate config to override current config
|
|
69
|
-
config = node_core_1.NodeConfig.rebaseWithArgs(config, yargsToIConfig(argv), isTest);
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
if (!argv.subquery) {
|
|
73
|
-
logger.error('Subquery path is missing neither in cli options nor in config file');
|
|
74
|
-
yargs_1.yargsOptions.showHelp();
|
|
75
|
-
process.exit(1);
|
|
76
|
-
}
|
|
77
|
-
warnDeprecations();
|
|
78
|
-
(0, assert_1.default)(argv.subquery, 'subquery path is missing');
|
|
79
|
-
reader = await common_2.ReaderFactory.create(argv.subquery, {
|
|
80
|
-
ipfs: argv.ipfs,
|
|
81
|
-
});
|
|
82
|
-
rawManifest = await reader.getProjectSchema();
|
|
83
|
-
(0, node_core_1.rebaseArgsWithManifest)(argv, rawManifest);
|
|
84
|
-
// Create new nodeConfig with rebased argv
|
|
85
|
-
config = new node_core_1.NodeConfig((0, node_core_1.defaultSubqueryName)(yargsToIConfig(argv)), isTest);
|
|
86
|
-
}
|
|
87
|
-
if (!(0, node_core_1.validDbSchemaName)(config.dbSchema)) {
|
|
88
|
-
process.exit(1);
|
|
89
|
-
}
|
|
90
|
-
if (config.debug) {
|
|
91
|
-
(0, node_core_1.setLevel)('debug');
|
|
21
|
+
const { nodeConfig, project } = await (0, node_core_1.registerApp)(argv, SubqueryProject_1.SubqueryProject.create.bind(SubqueryProject_1.SubqueryProject), yargs_1.yargsOptions.showHelp.bind(yargs_1.yargsOptions), pjson);
|
|
22
|
+
if (argv['soroban-network-endpoint']) {
|
|
23
|
+
project.network.sorobanEndpoint = argv['soroban-network-endpoint'];
|
|
92
24
|
}
|
|
93
|
-
|
|
94
|
-
const p = await SubqueryProject_1.SubqueryProject.create(argv.subquery, rawManifest, reader, (0, lodash_1.omitBy)({
|
|
95
|
-
endpoint: config.networkEndpoints,
|
|
96
|
-
sorobanEndpoint: yargsToIConfig(argv).sorobanNetworkEndpoint,
|
|
97
|
-
dictionary: config.networkDictionary,
|
|
98
|
-
}, lodash_1.isNil), config.root).catch((err) => {
|
|
99
|
-
const pjson = require('../../package.json');
|
|
100
|
-
(0, common_2.handleCreateSubqueryProjectError)(err, pjson, rawManifest, logger);
|
|
101
|
-
process.exit(1);
|
|
102
|
-
});
|
|
103
|
-
return p;
|
|
104
|
-
};
|
|
105
|
-
return { config, project };
|
|
25
|
+
return { nodeConfig, project };
|
|
106
26
|
}
|
|
107
27
|
static async register() {
|
|
108
|
-
const {
|
|
28
|
+
const { nodeConfig, project } = await ConfigureModule_1.getInstance();
|
|
109
29
|
return {
|
|
110
30
|
module: ConfigureModule_1,
|
|
111
31
|
providers: [
|
|
112
32
|
{
|
|
113
33
|
provide: node_core_1.NodeConfig,
|
|
114
|
-
useValue:
|
|
34
|
+
useValue: nodeConfig,
|
|
115
35
|
},
|
|
116
36
|
{
|
|
117
37
|
provide: 'ISubqueryProject',
|
|
118
|
-
|
|
38
|
+
useValue: project,
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
provide: 'IProjectUpgradeService',
|
|
42
|
+
useValue: project,
|
|
119
43
|
},
|
|
44
|
+
{
|
|
45
|
+
provide: 'Null',
|
|
46
|
+
useValue: null,
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
exports: [
|
|
50
|
+
node_core_1.NodeConfig,
|
|
51
|
+
'ISubqueryProject',
|
|
52
|
+
'IProjectUpgradeService',
|
|
53
|
+
'Null',
|
|
120
54
|
],
|
|
121
|
-
exports: [node_core_1.NodeConfig, 'ISubqueryProject'],
|
|
122
55
|
};
|
|
123
56
|
}
|
|
124
57
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configure.module.js","sourceRoot":"","sources":["../../src/configure/configure.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC
|
|
1
|
+
{"version":3,"file":"configure.module.js","sourceRoot":"","sources":["../../src/configure/configure.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;AAEnC,2CAA+D;AAC/D,gDAA2D;AAC3D,oCAAwC;AACxC,uDAAoD;AAEpD,MAAM,KAAK,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAIrC,IAAM,eAAe,uBAArB,MAAM,eAAe;IAC1B,MAAM,CAAC,KAAK,CAAC,WAAW;QAItB,MAAM,EAAE,IAAI,EAAE,GAAG,oBAAY,CAAC;QAC9B,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,uBAAW,EAC/C,IAAI,EACJ,iCAAe,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAe,CAAC,EAC5C,oBAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAY,CAAC,EACxC,KAAK,CACN,CAAC;QAEF,IAAI,IAAI,CAAC,0BAA0B,CAAC,EAAE;YACpC,OAAO,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,0BAA0B,CAAC,CAAC;SACpE;QAED,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;IACjC,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,QAAQ;QACnB,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,MAAM,iBAAe,CAAC,WAAW,EAAE,CAAC;QAEpE,OAAO;YACL,MAAM,EAAE,iBAAe;YACvB,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,sBAAU;oBACnB,QAAQ,EAAE,UAAU;iBACrB;gBACD;oBACE,OAAO,EAAE,kBAAkB;oBAC3B,QAAQ,EAAE,OAAO;iBAClB;gBACD;oBACE,OAAO,EAAE,wBAAwB;oBACjC,QAAQ,EAAE,OAAO;iBAClB;gBACD;oBACE,OAAO,EAAE,MAAM;oBACf,QAAQ,EAAE,IAAI;iBACf;aACF;YACD,OAAO,EAAE;gBACP,sBAAU;gBACV,kBAAkB;gBAClB,wBAAwB;gBACxB,MAAM;aACP;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AAlDY,eAAe;IAF3B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,eAAe,CAkD3B;AAlDY,0CAAe","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { DynamicModule, Global, Module } from '@nestjs/common';\nimport { NodeConfig, registerApp } from '@subql/node-core';\nimport { yargsOptions } from '../yargs';\nimport { SubqueryProject } from './SubqueryProject';\n\nconst pjson = require('../../package.json');\n\n@Global()\n@Module({})\nexport class ConfigureModule {\n static async getInstance(): Promise<{\n nodeConfig: NodeConfig;\n project: SubqueryProject;\n }> {\n const { argv } = yargsOptions;\n const { nodeConfig, project } = await registerApp<SubqueryProject>(\n argv,\n SubqueryProject.create.bind(SubqueryProject),\n yargsOptions.showHelp.bind(yargsOptions),\n pjson,\n );\n\n if (argv['soroban-network-endpoint']) {\n project.network.sorobanEndpoint = argv['soroban-network-endpoint'];\n }\n\n return { nodeConfig, project };\n }\n static async register(): Promise<DynamicModule> {\n const { nodeConfig, project } = await ConfigureModule.getInstance();\n\n return {\n module: ConfigureModule,\n providers: [\n {\n provide: NodeConfig,\n useValue: nodeConfig,\n },\n {\n provide: 'ISubqueryProject',\n useValue: project,\n },\n {\n provide: 'IProjectUpgradeService',\n useValue: project,\n },\n {\n provide: 'Null',\n useValue: null,\n },\n ],\n exports: [\n NodeConfig,\n 'ISubqueryProject',\n 'IProjectUpgradeService',\n 'Null',\n ],\n };\n }\n}\n"]}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { OnApplicationShutdown } from '@nestjs/common';
|
|
2
2
|
import { EventEmitter2 } from '@nestjs/event-emitter';
|
|
3
|
-
import { NodeConfig, SmartBatchService, StoreCacheService, StoreService, IProjectService, PoiService, BlockDispatcher, ProcessBlockResponse, ApiService } from '@subql/node-core';
|
|
3
|
+
import { NodeConfig, SmartBatchService, StoreCacheService, StoreService, IProjectService, PoiService, BlockDispatcher, ProcessBlockResponse, ApiService, IProjectUpgradeService } from '@subql/node-core';
|
|
4
4
|
import { StellarBlockWrapper } from '@subql/types-stellar';
|
|
5
|
-
import {
|
|
5
|
+
import { StellarProjectDs, SubqueryProject } from '../../configure/SubqueryProject';
|
|
6
6
|
import { DynamicDsService } from '../dynamic-ds.service';
|
|
7
7
|
import { IndexerManager } from '../indexer.manager';
|
|
8
8
|
/**
|
|
9
9
|
* @description Intended to behave the same as WorkerBlockDispatcherService but doesn't use worker threads or any parallel processing
|
|
10
10
|
*/
|
|
11
|
-
export declare class BlockDispatcherService extends BlockDispatcher<StellarBlockWrapper,
|
|
11
|
+
export declare class BlockDispatcherService extends BlockDispatcher<StellarBlockWrapper, StellarProjectDs> implements OnApplicationShutdown {
|
|
12
12
|
private indexerManager;
|
|
13
|
-
constructor(apiService: ApiService, nodeConfig: NodeConfig, indexerManager: IndexerManager, eventEmitter: EventEmitter2, projectService: IProjectService<
|
|
13
|
+
constructor(apiService: ApiService, nodeConfig: NodeConfig, indexerManager: IndexerManager, eventEmitter: EventEmitter2, projectService: IProjectService<StellarProjectDs>, projectUpgradeService: IProjectUpgradeService, smartBatchService: SmartBatchService, storeService: StoreService, storeCacheService: StoreCacheService, poiService: PoiService, project: SubqueryProject, dynamicDsService: DynamicDsService);
|
|
14
14
|
protected getBlockHeight(block: StellarBlockWrapper): number;
|
|
15
15
|
protected indexBlock(block: StellarBlockWrapper): Promise<ProcessBlockResponse>;
|
|
16
16
|
}
|
|
@@ -25,25 +25,26 @@ const indexer_manager_1 = require("../indexer.manager");
|
|
|
25
25
|
* @description Intended to behave the same as WorkerBlockDispatcherService but doesn't use worker threads or any parallel processing
|
|
26
26
|
*/
|
|
27
27
|
let BlockDispatcherService = class BlockDispatcherService extends node_core_1.BlockDispatcher {
|
|
28
|
-
constructor(apiService, nodeConfig, indexerManager, eventEmitter, projectService, smartBatchService, storeService, storeCacheService, poiService, project, dynamicDsService) {
|
|
29
|
-
super(nodeConfig, eventEmitter, projectService, smartBatchService, storeService, storeCacheService, poiService, project, dynamicDsService, apiService.fetchBlocks.bind(apiService));
|
|
28
|
+
constructor(apiService, nodeConfig, indexerManager, eventEmitter, projectService, projectUpgradeService, smartBatchService, storeService, storeCacheService, poiService, project, dynamicDsService) {
|
|
29
|
+
super(nodeConfig, eventEmitter, projectService, projectUpgradeService, smartBatchService, storeService, storeCacheService, poiService, project, dynamicDsService, apiService.fetchBlocks.bind(apiService));
|
|
30
30
|
this.indexerManager = indexerManager;
|
|
31
31
|
}
|
|
32
32
|
getBlockHeight(block) {
|
|
33
33
|
return block.block.sequence;
|
|
34
34
|
}
|
|
35
35
|
async indexBlock(block) {
|
|
36
|
-
return this.indexerManager.indexBlock(block, await this.projectService.
|
|
36
|
+
return this.indexerManager.indexBlock(block, await this.projectService.getDataSources(this.getBlockHeight(block)));
|
|
37
37
|
}
|
|
38
38
|
};
|
|
39
39
|
BlockDispatcherService = __decorate([
|
|
40
40
|
(0, common_1.Injectable)(),
|
|
41
41
|
__param(4, (0, common_1.Inject)('IProjectService')),
|
|
42
|
-
__param(
|
|
42
|
+
__param(5, (0, common_1.Inject)('IProjectUpgradeService')),
|
|
43
|
+
__param(10, (0, common_1.Inject)('ISubqueryProject')),
|
|
43
44
|
__metadata("design:paramtypes", [node_core_1.ApiService,
|
|
44
45
|
node_core_1.NodeConfig,
|
|
45
46
|
indexer_manager_1.IndexerManager,
|
|
46
|
-
event_emitter_1.EventEmitter2, Object, node_core_1.SmartBatchService,
|
|
47
|
+
event_emitter_1.EventEmitter2, Object, Object, node_core_1.SmartBatchService,
|
|
47
48
|
node_core_1.StoreService,
|
|
48
49
|
node_core_1.StoreCacheService,
|
|
49
50
|
node_core_1.PoiService,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block-dispatcher.service.js","sourceRoot":"","sources":["../../../src/indexer/blockDispatcher/block-dispatcher.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,2CAA2E;AAC3E,yDAAsD;AACtD,
|
|
1
|
+
{"version":3,"file":"block-dispatcher.service.js","sourceRoot":"","sources":["../../../src/indexer/blockDispatcher/block-dispatcher.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,2CAA2E;AAC3E,yDAAsD;AACtD,gDAW0B;AAE1B,qEAGyC;AACzC,8DAAyD;AACzD,wDAAoD;AAEpD;;GAEG;AAEI,IAAM,sBAAsB,GAA5B,MAAM,sBACX,SAAQ,2BAAsD;IAG9D,YACE,UAAsB,EACtB,UAAsB,EACd,cAA8B,EACtC,YAA2B,EAE3B,cAAiD,EAEjD,qBAA6C,EAC7C,iBAAoC,EACpC,YAA0B,EAC1B,iBAAoC,EACpC,UAAsB,EACM,OAAwB,EACpD,gBAAkC;QAElC,KAAK,CACH,UAAU,EACV,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,UAAU,EACV,OAAO,EACP,gBAAgB,EAChB,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CACxC,CAAC;QAzBM,mBAAc,GAAd,cAAc,CAAgB;IA0BxC,CAAC;IAES,cAAc,CAAC,KAA0B;QACjD,OAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC9B,CAAC;IAES,KAAK,CAAC,UAAU,CACxB,KAA0B;QAE1B,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CACnC,KAAK,EACL,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CACrE,CAAC;IACJ,CAAC;CACF,CAAA;AA/CY,sBAAsB;IADlC,IAAA,mBAAU,GAAE;IAUR,WAAA,IAAA,eAAM,EAAC,iBAAiB,CAAC,CAAA;IAEzB,WAAA,IAAA,eAAM,EAAC,wBAAwB,CAAC,CAAA;IAMhC,YAAA,IAAA,eAAM,EAAC,kBAAkB,CAAC,CAAA;qCAZf,sBAAU;QACV,sBAAU;QACE,gCAAc;QACxB,6BAAa,kBAKR,6BAAiB;QACtB,wBAAY;QACP,6BAAiB;QACxB,sBAAU;QACe,iCAAe;QAClC,qCAAgB;GAlBzB,sBAAsB,CA+ClC;AA/CY,wDAAsB","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Inject, Injectable, OnApplicationShutdown } from '@nestjs/common';\nimport { EventEmitter2 } from '@nestjs/event-emitter';\nimport {\n NodeConfig,\n SmartBatchService,\n StoreCacheService,\n StoreService,\n IProjectService,\n PoiService,\n BlockDispatcher,\n ProcessBlockResponse,\n ApiService,\n IProjectUpgradeService,\n} from '@subql/node-core';\nimport { StellarBlockWrapper } from '@subql/types-stellar';\nimport {\n StellarProjectDs,\n SubqueryProject,\n} from '../../configure/SubqueryProject';\nimport { DynamicDsService } from '../dynamic-ds.service';\nimport { IndexerManager } from '../indexer.manager';\n\n/**\n * @description Intended to behave the same as WorkerBlockDispatcherService but doesn't use worker threads or any parallel processing\n */\n@Injectable()\nexport class BlockDispatcherService\n extends BlockDispatcher<StellarBlockWrapper, StellarProjectDs>\n implements OnApplicationShutdown\n{\n constructor(\n apiService: ApiService,\n nodeConfig: NodeConfig,\n private indexerManager: IndexerManager,\n eventEmitter: EventEmitter2,\n @Inject('IProjectService')\n projectService: IProjectService<StellarProjectDs>,\n @Inject('IProjectUpgradeService')\n projectUpgradeService: IProjectUpgradeService,\n smartBatchService: SmartBatchService,\n storeService: StoreService,\n storeCacheService: StoreCacheService,\n poiService: PoiService,\n @Inject('ISubqueryProject') project: SubqueryProject,\n dynamicDsService: DynamicDsService,\n ) {\n super(\n nodeConfig,\n eventEmitter,\n projectService,\n projectUpgradeService,\n smartBatchService,\n storeService,\n storeCacheService,\n poiService,\n project,\n dynamicDsService,\n apiService.fetchBlocks.bind(apiService),\n );\n }\n\n protected getBlockHeight(block: StellarBlockWrapper): number {\n return block.block.sequence;\n }\n\n protected async indexBlock(\n block: StellarBlockWrapper,\n ): Promise<ProcessBlockResponse> {\n return this.indexerManager.indexBlock(\n block,\n await this.projectService.getDataSources(this.getBlockHeight(block)),\n );\n }\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { OnApplicationShutdown } from '@nestjs/common';
|
|
2
2
|
import { EventEmitter2 } from '@nestjs/event-emitter';
|
|
3
|
-
import { NodeConfig, SmartBatchService, StoreService, PoiService, StoreCacheService, IProjectService, WorkerBlockDispatcher, ConnectionPoolStateManager } from '@subql/node-core';
|
|
4
|
-
import {
|
|
3
|
+
import { NodeConfig, SmartBatchService, StoreService, PoiService, StoreCacheService, IProjectService, WorkerBlockDispatcher, ConnectionPoolStateManager, IProjectUpgradeService } from '@subql/node-core';
|
|
4
|
+
import { StellarProjectDs, SubqueryProject } from '../../configure/SubqueryProject';
|
|
5
5
|
import { StellarApiConnection } from '../../stellar/api.connection';
|
|
6
6
|
import { DynamicDsService } from '../dynamic-ds.service';
|
|
7
7
|
import { UnfinalizedBlocksService } from '../unfinalizedBlocks.service';
|
|
@@ -9,8 +9,8 @@ import { IIndexerWorker } from '../worker/worker';
|
|
|
9
9
|
type IndexerWorker = IIndexerWorker & {
|
|
10
10
|
terminate: () => Promise<number>;
|
|
11
11
|
};
|
|
12
|
-
export declare class WorkerBlockDispatcherService extends WorkerBlockDispatcher<
|
|
13
|
-
constructor(nodeConfig: NodeConfig, eventEmitter: EventEmitter2, projectService: IProjectService<
|
|
12
|
+
export declare class WorkerBlockDispatcherService extends WorkerBlockDispatcher<StellarProjectDs, IndexerWorker> implements OnApplicationShutdown {
|
|
13
|
+
constructor(nodeConfig: NodeConfig, eventEmitter: EventEmitter2, projectService: IProjectService<StellarProjectDs>, projectUpgradeService: IProjectUpgradeService, smartBatchService: SmartBatchService, storeService: StoreService, storeCacheService: StoreCacheService, poiService: PoiService, project: SubqueryProject, dynamicDsService: DynamicDsService, unfinalizedBlocksSevice: UnfinalizedBlocksService, connectionPoolState: ConnectionPoolStateManager<StellarApiConnection>);
|
|
14
14
|
protected fetchBlock(worker: IndexerWorker, height: number): Promise<void>;
|
|
15
15
|
}
|
|
16
16
|
export {};
|