@subql/node-stellar 2.12.1-0 → 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.
Files changed (99) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/configure/SubqueryProject.d.ts +19 -19
  4. package/dist/configure/SubqueryProject.js +49 -88
  5. package/dist/configure/SubqueryProject.js.map +1 -1
  6. package/dist/configure/configure.module.d.ts +3 -6
  7. package/dist/configure/configure.module.js +22 -89
  8. package/dist/configure/configure.module.js.map +1 -1
  9. package/dist/indexer/blockDispatcher/block-dispatcher.service.d.ts +4 -4
  10. package/dist/indexer/blockDispatcher/block-dispatcher.service.js +6 -5
  11. package/dist/indexer/blockDispatcher/block-dispatcher.service.js.map +1 -1
  12. package/dist/indexer/blockDispatcher/worker-block-dispatcher.service.d.ts +4 -4
  13. package/dist/indexer/blockDispatcher/worker-block-dispatcher.service.js +9 -27
  14. package/dist/indexer/blockDispatcher/worker-block-dispatcher.service.js.map +1 -1
  15. package/dist/indexer/dictionary.service.d.ts +3 -3
  16. package/dist/indexer/dictionary.service.js +7 -2
  17. package/dist/indexer/dictionary.service.js.map +1 -1
  18. package/dist/indexer/ds-processor.service.d.ts +4 -4
  19. package/dist/indexer/ds-processor.service.js.map +1 -1
  20. package/dist/indexer/dynamic-ds.service.d.ts +3 -3
  21. package/dist/indexer/dynamic-ds.service.js +12 -2
  22. package/dist/indexer/dynamic-ds.service.js.map +1 -1
  23. package/dist/indexer/fetch.module.js +13 -10
  24. package/dist/indexer/fetch.module.js.map +1 -1
  25. package/dist/indexer/fetch.service.d.ts +12 -8
  26. package/dist/indexer/fetch.service.js +25 -47
  27. package/dist/indexer/fetch.service.js.map +1 -1
  28. package/dist/indexer/fetch.service.spec.js +4 -4
  29. package/dist/indexer/fetch.service.spec.js.map +1 -1
  30. package/dist/indexer/indexer.manager.d.ts +2 -2
  31. package/dist/indexer/indexer.manager.js.map +1 -1
  32. package/dist/indexer/project.service.d.ts +10 -6
  33. package/dist/indexer/project.service.js +19 -14
  34. package/dist/indexer/project.service.js.map +1 -1
  35. package/dist/indexer/sandbox.service.d.ts +1 -1
  36. package/dist/indexer/sandbox.service.js +1 -0
  37. package/dist/indexer/sandbox.service.js.map +1 -1
  38. package/dist/indexer/unfinalizedBlocks.service.js +24 -0
  39. package/dist/indexer/unfinalizedBlocks.service.js.map +1 -1
  40. package/dist/indexer/worker/worker-fetch.module.d.ts +2 -0
  41. package/dist/indexer/{indexer.module.js → worker/worker-fetch.module.js} +23 -25
  42. package/dist/indexer/worker/worker-fetch.module.js.map +1 -0
  43. package/dist/indexer/worker/worker.d.ts +4 -28
  44. package/dist/indexer/worker/worker.js +8 -71
  45. package/dist/indexer/worker/worker.js.map +1 -1
  46. package/dist/indexer/worker/worker.module.js +2 -2
  47. package/dist/indexer/worker/worker.module.js.map +1 -1
  48. package/dist/indexer/worker/worker.service.d.ts +11 -13
  49. package/dist/indexer/worker/worker.service.js +14 -54
  50. package/dist/indexer/worker/worker.service.js.map +1 -1
  51. package/dist/indexer/worker/worker.unfinalizedBlocks.service.d.ts +1 -5
  52. package/dist/indexer/worker/worker.unfinalizedBlocks.service.js +1 -4
  53. package/dist/indexer/worker/worker.unfinalizedBlocks.service.js.map +1 -1
  54. package/dist/init.js +2 -1
  55. package/dist/init.js.map +1 -1
  56. package/dist/main.js +4 -7
  57. package/dist/main.js.map +1 -1
  58. package/dist/stellar/api.connection.d.ts +1 -1
  59. package/dist/stellar/api.connection.js.map +1 -1
  60. package/dist/stellar/api.service.stellar.d.ts +4 -6
  61. package/dist/stellar/api.service.stellar.js +33 -68
  62. package/dist/stellar/api.service.stellar.js.map +1 -1
  63. package/dist/stellar/api.service.stellar.spec.d.ts +1 -5
  64. package/dist/stellar/api.service.stellar.spec.js +7 -6
  65. package/dist/stellar/api.service.stellar.spec.js.map +1 -1
  66. package/dist/stellar/api.stellar.js +1 -7
  67. package/dist/stellar/api.stellar.js.map +1 -1
  68. package/dist/stellar/soroban.server.spec.js +1 -1
  69. package/dist/stellar/soroban.server.spec.js.map +1 -1
  70. package/dist/subcommands/reindex.init.js +1 -2
  71. package/dist/subcommands/reindex.init.js.map +1 -1
  72. package/dist/subcommands/reindex.module.js +9 -6
  73. package/dist/subcommands/reindex.module.js.map +1 -1
  74. package/dist/subcommands/testing.init.js +2 -4
  75. package/dist/subcommands/testing.init.js.map +1 -1
  76. package/dist/subcommands/testing.module.js +9 -7
  77. package/dist/subcommands/testing.module.js.map +1 -1
  78. package/dist/subcommands/testing.service.d.ts +7 -4
  79. package/dist/subcommands/testing.service.js +2 -7
  80. package/dist/subcommands/testing.service.js.map +1 -1
  81. package/dist/utils/project.js.map +1 -1
  82. package/package.json +7 -7
  83. package/dist/indexer/indexer.module.d.ts +0 -2
  84. package/dist/indexer/indexer.module.js.map +0 -1
  85. package/dist/subcommands/mmrMigrate.init.d.ts +0 -2
  86. package/dist/subcommands/mmrMigrate.init.js +0 -28
  87. package/dist/subcommands/mmrMigrate.init.js.map +0 -1
  88. package/dist/subcommands/mmrMigrate.module.d.ts +0 -2
  89. package/dist/subcommands/mmrMigrate.module.js +0 -28
  90. package/dist/subcommands/mmrMigrate.module.js.map +0 -1
  91. package/dist/subcommands/mmrRegenerate.init.d.ts +0 -1
  92. package/dist/subcommands/mmrRegenerate.init.js +0 -28
  93. package/dist/subcommands/mmrRegenerate.init.js.map +0 -1
  94. package/dist/subcommands/mmrRegenerate.module.d.ts +0 -2
  95. package/dist/subcommands/mmrRegenerate.module.js +0 -30
  96. package/dist/subcommands/mmrRegenerate.module.js.map +0 -1
  97. package/dist/subcommands/reindex.service.d.ts +0 -11
  98. package/dist/subcommands/reindex.service.js +0 -46
  99. 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 SubqlProjectDs = SubqlStellarDataSource & {
5
- mapping: SubqlStellarDataSource['mapping'] & {
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
- id: string;
17
- root: string;
18
- network: NetworkConfig;
19
- dataSources: SubqlProjectDs[];
20
- schema: GraphQLSchema;
21
- templates: SubqlProjectDsTemplate[];
22
- runner?: RunnerSpecs;
23
- static create(path: string, rawManifest: unknown, reader: Reader, networkOverrides?: Partial<StellarProjectNetworkConfig>, root?: string): Promise<SubqueryProject>;
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: SubqlProjectDs[]): boolean;
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
- static async create(path, rawManifest, reader, networkOverrides, root) {
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 loadProjectFromManifest1_0_0(manifest.asV1_0_0, reader, path, networkOverrides, root);
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, networkOverrides, root) {
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
- if (dsHasSorobanEventHandler([
73
- ...dataSources,
74
- ...templates,
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 { IConfig, NodeConfig } from '@subql/node-core';
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
- config: NodeConfig;
10
- project: () => Promise<SubqueryProject>;
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 logger = (0, node_core_1.getLogger)('configure');
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
- let config;
55
- let rawManifest;
56
- let reader;
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
- const project = async () => {
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 { config, project } = await ConfigureModule_1.getInstance();
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: config,
34
+ useValue: nodeConfig,
115
35
  },
116
36
  {
117
37
  provide: 'ISubqueryProject',
118
- useFactory: project,
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":"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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 { DynamicModule, Global, Module } from '@nestjs/common';\nimport {\n handleCreateSubqueryProjectError,\n Reader,\n ReaderFactory,\n} from '@subql/common';\nimport { StellarProjectNetworkConfig } from '@subql/common-stellar';\nimport {\n IConfig,\n getLogger,\n setLevel,\n rebaseArgsWithManifest,\n defaultSubqueryName,\n validDbSchemaName,\n NodeConfig,\n} from '@subql/node-core';\nimport { camelCase, omitBy, isNil } from 'lodash';\nimport { yargsOptions } from '../yargs';\nimport { SubqueryProject } from './SubqueryProject';\n\nconst logger = getLogger('configure');\n\nconst YargsNameMapping: Record<string, string> = {};\n\ntype Args = (typeof yargsOptions.argv)['argv'];\n\nexport interface IStellarConfig extends IConfig {\n sorobanNetworkEndpoint: string;\n}\n\nfunction yargsToIConfig(yargs: Args): Partial<IStellarConfig> {\n return Object.entries(yargs).reduce((acc, [key, value]) => {\n if (['_', '$0'].includes(key)) return acc;\n\n if (key === 'network-registry') {\n try {\n value = JSON.parse(value as string);\n } catch (e) {\n throw new Error('Argument `network-registry` is not valid JSON');\n }\n }\n acc[YargsNameMapping[key] ?? camelCase(key)] = value;\n return acc;\n }, {} as any);\n}\n\nfunction warnDeprecations() {\n const { argv } = yargsOptions;\n if (argv['subquery-name']) {\n logger.warn(\n 'Note that argument --subquery-name has been deprecated in favour of --db-schema',\n );\n }\n if (argv.local) {\n logger.warn('Note that argument --local has been deprecated');\n }\n}\n\n@Global()\n@Module({})\nexport class ConfigureModule {\n static async getInstance(): Promise<{\n config: NodeConfig;\n project: () => Promise<SubqueryProject>;\n }> {\n const { argv } = yargsOptions;\n let config: NodeConfig;\n let rawManifest: unknown;\n let reader: Reader;\n\n const isTest = argv._[0] === 'test';\n\n // Override order : Sub-command/Args/Flags > Manifest Runner options > Default configs\n // Therefore, we should rebase the manifest runner options with args first but not the config in the end\n if (argv.config) {\n // get manifest options\n config = NodeConfig.fromFile(\n argv.config,\n yargsToIConfig(argv),\n isTest,\n ) as NodeConfig;\n reader = await ReaderFactory.create(config.subquery, {\n ipfs: config.ipfs,\n });\n rawManifest = await reader.getProjectSchema();\n rebaseArgsWithManifest(argv, rawManifest);\n // use rebased argv generate config to override current config\n config = NodeConfig.rebaseWithArgs(\n config,\n yargsToIConfig(argv),\n isTest,\n ) as NodeConfig;\n } else {\n if (!argv.subquery) {\n logger.error(\n 'Subquery path is missing neither in cli options nor in config file',\n );\n yargsOptions.showHelp();\n process.exit(1);\n }\n\n warnDeprecations();\n assert(argv.subquery, 'subquery path is missing');\n reader = await ReaderFactory.create(argv.subquery, {\n ipfs: argv.ipfs,\n });\n rawManifest = await reader.getProjectSchema();\n rebaseArgsWithManifest(argv, rawManifest);\n // Create new nodeConfig with rebased argv\n config = new NodeConfig(\n defaultSubqueryName(yargsToIConfig(argv)),\n isTest,\n );\n }\n\n if (!validDbSchemaName(config.dbSchema)) {\n process.exit(1);\n }\n\n if (config.debug) {\n setLevel('debug');\n }\n\n const project = async () => {\n const p = await SubqueryProject.create(\n argv.subquery,\n rawManifest,\n reader,\n omitBy<StellarProjectNetworkConfig>(\n {\n endpoint: config.networkEndpoints,\n sorobanEndpoint: yargsToIConfig(argv).sorobanNetworkEndpoint,\n dictionary: config.networkDictionary,\n },\n isNil,\n ),\n config.root,\n ).catch((err) => {\n const pjson = require('../../package.json');\n handleCreateSubqueryProjectError(err, pjson, rawManifest, logger);\n process.exit(1);\n });\n return p;\n };\n return { config, project };\n }\n static async register(): Promise<DynamicModule> {\n const { config, project } = await ConfigureModule.getInstance();\n\n return {\n module: ConfigureModule,\n providers: [\n {\n provide: NodeConfig,\n useValue: config,\n },\n {\n provide: 'ISubqueryProject',\n useFactory: project,\n },\n ],\n exports: [NodeConfig, 'ISubqueryProject'],\n };\n }\n}\n"]}
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 { SubqlProjectDs, SubqueryProject } from '../../configure/SubqueryProject';
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, SubqlProjectDs> implements OnApplicationShutdown {
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<SubqlProjectDs>, smartBatchService: SmartBatchService, storeService: StoreService, storeCacheService: StoreCacheService, poiService: PoiService, project: SubqueryProject, dynamicDsService: DynamicDsService);
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.getAllDataSources(this.getBlockHeight(block)));
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(9, (0, common_1.Inject)('ISubqueryProject')),
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,gDAU0B;AAE1B,qEAGyC;AACzC,8DAAyD;AACzD,wDAAoD;AAEpD;;GAEG;AAEI,IAAM,sBAAsB,GAA5B,MAAM,sBACX,SAAQ,2BAAoD;IAG5D,YACE,UAAsB,EACtB,UAAsB,EACd,cAA8B,EACtC,YAA2B,EACA,cAA+C,EAC1E,iBAAoC,EACpC,YAA0B,EAC1B,iBAAoC,EACpC,UAAsB,EACM,OAAwB,EACpD,gBAAkC;QAElC,KAAK,CACH,UAAU,EACV,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,UAAU,EACV,OAAO,EACP,gBAAgB,EAChB,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CACxC,CAAC;QArBM,mBAAc,GAAd,cAAc,CAAgB;IAsBxC,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,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CACxE,CAAC;IACJ,CAAC;CACF,CAAA;AA3CY,sBAAsB;IADlC,IAAA,mBAAU,GAAE;IAUR,WAAA,IAAA,eAAM,EAAC,iBAAiB,CAAC,CAAA;IAKzB,WAAA,IAAA,eAAM,EAAC,kBAAkB,CAAC,CAAA;qCATf,sBAAU;QACV,sBAAU;QACE,gCAAc;QACxB,6BAAa,UAER,6BAAiB;QACtB,wBAAY;QACP,6BAAiB;QACxB,sBAAU;QACe,iCAAe;QAClC,qCAAgB;GAfzB,sBAAsB,CA2ClC;AA3CY,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} from '@subql/node-core';\nimport { StellarBlockWrapper } from '@subql/types-stellar';\nimport {\n SubqlProjectDs,\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, SubqlProjectDs>\n implements OnApplicationShutdown\n{\n constructor(\n apiService: ApiService,\n nodeConfig: NodeConfig,\n private indexerManager: IndexerManager,\n eventEmitter: EventEmitter2,\n @Inject('IProjectService') projectService: IProjectService<SubqlProjectDs>,\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 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.getAllDataSources(this.getBlockHeight(block)),\n );\n }\n}\n"]}
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 { SubqlProjectDs, SubqueryProject } from '../../configure/SubqueryProject';
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<SubqlProjectDs, IndexerWorker> implements OnApplicationShutdown {
13
- constructor(nodeConfig: NodeConfig, eventEmitter: EventEmitter2, projectService: IProjectService<SubqlProjectDs>, smartBatchService: SmartBatchService, storeService: StoreService, storeCacheService: StoreCacheService, poiService: PoiService, project: SubqueryProject, dynamicDsService: DynamicDsService, unfinalizedBlocksSevice: UnfinalizedBlocksService, connectionPoolState: ConnectionPoolStateManager<StellarApiConnection>);
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 {};