@subql/node-starknet 0.0.2-9 → 5.7.2

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 (105) hide show
  1. package/CHANGELOG.md +12 -3
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/app.module.js +1 -1
  4. package/dist/app.module.js.map +1 -1
  5. package/dist/configure/NodeConfig.js +1 -1
  6. package/dist/configure/NodeConfig.js.map +1 -1
  7. package/dist/configure/SubqueryProject.js +1 -1
  8. package/dist/configure/SubqueryProject.js.map +1 -1
  9. package/dist/configure/configure.module.js +1 -1
  10. package/dist/configure/configure.module.js.map +1 -1
  11. package/dist/indexer/blockDispatcher/block-dispatcher.service.js +1 -1
  12. package/dist/indexer/blockDispatcher/block-dispatcher.service.js.map +1 -1
  13. package/dist/indexer/blockDispatcher/index.js +1 -1
  14. package/dist/indexer/blockDispatcher/index.js.map +1 -1
  15. package/dist/indexer/blockDispatcher/starknet-block-dispatcher.js +1 -1
  16. package/dist/indexer/blockDispatcher/starknet-block-dispatcher.js.map +1 -1
  17. package/dist/indexer/blockDispatcher/worker-block-dispatcher.service.js +1 -1
  18. package/dist/indexer/blockDispatcher/worker-block-dispatcher.service.js.map +1 -1
  19. package/dist/indexer/dictionary/starknetDictionary.service.js +1 -1
  20. package/dist/indexer/dictionary/starknetDictionary.service.js.map +1 -1
  21. package/dist/indexer/dictionary/utils.js +1 -1
  22. package/dist/indexer/dictionary/utils.js.map +1 -1
  23. package/dist/indexer/dictionary/v1/index.js +1 -1
  24. package/dist/indexer/dictionary/v1/index.js.map +1 -1
  25. package/dist/indexer/dictionary/v1/starknetDictionaryV1.js +1 -1
  26. package/dist/indexer/dictionary/v1/starknetDictionaryV1.js.map +1 -1
  27. package/dist/indexer/dictionary/v1/starknetDictionaryV1.spec.js +1 -1
  28. package/dist/indexer/dictionary/v1/starknetDictionaryV1.spec.js.map +1 -1
  29. package/dist/indexer/ds-processor.service.js +1 -1
  30. package/dist/indexer/ds-processor.service.js.map +1 -1
  31. package/dist/indexer/dynamic-ds.service.js +1 -1
  32. package/dist/indexer/dynamic-ds.service.js.map +1 -1
  33. package/dist/indexer/fetch.module.js +1 -1
  34. package/dist/indexer/fetch.module.js.map +1 -1
  35. package/dist/indexer/fetch.service.js +1 -1
  36. package/dist/indexer/fetch.service.js.map +1 -1
  37. package/dist/indexer/indexer.manager.js +1 -1
  38. package/dist/indexer/indexer.manager.js.map +1 -1
  39. package/dist/indexer/project.service.js +1 -1
  40. package/dist/indexer/project.service.js.map +1 -1
  41. package/dist/indexer/project.service.test.js +1 -1
  42. package/dist/indexer/project.service.test.js.map +1 -1
  43. package/dist/indexer/types.js +1 -1
  44. package/dist/indexer/types.js.map +1 -1
  45. package/dist/indexer/unfinalizedBlocks.service.js +1 -1
  46. package/dist/indexer/unfinalizedBlocks.service.js.map +1 -1
  47. package/dist/indexer/worker/worker-fetch.module.js +1 -1
  48. package/dist/indexer/worker/worker-fetch.module.js.map +1 -1
  49. package/dist/indexer/worker/worker.js +1 -1
  50. package/dist/indexer/worker/worker.js.map +1 -1
  51. package/dist/indexer/worker/worker.module.js +1 -1
  52. package/dist/indexer/worker/worker.module.js.map +1 -1
  53. package/dist/indexer/worker/worker.service.js +1 -1
  54. package/dist/indexer/worker/worker.service.js.map +1 -1
  55. package/dist/init.js +1 -1
  56. package/dist/init.js.map +1 -1
  57. package/dist/main.js +1 -1
  58. package/dist/main.js.map +1 -1
  59. package/dist/starknet/api.connection.js +1 -1
  60. package/dist/starknet/api.connection.js.map +1 -1
  61. package/dist/starknet/api.service.starknet.js +1 -1
  62. package/dist/starknet/api.service.starknet.js.map +1 -1
  63. package/dist/starknet/api.service.starknet.test.js +1 -1
  64. package/dist/starknet/api.service.starknet.test.js.map +1 -1
  65. package/dist/starknet/api.starknet.js +1 -1
  66. package/dist/starknet/api.starknet.js.map +1 -1
  67. package/dist/starknet/api.starknet.test.js +1 -1
  68. package/dist/starknet/api.starknet.test.js.map +1 -1
  69. package/dist/starknet/block.starknet.js +1 -1
  70. package/dist/starknet/block.starknet.js.map +1 -1
  71. package/dist/starknet/block.starknet.test.js +1 -1
  72. package/dist/starknet/block.starknet.test.js.map +1 -1
  73. package/dist/starknet/decodeCalldata.js +1 -1
  74. package/dist/starknet/decodeCalldata.js.map +1 -1
  75. package/dist/starknet/decodeCalldata.test.js +1 -1
  76. package/dist/starknet/decodeCalldata.test.js.map +1 -1
  77. package/dist/starknet/finalized.block.starknet.js +1 -1
  78. package/dist/starknet/finalized.block.starknet.js.map +1 -1
  79. package/dist/starknet/finalized.block.starknet.spec.js +1 -1
  80. package/dist/starknet/finalized.block.starknet.spec.js.map +1 -1
  81. package/dist/starknet/index.js +1 -1
  82. package/dist/starknet/index.js.map +1 -1
  83. package/dist/starknet/safe-api.js +1 -1
  84. package/dist/starknet/safe-api.js.map +1 -1
  85. package/dist/starknet/utils.starknet.js +1 -1
  86. package/dist/starknet/utils.starknet.js.map +1 -1
  87. package/dist/subcommands/forceClean.init.js +1 -1
  88. package/dist/subcommands/forceClean.init.js.map +1 -1
  89. package/dist/subcommands/forceClean.module.js +1 -1
  90. package/dist/subcommands/forceClean.module.js.map +1 -1
  91. package/dist/subcommands/reindex.init.js +1 -1
  92. package/dist/subcommands/reindex.init.js.map +1 -1
  93. package/dist/subcommands/reindex.module.js +1 -1
  94. package/dist/subcommands/reindex.module.js.map +1 -1
  95. package/dist/subcommands/testing.init.js +1 -1
  96. package/dist/subcommands/testing.init.js.map +1 -1
  97. package/dist/subcommands/testing.module.js +1 -1
  98. package/dist/subcommands/testing.module.js.map +1 -1
  99. package/dist/subcommands/testing.service.js +1 -1
  100. package/dist/subcommands/testing.service.js.map +1 -1
  101. package/dist/utils/project.js +1 -1
  102. package/dist/utils/project.js.map +1 -1
  103. package/dist/yargs.js +1 -1
  104. package/dist/yargs.js.map +1 -1
  105. package/package.json +4 -5
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
2
+ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
3
3
  // SPDX-License-Identifier: GPL-3.0
4
4
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
5
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -1 +1 @@
1
- {"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;AAEnC,2CAAwC;AACxC,yDAA2D;AAC3D,+CAAkD;AAClD,gDAAoE;AACpE,mEAA+D;AAC/D,yDAAqD;AAErD,8DAA8D;AAC9D,yCAAyC;AACzC,+HAA+H;AAC/H,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC1D,8DAA8D;AAC9D,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAiBxD,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IAfrB,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,sBAAU;YACV,0BAAW;YACX,sBAAU,CAAC,OAAO,CAAC;gBACjB,OAAO,EAAE,cAAc;gBACvB,UAAU,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,kBAAkB,EAAE;aACjE,CAAC;SACH;QACD,WAAW,EAAE,EAAE;KAChB,CAAC;GACW,SAAS,CAAG","sourcesContent":["// Copyright 2020-2024 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, CoreModule, MetaModule } from '@subql/node-core';\nimport { ConfigureModule } from './configure/configure.module';\nimport { FetchModule } from './indexer/fetch.module';\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\n// TODO, require('starknet/package.json')\n// Package subpath './package.json' is not defined by \"exports\" in /Users/xxx/subql-starknet/node_modules/starknet/package.json\nconst { version: starknetSdkVersion } = { version: '^6' };\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst { version: packageVersion } = require('../package.json');\n\n@Module({\n imports: [\n DbModule.forRoot(),\n EventEmitterModule.forRoot(),\n ConfigureModule.register(),\n ScheduleModule.forRoot(),\n CoreModule,\n FetchModule,\n MetaModule.forRoot({\n version: packageVersion,\n sdkVersion: { name: 'starknet.js', version: starknetSdkVersion },\n }),\n ],\n controllers: [],\n})\nexport class AppModule {}\n"]}
1
+ {"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;AAEnC,2CAAwC;AACxC,yDAA2D;AAC3D,+CAAkD;AAClD,gDAAoE;AACpE,mEAA+D;AAC/D,yDAAqD;AAErD,8DAA8D;AAC9D,yCAAyC;AACzC,+HAA+H;AAC/H,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC1D,8DAA8D;AAC9D,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAiBxD,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IAfrB,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,sBAAU;YACV,0BAAW;YACX,sBAAU,CAAC,OAAO,CAAC;gBACjB,OAAO,EAAE,cAAc;gBACvB,UAAU,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,kBAAkB,EAAE;aACjE,CAAC;SACH;QACD,WAAW,EAAE,EAAE;KAChB,CAAC;GACW,SAAS,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, CoreModule, MetaModule } from '@subql/node-core';\nimport { ConfigureModule } from './configure/configure.module';\nimport { FetchModule } from './indexer/fetch.module';\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\n// TODO, require('starknet/package.json')\n// Package subpath './package.json' is not defined by \"exports\" in /Users/xxx/subql-starknet/node_modules/starknet/package.json\nconst { version: starknetSdkVersion } = { version: '^6' };\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst { version: packageVersion } = require('../package.json');\n\n@Module({\n imports: [\n DbModule.forRoot(),\n EventEmitterModule.forRoot(),\n ConfigureModule.register(),\n ScheduleModule.forRoot(),\n CoreModule,\n FetchModule,\n MetaModule.forRoot({\n version: packageVersion,\n sdkVersion: { name: 'starknet.js', version: starknetSdkVersion },\n }),\n ],\n controllers: [],\n})\nexport class AppModule {}\n"]}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
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
5
  exports.StarknetNodeConfig = void 0;
@@ -1 +1 @@
1
- {"version":3,"file":"NodeConfig.js","sourceRoot":"","sources":["../../src/configure/NodeConfig.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;AAEnC,gDAAuD;AAMvD,MAAa,kBAAmB,SAAQ,sBAA2B;IACjE;;;;;;;;;;SAUK;IACL,YAAY,MAAkB;QAC5B,+BAA+B;QAC/B,KAAK,CAAE,MAAc,CAAC,OAAO,EAAG,MAAc,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACzC,CAAC;CACF;AApBD,gDAoBC","sourcesContent":["// Copyright 2020-2024 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { IConfig, NodeConfig } from '@subql/node-core';\n\nexport interface IStarknetConfig extends IConfig {\n skipTransactions: boolean;\n}\n\nexport class StarknetNodeConfig extends NodeConfig<IStarknetConfig> {\n /**\n * This is a wrapper around the core NodeConfig to get additional properties that are provided through args or node runner options\n * NOTE: This isn't injected anywhere so you need to wrap the injected node config\n *\n * @example\n * constructor(\n * nodeConfig: NodeConfig,\n * ) {\n * this.nodeConfig = new StarknetNodeConfig(nodeConfig);\n * }\n * */\n constructor(config: NodeConfig) {\n // Rebuild with internal config\n super((config as any)._config, (config as any)._isTest);\n }\n\n get skipTransactions(): boolean {\n return !!this._config.skipTransactions;\n }\n}\n"]}
1
+ {"version":3,"file":"NodeConfig.js","sourceRoot":"","sources":["../../src/configure/NodeConfig.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;AAEnC,gDAAuD;AAMvD,MAAa,kBAAmB,SAAQ,sBAA2B;IACjE;;;;;;;;;;SAUK;IACL,YAAY,MAAkB;QAC5B,+BAA+B;QAC/B,KAAK,CAAE,MAAc,CAAC,OAAO,EAAG,MAAc,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACzC,CAAC;CACF;AApBD,gDAoBC","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { IConfig, NodeConfig } from '@subql/node-core';\n\nexport interface IStarknetConfig extends IConfig {\n skipTransactions: boolean;\n}\n\nexport class StarknetNodeConfig extends NodeConfig<IStarknetConfig> {\n /**\n * This is a wrapper around the core NodeConfig to get additional properties that are provided through args or node runner options\n * NOTE: This isn't injected anywhere so you need to wrap the injected node config\n *\n * @example\n * constructor(\n * nodeConfig: NodeConfig,\n * ) {\n * this.nodeConfig = new StarknetNodeConfig(nodeConfig);\n * }\n * */\n constructor(config: NodeConfig) {\n // Rebuild with internal config\n super((config as any)._config, (config as any)._isTest);\n }\n\n get skipTransactions(): boolean {\n return !!this._config.skipTransactions;\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
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
5
  exports.createSubQueryProject = createSubQueryProject;
@@ -1 +1 @@
1
- {"version":3,"file":"SubqueryProject.js","sourceRoot":"","sources":["../../src/configure/SubqueryProject.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;AAqCnC,sDAqBC;AAxDD,4DAMgC;AAChC,gDAAmE;AASnE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAmB3D,KAAK,UAAU,qBAAqB,CACzC,IAAY,EACZ,WAAoB,EACpB,MAAc,EACd,IAAY,EAAE,2DAA2D;AACzE,gBAAyC;IAEzC,MAAM,OAAO,GAAG,MAAM,+BAAmB,CAAC,MAAM,CAAkB;QAChE,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,8CAA4B,EAAC,GAAG,CAAC,CAAC,QAAQ;QAClE,IAAI;QACJ,WAAW;QACX,MAAM;QACN,IAAI;QACJ,UAAU,EAAE,cAAc;QAC1B,gBAAgB,EAAE,qCAAmB,CAAC,KAAK;QAC3C,gBAAgB;QAChB,WAAW,EAAX,6BAAW;QACX,UAAU,EAAV,4BAAU;KACX,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["// Copyright 2020-2024 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport {\n parseStarknetProjectManifest,\n SubqlStarknetDataSource,\n isRuntimeDs,\n StarknetHandlerKind,\n isCustomDs,\n} from '@subql/common-starknet';\nimport { BaseSubqueryProject, CronFilter } from '@subql/node-core';\nimport { Reader } from '@subql/types-core';\nimport {\n StarknetNetworkConfig,\n RuntimeDatasourceTemplate,\n CustomDatasourceTemplate,\n StarknetBlockFilter,\n} from '@subql/types-starknet';\n\nconst { version: packageVersion } = require('../../package.json');\n\nexport type StarknetProjectDs = SubqlStarknetDataSource;\n\nexport type StarknetProjectDsTemplate =\n | RuntimeDatasourceTemplate\n | CustomDatasourceTemplate;\n\nexport type SubqlProjectBlockFilter = StarknetBlockFilter & CronFilter;\n\n// This is the runtime type after we have mapped genesisHash to chainId and endpoint/dict have been provided when dealing with deployments\ntype NetworkConfig = StarknetNetworkConfig & { chainId: string };\n\nexport type SubqueryProject = BaseSubqueryProject<\n StarknetProjectDs,\n StarknetProjectDsTemplate,\n NetworkConfig\n>;\n\nexport async function createSubQueryProject(\n path: string,\n rawManifest: unknown,\n reader: Reader,\n root: string, // If project local then directory otherwise temp directory\n networkOverrides?: Partial<NetworkConfig>,\n): Promise<SubqueryProject> {\n const project = await BaseSubqueryProject.create<SubqueryProject>({\n parseManifest: (raw) => parseStarknetProjectManifest(raw).asV1_0_0,\n path,\n rawManifest,\n reader,\n root,\n nodeSemver: packageVersion,\n blockHandlerKind: StarknetHandlerKind.Block,\n networkOverrides,\n isRuntimeDs,\n isCustomDs,\n });\n\n return project;\n}\n"]}
1
+ {"version":3,"file":"SubqueryProject.js","sourceRoot":"","sources":["../../src/configure/SubqueryProject.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;AAqCnC,sDAqBC;AAxDD,4DAMgC;AAChC,gDAAmE;AASnE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAmB3D,KAAK,UAAU,qBAAqB,CACzC,IAAY,EACZ,WAAoB,EACpB,MAAc,EACd,IAAY,EAAE,2DAA2D;AACzE,gBAAyC;IAEzC,MAAM,OAAO,GAAG,MAAM,+BAAmB,CAAC,MAAM,CAAkB;QAChE,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,8CAA4B,EAAC,GAAG,CAAC,CAAC,QAAQ;QAClE,IAAI;QACJ,WAAW;QACX,MAAM;QACN,IAAI;QACJ,UAAU,EAAE,cAAc;QAC1B,gBAAgB,EAAE,qCAAmB,CAAC,KAAK;QAC3C,gBAAgB;QAChB,WAAW,EAAX,6BAAW;QACX,UAAU,EAAV,4BAAU;KACX,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport {\n parseStarknetProjectManifest,\n SubqlStarknetDataSource,\n isRuntimeDs,\n StarknetHandlerKind,\n isCustomDs,\n} from '@subql/common-starknet';\nimport { BaseSubqueryProject, CronFilter } from '@subql/node-core';\nimport { Reader } from '@subql/types-core';\nimport {\n StarknetNetworkConfig,\n RuntimeDatasourceTemplate,\n CustomDatasourceTemplate,\n StarknetBlockFilter,\n} from '@subql/types-starknet';\n\nconst { version: packageVersion } = require('../../package.json');\n\nexport type StarknetProjectDs = SubqlStarknetDataSource;\n\nexport type StarknetProjectDsTemplate =\n | RuntimeDatasourceTemplate\n | CustomDatasourceTemplate;\n\nexport type SubqlProjectBlockFilter = StarknetBlockFilter & CronFilter;\n\n// This is the runtime type after we have mapped genesisHash to chainId and endpoint/dict have been provided when dealing with deployments\ntype NetworkConfig = StarknetNetworkConfig & { chainId: string };\n\nexport type SubqueryProject = BaseSubqueryProject<\n StarknetProjectDs,\n StarknetProjectDsTemplate,\n NetworkConfig\n>;\n\nexport async function createSubQueryProject(\n path: string,\n rawManifest: unknown,\n reader: Reader,\n root: string, // If project local then directory otherwise temp directory\n networkOverrides?: Partial<NetworkConfig>,\n): Promise<SubqueryProject> {\n const project = await BaseSubqueryProject.create<SubqueryProject>({\n parseManifest: (raw) => parseStarknetProjectManifest(raw).asV1_0_0,\n path,\n rawManifest,\n reader,\n root,\n nodeSemver: packageVersion,\n blockHandlerKind: StarknetHandlerKind.Block,\n networkOverrides,\n isRuntimeDs,\n isCustomDs,\n });\n\n return project;\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
2
+ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
3
3
  // SPDX-License-Identifier: GPL-3.0
4
4
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
5
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -1 +1 @@
1
- {"version":3,"file":"configure.module.js","sourceRoot":"","sources":["../../src/configure/configure.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;AAEnC,2CAA+D;AAC/D,gDAA2D;AAC3D,oCAAwC;AACxC,uDAA2E;AAE3E,MAAM,KAAK,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAIrC,IAAM,eAAe,uBAArB,MAAM,eAAe;IAC1B,MAAM,CAAC,KAAK,CAAC,WAAW;QAItB,MAAM,EAAE,IAAI,EAAE,GAAG,oBAAY,CAAC;QAC9B,OAAO,IAAA,uBAAW,EAChB,IAAI,EACJ,uCAAqB,EACrB,oBAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAY,CAAC,EACxC,KAAK,CACN,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,QAAQ;QACnB,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,MAAM,iBAAe,CAAC,WAAW,EAAE,CAAC;QAEpE,OAAO;YACL,MAAM,EAAE,iBAAe;YACvB,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,sBAAU;oBACnB,QAAQ,EAAE,UAAU;iBACrB;gBACD;oBACE,OAAO,EAAE,kBAAkB;oBAC3B,QAAQ,EAAE,OAAO;iBAClB;gBACD;oBACE,OAAO,EAAE,wBAAwB;oBACjC,QAAQ,EAAE,OAAO;iBAClB;gBACD;oBACE,OAAO,EAAE,MAAM;oBACf,QAAQ,EAAE,IAAI;iBACf;aACF;YACD,OAAO,EAAE;gBACP,sBAAU;gBACV,kBAAkB;gBAClB,wBAAwB;gBACxB,MAAM;aACP;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AA5CY,0CAAe;0BAAf,eAAe;IAF3B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,eAAe,CA4C3B","sourcesContent":["// Copyright 2020-2024 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { DynamicModule, Global, Module } from '@nestjs/common';\nimport { NodeConfig, registerApp } from '@subql/node-core';\nimport { yargsOptions } from '../yargs';\nimport { createSubQueryProject, SubqueryProject } from './SubqueryProject';\n\nconst pjson = require('../../package.json');\n\n@Global()\n@Module({})\nexport class ConfigureModule {\n static async getInstance(): Promise<{\n nodeConfig: NodeConfig;\n project: SubqueryProject;\n }> {\n const { argv } = yargsOptions;\n return registerApp<SubqueryProject>(\n argv,\n createSubQueryProject,\n yargsOptions.showHelp.bind(yargsOptions),\n pjson,\n );\n }\n static async register(): Promise<DynamicModule> {\n const { nodeConfig, project } = await ConfigureModule.getInstance();\n\n return {\n module: ConfigureModule,\n providers: [\n {\n provide: NodeConfig,\n useValue: nodeConfig,\n },\n {\n provide: 'ISubqueryProject',\n useValue: project,\n },\n {\n provide: 'IProjectUpgradeService',\n useValue: project,\n },\n {\n provide: 'Null',\n useValue: null,\n },\n ],\n exports: [\n NodeConfig,\n 'ISubqueryProject',\n 'IProjectUpgradeService',\n 'Null',\n ],\n };\n }\n}\n"]}
1
+ {"version":3,"file":"configure.module.js","sourceRoot":"","sources":["../../src/configure/configure.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;AAEnC,2CAA+D;AAC/D,gDAA2D;AAC3D,oCAAwC;AACxC,uDAA2E;AAE3E,MAAM,KAAK,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAIrC,IAAM,eAAe,uBAArB,MAAM,eAAe;IAC1B,MAAM,CAAC,KAAK,CAAC,WAAW;QAItB,MAAM,EAAE,IAAI,EAAE,GAAG,oBAAY,CAAC;QAC9B,OAAO,IAAA,uBAAW,EAChB,IAAI,EACJ,uCAAqB,EACrB,oBAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAY,CAAC,EACxC,KAAK,CACN,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,QAAQ;QACnB,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,MAAM,iBAAe,CAAC,WAAW,EAAE,CAAC;QAEpE,OAAO;YACL,MAAM,EAAE,iBAAe;YACvB,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,sBAAU;oBACnB,QAAQ,EAAE,UAAU;iBACrB;gBACD;oBACE,OAAO,EAAE,kBAAkB;oBAC3B,QAAQ,EAAE,OAAO;iBAClB;gBACD;oBACE,OAAO,EAAE,wBAAwB;oBACjC,QAAQ,EAAE,OAAO;iBAClB;gBACD;oBACE,OAAO,EAAE,MAAM;oBACf,QAAQ,EAAE,IAAI;iBACf;aACF;YACD,OAAO,EAAE;gBACP,sBAAU;gBACV,kBAAkB;gBAClB,wBAAwB;gBACxB,MAAM;aACP;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AA5CY,0CAAe;0BAAf,eAAe;IAF3B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,eAAe,CA4C3B","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { DynamicModule, Global, Module } from '@nestjs/common';\nimport { NodeConfig, registerApp } from '@subql/node-core';\nimport { yargsOptions } from '../yargs';\nimport { createSubQueryProject, SubqueryProject } from './SubqueryProject';\n\nconst pjson = require('../../package.json');\n\n@Global()\n@Module({})\nexport class ConfigureModule {\n static async getInstance(): Promise<{\n nodeConfig: NodeConfig;\n project: SubqueryProject;\n }> {\n const { argv } = yargsOptions;\n return registerApp<SubqueryProject>(\n argv,\n createSubQueryProject,\n yargsOptions.showHelp.bind(yargsOptions),\n pjson,\n );\n }\n static async register(): Promise<DynamicModule> {\n const { nodeConfig, project } = await ConfigureModule.getInstance();\n\n return {\n module: ConfigureModule,\n providers: [\n {\n provide: NodeConfig,\n useValue: nodeConfig,\n },\n {\n provide: 'ISubqueryProject',\n useValue: project,\n },\n {\n provide: 'IProjectUpgradeService',\n useValue: project,\n },\n {\n provide: 'Null',\n useValue: null,\n },\n ],\n exports: [\n NodeConfig,\n 'ISubqueryProject',\n 'IProjectUpgradeService',\n 'Null',\n ],\n };\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
2
+ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
3
3
  // SPDX-License-Identifier: GPL-3.0
4
4
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
5
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -1 +1 @@
1
- {"version":3,"file":"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-2024 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
+ {"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,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
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
5
  exports.WorkerBlockDispatcherService = exports.BlockDispatcherService = void 0;
@@ -1 +1 @@
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-2024 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
+ {"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 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
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
5
  //# sourceMappingURL=starknet-block-dispatcher.js.map
@@ -1 +1 @@
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-2024 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
+ {"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,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
2
+ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
3
3
  // SPDX-License-Identifier: GPL-3.0
4
4
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
5
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -1 +1 @@
1
- {"version":3,"file":"worker-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-2024 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
+ {"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,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
2
+ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
3
3
  // SPDX-License-Identifier: GPL-3.0
4
4
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
5
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -1 +1 @@
1
- {"version":3,"file":"starknetDictionary.service.js","sourceRoot":"","sources":["../../../src/indexer/dictionary/starknetDictionary.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,2CAAoD;AACpD,yDAAsD;AACtD,0CAA+C;AAC/C,gDAK0B;AAG1B,6CAAoD;AACpD,6BAA4C;AAE5C,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,YAAY,CAAC,CAAC;AAGhC,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,6BAG9C;IAEyC;IAGV;IAJ9B,YACwC,OAAwB,EAC9D,UAAsB,EACtB,YAA2B,EACC,UAA8B;QAE1D,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;QALnB,YAAO,GAAP,OAAO,CAAiB;QAGlC,eAAU,GAAV,UAAU,CAAoB;IAG5D,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,cAAc,GAA2B,EAAE,CAAC;QAElD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,sBAAsB;QAC3D,wDAAwD;QACxD,uBAAc,CAAC,QAAQ,EACvB,IAAI,CAAC,OAAO,CAAC,OAAO,CACrB,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE,CAAC;YAC3C,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,MAAM,yBAAoB,CAAC,MAAM,CACpD,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,UAAU,EACf,QAAQ,CACT,CAAC;gBACF,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACpC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,CACT,wBAAwB,QAAQ,6BAA6B,CAC9D,CAAC;YACJ,CAAC;QACH,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,4BAA4B,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;IACjC,CAAC;CACF,CAAA;AA3CY,8DAAyB;oCAAzB,yBAAyB;IADrC,IAAA,mBAAU,GAAE;IAMR,WAAA,IAAA,eAAM,EAAC,kBAAkB,CAAC,CAAA;IAG1B,WAAA,IAAA,eAAM,EAAC,sBAAU,CAAC,CAAA;6CAFP,sBAAU;QACR,6BAAa;QACa,6BAAkB;GARjD,yBAAyB,CA2CrC","sourcesContent":["// Copyright 2020-2024 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Inject, Injectable } from '@nestjs/common';\nimport { EventEmitter2 } from '@nestjs/event-emitter';\nimport { NETWORK_FAMILY } from '@subql/common';\nimport {\n NodeConfig,\n DictionaryService,\n ApiService,\n getLogger,\n} from '@subql/node-core';\nimport { StarknetBlock, SubqlDatasource } from '@subql/types-starknet';\nimport { SubqueryProject } from '../../configure/SubqueryProject';\nimport { StarknetApiService } from '../../starknet';\nimport { StarknetDictionaryV1 } from './v1';\n\nconst logger = getLogger('dictionary');\n\n@Injectable()\nexport class StarknetDictionaryService extends DictionaryService<\n SubqlDatasource,\n StarknetBlock\n> {\n constructor(\n @Inject('ISubqueryProject') protected project: SubqueryProject,\n nodeConfig: NodeConfig,\n eventEmitter: EventEmitter2,\n @Inject(ApiService) private apiService: StarknetApiService,\n ) {\n super(project.network.chainId, nodeConfig, eventEmitter);\n }\n\n async initDictionaries(): Promise<void> {\n const dictionariesV1: StarknetDictionaryV1[] = [];\n\n if (!this.project) {\n throw new Error(`Project in Dictionary service not initialized `);\n }\n\n const dictionaryEndpoints = await this.getDictionaryEndpoints(\n // @ts-ignore, todo: fix this after dictionary available\n NETWORK_FAMILY.Starknet,\n this.project.network,\n );\n\n for (const endpoint of dictionaryEndpoints) {\n try {\n const dictionaryV1 = await StarknetDictionaryV1.create(\n this.project,\n this.nodeConfig,\n endpoint,\n );\n dictionariesV1.push(dictionaryV1);\n } catch (e) {\n logger.warn(\n `Dictionary endpoint \"${endpoint}\" is not a valid dictionary`,\n );\n }\n }\n logger.debug(`Dictionary versions, v1: ${dictionariesV1.length}`);\n this.init([...dictionariesV1]);\n }\n}\n"]}
1
+ {"version":3,"file":"starknetDictionary.service.js","sourceRoot":"","sources":["../../../src/indexer/dictionary/starknetDictionary.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,2CAAoD;AACpD,yDAAsD;AACtD,0CAA+C;AAC/C,gDAK0B;AAG1B,6CAAoD;AACpD,6BAA4C;AAE5C,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,YAAY,CAAC,CAAC;AAGhC,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,6BAG9C;IAEyC;IAGV;IAJ9B,YACwC,OAAwB,EAC9D,UAAsB,EACtB,YAA2B,EACC,UAA8B;QAE1D,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;QALnB,YAAO,GAAP,OAAO,CAAiB;QAGlC,eAAU,GAAV,UAAU,CAAoB;IAG5D,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,cAAc,GAA2B,EAAE,CAAC;QAElD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,sBAAsB;QAC3D,wDAAwD;QACxD,uBAAc,CAAC,QAAQ,EACvB,IAAI,CAAC,OAAO,CAAC,OAAO,CACrB,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE,CAAC;YAC3C,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,MAAM,yBAAoB,CAAC,MAAM,CACpD,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,UAAU,EACf,QAAQ,CACT,CAAC;gBACF,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACpC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,CACT,wBAAwB,QAAQ,6BAA6B,CAC9D,CAAC;YACJ,CAAC;QACH,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,4BAA4B,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;IACjC,CAAC;CACF,CAAA;AA3CY,8DAAyB;oCAAzB,yBAAyB;IADrC,IAAA,mBAAU,GAAE;IAMR,WAAA,IAAA,eAAM,EAAC,kBAAkB,CAAC,CAAA;IAG1B,WAAA,IAAA,eAAM,EAAC,sBAAU,CAAC,CAAA;6CAFP,sBAAU;QACR,6BAAa;QACa,6BAAkB;GARjD,yBAAyB,CA2CrC","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 { NETWORK_FAMILY } from '@subql/common';\nimport {\n NodeConfig,\n DictionaryService,\n ApiService,\n getLogger,\n} from '@subql/node-core';\nimport { StarknetBlock, SubqlDatasource } from '@subql/types-starknet';\nimport { SubqueryProject } from '../../configure/SubqueryProject';\nimport { StarknetApiService } from '../../starknet';\nimport { StarknetDictionaryV1 } from './v1';\n\nconst logger = getLogger('dictionary');\n\n@Injectable()\nexport class StarknetDictionaryService extends DictionaryService<\n SubqlDatasource,\n StarknetBlock\n> {\n constructor(\n @Inject('ISubqueryProject') protected project: SubqueryProject,\n nodeConfig: NodeConfig,\n eventEmitter: EventEmitter2,\n @Inject(ApiService) private apiService: StarknetApiService,\n ) {\n super(project.network.chainId, nodeConfig, eventEmitter);\n }\n\n async initDictionaries(): Promise<void> {\n const dictionariesV1: StarknetDictionaryV1[] = [];\n\n if (!this.project) {\n throw new Error(`Project in Dictionary service not initialized `);\n }\n\n const dictionaryEndpoints = await this.getDictionaryEndpoints(\n // @ts-ignore, todo: fix this after dictionary available\n NETWORK_FAMILY.Starknet,\n this.project.network,\n );\n\n for (const endpoint of dictionaryEndpoints) {\n try {\n const dictionaryV1 = await StarknetDictionaryV1.create(\n this.project,\n this.nodeConfig,\n endpoint,\n );\n dictionariesV1.push(dictionaryV1);\n } catch (e) {\n logger.warn(\n `Dictionary endpoint \"${endpoint}\" is not a valid dictionary`,\n );\n }\n }\n logger.debug(`Dictionary versions, v1: ${dictionariesV1.length}`);\n this.init([...dictionariesV1]);\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
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
5
  exports.groupedDataSources = groupedDataSources;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/indexer/dictionary/utils.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;AAOnC,gDA6BC;AAED,wCAIC;AAvCD,mCAAiC;AAGjC,4EAA4E;AAC5E,SAAgB,kBAAkB,CAChC,WAAgC;IAEhC,MAAM,eAAe,GACnB,WAAW;SACR,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CACV,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CACrB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAGtB,CACJ,CACF;SACA,IAAI,EAAE,CAAC;IAEZ,MAAM,OAAO,GAAG,IAAA,gBAAO,EAAC,eAAe,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE;QACvD,OAAO,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QACjD,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,yDAAyD;QAC9H,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAG/B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAgB,cAAc,CAC5B,SAAyC;IAEzC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAa,CAAC;AAC1D,CAAC","sourcesContent":["// Copyright 2020-2024 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { SubqlRuntimeHandler } from '@subql/types-starknet';\nimport { groupBy } from 'lodash';\nimport { StarknetProjectDs } from '../../configure/SubqueryProject';\n\n// Gets all the unique handlers and the contract addresses that go with them\nexport function groupedDataSources(\n dataSources: StarknetProjectDs[],\n): [SubqlRuntimeHandler, Array<string | undefined>][] {\n const addressHandlers: [string | undefined, SubqlRuntimeHandler][] =\n dataSources\n .map((ds) =>\n ds.mapping.handlers.map(\n (h) =>\n [ds.options?.address, h] as [\n string | undefined,\n SubqlRuntimeHandler,\n ],\n ),\n )\n .flat();\n\n const grouped = groupBy(addressHandlers, ([, handler]) => {\n return `${handler.kind}:${JSON.stringify(handler.filter)}`;\n });\n\n const res = Object.values(grouped).map((grouped) => {\n const addresses = [...new Set(grouped.map(([address]) => address))]; // Make unique, could be duplicate handler in the same DS\n return [grouped[0][1], addresses] as [\n SubqlRuntimeHandler,\n Array<string | undefined>,\n ];\n });\n\n return res;\n}\n\nexport function validAddresses(\n addresses?: (string | undefined | null)[],\n): string[] {\n return (addresses ?? []).filter((a) => !!a) as string[];\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/indexer/dictionary/utils.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;AAOnC,gDA6BC;AAED,wCAIC;AAvCD,mCAAiC;AAGjC,4EAA4E;AAC5E,SAAgB,kBAAkB,CAChC,WAAgC;IAEhC,MAAM,eAAe,GACnB,WAAW;SACR,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CACV,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CACrB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAGtB,CACJ,CACF;SACA,IAAI,EAAE,CAAC;IAEZ,MAAM,OAAO,GAAG,IAAA,gBAAO,EAAC,eAAe,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE;QACvD,OAAO,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QACjD,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,yDAAyD;QAC9H,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAG/B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAgB,cAAc,CAC5B,SAAyC;IAEzC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAa,CAAC;AAC1D,CAAC","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { SubqlRuntimeHandler } from '@subql/types-starknet';\nimport { groupBy } from 'lodash';\nimport { StarknetProjectDs } from '../../configure/SubqueryProject';\n\n// Gets all the unique handlers and the contract addresses that go with them\nexport function groupedDataSources(\n dataSources: StarknetProjectDs[],\n): [SubqlRuntimeHandler, Array<string | undefined>][] {\n const addressHandlers: [string | undefined, SubqlRuntimeHandler][] =\n dataSources\n .map((ds) =>\n ds.mapping.handlers.map(\n (h) =>\n [ds.options?.address, h] as [\n string | undefined,\n SubqlRuntimeHandler,\n ],\n ),\n )\n .flat();\n\n const grouped = groupBy(addressHandlers, ([, handler]) => {\n return `${handler.kind}:${JSON.stringify(handler.filter)}`;\n });\n\n const res = Object.values(grouped).map((grouped) => {\n const addresses = [...new Set(grouped.map(([address]) => address))]; // Make unique, could be duplicate handler in the same DS\n return [grouped[0][1], addresses] as [\n SubqlRuntimeHandler,\n Array<string | undefined>,\n ];\n });\n\n return res;\n}\n\nexport function validAddresses(\n addresses?: (string | undefined | null)[],\n): string[] {\n return (addresses ?? []).filter((a) => !!a) as string[];\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
2
+ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
3
3
  // SPDX-License-Identifier: GPL-3.0
4
4
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
5
  if (k2 === undefined) k2 = k;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/indexer/dictionary/v1/index.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;;AAEnC,yDAAuC","sourcesContent":["// Copyright 2020-2024 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nexport * from './starknetDictionaryV1';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/indexer/dictionary/v1/index.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;;AAEnC,yDAAuC","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nexport * from './starknetDictionaryV1';\n"]}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
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
5
  exports.StarknetDictionaryV1 = void 0;
@@ -1 +1 @@
1
- {"version":3,"file":"starknetDictionaryV1.js","sourceRoot":"","sources":["../../../../src/indexer/dictionary/v1/starknetDictionaryV1.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2020-2024 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { NodeConfig, DictionaryV1, getLogger } from '@subql/node-core';\nimport {\n DictionaryQueryCondition,\n DictionaryQueryEntry as DictionaryV1QueryEntry,\n} from '@subql/types-core';\nimport {\n StarknetHandlerKind,\n StarknetLogFilter,\n StarknetTransactionFilter,\n SubqlDatasource,\n} from '@subql/types-starknet';\nimport { sortBy, uniqBy } from 'lodash';\nimport { num } from 'starknet';\nimport {\n StarknetProjectDs,\n StarknetProjectDsTemplate,\n SubqueryProject,\n} from '../../../configure/SubqueryProject';\nimport { encodeSelectorToHex, hexEq } from '../../../starknet/utils.starknet';\nimport { yargsOptions } from '../../../yargs';\nimport { groupedDataSources, validAddresses } from '../utils';\nconst logger = getLogger('dictionary-v1');\n\n// Adds the addresses to the query conditions if valid\nfunction applyAddresses(\n conditions: DictionaryQueryCondition[],\n addresses?: (string | undefined | null)[],\n): void {\n // Don't do anything if theres something that requires no filters\n const queryAddressLimit = yargsOptions.argv['query-address-limit'];\n if (\n !addresses ||\n !addresses.length ||\n addresses.length > queryAddressLimit ||\n addresses.filter((v) => !v).length // DONT use find because 'undefined' and 'null' as falsey\n ) {\n return;\n }\n\n const filterAddresses = validAddresses(addresses).map((a) => a.toLowerCase());\n\n if (addresses.length === 1) {\n conditions.push({\n field: 'address',\n value: filterAddresses[0],\n matcher: 'equalTo',\n });\n } else {\n conditions.push({\n field: 'address',\n value: filterAddresses,\n matcher: 'in',\n });\n }\n}\n\nfunction eventFilterToQueryEntry(\n filter?: StarknetLogFilter,\n addresses?: (string | undefined | null)[],\n): DictionaryV1QueryEntry {\n const conditions: DictionaryQueryCondition[] = [];\n applyAddresses(conditions, addresses);\n // No null not needed, can use [] instead\n if (filter?.topics) {\n const hexTopics: string[] = filter.topics\n .filter((topic) => topic !== null && topic !== undefined)\n .map((topic) => (num.isHex(topic) ? topic : encodeSelectorToHex(topic)));\n conditions.push({\n field: 'topics',\n value: hexTopics,\n matcher: 'contains',\n });\n }\n return {\n entity: 'logs',\n conditions,\n };\n}\n\nfunction callFilterToQueryEntry(\n filter?: StarknetTransactionFilter,\n addresses?: (string | undefined | null)[],\n): DictionaryV1QueryEntry {\n const conditions: DictionaryQueryCondition[] = [];\n applyAddresses(conditions, addresses);\n\n for (const condition of conditions) {\n if (condition.field === 'address') {\n condition.field = 'to';\n }\n }\n if (!filter) {\n return {\n entity: 'calls',\n conditions,\n };\n }\n if (filter.from) {\n conditions.push({\n field: 'from',\n value: filter.from.toLowerCase(),\n matcher: 'equalTo',\n });\n }\n if (filter.type) {\n conditions.push({\n field: 'type',\n value: filter.type,\n matcher: 'equalTo',\n });\n }\n\n const optionsAddresses = conditions.find((c) => c.field === 'to');\n if (!optionsAddresses) {\n if (filter.to) {\n conditions.push({\n field: 'to',\n value: filter.to.toLowerCase(),\n matcher: 'equalTo',\n });\n } else if (filter.to === null) {\n conditions.push({\n field: 'to',\n value: true as any, // TODO update types to allow boolean\n matcher: 'isNull',\n });\n }\n } else if (optionsAddresses && (filter.to || filter.to === null)) {\n logger.warn(\n `TransactionFilter 'to' conflict with 'address' in data source options`,\n );\n }\n if (filter.function === null || filter.function === '0x') {\n conditions.push({\n field: 'func',\n value: true,\n matcher: 'isNull',\n });\n } else if (filter.function) {\n conditions.push({\n field: 'func',\n value: num.isHex(filter.function)\n ? filter.function\n : encodeSelectorToHex(filter.function),\n matcher: 'equalTo',\n });\n }\n return {\n entity: 'calls',\n conditions,\n };\n}\n\n// eslint-disable-next-line complexity\nexport function buildDictionaryV1QueryEntries(\n dataSources: SubqlDatasource[],\n): DictionaryV1QueryEntry[] {\n const queryEntries: DictionaryV1QueryEntry[] = [];\n\n const groupedHandlers = groupedDataSources(dataSources);\n for (const [handler, addresses] of groupedHandlers) {\n // No filters, cant use dictionary\n if (!handler.filter && !addresses?.length) return [];\n\n switch (handler.kind) {\n case StarknetHandlerKind.Block:\n if (handler.filter?.modulo === undefined) {\n return [];\n }\n break;\n case StarknetHandlerKind.Call: {\n if (\n (!handler.filter ||\n !Object.values(handler.filter).filter((v) => v !== undefined)\n .length) &&\n !validAddresses(addresses).length\n ) {\n return [];\n }\n queryEntries.push(callFilterToQueryEntry(handler.filter, addresses));\n break;\n }\n case StarknetHandlerKind.Event:\n if (\n !handler.filter?.topics?.length &&\n !validAddresses(addresses).length\n ) {\n return [];\n }\n queryEntries.push(eventFilterToQueryEntry(handler.filter, addresses));\n break;\n default:\n }\n }\n\n return uniqBy(\n queryEntries,\n (item) =>\n `${item.entity}|${JSON.stringify(\n sortBy(item.conditions, (c) => c.field),\n )}`,\n );\n}\n\nexport class StarknetDictionaryV1 extends DictionaryV1<SubqlDatasource> {\n private constructor(\n project: SubqueryProject,\n nodeConfig: NodeConfig,\n dictionaryUrl: string,\n ) {\n super(dictionaryUrl, project.network.chainId, nodeConfig);\n }\n\n static async create(\n project: SubqueryProject,\n nodeConfig: NodeConfig,\n dictionaryUrl: string,\n ): Promise<StarknetDictionaryV1> {\n const dictionary = new StarknetDictionaryV1(\n project,\n nodeConfig,\n dictionaryUrl,\n );\n await dictionary.init();\n return dictionary;\n }\n\n buildDictionaryQueryEntries(\n // Add name to datasource as templates have this set\n dataSources: (StarknetProjectDs | StarknetProjectDsTemplate)[],\n ): DictionaryV1QueryEntry[] {\n return buildDictionaryV1QueryEntries(dataSources);\n }\n}\n"]}
1
+ {"version":3,"file":"starknetDictionaryV1.js","sourceRoot":"","sources":["../../../../src/indexer/dictionary/v1/starknetDictionaryV1.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 { NodeConfig, DictionaryV1, getLogger } from '@subql/node-core';\nimport {\n DictionaryQueryCondition,\n DictionaryQueryEntry as DictionaryV1QueryEntry,\n} from '@subql/types-core';\nimport {\n StarknetHandlerKind,\n StarknetLogFilter,\n StarknetTransactionFilter,\n SubqlDatasource,\n} from '@subql/types-starknet';\nimport { sortBy, uniqBy } from 'lodash';\nimport { num } from 'starknet';\nimport {\n StarknetProjectDs,\n StarknetProjectDsTemplate,\n SubqueryProject,\n} from '../../../configure/SubqueryProject';\nimport { encodeSelectorToHex, hexEq } from '../../../starknet/utils.starknet';\nimport { yargsOptions } from '../../../yargs';\nimport { groupedDataSources, validAddresses } from '../utils';\nconst logger = getLogger('dictionary-v1');\n\n// Adds the addresses to the query conditions if valid\nfunction applyAddresses(\n conditions: DictionaryQueryCondition[],\n addresses?: (string | undefined | null)[],\n): void {\n // Don't do anything if theres something that requires no filters\n const queryAddressLimit = yargsOptions.argv['query-address-limit'];\n if (\n !addresses ||\n !addresses.length ||\n addresses.length > queryAddressLimit ||\n addresses.filter((v) => !v).length // DONT use find because 'undefined' and 'null' as falsey\n ) {\n return;\n }\n\n const filterAddresses = validAddresses(addresses).map((a) => a.toLowerCase());\n\n if (addresses.length === 1) {\n conditions.push({\n field: 'address',\n value: filterAddresses[0],\n matcher: 'equalTo',\n });\n } else {\n conditions.push({\n field: 'address',\n value: filterAddresses,\n matcher: 'in',\n });\n }\n}\n\nfunction eventFilterToQueryEntry(\n filter?: StarknetLogFilter,\n addresses?: (string | undefined | null)[],\n): DictionaryV1QueryEntry {\n const conditions: DictionaryQueryCondition[] = [];\n applyAddresses(conditions, addresses);\n // No null not needed, can use [] instead\n if (filter?.topics) {\n const hexTopics: string[] = filter.topics\n .filter((topic) => topic !== null && topic !== undefined)\n .map((topic) => (num.isHex(topic) ? topic : encodeSelectorToHex(topic)));\n conditions.push({\n field: 'topics',\n value: hexTopics,\n matcher: 'contains',\n });\n }\n return {\n entity: 'logs',\n conditions,\n };\n}\n\nfunction callFilterToQueryEntry(\n filter?: StarknetTransactionFilter,\n addresses?: (string | undefined | null)[],\n): DictionaryV1QueryEntry {\n const conditions: DictionaryQueryCondition[] = [];\n applyAddresses(conditions, addresses);\n\n for (const condition of conditions) {\n if (condition.field === 'address') {\n condition.field = 'to';\n }\n }\n if (!filter) {\n return {\n entity: 'calls',\n conditions,\n };\n }\n if (filter.from) {\n conditions.push({\n field: 'from',\n value: filter.from.toLowerCase(),\n matcher: 'equalTo',\n });\n }\n if (filter.type) {\n conditions.push({\n field: 'type',\n value: filter.type,\n matcher: 'equalTo',\n });\n }\n\n const optionsAddresses = conditions.find((c) => c.field === 'to');\n if (!optionsAddresses) {\n if (filter.to) {\n conditions.push({\n field: 'to',\n value: filter.to.toLowerCase(),\n matcher: 'equalTo',\n });\n } else if (filter.to === null) {\n conditions.push({\n field: 'to',\n value: true as any, // TODO update types to allow boolean\n matcher: 'isNull',\n });\n }\n } else if (optionsAddresses && (filter.to || filter.to === null)) {\n logger.warn(\n `TransactionFilter 'to' conflict with 'address' in data source options`,\n );\n }\n if (filter.function === null || filter.function === '0x') {\n conditions.push({\n field: 'func',\n value: true,\n matcher: 'isNull',\n });\n } else if (filter.function) {\n conditions.push({\n field: 'func',\n value: num.isHex(filter.function)\n ? filter.function\n : encodeSelectorToHex(filter.function),\n matcher: 'equalTo',\n });\n }\n return {\n entity: 'calls',\n conditions,\n };\n}\n\n// eslint-disable-next-line complexity\nexport function buildDictionaryV1QueryEntries(\n dataSources: SubqlDatasource[],\n): DictionaryV1QueryEntry[] {\n const queryEntries: DictionaryV1QueryEntry[] = [];\n\n const groupedHandlers = groupedDataSources(dataSources);\n for (const [handler, addresses] of groupedHandlers) {\n // No filters, cant use dictionary\n if (!handler.filter && !addresses?.length) return [];\n\n switch (handler.kind) {\n case StarknetHandlerKind.Block:\n if (handler.filter?.modulo === undefined) {\n return [];\n }\n break;\n case StarknetHandlerKind.Call: {\n if (\n (!handler.filter ||\n !Object.values(handler.filter).filter((v) => v !== undefined)\n .length) &&\n !validAddresses(addresses).length\n ) {\n return [];\n }\n queryEntries.push(callFilterToQueryEntry(handler.filter, addresses));\n break;\n }\n case StarknetHandlerKind.Event:\n if (\n !handler.filter?.topics?.length &&\n !validAddresses(addresses).length\n ) {\n return [];\n }\n queryEntries.push(eventFilterToQueryEntry(handler.filter, addresses));\n break;\n default:\n }\n }\n\n return uniqBy(\n queryEntries,\n (item) =>\n `${item.entity}|${JSON.stringify(\n sortBy(item.conditions, (c) => c.field),\n )}`,\n );\n}\n\nexport class StarknetDictionaryV1 extends DictionaryV1<SubqlDatasource> {\n private constructor(\n project: SubqueryProject,\n nodeConfig: NodeConfig,\n dictionaryUrl: string,\n ) {\n super(dictionaryUrl, project.network.chainId, nodeConfig);\n }\n\n static async create(\n project: SubqueryProject,\n nodeConfig: NodeConfig,\n dictionaryUrl: string,\n ): Promise<StarknetDictionaryV1> {\n const dictionary = new StarknetDictionaryV1(\n project,\n nodeConfig,\n dictionaryUrl,\n );\n await dictionary.init();\n return dictionary;\n }\n\n buildDictionaryQueryEntries(\n // Add name to datasource as templates have this set\n dataSources: (StarknetProjectDs | StarknetProjectDsTemplate)[],\n ): DictionaryV1QueryEntry[] {\n return buildDictionaryV1QueryEntries(dataSources);\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
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
5
  const types_starknet_1 = require("@subql/types-starknet");
@@ -1 +1 @@
1
- {"version":3,"file":"starknetDictionaryV1.spec.js","sourceRoot":"","sources":["../../../../src/indexer/dictionary/v1/starknetDictionaryV1.spec.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2020-2024 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport {\n StarknetDatasourceKind,\n StarknetHandlerKind,\n StarknetRuntimeDatasource,\n} from '@subql/types-starknet';\nimport { StarknetProjectDsTemplate } from '../../../configure/SubqueryProject';\nimport { buildDictionaryV1QueryEntries } from './starknetDictionaryV1';\n\nconst mockTempDs: StarknetProjectDsTemplate[] = [\n {\n name: 'ZkLend',\n kind: StarknetDatasourceKind.Runtime,\n assets: new Map(),\n options: {\n // Must be a key of assets\n abi: 'zkLend',\n // # this is the contract address for zkLend market https://starkscan.co/contract/0x04c0a5193d58f74fbace4b74dcf65481e734ed1714121bdc571da345540efa05\n address:\n '0x04c0a5193d58f74fbace4b74dcf65481e734ed1714121bdc571da345540efa05',\n },\n mapping: {\n file: '',\n handlers: [\n {\n kind: StarknetHandlerKind.Call,\n handler: 'handleTransaction',\n filter: {\n to: '0x04c0a5193d58f74fbace4b74dcf65481e734ed1714121bdc571da345540efa05',\n type: 'INVOKE',\n /**\n * The function can either be the function fragment or signature\n * function: 'withdraw'\n * function: '0x015511cc3694f64379908437d6d64458dc76d02482052bfb8a5b33a72c054c77'\n */\n function: 'withdraw',\n },\n },\n {\n kind: StarknetHandlerKind.Event,\n handler: 'handleLog',\n filter: {\n /**\n * Follows standard log filters for Starknet\n * zkLend address: \"0x04c0a5193d58f74fbace4b74dcf65481e734ed1714121bdc571da345540efa05\"\n */\n topics: [\n 'Deposit', //0x9149d2123147c5f43d258257fef0b7b969db78269369ebcf5ebb9eef8592f2\n ],\n },\n },\n ],\n },\n },\n];\n\ndescribe('buildDictionaryV1QueryEntries', () => {\n describe('Log filters', () => {\n it('Build filter for logs', () => {\n const ds: StarknetRuntimeDatasource = {\n kind: StarknetDatasourceKind.Runtime,\n assets: new Map(),\n options: {\n // Must be a key of assets\n abi: 'zkLend',\n // # this is the contract address for zkLend market https://starkscan.co/contract/0x04c0a5193d58f74fbace4b74dcf65481e734ed1714121bdc571da345540efa05\n address:\n '0x04c0a5193d58f74fbace4b74dcf65481e734ed1714121bdc571da345540efa05',\n },\n mapping: {\n file: '',\n handlers: [\n {\n kind: StarknetHandlerKind.Event,\n handler: 'handleLog',\n filter: {\n /**\n * Follows standard log filters for Starknet\n * zkLend address: \"0x04c0a5193d58f74fbace4b74dcf65481e734ed1714121bdc571da345540efa05\"\n */\n topics: [\n 'Deposit', //0x9149d2123147c5f43d258257fef0b7b969db78269369ebcf5ebb9eef8592f2\n ],\n },\n },\n ],\n },\n };\n\n const result = buildDictionaryV1QueryEntries([ds]);\n\n expect(result).toEqual([\n {\n conditions: [\n {\n field: 'address',\n matcher: 'equalTo',\n value:\n '0x04c0a5193d58f74fbace4b74dcf65481e734ed1714121bdc571da345540efa05',\n },\n {\n field: 'topics',\n matcher: 'contains',\n value: [\n '0x9149d2123147c5f43d258257fef0b7b969db78269369ebcf5ebb9eef8592f2',\n ],\n },\n ],\n entity: 'logs',\n },\n ]);\n });\n });\n describe('Transaction filters', () => {\n it('Build a filter for contract type', () => {\n const ds: StarknetRuntimeDatasource = {\n kind: StarknetDatasourceKind.Runtime,\n assets: new Map(),\n startBlock: 1,\n mapping: {\n file: '',\n handlers: [\n {\n handler: 'handleTransaction',\n kind: StarknetHandlerKind.Call,\n filter: {\n type: 'L1_HANDLER',\n },\n },\n ],\n },\n };\n\n const result = buildDictionaryV1QueryEntries([ds]);\n\n expect(result).toEqual([\n {\n conditions: [\n {\n field: 'type',\n matcher: 'equalTo',\n value: 'L1_HANDLER',\n },\n ],\n entity: 'calls',\n },\n ]);\n });\n\n it('Build a filter with include ds option and contract address', () => {\n const ds: StarknetRuntimeDatasource = {\n kind: StarknetDatasourceKind.Runtime,\n assets: new Map(),\n options: {\n // Must be a key of assets\n abi: 'zkLend',\n // # this is the contract address for zkLend market https://starkscan.co/contract/0x04c0a5193d58f74fbace4b74dcf65481e734ed1714121bdc571da345540efa05\n address:\n '0x04c0a5193d58f74fbace4b74dcf65481e734ed1714121bdc571da345540efa05',\n },\n mapping: {\n file: '',\n handlers: [\n {\n kind: StarknetHandlerKind.Call,\n handler: 'handleTransaction',\n filter: {\n to: '0x04c0a5193d58f74fbace4b74dcf65481e734ed1714121bdc571da345540efa05',\n // type: \"INVOKE\",\n /**\n * The function can either be the function fragment or signature\n * function: 'withdraw'\n * function: '0x015511cc3694f64379908437d6d64458dc76d02482052bfb8a5b33a72c054c77'\n */\n function: 'withdraw',\n },\n },\n ],\n },\n };\n\n const result = buildDictionaryV1QueryEntries([ds]);\n expect(result).toEqual([\n {\n conditions: [\n {\n field: 'to',\n matcher: 'equalTo',\n value:\n '0x04c0a5193d58f74fbace4b74dcf65481e734ed1714121bdc571da345540efa05',\n },\n {\n field: 'func',\n matcher: 'equalTo',\n value:\n '0x15511cc3694f64379908437d6d64458dc76d02482052bfb8a5b33a72c054c77',\n },\n ],\n entity: 'calls',\n },\n ]);\n });\n });\n});\n"]}
1
+ {"version":3,"file":"starknetDictionaryV1.spec.js","sourceRoot":"","sources":["../../../../src/indexer/dictionary/v1/starknetDictionaryV1.spec.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 {\n StarknetDatasourceKind,\n StarknetHandlerKind,\n StarknetRuntimeDatasource,\n} from '@subql/types-starknet';\nimport { StarknetProjectDsTemplate } from '../../../configure/SubqueryProject';\nimport { buildDictionaryV1QueryEntries } from './starknetDictionaryV1';\n\nconst mockTempDs: StarknetProjectDsTemplate[] = [\n {\n name: 'ZkLend',\n kind: StarknetDatasourceKind.Runtime,\n assets: new Map(),\n options: {\n // Must be a key of assets\n abi: 'zkLend',\n // # this is the contract address for zkLend market https://starkscan.co/contract/0x04c0a5193d58f74fbace4b74dcf65481e734ed1714121bdc571da345540efa05\n address:\n '0x04c0a5193d58f74fbace4b74dcf65481e734ed1714121bdc571da345540efa05',\n },\n mapping: {\n file: '',\n handlers: [\n {\n kind: StarknetHandlerKind.Call,\n handler: 'handleTransaction',\n filter: {\n to: '0x04c0a5193d58f74fbace4b74dcf65481e734ed1714121bdc571da345540efa05',\n type: 'INVOKE',\n /**\n * The function can either be the function fragment or signature\n * function: 'withdraw'\n * function: '0x015511cc3694f64379908437d6d64458dc76d02482052bfb8a5b33a72c054c77'\n */\n function: 'withdraw',\n },\n },\n {\n kind: StarknetHandlerKind.Event,\n handler: 'handleLog',\n filter: {\n /**\n * Follows standard log filters for Starknet\n * zkLend address: \"0x04c0a5193d58f74fbace4b74dcf65481e734ed1714121bdc571da345540efa05\"\n */\n topics: [\n 'Deposit', //0x9149d2123147c5f43d258257fef0b7b969db78269369ebcf5ebb9eef8592f2\n ],\n },\n },\n ],\n },\n },\n];\n\ndescribe('buildDictionaryV1QueryEntries', () => {\n describe('Log filters', () => {\n it('Build filter for logs', () => {\n const ds: StarknetRuntimeDatasource = {\n kind: StarknetDatasourceKind.Runtime,\n assets: new Map(),\n options: {\n // Must be a key of assets\n abi: 'zkLend',\n // # this is the contract address for zkLend market https://starkscan.co/contract/0x04c0a5193d58f74fbace4b74dcf65481e734ed1714121bdc571da345540efa05\n address:\n '0x04c0a5193d58f74fbace4b74dcf65481e734ed1714121bdc571da345540efa05',\n },\n mapping: {\n file: '',\n handlers: [\n {\n kind: StarknetHandlerKind.Event,\n handler: 'handleLog',\n filter: {\n /**\n * Follows standard log filters for Starknet\n * zkLend address: \"0x04c0a5193d58f74fbace4b74dcf65481e734ed1714121bdc571da345540efa05\"\n */\n topics: [\n 'Deposit', //0x9149d2123147c5f43d258257fef0b7b969db78269369ebcf5ebb9eef8592f2\n ],\n },\n },\n ],\n },\n };\n\n const result = buildDictionaryV1QueryEntries([ds]);\n\n expect(result).toEqual([\n {\n conditions: [\n {\n field: 'address',\n matcher: 'equalTo',\n value:\n '0x04c0a5193d58f74fbace4b74dcf65481e734ed1714121bdc571da345540efa05',\n },\n {\n field: 'topics',\n matcher: 'contains',\n value: [\n '0x9149d2123147c5f43d258257fef0b7b969db78269369ebcf5ebb9eef8592f2',\n ],\n },\n ],\n entity: 'logs',\n },\n ]);\n });\n });\n describe('Transaction filters', () => {\n it('Build a filter for contract type', () => {\n const ds: StarknetRuntimeDatasource = {\n kind: StarknetDatasourceKind.Runtime,\n assets: new Map(),\n startBlock: 1,\n mapping: {\n file: '',\n handlers: [\n {\n handler: 'handleTransaction',\n kind: StarknetHandlerKind.Call,\n filter: {\n type: 'L1_HANDLER',\n },\n },\n ],\n },\n };\n\n const result = buildDictionaryV1QueryEntries([ds]);\n\n expect(result).toEqual([\n {\n conditions: [\n {\n field: 'type',\n matcher: 'equalTo',\n value: 'L1_HANDLER',\n },\n ],\n entity: 'calls',\n },\n ]);\n });\n\n it('Build a filter with include ds option and contract address', () => {\n const ds: StarknetRuntimeDatasource = {\n kind: StarknetDatasourceKind.Runtime,\n assets: new Map(),\n options: {\n // Must be a key of assets\n abi: 'zkLend',\n // # this is the contract address for zkLend market https://starkscan.co/contract/0x04c0a5193d58f74fbace4b74dcf65481e734ed1714121bdc571da345540efa05\n address:\n '0x04c0a5193d58f74fbace4b74dcf65481e734ed1714121bdc571da345540efa05',\n },\n mapping: {\n file: '',\n handlers: [\n {\n kind: StarknetHandlerKind.Call,\n handler: 'handleTransaction',\n filter: {\n to: '0x04c0a5193d58f74fbace4b74dcf65481e734ed1714121bdc571da345540efa05',\n // type: \"INVOKE\",\n /**\n * The function can either be the function fragment or signature\n * function: 'withdraw'\n * function: '0x015511cc3694f64379908437d6d64458dc76d02482052bfb8a5b33a72c054c77'\n */\n function: 'withdraw',\n },\n },\n ],\n },\n };\n\n const result = buildDictionaryV1QueryEntries([ds]);\n expect(result).toEqual([\n {\n conditions: [\n {\n field: 'to',\n matcher: 'equalTo',\n value:\n '0x04c0a5193d58f74fbace4b74dcf65481e734ed1714121bdc571da345540efa05',\n },\n {\n field: 'func',\n matcher: 'equalTo',\n value:\n '0x15511cc3694f64379908437d6d64458dc76d02482052bfb8a5b33a72c054c77',\n },\n ],\n entity: 'calls',\n },\n ]);\n });\n });\n});\n"]}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
2
+ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
3
3
  // SPDX-License-Identifier: GPL-3.0
4
4
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
5
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -1 +1 @@
1
- {"version":3,"file":"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-2024 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
+ {"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,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
2
+ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
3
3
  // SPDX-License-Identifier: GPL-3.0
4
4
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
5
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -1 +1 @@
1
- {"version":3,"file":"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-2024 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
+ {"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,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
2
+ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
3
3
  // SPDX-License-Identifier: GPL-3.0
4
4
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
5
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.module.js","sourceRoot":"","sources":["../../src/indexer/fetch.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;AAEnC,2CAAwC;AACxC,yDAAsD;AACtD,gDAY0B;AAG1B,2EAAsE;AACtE,uDAG2B;AAC3B,wFAAoF;AACpF,iEAA4D;AAC5D,6DAAwD;AACxD,mDAA+C;AAC/C,uDAAmD;AACnD,uDAAmD;AACnD,2EAAuE;AA2GhE,IAAM,WAAW,GAAjB,MAAM,WAAW;CAAG,CAAA;AAAd,kCAAW;sBAAX,WAAW;IAzGvB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,sBAAU,CAAC;QACrB,SAAS,EAAE;YACT;gBACE,OAAO,EAAE,sBAAU;gBACnB,UAAU,EAAE,KAAK,EACf,OAAwB,EACxB,qBAAmE,EACnE,YAA2B,EAC3B,UAAsB,EACtB,EAAE;oBACF,MAAM,UAAU,GAAG,IAAI,yCAAkB,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,gCAAc;YACd;gBACE,OAAO,EAAE,kBAAkB;gBAC3B,UAAU,EAAE,CACV,UAAsB,EACtB,YAA2B,EAC3B,cAA8B,EAC9B,qBAA6C,EAC7C,UAA8B,EAC9B,cAA8B,EAC9B,YAAkC,EAClC,YAA0B,EAC1B,kBAAuC,EACvC,cAA8B,EAC9B,OAAwB,EACxB,gBAAkC,EAClC,iBAA2C,EAC3C,mBAAsE,EACtE,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,sDAAyB;YACzB,yCAAkB;YAClB,qCAAgB;YAChB,yCAAkB;YAClB;gBACE,QAAQ,EAAE,gCAAc;gBACxB,OAAO,EAAE,iBAAiB;aAC3B;YACD,oDAAwB;SACzB;KACF,CAAC;GACW,WAAW,CAAG","sourcesContent":["// Copyright 2020-2024 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 ApiService,\n NodeConfig,\n ConnectionPoolService,\n ConnectionPoolStateManager,\n IProjectUpgradeService,\n PoiSyncService,\n InMemoryCacheService,\n MonitorService,\n CoreModule,\n IStoreModelProvider,\n} from '@subql/node-core';\nimport { SubqueryProject } from '../configure/SubqueryProject';\nimport { StarknetApiConnection } from '../starknet/api.connection';\nimport { StarknetApiService } from '../starknet/api.service.starknet';\nimport {\n BlockDispatcherService,\n WorkerBlockDispatcherService,\n} from './blockDispatcher';\nimport { StarknetDictionaryService } from './dictionary/starknetDictionary.service';\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<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 IndexerManager,\n {\n provide: 'IBlockDispatcher',\n useFactory: (\n nodeConfig: NodeConfig,\n eventEmitter: EventEmitter2,\n projectService: ProjectService,\n projectUpgradeService: IProjectUpgradeService,\n apiService: StarknetApiService,\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<StarknetApiConnection>,\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 StarknetDictionaryService,\n DsProcessorService,\n DynamicDsService,\n StarknetApiService,\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,2CAAwC;AACxC,yDAAsD;AACtD,gDAY0B;AAG1B,2EAAsE;AACtE,uDAG2B;AAC3B,wFAAoF;AACpF,iEAA4D;AAC5D,6DAAwD;AACxD,mDAA+C;AAC/C,uDAAmD;AACnD,uDAAmD;AACnD,2EAAuE;AA2GhE,IAAM,WAAW,GAAjB,MAAM,WAAW;CAAG,CAAA;AAAd,kCAAW;sBAAX,WAAW;IAzGvB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,sBAAU,CAAC;QACrB,SAAS,EAAE;YACT;gBACE,OAAO,EAAE,sBAAU;gBACnB,UAAU,EAAE,KAAK,EACf,OAAwB,EACxB,qBAAmE,EACnE,YAA2B,EAC3B,UAAsB,EACtB,EAAE;oBACF,MAAM,UAAU,GAAG,IAAI,yCAAkB,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,gCAAc;YACd;gBACE,OAAO,EAAE,kBAAkB;gBAC3B,UAAU,EAAE,CACV,UAAsB,EACtB,YAA2B,EAC3B,cAA8B,EAC9B,qBAA6C,EAC7C,UAA8B,EAC9B,cAA8B,EAC9B,YAAkC,EAClC,YAA0B,EAC1B,kBAAuC,EACvC,cAA8B,EAC9B,OAAwB,EACxB,gBAAkC,EAClC,iBAA2C,EAC3C,mBAAsE,EACtE,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,sDAAyB;YACzB,yCAAkB;YAClB,qCAAgB;YAChB,yCAAkB;YAClB;gBACE,QAAQ,EAAE,gCAAc;gBACxB,OAAO,EAAE,iBAAiB;aAC3B;YACD,oDAAwB;SACzB;KACF,CAAC;GACW,WAAW,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 StoreService,\n ApiService,\n NodeConfig,\n ConnectionPoolService,\n ConnectionPoolStateManager,\n IProjectUpgradeService,\n PoiSyncService,\n InMemoryCacheService,\n MonitorService,\n CoreModule,\n IStoreModelProvider,\n} from '@subql/node-core';\nimport { SubqueryProject } from '../configure/SubqueryProject';\nimport { StarknetApiConnection } from '../starknet/api.connection';\nimport { StarknetApiService } from '../starknet/api.service.starknet';\nimport {\n BlockDispatcherService,\n WorkerBlockDispatcherService,\n} from './blockDispatcher';\nimport { StarknetDictionaryService } from './dictionary/starknetDictionary.service';\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<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 IndexerManager,\n {\n provide: 'IBlockDispatcher',\n useFactory: (\n nodeConfig: NodeConfig,\n eventEmitter: EventEmitter2,\n projectService: ProjectService,\n projectUpgradeService: IProjectUpgradeService,\n apiService: StarknetApiService,\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<StarknetApiConnection>,\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 StarknetDictionaryService,\n DsProcessorService,\n DynamicDsService,\n StarknetApiService,\n {\n useClass: ProjectService,\n provide: 'IProjectService',\n },\n UnfinalizedBlocksService,\n ],\n})\nexport class FetchModule {}\n"]}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
2
+ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
3
3
  // SPDX-License-Identifier: GPL-3.0
4
4
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
5
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -1 +1 @@
1
- {"version":3,"file":"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-2024 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Inject, Injectable } from '@nestjs/common';\nimport { EventEmitter2 } from '@nestjs/event-emitter';\nimport { SchedulerRegistry } from '@nestjs/schedule';\n\nimport { 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"]}
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"]}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
2
+ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
3
3
  // SPDX-License-Identifier: GPL-3.0
4
4
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
5
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -1 +1 @@
1
- {"version":3,"file":"indexer.manager.js","sourceRoot":"","sources":["../../src/indexer/indexer.manager.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2020-2024 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Injectable } from '@nestjs/common';\nimport {\n isBlockHandlerProcessor,\n isCallHandlerProcessor,\n isEventHandlerProcessor,\n isCustomDs,\n isRuntimeDs,\n StarknetCustomDataSource,\n StarknetHandlerKind,\n StarknetRuntimeHandlerInputMap,\n SubqlStarknetDataSource,\n} from '@subql/common-starknet';\nimport {\n ApiService,\n NodeConfig,\n profiler,\n IndexerSandbox,\n ProcessBlockResponse,\n BaseIndexerManager,\n IBlock,\n SandboxService,\n} from '@subql/node-core';\nimport {\n StarknetTransaction,\n StarknetLog,\n StarknetBlock,\n StarknetRuntimeDatasource,\n StarknetBlockFilter,\n StarknetLogFilter,\n StarknetTransactionFilter,\n} from '@subql/types-starknet';\nimport { StarknetProjectDs } from '../configure/SubqueryProject';\nimport { StarknetApi } from '../starknet';\nimport {\n filterBlocksProcessor,\n filterLogsProcessor,\n filterTransactionsProcessor,\n isFullBlock,\n} from '../starknet/block.starknet';\nimport SafeStarknetProvider from '../starknet/safe-api';\nimport { DsProcessorService } from './ds-processor.service';\nimport { DynamicDsService } from './dynamic-ds.service';\nimport { BlockContent } from './types';\nimport { UnfinalizedBlocksService } from './unfinalizedBlocks.service';\n\n@Injectable()\nexport class IndexerManager extends BaseIndexerManager<\n StarknetApi,\n SafeStarknetProvider,\n BlockContent,\n ApiService,\n SubqlStarknetDataSource,\n StarknetCustomDataSource,\n typeof FilterTypeMap,\n typeof ProcessorTypeMap,\n StarknetRuntimeHandlerInputMap\n> {\n protected isRuntimeDs = isRuntimeDs;\n protected isCustomDs = isCustomDs;\n\n constructor(\n apiService: ApiService,\n nodeConfig: NodeConfig,\n sandboxService: SandboxService<SafeStarknetProvider, StarknetApi>,\n dsProcessorService: DsProcessorService,\n dynamicDsService: DynamicDsService,\n unfinalizedBlocksService: UnfinalizedBlocksService,\n ) {\n super(\n apiService,\n nodeConfig,\n sandboxService,\n dsProcessorService,\n dynamicDsService,\n unfinalizedBlocksService,\n FilterTypeMap,\n ProcessorTypeMap,\n );\n }\n\n @profiler()\n async indexBlock(\n block: IBlock<BlockContent>,\n dataSources: SubqlStarknetDataSource[],\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(block: BlockContent): Promise<SafeStarknetProvider> {\n return this.apiService.safeApi(block.blockNumber);\n }\n\n protected getDsProcessor(\n ds: SubqlStarknetDataSource,\n safeApi: SafeStarknetProvider,\n ): IndexerSandbox {\n return this.sandboxService.getDsProcessor(\n ds,\n safeApi,\n this.apiService.unsafeApi.api,\n );\n }\n\n protected async indexBlockData(\n block: BlockContent,\n dataSources: StarknetProjectDs[],\n getVM: (d: StarknetProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n if (isFullBlock(block)) {\n await this.indexBlockContent(block, dataSources, getVM);\n\n for (const tx of block.transactions) {\n await this.indexTransaction(tx, dataSources, getVM);\n\n for (const log of tx.logs ?? []) {\n await this.indexEvent(log, dataSources, getVM);\n }\n }\n } else {\n for (const log of block.logs ?? []) {\n await this.indexEvent(log, dataSources, getVM);\n }\n }\n }\n\n private async indexBlockContent(\n block: StarknetBlock,\n dataSources: StarknetProjectDs[],\n getVM: (d: StarknetProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n for (const ds of dataSources) {\n await this.indexData(StarknetHandlerKind.Block, block, ds, getVM);\n }\n }\n\n private async indexTransaction(\n tx: StarknetTransaction,\n dataSources: StarknetProjectDs[],\n getVM: (d: StarknetProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n for (const ds of dataSources) {\n await this.indexData(StarknetHandlerKind.Call, tx, ds, getVM);\n }\n }\n\n private async indexEvent(\n log: StarknetLog,\n dataSources: StarknetProjectDs[],\n getVM: (d: StarknetProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n for (const ds of dataSources) {\n await this.indexData(StarknetHandlerKind.Event, log, ds, getVM);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n protected async prepareFilteredData(\n kind: StarknetHandlerKind,\n data: any,\n ds: StarknetRuntimeDatasource,\n ): Promise<any> {\n return DataAbiParser[kind](this.apiService.api)(data, ds);\n }\n}\n\nconst ProcessorTypeMap = {\n [StarknetHandlerKind.Block]: isBlockHandlerProcessor,\n [StarknetHandlerKind.Event]: isEventHandlerProcessor,\n [StarknetHandlerKind.Call]: isCallHandlerProcessor,\n};\n\nconst FilterTypeMap = {\n [StarknetHandlerKind.Block]: (\n data: StarknetBlock,\n filter: StarknetBlockFilter,\n ds: SubqlStarknetDataSource,\n ) => filterBlocksProcessor(data, filter, ds.options?.address),\n [StarknetHandlerKind.Event]: (\n data: StarknetLog,\n filter: StarknetLogFilter,\n ds: SubqlStarknetDataSource,\n ) => filterLogsProcessor(data, filter, ds.options?.address),\n [StarknetHandlerKind.Call]: (\n data: StarknetTransaction,\n filter: StarknetTransactionFilter,\n ds: SubqlStarknetDataSource,\n ) => filterTransactionsProcessor(data, filter, ds.options?.address),\n};\n\nconst DataAbiParser = {\n [StarknetHandlerKind.Block]: () => (data: StarknetBlock) => data,\n [StarknetHandlerKind.Event]:\n (api: StarknetApi) => (data: StarknetLog, ds: StarknetRuntimeDatasource) =>\n api.parseLog(data, ds),\n [StarknetHandlerKind.Call]:\n (api: StarknetApi) =>\n (data: StarknetTransaction, ds: StarknetRuntimeDatasource) =>\n api.parseTransaction(data, ds),\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 { Injectable } from '@nestjs/common';\nimport {\n isBlockHandlerProcessor,\n isCallHandlerProcessor,\n isEventHandlerProcessor,\n isCustomDs,\n isRuntimeDs,\n StarknetCustomDataSource,\n StarknetHandlerKind,\n StarknetRuntimeHandlerInputMap,\n SubqlStarknetDataSource,\n} from '@subql/common-starknet';\nimport {\n ApiService,\n NodeConfig,\n profiler,\n IndexerSandbox,\n ProcessBlockResponse,\n BaseIndexerManager,\n IBlock,\n SandboxService,\n} from '@subql/node-core';\nimport {\n StarknetTransaction,\n StarknetLog,\n StarknetBlock,\n StarknetRuntimeDatasource,\n StarknetBlockFilter,\n StarknetLogFilter,\n StarknetTransactionFilter,\n} from '@subql/types-starknet';\nimport { StarknetProjectDs } from '../configure/SubqueryProject';\nimport { StarknetApi } from '../starknet';\nimport {\n filterBlocksProcessor,\n filterLogsProcessor,\n filterTransactionsProcessor,\n isFullBlock,\n} from '../starknet/block.starknet';\nimport SafeStarknetProvider from '../starknet/safe-api';\nimport { DsProcessorService } from './ds-processor.service';\nimport { DynamicDsService } from './dynamic-ds.service';\nimport { BlockContent } from './types';\nimport { UnfinalizedBlocksService } from './unfinalizedBlocks.service';\n\n@Injectable()\nexport class IndexerManager extends BaseIndexerManager<\n StarknetApi,\n SafeStarknetProvider,\n BlockContent,\n ApiService,\n SubqlStarknetDataSource,\n StarknetCustomDataSource,\n typeof FilterTypeMap,\n typeof ProcessorTypeMap,\n StarknetRuntimeHandlerInputMap\n> {\n protected isRuntimeDs = isRuntimeDs;\n protected isCustomDs = isCustomDs;\n\n constructor(\n apiService: ApiService,\n nodeConfig: NodeConfig,\n sandboxService: SandboxService<SafeStarknetProvider, StarknetApi>,\n dsProcessorService: DsProcessorService,\n dynamicDsService: DynamicDsService,\n unfinalizedBlocksService: UnfinalizedBlocksService,\n ) {\n super(\n apiService,\n nodeConfig,\n sandboxService,\n dsProcessorService,\n dynamicDsService,\n unfinalizedBlocksService,\n FilterTypeMap,\n ProcessorTypeMap,\n );\n }\n\n @profiler()\n async indexBlock(\n block: IBlock<BlockContent>,\n dataSources: SubqlStarknetDataSource[],\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(block: BlockContent): Promise<SafeStarknetProvider> {\n return this.apiService.safeApi(block.blockNumber);\n }\n\n protected getDsProcessor(\n ds: SubqlStarknetDataSource,\n safeApi: SafeStarknetProvider,\n ): IndexerSandbox {\n return this.sandboxService.getDsProcessor(\n ds,\n safeApi,\n this.apiService.unsafeApi.api,\n );\n }\n\n protected async indexBlockData(\n block: BlockContent,\n dataSources: StarknetProjectDs[],\n getVM: (d: StarknetProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n if (isFullBlock(block)) {\n await this.indexBlockContent(block, dataSources, getVM);\n\n for (const tx of block.transactions) {\n await this.indexTransaction(tx, dataSources, getVM);\n\n for (const log of tx.logs ?? []) {\n await this.indexEvent(log, dataSources, getVM);\n }\n }\n } else {\n for (const log of block.logs ?? []) {\n await this.indexEvent(log, dataSources, getVM);\n }\n }\n }\n\n private async indexBlockContent(\n block: StarknetBlock,\n dataSources: StarknetProjectDs[],\n getVM: (d: StarknetProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n for (const ds of dataSources) {\n await this.indexData(StarknetHandlerKind.Block, block, ds, getVM);\n }\n }\n\n private async indexTransaction(\n tx: StarknetTransaction,\n dataSources: StarknetProjectDs[],\n getVM: (d: StarknetProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n for (const ds of dataSources) {\n await this.indexData(StarknetHandlerKind.Call, tx, ds, getVM);\n }\n }\n\n private async indexEvent(\n log: StarknetLog,\n dataSources: StarknetProjectDs[],\n getVM: (d: StarknetProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n for (const ds of dataSources) {\n await this.indexData(StarknetHandlerKind.Event, log, ds, getVM);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n protected async prepareFilteredData(\n kind: StarknetHandlerKind,\n data: any,\n ds: StarknetRuntimeDatasource,\n ): Promise<any> {\n return DataAbiParser[kind](this.apiService.api)(data, ds);\n }\n}\n\nconst ProcessorTypeMap = {\n [StarknetHandlerKind.Block]: isBlockHandlerProcessor,\n [StarknetHandlerKind.Event]: isEventHandlerProcessor,\n [StarknetHandlerKind.Call]: isCallHandlerProcessor,\n};\n\nconst FilterTypeMap = {\n [StarknetHandlerKind.Block]: (\n data: StarknetBlock,\n filter: StarknetBlockFilter,\n ds: SubqlStarknetDataSource,\n ) => filterBlocksProcessor(data, filter, ds.options?.address),\n [StarknetHandlerKind.Event]: (\n data: StarknetLog,\n filter: StarknetLogFilter,\n ds: SubqlStarknetDataSource,\n ) => filterLogsProcessor(data, filter, ds.options?.address),\n [StarknetHandlerKind.Call]: (\n data: StarknetTransaction,\n filter: StarknetTransactionFilter,\n ds: SubqlStarknetDataSource,\n ) => filterTransactionsProcessor(data, filter, ds.options?.address),\n};\n\nconst DataAbiParser = {\n [StarknetHandlerKind.Block]: () => (data: StarknetBlock) => data,\n [StarknetHandlerKind.Event]:\n (api: StarknetApi) => (data: StarknetLog, ds: StarknetRuntimeDatasource) =>\n api.parseLog(data, ds),\n [StarknetHandlerKind.Call]:\n (api: StarknetApi) =>\n (data: StarknetTransaction, ds: StarknetRuntimeDatasource) =>\n api.parseTransaction(data, ds),\n};\n"]}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
2
+ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
3
3
  // SPDX-License-Identifier: GPL-3.0
4
4
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
5
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;