@subql/node-starknet 5.7.3-1 → 5.8.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 (72) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/blockchain.service.d.ts +30 -0
  4. package/dist/blockchain.service.js +111 -0
  5. package/dist/blockchain.service.js.map +1 -0
  6. package/dist/{indexer/project.service.test.js → blockchain.service.spec.js} +7 -7
  7. package/dist/blockchain.service.spec.js.map +1 -0
  8. package/dist/indexer/fetch.module.js +29 -27
  9. package/dist/indexer/fetch.module.js.map +1 -1
  10. package/dist/indexer/indexer.manager.d.ts +6 -10
  11. package/dist/indexer/indexer.manager.js +15 -11
  12. package/dist/indexer/indexer.manager.js.map +1 -1
  13. package/dist/indexer/worker/worker-fetch.module.js +7 -18
  14. package/dist/indexer/worker/worker-fetch.module.js.map +1 -1
  15. package/dist/indexer/worker/worker.js.map +1 -1
  16. package/dist/indexer/worker/worker.module.js +0 -1
  17. package/dist/indexer/worker/worker.module.js.map +1 -1
  18. package/dist/indexer/worker/worker.service.js +1 -0
  19. package/dist/indexer/worker/worker.service.js.map +1 -1
  20. package/dist/init.js +1 -2
  21. package/dist/init.js.map +1 -1
  22. package/dist/starknet/api.service.starknet.d.ts +2 -2
  23. package/dist/starknet/api.service.starknet.js +10 -8
  24. package/dist/starknet/api.service.starknet.js.map +1 -1
  25. package/dist/starknet/{api.service.starknet.test.js → api.service.starknet.spec.js} +11 -3
  26. package/dist/starknet/api.service.starknet.spec.js.map +1 -0
  27. package/dist/starknet/api.starknet.d.ts +2 -3
  28. package/dist/starknet/api.starknet.js +1 -3
  29. package/dist/starknet/api.starknet.js.map +1 -1
  30. package/dist/starknet/{block.starknet.test.js → block.starknet.spec.js} +1 -1
  31. package/dist/starknet/{block.starknet.test.js.map → block.starknet.spec.js.map} +1 -1
  32. package/dist/starknet/{decodeCalldata.test.js → decodeCalldata.spec.js} +1 -1
  33. package/dist/starknet/{decodeCalldata.test.js.map → decodeCalldata.spec.js.map} +1 -1
  34. package/dist/subcommands/reindex.module.js +19 -8
  35. package/dist/subcommands/reindex.module.js.map +1 -1
  36. package/dist/subcommands/testing.module.js +14 -32
  37. package/dist/subcommands/testing.module.js.map +1 -1
  38. package/dist/subcommands/testing.service.js.map +1 -1
  39. package/package.json +11 -12
  40. package/dist/indexer/blockDispatcher/block-dispatcher.service.d.ts +0 -15
  41. package/dist/indexer/blockDispatcher/block-dispatcher.service.js +0 -51
  42. package/dist/indexer/blockDispatcher/block-dispatcher.service.js.map +0 -1
  43. package/dist/indexer/blockDispatcher/index.d.ts +0 -4
  44. package/dist/indexer/blockDispatcher/index.js +0 -10
  45. package/dist/indexer/blockDispatcher/index.js.map +0 -1
  46. package/dist/indexer/blockDispatcher/starknet-block-dispatcher.d.ts +0 -5
  47. package/dist/indexer/blockDispatcher/starknet-block-dispatcher.js +0 -5
  48. package/dist/indexer/blockDispatcher/starknet-block-dispatcher.js.map +0 -1
  49. package/dist/indexer/blockDispatcher/worker-block-dispatcher.service.d.ts +0 -17
  50. package/dist/indexer/blockDispatcher/worker-block-dispatcher.service.js +0 -48
  51. package/dist/indexer/blockDispatcher/worker-block-dispatcher.service.js.map +0 -1
  52. package/dist/indexer/ds-processor.service.d.ts +0 -6
  53. package/dist/indexer/ds-processor.service.js +0 -22
  54. package/dist/indexer/ds-processor.service.js.map +0 -1
  55. package/dist/indexer/dynamic-ds.service.d.ts +0 -8
  56. package/dist/indexer/dynamic-ds.service.js +0 -69
  57. package/dist/indexer/dynamic-ds.service.js.map +0 -1
  58. package/dist/indexer/fetch.service.d.ts +0 -20
  59. package/dist/indexer/fetch.service.js +0 -74
  60. package/dist/indexer/fetch.service.js.map +0 -1
  61. package/dist/indexer/project.service.d.ts +0 -15
  62. package/dist/indexer/project.service.js +0 -71
  63. package/dist/indexer/project.service.js.map +0 -1
  64. package/dist/indexer/project.service.test.js.map +0 -1
  65. package/dist/indexer/unfinalizedBlocks.service.d.ts +0 -10
  66. package/dist/indexer/unfinalizedBlocks.service.js +0 -48
  67. package/dist/indexer/unfinalizedBlocks.service.js.map +0 -1
  68. package/dist/starknet/api.service.starknet.test.js.map +0 -1
  69. /package/dist/{indexer/project.service.test.d.ts → blockchain.service.spec.d.ts} +0 -0
  70. /package/dist/starknet/{api.service.starknet.test.d.ts → api.service.starknet.spec.d.ts} +0 -0
  71. /package/dist/starknet/{block.starknet.test.d.ts → block.starknet.spec.d.ts} +0 -0
  72. /package/dist/starknet/{decodeCalldata.test.d.ts → decodeCalldata.spec.d.ts} +0 -0
@@ -13,47 +13,24 @@ const common_1 = require("@nestjs/common");
13
13
  const event_emitter_1 = require("@nestjs/event-emitter");
14
14
  const schedule_1 = require("@nestjs/schedule");
15
15
  const node_core_1 = require("@subql/node-core");
16
- const x_sequelize_1 = require("@subql/x-sequelize");
16
+ const blockchain_service_1 = require("../blockchain.service");
17
17
  const configure_module_1 = require("../configure/configure.module");
18
- const ds_processor_service_1 = require("../indexer/ds-processor.service");
19
- const dynamic_ds_service_1 = require("../indexer/dynamic-ds.service");
20
18
  const indexer_manager_1 = require("../indexer/indexer.manager");
21
- const project_service_1 = require("../indexer/project.service");
22
- const unfinalizedBlocks_service_1 = require("../indexer/unfinalizedBlocks.service");
23
19
  const starknet_1 = require("../starknet");
24
20
  let TestingFeatureModule = class TestingFeatureModule {
25
21
  };
26
22
  exports.TestingFeatureModule = TestingFeatureModule;
27
23
  exports.TestingFeatureModule = TestingFeatureModule = __decorate([
28
24
  (0, common_1.Module)({
25
+ imports: [node_core_1.TestingCoreModule],
29
26
  providers: [
30
- node_core_1.InMemoryCacheService,
31
- node_core_1.StoreService,
32
- {
33
- provide: 'IStoreModelProvider',
34
- useFactory: node_core_1.storeModelFactory,
35
- inject: [node_core_1.NodeConfig, event_emitter_1.EventEmitter2, schedule_1.SchedulerRegistry, x_sequelize_1.Sequelize],
36
- },
37
- event_emitter_1.EventEmitter2,
38
- node_core_1.PoiService,
39
- node_core_1.PoiSyncService,
40
- node_core_1.SandboxService,
41
- ds_processor_service_1.DsProcessorService,
42
- dynamic_ds_service_1.DynamicDsService,
43
- unfinalizedBlocks_service_1.UnfinalizedBlocksService,
44
- node_core_1.ConnectionPoolStateManager,
45
- node_core_1.ConnectionPoolService,
46
27
  {
47
28
  provide: 'IProjectService',
48
- useClass: project_service_1.ProjectService,
29
+ useClass: node_core_1.ProjectService,
49
30
  },
50
31
  {
51
- provide: node_core_1.ApiService,
52
- useFactory: async (project, connectionPoolService, eventEmitter, nodeConfig) => {
53
- const apiService = new starknet_1.StarknetApiService(project, connectionPoolService, eventEmitter, nodeConfig);
54
- await apiService.init();
55
- return apiService;
56
- },
32
+ provide: 'APIService',
33
+ useFactory: starknet_1.StarknetApiService.create,
57
34
  inject: [
58
35
  'ISubqueryProject',
59
36
  node_core_1.ConnectionPoolService,
@@ -61,16 +38,21 @@ exports.TestingFeatureModule = TestingFeatureModule = __decorate([
61
38
  node_core_1.NodeConfig,
62
39
  ],
63
40
  },
64
- schedule_1.SchedulerRegistry,
65
- node_core_1.TestRunner,
66
41
  {
67
- provide: 'IApi',
68
- useExisting: node_core_1.ApiService,
42
+ provide: 'IUnfinalizedBlocksService',
43
+ useClass: node_core_1.UnfinalizedBlocksService,
69
44
  },
45
+ {
46
+ provide: 'IBlockchainService',
47
+ useClass: blockchain_service_1.BlockchainService,
48
+ },
49
+ node_core_1.TestRunner,
70
50
  {
71
51
  provide: 'IIndexerManager',
72
52
  useClass: indexer_manager_1.IndexerManager,
73
53
  },
54
+ node_core_1.DsProcessorService,
55
+ node_core_1.DynamicDsService,
74
56
  ],
75
57
  controllers: [],
76
58
  exports: [node_core_1.TestRunner],
@@ -1 +1 @@
1
- {"version":3,"file":"testing.module.js","sourceRoot":"","sources":["../../src/subcommands/testing.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;AAEnC,2CAAwC;AACxC,yDAA0E;AAC1E,+CAAqE;AACrE,gDAa0B;AAC1B,oDAA+C;AAC/C,oEAAgE;AAEhE,0EAAqE;AACrE,sEAAiE;AACjE,gEAA4D;AAC5D,gEAA4D;AAC5D,oFAAgF;AAChF,0CAAiD;AA+D1C,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;CAAG,CAAA;AAAvB,oDAAoB;+BAApB,oBAAoB;IA5DhC,IAAA,eAAM,EAAC;QACN,SAAS,EAAE;YACT,gCAAoB;YACpB,wBAAY;YACZ;gBACE,OAAO,EAAE,qBAAqB;gBAC9B,UAAU,EAAE,6BAAiB;gBAC7B,MAAM,EAAE,CAAC,sBAAU,EAAE,6BAAa,EAAE,4BAAiB,EAAE,uBAAS,CAAC;aAClE;YACD,6BAAa;YACb,sBAAU;YACV,0BAAc;YACd,0BAAc;YACd,yCAAkB;YAClB,qCAAgB;YAChB,oDAAwB;YACxB,sCAA0B;YAC1B,iCAAqB;YACrB;gBACE,OAAO,EAAE,iBAAiB;gBAC1B,QAAQ,EAAE,gCAAc;aACzB;YACD;gBACE,OAAO,EAAE,sBAAU;gBACnB,UAAU,EAAE,KAAK,EACf,OAAwB,EACxB,qBAAmE,EACnE,YAA2B,EAC3B,UAAsB,EACtB,EAAE;oBACF,MAAM,UAAU,GAAG,IAAI,6BAAkB,CACvC,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,4BAAiB;YACjB,sBAAU;YACV;gBACE,OAAO,EAAE,MAAM;gBACf,WAAW,EAAE,sBAAU;aACxB;YACD;gBACE,OAAO,EAAE,iBAAiB;gBAC1B,QAAQ,EAAE,gCAAc;aACzB;SACF;QACD,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,CAAC,sBAAU,CAAC;KACtB,CAAC;GACW,oBAAoB,CAAG;AAY7B,IAAM,aAAa,GAAnB,MAAM,aAAa;CAAG,CAAA;AAAhB,sCAAa;wBAAb,aAAa;IAVzB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,oBAAQ,CAAC,OAAO,EAAE;YAClB,kCAAe,CAAC,QAAQ,EAAE;YAC1B,kCAAkB,CAAC,OAAO,EAAE;YAC5B,yBAAc,CAAC,OAAO,EAAE;YACxB,oBAAoB;SACrB;QACD,WAAW,EAAE,EAAE;KAChB,CAAC;GACW,aAAa,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, EventEmitterModule } from '@nestjs/event-emitter';\nimport { ScheduleModule, SchedulerRegistry } from '@nestjs/schedule';\nimport {\n ApiService,\n ConnectionPoolService,\n ConnectionPoolStateManager,\n DbModule,\n InMemoryCacheService,\n NodeConfig,\n PoiService,\n PoiSyncService,\n StoreService,\n TestRunner,\n SandboxService,\n storeModelFactory,\n} from '@subql/node-core';\nimport { Sequelize } from '@subql/x-sequelize';\nimport { ConfigureModule } from '../configure/configure.module';\nimport { SubqueryProject } from '../configure/SubqueryProject';\nimport { DsProcessorService } from '../indexer/ds-processor.service';\nimport { DynamicDsService } from '../indexer/dynamic-ds.service';\nimport { IndexerManager } from '../indexer/indexer.manager';\nimport { ProjectService } from '../indexer/project.service';\nimport { UnfinalizedBlocksService } from '../indexer/unfinalizedBlocks.service';\nimport { StarknetApiService } from '../starknet';\nimport { StarknetApiConnection } from '../starknet/api.connection';\n\n@Module({\n providers: [\n InMemoryCacheService,\n StoreService,\n {\n provide: 'IStoreModelProvider',\n useFactory: storeModelFactory,\n inject: [NodeConfig, EventEmitter2, SchedulerRegistry, Sequelize],\n },\n EventEmitter2,\n PoiService,\n PoiSyncService,\n SandboxService,\n DsProcessorService,\n DynamicDsService,\n UnfinalizedBlocksService,\n ConnectionPoolStateManager,\n ConnectionPoolService,\n {\n provide: 'IProjectService',\n useClass: ProjectService,\n },\n {\n provide: ApiService,\n useFactory: async (\n project: SubqueryProject,\n connectionPoolService: ConnectionPoolService<StarknetApiConnection>,\n eventEmitter: EventEmitter2,\n nodeConfig: NodeConfig,\n ) => {\n const apiService = new StarknetApiService(\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 SchedulerRegistry,\n TestRunner,\n {\n provide: 'IApi',\n useExisting: ApiService,\n },\n {\n provide: 'IIndexerManager',\n useClass: IndexerManager,\n },\n ],\n controllers: [],\n exports: [TestRunner],\n})\nexport class TestingFeatureModule {}\n\n@Module({\n imports: [\n DbModule.forRoot(),\n ConfigureModule.register(),\n EventEmitterModule.forRoot(),\n ScheduleModule.forRoot(),\n TestingFeatureModule,\n ],\n controllers: [],\n})\nexport class TestingModule {}\n"]}
1
+ {"version":3,"file":"testing.module.js","sourceRoot":"","sources":["../../src/subcommands/testing.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;AAEnC,2CAAwC;AACxC,yDAA0E;AAC1E,+CAAkD;AAClD,gDAU0B;AAC1B,8DAA0D;AAC1D,oEAAgE;AAChE,gEAA4D;AAC5D,0CAAiD;AAsC1C,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;CAAG,CAAA;AAAvB,oDAAoB;+BAApB,oBAAoB;IApChC,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,6BAAiB,CAAC;QAC5B,SAAS,EAAE;YACT;gBACE,OAAO,EAAE,iBAAiB;gBAC1B,QAAQ,EAAE,0BAAc;aACzB;YACD;gBACE,OAAO,EAAE,YAAY;gBACrB,UAAU,EAAE,6BAAkB,CAAC,MAAM;gBACrC,MAAM,EAAE;oBACN,kBAAkB;oBAClB,iCAAqB;oBACrB,6BAAa;oBACb,sBAAU;iBACX;aACF;YACD;gBACE,OAAO,EAAE,2BAA2B;gBACpC,QAAQ,EAAE,oCAAwB;aACnC;YACD;gBACE,OAAO,EAAE,oBAAoB;gBAC7B,QAAQ,EAAE,sCAAiB;aAC5B;YACD,sBAAU;YACV;gBACE,OAAO,EAAE,iBAAiB;gBAC1B,QAAQ,EAAE,gCAAc;aACzB;YACD,8BAAkB;YAClB,4BAAgB;SACjB;QACD,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,CAAC,sBAAU,CAAC;KACtB,CAAC;GACW,oBAAoB,CAAG;AAY7B,IAAM,aAAa,GAAnB,MAAM,aAAa;CAAG,CAAA;AAAhB,sCAAa;wBAAb,aAAa;IAVzB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,oBAAQ,CAAC,OAAO,EAAE;YAClB,kCAAe,CAAC,QAAQ,EAAE;YAC1B,kCAAkB,CAAC,OAAO,EAAE;YAC5B,yBAAc,CAAC,OAAO,EAAE;YACxB,oBAAoB;SACrB;QACD,WAAW,EAAE,EAAE;KAChB,CAAC;GACW,aAAa,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, EventEmitterModule } from '@nestjs/event-emitter';\nimport { ScheduleModule } from '@nestjs/schedule';\nimport {\n ConnectionPoolService,\n DbModule,\n NodeConfig,\n TestRunner,\n UnfinalizedBlocksService,\n DynamicDsService,\n DsProcessorService,\n ProjectService,\n TestingCoreModule,\n} from '@subql/node-core';\nimport { BlockchainService } from '../blockchain.service';\nimport { ConfigureModule } from '../configure/configure.module';\nimport { IndexerManager } from '../indexer/indexer.manager';\nimport { StarknetApiService } from '../starknet';\n\n@Module({\n imports: [TestingCoreModule],\n providers: [\n {\n provide: 'IProjectService',\n useClass: ProjectService,\n },\n {\n provide: 'APIService',\n useFactory: StarknetApiService.create,\n inject: [\n 'ISubqueryProject',\n ConnectionPoolService,\n EventEmitter2,\n NodeConfig,\n ],\n },\n {\n provide: 'IUnfinalizedBlocksService',\n useClass: UnfinalizedBlocksService,\n },\n {\n provide: 'IBlockchainService',\n useClass: BlockchainService,\n },\n TestRunner,\n {\n provide: 'IIndexerManager',\n useClass: IndexerManager,\n },\n DsProcessorService,\n DynamicDsService,\n ],\n controllers: [],\n exports: [TestRunner],\n})\nexport class TestingFeatureModule {}\n\n@Module({\n imports: [\n DbModule.forRoot(),\n ConfigureModule.register(),\n EventEmitterModule.forRoot(),\n ScheduleModule.forRoot(),\n TestingFeatureModule,\n ],\n controllers: [],\n})\nexport class TestingModule {}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"testing.service.js","sourceRoot":"","sources":["../../src/subcommands/testing.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,2CAAoD;AACpD,uCAA2C;AAE3C,gDAM0B;AAU1B,qDAAiD;AAG1C,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,0BAKnC;IACC,YACE,UAAsB,EACM,OAAwB;QAEpD,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,aAAa;QAWjB,MAAM,WAAW,GAAG,MAAM,kBAAW,CAAC,wBAAwB,CAC5D,8BAAa,EACb;YACE,MAAM,EAAE,IAAI,sBAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;SAChD,CACF,CAAC;QAEF,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;QAEzB,MAAM,cAAc,GAAmB,WAAW,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAE1E,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QAE5B,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,sBAAU,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,UAAU,CACd,KAA2B,EAC3B,OAAe,EACf,cAA8B;QAE9B,MAAM,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;IACzE,CAAC;CACF,CAAA;AA/CY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;IASR,WAAA,IAAA,eAAM,EAAC,kBAAkB,CAAC,CAAA;qCADf,sBAAU;GAPb,cAAc,CA+C1B","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Inject, Injectable } from '@nestjs/common';\nimport { NestFactory } from '@nestjs/core';\n\nimport {\n NodeConfig,\n TestingService as BaseTestingService,\n NestLogger,\n TestRunner,\n IBlock,\n} from '@subql/node-core';\nimport {\n StarknetProjectDs,\n SubqueryProject,\n} from '../configure/SubqueryProject';\nimport { IndexerManager } from '../indexer/indexer.manager';\nimport { ProjectService } from '../indexer/project.service';\nimport { BlockContent } from '../indexer/types';\nimport { StarknetApi } from '../starknet';\nimport SafeStarknetProvider from '../starknet/safe-api';\nimport { TestingModule } from './testing.module';\n\n@Injectable()\nexport class TestingService extends BaseTestingService<\n StarknetApi,\n SafeStarknetProvider,\n BlockContent,\n StarknetProjectDs\n> {\n constructor(\n nodeConfig: NodeConfig,\n @Inject('ISubqueryProject') project: SubqueryProject,\n ) {\n super(nodeConfig, project);\n }\n\n async getTestRunner(): Promise<\n [\n close: () => Promise<void>,\n runner: TestRunner<\n StarknetApi,\n SafeStarknetProvider,\n BlockContent,\n StarknetProjectDs\n >,\n ]\n > {\n const testContext = await NestFactory.createApplicationContext(\n TestingModule,\n {\n logger: new NestLogger(!!this.nodeConfig.debug),\n },\n );\n\n await testContext.init();\n\n const projectService: ProjectService = testContext.get('IProjectService');\n\n await projectService.init();\n\n return [testContext.close.bind(testContext), testContext.get(TestRunner)];\n }\n\n async indexBlock(\n block: IBlock<BlockContent>,\n handler: string,\n indexerManager: IndexerManager,\n ): Promise<void> {\n await indexerManager.indexBlock(block, this.getDsWithHandler(handler));\n }\n}\n"]}
1
+ {"version":3,"file":"testing.service.js","sourceRoot":"","sources":["../../src/subcommands/testing.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,2CAAoD;AACpD,uCAA2C;AAE3C,gDAO0B;AAS1B,qDAAiD;AAG1C,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,0BAKnC;IACC,YACE,UAAsB,EACM,OAAwB;QAEpD,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,aAAa;QAWjB,MAAM,WAAW,GAAG,MAAM,kBAAW,CAAC,wBAAwB,CAC5D,8BAAa,EACb;YACE,MAAM,EAAE,IAAI,sBAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;SAChD,CACF,CAAC;QAEF,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;QAEzB,MAAM,cAAc,GAAmB,WAAW,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAE1E,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QAE5B,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,sBAAU,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,UAAU,CACd,KAA2B,EAC3B,OAAe,EACf,cAA8B;QAE9B,MAAM,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;IACzE,CAAC;CACF,CAAA;AA/CY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;IASR,WAAA,IAAA,eAAM,EAAC,kBAAkB,CAAC,CAAA;qCADf,sBAAU;GAPb,cAAc,CA+C1B","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Inject, Injectable } from '@nestjs/common';\nimport { NestFactory } from '@nestjs/core';\n\nimport {\n NodeConfig,\n TestingService as BaseTestingService,\n NestLogger,\n TestRunner,\n IBlock,\n ProjectService,\n} from '@subql/node-core';\nimport {\n StarknetProjectDs,\n SubqueryProject,\n} from '../configure/SubqueryProject';\nimport { IndexerManager } from '../indexer/indexer.manager';\nimport { BlockContent } from '../indexer/types';\nimport { StarknetApi } from '../starknet';\nimport SafeStarknetProvider from '../starknet/safe-api';\nimport { TestingModule } from './testing.module';\n\n@Injectable()\nexport class TestingService extends BaseTestingService<\n StarknetApi,\n SafeStarknetProvider,\n BlockContent,\n StarknetProjectDs\n> {\n constructor(\n nodeConfig: NodeConfig,\n @Inject('ISubqueryProject') project: SubqueryProject,\n ) {\n super(nodeConfig, project);\n }\n\n async getTestRunner(): Promise<\n [\n close: () => Promise<void>,\n runner: TestRunner<\n StarknetApi,\n SafeStarknetProvider,\n BlockContent,\n StarknetProjectDs\n >,\n ]\n > {\n const testContext = await NestFactory.createApplicationContext(\n TestingModule,\n {\n logger: new NestLogger(!!this.nodeConfig.debug),\n },\n );\n\n await testContext.init();\n\n const projectService: ProjectService = testContext.get('IProjectService');\n\n await projectService.init();\n\n return [testContext.close.bind(testContext), testContext.get(TestRunner)];\n }\n\n async indexBlock(\n block: IBlock<BlockContent>,\n handler: string,\n indexerManager: IndexerManager,\n ): Promise<void> {\n await indexerManager.indexBlock(block, this.getDsWithHandler(handler));\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@subql/node-starknet",
3
- "version": "5.7.3-1",
3
+ "version": "5.8.0",
4
4
  "description": "",
5
5
  "author": "Jay Ji",
6
6
  "license": "GPL-3.0",
@@ -19,16 +19,16 @@
19
19
  "subql-node-starknet": "./bin/run"
20
20
  },
21
21
  "dependencies": {
22
- "@nestjs/common": "^9.4.0",
23
- "@nestjs/core": "^9.4.0",
22
+ "@nestjs/common": "^11.0.10",
23
+ "@nestjs/core": "^11.0.10",
24
24
  "@nestjs/event-emitter": "^2.0.0",
25
- "@nestjs/platform-express": "^9.4.0",
26
- "@nestjs/schedule": "^3.0.1",
25
+ "@nestjs/platform-express": "^11.0.10",
26
+ "@nestjs/schedule": "^5.0.1",
27
27
  "@subql/common": "^5.4.0",
28
- "@subql/common-starknet": "1.0.3-0",
29
- "@subql/node-core": "16.1.1-1",
28
+ "@subql/common-starknet": "1.1.0",
29
+ "@subql/node-core": "^17.0.2",
30
30
  "@subql/testing": "^2.2.2",
31
- "@subql/types-starknet": "1.0.3-0",
31
+ "@subql/types-starknet": "1.1.0",
32
32
  "cacheable-lookup": "6",
33
33
  "eventemitter2": "^6.4.5",
34
34
  "json5": "^2.2.3",
@@ -42,8 +42,8 @@
42
42
  "@subql/utils": "*"
43
43
  },
44
44
  "devDependencies": {
45
- "@nestjs/schematics": "^9.2.0",
46
- "@nestjs/testing": "^9.4.0",
45
+ "@nestjs/schematics": "^11.0.1",
46
+ "@nestjs/testing": "^11.0.10",
47
47
  "@types/express": "^4.17.13",
48
48
  "@types/jest": "^27.4.0",
49
49
  "@types/lodash": "^4.14.178",
@@ -59,6 +59,5 @@
59
59
  "files": [
60
60
  "/dist",
61
61
  "/bin"
62
- ],
63
- "stableVersion": "5.7.3-0"
62
+ ]
64
63
  }
@@ -1,15 +0,0 @@
1
- import { OnApplicationShutdown } from '@nestjs/common';
2
- import { EventEmitter2 } from '@nestjs/event-emitter';
3
- import { NodeConfig, StoreService, IProjectService, BlockDispatcher, ProcessBlockResponse, ApiService, IProjectUpgradeService, PoiSyncService, IBlock, IStoreModelProvider } from '@subql/node-core';
4
- import { StarknetProjectDs, SubqueryProject } from '../../configure/SubqueryProject';
5
- import { IndexerManager } from '../indexer.manager';
6
- import { BlockContent } from '../types';
7
- /**
8
- * @description Intended to behave the same as WorkerBlockDispatcherService but doesn't use worker threads or any parallel processing
9
- */
10
- export declare class BlockDispatcherService extends BlockDispatcher<BlockContent, StarknetProjectDs> implements OnApplicationShutdown {
11
- private indexerManager;
12
- constructor(apiService: ApiService, nodeConfig: NodeConfig, indexerManager: IndexerManager, eventEmitter: EventEmitter2, projectService: IProjectService<StarknetProjectDs>, projectUpgradeService: IProjectUpgradeService, storeService: StoreService, storeModelProvider: IStoreModelProvider, poiSyncService: PoiSyncService, project: SubqueryProject);
13
- protected indexBlock(block: IBlock<BlockContent>): Promise<ProcessBlockResponse>;
14
- protected getBlockSize(block: IBlock<BlockContent>): number;
15
- }
@@ -1,51 +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.BlockDispatcherService = void 0;
18
- const common_1 = require("@nestjs/common");
19
- const event_emitter_1 = require("@nestjs/event-emitter");
20
- const node_core_1 = require("@subql/node-core");
21
- const indexer_manager_1 = require("../indexer.manager");
22
- const types_1 = require("../types");
23
- /**
24
- * @description Intended to behave the same as WorkerBlockDispatcherService but doesn't use worker threads or any parallel processing
25
- */
26
- let BlockDispatcherService = class BlockDispatcherService extends node_core_1.BlockDispatcher {
27
- indexerManager;
28
- constructor(apiService, nodeConfig, indexerManager, eventEmitter, projectService, projectUpgradeService, storeService, storeModelProvider, poiSyncService, project) {
29
- super(nodeConfig, eventEmitter, projectService, projectUpgradeService, storeService, storeModelProvider, poiSyncService, project, apiService.fetchBlocks.bind(apiService));
30
- this.indexerManager = indexerManager;
31
- }
32
- async indexBlock(block) {
33
- return this.indexerManager.indexBlock(block, await this.projectService.getDataSources(block.getHeader().blockHeight));
34
- }
35
- getBlockSize(block) {
36
- return (0, types_1.getBlockSize)(block.block);
37
- }
38
- };
39
- exports.BlockDispatcherService = BlockDispatcherService;
40
- exports.BlockDispatcherService = BlockDispatcherService = __decorate([
41
- (0, common_1.Injectable)(),
42
- __param(4, (0, common_1.Inject)('IProjectService')),
43
- __param(5, (0, common_1.Inject)('IProjectUpgradeService')),
44
- __param(7, (0, common_1.Inject)('IStoreModelProvider')),
45
- __param(9, (0, common_1.Inject)('ISubqueryProject')),
46
- __metadata("design:paramtypes", [node_core_1.ApiService,
47
- node_core_1.NodeConfig,
48
- indexer_manager_1.IndexerManager,
49
- event_emitter_1.EventEmitter2, Object, Object, node_core_1.StoreService, Object, node_core_1.PoiSyncService, Object])
50
- ], BlockDispatcherService);
51
- //# sourceMappingURL=block-dispatcher.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"block-dispatcher.service.js","sourceRoot":"","sources":["../../../src/indexer/blockDispatcher/block-dispatcher.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,2CAA2E;AAC3E,yDAAsD;AACtD,gDAW0B;AAK1B,wDAAoD;AACpD,oCAAsD;AAEtD;;GAEG;AAEI,IAAM,sBAAsB,GAA5B,MAAM,sBACX,SAAQ,2BAAgD;IAM9C;IAHV,YACE,UAAsB,EACtB,UAAsB,EACd,cAA8B,EACtC,YAA2B,EAE3B,cAAkD,EAElD,qBAA6C,EAC7C,YAA0B,EACK,kBAAuC,EACtE,cAA8B,EACF,OAAwB;QAEpD,KAAK,CACH,UAAU,EACV,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,OAAO,EACP,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CACxC,CAAC;QArBM,mBAAc,GAAd,cAAc,CAAgB;IAsBxC,CAAC;IAES,KAAK,CAAC,UAAU,CACxB,KAA2B;QAE3B,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CACnC,KAAK,EACL,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,WAAW,CAAC,CACxE,CAAC;IACJ,CAAC;IAES,YAAY,CAAC,KAA2B;QAChD,OAAO,IAAA,oBAAY,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;CACF,CAAA;AA3CY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,mBAAU,GAAE;IAUR,WAAA,IAAA,eAAM,EAAC,iBAAiB,CAAC,CAAA;IAEzB,WAAA,IAAA,eAAM,EAAC,wBAAwB,CAAC,CAAA;IAGhC,WAAA,IAAA,eAAM,EAAC,qBAAqB,CAAC,CAAA;IAE7B,WAAA,IAAA,eAAM,EAAC,kBAAkB,CAAC,CAAA;qCAXf,sBAAU;QACV,sBAAU;QACE,gCAAc;QACxB,6BAAa,kBAKb,wBAAY,UAEV,0BAAc;GAfrB,sBAAsB,CA2ClC","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Inject, Injectable, OnApplicationShutdown } from '@nestjs/common';\nimport { EventEmitter2 } from '@nestjs/event-emitter';\nimport {\n NodeConfig,\n StoreService,\n IProjectService,\n BlockDispatcher,\n ProcessBlockResponse,\n ApiService,\n IProjectUpgradeService,\n PoiSyncService,\n IBlock,\n IStoreModelProvider,\n} from '@subql/node-core';\nimport {\n StarknetProjectDs,\n SubqueryProject,\n} from '../../configure/SubqueryProject';\nimport { IndexerManager } from '../indexer.manager';\nimport { BlockContent, getBlockSize } from '../types';\n\n/**\n * @description Intended to behave the same as WorkerBlockDispatcherService but doesn't use worker threads or any parallel processing\n */\n@Injectable()\nexport class BlockDispatcherService\n extends BlockDispatcher<BlockContent, StarknetProjectDs>\n implements OnApplicationShutdown\n{\n constructor(\n apiService: ApiService,\n nodeConfig: NodeConfig,\n private indexerManager: IndexerManager,\n eventEmitter: EventEmitter2,\n @Inject('IProjectService')\n projectService: IProjectService<StarknetProjectDs>,\n @Inject('IProjectUpgradeService')\n projectUpgradeService: IProjectUpgradeService,\n storeService: StoreService,\n @Inject('IStoreModelProvider') storeModelProvider: IStoreModelProvider,\n poiSyncService: PoiSyncService,\n @Inject('ISubqueryProject') project: SubqueryProject,\n ) {\n super(\n nodeConfig,\n eventEmitter,\n projectService,\n projectUpgradeService,\n storeService,\n storeModelProvider,\n poiSyncService,\n project,\n apiService.fetchBlocks.bind(apiService),\n );\n }\n\n protected async indexBlock(\n block: IBlock<BlockContent>,\n ): Promise<ProcessBlockResponse> {\n return this.indexerManager.indexBlock(\n block,\n await this.projectService.getDataSources(block.getHeader().blockHeight),\n );\n }\n\n protected getBlockSize(block: IBlock<BlockContent>): number {\n return getBlockSize(block.block);\n }\n}\n"]}
@@ -1,4 +0,0 @@
1
- import { BlockDispatcherService } from './block-dispatcher.service';
2
- import { IStarknetBlockDispatcher } from './starknet-block-dispatcher';
3
- import { WorkerBlockDispatcherService } from './worker-block-dispatcher.service';
4
- export { BlockDispatcherService, WorkerBlockDispatcherService, IStarknetBlockDispatcher, };
@@ -1,10 +0,0 @@
1
- "use strict";
2
- // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
3
- // SPDX-License-Identifier: GPL-3.0
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.WorkerBlockDispatcherService = exports.BlockDispatcherService = void 0;
6
- const block_dispatcher_service_1 = require("./block-dispatcher.service");
7
- Object.defineProperty(exports, "BlockDispatcherService", { enumerable: true, get: function () { return block_dispatcher_service_1.BlockDispatcherService; } });
8
- const worker_block_dispatcher_service_1 = require("./worker-block-dispatcher.service");
9
- Object.defineProperty(exports, "WorkerBlockDispatcherService", { enumerable: true, get: function () { return worker_block_dispatcher_service_1.WorkerBlockDispatcherService; } });
10
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/indexer/blockDispatcher/index.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;AAEnC,yEAAoE;AAKlE,uGALO,iDAAsB,OAKP;AAHxB,uFAAiF;AAI/E,6GAJO,8DAA4B,OAIP","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { BlockDispatcherService } from './block-dispatcher.service';\nimport { IStarknetBlockDispatcher } from './starknet-block-dispatcher';\nimport { WorkerBlockDispatcherService } from './worker-block-dispatcher.service';\n\nexport {\n BlockDispatcherService,\n WorkerBlockDispatcherService,\n IStarknetBlockDispatcher,\n};\n"]}
@@ -1,5 +0,0 @@
1
- import { IBlockDispatcher } from '@subql/node-core';
2
- import { StarknetBlock } from '@subql/types-starknet';
3
- export interface IStarknetBlockDispatcher extends IBlockDispatcher<StarknetBlock> {
4
- init(onDynamicDsCreated: (height: number) => Promise<void>): Promise<void>;
5
- }
@@ -1,5 +0,0 @@
1
- "use strict";
2
- // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
3
- // SPDX-License-Identifier: GPL-3.0
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- //# sourceMappingURL=starknet-block-dispatcher.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"starknet-block-dispatcher.js","sourceRoot":"","sources":["../../../src/indexer/blockDispatcher/starknet-block-dispatcher.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { IBlockDispatcher } from '@subql/node-core';\nimport { StarknetBlock } from '@subql/types-starknet';\n\nexport interface IStarknetBlockDispatcher\n extends IBlockDispatcher<StarknetBlock> {\n init(onDynamicDsCreated: (height: number) => Promise<void>): Promise<void>;\n}\n"]}
@@ -1,17 +0,0 @@
1
- import { OnApplicationShutdown } from '@nestjs/common';
2
- import { EventEmitter2 } from '@nestjs/event-emitter';
3
- import { NodeConfig, StoreService, IProjectService, WorkerBlockDispatcher, ConnectionPoolStateManager, IProjectUpgradeService, PoiSyncService, InMemoryCacheService, MonitorServiceInterface, IStoreModelProvider, Header } from '@subql/node-core';
4
- import { StarknetBlock } from '@subql/types-starknet';
5
- import { StarknetProjectDs, SubqueryProject } from '../../configure/SubqueryProject';
6
- import { StarknetApiConnection } from '../../starknet/api.connection';
7
- import { DynamicDsService } from '../dynamic-ds.service';
8
- import { UnfinalizedBlocksService } from '../unfinalizedBlocks.service';
9
- import { IIndexerWorker } from '../worker/worker';
10
- type IndexerWorker = IIndexerWorker & {
11
- terminate: () => Promise<number>;
12
- };
13
- export declare class WorkerBlockDispatcherService extends WorkerBlockDispatcher<StarknetProjectDs, IndexerWorker, StarknetBlock> implements OnApplicationShutdown {
14
- constructor(nodeConfig: NodeConfig, eventEmitter: EventEmitter2, projectService: IProjectService<StarknetProjectDs>, projectUpgadeService: IProjectUpgradeService, cacheService: InMemoryCacheService, storeService: StoreService, storeModelProvider: IStoreModelProvider, poiSyncService: PoiSyncService, project: SubqueryProject, dynamicDsService: DynamicDsService, unfinalizedBlocksSevice: UnfinalizedBlocksService, connectionPoolState: ConnectionPoolStateManager<StarknetApiConnection>, monitorService?: MonitorServiceInterface);
15
- protected fetchBlock(worker: IndexerWorker, height: number): Promise<Header>;
16
- }
17
- export {};
@@ -1,48 +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
- var __importDefault = (this && this.__importDefault) || function (mod) {
17
- return (mod && mod.__esModule) ? mod : { "default": mod };
18
- };
19
- Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.WorkerBlockDispatcherService = void 0;
21
- const path_1 = __importDefault(require("path"));
22
- const common_1 = require("@nestjs/common");
23
- const event_emitter_1 = require("@nestjs/event-emitter");
24
- const node_core_1 = require("@subql/node-core");
25
- const dynamic_ds_service_1 = require("../dynamic-ds.service");
26
- const unfinalizedBlocks_service_1 = require("../unfinalizedBlocks.service");
27
- let WorkerBlockDispatcherService = class WorkerBlockDispatcherService extends node_core_1.WorkerBlockDispatcher {
28
- constructor(nodeConfig, eventEmitter, projectService, projectUpgadeService, cacheService, storeService, storeModelProvider, poiSyncService, project, dynamicDsService, unfinalizedBlocksSevice, connectionPoolState, monitorService) {
29
- super(nodeConfig, eventEmitter, projectService, projectUpgadeService, storeService, storeModelProvider, poiSyncService, project, () => (0, node_core_1.createIndexerWorker)(path_1.default.resolve(__dirname, '../../../dist/indexer/worker/worker.js'), [], storeService.getStore(), cacheService.getCache(), dynamicDsService, unfinalizedBlocksSevice, connectionPoolState, project.root, projectService.startHeight, monitorService), monitorService);
30
- }
31
- async fetchBlock(worker, height) {
32
- return worker.fetchBlock(height, 0 /* Unused with starknet*/);
33
- }
34
- };
35
- exports.WorkerBlockDispatcherService = WorkerBlockDispatcherService;
36
- exports.WorkerBlockDispatcherService = WorkerBlockDispatcherService = __decorate([
37
- (0, common_1.Injectable)(),
38
- __param(2, (0, common_1.Inject)('IProjectService')),
39
- __param(3, (0, common_1.Inject)('IProjectUpgradeService')),
40
- __param(6, (0, common_1.Inject)('IStoreModelProvider')),
41
- __param(8, (0, common_1.Inject)('ISubqueryProject')),
42
- __metadata("design:paramtypes", [node_core_1.NodeConfig,
43
- event_emitter_1.EventEmitter2, Object, Object, node_core_1.InMemoryCacheService,
44
- node_core_1.StoreService, Object, node_core_1.PoiSyncService, Object, dynamic_ds_service_1.DynamicDsService,
45
- unfinalizedBlocks_service_1.UnfinalizedBlocksService,
46
- node_core_1.ConnectionPoolStateManager, Object])
47
- ], WorkerBlockDispatcherService);
48
- //# sourceMappingURL=worker-block-dispatcher.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker-block-dispatcher.service.js","sourceRoot":"","sources":["../../../src/indexer/blockDispatcher/worker-block-dispatcher.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;;;;AAEnC,gDAAwB;AACxB,2CAA2E;AAC3E,yDAAsD;AACtD,gDAa0B;AAO1B,8DAAyD;AAEzD,4EAAwE;AAQjE,IAAM,4BAA4B,GAAlC,MAAM,4BACX,SAAQ,iCAAsE;IAG9E,YACE,UAAsB,EACtB,YAA2B,EAE3B,cAAkD,EAElD,oBAA4C,EAC5C,YAAkC,EAClC,YAA0B,EACK,kBAAuC,EACtE,cAA8B,EACF,OAAwB,EACpD,gBAAkC,EAClC,uBAAiD,EACjD,mBAAsE,EACtE,cAAwC;QAExC,KAAK,CACH,UAAU,EACV,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,OAAO,EACP,GAAG,EAAE,CACH,IAAA,+BAAmB,EAMjB,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,wCAAwC,CAAC,EACjE,EAAE,EACF,YAAY,CAAC,QAAQ,EAAE,EACvB,YAAY,CAAC,QAAQ,EAAE,EACvB,gBAAgB,EAChB,uBAAuB,EACvB,mBAAmB,EACnB,OAAO,CAAC,IAAI,EACZ,cAAc,CAAC,WAAW,EAC1B,cAAc,CACf,EACH,cAAc,CACf,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,UAAU,CACxB,MAAqB,EACrB,MAAc;QAEd,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,yBAAyB,CAAC,CAAC;IAChE,CAAC;CACF,CAAA;AA1DY,oEAA4B;uCAA5B,4BAA4B;IADxC,IAAA,mBAAU,GAAE;IAQR,WAAA,IAAA,eAAM,EAAC,iBAAiB,CAAC,CAAA;IAEzB,WAAA,IAAA,eAAM,EAAC,wBAAwB,CAAC,CAAA;IAIhC,WAAA,IAAA,eAAM,EAAC,qBAAqB,CAAC,CAAA;IAE7B,WAAA,IAAA,eAAM,EAAC,kBAAkB,CAAC,CAAA;qCAVf,sBAAU;QACR,6BAAa,kBAKb,gCAAoB;QACpB,wBAAY,UAEV,0BAAc,UAEZ,qCAAgB;QACT,oDAAwB;QAC5B,sCAA0B;GAlBtC,4BAA4B,CA0DxC","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport path from 'path';\nimport { Inject, Injectable, OnApplicationShutdown } from '@nestjs/common';\nimport { EventEmitter2 } from '@nestjs/event-emitter';\nimport {\n NodeConfig,\n StoreService,\n IProjectService,\n WorkerBlockDispatcher,\n ConnectionPoolStateManager,\n IProjectUpgradeService,\n PoiSyncService,\n InMemoryCacheService,\n createIndexerWorker,\n MonitorServiceInterface,\n IStoreModelProvider,\n Header,\n} from '@subql/node-core';\nimport { StarknetBlock } from '@subql/types-starknet';\nimport {\n StarknetProjectDs,\n SubqueryProject,\n} from '../../configure/SubqueryProject';\nimport { StarknetApiConnection } from '../../starknet/api.connection';\nimport { DynamicDsService } from '../dynamic-ds.service';\nimport { BlockContent } from '../types';\nimport { UnfinalizedBlocksService } from '../unfinalizedBlocks.service';\nimport { IIndexerWorker } from '../worker/worker';\n\ntype IndexerWorker = IIndexerWorker & {\n terminate: () => Promise<number>;\n};\n\n@Injectable()\nexport class WorkerBlockDispatcherService\n extends WorkerBlockDispatcher<StarknetProjectDs, IndexerWorker, StarknetBlock>\n implements OnApplicationShutdown\n{\n constructor(\n nodeConfig: NodeConfig,\n eventEmitter: EventEmitter2,\n @Inject('IProjectService')\n projectService: IProjectService<StarknetProjectDs>,\n @Inject('IProjectUpgradeService')\n projectUpgadeService: IProjectUpgradeService,\n cacheService: InMemoryCacheService,\n storeService: StoreService,\n @Inject('IStoreModelProvider') storeModelProvider: IStoreModelProvider,\n poiSyncService: PoiSyncService,\n @Inject('ISubqueryProject') project: SubqueryProject,\n dynamicDsService: DynamicDsService,\n unfinalizedBlocksSevice: UnfinalizedBlocksService,\n connectionPoolState: ConnectionPoolStateManager<StarknetApiConnection>,\n monitorService?: MonitorServiceInterface,\n ) {\n super(\n nodeConfig,\n eventEmitter,\n projectService,\n projectUpgadeService,\n storeService,\n storeModelProvider,\n poiSyncService,\n project,\n () =>\n createIndexerWorker<\n IIndexerWorker,\n StarknetApiConnection,\n BlockContent,\n StarknetProjectDs\n >(\n path.resolve(__dirname, '../../../dist/indexer/worker/worker.js'),\n [],\n storeService.getStore(),\n cacheService.getCache(),\n dynamicDsService,\n unfinalizedBlocksSevice,\n connectionPoolState,\n project.root,\n projectService.startHeight,\n monitorService,\n ),\n monitorService,\n );\n }\n\n protected async fetchBlock(\n worker: IndexerWorker,\n height: number,\n ): Promise<Header> {\n return worker.fetchBlock(height, 0 /* Unused with starknet*/);\n }\n}\n"]}
@@ -1,6 +0,0 @@
1
- import { isCustomDs, StarknetCustomDataSource, SubqlDatasourceProcessor } from '@subql/common-starknet';
2
- import { BaseDsProcessorService } from '@subql/node-core';
3
- import { SubqlDatasource as StarknetDataSource } from '@subql/types-starknet';
4
- export declare class DsProcessorService extends BaseDsProcessorService<StarknetDataSource, StarknetCustomDataSource<string>, SubqlDatasourceProcessor<string, Record<string, unknown>>> {
5
- protected isCustomDs: typeof isCustomDs;
6
- }
@@ -1,22 +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
- Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.DsProcessorService = void 0;
12
- const common_1 = require("@nestjs/common");
13
- const common_starknet_1 = require("@subql/common-starknet");
14
- const node_core_1 = require("@subql/node-core");
15
- let DsProcessorService = class DsProcessorService extends node_core_1.BaseDsProcessorService {
16
- isCustomDs = common_starknet_1.isCustomDs;
17
- };
18
- exports.DsProcessorService = DsProcessorService;
19
- exports.DsProcessorService = DsProcessorService = __decorate([
20
- (0, common_1.Injectable)()
21
- ], DsProcessorService);
22
- //# sourceMappingURL=ds-processor.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ds-processor.service.js","sourceRoot":"","sources":["../../src/indexer/ds-processor.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;AAEnC,2CAA4C;AAC5C,4DAIgC;AAChC,gDAA0D;AAInD,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,kCAIvC;IACW,UAAU,GAAG,4BAAU,CAAC;CACnC,CAAA;AANY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;GACA,kBAAkB,CAM9B","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Injectable } from '@nestjs/common';\nimport {\n isCustomDs,\n StarknetCustomDataSource,\n SubqlDatasourceProcessor,\n} from '@subql/common-starknet';\nimport { BaseDsProcessorService } from '@subql/node-core';\nimport { SubqlDatasource as StarknetDataSource } from '@subql/types-starknet';\n\n@Injectable()\nexport class DsProcessorService extends BaseDsProcessorService<\n StarknetDataSource,\n StarknetCustomDataSource<string>,\n SubqlDatasourceProcessor<string, Record<string, unknown>>\n> {\n protected isCustomDs = isCustomDs;\n}\n"]}
@@ -1,8 +0,0 @@
1
- import { DatasourceParams, DynamicDsService as BaseDynamicDsService } from '@subql/node-core';
2
- import { StarknetProjectDs, SubqueryProject } from '../configure/SubqueryProject';
3
- import { DsProcessorService } from './ds-processor.service';
4
- export declare class DynamicDsService extends BaseDynamicDsService<StarknetProjectDs, SubqueryProject> {
5
- private readonly dsProcessorService;
6
- constructor(dsProcessorService: DsProcessorService, project: SubqueryProject);
7
- protected getDatasource(params: DatasourceParams): Promise<StarknetProjectDs>;
8
- }
@@ -1,69 +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.DynamicDsService = void 0;
18
- const common_1 = require("@nestjs/common");
19
- const common_starknet_1 = require("@subql/common-starknet");
20
- const node_core_1 = require("@subql/node-core");
21
- const class_transformer_1 = require("class-transformer");
22
- const class_validator_1 = require("class-validator");
23
- const ds_processor_service_1 = require("./ds-processor.service");
24
- let DynamicDsService = class DynamicDsService extends node_core_1.DynamicDsService {
25
- dsProcessorService;
26
- constructor(dsProcessorService, project) {
27
- super(project);
28
- this.dsProcessorService = dsProcessorService;
29
- }
30
- async getDatasource(params) {
31
- const dsObj = this.getTemplate(params.templateName, params.startBlock);
32
- try {
33
- if ((0, common_starknet_1.isCustomDs)(dsObj)) {
34
- dsObj.processor.options = {
35
- ...dsObj.processor.options,
36
- ...params.args,
37
- };
38
- await this.dsProcessorService.validateCustomDs([dsObj]);
39
- }
40
- else if ((0, common_starknet_1.isRuntimeDs)(dsObj)) {
41
- dsObj.options = {
42
- ...dsObj.options,
43
- ...params.args,
44
- };
45
- const parsedDs = (0, class_transformer_1.plainToClass)(common_starknet_1.StarknetRuntimeDataSourceImpl, dsObj);
46
- const errors = (0, class_validator_1.validateSync)(parsedDs, {
47
- whitelist: true,
48
- forbidNonWhitelisted: false,
49
- });
50
- if (errors.length) {
51
- throw new Error(`Dynamic ds is invalid\n${errors
52
- .map((e) => e.toString())
53
- .join('\n')}`);
54
- }
55
- }
56
- return dsObj;
57
- }
58
- catch (e) {
59
- throw new Error(`Unable to create dynamic datasource.\n ${e.message}`);
60
- }
61
- }
62
- };
63
- exports.DynamicDsService = DynamicDsService;
64
- exports.DynamicDsService = DynamicDsService = __decorate([
65
- (0, common_1.Injectable)(),
66
- __param(1, (0, common_1.Inject)('ISubqueryProject')),
67
- __metadata("design:paramtypes", [ds_processor_service_1.DsProcessorService, Object])
68
- ], DynamicDsService);
69
- //# sourceMappingURL=dynamic-ds.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dynamic-ds.service.js","sourceRoot":"","sources":["../../src/indexer/dynamic-ds.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,2CAAoD;AACpD,4DAIgC;AAChC,gDAG0B;AAC1B,yDAAiD;AACjD,qDAA+C;AAK/C,iEAA4D;AAGrD,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,4BAGrC;IAEoB;IADnB,YACmB,kBAAsC,EAC3B,OAAwB;QAEpD,KAAK,CAAC,OAAO,CAAC,CAAC;QAHE,uBAAkB,GAAlB,kBAAkB,CAAoB;IAIzD,CAAC;IAES,KAAK,CAAC,aAAa,CAC3B,MAAwB;QAExB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAC5B,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,UAAU,CAClB,CAAC;QAEF,IAAI,CAAC;YACH,IAAI,IAAA,4BAAU,EAAC,KAAK,CAAC,EAAE,CAAC;gBACtB,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG;oBACxB,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO;oBAC1B,GAAG,MAAM,CAAC,IAAI;iBACf,CAAC;gBACF,MAAM,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1D,CAAC;iBAAM,IAAI,IAAA,6BAAW,EAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,KAAK,CAAC,OAAO,GAAG;oBACd,GAAG,KAAK,CAAC,OAAO;oBAChB,GAAG,MAAM,CAAC,IAAI;iBACf,CAAC;gBAEF,MAAM,QAAQ,GAAG,IAAA,gCAAY,EAAC,+CAA6B,EAAE,KAAK,CAAC,CAAC;gBAEpE,MAAM,MAAM,GAAG,IAAA,8BAAY,EAAC,QAAQ,EAAE;oBACpC,SAAS,EAAE,IAAI;oBACf,oBAAoB,EAAE,KAAK;iBAC5B,CAAC,CAAC;gBACH,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBAClB,MAAM,IAAI,KAAK,CACb,0BAA0B,MAAM;yBAC7B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;yBACxB,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;CACF,CAAA;AAnDY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;IAOR,WAAA,IAAA,eAAM,EAAC,kBAAkB,CAAC,CAAA;qCADU,yCAAkB;GAL9C,gBAAgB,CAmD5B","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 StarknetRuntimeDataSourceImpl,\n isCustomDs,\n isRuntimeDs,\n} from '@subql/common-starknet';\nimport {\n DatasourceParams,\n DynamicDsService as BaseDynamicDsService,\n} from '@subql/node-core';\nimport { plainToClass } from 'class-transformer';\nimport { validateSync } from 'class-validator';\nimport {\n StarknetProjectDs,\n SubqueryProject,\n} from '../configure/SubqueryProject';\nimport { DsProcessorService } from './ds-processor.service';\n\n@Injectable()\nexport class DynamicDsService extends BaseDynamicDsService<\n StarknetProjectDs,\n SubqueryProject\n> {\n constructor(\n private readonly dsProcessorService: DsProcessorService,\n @Inject('ISubqueryProject') project: SubqueryProject,\n ) {\n super(project);\n }\n\n protected async getDatasource(\n params: DatasourceParams,\n ): Promise<StarknetProjectDs> {\n const dsObj = this.getTemplate<StarknetProjectDs>(\n params.templateName,\n params.startBlock,\n );\n\n try {\n if (isCustomDs(dsObj)) {\n dsObj.processor.options = {\n ...dsObj.processor.options,\n ...params.args,\n };\n await this.dsProcessorService.validateCustomDs([dsObj]);\n } else if (isRuntimeDs(dsObj)) {\n dsObj.options = {\n ...dsObj.options,\n ...params.args,\n };\n\n const parsedDs = plainToClass(StarknetRuntimeDataSourceImpl, dsObj);\n\n const errors = validateSync(parsedDs, {\n whitelist: true,\n forbidNonWhitelisted: false,\n });\n if (errors.length) {\n throw new Error(\n `Dynamic ds is invalid\\n${errors\n .map((e) => e.toString())\n .join('\\n')}`,\n );\n }\n }\n return dsObj;\n } catch (e: any) {\n throw new Error(`Unable to create dynamic datasource.\\n ${e.message}`);\n }\n }\n}\n"]}
@@ -1,20 +0,0 @@
1
- import { EventEmitter2 } from '@nestjs/event-emitter';
2
- import { SchedulerRegistry } from '@nestjs/schedule';
3
- import { NodeConfig, BaseFetchService, ApiService, Header, IStoreModelProvider } from '@subql/node-core';
4
- import { StarknetBlock, SubqlDatasource } from '@subql/types-starknet';
5
- import { StarknetApi } from '../starknet';
6
- import { IStarknetBlockDispatcher } from './blockDispatcher';
7
- import { StarknetDictionaryService } from './dictionary/starknetDictionary.service';
8
- import { ProjectService } from './project.service';
9
- import { UnfinalizedBlocksService } from './unfinalizedBlocks.service';
10
- export declare class FetchService extends BaseFetchService<SubqlDatasource, IStarknetBlockDispatcher, StarknetBlock> {
11
- private apiService;
12
- constructor(apiService: ApiService, nodeConfig: NodeConfig, projectService: ProjectService, blockDispatcher: IStarknetBlockDispatcher, dictionaryService: StarknetDictionaryService, unfinalizedBlocksService: UnfinalizedBlocksService, eventEmitter: EventEmitter2, schedulerRegistry: SchedulerRegistry, storeModelProvider: IStoreModelProvider);
13
- get api(): StarknetApi;
14
- protected getFinalizedHeader(): Promise<Header>;
15
- protected getBestHeight(): Promise<number>;
16
- protected getChainInterval(): Promise<number>;
17
- protected getModulos(dataSources: SubqlDatasource[]): number[];
18
- protected initBlockDispatcher(): Promise<void>;
19
- protected preLoopHook(): Promise<void>;
20
- }
@@ -1,74 +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.FetchService = void 0;
18
- const common_1 = require("@nestjs/common");
19
- const event_emitter_1 = require("@nestjs/event-emitter");
20
- const schedule_1 = require("@nestjs/schedule");
21
- const common_starknet_1 = require("@subql/common-starknet");
22
- const node_core_1 = require("@subql/node-core");
23
- const utils_starknet_1 = require("../starknet/utils.starknet");
24
- const starknetDictionary_service_1 = require("./dictionary/starknetDictionary.service");
25
- const project_service_1 = require("./project.service");
26
- const unfinalizedBlocks_service_1 = require("./unfinalizedBlocks.service");
27
- const BLOCK_TIME_VARIANCE = 5000;
28
- const INTERVAL_PERCENT = 0.9;
29
- let FetchService = class FetchService extends node_core_1.BaseFetchService {
30
- apiService;
31
- constructor(apiService, nodeConfig, projectService, blockDispatcher, dictionaryService, unfinalizedBlocksService, eventEmitter, schedulerRegistry, storeModelProvider) {
32
- super(nodeConfig, projectService, blockDispatcher, dictionaryService, eventEmitter, schedulerRegistry, unfinalizedBlocksService, storeModelProvider);
33
- this.apiService = apiService;
34
- }
35
- get api() {
36
- return this.apiService.unsafeApi;
37
- }
38
- async getFinalizedHeader() {
39
- const blockHeader = await this.api.getFinalizedBlock();
40
- return (0, utils_starknet_1.starknetBlockHeaderToHeader)(blockHeader);
41
- }
42
- async getBestHeight() {
43
- return this.api.getBestBlockHeight();
44
- }
45
- // eslint-disable-next-line @typescript-eslint/require-await
46
- async getChainInterval() {
47
- const CHAIN_INTERVAL = (0, utils_starknet_1.calcInterval)(this.api) * INTERVAL_PERCENT;
48
- return Math.min(BLOCK_TIME_VARIANCE, CHAIN_INTERVAL);
49
- }
50
- getModulos(dataSources) {
51
- return (0, node_core_1.getModulos)(dataSources, common_starknet_1.isCustomDs, common_starknet_1.StarknetHandlerKind.Block);
52
- }
53
- async initBlockDispatcher() {
54
- await this.blockDispatcher.init((height) => Promise.resolve(this.resetForNewDs(height)));
55
- }
56
- async preLoopHook() {
57
- // Starknet doesn't need to do anything here
58
- return Promise.resolve();
59
- }
60
- };
61
- exports.FetchService = FetchService;
62
- exports.FetchService = FetchService = __decorate([
63
- (0, common_1.Injectable)(),
64
- __param(2, (0, common_1.Inject)('IProjectService')),
65
- __param(3, (0, common_1.Inject)('IBlockDispatcher')),
66
- __param(8, (0, common_1.Inject)('IStoreModelProvider')),
67
- __metadata("design:paramtypes", [node_core_1.ApiService,
68
- node_core_1.NodeConfig,
69
- project_service_1.ProjectService, Object, starknetDictionary_service_1.StarknetDictionaryService,
70
- unfinalizedBlocks_service_1.UnfinalizedBlocksService,
71
- event_emitter_1.EventEmitter2,
72
- schedule_1.SchedulerRegistry, Object])
73
- ], FetchService);
74
- //# sourceMappingURL=fetch.service.js.map
@@ -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,4DAAyE;AACzE,gDAO0B;AAG1B,+DAGoC;AAEpC,wFAAoF;AACpF,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,eAAyC,EACzC,iBAA4C,EAC5C,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,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QACvD,OAAO,IAAA,4CAA2B,EAAC,WAAW,CAAC,CAAC;IAClD,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,6BAAY,EAAC,IAAI,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC;QAEjE,OAAO,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;IACvD,CAAC;IAES,UAAU,CAAC,WAA8B;QACjD,OAAO,IAAA,sBAAU,EAAC,WAAW,EAAE,4BAAU,EAAE,qCAAmB,CAAC,KAAK,CAAC,CAAC;IACxE,CAAC;IAES,KAAK,CAAC,mBAAmB;QACjC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CACzC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAC5C,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,WAAW;QACzB,4CAA4C;QAC5C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF,CAAA;AA/DY,oCAAY;uBAAZ,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,sDAAyB;QAClB,oDAAwB;QACpC,6BAAa;QACR,4BAAiB;GAd3B,YAAY,CA+DxB","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 { isCustomDs, StarknetHandlerKind } from '@subql/common-starknet';\nimport {\n NodeConfig,\n BaseFetchService,\n ApiService,\n getModulos,\n Header,\n IStoreModelProvider,\n} from '@subql/node-core';\nimport { StarknetBlock, SubqlDatasource } from '@subql/types-starknet';\nimport { StarknetApi } from '../starknet';\nimport {\n calcInterval,\n starknetBlockHeaderToHeader,\n} from '../starknet/utils.starknet';\nimport { IStarknetBlockDispatcher } from './blockDispatcher';\nimport { StarknetDictionaryService } from './dictionary/starknetDictionary.service';\nimport { ProjectService } from './project.service';\nimport { UnfinalizedBlocksService } from './unfinalizedBlocks.service';\n\nconst BLOCK_TIME_VARIANCE = 5000;\n\nconst INTERVAL_PERCENT = 0.9;\n\n@Injectable()\nexport class FetchService extends BaseFetchService<\n SubqlDatasource,\n IStarknetBlockDispatcher,\n StarknetBlock\n> {\n constructor(\n private apiService: ApiService,\n nodeConfig: NodeConfig,\n @Inject('IProjectService') projectService: ProjectService,\n @Inject('IBlockDispatcher')\n blockDispatcher: IStarknetBlockDispatcher,\n dictionaryService: StarknetDictionaryService,\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(): StarknetApi {\n return this.apiService.unsafeApi;\n }\n\n protected async getFinalizedHeader(): Promise<Header> {\n const blockHeader = await this.api.getFinalizedBlock();\n return starknetBlockHeaderToHeader(blockHeader);\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 getModulos(dataSources: SubqlDatasource[]): number[] {\n return getModulos(dataSources, isCustomDs, StarknetHandlerKind.Block);\n }\n\n protected async initBlockDispatcher(): Promise<void> {\n await this.blockDispatcher.init((height) =>\n Promise.resolve(this.resetForNewDs(height)),\n );\n }\n\n protected async preLoopHook(): Promise<void> {\n // Starknet doesn't need to do anything here\n return Promise.resolve();\n }\n}\n"]}