@subql/node-ethereum 4.2.0 → 4.3.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.
@@ -1,17 +1,11 @@
1
1
  import { SubqlEthereumDataSource } from '@subql/common-ethereum';
2
- import { ISubqueryProject } from '@subql/node-core';
2
+ import { CronFilter, ISubqueryProject } from '@subql/node-core';
3
3
  import { ParentProject, Reader, RunnerSpecs } from '@subql/types-core';
4
4
  import { EthereumNetworkConfig, RuntimeDatasourceTemplate, CustomDatasourceTemplate, EthereumBlockFilter } from '@subql/types-ethereum';
5
- import Cron from 'cron-converter';
6
5
  import { GraphQLSchema } from 'graphql';
7
6
  export type EthereumProjectDs = SubqlEthereumDataSource;
8
7
  export type EthereumProjectDsTemplate = RuntimeDatasourceTemplate | CustomDatasourceTemplate;
9
- export type SubqlProjectBlockFilter = EthereumBlockFilter & {
10
- cronSchedule?: {
11
- schedule: Cron.Seeker;
12
- next: number;
13
- };
14
- };
8
+ export type SubqlProjectBlockFilter = EthereumBlockFilter & CronFilter;
15
9
  type NetworkConfig = EthereumNetworkConfig & {
16
10
  chainId: string;
17
11
  };
@@ -1 +1 @@
1
- {"version":3,"file":"SubqueryProject.js","sourceRoot":"","sources":["../../src/configure/SubqueryProject.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 assert from 'assert';\nimport { Injectable } from '@nestjs/common';\nimport { validateSemver } from '@subql/common';\nimport {\n parseEthereumProjectManifest,\n SubqlEthereumDataSource,\n ProjectManifestV1_0_0Impl,\n isRuntimeDs,\n EthereumHandlerKind,\n isCustomDs,\n} from '@subql/common-ethereum';\nimport {\n insertBlockFiltersCronSchedules,\n ISubqueryProject,\n loadProjectTemplates,\n} from '@subql/node-core';\nimport { ParentProject, Reader, RunnerSpecs } from '@subql/types-core';\nimport {\n EthereumNetworkConfig,\n RuntimeDatasourceTemplate,\n CustomDatasourceTemplate,\n EthereumBlockFilter,\n} from '@subql/types-ethereum';\nimport { buildSchemaFromString } from '@subql/utils';\nimport Cron from 'cron-converter';\nimport { GraphQLSchema } from 'graphql';\nimport { updateDatasourcesFlare } from '../utils/project';\n\nconst { version: packageVersion } = require('../../package.json');\n\nexport type EthereumProjectDs = SubqlEthereumDataSource;\n\nexport type EthereumProjectDsTemplate =\n | RuntimeDatasourceTemplate\n | CustomDatasourceTemplate;\n\nexport type SubqlProjectBlockFilter = EthereumBlockFilter & {\n cronSchedule?: {\n schedule: Cron.Seeker;\n next: number;\n };\n};\n\nconst NOT_SUPPORT = (name: string) => {\n throw new Error(`Manifest specVersion ${name} is not supported`);\n};\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 = EthereumNetworkConfig & { chainId: string };\n\n@Injectable()\nexport class SubqueryProject implements ISubqueryProject {\n #dataSources: EthereumProjectDs[];\n\n constructor(\n readonly id: string,\n readonly root: string,\n readonly network: NetworkConfig,\n dataSources: EthereumProjectDs[],\n readonly schema: GraphQLSchema,\n readonly templates: EthereumProjectDsTemplate[],\n readonly runner?: RunnerSpecs,\n readonly parent?: ParentProject,\n ) {\n this.#dataSources = dataSources;\n }\n\n get dataSources(): EthereumProjectDs[] {\n return this.#dataSources;\n }\n\n async applyCronTimestamps(\n getTimestamp: (height: number) => Promise<Date>,\n ): Promise<void> {\n this.#dataSources = await insertBlockFiltersCronSchedules(\n this.dataSources,\n getTimestamp,\n isRuntimeDs,\n EthereumHandlerKind.Block,\n );\n }\n\n static async create(\n path: string,\n rawManifest: unknown,\n reader: Reader,\n root: string, // If project local then directory otherwise temp directory\n networkOverrides?: Partial<EthereumNetworkConfig>,\n ): Promise<SubqueryProject> {\n // rawManifest and reader can be reused here.\n // It has been pre-fetched and used for rebase manifest runner options with args\n // in order to generate correct configs.\n\n // But we still need reader here, because path can be remote or local\n // and the `loadProjectManifest(projectPath)` only support local mode\n if (rawManifest === undefined) {\n throw new Error(`Get manifest from project path ${path} failed`);\n }\n const manifest = parseEthereumProjectManifest(rawManifest);\n\n if (manifest.isV1_0_0) {\n return loadProjectFromManifestBase(\n manifest.asV1_0_0,\n reader,\n path,\n root,\n networkOverrides,\n );\n } else {\n NOT_SUPPORT(manifest.specVersion);\n }\n }\n}\n\nfunction processChainId(network: any): NetworkConfig {\n if (network.chainId && network.genesisHash) {\n throw new Error('Please only provide one of chainId and genesisHash');\n } else if (network.genesisHash && !network.chainId) {\n network.chainId = network.genesisHash;\n }\n delete network.genesisHash;\n return network;\n}\n\ntype SUPPORT_MANIFEST = ProjectManifestV1_0_0Impl;\n\nasync function loadProjectFromManifestBase(\n projectManifest: SUPPORT_MANIFEST,\n reader: Reader,\n path: string,\n root: string,\n networkOverrides?: Partial<EthereumNetworkConfig>,\n): Promise<SubqueryProject> {\n if (typeof projectManifest.network.endpoint === 'string') {\n projectManifest.network.endpoint = [projectManifest.network.endpoint];\n }\n\n const network = processChainId({\n ...projectManifest.network,\n ...networkOverrides,\n });\n\n if (!network.endpoint) {\n throw new Error(\n `Network endpoint must be provided for network. chainId=\"${network.chainId}\"`,\n );\n }\n\n let schemaString: string;\n try {\n schemaString = await reader.getFile(projectManifest.schema.file);\n } catch (e) {\n throw new Error(\n `unable to fetch the schema from ${projectManifest.schema.file}`,\n );\n }\n const schema = buildSchemaFromString(schemaString);\n\n const dataSources = await updateDatasourcesFlare(\n projectManifest.dataSources,\n reader,\n root,\n );\n\n const templates = await loadProjectTemplates(\n projectManifest.templates,\n root,\n reader,\n isCustomDs,\n );\n const runner = projectManifest.runner;\n assert(\n validateSemver(packageVersion, runner.node.version),\n new Error(\n `Runner require node version ${runner.node.version}, current node ${packageVersion}`,\n ),\n );\n\n return new SubqueryProject(\n reader.root ? reader.root : path, //TODO, need to method to get project_id\n root,\n network,\n dataSources,\n schema,\n templates,\n runner,\n projectManifest.parent,\n );\n}\n"]}
1
+ {"version":3,"file":"SubqueryProject.js","sourceRoot":"","sources":["../../src/configure/SubqueryProject.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 assert from 'assert';\nimport { Injectable } from '@nestjs/common';\nimport { validateSemver } from '@subql/common';\nimport {\n parseEthereumProjectManifest,\n SubqlEthereumDataSource,\n ProjectManifestV1_0_0Impl,\n isRuntimeDs,\n EthereumHandlerKind,\n isCustomDs,\n} from '@subql/common-ethereum';\nimport {\n CronFilter,\n insertBlockFiltersCronSchedules,\n ISubqueryProject,\n loadProjectTemplates,\n} from '@subql/node-core';\nimport { ParentProject, Reader, RunnerSpecs } from '@subql/types-core';\nimport {\n EthereumNetworkConfig,\n RuntimeDatasourceTemplate,\n CustomDatasourceTemplate,\n EthereumBlockFilter,\n} from '@subql/types-ethereum';\nimport { buildSchemaFromString } from '@subql/utils';\nimport { GraphQLSchema } from 'graphql';\nimport { updateDatasourcesFlare } from '../utils/project';\n\nconst { version: packageVersion } = require('../../package.json');\n\nexport type EthereumProjectDs = SubqlEthereumDataSource;\n\nexport type EthereumProjectDsTemplate =\n | RuntimeDatasourceTemplate\n | CustomDatasourceTemplate;\n\nexport type SubqlProjectBlockFilter = EthereumBlockFilter & CronFilter;\n\nconst NOT_SUPPORT = (name: string) => {\n throw new Error(`Manifest specVersion ${name} is not supported`);\n};\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 = EthereumNetworkConfig & { chainId: string };\n\n@Injectable()\nexport class SubqueryProject implements ISubqueryProject {\n #dataSources: EthereumProjectDs[];\n\n constructor(\n readonly id: string,\n readonly root: string,\n readonly network: NetworkConfig,\n dataSources: EthereumProjectDs[],\n readonly schema: GraphQLSchema,\n readonly templates: EthereumProjectDsTemplate[],\n readonly runner?: RunnerSpecs,\n readonly parent?: ParentProject,\n ) {\n this.#dataSources = dataSources;\n }\n\n get dataSources(): EthereumProjectDs[] {\n return this.#dataSources;\n }\n\n async applyCronTimestamps(\n getTimestamp: (height: number) => Promise<Date>,\n ): Promise<void> {\n this.#dataSources = await insertBlockFiltersCronSchedules(\n this.dataSources,\n getTimestamp,\n isRuntimeDs,\n EthereumHandlerKind.Block,\n );\n }\n\n static async create(\n path: string,\n rawManifest: unknown,\n reader: Reader,\n root: string, // If project local then directory otherwise temp directory\n networkOverrides?: Partial<EthereumNetworkConfig>,\n ): Promise<SubqueryProject> {\n // rawManifest and reader can be reused here.\n // It has been pre-fetched and used for rebase manifest runner options with args\n // in order to generate correct configs.\n\n // But we still need reader here, because path can be remote or local\n // and the `loadProjectManifest(projectPath)` only support local mode\n if (rawManifest === undefined) {\n throw new Error(`Get manifest from project path ${path} failed`);\n }\n const manifest = parseEthereumProjectManifest(rawManifest);\n\n if (manifest.isV1_0_0) {\n return loadProjectFromManifestBase(\n manifest.asV1_0_0,\n reader,\n path,\n root,\n networkOverrides,\n );\n } else {\n NOT_SUPPORT(manifest.specVersion);\n }\n }\n}\n\nfunction processChainId(network: any): NetworkConfig {\n if (network.chainId && network.genesisHash) {\n throw new Error('Please only provide one of chainId and genesisHash');\n } else if (network.genesisHash && !network.chainId) {\n network.chainId = network.genesisHash;\n }\n delete network.genesisHash;\n return network;\n}\n\ntype SUPPORT_MANIFEST = ProjectManifestV1_0_0Impl;\n\nasync function loadProjectFromManifestBase(\n projectManifest: SUPPORT_MANIFEST,\n reader: Reader,\n path: string,\n root: string,\n networkOverrides?: Partial<EthereumNetworkConfig>,\n): Promise<SubqueryProject> {\n if (typeof projectManifest.network.endpoint === 'string') {\n projectManifest.network.endpoint = [projectManifest.network.endpoint];\n }\n\n const network = processChainId({\n ...projectManifest.network,\n ...networkOverrides,\n });\n\n if (!network.endpoint) {\n throw new Error(\n `Network endpoint must be provided for network. chainId=\"${network.chainId}\"`,\n );\n }\n\n let schemaString: string;\n try {\n schemaString = await reader.getFile(projectManifest.schema.file);\n } catch (e) {\n throw new Error(\n `unable to fetch the schema from ${projectManifest.schema.file}`,\n );\n }\n const schema = buildSchemaFromString(schemaString);\n\n const dataSources = await updateDatasourcesFlare(\n projectManifest.dataSources,\n reader,\n root,\n );\n\n const templates = await loadProjectTemplates(\n projectManifest.templates,\n root,\n reader,\n isCustomDs,\n );\n const runner = projectManifest.runner;\n assert(\n validateSemver(packageVersion, runner.node.version),\n new Error(\n `Runner require node version ${runner.node.version}, current node ${packageVersion}`,\n ),\n );\n\n return new SubqueryProject(\n reader.root ? reader.root : path, //TODO, need to method to get project_id\n root,\n network,\n dataSources,\n schema,\n templates,\n runner,\n projectManifest.parent,\n );\n}\n"]}
@@ -1,8 +1,6 @@
1
1
  import { EthereumBlock, EthereumTransactionFilter, EthereumLog, EthereumLogFilter, EthereumBlockFilter, EthereumTransaction, LightEthereumLog } from '@subql/types-ethereum';
2
- import { SubqlProjectBlockFilter } from '../configure/SubqueryProject';
3
2
  import { BlockContent } from '../indexer/types';
4
3
  export declare function filterBlocksProcessor(block: EthereumBlock, filter: EthereumBlockFilter, address?: string): boolean;
5
- export declare function filterBlockTimestamp(block: EthereumBlock, filter: SubqlProjectBlockFilter): boolean;
6
4
  export declare function filterTransactionsProcessor(transaction: EthereumTransaction, filter: EthereumTransactionFilter, address?: string): boolean;
7
5
  export declare function filterLogsProcessor(log: EthereumLog | LightEthereumLog, filter: EthereumLogFilter, address?: string): boolean;
8
6
  export declare function isFullBlock(block: BlockContent): block is EthereumBlock;
@@ -2,7 +2,7 @@
2
2
  // Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
3
3
  // SPDX-License-Identifier: GPL-3.0
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.isFullBlock = exports.filterLogsProcessor = exports.filterTransactionsProcessor = exports.filterBlockTimestamp = exports.filterBlocksProcessor = void 0;
5
+ exports.isFullBlock = exports.filterLogsProcessor = exports.filterTransactionsProcessor = exports.filterBlocksProcessor = void 0;
6
6
  const node_core_1 = require("@subql/node-core");
7
7
  const string_1 = require("../utils/string");
8
8
  const logger = (0, node_core_1.getLogger)('block.ethereum');
@@ -10,26 +10,13 @@ function filterBlocksProcessor(block, filter, address) {
10
10
  if ((filter === null || filter === void 0 ? void 0 : filter.modulo) && block.number % filter.modulo !== 0) {
11
11
  return false;
12
12
  }
13
- if (filter === null || filter === void 0 ? void 0 : filter.timestamp) {
14
- return filterBlockTimestamp(block, filter);
13
+ // Multiply to add MS
14
+ if (!(0, node_core_1.filterBlockTimestamp)(Number(block.timestamp) * 1000, filter)) {
15
+ return false;
15
16
  }
16
17
  return true;
17
18
  }
18
19
  exports.filterBlocksProcessor = filterBlocksProcessor;
19
- function filterBlockTimestamp(block, filter) {
20
- const unixTimestamp = Number(block.timestamp) * 1000; // Multiply to add MS
21
- if (unixTimestamp > filter.cronSchedule.next) {
22
- logger.info(`Block with timestamp ${new Date(unixTimestamp).toString()} is about to be indexed`);
23
- logger.info(`Next block will be indexed at ${new Date(filter.cronSchedule.next).toString()}`);
24
- filter.cronSchedule.schedule.prev();
25
- return true;
26
- }
27
- else {
28
- filter.cronSchedule.schedule.prev();
29
- return false;
30
- }
31
- }
32
- exports.filterBlockTimestamp = filterBlockTimestamp;
33
20
  function filterTransactionsProcessor(transaction, filter, address) {
34
21
  if (!filter)
35
22
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"block.ethereum.js","sourceRoot":"","sources":["../../src/ethereum/block.ethereum.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 { getLogger } from '@subql/node-core';\nimport {\n EthereumBlock,\n EthereumTransactionFilter,\n EthereumLog,\n EthereumLogFilter,\n EthereumBlockFilter,\n EthereumTransaction,\n LightEthereumLog,\n} from '@subql/types-ethereum';\nimport { SubqlProjectBlockFilter } from '../configure/SubqueryProject';\nimport { BlockContent } from '../indexer/types';\nimport {\n eventToTopic,\n functionToSighash,\n hexStringEq,\n stringNormalizedEq,\n} from '../utils/string';\n\nconst logger = getLogger('block.ethereum');\n\nexport function filterBlocksProcessor(\n block: EthereumBlock,\n filter: EthereumBlockFilter,\n address?: string,\n): boolean {\n if (filter?.modulo && block.number % filter.modulo !== 0) {\n return false;\n }\n if (filter?.timestamp) {\n return filterBlockTimestamp(block, filter as SubqlProjectBlockFilter);\n }\n return true;\n}\n\nexport function filterBlockTimestamp(\n block: EthereumBlock,\n filter: SubqlProjectBlockFilter,\n): boolean {\n const unixTimestamp = Number(block.timestamp) * 1000; // Multiply to add MS\n if (unixTimestamp > filter.cronSchedule.next) {\n logger.info(\n `Block with timestamp ${new Date(\n unixTimestamp,\n ).toString()} is about to be indexed`,\n );\n logger.info(\n `Next block will be indexed at ${new Date(\n filter.cronSchedule.next,\n ).toString()}`,\n );\n filter.cronSchedule.schedule.prev();\n return true;\n } else {\n filter.cronSchedule.schedule.prev();\n return false;\n }\n}\n\nexport function filterTransactionsProcessor(\n transaction: EthereumTransaction,\n filter: EthereumTransactionFilter,\n address?: string,\n): boolean {\n if (!filter) return true;\n\n if (\n filter.to === null &&\n !(transaction.to === null || transaction.to === undefined)\n ) {\n return false;\n }\n\n if (filter.to && !stringNormalizedEq(filter.to, transaction.to)) {\n return false;\n }\n if (filter.from && !stringNormalizedEq(filter.from, transaction.from)) {\n return false;\n }\n if (\n address &&\n filter.to === undefined &&\n !stringNormalizedEq(address, transaction.to)\n ) {\n return false;\n }\n if (filter.function === null || filter.function === '0x') {\n if (transaction.input !== '0x') {\n return false;\n }\n } else if (\n filter.function !== undefined &&\n transaction.input.indexOf(functionToSighash(filter.function)) !== 0\n ) {\n return false;\n }\n\n return true;\n}\n\nexport function filterLogsProcessor(\n log: EthereumLog | LightEthereumLog,\n filter: EthereumLogFilter,\n address?: string,\n): boolean {\n if (address && !stringNormalizedEq(address, log.address)) {\n return false;\n }\n\n if (!filter) return true;\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\n if (!log.topics[i]) {\n return false;\n }\n\n if (topic === '!null') {\n return true;\n }\n\n if (!hexStringEq(eventToTopic(topic), log.topics[i])) {\n return false;\n }\n }\n }\n return true;\n}\n\nexport function isFullBlock(block: BlockContent): block is EthereumBlock {\n // Light etherum block just contains transaction hashes for transactions.\n // If the block has no transactions then both types would be the same\n\n if (block.transactions.length && block.logs.length) {\n return typeof (block as EthereumBlock).transactions[0] !== 'string';\n }\n return false;\n}\n"]}
1
+ {"version":3,"file":"block.ethereum.js","sourceRoot":"","sources":["../../src/ethereum/block.ethereum.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 { filterBlockTimestamp, getLogger } from '@subql/node-core';\nimport {\n EthereumBlock,\n EthereumTransactionFilter,\n EthereumLog,\n EthereumLogFilter,\n EthereumBlockFilter,\n EthereumTransaction,\n LightEthereumLog,\n} from '@subql/types-ethereum';\nimport { SubqlProjectBlockFilter } from '../configure/SubqueryProject';\nimport { BlockContent } from '../indexer/types';\nimport {\n eventToTopic,\n functionToSighash,\n hexStringEq,\n stringNormalizedEq,\n} from '../utils/string';\n\nconst logger = getLogger('block.ethereum');\n\nexport function filterBlocksProcessor(\n block: EthereumBlock,\n filter: EthereumBlockFilter,\n address?: string,\n): boolean {\n if (filter?.modulo && block.number % filter.modulo !== 0) {\n return false;\n }\n // Multiply to add MS\n if (\n !filterBlockTimestamp(\n Number(block.timestamp) * 1000,\n filter as SubqlProjectBlockFilter,\n )\n ) {\n return false;\n }\n return true;\n}\n\nexport function filterTransactionsProcessor(\n transaction: EthereumTransaction,\n filter: EthereumTransactionFilter,\n address?: string,\n): boolean {\n if (!filter) return true;\n\n if (\n filter.to === null &&\n !(transaction.to === null || transaction.to === undefined)\n ) {\n return false;\n }\n\n if (filter.to && !stringNormalizedEq(filter.to, transaction.to)) {\n return false;\n }\n if (filter.from && !stringNormalizedEq(filter.from, transaction.from)) {\n return false;\n }\n if (\n address &&\n filter.to === undefined &&\n !stringNormalizedEq(address, transaction.to)\n ) {\n return false;\n }\n if (filter.function === null || filter.function === '0x') {\n if (transaction.input !== '0x') {\n return false;\n }\n } else if (\n filter.function !== undefined &&\n transaction.input.indexOf(functionToSighash(filter.function)) !== 0\n ) {\n return false;\n }\n\n return true;\n}\n\nexport function filterLogsProcessor(\n log: EthereumLog | LightEthereumLog,\n filter: EthereumLogFilter,\n address?: string,\n): boolean {\n if (address && !stringNormalizedEq(address, log.address)) {\n return false;\n }\n\n if (!filter) return true;\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\n if (!log.topics[i]) {\n return false;\n }\n\n if (topic === '!null') {\n return true;\n }\n\n if (!hexStringEq(eventToTopic(topic), log.topics[i])) {\n return false;\n }\n }\n }\n return true;\n}\n\nexport function isFullBlock(block: BlockContent): block is EthereumBlock {\n // Light etherum block just contains transaction hashes for transactions.\n // If the block has no transactions then both types would be the same\n\n if (block.transactions.length && block.logs.length) {\n return typeof (block as EthereumBlock).transactions[0] !== 'string';\n }\n return false;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@subql/node-ethereum",
3
- "version": "4.2.0",
3
+ "version": "4.3.0",
4
4
  "description": "",
5
5
  "author": "Ian He",
6
6
  "license": "GPL-3.0",
@@ -19,7 +19,6 @@
19
19
  "subql-node-ethereum": "./bin/run"
20
20
  },
21
21
  "dependencies": {
22
- "@apollo/client": "3.5.8",
23
22
  "@nestjs/common": "^9.4.0",
24
23
  "@nestjs/core": "^9.4.0",
25
24
  "@nestjs/event-emitter": "^2.0.0",
@@ -27,21 +26,16 @@
27
26
  "@nestjs/schedule": "^3.0.1",
28
27
  "@subql/common": "^3.5.1",
29
28
  "@subql/common-ethereum": "3.6.0",
30
- "@subql/node-core": "^10.0.0",
29
+ "@subql/node-core": "^10.1.0",
31
30
  "@subql/testing": "^2.1.1",
32
31
  "@subql/types-ethereum": "3.6.0",
33
32
  "cacheable-lookup": "6",
34
- "cron-converter": "^1.0.2",
35
33
  "ethers": "^5.7.0",
36
34
  "eventemitter2": "^6.4.5",
37
35
  "json5": "^2.2.3",
38
36
  "lodash": "^4.17.21",
39
- "pg": "^8.7.1",
40
37
  "reflect-metadata": "^0.1.13",
41
38
  "rimraf": "^3.0.2",
42
- "rxjs": "^7.5.2",
43
- "web3-providers-http": "^1.8.0",
44
- "web3-providers-ws": "^1.8.0",
45
39
  "yargs": "^16.2.0"
46
40
  },
47
41
  "peerDependencies": {