@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
@@ -1,15 +0,0 @@
1
- import { EventEmitter2 } from '@nestjs/event-emitter';
2
- import { PoiService, PoiSyncService, BaseProjectService, StoreService, NodeConfig, IProjectUpgradeService } from '@subql/node-core';
3
- import { Sequelize } from '@subql/x-sequelize';
4
- import { StarknetProjectDs, SubqueryProject } from '../configure/SubqueryProject';
5
- import { StarknetApiService } from '../starknet';
6
- import { DsProcessorService } from './ds-processor.service';
7
- import { DynamicDsService } from './dynamic-ds.service';
8
- import { UnfinalizedBlocksService } from './unfinalizedBlocks.service';
9
- export declare class ProjectService extends BaseProjectService<StarknetApiService, StarknetProjectDs, UnfinalizedBlocksService> {
10
- protected packageVersion: any;
11
- constructor(dsProcessorService: DsProcessorService, apiService: StarknetApiService, poiService: PoiService, poiSyncService: PoiSyncService, sequelize: Sequelize, project: SubqueryProject, projectUpgradeService: IProjectUpgradeService<SubqueryProject>, storeService: StoreService, nodeConfig: NodeConfig, dynamicDsService: DynamicDsService, eventEmitter: EventEmitter2, unfinalizedBlockService: UnfinalizedBlocksService);
12
- init(startHeight?: number): Promise<void>;
13
- protected getBlockTimestamp(height: number): Promise<Date>;
14
- protected onProjectChange(project: SubqueryProject): void | Promise<void>;
15
- }
@@ -1,71 +0,0 @@
1
- "use strict";
2
- // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
3
- // SPDX-License-Identifier: GPL-3.0
4
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
6
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
7
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
8
- return c > 3 && r && Object.defineProperty(target, key, r), r;
9
- };
10
- var __metadata = (this && this.__metadata) || function (k, v) {
11
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
12
- };
13
- var __param = (this && this.__param) || function (paramIndex, decorator) {
14
- return function (target, key) { decorator(target, key, paramIndex); }
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.ProjectService = void 0;
18
- const worker_threads_1 = require("worker_threads");
19
- const common_1 = require("@nestjs/common");
20
- const event_emitter_1 = require("@nestjs/event-emitter");
21
- const node_core_1 = require("@subql/node-core");
22
- const x_sequelize_1 = require("@subql/x-sequelize");
23
- const starknet_1 = require("../starknet");
24
- const ds_processor_service_1 = require("./ds-processor.service");
25
- const dynamic_ds_service_1 = require("./dynamic-ds.service");
26
- const unfinalizedBlocks_service_1 = require("./unfinalizedBlocks.service");
27
- // eslint-disable-next-line @typescript-eslint/no-var-requires
28
- const { version: packageVersion } = require('../../package.json');
29
- let ProjectService = class ProjectService extends node_core_1.BaseProjectService {
30
- packageVersion = packageVersion;
31
- constructor(dsProcessorService, apiService, poiService, poiSyncService, sequelize, project, projectUpgradeService, storeService, nodeConfig, dynamicDsService, eventEmitter, unfinalizedBlockService) {
32
- super(dsProcessorService, apiService, poiService, poiSyncService, sequelize, project, projectUpgradeService, storeService, nodeConfig, dynamicDsService, eventEmitter, unfinalizedBlockService);
33
- }
34
- async init(startHeight) {
35
- return super.init(startHeight);
36
- }
37
- async getBlockTimestamp(height) {
38
- const block = await this.apiService.unsafeApi.api.getBlock(height);
39
- return new Date(block.timestamp * 1000);
40
- }
41
- onProjectChange(project) {
42
- // TODO update this when implementing skipBlock feature
43
- }
44
- };
45
- exports.ProjectService = ProjectService;
46
- __decorate([
47
- (0, node_core_1.profiler)(),
48
- __metadata("design:type", Function),
49
- __metadata("design:paramtypes", [Number]),
50
- __metadata("design:returntype", Promise)
51
- ], ProjectService.prototype, "init", null);
52
- exports.ProjectService = ProjectService = __decorate([
53
- (0, common_1.Injectable)(),
54
- __param(1, (0, common_1.Inject)(node_core_1.ApiService)),
55
- __param(2, (0, common_1.Inject)(worker_threads_1.isMainThread ? node_core_1.PoiService : 'Null')),
56
- __param(3, (0, common_1.Inject)(worker_threads_1.isMainThread ? node_core_1.PoiSyncService : 'Null')),
57
- __param(4, (0, common_1.Inject)(worker_threads_1.isMainThread ? x_sequelize_1.Sequelize : 'Null')),
58
- __param(5, (0, common_1.Inject)('ISubqueryProject')),
59
- __param(6, (0, common_1.Inject)('IProjectUpgradeService')),
60
- __param(7, (0, common_1.Inject)(worker_threads_1.isMainThread ? node_core_1.StoreService : 'Null')),
61
- __metadata("design:paramtypes", [ds_processor_service_1.DsProcessorService,
62
- starknet_1.StarknetApiService,
63
- node_core_1.PoiService,
64
- node_core_1.PoiSyncService,
65
- x_sequelize_1.Sequelize, Object, Object, node_core_1.StoreService,
66
- node_core_1.NodeConfig,
67
- dynamic_ds_service_1.DynamicDsService,
68
- event_emitter_1.EventEmitter2,
69
- unfinalizedBlocks_service_1.UnfinalizedBlocksService])
70
- ], ProjectService);
71
- //# sourceMappingURL=project.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project.service.js","sourceRoot":"","sources":["../../src/indexer/project.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,mDAA8C;AAC9C,2CAAoD;AACpD,yDAAsD;AACtD,gDAS0B;AAC1B,oDAA+C;AAK/C,0CAAiD;AACjD,iEAA4D;AAC5D,6DAAwD;AACxD,2EAAuE;AAEvE,8DAA8D;AAC9D,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAG3D,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,8BAInC;IACW,cAAc,GAAG,cAAc,CAAC;IAE1C,YACE,kBAAsC,EAClB,UAA8B,EACN,UAAsB,EAElE,cAA8B,EACa,SAAoB,EACnC,OAAwB,EAEpD,qBAA8D,EAChB,YAA0B,EACxE,UAAsB,EACtB,gBAAkC,EAClC,YAA2B,EAC3B,uBAAiD;QAEjD,KAAK,CACH,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,cAAc,EACd,SAAS,EACT,OAAO,EACP,qBAAqB,EACrB,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,uBAAuB,CACxB,CAAC;IACJ,CAAC;IAGK,AAAN,KAAK,CAAC,IAAI,CAAC,WAAoB;QAC7B,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;IAES,KAAK,CAAC,iBAAiB,CAAC,MAAc;QAC9C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAEnE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAC1C,CAAC;IAES,eAAe,CAAC,OAAwB;QAChD,uDAAuD;IACzD,CAAC;CACF,CAAA;AArDY,wCAAc;AAwCnB;IADL,IAAA,oBAAQ,GAAE;;;;0CAGV;yBA1CU,cAAc;IAD1B,IAAA,mBAAU,GAAE;IAUR,WAAA,IAAA,eAAM,EAAC,sBAAU,CAAC,CAAA;IAClB,WAAA,IAAA,eAAM,EAAC,6BAAY,CAAC,CAAC,CAAC,sBAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IAC1C,WAAA,IAAA,eAAM,EAAC,6BAAY,CAAC,CAAC,CAAC,0BAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IAE9C,WAAA,IAAA,eAAM,EAAC,6BAAY,CAAC,CAAC,CAAC,uBAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IACzC,WAAA,IAAA,eAAM,EAAC,kBAAkB,CAAC,CAAA;IAC1B,WAAA,IAAA,eAAM,EAAC,wBAAwB,CAAC,CAAA;IAEhC,WAAA,IAAA,eAAM,EAAC,6BAAY,CAAC,CAAC,CAAC,wBAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;qCATzB,yCAAkB;QACN,6BAAkB;QACM,sBAAU;QAElD,0BAAc;QACwB,uBAAS,kBAIH,wBAAY;QAC5D,sBAAU;QACJ,qCAAgB;QACpB,6BAAa;QACF,oDAAwB;GArBxC,cAAc,CAqD1B","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { isMainThread } from 'worker_threads';\nimport { Inject, Injectable } from '@nestjs/common';\nimport { EventEmitter2 } from '@nestjs/event-emitter';\nimport {\n PoiService,\n PoiSyncService,\n BaseProjectService,\n StoreService,\n NodeConfig,\n IProjectUpgradeService,\n ApiService,\n profiler,\n} from '@subql/node-core';\nimport { Sequelize } from '@subql/x-sequelize';\nimport {\n StarknetProjectDs,\n SubqueryProject,\n} from '../configure/SubqueryProject';\nimport { StarknetApiService } from '../starknet';\nimport { DsProcessorService } from './ds-processor.service';\nimport { DynamicDsService } from './dynamic-ds.service';\nimport { UnfinalizedBlocksService } from './unfinalizedBlocks.service';\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst { version: packageVersion } = require('../../package.json');\n\n@Injectable()\nexport class ProjectService extends BaseProjectService<\n StarknetApiService,\n StarknetProjectDs,\n UnfinalizedBlocksService\n> {\n protected packageVersion = packageVersion;\n\n constructor(\n dsProcessorService: DsProcessorService,\n @Inject(ApiService) apiService: StarknetApiService,\n @Inject(isMainThread ? PoiService : 'Null') poiService: PoiService,\n @Inject(isMainThread ? PoiSyncService : 'Null')\n poiSyncService: PoiSyncService,\n @Inject(isMainThread ? Sequelize : 'Null') sequelize: Sequelize,\n @Inject('ISubqueryProject') project: SubqueryProject,\n @Inject('IProjectUpgradeService')\n projectUpgradeService: IProjectUpgradeService<SubqueryProject>,\n @Inject(isMainThread ? StoreService : 'Null') storeService: StoreService,\n nodeConfig: NodeConfig,\n dynamicDsService: DynamicDsService,\n eventEmitter: EventEmitter2,\n unfinalizedBlockService: UnfinalizedBlocksService,\n ) {\n super(\n dsProcessorService,\n apiService,\n poiService,\n poiSyncService,\n sequelize,\n project,\n projectUpgradeService,\n storeService,\n nodeConfig,\n dynamicDsService,\n eventEmitter,\n unfinalizedBlockService,\n );\n }\n\n @profiler()\n async init(startHeight?: number): Promise<void> {\n return super.init(startHeight);\n }\n\n protected async getBlockTimestamp(height: number): Promise<Date> {\n const block = await this.apiService.unsafeApi.api.getBlock(height);\n\n return new Date(block.timestamp * 1000);\n }\n\n protected onProjectChange(project: SubqueryProject): void | Promise<void> {\n // TODO update this when implementing skipBlock feature\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"project.service.test.js","sourceRoot":"","sources":["../../src/indexer/project.service.test.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;AAEnC,yDAAsD;AACtD,0CAA8D;AAC9D,uDAAmD;AAEnD,MAAM,aAAa,GAAG,kDAAkD,CAAC;AAEzE,MAAM,cAAc,GAAG,KAAK,IAAiC,EAAE;IAC7D,MAAM,OAAO,GAAG,IAAI,sBAAW,CAAC,aAAa,EAAE,IAAI,6BAAa,EAAE,CAAC,CAAC;IAEpE,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IAErB,OAAO;QACL,SAAS,EAAE,OAAO;KACZ,CAAC;AACX,CAAC,CAAC;AAEF,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,IAAI,cAA8B,CAAC;IAEnC,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,UAAU,GAAG,MAAM,cAAc,EAAE,CAAC;QAE1C,cAAc,GAAG,IAAI,gCAAc,CACjC,IAAW,EACX,UAAU,EACV,IAAW,EACX,IAAW,EACX,IAAW,EACX,IAAW,EACX,IAAW,EACX,IAAW,EACX,EAAS,EACT,IAAW,EACX,IAAW,EACX,IAAW,CACZ,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,SAAS,GAAG,MAAO,cAAsB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAE3E,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { EventEmitter2 } from '@nestjs/event-emitter';\nimport { StarknetApi, StarknetApiService } from '../starknet';\nimport { ProjectService } from './project.service';\n\nconst HTTP_ENDPOINT = 'https://free-rpc.nethermind.io/mainnet-juno/v0_7';\n\nconst mockApiService = async (): Promise<StarknetApiService> => {\n const strkApi = new StarknetApi(HTTP_ENDPOINT, new EventEmitter2());\n\n await strkApi.init();\n\n return {\n unsafeApi: strkApi,\n } as any;\n};\n\ndescribe('ProjectService', () => {\n let projectService: ProjectService;\n\n beforeEach(async () => {\n const apiService = await mockApiService();\n\n projectService = new ProjectService(\n null as any,\n apiService,\n null as any,\n null as any,\n null as any,\n null as any,\n null as any,\n null as any,\n {} as any,\n null as any,\n null as any,\n null as any,\n );\n });\n\n it('can get a block timestamps', async () => {\n const timestamp = await (projectService as any).getBlockTimestamp(500_000);\n\n expect(timestamp).toEqual(new Date('2024-01-09T03:54:22.000Z'));\n });\n});\n"]}
@@ -1,10 +0,0 @@
1
- import { BaseUnfinalizedBlocksService, Header, NodeConfig, IStoreModelProvider } from '@subql/node-core';
2
- import { StarknetApiService as ApiService } from '../starknet/api.service.starknet';
3
- import { BlockContent } from './types';
4
- export declare class UnfinalizedBlocksService extends BaseUnfinalizedBlocksService<BlockContent> {
5
- private readonly apiService;
6
- constructor(apiService: ApiService, nodeConfig: NodeConfig, storeModelProvider: IStoreModelProvider);
7
- protected getFinalizedHead(): Promise<Header>;
8
- protected getHeaderForHash(hash: string): Promise<Header>;
9
- getHeaderForHeight(height: number): Promise<Header>;
10
- }
@@ -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
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.UnfinalizedBlocksService = void 0;
18
- const common_1 = require("@nestjs/common");
19
- const node_core_1 = require("@subql/node-core");
20
- const NodeConfig_1 = require("../configure/NodeConfig");
21
- const api_service_starknet_1 = require("../starknet/api.service.starknet");
22
- const utils_starknet_1 = require("../starknet/utils.starknet");
23
- let UnfinalizedBlocksService = class UnfinalizedBlocksService extends node_core_1.BaseUnfinalizedBlocksService {
24
- apiService;
25
- constructor(apiService, nodeConfig, storeModelProvider) {
26
- super(new NodeConfig_1.StarknetNodeConfig(nodeConfig), storeModelProvider);
27
- this.apiService = apiService;
28
- }
29
- async getFinalizedHead() {
30
- return (0, utils_starknet_1.starknetBlockHeaderToHeader)(await this.apiService.api.getFinalizedBlock());
31
- }
32
- async getHeaderForHash(hash) {
33
- const block = await this.apiService.api.getBlockByHeightOrHash(hash);
34
- return (0, utils_starknet_1.starknetBlockToHeader)((0, utils_starknet_1.formatBlock)(block));
35
- }
36
- async getHeaderForHeight(height) {
37
- const block = await this.apiService.api.getBlockByHeightOrHash(height);
38
- return (0, utils_starknet_1.starknetBlockToHeader)((0, utils_starknet_1.formatBlock)(block));
39
- }
40
- };
41
- exports.UnfinalizedBlocksService = UnfinalizedBlocksService;
42
- exports.UnfinalizedBlocksService = UnfinalizedBlocksService = __decorate([
43
- (0, common_1.Injectable)(),
44
- __param(2, (0, common_1.Inject)('IStoreModelProvider')),
45
- __metadata("design:paramtypes", [api_service_starknet_1.StarknetApiService,
46
- node_core_1.NodeConfig, Object])
47
- ], UnfinalizedBlocksService);
48
- //# sourceMappingURL=unfinalizedBlocks.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"unfinalizedBlocks.service.js","sourceRoot":"","sources":["../../src/indexer/unfinalizedBlocks.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,2CAAoD;AACpD,gDAK0B;AAC1B,wDAA6D;AAC7D,2EAAoF;AACpF,+DAIoC;AAI7B,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,wCAA0C;IAEnE;IADnB,YACmB,UAAsB,EACvC,UAAsB,EACS,kBAAuC;QAEtE,KAAK,CAAC,IAAI,+BAAkB,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAJ7C,eAAU,GAAV,UAAU,CAAY;IAKzC,CAAC;IAES,KAAK,CAAC,gBAAgB;QAC9B,OAAO,IAAA,4CAA2B,EAChC,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAC9C,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,gBAAgB,CAAC,IAAY;QAC3C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAErE,OAAO,IAAA,sCAAqB,EAAC,IAAA,4BAAW,EAAC,KAAK,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,MAAc;QACrC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QACvE,OAAO,IAAA,sCAAqB,EAAC,IAAA,4BAAW,EAAC,KAAK,CAAC,CAAC,CAAC;IACnD,CAAC;CACF,CAAA;AAzBY,4DAAwB;mCAAxB,wBAAwB;IADpC,IAAA,mBAAU,GAAE;IAKR,WAAA,IAAA,eAAM,EAAC,qBAAqB,CAAC,CAAA;qCAFD,yCAAU;QAC3B,sBAAU;GAHb,wBAAwB,CAyBpC","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 BaseUnfinalizedBlocksService,\n Header,\n NodeConfig,\n IStoreModelProvider,\n} from '@subql/node-core';\nimport { StarknetNodeConfig } from '../configure/NodeConfig';\nimport { StarknetApiService as ApiService } from '../starknet/api.service.starknet';\nimport {\n formatBlock,\n starknetBlockHeaderToHeader,\n starknetBlockToHeader,\n} from '../starknet/utils.starknet';\nimport { BlockContent } from './types';\n\n@Injectable()\nexport class UnfinalizedBlocksService extends BaseUnfinalizedBlocksService<BlockContent> {\n constructor(\n private readonly apiService: ApiService,\n nodeConfig: NodeConfig,\n @Inject('IStoreModelProvider') storeModelProvider: IStoreModelProvider,\n ) {\n super(new StarknetNodeConfig(nodeConfig), storeModelProvider);\n }\n\n protected async getFinalizedHead(): Promise<Header> {\n return starknetBlockHeaderToHeader(\n await this.apiService.api.getFinalizedBlock(),\n );\n }\n\n protected async getHeaderForHash(hash: string): Promise<Header> {\n const block = await this.apiService.api.getBlockByHeightOrHash(hash);\n\n return starknetBlockToHeader(formatBlock(block));\n }\n\n async getHeaderForHeight(height: number): Promise<Header> {\n const block = await this.apiService.api.getBlockByHeightOrHash(height);\n return starknetBlockToHeader(formatBlock(block));\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.service.starknet.test.js","sourceRoot":"","sources":["../../src/starknet/api.service.starknet.test.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;AAGnC,yDAA2D;AAC3D,6CAAuC;AACvC,gDAI0B;AAC1B,qCAAwC;AACxC,mCAA+B;AAE/B,iEAA4D;AAE5D,sBAAsB;AACtB,MAAM,aAAa,GAAG,kDAAkD,CAAC;AAEzE,SAAS,mBAAmB,CAAC,QAAgB;IAC3C,OAAO;QACL,OAAO,EAAE;YACP,QAAQ,EAAE,CAAC,QAAQ,CAAC;YACpB,OAAO,EAAE,kBAAkB;SAC5B;QACD,WAAW,EAAE,EAAE;QACf,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,IAAI,uBAAa,CAAC,EAAE,CAAC;QAC7B,SAAS,EAAE,EAAE;KACP,CAAC;AACX,CAAC;AAED,MAAM,iBAAiB,GAAG,KAAK,EAC7B,WAAmB,aAAa,EACiB,EAAE;IACnD,MAAM,MAAM,GAAG,MAAM,cAAI,CAAC,mBAAmB,CAAC;QAC5C,SAAS,EAAE;YACT,iCAAqB;YACrB,sCAA0B;YAC1B;gBACE,OAAO,EAAE,sBAAU;gBACnB,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;aACvB;YACD;gBACE,OAAO,EAAE,kBAAkB;gBAC3B,UAAU,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC;aAChD;YACD,yCAAkB;SACnB;QACD,OAAO,EAAE,CAAC,kCAAkB,CAAC,OAAO,EAAE,CAAC;KACxC,CAAC,CAAC,OAAO,EAAE,CAAC;IAEb,MAAM,GAAG,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;IAC3C,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IACjB,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,yCAAkB,CAAC,CAAC;IAC/C,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;IACxB,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AAC3B,CAAC,CAAC;AAEF,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACvB,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAI,UAA8B,CAAC;IACnC,IAAI,GAAqB,CAAC;IAE1B,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,OAAO,GAAG,EAAE,KAAK,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QAChC,MAAM,MAAM,CACV,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,IAAA,cAAK,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAChD,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,MAAM,GAAG,CAAC,MAAM,UAAU,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,YAAY,CAAC;QAEvE,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { INestApplication } from '@nestjs/common';\nimport { EventEmitterModule } from '@nestjs/event-emitter';\nimport { Test } from '@nestjs/testing';\nimport {\n ConnectionPoolService,\n ConnectionPoolStateManager,\n NodeConfig,\n} from '@subql/node-core';\nimport { GraphQLSchema } from 'graphql';\nimport { range } from 'lodash';\nimport { SubqueryProject } from '../configure/SubqueryProject';\nimport { StarknetApiService } from './api.service.starknet';\n\n// Add api key to work\nconst HTTP_ENDPOINT = 'https://free-rpc.nethermind.io/mainnet-juno/v0_7';\n\nfunction testSubqueryProject(endpoint: string): SubqueryProject {\n return {\n network: {\n endpoint: [endpoint],\n chainId: '0x534e5f4d41494e',\n },\n dataSources: [],\n id: 'test',\n root: './',\n schema: new GraphQLSchema({}),\n templates: [],\n } as any;\n}\n\nconst prepareApiService = async (\n endpoint: string = HTTP_ENDPOINT,\n): Promise<[StarknetApiService, INestApplication]> => {\n const module = await Test.createTestingModule({\n providers: [\n ConnectionPoolService,\n ConnectionPoolStateManager,\n {\n provide: NodeConfig,\n useFactory: () => ({}),\n },\n {\n provide: 'ISubqueryProject',\n useFactory: () => testSubqueryProject(endpoint),\n },\n StarknetApiService,\n ],\n imports: [EventEmitterModule.forRoot()],\n }).compile();\n\n const app = module.createNestApplication();\n await app.init();\n const apiService = app.get(StarknetApiService);\n await apiService.init();\n return [apiService, app];\n};\n\njest.setTimeout(90000);\ndescribe('ApiService', () => {\n let apiService: StarknetApiService;\n let app: INestApplication;\n\n beforeEach(async () => {\n [apiService, app] = await prepareApiService();\n });\n\n afterEach(async () => {\n return app?.close();\n });\n\n it('can instantiate api', () => {\n expect(apiService.api.getChainId()).toEqual('0x534e5f4d41494e');\n });\n\n it('can fetch blocks', async () => {\n await expect(\n apiService.api.fetchBlocks(range(50000, 50004)),\n ).resolves.toHaveLength(4);\n });\n\n it('can get the finalized height', async () => {\n const height = (await apiService.api.getFinalizedBlock()).block_number;\n\n console.log('Finalized height', height);\n expect(height).toBeGreaterThan(975_650);\n });\n});\n"]}