diff --git a/README.md b/README.md index cd832b944..a3f9db44a 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,8 @@ This repository is a Yarn workspaces monorepo containing the following packages: | Package | Latest version | Description | | --- | --- | --- | | [contracts](./packages/contracts) | [![npm version](https://badge.fury.io/js/@graphprotocol%2Fcontracts.svg)](https://badge.fury.io/js/@graphprotocol%2Fcontracts) | Contracts enabling the open and permissionless decentralized network known as The Graph protocol. | +| [eslint-graph-config](./packages/eslint-graph-config) | [![npm version]()]() | Shared linting and formatting rules for TypeScript projects. | +| [subgraph-service](./packages/subgraph-service) | [![npm version]()]() | Contracts for the Subgraph data service in Graph Horizon. | | [sdk](./packages/sdk) | [![npm version](https://badge.fury.io/js/@graphprotocol%2Fsdk.svg)](https://badge.fury.io/js/@graphprotocol%2Fsdk) | TypeScript based SDK to interact with the protocol contracts | diff --git a/package.json b/package.json index 20be36736..e0f3e9fc7 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "packageManager": "yarn@4.0.2", "workspaces": [ "packages/contracts", + "packages/eslint-graph-config", "packages/subgraph-service", "packages/sdk" ], diff --git a/packages/eslint-graph-config/README.md b/packages/eslint-graph-config/README.md new file mode 100644 index 000000000..617f7ba94 --- /dev/null +++ b/packages/eslint-graph-config/README.md @@ -0,0 +1,48 @@ +# eslint-graph-config + +This repository contains shared linting and formatting rules for TypeScript projects. + +## Installation + +```bash +yarn add --dev eslint eslint-graph-config +``` + +For projects on this monorepo, you can use the following command to install the package: + +```bash +yarn add --dev eslint eslint-graph-config@workspace:^x.y.z +``` + +To enable the rules, you need to create an `eslint.config.js` file in the root of your project with the following content: + +```javascript +import eslintGraphConfig from 'eslint-graph-config' +export default eslintGraphConfig +``` + +## Tooling + +This package uses the following tools: +- [ESLint](https://eslint.org/) as the base linting tool +- [typescript-eslint](https://typescript-eslint.io/) for TypeScript support +- [ESLint Stylistic](https://eslint.style/) as the formatting tool + +**Why no prettier?** +Instead of prettier we use ESLint Stylistic which is a set of ESLint rules focused on formatting and styling code. As opposed to prettier, ESLint Stylistic runs entirely within ESLint and does not require a separate tool to be run (e.g. `prettier`, `eslint-plugin-prettier` and `eslint-config-prettier`). Additionally it's supposed to be [more efficient](https://eslint.style/guide/why#linters-vs-formatters) and [less opinionated](https://antfu.me/posts/why-not-prettier). + +## VSCode support + +If you are using VSCode you can install the [ESLint extension](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) to get real-time linting and formatting support. + +The following settings should be added to your `settings.json` file: +```json +{ + "editor.defaultFormatter": "dbaeumer.vscode-eslint", + "eslint.format.enable": true, + "eslint.experimental.useFlatConfig": true, + "eslint.workingDirectories": [{ "pattern": "./packages/*/" }] +} +``` + +Additionally you can configure the `Format document` keyboard shortcut to run `eslint --fix` on demand. \ No newline at end of file diff --git a/packages/eslint-graph-config/eslint.config.js b/packages/eslint-graph-config/eslint.config.js new file mode 100644 index 000000000..8354c3bca --- /dev/null +++ b/packages/eslint-graph-config/eslint.config.js @@ -0,0 +1,3 @@ +// This file only exists to enable linting on index.js +import config from './index.js' +export default config diff --git a/packages/eslint-graph-config/index.js b/packages/eslint-graph-config/index.js new file mode 100644 index 000000000..6daa18e72 --- /dev/null +++ b/packages/eslint-graph-config/index.js @@ -0,0 +1,53 @@ +// @ts-check + +/* eslint-disable @typescript-eslint/no-unsafe-assignment */ +/* eslint-disable @typescript-eslint/no-unsafe-member-access */ +/* eslint-disable @typescript-eslint/no-unsafe-argument */ + +import eslint from '@eslint/js' +import noOnlyTests from 'eslint-plugin-no-only-tests' +import noSecrets from 'eslint-plugin-no-secrets' +import stylistic from '@stylistic/eslint-plugin' +import tseslint from 'typescript-eslint' + +export default tseslint.config( + // Base eslint configuration + // @ts-expect-error tseslint doesn't recognize eslint types for some reason + eslint.configs.recommended, + + // Enable linting with type information + // https://typescript-eslint.io/getting-started/typed-linting + ...tseslint.configs.recommendedTypeChecked, + { + languageOptions: { + parserOptions: { + project: true, + tsconfigRootDir: import.meta.dirname, + }, + }, + }, + + // Formatting and stylistic rules + stylistic.configs['recommended-flat'], + + // Custom rules + { + plugins: { + 'no-only-tests': noOnlyTests, + 'no-secrets': noSecrets, + }, + rules: { + 'prefer-const': 'warn', + '@typescript-eslint/no-inferrable-types': 'warn', + '@typescript-eslint/no-empty-function': 'warn', + 'no-only-tests/no-only-tests': 'error', + 'no-secrets/no-secrets': 'error', + 'sort-imports': [ + 'warn', { + memberSyntaxSortOrder: ['none', 'all', 'multiple', 'single'], + ignoreCase: true, + allowSeparatedGroups: true, + }], + }, + }, +) diff --git a/packages/eslint-graph-config/package.json b/packages/eslint-graph-config/package.json new file mode 100644 index 000000000..d2bf4c8b5 --- /dev/null +++ b/packages/eslint-graph-config/package.json @@ -0,0 +1,17 @@ +{ + "name": "eslint-graph-config", + "version": "0.0.1", + "description": "Linting and formatting rules for The Graph's TypeScript projects", + "main": "index.js", + "type": "module", + "author": "The Graph Team", + "license": "GPL-2.0-or-later", + "devDependencies": { + "@stylistic/eslint-plugin": "^1.6.2", + "eslint": "^8.56.0", + "eslint-plugin-no-only-tests": "^3.1.0", + "eslint-plugin-no-secrets": "^0.8.9", + "typescript": "^5.3.3", + "typescript-eslint": "^7.0.2" + } +} diff --git a/packages/eslint-graph-config/tsconfig.json b/packages/eslint-graph-config/tsconfig.json new file mode 100644 index 000000000..574e785c7 --- /dev/null +++ b/packages/eslint-graph-config/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "target": "es2020", + "module": "commonjs", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true, + "resolveJsonModule": true + } +} diff --git a/yarn.lock b/yarn.lock index e11d86d0e..ce89b9c43 100644 --- a/yarn.lock +++ b/yarn.lock @@ -736,6 +736,23 @@ __metadata: languageName: node linkType: hard +"@eslint/eslintrc@npm:^2.1.4": + version: 2.1.4 + resolution: "@eslint/eslintrc@npm:2.1.4" + dependencies: + ajv: "npm:^6.12.4" + debug: "npm:^4.3.2" + espree: "npm:^9.6.0" + globals: "npm:^13.19.0" + ignore: "npm:^5.2.0" + import-fresh: "npm:^3.2.1" + js-yaml: "npm:^4.1.0" + minimatch: "npm:^3.1.2" + strip-json-comments: "npm:^3.1.1" + checksum: 32f67052b81768ae876c84569ffd562491ec5a5091b0c1e1ca1e0f3c24fb42f804952fdd0a137873bc64303ba368a71ba079a6f691cee25beee9722d94cc8573 + languageName: node + linkType: hard + "@eslint/js@npm:8.54.0": version: 8.54.0 resolution: "@eslint/js@npm:8.54.0" @@ -743,6 +760,13 @@ __metadata: languageName: node linkType: hard +"@eslint/js@npm:8.56.0": + version: 8.56.0 + resolution: "@eslint/js@npm:8.56.0" + checksum: 60b3a1cf240e2479cec9742424224465dc50e46d781da1b7f5ef240501b2d1202c225bd456207faac4b34a64f4765833345bc4ddffd00395e1db40fa8c426f5a + languageName: node + linkType: hard + "@ethereum-waffle/chai@npm:^3.4.4": version: 3.4.4 resolution: "@ethereum-waffle/chai@npm:3.4.4" @@ -3474,6 +3498,75 @@ __metadata: languageName: node linkType: hard +"@stylistic/eslint-plugin-js@npm:1.6.2, @stylistic/eslint-plugin-js@npm:^1.6.2": + version: 1.6.2 + resolution: "@stylistic/eslint-plugin-js@npm:1.6.2" + dependencies: + "@types/eslint": "npm:^8.56.2" + acorn: "npm:^8.11.3" + escape-string-regexp: "npm:^4.0.0" + eslint-visitor-keys: "npm:^3.4.3" + espree: "npm:^9.6.1" + peerDependencies: + eslint: ">=8.40.0" + checksum: b74b08802cb888b64b2432e2fa7723c664d1b6a3ee5ad48f8caeef83eebcfcf291f92f967b65e79854d19a660e9428567247de402eeb9e59d9320f71c8c3881e + languageName: node + linkType: hard + +"@stylistic/eslint-plugin-jsx@npm:1.6.2": + version: 1.6.2 + resolution: "@stylistic/eslint-plugin-jsx@npm:1.6.2" + dependencies: + "@stylistic/eslint-plugin-js": "npm:^1.6.2" + "@types/eslint": "npm:^8.56.2" + estraverse: "npm:^5.3.0" + picomatch: "npm:^4.0.1" + peerDependencies: + eslint: ">=8.40.0" + checksum: 882daa8ac9e3d7db5009dd6a9b4c406edab0ced233d3d49e6a9a0acb94ed68d8e5ec9a705c8925c7adc103ef9c057f33b74c32c7087f40a61c5b85f31f530fcc + languageName: node + linkType: hard + +"@stylistic/eslint-plugin-plus@npm:1.6.2": + version: 1.6.2 + resolution: "@stylistic/eslint-plugin-plus@npm:1.6.2" + dependencies: + "@types/eslint": "npm:^8.56.2" + "@typescript-eslint/utils": "npm:^6.21.0" + peerDependencies: + eslint: "*" + checksum: 426e68c7edcb96d48f8ccb22c07fb5b7b26d85210494cfbafb6331d67496946ae3af841933059c31594d5f7c8b4e867de2345418d64a1885b102988d7679fae1 + languageName: node + linkType: hard + +"@stylistic/eslint-plugin-ts@npm:1.6.2": + version: 1.6.2 + resolution: "@stylistic/eslint-plugin-ts@npm:1.6.2" + dependencies: + "@stylistic/eslint-plugin-js": "npm:1.6.2" + "@types/eslint": "npm:^8.56.2" + "@typescript-eslint/utils": "npm:^6.21.0" + peerDependencies: + eslint: ">=8.40.0" + checksum: 15e19abfce7ac77843d1331ee5cab74b405bdb5fb890acb071f6a7c21dc81b338d6482f227aa0af0b32faa61de25166b3a3253cec1df867f99ca105155e001cc + languageName: node + linkType: hard + +"@stylistic/eslint-plugin@npm:^1.6.2": + version: 1.6.2 + resolution: "@stylistic/eslint-plugin@npm:1.6.2" + dependencies: + "@stylistic/eslint-plugin-js": "npm:1.6.2" + "@stylistic/eslint-plugin-jsx": "npm:1.6.2" + "@stylistic/eslint-plugin-plus": "npm:1.6.2" + "@stylistic/eslint-plugin-ts": "npm:1.6.2" + "@types/eslint": "npm:^8.56.2" + peerDependencies: + eslint: ">=8.40.0" + checksum: 353c852e1ace9b80bfe18a31b977723d79081397a12ebd14f34f2f5c2eeebc71a38ea17b65b9e3e3d8fcf09c14807822bf9123551e8df1785a3d1d1a6ee39c51 + languageName: node + linkType: hard + "@szmarczak/http-timer@npm:^1.1.2": version: 1.1.2 resolution: "@szmarczak/http-timer@npm:1.1.2" @@ -3734,6 +3827,23 @@ __metadata: languageName: node linkType: hard +"@types/eslint@npm:^8.56.2": + version: 8.56.2 + resolution: "@types/eslint@npm:8.56.2" + dependencies: + "@types/estree": "npm:*" + "@types/json-schema": "npm:*" + checksum: e33ca87a30a9454ba9943e1270ac759996f5fe598a1c1afbaec1d1e7346a339e20bf2a9d81f177067116bbaa6cfa4f748993cb338f57978ae862ad38ffae56fe + languageName: node + linkType: hard + +"@types/estree@npm:*": + version: 1.0.5 + resolution: "@types/estree@npm:1.0.5" + checksum: b3b0e334288ddb407c7b3357ca67dbee75ee22db242ca7c56fe27db4e1a31989cb8af48a84dd401deb787fe10cc6b2ab1ee82dc4783be87ededbe3d53c79c70d + languageName: node + linkType: hard + "@types/events@npm:*": version: 3.0.3 resolution: "@types/events@npm:3.0.3" @@ -3787,7 +3897,7 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.7": +"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.7": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" checksum: a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db @@ -4107,6 +4217,31 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/eslint-plugin@npm:7.0.2": + version: 7.0.2 + resolution: "@typescript-eslint/eslint-plugin@npm:7.0.2" + dependencies: + "@eslint-community/regexpp": "npm:^4.5.1" + "@typescript-eslint/scope-manager": "npm:7.0.2" + "@typescript-eslint/type-utils": "npm:7.0.2" + "@typescript-eslint/utils": "npm:7.0.2" + "@typescript-eslint/visitor-keys": "npm:7.0.2" + debug: "npm:^4.3.4" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.2.4" + natural-compare: "npm:^1.4.0" + semver: "npm:^7.5.4" + ts-api-utils: "npm:^1.0.1" + peerDependencies: + "@typescript-eslint/parser": ^7.0.0 + eslint: ^8.56.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 76727ad48f01c1bb4ef37690e7ed12754930ce3a4bbe5dcd52f24d42f4625fc0b151db8189947f3956b4a09a562eb2da683ff65b57a13a15426eee3b680f80a5 + languageName: node + linkType: hard + "@typescript-eslint/eslint-plugin@npm:^4.0.0": version: 4.33.0 resolution: "@typescript-eslint/eslint-plugin@npm:4.33.0" @@ -4170,6 +4305,24 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/parser@npm:7.0.2": + version: 7.0.2 + resolution: "@typescript-eslint/parser@npm:7.0.2" + dependencies: + "@typescript-eslint/scope-manager": "npm:7.0.2" + "@typescript-eslint/types": "npm:7.0.2" + "@typescript-eslint/typescript-estree": "npm:7.0.2" + "@typescript-eslint/visitor-keys": "npm:7.0.2" + debug: "npm:^4.3.4" + peerDependencies: + eslint: ^8.56.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: acffdbea0bba24398ba8bd1ccf5b59438bc093e41d7a325019383094f39d676b5cf2f5963bfa5e332e54728e5b9e14be3984752ee91da6f0e1a3e0b613422d0e + languageName: node + linkType: hard + "@typescript-eslint/parser@npm:^4.0.0": version: 4.33.0 resolution: "@typescript-eslint/parser@npm:4.33.0" @@ -4225,6 +4378,26 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/scope-manager@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/scope-manager@npm:6.21.0" + dependencies: + "@typescript-eslint/types": "npm:6.21.0" + "@typescript-eslint/visitor-keys": "npm:6.21.0" + checksum: eaf868938d811cbbea33e97e44ba7050d2b6892202cea6a9622c486b85ab1cf801979edf78036179a8ba4ac26f1dfdf7fcc83a68c1ff66be0b3a8e9a9989b526 + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:7.0.2": + version: 7.0.2 + resolution: "@typescript-eslint/scope-manager@npm:7.0.2" + dependencies: + "@typescript-eslint/types": "npm:7.0.2" + "@typescript-eslint/visitor-keys": "npm:7.0.2" + checksum: 60241a0dbed7605133b6242d7fc172e8ee649e1033b8a179cebe3e21c60e0c08c12679fd37644cfef57c95a5d75a3927afc9d6365a5f9684c1d043285db23c66 + languageName: node + linkType: hard + "@typescript-eslint/type-utils@npm:6.13.1": version: 6.13.1 resolution: "@typescript-eslint/type-utils@npm:6.13.1" @@ -4242,6 +4415,23 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/type-utils@npm:7.0.2": + version: 7.0.2 + resolution: "@typescript-eslint/type-utils@npm:7.0.2" + dependencies: + "@typescript-eslint/typescript-estree": "npm:7.0.2" + "@typescript-eslint/utils": "npm:7.0.2" + debug: "npm:^4.3.4" + ts-api-utils: "npm:^1.0.1" + peerDependencies: + eslint: ^8.56.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: fa7957aa65cb0d7366c7c9be94e45cc2f1ebe9981cbf393054b505c6d555a01b2a2fe7cd1254d668f30183a275032f909186ce0b9f213f64b776bd7872144a6e + languageName: node + linkType: hard + "@typescript-eslint/types@npm:4.33.0": version: 4.33.0 resolution: "@typescript-eslint/types@npm:4.33.0" @@ -4256,6 +4446,20 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/types@npm:6.21.0" + checksum: 020631d3223bbcff8a0da3efbdf058220a8f48a3de221563996ad1dcc30d6c08dadc3f7608cc08830d21c0d565efd2db19b557b9528921c78aabb605eef2d74d + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:7.0.2": + version: 7.0.2 + resolution: "@typescript-eslint/types@npm:7.0.2" + checksum: 5f95266cc2cd0e6cf1239dcd36b53c7d98b01ba12c61947316f0d879df87b912b4d23f0796324e2ab0fb8780503a338da41a4695fa91d90392b6c6aca5239fa7 + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:4.33.0": version: 4.33.0 resolution: "@typescript-eslint/typescript-estree@npm:4.33.0" @@ -4292,6 +4496,44 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/typescript-estree@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/typescript-estree@npm:6.21.0" + dependencies: + "@typescript-eslint/types": "npm:6.21.0" + "@typescript-eslint/visitor-keys": "npm:6.21.0" + debug: "npm:^4.3.4" + globby: "npm:^11.1.0" + is-glob: "npm:^4.0.3" + minimatch: "npm:9.0.3" + semver: "npm:^7.5.4" + ts-api-utils: "npm:^1.0.1" + peerDependenciesMeta: + typescript: + optional: true + checksum: af1438c60f080045ebb330155a8c9bb90db345d5069cdd5d01b67de502abb7449d6c75500519df829f913a6b3f490ade3e8215279b6bdc63d0fb0ae61034df5f + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:7.0.2": + version: 7.0.2 + resolution: "@typescript-eslint/typescript-estree@npm:7.0.2" + dependencies: + "@typescript-eslint/types": "npm:7.0.2" + "@typescript-eslint/visitor-keys": "npm:7.0.2" + debug: "npm:^4.3.4" + globby: "npm:^11.1.0" + is-glob: "npm:^4.0.3" + minimatch: "npm:9.0.3" + semver: "npm:^7.5.4" + ts-api-utils: "npm:^1.0.1" + peerDependenciesMeta: + typescript: + optional: true + checksum: 2f6795b05fced9f2e0887f6735aa1a0b20516952792e4be13cd94c5e56db8ad013ba27aeb56f89fedff8b7af587f854482f00aac75b418611c74e42169c29aeb + languageName: node + linkType: hard + "@typescript-eslint/utils@npm:6.13.1": version: 6.13.1 resolution: "@typescript-eslint/utils@npm:6.13.1" @@ -4309,6 +4551,40 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/utils@npm:7.0.2": + version: 7.0.2 + resolution: "@typescript-eslint/utils@npm:7.0.2" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.4.0" + "@types/json-schema": "npm:^7.0.12" + "@types/semver": "npm:^7.5.0" + "@typescript-eslint/scope-manager": "npm:7.0.2" + "@typescript-eslint/types": "npm:7.0.2" + "@typescript-eslint/typescript-estree": "npm:7.0.2" + semver: "npm:^7.5.4" + peerDependencies: + eslint: ^8.56.0 + checksum: b4ae9a36393c92b332e99d70219d1ee056271261f7433924db804e5f06d97ca60408b9c7a655afce8a851982e7153243a625d6cc76fea764f767f96c8f3e16da + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:^6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/utils@npm:6.21.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.4.0" + "@types/json-schema": "npm:^7.0.12" + "@types/semver": "npm:^7.5.0" + "@typescript-eslint/scope-manager": "npm:6.21.0" + "@typescript-eslint/types": "npm:6.21.0" + "@typescript-eslint/typescript-estree": "npm:6.21.0" + semver: "npm:^7.5.4" + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + checksum: ab2df3833b2582d4e5467a484d08942b4f2f7208f8e09d67de510008eb8001a9b7460f2f9ba11c12086fd3cdcac0c626761c7995c2c6b5657d5fa6b82030a32d + languageName: node + linkType: hard + "@typescript-eslint/visitor-keys@npm:4.33.0": version: 4.33.0 resolution: "@typescript-eslint/visitor-keys@npm:4.33.0" @@ -4329,6 +4605,26 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/visitor-keys@npm:6.21.0" + dependencies: + "@typescript-eslint/types": "npm:6.21.0" + eslint-visitor-keys: "npm:^3.4.1" + checksum: 7395f69739cfa1cb83c1fb2fad30afa2a814756367302fb4facd5893eff66abc807e8d8f63eba94ed3b0fe0c1c996ac9a1680bcbf0f83717acedc3f2bb724fbf + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:7.0.2": + version: 7.0.2 + resolution: "@typescript-eslint/visitor-keys@npm:7.0.2" + dependencies: + "@typescript-eslint/types": "npm:7.0.2" + eslint-visitor-keys: "npm:^3.4.1" + checksum: 4146d1ad6ce9374e6b5a75677fc709816bdc5fe324b1a857405f21dad23bb28c79cfd0555bc2a01c4af1d9e9ee81ff5e29ec41cc9d05b0b1101cc4264e7f21d1 + languageName: node + linkType: hard + "@ungap/structured-clone@npm:^1.2.0": version: 1.2.0 resolution: "@ungap/structured-clone@npm:1.2.0" @@ -4531,6 +4827,15 @@ __metadata: languageName: node linkType: hard +"acorn@npm:^8.11.3": + version: 8.11.3 + resolution: "acorn@npm:8.11.3" + bin: + acorn: bin/acorn + checksum: 3ff155f8812e4a746fee8ecff1f227d527c4c45655bb1fad6347c3cb58e46190598217551b1500f18542d2bbe5c87120cb6927f5a074a59166fbdd9468f0a299 + languageName: node + linkType: hard + "acorn@npm:^8.4.1, acorn@npm:^8.9.0": version: 8.11.2 resolution: "acorn@npm:8.11.2" @@ -8459,6 +8764,19 @@ __metadata: languageName: node linkType: hard +"eslint-graph-config@workspace:^0.0.1, eslint-graph-config@workspace:packages/eslint-graph-config": + version: 0.0.0-use.local + resolution: "eslint-graph-config@workspace:packages/eslint-graph-config" + dependencies: + "@stylistic/eslint-plugin": "npm:^1.6.2" + eslint: "npm:^8.56.0" + eslint-plugin-no-only-tests: "npm:^3.1.0" + eslint-plugin-no-secrets: "npm:^0.8.9" + typescript: "npm:^5.3.3" + typescript-eslint: "npm:^7.0.2" + languageName: unknown + linkType: soft + "eslint-plugin-no-only-tests@npm:^2.4.0": version: 2.6.0 resolution: "eslint-plugin-no-only-tests@npm:2.6.0" @@ -8473,6 +8791,15 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-no-secrets@npm:^0.8.9": + version: 0.8.9 + resolution: "eslint-plugin-no-secrets@npm:0.8.9" + peerDependencies: + eslint: ">=3.0.0" + checksum: d1b630bf87873b6d5ad009aed889ce3972815b2e8d62b3fdbc2cc21d03b759b9548f4655f52afb6e3014228f75840d59b4426758986e76b7dba245adbf560bda + languageName: node + linkType: hard + "eslint-plugin-prettier@npm:^3.4.0": version: 3.4.1 resolution: "eslint-plugin-prettier@npm:3.4.1" @@ -8666,6 +8993,54 @@ __metadata: languageName: node linkType: hard +"eslint@npm:^8.56.0": + version: 8.56.0 + resolution: "eslint@npm:8.56.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.2.0" + "@eslint-community/regexpp": "npm:^4.6.1" + "@eslint/eslintrc": "npm:^2.1.4" + "@eslint/js": "npm:8.56.0" + "@humanwhocodes/config-array": "npm:^0.11.13" + "@humanwhocodes/module-importer": "npm:^1.0.1" + "@nodelib/fs.walk": "npm:^1.2.8" + "@ungap/structured-clone": "npm:^1.2.0" + ajv: "npm:^6.12.4" + chalk: "npm:^4.0.0" + cross-spawn: "npm:^7.0.2" + debug: "npm:^4.3.2" + doctrine: "npm:^3.0.0" + escape-string-regexp: "npm:^4.0.0" + eslint-scope: "npm:^7.2.2" + eslint-visitor-keys: "npm:^3.4.3" + espree: "npm:^9.6.1" + esquery: "npm:^1.4.2" + esutils: "npm:^2.0.2" + fast-deep-equal: "npm:^3.1.3" + file-entry-cache: "npm:^6.0.1" + find-up: "npm:^5.0.0" + glob-parent: "npm:^6.0.2" + globals: "npm:^13.19.0" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.2.0" + imurmurhash: "npm:^0.1.4" + is-glob: "npm:^4.0.0" + is-path-inside: "npm:^3.0.3" + js-yaml: "npm:^4.1.0" + json-stable-stringify-without-jsonify: "npm:^1.0.1" + levn: "npm:^0.4.1" + lodash.merge: "npm:^4.6.2" + minimatch: "npm:^3.1.2" + natural-compare: "npm:^1.4.0" + optionator: "npm:^0.9.3" + strip-ansi: "npm:^6.0.1" + text-table: "npm:^0.2.0" + bin: + eslint: bin/eslint.js + checksum: 2be598f7da1339d045ad933ffd3d4742bee610515cd2b0d9a2b8b729395a01d4e913552fff555b559fccaefd89d7b37632825789d1b06470608737ae69ab43fb + languageName: node + linkType: hard + "espree@npm:^7.3.0, espree@npm:^7.3.1": version: 7.3.1 resolution: "espree@npm:7.3.1" @@ -8740,7 +9115,7 @@ __metadata: languageName: node linkType: hard -"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": +"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0": version: 5.3.0 resolution: "estraverse@npm:5.3.0" checksum: 1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 @@ -11343,31 +11718,6 @@ __metadata: languageName: node linkType: hard -"horizon@workspace:packages/horizon": - version: 0.0.0-use.local - resolution: "horizon@workspace:packages/horizon" - dependencies: - "@nomicfoundation/hardhat-chai-matchers": "npm:^2.0.0" - "@nomicfoundation/hardhat-ethers": "npm:^3.0.0" - "@nomicfoundation/hardhat-network-helpers": "npm:^1.0.0" - "@nomicfoundation/hardhat-toolbox": "npm:^4.0.0" - "@nomicfoundation/hardhat-verify": "npm:^2.0.0" - "@typechain/ethers-v6": "npm:^0.5.0" - "@typechain/hardhat": "npm:^9.0.0" - "@types/chai": "npm:^4.2.0" - "@types/mocha": "npm:>=9.1.0" - "@types/node": "npm:>=16.0.0" - chai: "npm:^4.2.0" - ethers: "npm:^6.4.0" - hardhat: "npm:^2.20.1" - hardhat-gas-reporter: "npm:^1.0.8" - solidity-coverage: "npm:^0.8.0" - ts-node: "npm:>=8.0.0" - typechain: "npm:^8.3.0" - typescript: "npm:>=4.5.0" - languageName: unknown - linkType: soft - "hosted-git-info@npm:^2.1.4, hosted-git-info@npm:^2.6.0": version: 2.8.9 resolution: "hosted-git-info@npm:2.8.9" @@ -13990,7 +14340,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:*, minimatch@npm:^9.0.1": +"minimatch@npm:*, minimatch@npm:9.0.3, minimatch@npm:^9.0.1": version: 9.0.3 resolution: "minimatch@npm:9.0.3" dependencies: @@ -15641,6 +15991,13 @@ __metadata: languageName: node linkType: hard +"picomatch@npm:^4.0.1": + version: 4.0.1 + resolution: "picomatch@npm:4.0.1" + checksum: a036a085b18b376493e8ccef155bb03c65a2be7203582b717bb0498d1446e6a80f7f86a36e07877590abd0431f26c64c6154058c31f4f46105d3686a34fa3cf6 + languageName: node + linkType: hard + "pify@npm:^2.0.0, pify@npm:^2.3.0": version: 2.3.0 resolution: "pify@npm:2.3.0" @@ -18366,6 +18723,33 @@ __metadata: languageName: node linkType: hard +"subgraph-service@workspace:packages/subgraph-service": + version: 0.0.0-use.local + resolution: "subgraph-service@workspace:packages/subgraph-service" + dependencies: + "@nomicfoundation/hardhat-chai-matchers": "npm:^2.0.0" + "@nomicfoundation/hardhat-ethers": "npm:^3.0.0" + "@nomicfoundation/hardhat-network-helpers": "npm:^1.0.0" + "@nomicfoundation/hardhat-toolbox": "npm:^4.0.0" + "@nomicfoundation/hardhat-verify": "npm:^2.0.0" + "@typechain/ethers-v6": "npm:^0.5.0" + "@typechain/hardhat": "npm:^9.0.0" + "@types/chai": "npm:^4.2.0" + "@types/mocha": "npm:>=9.1.0" + "@types/node": "npm:>=16.0.0" + chai: "npm:^4.2.0" + eslint: "npm:^8.56.0" + eslint-graph-config: "workspace:^0.0.1" + ethers: "npm:^6.4.0" + hardhat: "npm:^2.20.1" + hardhat-gas-reporter: "npm:^1.0.8" + solidity-coverage: "npm:^0.8.0" + ts-node: "npm:>=8.0.0" + typechain: "npm:^8.3.0" + typescript: "npm:^5.3.3" + languageName: unknown + linkType: soft + "supports-color@npm:8.1.1": version: 8.1.1 resolution: "supports-color@npm:8.1.1" @@ -19261,13 +19645,18 @@ __metadata: languageName: node linkType: hard -"typescript@npm:>=4.5.0": - version: 5.3.3 - resolution: "typescript@npm:5.3.3" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: e33cef99d82573624fc0f854a2980322714986bc35b9cb4d1ce736ed182aeab78e2cb32b385efa493b2a976ef52c53e20d6c6918312353a91850e2b76f1ea44f +"typescript-eslint@npm:^7.0.2": + version: 7.0.2 + resolution: "typescript-eslint@npm:7.0.2" + dependencies: + "@typescript-eslint/eslint-plugin": "npm:7.0.2" + "@typescript-eslint/parser": "npm:7.0.2" + peerDependencies: + eslint: ^8.56.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 947216bccdb392c1e5f1228772185afbe306db305f1f61343d3cb315aa6c80a928709172498af62536b50c1e7c91e263eed7886bb4b328ca8850ffb1ea71a3d9 languageName: node linkType: hard @@ -19291,13 +19680,13 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@npm%3A>=4.5.0#optional!builtin": +"typescript@npm:^5.3.3": version: 5.3.3 - resolution: "typescript@patch:typescript@npm%3A5.3.3#optional!builtin::version=5.3.3&hash=e012d7" + resolution: "typescript@npm:5.3.3" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 1d0a5f4ce496c42caa9a30e659c467c5686eae15d54b027ee7866744952547f1be1262f2d40de911618c242b510029d51d43ff605dba8fb740ec85ca2d3f9500 + checksum: e33cef99d82573624fc0f854a2980322714986bc35b9cb4d1ce736ed182aeab78e2cb32b385efa493b2a976ef52c53e20d6c6918312353a91850e2b76f1ea44f languageName: node linkType: hard @@ -19321,6 +19710,16 @@ __metadata: languageName: node linkType: hard +"typescript@patch:typescript@npm%3A^5.3.3#optional!builtin": + version: 5.3.3 + resolution: "typescript@patch:typescript@npm%3A5.3.3#optional!builtin::version=5.3.3&hash=e012d7" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 1d0a5f4ce496c42caa9a30e659c467c5686eae15d54b027ee7866744952547f1be1262f2d40de911618c242b510029d51d43ff605dba8fb740ec85ca2d3f9500 + languageName: node + linkType: hard + "typewise-core@npm:^1.2, typewise-core@npm:^1.2.0": version: 1.2.0 resolution: "typewise-core@npm:1.2.0"