@subql/node-stellar 3.9.1 → 3.9.2-1

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 (134) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/app.module.js +1 -1
  4. package/dist/app.module.js.map +1 -1
  5. package/dist/configure/SubqueryProject.js +1 -1
  6. package/dist/configure/SubqueryProject.js.map +1 -1
  7. package/dist/configure/configure.module.js +1 -1
  8. package/dist/configure/configure.module.js.map +1 -1
  9. package/dist/indexer/blockDispatcher/block-dispatcher.service.d.ts +2 -2
  10. package/dist/indexer/blockDispatcher/block-dispatcher.service.js +2 -2
  11. package/dist/indexer/blockDispatcher/block-dispatcher.service.js.map +1 -1
  12. package/dist/indexer/blockDispatcher/index.js +1 -1
  13. package/dist/indexer/blockDispatcher/index.js.map +1 -1
  14. package/dist/indexer/blockDispatcher/stellar-block-dispatcher.d.ts +2 -1
  15. package/dist/indexer/blockDispatcher/stellar-block-dispatcher.js +1 -1
  16. package/dist/indexer/blockDispatcher/stellar-block-dispatcher.js.map +1 -1
  17. package/dist/indexer/blockDispatcher/worker-block-dispatcher.service.d.ts +2 -1
  18. package/dist/indexer/blockDispatcher/worker-block-dispatcher.service.js +1 -1
  19. package/dist/indexer/blockDispatcher/worker-block-dispatcher.service.js.map +1 -1
  20. package/dist/indexer/dictionary/index.d.ts +1 -0
  21. package/dist/indexer/dictionary/index.js +20 -0
  22. package/dist/indexer/dictionary/index.js.map +1 -0
  23. package/dist/indexer/dictionary/stellarDictionary.service.d.ts +13 -0
  24. package/dist/indexer/dictionary/stellarDictionary.service.js +69 -0
  25. package/dist/indexer/dictionary/stellarDictionary.service.js.map +1 -0
  26. package/dist/indexer/dictionary/v1/index.d.ts +1 -0
  27. package/dist/indexer/dictionary/v1/index.js +20 -0
  28. package/dist/indexer/dictionary/v1/index.js.map +1 -0
  29. package/dist/indexer/dictionary/v1/stellarDictionaryV1.d.ts +16 -0
  30. package/dist/indexer/dictionary/v1/stellarDictionaryV1.js +210 -0
  31. package/dist/indexer/dictionary/v1/stellarDictionaryV1.js.map +1 -0
  32. package/dist/indexer/{fetch.service.spec.js → dictionary/v1/stellarDictionaryV1.spec.js} +52 -7
  33. package/dist/indexer/dictionary/v1/stellarDictionaryV1.spec.js.map +1 -0
  34. package/dist/indexer/ds-processor.service.js +1 -1
  35. package/dist/indexer/ds-processor.service.js.map +1 -1
  36. package/dist/indexer/dynamic-ds.service.js +4 -3
  37. package/dist/indexer/dynamic-ds.service.js.map +1 -1
  38. package/dist/indexer/fetch.module.js +4 -11
  39. package/dist/indexer/fetch.module.js.map +1 -1
  40. package/dist/indexer/fetch.service.d.ts +4 -14
  41. package/dist/indexer/fetch.service.js +6 -193
  42. package/dist/indexer/fetch.service.js.map +1 -1
  43. package/dist/indexer/indexer.manager.d.ts +2 -2
  44. package/dist/indexer/indexer.manager.js +2 -2
  45. package/dist/indexer/indexer.manager.js.map +1 -1
  46. package/dist/indexer/project.service.js +1 -1
  47. package/dist/indexer/project.service.js.map +1 -1
  48. package/dist/indexer/sandbox.service.js +1 -1
  49. package/dist/indexer/sandbox.service.js.map +1 -1
  50. package/dist/indexer/types.js +1 -1
  51. package/dist/indexer/types.js.map +1 -1
  52. package/dist/indexer/unfinalizedBlocks.service.d.ts +0 -2
  53. package/dist/indexer/unfinalizedBlocks.service.js +5 -21
  54. package/dist/indexer/unfinalizedBlocks.service.js.map +1 -1
  55. package/dist/indexer/worker/worker-fetch.module.js +1 -1
  56. package/dist/indexer/worker/worker-fetch.module.js.map +1 -1
  57. package/dist/indexer/worker/worker.js +1 -1
  58. package/dist/indexer/worker/worker.js.map +1 -1
  59. package/dist/indexer/worker/worker.module.js +1 -1
  60. package/dist/indexer/worker/worker.module.js.map +1 -1
  61. package/dist/indexer/worker/worker.service.d.ts +3 -3
  62. package/dist/indexer/worker/worker.service.js +1 -1
  63. package/dist/indexer/worker/worker.service.js.map +1 -1
  64. package/dist/indexer/worker/worker.unfinalizedBlocks.service.d.ts +2 -2
  65. package/dist/indexer/worker/worker.unfinalizedBlocks.service.js +3 -3
  66. package/dist/indexer/worker/worker.unfinalizedBlocks.service.js.map +1 -1
  67. package/dist/init.js +1 -1
  68. package/dist/init.js.map +1 -1
  69. package/dist/main.js +1 -1
  70. package/dist/main.js.map +1 -1
  71. package/dist/meta/meta.controller.js +1 -1
  72. package/dist/meta/meta.controller.js.map +1 -1
  73. package/dist/meta/meta.module.js +1 -1
  74. package/dist/meta/meta.module.js.map +1 -1
  75. package/dist/meta/meta.service.js +1 -1
  76. package/dist/meta/meta.service.js.map +1 -1
  77. package/dist/stellar/api.connection.d.ts +4 -4
  78. package/dist/stellar/api.connection.js +1 -1
  79. package/dist/stellar/api.connection.js.map +1 -1
  80. package/dist/stellar/api.connection.spec.js +1 -1
  81. package/dist/stellar/api.connection.spec.js.map +1 -1
  82. package/dist/stellar/api.service.stellar.d.ts +2 -2
  83. package/dist/stellar/api.service.stellar.js +1 -2
  84. package/dist/stellar/api.service.stellar.js.map +1 -1
  85. package/dist/stellar/api.service.stellar.spec.js +3 -4
  86. package/dist/stellar/api.service.stellar.spec.js.map +1 -1
  87. package/dist/stellar/api.stellar.d.ts +3 -2
  88. package/dist/stellar/api.stellar.js +3 -2
  89. package/dist/stellar/api.stellar.js.map +1 -1
  90. package/dist/stellar/api.stellar.spec.js +3 -3
  91. package/dist/stellar/api.stellar.spec.js.map +1 -1
  92. package/dist/stellar/block.stellar.js +1 -1
  93. package/dist/stellar/block.stellar.js.map +1 -1
  94. package/dist/stellar/block.stellar.spec.js +1 -1
  95. package/dist/stellar/block.stellar.spec.js.map +1 -1
  96. package/dist/stellar/index.js +1 -1
  97. package/dist/stellar/index.js.map +1 -1
  98. package/dist/stellar/safe-api.js +1 -1
  99. package/dist/stellar/safe-api.js.map +1 -1
  100. package/dist/stellar/soroban.server.js +1 -1
  101. package/dist/stellar/soroban.server.js.map +1 -1
  102. package/dist/stellar/soroban.server.spec.js +1 -1
  103. package/dist/stellar/soroban.server.spec.js.map +1 -1
  104. package/dist/stellar/stellar.server.js +1 -1
  105. package/dist/stellar/stellar.server.js.map +1 -1
  106. package/dist/stellar/utils.stellar.d.ts +4 -1
  107. package/dist/stellar/utils.stellar.js +17 -2
  108. package/dist/stellar/utils.stellar.js.map +1 -1
  109. package/dist/subcommands/forceClean.init.js +1 -1
  110. package/dist/subcommands/forceClean.init.js.map +1 -1
  111. package/dist/subcommands/forceClean.module.js +1 -1
  112. package/dist/subcommands/forceClean.module.js.map +1 -1
  113. package/dist/subcommands/reindex.init.js +1 -1
  114. package/dist/subcommands/reindex.init.js.map +1 -1
  115. package/dist/subcommands/reindex.module.js +1 -1
  116. package/dist/subcommands/reindex.module.js.map +1 -1
  117. package/dist/subcommands/testing.init.js +1 -1
  118. package/dist/subcommands/testing.init.js.map +1 -1
  119. package/dist/subcommands/testing.module.js +1 -1
  120. package/dist/subcommands/testing.module.js.map +1 -1
  121. package/dist/subcommands/testing.service.js +1 -1
  122. package/dist/subcommands/testing.service.js.map +1 -1
  123. package/dist/utils/project.js +1 -1
  124. package/dist/utils/project.js.map +1 -1
  125. package/dist/utils/string.js +1 -1
  126. package/dist/utils/string.js.map +1 -1
  127. package/dist/yargs.js +1 -1
  128. package/dist/yargs.js.map +1 -1
  129. package/package.json +7 -6
  130. package/dist/indexer/dictionary.service.d.ts +0 -8
  131. package/dist/indexer/dictionary.service.js +0 -46
  132. package/dist/indexer/dictionary.service.js.map +0 -1
  133. package/dist/indexer/fetch.service.spec.js.map +0 -1
  134. /package/dist/indexer/{fetch.service.spec.d.ts → dictionary/v1/stellarDictionaryV1.spec.d.ts} +0 -0
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2020-2023 SubQuery Pte Ltd authors & contributors
2
+ // Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
3
3
  // SPDX-License-Identifier: GPL-3.0
4
4
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
5
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -14,197 +14,24 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
14
14
  return function (target, key) { decorator(target, key, paramIndex); }
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.FetchService = exports.buildDictionaryQueryEntries = void 0;
17
+ exports.FetchService = void 0;
18
18
  const common_1 = require("@nestjs/common");
19
19
  const event_emitter_1 = require("@nestjs/event-emitter");
20
20
  const schedule_1 = require("@nestjs/schedule");
21
21
  const common_stellar_1 = require("@subql/common-stellar");
22
22
  const node_core_1 = require("@subql/node-core");
23
- const lodash_1 = require("lodash");
24
23
  const SubqueryProject_1 = require("../configure/SubqueryProject");
25
24
  const utils_stellar_1 = require("../stellar/utils.stellar");
26
- const yargs_1 = require("../yargs");
27
- const dictionary_service_1 = require("./dictionary.service");
25
+ const dictionary_1 = require("./dictionary");
28
26
  const ds_processor_service_1 = require("./ds-processor.service");
29
27
  const dynamic_ds_service_1 = require("./dynamic-ds.service");
30
28
  const project_service_1 = require("./project.service");
31
29
  const unfinalizedBlocks_service_1 = require("./unfinalizedBlocks.service");
32
- const logger = (0, node_core_1.getLogger)('fetch.service');
33
30
  const BLOCK_TIME_VARIANCE = 5000;
34
31
  const INTERVAL_PERCENT = 0.9;
35
- function transactionFilterToQueryEntry(filter, dsOptions) {
36
- const conditions = [];
37
- if (filter.account) {
38
- conditions.push({
39
- field: 'account',
40
- value: filter.account.toLowerCase(),
41
- matcher: 'equalTo',
42
- });
43
- }
44
- return {
45
- entity: 'transactions',
46
- conditions,
47
- };
48
- }
49
- function operationFilterToQueryEntry(filter, dsOptions) {
50
- const conditions = [];
51
- if (filter.type) {
52
- conditions.push({
53
- field: 'type',
54
- value: filter.type.toLowerCase(),
55
- matcher: 'equalTo',
56
- });
57
- }
58
- if (filter.sourceAccount) {
59
- conditions.push({
60
- field: 'sourceAccount',
61
- value: filter.sourceAccount.toLowerCase(),
62
- matcher: 'equalTo',
63
- });
64
- }
65
- return {
66
- entity: 'operations',
67
- conditions,
68
- };
69
- }
70
- function effectFilterToQueryEntry(filter, dsOptions) {
71
- const conditions = [];
72
- if (filter.type) {
73
- conditions.push({
74
- field: 'type',
75
- value: filter.type.toLowerCase(),
76
- matcher: 'equalTo',
77
- });
78
- }
79
- if (filter.account) {
80
- conditions.push({
81
- field: 'account',
82
- value: filter.account.toLowerCase(),
83
- matcher: 'equalTo',
84
- });
85
- }
86
- return {
87
- entity: 'effects',
88
- conditions,
89
- };
90
- }
91
- function eventFilterToQueryEntry(filter, dsOptions) {
92
- const queryAddressLimit = yargs_1.yargsOptions.argv['query-address-limit'];
93
- const conditions = [];
94
- if (Array.isArray(dsOptions)) {
95
- const addresses = dsOptions.map((option) => option.address).filter(Boolean);
96
- if (addresses.length > queryAddressLimit) {
97
- logger.warn(`Addresses length: ${addresses.length} is exceeding limit: ${queryAddressLimit}. Consider increasing this value with the flag --query-address-limit `);
98
- }
99
- if (addresses.length !== 0 && addresses.length <= queryAddressLimit) {
100
- conditions.push({
101
- field: 'address',
102
- value: addresses,
103
- matcher: 'in',
104
- });
105
- }
106
- }
107
- else {
108
- if (dsOptions === null || dsOptions === void 0 ? void 0 : dsOptions.address) {
109
- conditions.push({
110
- field: 'address',
111
- value: dsOptions.address.toLowerCase(),
112
- matcher: 'equalTo',
113
- });
114
- }
115
- }
116
- if (filter.topics) {
117
- for (let i = 0; i < Math.min(filter.topics.length, 4); i++) {
118
- const topic = filter.topics[i];
119
- if (!topic) {
120
- continue;
121
- }
122
- const field = `topics${i}`;
123
- conditions.push({
124
- field,
125
- value: topic,
126
- matcher: 'equalTo',
127
- });
128
- }
129
- }
130
- return {
131
- entity: 'events',
132
- conditions,
133
- };
134
- }
135
- function buildDictionaryQueryEntries(dataSources) {
136
- var _a;
137
- const queryEntries = [];
138
- for (const ds of dataSources) {
139
- for (const handler of ds.mapping.handlers) {
140
- // No filters, cant use dictionary
141
- if (!handler.filter)
142
- return [];
143
- switch (handler.kind) {
144
- case common_stellar_1.StellarHandlerKind.Block:
145
- return [];
146
- case common_stellar_1.StellarHandlerKind.Transaction: {
147
- const filter = handler.filter;
148
- if (ds.groupedOptions) {
149
- queryEntries.push(transactionFilterToQueryEntry(filter, ds.groupedOptions));
150
- }
151
- else if (filter.account) {
152
- queryEntries.push(transactionFilterToQueryEntry(filter, ds.options));
153
- }
154
- else {
155
- return [];
156
- }
157
- break;
158
- }
159
- case common_stellar_1.StellarHandlerKind.Operation: {
160
- const filter = handler.filter;
161
- if (ds.groupedOptions) {
162
- queryEntries.push(operationFilterToQueryEntry(filter, ds.groupedOptions));
163
- }
164
- else if (filter.sourceAccount || filter.type) {
165
- queryEntries.push(operationFilterToQueryEntry(filter, ds.options));
166
- }
167
- else {
168
- return [];
169
- }
170
- break;
171
- }
172
- case common_stellar_1.StellarHandlerKind.Effects: {
173
- const filter = handler.filter;
174
- if (ds.groupedOptions) {
175
- queryEntries.push(effectFilterToQueryEntry(filter, ds.groupedOptions));
176
- }
177
- else if (filter.account || filter.type) {
178
- queryEntries.push(effectFilterToQueryEntry(filter, ds.options));
179
- }
180
- else {
181
- return [];
182
- }
183
- break;
184
- }
185
- case common_stellar_1.StellarHandlerKind.Event: {
186
- const filter = handler.filter;
187
- if (ds.groupedOptions) {
188
- queryEntries.push(eventFilterToQueryEntry(filter, ds.groupedOptions));
189
- }
190
- else if (((_a = ds.options) === null || _a === void 0 ? void 0 : _a.address) || filter.topics) {
191
- queryEntries.push(eventFilterToQueryEntry(filter, ds.options));
192
- }
193
- else {
194
- return [];
195
- }
196
- break;
197
- }
198
- default:
199
- }
200
- }
201
- }
202
- return (0, lodash_1.uniqBy)(queryEntries, (item) => `${item.entity}|${JSON.stringify((0, lodash_1.sortBy)(item.conditions, (c) => c.field))}`);
203
- }
204
- exports.buildDictionaryQueryEntries = buildDictionaryQueryEntries;
205
32
  let FetchService = class FetchService extends node_core_1.BaseFetchService {
206
33
  constructor(apiService, nodeConfig, projectService, project, blockDispatcher, dictionaryService, dsProcessorService, dynamicDsService, unfinalizedBlocksService, eventEmitter, schedulerRegistry) {
207
- super(nodeConfig, projectService, project.network, blockDispatcher, dictionaryService, dynamicDsService, eventEmitter, schedulerRegistry);
34
+ super(nodeConfig, projectService, project.network, blockDispatcher, dictionaryService, eventEmitter, schedulerRegistry);
208
35
  this.apiService = apiService;
209
36
  this.dsProcessorService = dsProcessorService;
210
37
  this.unfinalizedBlocksService = unfinalizedBlocksService;
@@ -215,23 +42,9 @@ let FetchService = class FetchService extends node_core_1.BaseFetchService {
215
42
  getGenesisHash() {
216
43
  return this.apiService.networkMeta.genesisHash;
217
44
  }
218
- buildDictionaryQueryEntries(dataSources) {
219
- const [normalDataSources, templateDataSources] = (0, lodash_1.partition)(dataSources, (ds) => !ds.name);
220
- // Group templ
221
- const groupedDataSources = Object.values((0, lodash_1.groupBy)(templateDataSources, (ds) => ds.name)).map((grouped) => {
222
- if (grouped.length === 1) {
223
- return grouped[0];
224
- }
225
- const options = grouped.map((ds) => ds.options);
226
- const ref = grouped[0];
227
- return Object.assign(Object.assign({}, ref), { groupedOptions: options });
228
- });
229
- const filteredDs = [...normalDataSources, ...groupedDataSources];
230
- return buildDictionaryQueryEntries(filteredDs);
231
- }
232
45
  async getFinalizedHeight() {
233
46
  const sequence = await this.api.getFinalizedBlockHeight();
234
- const header = (0, unfinalizedBlocks_service_1.blockToHeader)(sequence);
47
+ const header = (0, utils_stellar_1.blockToHeader)(sequence);
235
48
  this.unfinalizedBlocksService.registerFinalizedBlock(header);
236
49
  return header.blockHeight;
237
50
  }
@@ -265,7 +78,7 @@ FetchService = __decorate([
265
78
  __metadata("design:paramtypes", [node_core_1.ApiService,
266
79
  node_core_1.NodeConfig,
267
80
  project_service_1.ProjectService,
268
- SubqueryProject_1.SubqueryProject, Object, dictionary_service_1.DictionaryService,
81
+ SubqueryProject_1.SubqueryProject, Object, dictionary_1.StellarDictionaryService,
269
82
  ds_processor_service_1.DsProcessorService,
270
83
  dynamic_ds_service_1.DynamicDsService,
271
84
  unfinalizedBlocks_service_1.UnfinalizedBlocksService,
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.service.js","sourceRoot":"","sources":["../../src/indexer/fetch.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,2CAAoD;AACpD,yDAAsD;AACtD,+CAAqD;AAErD,0DAI+B;AAC/B,gDAM0B;AAY1B,mCAA4D;AAC5D,kEAA+D;AAE/D,4DAAwD;AACxD,oCAAwC;AAExC,6DAAyD;AACzD,iEAA4D;AAC5D,6DAAwD;AACxD,uDAAmD;AACnD,2EAGqC;AAErC,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,eAAe,CAAC,CAAC;AAE1C,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAEjC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B,SAAS,6BAA6B,CACpC,MAAgC,EAChC,SAAwE;IAExE,MAAM,UAAU,GAA+B,EAAE,CAAC;IAElD,IAAI,MAAM,CAAC,OAAO,EAAE;QAClB,UAAU,CAAC,IAAI,CAAC;YACd,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE;YACnC,OAAO,EAAE,SAAS;SACnB,CAAC,CAAC;KACJ;IACD,OAAO;QACL,MAAM,EAAE,cAAc;QACtB,UAAU;KACX,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAClC,MAA8B,EAC9B,SAAwE;IAExE,MAAM,UAAU,GAA+B,EAAE,CAAC;IAElD,IAAI,MAAM,CAAC,IAAI,EAAE;QACf,UAAU,CAAC,IAAI,CAAC;YACd,KAAK,EAAE,MAAM;YACb,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE;YAChC,OAAO,EAAE,SAAS;SACnB,CAAC,CAAC;KACJ;IACD,IAAI,MAAM,CAAC,aAAa,EAAE;QACxB,UAAU,CAAC,IAAI,CAAC;YACd,KAAK,EAAE,eAAe;YACtB,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE;YACzC,OAAO,EAAE,SAAS;SACnB,CAAC,CAAC;KACJ;IACD,OAAO;QACL,MAAM,EAAE,YAAY;QACpB,UAAU;KACX,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,MAA2B,EAC3B,SAAwE;IAExE,MAAM,UAAU,GAA+B,EAAE,CAAC;IAElD,IAAI,MAAM,CAAC,IAAI,EAAE;QACf,UAAU,CAAC,IAAI,CAAC;YACd,KAAK,EAAE,MAAM;YACb,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE;YAChC,OAAO,EAAE,SAAS;SACnB,CAAC,CAAC;KACJ;IACD,IAAI,MAAM,CAAC,OAAO,EAAE;QAClB,UAAU,CAAC,IAAI,CAAC;YACd,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE;YACnC,OAAO,EAAE,SAAS;SACnB,CAAC,CAAC;KACJ;IACD,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,UAAU;KACX,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAC9B,MAA0B,EAC1B,SAAwE;IAExE,MAAM,iBAAiB,GAAG,oBAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAEnE,MAAM,UAAU,GAA+B,EAAE,CAAC;IAElD,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;QAC5B,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE5E,IAAI,SAAS,CAAC,MAAM,GAAG,iBAAiB,EAAE;YACxC,MAAM,CAAC,IAAI,CACT,qBAAqB,SAAS,CAAC,MAAM,wBAAwB,iBAAiB,wEAAwE,CACvJ,CAAC;SACH;QAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,IAAI,iBAAiB,EAAE;YACnE,UAAU,CAAC,IAAI,CAAC;gBACd,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;SACJ;KACF;SAAM;QACL,IAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,EAAE;YACtB,UAAU,CAAC,IAAI,CAAC;gBACd,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE;gBACtC,OAAO,EAAE,SAAS;aACnB,CAAC,CAAC;SACJ;KACF;IACD,IAAI,MAAM,CAAC,MAAM,EAAE;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,CAAC,KAAK,EAAE;gBACV,SAAS;aACV;YACD,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,CAAC;YAC3B,UAAU,CAAC,IAAI,CAAC;gBACd,KAAK;gBACL,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAE,SAAS;aACnB,CAAC,CAAC;SACJ;KACF;IACD,OAAO;QACL,MAAM,EAAE,QAAQ;QAChB,UAAU;KACX,CAAC;AACJ,CAAC;AAKD,SAAgB,2BAA2B,CACzC,WAAoC;;IAEpC,MAAM,YAAY,GAA2B,EAAE,CAAC;IAEhD,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE;QAC5B,KAAK,MAAM,OAAO,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE;YACzC,kCAAkC;YAClC,IAAI,CAAC,OAAO,CAAC,MAAM;gBAAE,OAAO,EAAE,CAAC;YAE/B,QAAQ,OAAO,CAAC,IAAI,EAAE;gBACpB,KAAK,mCAAkB,CAAC,KAAK;oBAC3B,OAAO,EAAE,CAAC;gBACZ,KAAK,mCAAkB,CAAC,WAAW,CAAC,CAAC;oBACnC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAkC,CAAC;oBAC1D,IAAI,EAAE,CAAC,cAAc,EAAE;wBACrB,YAAY,CAAC,IAAI,CACf,6BAA6B,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,CACzD,CAAC;qBACH;yBAAM,IAAI,MAAM,CAAC,OAAO,EAAE;wBACzB,YAAY,CAAC,IAAI,CACf,6BAA6B,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,CAClD,CAAC;qBACH;yBAAM;wBACL,OAAO,EAAE,CAAC;qBACX;oBACD,MAAM;iBACP;gBACD,KAAK,mCAAkB,CAAC,SAAS,CAAC,CAAC;oBACjC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAgC,CAAC;oBACxD,IAAI,EAAE,CAAC,cAAc,EAAE;wBACrB,YAAY,CAAC,IAAI,CACf,2BAA2B,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,CACvD,CAAC;qBACH;yBAAM,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,IAAI,EAAE;wBAC9C,YAAY,CAAC,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;qBACpE;yBAAM;wBACL,OAAO,EAAE,CAAC;qBACX;oBACD,MAAM;iBACP;gBACD,KAAK,mCAAkB,CAAC,OAAO,CAAC,CAAC;oBAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,MAA6B,CAAC;oBACrD,IAAI,EAAE,CAAC,cAAc,EAAE;wBACrB,YAAY,CAAC,IAAI,CACf,wBAAwB,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,CACpD,CAAC;qBACH;yBAAM,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE;wBACxC,YAAY,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;qBACjE;yBAAM;wBACL,OAAO,EAAE,CAAC;qBACX;oBACD,MAAM;iBACP;gBACD,KAAK,mCAAkB,CAAC,KAAK,CAAC,CAAC;oBAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,MAA4B,CAAC;oBACpD,IAAI,EAAE,CAAC,cAAc,EAAE;wBACrB,YAAY,CAAC,IAAI,CACf,uBAAuB,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,CACnD,CAAC;qBACH;yBAAM,IAAI,CAAA,MAAA,EAAE,CAAC,OAAO,0CAAE,OAAO,KAAI,MAAM,CAAC,MAAM,EAAE;wBAC/C,YAAY,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;qBAChE;yBAAM;wBACL,OAAO,EAAE,CAAC;qBACX;oBACD,MAAM;iBACP;gBACD,QAAQ;aACT;SACF;KACF;IAED,OAAO,IAAA,eAAM,EACX,YAAY,EACZ,CAAC,IAAI,EAAE,EAAE,CACP,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAC9B,IAAA,eAAM,EAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CACxC,EAAE,CACN,CAAC;AACJ,CAAC;AA/ED,kEA+EC;AAGM,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,4BAIjC;IACC,YACU,UAAsB,EAC9B,UAAsB,EACK,cAA8B,EAC7B,OAAwB,EAEpD,eAAwC,EACxC,iBAAoC,EAC5B,kBAAsC,EAC9C,gBAAkC,EAC1B,wBAAkD,EAC1D,YAA2B,EAC3B,iBAAoC;QAEpC,KAAK,CACH,UAAU,EACV,cAAc,EACd,OAAO,CAAC,OAAO,EACf,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,CAClB,CAAC;QAtBM,eAAU,GAAV,UAAU,CAAY;QAOtB,uBAAkB,GAAlB,kBAAkB,CAAoB;QAEtC,6BAAwB,GAAxB,wBAAwB,CAA0B;IAc5D,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;IACnC,CAAC;IAES,cAAc;QACtB,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC;IACjD,CAAC;IAES,2BAA2B,CACnC,WAAoD;QAEpD,MAAM,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,GAAG,IAAA,kBAAS,EACxD,WAAW,EACX,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CACjB,CAAC;QAEF,cAAc;QACd,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CACtC,IAAA,gBAAO,EAAC,mBAAmB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAC9C,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YAChB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBACxB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;aACnB;YACD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;YAChD,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAEvB,uCACK,GAAG,KACN,cAAc,EAAE,OAAO,IACvB;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,CAAC,GAAG,iBAAiB,EAAE,GAAG,kBAAkB,CAAC,CAAC;QAEjE,OAAO,2BAA2B,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IAES,KAAK,CAAC,kBAAkB;QAChC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,CAAC;QAE1D,MAAM,MAAM,GAAG,IAAA,yCAAa,EAAC,QAAQ,CAAC,CAAC;QAEvC,IAAI,CAAC,wBAAwB,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC,WAAW,CAAC;IAC5B,CAAC;IAES,KAAK,CAAC,aAAa;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;IACvC,CAAC;IAED,4DAA4D;IAClD,KAAK,CAAC,gBAAgB;QAC9B,MAAM,cAAc,GAAG,IAAA,4BAAY,EAAC,IAAI,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC;QAEjE,OAAO,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;IACvD,CAAC;IAES,KAAK,CAAC,UAAU;QACxB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3D,CAAC;IAES,UAAU;QAClB,OAAO,IAAA,sBAAU,EACf,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,EACvC,2BAAU,EACV,mCAAkB,CAAC,KAAK,CACzB,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,mBAAmB;QACjC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,CAAC;IAES,KAAK,CAAC,WAAW;QACzB,2CAA2C;QAC3C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF,CAAA;AA5GY,YAAY;IADxB,IAAA,mBAAU,GAAE;IASR,WAAA,IAAA,eAAM,EAAC,iBAAiB,CAAC,CAAA;IACzB,WAAA,IAAA,eAAM,EAAC,kBAAkB,CAAC,CAAA;IAC1B,WAAA,IAAA,eAAM,EAAC,kBAAkB,CAAC,CAAA;qCAJP,sBAAU;QAClB,sBAAU;QACqB,gCAAc;QACpB,iCAAe,UAGjC,sCAAiB;QACR,yCAAkB;QAC5B,qCAAgB;QACA,oDAAwB;QAC5C,6BAAa;QACR,4BAAiB;GAjB3B,YAAY,CA4GxB;AA5GY,oCAAY","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Inject, Injectable } from '@nestjs/common';\nimport { EventEmitter2 } from '@nestjs/event-emitter';\nimport { SchedulerRegistry } from '@nestjs/schedule';\n\nimport {\n StellarHandlerKind,\n SubqlStellarProcessorOptions,\n isCustomDs,\n} from '@subql/common-stellar';\nimport {\n NodeConfig,\n BaseFetchService,\n ApiService,\n getLogger,\n getModulos,\n} from '@subql/node-core';\nimport {\n DictionaryQueryEntry,\n DictionaryQueryCondition,\n} from '@subql/types-core';\nimport {\n SorobanEventFilter,\n StellarEffectFilter,\n StellarOperationFilter,\n StellarTransactionFilter,\n SubqlDatasource,\n} from '@subql/types-stellar';\nimport { groupBy, partition, sortBy, uniqBy } from 'lodash';\nimport { SubqueryProject } from '../configure/SubqueryProject';\nimport { StellarApi } from '../stellar';\nimport { calcInterval } from '../stellar/utils.stellar';\nimport { yargsOptions } from '../yargs';\nimport { IStellarBlockDispatcher } from './blockDispatcher';\nimport { DictionaryService } from './dictionary.service';\nimport { DsProcessorService } from './ds-processor.service';\nimport { DynamicDsService } from './dynamic-ds.service';\nimport { ProjectService } from './project.service';\nimport {\n blockToHeader,\n UnfinalizedBlocksService,\n} from './unfinalizedBlocks.service';\n\nconst logger = getLogger('fetch.service');\n\nconst BLOCK_TIME_VARIANCE = 5000;\n\nconst INTERVAL_PERCENT = 0.9;\n\nfunction transactionFilterToQueryEntry(\n filter: StellarTransactionFilter,\n dsOptions: SubqlStellarProcessorOptions | SubqlStellarProcessorOptions[],\n): DictionaryQueryEntry {\n const conditions: DictionaryQueryCondition[] = [];\n\n if (filter.account) {\n conditions.push({\n field: 'account',\n value: filter.account.toLowerCase(),\n matcher: 'equalTo',\n });\n }\n return {\n entity: 'transactions',\n conditions,\n };\n}\n\nfunction operationFilterToQueryEntry(\n filter: StellarOperationFilter,\n dsOptions: SubqlStellarProcessorOptions | SubqlStellarProcessorOptions[],\n): DictionaryQueryEntry {\n const conditions: DictionaryQueryCondition[] = [];\n\n if (filter.type) {\n conditions.push({\n field: 'type',\n value: filter.type.toLowerCase(),\n matcher: 'equalTo',\n });\n }\n if (filter.sourceAccount) {\n conditions.push({\n field: 'sourceAccount',\n value: filter.sourceAccount.toLowerCase(),\n matcher: 'equalTo',\n });\n }\n return {\n entity: 'operations',\n conditions,\n };\n}\n\nfunction effectFilterToQueryEntry(\n filter: StellarEffectFilter,\n dsOptions: SubqlStellarProcessorOptions | SubqlStellarProcessorOptions[],\n): DictionaryQueryEntry {\n const conditions: DictionaryQueryCondition[] = [];\n\n if (filter.type) {\n conditions.push({\n field: 'type',\n value: filter.type.toLowerCase(),\n matcher: 'equalTo',\n });\n }\n if (filter.account) {\n conditions.push({\n field: 'account',\n value: filter.account.toLowerCase(),\n matcher: 'equalTo',\n });\n }\n return {\n entity: 'effects',\n conditions,\n };\n}\n\nfunction eventFilterToQueryEntry(\n filter: SorobanEventFilter,\n dsOptions: SubqlStellarProcessorOptions | SubqlStellarProcessorOptions[],\n): DictionaryQueryEntry {\n const queryAddressLimit = yargsOptions.argv['query-address-limit'];\n\n const conditions: DictionaryQueryCondition[] = [];\n\n if (Array.isArray(dsOptions)) {\n const addresses = dsOptions.map((option) => option.address).filter(Boolean);\n\n if (addresses.length > queryAddressLimit) {\n logger.warn(\n `Addresses length: ${addresses.length} is exceeding limit: ${queryAddressLimit}. Consider increasing this value with the flag --query-address-limit `,\n );\n }\n\n if (addresses.length !== 0 && addresses.length <= queryAddressLimit) {\n conditions.push({\n field: 'address',\n value: addresses,\n matcher: 'in',\n });\n }\n } else {\n if (dsOptions?.address) {\n conditions.push({\n field: 'address',\n value: dsOptions.address.toLowerCase(),\n matcher: 'equalTo',\n });\n }\n }\n if (filter.topics) {\n for (let i = 0; i < Math.min(filter.topics.length, 4); i++) {\n const topic = filter.topics[i];\n if (!topic) {\n continue;\n }\n const field = `topics${i}`;\n conditions.push({\n field,\n value: topic,\n matcher: 'equalTo',\n });\n }\n }\n return {\n entity: 'events',\n conditions,\n };\n}\n\ntype GroupedSubqlProjectDs = SubqlDatasource & {\n groupedOptions?: SubqlStellarProcessorOptions[];\n};\nexport function buildDictionaryQueryEntries(\n dataSources: GroupedSubqlProjectDs[],\n): DictionaryQueryEntry[] {\n const queryEntries: DictionaryQueryEntry[] = [];\n\n for (const ds of dataSources) {\n for (const handler of ds.mapping.handlers) {\n // No filters, cant use dictionary\n if (!handler.filter) return [];\n\n switch (handler.kind) {\n case StellarHandlerKind.Block:\n return [];\n case StellarHandlerKind.Transaction: {\n const filter = handler.filter as StellarTransactionFilter;\n if (ds.groupedOptions) {\n queryEntries.push(\n transactionFilterToQueryEntry(filter, ds.groupedOptions),\n );\n } else if (filter.account) {\n queryEntries.push(\n transactionFilterToQueryEntry(filter, ds.options),\n );\n } else {\n return [];\n }\n break;\n }\n case StellarHandlerKind.Operation: {\n const filter = handler.filter as StellarOperationFilter;\n if (ds.groupedOptions) {\n queryEntries.push(\n operationFilterToQueryEntry(filter, ds.groupedOptions),\n );\n } else if (filter.sourceAccount || filter.type) {\n queryEntries.push(operationFilterToQueryEntry(filter, ds.options));\n } else {\n return [];\n }\n break;\n }\n case StellarHandlerKind.Effects: {\n const filter = handler.filter as StellarEffectFilter;\n if (ds.groupedOptions) {\n queryEntries.push(\n effectFilterToQueryEntry(filter, ds.groupedOptions),\n );\n } else if (filter.account || filter.type) {\n queryEntries.push(effectFilterToQueryEntry(filter, ds.options));\n } else {\n return [];\n }\n break;\n }\n case StellarHandlerKind.Event: {\n const filter = handler.filter as SorobanEventFilter;\n if (ds.groupedOptions) {\n queryEntries.push(\n eventFilterToQueryEntry(filter, ds.groupedOptions),\n );\n } else if (ds.options?.address || filter.topics) {\n queryEntries.push(eventFilterToQueryEntry(filter, ds.options));\n } else {\n return [];\n }\n break;\n }\n default:\n }\n }\n }\n\n return uniqBy(\n queryEntries,\n (item) =>\n `${item.entity}|${JSON.stringify(\n sortBy(item.conditions, (c) => c.field),\n )}`,\n );\n}\n\n@Injectable()\nexport class FetchService extends BaseFetchService<\n SubqlDatasource,\n IStellarBlockDispatcher,\n DictionaryService\n> {\n constructor(\n private apiService: ApiService,\n nodeConfig: NodeConfig,\n @Inject('IProjectService') projectService: ProjectService,\n @Inject('ISubqueryProject') project: SubqueryProject,\n @Inject('IBlockDispatcher')\n blockDispatcher: IStellarBlockDispatcher,\n dictionaryService: DictionaryService,\n private dsProcessorService: DsProcessorService,\n dynamicDsService: DynamicDsService,\n private unfinalizedBlocksService: UnfinalizedBlocksService,\n eventEmitter: EventEmitter2,\n schedulerRegistry: SchedulerRegistry,\n ) {\n super(\n nodeConfig,\n projectService,\n project.network,\n blockDispatcher,\n dictionaryService,\n dynamicDsService,\n eventEmitter,\n schedulerRegistry,\n );\n }\n\n get api(): StellarApi {\n return this.apiService.unsafeApi;\n }\n\n protected getGenesisHash(): string {\n return this.apiService.networkMeta.genesisHash;\n }\n\n protected buildDictionaryQueryEntries(\n dataSources: (SubqlDatasource & { name?: string })[],\n ): DictionaryQueryEntry[] {\n const [normalDataSources, templateDataSources] = partition(\n dataSources,\n (ds) => !ds.name,\n );\n\n // Group templ\n const groupedDataSources = Object.values(\n groupBy(templateDataSources, (ds) => ds.name),\n ).map((grouped) => {\n if (grouped.length === 1) {\n return grouped[0];\n }\n const options = grouped.map((ds) => ds.options);\n const ref = grouped[0];\n\n return {\n ...ref,\n groupedOptions: options,\n };\n });\n\n const filteredDs = [...normalDataSources, ...groupedDataSources];\n\n return buildDictionaryQueryEntries(filteredDs);\n }\n\n protected async getFinalizedHeight(): Promise<number> {\n const sequence = await this.api.getFinalizedBlockHeight();\n\n const header = blockToHeader(sequence);\n\n this.unfinalizedBlocksService.registerFinalizedBlock(header);\n return header.blockHeight;\n }\n\n protected async getBestHeight(): Promise<number> {\n return this.api.getBestBlockHeight();\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n protected async getChainInterval(): Promise<number> {\n const CHAIN_INTERVAL = calcInterval(this.api) * INTERVAL_PERCENT;\n\n return Math.min(BLOCK_TIME_VARIANCE, CHAIN_INTERVAL);\n }\n\n protected async getChainId(): Promise<string> {\n return Promise.resolve(this.api.getChainId().toString());\n }\n\n protected getModulos(): number[] {\n return getModulos(\n this.projectService.getAllDataSources(),\n isCustomDs,\n StellarHandlerKind.Block,\n );\n }\n\n protected async initBlockDispatcher(): Promise<void> {\n await this.blockDispatcher.init(this.resetForNewDs.bind(this));\n }\n\n protected async preLoopHook(): Promise<void> {\n // Stellar doesn't need to do anything here\n return Promise.resolve();\n }\n}\n"]}
1
+ {"version":3,"file":"fetch.service.js","sourceRoot":"","sources":["../../src/indexer/fetch.service.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2020-2024 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Inject, Injectable } from '@nestjs/common';\nimport { EventEmitter2 } from '@nestjs/event-emitter';\nimport { SchedulerRegistry } from '@nestjs/schedule';\n\nimport { StellarHandlerKind, isCustomDs } from '@subql/common-stellar';\nimport {\n NodeConfig,\n BaseFetchService,\n ApiService,\n getModulos,\n} from '@subql/node-core';\nimport { StellarBlock, SubqlDatasource } from '@subql/types-stellar';\nimport { SubqueryProject } from '../configure/SubqueryProject';\nimport { StellarApi } from '../stellar';\nimport { blockToHeader, calcInterval } from '../stellar/utils.stellar';\nimport { IStellarBlockDispatcher } from './blockDispatcher';\nimport { StellarDictionaryService } from './dictionary';\nimport { DsProcessorService } from './ds-processor.service';\nimport { DynamicDsService } from './dynamic-ds.service';\nimport { ProjectService } from './project.service';\nimport { UnfinalizedBlocksService } from './unfinalizedBlocks.service';\n\nconst BLOCK_TIME_VARIANCE = 5000;\n\nconst INTERVAL_PERCENT = 0.9;\n\n@Injectable()\nexport class FetchService extends BaseFetchService<\n SubqlDatasource,\n IStellarBlockDispatcher,\n StellarBlock\n> {\n constructor(\n private apiService: ApiService,\n nodeConfig: NodeConfig,\n @Inject('IProjectService') projectService: ProjectService,\n @Inject('ISubqueryProject') project: SubqueryProject,\n @Inject('IBlockDispatcher')\n blockDispatcher: IStellarBlockDispatcher,\n dictionaryService: StellarDictionaryService,\n private dsProcessorService: DsProcessorService,\n dynamicDsService: DynamicDsService,\n private unfinalizedBlocksService: UnfinalizedBlocksService,\n eventEmitter: EventEmitter2,\n schedulerRegistry: SchedulerRegistry,\n ) {\n super(\n nodeConfig,\n projectService,\n project.network,\n blockDispatcher,\n dictionaryService,\n eventEmitter,\n schedulerRegistry,\n );\n }\n\n get api(): StellarApi {\n return this.apiService.unsafeApi;\n }\n\n protected getGenesisHash(): string {\n return this.apiService.networkMeta.genesisHash;\n }\n\n protected async getFinalizedHeight(): Promise<number> {\n const sequence = await this.api.getFinalizedBlockHeight();\n\n const header = blockToHeader(sequence);\n\n this.unfinalizedBlocksService.registerFinalizedBlock(header);\n return header.blockHeight;\n }\n\n protected async getBestHeight(): Promise<number> {\n return this.api.getBestBlockHeight();\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n protected async getChainInterval(): Promise<number> {\n const CHAIN_INTERVAL = calcInterval(this.api) * INTERVAL_PERCENT;\n\n return Math.min(BLOCK_TIME_VARIANCE, CHAIN_INTERVAL);\n }\n\n protected async getChainId(): Promise<string> {\n return Promise.resolve(this.api.getChainId().toString());\n }\n\n protected getModulos(): number[] {\n return getModulos(\n this.projectService.getAllDataSources(),\n isCustomDs,\n StellarHandlerKind.Block,\n );\n }\n\n protected async initBlockDispatcher(): Promise<void> {\n await this.blockDispatcher.init(this.resetForNewDs.bind(this));\n }\n\n protected async preLoopHook(): Promise<void> {\n // Stellar doesn't need to do anything here\n return Promise.resolve();\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { isCustomDs, isRuntimeDs, SubqlStellarCustomDataSource, StellarHandlerKind, StellarRuntimeHandlerInputMap, SubqlStellarDataSource, isBlockHandlerProcessor, isTransactionHandlerProcessor, isOperationHandlerProcessor, isEffectHandlerProcessor, isEventHandlerProcessor, isSorobanTransactionHandlerProcessor } from '@subql/common-stellar';
2
- import { NodeConfig, IndexerSandbox, ProcessBlockResponse, BaseIndexerManager, ApiService } from '@subql/node-core';
2
+ import { NodeConfig, IndexerSandbox, ProcessBlockResponse, BaseIndexerManager, ApiService, IBlock } from '@subql/node-core';
3
3
  import { StellarBlockWrapper, SubqlDatasource, StellarTransaction, StellarOperation, StellarEffect, StellarBlock, StellarBlockFilter, StellarTransactionFilter, StellarOperationFilter, StellarEffectFilter, SorobanEvent, SorobanEventFilter } from '@subql/types-stellar';
4
4
  import { StellarProjectDs } from '../configure/SubqueryProject';
5
5
  import { StellarApi } from '../stellar';
@@ -16,7 +16,7 @@ export declare class IndexerManager extends BaseIndexerManager<SafeStellarProvid
16
16
  protected updateCustomProcessor: typeof asSecondLayerHandlerProcessor_1_0_0;
17
17
  constructor(apiService: ApiService, nodeConfig: NodeConfig, sandboxService: SandboxService, dsProcessorService: DsProcessorService, dynamicDsService: DynamicDsService, unfinalizedBlocksService: UnfinalizedBlocksService, projectService: ProjectService);
18
18
  start(): Promise<void>;
19
- indexBlock(block: StellarBlockWrapper, dataSources: SubqlStellarDataSource[]): Promise<ProcessBlockResponse>;
19
+ indexBlock(block: IBlock<StellarBlockWrapper>, dataSources: SubqlStellarDataSource[]): Promise<ProcessBlockResponse>;
20
20
  getBlockHeight(block: StellarBlockWrapper): number;
21
21
  getBlockHash(block: StellarBlockWrapper): string;
22
22
  private getApi;
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2020-2023 SubQuery Pte Ltd authors & contributors
2
+ // Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
3
3
  // SPDX-License-Identifier: GPL-3.0
4
4
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
5
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -38,7 +38,7 @@ let IndexerManager = class IndexerManager extends node_core_1.BaseIndexerManager
38
38
  logger.info('indexer manager started');
39
39
  }
40
40
  async indexBlock(block, dataSources) {
41
- return super.internalIndexBlock(block, dataSources, () => this.getApi(block));
41
+ return super.internalIndexBlock(block, dataSources, () => this.getApi(block.block));
42
42
  }
43
43
  getBlockHeight(block) {
44
44
  return block.block.sequence;
@@ -1 +1 @@
1
- {"version":3,"file":"indexer.manager.js","sourceRoot":"","sources":["../../src/indexer/indexer.manager.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 { Inject, Injectable } from '@nestjs/common';\nimport {\n isCustomDs,\n isRuntimeDs,\n SubqlStellarCustomDataSource,\n StellarHandlerKind,\n StellarRuntimeHandlerInputMap,\n SubqlStellarDataSource,\n isBlockHandlerProcessor,\n isTransactionHandlerProcessor,\n isOperationHandlerProcessor,\n isEffectHandlerProcessor,\n isEventHandlerProcessor,\n isSorobanTransactionHandlerProcessor,\n} from '@subql/common-stellar';\nimport {\n NodeConfig,\n getLogger,\n profiler,\n IndexerSandbox,\n ProcessBlockResponse,\n BaseIndexerManager,\n ApiService,\n} from '@subql/node-core';\nimport {\n StellarBlockWrapper,\n SubqlDatasource,\n StellarTransaction,\n StellarOperation,\n StellarEffect,\n StellarBlock,\n StellarBlockFilter,\n StellarTransactionFilter,\n StellarOperationFilter,\n StellarEffectFilter,\n SorobanEvent,\n SorobanEventFilter,\n} from '@subql/types-stellar';\nimport { StellarProjectDs } from '../configure/SubqueryProject';\nimport { StellarApi } from '../stellar';\nimport { StellarBlockWrapped } from '../stellar/block.stellar';\nimport SafeStellarProvider from '../stellar/safe-api';\nimport {\n asSecondLayerHandlerProcessor_1_0_0,\n DsProcessorService,\n} from './ds-processor.service';\nimport { DynamicDsService } from './dynamic-ds.service';\nimport { ProjectService } from './project.service';\nimport { SandboxService } from './sandbox.service';\nimport { UnfinalizedBlocksService } from './unfinalizedBlocks.service';\n\nconst logger = getLogger('indexer');\n\n@Injectable()\nexport class IndexerManager extends BaseIndexerManager<\n SafeStellarProvider,\n StellarApi,\n StellarBlockWrapper,\n ApiService,\n SubqlStellarDataSource,\n SubqlStellarCustomDataSource,\n typeof FilterTypeMap,\n typeof ProcessorTypeMap,\n StellarRuntimeHandlerInputMap\n> {\n protected isRuntimeDs = isRuntimeDs;\n protected isCustomDs = isCustomDs;\n protected updateCustomProcessor = asSecondLayerHandlerProcessor_1_0_0;\n\n constructor(\n apiService: ApiService,\n nodeConfig: NodeConfig,\n sandboxService: SandboxService,\n dsProcessorService: DsProcessorService,\n dynamicDsService: DynamicDsService,\n unfinalizedBlocksService: UnfinalizedBlocksService,\n @Inject('IProjectService') private projectService: ProjectService,\n ) {\n super(\n apiService,\n nodeConfig,\n sandboxService,\n dsProcessorService,\n dynamicDsService,\n unfinalizedBlocksService,\n FilterTypeMap,\n ProcessorTypeMap,\n );\n }\n\n async start(): Promise<void> {\n await this.projectService.init();\n logger.info('indexer manager started');\n }\n\n @profiler()\n async indexBlock(\n block: StellarBlockWrapper,\n dataSources: SubqlStellarDataSource[],\n ): Promise<ProcessBlockResponse> {\n return super.internalIndexBlock(block, dataSources, () =>\n this.getApi(block),\n );\n }\n\n getBlockHeight(block: StellarBlockWrapper): number {\n return block.block.sequence;\n }\n\n getBlockHash(block: StellarBlockWrapper): string {\n return block.block.hash;\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n private async getApi(\n block: StellarBlockWrapper,\n ): Promise<SafeStellarProvider> {\n // return this.apiService.safeApi(this.getBlockHeight(block));\n return null;\n }\n\n protected async indexBlockData(\n { block, effects, operations, transactions }: StellarBlockWrapper,\n dataSources: StellarProjectDs[],\n getVM: (d: StellarProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n await this.indexBlockContent(block, dataSources, getVM);\n\n for (const tx of transactions) {\n await this.indexTransaction(tx, dataSources, getVM);\n\n for (const operation of tx.operations) {\n await this.indexOperation(operation, dataSources, getVM);\n\n for (const effect of operation.effects) {\n await this.indexEffect(effect, dataSources, getVM);\n }\n for (const event of operation.events) {\n await this.indexEvent(event, dataSources, getVM);\n }\n }\n }\n }\n\n private async indexBlockContent(\n block: StellarBlock,\n dataSources: StellarProjectDs[],\n getVM: (d: StellarProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n for (const ds of dataSources) {\n await this.indexData(StellarHandlerKind.Block, block, ds, getVM);\n }\n }\n\n private async indexTransaction(\n transaction: StellarTransaction,\n dataSources: StellarProjectDs[],\n getVM: (d: StellarProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n for (const ds of dataSources) {\n await this.indexData(\n StellarHandlerKind.Transaction,\n transaction,\n ds,\n getVM,\n );\n\n if (\n transaction.operations.some(\n (op) => op.type.toString() === 'invoke_host_function',\n )\n ) {\n await this.indexData(\n StellarHandlerKind.SorobanTransaction,\n transaction,\n ds,\n getVM,\n );\n }\n }\n }\n\n private async indexOperation(\n operation: StellarOperation,\n dataSources: StellarProjectDs[],\n getVM: (d: StellarProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n for (const ds of dataSources) {\n await this.indexData(StellarHandlerKind.Operation, operation, ds, getVM);\n }\n }\n\n private async indexEffect(\n effect: StellarEffect,\n dataSources: StellarProjectDs[],\n getVM: (d: StellarProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n for (const ds of dataSources) {\n await this.indexData(StellarHandlerKind.Effects, effect, ds, getVM);\n }\n }\n\n private async indexEvent(\n event: SorobanEvent,\n dataSources: StellarProjectDs[],\n getVM: (d: StellarProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n for (const ds of dataSources) {\n await this.indexData(StellarHandlerKind.Event, event, ds, getVM);\n }\n }\n\n protected async prepareFilteredData<T = any>(\n kind: StellarHandlerKind,\n data: T,\n ds: SubqlDatasource,\n ): Promise<T> {\n return Promise.resolve(data);\n }\n}\n\ntype ProcessorTypeMap = {\n [StellarHandlerKind.Block]: typeof isBlockHandlerProcessor;\n [StellarHandlerKind.Transaction]: typeof isTransactionHandlerProcessor;\n [StellarHandlerKind.SorobanTransaction]: typeof isSorobanTransactionHandlerProcessor;\n [StellarHandlerKind.Operation]: typeof isOperationHandlerProcessor;\n [StellarHandlerKind.Effects]: typeof isEffectHandlerProcessor;\n [StellarHandlerKind.Event]: typeof isEventHandlerProcessor;\n};\n\nconst ProcessorTypeMap = {\n [StellarHandlerKind.Block]: isBlockHandlerProcessor,\n [StellarHandlerKind.Transaction]: isTransactionHandlerProcessor,\n [StellarHandlerKind.SorobanTransaction]: isSorobanTransactionHandlerProcessor,\n [StellarHandlerKind.Operation]: isOperationHandlerProcessor,\n [StellarHandlerKind.Effects]: isEffectHandlerProcessor,\n [StellarHandlerKind.Event]: isEventHandlerProcessor,\n};\n\nconst FilterTypeMap = {\n [StellarHandlerKind.Block]: (\n data: StellarBlock,\n filter: StellarBlockFilter,\n ds: SubqlStellarDataSource,\n ) =>\n StellarBlockWrapped.filterBlocksProcessor(\n data,\n filter,\n ds.options?.address,\n ),\n\n [StellarHandlerKind.Transaction]: (\n data: StellarTransaction,\n filter: StellarTransactionFilter,\n ds: SubqlStellarDataSource,\n ) =>\n StellarBlockWrapped.filterTransactionProcessor(\n data,\n filter,\n ds.options?.address,\n ),\n\n [StellarHandlerKind.SorobanTransaction]: (\n data: StellarTransaction,\n filter: StellarTransactionFilter,\n ds: SubqlStellarDataSource,\n ) =>\n StellarBlockWrapped.filterTransactionProcessor(\n data,\n filter,\n ds.options?.address,\n ),\n\n [StellarHandlerKind.Operation]: (\n data: StellarOperation,\n filter: StellarOperationFilter,\n ds: SubqlStellarDataSource,\n ) =>\n StellarBlockWrapped.filterOperationProcessor(\n data,\n filter,\n ds.options?.address,\n ),\n\n [StellarHandlerKind.Effects]: (\n data: StellarEffect,\n filter: StellarEffectFilter,\n ds: SubqlStellarDataSource,\n ) =>\n StellarBlockWrapped.filterEffectProcessor(\n data,\n filter,\n ds.options?.address,\n ),\n\n [StellarHandlerKind.Event]: (\n data: SorobanEvent,\n filter: SorobanEventFilter,\n ds: SubqlStellarDataSource,\n ) =>\n StellarBlockWrapped.filterEventProcessor(data, filter, ds.options?.address),\n};\n"]}
1
+ {"version":3,"file":"indexer.manager.js","sourceRoot":"","sources":["../../src/indexer/indexer.manager.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2020-2024 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Inject, Injectable } from '@nestjs/common';\nimport {\n isCustomDs,\n isRuntimeDs,\n SubqlStellarCustomDataSource,\n StellarHandlerKind,\n StellarRuntimeHandlerInputMap,\n SubqlStellarDataSource,\n isBlockHandlerProcessor,\n isTransactionHandlerProcessor,\n isOperationHandlerProcessor,\n isEffectHandlerProcessor,\n isEventHandlerProcessor,\n isSorobanTransactionHandlerProcessor,\n} from '@subql/common-stellar';\nimport {\n NodeConfig,\n getLogger,\n profiler,\n IndexerSandbox,\n ProcessBlockResponse,\n BaseIndexerManager,\n ApiService,\n IBlock,\n} from '@subql/node-core';\nimport {\n StellarBlockWrapper,\n SubqlDatasource,\n StellarTransaction,\n StellarOperation,\n StellarEffect,\n StellarBlock,\n StellarBlockFilter,\n StellarTransactionFilter,\n StellarOperationFilter,\n StellarEffectFilter,\n SorobanEvent,\n SorobanEventFilter,\n} from '@subql/types-stellar';\nimport { StellarProjectDs } from '../configure/SubqueryProject';\nimport { StellarApi } from '../stellar';\nimport { StellarBlockWrapped } from '../stellar/block.stellar';\nimport SafeStellarProvider from '../stellar/safe-api';\nimport {\n asSecondLayerHandlerProcessor_1_0_0,\n DsProcessorService,\n} from './ds-processor.service';\nimport { DynamicDsService } from './dynamic-ds.service';\nimport { ProjectService } from './project.service';\nimport { SandboxService } from './sandbox.service';\nimport { UnfinalizedBlocksService } from './unfinalizedBlocks.service';\n\nconst logger = getLogger('indexer');\n\n@Injectable()\nexport class IndexerManager extends BaseIndexerManager<\n SafeStellarProvider,\n StellarApi,\n StellarBlockWrapper,\n ApiService,\n SubqlStellarDataSource,\n SubqlStellarCustomDataSource,\n typeof FilterTypeMap,\n typeof ProcessorTypeMap,\n StellarRuntimeHandlerInputMap\n> {\n protected isRuntimeDs = isRuntimeDs;\n protected isCustomDs = isCustomDs;\n protected updateCustomProcessor = asSecondLayerHandlerProcessor_1_0_0;\n\n constructor(\n apiService: ApiService,\n nodeConfig: NodeConfig,\n sandboxService: SandboxService,\n dsProcessorService: DsProcessorService,\n dynamicDsService: DynamicDsService,\n unfinalizedBlocksService: UnfinalizedBlocksService,\n @Inject('IProjectService') private projectService: ProjectService,\n ) {\n super(\n apiService,\n nodeConfig,\n sandboxService,\n dsProcessorService,\n dynamicDsService,\n unfinalizedBlocksService,\n FilterTypeMap,\n ProcessorTypeMap,\n );\n }\n\n async start(): Promise<void> {\n await this.projectService.init();\n logger.info('indexer manager started');\n }\n\n @profiler()\n async indexBlock(\n block: IBlock<StellarBlockWrapper>,\n dataSources: SubqlStellarDataSource[],\n ): Promise<ProcessBlockResponse> {\n return super.internalIndexBlock(block, dataSources, () =>\n this.getApi(block.block),\n );\n }\n\n getBlockHeight(block: StellarBlockWrapper): number {\n return block.block.sequence;\n }\n\n getBlockHash(block: StellarBlockWrapper): string {\n return block.block.hash;\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n private async getApi(\n block: StellarBlockWrapper,\n ): Promise<SafeStellarProvider> {\n // return this.apiService.safeApi(this.getBlockHeight(block));\n return null;\n }\n\n protected async indexBlockData(\n { block, effects, operations, transactions }: StellarBlockWrapper,\n dataSources: StellarProjectDs[],\n getVM: (d: StellarProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n await this.indexBlockContent(block, dataSources, getVM);\n\n for (const tx of transactions) {\n await this.indexTransaction(tx, dataSources, getVM);\n\n for (const operation of tx.operations) {\n await this.indexOperation(operation, dataSources, getVM);\n\n for (const effect of operation.effects) {\n await this.indexEffect(effect, dataSources, getVM);\n }\n for (const event of operation.events) {\n await this.indexEvent(event, dataSources, getVM);\n }\n }\n }\n }\n\n private async indexBlockContent(\n block: StellarBlock,\n dataSources: StellarProjectDs[],\n getVM: (d: StellarProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n for (const ds of dataSources) {\n await this.indexData(StellarHandlerKind.Block, block, ds, getVM);\n }\n }\n\n private async indexTransaction(\n transaction: StellarTransaction,\n dataSources: StellarProjectDs[],\n getVM: (d: StellarProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n for (const ds of dataSources) {\n await this.indexData(\n StellarHandlerKind.Transaction,\n transaction,\n ds,\n getVM,\n );\n\n if (\n transaction.operations.some(\n (op) => op.type.toString() === 'invoke_host_function',\n )\n ) {\n await this.indexData(\n StellarHandlerKind.SorobanTransaction,\n transaction,\n ds,\n getVM,\n );\n }\n }\n }\n\n private async indexOperation(\n operation: StellarOperation,\n dataSources: StellarProjectDs[],\n getVM: (d: StellarProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n for (const ds of dataSources) {\n await this.indexData(StellarHandlerKind.Operation, operation, ds, getVM);\n }\n }\n\n private async indexEffect(\n effect: StellarEffect,\n dataSources: StellarProjectDs[],\n getVM: (d: StellarProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n for (const ds of dataSources) {\n await this.indexData(StellarHandlerKind.Effects, effect, ds, getVM);\n }\n }\n\n private async indexEvent(\n event: SorobanEvent,\n dataSources: StellarProjectDs[],\n getVM: (d: StellarProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n for (const ds of dataSources) {\n await this.indexData(StellarHandlerKind.Event, event, ds, getVM);\n }\n }\n\n protected async prepareFilteredData<T = any>(\n kind: StellarHandlerKind,\n data: T,\n ds: SubqlDatasource,\n ): Promise<T> {\n return Promise.resolve(data);\n }\n}\n\ntype ProcessorTypeMap = {\n [StellarHandlerKind.Block]: typeof isBlockHandlerProcessor;\n [StellarHandlerKind.Transaction]: typeof isTransactionHandlerProcessor;\n [StellarHandlerKind.SorobanTransaction]: typeof isSorobanTransactionHandlerProcessor;\n [StellarHandlerKind.Operation]: typeof isOperationHandlerProcessor;\n [StellarHandlerKind.Effects]: typeof isEffectHandlerProcessor;\n [StellarHandlerKind.Event]: typeof isEventHandlerProcessor;\n};\n\nconst ProcessorTypeMap = {\n [StellarHandlerKind.Block]: isBlockHandlerProcessor,\n [StellarHandlerKind.Transaction]: isTransactionHandlerProcessor,\n [StellarHandlerKind.SorobanTransaction]: isSorobanTransactionHandlerProcessor,\n [StellarHandlerKind.Operation]: isOperationHandlerProcessor,\n [StellarHandlerKind.Effects]: isEffectHandlerProcessor,\n [StellarHandlerKind.Event]: isEventHandlerProcessor,\n};\n\nconst FilterTypeMap = {\n [StellarHandlerKind.Block]: (\n data: StellarBlock,\n filter: StellarBlockFilter,\n ds: SubqlStellarDataSource,\n ) =>\n StellarBlockWrapped.filterBlocksProcessor(\n data,\n filter,\n ds.options?.address,\n ),\n\n [StellarHandlerKind.Transaction]: (\n data: StellarTransaction,\n filter: StellarTransactionFilter,\n ds: SubqlStellarDataSource,\n ) =>\n StellarBlockWrapped.filterTransactionProcessor(\n data,\n filter,\n ds.options?.address,\n ),\n\n [StellarHandlerKind.SorobanTransaction]: (\n data: StellarTransaction,\n filter: StellarTransactionFilter,\n ds: SubqlStellarDataSource,\n ) =>\n StellarBlockWrapped.filterTransactionProcessor(\n data,\n filter,\n ds.options?.address,\n ),\n\n [StellarHandlerKind.Operation]: (\n data: StellarOperation,\n filter: StellarOperationFilter,\n ds: SubqlStellarDataSource,\n ) =>\n StellarBlockWrapped.filterOperationProcessor(\n data,\n filter,\n ds.options?.address,\n ),\n\n [StellarHandlerKind.Effects]: (\n data: StellarEffect,\n filter: StellarEffectFilter,\n ds: SubqlStellarDataSource,\n ) =>\n StellarBlockWrapped.filterEffectProcessor(\n data,\n filter,\n ds.options?.address,\n ),\n\n [StellarHandlerKind.Event]: (\n data: SorobanEvent,\n filter: SorobanEventFilter,\n ds: SubqlStellarDataSource,\n ) =>\n StellarBlockWrapped.filterEventProcessor(data, filter, ds.options?.address),\n};\n"]}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2020-2023 SubQuery Pte Ltd authors & contributors
2
+ // Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
3
3
  // SPDX-License-Identifier: GPL-3.0
4
4
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
5
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -1 +1 @@
1
- {"version":3,"file":"project.service.js","sourceRoot":"","sources":["../../src/indexer/project.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,mDAA8C;AAC9C,2CAAoD;AACpD,yDAAsD;AACtD,gDAS0B;AAE1B,oDAA+C;AAE/C,kEAIsC;AAGtC,iEAA4D;AAC5D,6DAAwD;AACxD,2EAAuE;AAEvE,8DAA8D;AAC9D,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAG3D,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,8BAGnC;IAGC,YACE,kBAAsC,EACtC,UAAsB,EACsB,UAAsB,EAElE,cAA8B,EACa,SAAoB,EACnC,OAAwB,EAEjC,qBAA8D,EACnC,YAA0B,EACxE,UAAsB,EACtB,gBAAkC,EAClC,YAA2B,EAC3B,uBAAiD;QAEjD,KAAK,CACH,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,cAAc,EACd,SAAS,EACT,OAAO,EACP,qBAAqB,EACrB,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,uBAAuB,CACxB,CAAC;QApBiB,0BAAqB,GAArB,qBAAqB,CAAyC;QAXzE,mBAAc,GAAG,cAAc,CAAC;IAgC1C,CAAC;IAGK,AAAN,KAAK,CAAC,IAAI,CAAC,WAAoB;QAC7B,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;IAES,KAAK,CAAC,iBAAiB,CAAC,MAAc;QAC9C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG;aAC9C,OAAO,EAAE;aACT,MAAM,CAAC,MAAM,CAAC;aACd,IAAI,EAAE,CAAC;QAEV,OAAO,IAAI,IAAI,CAAE,KAA2C,CAAC,SAAS,CAAC,CAAC,CAAC,0CAA0C;IACrH,CAAC;IAES,eAAe,CAAC,OAAwB;QAChD,+DAA+D;QAC/D,yCAAyC;IAC3C,CAAC;CACF,CAAA;AAjBO;IADL,IAAA,oBAAQ,GAAE;;;;0CAGV;AAzCU,cAAc;IAD1B,IAAA,mBAAU,GAAE;IAUR,WAAA,IAAA,eAAM,EAAC,6BAAY,CAAC,CAAC,CAAC,sBAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IAC1C,WAAA,IAAA,eAAM,EAAC,6BAAY,CAAC,CAAC,CAAC,0BAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IAE9C,WAAA,IAAA,eAAM,EAAC,6BAAY,CAAC,CAAC,CAAC,uBAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IACzC,WAAA,IAAA,eAAM,EAAC,kBAAkB,CAAC,CAAA;IAC1B,WAAA,IAAA,eAAM,EAAC,wBAAwB,CAAC,CAAA;IAEhC,WAAA,IAAA,eAAM,EAAC,6BAAY,CAAC,CAAC,CAAC,wBAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;qCATzB,yCAAkB;QAC1B,sBAAU;QACkC,sBAAU;QAElD,0BAAc;QACwB,uBAAS;QAC1B,iCAAe,UAGQ,wBAAY;QAC5D,sBAAU;QACJ,qCAAgB;QACpB,6BAAa;QACF,oDAAwB;GApBxC,cAAc,CAwD1B;AAxDY,wCAAc","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { isMainThread } from 'worker_threads';\nimport { Inject, Injectable } from '@nestjs/common';\nimport { EventEmitter2 } from '@nestjs/event-emitter';\nimport {\n PoiService,\n PoiSyncService,\n BaseProjectService,\n StoreService,\n NodeConfig,\n ApiService,\n IProjectUpgradeService,\n profiler,\n} from '@subql/node-core';\nimport { StellarBlockWrapper } from '@subql/types-stellar';\nimport { Sequelize } from '@subql/x-sequelize';\nimport { ServerApi } from 'stellar-sdk/lib/horizon';\nimport {\n // generateTimestampReferenceForBlockFilters,\n StellarProjectDs,\n SubqueryProject,\n} from '../configure/SubqueryProject';\nimport { StellarApi } from '../stellar';\nimport SafeStellarProvider from '../stellar/safe-api';\nimport { DsProcessorService } from './ds-processor.service';\nimport { DynamicDsService } from './dynamic-ds.service';\nimport { UnfinalizedBlocksService } from './unfinalizedBlocks.service';\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst { version: packageVersion } = require('../../package.json');\n\n@Injectable()\nexport class ProjectService extends BaseProjectService<\n ApiService<StellarApi, SafeStellarProvider, StellarBlockWrapper[]>,\n StellarProjectDs\n> {\n protected packageVersion = packageVersion;\n\n constructor(\n dsProcessorService: DsProcessorService,\n apiService: ApiService,\n @Inject(isMainThread ? PoiService : 'Null') poiService: PoiService,\n @Inject(isMainThread ? PoiSyncService : 'Null')\n poiSyncService: PoiSyncService,\n @Inject(isMainThread ? Sequelize : 'Null') sequelize: Sequelize,\n @Inject('ISubqueryProject') project: SubqueryProject,\n @Inject('IProjectUpgradeService')\n protected readonly projectUpgradeService: IProjectUpgradeService<SubqueryProject>,\n @Inject(isMainThread ? StoreService : 'Null') storeService: StoreService,\n nodeConfig: NodeConfig,\n dynamicDsService: DynamicDsService,\n eventEmitter: EventEmitter2,\n unfinalizedBlockService: UnfinalizedBlocksService,\n ) {\n super(\n dsProcessorService,\n apiService,\n poiService,\n poiSyncService,\n sequelize,\n project,\n projectUpgradeService,\n storeService,\n nodeConfig,\n dynamicDsService,\n eventEmitter,\n unfinalizedBlockService,\n );\n }\n\n @profiler()\n async init(startHeight?: number): Promise<void> {\n return super.init(startHeight);\n }\n\n protected async getBlockTimestamp(height: number): Promise<Date> {\n const block = await this.apiService.unsafeApi.api\n .ledgers()\n .ledger(height)\n .call();\n\n return new Date((block as unknown as ServerApi.LedgerRecord).closed_at); // TODO test and make sure its in MS not S\n }\n\n protected onProjectChange(project: SubqueryProject): void | Promise<void> {\n // TODO update this when implementing skipBlock feature for Eth\n // this.apiService.updateBlockFetching();\n }\n}\n"]}
1
+ {"version":3,"file":"project.service.js","sourceRoot":"","sources":["../../src/indexer/project.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,mDAA8C;AAC9C,2CAAoD;AACpD,yDAAsD;AACtD,gDAS0B;AAE1B,oDAA+C;AAE/C,kEAIsC;AAGtC,iEAA4D;AAC5D,6DAAwD;AACxD,2EAAuE;AAEvE,8DAA8D;AAC9D,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAG3D,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,8BAGnC;IAGC,YACE,kBAAsC,EACtC,UAAsB,EACsB,UAAsB,EAElE,cAA8B,EACa,SAAoB,EACnC,OAAwB,EAEjC,qBAA8D,EACnC,YAA0B,EACxE,UAAsB,EACtB,gBAAkC,EAClC,YAA2B,EAC3B,uBAAiD;QAEjD,KAAK,CACH,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,cAAc,EACd,SAAS,EACT,OAAO,EACP,qBAAqB,EACrB,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,uBAAuB,CACxB,CAAC;QApBiB,0BAAqB,GAArB,qBAAqB,CAAyC;QAXzE,mBAAc,GAAG,cAAc,CAAC;IAgC1C,CAAC;IAGK,AAAN,KAAK,CAAC,IAAI,CAAC,WAAoB;QAC7B,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;IAES,KAAK,CAAC,iBAAiB,CAAC,MAAc;QAC9C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG;aAC9C,OAAO,EAAE;aACT,MAAM,CAAC,MAAM,CAAC;aACd,IAAI,EAAE,CAAC;QAEV,OAAO,IAAI,IAAI,CAAE,KAA2C,CAAC,SAAS,CAAC,CAAC,CAAC,0CAA0C;IACrH,CAAC;IAES,eAAe,CAAC,OAAwB;QAChD,+DAA+D;QAC/D,yCAAyC;IAC3C,CAAC;CACF,CAAA;AAjBO;IADL,IAAA,oBAAQ,GAAE;;;;0CAGV;AAzCU,cAAc;IAD1B,IAAA,mBAAU,GAAE;IAUR,WAAA,IAAA,eAAM,EAAC,6BAAY,CAAC,CAAC,CAAC,sBAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IAC1C,WAAA,IAAA,eAAM,EAAC,6BAAY,CAAC,CAAC,CAAC,0BAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IAE9C,WAAA,IAAA,eAAM,EAAC,6BAAY,CAAC,CAAC,CAAC,uBAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IACzC,WAAA,IAAA,eAAM,EAAC,kBAAkB,CAAC,CAAA;IAC1B,WAAA,IAAA,eAAM,EAAC,wBAAwB,CAAC,CAAA;IAEhC,WAAA,IAAA,eAAM,EAAC,6BAAY,CAAC,CAAC,CAAC,wBAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;qCATzB,yCAAkB;QAC1B,sBAAU;QACkC,sBAAU;QAElD,0BAAc;QACwB,uBAAS;QAC1B,iCAAe,UAGQ,wBAAY;QAC5D,sBAAU;QACJ,qCAAgB;QACpB,6BAAa;QACF,oDAAwB;GApBxC,cAAc,CAwD1B;AAxDY,wCAAc","sourcesContent":["// Copyright 2020-2024 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { isMainThread } from 'worker_threads';\nimport { Inject, Injectable } from '@nestjs/common';\nimport { EventEmitter2 } from '@nestjs/event-emitter';\nimport {\n PoiService,\n PoiSyncService,\n BaseProjectService,\n StoreService,\n NodeConfig,\n ApiService,\n IProjectUpgradeService,\n profiler,\n} from '@subql/node-core';\nimport { StellarBlockWrapper } from '@subql/types-stellar';\nimport { Sequelize } from '@subql/x-sequelize';\nimport { ServerApi } from 'stellar-sdk/lib/horizon';\nimport {\n // generateTimestampReferenceForBlockFilters,\n StellarProjectDs,\n SubqueryProject,\n} from '../configure/SubqueryProject';\nimport { StellarApi } from '../stellar';\nimport SafeStellarProvider from '../stellar/safe-api';\nimport { DsProcessorService } from './ds-processor.service';\nimport { DynamicDsService } from './dynamic-ds.service';\nimport { UnfinalizedBlocksService } from './unfinalizedBlocks.service';\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst { version: packageVersion } = require('../../package.json');\n\n@Injectable()\nexport class ProjectService extends BaseProjectService<\n ApiService<StellarApi, SafeStellarProvider, StellarBlockWrapper[]>,\n StellarProjectDs\n> {\n protected packageVersion = packageVersion;\n\n constructor(\n dsProcessorService: DsProcessorService,\n apiService: ApiService,\n @Inject(isMainThread ? PoiService : 'Null') poiService: PoiService,\n @Inject(isMainThread ? PoiSyncService : 'Null')\n poiSyncService: PoiSyncService,\n @Inject(isMainThread ? Sequelize : 'Null') sequelize: Sequelize,\n @Inject('ISubqueryProject') project: SubqueryProject,\n @Inject('IProjectUpgradeService')\n protected readonly projectUpgradeService: IProjectUpgradeService<SubqueryProject>,\n @Inject(isMainThread ? StoreService : 'Null') storeService: StoreService,\n nodeConfig: NodeConfig,\n dynamicDsService: DynamicDsService,\n eventEmitter: EventEmitter2,\n unfinalizedBlockService: UnfinalizedBlocksService,\n ) {\n super(\n dsProcessorService,\n apiService,\n poiService,\n poiSyncService,\n sequelize,\n project,\n projectUpgradeService,\n storeService,\n nodeConfig,\n dynamicDsService,\n eventEmitter,\n unfinalizedBlockService,\n );\n }\n\n @profiler()\n async init(startHeight?: number): Promise<void> {\n return super.init(startHeight);\n }\n\n protected async getBlockTimestamp(height: number): Promise<Date> {\n const block = await this.apiService.unsafeApi.api\n .ledgers()\n .ledger(height)\n .call();\n\n return new Date((block as unknown as ServerApi.LedgerRecord).closed_at); // TODO test and make sure its in MS not S\n }\n\n protected onProjectChange(project: SubqueryProject): void | Promise<void> {\n // TODO update this when implementing skipBlock feature for Eth\n // this.apiService.updateBlockFetching();\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2020-2023 SubQuery Pte Ltd authors & contributors
2
+ // Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
3
3
  // SPDX-License-Identifier: GPL-3.0
4
4
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
5
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox.service.js","sourceRoot":"","sources":["../../src/indexer/sandbox.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,mDAA8C;AAC9C,2CAAoD;AACpD,gDAO0B;AAI1B,+GAA+G;AAExG,IAAM,cAAc,GAApB,MAAM,cAAc;IAGzB,YACmB,UAAsB,EAEtB,YAA0B,EAC1B,UAAsB,EACM,OAAyB;QAJrD,eAAU,GAAV,UAAU,CAAY;QAEtB,iBAAY,GAAZ,YAAY,CAAc;QAC1B,eAAU,GAAV,UAAU,CAAY;QACM,YAAO,GAAP,OAAO,CAAkB;QAPhE,mBAAc,GAAmC,EAAE,CAAC;IAQzD,CAAC;IAEJ,cAAc,CAAC,EAAkB,EAAE,GAAwB;QACzD,MAAM,KAAK,GAAU,6BAAY;YAC/B,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;YAC9B,CAAC,CAAC,IAAA,4BAAgB,EAAE,MAAc,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB;QAEpE,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS,EAAE;YACd,SAAS,GAAG,IAAI,0BAAc,CAC5B;gBACE,KAAK;gBACL,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;gBACvB,KAAK;gBACL,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO;aACtC,EACD,IAAI,CAAC,UAAU,CAChB,CAAC;YACF,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;SACxC;QAED,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YAC1B,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;SACxD;QACD,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC1D,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,kBAAkB,CAAC,EAAkB;QAC3C,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACzB,CAAC;CACF,CAAA;AA1CY,cAAc;IAD1B,IAAA,mBAAU,GAAE;IAMR,WAAA,IAAA,eAAM,EAAC,6BAAY,CAAC,CAAC,CAAC,wBAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IAG5C,WAAA,IAAA,eAAM,EAAC,kBAAkB,CAAC,CAAA;qCAJE,sBAAU;QAER,wBAAY;QACd,sBAAU;GAP9B,cAAc,CA0C1B;AA1CY,wCAAc","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { isMainThread } from 'worker_threads';\nimport { Inject, Injectable } from '@nestjs/common';\nimport {\n NodeConfig,\n StoreService,\n IndexerSandbox,\n hostStoreToStore,\n ISubqueryProject,\n ApiService,\n} from '@subql/node-core';\nimport { Store, BaseDataSource } from '@subql/types-core';\nimport SafeStellarProvider from '../stellar/safe-api';\n\n/* It would be nice to move this to node core but need to find a way to inject other things into the sandbox */\n@Injectable()\nexport class SandboxService {\n private processorCache: Record<string, IndexerSandbox> = {};\n\n constructor(\n private readonly apiService: ApiService,\n @Inject(isMainThread ? StoreService : 'Null')\n private readonly storeService: StoreService,\n private readonly nodeConfig: NodeConfig,\n @Inject('ISubqueryProject') private readonly project: ISubqueryProject,\n ) {}\n\n getDsProcessor(ds: BaseDataSource, api: SafeStellarProvider): IndexerSandbox {\n const store: Store = isMainThread\n ? this.storeService.getStore()\n : hostStoreToStore((global as any).host); // Provided in worker.ts\n\n const entry = this.getDataSourceEntry(ds);\n let processor = this.processorCache[entry];\n if (!processor) {\n processor = new IndexerSandbox(\n {\n store,\n root: this.project.root,\n entry,\n chainId: this.project.network.chainId,\n },\n this.nodeConfig,\n );\n this.processorCache[entry] = processor;\n }\n\n processor.freeze(api, 'api');\n if (this.nodeConfig.unsafe) {\n processor.freeze(this.apiService.api.api, 'unsafeApi');\n }\n processor.freeze(this.project.network.chainId, 'chainId');\n return processor;\n }\n\n private getDataSourceEntry(ds: BaseDataSource): string {\n return ds.mapping.file;\n }\n}\n"]}
1
+ {"version":3,"file":"sandbox.service.js","sourceRoot":"","sources":["../../src/indexer/sandbox.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,mDAA8C;AAC9C,2CAAoD;AACpD,gDAO0B;AAI1B,+GAA+G;AAExG,IAAM,cAAc,GAApB,MAAM,cAAc;IAGzB,YACmB,UAAsB,EAEtB,YAA0B,EAC1B,UAAsB,EACM,OAAyB;QAJrD,eAAU,GAAV,UAAU,CAAY;QAEtB,iBAAY,GAAZ,YAAY,CAAc;QAC1B,eAAU,GAAV,UAAU,CAAY;QACM,YAAO,GAAP,OAAO,CAAkB;QAPhE,mBAAc,GAAmC,EAAE,CAAC;IAQzD,CAAC;IAEJ,cAAc,CAAC,EAAkB,EAAE,GAAwB;QACzD,MAAM,KAAK,GAAU,6BAAY;YAC/B,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;YAC9B,CAAC,CAAC,IAAA,4BAAgB,EAAE,MAAc,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB;QAEpE,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS,EAAE;YACd,SAAS,GAAG,IAAI,0BAAc,CAC5B;gBACE,KAAK;gBACL,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;gBACvB,KAAK;gBACL,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO;aACtC,EACD,IAAI,CAAC,UAAU,CAChB,CAAC;YACF,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;SACxC;QAED,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YAC1B,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;SACxD;QACD,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC1D,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,kBAAkB,CAAC,EAAkB;QAC3C,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACzB,CAAC;CACF,CAAA;AA1CY,cAAc;IAD1B,IAAA,mBAAU,GAAE;IAMR,WAAA,IAAA,eAAM,EAAC,6BAAY,CAAC,CAAC,CAAC,wBAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IAG5C,WAAA,IAAA,eAAM,EAAC,kBAAkB,CAAC,CAAA;qCAJE,sBAAU;QAER,wBAAY;QACd,sBAAU;GAP9B,cAAc,CA0C1B;AA1CY,wCAAc","sourcesContent":["// Copyright 2020-2024 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { isMainThread } from 'worker_threads';\nimport { Inject, Injectable } from '@nestjs/common';\nimport {\n NodeConfig,\n StoreService,\n IndexerSandbox,\n hostStoreToStore,\n ISubqueryProject,\n ApiService,\n} from '@subql/node-core';\nimport { Store, BaseDataSource } from '@subql/types-core';\nimport SafeStellarProvider from '../stellar/safe-api';\n\n/* It would be nice to move this to node core but need to find a way to inject other things into the sandbox */\n@Injectable()\nexport class SandboxService {\n private processorCache: Record<string, IndexerSandbox> = {};\n\n constructor(\n private readonly apiService: ApiService,\n @Inject(isMainThread ? StoreService : 'Null')\n private readonly storeService: StoreService,\n private readonly nodeConfig: NodeConfig,\n @Inject('ISubqueryProject') private readonly project: ISubqueryProject,\n ) {}\n\n getDsProcessor(ds: BaseDataSource, api: SafeStellarProvider): IndexerSandbox {\n const store: Store = isMainThread\n ? this.storeService.getStore()\n : hostStoreToStore((global as any).host); // Provided in worker.ts\n\n const entry = this.getDataSourceEntry(ds);\n let processor = this.processorCache[entry];\n if (!processor) {\n processor = new IndexerSandbox(\n {\n store,\n root: this.project.root,\n entry,\n chainId: this.project.network.chainId,\n },\n this.nodeConfig,\n );\n this.processorCache[entry] = processor;\n }\n\n processor.freeze(api, 'api');\n if (this.nodeConfig.unsafe) {\n processor.freeze(this.apiService.api.api, 'unsafeApi');\n }\n processor.freeze(this.project.network.chainId, 'chainId');\n return processor;\n }\n\n private getDataSourceEntry(ds: BaseDataSource): string {\n return ds.mapping.file;\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2020-2023 SubQuery Pte Ltd authors & contributors
2
+ // Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
3
3
  // SPDX-License-Identifier: GPL-3.0
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
5
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/indexer/types.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nexport type BestBlocks = Record<number, string>;\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/indexer/types.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC","sourcesContent":["// Copyright 2020-2024 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nexport type BestBlocks = Record<number, string>;\n"]}
@@ -1,10 +1,8 @@
1
1
  import { ApiService, BaseUnfinalizedBlocksService, Header, NodeConfig, StoreCacheService } from '@subql/node-core';
2
2
  import { BlockWrapper } from '@subql/types-stellar';
3
- export declare function blockToHeader(blockHeight: number): Header;
4
3
  export declare class UnfinalizedBlocksService extends BaseUnfinalizedBlocksService<BlockWrapper> {
5
4
  private readonly apiService;
6
5
  constructor(apiService: ApiService, nodeConfig: NodeConfig, storeCache: StoreCacheService);
7
- protected blockToHeader(block: BlockWrapper): Header;
8
6
  protected getFinalizedHead(): Promise<Header>;
9
7
  protected getHeaderForHash(hash: string): Promise<Header>;
10
8
  protected getHeaderForHeight(height: number): Promise<Header>;
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2020-2023 SubQuery Pte Ltd authors & contributors
2
+ // Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
3
3
  // SPDX-License-Identifier: GPL-3.0
4
4
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
5
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -11,43 +11,27 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
12
12
  };
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.UnfinalizedBlocksService = exports.blockToHeader = void 0;
14
+ exports.UnfinalizedBlocksService = void 0;
15
15
  const common_1 = require("@nestjs/common");
16
16
  const node_core_1 = require("@subql/node-core");
17
+ const utils_stellar_1 = require("../stellar/utils.stellar");
17
18
  const logger = (0, node_core_1.getLogger)('unfinalized');
18
- function blockToHeader(blockHeight) {
19
- return {
20
- blockHeight: blockHeight,
21
- blockHash: blockHeight.toString(),
22
- parentHash: (blockHeight - 1).toString(),
23
- };
24
- }
25
- exports.blockToHeader = blockToHeader;
26
19
  let UnfinalizedBlocksService = class UnfinalizedBlocksService extends node_core_1.BaseUnfinalizedBlocksService {
27
20
  constructor(apiService, nodeConfig, storeCache) {
28
21
  super(nodeConfig, storeCache);
29
22
  this.apiService = apiService;
30
23
  }
31
- blockToHeader(block) {
32
- return blockToHeader(block.block.sequence);
33
- }
34
24
  async getFinalizedHead() {
35
25
  const finalizedHeight = await this.apiService.api.getFinalizedBlockHeight();
36
- return blockToHeader(finalizedHeight);
26
+ return (0, utils_stellar_1.blockToHeader)(finalizedHeight);
37
27
  }
38
28
  async getHeaderForHash(hash) {
39
29
  return this.getHeaderForHeight(parseInt(hash, 10));
40
30
  }
41
31
  async getHeaderForHeight(height) {
42
- return Promise.resolve(blockToHeader(height));
32
+ return Promise.resolve((0, utils_stellar_1.blockToHeader)(height));
43
33
  }
44
34
  };
45
- __decorate([
46
- (0, node_core_1.mainThreadOnly)(),
47
- __metadata("design:type", Function),
48
- __metadata("design:paramtypes", [Object]),
49
- __metadata("design:returntype", Object)
50
- ], UnfinalizedBlocksService.prototype, "blockToHeader", null);
51
35
  __decorate([
52
36
  (0, node_core_1.mainThreadOnly)(),
53
37
  __metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"file":"unfinalizedBlocks.service.js","sourceRoot":"","sources":["../../src/indexer/unfinalizedBlocks.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;AAEnC,2CAA4C;AAC5C,gDAQ0B;AAG1B,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,aAAa,CAAC,CAAC;AAExC,SAAgB,aAAa,CAAC,WAAmB;IAC/C,OAAO;QACL,WAAW,EAAE,WAAW;QACxB,SAAS,EAAE,WAAW,CAAC,QAAQ,EAAE;QACjC,UAAU,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;KACzC,CAAC;AACJ,CAAC;AAND,sCAMC;AAGM,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,wCAA0C;IACtF,YACmB,UAAsB,EACvC,UAAsB,EACtB,UAA6B;QAE7B,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAJb,eAAU,GAAV,UAAU,CAAY;IAKzC,CAAC;IAGS,aAAa,CAAC,KAAmB;QACzC,OAAO,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAGe,AAAN,KAAK,CAAC,gBAAgB;QAC9B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,uBAAuB,EAAE,CAAC;QAC5E,OAAO,aAAa,CAAC,eAAe,CAAC,CAAC;IACxC,CAAC;IAGe,AAAN,KAAK,CAAC,gBAAgB,CAAC,IAAY;QAC3C,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;IAGe,AAAN,KAAK,CAAC,kBAAkB,CAAC,MAAc;QAC/C,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,CAAC;CACF,CAAA;AApBC;IAAC,IAAA,0BAAc,GAAE;;;;6DAGhB;AAGe;IADf,IAAA,0BAAc,GAAE;;;;gEAIhB;AAGe;IADf,IAAA,0BAAc,GAAE;;;;gEAGhB;AAGe;IADf,IAAA,0BAAc,GAAE;;;;kEAGhB;AA5BU,wBAAwB;IADpC,IAAA,mBAAU,GAAE;qCAGoB,sBAAU;QAC3B,sBAAU;QACV,6BAAiB;GAJpB,wBAAwB,CA6BpC;AA7BY,4DAAwB","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Injectable } from '@nestjs/common';\nimport {\n ApiService,\n BaseUnfinalizedBlocksService,\n Header,\n NodeConfig,\n StoreCacheService,\n getLogger,\n mainThreadOnly,\n} from '@subql/node-core';\nimport { BlockWrapper } from '@subql/types-stellar';\n\nconst logger = getLogger('unfinalized');\n\nexport function blockToHeader(blockHeight: number): Header {\n return {\n blockHeight: blockHeight,\n blockHash: blockHeight.toString(),\n parentHash: (blockHeight - 1).toString(),\n };\n}\n\n@Injectable()\nexport class UnfinalizedBlocksService extends BaseUnfinalizedBlocksService<BlockWrapper> {\n constructor(\n private readonly apiService: ApiService,\n nodeConfig: NodeConfig,\n storeCache: StoreCacheService,\n ) {\n super(nodeConfig, storeCache);\n }\n\n @mainThreadOnly()\n protected blockToHeader(block: BlockWrapper): Header {\n return blockToHeader(block.block.sequence);\n }\n\n @mainThreadOnly()\n protected async getFinalizedHead(): Promise<Header> {\n const finalizedHeight = await this.apiService.api.getFinalizedBlockHeight();\n return blockToHeader(finalizedHeight);\n }\n\n @mainThreadOnly()\n protected async getHeaderForHash(hash: string): Promise<Header> {\n return this.getHeaderForHeight(parseInt(hash, 10));\n }\n\n @mainThreadOnly()\n protected async getHeaderForHeight(height: number): Promise<Header> {\n return Promise.resolve(blockToHeader(height));\n }\n}\n"]}
1
+ {"version":3,"file":"unfinalizedBlocks.service.js","sourceRoot":"","sources":["../../src/indexer/unfinalizedBlocks.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;AAEnC,2CAA4C;AAC5C,gDAQ0B;AAE1B,4DAAyD;AAEzD,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,aAAa,CAAC,CAAC;AAGjC,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,wCAA0C;IACtF,YACmB,UAAsB,EACvC,UAAsB,EACtB,UAA6B;QAE7B,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAJb,eAAU,GAAV,UAAU,CAAY;IAKzC,CAAC;IAGe,AAAN,KAAK,CAAC,gBAAgB;QAC9B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,uBAAuB,EAAE,CAAC;QAC5E,OAAO,IAAA,6BAAa,EAAC,eAAe,CAAC,CAAC;IACxC,CAAC;IAGe,AAAN,KAAK,CAAC,gBAAgB,CAAC,IAAY;QAC3C,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;IAGe,AAAN,KAAK,CAAC,kBAAkB,CAAC,MAAc;QAC/C,OAAO,OAAO,CAAC,OAAO,CAAC,IAAA,6BAAa,EAAC,MAAM,CAAC,CAAC,CAAC;IAChD,CAAC;CACF,CAAA;AAdiB;IADf,IAAA,0BAAc,GAAE;;;;gEAIhB;AAGe;IADf,IAAA,0BAAc,GAAE;;;;gEAGhB;AAGe;IADf,IAAA,0BAAc,GAAE;;;;kEAGhB;AAvBU,wBAAwB;IADpC,IAAA,mBAAU,GAAE;qCAGoB,sBAAU;QAC3B,sBAAU;QACV,6BAAiB;GAJpB,wBAAwB,CAwBpC;AAxBY,4DAAwB","sourcesContent":["// Copyright 2020-2024 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Injectable } from '@nestjs/common';\nimport {\n ApiService,\n BaseUnfinalizedBlocksService,\n Header,\n NodeConfig,\n StoreCacheService,\n getLogger,\n mainThreadOnly,\n} from '@subql/node-core';\nimport { BlockWrapper } from '@subql/types-stellar';\nimport { blockToHeader } from '../stellar/utils.stellar';\n\nconst logger = getLogger('unfinalized');\n\n@Injectable()\nexport class UnfinalizedBlocksService extends BaseUnfinalizedBlocksService<BlockWrapper> {\n constructor(\n private readonly apiService: ApiService,\n nodeConfig: NodeConfig,\n storeCache: StoreCacheService,\n ) {\n super(nodeConfig, storeCache);\n }\n\n @mainThreadOnly()\n protected async getFinalizedHead(): Promise<Header> {\n const finalizedHeight = await this.apiService.api.getFinalizedBlockHeight();\n return blockToHeader(finalizedHeight);\n }\n\n @mainThreadOnly()\n protected async getHeaderForHash(hash: string): Promise<Header> {\n return this.getHeaderForHeight(parseInt(hash, 10));\n }\n\n @mainThreadOnly()\n protected async getHeaderForHeight(height: number): Promise<Header> {\n return Promise.resolve(blockToHeader(height));\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2020-2023 SubQuery Pte Ltd authors & contributors
2
+ // Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
3
3
  // SPDX-License-Identifier: GPL-3.0
4
4
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
5
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -1 +1 @@
1
- {"version":3,"file":"worker-fetch.module.js","sourceRoot":"","sources":["../../../src/indexer/worker/worker-fetch.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;AAEnC,mDAA8C;AAC9C,2CAAwC;AACxC,yDAAsD;AACtD,gDAS0B;AAE1B,2CAAkD;AAElD,kEAA6D;AAC7D,8DAAyD;AACzD,wDAAoD;AACpD,wDAAoD;AACpD,wDAAoD;AACpD,4EAAwE;AACxE,qDAAiD;AACjD,yFAAoF;AAsE7E,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;CAAG,CAAA;AAApB,iBAAiB;IApE7B,IAAA,eAAM,EAAC;QACN,SAAS,EAAE;YACT,gCAAc;YACd;gBACE,OAAO,EAAE,sCAA0B;gBACnC,UAAU,EAAE,GAAG,EAAE;oBACf,IAAI,6BAAY,EAAE;wBAChB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;qBACjD;oBACD,OAAO,IAAI,4CAAgC,CAAE,MAAc,CAAC,IAAI,CAAC,CAAC;gBACpE,CAAC;aACF;YACD,iCAAqB;YACrB;gBACE,OAAO,EAAE,sBAAU;gBACnB,UAAU,EAAE,KAAK,EACf,OAAwB,EACxB,qBAA4C,EAC5C,qBAAkE,EAClE,YAA2B,EAC3B,EAAE;oBACF,MAAM,UAAU,GAAG,IAAI,2BAAiB,CACtC,OAAO,EACP,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,CACb,CAAC;oBACF,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;oBACxB,OAAO,UAAU,CAAC;gBACpB,CAAC;gBACD,MAAM,EAAE;oBACN,kBAAkB;oBAClB,wBAAwB;oBACxB,iCAAqB;oBACrB,6BAAa;iBACd;aACF;YACD,gCAAc;YACd,yCAAkB;YAClB;gBACE,OAAO,EAAE,qCAAgB;gBACzB,UAAU,EAAE,GAAG,EAAE;oBACf,IAAI,6BAAY,EAAE;wBAChB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;qBACjD;oBACD,OAAO,IAAI,kCAAsB,CAAE,MAAc,CAAC,IAAI,CAAC,CAAC;gBAC1D,CAAC;aACF;YACD;gBACE,OAAO,EAAE,iBAAiB;gBAC1B,QAAQ,EAAE,gCAAc;aACzB;YACD,8BAAa;YACb;gBACE,OAAO,EAAE,oDAAwB;gBACjC,UAAU,EAAE,GAAG,EAAE;oBACf,IAAI,6BAAY,EAAE;wBAChB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;qBACjD;oBACD,OAAO,IAAI,iEAA8B,CAAE,MAAc,CAAC,IAAI,CAAC,CAAC;gBAClE,CAAC;aACF;YACD;gBACE,OAAO,EAAE,gCAAoB;gBAC7B,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,sCAA0B,CAAE,MAAc,CAAC,IAAI,CAAC;aACvE;SACF;KACF,CAAC;GACW,iBAAiB,CAAG;AAApB,8CAAiB","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { isMainThread } from 'worker_threads';\nimport { Module } from '@nestjs/common';\nimport { EventEmitter2 } from '@nestjs/event-emitter';\nimport {\n ApiService,\n ConnectionPoolService,\n WorkerDynamicDsService,\n ConnectionPoolStateManager,\n WorkerConnectionPoolStateManager,\n ProjectUpgradeService,\n InMemoryCacheService,\n WorkerInMemoryCacheService,\n} from '@subql/node-core';\nimport { SubqueryProject } from '../../configure/SubqueryProject';\nimport { StellarApiService } from '../../stellar';\nimport { StellarApiConnection } from '../../stellar/api.connection';\nimport { DsProcessorService } from '../ds-processor.service';\nimport { DynamicDsService } from '../dynamic-ds.service';\nimport { IndexerManager } from '../indexer.manager';\nimport { ProjectService } from '../project.service';\nimport { SandboxService } from '../sandbox.service';\nimport { UnfinalizedBlocksService } from '../unfinalizedBlocks.service';\nimport { WorkerService } from './worker.service';\nimport { WorkerUnfinalizedBlocksService } from './worker.unfinalizedBlocks.service';\n\n@Module({\n providers: [\n IndexerManager,\n {\n provide: ConnectionPoolStateManager,\n useFactory: () => {\n if (isMainThread) {\n throw new Error('Expected to be worker thread');\n }\n return new WorkerConnectionPoolStateManager((global as any).host);\n },\n },\n ConnectionPoolService,\n {\n provide: ApiService,\n useFactory: async (\n project: SubqueryProject,\n projectUpgradeService: ProjectUpgradeService,\n connectionPoolService: ConnectionPoolService<StellarApiConnection>,\n eventEmitter: EventEmitter2,\n ) => {\n const apiService = new StellarApiService(\n project,\n projectUpgradeService,\n connectionPoolService,\n eventEmitter,\n );\n await apiService.init();\n return apiService;\n },\n inject: [\n 'ISubqueryProject',\n 'IProjectUpgradeService',\n ConnectionPoolService,\n EventEmitter2,\n ],\n },\n SandboxService,\n DsProcessorService,\n {\n provide: DynamicDsService,\n useFactory: () => {\n if (isMainThread) {\n throw new Error('Expected to be worker thread');\n }\n return new WorkerDynamicDsService((global as any).host);\n },\n },\n {\n provide: 'IProjectService',\n useClass: ProjectService,\n },\n WorkerService,\n {\n provide: UnfinalizedBlocksService,\n useFactory: () => {\n if (isMainThread) {\n throw new Error('Expected to be worker thread');\n }\n return new WorkerUnfinalizedBlocksService((global as any).host);\n },\n },\n {\n provide: InMemoryCacheService,\n useFactory: () => new WorkerInMemoryCacheService((global as any).host),\n },\n ],\n})\nexport class WorkerFetchModule {}\n"]}
1
+ {"version":3,"file":"worker-fetch.module.js","sourceRoot":"","sources":["../../../src/indexer/worker/worker-fetch.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;AAEnC,mDAA8C;AAC9C,2CAAwC;AACxC,yDAAsD;AACtD,gDAS0B;AAE1B,2CAAkD;AAElD,kEAA6D;AAC7D,8DAAyD;AACzD,wDAAoD;AACpD,wDAAoD;AACpD,wDAAoD;AACpD,4EAAwE;AACxE,qDAAiD;AACjD,yFAAoF;AAsE7E,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;CAAG,CAAA;AAApB,iBAAiB;IApE7B,IAAA,eAAM,EAAC;QACN,SAAS,EAAE;YACT,gCAAc;YACd;gBACE,OAAO,EAAE,sCAA0B;gBACnC,UAAU,EAAE,GAAG,EAAE;oBACf,IAAI,6BAAY,EAAE;wBAChB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;qBACjD;oBACD,OAAO,IAAI,4CAAgC,CAAE,MAAc,CAAC,IAAI,CAAC,CAAC;gBACpE,CAAC;aACF;YACD,iCAAqB;YACrB;gBACE,OAAO,EAAE,sBAAU;gBACnB,UAAU,EAAE,KAAK,EACf,OAAwB,EACxB,qBAA4C,EAC5C,qBAAkE,EAClE,YAA2B,EAC3B,EAAE;oBACF,MAAM,UAAU,GAAG,IAAI,2BAAiB,CACtC,OAAO,EACP,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,CACb,CAAC;oBACF,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;oBACxB,OAAO,UAAU,CAAC;gBACpB,CAAC;gBACD,MAAM,EAAE;oBACN,kBAAkB;oBAClB,wBAAwB;oBACxB,iCAAqB;oBACrB,6BAAa;iBACd;aACF;YACD,gCAAc;YACd,yCAAkB;YAClB;gBACE,OAAO,EAAE,qCAAgB;gBACzB,UAAU,EAAE,GAAG,EAAE;oBACf,IAAI,6BAAY,EAAE;wBAChB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;qBACjD;oBACD,OAAO,IAAI,kCAAsB,CAAE,MAAc,CAAC,IAAI,CAAC,CAAC;gBAC1D,CAAC;aACF;YACD;gBACE,OAAO,EAAE,iBAAiB;gBAC1B,QAAQ,EAAE,gCAAc;aACzB;YACD,8BAAa;YACb;gBACE,OAAO,EAAE,oDAAwB;gBACjC,UAAU,EAAE,GAAG,EAAE;oBACf,IAAI,6BAAY,EAAE;wBAChB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;qBACjD;oBACD,OAAO,IAAI,iEAA8B,CAAE,MAAc,CAAC,IAAI,CAAC,CAAC;gBAClE,CAAC;aACF;YACD;gBACE,OAAO,EAAE,gCAAoB;gBAC7B,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,sCAA0B,CAAE,MAAc,CAAC,IAAI,CAAC;aACvE;SACF;KACF,CAAC;GACW,iBAAiB,CAAG;AAApB,8CAAiB","sourcesContent":["// Copyright 2020-2024 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { isMainThread } from 'worker_threads';\nimport { Module } from '@nestjs/common';\nimport { EventEmitter2 } from '@nestjs/event-emitter';\nimport {\n ApiService,\n ConnectionPoolService,\n WorkerDynamicDsService,\n ConnectionPoolStateManager,\n WorkerConnectionPoolStateManager,\n ProjectUpgradeService,\n InMemoryCacheService,\n WorkerInMemoryCacheService,\n} from '@subql/node-core';\nimport { SubqueryProject } from '../../configure/SubqueryProject';\nimport { StellarApiService } from '../../stellar';\nimport { StellarApiConnection } from '../../stellar/api.connection';\nimport { DsProcessorService } from '../ds-processor.service';\nimport { DynamicDsService } from '../dynamic-ds.service';\nimport { IndexerManager } from '../indexer.manager';\nimport { ProjectService } from '../project.service';\nimport { SandboxService } from '../sandbox.service';\nimport { UnfinalizedBlocksService } from '../unfinalizedBlocks.service';\nimport { WorkerService } from './worker.service';\nimport { WorkerUnfinalizedBlocksService } from './worker.unfinalizedBlocks.service';\n\n@Module({\n providers: [\n IndexerManager,\n {\n provide: ConnectionPoolStateManager,\n useFactory: () => {\n if (isMainThread) {\n throw new Error('Expected to be worker thread');\n }\n return new WorkerConnectionPoolStateManager((global as any).host);\n },\n },\n ConnectionPoolService,\n {\n provide: ApiService,\n useFactory: async (\n project: SubqueryProject,\n projectUpgradeService: ProjectUpgradeService,\n connectionPoolService: ConnectionPoolService<StellarApiConnection>,\n eventEmitter: EventEmitter2,\n ) => {\n const apiService = new StellarApiService(\n project,\n projectUpgradeService,\n connectionPoolService,\n eventEmitter,\n );\n await apiService.init();\n return apiService;\n },\n inject: [\n 'ISubqueryProject',\n 'IProjectUpgradeService',\n ConnectionPoolService,\n EventEmitter2,\n ],\n },\n SandboxService,\n DsProcessorService,\n {\n provide: DynamicDsService,\n useFactory: () => {\n if (isMainThread) {\n throw new Error('Expected to be worker thread');\n }\n return new WorkerDynamicDsService((global as any).host);\n },\n },\n {\n provide: 'IProjectService',\n useClass: ProjectService,\n },\n WorkerService,\n {\n provide: UnfinalizedBlocksService,\n useFactory: () => {\n if (isMainThread) {\n throw new Error('Expected to be worker thread');\n }\n return new WorkerUnfinalizedBlocksService((global as any).host);\n },\n },\n {\n provide: InMemoryCacheService,\n useFactory: () => new WorkerInMemoryCacheService((global as any).host),\n },\n ],\n})\nexport class WorkerFetchModule {}\n"]}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2020-2023 SubQuery Pte Ltd authors & contributors
2
+ // Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
3
3
  // SPDX-License-Identifier: GPL-3.0
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
5
  // initlogger and yargs must be imported before all other imports