@subql/node-stellar 4.5.1-0 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/app.module.js +19 -9
  4. package/dist/app.module.js.map +1 -1
  5. package/dist/blockchain.service.d.ts +30 -0
  6. package/dist/blockchain.service.js +113 -0
  7. package/dist/blockchain.service.js.map +1 -0
  8. package/dist/blockchain.service.spec.d.ts +1 -0
  9. package/dist/blockchain.service.spec.js +33 -0
  10. package/dist/blockchain.service.spec.js.map +1 -0
  11. package/dist/configure/SubqueryProject.js +2 -3
  12. package/dist/configure/SubqueryProject.js.map +1 -1
  13. package/dist/configure/configure.module.js +2 -2
  14. package/dist/configure/configure.module.js.map +1 -1
  15. package/dist/indexer/dictionary/stellarDictionary.service.d.ts +1 -2
  16. package/dist/indexer/dictionary/stellarDictionary.service.js +3 -4
  17. package/dist/indexer/dictionary/stellarDictionary.service.js.map +1 -1
  18. package/dist/indexer/dictionary/v1/stellarDictionaryV1.d.ts +1 -2
  19. package/dist/indexer/dictionary/v1/stellarDictionaryV1.js +2 -2
  20. package/dist/indexer/dictionary/v1/stellarDictionaryV1.js.map +1 -1
  21. package/dist/indexer/fetch.module.js +30 -27
  22. package/dist/indexer/fetch.module.js.map +1 -1
  23. package/dist/indexer/indexer.manager.d.ts +3 -8
  24. package/dist/indexer/indexer.manager.js +12 -19
  25. package/dist/indexer/indexer.manager.js.map +1 -1
  26. package/dist/indexer/types.js +1 -2
  27. package/dist/indexer/types.js.map +1 -1
  28. package/dist/indexer/worker/worker-fetch.module.js +10 -32
  29. package/dist/indexer/worker/worker-fetch.module.js.map +1 -1
  30. package/dist/indexer/worker/worker.js.map +1 -1
  31. package/dist/indexer/worker/worker.module.js +2 -2
  32. package/dist/indexer/worker/worker.module.js.map +1 -1
  33. package/dist/indexer/worker/worker.service.js +3 -2
  34. package/dist/indexer/worker/worker.service.js.map +1 -1
  35. package/dist/init.js +2 -4
  36. package/dist/init.js.map +1 -1
  37. package/dist/main.js.map +1 -1
  38. package/dist/stellar/api.connection.js.map +1 -1
  39. package/dist/stellar/api.service.stellar.d.ts +2 -4
  40. package/dist/stellar/api.service.stellar.js +19 -25
  41. package/dist/stellar/api.service.stellar.js.map +1 -1
  42. package/dist/stellar/api.service.stellar.spec.js +10 -2
  43. package/dist/stellar/api.service.stellar.spec.js.map +1 -1
  44. package/dist/stellar/api.stellar.js.map +1 -1
  45. package/dist/stellar/block.stellar.js.map +1 -1
  46. package/dist/stellar/soroban.server.js.map +1 -1
  47. package/dist/stellar/utils.stellar.js +11 -6
  48. package/dist/stellar/utils.stellar.js.map +1 -1
  49. package/dist/subcommands/forceClean.module.js +2 -2
  50. package/dist/subcommands/forceClean.module.js.map +1 -1
  51. package/dist/subcommands/reindex.module.js +15 -17
  52. package/dist/subcommands/reindex.module.js.map +1 -1
  53. package/dist/subcommands/testing.init.js +1 -2
  54. package/dist/subcommands/testing.init.js.map +1 -1
  55. package/dist/subcommands/testing.module.js +18 -38
  56. package/dist/subcommands/testing.module.js.map +1 -1
  57. package/dist/subcommands/testing.service.js +2 -2
  58. package/dist/subcommands/testing.service.js.map +1 -1
  59. package/dist/utils/project.js +3 -4
  60. package/dist/utils/project.js.map +1 -1
  61. package/dist/utils/string.js +1 -2
  62. package/dist/utils/string.js.map +1 -1
  63. package/package.json +14 -18
  64. package/dist/indexer/blockDispatcher/block-dispatcher.service.d.ts +0 -15
  65. package/dist/indexer/blockDispatcher/block-dispatcher.service.js +0 -51
  66. package/dist/indexer/blockDispatcher/block-dispatcher.service.js.map +0 -1
  67. package/dist/indexer/blockDispatcher/index.d.ts +0 -4
  68. package/dist/indexer/blockDispatcher/index.js +0 -10
  69. package/dist/indexer/blockDispatcher/index.js.map +0 -1
  70. package/dist/indexer/blockDispatcher/stellar-block-dispatcher.d.ts +0 -5
  71. package/dist/indexer/blockDispatcher/stellar-block-dispatcher.js +0 -5
  72. package/dist/indexer/blockDispatcher/stellar-block-dispatcher.js.map +0 -1
  73. package/dist/indexer/blockDispatcher/worker-block-dispatcher.service.d.ts +0 -17
  74. package/dist/indexer/blockDispatcher/worker-block-dispatcher.service.js +0 -49
  75. package/dist/indexer/blockDispatcher/worker-block-dispatcher.service.js.map +0 -1
  76. package/dist/indexer/ds-processor.service.d.ts +0 -5
  77. package/dist/indexer/ds-processor.service.js +0 -22
  78. package/dist/indexer/ds-processor.service.js.map +0 -1
  79. package/dist/indexer/dynamic-ds.service.d.ts +0 -9
  80. package/dist/indexer/dynamic-ds.service.js +0 -69
  81. package/dist/indexer/dynamic-ds.service.js.map +0 -1
  82. package/dist/indexer/fetch.service.d.ts +0 -21
  83. package/dist/indexer/fetch.service.js +0 -77
  84. package/dist/indexer/fetch.service.js.map +0 -1
  85. package/dist/indexer/project.service.d.ts +0 -17
  86. package/dist/indexer/project.service.js +0 -73
  87. package/dist/indexer/project.service.js.map +0 -1
  88. package/dist/indexer/unfinalizedBlocks.service.d.ts +0 -9
  89. package/dist/indexer/unfinalizedBlocks.service.js +0 -65
  90. package/dist/indexer/unfinalizedBlocks.service.js.map +0 -1
@@ -1 +0,0 @@
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,0DAAuE;AACvE,gDAO0B;AAG1B,4DAA8E;AAE9E,6CAAwD;AACxD,uDAAmD;AACnD,2EAAuE;AAEvE,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAEjC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAGtB,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,4BAIjC;IAEW;IADV,YACU,UAAsB,EAC9B,UAAsB,EACK,cAA8B,EAEzD,eAAwC,EACxC,iBAA2C,EAC3C,wBAAkD,EAClD,YAA2B,EAC3B,iBAAoC,EACL,kBAAuC;QAEtE,KAAK,CACH,UAAU,EACV,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,CACnB,CAAC;QApBM,eAAU,GAAV,UAAU,CAAY;IAqBhC,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;IACnC,CAAC;IAES,KAAK,CAAC,kBAAkB;QAChC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QACjD,OAAO,IAAA,oCAAoB,EAAC,KAAK,CAAC,CAAC;IACrC,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;AArEY,YAAY;IADxB,IAAA,mBAAU,GAAE;IASR,WAAA,IAAA,eAAM,EAAC,iBAAiB,CAAC,CAAA;IACzB,WAAA,IAAA,eAAM,EAAC,kBAAkB,CAAC,CAAA;IAM1B,WAAA,IAAA,eAAM,EAAC,qBAAqB,CAAC,CAAA;qCATV,sBAAU;QAClB,sBAAU;QACqB,gCAAc,UAGtC,qCAAwB;QACjB,oDAAwB;QACpC,6BAAa;QACR,4BAAiB;GAd3B,YAAY,CAqExB;AArEY,oCAAY","sourcesContent":["// Copyright 2020-2025 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 Header,\n IStoreModelProvider,\n} from '@subql/node-core';\nimport { StellarBlock, SubqlDatasource } from '@subql/types-stellar';\nimport { StellarApi } from '../stellar';\nimport { calcInterval, stellarBlockToHeader } from '../stellar/utils.stellar';\nimport { IStellarBlockDispatcher } from './blockDispatcher';\nimport { StellarDictionaryService } from './dictionary';\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('IBlockDispatcher')\n blockDispatcher: IStellarBlockDispatcher,\n dictionaryService: StellarDictionaryService,\n unfinalizedBlocksService: UnfinalizedBlocksService,\n eventEmitter: EventEmitter2,\n schedulerRegistry: SchedulerRegistry,\n @Inject('IStoreModelProvider') storeModelProvider: IStoreModelProvider,\n ) {\n super(\n nodeConfig,\n projectService,\n blockDispatcher,\n dictionaryService,\n eventEmitter,\n schedulerRegistry,\n unfinalizedBlocksService,\n storeModelProvider,\n );\n }\n\n get api(): StellarApi {\n return this.apiService.unsafeApi;\n }\n\n protected async getFinalizedHeader(): Promise<Header> {\n const block = await this.api.getFinalizedBlock();\n return stellarBlockToHeader(block);\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,17 +0,0 @@
1
- import { EventEmitter2 } from '@nestjs/event-emitter';
2
- import { PoiService, PoiSyncService, BaseProjectService, StoreService, NodeConfig, ApiService, IProjectUpgradeService } from '@subql/node-core';
3
- import { StellarBlockWrapper, SubqlDatasource } from '@subql/types-stellar';
4
- import { Sequelize } from '@subql/x-sequelize';
5
- import { SubqueryProject } from '../configure/SubqueryProject';
6
- import { StellarApi } from '../stellar';
7
- import SafeStellarProvider from '../stellar/safe-api';
8
- import { DsProcessorService } from './ds-processor.service';
9
- import { DynamicDsService } from './dynamic-ds.service';
10
- import { UnfinalizedBlocksService } from './unfinalizedBlocks.service';
11
- export declare class ProjectService extends BaseProjectService<ApiService<StellarApi, SafeStellarProvider, StellarBlockWrapper[]>, SubqlDatasource> {
12
- protected packageVersion: any;
13
- constructor(dsProcessorService: DsProcessorService, apiService: ApiService, poiService: PoiService, poiSyncService: PoiSyncService, sequelize: Sequelize, project: SubqueryProject, projectUpgradeService: IProjectUpgradeService<SubqueryProject>, storeService: StoreService, nodeConfig: NodeConfig, dynamicDsService: DynamicDsService, eventEmitter: EventEmitter2, unfinalizedBlockService: UnfinalizedBlocksService);
14
- init(startHeight?: number): Promise<void>;
15
- protected getBlockTimestamp(height: number): Promise<Date>;
16
- protected onProjectChange(project: SubqueryProject): void | Promise<void>;
17
- }
@@ -1,73 +0,0 @@
1
- "use strict";
2
- // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
3
- // SPDX-License-Identifier: GPL-3.0
4
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
6
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
7
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
8
- return c > 3 && r && Object.defineProperty(target, key, r), r;
9
- };
10
- var __metadata = (this && this.__metadata) || function (k, v) {
11
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
12
- };
13
- var __param = (this && this.__param) || function (paramIndex, decorator) {
14
- return function (target, key) { decorator(target, key, paramIndex); }
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.ProjectService = void 0;
18
- const worker_threads_1 = require("worker_threads");
19
- const common_1 = require("@nestjs/common");
20
- const event_emitter_1 = require("@nestjs/event-emitter");
21
- const node_core_1 = require("@subql/node-core");
22
- const x_sequelize_1 = require("@subql/x-sequelize");
23
- const ds_processor_service_1 = require("./ds-processor.service");
24
- const dynamic_ds_service_1 = require("./dynamic-ds.service");
25
- const unfinalizedBlocks_service_1 = require("./unfinalizedBlocks.service");
26
- // eslint-disable-next-line @typescript-eslint/no-var-requires
27
- const { version: packageVersion } = require('../../package.json');
28
- let ProjectService = class ProjectService extends node_core_1.BaseProjectService {
29
- packageVersion = packageVersion;
30
- constructor(dsProcessorService, apiService, poiService, poiSyncService, sequelize, project, projectUpgradeService, storeService, nodeConfig, dynamicDsService, eventEmitter, unfinalizedBlockService) {
31
- super(dsProcessorService, apiService, poiService, poiSyncService, sequelize, project, projectUpgradeService, storeService, nodeConfig, dynamicDsService, eventEmitter, unfinalizedBlockService);
32
- }
33
- async init(startHeight) {
34
- return super.init(startHeight);
35
- }
36
- async getBlockTimestamp(height) {
37
- const block = await this.apiService.unsafeApi.api
38
- .ledgers()
39
- .ledger(height)
40
- .call();
41
- return new Date(block.closed_at); // TODO test and make sure its in MS not S
42
- }
43
- onProjectChange(project) {
44
- // TODO update this when implementing skipBlock feature for Eth
45
- // this.apiService.updateBlockFetching();
46
- }
47
- };
48
- __decorate([
49
- (0, node_core_1.profiler)(),
50
- __metadata("design:type", Function),
51
- __metadata("design:paramtypes", [Number]),
52
- __metadata("design:returntype", Promise)
53
- ], ProjectService.prototype, "init", null);
54
- ProjectService = __decorate([
55
- (0, common_1.Injectable)(),
56
- __param(2, (0, common_1.Inject)(worker_threads_1.isMainThread ? node_core_1.PoiService : 'Null')),
57
- __param(3, (0, common_1.Inject)(worker_threads_1.isMainThread ? node_core_1.PoiSyncService : 'Null')),
58
- __param(4, (0, common_1.Inject)(worker_threads_1.isMainThread ? x_sequelize_1.Sequelize : 'Null')),
59
- __param(5, (0, common_1.Inject)('ISubqueryProject')),
60
- __param(6, (0, common_1.Inject)('IProjectUpgradeService')),
61
- __param(7, (0, common_1.Inject)(worker_threads_1.isMainThread ? node_core_1.StoreService : 'Null')),
62
- __metadata("design:paramtypes", [ds_processor_service_1.DsProcessorService,
63
- node_core_1.ApiService,
64
- node_core_1.PoiService,
65
- node_core_1.PoiSyncService,
66
- x_sequelize_1.Sequelize, Object, Object, node_core_1.StoreService,
67
- node_core_1.NodeConfig,
68
- dynamic_ds_service_1.DynamicDsService,
69
- event_emitter_1.EventEmitter2,
70
- unfinalizedBlocks_service_1.UnfinalizedBlocksService])
71
- ], ProjectService);
72
- exports.ProjectService = ProjectService;
73
- //# sourceMappingURL=project.service.js.map
@@ -1 +0,0 @@
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;AAEtD,gDAS0B;AAE1B,oDAA+C;AAI/C,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;IACW,cAAc,GAAG,cAAc,CAAC;IAE1C,YACE,kBAAsC,EACtC,UAAsB,EACsB,UAAsB,EAElE,cAA8B,EACa,SAAoB,EACnC,OAAwB,EAEpD,qBAA8D,EAChB,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;IACJ,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,CACZ,KAAmD,CAAC,SAAS,CAC/D,CAAC,CAAC,0CAA0C;IAC/C,CAAC;IAES,eAAe,CAAC,OAAwB;QAChD,+DAA+D;QAC/D,yCAAyC;IAC3C,CAAC;CACF,CAAA;AAnBO;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,kBAIH,wBAAY;QAC5D,sBAAU;QACJ,qCAAgB;QACpB,6BAAa;QACF,oDAAwB;GApBxC,cAAc,CA0D1B;AA1DY,wCAAc","sourcesContent":["// Copyright 2020-2025 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 { Horizon } from '@stellar/stellar-sdk';\nimport {\n PoiService,\n PoiSyncService,\n BaseProjectService,\n StoreService,\n NodeConfig,\n ApiService,\n IProjectUpgradeService,\n profiler,\n} from '@subql/node-core';\nimport { StellarBlockWrapper, SubqlDatasource } from '@subql/types-stellar';\nimport { Sequelize } from '@subql/x-sequelize';\nimport { SubqueryProject } 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 SubqlDatasource\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 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(\n (block as unknown as Horizon.ServerApi.LedgerRecord).closed_at,\n ); // 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,9 +0,0 @@
1
- import { ApiService, BaseUnfinalizedBlocksService, Header, NodeConfig, IStoreModelProvider } from '@subql/node-core';
2
- import { BlockWrapper } from '@subql/types-stellar';
3
- export declare class UnfinalizedBlocksService extends BaseUnfinalizedBlocksService<BlockWrapper> {
4
- private readonly apiService;
5
- constructor(apiService: ApiService, nodeConfig: NodeConfig, storeModelProvider: IStoreModelProvider);
6
- protected getFinalizedHead(): Promise<Header>;
7
- protected getHeaderForHash(hash: string): Promise<Header>;
8
- getHeaderForHeight(height: number): Promise<Header>;
9
- }
@@ -1,65 +0,0 @@
1
- "use strict";
2
- // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
3
- // SPDX-License-Identifier: GPL-3.0
4
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
6
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
7
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
8
- return c > 3 && r && Object.defineProperty(target, key, r), r;
9
- };
10
- var __metadata = (this && this.__metadata) || function (k, v) {
11
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
12
- };
13
- var __param = (this && this.__param) || function (paramIndex, decorator) {
14
- return function (target, key) { decorator(target, key, paramIndex); }
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.UnfinalizedBlocksService = void 0;
18
- const common_1 = require("@nestjs/common");
19
- const node_core_1 = require("@subql/node-core");
20
- const utils_stellar_1 = require("../stellar/utils.stellar");
21
- const logger = (0, node_core_1.getLogger)('unfinalized');
22
- let UnfinalizedBlocksService = class UnfinalizedBlocksService extends node_core_1.BaseUnfinalizedBlocksService {
23
- apiService;
24
- constructor(apiService, nodeConfig, storeModelProvider) {
25
- super(nodeConfig, storeModelProvider);
26
- this.apiService = apiService;
27
- }
28
- async getFinalizedHead() {
29
- const finalizedBlock = await this.apiService.api.getFinalizedBlock();
30
- return (0, utils_stellar_1.stellarBlockToHeader)(finalizedBlock);
31
- }
32
- async getHeaderForHash(hash) {
33
- return this.getHeaderForHeight(parseInt(hash, 10));
34
- }
35
- async getHeaderForHeight(height) {
36
- const block = (await this.apiService.api.fetchBlocks([height]))[0];
37
- return (0, utils_stellar_1.stellarBlockToHeader)(block);
38
- }
39
- };
40
- __decorate([
41
- (0, node_core_1.mainThreadOnly)(),
42
- __metadata("design:type", Function),
43
- __metadata("design:paramtypes", []),
44
- __metadata("design:returntype", Promise)
45
- ], UnfinalizedBlocksService.prototype, "getFinalizedHead", null);
46
- __decorate([
47
- (0, node_core_1.mainThreadOnly)(),
48
- __metadata("design:type", Function),
49
- __metadata("design:paramtypes", [String]),
50
- __metadata("design:returntype", Promise)
51
- ], UnfinalizedBlocksService.prototype, "getHeaderForHash", null);
52
- __decorate([
53
- (0, node_core_1.mainThreadOnly)(),
54
- __metadata("design:type", Function),
55
- __metadata("design:paramtypes", [Number]),
56
- __metadata("design:returntype", Promise)
57
- ], UnfinalizedBlocksService.prototype, "getHeaderForHeight", null);
58
- UnfinalizedBlocksService = __decorate([
59
- (0, common_1.Injectable)(),
60
- __param(2, (0, common_1.Inject)('IStoreModelProvider')),
61
- __metadata("design:paramtypes", [node_core_1.ApiService,
62
- node_core_1.NodeConfig, Object])
63
- ], UnfinalizedBlocksService);
64
- exports.UnfinalizedBlocksService = UnfinalizedBlocksService;
65
- //# sourceMappingURL=unfinalizedBlocks.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"unfinalizedBlocks.service.js","sourceRoot":"","sources":["../../src/indexer/unfinalizedBlocks.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,2CAAoD;AACpD,gDAQ0B;AAE1B,4DAAgE;AAEhE,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,aAAa,CAAC,CAAC;AAGjC,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,wCAA0C;IAEnE;IADnB,YACmB,UAAsB,EACvC,UAAsB,EACS,kBAAuC;QAEtE,KAAK,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;QAJrB,eAAU,GAAV,UAAU,CAAY;IAKzC,CAAC;IAGe,AAAN,KAAK,CAAC,gBAAgB;QAC9B,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QACrE,OAAO,IAAA,oCAAoB,EAAC,cAAc,CAAC,CAAC;IAC9C,CAAC;IAGe,AAAN,KAAK,CAAC,gBAAgB,CAAC,IAAY;QAC3C,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;IAGK,AAAN,KAAK,CAAC,kBAAkB,CAAC,MAAc;QACrC,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,OAAO,IAAA,oCAAoB,EAAC,KAAK,CAAC,CAAC;IACrC,CAAC;CACF,CAAA;AAfiB;IADf,IAAA,0BAAc,GAAE;;;;gEAIhB;AAGe;IADf,IAAA,0BAAc,GAAE;;;;gEAGhB;AAGK;IADL,IAAA,0BAAc,GAAE;;;;kEAIhB;AAxBU,wBAAwB;IADpC,IAAA,mBAAU,GAAE;IAKR,WAAA,IAAA,eAAM,EAAC,qBAAqB,CAAC,CAAA;qCAFD,sBAAU;QAC3B,sBAAU;GAHb,wBAAwB,CAyBpC;AAzBY,4DAAwB","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Inject, Injectable } from '@nestjs/common';\nimport {\n ApiService,\n BaseUnfinalizedBlocksService,\n Header,\n NodeConfig,\n IStoreModelProvider,\n getLogger,\n mainThreadOnly,\n} from '@subql/node-core';\nimport { BlockWrapper } from '@subql/types-stellar';\nimport { stellarBlockToHeader } 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 @Inject('IStoreModelProvider') storeModelProvider: IStoreModelProvider,\n ) {\n super(nodeConfig, storeModelProvider);\n }\n\n @mainThreadOnly()\n protected async getFinalizedHead(): Promise<Header> {\n const finalizedBlock = await this.apiService.api.getFinalizedBlock();\n return stellarBlockToHeader(finalizedBlock);\n }\n\n @mainThreadOnly()\n protected async getHeaderForHash(hash: string): Promise<Header> {\n return this.getHeaderForHeight(parseInt(hash, 10));\n }\n\n @mainThreadOnly()\n async getHeaderForHeight(height: number): Promise<Header> {\n const block = (await this.apiService.api.fetchBlocks([height]))[0];\n return stellarBlockToHeader(block);\n }\n}\n"]}