@subql/node-stellar 2.9.3-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/LICENSE +674 -0
  3. package/README.md +77 -0
  4. package/bin/run +4 -0
  5. package/bin/run.cmd +3 -0
  6. package/dist/.tsbuildinfo +1 -0
  7. package/dist/app.module.d.ts +2 -0
  8. package/dist/app.module.js +35 -0
  9. package/dist/app.module.js.map +1 -0
  10. package/dist/configure/SubqueryProject.d.ts +25 -0
  11. package/dist/configure/SubqueryProject.js +148 -0
  12. package/dist/configure/SubqueryProject.js.map +1 -0
  13. package/dist/configure/configure.module.d.ts +10 -0
  14. package/dist/configure/configure.module.js +129 -0
  15. package/dist/configure/configure.module.js.map +1 -0
  16. package/dist/indexer/blockDispatcher/block-dispatcher.service.d.ts +16 -0
  17. package/dist/indexer/blockDispatcher/block-dispatcher.service.js +54 -0
  18. package/dist/indexer/blockDispatcher/block-dispatcher.service.js.map +1 -0
  19. package/dist/indexer/blockDispatcher/index.d.ts +4 -0
  20. package/dist/indexer/blockDispatcher/index.js +10 -0
  21. package/dist/indexer/blockDispatcher/index.js.map +1 -0
  22. package/dist/indexer/blockDispatcher/stellar-block-dispatcher.d.ts +4 -0
  23. package/dist/indexer/blockDispatcher/stellar-block-dispatcher.js +5 -0
  24. package/dist/indexer/blockDispatcher/stellar-block-dispatcher.js.map +1 -0
  25. package/dist/indexer/blockDispatcher/worker-block-dispatcher.service.d.ts +16 -0
  26. package/dist/indexer/blockDispatcher/worker-block-dispatcher.service.js +78 -0
  27. package/dist/indexer/blockDispatcher/worker-block-dispatcher.service.js.map +1 -0
  28. package/dist/indexer/dictionary.service.d.ts +7 -0
  29. package/dist/indexer/dictionary.service.js +34 -0
  30. package/dist/indexer/dictionary.service.js.map +1 -0
  31. package/dist/indexer/ds-processor.service.d.ts +9 -0
  32. package/dist/indexer/ds-processor.service.js +46 -0
  33. package/dist/indexer/ds-processor.service.js.map +1 -0
  34. package/dist/indexer/dynamic-ds.service.d.ts +9 -0
  35. package/dist/indexer/dynamic-ds.service.js +71 -0
  36. package/dist/indexer/dynamic-ds.service.js.map +1 -0
  37. package/dist/indexer/fetch.module.d.ts +2 -0
  38. package/dist/indexer/fetch.module.js +93 -0
  39. package/dist/indexer/fetch.module.js.map +1 -0
  40. package/dist/indexer/fetch.service.d.ts +33 -0
  41. package/dist/indexer/fetch.service.js +201 -0
  42. package/dist/indexer/fetch.service.js.map +1 -0
  43. package/dist/indexer/fetch.service.spec.d.ts +1 -0
  44. package/dist/indexer/fetch.service.spec.js +58 -0
  45. package/dist/indexer/fetch.service.spec.js.map +1 -0
  46. package/dist/indexer/indexer.manager.d.ts +36 -0
  47. package/dist/indexer/indexer.manager.js +92 -0
  48. package/dist/indexer/indexer.manager.js.map +1 -0
  49. package/dist/indexer/indexer.module.d.ts +2 -0
  50. package/dist/indexer/indexer.module.js +86 -0
  51. package/dist/indexer/indexer.module.js.map +1 -0
  52. package/dist/indexer/project.service.d.ts +13 -0
  53. package/dist/indexer/project.service.js +60 -0
  54. package/dist/indexer/project.service.js.map +1 -0
  55. package/dist/indexer/sandbox.service.d.ts +13 -0
  56. package/dist/indexer/sandbox.service.js +64 -0
  57. package/dist/indexer/sandbox.service.js.map +1 -0
  58. package/dist/indexer/types.d.ts +1 -0
  59. package/dist/indexer/types.js +5 -0
  60. package/dist/indexer/types.js.map +1 -0
  61. package/dist/indexer/unfinalizedBlocks.service.d.ts +11 -0
  62. package/dist/indexer/unfinalizedBlocks.service.js +52 -0
  63. package/dist/indexer/unfinalizedBlocks.service.js.map +1 -0
  64. package/dist/indexer/worker/worker.d.ts +31 -0
  65. package/dist/indexer/worker/worker.js +103 -0
  66. package/dist/indexer/worker/worker.js.map +1 -0
  67. package/dist/indexer/worker/worker.module.d.ts +2 -0
  68. package/dist/indexer/worker/worker.module.js +33 -0
  69. package/dist/indexer/worker/worker.module.js.map +1 -0
  70. package/dist/indexer/worker/worker.service.d.ts +26 -0
  71. package/dist/indexer/worker/worker.service.js +90 -0
  72. package/dist/indexer/worker/worker.service.js.map +1 -0
  73. package/dist/indexer/worker/worker.unfinalizedBlocks.service.d.ts +16 -0
  74. package/dist/indexer/worker/worker.unfinalizedBlocks.service.js +50 -0
  75. package/dist/indexer/worker/worker.unfinalizedBlocks.service.js.map +1 -0
  76. package/dist/init.d.ts +1 -0
  77. package/dist/init.js +52 -0
  78. package/dist/init.js.map +1 -0
  79. package/dist/main.d.ts +1 -0
  80. package/dist/main.js +22 -0
  81. package/dist/main.js.map +1 -0
  82. package/dist/meta/meta.controller.d.ts +21 -0
  83. package/dist/meta/meta.controller.js +36 -0
  84. package/dist/meta/meta.controller.js.map +1 -0
  85. package/dist/meta/meta.module.d.ts +2 -0
  86. package/dist/meta/meta.module.js +28 -0
  87. package/dist/meta/meta.module.js.map +1 -0
  88. package/dist/meta/meta.service.d.ts +24 -0
  89. package/dist/meta/meta.service.js +121 -0
  90. package/dist/meta/meta.service.js.map +1 -0
  91. package/dist/stellar/api.connection.d.ts +20 -0
  92. package/dist/stellar/api.connection.js +63 -0
  93. package/dist/stellar/api.connection.js.map +1 -0
  94. package/dist/stellar/api.connection.spec.d.ts +1 -0
  95. package/dist/stellar/api.connection.spec.js +81 -0
  96. package/dist/stellar/api.connection.spec.js.map +1 -0
  97. package/dist/stellar/api.service.stellar.d.ts +18 -0
  98. package/dist/stellar/api.service.stellar.js +144 -0
  99. package/dist/stellar/api.service.stellar.js.map +1 -0
  100. package/dist/stellar/api.service.stellar.spec.d.ts +5 -0
  101. package/dist/stellar/api.service.stellar.spec.js +87 -0
  102. package/dist/stellar/api.service.stellar.spec.js.map +1 -0
  103. package/dist/stellar/api.stellar.d.ts +29 -0
  104. package/dist/stellar/api.stellar.js +116 -0
  105. package/dist/stellar/api.stellar.js.map +1 -0
  106. package/dist/stellar/api.stellar.spec.d.ts +1 -0
  107. package/dist/stellar/api.stellar.spec.js +81 -0
  108. package/dist/stellar/api.stellar.spec.js.map +1 -0
  109. package/dist/stellar/block.stellar.d.ts +11 -0
  110. package/dist/stellar/block.stellar.js +81 -0
  111. package/dist/stellar/block.stellar.js.map +1 -0
  112. package/dist/stellar/block.stellar.spec.d.ts +1 -0
  113. package/dist/stellar/block.stellar.spec.js +58 -0
  114. package/dist/stellar/block.stellar.spec.js.map +1 -0
  115. package/dist/stellar/index.d.ts +2 -0
  116. package/dist/stellar/index.js +21 -0
  117. package/dist/stellar/index.js.map +1 -0
  118. package/dist/stellar/safe-api.d.ts +20 -0
  119. package/dist/stellar/safe-api.js +67 -0
  120. package/dist/stellar/safe-api.js.map +1 -0
  121. package/dist/stellar/stellar.server.d.ts +8 -0
  122. package/dist/stellar/stellar.server.js +72 -0
  123. package/dist/stellar/stellar.server.js.map +1 -0
  124. package/dist/stellar/stellar.server.spec.d.ts +1 -0
  125. package/dist/stellar/stellar.server.spec.js +132 -0
  126. package/dist/stellar/stellar.server.spec.js.map +1 -0
  127. package/dist/stellar/utils.stellar.d.ts +2 -0
  128. package/dist/stellar/utils.stellar.js +10 -0
  129. package/dist/stellar/utils.stellar.js.map +1 -0
  130. package/dist/subcommands/forceClean.init.d.ts +1 -0
  131. package/dist/subcommands/forceClean.init.js +24 -0
  132. package/dist/subcommands/forceClean.init.js.map +1 -0
  133. package/dist/subcommands/forceClean.module.d.ts +2 -0
  134. package/dist/subcommands/forceClean.module.js +28 -0
  135. package/dist/subcommands/forceClean.module.js.map +1 -0
  136. package/dist/subcommands/mmrMigrate.init.d.ts +2 -0
  137. package/dist/subcommands/mmrMigrate.init.js +28 -0
  138. package/dist/subcommands/mmrMigrate.init.js.map +1 -0
  139. package/dist/subcommands/mmrMigrate.module.d.ts +2 -0
  140. package/dist/subcommands/mmrMigrate.module.js +28 -0
  141. package/dist/subcommands/mmrMigrate.module.js.map +1 -0
  142. package/dist/subcommands/mmrRegenerate.init.d.ts +1 -0
  143. package/dist/subcommands/mmrRegenerate.init.js +28 -0
  144. package/dist/subcommands/mmrRegenerate.init.js.map +1 -0
  145. package/dist/subcommands/mmrRegenerate.module.d.ts +2 -0
  146. package/dist/subcommands/mmrRegenerate.module.js +30 -0
  147. package/dist/subcommands/mmrRegenerate.module.js.map +1 -0
  148. package/dist/subcommands/reindex.init.d.ts +1 -0
  149. package/dist/subcommands/reindex.init.js +30 -0
  150. package/dist/subcommands/reindex.init.js.map +1 -0
  151. package/dist/subcommands/reindex.module.d.ts +4 -0
  152. package/dist/subcommands/reindex.module.js +60 -0
  153. package/dist/subcommands/reindex.module.js.map +1 -0
  154. package/dist/subcommands/reindex.service.d.ts +11 -0
  155. package/dist/subcommands/reindex.service.js +46 -0
  156. package/dist/subcommands/reindex.service.js.map +1 -0
  157. package/dist/subcommands/testing.init.d.ts +1 -0
  158. package/dist/subcommands/testing.init.js +25 -0
  159. package/dist/subcommands/testing.init.js.map +1 -0
  160. package/dist/subcommands/testing.module.d.ts +4 -0
  161. package/dist/subcommands/testing.module.js +88 -0
  162. package/dist/subcommands/testing.module.js.map +1 -0
  163. package/dist/subcommands/testing.service.d.ts +9 -0
  164. package/dist/subcommands/testing.service.js +49 -0
  165. package/dist/subcommands/testing.service.js.map +1 -0
  166. package/dist/utils/project.d.ts +6 -0
  167. package/dist/utils/project.js +33 -0
  168. package/dist/utils/project.js.map +1 -0
  169. package/dist/utils/string.d.ts +1 -0
  170. package/dist/utils/string.js +10 -0
  171. package/dist/utils/string.js.map +1 -0
  172. package/dist/yargs.d.ts +303 -0
  173. package/dist/yargs.js +381 -0
  174. package/dist/yargs.js.map +1 -0
  175. package/package.json +69 -0
@@ -0,0 +1,2 @@
1
+ export declare class AppModule {
2
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ // Copyright 2020-2023 SubQuery Pte Ltd authors & contributors
3
+ // SPDX-License-Identifier: GPL-3.0
4
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
6
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
7
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
8
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.AppModule = void 0;
12
+ const common_1 = require("@nestjs/common");
13
+ const event_emitter_1 = require("@nestjs/event-emitter");
14
+ const schedule_1 = require("@nestjs/schedule");
15
+ const node_core_1 = require("@subql/node-core");
16
+ const configure_module_1 = require("./configure/configure.module");
17
+ const fetch_module_1 = require("./indexer/fetch.module");
18
+ const meta_module_1 = require("./meta/meta.module");
19
+ let AppModule = class AppModule {
20
+ };
21
+ AppModule = __decorate([
22
+ (0, common_1.Module)({
23
+ imports: [
24
+ node_core_1.DbModule.forRoot(),
25
+ event_emitter_1.EventEmitterModule.forRoot(),
26
+ configure_module_1.ConfigureModule.register(),
27
+ schedule_1.ScheduleModule.forRoot(),
28
+ fetch_module_1.FetchModule,
29
+ meta_module_1.MetaModule,
30
+ ],
31
+ controllers: [],
32
+ })
33
+ ], AppModule);
34
+ exports.AppModule = AppModule;
35
+ //# sourceMappingURL=app.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;AAEnC,2CAAwC;AACxC,yDAA2D;AAC3D,+CAAkD;AAClD,gDAA4C;AAC5C,mEAA+D;AAC/D,yDAAqD;AACrD,oDAAgD;AAazC,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,SAAS;IAXrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,oBAAQ,CAAC,OAAO,EAAE;YAClB,kCAAkB,CAAC,OAAO,EAAE;YAC5B,kCAAe,CAAC,QAAQ,EAAE;YAC1B,yBAAc,CAAC,OAAO,EAAE;YACxB,0BAAW;YACX,wBAAU;SACX;QACD,WAAW,EAAE,EAAE;KAChB,CAAC;GACW,SAAS,CAAG;AAAZ,8BAAS","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Module } from '@nestjs/common';\nimport { EventEmitterModule } from '@nestjs/event-emitter';\nimport { ScheduleModule } from '@nestjs/schedule';\nimport { DbModule } from '@subql/node-core';\nimport { ConfigureModule } from './configure/configure.module';\nimport { FetchModule } from './indexer/fetch.module';\nimport { MetaModule } from './meta/meta.module';\n\n@Module({\n imports: [\n DbModule.forRoot(),\n EventEmitterModule.forRoot(),\n ConfigureModule.register(),\n ScheduleModule.forRoot(),\n FetchModule,\n MetaModule,\n ],\n controllers: [],\n})\nexport class AppModule {}\n"]}
@@ -0,0 +1,25 @@
1
+ import { Reader, RunnerSpecs } from '@subql/common';
2
+ import { StellarProjectNetworkConfig, SubqlStellarDataSource } from '@subql/common-stellar';
3
+ 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
+ };
12
+ type NetworkConfig = StellarProjectNetworkConfig & {
13
+ chainId: string;
14
+ };
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>;
24
+ }
25
+ export {};
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ // Copyright 2020-2023 SubQuery Pte Ltd authors & contributors
3
+ // SPDX-License-Identifier: GPL-3.0
4
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
6
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
7
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
8
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.SubqueryProject = void 0;
12
+ const common_1 = require("@nestjs/common");
13
+ const common_2 = require("@subql/common");
14
+ const common_stellar_1 = require("@subql/common-stellar");
15
+ const node_core_1 = require("@subql/node-core");
16
+ const utils_1 = require("@subql/utils");
17
+ const NOT_SUPPORT = (name) => {
18
+ throw new Error(`Manifest specVersion ${name} is not supported`);
19
+ };
20
+ let SubqueryProject = class SubqueryProject {
21
+ static async create(path, rawManifest, reader, networkOverrides, root) {
22
+ // rawManifest and reader can be reused here.
23
+ // It has been pre-fetched and used for rebase manifest runner options with args
24
+ // in order to generate correct configs.
25
+ // But we still need reader here, because path can be remote or local
26
+ // and the `loadProjectManifest(projectPath)` only support local mode
27
+ if (rawManifest === undefined) {
28
+ throw new Error(`Get manifest from project path ${path} failed`);
29
+ }
30
+ const manifest = (0, common_stellar_1.parseStellarProjectManifest)(rawManifest);
31
+ if (manifest.isV1_0_0) {
32
+ return loadProjectFromManifest1_0_0(manifest.asV1_0_0, reader, path, networkOverrides, root);
33
+ }
34
+ else {
35
+ NOT_SUPPORT(manifest.specVersion);
36
+ }
37
+ }
38
+ };
39
+ SubqueryProject = __decorate([
40
+ (0, common_1.Injectable)()
41
+ ], SubqueryProject);
42
+ exports.SubqueryProject = SubqueryProject;
43
+ function processChainId(network) {
44
+ if (network.chainId && network.genesisHash) {
45
+ throw new Error('Please only provide one of chainId and genesisHash');
46
+ }
47
+ else if (network.genesisHash && !network.chainId) {
48
+ network.chainId = network.genesisHash;
49
+ }
50
+ delete network.genesisHash;
51
+ return network;
52
+ }
53
+ async function loadProjectFromManifestBase(projectManifest, reader, path, networkOverrides, root) {
54
+ root = root !== null && root !== void 0 ? root : (await (0, node_core_1.getProjectRoot)(reader));
55
+ if (typeof projectManifest.network.endpoint === 'string') {
56
+ projectManifest.network.endpoint = [projectManifest.network.endpoint];
57
+ }
58
+ const network = processChainId(Object.assign(Object.assign({}, projectManifest.network), networkOverrides));
59
+ if (!network.endpoint) {
60
+ throw new Error(`Network endpoint must be provided for network. chainId="${network.chainId}"`);
61
+ }
62
+ let schemaString;
63
+ try {
64
+ schemaString = await reader.getFile(projectManifest.schema.file);
65
+ }
66
+ catch (e) {
67
+ throw new Error(`unable to fetch the schema from ${projectManifest.schema.file}`);
68
+ }
69
+ const schema = (0, utils_1.buildSchemaFromString)(schemaString);
70
+ 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
+ return {
73
+ id: reader.root ? reader.root : path,
74
+ root,
75
+ network,
76
+ dataSources,
77
+ schema,
78
+ templates,
79
+ };
80
+ }
81
+ const { version: packageVersion } = require('../../package.json');
82
+ async function loadProjectFromManifest1_0_0(projectManifest, reader, path, networkOverrides, root) {
83
+ const project = await loadProjectFromManifestBase(projectManifest, reader, path, networkOverrides, root);
84
+ project.runner = projectManifest.runner;
85
+ if (!(0, common_2.validateSemver)(packageVersion, project.runner.node.version)) {
86
+ throw new Error(`Runner require node version ${project.runner.node.version}, current node ${packageVersion}`);
87
+ }
88
+ return project;
89
+ }
90
+ async function loadProjectTemplates(projectManifest, root, reader) {
91
+ if (!projectManifest.templates || !projectManifest.templates.length) {
92
+ return [];
93
+ }
94
+ const dsTemplates = await (0, node_core_1.updateDataSourcesV1_0_0)(projectManifest.templates, reader, root, common_stellar_1.isCustomDs);
95
+ return dsTemplates.map((ds, index) => (Object.assign(Object.assign({}, ds), { name: projectManifest.templates[index].name })));
96
+ }
97
+ /*
98
+ // eslint-disable-next-line @typescript-eslint/require-await
99
+ export async function generateTimestampReferenceForBlockFilters(
100
+ dataSources: SubqlProjectDs[],
101
+ api: StellarApi,
102
+ ): Promise<SubqlProjectDs[]> {
103
+ const cron = new Cron();
104
+
105
+ dataSources = await Promise.all(
106
+ dataSources.map(async (ds) => {
107
+ if (isRuntimeDs(ds)) {
108
+ const startBlock = ds.startBlock ?? 1;
109
+ let block: Block;
110
+ let timestampReference: Date;
111
+
112
+ ds.mapping.handlers = await Promise.all(
113
+ ds.mapping.handlers.map(async (handler) => {
114
+ if (handler.kind === StellarHandlerKind.Block) {
115
+ if (handler.filter?.timestamp) {
116
+ if (!block) {
117
+ block = await api.getBlockByHeightOrHash(startBlock);
118
+ timestampReference = new Date(block.timestamp * 1000); // Add millis
119
+ }
120
+ try {
121
+ cron.fromString(handler.filter.timestamp);
122
+ } catch (e) {
123
+ throw new Error(
124
+ `Invalid Cron string: ${handler.filter.timestamp}`,
125
+ );
126
+ }
127
+
128
+ const schedule = cron.schedule(timestampReference);
129
+ (handler.filter as SubqlProjectBlockFilter).cronSchedule = {
130
+ schedule: schedule,
131
+ get next() {
132
+ return Date.parse(this.schedule.next().format());
133
+ },
134
+ };
135
+ }
136
+ }
137
+ return handler;
138
+ }),
139
+ );
140
+ }
141
+ return ds;
142
+ }),
143
+ );
144
+
145
+ return dataSources;
146
+ }
147
+ */
148
+ //# sourceMappingURL=SubqueryProject.js.map
@@ -0,0 +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} 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 `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 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\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"]}
@@ -0,0 +1,10 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ import { NodeConfig } from '@subql/node-core';
3
+ import { SubqueryProject } from './SubqueryProject';
4
+ export declare class ConfigureModule {
5
+ static getInstance(): Promise<{
6
+ config: NodeConfig;
7
+ project: () => Promise<SubqueryProject>;
8
+ }>;
9
+ static register(): Promise<DynamicModule>;
10
+ }
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ // Copyright 2020-2023 SubQuery Pte Ltd authors & contributors
3
+ // SPDX-License-Identifier: GPL-3.0
4
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
6
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
7
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
8
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
9
+ };
10
+ var __importDefault = (this && this.__importDefault) || function (mod) {
11
+ return (mod && mod.__esModule) ? mod : { "default": mod };
12
+ };
13
+ var ConfigureModule_1;
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.ConfigureModule = void 0;
16
+ const assert_1 = __importDefault(require("assert"));
17
+ const common_1 = require("@nestjs/common");
18
+ const common_2 = require("@subql/common");
19
+ const node_core_1 = require("@subql/node-core");
20
+ const lodash_1 = require("lodash");
21
+ const yargs_1 = require("../yargs");
22
+ 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
+ }
51
+ let ConfigureModule = ConfigureModule_1 = class ConfigureModule {
52
+ static async getInstance() {
53
+ 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');
92
+ }
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
+ dictionary: config.networkDictionary,
97
+ }, lodash_1.isNil), config.root).catch((err) => {
98
+ const pjson = require('../../package.json');
99
+ (0, common_2.handleCreateSubqueryProjectError)(err, pjson, rawManifest, logger);
100
+ process.exit(1);
101
+ });
102
+ return p;
103
+ };
104
+ return { config, project };
105
+ }
106
+ static async register() {
107
+ const { config, project } = await ConfigureModule_1.getInstance();
108
+ return {
109
+ module: ConfigureModule_1,
110
+ providers: [
111
+ {
112
+ provide: node_core_1.NodeConfig,
113
+ useValue: config,
114
+ },
115
+ {
116
+ provide: 'ISubqueryProject',
117
+ useFactory: project,
118
+ },
119
+ ],
120
+ exports: [node_core_1.NodeConfig, 'ISubqueryProject'],
121
+ };
122
+ }
123
+ };
124
+ ConfigureModule = ConfigureModule_1 = __decorate([
125
+ (0, common_1.Global)(),
126
+ (0, common_1.Module)({})
127
+ ], ConfigureModule);
128
+ exports.ConfigureModule = ConfigureModule;
129
+ //# sourceMappingURL=configure.module.js.map
@@ -0,0 +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 NodeConfig,\n getLogger,\n setLevel,\n rebaseArgsWithManifest,\n defaultSubqueryName,\n validDbSchemaName,\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\nfunction yargsToIConfig(yargs: Args): Partial<IConfig> {\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(argv.config, yargsToIConfig(argv), isTest);\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(config, yargsToIConfig(argv), isTest);\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 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"]}
@@ -0,0 +1,16 @@
1
+ import { OnApplicationShutdown } from '@nestjs/common';
2
+ import { EventEmitter2 } from '@nestjs/event-emitter';
3
+ import { NodeConfig, SmartBatchService, StoreCacheService, StoreService, IProjectService, PoiService, BlockDispatcher, ProcessBlockResponse, ApiService } from '@subql/node-core';
4
+ import { StellarBlockWrapper } from '@subql/types-stellar';
5
+ import { SubqlProjectDs, SubqueryProject } from '../../configure/SubqueryProject';
6
+ import { DynamicDsService } from '../dynamic-ds.service';
7
+ import { IndexerManager } from '../indexer.manager';
8
+ /**
9
+ * @description Intended to behave the same as WorkerBlockDispatcherService but doesn't use worker threads or any parallel processing
10
+ */
11
+ export declare class BlockDispatcherService extends BlockDispatcher<StellarBlockWrapper, SubqlProjectDs> implements OnApplicationShutdown {
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);
14
+ protected getBlockHeight(block: StellarBlockWrapper): number;
15
+ protected indexBlock(block: StellarBlockWrapper): Promise<ProcessBlockResponse>;
16
+ }
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ // Copyright 2020-2023 SubQuery Pte Ltd authors & contributors
3
+ // SPDX-License-Identifier: GPL-3.0
4
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
6
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
7
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
8
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
9
+ };
10
+ var __metadata = (this && this.__metadata) || function (k, v) {
11
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
12
+ };
13
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
14
+ return function (target, key) { decorator(target, key, paramIndex); }
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.BlockDispatcherService = void 0;
18
+ const common_1 = require("@nestjs/common");
19
+ const event_emitter_1 = require("@nestjs/event-emitter");
20
+ const node_core_1 = require("@subql/node-core");
21
+ const SubqueryProject_1 = require("../../configure/SubqueryProject");
22
+ const dynamic_ds_service_1 = require("../dynamic-ds.service");
23
+ const indexer_manager_1 = require("../indexer.manager");
24
+ /**
25
+ * @description Intended to behave the same as WorkerBlockDispatcherService but doesn't use worker threads or any parallel processing
26
+ */
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));
30
+ this.indexerManager = indexerManager;
31
+ }
32
+ getBlockHeight(block) {
33
+ return block.block.ledger;
34
+ }
35
+ async indexBlock(block) {
36
+ return this.indexerManager.indexBlock(block, await this.projectService.getAllDataSources(this.getBlockHeight(block)));
37
+ }
38
+ };
39
+ BlockDispatcherService = __decorate([
40
+ (0, common_1.Injectable)(),
41
+ __param(4, (0, common_1.Inject)('IProjectService')),
42
+ __param(9, (0, common_1.Inject)('ISubqueryProject')),
43
+ __metadata("design:paramtypes", [node_core_1.ApiService,
44
+ node_core_1.NodeConfig,
45
+ indexer_manager_1.IndexerManager,
46
+ event_emitter_1.EventEmitter2, Object, node_core_1.SmartBatchService,
47
+ node_core_1.StoreService,
48
+ node_core_1.StoreCacheService,
49
+ node_core_1.PoiService,
50
+ SubqueryProject_1.SubqueryProject,
51
+ dynamic_ds_service_1.DynamicDsService])
52
+ ], BlockDispatcherService);
53
+ exports.BlockDispatcherService = BlockDispatcherService;
54
+ //# sourceMappingURL=block-dispatcher.service.js.map
@@ -0,0 +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,MAAM,CAAC;IAC5B,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.ledger;\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"]}
@@ -0,0 +1,4 @@
1
+ import { BlockDispatcherService } from './block-dispatcher.service';
2
+ import { IStellarBlockDispatcher } from './stellar-block-dispatcher';
3
+ import { WorkerBlockDispatcherService } from './worker-block-dispatcher.service';
4
+ export { BlockDispatcherService, WorkerBlockDispatcherService, IStellarBlockDispatcher, };
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ // Copyright 2020-2023 SubQuery Pte Ltd authors & contributors
3
+ // SPDX-License-Identifier: GPL-3.0
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.WorkerBlockDispatcherService = exports.BlockDispatcherService = void 0;
6
+ const block_dispatcher_service_1 = require("./block-dispatcher.service");
7
+ Object.defineProperty(exports, "BlockDispatcherService", { enumerable: true, get: function () { return block_dispatcher_service_1.BlockDispatcherService; } });
8
+ const worker_block_dispatcher_service_1 = require("./worker-block-dispatcher.service");
9
+ Object.defineProperty(exports, "WorkerBlockDispatcherService", { enumerable: true, get: function () { return worker_block_dispatcher_service_1.WorkerBlockDispatcherService; } });
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/indexer/blockDispatcher/index.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;AAEnC,yEAAoE;AAKlE,uGALO,iDAAsB,OAKP;AAHxB,uFAAiF;AAI/E,6GAJO,8DAA4B,OAIP","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { BlockDispatcherService } from './block-dispatcher.service';\nimport { IStellarBlockDispatcher } from './stellar-block-dispatcher';\nimport { WorkerBlockDispatcherService } from './worker-block-dispatcher.service';\n\nexport {\n BlockDispatcherService,\n WorkerBlockDispatcherService,\n IStellarBlockDispatcher,\n};\n"]}
@@ -0,0 +1,4 @@
1
+ import { IBlockDispatcher } from '@subql/node-core';
2
+ export interface IStellarBlockDispatcher extends IBlockDispatcher {
3
+ init(onDynamicDsCreated: (height: number) => Promise<void>): Promise<void>;
4
+ }
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ // Copyright 2020-2023 SubQuery Pte Ltd authors & contributors
3
+ // SPDX-License-Identifier: GPL-3.0
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ //# sourceMappingURL=stellar-block-dispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stellar-block-dispatcher.js","sourceRoot":"","sources":["../../../src/indexer/blockDispatcher/stellar-block-dispatcher.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { IBlockDispatcher } from '@subql/node-core';\n\nexport interface IStellarBlockDispatcher extends IBlockDispatcher {\n init(onDynamicDsCreated: (height: number) => Promise<void>): Promise<void>;\n}\n"]}
@@ -0,0 +1,16 @@
1
+ import { OnApplicationShutdown } from '@nestjs/common';
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';
5
+ import { StellarApiConnection } from '../../stellar/api.connection';
6
+ import { DynamicDsService } from '../dynamic-ds.service';
7
+ import { UnfinalizedBlocksService } from '../unfinalizedBlocks.service';
8
+ import { IIndexerWorker } from '../worker/worker';
9
+ type IndexerWorker = IIndexerWorker & {
10
+ terminate: () => Promise<number>;
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>);
14
+ protected fetchBlock(worker: IndexerWorker, height: number): Promise<void>;
15
+ }
16
+ export {};
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ // Copyright 2020-2023 SubQuery Pte Ltd authors & contributors
3
+ // SPDX-License-Identifier: GPL-3.0
4
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
6
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
7
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
8
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
9
+ };
10
+ var __metadata = (this && this.__metadata) || function (k, v) {
11
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
12
+ };
13
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
14
+ return function (target, key) { decorator(target, key, paramIndex); }
15
+ };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.WorkerBlockDispatcherService = void 0;
21
+ const path_1 = __importDefault(require("path"));
22
+ const common_1 = require("@nestjs/common");
23
+ const event_emitter_1 = require("@nestjs/event-emitter");
24
+ const node_core_1 = require("@subql/node-core");
25
+ const SubqueryProject_1 = require("../../configure/SubqueryProject");
26
+ const dynamic_ds_service_1 = require("../dynamic-ds.service");
27
+ const unfinalizedBlocks_service_1 = require("../unfinalizedBlocks.service");
28
+ const logger = (0, node_core_1.getLogger)('WorkerBlockDispatcherService');
29
+ async function createIndexerWorker(store, dynamicDsService, unfinalizedBlocksService, connectionPoolState, root) {
30
+ const indexerWorker = node_core_1.Worker.create(path_1.default.resolve(__dirname, '../../../dist/indexer/worker/worker.js'), [
31
+ 'initWorker',
32
+ 'processBlock',
33
+ 'fetchBlock',
34
+ 'numFetchedBlocks',
35
+ 'numFetchingBlocks',
36
+ 'getStatus',
37
+ 'getMemoryLeft',
38
+ 'waitForWorkerBatchSize',
39
+ ], Object.assign({ storeGet: store.get.bind(store), storeGetByField: store.getByField.bind(store), storeGetOneByField: store.getOneByField.bind(store), storeSet: store.set.bind(store), storeBulkCreate: store.bulkCreate.bind(store), storeBulkUpdate: store.bulkUpdate.bind(store), storeRemove: store.remove.bind(store), storeBulkRemove: store.bulkRemove.bind(store), dynamicDsCreateDynamicDatasource: dynamicDsService.createDynamicDatasource.bind(dynamicDsService), dynamicDsGetDynamicDatasources: dynamicDsService.getDynamicDatasources.bind(dynamicDsService), unfinalizedBlocksProcess: unfinalizedBlocksService.processUnfinalizedBlockHeader.bind(unfinalizedBlocksService) }, (0, node_core_1.connectionPoolStateHostFunctions)(connectionPoolState)), root);
40
+ await indexerWorker.initWorker();
41
+ return indexerWorker;
42
+ }
43
+ let WorkerBlockDispatcherService = class WorkerBlockDispatcherService extends node_core_1.WorkerBlockDispatcher {
44
+ constructor(nodeConfig, eventEmitter, projectService, smartBatchService, storeService, storeCacheService, poiService, project, dynamicDsService, unfinalizedBlocksSevice, connectionPoolState) {
45
+ super(nodeConfig, eventEmitter, projectService, smartBatchService, storeService, storeCacheService, poiService, project, dynamicDsService, () => createIndexerWorker(storeService.getStore(), dynamicDsService, unfinalizedBlocksSevice, connectionPoolState, project.root));
46
+ }
47
+ async fetchBlock(worker, height) {
48
+ const start = new Date();
49
+ await worker.fetchBlock(height);
50
+ const end = new Date();
51
+ // const waitTime = end.getTime() - start.getTime();
52
+ // if (waitTime > 1000) {
53
+ // logger.info(
54
+ // `Waiting to fetch block ${height}: ${chalk.red(`${waitTime}ms`)}`,
55
+ // );
56
+ // } else if (waitTime > 200) {
57
+ // logger.info(
58
+ // `Waiting to fetch block ${height}: ${chalk.yellow(`${waitTime}ms`)}`,
59
+ // );
60
+ // }
61
+ }
62
+ };
63
+ WorkerBlockDispatcherService = __decorate([
64
+ (0, common_1.Injectable)(),
65
+ __param(2, (0, common_1.Inject)('IProjectService')),
66
+ __param(7, (0, common_1.Inject)('ISubqueryProject')),
67
+ __metadata("design:paramtypes", [node_core_1.NodeConfig,
68
+ event_emitter_1.EventEmitter2, Object, node_core_1.SmartBatchService,
69
+ node_core_1.StoreService,
70
+ node_core_1.StoreCacheService,
71
+ node_core_1.PoiService,
72
+ SubqueryProject_1.SubqueryProject,
73
+ dynamic_ds_service_1.DynamicDsService,
74
+ unfinalizedBlocks_service_1.UnfinalizedBlocksService,
75
+ node_core_1.ConnectionPoolStateManager])
76
+ ], WorkerBlockDispatcherService);
77
+ exports.WorkerBlockDispatcherService = WorkerBlockDispatcherService;
78
+ //# sourceMappingURL=worker-block-dispatcher.service.js.map