@subql/node-stellar 4.5.1-0 → 4.5.1-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 (90) hide show
  1. package/CHANGELOG.md +5 -0
  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 -17
  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 +1 @@
1
- {"version":3,"file":"fetch.module.js","sourceRoot":"","sources":["../../src/indexer/fetch.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;AAEnC,2CAAwC;AACxC,yDAAsD;AACtD,gDAY0B;AAG1B,wEAAmE;AACnE,uDAG2B;AAC3B,6CAAwD;AACxD,iEAA4D;AAC5D,6DAAwD;AACxD,mDAA+C;AAC/C,uDAAmD;AACnD,uDAAmD;AACnD,2EAAuE;AA0GhE,IAAM,WAAW,GAAjB,MAAM,WAAW;CAAG,CAAA;AAAd,WAAW;IAxGvB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,sBAAU,CAAC;QACrB,SAAS,EAAE;YACT;gBACE,OAAO,EAAE,sBAAU;gBACnB,UAAU,EAAE,KAAK,EACf,OAAwB,EACxB,qBAAkE,EAClE,YAA2B,EAC3B,UAAsB,EACtB,EAAE;oBACF,MAAM,UAAU,GAAG,IAAI,uCAAiB,CACtC,OAAO,EACP,qBAAqB,EACrB,YAAY,EACZ,UAAU,CACX,CAAC;oBACF,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;oBACxB,OAAO,UAAU,CAAC;gBACpB,CAAC;gBACD,MAAM,EAAE;oBACN,kBAAkB;oBAClB,iCAAqB;oBACrB,6BAAa;oBACb,sBAAU;iBACX;aACF;YACD,gCAAc;YACd;gBACE,OAAO,EAAE,kBAAkB;gBAC3B,UAAU,EAAE,CACV,UAAsB,EACtB,YAA2B,EAC3B,cAA8B,EAC9B,qBAA6C,EAC7C,UAAsB,EACtB,cAA8B,EAC9B,YAAkC,EAClC,YAA0B,EAC1B,kBAAuC,EACvC,cAA8B,EAC9B,OAAwB,EACxB,gBAAkC,EAClC,iBAA2C,EAC3C,mBAAqE,EACrE,cAA+B,EAC/B,EAAE,CACF,UAAU,CAAC,OAAO;oBAChB,CAAC,CAAC,IAAI,8CAA4B,CAC9B,UAAU,EACV,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,OAAO,EACP,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,CACf;oBACH,CAAC,CAAC,IAAI,wCAAsB,CACxB,UAAU,EACV,UAAU,EACV,cAAc,EACd,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,OAAO,CACR;gBACP,MAAM,EAAE;oBACN,sBAAU;oBACV,6BAAa;oBACb,iBAAiB;oBACjB,wBAAwB;oBACxB,sBAAU;oBACV,gCAAc;oBACd,gCAAoB;oBACpB,wBAAY;oBACZ,qBAAqB;oBACrB,0BAAc;oBACd,kBAAkB;oBAClB,qCAAgB;oBAChB,oDAAwB;oBACxB,sCAA0B;oBAC1B,0BAAc;iBACf;aACF;YACD,4BAAY;YACZ,qCAAwB;YACxB,yCAAkB;YAClB,qCAAgB;YAChB;gBACE,QAAQ,EAAE,gCAAc;gBACxB,OAAO,EAAE,iBAAiB;aAC3B;YACD,oDAAwB;SACzB;KACF,CAAC;GACW,WAAW,CAAG;AAAd,kCAAW","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Module } from '@nestjs/common';\nimport { EventEmitter2 } from '@nestjs/event-emitter';\nimport {\n StoreService,\n PoiSyncService,\n ApiService,\n ConnectionPoolService,\n IStoreModelProvider,\n ConnectionPoolStateManager,\n NodeConfig,\n IProjectUpgradeService,\n InMemoryCacheService,\n MonitorService,\n CoreModule,\n} from '@subql/node-core';\nimport { SubqueryProject } from '../configure/SubqueryProject';\nimport { StellarApiConnection } from '../stellar/api.connection';\nimport { StellarApiService } from '../stellar/api.service.stellar';\nimport {\n BlockDispatcherService,\n WorkerBlockDispatcherService,\n} from './blockDispatcher';\nimport { StellarDictionaryService } from './dictionary';\nimport { DsProcessorService } from './ds-processor.service';\nimport { DynamicDsService } from './dynamic-ds.service';\nimport { FetchService } from './fetch.service';\nimport { IndexerManager } from './indexer.manager';\nimport { ProjectService } from './project.service';\nimport { UnfinalizedBlocksService } from './unfinalizedBlocks.service';\n\n@Module({\n imports: [CoreModule],\n providers: [\n {\n provide: ApiService,\n useFactory: async (\n project: SubqueryProject,\n connectionPoolService: ConnectionPoolService<StellarApiConnection>,\n eventEmitter: EventEmitter2,\n nodeConfig: NodeConfig,\n ) => {\n const apiService = new StellarApiService(\n project,\n connectionPoolService,\n eventEmitter,\n nodeConfig,\n );\n await apiService.init();\n return apiService;\n },\n inject: [\n 'ISubqueryProject',\n ConnectionPoolService,\n EventEmitter2,\n NodeConfig,\n ],\n },\n IndexerManager,\n {\n provide: 'IBlockDispatcher',\n useFactory: (\n nodeConfig: NodeConfig,\n eventEmitter: EventEmitter2,\n projectService: ProjectService,\n projectUpgradeService: IProjectUpgradeService,\n apiService: ApiService,\n indexerManager: IndexerManager,\n cacheService: InMemoryCacheService,\n storeService: StoreService,\n storeModelProvider: IStoreModelProvider,\n poiSyncService: PoiSyncService,\n project: SubqueryProject,\n dynamicDsService: DynamicDsService,\n unfinalizedBlocks: UnfinalizedBlocksService,\n connectionPoolState: ConnectionPoolStateManager<StellarApiConnection>,\n monitorService?: MonitorService,\n ) =>\n nodeConfig.workers\n ? new WorkerBlockDispatcherService(\n nodeConfig,\n eventEmitter,\n projectService,\n projectUpgradeService,\n cacheService,\n storeService,\n storeModelProvider,\n poiSyncService,\n project,\n dynamicDsService,\n unfinalizedBlocks,\n connectionPoolState,\n monitorService,\n )\n : new BlockDispatcherService(\n apiService,\n nodeConfig,\n indexerManager,\n eventEmitter,\n projectService,\n projectUpgradeService,\n storeService,\n storeModelProvider,\n poiSyncService,\n project,\n ),\n inject: [\n NodeConfig,\n EventEmitter2,\n 'IProjectService',\n 'IProjectUpgradeService',\n ApiService,\n IndexerManager,\n InMemoryCacheService,\n StoreService,\n 'IStoreModelProvider',\n PoiSyncService,\n 'ISubqueryProject',\n DynamicDsService,\n UnfinalizedBlocksService,\n ConnectionPoolStateManager,\n MonitorService,\n ],\n },\n FetchService,\n StellarDictionaryService,\n DsProcessorService,\n DynamicDsService,\n {\n useClass: ProjectService,\n provide: 'IProjectService',\n },\n UnfinalizedBlocksService,\n ],\n})\nexport class FetchModule {}\n"]}
1
+ {"version":3,"file":"fetch.module.js","sourceRoot":"","sources":["../../src/indexer/fetch.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;AAEnC,0DAA6B;AAC7B,2CAAwC;AACxC,yDAAsD;AACtD,gDAgB0B;AAC1B,8DAA0D;AAC1D,wEAAmE;AACnE,6CAAwD;AACxD,uDAAmD;AA6D5C,IAAM,WAAW,GAAjB,MAAM,WAAW;CAAG,CAAA;AAAd,kCAAW;sBAAX,WAAW;IA3DvB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,sBAAU,CAAC;QACrB,SAAS,EAAE;YACT;gBACE,OAAO,EAAE,YAAY;gBACrB,UAAU,EAAE,uCAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,uCAAiB,CAAC;gBAC5D,MAAM,EAAE;oBACN,kBAAkB;oBAClB,iCAAqB;oBACrB,6BAAa;oBACb,sBAAU;iBACX;aACF;YACD;gBACE,OAAO,EAAE,oBAAoB;gBAC7B,QAAQ,EAAE,sCAAiB;aAC5B;YACD,gCAAc;YACd;gBACE,OAAO,EAAE,kBAAkB;gBAC3B,UAAU,EAAE,IAAA,kCAAsB,EAChC,mBAAI,CAAC,OAAO,CAAC,SAAS,EAAE,qCAAqC,CAAC,EAC9D,EAAE,CACH;gBACD,MAAM,EAAE;oBACN,sBAAU;oBACV,6BAAa;oBACb,iBAAiB;oBACjB,wBAAwB;oBACxB,gCAAoB;oBACpB,wBAAY;oBACZ,qBAAqB;oBACrB,0BAAc;oBACd,kBAAkB;oBAClB,4BAAgB;oBAChB,2BAA2B;oBAC3B,sCAA0B;oBAC1B,oBAAoB;oBACpB,gCAAc;oBACd,0BAAc;iBACf;aACF;YACD,wBAAY;YACZ;gBACE,OAAO,EAAE,6BAAiB;gBAC1B,QAAQ,EAAE,qCAAwB;aACnC;YACD,8BAAkB;YAClB,4BAAgB;YAChB;gBACE,QAAQ,EAAE,0BAAc;gBACxB,OAAO,EAAE,iBAAiB;aAC3B;YACD;gBACE,OAAO,EAAE,2BAA2B;gBACpC,QAAQ,EAAE,oCAAwB;aACnC;SACF;KACF,CAAC;GACW,WAAW,CAAG","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport path from 'node:path';\nimport { Module } from '@nestjs/common';\nimport { EventEmitter2 } from '@nestjs/event-emitter';\nimport {\n StoreService,\n PoiSyncService,\n ConnectionPoolService,\n ConnectionPoolStateManager,\n NodeConfig,\n InMemoryCacheService,\n MonitorService,\n CoreModule,\n blockDispatcherFactory,\n DictionaryService,\n DynamicDsService,\n FetchService,\n DsProcessorService,\n ProjectService,\n UnfinalizedBlocksService,\n} from '@subql/node-core';\nimport { BlockchainService } from '../blockchain.service';\nimport { StellarApiService } from '../stellar/api.service.stellar';\nimport { StellarDictionaryService } from './dictionary';\nimport { IndexerManager } from './indexer.manager';\n\n@Module({\n imports: [CoreModule],\n providers: [\n {\n provide: 'APIService',\n useFactory: StellarApiService.create.bind(StellarApiService),\n inject: [\n 'ISubqueryProject',\n ConnectionPoolService,\n EventEmitter2,\n NodeConfig,\n ],\n },\n {\n provide: 'IBlockchainService',\n useClass: BlockchainService,\n },\n IndexerManager,\n {\n provide: 'IBlockDispatcher',\n useFactory: blockDispatcherFactory(\n path.resolve(__dirname, '../../dist/indexer/worker/worker.js'),\n [],\n ),\n inject: [\n NodeConfig,\n EventEmitter2,\n 'IProjectService',\n 'IProjectUpgradeService',\n InMemoryCacheService,\n StoreService,\n 'IStoreModelProvider',\n PoiSyncService,\n 'ISubqueryProject',\n DynamicDsService,\n 'IUnfinalizedBlocksService',\n ConnectionPoolStateManager,\n 'IBlockchainService',\n IndexerManager,\n MonitorService,\n ],\n },\n FetchService,\n {\n provide: DictionaryService,\n useClass: StellarDictionaryService,\n },\n DsProcessorService,\n DynamicDsService,\n {\n useClass: ProjectService,\n provide: 'IProjectService',\n },\n {\n provide: 'IUnfinalizedBlocksService',\n useClass: UnfinalizedBlocksService,\n },\n ],\n})\nexport class FetchModule {}\n"]}
@@ -1,18 +1,13 @@
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, IBlock, SandboxService } from '@subql/node-core';
2
+ import { NodeConfig, IndexerSandbox, ProcessBlockResponse, BaseIndexerManager, ApiService, IBlock, SandboxService, DsProcessorService, DynamicDsService, UnfinalizedBlocksService } from '@subql/node-core';
3
3
  import { StellarBlockWrapper, SubqlDatasource, StellarTransaction, StellarOperation, StellarEffect, StellarBlock, StellarBlockFilter, StellarTransactionFilter, StellarOperationFilter, StellarEffectFilter, SorobanEvent, SorobanEventFilter } from '@subql/types-stellar';
4
+ import { BlockchainService } from '../blockchain.service';
4
5
  import { StellarApi } from '../stellar';
5
6
  import SafeStellarProvider from '../stellar/safe-api';
6
- import { DsProcessorService } from './ds-processor.service';
7
- import { DynamicDsService } from './dynamic-ds.service';
8
- import { ProjectService } from './project.service';
9
- import { UnfinalizedBlocksService } from './unfinalizedBlocks.service';
10
7
  export declare class IndexerManager extends BaseIndexerManager<StellarApi, SafeStellarProvider | null, StellarBlockWrapper, ApiService, SubqlStellarDataSource, SubqlStellarCustomDataSource, typeof FilterTypeMap, typeof ProcessorTypeMap, StellarRuntimeHandlerInputMap> {
11
- private projectService;
12
8
  protected isRuntimeDs: typeof isRuntimeDs;
13
9
  protected isCustomDs: typeof isCustomDs;
14
- constructor(apiService: ApiService, nodeConfig: NodeConfig, sandboxService: SandboxService<SafeStellarProvider | null, StellarApi>, dsProcessorService: DsProcessorService, dynamicDsService: DynamicDsService, unfinalizedBlocksService: UnfinalizedBlocksService, projectService: ProjectService);
15
- start(): Promise<void>;
10
+ constructor(apiService: ApiService, nodeConfig: NodeConfig, sandboxService: SandboxService<SafeStellarProvider | null, StellarApi>, dsProcessorService: DsProcessorService, dynamicDsService: DynamicDsService<SubqlStellarDataSource>, unfinalizedBlocksService: UnfinalizedBlocksService, blockchainService: BlockchainService);
16
11
  indexBlock(block: IBlock<StellarBlockWrapper>, dataSources: SubqlStellarDataSource[]): Promise<ProcessBlockResponse>;
17
12
  private getApi;
18
13
  protected indexBlockData({ block, transactions }: StellarBlockWrapper, dataSources: SubqlDatasource[], getVM: (d: SubqlDatasource) => Promise<IndexerSandbox>): Promise<void>;
@@ -18,23 +18,14 @@ exports.IndexerManager = void 0;
18
18
  const common_1 = require("@nestjs/common");
19
19
  const common_stellar_1 = require("@subql/common-stellar");
20
20
  const node_core_1 = require("@subql/node-core");
21
+ const blockchain_service_1 = require("../blockchain.service");
21
22
  const block_stellar_1 = require("../stellar/block.stellar");
22
- const ds_processor_service_1 = require("./ds-processor.service");
23
- const dynamic_ds_service_1 = require("./dynamic-ds.service");
24
- const project_service_1 = require("./project.service");
25
- const unfinalizedBlocks_service_1 = require("./unfinalizedBlocks.service");
26
23
  const logger = (0, node_core_1.getLogger)('indexer');
27
24
  let IndexerManager = class IndexerManager extends node_core_1.BaseIndexerManager {
28
- projectService;
29
25
  isRuntimeDs = common_stellar_1.isRuntimeDs;
30
26
  isCustomDs = common_stellar_1.isCustomDs;
31
- constructor(apiService, nodeConfig, sandboxService, dsProcessorService, dynamicDsService, unfinalizedBlocksService, projectService) {
32
- super(apiService, nodeConfig, sandboxService, dsProcessorService, dynamicDsService, unfinalizedBlocksService, FilterTypeMap, ProcessorTypeMap);
33
- this.projectService = projectService;
34
- }
35
- async start() {
36
- await this.projectService.init();
37
- logger.info('indexer manager started');
27
+ constructor(apiService, nodeConfig, sandboxService, dsProcessorService, dynamicDsService, unfinalizedBlocksService, blockchainService) {
28
+ super(apiService, nodeConfig, sandboxService, dsProcessorService, dynamicDsService, unfinalizedBlocksService, FilterTypeMap, ProcessorTypeMap, blockchainService);
38
29
  }
39
30
  async indexBlock(block, dataSources) {
40
31
  return super.internalIndexBlock(block, dataSources, () => this.getApi(block.block));
@@ -91,24 +82,26 @@ let IndexerManager = class IndexerManager extends node_core_1.BaseIndexerManager
91
82
  return Promise.resolve(data);
92
83
  }
93
84
  };
85
+ exports.IndexerManager = IndexerManager;
94
86
  __decorate([
95
87
  (0, node_core_1.profiler)(),
96
88
  __metadata("design:type", Function),
97
89
  __metadata("design:paramtypes", [Object, Array]),
98
90
  __metadata("design:returntype", Promise)
99
91
  ], IndexerManager.prototype, "indexBlock", null);
100
- IndexerManager = __decorate([
92
+ exports.IndexerManager = IndexerManager = __decorate([
101
93
  (0, common_1.Injectable)(),
102
- __param(6, (0, common_1.Inject)('IProjectService')),
94
+ __param(0, (0, common_1.Inject)('APIService')),
95
+ __param(5, (0, common_1.Inject)('IUnfinalizedBlocksService')),
96
+ __param(6, (0, common_1.Inject)('IBlockchainService')),
103
97
  __metadata("design:paramtypes", [node_core_1.ApiService,
104
98
  node_core_1.NodeConfig,
105
99
  node_core_1.SandboxService,
106
- ds_processor_service_1.DsProcessorService,
107
- dynamic_ds_service_1.DynamicDsService,
108
- unfinalizedBlocks_service_1.UnfinalizedBlocksService,
109
- project_service_1.ProjectService])
100
+ node_core_1.DsProcessorService,
101
+ node_core_1.DynamicDsService,
102
+ node_core_1.UnfinalizedBlocksService,
103
+ blockchain_service_1.BlockchainService])
110
104
  ], IndexerManager);
111
- exports.IndexerManager = IndexerManager;
112
105
  const ProcessorTypeMap = {
113
106
  [common_stellar_1.StellarHandlerKind.Block]: common_stellar_1.isBlockHandlerProcessor,
114
107
  [common_stellar_1.StellarHandlerKind.Transaction]: common_stellar_1.isTransactionHandlerProcessor,
@@ -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-2025 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 SandboxService,\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 { StellarApi } from '../stellar';\nimport { StellarBlockWrapped } from '../stellar/block.stellar';\nimport SafeStellarProvider from '../stellar/safe-api';\nimport { DsProcessorService } from './ds-processor.service';\nimport { DynamicDsService } from './dynamic-ds.service';\nimport { ProjectService } from './project.service';\nimport { UnfinalizedBlocksService } from './unfinalizedBlocks.service';\n\nconst logger = getLogger('indexer');\n\n@Injectable()\nexport class IndexerManager extends BaseIndexerManager<\n StellarApi,\n SafeStellarProvider | null,\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\n constructor(\n apiService: ApiService,\n nodeConfig: NodeConfig,\n sandboxService: SandboxService<SafeStellarProvider | null, StellarApi>,\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 // eslint-disable-next-line @typescript-eslint/require-await\n private async getApi(\n block: StellarBlockWrapper,\n ): Promise<SafeStellarProvider | null> {\n // return this.apiService.safeApi(block.block.sequence);\n return null;\n }\n\n protected async indexBlockData(\n { block, transactions }: StellarBlockWrapper,\n dataSources: SubqlDatasource[],\n getVM: (d: SubqlDatasource) => 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: SubqlDatasource[],\n getVM: (d: SubqlDatasource) => 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: SubqlDatasource[],\n getVM: (d: SubqlDatasource) => 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: SubqlDatasource[],\n getVM: (d: SubqlDatasource) => 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: SubqlDatasource[],\n getVM: (d: SubqlDatasource) => 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: SubqlDatasource[],\n getVM: (d: SubqlDatasource) => 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-2025 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 SandboxService,\n DsProcessorService,\n DynamicDsService,\n UnfinalizedBlocksService,\n ProjectService,\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 { BlockchainService } from '../blockchain.service';\nimport { StellarApi } from '../stellar';\nimport { StellarBlockWrapped } from '../stellar/block.stellar';\nimport SafeStellarProvider from '../stellar/safe-api';\n\nconst logger = getLogger('indexer');\n\n@Injectable()\nexport class IndexerManager extends BaseIndexerManager<\n StellarApi,\n SafeStellarProvider | null,\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\n constructor(\n @Inject('APIService') apiService: ApiService,\n nodeConfig: NodeConfig,\n sandboxService: SandboxService<SafeStellarProvider | null, StellarApi>,\n dsProcessorService: DsProcessorService,\n dynamicDsService: DynamicDsService<SubqlStellarDataSource>,\n @Inject('IUnfinalizedBlocksService')\n unfinalizedBlocksService: UnfinalizedBlocksService,\n @Inject('IBlockchainService') blockchainService: BlockchainService,\n ) {\n super(\n apiService,\n nodeConfig,\n sandboxService,\n dsProcessorService,\n dynamicDsService,\n unfinalizedBlocksService,\n FilterTypeMap,\n ProcessorTypeMap,\n blockchainService,\n );\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 // eslint-disable-next-line @typescript-eslint/require-await\n private async getApi(\n block: StellarBlockWrapper,\n ): Promise<SafeStellarProvider | null> {\n // return this.apiService.safeApi(block.block.sequence);\n return null;\n }\n\n protected async indexBlockData(\n { block, transactions }: StellarBlockWrapper,\n dataSources: SubqlDatasource[],\n getVM: (d: SubqlDatasource) => 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: SubqlDatasource[],\n getVM: (d: SubqlDatasource) => 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: SubqlDatasource[],\n getVM: (d: SubqlDatasource) => 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: SubqlDatasource[],\n getVM: (d: SubqlDatasource) => 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: SubqlDatasource[],\n getVM: (d: SubqlDatasource) => 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: SubqlDatasource[],\n getVM: (d: SubqlDatasource) => 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"]}
@@ -2,11 +2,10 @@
2
2
  // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
3
3
  // SPDX-License-Identifier: GPL-3.0
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.getBlockSize = void 0;
5
+ exports.getBlockSize = getBlockSize;
6
6
  function getBlockSize(block) {
7
7
  const { failed_transaction_count, operation_count, successful_transaction_count, tx_set_operation_count, } = block.block;
8
8
  return ((tx_set_operation_count ??
9
9
  successful_transaction_count + failed_transaction_count) + operation_count);
10
10
  }
11
- exports.getBlockSize = getBlockSize;
12
11
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/indexer/types.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;AAMnC,SAAgB,YAAY,CAAC,KAA0B;IACrD,MAAM,EACJ,wBAAwB,EACxB,eAAe,EACf,4BAA4B,EAC5B,sBAAsB,GACvB,GAAG,KAAK,CAAC,KAAK,CAAC;IAChB,OAAO,CACL,CAAC,sBAAsB;QACrB,4BAA4B,GAAG,wBAAwB,CAAC,GAAG,eAAe,CAC7E,CAAC;AACJ,CAAC;AAXD,oCAWC","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { StellarBlockWrapper } from '@subql/types-stellar';\n\nexport type BestBlocks = Record<number, string>;\n\nexport function getBlockSize(block: StellarBlockWrapper): number {\n const {\n failed_transaction_count,\n operation_count,\n successful_transaction_count,\n tx_set_operation_count,\n } = block.block;\n return (\n (tx_set_operation_count ??\n successful_transaction_count + failed_transaction_count) + operation_count\n );\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/indexer/types.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;AAMnC,oCAWC;AAXD,SAAgB,YAAY,CAAC,KAA0B;IACrD,MAAM,EACJ,wBAAwB,EACxB,eAAe,EACf,4BAA4B,EAC5B,sBAAsB,GACvB,GAAG,KAAK,CAAC,KAAK,CAAC;IAChB,OAAO,CACL,CAAC,sBAAsB;QACrB,4BAA4B,GAAG,wBAAwB,CAAC,GAAG,eAAe,CAC7E,CAAC;AACJ,CAAC","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { StellarBlockWrapper } from '@subql/types-stellar';\n\nexport type BestBlocks = Record<number, string>;\n\nexport function getBlockSize(block: StellarBlockWrapper): number {\n const {\n failed_transaction_count,\n operation_count,\n successful_transaction_count,\n tx_set_operation_count,\n } = block.block;\n return (\n (tx_set_operation_count ??\n successful_transaction_count + failed_transaction_count) + operation_count\n );\n}\n"]}
@@ -9,31 +9,25 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
9
9
  };
10
10
  Object.defineProperty(exports, "__esModule", { value: true });
11
11
  exports.WorkerFetchModule = void 0;
12
- const worker_threads_1 = require("worker_threads");
13
12
  const common_1 = require("@nestjs/common");
14
13
  const event_emitter_1 = require("@nestjs/event-emitter");
15
14
  const node_core_1 = require("@subql/node-core");
15
+ const blockchain_service_1 = require("../../blockchain.service");
16
16
  const stellar_1 = require("../../stellar");
17
- const ds_processor_service_1 = require("../ds-processor.service");
18
- const dynamic_ds_service_1 = require("../dynamic-ds.service");
19
17
  const indexer_manager_1 = require("../indexer.manager");
20
- const project_service_1 = require("../project.service");
21
- const unfinalizedBlocks_service_1 = require("../unfinalizedBlocks.service");
22
18
  const worker_service_1 = require("./worker.service");
23
19
  let WorkerFetchModule = class WorkerFetchModule {
24
20
  };
25
- WorkerFetchModule = __decorate([
21
+ exports.WorkerFetchModule = WorkerFetchModule;
22
+ exports.WorkerFetchModule = WorkerFetchModule = __decorate([
26
23
  (0, common_1.Module)({
27
24
  imports: [node_core_1.WorkerCoreModule],
28
25
  providers: [
26
+ node_core_1.DsProcessorService,
29
27
  indexer_manager_1.IndexerManager,
30
28
  {
31
- provide: node_core_1.ApiService,
32
- useFactory: async (project, connectionPoolService, eventEmitter, nodeConfig) => {
33
- const apiService = new stellar_1.StellarApiService(project, connectionPoolService, eventEmitter, nodeConfig);
34
- await apiService.init();
35
- return apiService;
36
- },
29
+ provide: 'APIService',
30
+ useFactory: stellar_1.StellarApiService.create.bind(stellar_1.StellarApiService),
37
31
  inject: [
38
32
  'ISubqueryProject',
39
33
  node_core_1.ConnectionPoolService,
@@ -41,32 +35,16 @@ WorkerFetchModule = __decorate([
41
35
  node_core_1.NodeConfig,
42
36
  ],
43
37
  },
44
- ds_processor_service_1.DsProcessorService,
45
- {
46
- provide: dynamic_ds_service_1.DynamicDsService,
47
- useFactory: () => {
48
- if (worker_threads_1.isMainThread) {
49
- throw new Error('Expected to be worker thread');
50
- }
51
- return new node_core_1.WorkerDynamicDsService(global.host);
52
- },
53
- },
54
38
  {
55
39
  provide: 'IProjectService',
56
- useClass: project_service_1.ProjectService,
40
+ useClass: node_core_1.ProjectService,
57
41
  },
58
- worker_service_1.WorkerService,
59
42
  {
60
- provide: unfinalizedBlocks_service_1.UnfinalizedBlocksService,
61
- useFactory: () => {
62
- if (worker_threads_1.isMainThread) {
63
- throw new Error('Expected to be worker thread');
64
- }
65
- return new node_core_1.WorkerUnfinalizedBlocksService(global.host);
66
- },
43
+ provide: 'IBlockchainService',
44
+ useClass: blockchain_service_1.BlockchainService,
67
45
  },
46
+ worker_service_1.WorkerService,
68
47
  ],
69
48
  })
70
49
  ], WorkerFetchModule);
71
- exports.WorkerFetchModule = WorkerFetchModule;
72
50
  //# sourceMappingURL=worker-fetch.module.js.map
@@ -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,gDAO0B;AAE1B,2CAAkD;AAElD,kEAA6D;AAC7D,8DAAyD;AACzD,wDAAoD;AACpD,wDAAoD;AACpD,4EAAwE;AACxE,qDAAiD;AAwD1C,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;CAAG,CAAA;AAApB,iBAAiB;IAtD7B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,4BAAgB,CAAC;QAC3B,SAAS,EAAE;YACT,gCAAc;YACd;gBACE,OAAO,EAAE,sBAAU;gBACnB,UAAU,EAAE,KAAK,EACf,OAAwB,EACxB,qBAAkE,EAClE,YAA2B,EAC3B,UAAsB,EACtB,EAAE;oBACF,MAAM,UAAU,GAAG,IAAI,2BAAiB,CACtC,OAAO,EACP,qBAAqB,EACrB,YAAY,EACZ,UAAU,CACX,CAAC;oBACF,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;oBACxB,OAAO,UAAU,CAAC;gBACpB,CAAC;gBACD,MAAM,EAAE;oBACN,kBAAkB;oBAClB,iCAAqB;oBACrB,6BAAa;oBACb,sBAAU;iBACX;aACF;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,0CAA8B,CAAE,MAAc,CAAC,IAAI,CAAC,CAAC;gBAClE,CAAC;aACF;SACF;KACF,CAAC;GACW,iBAAiB,CAAG;AAApB,8CAAiB","sourcesContent":["// Copyright 2020-2025 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 WorkerCoreModule,\n ConnectionPoolService,\n WorkerDynamicDsService,\n NodeConfig,\n WorkerUnfinalizedBlocksService,\n ApiService,\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 { UnfinalizedBlocksService } from '../unfinalizedBlocks.service';\nimport { WorkerService } from './worker.service';\n\n@Module({\n imports: [WorkerCoreModule],\n providers: [\n IndexerManager,\n {\n provide: ApiService,\n useFactory: async (\n project: SubqueryProject,\n connectionPoolService: ConnectionPoolService<StellarApiConnection>,\n eventEmitter: EventEmitter2,\n nodeConfig: NodeConfig,\n ) => {\n const apiService = new StellarApiService(\n project,\n connectionPoolService,\n eventEmitter,\n nodeConfig,\n );\n await apiService.init();\n return apiService;\n },\n inject: [\n 'ISubqueryProject',\n ConnectionPoolService,\n EventEmitter2,\n NodeConfig,\n ],\n },\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})\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,2CAAwC;AACxC,yDAAsD;AACtD,gDAM0B;AAC1B,iEAA6D;AAC7D,2CAAkD;AAClD,wDAAoD;AACpD,qDAAiD;AA4B1C,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;CAAG,CAAA;AAApB,8CAAiB;4BAAjB,iBAAiB;IA1B7B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,4BAAgB,CAAC;QAC3B,SAAS,EAAE;YACT,8BAAkB;YAClB,gCAAc;YACd;gBACE,OAAO,EAAE,YAAY;gBACrB,UAAU,EAAE,2BAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,2BAAiB,CAAC;gBAC5D,MAAM,EAAE;oBACN,kBAAkB;oBAClB,iCAAqB;oBACrB,6BAAa;oBACb,sBAAU;iBACX;aACF;YACD;gBACE,OAAO,EAAE,iBAAiB;gBAC1B,QAAQ,EAAE,0BAAc;aACzB;YACD;gBACE,OAAO,EAAE,oBAAoB;gBAC7B,QAAQ,EAAE,sCAAiB;aAC5B;YACD,8BAAa;SACd;KACF,CAAC;GACW,iBAAiB,CAAG","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Module } from '@nestjs/common';\nimport { EventEmitter2 } from '@nestjs/event-emitter';\nimport {\n WorkerCoreModule,\n ConnectionPoolService,\n NodeConfig,\n DsProcessorService,\n ProjectService,\n} from '@subql/node-core';\nimport { BlockchainService } from '../../blockchain.service';\nimport { StellarApiService } from '../../stellar';\nimport { IndexerManager } from '../indexer.manager';\nimport { WorkerService } from './worker.service';\n\n@Module({\n imports: [WorkerCoreModule],\n providers: [\n DsProcessorService,\n IndexerManager,\n {\n provide: 'APIService',\n useFactory: StellarApiService.create.bind(StellarApiService),\n inject: [\n 'ISubqueryProject',\n ConnectionPoolService,\n EventEmitter2,\n NodeConfig,\n ],\n },\n {\n provide: 'IProjectService',\n useClass: ProjectService,\n },\n {\n provide: 'IBlockchainService',\n useClass: BlockchainService,\n },\n WorkerService,\n ],\n})\nexport class WorkerFetchModule {}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/indexer/worker/worker.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;AAEnC,iEAAiE;AACjE,kDAAkD;AAClD,wCAAwC;AACxC,oDAAqD;AACrD,wCAAwC;AACxC,uCAA2C;AAE3C,MAAM,EAAE,IAAI,EAAE,GAAG,oBAAY,CAAC;AAE9B,IAAA,mBAAU,EACR,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,SAA+B,EACpC,IAAI,CAAC,QAA8B,CACpC,CAAC;AAEF,6DAA+C;AAC/C,uCAA2C;AAC3C,gDAM0B;AAE1B,mDAA+C;AAC/C,qDAAiD;AAEjD,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,WAAW,8BAAQ,EAAE,CAAC,CAAC;AAEhD,KAAK,UAAU,UAAU,CAAC,WAAoB;IAC5C,IAAI;QACF,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,4BAAY,EAAE;YACjD,MAAM,EAAE,IAAI,sBAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,0EAA0E;SACjH,CAAC,CAAC;QAEH,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAEjB,MAAM,cAAc,GAAmB,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAClE,uGAAuG;QACvG,MAAM,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEvC,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,8BAAa,CAAC,CAAC;QAE7C,IAAA,8BAAkB,EAAC,GAAG,EAAE,aAAa,CAAC,CAAC;KACxC;IAAC,OAAO,CAAM,EAAE;QACf,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAC;QAC1C,MAAM,CAAC,CAAC;KACT;AACH,CAAC;AAGA,MAAc,CAAC,IAAI,GAAG,IAAA,4BAAgB,EAAC,EAAE,EAAE;IAC1C,UAAU;CACX,CAAC,CAAC","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\n// initlogger and yargs must be imported before all other imports\n// making sure logger is defined before its called\n// eslint-disable-next-line import/order\nimport { initLogger } from '@subql/node-core/logger';\n// eslint-disable-next-line import/order\nimport { yargsOptions } from '../../yargs';\n\nconst { argv } = yargsOptions;\n\ninitLogger(\n argv.debug,\n argv.outputFmt as 'json' | 'colored',\n argv.logLevel as string | undefined,\n);\n\nimport { threadId } from 'node:worker_threads';\nimport { NestFactory } from '@nestjs/core';\nimport {\n getLogger,\n NestLogger,\n initWorkerServices,\n IBaseIndexerWorker,\n createWorkerHost,\n} from '@subql/node-core';\nimport { ProjectService } from '../project.service';\nimport { WorkerModule } from './worker.module';\nimport { WorkerService } from './worker.service';\n\nconst logger = getLogger(`worker #${threadId}`);\n\nasync function initWorker(startHeight?: number): Promise<void> {\n try {\n const app = await NestFactory.create(WorkerModule, {\n logger: new NestLogger(!!argv.debug), // TIP: If the worker is crashing comment out this line for better logging\n });\n\n await app.init();\n\n const projectService: ProjectService = app.get('IProjectService');\n // Initialise async services, we do this here rather than in factories so we can capture one off events\n await projectService.init(startHeight);\n\n const workerService = app.get(WorkerService);\n\n initWorkerServices(app, workerService);\n } catch (e: any) {\n console.log('Failed to start worker', e);\n logger.error(e, 'Failed to start worker');\n throw e;\n }\n}\nexport type IIndexerWorker = IBaseIndexerWorker;\n\n(global as any).host = createWorkerHost([], {\n initWorker,\n});\n"]}
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/indexer/worker/worker.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;AAEnC,iEAAiE;AACjE,kDAAkD;AAClD,wCAAwC;AACxC,oDAAqD;AACrD,wCAAwC;AACxC,uCAA2C;AAE3C,MAAM,EAAE,IAAI,EAAE,GAAG,oBAAY,CAAC;AAE9B,IAAA,mBAAU,EACR,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,SAA+B,EACpC,IAAI,CAAC,QAA8B,CACpC,CAAC;AAEF,6DAA+C;AAC/C,uCAA2C;AAC3C,gDAO0B;AAC1B,mDAA+C;AAC/C,qDAAiD;AAEjD,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,WAAW,8BAAQ,EAAE,CAAC,CAAC;AAEhD,KAAK,UAAU,UAAU,CAAC,WAAoB;IAC5C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,4BAAY,EAAE;YACjD,MAAM,EAAE,IAAI,sBAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,0EAA0E;SACjH,CAAC,CAAC;QAEH,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAEjB,MAAM,cAAc,GAAmB,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAClE,uGAAuG;QACvG,MAAM,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEvC,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,8BAAa,CAAC,CAAC;QAE7C,IAAA,8BAAkB,EAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAC;QAC1C,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC;AAGA,MAAc,CAAC,IAAI,GAAG,IAAA,4BAAgB,EAAC,EAAE,EAAE;IAC1C,UAAU;CACX,CAAC,CAAC","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\n// initlogger and yargs must be imported before all other imports\n// making sure logger is defined before its called\n// eslint-disable-next-line import/order\nimport { initLogger } from '@subql/node-core/logger';\n// eslint-disable-next-line import/order\nimport { yargsOptions } from '../../yargs';\n\nconst { argv } = yargsOptions;\n\ninitLogger(\n argv.debug,\n argv.outputFmt as 'json' | 'colored',\n argv.logLevel as string | undefined,\n);\n\nimport { threadId } from 'node:worker_threads';\nimport { NestFactory } from '@nestjs/core';\nimport {\n getLogger,\n NestLogger,\n initWorkerServices,\n IBaseIndexerWorker,\n createWorkerHost,\n ProjectService,\n} from '@subql/node-core';\nimport { WorkerModule } from './worker.module';\nimport { WorkerService } from './worker.service';\n\nconst logger = getLogger(`worker #${threadId}`);\n\nasync function initWorker(startHeight?: number): Promise<void> {\n try {\n const app = await NestFactory.create(WorkerModule, {\n logger: new NestLogger(!!argv.debug), // TIP: If the worker is crashing comment out this line for better logging\n });\n\n await app.init();\n\n const projectService: ProjectService = app.get('IProjectService');\n // Initialise async services, we do this here rather than in factories so we can capture one off events\n await projectService.init(startHeight);\n\n const workerService = app.get(WorkerService);\n\n initWorkerServices(app, workerService);\n } catch (e: any) {\n console.log('Failed to start worker', e);\n logger.error(e, 'Failed to start worker');\n throw e;\n }\n}\nexport type IIndexerWorker = IBaseIndexerWorker;\n\n(global as any).host = createWorkerHost([], {\n initWorker,\n});\n"]}
@@ -17,7 +17,8 @@ const configure_module_1 = require("../../configure/configure.module");
17
17
  const worker_fetch_module_1 = require("./worker-fetch.module");
18
18
  let WorkerModule = class WorkerModule {
19
19
  };
20
- WorkerModule = __decorate([
20
+ exports.WorkerModule = WorkerModule;
21
+ exports.WorkerModule = WorkerModule = __decorate([
21
22
  (0, common_1.Module)({
22
23
  imports: [
23
24
  node_core_1.DbModule.forRoot(),
@@ -30,5 +31,4 @@ WorkerModule = __decorate([
30
31
  controllers: [],
31
32
  })
32
33
  ], WorkerModule);
33
- exports.WorkerModule = WorkerModule;
34
34
  //# sourceMappingURL=worker.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker.module.js","sourceRoot":"","sources":["../../../src/indexer/worker/worker.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;AAEnC,2CAAwC;AACxC,yDAA2D;AAC3D,+CAAkD;AAClD,gDAA8D;AAC9D,uEAAmE;AACnE,+DAA0D;AAanD,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAG,CAAA;AAAf,YAAY;IAXxB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,oBAAQ,CAAC,OAAO,EAAE;YAClB,kCAAkB,CAAC,OAAO,EAAE;YAC5B,kCAAe,CAAC,QAAQ,EAAE;YAC1B,yBAAc,CAAC,OAAO,EAAE;YACxB,4BAAgB;YAChB,uCAAiB;SAClB;QACD,WAAW,EAAE,EAAE;KAChB,CAAC;GACW,YAAY,CAAG;AAAf,oCAAY","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Module } from '@nestjs/common';\nimport { EventEmitterModule } from '@nestjs/event-emitter';\nimport { ScheduleModule } from '@nestjs/schedule';\nimport { DbModule, WorkerCoreModule } from '@subql/node-core';\nimport { ConfigureModule } from '../../configure/configure.module';\nimport { WorkerFetchModule } from './worker-fetch.module';\n\n@Module({\n imports: [\n DbModule.forRoot(),\n EventEmitterModule.forRoot(),\n ConfigureModule.register(),\n ScheduleModule.forRoot(),\n WorkerCoreModule,\n WorkerFetchModule,\n ],\n controllers: [],\n})\nexport class WorkerModule {}\n"]}
1
+ {"version":3,"file":"worker.module.js","sourceRoot":"","sources":["../../../src/indexer/worker/worker.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;AAEnC,2CAAwC;AACxC,yDAA2D;AAC3D,+CAAkD;AAClD,gDAA8D;AAC9D,uEAAmE;AACnE,+DAA0D;AAanD,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAG,CAAA;AAAf,oCAAY;uBAAZ,YAAY;IAXxB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,oBAAQ,CAAC,OAAO,EAAE;YAClB,kCAAkB,CAAC,OAAO,EAAE;YAC5B,kCAAe,CAAC,QAAQ,EAAE;YAC1B,yBAAc,CAAC,OAAO,EAAE;YACxB,4BAAgB;YAChB,uCAAiB;SAClB;QACD,WAAW,EAAE,EAAE;KAChB,CAAC;GACW,YAAY,CAAG","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Module } from '@nestjs/common';\nimport { EventEmitterModule } from '@nestjs/event-emitter';\nimport { ScheduleModule } from '@nestjs/schedule';\nimport { DbModule, WorkerCoreModule } from '@subql/node-core';\nimport { ConfigureModule } from '../../configure/configure.module';\nimport { WorkerFetchModule } from './worker-fetch.module';\n\n@Module({\n imports: [\n DbModule.forRoot(),\n EventEmitterModule.forRoot(),\n ConfigureModule.register(),\n ScheduleModule.forRoot(),\n WorkerCoreModule,\n WorkerFetchModule,\n ],\n controllers: [],\n})\nexport class WorkerModule {}\n"]}
@@ -44,12 +44,13 @@ let WorkerService = class WorkerService extends node_core_1.BaseWorkerService {
44
44
  return (0, types_1.getBlockSize)(block.block);
45
45
  }
46
46
  };
47
- WorkerService = __decorate([
47
+ exports.WorkerService = WorkerService;
48
+ exports.WorkerService = WorkerService = __decorate([
48
49
  (0, common_1.Injectable)(),
50
+ __param(0, (0, common_1.Inject)('APIService')),
49
51
  __param(2, (0, common_1.Inject)('IProjectService')),
50
52
  __param(3, (0, common_1.Inject)('IProjectUpgradeService')),
51
53
  __metadata("design:paramtypes", [node_core_1.ApiService,
52
54
  indexer_manager_1.IndexerManager, Object, Object, node_core_1.NodeConfig])
53
55
  ], WorkerService);
54
- exports.WorkerService = WorkerService;
55
56
  //# sourceMappingURL=worker.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker.service.js","sourceRoot":"","sources":["../../../src/indexer/worker/worker.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,6DAA+C;AAC/C,2CAAoD;AAEpD,gDAU0B;AAE1B,+DAAmE;AACnE,wDAAoD;AACpD,oCAAwC;AAWxC,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,mBAAmB,8BAAQ,EAAE,CAAC,CAAC;AAGjD,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,6BAKlC;IAEW;IACA;IAFV,YACU,UAAsB,EACtB,cAA8B,EAEtC,cAAgD,EAEhD,qBAA6C,EAC7C,UAAsB;QAEtB,KAAK,CAAC,cAAc,EAAE,qBAAqB,EAAE,UAAU,CAAC,CAAC;QARjD,eAAU,GAAV,UAAU,CAAY;QACtB,mBAAc,GAAd,cAAc,CAAgB;IAQxC,CAAC;IACS,KAAK,CAAC,eAAe,CAC7B,OAAe,EACf,KAAS;QAET,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC;IACf,CAAC;IAES,eAAe,CAAC,KAA0B;QAClD,OAAO,IAAA,oCAAoB,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAES,KAAK,CAAC,mBAAmB,CACjC,KAAkC,EAClC,WAAqC;QAErC,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC5D,CAAC;IAES,YAAY,CAAC,KAAkC;QACvD,OAAO,IAAA,oBAAY,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;CACF,CAAA;AAvCY,aAAa;IADzB,IAAA,mBAAU,GAAE;IAUR,WAAA,IAAA,eAAM,EAAC,iBAAiB,CAAC,CAAA;IAEzB,WAAA,IAAA,eAAM,EAAC,wBAAwB,CAAC,CAAA;qCAJb,sBAAU;QACN,gCAAc,kBAK1B,sBAAU;GAbb,aAAa,CAuCzB;AAvCY,sCAAa","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { threadId } from 'node:worker_threads';\nimport { Inject, Injectable } from '@nestjs/common';\nimport { SubqlStellarDataSource } from '@subql/common-stellar';\nimport {\n NodeConfig,\n getLogger,\n IProjectService,\n ProcessBlockResponse,\n ApiService,\n BaseWorkerService,\n IProjectUpgradeService,\n IBlock,\n Header,\n} from '@subql/node-core';\nimport { StellarBlockWrapper, SubqlDatasource } from '@subql/types-stellar';\nimport { stellarBlockToHeader } from '../../stellar/utils.stellar';\nimport { IndexerManager } from '../indexer.manager';\nimport { getBlockSize } from '../types';\n\nexport type FetchBlockResponse = Header;\n\nexport type WorkerStatusResponse = {\n threadId: number;\n isIndexing: boolean;\n fetchedBlocks: number;\n toFetchBlocks: number;\n};\n\nconst logger = getLogger(`Worker Service #${threadId}`);\n\n@Injectable()\nexport class WorkerService extends BaseWorkerService<\n StellarBlockWrapper,\n FetchBlockResponse,\n SubqlStellarDataSource,\n {}\n> {\n constructor(\n private apiService: ApiService,\n private indexerManager: IndexerManager,\n @Inject('IProjectService')\n projectService: IProjectService<SubqlDatasource>,\n @Inject('IProjectUpgradeService')\n projectUpgradeService: IProjectUpgradeService,\n nodeConfig: NodeConfig,\n ) {\n super(projectService, projectUpgradeService, nodeConfig);\n }\n protected async fetchChainBlock(\n heights: number,\n extra: {},\n ): Promise<IBlock<StellarBlockWrapper>> {\n const [block] = await this.apiService.fetchBlocks([heights]);\n return block;\n }\n\n protected toBlockResponse(block: StellarBlockWrapper): Header {\n return stellarBlockToHeader(block.block);\n }\n\n protected async processFetchedBlock(\n block: IBlock<StellarBlockWrapper>,\n dataSources: SubqlStellarDataSource[],\n ): Promise<ProcessBlockResponse> {\n return this.indexerManager.indexBlock(block, dataSources);\n }\n\n protected getBlockSize(block: IBlock<StellarBlockWrapper>): number {\n return getBlockSize(block.block);\n }\n}\n"]}
1
+ {"version":3,"file":"worker.service.js","sourceRoot":"","sources":["../../../src/indexer/worker/worker.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,6DAA+C;AAC/C,2CAAoD;AAEpD,gDAU0B;AAE1B,+DAAmE;AACnE,wDAAoD;AACpD,oCAAwC;AAWxC,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,mBAAmB,8BAAQ,EAAE,CAAC,CAAC;AAGjD,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,6BAKlC;IAEiC;IACtB;IAFV,YACgC,UAAsB,EAC5C,cAA8B,EAEtC,cAAgD,EAEhD,qBAA6C,EAC7C,UAAsB;QAEtB,KAAK,CAAC,cAAc,EAAE,qBAAqB,EAAE,UAAU,CAAC,CAAC;QAR3B,eAAU,GAAV,UAAU,CAAY;QAC5C,mBAAc,GAAd,cAAc,CAAgB;IAQxC,CAAC;IACS,KAAK,CAAC,eAAe,CAC7B,OAAe,EACf,KAAS;QAET,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC;IACf,CAAC;IAES,eAAe,CAAC,KAA0B;QAClD,OAAO,IAAA,oCAAoB,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAES,KAAK,CAAC,mBAAmB,CACjC,KAAkC,EAClC,WAAqC;QAErC,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC5D,CAAC;IAES,YAAY,CAAC,KAAkC;QACvD,OAAO,IAAA,oBAAY,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;CACF,CAAA;AAvCY,sCAAa;wBAAb,aAAa;IADzB,IAAA,mBAAU,GAAE;IAQR,WAAA,IAAA,eAAM,EAAC,YAAY,CAAC,CAAA;IAEpB,WAAA,IAAA,eAAM,EAAC,iBAAiB,CAAC,CAAA;IAEzB,WAAA,IAAA,eAAM,EAAC,wBAAwB,CAAC,CAAA;qCAJS,sBAAU;QAC5B,gCAAc,kBAK1B,sBAAU;GAbb,aAAa,CAuCzB","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { threadId } from 'node:worker_threads';\nimport { Inject, Injectable } from '@nestjs/common';\nimport { SubqlStellarDataSource } from '@subql/common-stellar';\nimport {\n NodeConfig,\n getLogger,\n IProjectService,\n ProcessBlockResponse,\n ApiService,\n BaseWorkerService,\n IProjectUpgradeService,\n IBlock,\n Header,\n} from '@subql/node-core';\nimport { StellarBlockWrapper, SubqlDatasource } from '@subql/types-stellar';\nimport { stellarBlockToHeader } from '../../stellar/utils.stellar';\nimport { IndexerManager } from '../indexer.manager';\nimport { getBlockSize } from '../types';\n\nexport type FetchBlockResponse = Header;\n\nexport type WorkerStatusResponse = {\n threadId: number;\n isIndexing: boolean;\n fetchedBlocks: number;\n toFetchBlocks: number;\n};\n\nconst logger = getLogger(`Worker Service #${threadId}`);\n\n@Injectable()\nexport class WorkerService extends BaseWorkerService<\n StellarBlockWrapper,\n FetchBlockResponse,\n SubqlStellarDataSource,\n {}\n> {\n constructor(\n @Inject('APIService') private apiService: ApiService,\n private indexerManager: IndexerManager,\n @Inject('IProjectService')\n projectService: IProjectService<SubqlDatasource>,\n @Inject('IProjectUpgradeService')\n projectUpgradeService: IProjectUpgradeService,\n nodeConfig: NodeConfig,\n ) {\n super(projectService, projectUpgradeService, nodeConfig);\n }\n protected async fetchChainBlock(\n heights: number,\n extra: {},\n ): Promise<IBlock<StellarBlockWrapper>> {\n const [block] = await this.apiService.fetchBlocks([heights]);\n return block;\n }\n\n protected toBlockResponse(block: StellarBlockWrapper): Header {\n return stellarBlockToHeader(block.block);\n }\n\n protected async processFetchedBlock(\n block: IBlock<StellarBlockWrapper>,\n dataSources: SubqlStellarDataSource[],\n ): Promise<ProcessBlockResponse> {\n return this.indexerManager.indexBlock(block, dataSources);\n }\n\n protected getBlockSize(block: IBlock<StellarBlockWrapper>): number {\n return getBlockSize(block.block);\n }\n}\n"]}
package/dist/init.js CHANGED
@@ -2,12 +2,11 @@
2
2
  // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
3
3
  // SPDX-License-Identifier: GPL-3.0
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.bootstrap = void 0;
5
+ exports.bootstrap = bootstrap;
6
6
  const core_1 = require("@nestjs/core");
7
7
  const common_1 = require("@subql/common");
8
8
  const node_core_1 = require("@subql/node-core");
9
9
  const app_module_1 = require("./app.module");
10
- const fetch_service_1 = require("./indexer/fetch.service");
11
10
  const yargs_1 = require("./yargs");
12
11
  const pjson = require('../package.json');
13
12
  const { argv } = yargs_1.yargsOptions;
@@ -28,7 +27,7 @@ async function bootstrap() {
28
27
  });
29
28
  await app.init();
30
29
  const projectService = app.get('IProjectService');
31
- const fetchService = app.get(fetch_service_1.FetchService);
30
+ const fetchService = app.get(node_core_1.FetchService);
32
31
  // Initialise async services, we do this here rather than in factories, so we can capture one off eventss
33
32
  await projectService.init();
34
33
  await fetchService.init(projectService.startHeight);
@@ -40,5 +39,4 @@ async function bootstrap() {
40
39
  (0, node_core_1.exitWithError)(new Error('Node failed to start', { cause: e }), logger);
41
40
  }
42
41
  }
43
- exports.bootstrap = bootstrap;
44
42
  //# sourceMappingURL=init.js.map
package/dist/init.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;AAEnC,uCAA2C;AAC3C,0CAA8C;AAC9C,gDAK0B;AAC1B,6CAAyC;AACzC,2DAAuD;AAEvD,mCAAuC;AACvC,MAAM,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEzC,MAAM,EAAE,IAAI,EAAE,GAAG,oBAAY,CAAC;AAE9B,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,YAAY,CAAC,CAAC;AAEvC,IAAA,sBAAa,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAEtB,KAAK,UAAU,SAAS;IAC7B,MAAM,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,eAAe,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAEjE,MAAM,IAAI,GAAG,MAAM,IAAA,wBAAY,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,IAAI,EAAE;QACT,IAAA,yBAAa,EACX,wDAAwD,IAAI,KAC1D,IAAI,GAAG,EACT,iEAAiE,EACjE,MAAM,CACP,CAAC;KACH;IAED,IAAI,IAAI,CAAC,MAAM,EAAE;QACf,MAAM,CAAC,IAAI,CACT,mHAAmH,CACpH,CAAC;KACH;IAED,IAAI;QACF,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,sBAAS,EAAE;YAC9C,MAAM,EAAE,IAAI,sBAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;SACrC,CAAC,CAAC;QAEH,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAEjB,MAAM,cAAc,GAAmB,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAClE,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,4BAAY,CAAC,CAAC;QAE3C,yGAAyG;QACzG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAEpD,GAAG,CAAC,mBAAmB,EAAE,CAAC;QAE1B,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEvB,MAAM,CAAC,IAAI,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;KAC9C;IAAC,OAAO,CAAC,EAAE;QACV,IAAA,yBAAa,EAAC,IAAI,KAAK,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;KACxE;AACH,CAAC;AAzCD,8BAyCC","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { NestFactory } from '@nestjs/core';\nimport { notifyUpdates } from '@subql/common';\nimport {\n exitWithError,\n getLogger,\n NestLogger,\n getValidPort,\n} from '@subql/node-core';\nimport { AppModule } from './app.module';\nimport { FetchService } from './indexer/fetch.service';\nimport { ProjectService } from './indexer/project.service';\nimport { yargsOptions } from './yargs';\nconst pjson = require('../package.json');\n\nconst { argv } = yargsOptions;\n\nconst logger = getLogger('subql-node');\n\nnotifyUpdates(pjson, logger);\n\nexport async function bootstrap(): Promise<void> {\n logger.info(`Current ${pjson.name} version is ${pjson.version}`);\n\n const port = await getValidPort(argv.port);\n if (!port) {\n exitWithError(\n `Unable to find available port (tried ports in range (${port}..${\n port + 10\n })). Try setting a free port manually by setting the --port flag`,\n logger,\n );\n }\n\n if (argv.unsafe) {\n logger.warn(\n 'UNSAFE MODE IS ENABLED. This is not recommended for most projects and will not be supported by our hosted service',\n );\n }\n\n try {\n const app = await NestFactory.create(AppModule, {\n logger: new NestLogger(!!argv.debug),\n });\n\n await app.init();\n\n const projectService: ProjectService = app.get('IProjectService');\n const fetchService = app.get(FetchService);\n\n // Initialise async services, we do this here rather than in factories, so we can capture one off eventss\n await projectService.init();\n await fetchService.init(projectService.startHeight);\n\n app.enableShutdownHooks();\n\n await app.listen(port);\n\n logger.info(`Node started on port: ${port}`);\n } catch (e) {\n exitWithError(new Error('Node failed to start', { cause: e }), logger);\n }\n}\n"]}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;AAsBnC,8BAyCC;AA7DD,uCAA2C;AAC3C,0CAA8C;AAC9C,gDAO0B;AAC1B,6CAAyC;AACzC,mCAAuC;AACvC,MAAM,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEzC,MAAM,EAAE,IAAI,EAAE,GAAG,oBAAY,CAAC;AAE9B,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,YAAY,CAAC,CAAC;AAEvC,IAAA,sBAAa,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAEtB,KAAK,UAAU,SAAS;IAC7B,MAAM,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,eAAe,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAEjE,MAAM,IAAI,GAAG,MAAM,IAAA,wBAAY,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAA,yBAAa,EACX,wDAAwD,IAAI,KAC1D,IAAI,GAAG,EACT,iEAAiE,EACjE,MAAM,CACP,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,CAAC,IAAI,CACT,mHAAmH,CACpH,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,sBAAS,EAAE;YAC9C,MAAM,EAAE,IAAI,sBAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;SACrC,CAAC,CAAC;QAEH,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAEjB,MAAM,cAAc,GAAmB,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAClE,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,wBAAY,CAAC,CAAC;QAE3C,yGAAyG;QACzG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAEpD,GAAG,CAAC,mBAAmB,EAAE,CAAC;QAE1B,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEvB,MAAM,CAAC,IAAI,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAA,yBAAa,EAAC,IAAI,KAAK,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACzE,CAAC;AACH,CAAC","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { NestFactory } from '@nestjs/core';\nimport { notifyUpdates } from '@subql/common';\nimport {\n exitWithError,\n getLogger,\n NestLogger,\n getValidPort,\n ProjectService,\n FetchService,\n} from '@subql/node-core';\nimport { AppModule } from './app.module';\nimport { yargsOptions } from './yargs';\nconst pjson = require('../package.json');\n\nconst { argv } = yargsOptions;\n\nconst logger = getLogger('subql-node');\n\nnotifyUpdates(pjson, logger);\n\nexport async function bootstrap(): Promise<void> {\n logger.info(`Current ${pjson.name} version is ${pjson.version}`);\n\n const port = await getValidPort(argv.port);\n if (!port) {\n exitWithError(\n `Unable to find available port (tried ports in range (${port}..${\n port + 10\n })). Try setting a free port manually by setting the --port flag`,\n logger,\n );\n }\n\n if (argv.unsafe) {\n logger.warn(\n 'UNSAFE MODE IS ENABLED. This is not recommended for most projects and will not be supported by our hosted service',\n );\n }\n\n try {\n const app = await NestFactory.create(AppModule, {\n logger: new NestLogger(!!argv.debug),\n });\n\n await app.init();\n\n const projectService: ProjectService = app.get('IProjectService');\n const fetchService = app.get(FetchService);\n\n // Initialise async services, we do this here rather than in factories, so we can capture one off eventss\n await projectService.init();\n await fetchService.init(projectService.startHeight);\n\n app.enableShutdownHooks();\n\n await app.listen(port);\n\n logger.info(`Node started on port: ${port}`);\n } catch (e) {\n exitWithError(new Error('Node failed to start', { cause: e }), logger);\n }\n}\n"]}
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;AAEnC,oDAAqD;AACrD,mCAAuC;AAEvC,MAAM,EAAE,IAAI,EAAE,GAAG,oBAAY,CAAC;AAE7B,MAAM,CAAC,SAAiB,CAAC,MAAM,GAAG;IACjC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;AACzB,CAAC,CAAC;AAEF,iIAAiI;AACjI,IAAA,mBAAU,EACR,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,SAA+B,EACpC,IAAI,CAAC,QAA8B,CACpC,CAAC;AAEF,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;IACd,oEAAoE;IACpE,kDAAkD;IAClD,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,KAAK,SAAS,EAAE,CAAC;CAClB","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { initLogger } from '@subql/node-core/logger';\nimport { yargsOptions } from './yargs';\n\nconst { argv } = yargsOptions;\n\n(BigInt.prototype as any).toJSON = function () {\n return this.toString();\n};\n\n// initLogger is imported from true path, to make sure getLogger (or other logger values that relies on logger) isn't initialised\ninitLogger(\n argv.debug,\n argv.outputFmt as 'json' | 'colored',\n argv.logLevel as string | undefined,\n);\n\nif (!argv._[0]) {\n // Lazy import, to allow logger to be initialised before bootstrap()\n // As bootstrap runs services that requires logger\n const { bootstrap } = require('./init');\n void bootstrap();\n}\n"]}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;AAEnC,oDAAqD;AACrD,mCAAuC;AAEvC,MAAM,EAAE,IAAI,EAAE,GAAG,oBAAY,CAAC;AAE7B,MAAM,CAAC,SAAiB,CAAC,MAAM,GAAG;IACjC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;AACzB,CAAC,CAAC;AAEF,iIAAiI;AACjI,IAAA,mBAAU,EACR,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,SAA+B,EACpC,IAAI,CAAC,QAA8B,CACpC,CAAC;AAEF,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACf,oEAAoE;IACpE,kDAAkD;IAClD,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,KAAK,SAAS,EAAE,CAAC;AACnB,CAAC","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { initLogger } from '@subql/node-core/logger';\nimport { yargsOptions } from './yargs';\n\nconst { argv } = yargsOptions;\n\n(BigInt.prototype as any).toJSON = function () {\n return this.toString();\n};\n\n// initLogger is imported from true path, to make sure getLogger (or other logger values that relies on logger) isn't initialised\ninitLogger(\n argv.debug,\n argv.outputFmt as 'json' | 'colored',\n argv.logLevel as string | undefined,\n);\n\nif (!argv._[0]) {\n // Lazy import, to allow logger to be initialised before bootstrap()\n // As bootstrap runs services that requires logger\n const { bootstrap } = require('./init');\n void bootstrap();\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"api.connection.js","sourceRoot":"","sources":["../../src/stellar/api.connection.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;AAEnC,gDAU0B;AAK1B,+CAA2C;AAS3C,MAAa,oBAAoB;IAWtB;IACC;IAJD,WAAW,CAAyB;IAE7C,YACS,SAAqB,EACpB,kBAA6B;QAD9B,cAAS,GAAT,SAAS,CAAY;QACpB,uBAAkB,GAAlB,kBAAkB,CAAW;QAErC,IAAI,CAAC,WAAW,GAAG;YACjB,KAAK,EAAE,SAAS,CAAC,UAAU,EAAE;YAC7B,QAAQ,EAAE,SAAS,CAAC,WAAW,EAAE;YACjC,WAAW,EAAE,SAAS,CAAC,cAAc,EAAE;SACxC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,QAAgB,EAChB,iBAA4B,EAC5B,OAAuB,EACvB,MAA+B;QAE/B,MAAM,GAAG,GAAG,IAAI,wBAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAEtD,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAEjB,OAAO,IAAI,oBAAoB,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,CAAC,MAAc;QACpB,0BAA0B;QAC1B,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAiB;QACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACtE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,WAAW,GAAG,oBAAoB,CAAC,WAAW,CAAC;IAE/C,MAAM,CAAC,WAAW,CAAC,CAAQ;QACzB,IAAI,eAAmC,CAAC;QACxC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YACjC,eAAe,GAAG,IAAI,wBAAY,CAAC,CAAC,CAAC,CAAC;SACvC;aAAM,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE;YACrD,eAAe,GAAG,IAAI,8BAAkB,CAAC,CAAC,CAAC,CAAC;SAC7C;aAAM,IACL,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YACzC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EACvC;YACA,eAAe,GAAG,IAAI,0BAAc,CAAC,CAAC,CAAC,CAAC;SACzC;aAAM,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE;YACtD,eAAe,GAAG,IAAI,8BAAkB,CAAC,CAAC,CAAC,CAAC;SAC7C;aAAM;YACL,eAAe,GAAG,IAAI,8BAAkB,CACtC,CAAC,CAAC,IAAI,EACN,CAAC,CAAC,OAAO,EACT,wBAAY,CAAC,OAAO,CACrB,CAAC;SACH;QACD,OAAO,eAAe,CAAC;IACzB,CAAC;CACF;AA5ED,oDA4EC","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport {\n ApiConnectionError,\n ApiErrorType,\n IApiConnectionSpecific,\n NetworkMetadataPayload,\n TimeoutError,\n RateLimitError,\n DisconnectionError,\n LargeResponseError,\n IBlock,\n} from '@subql/node-core';\nimport {\n StellarBlockWrapper,\n IStellarEndpointConfig,\n} from '@subql/types-stellar';\nimport { StellarApi } from './api.stellar';\nimport SafeStellarProvider from './safe-api';\nimport { SorobanServer } from './soroban.server';\n\ntype FetchFunc = (\n api: StellarApi,\n batch: number[],\n) => Promise<IBlock<StellarBlockWrapper>[]>;\n\nexport class StellarApiConnection\n implements\n IApiConnectionSpecific<\n StellarApi,\n SafeStellarProvider,\n IBlock<StellarBlockWrapper>[]\n >\n{\n readonly networkMeta: NetworkMetadataPayload;\n\n constructor(\n public unsafeApi: StellarApi,\n private fetchBlocksBatches: FetchFunc,\n ) {\n this.networkMeta = {\n chain: unsafeApi.getChainId(),\n specName: unsafeApi.getSpecName(),\n genesisHash: unsafeApi.getGenesisHash(),\n };\n }\n\n static async create(\n endpoint: string,\n fetchBlockBatches: FetchFunc,\n soroban?: SorobanServer,\n config?: IStellarEndpointConfig,\n ): Promise<StellarApiConnection> {\n const api = new StellarApi(endpoint, soroban, config);\n\n await api.init();\n\n return new StellarApiConnection(api, fetchBlockBatches);\n }\n\n safeApi(height: number): SafeStellarProvider {\n //safe api not implemented\n throw new Error(`Not Implemented`);\n }\n\n async apiConnect(): Promise<void> {\n await this.unsafeApi.connect();\n }\n\n async apiDisconnect(): Promise<void> {\n await this.unsafeApi.disconnect();\n }\n\n async fetchBlocks(heights: number[]): Promise<IBlock<StellarBlockWrapper>[]> {\n const blocks = await this.fetchBlocksBatches(this.unsafeApi, heights);\n return blocks;\n }\n\n handleError = StellarApiConnection.handleError;\n\n static handleError(e: Error): ApiConnectionError {\n let formatted_error: ApiConnectionError;\n if (e.message.includes(`Timeout`)) {\n formatted_error = new TimeoutError(e);\n } else if (e.message.startsWith(`disconnected from `)) {\n formatted_error = new DisconnectionError(e);\n } else if (\n e.message.includes(`Rate Limit Exceeded`) ||\n e.message.includes('Too Many Requests')\n ) {\n formatted_error = new RateLimitError(e);\n } else if (e.message.includes(`limit must not exceed`)) {\n formatted_error = new LargeResponseError(e);\n } else {\n formatted_error = new ApiConnectionError(\n e.name,\n e.message,\n ApiErrorType.Default,\n );\n }\n return formatted_error;\n }\n}\n"]}
1
+ {"version":3,"file":"api.connection.js","sourceRoot":"","sources":["../../src/stellar/api.connection.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;AAEnC,gDAU0B;AAK1B,+CAA2C;AAS3C,MAAa,oBAAoB;IAWtB;IACC;IAJD,WAAW,CAAyB;IAE7C,YACS,SAAqB,EACpB,kBAA6B;QAD9B,cAAS,GAAT,SAAS,CAAY;QACpB,uBAAkB,GAAlB,kBAAkB,CAAW;QAErC,IAAI,CAAC,WAAW,GAAG;YACjB,KAAK,EAAE,SAAS,CAAC,UAAU,EAAE;YAC7B,QAAQ,EAAE,SAAS,CAAC,WAAW,EAAE;YACjC,WAAW,EAAE,SAAS,CAAC,cAAc,EAAE;SACxC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,QAAgB,EAChB,iBAA4B,EAC5B,OAAuB,EACvB,MAA+B;QAE/B,MAAM,GAAG,GAAG,IAAI,wBAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAEtD,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAEjB,OAAO,IAAI,oBAAoB,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,CAAC,MAAc;QACpB,0BAA0B;QAC1B,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAiB;QACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACtE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,WAAW,GAAG,oBAAoB,CAAC,WAAW,CAAC;IAE/C,MAAM,CAAC,WAAW,CAAC,CAAQ;QACzB,IAAI,eAAmC,CAAC;QACxC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAClC,eAAe,GAAG,IAAI,wBAAY,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC;aAAM,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACtD,eAAe,GAAG,IAAI,8BAAkB,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;aAAM,IACL,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YACzC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EACvC,CAAC;YACD,eAAe,GAAG,IAAI,0BAAc,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC;aAAM,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;YACvD,eAAe,GAAG,IAAI,8BAAkB,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,eAAe,GAAG,IAAI,8BAAkB,CACtC,CAAC,CAAC,IAAI,EACN,CAAC,CAAC,OAAO,EACT,wBAAY,CAAC,OAAO,CACrB,CAAC;QACJ,CAAC;QACD,OAAO,eAAe,CAAC;IACzB,CAAC;CACF;AA5ED,oDA4EC","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport {\n ApiConnectionError,\n ApiErrorType,\n IApiConnectionSpecific,\n NetworkMetadataPayload,\n TimeoutError,\n RateLimitError,\n DisconnectionError,\n LargeResponseError,\n IBlock,\n} from '@subql/node-core';\nimport {\n StellarBlockWrapper,\n IStellarEndpointConfig,\n} from '@subql/types-stellar';\nimport { StellarApi } from './api.stellar';\nimport SafeStellarProvider from './safe-api';\nimport { SorobanServer } from './soroban.server';\n\ntype FetchFunc = (\n api: StellarApi,\n batch: number[],\n) => Promise<IBlock<StellarBlockWrapper>[]>;\n\nexport class StellarApiConnection\n implements\n IApiConnectionSpecific<\n StellarApi,\n SafeStellarProvider,\n IBlock<StellarBlockWrapper>[]\n >\n{\n readonly networkMeta: NetworkMetadataPayload;\n\n constructor(\n public unsafeApi: StellarApi,\n private fetchBlocksBatches: FetchFunc,\n ) {\n this.networkMeta = {\n chain: unsafeApi.getChainId(),\n specName: unsafeApi.getSpecName(),\n genesisHash: unsafeApi.getGenesisHash(),\n };\n }\n\n static async create(\n endpoint: string,\n fetchBlockBatches: FetchFunc,\n soroban?: SorobanServer,\n config?: IStellarEndpointConfig,\n ): Promise<StellarApiConnection> {\n const api = new StellarApi(endpoint, soroban, config);\n\n await api.init();\n\n return new StellarApiConnection(api, fetchBlockBatches);\n }\n\n safeApi(height: number): SafeStellarProvider {\n //safe api not implemented\n throw new Error(`Not Implemented`);\n }\n\n async apiConnect(): Promise<void> {\n await this.unsafeApi.connect();\n }\n\n async apiDisconnect(): Promise<void> {\n await this.unsafeApi.disconnect();\n }\n\n async fetchBlocks(heights: number[]): Promise<IBlock<StellarBlockWrapper>[]> {\n const blocks = await this.fetchBlocksBatches(this.unsafeApi, heights);\n return blocks;\n }\n\n handleError = StellarApiConnection.handleError;\n\n static handleError(e: Error): ApiConnectionError {\n let formatted_error: ApiConnectionError;\n if (e.message.includes(`Timeout`)) {\n formatted_error = new TimeoutError(e);\n } else if (e.message.startsWith(`disconnected from `)) {\n formatted_error = new DisconnectionError(e);\n } else if (\n e.message.includes(`Rate Limit Exceeded`) ||\n e.message.includes('Too Many Requests')\n ) {\n formatted_error = new RateLimitError(e);\n } else if (e.message.includes(`limit must not exceed`)) {\n formatted_error = new LargeResponseError(e);\n } else {\n formatted_error = new ApiConnectionError(\n e.name,\n e.message,\n ApiErrorType.Default,\n );\n }\n return formatted_error;\n }\n}\n"]}
@@ -6,10 +6,8 @@ import { StellarApiConnection } from './api.connection';
6
6
  import { StellarApi } from './api.stellar';
7
7
  import SafeStellarProvider from './safe-api';
8
8
  export declare class StellarApiService extends ApiService<StellarApi, SafeStellarProvider, IBlock<StellarBlockWrapper>[], StellarApiConnection, IStellarEndpointConfig> {
9
- private project;
10
- private nodeConfig;
11
- constructor(project: SubqueryProject, connectionPoolService: ConnectionPoolService<StellarApiConnection>, eventEmitter: EventEmitter2, nodeConfig: NodeConfig);
12
- init(): Promise<StellarApiService>;
9
+ private constructor();
10
+ static create(project: SubqueryProject, connectionPoolService: ConnectionPoolService<StellarApiConnection>, eventEmitter: EventEmitter2, nodeConfig: NodeConfig): Promise<StellarApiService>;
13
11
  get api(): StellarApi;
14
12
  safeApi(height: number): SafeStellarProvider;
15
13
  private fetchBlockBatches;
@@ -10,9 +10,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
10
10
  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
- var __param = (this && this.__param) || function (paramIndex, decorator) {
14
- return function (target, key) { decorator(target, key, paramIndex); }
15
- };
13
+ var StellarApiService_1;
16
14
  Object.defineProperty(exports, "__esModule", { value: true });
17
15
  exports.StellarApiService = void 0;
18
16
  const common_1 = require("@nestjs/common");
@@ -22,37 +20,35 @@ const SubqueryProject_1 = require("../configure/SubqueryProject");
22
20
  const api_connection_1 = require("./api.connection");
23
21
  const soroban_server_1 = require("./soroban.server");
24
22
  const logger = (0, node_core_1.getLogger)('api');
25
- let StellarApiService = class StellarApiService extends node_core_1.ApiService {
26
- project;
27
- nodeConfig;
28
- constructor(project, connectionPoolService, eventEmitter, nodeConfig) {
23
+ let StellarApiService = StellarApiService_1 = class StellarApiService extends node_core_1.ApiService {
24
+ constructor(connectionPoolService, eventEmitter) {
29
25
  super(connectionPoolService, eventEmitter);
30
- this.project = project;
31
- this.nodeConfig = nodeConfig;
32
26
  }
33
- async init() {
27
+ static async create(project, connectionPoolService, eventEmitter, nodeConfig) {
34
28
  let network;
29
+ const apiService = new StellarApiService_1(connectionPoolService, eventEmitter);
35
30
  try {
36
- network = this.project.network;
31
+ network = project.network;
37
32
  }
38
33
  catch (e) {
39
34
  (0, node_core_1.exitWithError)(new Error(`Failed to init api`, { cause: e }), logger);
40
35
  }
41
- if (this.nodeConfig.primaryNetworkEndpoint) {
42
- const [endpoint, config] = this.nodeConfig.primaryNetworkEndpoint;
36
+ if (nodeConfig.primaryNetworkEndpoint) {
37
+ const [endpoint, config] = nodeConfig.primaryNetworkEndpoint;
43
38
  network.endpoint[endpoint] = config;
44
39
  }
45
40
  const sorobanEndpoint = network.sorobanEndpoint;
46
41
  if (!network.sorobanEndpoint && sorobanEndpoint) {
47
42
  //update sorobanEndpoint from parent project
48
- this.project.network.sorobanEndpoint = sorobanEndpoint;
43
+ project.network.sorobanEndpoint = sorobanEndpoint;
49
44
  }
45
+ // TOOD if project upgrades introduces new datasoruces this wont work
50
46
  if ((0, SubqueryProject_1.dsHasSorobanEventHandler)([
51
- ...this.project.dataSources,
52
- ...this.project.templates,
47
+ ...project.dataSources,
48
+ ...project.templates,
53
49
  ]) &&
54
50
  !sorobanEndpoint) {
55
- throw new Error(`Soroban network endpoint must be provided for network. chainId="${this.project.network.chainId}"`);
51
+ throw new Error(`Soroban network endpoint must be provided for network. chainId="${project.network.chainId}"`);
56
52
  }
57
53
  const { protocol } = new URL(sorobanEndpoint);
58
54
  const protocolStr = protocol.replace(':', '');
@@ -61,8 +57,8 @@ let StellarApiService = class StellarApiService extends node_core_1.ApiService {
61
57
  allowHttp: protocolStr === 'http',
62
58
  })
63
59
  : undefined;
64
- await this.createConnections(network, (endpoint, config) => api_connection_1.StellarApiConnection.create(endpoint, this.fetchBlockBatches, sorobanClient, config));
65
- return this;
60
+ await apiService.createConnections(network, (endpoint, config) => api_connection_1.StellarApiConnection.create(endpoint, apiService.fetchBlockBatches.bind(apiService), sorobanClient, config));
61
+ return apiService;
66
62
  }
67
63
  get api() {
68
64
  return this.unsafeApi;
@@ -104,12 +100,10 @@ let StellarApiService = class StellarApiService extends node_core_1.ApiService {
104
100
  return api.fetchBlocks(batch);
105
101
  }
106
102
  };
107
- StellarApiService = __decorate([
103
+ exports.StellarApiService = StellarApiService;
104
+ exports.StellarApiService = StellarApiService = StellarApiService_1 = __decorate([
108
105
  (0, common_1.Injectable)(),
109
- __param(0, (0, common_1.Inject)('ISubqueryProject')),
110
- __metadata("design:paramtypes", [Object, node_core_1.ConnectionPoolService,
111
- event_emitter_1.EventEmitter2,
112
- node_core_1.NodeConfig])
106
+ __metadata("design:paramtypes", [node_core_1.ConnectionPoolService,
107
+ event_emitter_1.EventEmitter2])
113
108
  ], StellarApiService);
114
- exports.StellarApiService = StellarApiService;
115
109
  //# sourceMappingURL=api.service.stellar.js.map