@subql/node-stellar 2.12.1 → 2.12.2-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/configure/SubqueryProject.d.ts +19 -19
  3. package/dist/configure/SubqueryProject.js +49 -88
  4. package/dist/configure/SubqueryProject.js.map +1 -1
  5. package/dist/configure/configure.module.d.ts +3 -6
  6. package/dist/configure/configure.module.js +22 -89
  7. package/dist/configure/configure.module.js.map +1 -1
  8. package/dist/indexer/blockDispatcher/block-dispatcher.service.d.ts +4 -4
  9. package/dist/indexer/blockDispatcher/block-dispatcher.service.js +6 -5
  10. package/dist/indexer/blockDispatcher/block-dispatcher.service.js.map +1 -1
  11. package/dist/indexer/blockDispatcher/worker-block-dispatcher.service.d.ts +4 -4
  12. package/dist/indexer/blockDispatcher/worker-block-dispatcher.service.js +9 -27
  13. package/dist/indexer/blockDispatcher/worker-block-dispatcher.service.js.map +1 -1
  14. package/dist/indexer/dictionary.service.d.ts +3 -3
  15. package/dist/indexer/dictionary.service.js +7 -2
  16. package/dist/indexer/dictionary.service.js.map +1 -1
  17. package/dist/indexer/ds-processor.service.d.ts +4 -4
  18. package/dist/indexer/ds-processor.service.js.map +1 -1
  19. package/dist/indexer/dynamic-ds.service.d.ts +3 -3
  20. package/dist/indexer/dynamic-ds.service.js +12 -2
  21. package/dist/indexer/dynamic-ds.service.js.map +1 -1
  22. package/dist/indexer/fetch.module.js +13 -10
  23. package/dist/indexer/fetch.module.js.map +1 -1
  24. package/dist/indexer/fetch.service.d.ts +12 -8
  25. package/dist/indexer/fetch.service.js +25 -47
  26. package/dist/indexer/fetch.service.js.map +1 -1
  27. package/dist/indexer/fetch.service.spec.js +4 -4
  28. package/dist/indexer/fetch.service.spec.js.map +1 -1
  29. package/dist/indexer/indexer.manager.d.ts +2 -2
  30. package/dist/indexer/indexer.manager.js.map +1 -1
  31. package/dist/indexer/project.service.d.ts +10 -6
  32. package/dist/indexer/project.service.js +19 -14
  33. package/dist/indexer/project.service.js.map +1 -1
  34. package/dist/indexer/sandbox.service.d.ts +1 -1
  35. package/dist/indexer/sandbox.service.js +1 -0
  36. package/dist/indexer/sandbox.service.js.map +1 -1
  37. package/dist/indexer/unfinalizedBlocks.service.js +24 -0
  38. package/dist/indexer/unfinalizedBlocks.service.js.map +1 -1
  39. package/dist/indexer/worker/worker-fetch.module.d.ts +2 -0
  40. package/dist/indexer/{indexer.module.js → worker/worker-fetch.module.js} +23 -25
  41. package/dist/indexer/worker/worker-fetch.module.js.map +1 -0
  42. package/dist/indexer/worker/worker.d.ts +4 -28
  43. package/dist/indexer/worker/worker.js +8 -71
  44. package/dist/indexer/worker/worker.js.map +1 -1
  45. package/dist/indexer/worker/worker.module.js +2 -2
  46. package/dist/indexer/worker/worker.module.js.map +1 -1
  47. package/dist/indexer/worker/worker.service.d.ts +11 -13
  48. package/dist/indexer/worker/worker.service.js +14 -54
  49. package/dist/indexer/worker/worker.service.js.map +1 -1
  50. package/dist/indexer/worker/worker.unfinalizedBlocks.service.d.ts +1 -5
  51. package/dist/indexer/worker/worker.unfinalizedBlocks.service.js +1 -4
  52. package/dist/indexer/worker/worker.unfinalizedBlocks.service.js.map +1 -1
  53. package/dist/init.js +2 -1
  54. package/dist/init.js.map +1 -1
  55. package/dist/main.js +4 -7
  56. package/dist/main.js.map +1 -1
  57. package/dist/stellar/api.connection.d.ts +1 -1
  58. package/dist/stellar/api.connection.js.map +1 -1
  59. package/dist/stellar/api.service.stellar.d.ts +4 -6
  60. package/dist/stellar/api.service.stellar.js +33 -68
  61. package/dist/stellar/api.service.stellar.js.map +1 -1
  62. package/dist/stellar/api.service.stellar.spec.d.ts +1 -5
  63. package/dist/stellar/api.service.stellar.spec.js +7 -6
  64. package/dist/stellar/api.service.stellar.spec.js.map +1 -1
  65. package/dist/stellar/api.stellar.js +1 -7
  66. package/dist/stellar/api.stellar.js.map +1 -1
  67. package/dist/stellar/soroban.server.spec.js +1 -1
  68. package/dist/stellar/soroban.server.spec.js.map +1 -1
  69. package/dist/subcommands/reindex.init.js +1 -2
  70. package/dist/subcommands/reindex.init.js.map +1 -1
  71. package/dist/subcommands/reindex.module.js +9 -6
  72. package/dist/subcommands/reindex.module.js.map +1 -1
  73. package/dist/subcommands/testing.init.js +2 -4
  74. package/dist/subcommands/testing.init.js.map +1 -1
  75. package/dist/subcommands/testing.module.js +9 -7
  76. package/dist/subcommands/testing.module.js.map +1 -1
  77. package/dist/subcommands/testing.service.d.ts +7 -4
  78. package/dist/subcommands/testing.service.js +2 -7
  79. package/dist/subcommands/testing.service.js.map +1 -1
  80. package/dist/utils/project.js.map +1 -1
  81. package/package.json +8 -7
  82. package/dist/indexer/indexer.module.d.ts +0 -2
  83. package/dist/indexer/indexer.module.js.map +0 -1
  84. package/dist/subcommands/mmrMigrate.init.d.ts +0 -2
  85. package/dist/subcommands/mmrMigrate.init.js +0 -28
  86. package/dist/subcommands/mmrMigrate.init.js.map +0 -1
  87. package/dist/subcommands/mmrMigrate.module.d.ts +0 -2
  88. package/dist/subcommands/mmrMigrate.module.js +0 -28
  89. package/dist/subcommands/mmrMigrate.module.js.map +0 -1
  90. package/dist/subcommands/mmrRegenerate.init.d.ts +0 -1
  91. package/dist/subcommands/mmrRegenerate.init.js +0 -28
  92. package/dist/subcommands/mmrRegenerate.init.js.map +0 -1
  93. package/dist/subcommands/mmrRegenerate.module.d.ts +0 -2
  94. package/dist/subcommands/mmrRegenerate.module.js +0 -30
  95. package/dist/subcommands/mmrRegenerate.module.js.map +0 -1
  96. package/dist/subcommands/reindex.service.d.ts +0 -11
  97. package/dist/subcommands/reindex.service.js +0 -46
  98. package/dist/subcommands/reindex.service.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.service.js","sourceRoot":"","sources":["../../src/indexer/fetch.service.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2020-2023 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 {\n StellarHandlerKind,\n SubqlStellarProcessorOptions,\n} from '@subql/common-stellar';\nimport {\n NodeConfig,\n BaseFetchService,\n ApiService,\n getLogger,\n} from '@subql/node-core';\nimport { DictionaryQueryCondition, DictionaryQueryEntry } from '@subql/types';\nimport {\n SorobanEventFilter,\n StellarBlock,\n StellarEffectFilter,\n StellarOperationFilter,\n StellarTransactionFilter,\n SubqlDatasource,\n} from '@subql/types-stellar';\nimport { MetaData } from '@subql/utils';\nimport { groupBy, sortBy, uniqBy } from 'lodash';\nimport { SubqlProjectDs, SubqueryProject } from '../configure/SubqueryProject';\nimport { StellarApi } from '../stellar';\nimport { calcInterval } from '../stellar/utils.stellar';\nimport { yargsOptions } from '../yargs';\nimport { IStellarBlockDispatcher } from './blockDispatcher';\nimport { DictionaryService } from './dictionary.service';\nimport { DsProcessorService } from './ds-processor.service';\nimport { DynamicDsService } from './dynamic-ds.service';\nimport {\n blockToHeader,\n UnfinalizedBlocksService,\n} from './unfinalizedBlocks.service';\n\nconst logger = getLogger('fetch.service');\n\nconst BLOCK_TIME_VARIANCE = 5000;\n\nconst INTERVAL_PERCENT = 0.9;\n\nfunction transactionFilterToQueryEntry(\n filter: StellarTransactionFilter,\n dsOptions: SubqlStellarProcessorOptions | SubqlStellarProcessorOptions[],\n): DictionaryQueryEntry {\n const conditions: DictionaryQueryCondition[] = [];\n\n if (filter.account) {\n conditions.push({\n field: 'account',\n value: filter.account.toLowerCase(),\n matcher: 'equalTo',\n });\n }\n return {\n entity: 'transactions',\n conditions,\n };\n}\n\nfunction operationFilterToQueryEntry(\n filter: StellarOperationFilter,\n dsOptions: SubqlStellarProcessorOptions | SubqlStellarProcessorOptions[],\n): DictionaryQueryEntry {\n const conditions: DictionaryQueryCondition[] = [];\n\n if (filter.type) {\n conditions.push({\n field: 'type',\n value: filter.type.toLowerCase(),\n matcher: 'equalTo',\n });\n }\n if (filter.sourceAccount) {\n conditions.push({\n field: 'sourceAccount',\n value: filter.sourceAccount.toLowerCase(),\n matcher: 'equalTo',\n });\n }\n return {\n entity: 'operations',\n conditions,\n };\n}\n\nfunction effectFilterToQueryEntry(\n filter: StellarEffectFilter,\n dsOptions: SubqlStellarProcessorOptions | SubqlStellarProcessorOptions[],\n): DictionaryQueryEntry {\n const conditions: DictionaryQueryCondition[] = [];\n\n if (filter.type) {\n conditions.push({\n field: 'type',\n value: filter.type.toLowerCase(),\n matcher: 'equalTo',\n });\n }\n if (filter.account) {\n conditions.push({\n field: 'account',\n value: filter.account.toLowerCase(),\n matcher: 'equalTo',\n });\n }\n return {\n entity: 'effects',\n conditions,\n };\n}\n\nfunction eventFilterToQueryEntry(\n filter: SorobanEventFilter,\n dsOptions: SubqlStellarProcessorOptions | SubqlStellarProcessorOptions[],\n): DictionaryQueryEntry {\n const queryAddressLimit = yargsOptions.argv['query-address-limit'];\n\n const conditions: DictionaryQueryCondition[] = [];\n\n if (Array.isArray(dsOptions)) {\n const addresses = dsOptions.map((option) => option.address).filter(Boolean);\n\n if (addresses.length > queryAddressLimit) {\n logger.warn(\n `Addresses length: ${addresses.length} is exceeding limit: ${queryAddressLimit}. Consider increasing this value with the flag --query-address-limit `,\n );\n }\n\n if (addresses.length !== 0 && addresses.length <= queryAddressLimit) {\n conditions.push({\n field: 'address',\n value: addresses,\n matcher: 'in',\n });\n }\n } else {\n if (dsOptions?.address) {\n conditions.push({\n field: 'address',\n value: dsOptions.address.toLowerCase(),\n matcher: 'equalTo',\n });\n }\n }\n if (filter.topics) {\n for (let i = 0; i < Math.min(filter.topics.length, 4); i++) {\n const topic = filter.topics[i];\n if (!topic) {\n continue;\n }\n const field = `topics${i}`;\n conditions.push({\n field,\n value: topic,\n matcher: 'equalTo',\n });\n }\n }\n return {\n entity: 'events',\n conditions,\n };\n}\n\ntype GroupedSubqlProjectDs = SubqlDatasource & {\n groupedOptions?: SubqlStellarProcessorOptions[];\n};\nexport function buildDictionaryQueryEntries(\n dataSources: GroupedSubqlProjectDs[],\n startBlock: number,\n): DictionaryQueryEntry[] {\n const queryEntries: DictionaryQueryEntry[] = [];\n\n // Only run the ds that is equal or less than startBlock\n // sort array from lowest ds.startBlock to highest\n const filteredDs = dataSources\n .filter((ds) => ds.startBlock <= startBlock)\n .sort((a, b) => a.startBlock - b.startBlock);\n\n for (const ds of filteredDs) {\n for (const handler of ds.mapping.handlers) {\n // No filters, cant use dictionary\n if (!handler.filter) return [];\n\n switch (handler.kind) {\n case StellarHandlerKind.Block:\n return [];\n case StellarHandlerKind.Transaction: {\n const filter = handler.filter as StellarTransactionFilter;\n if (ds.groupedOptions) {\n queryEntries.push(\n transactionFilterToQueryEntry(filter, ds.groupedOptions),\n );\n } else if (filter.account) {\n queryEntries.push(\n transactionFilterToQueryEntry(filter, ds.options),\n );\n } else {\n return [];\n }\n break;\n }\n case StellarHandlerKind.Operation: {\n const filter = handler.filter as StellarOperationFilter;\n if (ds.groupedOptions) {\n queryEntries.push(\n operationFilterToQueryEntry(filter, ds.groupedOptions),\n );\n } else if (filter.sourceAccount || filter.type) {\n queryEntries.push(operationFilterToQueryEntry(filter, ds.options));\n } else {\n return [];\n }\n break;\n }\n case StellarHandlerKind.Effects: {\n const filter = handler.filter as StellarEffectFilter;\n if (ds.groupedOptions) {\n queryEntries.push(\n effectFilterToQueryEntry(filter, ds.groupedOptions),\n );\n } else if (filter.account || filter.type) {\n queryEntries.push(effectFilterToQueryEntry(filter, ds.options));\n } else {\n return [];\n }\n break;\n }\n case StellarHandlerKind.Event: {\n const filter = handler.filter as SorobanEventFilter;\n if (ds.groupedOptions) {\n queryEntries.push(\n eventFilterToQueryEntry(filter, ds.groupedOptions),\n );\n } else if (ds.options?.address || filter.topics) {\n queryEntries.push(eventFilterToQueryEntry(filter, ds.options));\n } else {\n return [];\n }\n break;\n }\n default:\n }\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\n@Injectable()\nexport class FetchService extends BaseFetchService<\n ApiService,\n SubqlDatasource,\n IStellarBlockDispatcher,\n DictionaryService\n> {\n constructor(\n apiService: ApiService,\n nodeConfig: NodeConfig,\n @Inject('ISubqueryProject') project: SubqueryProject,\n @Inject('IBlockDispatcher')\n blockDispatcher: IStellarBlockDispatcher,\n dictionaryService: DictionaryService,\n dsProcessorService: DsProcessorService,\n dynamicDsService: DynamicDsService,\n private unfinalizedBlocksService: UnfinalizedBlocksService,\n eventEmitter: EventEmitter2,\n schedulerRegistry: SchedulerRegistry,\n ) {\n super(\n apiService,\n nodeConfig,\n project,\n blockDispatcher,\n dictionaryService,\n dsProcessorService,\n dynamicDsService,\n eventEmitter,\n schedulerRegistry,\n );\n }\n\n get api(): StellarApi {\n return this.apiService.unsafeApi;\n }\n\n buildDictionaryQueryEntries(startBlock: number): DictionaryQueryEntry[] {\n const groupdDynamicDs: GroupedSubqlProjectDs[] = Object.values(\n groupBy(this.templateDynamicDatasouces, (ds) => ds.name),\n ).map((grouped: SubqlProjectDs[]) => {\n const options = grouped.map((ds) => ds.options);\n const ref = grouped[0];\n\n return {\n ...ref,\n groupedOptions: options,\n };\n });\n\n // Only run the ds that is equal or less than startBlock\n // sort array from lowest ds.startBlock to highest\n const filteredDs: GroupedSubqlProjectDs[] =\n this.project.dataSources.concat(groupdDynamicDs);\n\n return buildDictionaryQueryEntries(filteredDs, startBlock);\n }\n\n protected async getFinalizedHeight(): Promise<number> {\n const sequence = await this.api.getFinalizedBlockHeight();\n\n const header = blockToHeader(sequence);\n\n this.unfinalizedBlocksService.registerFinalizedBlock(header);\n return header.blockHeight;\n }\n\n protected async getBestHeight(): Promise<number> {\n return this.api.getBestBlockHeight();\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n protected async getChainInterval(): Promise<number> {\n const CHAIN_INTERVAL = calcInterval(this.api) * INTERVAL_PERCENT;\n\n return Math.min(BLOCK_TIME_VARIANCE, CHAIN_INTERVAL);\n }\n\n protected async getChainId(): Promise<string> {\n return Promise.resolve(this.api.getChainId().toString());\n }\n\n /*\n protected getModulos(): number[] {\n const modulos: number[] = [];\n for (const ds of this.project.dataSources) {\n if (isCustomDs(ds)) {\n continue;\n }\n for (const handler of ds.mapping.handlers) {\n if (\n handler.kind === StellarHandlerKind.Block &&\n handler.filter &&\n handler.filter.modulo\n ) {\n modulos.push(handler.filter.modulo);\n }\n }\n }\n return modulos;\n }\n */\n\n protected async initBlockDispatcher(): Promise<void> {\n await this.blockDispatcher.init(this.resetForNewDs.bind(this));\n }\n\n protected async validatateDictionaryMeta(\n metaData: MetaData,\n ): Promise<boolean> {\n return Promise.resolve(\n // When alias is not used\n metaData.genesisHash !== this.api.getGenesisHash() &&\n // Case when an alias is used\n metaData.genesisHash !== this.dictionaryService.chainId,\n );\n }\n\n protected async preLoopHook(): Promise<void> {\n // Stellar doesn't need to do anything here\n return Promise.resolve();\n }\n\n protected getModulos(): number[] {\n //block handler not implemented yet\n return [];\n }\n}\n"]}
1
+ {"version":3,"file":"fetch.service.js","sourceRoot":"","sources":["../../src/indexer/fetch.service.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2020-2023 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 {\n StellarHandlerKind,\n SubqlStellarProcessorOptions,\n isCustomDs,\n} from '@subql/common-stellar';\nimport {\n NodeConfig,\n BaseFetchService,\n ApiService,\n getLogger,\n getModulos,\n} from '@subql/node-core';\nimport {\n DictionaryQueryEntry,\n DictionaryQueryCondition,\n} from '@subql/types-core';\nimport {\n SorobanEventFilter,\n StellarEffectFilter,\n StellarOperationFilter,\n StellarTransactionFilter,\n SubqlDatasource,\n} from '@subql/types-stellar';\nimport { groupBy, partition, sortBy, uniqBy } from 'lodash';\nimport { SubqueryProject } from '../configure/SubqueryProject';\nimport { StellarApi } from '../stellar';\nimport { calcInterval } from '../stellar/utils.stellar';\nimport { yargsOptions } from '../yargs';\nimport { IStellarBlockDispatcher } from './blockDispatcher';\nimport { DictionaryService } from './dictionary.service';\nimport { DsProcessorService } from './ds-processor.service';\nimport { DynamicDsService } from './dynamic-ds.service';\nimport { ProjectService } from './project.service';\nimport {\n blockToHeader,\n UnfinalizedBlocksService,\n} from './unfinalizedBlocks.service';\n\nconst logger = getLogger('fetch.service');\n\nconst BLOCK_TIME_VARIANCE = 5000;\n\nconst INTERVAL_PERCENT = 0.9;\n\nfunction transactionFilterToQueryEntry(\n filter: StellarTransactionFilter,\n dsOptions: SubqlStellarProcessorOptions | SubqlStellarProcessorOptions[],\n): DictionaryQueryEntry {\n const conditions: DictionaryQueryCondition[] = [];\n\n if (filter.account) {\n conditions.push({\n field: 'account',\n value: filter.account.toLowerCase(),\n matcher: 'equalTo',\n });\n }\n return {\n entity: 'transactions',\n conditions,\n };\n}\n\nfunction operationFilterToQueryEntry(\n filter: StellarOperationFilter,\n dsOptions: SubqlStellarProcessorOptions | SubqlStellarProcessorOptions[],\n): DictionaryQueryEntry {\n const conditions: DictionaryQueryCondition[] = [];\n\n if (filter.type) {\n conditions.push({\n field: 'type',\n value: filter.type.toLowerCase(),\n matcher: 'equalTo',\n });\n }\n if (filter.sourceAccount) {\n conditions.push({\n field: 'sourceAccount',\n value: filter.sourceAccount.toLowerCase(),\n matcher: 'equalTo',\n });\n }\n return {\n entity: 'operations',\n conditions,\n };\n}\n\nfunction effectFilterToQueryEntry(\n filter: StellarEffectFilter,\n dsOptions: SubqlStellarProcessorOptions | SubqlStellarProcessorOptions[],\n): DictionaryQueryEntry {\n const conditions: DictionaryQueryCondition[] = [];\n\n if (filter.type) {\n conditions.push({\n field: 'type',\n value: filter.type.toLowerCase(),\n matcher: 'equalTo',\n });\n }\n if (filter.account) {\n conditions.push({\n field: 'account',\n value: filter.account.toLowerCase(),\n matcher: 'equalTo',\n });\n }\n return {\n entity: 'effects',\n conditions,\n };\n}\n\nfunction eventFilterToQueryEntry(\n filter: SorobanEventFilter,\n dsOptions: SubqlStellarProcessorOptions | SubqlStellarProcessorOptions[],\n): DictionaryQueryEntry {\n const queryAddressLimit = yargsOptions.argv['query-address-limit'];\n\n const conditions: DictionaryQueryCondition[] = [];\n\n if (Array.isArray(dsOptions)) {\n const addresses = dsOptions.map((option) => option.address).filter(Boolean);\n\n if (addresses.length > queryAddressLimit) {\n logger.warn(\n `Addresses length: ${addresses.length} is exceeding limit: ${queryAddressLimit}. Consider increasing this value with the flag --query-address-limit `,\n );\n }\n\n if (addresses.length !== 0 && addresses.length <= queryAddressLimit) {\n conditions.push({\n field: 'address',\n value: addresses,\n matcher: 'in',\n });\n }\n } else {\n if (dsOptions?.address) {\n conditions.push({\n field: 'address',\n value: dsOptions.address.toLowerCase(),\n matcher: 'equalTo',\n });\n }\n }\n if (filter.topics) {\n for (let i = 0; i < Math.min(filter.topics.length, 4); i++) {\n const topic = filter.topics[i];\n if (!topic) {\n continue;\n }\n const field = `topics${i}`;\n conditions.push({\n field,\n value: topic,\n matcher: 'equalTo',\n });\n }\n }\n return {\n entity: 'events',\n conditions,\n };\n}\n\ntype GroupedSubqlProjectDs = SubqlDatasource & {\n groupedOptions?: SubqlStellarProcessorOptions[];\n};\nexport function buildDictionaryQueryEntries(\n dataSources: GroupedSubqlProjectDs[],\n): DictionaryQueryEntry[] {\n const queryEntries: DictionaryQueryEntry[] = [];\n\n for (const ds of dataSources) {\n for (const handler of ds.mapping.handlers) {\n // No filters, cant use dictionary\n if (!handler.filter) return [];\n\n switch (handler.kind) {\n case StellarHandlerKind.Block:\n return [];\n case StellarHandlerKind.Transaction: {\n const filter = handler.filter as StellarTransactionFilter;\n if (ds.groupedOptions) {\n queryEntries.push(\n transactionFilterToQueryEntry(filter, ds.groupedOptions),\n );\n } else if (filter.account) {\n queryEntries.push(\n transactionFilterToQueryEntry(filter, ds.options),\n );\n } else {\n return [];\n }\n break;\n }\n case StellarHandlerKind.Operation: {\n const filter = handler.filter as StellarOperationFilter;\n if (ds.groupedOptions) {\n queryEntries.push(\n operationFilterToQueryEntry(filter, ds.groupedOptions),\n );\n } else if (filter.sourceAccount || filter.type) {\n queryEntries.push(operationFilterToQueryEntry(filter, ds.options));\n } else {\n return [];\n }\n break;\n }\n case StellarHandlerKind.Effects: {\n const filter = handler.filter as StellarEffectFilter;\n if (ds.groupedOptions) {\n queryEntries.push(\n effectFilterToQueryEntry(filter, ds.groupedOptions),\n );\n } else if (filter.account || filter.type) {\n queryEntries.push(effectFilterToQueryEntry(filter, ds.options));\n } else {\n return [];\n }\n break;\n }\n case StellarHandlerKind.Event: {\n const filter = handler.filter as SorobanEventFilter;\n if (ds.groupedOptions) {\n queryEntries.push(\n eventFilterToQueryEntry(filter, ds.groupedOptions),\n );\n } else if (ds.options?.address || filter.topics) {\n queryEntries.push(eventFilterToQueryEntry(filter, ds.options));\n } else {\n return [];\n }\n break;\n }\n default:\n }\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\n@Injectable()\nexport class FetchService extends BaseFetchService<\n SubqlDatasource,\n IStellarBlockDispatcher,\n DictionaryService\n> {\n constructor(\n private apiService: ApiService,\n nodeConfig: NodeConfig,\n @Inject('IProjectService') projectService: ProjectService,\n @Inject('ISubqueryProject') project: SubqueryProject,\n @Inject('IBlockDispatcher')\n blockDispatcher: IStellarBlockDispatcher,\n dictionaryService: DictionaryService,\n private dsProcessorService: DsProcessorService,\n dynamicDsService: DynamicDsService,\n private unfinalizedBlocksService: UnfinalizedBlocksService,\n eventEmitter: EventEmitter2,\n schedulerRegistry: SchedulerRegistry,\n ) {\n super(\n nodeConfig,\n projectService,\n project.network,\n blockDispatcher,\n dictionaryService,\n dynamicDsService,\n eventEmitter,\n schedulerRegistry,\n );\n }\n\n get api(): StellarApi {\n return this.apiService.unsafeApi;\n }\n\n protected getGenesisHash(): string {\n return this.apiService.networkMeta.genesisHash;\n }\n\n protected buildDictionaryQueryEntries(\n dataSources: (SubqlDatasource & { name?: string })[],\n ): DictionaryQueryEntry[] {\n const [normalDataSources, templateDataSources] = partition(\n dataSources,\n (ds) => !ds.name,\n );\n\n // Group templ\n const groupedDataSources = Object.values(\n groupBy(templateDataSources, (ds) => ds.name),\n ).map((grouped) => {\n if (grouped.length === 1) {\n return grouped[0];\n }\n const options = grouped.map((ds) => ds.options);\n const ref = grouped[0];\n\n return {\n ...ref,\n groupedOptions: options,\n };\n });\n\n const filteredDs = [...normalDataSources, ...groupedDataSources];\n\n return buildDictionaryQueryEntries(filteredDs);\n }\n\n protected async getFinalizedHeight(): Promise<number> {\n const sequence = await this.api.getFinalizedBlockHeight();\n\n const header = blockToHeader(sequence);\n\n this.unfinalizedBlocksService.registerFinalizedBlock(header);\n return header.blockHeight;\n }\n\n protected async getBestHeight(): Promise<number> {\n return this.api.getBestBlockHeight();\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n protected async getChainInterval(): Promise<number> {\n const CHAIN_INTERVAL = calcInterval(this.api) * INTERVAL_PERCENT;\n\n return Math.min(BLOCK_TIME_VARIANCE, CHAIN_INTERVAL);\n }\n\n protected async getChainId(): Promise<string> {\n return Promise.resolve(this.api.getChainId().toString());\n }\n\n protected getModulos(): number[] {\n return getModulos(\n this.projectService.getAllDataSources(),\n isCustomDs,\n StellarHandlerKind.Block,\n );\n }\n\n protected async initBlockDispatcher(): Promise<void> {\n await this.blockDispatcher.init(this.resetForNewDs.bind(this));\n }\n\n protected async preLoopHook(): Promise<void> {\n // Stellar doesn't need to do anything here\n return Promise.resolve();\n }\n}\n"]}
@@ -22,7 +22,7 @@ describe('buildDictionaryQueryEntries', () => {
22
22
  ],
23
23
  },
24
24
  };
25
- const result = (0, fetch_service_1.buildDictionaryQueryEntries)([ds], 1);
25
+ const result = (0, fetch_service_1.buildDictionaryQueryEntries)([ds]);
26
26
  expect(result).toEqual([
27
27
  {
28
28
  entity: 'transactions',
@@ -54,7 +54,7 @@ describe('buildDictionaryQueryEntries', () => {
54
54
  ],
55
55
  },
56
56
  };
57
- const result = (0, fetch_service_1.buildDictionaryQueryEntries)([ds], 1);
57
+ const result = (0, fetch_service_1.buildDictionaryQueryEntries)([ds]);
58
58
  expect(result).toEqual([
59
59
  {
60
60
  entity: 'operations',
@@ -91,7 +91,7 @@ describe('buildDictionaryQueryEntries', () => {
91
91
  ],
92
92
  },
93
93
  };
94
- const result = (0, fetch_service_1.buildDictionaryQueryEntries)([ds], 1);
94
+ const result = (0, fetch_service_1.buildDictionaryQueryEntries)([ds]);
95
95
  expect(result).toEqual([
96
96
  {
97
97
  entity: 'effects',
@@ -125,7 +125,7 @@ describe('buildDictionaryQueryEntries', () => {
125
125
  ],
126
126
  },
127
127
  };
128
- const result = (0, fetch_service_1.buildDictionaryQueryEntries)([ds], 1);
128
+ const result = (0, fetch_service_1.buildDictionaryQueryEntries)([ds]);
129
129
  expect(result).toEqual([]);
130
130
  });
131
131
  });
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.service.spec.js","sourceRoot":"","sources":["../../src/indexer/fetch.service.spec.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport {\n StellarDatasourceKind,\n StellarHandlerKind,\n SubqlRuntimeDatasource,\n} from '@subql/types-stellar';\nimport { buildDictionaryQueryEntries } from './fetch.service';\n\ndescribe('buildDictionaryQueryEntries', () => {\n it('should correctly build dictionary query entries for transactions', () => {\n const ds: SubqlRuntimeDatasource = {\n kind: StellarDatasourceKind.Runtime,\n startBlock: 1,\n mapping: {\n file: '',\n handlers: [\n {\n handler: 'handleTransactions',\n kind: StellarHandlerKind.Transaction,\n filter: {\n account: 'test_account',\n },\n },\n ],\n },\n };\n const result = buildDictionaryQueryEntries([ds], 1);\n expect(result).toEqual([\n {\n entity: 'transactions',\n conditions: [\n {\n field: 'account',\n value: 'test_account',\n matcher: 'equalTo',\n },\n ],\n },\n ]);\n });\n\n it('should correctly build dictionary query entries for operations', () => {\n const ds: SubqlRuntimeDatasource = {\n kind: StellarDatasourceKind.Runtime,\n startBlock: 1,\n mapping: {\n file: '',\n handlers: [\n {\n handler: 'handleOperations',\n kind: StellarHandlerKind.Operation,\n filter: {\n sourceAccount: 'source_account',\n type: 'operation_type',\n },\n } as any,\n ],\n },\n };\n const result = buildDictionaryQueryEntries([ds], 1);\n expect(result).toEqual([\n {\n entity: 'operations',\n conditions: [\n {\n field: 'type',\n value: 'operation_type',\n matcher: 'equalTo',\n },\n {\n field: 'sourceAccount',\n value: 'source_account',\n matcher: 'equalTo',\n },\n ],\n },\n ]);\n });\n\n it('should correctly build dictionary query entries for effects', () => {\n const ds: SubqlRuntimeDatasource = {\n kind: StellarDatasourceKind.Runtime,\n startBlock: 1,\n mapping: {\n file: '',\n handlers: [\n {\n handler: 'handleEffects',\n kind: StellarHandlerKind.Effects,\n filter: {\n account: 'effect_account',\n type: 'effect_type',\n },\n },\n ],\n },\n };\n const result = buildDictionaryQueryEntries([ds], 1);\n expect(result).toEqual([\n {\n entity: 'effects',\n conditions: [\n {\n field: 'type',\n value: 'effect_type',\n matcher: 'equalTo',\n },\n {\n field: 'account',\n value: 'effect_account',\n matcher: 'equalTo',\n },\n ],\n },\n ]);\n });\n\n it('should return an empty array when no filters are provided', () => {\n const ds: SubqlRuntimeDatasource = {\n kind: StellarDatasourceKind.Runtime,\n startBlock: 1,\n mapping: {\n file: '',\n handlers: [\n {\n handler: 'handleTransactions',\n kind: StellarHandlerKind.Transaction,\n filter: {},\n },\n ],\n },\n };\n const result = buildDictionaryQueryEntries([ds], 1);\n expect(result).toEqual([]);\n });\n});\n"]}
1
+ {"version":3,"file":"fetch.service.spec.js","sourceRoot":"","sources":["../../src/indexer/fetch.service.spec.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport {\n StellarDatasourceKind,\n StellarHandlerKind,\n SubqlRuntimeDatasource,\n} from '@subql/types-stellar';\nimport { buildDictionaryQueryEntries } from './fetch.service';\n\ndescribe('buildDictionaryQueryEntries', () => {\n it('should correctly build dictionary query entries for transactions', () => {\n const ds: SubqlRuntimeDatasource = {\n kind: StellarDatasourceKind.Runtime,\n startBlock: 1,\n mapping: {\n file: '',\n handlers: [\n {\n handler: 'handleTransactions',\n kind: StellarHandlerKind.Transaction,\n filter: {\n account: 'test_account',\n },\n },\n ],\n },\n };\n const result = buildDictionaryQueryEntries([ds]);\n expect(result).toEqual([\n {\n entity: 'transactions',\n conditions: [\n {\n field: 'account',\n value: 'test_account',\n matcher: 'equalTo',\n },\n ],\n },\n ]);\n });\n\n it('should correctly build dictionary query entries for operations', () => {\n const ds: SubqlRuntimeDatasource = {\n kind: StellarDatasourceKind.Runtime,\n startBlock: 1,\n mapping: {\n file: '',\n handlers: [\n {\n handler: 'handleOperations',\n kind: StellarHandlerKind.Operation,\n filter: {\n sourceAccount: 'source_account',\n type: 'operation_type',\n },\n } as any,\n ],\n },\n };\n const result = buildDictionaryQueryEntries([ds]);\n expect(result).toEqual([\n {\n entity: 'operations',\n conditions: [\n {\n field: 'type',\n value: 'operation_type',\n matcher: 'equalTo',\n },\n {\n field: 'sourceAccount',\n value: 'source_account',\n matcher: 'equalTo',\n },\n ],\n },\n ]);\n });\n\n it('should correctly build dictionary query entries for effects', () => {\n const ds: SubqlRuntimeDatasource = {\n kind: StellarDatasourceKind.Runtime,\n startBlock: 1,\n mapping: {\n file: '',\n handlers: [\n {\n handler: 'handleEffects',\n kind: StellarHandlerKind.Effects,\n filter: {\n account: 'effect_account',\n type: 'effect_type',\n },\n },\n ],\n },\n };\n const result = buildDictionaryQueryEntries([ds]);\n expect(result).toEqual([\n {\n entity: 'effects',\n conditions: [\n {\n field: 'type',\n value: 'effect_type',\n matcher: 'equalTo',\n },\n {\n field: 'account',\n value: 'effect_account',\n matcher: 'equalTo',\n },\n ],\n },\n ]);\n });\n\n it('should return an empty array when no filters are provided', () => {\n const ds: SubqlRuntimeDatasource = {\n kind: StellarDatasourceKind.Runtime,\n startBlock: 1,\n mapping: {\n file: '',\n handlers: [\n {\n handler: 'handleTransactions',\n kind: StellarHandlerKind.Transaction,\n filter: {},\n },\n ],\n },\n };\n const result = buildDictionaryQueryEntries([ds]);\n expect(result).toEqual([]);\n });\n});\n"]}
@@ -1,7 +1,7 @@
1
1
  import { isCustomDs, isRuntimeDs, SubqlStellarCustomDataSource, StellarHandlerKind, StellarRuntimeHandlerInputMap, SubqlStellarDataSource, isBlockHandlerProcessor, isTransactionHandlerProcessor, isOperationHandlerProcessor, isEffectHandlerProcessor, isEventHandlerProcessor, isSorobanTransactionHandlerProcessor } from '@subql/common-stellar';
2
2
  import { NodeConfig, IndexerSandbox, ProcessBlockResponse, BaseIndexerManager, ApiService } from '@subql/node-core';
3
3
  import { StellarBlockWrapper, SubqlDatasource, StellarTransaction, StellarOperation, StellarEffect, StellarBlock, StellarBlockFilter, StellarTransactionFilter, StellarOperationFilter, StellarEffectFilter, SorobanEvent, SorobanEventFilter } from '@subql/types-stellar';
4
- import { SubqlProjectDs } from '../configure/SubqueryProject';
4
+ import { StellarProjectDs } from '../configure/SubqueryProject';
5
5
  import { StellarApi } from '../stellar';
6
6
  import SafeStellarProvider from '../stellar/safe-api';
7
7
  import { asSecondLayerHandlerProcessor_1_0_0, DsProcessorService } from './ds-processor.service';
@@ -20,7 +20,7 @@ export declare class IndexerManager extends BaseIndexerManager<SafeStellarProvid
20
20
  getBlockHeight(block: StellarBlockWrapper): number;
21
21
  getBlockHash(block: StellarBlockWrapper): string;
22
22
  private getApi;
23
- protected indexBlockData({ block, effects, operations, transactions }: StellarBlockWrapper, dataSources: SubqlProjectDs[], getVM: (d: SubqlProjectDs) => Promise<IndexerSandbox>): Promise<void>;
23
+ protected indexBlockData({ block, effects, operations, transactions }: StellarBlockWrapper, dataSources: StellarProjectDs[], getVM: (d: StellarProjectDs) => Promise<IndexerSandbox>): Promise<void>;
24
24
  private indexBlockContent;
25
25
  private indexTransaction;
26
26
  private indexOperation;
@@ -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-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Inject, Injectable } from '@nestjs/common';\nimport {\n isCustomDs,\n isRuntimeDs,\n SubqlStellarCustomDataSource,\n StellarHandlerKind,\n StellarRuntimeHandlerInputMap,\n SubqlStellarDataSource,\n isBlockHandlerProcessor,\n isTransactionHandlerProcessor,\n isOperationHandlerProcessor,\n isEffectHandlerProcessor,\n isEventHandlerProcessor,\n isSorobanTransactionHandlerProcessor,\n} from '@subql/common-stellar';\nimport {\n NodeConfig,\n getLogger,\n profiler,\n IndexerSandbox,\n ProcessBlockResponse,\n BaseIndexerManager,\n ApiService,\n} from '@subql/node-core';\nimport {\n StellarBlockWrapper,\n SubqlDatasource,\n StellarTransaction,\n StellarOperation,\n StellarEffect,\n StellarBlock,\n StellarBlockFilter,\n StellarTransactionFilter,\n StellarOperationFilter,\n StellarEffectFilter,\n SorobanEvent,\n SorobanEventFilter,\n} from '@subql/types-stellar';\nimport { SubqlProjectDs } from '../configure/SubqueryProject';\nimport { StellarApi } from '../stellar';\nimport { StellarBlockWrapped } from '../stellar/block.stellar';\nimport SafeStellarProvider from '../stellar/safe-api';\nimport {\n asSecondLayerHandlerProcessor_1_0_0,\n DsProcessorService,\n} from './ds-processor.service';\nimport { DynamicDsService } from './dynamic-ds.service';\nimport { ProjectService } from './project.service';\nimport { SandboxService } from './sandbox.service';\nimport { UnfinalizedBlocksService } from './unfinalizedBlocks.service';\n\nconst logger = getLogger('indexer');\n\n@Injectable()\nexport class IndexerManager extends BaseIndexerManager<\n SafeStellarProvider,\n StellarApi,\n StellarBlockWrapper,\n ApiService,\n SubqlStellarDataSource,\n SubqlStellarCustomDataSource,\n typeof FilterTypeMap,\n typeof ProcessorTypeMap,\n StellarRuntimeHandlerInputMap\n> {\n protected isRuntimeDs = isRuntimeDs;\n protected isCustomDs = isCustomDs;\n protected updateCustomProcessor = asSecondLayerHandlerProcessor_1_0_0;\n\n constructor(\n apiService: ApiService,\n nodeConfig: NodeConfig,\n sandboxService: SandboxService,\n dsProcessorService: DsProcessorService,\n dynamicDsService: DynamicDsService,\n unfinalizedBlocksService: UnfinalizedBlocksService,\n @Inject('IProjectService') private projectService: ProjectService,\n ) {\n super(\n apiService,\n nodeConfig,\n sandboxService,\n dsProcessorService,\n dynamicDsService,\n unfinalizedBlocksService,\n FilterTypeMap,\n ProcessorTypeMap,\n );\n }\n\n async start(): Promise<void> {\n await this.projectService.init();\n logger.info('indexer manager started');\n }\n\n @profiler()\n async indexBlock(\n block: StellarBlockWrapper,\n dataSources: SubqlStellarDataSource[],\n ): Promise<ProcessBlockResponse> {\n return super.internalIndexBlock(block, dataSources, () =>\n this.getApi(block),\n );\n }\n\n getBlockHeight(block: StellarBlockWrapper): number {\n return block.block.sequence;\n }\n\n getBlockHash(block: StellarBlockWrapper): string {\n return block.block.hash;\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n private async getApi(\n block: StellarBlockWrapper,\n ): Promise<SafeStellarProvider> {\n // return this.apiService.safeApi(this.getBlockHeight(block));\n return null;\n }\n\n protected async indexBlockData(\n { block, effects, operations, transactions }: StellarBlockWrapper,\n dataSources: SubqlProjectDs[],\n getVM: (d: SubqlProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n await this.indexBlockContent(block, dataSources, getVM);\n\n for (const tx of transactions) {\n await this.indexTransaction(tx, dataSources, getVM);\n\n for (const operation of tx.operations) {\n await this.indexOperation(operation, dataSources, getVM);\n\n for (const effect of operation.effects) {\n await this.indexEffect(effect, dataSources, getVM);\n }\n\n for (const event of operation.events) {\n await this.indexEvent(event, dataSources, getVM);\n }\n }\n }\n }\n\n private async indexBlockContent(\n block: StellarBlock,\n dataSources: SubqlProjectDs[],\n getVM: (d: SubqlProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n for (const ds of dataSources) {\n await this.indexData(StellarHandlerKind.Block, block, ds, getVM);\n }\n }\n\n private async indexTransaction(\n transaction: StellarTransaction,\n dataSources: SubqlProjectDs[],\n getVM: (d: SubqlProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n for (const ds of dataSources) {\n await this.indexData(\n StellarHandlerKind.Transaction,\n transaction,\n ds,\n getVM,\n );\n\n if (\n transaction.operations.some(\n (op) => op.type.toString() === 'invoke_host_function',\n )\n ) {\n await this.indexData(\n StellarHandlerKind.SorobanTransaction,\n transaction,\n ds,\n getVM,\n );\n }\n }\n }\n\n private async indexOperation(\n operation: StellarOperation,\n dataSources: SubqlProjectDs[],\n getVM: (d: SubqlProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n for (const ds of dataSources) {\n await this.indexData(StellarHandlerKind.Operation, operation, ds, getVM);\n }\n }\n\n private async indexEffect(\n effect: StellarEffect,\n dataSources: SubqlProjectDs[],\n getVM: (d: SubqlProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n for (const ds of dataSources) {\n await this.indexData(StellarHandlerKind.Effects, effect, ds, getVM);\n }\n }\n\n private async indexEvent(\n event: SorobanEvent,\n dataSources: SubqlProjectDs[],\n getVM: (d: SubqlProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n for (const ds of dataSources) {\n await this.indexData(StellarHandlerKind.Event, event, ds, getVM);\n }\n }\n\n protected async prepareFilteredData<T = any>(\n kind: StellarHandlerKind,\n data: T,\n ds: SubqlDatasource,\n ): Promise<T> {\n return Promise.resolve(data);\n }\n}\n\ntype ProcessorTypeMap = {\n [StellarHandlerKind.Block]: typeof isBlockHandlerProcessor;\n [StellarHandlerKind.Transaction]: typeof isTransactionHandlerProcessor;\n [StellarHandlerKind.SorobanTransaction]: typeof isSorobanTransactionHandlerProcessor;\n [StellarHandlerKind.Operation]: typeof isOperationHandlerProcessor;\n [StellarHandlerKind.Effects]: typeof isEffectHandlerProcessor;\n [StellarHandlerKind.Event]: typeof isEventHandlerProcessor;\n};\n\nconst ProcessorTypeMap = {\n [StellarHandlerKind.Block]: isBlockHandlerProcessor,\n [StellarHandlerKind.Transaction]: isTransactionHandlerProcessor,\n [StellarHandlerKind.SorobanTransaction]: isSorobanTransactionHandlerProcessor,\n [StellarHandlerKind.Operation]: isOperationHandlerProcessor,\n [StellarHandlerKind.Effects]: isEffectHandlerProcessor,\n [StellarHandlerKind.Event]: isEventHandlerProcessor,\n};\n\nconst FilterTypeMap = {\n [StellarHandlerKind.Block]: (\n data: StellarBlock,\n filter: StellarBlockFilter,\n ds: SubqlStellarDataSource,\n ) =>\n StellarBlockWrapped.filterBlocksProcessor(\n data,\n filter,\n ds.options?.address,\n ),\n\n [StellarHandlerKind.Transaction]: (\n data: StellarTransaction,\n filter: StellarTransactionFilter,\n ds: SubqlStellarDataSource,\n ) =>\n StellarBlockWrapped.filterTransactionProcessor(\n data,\n filter,\n ds.options?.address,\n ),\n\n [StellarHandlerKind.SorobanTransaction]: (\n data: StellarTransaction,\n filter: StellarTransactionFilter,\n ds: SubqlStellarDataSource,\n ) =>\n StellarBlockWrapped.filterTransactionProcessor(\n data,\n filter,\n ds.options?.address,\n ),\n\n [StellarHandlerKind.Operation]: (\n data: StellarOperation,\n filter: StellarOperationFilter,\n ds: SubqlStellarDataSource,\n ) =>\n StellarBlockWrapped.filterOperationProcessor(\n data,\n filter,\n ds.options?.address,\n ),\n\n [StellarHandlerKind.Effects]: (\n data: StellarEffect,\n filter: StellarEffectFilter,\n ds: SubqlStellarDataSource,\n ) =>\n StellarBlockWrapped.filterEffectProcessor(\n data,\n filter,\n ds.options?.address,\n ),\n\n [StellarHandlerKind.Event]: (\n data: SorobanEvent,\n filter: SorobanEventFilter,\n ds: SubqlStellarDataSource,\n ) =>\n StellarBlockWrapped.filterEventProcessor(data, filter, ds.options?.address),\n};\n"]}
1
+ {"version":3,"file":"indexer.manager.js","sourceRoot":"","sources":["../../src/indexer/indexer.manager.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Inject, Injectable } from '@nestjs/common';\nimport {\n isCustomDs,\n isRuntimeDs,\n SubqlStellarCustomDataSource,\n StellarHandlerKind,\n StellarRuntimeHandlerInputMap,\n SubqlStellarDataSource,\n isBlockHandlerProcessor,\n isTransactionHandlerProcessor,\n isOperationHandlerProcessor,\n isEffectHandlerProcessor,\n isEventHandlerProcessor,\n isSorobanTransactionHandlerProcessor,\n} from '@subql/common-stellar';\nimport {\n NodeConfig,\n getLogger,\n profiler,\n IndexerSandbox,\n ProcessBlockResponse,\n BaseIndexerManager,\n ApiService,\n} from '@subql/node-core';\nimport {\n StellarBlockWrapper,\n SubqlDatasource,\n StellarTransaction,\n StellarOperation,\n StellarEffect,\n StellarBlock,\n StellarBlockFilter,\n StellarTransactionFilter,\n StellarOperationFilter,\n StellarEffectFilter,\n SorobanEvent,\n SorobanEventFilter,\n} from '@subql/types-stellar';\nimport { StellarProjectDs } from '../configure/SubqueryProject';\nimport { StellarApi } from '../stellar';\nimport { StellarBlockWrapped } from '../stellar/block.stellar';\nimport SafeStellarProvider from '../stellar/safe-api';\nimport {\n asSecondLayerHandlerProcessor_1_0_0,\n DsProcessorService,\n} from './ds-processor.service';\nimport { DynamicDsService } from './dynamic-ds.service';\nimport { ProjectService } from './project.service';\nimport { SandboxService } from './sandbox.service';\nimport { UnfinalizedBlocksService } from './unfinalizedBlocks.service';\n\nconst logger = getLogger('indexer');\n\n@Injectable()\nexport class IndexerManager extends BaseIndexerManager<\n SafeStellarProvider,\n StellarApi,\n StellarBlockWrapper,\n ApiService,\n SubqlStellarDataSource,\n SubqlStellarCustomDataSource,\n typeof FilterTypeMap,\n typeof ProcessorTypeMap,\n StellarRuntimeHandlerInputMap\n> {\n protected isRuntimeDs = isRuntimeDs;\n protected isCustomDs = isCustomDs;\n protected updateCustomProcessor = asSecondLayerHandlerProcessor_1_0_0;\n\n constructor(\n apiService: ApiService,\n nodeConfig: NodeConfig,\n sandboxService: SandboxService,\n dsProcessorService: DsProcessorService,\n dynamicDsService: DynamicDsService,\n unfinalizedBlocksService: UnfinalizedBlocksService,\n @Inject('IProjectService') private projectService: ProjectService,\n ) {\n super(\n apiService,\n nodeConfig,\n sandboxService,\n dsProcessorService,\n dynamicDsService,\n unfinalizedBlocksService,\n FilterTypeMap,\n ProcessorTypeMap,\n );\n }\n\n async start(): Promise<void> {\n await this.projectService.init();\n logger.info('indexer manager started');\n }\n\n @profiler()\n async indexBlock(\n block: StellarBlockWrapper,\n dataSources: SubqlStellarDataSource[],\n ): Promise<ProcessBlockResponse> {\n return super.internalIndexBlock(block, dataSources, () =>\n this.getApi(block),\n );\n }\n\n getBlockHeight(block: StellarBlockWrapper): number {\n return block.block.sequence;\n }\n\n getBlockHash(block: StellarBlockWrapper): string {\n return block.block.hash;\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n private async getApi(\n block: StellarBlockWrapper,\n ): Promise<SafeStellarProvider> {\n // return this.apiService.safeApi(this.getBlockHeight(block));\n return null;\n }\n\n protected async indexBlockData(\n { block, effects, operations, transactions }: StellarBlockWrapper,\n dataSources: StellarProjectDs[],\n getVM: (d: StellarProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n await this.indexBlockContent(block, dataSources, getVM);\n\n for (const tx of transactions) {\n await this.indexTransaction(tx, dataSources, getVM);\n\n for (const operation of tx.operations) {\n await this.indexOperation(operation, dataSources, getVM);\n\n for (const effect of operation.effects) {\n await this.indexEffect(effect, dataSources, getVM);\n }\n\n for (const event of operation.events) {\n await this.indexEvent(event, dataSources, getVM);\n }\n }\n }\n }\n\n private async indexBlockContent(\n block: StellarBlock,\n dataSources: StellarProjectDs[],\n getVM: (d: StellarProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n for (const ds of dataSources) {\n await this.indexData(StellarHandlerKind.Block, block, ds, getVM);\n }\n }\n\n private async indexTransaction(\n transaction: StellarTransaction,\n dataSources: StellarProjectDs[],\n getVM: (d: StellarProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n for (const ds of dataSources) {\n await this.indexData(\n StellarHandlerKind.Transaction,\n transaction,\n ds,\n getVM,\n );\n\n if (\n transaction.operations.some(\n (op) => op.type.toString() === 'invoke_host_function',\n )\n ) {\n await this.indexData(\n StellarHandlerKind.SorobanTransaction,\n transaction,\n ds,\n getVM,\n );\n }\n }\n }\n\n private async indexOperation(\n operation: StellarOperation,\n dataSources: StellarProjectDs[],\n getVM: (d: StellarProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n for (const ds of dataSources) {\n await this.indexData(StellarHandlerKind.Operation, operation, ds, getVM);\n }\n }\n\n private async indexEffect(\n effect: StellarEffect,\n dataSources: StellarProjectDs[],\n getVM: (d: StellarProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n for (const ds of dataSources) {\n await this.indexData(StellarHandlerKind.Effects, effect, ds, getVM);\n }\n }\n\n private async indexEvent(\n event: SorobanEvent,\n dataSources: StellarProjectDs[],\n getVM: (d: StellarProjectDs) => Promise<IndexerSandbox>,\n ): Promise<void> {\n for (const ds of dataSources) {\n await this.indexData(StellarHandlerKind.Event, event, ds, getVM);\n }\n }\n\n protected async prepareFilteredData<T = any>(\n kind: StellarHandlerKind,\n data: T,\n ds: SubqlDatasource,\n ): Promise<T> {\n return Promise.resolve(data);\n }\n}\n\ntype ProcessorTypeMap = {\n [StellarHandlerKind.Block]: typeof isBlockHandlerProcessor;\n [StellarHandlerKind.Transaction]: typeof isTransactionHandlerProcessor;\n [StellarHandlerKind.SorobanTransaction]: typeof isSorobanTransactionHandlerProcessor;\n [StellarHandlerKind.Operation]: typeof isOperationHandlerProcessor;\n [StellarHandlerKind.Effects]: typeof isEffectHandlerProcessor;\n [StellarHandlerKind.Event]: typeof isEventHandlerProcessor;\n};\n\nconst ProcessorTypeMap = {\n [StellarHandlerKind.Block]: isBlockHandlerProcessor,\n [StellarHandlerKind.Transaction]: isTransactionHandlerProcessor,\n [StellarHandlerKind.SorobanTransaction]: isSorobanTransactionHandlerProcessor,\n [StellarHandlerKind.Operation]: isOperationHandlerProcessor,\n [StellarHandlerKind.Effects]: isEffectHandlerProcessor,\n [StellarHandlerKind.Event]: isEventHandlerProcessor,\n};\n\nconst FilterTypeMap = {\n [StellarHandlerKind.Block]: (\n data: StellarBlock,\n filter: StellarBlockFilter,\n ds: SubqlStellarDataSource,\n ) =>\n StellarBlockWrapped.filterBlocksProcessor(\n data,\n filter,\n ds.options?.address,\n ),\n\n [StellarHandlerKind.Transaction]: (\n data: StellarTransaction,\n filter: StellarTransactionFilter,\n ds: SubqlStellarDataSource,\n ) =>\n StellarBlockWrapped.filterTransactionProcessor(\n data,\n filter,\n ds.options?.address,\n ),\n\n [StellarHandlerKind.SorobanTransaction]: (\n data: StellarTransaction,\n filter: StellarTransactionFilter,\n ds: SubqlStellarDataSource,\n ) =>\n StellarBlockWrapped.filterTransactionProcessor(\n data,\n filter,\n ds.options?.address,\n ),\n\n [StellarHandlerKind.Operation]: (\n data: StellarOperation,\n filter: StellarOperationFilter,\n ds: SubqlStellarDataSource,\n ) =>\n StellarBlockWrapped.filterOperationProcessor(\n data,\n filter,\n ds.options?.address,\n ),\n\n [StellarHandlerKind.Effects]: (\n data: StellarEffect,\n filter: StellarEffectFilter,\n ds: SubqlStellarDataSource,\n ) =>\n StellarBlockWrapped.filterEffectProcessor(\n data,\n filter,\n ds.options?.address,\n ),\n\n [StellarHandlerKind.Event]: (\n data: SorobanEvent,\n filter: SorobanEventFilter,\n ds: SubqlStellarDataSource,\n ) =>\n StellarBlockWrapped.filterEventProcessor(data, filter, ds.options?.address),\n};\n"]}
@@ -1,13 +1,17 @@
1
1
  import { EventEmitter2 } from '@nestjs/event-emitter';
2
- import { PoiService, MmrService, BaseProjectService, StoreService, NodeConfig, ApiService, MmrQueryService } from '@subql/node-core';
2
+ import { PoiService, BaseProjectService, StoreService, NodeConfig, ApiService, IProjectUpgradeService } from '@subql/node-core';
3
+ import { StellarBlockWrapper } from '@subql/types-stellar';
3
4
  import { Sequelize } from '@subql/x-sequelize';
4
- import { SubqlProjectDs, SubqueryProject } from '../configure/SubqueryProject';
5
+ import { StellarProjectDs, SubqueryProject } from '../configure/SubqueryProject';
6
+ import { StellarApi } from '../stellar';
7
+ import SafeStellarProvider from '../stellar/safe-api';
5
8
  import { DsProcessorService } from './ds-processor.service';
6
9
  import { DynamicDsService } from './dynamic-ds.service';
7
10
  import { UnfinalizedBlocksService } from './unfinalizedBlocks.service';
8
- export declare class ProjectService extends BaseProjectService<ApiService, SubqlProjectDs> {
11
+ export declare class ProjectService extends BaseProjectService<ApiService<StellarApi, SafeStellarProvider, StellarBlockWrapper[]>, StellarProjectDs> {
12
+ protected readonly projectUpgradeService: IProjectUpgradeService<SubqueryProject>;
9
13
  protected packageVersion: any;
10
- constructor(dsProcessorService: DsProcessorService, apiService: ApiService, poiService: PoiService, mmrService: MmrService, mmrQueryService: MmrQueryService, sequelize: Sequelize, project: SubqueryProject, storeService: StoreService, nodeConfig: NodeConfig, dynamicDsService: DynamicDsService, eventEmitter: EventEmitter2, unfinalizedBlockService: UnfinalizedBlocksService);
11
- protected generateTimestampReferenceForBlockFilters(ds: SubqlProjectDs[]): Promise<SubqlProjectDs[]>;
12
- protected getStartBlockDatasources(): SubqlProjectDs[];
14
+ constructor(dsProcessorService: DsProcessorService, apiService: ApiService, poiService: PoiService, sequelize: Sequelize, project: SubqueryProject, projectUpgradeService: IProjectUpgradeService<SubqueryProject>, storeService: StoreService, nodeConfig: NodeConfig, dynamicDsService: DynamicDsService, eventEmitter: EventEmitter2, unfinalizedBlockService: UnfinalizedBlocksService);
15
+ protected getBlockTimestamp(height: number): Promise<Date>;
16
+ protected onProjectChange(project: SubqueryProject): void | Promise<void>;
13
17
  }
@@ -15,6 +15,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.ProjectService = void 0;
18
+ const worker_threads_1 = require("worker_threads");
18
19
  const common_1 = require("@nestjs/common");
19
20
  const event_emitter_1 = require("@nestjs/event-emitter");
20
21
  const node_core_1 = require("@subql/node-core");
@@ -26,31 +27,35 @@ const unfinalizedBlocks_service_1 = require("./unfinalizedBlocks.service");
26
27
  // eslint-disable-next-line @typescript-eslint/no-var-requires
27
28
  const { version: packageVersion } = require('../../package.json');
28
29
  let ProjectService = class ProjectService extends node_core_1.BaseProjectService {
29
- constructor(dsProcessorService, apiService, poiService, mmrService, mmrQueryService, sequelize, project, storeService, nodeConfig, dynamicDsService, eventEmitter, unfinalizedBlockService) {
30
- super(dsProcessorService, apiService, poiService, mmrService, mmrQueryService, sequelize, project, storeService, nodeConfig, dynamicDsService, eventEmitter, unfinalizedBlockService);
30
+ constructor(dsProcessorService, apiService, poiService, sequelize, project, projectUpgradeService, storeService, nodeConfig, dynamicDsService, eventEmitter, unfinalizedBlockService) {
31
+ super(dsProcessorService, apiService, poiService, sequelize, project, projectUpgradeService, storeService, nodeConfig, dynamicDsService, eventEmitter, unfinalizedBlockService);
32
+ this.projectUpgradeService = projectUpgradeService;
31
33
  this.packageVersion = packageVersion;
32
34
  }
33
- // eslint-disable-next-line @typescript-eslint/require-await
34
- async generateTimestampReferenceForBlockFilters(ds) {
35
- //throw new Error('Block filters not implemented yet');
36
- return Promise.resolve(ds);
37
- //return generateTimestampReferenceForBlockFilters(ds, this.apiService.api);
35
+ async getBlockTimestamp(height) {
36
+ const block = await this.apiService.unsafeApi.api
37
+ .ledgers()
38
+ .ledger(height)
39
+ .call();
40
+ return new Date(block.closed_at); // TODO test and make sure its in MS not S
38
41
  }
39
- getStartBlockDatasources() {
40
- return this.project.dataSources;
42
+ onProjectChange(project) {
43
+ // TODO update this when implementing skipBlock feature for Eth
44
+ // this.apiService.updateBlockFetching();
41
45
  }
42
46
  };
43
47
  ProjectService = __decorate([
44
48
  (0, common_1.Injectable)(),
45
- __param(6, (0, common_1.Inject)('ISubqueryProject')),
49
+ __param(2, (0, common_1.Inject)(worker_threads_1.isMainThread ? node_core_1.PoiService : 'Null')),
50
+ __param(3, (0, common_1.Inject)(worker_threads_1.isMainThread ? x_sequelize_1.Sequelize : 'Null')),
51
+ __param(4, (0, common_1.Inject)('ISubqueryProject')),
52
+ __param(5, (0, common_1.Inject)('IProjectUpgradeService')),
53
+ __param(6, (0, common_1.Inject)(worker_threads_1.isMainThread ? node_core_1.StoreService : 'Null')),
46
54
  __metadata("design:paramtypes", [ds_processor_service_1.DsProcessorService,
47
55
  node_core_1.ApiService,
48
56
  node_core_1.PoiService,
49
- node_core_1.MmrService,
50
- node_core_1.MmrQueryService,
51
57
  x_sequelize_1.Sequelize,
52
- SubqueryProject_1.SubqueryProject,
53
- node_core_1.StoreService,
58
+ SubqueryProject_1.SubqueryProject, Object, node_core_1.StoreService,
54
59
  node_core_1.NodeConfig,
55
60
  dynamic_ds_service_1.DynamicDsService,
56
61
  event_emitter_1.EventEmitter2,
@@ -1 +1 @@
1
- {"version":3,"file":"project.service.js","sourceRoot":"","sources":["../../src/indexer/project.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,2CAAoD;AACpD,yDAAsD;AACtD,gDAQ0B;AAC1B,oDAA+C;AAC/C,kEAIsC;AACtC,iEAA4D;AAC5D,6DAAwD;AACxD,2EAAuE;AAEvE,8DAA8D;AAC9D,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAG3D,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,8BAGnC;IAGC,YACE,kBAAsC,EACtC,UAAsB,EACtB,UAAsB,EACtB,UAAsB,EACtB,eAAgC,EAChC,SAAoB,EACQ,OAAwB,EACpD,YAA0B,EAC1B,UAAsB,EACtB,gBAAkC,EAClC,YAA2B,EAC3B,uBAAiD;QAEjD,KAAK,CACH,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,UAAU,EACV,eAAe,EACf,SAAS,EACT,OAAO,EACP,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,uBAAuB,CACxB,CAAC;QA7BM,mBAAc,GAAG,cAAc,CAAC;IA8B1C,CAAC;IAED,4DAA4D;IAClD,KAAK,CAAC,yCAAyC,CACvD,EAAoB;QAEpB,uDAAuD;QACvD,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3B,4EAA4E;IAC9E,CAAC;IAES,wBAAwB;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;IAClC,CAAC;CACF,CAAA;AAhDY,cAAc;IAD1B,IAAA,mBAAU,GAAE;IAcR,WAAA,IAAA,eAAM,EAAC,kBAAkB,CAAC,CAAA;qCANP,yCAAkB;QAC1B,sBAAU;QACV,sBAAU;QACV,sBAAU;QACL,2BAAe;QACrB,uBAAS;QACiB,iCAAe;QACtC,wBAAY;QACd,sBAAU;QACJ,qCAAgB;QACpB,6BAAa;QACF,oDAAwB;GAlBxC,cAAc,CAgD1B;AAhDY,wCAAc","sourcesContent":["// Copyright 2020-2023 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 {\n PoiService,\n MmrService,\n BaseProjectService,\n StoreService,\n NodeConfig,\n ApiService,\n MmrQueryService,\n} from '@subql/node-core';\nimport { Sequelize } from '@subql/x-sequelize';\nimport {\n // generateTimestampReferenceForBlockFilters,\n SubqlProjectDs,\n SubqueryProject,\n} from '../configure/SubqueryProject';\nimport { DsProcessorService } from './ds-processor.service';\nimport { DynamicDsService } from './dynamic-ds.service';\nimport { UnfinalizedBlocksService } from './unfinalizedBlocks.service';\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst { version: packageVersion } = require('../../package.json');\n\n@Injectable()\nexport class ProjectService extends BaseProjectService<\n ApiService,\n SubqlProjectDs\n> {\n protected packageVersion = packageVersion;\n\n constructor(\n dsProcessorService: DsProcessorService,\n apiService: ApiService,\n poiService: PoiService,\n mmrService: MmrService,\n mmrQueryService: MmrQueryService,\n sequelize: Sequelize,\n @Inject('ISubqueryProject') project: SubqueryProject,\n storeService: StoreService,\n nodeConfig: NodeConfig,\n dynamicDsService: DynamicDsService,\n eventEmitter: EventEmitter2,\n unfinalizedBlockService: UnfinalizedBlocksService,\n ) {\n super(\n dsProcessorService,\n apiService,\n poiService,\n mmrService,\n mmrQueryService,\n sequelize,\n project,\n storeService,\n nodeConfig,\n dynamicDsService,\n eventEmitter,\n unfinalizedBlockService,\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n protected async generateTimestampReferenceForBlockFilters(\n ds: SubqlProjectDs[],\n ): Promise<SubqlProjectDs[]> {\n //throw new Error('Block filters not implemented yet');\n return Promise.resolve(ds);\n //return generateTimestampReferenceForBlockFilters(ds, this.apiService.api);\n }\n\n protected getStartBlockDatasources(): SubqlProjectDs[] {\n return this.project.dataSources;\n }\n}\n"]}
1
+ {"version":3,"file":"project.service.js","sourceRoot":"","sources":["../../src/indexer/project.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,mDAA8C;AAC9C,2CAAoD;AACpD,yDAAsD;AACtD,gDAQ0B;AAE1B,oDAA+C;AAE/C,kEAIsC;AAGtC,iEAA4D;AAC5D,6DAAwD;AACxD,2EAAuE;AAEvE,8DAA8D;AAC9D,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAG3D,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,8BAGnC;IAGC,YACE,kBAAsC,EACtC,UAAsB,EACsB,UAAsB,EACvB,SAAoB,EACnC,OAAwB,EAEjC,qBAA8D,EACnC,YAA0B,EACxE,UAAsB,EACtB,gBAAkC,EAClC,YAA2B,EAC3B,uBAAiD;QAEjD,KAAK,CACH,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,SAAS,EACT,OAAO,EACP,qBAAqB,EACrB,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,uBAAuB,CACxB,CAAC;QAnBiB,0BAAqB,GAArB,qBAAqB,CAAyC;QATzE,mBAAc,GAAG,cAAc,CAAC;IA6B1C,CAAC;IAES,KAAK,CAAC,iBAAiB,CAAC,MAAc;QAC9C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG;aAC9C,OAAO,EAAE;aACT,MAAM,CAAC,MAAM,CAAC;aACd,IAAI,EAAE,CAAC;QAEV,OAAO,IAAI,IAAI,CAAE,KAA2C,CAAC,SAAS,CAAC,CAAC,CAAC,0CAA0C;IACrH,CAAC;IAES,eAAe,CAAC,OAAwB;QAChD,+DAA+D;QAC/D,yCAAyC;IAC3C,CAAC;CACF,CAAA;AAhDY,cAAc;IAD1B,IAAA,mBAAU,GAAE;IAUR,WAAA,IAAA,eAAM,EAAC,6BAAY,CAAC,CAAC,CAAC,sBAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IAC1C,WAAA,IAAA,eAAM,EAAC,6BAAY,CAAC,CAAC,CAAC,uBAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IACzC,WAAA,IAAA,eAAM,EAAC,kBAAkB,CAAC,CAAA;IAC1B,WAAA,IAAA,eAAM,EAAC,wBAAwB,CAAC,CAAA;IAEhC,WAAA,IAAA,eAAM,EAAC,6BAAY,CAAC,CAAC,CAAC,wBAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;qCAPzB,yCAAkB;QAC1B,sBAAU;QACkC,sBAAU;QACZ,uBAAS;QAC1B,iCAAe,UAGQ,wBAAY;QAC5D,sBAAU;QACJ,qCAAgB;QACpB,6BAAa;QACF,oDAAwB;GAlBxC,cAAc,CAgD1B;AAhDY,wCAAc","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { isMainThread } from 'worker_threads';\nimport { Inject, Injectable } from '@nestjs/common';\nimport { EventEmitter2 } from '@nestjs/event-emitter';\nimport {\n PoiService,\n BaseProjectService,\n StoreService,\n NodeConfig,\n ApiService,\n IProjectUpgradeService,\n mainThreadOnly,\n} from '@subql/node-core';\nimport { StellarBlockWrapper } from '@subql/types-stellar';\nimport { Sequelize } from '@subql/x-sequelize';\nimport { ServerApi } from 'stellar-sdk';\nimport {\n // generateTimestampReferenceForBlockFilters,\n StellarProjectDs,\n SubqueryProject,\n} from '../configure/SubqueryProject';\nimport { StellarApi } from '../stellar';\nimport SafeStellarProvider from '../stellar/safe-api';\nimport { DsProcessorService } from './ds-processor.service';\nimport { DynamicDsService } from './dynamic-ds.service';\nimport { UnfinalizedBlocksService } from './unfinalizedBlocks.service';\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst { version: packageVersion } = require('../../package.json');\n\n@Injectable()\nexport class ProjectService extends BaseProjectService<\n ApiService<StellarApi, SafeStellarProvider, StellarBlockWrapper[]>,\n StellarProjectDs\n> {\n protected packageVersion = packageVersion;\n\n constructor(\n dsProcessorService: DsProcessorService,\n apiService: ApiService,\n @Inject(isMainThread ? PoiService : 'Null') poiService: PoiService,\n @Inject(isMainThread ? Sequelize : 'Null') sequelize: Sequelize,\n @Inject('ISubqueryProject') project: SubqueryProject,\n @Inject('IProjectUpgradeService')\n protected readonly projectUpgradeService: IProjectUpgradeService<SubqueryProject>,\n @Inject(isMainThread ? StoreService : 'Null') storeService: StoreService,\n nodeConfig: NodeConfig,\n dynamicDsService: DynamicDsService,\n eventEmitter: EventEmitter2,\n unfinalizedBlockService: UnfinalizedBlocksService,\n ) {\n super(\n dsProcessorService,\n apiService,\n poiService,\n sequelize,\n project,\n projectUpgradeService,\n storeService,\n nodeConfig,\n dynamicDsService,\n eventEmitter,\n unfinalizedBlockService,\n );\n }\n\n protected async getBlockTimestamp(height: number): Promise<Date> {\n const block = await this.apiService.unsafeApi.api\n .ledgers()\n .ledger(height)\n .call();\n\n return new Date((block as unknown as ServerApi.LedgerRecord).closed_at); // TODO test and make sure its in MS not S\n }\n\n protected onProjectChange(project: SubqueryProject): void | Promise<void> {\n // TODO update this when implementing skipBlock feature for Eth\n // this.apiService.updateBlockFetching();\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { BaseDataSource } from '@subql/common';
2
1
  import { NodeConfig, StoreService, IndexerSandbox, ISubqueryProject, ApiService } from '@subql/node-core';
2
+ import { BaseDataSource } from '@subql/types-core';
3
3
  import SafeStellarProvider from '../stellar/safe-api';
4
4
  export declare class SandboxService {
5
5
  private readonly apiService;
@@ -55,6 +55,7 @@ let SandboxService = class SandboxService {
55
55
  };
56
56
  SandboxService = __decorate([
57
57
  (0, common_1.Injectable)(),
58
+ __param(1, (0, common_1.Inject)(worker_threads_1.isMainThread ? node_core_1.StoreService : 'Null')),
58
59
  __param(3, (0, common_1.Inject)('ISubqueryProject')),
59
60
  __metadata("design:paramtypes", [node_core_1.ApiService,
60
61
  node_core_1.StoreService,
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox.service.js","sourceRoot":"","sources":["../../src/indexer/sandbox.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,mDAA8C;AAC9C,2CAAoD;AAEpD,gDAO0B;AAI1B,+GAA+G;AAExG,IAAM,cAAc,GAApB,MAAM,cAAc;IAGzB,YACmB,UAAsB,EACtB,YAA0B,EAC1B,UAAsB,EACM,OAAyB;QAHrD,eAAU,GAAV,UAAU,CAAY;QACtB,iBAAY,GAAZ,YAAY,CAAc;QAC1B,eAAU,GAAV,UAAU,CAAY;QACM,YAAO,GAAP,OAAO,CAAkB;QANhE,mBAAc,GAAmC,EAAE,CAAC;IAOzD,CAAC;IAEJ,cAAc,CAAC,EAAkB,EAAE,GAAwB;QACzD,MAAM,KAAK,GAAU,6BAAY;YAC/B,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;YAC9B,CAAC,CAAC,IAAA,4BAAgB,EAAE,MAAc,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB;QAEpE,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS,EAAE;YACd,SAAS,GAAG,IAAI,0BAAc,CAC5B;gBACE,KAAK;gBACL,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;gBACvB,KAAK;gBACL,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO;aACtC,EACD,IAAI,CAAC,UAAU,CAChB,CAAC;YACF,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;SACxC;QAED,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YAC1B,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;SACxD;QACD,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC1D,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,kBAAkB,CAAC,EAAkB;QAC3C,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACzB,CAAC;CACF,CAAA;AAzCY,cAAc;IAD1B,IAAA,mBAAU,GAAE;IAQR,WAAA,IAAA,eAAM,EAAC,kBAAkB,CAAC,CAAA;qCAHE,sBAAU;QACR,wBAAY;QACd,sBAAU;GAN9B,cAAc,CAyC1B;AAzCY,wCAAc","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { isMainThread } from 'worker_threads';\nimport { Inject, Injectable } from '@nestjs/common';\nimport { BaseDataSource } from '@subql/common';\nimport {\n NodeConfig,\n StoreService,\n IndexerSandbox,\n hostStoreToStore,\n ISubqueryProject,\n ApiService,\n} from '@subql/node-core';\nimport { Store } from '@subql/types-stellar';\nimport SafeStellarProvider from '../stellar/safe-api';\n\n/* It would be nice to move this to node core but need to find a way to inject other things into the sandbox */\n@Injectable()\nexport class SandboxService {\n private processorCache: Record<string, IndexerSandbox> = {};\n\n constructor(\n private readonly apiService: ApiService,\n private readonly storeService: StoreService,\n private readonly nodeConfig: NodeConfig,\n @Inject('ISubqueryProject') private readonly project: ISubqueryProject,\n ) {}\n\n getDsProcessor(ds: BaseDataSource, api: SafeStellarProvider): IndexerSandbox {\n const store: Store = isMainThread\n ? this.storeService.getStore()\n : hostStoreToStore((global as any).host); // Provided in worker.ts\n\n const entry = this.getDataSourceEntry(ds);\n let processor = this.processorCache[entry];\n if (!processor) {\n processor = new IndexerSandbox(\n {\n store,\n root: this.project.root,\n entry,\n chainId: this.project.network.chainId,\n },\n this.nodeConfig,\n );\n this.processorCache[entry] = processor;\n }\n\n processor.freeze(api, 'api');\n if (this.nodeConfig.unsafe) {\n processor.freeze(this.apiService.api.api, 'unsafeApi');\n }\n processor.freeze(this.project.network.chainId, 'chainId');\n return processor;\n }\n\n private getDataSourceEntry(ds: BaseDataSource): string {\n return ds.mapping.file;\n }\n}\n"]}
1
+ {"version":3,"file":"sandbox.service.js","sourceRoot":"","sources":["../../src/indexer/sandbox.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;AAEnC,mDAA8C;AAC9C,2CAAoD;AACpD,gDAO0B;AAI1B,+GAA+G;AAExG,IAAM,cAAc,GAApB,MAAM,cAAc;IAGzB,YACmB,UAAsB,EAEtB,YAA0B,EAC1B,UAAsB,EACM,OAAyB;QAJrD,eAAU,GAAV,UAAU,CAAY;QAEtB,iBAAY,GAAZ,YAAY,CAAc;QAC1B,eAAU,GAAV,UAAU,CAAY;QACM,YAAO,GAAP,OAAO,CAAkB;QAPhE,mBAAc,GAAmC,EAAE,CAAC;IAQzD,CAAC;IAEJ,cAAc,CAAC,EAAkB,EAAE,GAAwB;QACzD,MAAM,KAAK,GAAU,6BAAY;YAC/B,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;YAC9B,CAAC,CAAC,IAAA,4BAAgB,EAAE,MAAc,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB;QAEpE,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS,EAAE;YACd,SAAS,GAAG,IAAI,0BAAc,CAC5B;gBACE,KAAK;gBACL,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;gBACvB,KAAK;gBACL,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO;aACtC,EACD,IAAI,CAAC,UAAU,CAChB,CAAC;YACF,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;SACxC;QAED,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YAC1B,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;SACxD;QACD,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC1D,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,kBAAkB,CAAC,EAAkB;QAC3C,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACzB,CAAC;CACF,CAAA;AA1CY,cAAc;IAD1B,IAAA,mBAAU,GAAE;IAMR,WAAA,IAAA,eAAM,EAAC,6BAAY,CAAC,CAAC,CAAC,wBAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IAG5C,WAAA,IAAA,eAAM,EAAC,kBAAkB,CAAC,CAAA;qCAJE,sBAAU;QAER,wBAAY;QACd,sBAAU;GAP9B,cAAc,CA0C1B;AA1CY,wCAAc","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { isMainThread } from 'worker_threads';\nimport { Inject, Injectable } from '@nestjs/common';\nimport {\n NodeConfig,\n StoreService,\n IndexerSandbox,\n hostStoreToStore,\n ISubqueryProject,\n ApiService,\n} from '@subql/node-core';\nimport { Store, BaseDataSource } from '@subql/types-core';\nimport SafeStellarProvider from '../stellar/safe-api';\n\n/* It would be nice to move this to node core but need to find a way to inject other things into the sandbox */\n@Injectable()\nexport class SandboxService {\n private processorCache: Record<string, IndexerSandbox> = {};\n\n constructor(\n private readonly apiService: ApiService,\n @Inject(isMainThread ? StoreService : 'Null')\n private readonly storeService: StoreService,\n private readonly nodeConfig: NodeConfig,\n @Inject('ISubqueryProject') private readonly project: ISubqueryProject,\n ) {}\n\n getDsProcessor(ds: BaseDataSource, api: SafeStellarProvider): IndexerSandbox {\n const store: Store = isMainThread\n ? this.storeService.getStore()\n : hostStoreToStore((global as any).host); // Provided in worker.ts\n\n const entry = this.getDataSourceEntry(ds);\n let processor = this.processorCache[entry];\n if (!processor) {\n processor = new IndexerSandbox(\n {\n store,\n root: this.project.root,\n entry,\n chainId: this.project.network.chainId,\n },\n this.nodeConfig,\n );\n this.processorCache[entry] = processor;\n }\n\n processor.freeze(api, 'api');\n if (this.nodeConfig.unsafe) {\n processor.freeze(this.apiService.api.api, 'unsafeApi');\n }\n processor.freeze(this.project.network.chainId, 'chainId');\n return processor;\n }\n\n private getDataSourceEntry(ds: BaseDataSource): string {\n return ds.mapping.file;\n }\n}\n"]}
@@ -42,6 +42,30 @@ let UnfinalizedBlocksService = class UnfinalizedBlocksService extends node_core_
42
42
  return Promise.resolve(blockToHeader(height));
43
43
  }
44
44
  };
45
+ __decorate([
46
+ (0, node_core_1.mainThreadOnly)(),
47
+ __metadata("design:type", Function),
48
+ __metadata("design:paramtypes", [Object]),
49
+ __metadata("design:returntype", Object)
50
+ ], UnfinalizedBlocksService.prototype, "blockToHeader", null);
51
+ __decorate([
52
+ (0, node_core_1.mainThreadOnly)(),
53
+ __metadata("design:type", Function),
54
+ __metadata("design:paramtypes", []),
55
+ __metadata("design:returntype", Promise)
56
+ ], UnfinalizedBlocksService.prototype, "getFinalizedHead", null);
57
+ __decorate([
58
+ (0, node_core_1.mainThreadOnly)(),
59
+ __metadata("design:type", Function),
60
+ __metadata("design:paramtypes", [String]),
61
+ __metadata("design:returntype", Promise)
62
+ ], UnfinalizedBlocksService.prototype, "getHeaderForHash", null);
63
+ __decorate([
64
+ (0, node_core_1.mainThreadOnly)(),
65
+ __metadata("design:type", Function),
66
+ __metadata("design:paramtypes", [Number]),
67
+ __metadata("design:returntype", Promise)
68
+ ], UnfinalizedBlocksService.prototype, "getHeaderForHeight", null);
45
69
  UnfinalizedBlocksService = __decorate([
46
70
  (0, common_1.Injectable)(),
47
71
  __metadata("design:paramtypes", [node_core_1.ApiService,
@@ -1 +1 @@
1
- {"version":3,"file":"unfinalizedBlocks.service.js","sourceRoot":"","sources":["../../src/indexer/unfinalizedBlocks.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;AAEnC,2CAA4C;AAC5C,gDAO0B;AAG1B,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,aAAa,CAAC,CAAC;AAExC,SAAgB,aAAa,CAAC,WAAmB;IAC/C,OAAO;QACL,WAAW,EAAE,WAAW;QACxB,SAAS,EAAE,WAAW,CAAC,QAAQ,EAAE;QACjC,UAAU,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;KACzC,CAAC;AACJ,CAAC;AAND,sCAMC;AAGM,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,wCAA0C;IACtF,YACmB,UAAsB,EACvC,UAAsB,EACtB,UAA6B;QAE7B,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAJb,eAAU,GAAV,UAAU,CAAY;IAKzC,CAAC;IAES,aAAa,CAAC,KAAmB;QACzC,OAAO,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAES,KAAK,CAAC,gBAAgB;QAC9B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,uBAAuB,EAAE,CAAC;QAC5E,OAAO,aAAa,CAAC,eAAe,CAAC,CAAC;IACxC,CAAC;IAES,KAAK,CAAC,gBAAgB,CAAC,IAAY;QAC3C,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;IAES,KAAK,CAAC,kBAAkB,CAAC,MAAc;QAC/C,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,CAAC;CACF,CAAA;AAzBY,wBAAwB;IADpC,IAAA,mBAAU,GAAE;qCAGoB,sBAAU;QAC3B,sBAAU;QACV,6BAAiB;GAJpB,wBAAwB,CAyBpC;AAzBY,4DAAwB","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Injectable } from '@nestjs/common';\nimport {\n ApiService,\n BaseUnfinalizedBlocksService,\n Header,\n NodeConfig,\n StoreCacheService,\n getLogger,\n} from '@subql/node-core';\nimport { BlockWrapper } from '@subql/types-stellar';\n\nconst logger = getLogger('unfinalized');\n\nexport function blockToHeader(blockHeight: number): Header {\n return {\n blockHeight: blockHeight,\n blockHash: blockHeight.toString(),\n parentHash: (blockHeight - 1).toString(),\n };\n}\n\n@Injectable()\nexport class UnfinalizedBlocksService extends BaseUnfinalizedBlocksService<BlockWrapper> {\n constructor(\n private readonly apiService: ApiService,\n nodeConfig: NodeConfig,\n storeCache: StoreCacheService,\n ) {\n super(nodeConfig, storeCache);\n }\n\n protected blockToHeader(block: BlockWrapper): Header {\n return blockToHeader(block.block.sequence);\n }\n\n protected async getFinalizedHead(): Promise<Header> {\n const finalizedHeight = await this.apiService.api.getFinalizedBlockHeight();\n return blockToHeader(finalizedHeight);\n }\n\n protected async getHeaderForHash(hash: string): Promise<Header> {\n return this.getHeaderForHeight(parseInt(hash, 10));\n }\n\n protected async getHeaderForHeight(height: number): Promise<Header> {\n return Promise.resolve(blockToHeader(height));\n }\n}\n"]}
1
+ {"version":3,"file":"unfinalizedBlocks.service.js","sourceRoot":"","sources":["../../src/indexer/unfinalizedBlocks.service.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;AAEnC,2CAA4C;AAC5C,gDAQ0B;AAG1B,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,aAAa,CAAC,CAAC;AAExC,SAAgB,aAAa,CAAC,WAAmB;IAC/C,OAAO;QACL,WAAW,EAAE,WAAW;QACxB,SAAS,EAAE,WAAW,CAAC,QAAQ,EAAE;QACjC,UAAU,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;KACzC,CAAC;AACJ,CAAC;AAND,sCAMC;AAGM,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,wCAA0C;IACtF,YACmB,UAAsB,EACvC,UAAsB,EACtB,UAA6B;QAE7B,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAJb,eAAU,GAAV,UAAU,CAAY;IAKzC,CAAC;IAGS,aAAa,CAAC,KAAmB;QACzC,OAAO,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAGe,AAAN,KAAK,CAAC,gBAAgB;QAC9B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,uBAAuB,EAAE,CAAC;QAC5E,OAAO,aAAa,CAAC,eAAe,CAAC,CAAC;IACxC,CAAC;IAGe,AAAN,KAAK,CAAC,gBAAgB,CAAC,IAAY;QAC3C,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;IAGe,AAAN,KAAK,CAAC,kBAAkB,CAAC,MAAc;QAC/C,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,CAAC;CACF,CAAA;AApBC;IAAC,IAAA,0BAAc,GAAE;;;;6DAGhB;AAGe;IADf,IAAA,0BAAc,GAAE;;;;gEAIhB;AAGe;IADf,IAAA,0BAAc,GAAE;;;;gEAGhB;AAGe;IADf,IAAA,0BAAc,GAAE;;;;kEAGhB;AA5BU,wBAAwB;IADpC,IAAA,mBAAU,GAAE;qCAGoB,sBAAU;QAC3B,sBAAU;QACV,6BAAiB;GAJpB,wBAAwB,CA6BpC;AA7BY,4DAAwB","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Injectable } from '@nestjs/common';\nimport {\n ApiService,\n BaseUnfinalizedBlocksService,\n Header,\n NodeConfig,\n StoreCacheService,\n getLogger,\n mainThreadOnly,\n} from '@subql/node-core';\nimport { BlockWrapper } from '@subql/types-stellar';\n\nconst logger = getLogger('unfinalized');\n\nexport function blockToHeader(blockHeight: number): Header {\n return {\n blockHeight: blockHeight,\n blockHash: blockHeight.toString(),\n parentHash: (blockHeight - 1).toString(),\n };\n}\n\n@Injectable()\nexport class UnfinalizedBlocksService extends BaseUnfinalizedBlocksService<BlockWrapper> {\n constructor(\n private readonly apiService: ApiService,\n nodeConfig: NodeConfig,\n storeCache: StoreCacheService,\n ) {\n super(nodeConfig, storeCache);\n }\n\n @mainThreadOnly()\n protected blockToHeader(block: BlockWrapper): Header {\n return blockToHeader(block.block.sequence);\n }\n\n @mainThreadOnly()\n protected async getFinalizedHead(): Promise<Header> {\n const finalizedHeight = await this.apiService.api.getFinalizedBlockHeight();\n return blockToHeader(finalizedHeight);\n }\n\n @mainThreadOnly()\n protected async getHeaderForHash(hash: string): Promise<Header> {\n return this.getHeaderForHeight(parseInt(hash, 10));\n }\n\n @mainThreadOnly()\n protected async getHeaderForHeight(height: number): Promise<Header> {\n return Promise.resolve(blockToHeader(height));\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare class WorkerFetchModule {
2
+ }
@@ -8,28 +8,26 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  return c > 3 && r && Object.defineProperty(target, key, r), r;
9
9
  };
10
10
  Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.IndexerModule = void 0;
11
+ exports.WorkerFetchModule = void 0;
12
12
  const worker_threads_1 = require("worker_threads");
13
13
  const common_1 = require("@nestjs/common");
14
14
  const event_emitter_1 = require("@nestjs/event-emitter");
15
15
  const node_core_1 = require("@subql/node-core");
16
- const stellar_1 = require("../stellar");
17
- const ds_processor_service_1 = require("./ds-processor.service");
18
- const dynamic_ds_service_1 = require("./dynamic-ds.service");
19
- const indexer_manager_1 = require("./indexer.manager");
20
- const project_service_1 = require("./project.service");
21
- const sandbox_service_1 = require("./sandbox.service");
22
- const unfinalizedBlocks_service_1 = require("./unfinalizedBlocks.service");
23
- const worker_service_1 = require("./worker/worker.service");
24
- const worker_unfinalizedBlocks_service_1 = require("./worker/worker.unfinalizedBlocks.service");
25
- let IndexerModule = class IndexerModule {
16
+ const stellar_1 = require("../../stellar");
17
+ const ds_processor_service_1 = require("../ds-processor.service");
18
+ const dynamic_ds_service_1 = require("../dynamic-ds.service");
19
+ const indexer_manager_1 = require("../indexer.manager");
20
+ const project_service_1 = require("../project.service");
21
+ const sandbox_service_1 = require("../sandbox.service");
22
+ const unfinalizedBlocks_service_1 = require("../unfinalizedBlocks.service");
23
+ const worker_service_1 = require("./worker.service");
24
+ const worker_unfinalizedBlocks_service_1 = require("./worker.unfinalizedBlocks.service");
25
+ let WorkerFetchModule = class WorkerFetchModule {
26
26
  };
27
- IndexerModule = __decorate([
27
+ WorkerFetchModule = __decorate([
28
28
  (0, common_1.Module)({
29
29
  providers: [
30
30
  indexer_manager_1.IndexerManager,
31
- node_core_1.StoreCacheService,
32
- node_core_1.StoreService,
33
31
  {
34
32
  provide: node_core_1.ConnectionPoolStateManager,
35
33
  useFactory: () => {
@@ -42,12 +40,17 @@ IndexerModule = __decorate([
42
40
  node_core_1.ConnectionPoolService,
43
41
  {
44
42
  provide: node_core_1.ApiService,
45
- useFactory: async (project, connectionPoolService, eventEmitter) => {
46
- const apiService = new stellar_1.StellarApiService(project, connectionPoolService, eventEmitter);
43
+ useFactory: async (project, projectUpgradeService, connectionPoolService, eventEmitter) => {
44
+ const apiService = new stellar_1.StellarApiService(project, projectUpgradeService, connectionPoolService, eventEmitter);
47
45
  await apiService.init();
48
46
  return apiService;
49
47
  },
50
- inject: ['ISubqueryProject', node_core_1.ConnectionPoolService, event_emitter_1.EventEmitter2],
48
+ inject: [
49
+ 'ISubqueryProject',
50
+ 'IProjectUpgradeService',
51
+ node_core_1.ConnectionPoolService,
52
+ event_emitter_1.EventEmitter2,
53
+ ],
51
54
  },
52
55
  sandbox_service_1.SandboxService,
53
56
  ds_processor_service_1.DsProcessorService,
@@ -60,10 +63,6 @@ IndexerModule = __decorate([
60
63
  return new node_core_1.WorkerDynamicDsService(global.host);
61
64
  },
62
65
  },
63
- node_core_1.PoiService,
64
- node_core_1.MmrService,
65
- node_core_1.PgMmrCacheService,
66
- node_core_1.MmrQueryService,
67
66
  {
68
67
  provide: 'IProjectService',
69
68
  useClass: project_service_1.ProjectService,
@@ -79,8 +78,7 @@ IndexerModule = __decorate([
79
78
  },
80
79
  },
81
80
  ],
82
- exports: [node_core_1.StoreService, node_core_1.MmrService, node_core_1.MmrQueryService],
83
81
  })
84
- ], IndexerModule);
85
- exports.IndexerModule = IndexerModule;
86
- //# sourceMappingURL=indexer.module.js.map
82
+ ], WorkerFetchModule);
83
+ exports.WorkerFetchModule = WorkerFetchModule;
84
+ //# sourceMappingURL=worker-fetch.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-fetch.module.js","sourceRoot":"","sources":["../../../src/indexer/worker/worker-fetch.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;AAEnC,mDAA8C;AAC9C,2CAAwC;AACxC,yDAAsD;AACtD,gDAU0B;AAE1B,2CAAkD;AAElD,kEAA6D;AAC7D,8DAAyD;AACzD,wDAAoD;AACpD,wDAAoD;AACpD,wDAAoD;AACpD,4EAAwE;AACxE,qDAAiD;AACjD,yFAAoF;AAkE7E,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;CAAG,CAAA;AAApB,iBAAiB;IAhE7B,IAAA,eAAM,EAAC;QACN,SAAS,EAAE;YACT,gCAAc;YACd;gBACE,OAAO,EAAE,sCAA0B;gBACnC,UAAU,EAAE,GAAG,EAAE;oBACf,IAAI,6BAAY,EAAE;wBAChB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;qBACjD;oBACD,OAAO,IAAI,4CAAgC,CAAE,MAAc,CAAC,IAAI,CAAC,CAAC;gBACpE,CAAC;aACF;YACD,iCAAqB;YACrB;gBACE,OAAO,EAAE,sBAAU;gBACnB,UAAU,EAAE,KAAK,EACf,OAAwB,EACxB,qBAA2C,EAC3C,qBAAkE,EAClE,YAA2B,EAC3B,EAAE;oBACF,MAAM,UAAU,GAAG,IAAI,2BAAiB,CACtC,OAAO,EACP,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,CACb,CAAC;oBACF,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;oBACxB,OAAO,UAAU,CAAC;gBACpB,CAAC;gBACD,MAAM,EAAE;oBACN,kBAAkB;oBAClB,wBAAwB;oBACxB,iCAAqB;oBACrB,6BAAa;iBACd;aACF;YACD,gCAAc;YACd,yCAAkB;YAClB;gBACE,OAAO,EAAE,qCAAgB;gBACzB,UAAU,EAAE,GAAG,EAAE;oBACf,IAAI,6BAAY,EAAE;wBAChB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;qBACjD;oBACD,OAAO,IAAI,kCAAsB,CAAE,MAAc,CAAC,IAAI,CAAC,CAAC;gBAC1D,CAAC;aACF;YACD;gBACE,OAAO,EAAE,iBAAiB;gBAC1B,QAAQ,EAAE,gCAAc;aACzB;YACD,8BAAa;YACb;gBACE,OAAO,EAAE,oDAAwB;gBACjC,UAAU,EAAE,GAAG,EAAE;oBACf,IAAI,6BAAY,EAAE;wBAChB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;qBACjD;oBACD,OAAO,IAAI,iEAA8B,CAAE,MAAc,CAAC,IAAI,CAAC,CAAC;gBAClE,CAAC;aACF;SACF;KACF,CAAC;GACW,iBAAiB,CAAG;AAApB,8CAAiB","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { isMainThread } from 'worker_threads';\nimport { Module } from '@nestjs/common';\nimport { EventEmitter2 } from '@nestjs/event-emitter';\nimport {\n ApiService,\n StoreService,\n PoiService,\n ConnectionPoolService,\n StoreCacheService,\n WorkerDynamicDsService,\n ConnectionPoolStateManager,\n WorkerConnectionPoolStateManager,\n ProjectUpgradeSevice,\n} from '@subql/node-core';\nimport { SubqueryProject } from '../../configure/SubqueryProject';\nimport { StellarApiService } from '../../stellar';\nimport { StellarApiConnection } from '../../stellar/api.connection';\nimport { DsProcessorService } from '../ds-processor.service';\nimport { DynamicDsService } from '../dynamic-ds.service';\nimport { IndexerManager } from '../indexer.manager';\nimport { ProjectService } from '../project.service';\nimport { SandboxService } from '../sandbox.service';\nimport { UnfinalizedBlocksService } from '../unfinalizedBlocks.service';\nimport { WorkerService } from './worker.service';\nimport { WorkerUnfinalizedBlocksService } from './worker.unfinalizedBlocks.service';\n\n@Module({\n providers: [\n IndexerManager,\n {\n provide: ConnectionPoolStateManager,\n useFactory: () => {\n if (isMainThread) {\n throw new Error('Expected to be worker thread');\n }\n return new WorkerConnectionPoolStateManager((global as any).host);\n },\n },\n ConnectionPoolService,\n {\n provide: ApiService,\n useFactory: async (\n project: SubqueryProject,\n projectUpgradeService: ProjectUpgradeSevice,\n connectionPoolService: ConnectionPoolService<StellarApiConnection>,\n eventEmitter: EventEmitter2,\n ) => {\n const apiService = new StellarApiService(\n project,\n projectUpgradeService,\n connectionPoolService,\n eventEmitter,\n );\n await apiService.init();\n return apiService;\n },\n inject: [\n 'ISubqueryProject',\n 'IProjectUpgradeService',\n ConnectionPoolService,\n EventEmitter2,\n ],\n },\n SandboxService,\n DsProcessorService,\n {\n provide: DynamicDsService,\n useFactory: () => {\n if (isMainThread) {\n throw new Error('Expected to be worker thread');\n }\n return new WorkerDynamicDsService((global as any).host);\n },\n },\n {\n provide: 'IProjectService',\n useClass: ProjectService,\n },\n WorkerService,\n {\n provide: UnfinalizedBlocksService,\n useFactory: () => {\n if (isMainThread) {\n throw new Error('Expected to be worker thread');\n }\n return new WorkerUnfinalizedBlocksService((global as any).host);\n },\n },\n ],\n})\nexport class WorkerFetchModule {}\n"]}
@@ -1,31 +1,7 @@
1
- import { ProcessBlockResponse } from '@subql/node-core';
2
- import { FetchBlockResponse, WorkerStatusResponse } from './worker.service';
3
- declare function initWorker(): Promise<void>;
4
- declare function fetchBlock(height: number): Promise<FetchBlockResponse>;
5
- declare function processBlock(height: number): Promise<ProcessBlockResponse>;
6
- declare function numFetchedBlocks(): Promise<number>;
7
- declare function numFetchingBlocks(): Promise<number>;
8
- declare function getStatus(): Promise<WorkerStatusResponse>;
9
- declare function getMemoryLeft(): Promise<number>;
10
- declare function waitForWorkerBatchSize(heapSizeInBytes: number): Promise<void>;
11
- type InitWorker = typeof initWorker;
12
- type FetchBlock = typeof fetchBlock;
13
- type ProcessBlock = typeof processBlock;
14
- type NumFetchedBlocks = typeof numFetchedBlocks;
15
- type NumFetchingBlocks = typeof numFetchingBlocks;
16
- type GetWorkerStatus = typeof getStatus;
17
- type GetMemoryLeft = typeof getMemoryLeft;
18
- type WaitForWorkerBatchSize = typeof waitForWorkerBatchSize;
19
- export type IIndexerWorker = {
20
- processBlock: ProcessBlock;
21
- fetchBlock: FetchBlock;
22
- numFetchedBlocks: NumFetchedBlocks;
23
- numFetchingBlocks: NumFetchingBlocks;
24
- getStatus: GetWorkerStatus;
25
- getMemoryLeft: GetMemoryLeft;
26
- waitForWorkerBatchSize: WaitForWorkerBatchSize;
27
- };
1
+ import { IBaseIndexerWorker } from '@subql/node-core';
2
+ declare function initWorker(startHeight: number): Promise<void>;
3
+ export type IIndexerWorker = IBaseIndexerWorker;
28
4
  export type IInitIndexerWorker = IIndexerWorker & {
29
- initWorker: InitWorker;
5
+ initWorker: typeof initWorker;
30
6
  };
31
7
  export {};