diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 44cc1f74..00000000 --- a/.eslintignore +++ /dev/null @@ -1,11 +0,0 @@ -build -public -coverage -src/serviceWorker.js - -node_modules -.yarn/.cache -.husky -.nyc_output -.yarn -commitlint.config.js diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index bf4f4f10..00000000 --- a/.eslintrc.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "extends": [ - "airbnb", - "plugin:import/typescript", // this is needed because airbnb uses eslint-plugin-import - "prettier", - "plugin:@typescript-eslint/recommended", - "plugin:react-hooks/recommended", - "eslint:recommended" - ], - "plugins": ["@typescript-eslint", "react-hooks"], - "env": { - "browser": true, - "node": true, - "mocha": true, - "jest": true - }, - "globals": { - "cy": true, - "Cypress": true, - "JSX": "readonly" - }, - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaFeatures": { - "jsx": true - }, - "ecmaVersion": "latest", - "sourceType": "module" - }, - "rules": { - "import/order": "off", - "react/function-component-definition": [ - 2, - { - "namedComponents": "arrow-function" - } - ], - "import/extensions": "off", - "react/jsx-uses-react": "off", - "react/react-in-jsx-scope": "off", - // note you must disable the base rule as it can report incorrect errors - "no-use-before-define": "off", - "@typescript-eslint/no-use-before-define": ["error"], - "no-unused-vars": "off", - "@typescript-eslint/no-unused-vars": [ - "error", - { - "argsIgnorePattern": "^_", - "varsIgnorePattern": "^_", - "caughtErrorsIgnorePattern": "^_" - } - ], - "@typescript-eslint/explicit-module-boundary-types": [ - "error", - { - "allowHigherOrderFunctions": true - } - ], - "react/jsx-filename-extension": [ - 1, - { - "extensions": [".js", ".jsx", ".ts", ".tsx"] - } - ], - "import/no-named-as-default": 0, - "react/static-property-placement": [ - "error", - "property assignment", - { - "childContextTypes": "static public field", - "contextTypes": "static public field", - "contextType": "static public field", - "defaultProps": "static public field", - "displayName": "static public field", - "propTypes": "static public field" - } - ], - "no-restricted-syntax": "off", - "react/state-in-constructor": ["error", "never"], - "no-console": [ - 1, - { - "allow": ["error", "info"] - } - ], - "import/no-extraneous-dependencies": [ - "error", - { - "devDependencies": true - } - ], - "react/prop-types": "off", // Since we do not use prop-types - "react/require-default-props": "off", // Since we do not use prop-types - // disable the rule for all files - "@typescript-eslint/explicit-function-return-type": "off" - }, - "overrides": [ - { - // enable the rule specifically for TypeScript files - "files": ["*.ts", "*.tsx"], - "rules": { - "@typescript-eslint/explicit-module-boundary-types": [ - "error", - { - "allowHigherOrderFunctions": true - } - ] - } - }, - { - // enable the rule specifically for src files - "files": ["src/**/*.js", "src/**/*.tsx", "src/**/*.ts"], - "rules": { - "no-restricted-syntax": ["error"] - } - } - ], - "settings": { - "import/extensions": [".js", ".jsx", ".ts", ".tsx"], - "import/parsers": { - "@typescript-eslint/parser": [".ts", ".tsx"] - }, - "import/resolver": { - "typescript": { - "alwaysTryTypes": true - }, - "node": { - "extensions": [".js", ".jsx", ".ts", ".tsx"] - } - } - }, - "ignorePatterns": ["node_modules/*"] -} diff --git a/cypress/fixtures/apps.ts b/cypress/fixtures/apps.ts index 8a332fc7..e22da175 100644 --- a/cypress/fixtures/apps.ts +++ b/cypress/fixtures/apps.ts @@ -8,7 +8,6 @@ import { MockItem } from './mockTypes'; import { mockPublicTag } from './tags'; // mock an app with the graasp link -// eslint-disable-next-line import/prefer-default-export export const GRAASP_APP_ITEM: AppItemType = AppItemFactory({ id: 'baefbd2a-5688-11eb-ae91-0242ac130002', name: 'graasp app', diff --git a/cypress/fixtures/useCases/staticElectricity.ts b/cypress/fixtures/useCases/staticElectricity.ts index aa18470e..436a2408 100644 --- a/cypress/fixtures/useCases/staticElectricity.ts +++ b/cypress/fixtures/useCases/staticElectricity.ts @@ -16,7 +16,6 @@ import { CURRENT_USER } from '../members'; import { MockItem } from '../mockTypes'; import { mockItemTag } from '../tags'; -// eslint-disable-next-line import/prefer-default-export export const STATIC_ELECTRICITY: { items: MockItem[]; } = { diff --git a/cypress/support/e2e.ts b/cypress/support/e2e.ts index 95c1aec5..fec3a335 100644 --- a/cypress/support/e2e.ts +++ b/cypress/support/e2e.ts @@ -13,7 +13,6 @@ // https://on.cypress.io/configuration // *********************************************************** // Import commands.js using ES2015 syntax: -// eslint-disable-next-line import/no-extraneous-dependencies import '@cypress/code-coverage/support'; import './commands'; diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 00000000..71afc82c --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,188 @@ +import { fixupConfigRules, fixupPluginRules } from '@eslint/compat'; +import { FlatCompat } from '@eslint/eslintrc'; +import js from '@eslint/js'; +import typescriptEslint from '@typescript-eslint/eslint-plugin'; +import tsParser from '@typescript-eslint/parser'; +import cypressEslint from 'eslint-plugin-cypress'; +import reactHooks from 'eslint-plugin-react-hooks'; +import globals from 'globals'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +// eslint-disable-next-line no-underscore-dangle +const __filename = fileURLToPath(import.meta.url); +// eslint-disable-next-line no-underscore-dangle +const __dirname = path.dirname(__filename); +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all, +}); + +export default [ + { + ignores: [ + '**/build', + '**/public', + '**/coverage', + '**/node_modules', + '.yarn/.cache', + '**/.husky', + '**/.nyc_output', + '**/.yarn', + '**/commitlint.config.cjs', + ], + }, + ...fixupConfigRules( + compat.extends( + 'airbnb', + 'plugin:import/typescript', + 'prettier', + 'plugin:@typescript-eslint/recommended', + 'plugin:react-hooks/recommended', + 'eslint:recommended', + ), + ), + { + plugins: { + '@typescript-eslint': fixupPluginRules(typescriptEslint), + 'react-hooks': fixupPluginRules(reactHooks), + cypress: fixupConfigRules(cypressEslint), + }, + + languageOptions: { + globals: { + ...globals.browser, + ...globals.mocha, + ...globals.jest, + cy: true, + Cypress: true, + JSX: 'readonly', + }, + + parser: tsParser, + ecmaVersion: 'latest', + sourceType: 'module', + + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + }, + }, + + settings: { + 'import/extensions': ['.js', '.jsx', '.ts', '.tsx'], + + 'import/parsers': { + '@typescript-eslint/parser': ['.ts', '.tsx'], + }, + + 'import/resolver': { + typescript: { + alwaysTryTypes: true, + }, + + node: { + extensions: ['.js', '.jsx', '.ts', '.tsx'], + }, + }, + }, + + rules: { + 'import/order': 'off', + + 'react/function-component-definition': [ + 2, + { + namedComponents: 'arrow-function', + }, + ], + + 'import/extensions': 'off', + 'react/jsx-uses-react': 'off', + 'react/react-in-jsx-scope': 'off', + 'no-use-before-define': 'off', + '@typescript-eslint/no-use-before-define': ['error'], + 'no-unused-vars': 'off', + + '@typescript-eslint/no-unused-vars': [ + 'error', + { + argsIgnorePattern: '^_', + varsIgnorePattern: '^_', + caughtErrorsIgnorePattern: '^_', + }, + ], + + '@typescript-eslint/explicit-module-boundary-types': [ + 'error', + { + allowHigherOrderFunctions: true, + }, + ], + + 'react/jsx-filename-extension': [ + 1, + { + extensions: ['.js', '.jsx', '.ts', '.tsx'], + }, + ], + + 'import/no-named-as-default': 'off', + + 'react/static-property-placement': [ + 'error', + 'property assignment', + { + childContextTypes: 'static public field', + contextTypes: 'static public field', + contextType: 'static public field', + defaultProps: 'static public field', + displayName: 'static public field', + propTypes: 'static public field', + }, + ], + + 'no-restricted-syntax': 'off', + 'react/state-in-constructor': ['error', 'never'], + + 'no-console': [ + 'error', + { + allow: ['error', 'info'], + }, + ], + + 'import/no-extraneous-dependencies': [ + 'error', + { + devDependencies: true, + }, + ], + + 'react/prop-types': 'off', + 'react/require-default-props': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + }, + }, + { + files: ['**/*.ts', '**/*.tsx'], + + rules: { + '@typescript-eslint/explicit-module-boundary-types': [ + 'error', + { + allowHigherOrderFunctions: true, + }, + ], + }, + }, + { + files: ['src/**/*.js', 'src/**/*.tsx', 'src/**/*.ts'], + + rules: { + 'no-restricted-syntax': ['error'], + }, + }, +]; diff --git a/package.json b/package.json index 81044213..14454abc 100644 --- a/package.json +++ b/package.json @@ -71,6 +71,9 @@ "devDependencies": { "@commitlint/config-conventional": "19.5.0", "@cypress/code-coverage": "3.12.48", + "@eslint/compat": "1.1.1", + "@eslint/eslintrc": "3.1.0", + "@eslint/js": "9.10.0", "@trivago/prettier-plugin-sort-imports": "4.3.0", "@types/katex": "^0.16.7", "@types/lodash.isarray": "^4.0.9", @@ -89,14 +92,16 @@ "cypress-iframe": "1.0.1", "cypress-vite": "1.5.0", "env-cmd": "10.1.0", - "eslint": "^8.57.0", + "eslint": "^9.10.0", "eslint-config-airbnb": "19.0.4", "eslint-config-prettier": "9.1.0", "eslint-import-resolver-typescript": "3.6.3", + "eslint-plugin-cypress": "3.5.0", "eslint-plugin-import": "2.30.0", "eslint-plugin-jsx-a11y": "6.10.0", "eslint-plugin-react": "7.36.1", "eslint-plugin-react-hooks": "4.6.2", + "globals": "15.9.0", "http-status-codes": "2.3.0", "husky": "9.1.6", "prettier": "3.3.3", diff --git a/src/utils/tree.ts b/src/utils/tree.ts index 65d35180..85b11daa 100644 --- a/src/utils/tree.ts +++ b/src/utils/tree.ts @@ -90,7 +90,6 @@ const buildItemsTree = ( return tree; }; -// eslint-disable-next-line import/prefer-default-export export const getItemTree = ( data: DiscriminatedItem[], rootItems: DiscriminatedItem[], diff --git a/yarn.lock b/yarn.lock index 25800dd6..41d5316f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1422,34 +1422,75 @@ __metadata: languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.6.1": +"@eslint-community/regexpp@npm:^4.10.0": version: 4.10.0 resolution: "@eslint-community/regexpp@npm:4.10.0" checksum: 10/8c36169c815fc5d726078e8c71a5b592957ee60d08c6470f9ce0187c8046af1a00afbda0a065cc40ff18d5d83f82aed9793c6818f7304a74a7488dc9f3ecbd42 languageName: node linkType: hard -"@eslint/eslintrc@npm:^2.1.4": - version: 2.1.4 - resolution: "@eslint/eslintrc@npm:2.1.4" +"@eslint-community/regexpp@npm:^4.11.0": + version: 4.11.0 + resolution: "@eslint-community/regexpp@npm:4.11.0" + checksum: 10/f053f371c281ba173fe6ee16dbc4fe544c84870d58035ccca08dba7f6ce1830d895ce3237a0db89ba37616524775dca82f1c502066b58e2d5712d7f87f5ba17c + languageName: node + linkType: hard + +"@eslint/compat@npm:1.1.1": + version: 1.1.1 + resolution: "@eslint/compat@npm:1.1.1" + checksum: 10/9004697701e9e9a7749d9e37452ee965af3620af46796ac0ee196478bbda490c780d17686c2888353c2a12d764837fa71c027c3ca18b1c3af6136105caa93642 + languageName: node + linkType: hard + +"@eslint/config-array@npm:^0.18.0": + version: 0.18.0 + resolution: "@eslint/config-array@npm:0.18.0" + dependencies: + "@eslint/object-schema": "npm:^2.1.4" + debug: "npm:^4.3.1" + minimatch: "npm:^3.1.2" + checksum: 10/60ccad1eb4806710b085cd739568ec7afd289ee5af6ca0383f0876f9fe375559ef525f7b3f86bdb3f961493de952f2cf3ab4aa4a6ccaef0ae3cd688267cabcb3 + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:3.1.0, @eslint/eslintrc@npm:^3.1.0": + version: 3.1.0 + resolution: "@eslint/eslintrc@npm:3.1.0" dependencies: ajv: "npm:^6.12.4" debug: "npm:^4.3.2" - espree: "npm:^9.6.0" - globals: "npm:^13.19.0" + espree: "npm:^10.0.1" + globals: "npm:^14.0.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: 10/7a3b14f4b40fc1a22624c3f84d9f467a3d9ea1ca6e9a372116cb92507e485260359465b58e25bcb6c9981b155416b98c9973ad9b796053fd7b3f776a6946bce8 + checksum: 10/02bf892d1397e1029209dea685e9f4f87baf643315df2a632b5f121ec7e8548a3b34f428a007234fa82772218fa8a3ac2d10328637b9ce63b7f8344035b74db3 languageName: node linkType: hard -"@eslint/js@npm:8.57.0": - version: 8.57.0 - resolution: "@eslint/js@npm:8.57.0" - checksum: 10/3c501ce8a997cf6cbbaf4ed358af5492875e3550c19b9621413b82caa9ae5382c584b0efa79835639e6e0ddaa568caf3499318e5bdab68643ef4199dce5eb0a0 +"@eslint/js@npm:9.10.0": + version: 9.10.0 + resolution: "@eslint/js@npm:9.10.0" + checksum: 10/cbda2bf268c8ac7a2b2493aaaa0113a78165a576ee5178b9fbdaf245c3d40ffaf41d006f75afab5718f68d816f00319e267b4c88ead100b19022fe491f9e0175 + languageName: node + linkType: hard + +"@eslint/object-schema@npm:^2.1.4": + version: 2.1.4 + resolution: "@eslint/object-schema@npm:2.1.4" + checksum: 10/221e8d9f281c605948cd6e030874aacce83fe097f8f9c1964787037bccf08e82b7aa9eff1850a30fffac43f1d76555727ec22a2af479d91e268e89d1e035131e + languageName: node + linkType: hard + +"@eslint/plugin-kit@npm:^0.1.0": + version: 0.1.0 + resolution: "@eslint/plugin-kit@npm:0.1.0" + dependencies: + levn: "npm:^0.4.1" + checksum: 10/3c6b10505f53c6e32b40572f780164b75389bbabd1bf80ab8742222710d90683a2cc9480468fca132da636f6a3053ae60b173181d14f4975fde2e6f8f9564c6d languageName: node linkType: hard @@ -1617,17 +1658,6 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.11.14": - version: 0.11.14 - resolution: "@humanwhocodes/config-array@npm:0.11.14" - dependencies: - "@humanwhocodes/object-schema": "npm:^2.0.2" - debug: "npm:^4.3.1" - minimatch: "npm:^3.0.5" - checksum: 10/3ffb24ecdfab64014a230e127118d50a1a04d11080cbb748bc21629393d100850496456bbcb4e8c438957fe0934430d731042f1264d6a167b62d32fc2863580a - languageName: node - linkType: hard - "@humanwhocodes/module-importer@npm:^1.0.1": version: 1.0.1 resolution: "@humanwhocodes/module-importer@npm:1.0.1" @@ -1635,10 +1665,10 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/object-schema@npm:^2.0.2": - version: 2.0.3 - resolution: "@humanwhocodes/object-schema@npm:2.0.3" - checksum: 10/05bb99ed06c16408a45a833f03a732f59bf6184795d4efadd33238ff8699190a8c871ad1121241bb6501589a9598dc83bf25b99dcbcf41e155cdf36e35e937a3 +"@humanwhocodes/retry@npm:^0.3.0": + version: 0.3.0 + resolution: "@humanwhocodes/retry@npm:0.3.0" + checksum: 10/e574bab58680867414e225c9002e9a97eb396f85871c180fbb1a9bcdf9ded4b4de0b327f7d0c43b775873362b7c92956d4b322e8bc4b90be56077524341f04b2 languageName: node linkType: hard @@ -3082,7 +3112,7 @@ __metadata: languageName: node linkType: hard -"@ungap/structured-clone@npm:^1.0.0, @ungap/structured-clone@npm:^1.2.0": +"@ungap/structured-clone@npm:^1.0.0": version: 1.2.0 resolution: "@ungap/structured-clone@npm:1.2.0" checksum: 10/c6fe89a505e513a7592e1438280db1c075764793a2397877ff1351721fe8792a966a5359769e30242b3cd023f2efb9e63ca2ca88019d73b564488cc20e3eab12 @@ -3240,7 +3270,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.11.3, acorn@npm:^8.9.0": +"acorn@npm:^8.11.3": version: 8.11.3 resolution: "acorn@npm:8.11.3" bin: @@ -3249,6 +3279,15 @@ __metadata: languageName: node linkType: hard +"acorn@npm:^8.12.0": + version: 8.12.1 + resolution: "acorn@npm:8.12.1" + bin: + acorn: bin/acorn + checksum: 10/d08c2d122bba32d0861e0aa840b2ee25946c286d5dc5990abca991baf8cdbfbe199b05aacb221b979411a2fea36f83e26b5ac4f6b4e0ce49038c62316c1848f0 + languageName: node + linkType: hard + "agent-base@npm:^7.0.2, agent-base@npm:^7.1.0, agent-base@npm:^7.1.1": version: 7.1.1 resolution: "agent-base@npm:7.1.1" @@ -5409,6 +5448,17 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-cypress@npm:3.5.0": + version: 3.5.0 + resolution: "eslint-plugin-cypress@npm:3.5.0" + dependencies: + globals: "npm:^13.20.0" + peerDependencies: + eslint: ">=7" + checksum: 10/c7797902d76331e4b243f8c97c8ecde451e6959af6ec54c07faf54e095ad64e64a588dc3bb466cb172f63219ea07fd6efb2bcb6ae63a64dd9c067edbd222327e + languageName: node + linkType: hard + "eslint-plugin-import@npm:2.30.0": version: 2.30.0 resolution: "eslint-plugin-import@npm:2.30.0" @@ -5500,17 +5550,17 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:^7.2.2": - version: 7.2.2 - resolution: "eslint-scope@npm:7.2.2" +"eslint-scope@npm:^8.0.2": + version: 8.0.2 + resolution: "eslint-scope@npm:8.0.2" dependencies: esrecurse: "npm:^4.3.0" estraverse: "npm:^5.2.0" - checksum: 10/5c660fb905d5883ad018a6fea2b49f3cb5b1cbf2cd4bd08e98646e9864f9bc2c74c0839bed2d292e90a4a328833accc197c8f0baed89cbe8d605d6f918465491 + checksum: 10/d17c2e1ff4d3a98911414a954531078db912e2747d6da8ea4cafd16d0526e32086c676ce9aeaffb3ca0ff695fc951ac3169d7f08a0b42962db683dff126cc95b languageName: node linkType: hard -"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": +"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.3": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3" checksum: 10/3f357c554a9ea794b094a09bd4187e5eacd1bc0d0653c3adeb87962c548e6a1ab8f982b86963ae1337f5d976004146536dcee5d0e2806665b193fbfbf1a9231b @@ -5524,51 +5574,52 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^8.57.0": - version: 8.57.0 - resolution: "eslint@npm:8.57.0" +"eslint@npm:^9.10.0": + version: 9.10.0 + resolution: "eslint@npm:9.10.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.57.0" - "@humanwhocodes/config-array": "npm:^0.11.14" + "@eslint-community/regexpp": "npm:^4.11.0" + "@eslint/config-array": "npm:^0.18.0" + "@eslint/eslintrc": "npm:^3.1.0" + "@eslint/js": "npm:9.10.0" + "@eslint/plugin-kit": "npm:^0.1.0" "@humanwhocodes/module-importer": "npm:^1.0.1" + "@humanwhocodes/retry": "npm:^0.3.0" "@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" + eslint-scope: "npm:^8.0.2" + eslint-visitor-keys: "npm:^4.0.0" + espree: "npm:^10.1.0" + esquery: "npm:^1.5.0" esutils: "npm:^2.0.2" fast-deep-equal: "npm:^3.1.3" - file-entry-cache: "npm:^6.0.1" + file-entry-cache: "npm:^8.0.0" 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" + peerDependencies: + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true bin: eslint: bin/eslint.js - checksum: 10/00496e218b23747a7a9817bf58b522276d0dc1f2e546dceb4eea49f9871574088f72f1f069a6b560ef537efa3a75261b8ef70e51ef19033da1cc4c86a755ef15 + checksum: 10/bbb6da7db83f5182cff5a5e1681cf77be761e37bfbfedf66add9d3d2a216dbc336e787d02d05a2ea85179c51a10203713b2438b86adfd7666c29afd3ee008fe8 languageName: node linkType: hard @@ -5583,14 +5634,14 @@ __metadata: languageName: node linkType: hard -"espree@npm:^9.6.0, espree@npm:^9.6.1": - version: 9.6.1 - resolution: "espree@npm:9.6.1" +"espree@npm:^10.1.0": + version: 10.1.0 + resolution: "espree@npm:10.1.0" dependencies: - acorn: "npm:^8.9.0" + acorn: "npm:^8.12.0" acorn-jsx: "npm:^5.3.2" - eslint-visitor-keys: "npm:^3.4.1" - checksum: 10/255ab260f0d711a54096bdeda93adff0eadf02a6f9b92f02b323e83a2b7fc258797919437ad331efec3930475feb0142c5ecaaf3cdab4befebd336d47d3f3134 + eslint-visitor-keys: "npm:^4.0.0" + checksum: 10/a673aa39a19a51763d92272f8f3772ae3d4b10624740bb72d5f273b631b43f1a5a32b385c1da6ae6bc10be05a5913bc4679ebd22a09c7b336a745204834806ea languageName: node linkType: hard @@ -5604,12 +5655,12 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.4.2": - version: 1.5.0 - resolution: "esquery@npm:1.5.0" +"esquery@npm:^1.5.0": + version: 1.6.0 + resolution: "esquery@npm:1.6.0" dependencies: estraverse: "npm:^5.1.0" - checksum: 10/e65fcdfc1e0ff5effbf50fb4f31ea20143ae5df92bb2e4953653d8d40aa4bc148e0d06117a592ce4ea53eeab1dafdfded7ea7e22a5be87e82d73757329a1b01d + checksum: 10/c587fb8ec9ed83f2b1bc97cf2f6854cc30bf784a79d62ba08c6e358bf22280d69aee12827521cf38e69ae9761d23fb7fde593ce315610f85655c139d99b05e5a languageName: node linkType: hard @@ -5858,12 +5909,12 @@ __metadata: languageName: node linkType: hard -"file-entry-cache@npm:^6.0.1": - version: 6.0.1 - resolution: "file-entry-cache@npm:6.0.1" +"file-entry-cache@npm:^8.0.0": + version: 8.0.0 + resolution: "file-entry-cache@npm:8.0.0" dependencies: - flat-cache: "npm:^3.0.4" - checksum: 10/099bb9d4ab332cb93c48b14807a6918a1da87c45dce91d4b61fd40e6505d56d0697da060cb901c729c90487067d93c9243f5da3dc9c41f0358483bfdebca736b + flat-cache: "npm:^4.0.0" + checksum: 10/afe55c4de4e0d226a23c1eae62a7219aafb390859122608a89fa4df6addf55c7fd3f1a2da6f5b41e7cdff496e4cf28bbd215d53eab5c817afa96d2b40c81bfb0 languageName: node linkType: hard @@ -5956,14 +6007,13 @@ __metadata: languageName: node linkType: hard -"flat-cache@npm:^3.0.4": - version: 3.2.0 - resolution: "flat-cache@npm:3.2.0" +"flat-cache@npm:^4.0.0": + version: 4.0.1 + resolution: "flat-cache@npm:4.0.1" dependencies: flatted: "npm:^3.2.9" - keyv: "npm:^4.5.3" - rimraf: "npm:^3.0.2" - checksum: 10/02381c6ece5e9fa5b826c9bbea481d7fd77645d96e4b0b1395238124d581d10e56f17f723d897b6d133970f7a57f0fab9148cbbb67237a0a0ffe794ba60c0c70 + keyv: "npm:^4.5.4" + checksum: 10/58ce851d9045fffc7871ce2bd718bc485ad7e777bf748c054904b87c351ff1080c2c11da00788d78738bfb51b71e4d5ea12d13b98eb36e3358851ffe495b62dc languageName: node linkType: hard @@ -6334,6 +6384,13 @@ __metadata: languageName: node linkType: hard +"globals@npm:15.9.0": + version: 15.9.0 + resolution: "globals@npm:15.9.0" + checksum: 10/19bca70131c5d3e0d4171deed0f8ae16adda19f18d39b67421056f1eaa160b4433c3ffc8eb69b8b19adebbbdad4834d8a0494c5fe1ae295f0f769a5c0331d794 + languageName: node + linkType: hard + "globals@npm:^11.1.0": version: 11.12.0 resolution: "globals@npm:11.12.0" @@ -6341,7 +6398,7 @@ __metadata: languageName: node linkType: hard -"globals@npm:^13.19.0": +"globals@npm:^13.20.0": version: 13.24.0 resolution: "globals@npm:13.24.0" dependencies: @@ -6350,6 +6407,13 @@ __metadata: languageName: node linkType: hard +"globals@npm:^14.0.0": + version: 14.0.0 + resolution: "globals@npm:14.0.0" + checksum: 10/03939c8af95c6df5014b137cac83aa909090c3a3985caef06ee9a5a669790877af8698ab38007e4c0186873adc14c0b13764acc754b16a754c216cc56aa5f021 + languageName: node + linkType: hard + "globalthis@npm:^1.0.3": version: 1.0.3 resolution: "globalthis@npm:1.0.3" @@ -6391,6 +6455,9 @@ __metadata: "@emotion/cache": "npm:11.13.1" "@emotion/react": "npm:11.13.3" "@emotion/styled": "npm:11.13.0" + "@eslint/compat": "npm:1.1.1" + "@eslint/eslintrc": "npm:3.1.0" + "@eslint/js": "npm:9.10.0" "@graasp/chatbox": "npm:3.2.1" "@graasp/query-client": "npm:3.22.3" "@graasp/sdk": "npm:4.28.0" @@ -6421,14 +6488,16 @@ __metadata: cypress-vite: "npm:1.5.0" date-fns: "npm:3.6.0" env-cmd: "npm:10.1.0" - eslint: "npm:^8.57.0" + eslint: "npm:^9.10.0" eslint-config-airbnb: "npm:19.0.4" eslint-config-prettier: "npm:9.1.0" eslint-import-resolver-typescript: "npm:3.6.3" + eslint-plugin-cypress: "npm:3.5.0" eslint-plugin-import: "npm:2.30.0" eslint-plugin-jsx-a11y: "npm:6.10.0" eslint-plugin-react: "npm:7.36.1" eslint-plugin-react-hooks: "npm:4.6.2" + globals: "npm:15.9.0" http-status-codes: "npm:2.3.0" husky: "npm:9.1.6" i18next: "npm:23.15.1" @@ -7619,7 +7688,7 @@ __metadata: languageName: node linkType: hard -"keyv@npm:^4.5.3": +"keyv@npm:^4.5.4": version: 4.5.4 resolution: "keyv@npm:4.5.4" dependencies: @@ -8624,7 +8693,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": +"minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -10175,7 +10244,7 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:^3.0.0, rimraf@npm:^3.0.2": +"rimraf@npm:^3.0.0": version: 3.0.2 resolution: "rimraf@npm:3.0.2" dependencies: