diff --git a/eslint.config.mjs b/eslint.config.mjs index dc4277ca78..54599b64ad 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -5,6 +5,7 @@ import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended' import jestPlugin from 'eslint-plugin-jest'; import reactPlugin from 'eslint-plugin-react'; import globals from 'globals'; +import jupyterPlugin from '@jupyter/eslint-plugin'; export default defineConfig([ { @@ -47,6 +48,7 @@ export default defineConfig([ plugins: { jest: jestPlugin, react: reactPlugin, + jupyter: jupyterPlugin, }, languageOptions: { globals: { @@ -61,6 +63,9 @@ export default defineConfig([ }, }, rules: { + 'jupyter/command-described-by': 'warn', + 'jupyter/plugin-activation-args': 'error', + 'jupyter/plugin-description': 'warn', '@typescript-eslint/naming-convention': [ 'error', { diff --git a/package.json b/package.json index 72ac4afb35..586e8be5ad 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,7 @@ }, "devDependencies": { "@eslint/js": "^9.26.0", + "@jupyter/eslint-plugin": "0.0.3", "@jupyterlab/buildutils": "~4.6.0-alpha.4", "eslint": "^9.26.0", "eslint-config-prettier": "^10.0.0", diff --git a/yarn.lock b/yarn.lock index 583678927a..e420693e1b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2552,6 +2552,7 @@ __metadata: resolution: "@jupyter-notebook/root@workspace:." dependencies: "@eslint/js": ^9.26.0 + "@jupyter/eslint-plugin": 0.0.3 "@jupyterlab/buildutils": ~4.6.0-alpha.4 eslint: ^9.26.0 eslint-config-prettier: ^10.0.0 @@ -2653,6 +2654,17 @@ __metadata: languageName: unknown linkType: soft +"@jupyter/eslint-plugin@npm:0.0.3": + version: 0.0.3 + resolution: "@jupyter/eslint-plugin@npm:0.0.3" + dependencies: + "@typescript-eslint/utils": ^8.54.0 + peerDependencies: + eslint: ">=9.0.0" + checksum: dcb427d1b5127fd59e3d8c72662fd4b0ba226f16fac163839bbe7739d33e93beda2c4b8d2d2040552c2512a276e27ac119ce24467818c923f42da6081da9e37b + languageName: node + linkType: hard + "@jupyter/react-components@npm:^0.16.6": version: 0.16.7 resolution: "@jupyter/react-components@npm:0.16.7" @@ -6746,6 +6758,19 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/project-service@npm:8.57.2": + version: 8.57.2 + resolution: "@typescript-eslint/project-service@npm:8.57.2" + dependencies: + "@typescript-eslint/tsconfig-utils": ^8.57.2 + "@typescript-eslint/types": ^8.57.2 + debug: ^4.4.3 + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + checksum: 121c700a6fff0eb1eb7e4c6c5111398a4c67dd6f5a42cb07804cb35c143cc517ade65ace20669a81e142f9463b2a266769aa957c9d1ba7ebb33227107cb14ea5 + languageName: node + linkType: hard + "@typescript-eslint/scope-manager@npm:8.54.0": version: 8.54.0 resolution: "@typescript-eslint/scope-manager@npm:8.54.0" @@ -6756,6 +6781,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/scope-manager@npm:8.57.2": + version: 8.57.2 + resolution: "@typescript-eslint/scope-manager@npm:8.57.2" + dependencies: + "@typescript-eslint/types": 8.57.2 + "@typescript-eslint/visitor-keys": 8.57.2 + checksum: e25a8e891b41d43aca68aedaff0c15a0cdee328e1a939b8622e2c047523f6e6fcee8d284ab67af2df7a647ff342c1d7dbb040147ec055d11cd5d9c25a7b64267 + languageName: node + linkType: hard + "@typescript-eslint/tsconfig-utils@npm:8.54.0, @typescript-eslint/tsconfig-utils@npm:^8.54.0": version: 8.54.0 resolution: "@typescript-eslint/tsconfig-utils@npm:8.54.0" @@ -6765,6 +6800,15 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/tsconfig-utils@npm:8.57.2, @typescript-eslint/tsconfig-utils@npm:^8.57.2": + version: 8.57.2 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.57.2" + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + checksum: 0b3473a9bfb19ba73c47646e025b3d7008fdf52c7276f510832091bbe3159b23a6aaaafa952154e0d46d5fa934e97064b073036229e66af04c3464b76989e5b0 + languageName: node + linkType: hard + "@typescript-eslint/type-utils@npm:8.54.0": version: 8.54.0 resolution: "@typescript-eslint/type-utils@npm:8.54.0" @@ -6788,6 +6832,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:8.57.2, @typescript-eslint/types@npm:^8.57.2": + version: 8.57.2 + resolution: "@typescript-eslint/types@npm:8.57.2" + checksum: c39d15f22b1c61c3419b21efcc764feacde3ae4f9c52676f4cc986aef89c9ebf81292695cffc1b90e991318e3c634fff4dfa6e23afdeeda059cae534d740e807 + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:8.54.0": version: 8.54.0 resolution: "@typescript-eslint/typescript-estree@npm:8.54.0" @@ -6807,6 +6858,25 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/typescript-estree@npm:8.57.2": + version: 8.57.2 + resolution: "@typescript-eslint/typescript-estree@npm:8.57.2" + dependencies: + "@typescript-eslint/project-service": 8.57.2 + "@typescript-eslint/tsconfig-utils": 8.57.2 + "@typescript-eslint/types": 8.57.2 + "@typescript-eslint/visitor-keys": 8.57.2 + debug: ^4.4.3 + minimatch: ^10.2.2 + semver: ^7.7.3 + tinyglobby: ^0.2.15 + ts-api-utils: ^2.4.0 + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + checksum: 461efe5be2100716e6a56d9c11e8061190639f7ba379475ba9c238df816f3c96702b41d1087597db2f7e7845c15b68a5a8bf97a38f73cc3b4bd9299872d85222 + languageName: node + linkType: hard + "@typescript-eslint/utils@npm:8.54.0, @typescript-eslint/utils@npm:^6.0.0 || ^7.0.0 || ^8.0.0": version: 8.54.0 resolution: "@typescript-eslint/utils@npm:8.54.0" @@ -6822,6 +6892,21 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/utils@npm:^8.54.0": + version: 8.57.2 + resolution: "@typescript-eslint/utils@npm:8.57.2" + dependencies: + "@eslint-community/eslint-utils": ^4.9.1 + "@typescript-eslint/scope-manager": 8.57.2 + "@typescript-eslint/types": 8.57.2 + "@typescript-eslint/typescript-estree": 8.57.2 + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: 9d6fec718f2d08f7c726f3c44cd2dbcf5814ca0067e0ace6a18c911dc083f7bbb679c73bd677e26809e0770c5e7ae8c7a00a833c0b48c4c42590e8b000095d42 + languageName: node + linkType: hard + "@typescript-eslint/visitor-keys@npm:8.54.0": version: 8.54.0 resolution: "@typescript-eslint/visitor-keys@npm:8.54.0" @@ -6832,6 +6917,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:8.57.2": + version: 8.57.2 + resolution: "@typescript-eslint/visitor-keys@npm:8.57.2" + dependencies: + "@typescript-eslint/types": 8.57.2 + eslint-visitor-keys: ^5.0.0 + checksum: e0c1519bca836db308d0313d71ab89fd165af1c5f4f24a58a98a6782dbfec0c4f741d3b1e2d79ff018ea58e22d14c0ecfd9099685feca95acebb0964e8e44fe1 + languageName: node + linkType: hard + "@upsetjs/venn.js@npm:^2.0.0": version: 2.0.0 resolution: "@upsetjs/venn.js@npm:2.0.0" @@ -7912,6 +8007,13 @@ __metadata: languageName: node linkType: hard +"balanced-match@npm:^4.0.2": + version: 4.0.4 + resolution: "balanced-match@npm:4.0.4" + checksum: fb07bb66a0959c2843fc055838047e2a95ccebb837c519614afb067ebfdf2fa967ca8d712c35ced07f2cd26fc6f07964230b094891315ad74f11eba3d53178a0 + languageName: node + linkType: hard + "bare-events@npm:^2.2.0": version: 2.5.4 resolution: "bare-events@npm:2.5.4" @@ -8044,6 +8146,15 @@ __metadata: languageName: node linkType: hard +"brace-expansion@npm:^5.0.2": + version: 5.0.5 + resolution: "brace-expansion@npm:5.0.5" + dependencies: + balanced-match: ^4.0.2 + checksum: 4481b7ffa467b34c14e258167dbd8d9485a2d31d03060e8e8b38142dcde32cdc89c8f55b04d3ae7aae9304fa7eac1dfafd602787cf09c019cc45de3bb6950ffc + languageName: node + linkType: hard + "braces@npm:^3.0.2, braces@npm:~3.0.2": version: 3.0.3 resolution: "braces@npm:3.0.3" @@ -10631,6 +10742,13 @@ __metadata: languageName: node linkType: hard +"eslint-visitor-keys@npm:^5.0.0": + version: 5.0.1 + resolution: "eslint-visitor-keys@npm:5.0.1" + checksum: d6cc6830536ab4a808f25325686c2c27862f27aab0c1ffed39627293b06cee05d95187da113cafd366314ea5be803b456115de71ad625e365020f20e2a6af89b + languageName: node + linkType: hard + "eslint@npm:^9.26.0": version: 9.39.2 resolution: "eslint@npm:9.39.2" @@ -14751,6 +14869,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^10.2.2": + version: 10.2.4 + resolution: "minimatch@npm:10.2.4" + dependencies: + brace-expansion: ^5.0.2 + checksum: 56dce6b04c6b30b500d81d7a29822c108b7d58c46696ec7332d04a2bd104a5cb69e5c7ce93e1783dc66d61400d831e6e226ca101ac23665aff32ca303619dc3d + languageName: node + linkType: hard + "minimatch@npm:^3.0.4, minimatch@npm:^3.1.2, minimatch@npm:~3.1.4": version: 3.1.5 resolution: "minimatch@npm:3.1.5"