diff --git a/.commitlintrc.js b/.commitlintrc.cjs similarity index 100% rename from .commitlintrc.js rename to .commitlintrc.cjs diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 6ebe7263..00000000 --- a/.eslintignore +++ /dev/null @@ -1,17 +0,0 @@ -# .eslintignore - -node_modules - -# NOTE: -# The following directives are only relevant when linting the whole -# project directory, ie. running `eslint .` ⚠️ - -# If you compile JavaScript into some output folder, exclude it here -dist - -# Highly recommended to re-include JavaScript dotfiles to lint them -# (This will cause .eslintrc.js to be linted by ESLint 🤘) -!.*.js - -# Some tools use this pattern for their configuration files. Lint them! -!*.config.js diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 3b79d6a0..00000000 --- a/.eslintrc.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - reportUnusedDisableDirectives: true, - - ignorePatterns: ['node_modules', '!.*.js'], - - extends: [ - './packages/eslint-config-base', - './packages/eslint-config-base/optional', - './packages/eslint-config-jest', - 'prettier', - ], - - plugins: ['prettier'], -}; diff --git a/.gitignore b/.gitignore index de88b63f..ea972018 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,4 @@ nbproject *.atom-* .tern-* jsconfig.json +.yarn diff --git a/.nvmrc b/.nvmrc index 08b7109d..2b9cabc0 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -18.20.8 +20.12.0 diff --git a/.prettierrc.mjs b/.prettierrc.mjs index eefd9dd9..526de2c7 100644 --- a/.prettierrc.mjs +++ b/.prettierrc.mjs @@ -1,3 +1,4 @@ -import prettierConfig from './packages/prettier-config/index.js'; +// eslint-disable-next-line import/no-extraneous-dependencies +import prettierConfig from '@alma-oss/prettier-config'; export default prettierConfig; diff --git a/.remarkrc.mjs b/.remarkrc.mjs index 457606e3..d4f1b717 100644 --- a/.remarkrc.mjs +++ b/.remarkrc.mjs @@ -1,4 +1,5 @@ -import config from './packages/remark-config/index.js'; +// eslint-disable-next-line import/no-extraneous-dependencies +import config from '@almacareer/remark-config'; export default { ...config, diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 00000000..b8277a38 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,21 @@ +/* eslint-disable import/no-relative-packages */ + +import prettierConfig from 'eslint-config-prettier'; +import baseConfig from './packages/eslint-config-base/index.js'; +import optionalBaseConfig from './packages/eslint-config-base/optional.js'; +import jestConfig from './packages/eslint-config-jest/index.js'; + +export default [ + ...baseConfig, + ...optionalBaseConfig, + ...jestConfig, + { + ignores: ['node_modules', '!.*.js', '**/*.mjs', '.yarn/**', '**/.remarkrc.mjs'], + + rules: { + // Disabled because off node do not resolve + 'import/extensions': 'off', + }, + }, + prettierConfig, +]; diff --git a/package.json b/package.json index 89c30b9e..d847e227 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,10 @@ "workspaces": [ "packages/*" ], + "engines": { + "node": ">=20" + }, + "type": "module", "scripts": { "packages:diff": "lerna diff", "packages:changed": "lerna changed", @@ -34,8 +38,10 @@ "prepare": "is-ci || husky" }, "devDependencies": { + "@alma-oss/prettier-config": "workspace:^", + "@almacareer/remark-config": "workspace:^", "@commitlint/cli": "19.8.1", - "eslint": "8.57.1", + "eslint": "9.31.0", "eslint-config-prettier": "9.1.2", "eslint-import-resolver-node": "0.3.9", "eslint-plugin-prettier": "5.5.3", diff --git a/packages/conventional-changelog-lmc-bitbucket/src/index.js b/packages/conventional-changelog-lmc-bitbucket/src/index.js index 00a7532a..fbcfe864 100644 --- a/packages/conventional-changelog-lmc-bitbucket/src/index.js +++ b/packages/conventional-changelog-lmc-bitbucket/src/index.js @@ -1,5 +1,5 @@ -const conventionalChangelog = require(`./conventional-changelog`); const { parserOpts, writerOpts, recommendedBumpOpts } = require('@lmc-eu/conventional-changelog-lmc'); +const conventionalChangelog = require('./conventional-changelog'); module.exports = Promise.all([conventionalChangelog, parserOpts, recommendedBumpOpts, writerOpts]).then( // Using same configuration as other configurations diff --git a/packages/conventional-changelog-lmc-bitbucket/tests/index.test.js b/packages/conventional-changelog-lmc-bitbucket/tests/index.test.js index 61c8a982..0ac9cef4 100644 --- a/packages/conventional-changelog-lmc-bitbucket/tests/index.test.js +++ b/packages/conventional-changelog-lmc-bitbucket/tests/index.test.js @@ -1,6 +1,6 @@ // We are dealing with Streams here, not Promises -/* eslint-disable jest/no-done-callback */ /* eslint-disable no-plusplus */ +/* eslint-disable jest/no-done-callback */ /* eslint-disable no-undef */ const conventionalChangelogCore = require('conventional-changelog-core'); const gitDummyCommit = require('git-dummy-commit'); diff --git a/packages/conventional-changelog-lmc-github/src/index.js b/packages/conventional-changelog-lmc-github/src/index.js index 00a7532a..fbcfe864 100644 --- a/packages/conventional-changelog-lmc-github/src/index.js +++ b/packages/conventional-changelog-lmc-github/src/index.js @@ -1,5 +1,5 @@ -const conventionalChangelog = require(`./conventional-changelog`); const { parserOpts, writerOpts, recommendedBumpOpts } = require('@lmc-eu/conventional-changelog-lmc'); +const conventionalChangelog = require('./conventional-changelog'); module.exports = Promise.all([conventionalChangelog, parserOpts, recommendedBumpOpts, writerOpts]).then( // Using same configuration as other configurations diff --git a/packages/conventional-changelog-lmc-github/tests/index.test.js b/packages/conventional-changelog-lmc-github/tests/index.test.js index 783ab8b1..74c961cc 100644 --- a/packages/conventional-changelog-lmc-github/tests/index.test.js +++ b/packages/conventional-changelog-lmc-github/tests/index.test.js @@ -1,7 +1,6 @@ // We are dealing with Streams here, not Promises -/* eslint-disable jest/no-done-callback */ /* eslint-disable no-plusplus */ - +/* eslint-disable jest/no-done-callback */ /* eslint-disable no-param-reassign */ const conventionalChangelogCore = require('conventional-changelog-core'); const gitDummyCommit = require('git-dummy-commit'); diff --git a/packages/conventional-changelog-lmc/src/bump-opts.js b/packages/conventional-changelog-lmc/src/bump-opts.js index acdd3003..c73964d9 100644 --- a/packages/conventional-changelog-lmc/src/bump-opts.js +++ b/packages/conventional-changelog-lmc/src/bump-opts.js @@ -15,7 +15,7 @@ module.exports = { } else if (commit.type === 'BREAKING CHANGE' || commit.type === 'BREAKING CHANGES') { breakings += 1; level = 0; - } else if (commit.type === `Feat`) { + } else if (commit.type === 'Feat') { features += 1; if (level === 2) { level = 1; diff --git a/packages/eslint-config-base/.eslintrc b/packages/eslint-config-base/.eslintrc deleted file mode 100644 index f5bdb1a4..00000000 --- a/packages/eslint-config-base/.eslintrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./index.js", - "rules": { - // disable requiring trailing commas because it might be nice to revert to - // being JSON at some point, and I don't want to make big changes now. - "comma-dangle": 0, - - "max-len": 0 - } -} diff --git a/packages/eslint-config-base/README.md b/packages/eslint-config-base/README.md index ad396706..17bc89a0 100644 --- a/packages/eslint-config-base/README.md +++ b/packages/eslint-config-base/README.md @@ -2,11 +2,11 @@ ## Shared Rules -These rules are meant to be shared across all ESLint rulesets. +These rules are meant to be shared across all ESLint rule sets. > Generally you should not need to install or extend from these files as they are automatically included in their respective environment-specific configurations. > -> See [@lmc-eu/code-quality-tools][cqt-home] for a full showdown of available rulesets. +> See [@lmc-eu/code-quality-tools][cqt-home] for a full showdown of available rule sets. ## Configurations @@ -31,35 +31,13 @@ This entry point only errors on whitespace rules and sets all other rules to war ## Recommended ESLint Configuration ```js -// .eslintrc.js +// eslint.config.mjs -'use strict'; +import { defineConfig } from 'eslint/config'; +import base from '@lmc-eu/eslint-config-base'; +import optional from '@lmc-eu/eslint-config-base/optional'; -module.exports = { - extends: ['@lmc-eu/eslint-config-base', '@lmc-eu/eslint-config-base/optional'], -}; -``` - -
-.eslintrc or .eslintrc.json - -```json -{ - "extends": ["@lmc-eu/eslint-config-base", "@lmc-eu/eslint-config-base/optional"] -} -``` - -
- -
-package.json - -```json -{ - "eslintConfig": { - "extends": ["@lmc-eu/eslint-config-base", "@lmc-eu/eslint-config-base/optional"] - } -} +export default defineConfig([...base, ...optional]); ``` It is also recommended that you lint the whole project folder (that is `npx eslint .`) instead of just diff --git a/packages/eslint-config-base/eslint.config.js b/packages/eslint-config-base/eslint.config.js new file mode 100644 index 00000000..5ced6c00 --- /dev/null +++ b/packages/eslint-config-base/eslint.config.js @@ -0,0 +1,17 @@ +import base from './index.js'; + +export default [ + ...base, + { + rules: { + // disable requiring trailing commas because it might be nice to revert to + // being JSON at some point, and I don't want to make big changes now. + 'comma-dangle': 0, + + 'max-len': 0, + + // Disabled because off node do not resolve + 'import/extensions': 'off', + }, + }, +]; diff --git a/packages/eslint-config-base/globs.js b/packages/eslint-config-base/globs.js index 3c3b0b14..ddfac76c 100644 --- a/packages/eslint-config-base/globs.js +++ b/packages/eslint-config-base/globs.js @@ -1,4 +1,4 @@ -module.exports = { +export default { // Test files patterns tests: ['test/**', '**/*.test.*', '**/*.spec.*'], diff --git a/packages/eslint-config-base/index.js b/packages/eslint-config-base/index.js index b144a8e3..6d6c748b 100644 --- a/packages/eslint-config-base/index.js +++ b/packages/eslint-config-base/index.js @@ -1,38 +1,42 @@ -const globs = require('./globs'); +import { FlatCompat } from '@eslint/eslintrc'; +import { fixupConfigRules } from '@eslint/compat'; +import bestPractices from './rules/best-practices.js'; +import errors from './rules/errors.js'; +import node from './rules/node.js'; +import style from './rules/style.js'; +import variables from './rules/variables.js'; +import es6 from './rules/es6.js'; +import importsRules from './rules/imports.js'; +import strict from './rules/strict.js'; +import globs from './globs.js'; +import settings from './settings.js'; -module.exports = { - plugins: ['import'], +const compat = new FlatCompat(); - settings: { - 'import/resolver': { - node: { - extensions: ['.mjs', '.cjs', '.js', '.json', '.node'], - }, - }, - }, - - extends: [ - 'eslint-config-airbnb-base', - './rules/best-practices', - './rules/errors', - './rules/node', - './rules/style', - './rules/variables', - './rules/es6', - './rules/imports', - './rules/strict', - ].map(require.resolve), +export default [ + ...fixupConfigRules(compat.extends('eslint-config-airbnb-base')), + { + name: '@lmc-eu/eslint-config-base', - rules: {}, + settings, - overrides: [ - { - files: globs.configs, + rules: {}, + }, + bestPractices, + errors, + node, + style, + variables, + es6, + importsRules, + strict, + { + files: globs.configs, - rules: { - // Using process.env is encouraged in configuration files - 'node/no-process-env': 'off', - }, + rules: { + // Using process.env is encouraged in configuration files + // @see: https://eslint.org/docs/latest/rules/no-process-env + 'node/no-process-env': 'off', }, - ], -}; + }, +]; diff --git a/packages/eslint-config-base/legacy.js b/packages/eslint-config-base/legacy.js index e88f7122..b4abee4e 100644 --- a/packages/eslint-config-base/legacy.js +++ b/packages/eslint-config-base/legacy.js @@ -1,4 +1,15 @@ -module.exports = { - extends: ['eslint-config-airbnb-base/legacy'].map(require.resolve), - rules: {}, -}; +import { FlatCompat } from '@eslint/eslintrc'; +import { fixupConfigRules } from '@eslint/compat'; + +const compat = new FlatCompat({ + baseDirectory: __dirname, +}); + +export default [ + ...fixupConfigRules(compat.extends('eslint-config-airbnb-base/legacy')), + { + name: '@lmc-eu/eslint-config-base/legacy', + + rules: {}, + }, +]; diff --git a/packages/eslint-config-base/optional.js b/packages/eslint-config-base/optional.js index 66824f85..ce5316b3 100644 --- a/packages/eslint-config-base/optional.js +++ b/packages/eslint-config-base/optional.js @@ -1,193 +1,195 @@ -const globs = require('./globs'); - -module.exports = { - extends: ['plugin:jsdoc/recommended'], - - plugins: ['import', 'jsdoc'], - - rules: { - // Require Consistent Returns - // This rule is aimed at ensuring all return statements either specify a value or don't specify - // a value. - // https://eslint.org/docs/rules/consistent-return - 'consistent-return': [ - 'warn', - { - treatUndefinedAsUnspecified: true, - }, - ], - - // Limit Maximum Depth - // This rule aims to reduce the complexity of your code by allowing you to configure the maximum - // depth blocks can be nested in a function. - // https://eslint.org/docs/rules/max-depth - 'max-depth': ['warn', 5], - - // Require Function Expressions to have a Name - // If you provide the optional name for a function expression then you will get the name of the - // function expression in the stack trace. - // If you are tempted to create anonymous function expression, consider using arrow function - // instead. - // https://eslint.org/docs/rules/func-names - 'func-names': ['warn', 'as-needed'], - - // Disallow Use of `undefined` Variable - // In ECMAScript 3 it was possible to overwrite the value of undefined. While ECMAScript 5 - // disallows overwriting undefined, it's still possible to shadow `undefined`. - // https://eslint.org/docs/rules/no-undefined - 'no-undefined': 'warn', - - // Require symbol description - // This rule requires a description when creating symbols. Using description promotes easier - // debugging - when a symbol is logged the description is used. - // https://eslint.org/docs/rules/symbol-description - 'symbol-description': 'warn', - - // Reports if a resolved path is imported more than once - // https://eslint.org/docs/rules/no-duplicate-imports - 'import/no-duplicates': 'warn', - - // Require space before/after arrow function's arrow - // https://eslint.org/docs/rules/arrow-spacing - 'arrow-spacing': 'error', // airbnb error - - // Enforce spacing inside single-line blocks - // https://eslint.org/docs/rules/block-spacing - 'block-spacing': 'error', // airbnb error - - // Specify curly brace conventions for all control statements - // https://eslint.org/docs/rules/curly - curly: 'error', // airbnb error - - // Enforce spacing between functions and their invocations - // https://eslint.org/docs/rules/func-call-spacing - 'func-call-spacing': 'error', // airbnb error - - // https://eslint.org/docs/rules/function-call-argument-newline - 'function-call-argument-newline': ['error', 'consistent'], // airbnb off - - // Enforces spacing between keys and values in object literal properties - // https://eslint.org/docs/rules/key-spacing - 'key-spacing': 'error', // airnb error - - // Require a space before & after certain keywords - // https://eslint.org/docs/rules/keyword-spacing - 'keyword-spacing': 'error', // airbnb error - - // Require or disallow space before blocks - // https://eslint.org/docs/rules/space-before-blocks - 'space-before-blocks': 'error', // airbnb error - - // Require or disallow space before function opening parenthesis - // https://eslint.org/docs/rules/space-before-function-paren - 'space-before-function-paren': [ - // airbnb error - 'error', - { - anonymous: 'always', - named: 'never', - asyncArrow: 'always', - }, - ], - - // Require spaces around operators - // https://eslint.org/docs/rules/space-infix-ops - 'space-infix-ops': 'error', // airbnb error - - // Require or disallow a space immediately following the // or /* in a comment - // https://eslint.org/docs/rules/spaced-comment - 'spaced-comment': 'error', // airbnb error - - // Require or disallow strict mode directives - // https://eslint.org/docs/rules/strict - strict: 'error', // airbnb error - - // Require an empty line before return statements - // https://eslint.org/docs/rules/newline-before-return - 'newline-before-return': 'error', // airbnb off - - // Disallow duplicate module imports - // https://eslint.org/docs/rules/no-duplicate-imports - 'no-duplicate-imports': 'error', // airbnb off - - // Disallow empty block statements - // https://eslint.org/docs/rules/no-empty - 'no-empty': 'error', // airbnb error - - // Disallow unnecessary calls to .bind() - // https://eslint.org/docs/rules/no-extra-bind - 'no-extra-bind': 'error', // airbnb error - - // Disallow unnecessary semicolons - // http://eslint.org/docs/rules/no-extra-semi - 'no-extra-semi': 'error', // airbnb error - - // Disallow multiple spaces - // http://eslint.org/docs/rules/no-multi-spaces - 'no-multi-spaces': 'error', // airbnb error - - // Disallow multiple empty lines - // http://eslint.org/docs/rules/no-multiple-empty-lines - 'no-multiple-empty-lines': [ - 'error', - { - max: 1, - }, - ], - - // Disallow trailing whitespace at the end of lines - // http://eslint.org/docs/rules/no-trailing-spaces - 'no-trailing-spaces': 'error', // airbnb error - - // Disallow dangling underscores in identifiers - // http://eslint.org/docs/rules/no-trailing-spaces - 'no-underscore-dangle': 'error', // airbnb error - - // Disallow whitespace before properties - // http://eslint.org/docs/rules/no-whitespace-before-property - 'no-whitespace-before-property': 'error', // airbnb error - - // Enforce consistent line breaks inside braces - // http://eslint.org/docs/rules/object-curly-newline - 'object-curly-newline': [ - // airbnb error - 'error', - { consistent: true }, - ], - - // Disallow reassigning function parameters - // allow only reassigment of properties like in DOM object - // https://eslint.org/docs/rules/no-param-reassign - 'no-param-reassign': ['error', { props: true }], // airbnb error - - // Requires that each @param tag has a description value. - // it is better to focus on descriptive variable name - // and not to require an useless comments which should be redundant - // @see: https://github.com/lmc-eu/cookie-consent-manager/pull/120 - // https://github.com/gajus/eslint-plugin-jsdoc#require-param-description - 'jsdoc/require-param-description': ['off'], - - // Requires that each @returns tag has a description value. - // it is better to focus on descriptive variable name - // and not to require an useless comments which should be redundant - // @see: https://github.com/lmc-eu/cookie-consent-manager/pull/120 - // https://github.com/gajus/eslint-plugin-jsdoc#require-returns-description - 'jsdoc/require-returns-description': ['off'], - - // Require an empty line after description to ensure better readability - // @see: https://github.com/lmc-eu/code-quality-tools/issues/158 - // https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/tag-lines.md - 'jsdoc/tag-lines': ['warn', 'any', { startLines: 1 }], - }, +import jsdoc from 'eslint-plugin-jsdoc'; +import globs from './globs.js'; + +export default [ + jsdoc.configs['flat/recommended'], + { + name: '@lmc-eu/eslint-config-base/optional', + plugins: { + jsdoc, + }, - overrides: [ - { - files: globs.tests, + rules: { + // Require Consistent Returns + // This rule is aimed at ensuring all return statements either specify a value or don't specify + // a value. + // https://eslint.org/docs/rules/consistent-return + 'consistent-return': [ + 'warn', + { + treatUndefinedAsUnspecified: true, + }, + ], + + // Limit Maximum Depth + // This rule aims to reduce the complexity of your code by allowing you to configure the maximum + // depth blocks can be nested in a function. + // https://eslint.org/docs/rules/max-depth + 'max-depth': ['warn', 5], + + // Require Function Expressions to have a Name + // If you provide the optional name for a function expression then you will get the name of the + // function expression in the stack trace. + // If you are tempted to create anonymous function expression, consider using arrow function + // instead. + // https://eslint.org/docs/rules/func-names + 'func-names': ['warn', 'as-needed'], + + // Disallow Use of `undefined` Variable + // In ECMAScript 3 it was possible to overwrite the value of undefined. While ECMAScript 5 + // disallows overwriting undefined, it's still possible to shadow `undefined`. + // https://eslint.org/docs/rules/no-undefined + 'no-undefined': 'warn', + + // Require symbol description + // This rule requires a description when creating symbols. Using description promotes easier + // debugging - when a symbol is logged the description is used. + // https://eslint.org/docs/rules/symbol-description + 'symbol-description': 'warn', + + // Reports if a resolved path is imported more than once + // https://eslint.org/docs/rules/no-duplicate-imports + 'import/no-duplicates': 'warn', + + // Require space before/after arrow function's arrow + // https://eslint.org/docs/rules/arrow-spacing + 'arrow-spacing': 'error', // airbnb error + + // Enforce spacing inside single-line blocks + // https://eslint.org/docs/rules/block-spacing + 'block-spacing': 'error', // airbnb error + + // Specify curly brace conventions for all control statements + // https://eslint.org/docs/rules/curly + curly: 'error', // airbnb error + + // Enforce spacing between functions and their invocations + // https://eslint.org/docs/rules/func-call-spacing + 'func-call-spacing': 'error', // airbnb error + + // https://eslint.org/docs/rules/function-call-argument-newline + 'function-call-argument-newline': ['error', 'consistent'], // airbnb off + + // Enforces spacing between keys and values in object literal properties + // https://eslint.org/docs/rules/key-spacing + 'key-spacing': 'error', // airnb error + + // Require a space before & after certain keywords + // https://eslint.org/docs/rules/keyword-spacing + 'keyword-spacing': 'error', // airbnb error + + // Require or disallow space before blocks + // https://eslint.org/docs/rules/space-before-blocks + 'space-before-blocks': 'error', // airbnb error + + // Require or disallow space before function opening parenthesis + // https://eslint.org/docs/rules/space-before-function-paren + 'space-before-function-paren': [ + // airbnb error + 'error', + { + anonymous: 'always', + named: 'never', + asyncArrow: 'always', + }, + ], + + // Require spaces around operators + // https://eslint.org/docs/rules/space-infix-ops + 'space-infix-ops': 'error', // airbnb error + + // Require or disallow a space immediately following the // or /* in a comment + // https://eslint.org/docs/rules/spaced-comment + 'spaced-comment': 'error', // airbnb error + + // Require or disallow strict mode directives + // https://eslint.org/docs/rules/strict + strict: 'error', // airbnb error + + // Require an empty line before return statements + // https://eslint.org/docs/rules/newline-before-return + 'newline-before-return': 'error', // airbnb off + + // Disallow duplicate module imports + // https://eslint.org/docs/rules/no-duplicate-imports + 'no-duplicate-imports': 'error', // airbnb off + + // Disallow empty block statements + // https://eslint.org/docs/rules/no-empty + 'no-empty': 'error', // airbnb error + + // Disallow unnecessary calls to .bind() + // https://eslint.org/docs/rules/no-extra-bind + 'no-extra-bind': 'error', // airbnb error + + // Disallow unnecessary semicolons + // http://eslint.org/docs/rules/no-extra-semi + 'no-extra-semi': 'error', // airbnb error + + // Disallow multiple spaces + // http://eslint.org/docs/rules/no-multi-spaces + 'no-multi-spaces': 'error', // airbnb error + + // Disallow multiple empty lines + // http://eslint.org/docs/rules/no-multiple-empty-lines + 'no-multiple-empty-lines': [ + 'error', + { + max: 1, + }, + ], + + // Disallow trailing whitespace at the end of lines + // http://eslint.org/docs/rules/no-trailing-spaces + 'no-trailing-spaces': 'error', // airbnb error + + // Disallow dangling underscores in identifiers + // http://eslint.org/docs/rules/no-trailing-spaces + 'no-underscore-dangle': 'error', // airbnb error + + // Disallow whitespace before properties + // http://eslint.org/docs/rules/no-whitespace-before-property + 'no-whitespace-before-property': 'error', // airbnb error + + // Enforce consistent line breaks inside braces + // http://eslint.org/docs/rules/object-curly-newline + 'object-curly-newline': [ + // airbnb error + 'error', + { consistent: true }, + ], + + // Disallow reassigning function parameters + // allow only reassigment of properties like in DOM object + // https://eslint.org/docs/rules/no-param-reassign + 'no-param-reassign': ['error', { props: true }], // airbnb error + + // Requires that each @param tag has a description value. + // it is better to focus on descriptive variable name + // and not to require an useless comments which should be redundant + // @see: https://github.com/lmc-eu/cookie-consent-manager/pull/120 + // https://github.com/gajus/eslint-plugin-jsdoc#require-param-description + 'jsdoc/require-param-description': ['off'], + + // Requires that each @returns tag has a description value. + // it is better to focus on descriptive variable name + // and not to require an useless comments which should be redundant + // @see: https://github.com/lmc-eu/cookie-consent-manager/pull/120 + // https://github.com/gajus/eslint-plugin-jsdoc#require-returns-description + 'jsdoc/require-returns-description': ['off'], + + // Require an empty line after description to ensure better readability + // @see: https://github.com/lmc-eu/code-quality-tools/issues/158 + // https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/tag-lines.md + 'jsdoc/tag-lines': ['warn', 'any', { startLines: 1 }], + }, + }, + { + files: globs.tests, - rules: { - // Do not require function names in test files - 'func-names': 'off', - }, + rules: { + // Do not require function names in test files + 'func-names': 'off', }, - ], -}; + }, +]; diff --git a/packages/eslint-config-base/package.json b/packages/eslint-config-base/package.json index 3fd07a7a..5a05e4eb 100644 --- a/packages/eslint-config-base/package.json +++ b/packages/eslint-config-base/package.json @@ -14,8 +14,17 @@ "publishConfig": { "access": "public" }, + "type": "module", "engines": { - "node": "^16 || ^18 || >=20" + "node": ">=20" + }, + "exports": { + ".": "./index.js", + "./optional": "./optional.js", + "./globs": "./globs.js", + "./legacy": "./legacy.js", + "./whitespace": "./whitespace.js", + "./settings": "./settings.js" }, "repository": { "type": "git", @@ -25,11 +34,13 @@ "url": "https://github.com/lmc-eu/code-quality-tools/issues" }, "dependencies": { + "@eslint/compat": "^1.3.1", + "@eslint/eslintrc": "^3.3.1", "eslint-config-airbnb-base": "^15.0.0", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-jsdoc": "^46.0.0" + "eslint-plugin-import": "^2.32.0", + "eslint-plugin-jsdoc": "^51.4.1" }, "peerDependencies": { - "eslint": "^8.1.0" + "eslint": "^9.0.0" } } diff --git a/packages/eslint-config-base/rules/best-practices.js b/packages/eslint-config-base/rules/best-practices.js index 5ba1c860..c636cbec 100644 --- a/packages/eslint-config-base/rules/best-practices.js +++ b/packages/eslint-config-base/rules/best-practices.js @@ -1,4 +1,4 @@ -module.exports = { +export default { rules: { // Require return statements to either always or never specify values // https://eslint.org/docs/rules/consistent-return diff --git a/packages/eslint-config-base/rules/errors.js b/packages/eslint-config-base/rules/errors.js index 152a5de0..f264c391 100644 --- a/packages/eslint-config-base/rules/errors.js +++ b/packages/eslint-config-base/rules/errors.js @@ -1,4 +1,4 @@ -module.exports = { +export default { rules: { // Disallow Use of console // In general, you should use a logging library which offers more flexibility in terms of log diff --git a/packages/eslint-config-base/rules/es6.js b/packages/eslint-config-base/rules/es6.js index c4c6f8af..d6a5eb88 100644 --- a/packages/eslint-config-base/rules/es6.js +++ b/packages/eslint-config-base/rules/es6.js @@ -1,4 +1,4 @@ -module.exports = { +export default { rules: { // Require braces in arrow function body // This rule can enforce the use of braces around arrow function body. diff --git a/packages/eslint-config-base/rules/imports.js b/packages/eslint-config-base/rules/imports.js index 4b58a959..c912161f 100644 --- a/packages/eslint-config-base/rules/imports.js +++ b/packages/eslint-config-base/rules/imports.js @@ -1,4 +1,4 @@ -module.exports = { +export default { rules: { // Require modules with a single export to use a default export // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/prefer-default-export.md diff --git a/packages/eslint-config-base/rules/node.js b/packages/eslint-config-base/rules/node.js index f8c3771e..4f00b08c 100644 --- a/packages/eslint-config-base/rules/node.js +++ b/packages/eslint-config-base/rules/node.js @@ -1,3 +1,3 @@ -module.exports = { +export default { rules: {}, }; diff --git a/packages/eslint-config-base/rules/strict.js b/packages/eslint-config-base/rules/strict.js index 1a025724..5ca9712e 100644 --- a/packages/eslint-config-base/rules/strict.js +++ b/packages/eslint-config-base/rules/strict.js @@ -1,4 +1,4 @@ -module.exports = { +export default { rules: { // Require or disallow strict mode directives // https://eslint.org/docs/rules/strict diff --git a/packages/eslint-config-base/rules/style.js b/packages/eslint-config-base/rules/style.js index edc95621..c37e929e 100644 --- a/packages/eslint-config-base/rules/style.js +++ b/packages/eslint-config-base/rules/style.js @@ -1,4 +1,4 @@ -module.exports = { +export default { rules: { // disallow certain syntax forms // https://eslint.org/docs/rules/no-restricted-syntax diff --git a/packages/eslint-config-base/rules/variables.js b/packages/eslint-config-base/rules/variables.js index b3d00e22..985e9bf0 100644 --- a/packages/eslint-config-base/rules/variables.js +++ b/packages/eslint-config-base/rules/variables.js @@ -1,4 +1,4 @@ -module.exports = { +export default { rules: { // Disallow Early Use // This rule will warn when it encounters a reference to an identifier that has not been yet diff --git a/packages/eslint-config-base/settings.js b/packages/eslint-config-base/settings.js new file mode 100644 index 00000000..3c9ade07 --- /dev/null +++ b/packages/eslint-config-base/settings.js @@ -0,0 +1,9 @@ +const settings = { + 'import/resolver': { + node: { + extensions: ['.mjs', '.cjs', '.js', '.json', '.node'], + }, + }, +}; + +export default settings; diff --git a/packages/eslint-config-base/whitespace.js b/packages/eslint-config-base/whitespace.js index cf8f6ad0..bff75703 100644 --- a/packages/eslint-config-base/whitespace.js +++ b/packages/eslint-config-base/whitespace.js @@ -1,4 +1,15 @@ -module.exports = { - extends: ['eslint-config-airbnb-base/whitespace'].map(require.resolve), - rules: {}, -}; +import { FlatCompat } from '@eslint/eslintrc'; +import { fixupConfigRules } from '@eslint/compat'; + +const compat = new FlatCompat({ + baseDirectory: __dirname, +}); + +export default [ + ...fixupConfigRules(compat.extends('eslint-config-airbnb-base/whitespace')), + { + name: '@lmc-eu/eslint-config-base/whitespace', + + rules: {}, + }, +]; diff --git a/packages/eslint-config-jest/README.md b/packages/eslint-config-jest/README.md index d90dfe20..6d91a668 100644 --- a/packages/eslint-config-jest/README.md +++ b/packages/eslint-config-jest/README.md @@ -18,15 +18,15 @@ yarn add @lmc-eu/eslint-config-jest -D ## Usage -Create a _.eslintrc.js_ file with the following contents: +Create a _eslint.config.js_ file with the following contents: ```js -module.exports = { - extends: [ - // ... (base eslint config) - '@lmc-eu/eslint-config-jest', - ], -}; +// eslint.config.js + +import { defineConfig } from 'eslint/config'; +import jest from '@lmc-eu/eslint-config-jest'; + +export default defineConfig([, /* other eslint configs */ ...jest]); ``` The shareable config can be customized in your [**eslint** configuration file](https://eslint.org/docs/user-guide/configuring). diff --git a/packages/eslint-config-jest/index.js b/packages/eslint-config-jest/index.js index 962e9a21..0c2bb20f 100644 --- a/packages/eslint-config-jest/index.js +++ b/packages/eslint-config-jest/index.js @@ -1,19 +1,25 @@ -const globs = require('@lmc-eu/eslint-config-base/globs'); +import { FlatCompat } from '@eslint/eslintrc'; +import globs from '@lmc-eu/eslint-config-base/globs'; +import jest from 'eslint-plugin-jest'; +import { fixupPluginRules } from '@eslint/compat'; -module.exports = { - overrides: [ - { - files: [...globs.tests, 'config/jest/**'], +const compat = new FlatCompat(); - plugins: ['jest', 'jest-formatting'], +export default [ + jest.configs['flat/recommended'], + jest.configs['flat/style'], + ...fixupPluginRules(compat.extends('plugin:jest-formatting/recommended')), + { + files: [...globs.tests, 'config/jest/**'], - env: { + plugins: { jest }, + + languageOptions: { + globals: { jest: true, }, - - extends: ['plugin:jest/recommended', 'plugin:jest/style', 'plugin:jest-formatting/recommended'], - - rules: {}, }, - ], -}; + + rules: {}, + }, +]; diff --git a/packages/eslint-config-jest/package.json b/packages/eslint-config-jest/package.json index 497e03ed..b22a2ccd 100644 --- a/packages/eslint-config-jest/package.json +++ b/packages/eslint-config-jest/package.json @@ -15,22 +15,28 @@ "access": "public" }, "engines": { - "node": "^16 || ^18 || >=20" + "node": ">=20" + }, + "exports": { + ".": "./index.js" }, "repository": { "type": "git", "url": "git+https://github.com/lmc-eu/code-quality-tools.git", "directory": "packages/eslint-config-jest" }, + "type": "module", "bugs": { "url": "https://github.com/lmc-eu/code-quality-tools/issues" }, "dependencies": { - "@lmc-eu/eslint-config-base": "^3.1.3", - "eslint-plugin-jest": "^27.0.0", + "@eslint/compat": "^1.3.1", + "@eslint/eslintrc": "^3.3.1", + "@lmc-eu/eslint-config-base": "3.1.3", + "eslint-plugin-jest": "^29.0.1", "eslint-plugin-jest-formatting": "^3.1.0" }, "peerDependencies": { - "eslint": "^8.1.0" + "eslint": "^9.31.0" } } diff --git a/packages/eslint-config-react/README.md b/packages/eslint-config-react/README.md index f76e9a43..4b940858 100644 --- a/packages/eslint-config-react/README.md +++ b/packages/eslint-config-react/README.md @@ -27,39 +27,15 @@ Use this ruleset together with the above ruleset. Provides additional insights i ## Recommended ESLint Configuration ```js -// .eslintrc.js +// eslint.config.mjs -'use strict'; +import { defineConfig } from 'eslint/config'; +import base from '@lmc-eu/eslint-config-react'; +import optional from '@lmc-eu/eslint-config-react/optional'; -module.exports = { - extends: ['@lmc-eu/eslint-config-react', '@lmc-eu/eslint-config-react/optional'], -}; +export default defineConfig([...base, ...optional]); ``` -
-.eslintrc or .eslintrc.json - -```json -{ - "extends": ["@lmc-eu/eslint-config-react", "@lmc-eu/eslint-config-react/optional"] -} -``` - -
- -
-package.json - -```json -{ - "eslintConfig": { - "extends": ["@lmc-eu/eslint-config-react", "@lmc-eu/eslint-config-react/optional"] - } -} -``` - -
- It is also recommended that you lint the whole project folder (that is. `npx eslint .`) instead of just some folders (that is. `npx eslint src test`) and create an _.eslintignore_ file excluding any unwanted lint folders. Doing so will allow new directories to be created without worrying about having to update your diff --git a/packages/eslint-config-react/base.js b/packages/eslint-config-react/base.js index d130b5e4..6b68bd18 100644 --- a/packages/eslint-config-react/base.js +++ b/packages/eslint-config-react/base.js @@ -1,4 +1,3 @@ -module.exports = { - extends: ['@lmc-eu/eslint-config-base'].map(require.resolve), - rules: {}, -}; +import base from '@lmc-eu/eslint-config-base'; + +export default base; diff --git a/packages/eslint-config-react/index.js b/packages/eslint-config-react/index.js index e278c34e..bc623845 100644 --- a/packages/eslint-config-react/index.js +++ b/packages/eslint-config-react/index.js @@ -1,39 +1,46 @@ -const base = require('@lmc-eu/eslint-config-base'); +import base from '@lmc-eu/eslint-config-base'; +import settings from '@lmc-eu/eslint-config-base/settings'; +import babelParser from '@babel/eslint-parser'; +import react from './rules/react.js'; +import reactA11y from './rules/react-a11y.js'; +import reactHooks from './rules/react-hooks.js'; -module.exports = { - extends: ['@lmc-eu/eslint-config-base', './rules/react', './rules/react-a11y', './rules/react-hooks'].map( - require.resolve, - ), - - parser: '@babel/eslint-parser', - - env: { - browser: true, - es6: true, - }, - - parserOptions: { - ecmaVersion: 2018, - sourceType: 'module', - ecmaFeatures: { - jsx: true, - }, - babelOptions: { - presets: ['@babel/preset-react'], +export default [ + ...base, + react, + reactA11y, + reactHooks, + { + languageOptions: { + parser: babelParser, + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + ecmaFeatures: { + jsx: true, + }, + babelOptions: { + presets: ['@babel/preset-react'], + }, + }, + globals: { + browser: true, + es6: true, + }, }, - }, - settings: { - react: { - version: 'detect', - }, + rules: {}, - 'import/resolver': { - node: { - extensions: ['.jsx', ...base.settings['import/resolver'].node.extensions], + settings: { + react: { + version: 'detect', + }, + + 'import/resolver': { + node: { + extensions: ['.jsx', ...settings['import/resolver'].node.extensions], + }, }, }, }, - - rules: {}, -}; +]; diff --git a/packages/eslint-config-react/legacy.js b/packages/eslint-config-react/legacy.js index df6f1c2d..2ee9676d 100644 --- a/packages/eslint-config-react/legacy.js +++ b/packages/eslint-config-react/legacy.js @@ -1,4 +1,3 @@ -module.exports = { - extends: ['@lmc-eu/eslint-config-base/legacy'].map(require.resolve), - rules: {}, -}; +import baseLegacy from '@lmc-eu/eslint-config-base/legacy'; + +export default baseLegacy; diff --git a/packages/eslint-config-react/optional.js b/packages/eslint-config-react/optional.js index d49bec75..ccff5f40 100644 --- a/packages/eslint-config-react/optional.js +++ b/packages/eslint-config-react/optional.js @@ -1,4 +1,3 @@ -module.exports = { - extends: ['@lmc-eu/eslint-config-base/optional'].map(require.resolve), - rules: {}, -}; +import baseOptional from '@lmc-eu/eslint-config-base/optional'; + +export default baseOptional; diff --git a/packages/eslint-config-react/package.json b/packages/eslint-config-react/package.json index 10087e56..bbe5d2f5 100644 --- a/packages/eslint-config-react/package.json +++ b/packages/eslint-config-react/package.json @@ -15,7 +15,14 @@ "access": "public" }, "engines": { - "node": "^16 || ^18 || >=20" + "node": ">=20" + }, + "exports": { + ".": "./index.js", + "./optional": "./optional.js", + "./legacy": "./legacy.js", + "./base": "./base.js", + "./whitespace": "./whitespace.js" }, "repository": { "type": "git", @@ -25,17 +32,19 @@ "bugs": { "url": "https://github.com/lmc-eu/code-quality-tools/issues" }, + "type": "module", "dependencies": { "@babel/core": "^7.16.5", "@babel/eslint-parser": "^7.16.5", - "@lmc-eu/eslint-config-base": "^3.1.3", - "eslint-config-airbnb": "^19.0.2" + "@eslint/eslintrc": "^3.3.1", + "@lmc-eu/eslint-config-base": "3.1.3", + "eslint-config-airbnb": "^19.0.4" }, "peerDependencies": { "@babel/preset-react": "^7.16.5", - "eslint": "^8.1.0", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.27.0", - "eslint-plugin-react-hooks": "^4.3.0" + "eslint": "^9.0.0", + "eslint-plugin-jsx-a11y": "^6.10.2", + "eslint-plugin-react": "^7.37.5", + "eslint-plugin-react-hooks": "^5.2.0" } } diff --git a/packages/eslint-config-react/rules/react-a11y.js b/packages/eslint-config-react/rules/react-a11y.js index e18c10bb..e0681112 100644 --- a/packages/eslint-config-react/rules/react-a11y.js +++ b/packages/eslint-config-react/rules/react-a11y.js @@ -1,5 +1,11 @@ -module.exports = { - extends: ['eslint-config-airbnb/rules/react-a11y'].map(require.resolve), +import { FlatCompat } from '@eslint/eslintrc'; + +const compat = new FlatCompat({ + baseDirectory: __dirname, +}); + +export default { + extends: compat.extends('eslint-config-airbnb/rules/react-a11y'), rules: { // Enforce all anchors are valid, navigable elements // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/anchor-is-valid.md diff --git a/packages/eslint-config-react/rules/react-hooks.js b/packages/eslint-config-react/rules/react-hooks.js index bcbddb57..1d148ebb 100644 --- a/packages/eslint-config-react/rules/react-hooks.js +++ b/packages/eslint-config-react/rules/react-hooks.js @@ -1,5 +1,11 @@ -module.exports = { - extends: ['eslint-config-airbnb/rules/react-hooks'].map(require.resolve), +import { FlatCompat } from '@eslint/eslintrc'; + +const compat = new FlatCompat({ + baseDirectory: __dirname, +}); + +export default { + extends: compat.extends('eslint-config-airbnb/rules/react-hooks'), rules: { // Plugin enforces the Rules of Hooks (https://reactjs.org/docs/hooks-rules.html) 'react-hooks/exhaustive-deps': 'warn', diff --git a/packages/eslint-config-react/rules/react.js b/packages/eslint-config-react/rules/react.js index 0014d12e..e02a4e5a 100644 --- a/packages/eslint-config-react/rules/react.js +++ b/packages/eslint-config-react/rules/react.js @@ -1,5 +1,11 @@ -module.exports = { - extends: ['eslint-config-airbnb/rules/react'].map(require.resolve), +import { FlatCompat } from '@eslint/eslintrc'; + +const compat = new FlatCompat({ + baseDirectory: __dirname, +}); + +export default { + extends: compat.extends('eslint-config-airbnb/rules/react'), rules: { // This rule allows you to enforce curly braces or disallow unnecessary curly braces // in JSX props and/or children diff --git a/packages/eslint-config-react/whitespace.js b/packages/eslint-config-react/whitespace.js index fa401383..782460e5 100644 --- a/packages/eslint-config-react/whitespace.js +++ b/packages/eslint-config-react/whitespace.js @@ -1,4 +1,12 @@ -module.exports = { - extends: ['eslint-config-airbnb/whitespace'].map(require.resolve), - rules: {}, -}; +import { FlatCompat } from '@eslint/eslintrc'; + +const compat = new FlatCompat({ + baseDirectory: __dirname, +}); + +export default [ + { + extends: compat.extends('eslint-config-airbnb/whitespace'), + rules: {}, + }, +]; diff --git a/packages/eslint-config-typescript/README.md b/packages/eslint-config-typescript/README.md index 9c14d716..09e09ded 100644 --- a/packages/eslint-config-typescript/README.md +++ b/packages/eslint-config-typescript/README.md @@ -68,25 +68,31 @@ A full configuration for a TypeScript on React project: > Please note, that you need to have [eslint-config-react][eslint-config-react] installed as well ```js -// .eslintrc.js -'use strict'; - -module.exports = { - extends: [ - '@lmc-eu/react', - '@lmc-eu/react/style', - '@lmc-eu/react/optional', - '@lmc-eu/typescript', - '@lmc-eu/typescript/style', - '@lmc-eu/typescript/react', - ], - - parserOptions: { - // The project field is required in order for some TS-syntax-specific rules to function at all - // @see https://github.com/typescript-eslint/typescript-eslint/tree/master/packages/parser#configuration - project: './tsconfig.json', +// eslint.config.mjs +import { defineConfig, globalIgnores } from 'eslint/config'; +import { FlatCompat } from '@eslint/eslintrc'; +import react from '@lmc-eu/eslint-config-react'; +import reactOptional from '@lmc-eu/eslint-config-react/optional'; +import ts from '@lmc-eu/eslint-config-typescript'; +import tsReact from '@lmc-eu/eslint-config-typescript/react'; + +const compat = new FlatCompat({ + baseDirectory: import.meta.dirname, +}); + +export default defineConfig([ + ...react, + ...reactOptional, + ...ts, + ...tsReact, + { + parserOptions: { + // The project field is required in order for some TS-syntax-specific rules to function at all + // @see https://github.com/typescript-eslint/typescript-eslint/tree/master/packages/parser#configuration + project: './tsconfig.json', + }, }, -}; +]); ``` To actually lint .ts files, you must pass the `--ext` flag to ESLint: diff --git a/packages/eslint-config-typescript/index.js b/packages/eslint-config-typescript/index.js index e0554e78..f2d7b29b 100644 --- a/packages/eslint-config-typescript/index.js +++ b/packages/eslint-config-typescript/index.js @@ -1,84 +1,86 @@ -const base = require('@lmc-eu/eslint-config-base'); -const globs = require('@lmc-eu/eslint-config-base/globs'); +import base from '@lmc-eu/eslint-config-base/index'; +import settings from '@lmc-eu/eslint-config-base/settings'; +// eslint-disable-next-line import/no-unresolved +import tsEslint from 'typescript-eslint'; +// eslint-disable-next-line import/no-unresolved +import tsParser from '@typescript-eslint/parser'; +import globs from '@lmc-eu/eslint-config-base/globs'; -module.exports = { - extends: [require.resolve('@lmc-eu/eslint-config-base'), 'plugin:@typescript-eslint/recommended'], - - settings: { - // Correctly recognize .ts and .d.ts files when checking import paths against the filesystem - 'import/resolver': { - node: { - extensions: ['.ts', '.tsx', '.d.ts', ...base.settings['import/resolver'].node.extensions], +export default [ + ...base, + tsEslint.configs.recommended, + { + settings: { + // Correctly recognize .ts and .d.ts files when checking import paths against the filesystem + 'import/resolver': { + node: { + extensions: ['.ts', '.tsx', '.d.ts', ...settings['import/resolver'].node.extensions], + }, + // Correctly recognize paths defined in tsconfig.json for package aliases + typescript: {}, }, - // Correctly recognize paths defined in tsconfig.json for package aliases - typescript: {}, }, - }, - - parser: '@typescript-eslint/parser', - - parserOptions: { - ecmaVersion: 2018, - sourceType: 'module', - }, - plugins: ['@typescript-eslint'], - - env: { - es6: true, - }, + languageOptions: { + parser: tsParser, + parserOptions: { + ecmaVersion: 2018, + sourceType: 'module', + }, + globals: { + es6: true, + }, + }, - rules: { - // Disallow the declaration of empty interfaces - // An empty interface is equivalent to its supertype. If the interface does not implement a - // supertype, then the interface is equivalent to an empty object ({}). In both cases it can be - // omitted. - '@typescript-eslint/no-empty-interface': 'warn', + rules: { + // Disallow the declaration of empty interfaces + // An empty interface is equivalent to its supertype. If the interface does not implement a + // supertype, then the interface is equivalent to an empty object ({}). In both cases it can be + // omitted. + '@typescript-eslint/no-empty-interface': 'warn', - // For some reason we need to make a copy of the rule configuration object for ESLint v8.12.0 because it complains - // that the object must not have additional properties. I suspect that something is mutating our object along the - // way. - // TODO: remove this once this is fixed in ESLint - '@typescript-eslint/no-shadow': ['error', { allow: ['resolve', 'reject', 'done', 'next', 'error'] }], - 'no-shadow': 'off', + // For some reason we need to make a copy of the rule configuration object for ESLint v8.12.0 because it complains + // that the object must not have additional properties. I suspect that something is mutating our object along the + // way. + // TODO: remove this once this is fixed in ESLint + '@typescript-eslint/no-shadow': ['error', { allow: ['resolve', 'reject', 'done', 'next', 'error'] }], + 'no-shadow': 'off', - // Disallow the use of variables before they are defined - // This rule will warn when it encounters a reference to an identifier that has not yet been - // declared. - '@typescript-eslint/no-use-before-define': 'warn', - 'no-use-before-define': 'off', + // Disallow the use of variables before they are defined + // This rule will warn when it encounters a reference to an identifier that has not yet been + // declared. + '@typescript-eslint/no-use-before-define': 'warn', + 'no-use-before-define': 'off', - // Allow alter TypesScript's compiler errors only with description - // This rule will warn only when you use ts-expect-error, ts-ignore, ts-nocheck without description - // @see: https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/docs/rules/ban-ts-comment.md - '@typescript-eslint/ban-ts-comment': [ - 'warn', - { - 'ts-expect-error': 'allow-with-description', - 'ts-ignore': 'allow-with-description', - 'ts-nocheck': 'allow-with-description', - }, - ], + // Allow alter TypesScript's compiler errors only with description + // This rule will warn only when you use ts-expect-error, ts-ignore, ts-nocheck without description + // @see: https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/docs/rules/ban-ts-comment.md + '@typescript-eslint/ban-ts-comment': [ + 'warn', + { + 'ts-expect-error': 'allow-with-description', + 'ts-ignore': 'allow-with-description', + 'ts-nocheck': 'allow-with-description', + }, + ], - // TS code is mostly self-documented and having JSDoc directives for everything is redundant - // when you can easily infer return values and argument types from the code itself. - 'jsdoc/require-jsdoc': 'off', - 'jsdoc/require-returns': 'off', - 'jsdoc/require-param-type': 'off', + // TS code is mostly self-documented and having JSDoc directives for everything is redundant + // when you can easily infer return values and argument types from the code itself. + 'jsdoc/require-jsdoc': 'off', + 'jsdoc/require-returns': 'off', + 'jsdoc/require-param-type': 'off', + }, }, - - overrides: [ - { - files: ['*.d.ts'], - rules: { - 'import/no-unused-modules': 'off', - }, + { + files: ['*.d.ts'], + rules: { + 'import/no-unused-modules': 'off', }, - { - files: globs.configs, - rules: { - 'node/no-process-env': 'off', - }, + }, + { + files: globs.configs, + rules: { + 'node/no-process-env': 'off', }, - ], -}; + }, +]; diff --git a/packages/eslint-config-typescript/optional.js b/packages/eslint-config-typescript/optional.js index da58585f..ccff5f40 100644 --- a/packages/eslint-config-typescript/optional.js +++ b/packages/eslint-config-typescript/optional.js @@ -1,3 +1,3 @@ -module.exports = { - extends: require.resolve('@lmc-eu/eslint-config-base/optional'), -}; +import baseOptional from '@lmc-eu/eslint-config-base/optional'; + +export default baseOptional; diff --git a/packages/eslint-config-typescript/package.json b/packages/eslint-config-typescript/package.json index e4a8fd46..4e750d5e 100644 --- a/packages/eslint-config-typescript/package.json +++ b/packages/eslint-config-typescript/package.json @@ -17,6 +17,7 @@ "engines": { "node": "^16 || ^18 || >=20" }, + "type": "module", "repository": { "type": "git", "url": "git://github.com/lmc-eu/code-quality-tools.git" @@ -26,12 +27,15 @@ }, "main": "index.js", "dependencies": { - "@lmc-eu/eslint-config-base": "^3.1.3", - "@typescript-eslint/eslint-plugin": "^6.0.0", - "@typescript-eslint/parser": "^6.0.0", - "eslint-import-resolver-typescript": "^3.2.7" + "@lmc-eu/eslint-config-base": "3.1.3", + "@lmc-eu/eslint-config-react": "2.0.6", + "@typescript-eslint/eslint-plugin": "^8.39.0", + "@typescript-eslint/parser": "^8.39.0", + "eslint-import-resolver-typescript": "^3.2.7", + "eslint-plugin-react": "^7.37.5", + "typescript-eslint": "^8.38.0" }, "peerDependencies": { - "eslint": "^8" + "eslint": "^9.31.0" } } diff --git a/packages/eslint-config-typescript/react.js b/packages/eslint-config-typescript/react.js index e052c68e..43db8321 100644 --- a/packages/eslint-config-typescript/react.js +++ b/packages/eslint-config-typescript/react.js @@ -1,42 +1,36 @@ -const globs = require('@lmc-eu/eslint-config-base/globs'); -// We are not listing '@lmc-eu/eslint-config-react' in dependencies on purpose - -// - we don't want to spam Node.js users with unwanted React config. -// Also on the other hand we believe that React users will already have -// @lmc-eu/eslint-config-react configuration installed. -// eslint-disable-next-line import/no-extraneous-dependencies -const react = require('@lmc-eu/eslint-config-react'); +import reactConfig from '@lmc-eu/eslint-config-react'; +import globs from '@lmc-eu/eslint-config-base/globs'; -module.exports = { - rules: { - ...react.rules, - - 'react/jsx-filename-extension': ['error', { extensions: ['.js', '.jsx', '.ts', '.tsx'] }], +export default [ + ...reactConfig, + { + rules: { + 'react/jsx-filename-extension': ['error', { extensions: ['.js', '.jsx', '.ts', '.tsx'] }], + }, }, - overrides: [ - // Storybook - { - files: globs.storybook, - rules: { - '@typescript-eslint/consistent-type-assertions': 'off', - 'import/group-exports': 'off', - 'import/exports-last': 'off', - 'import/no-default-export': 'off', - }, + // Storybook + { + files: globs.storybook, + rules: { + '@typescript-eslint/consistent-type-assertions': 'off', + 'import/group-exports': 'off', + 'import/exports-last': 'off', + 'import/no-default-export': 'off', }, - // Next.js - { - files: globs.nextJs, - rules: { - 'import/no-default-export': 'off', - }, + }, + // Next.js + { + files: globs.nextJs, + rules: { + 'import/no-default-export': 'off', }, - // Tests - { - files: globs.tests, - rules: { - 'import/no-unused-modules': 'off', - 'jest/expect-expect': 'off', - }, + }, + // Tests + { + files: globs.tests, + rules: { + 'import/no-unused-modules': 'off', + 'jest/expect-expect': 'off', }, - ], -}; + }, +]; diff --git a/packages/stylelint-config/__tests__/index.test.js b/packages/stylelint-config/__tests__/index.test.js index 813a3fdf..d03e8235 100644 --- a/packages/stylelint-config/__tests__/index.test.js +++ b/packages/stylelint-config/__tests__/index.test.js @@ -3,10 +3,7 @@ import assert from 'node:assert/strict'; import fs from 'node:fs'; import { beforeEach, describe, it } from 'node:test'; - import stylelint from 'stylelint'; - -// eslint-disable-next-line import/extensions -- Specify the extension because Node is unable to detect module format. import config from '../index.js'; describe('CSS', () => { diff --git a/packages/stylelint-config/__tests__/order.test.js b/packages/stylelint-config/__tests__/order.test.js index c0cefc01..90fa943b 100644 --- a/packages/stylelint-config/__tests__/order.test.js +++ b/packages/stylelint-config/__tests__/order.test.js @@ -6,7 +6,6 @@ import { beforeEach, describe, it } from 'node:test'; import stylelint from 'stylelint'; -// eslint-disable-next-line import/extensions -- Specify the extension because Node is unable to detect module format. import config from '../rules/order.js'; describe('CSS order', () => { diff --git a/packages/stylelint-config/__tests__/scss.test.js b/packages/stylelint-config/__tests__/scss.test.js index 7a79ce6d..ba968aaa 100644 --- a/packages/stylelint-config/__tests__/scss.test.js +++ b/packages/stylelint-config/__tests__/scss.test.js @@ -6,7 +6,6 @@ import { beforeEach, describe, it } from 'node:test'; import stylelint from 'stylelint'; -// eslint-disable-next-line import/extensions -- Specify the extension because Node is unable to detect module format. import config from '../rules/scss.js'; const validScss = readFileSync('./__tests__/__fixtures__/scss-valid.scss', 'utf-8'); diff --git a/packages/stylelint-config/package.json b/packages/stylelint-config/package.json index 62eeb99b..da068be9 100644 --- a/packages/stylelint-config/package.json +++ b/packages/stylelint-config/package.json @@ -20,11 +20,7 @@ "rules/scss.js" ], "exports": { - ".": { - "import": { - "default": "./index.js" - } - }, + ".": "./index.js", "./package.json": "./package.json" }, "publishConfig": { diff --git a/yarn.lock b/yarn.lock index 84722181..0e669888 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,7 +5,7 @@ __metadata: version: 8 cacheKey: 10c0 -"@alma-oss/prettier-config@workspace:packages/prettier-config": +"@alma-oss/prettier-config@workspace:^, @alma-oss/prettier-config@workspace:packages/prettier-config": version: 0.0.0-use.local resolution: "@alma-oss/prettier-config@workspace:packages/prettier-config" peerDependencies: @@ -13,7 +13,7 @@ __metadata: languageName: unknown linkType: soft -"@almacareer/remark-config@workspace:packages/remark-config": +"@almacareer/remark-config@workspace:^, @almacareer/remark-config@workspace:packages/remark-config": version: 0.0.0-use.local resolution: "@almacareer/remark-config@workspace:packages/remark-config" dependencies: @@ -733,18 +733,20 @@ __metadata: languageName: node linkType: hard -"@es-joy/jsdoccomment@npm:~0.41.0": - version: 0.41.0 - resolution: "@es-joy/jsdoccomment@npm:0.41.0" +"@es-joy/jsdoccomment@npm:~0.52.0": + version: 0.52.0 + resolution: "@es-joy/jsdoccomment@npm:0.52.0" dependencies: + "@types/estree": "npm:^1.0.8" + "@typescript-eslint/types": "npm:^8.34.1" comment-parser: "npm:1.4.1" - esquery: "npm:^1.5.0" - jsdoc-type-pratt-parser: "npm:~4.0.0" - checksum: 10c0/1fa27531eba32e4699664da53a0865aeeda1f7e83ac156fe53b7a6b09d2f3816baa94a34845ff019c10289b09572bda5519ec917e3e241088975477fa880f72d + esquery: "npm:^1.6.0" + jsdoc-type-pratt-parser: "npm:~4.1.0" + checksum: 10c0/4def78060ef58859f31757b9d30c4939fc33e7d9ee85637a7f568c1d209c33aa0abd2cf5a3a4f3662ec5b12b85ecff2f2035d809dc93b9382a31a6dfb200d83c languageName: node linkType: hard -"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": +"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.7.0": version: 4.7.0 resolution: "@eslint-community/eslint-utils@npm:4.7.0" dependencies: @@ -755,34 +757,99 @@ __metadata: languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": +"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.12.1": version: 4.12.1 resolution: "@eslint-community/regexpp@npm:4.12.1" checksum: 10c0/a03d98c246bcb9109aec2c08e4d10c8d010256538dcb3f56610191607214523d4fb1b00aa81df830b6dffb74c5fa0be03642513a289c567949d3e550ca11cdf6 languageName: node linkType: hard -"@eslint/eslintrc@npm:^2.1.4": - version: 2.1.4 - resolution: "@eslint/eslintrc@npm:2.1.4" +"@eslint/compat@npm:^1.3.1": + version: 1.3.1 + resolution: "@eslint/compat@npm:1.3.1" + peerDependencies: + eslint: ^8.40 || 9 + peerDependenciesMeta: + eslint: + optional: true + checksum: 10c0/8dfcea5ecb854111f9c0acc23a469e0a25cdaddceb5fb40c47988c247d6e32ec199bcd00f1b8ba9ed779228526552703c4b74948169e78b78b5fd814e04b042b + languageName: node + linkType: hard + +"@eslint/config-array@npm:^0.21.0": + version: 0.21.0 + resolution: "@eslint/config-array@npm:0.21.0" + dependencies: + "@eslint/object-schema": "npm:^2.1.6" + debug: "npm:^4.3.1" + minimatch: "npm:^3.1.2" + checksum: 10c0/0ea801139166c4aa56465b309af512ef9b2d3c68f9198751bbc3e21894fe70f25fbf26e1b0e9fffff41857bc21bfddeee58649ae6d79aadcd747db0c5dca771f + languageName: node + linkType: hard + +"@eslint/config-helpers@npm:^0.3.0": + version: 0.3.0 + resolution: "@eslint/config-helpers@npm:0.3.0" + checksum: 10c0/013ae7b189eeae8b30cc2ee87bc5c9c091a9cd615579003290eb28bebad5d78806a478e74ba10b3fe08ed66975b52af7d2cd4b4b43990376412b14e5664878c8 + languageName: node + linkType: hard + +"@eslint/core@npm:^0.15.0": + version: 0.15.1 + resolution: "@eslint/core@npm:0.15.1" + dependencies: + "@types/json-schema": "npm:^7.0.15" + checksum: 10c0/abaf641940776638b8c15a38d99ce0dac551a8939310ec81b9acd15836a574cf362588eaab03ab11919bc2a0f9648b19ea8dee33bf12675eb5b6fd38bda6f25e + languageName: node + linkType: hard + +"@eslint/core@npm:^0.15.2": + version: 0.15.2 + resolution: "@eslint/core@npm:0.15.2" + dependencies: + "@types/json-schema": "npm:^7.0.15" + checksum: 10c0/c17a6dc4f5a6006ecb60165cc38bcd21fefb4a10c7a2578a0cfe5813bbd442531a87ed741da5adab5eb678e8e693fda2e2b14555b035355537e32bcec367ea17 + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^3.3.1": + version: 3.3.1 + resolution: "@eslint/eslintrc@npm:3.3.1" 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: 10c0/32f67052b81768ae876c84569ffd562491ec5a5091b0c1e1ca1e0f3c24fb42f804952fdd0a137873bc64303ba368a71ba079a6f691cee25beee9722d94cc8573 + checksum: 10c0/b0e63f3bc5cce4555f791a4e487bf999173fcf27c65e1ab6e7d63634d8a43b33c3693e79f192cbff486d7df1be8ebb2bd2edc6e70ddd486cbfa84a359a3e3b41 languageName: node linkType: hard -"@eslint/js@npm:8.57.1": - version: 8.57.1 - resolution: "@eslint/js@npm:8.57.1" - checksum: 10c0/b489c474a3b5b54381c62e82b3f7f65f4b8a5eaaed126546520bf2fede5532a8ed53212919fed1e9048dcf7f37167c8561d58d0ba4492a4244004e7793805223 +"@eslint/js@npm:9.31.0": + version: 9.31.0 + resolution: "@eslint/js@npm:9.31.0" + checksum: 10c0/f9d4c73d0fafe70679a418cbb25ab7ebcc8f1dba6c32456d6f8ba5a137d583ecff233cfe10f61f41d7d4d2220e94cff1f39fc7ed1fa3819d1888dee1cad678ea + languageName: node + linkType: hard + +"@eslint/object-schema@npm:^2.1.6": + version: 2.1.6 + resolution: "@eslint/object-schema@npm:2.1.6" + checksum: 10c0/b8cdb7edea5bc5f6a96173f8d768d3554a628327af536da2fc6967a93b040f2557114d98dbcdbf389d5a7b290985ad6a9ce5babc547f36fc1fde42e674d11a56 + languageName: node + linkType: hard + +"@eslint/plugin-kit@npm:^0.3.1": + version: 0.3.5 + resolution: "@eslint/plugin-kit@npm:0.3.5" + dependencies: + "@eslint/core": "npm:^0.15.2" + levn: "npm:^0.4.1" + checksum: 10c0/c178c1b58c574200c0fd125af3e4bc775daba7ce434ba6d1eeaf9bcb64b2e9fea75efabffb3ed3ab28858e55a016a5efa95f509994ee4341b341199ca630b89e languageName: node linkType: hard @@ -1075,14 +1142,20 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.13.0": - version: 0.13.0 - resolution: "@humanwhocodes/config-array@npm:0.13.0" +"@humanfs/core@npm:^0.19.1": + version: 0.19.1 + resolution: "@humanfs/core@npm:0.19.1" + checksum: 10c0/aa4e0152171c07879b458d0e8a704b8c3a89a8c0541726c6b65b81e84fd8b7564b5d6c633feadc6598307d34564bd53294b533491424e8e313d7ab6c7bc5dc67 + languageName: node + linkType: hard + +"@humanfs/node@npm:^0.16.6": + version: 0.16.6 + resolution: "@humanfs/node@npm:0.16.6" dependencies: - "@humanwhocodes/object-schema": "npm:^2.0.3" - debug: "npm:^4.3.1" - minimatch: "npm:^3.0.5" - checksum: 10c0/205c99e756b759f92e1f44a3dc6292b37db199beacba8f26c2165d4051fe73a4ae52fdcfd08ffa93e7e5cb63da7c88648f0e84e197d154bbbbe137b2e0dd332e + "@humanfs/core": "npm:^0.19.1" + "@humanwhocodes/retry": "npm:^0.3.0" + checksum: 10c0/8356359c9f60108ec204cbd249ecd0356667359b2524886b357617c4a7c3b6aace0fd5a369f63747b926a762a88f8a25bc066fa1778508d110195ce7686243e1 languageName: node linkType: hard @@ -1093,10 +1166,17 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/object-schema@npm:^2.0.3": - version: 2.0.3 - resolution: "@humanwhocodes/object-schema@npm:2.0.3" - checksum: 10c0/80520eabbfc2d32fe195a93557cef50dfe8c8905de447f022675aaf66abc33ae54098f5ea78548d925aa671cd4ab7c7daa5ad704fe42358c9b5e7db60f80696c +"@humanwhocodes/retry@npm:^0.3.0": + version: 0.3.1 + resolution: "@humanwhocodes/retry@npm:0.3.1" + checksum: 10c0/f0da1282dfb45e8120480b9e2e275e2ac9bbe1cf016d046fdad8e27cc1285c45bb9e711681237944445157b430093412b4446c1ab3fc4bb037861b5904101d3b + languageName: node + linkType: hard + +"@humanwhocodes/retry@npm:^0.4.2": + version: 0.4.3 + resolution: "@humanwhocodes/retry@npm:0.4.3" + checksum: 10c0/3775bb30087d4440b3f7406d5a057777d90e4b9f435af488a4923ef249e93615fb78565a85f173a186a076c7706a81d0d57d563a2624e4de2c5c9c66c486ce42 languageName: node linkType: hard @@ -1573,15 +1653,17 @@ __metadata: languageName: unknown linkType: soft -"@lmc-eu/eslint-config-base@npm:^3.1.3, @lmc-eu/eslint-config-base@workspace:packages/eslint-config-base": +"@lmc-eu/eslint-config-base@npm:3.1.3, @lmc-eu/eslint-config-base@npm:^3.1.3, @lmc-eu/eslint-config-base@workspace:packages/eslint-config-base": version: 0.0.0-use.local resolution: "@lmc-eu/eslint-config-base@workspace:packages/eslint-config-base" dependencies: + "@eslint/compat": "npm:^1.3.1" + "@eslint/eslintrc": "npm:^3.3.1" eslint-config-airbnb-base: "npm:^15.0.0" - eslint-plugin-import: "npm:^2.25.2" - eslint-plugin-jsdoc: "npm:^46.0.0" + eslint-plugin-import: "npm:^2.32.0" + eslint-plugin-jsdoc: "npm:^51.4.1" peerDependencies: - eslint: ^8.1.0 + eslint: ^9.0.0 languageName: unknown linkType: soft @@ -1601,28 +1683,31 @@ __metadata: version: 0.0.0-use.local resolution: "@lmc-eu/eslint-config-jest@workspace:packages/eslint-config-jest" dependencies: - "@lmc-eu/eslint-config-base": "npm:^3.1.3" - eslint-plugin-jest: "npm:^27.0.0" + "@eslint/compat": "npm:^1.3.1" + "@eslint/eslintrc": "npm:^3.3.1" + "@lmc-eu/eslint-config-base": "npm:3.1.3" + eslint-plugin-jest: "npm:^29.0.1" eslint-plugin-jest-formatting: "npm:^3.1.0" peerDependencies: - eslint: ^8.1.0 + eslint: ^9.31.0 languageName: unknown linkType: soft -"@lmc-eu/eslint-config-react@workspace:packages/eslint-config-react": +"@lmc-eu/eslint-config-react@npm:2.0.6, @lmc-eu/eslint-config-react@workspace:packages/eslint-config-react": version: 0.0.0-use.local resolution: "@lmc-eu/eslint-config-react@workspace:packages/eslint-config-react" dependencies: "@babel/core": "npm:^7.16.5" "@babel/eslint-parser": "npm:^7.16.5" - "@lmc-eu/eslint-config-base": "npm:^3.1.3" - eslint-config-airbnb: "npm:^19.0.2" + "@eslint/eslintrc": "npm:^3.3.1" + "@lmc-eu/eslint-config-base": "npm:3.1.3" + eslint-config-airbnb: "npm:^19.0.4" peerDependencies: "@babel/preset-react": ^7.16.5 - eslint: ^8.1.0 - eslint-plugin-jsx-a11y: ^6.5.1 - eslint-plugin-react: ^7.27.0 - eslint-plugin-react-hooks: ^4.3.0 + eslint: ^9.0.0 + eslint-plugin-jsx-a11y: ^6.10.2 + eslint-plugin-react: ^7.37.5 + eslint-plugin-react-hooks: ^5.2.0 languageName: unknown linkType: soft @@ -1630,12 +1715,15 @@ __metadata: version: 0.0.0-use.local resolution: "@lmc-eu/eslint-config-typescript@workspace:packages/eslint-config-typescript" dependencies: - "@lmc-eu/eslint-config-base": "npm:^3.1.3" - "@typescript-eslint/eslint-plugin": "npm:^6.0.0" - "@typescript-eslint/parser": "npm:^6.0.0" + "@lmc-eu/eslint-config-base": "npm:3.1.3" + "@lmc-eu/eslint-config-react": "npm:2.0.6" + "@typescript-eslint/eslint-plugin": "npm:^8.39.0" + "@typescript-eslint/parser": "npm:^8.39.0" eslint-import-resolver-typescript: "npm:^3.2.7" + eslint-plugin-react: "npm:^7.37.5" + typescript-eslint: "npm:^8.38.0" peerDependencies: - eslint: ^8 + eslint: ^9.31.0 languageName: unknown linkType: soft @@ -1663,8 +1751,8 @@ __metadata: linkType: soft "@modelcontextprotocol/sdk@npm:^1.15.1": - version: 1.17.1 - resolution: "@modelcontextprotocol/sdk@npm:1.17.1" + version: 1.17.2 + resolution: "@modelcontextprotocol/sdk@npm:1.17.2" dependencies: ajv: "npm:^6.12.6" content-type: "npm:^1.0.5" @@ -1678,7 +1766,7 @@ __metadata: raw-body: "npm:^3.0.0" zod: "npm:^3.23.8" zod-to-json-schema: "npm:^3.24.1" - checksum: 10c0/bddee1c4a90adb2ee3f89f5598f0499841b1ad8b4d9a52b2b0afac3009918570d72240588a17178e319bdfbe70aced190f66b25e14f0a0645eacaf4776d4c15a + checksum: 10c0/9f0d00dc5f96a6bc78b775d2ce57d72270cf3b0fad08209f0061e30fff6e2005b7e6abbef98fbc030ba7e3aa5c78e5211f9b5c2a3d0d8f4455dfd47fef228720 languageName: node linkType: hard @@ -1730,7 +1818,7 @@ __metadata: languageName: node linkType: hard -"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": +"@nodelib/fs.walk@npm:^1.2.3": version: 1.2.8 resolution: "@nodelib/fs.walk@npm:1.2.8" dependencies: @@ -2856,7 +2944,7 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*": +"@types/estree@npm:*, @types/estree@npm:^1.0.6, @types/estree@npm:^1.0.8": version: 1.0.8 resolution: "@types/estree@npm:1.0.8" checksum: 10c0/39d34d1afaa338ab9763f37ad6066e3f349444f9052b9676a7cc0252ef9485a41c6d81c9c4e0d26e9077993354edf25efc853f3224dd4b447175ef62bdcc86a5 @@ -2913,7 +3001,7 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.9": +"@types/json-schema@npm:^7.0.15": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db @@ -2967,11 +3055,11 @@ __metadata: linkType: hard "@types/node@npm:*": - version: 24.1.0 - resolution: "@types/node@npm:24.1.0" + version: 24.2.0 + resolution: "@types/node@npm:24.2.0" dependencies: - undici-types: "npm:~7.8.0" - checksum: 10c0/6c4686bc144f6ce7bffd4cadc3e1196e2217c1da4c639c637213719c8a3ee58b6c596b994befcbffeacd9d9eb0c3bff6529d2bc27da5d1cb9d58b1da0056f9f4 + undici-types: "npm:~7.10.0" + checksum: 10c0/0b55af4d7b37fea47bbeffffaff908462fa19ea9b1a18f92d9ed6d8415d97971b254f8cb3f629cd238916e94711fdb6ac939aa750cb353dfd6df6c0339435740 languageName: node linkType: hard @@ -2991,13 +3079,6 @@ __metadata: languageName: node linkType: hard -"@types/semver@npm:^7.3.12, @types/semver@npm:^7.5.0": - version: 7.7.0 - resolution: "@types/semver@npm:7.7.0" - checksum: 10c0/6b5f65f647474338abbd6ee91a6bbab434662ddb8fe39464edcbcfc96484d388baad9eb506dff217b6fc1727a88894930eb1f308617161ac0f376fe06be4e1ee - languageName: node - linkType: hard - "@types/stack-utils@npm:^2.0.0": version: 2.0.3 resolution: "@types/stack-utils@npm:2.0.3" @@ -3058,196 +3139,277 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:^6.0.0": - version: 6.21.0 - resolution: "@typescript-eslint/eslint-plugin@npm:6.21.0" +"@typescript-eslint/eslint-plugin@npm:8.38.0": + version: 8.38.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.38.0" dependencies: - "@eslint-community/regexpp": "npm:^4.5.1" - "@typescript-eslint/scope-manager": "npm:6.21.0" - "@typescript-eslint/type-utils": "npm:6.21.0" - "@typescript-eslint/utils": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" - debug: "npm:^4.3.4" + "@eslint-community/regexpp": "npm:^4.10.0" + "@typescript-eslint/scope-manager": "npm:8.38.0" + "@typescript-eslint/type-utils": "npm:8.38.0" + "@typescript-eslint/utils": "npm:8.38.0" + "@typescript-eslint/visitor-keys": "npm:8.38.0" graphemer: "npm:^1.4.0" - ignore: "npm:^5.2.4" + ignore: "npm:^7.0.0" natural-compare: "npm:^1.4.0" - semver: "npm:^7.5.4" - ts-api-utils: "npm:^1.0.1" + ts-api-utils: "npm:^2.1.0" peerDependencies: - "@typescript-eslint/parser": ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/f911a79ee64d642f814a3b6cdb0d324b5f45d9ef955c5033e78903f626b7239b4aa773e464a38c3e667519066169d983538f2bf8e5d00228af587c9d438fb344 + "@typescript-eslint/parser": ^8.38.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/199b82e9f0136baecf515df7c31bfed926a7c6d4e6298f64ee1a77c8bdd7a8cb92a2ea55a5a345c9f2948a02f7be6d72530efbe803afa1892b593fbd529d0c27 languageName: node linkType: hard -"@typescript-eslint/parser@npm:^6.0.0": - version: 6.21.0 - resolution: "@typescript-eslint/parser@npm:6.21.0" +"@typescript-eslint/eslint-plugin@npm:^8.39.0": + version: 8.39.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.39.0" dependencies: - "@typescript-eslint/scope-manager": "npm:6.21.0" - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/typescript-estree": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" + "@eslint-community/regexpp": "npm:^4.10.0" + "@typescript-eslint/scope-manager": "npm:8.39.0" + "@typescript-eslint/type-utils": "npm:8.39.0" + "@typescript-eslint/utils": "npm:8.39.0" + "@typescript-eslint/visitor-keys": "npm:8.39.0" + graphemer: "npm:^1.4.0" + ignore: "npm:^7.0.0" + natural-compare: "npm:^1.4.0" + ts-api-utils: "npm:^2.1.0" + peerDependencies: + "@typescript-eslint/parser": ^8.39.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/c735a99622e2a4a95d89fa02cc47e65279f61972a68b62f58c32a384e766473289b6234cdaa34b5caa9372d4bdf1b22ad34b45feada482c4ed7320784fa19312 + languageName: node + linkType: hard + +"@typescript-eslint/parser@npm:8.38.0": + version: 8.38.0 + resolution: "@typescript-eslint/parser@npm:8.38.0" + dependencies: + "@typescript-eslint/scope-manager": "npm:8.38.0" + "@typescript-eslint/types": "npm:8.38.0" + "@typescript-eslint/typescript-estree": "npm:8.38.0" + "@typescript-eslint/visitor-keys": "npm:8.38.0" debug: "npm:^4.3.4" peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/a8f99820679decd0d115c0af61903fb1de3b1b5bec412dc72b67670bf636de77ab07f2a68ee65d6da7976039bbf636907f9d5ca546db3f0b98a31ffbc225bc7d + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/5580c2a328f0c15f85e4a0961a07584013cc0aca85fe868486187f7c92e9e3f6602c6e3dab917b092b94cd492ed40827c6f5fea42730bef88eb17592c947adf4 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/scope-manager@npm:5.62.0" +"@typescript-eslint/parser@npm:^8.39.0": + version: 8.39.0 + resolution: "@typescript-eslint/parser@npm:8.39.0" dependencies: - "@typescript-eslint/types": "npm:5.62.0" - "@typescript-eslint/visitor-keys": "npm:5.62.0" - checksum: 10c0/861253235576c1c5c1772d23cdce1418c2da2618a479a7de4f6114a12a7ca853011a1e530525d0931c355a8fd237b9cd828fac560f85f9623e24054fd024726f + "@typescript-eslint/scope-manager": "npm:8.39.0" + "@typescript-eslint/types": "npm:8.39.0" + "@typescript-eslint/typescript-estree": "npm:8.39.0" + "@typescript-eslint/visitor-keys": "npm:8.39.0" + debug: "npm:^4.3.4" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/cb437362ea80303e728eccada1ba630769e90d863471d2cb65abbeda540679f93a566bb4ecdcd3aca39c01f48f865a70aed3e94fbaacc6a81e79bb804c596f0b 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" +"@typescript-eslint/project-service@npm:8.38.0": + version: 8.38.0 + resolution: "@typescript-eslint/project-service@npm:8.38.0" dependencies: - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" - checksum: 10c0/eaf868938d811cbbea33e97e44ba7050d2b6892202cea6a9622c486b85ab1cf801979edf78036179a8ba4ac26f1dfdf7fcc83a68c1ff66be0b3a8e9a9989b526 + "@typescript-eslint/tsconfig-utils": "npm:^8.38.0" + "@typescript-eslint/types": "npm:^8.38.0" + debug: "npm:^4.3.4" + peerDependencies: + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/87d2f55521e289bbcdc666b1f4587ee2d43039cee927310b05abaa534b528dfb1b5565c1545bb4996d7fbdf9d5a3b0aa0e6c93a8f1289e3fcfd60d246364a884 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/type-utils@npm:6.21.0" +"@typescript-eslint/project-service@npm:8.39.0": + version: 8.39.0 + resolution: "@typescript-eslint/project-service@npm:8.39.0" dependencies: - "@typescript-eslint/typescript-estree": "npm:6.21.0" - "@typescript-eslint/utils": "npm:6.21.0" + "@typescript-eslint/tsconfig-utils": "npm:^8.39.0" + "@typescript-eslint/types": "npm:^8.39.0" debug: "npm:^4.3.4" - ts-api-utils: "npm:^1.0.1" peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/7409c97d1c4a4386b488962739c4f1b5b04dc60cf51f8cd88e6b12541f84d84c6b8b67e491a147a2c95f9ec486539bf4519fb9d418411aef6537b9c156468117 + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/67ac21bcc715d8e3281b8cab36a7e285b01244a48817ea74910186e76e714918dd2e939b465d0e4e9a30c4ceffa6c8946eb9b1f0ec0dab6708c4416d3a66e731 + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:8.38.0": + version: 8.38.0 + resolution: "@typescript-eslint/scope-manager@npm:8.38.0" + dependencies: + "@typescript-eslint/types": "npm:8.38.0" + "@typescript-eslint/visitor-keys": "npm:8.38.0" + checksum: 10c0/ceaf489ea1f005afb187932a7ee363dfe1e0f7cc3db921283991e20e4c756411a5e25afbec72edd2095d6a4384f73591f4c750cf65b5eaa650c90f64ef9fe809 languageName: node linkType: hard -"@typescript-eslint/types@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/types@npm:5.62.0" - checksum: 10c0/7febd3a7f0701c0b927e094f02e82d8ee2cada2b186fcb938bc2b94ff6fbad88237afc304cbaf33e82797078bbbb1baf91475f6400912f8b64c89be79bfa4ddf +"@typescript-eslint/scope-manager@npm:8.39.0": + version: 8.39.0 + resolution: "@typescript-eslint/scope-manager@npm:8.39.0" + dependencies: + "@typescript-eslint/types": "npm:8.39.0" + "@typescript-eslint/visitor-keys": "npm:8.39.0" + checksum: 10c0/ae61721e85fa67f64cab02db88599a6e78e9395dd13c211ab60c5728abdf01b9ceb970c0722671d1958e83c8f00a8ee4f9b3a5c462ea21fb117729b73d53a7e7 languageName: node linkType: hard -"@typescript-eslint/types@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/types@npm:6.21.0" - checksum: 10c0/020631d3223bbcff8a0da3efbdf058220a8f48a3de221563996ad1dcc30d6c08dadc3f7608cc08830d21c0d565efd2db19b557b9528921c78aabb605eef2d74d +"@typescript-eslint/tsconfig-utils@npm:8.38.0, @typescript-eslint/tsconfig-utils@npm:^8.38.0": + version: 8.38.0 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.38.0" + peerDependencies: + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/1a90da16bf1f7cfbd0303640a8ead64a0080f2b1d5969994bdac3b80abfa1177f0c6fbf61250bae082e72cf5014308f2f5cc98edd6510202f13420a7ffd07a84 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" +"@typescript-eslint/tsconfig-utils@npm:8.39.0, @typescript-eslint/tsconfig-utils@npm:^8.39.0": + version: 8.39.0 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.39.0" + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/1437c0004d4d852128c72559232470e82c9b9635156c6d8eec7be7c5b08c01e9528cda736587bdaba0d5c71f2f5480855c406f224eab45ba81c6850210280fc3 + languageName: node + linkType: hard + +"@typescript-eslint/type-utils@npm:8.38.0": + version: 8.38.0 + resolution: "@typescript-eslint/type-utils@npm:8.38.0" dependencies: - "@typescript-eslint/types": "npm:5.62.0" - "@typescript-eslint/visitor-keys": "npm:5.62.0" + "@typescript-eslint/types": "npm:8.38.0" + "@typescript-eslint/typescript-estree": "npm:8.38.0" + "@typescript-eslint/utils": "npm:8.38.0" debug: "npm:^4.3.4" - globby: "npm:^11.1.0" - is-glob: "npm:^4.0.3" - semver: "npm:^7.3.7" - tsutils: "npm:^3.21.0" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/d7984a3e9d56897b2481940ec803cb8e7ead03df8d9cfd9797350be82ff765dfcf3cfec04e7355e1779e948da8f02bc5e11719d07a596eb1cb995c48a95e38cf + ts-api-utils: "npm:^2.1.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/27795c4bd0be395dda3424e57d746639c579b7522af1c17731b915298a6378fd78869e8e141526064b6047db2c86ba06444469ace19c98cda5779d06f4abd37c 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" +"@typescript-eslint/type-utils@npm:8.39.0": + version: 8.39.0 + resolution: "@typescript-eslint/type-utils@npm:8.39.0" dependencies: - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" + "@typescript-eslint/types": "npm:8.39.0" + "@typescript-eslint/typescript-estree": "npm:8.39.0" + "@typescript-eslint/utils": "npm:8.39.0" debug: "npm:^4.3.4" - globby: "npm:^11.1.0" + ts-api-utils: "npm:^2.1.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/918de86cc99e90a74a02ee5dfe26f0d7a22872ac00d84e59630a15f50fa9688c2db545c8bf26ba8923c72a74c09386b994d0b7da3dac4104da4ca8c80b4353ac + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:8.38.0, @typescript-eslint/types@npm:^8.34.1, @typescript-eslint/types@npm:^8.38.0": + version: 8.38.0 + resolution: "@typescript-eslint/types@npm:8.38.0" + checksum: 10c0/f0ac0060c98c0f3d1871f107177b6ae25a0f1846ca8bd8cfc7e1f1dd0ddce293cd8ac4a5764d6a767de3503d5d01defcd68c758cb7ba6de52f82b209a918d0d2 + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:8.39.0, @typescript-eslint/types@npm:^8.39.0": + version: 8.39.0 + resolution: "@typescript-eslint/types@npm:8.39.0" + checksum: 10c0/4240b01b218f3ef8a4f6343cb78cd531c12b2a134b6edd6ab67a9de4d1808790bc468f7579d5d38e507a206457d14a5e8970f6f74d29b9858633f77258f7e43b + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:8.38.0": + version: 8.38.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.38.0" + dependencies: + "@typescript-eslint/project-service": "npm:8.38.0" + "@typescript-eslint/tsconfig-utils": "npm:8.38.0" + "@typescript-eslint/types": "npm:8.38.0" + "@typescript-eslint/visitor-keys": "npm:8.38.0" + debug: "npm:^4.3.4" + fast-glob: "npm:^3.3.2" 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: 10c0/af1438c60f080045ebb330155a8c9bb90db345d5069cdd5d01b67de502abb7449d6c75500519df829f913a6b3f490ade3e8215279b6bdc63d0fb0ae61034df5f + minimatch: "npm:^9.0.4" + semver: "npm:^7.6.0" + ts-api-utils: "npm:^2.1.0" + peerDependencies: + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/00a00f6549877f4ae5c2847fa5ac52bf42cbd59a87533856c359e2746e448ed150b27a6137c92fd50c06e6a4b39e386d6b738fac97d80d05596e81ce55933230 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" +"@typescript-eslint/typescript-estree@npm:8.39.0": + version: 8.39.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.39.0" + dependencies: + "@typescript-eslint/project-service": "npm:8.39.0" + "@typescript-eslint/tsconfig-utils": "npm:8.39.0" + "@typescript-eslint/types": "npm:8.39.0" + "@typescript-eslint/visitor-keys": "npm:8.39.0" + debug: "npm:^4.3.4" + fast-glob: "npm:^3.3.2" + is-glob: "npm:^4.0.3" + minimatch: "npm:^9.0.4" + semver: "npm:^7.6.0" + ts-api-utils: "npm:^2.1.0" peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - checksum: 10c0/ab2df3833b2582d4e5467a484d08942b4f2f7208f8e09d67de510008eb8001a9b7460f2f9ba11c12086fd3cdcac0c626761c7995c2c6b5657d5fa6b82030a32d + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/9eaf44af35b7bd8a8298909c0b2153f4c69e582b86f84dbe4a58c6afb6496253e955ee2b6ff0517e7717a6e8557537035ce631e0aa10fa848354a15620c387d2 languageName: node linkType: hard -"@typescript-eslint/utils@npm:^5.10.0": - version: 5.62.0 - resolution: "@typescript-eslint/utils@npm:5.62.0" +"@typescript-eslint/utils@npm:8.38.0, @typescript-eslint/utils@npm:^8.0.0": + version: 8.38.0 + resolution: "@typescript-eslint/utils@npm:8.38.0" dependencies: - "@eslint-community/eslint-utils": "npm:^4.2.0" - "@types/json-schema": "npm:^7.0.9" - "@types/semver": "npm:^7.3.12" - "@typescript-eslint/scope-manager": "npm:5.62.0" - "@typescript-eslint/types": "npm:5.62.0" - "@typescript-eslint/typescript-estree": "npm:5.62.0" - eslint-scope: "npm:^5.1.1" - semver: "npm:^7.3.7" + "@eslint-community/eslint-utils": "npm:^4.7.0" + "@typescript-eslint/scope-manager": "npm:8.38.0" + "@typescript-eslint/types": "npm:8.38.0" + "@typescript-eslint/typescript-estree": "npm:8.38.0" peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 10c0/f09b7d9952e4a205eb1ced31d7684dd55cee40bf8c2d78e923aa8a255318d97279825733902742c09d8690f37a50243f4c4d383ab16bd7aefaf9c4b438f785e1 + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/e97a45bf44f315f9ed8c2988429e18c88e3369c9ee3227ee86446d2d49f7325abebbbc9ce801e178f676baa986d3e1fd4b5391f1640c6eb8944c123423ae43bb languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.62.0" +"@typescript-eslint/utils@npm:8.39.0": + version: 8.39.0 + resolution: "@typescript-eslint/utils@npm:8.39.0" dependencies: - "@typescript-eslint/types": "npm:5.62.0" - eslint-visitor-keys: "npm:^3.3.0" - checksum: 10c0/7c3b8e4148e9b94d9b7162a596a1260d7a3efc4e65199693b8025c71c4652b8042501c0bc9f57654c1e2943c26da98c0f77884a746c6ae81389fcb0b513d995d + "@eslint-community/eslint-utils": "npm:^4.7.0" + "@typescript-eslint/scope-manager": "npm:8.39.0" + "@typescript-eslint/types": "npm:8.39.0" + "@typescript-eslint/typescript-estree": "npm:8.39.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/61956004dea90835b9f8de581019bc4f360dd44cebb9e0f8014ede39fc7cbc71d7d0093a65547bea004a865a1eff81dfd822520ba0a37e636f359291c27e1bd2 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" +"@typescript-eslint/visitor-keys@npm:8.38.0": + version: 8.38.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.38.0" dependencies: - "@typescript-eslint/types": "npm:6.21.0" - eslint-visitor-keys: "npm:^3.4.1" - checksum: 10c0/7395f69739cfa1cb83c1fb2fad30afa2a814756367302fb4facd5893eff66abc807e8d8f63eba94ed3b0fe0c1c996ac9a1680bcbf0f83717acedc3f2bb724fbf + "@typescript-eslint/types": "npm:8.38.0" + eslint-visitor-keys: "npm:^4.2.1" + checksum: 10c0/071a756e383f41a6c9e51d78c8c64bd41cd5af68b0faef5fbaec4fa5dbd65ec9e4cd610c2e2cdbe9e2facc362995f202850622b78e821609a277b5b601a1d4ec languageName: node linkType: hard -"@ungap/structured-clone@npm:^1.2.0": - version: 1.3.0 - resolution: "@ungap/structured-clone@npm:1.3.0" - checksum: 10c0/0fc3097c2540ada1fc340ee56d58d96b5b536a2a0dab6e3ec17d4bfc8c4c86db345f61a375a8185f9da96f01c69678f836a2b57eeaa9e4b8eeafd26428e57b0a +"@typescript-eslint/visitor-keys@npm:8.39.0": + version: 8.39.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.39.0" + dependencies: + "@typescript-eslint/types": "npm:8.39.0" + eslint-visitor-keys: "npm:^4.2.1" + checksum: 10c0/657766d4e9ad01e8fd8e8fd39f8f3d043ecdffb78f1ab9653acbed3c971e221b1f680e90752394308c532703211f9f441bb449f62c0f61a48750b24ccb4379ef languageName: node linkType: hard @@ -3492,7 +3654,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.9.0": +"acorn@npm:^8.15.0": version: 8.15.0 resolution: "acorn@npm:8.15.0" bin: @@ -3687,7 +3849,7 @@ __metadata: languageName: node linkType: hard -"array-includes@npm:^3.1.9": +"array-includes@npm:^3.1.6, array-includes@npm:^3.1.8, array-includes@npm:^3.1.9": version: 3.1.9 resolution: "array-includes@npm:3.1.9" dependencies: @@ -3710,6 +3872,20 @@ __metadata: languageName: node linkType: hard +"array.prototype.findlast@npm:^1.2.5": + version: 1.2.5 + resolution: "array.prototype.findlast@npm:1.2.5" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/ddc952b829145ab45411b9d6adcb51a8c17c76bf89c9dd64b52d5dffa65d033da8c076ed2e17091779e83bc892b9848188d7b4b33453c5565e65a92863cb2775 + languageName: node + linkType: hard + "array.prototype.findlastindex@npm:^1.2.6": version: 1.2.6 resolution: "array.prototype.findlastindex@npm:1.2.6" @@ -3725,7 +3901,7 @@ __metadata: languageName: node linkType: hard -"array.prototype.flat@npm:^1.3.3": +"array.prototype.flat@npm:^1.3.1, array.prototype.flat@npm:^1.3.3": version: 1.3.3 resolution: "array.prototype.flat@npm:1.3.3" dependencies: @@ -3749,6 +3925,19 @@ __metadata: languageName: node linkType: hard +"array.prototype.tosorted@npm:^1.1.4": + version: 1.1.4 + resolution: "array.prototype.tosorted@npm:1.1.4" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.3" + es-errors: "npm:^1.3.0" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/eb3c4c4fc0381b0bf6dba2ea4d48d367c2827a0d4236a5718d97caaccc6b78f11f4cadf090736e86301d295a6aa4967ed45568f92ced51be8cbbacd9ca410943 + languageName: node + linkType: hard + "arraybuffer.prototype.slice@npm:^1.0.4": version: 1.0.4 resolution: "arraybuffer.prototype.slice@npm:1.0.4" @@ -3803,7 +3992,7 @@ __metadata: languageName: node linkType: hard -"async@npm:^3.2.3": +"async@npm:^3.2.6": version: 3.2.6 resolution: "async@npm:3.2.6" checksum: 10c0/36484bb15ceddf07078688d95e27076379cc2f87b10c03b6dd8a83e89475a3c8df5848859dd06a4c95af1e4c16fc973de0171a77f18ea00be899aca2a4f85e70 @@ -4089,13 +4278,6 @@ __metadata: languageName: node linkType: hard -"builtin-modules@npm:^3.3.0": - version: 3.3.0 - resolution: "builtin-modules@npm:3.3.0" - checksum: 10c0/2cb3448b4f7306dc853632a4fcddc95e8d4e4b9868c139400027b71938fc6806d4ff44007deffb362ac85724bd40c2c6452fb6a0aa4531650eeddb98d8e5ee8a - languageName: node - linkType: hard - "busboy@npm:^1.6.0": version: 1.6.0 resolution: "busboy@npm:1.6.0" @@ -4281,7 +4463,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0, chalk@npm:^4.1.1, chalk@npm:^4.1.2": +"chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.1, chalk@npm:^4.1.2": version: 4.1.2 resolution: "chalk@npm:4.1.2" dependencies: @@ -4292,9 +4474,9 @@ __metadata: linkType: hard "chalk@npm:^5.0.0, chalk@npm:^5.3.0": - version: 5.4.1 - resolution: "chalk@npm:5.4.1" - checksum: 10c0/b23e88132c702f4855ca6d25cb5538b1114343e41472d5263ee8a37cccfccd9c4216d111e1097c6a27830407a1dc81fecdf2a56f2c63033d4dbbd88c10b0dcef + version: 5.5.0 + resolution: "chalk@npm:5.5.0" + checksum: 10c0/23063b544f7c2fe57d25ff814807de561f8adfff72e4f0051051eaa606f772586470507ccd38d89166300eeaadb0164acde8bb8a0716a0f2d56ccdf3761d5e4f languageName: node linkType: hard @@ -4517,8 +4699,10 @@ __metadata: version: 0.0.0-use.local resolution: "code-quality-tools@workspace:." dependencies: + "@alma-oss/prettier-config": "workspace:^" + "@almacareer/remark-config": "workspace:^" "@commitlint/cli": "npm:19.8.1" - eslint: "npm:8.57.1" + eslint: "npm:9.31.0" eslint-config-prettier: "npm:9.1.2" eslint-import-resolver-node: "npm:0.3.9" eslint-plugin-prettier: "npm:5.5.3" @@ -4949,7 +5133,7 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.5, cross-spawn@npm:^7.0.6": +"cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.5, cross-spawn@npm:^7.0.6": version: 7.0.6 resolution: "cross-spawn@npm:7.0.6" dependencies: @@ -5189,7 +5373,7 @@ __metadata: languageName: node linkType: hard -"define-properties@npm:^1.2.1": +"define-properties@npm:^1.1.3, define-properties@npm:^1.2.1": version: 1.2.1 resolution: "define-properties@npm:1.2.1" dependencies: @@ -5290,15 +5474,6 @@ __metadata: languageName: node linkType: hard -"doctrine@npm:^3.0.0": - version: 3.0.0 - resolution: "doctrine@npm:3.0.0" - dependencies: - esutils: "npm:^2.0.2" - checksum: 10c0/c96bdccabe9d62ab6fea9399fdff04a66e6563c1d6fb3a3a063e8d53c3bb136ba63e84250bbf63d00086a769ad53aef92d2bd483f03f837fc97b71cbee6b2520 - languageName: node - linkType: hard - "dot-prop@npm:^5.1.0": version: 5.3.0 resolution: "dot-prop@npm:5.3.0" @@ -5482,7 +5657,7 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.9, es-abstract@npm:^1.24.0": +"es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.6, es-abstract@npm:^1.23.9, es-abstract@npm:^1.24.0": version: 1.24.0 resolution: "es-abstract@npm:1.24.0" dependencies: @@ -5558,6 +5733,30 @@ __metadata: languageName: node linkType: hard +"es-iterator-helpers@npm:^1.2.1": + version: 1.2.1 + resolution: "es-iterator-helpers@npm:1.2.1" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.6" + es-errors: "npm:^1.3.0" + es-set-tostringtag: "npm:^2.0.3" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.6" + globalthis: "npm:^1.0.4" + gopd: "npm:^1.2.0" + has-property-descriptors: "npm:^1.0.2" + has-proto: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + internal-slot: "npm:^1.1.0" + iterator.prototype: "npm:^1.1.4" + safe-array-concat: "npm:^1.1.3" + checksum: 10c0/97e3125ca472d82d8aceea11b790397648b52c26d8768ea1c1ee6309ef45a8755bb63225a43f3150c7591cffc17caf5752459f1e70d583b4184370a8f04ebd2f + languageName: node + linkType: hard + "es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": version: 1.1.1 resolution: "es-object-atoms@npm:1.1.1" @@ -5567,7 +5766,7 @@ __metadata: languageName: node linkType: hard -"es-set-tostringtag@npm:^2.1.0": +"es-set-tostringtag@npm:^2.0.3, es-set-tostringtag@npm:^2.1.0": version: 2.1.0 resolution: "es-set-tostringtag@npm:2.1.0" dependencies: @@ -5649,7 +5848,7 @@ __metadata: languageName: node linkType: hard -"eslint-config-airbnb@npm:^19.0.2": +"eslint-config-airbnb@npm:^19.0.4": version: 19.0.4 resolution: "eslint-config-airbnb@npm:19.0.4" dependencies: @@ -5724,7 +5923,7 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-import@npm:^2.25.2": +"eslint-plugin-import@npm:^2.32.0": version: 2.32.0 resolution: "eslint-plugin-import@npm:2.32.0" dependencies: @@ -5762,40 +5961,41 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-jest@npm:^27.0.0": - version: 27.9.0 - resolution: "eslint-plugin-jest@npm:27.9.0" +"eslint-plugin-jest@npm:^29.0.1": + version: 29.0.1 + resolution: "eslint-plugin-jest@npm:29.0.1" dependencies: - "@typescript-eslint/utils": "npm:^5.10.0" + "@typescript-eslint/utils": "npm:^8.0.0" peerDependencies: - "@typescript-eslint/eslint-plugin": ^5.0.0 || ^6.0.0 || ^7.0.0 - eslint: ^7.0.0 || ^8.0.0 + "@typescript-eslint/eslint-plugin": ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 jest: "*" peerDependenciesMeta: "@typescript-eslint/eslint-plugin": optional: true jest: optional: true - checksum: 10c0/b8b09f7d8ba3d84a8779a6e95702a6e4dce45ab034e4edf5ddb631e77cd38dcdf791dfd9228e0a0d1d80d1eb2d278deb62ad2ec39f10fb8fd43cec07304e0c38 + checksum: 10c0/20edc166503a50c10b45f733797d530a5107c91efa25410ef405780d12222a796b5b41ed8f6d2b939632a1af273af6cc5732233463d1f36dbe7680bbb86c4eec languageName: node linkType: hard -"eslint-plugin-jsdoc@npm:^46.0.0": - version: 46.10.1 - resolution: "eslint-plugin-jsdoc@npm:46.10.1" +"eslint-plugin-jsdoc@npm:^51.4.1": + version: 51.4.1 + resolution: "eslint-plugin-jsdoc@npm:51.4.1" dependencies: - "@es-joy/jsdoccomment": "npm:~0.41.0" + "@es-joy/jsdoccomment": "npm:~0.52.0" are-docs-informative: "npm:^0.0.2" comment-parser: "npm:1.4.1" - debug: "npm:^4.3.4" + debug: "npm:^4.4.1" escape-string-regexp: "npm:^4.0.0" - esquery: "npm:^1.5.0" - is-builtin-module: "npm:^3.2.1" - semver: "npm:^7.5.4" + espree: "npm:^10.4.0" + esquery: "npm:^1.6.0" + parse-imports-exports: "npm:^0.2.4" + semver: "npm:^7.7.2" spdx-expression-parse: "npm:^4.0.0" peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - checksum: 10c0/2c9db7e621e6393c4e22c312e8d729a1c5698a31a62b0985421bb64741eb737d95b65ea0523ea87df3456ff4b3452ed015e463cc5a3b98646f2e7a3f68dd6e1a + checksum: 10c0/2dc8063f810984bca1ec2cbe4fa4cfa6948a4e6340bfc817c30d603fd7a85bc11375c0a45d6a1825fa28f1bf1c454f98aed74041b16bc6b5c7077ea58c05ff0a languageName: node linkType: hard @@ -5819,7 +6019,35 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:5.1.1, eslint-scope@npm:^5.1.1": +"eslint-plugin-react@npm:^7.37.5": + version: 7.37.5 + resolution: "eslint-plugin-react@npm:7.37.5" + dependencies: + array-includes: "npm:^3.1.8" + array.prototype.findlast: "npm:^1.2.5" + array.prototype.flatmap: "npm:^1.3.3" + array.prototype.tosorted: "npm:^1.1.4" + doctrine: "npm:^2.1.0" + es-iterator-helpers: "npm:^1.2.1" + estraverse: "npm:^5.3.0" + hasown: "npm:^2.0.2" + jsx-ast-utils: "npm:^2.4.1 || ^3.0.0" + minimatch: "npm:^3.1.2" + object.entries: "npm:^1.1.9" + object.fromentries: "npm:^2.0.8" + object.values: "npm:^1.2.1" + prop-types: "npm:^15.8.1" + resolve: "npm:^2.0.0-next.5" + semver: "npm:^6.3.1" + string.prototype.matchall: "npm:^4.0.12" + string.prototype.repeat: "npm:^1.0.0" + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + checksum: 10c0/c850bfd556291d4d9234f5ca38db1436924a1013627c8ab1853f77cac73ec19b020e861e6c7b783436a48b6ffcdfba4547598235a37ad4611b6739f65fd8ad57 + languageName: node + linkType: hard + +"eslint-scope@npm:5.1.1": version: 5.1.1 resolution: "eslint-scope@npm:5.1.1" dependencies: @@ -5829,13 +6057,13 @@ __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.4.0": + version: 8.4.0 + resolution: "eslint-scope@npm:8.4.0" dependencies: esrecurse: "npm:^4.3.0" estraverse: "npm:^5.2.0" - checksum: 10c0/613c267aea34b5a6d6c00514e8545ef1f1433108097e857225fed40d397dd6b1809dffd11c2fde23b37ca53d7bf935fe04d2a18e6fc932b31837b6ad67e1c116 + checksum: 10c0/407f6c600204d0f3705bd557f81bd0189e69cd7996f408f8971ab5779c0af733d1af2f1412066b40ee1588b085874fc37a2333986c6521669cdbdd36ca5058e0 languageName: node linkType: hard @@ -5846,69 +6074,78 @@ __metadata: 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.4.3": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3" checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 languageName: node linkType: hard -"eslint@npm:8.57.1": - version: 8.57.1 - resolution: "eslint@npm:8.57.1" +"eslint-visitor-keys@npm:^4.2.1": + version: 4.2.1 + resolution: "eslint-visitor-keys@npm:4.2.1" + checksum: 10c0/fcd43999199d6740db26c58dbe0c2594623e31ca307e616ac05153c9272f12f1364f5a0b1917a8e962268fdecc6f3622c1c2908b4fcc2e047a106fe6de69dc43 + languageName: node + linkType: hard + +"eslint@npm:9.31.0": + version: 9.31.0 + resolution: "eslint@npm:9.31.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.1" - "@humanwhocodes/config-array": "npm:^0.13.0" + "@eslint-community/regexpp": "npm:^4.12.1" + "@eslint/config-array": "npm:^0.21.0" + "@eslint/config-helpers": "npm:^0.3.0" + "@eslint/core": "npm:^0.15.0" + "@eslint/eslintrc": "npm:^3.3.1" + "@eslint/js": "npm:9.31.0" + "@eslint/plugin-kit": "npm:^0.3.1" + "@humanfs/node": "npm:^0.16.6" "@humanwhocodes/module-importer": "npm:^1.0.1" - "@nodelib/fs.walk": "npm:^1.2.8" - "@ungap/structured-clone": "npm:^1.2.0" + "@humanwhocodes/retry": "npm:^0.4.2" + "@types/estree": "npm:^1.0.6" + "@types/json-schema": "npm:^7.0.15" ajv: "npm:^6.12.4" chalk: "npm:^4.0.0" - cross-spawn: "npm:^7.0.2" + cross-spawn: "npm:^7.0.6" 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.4.0" + eslint-visitor-keys: "npm:^4.2.1" + espree: "npm:^10.4.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: 10c0/1fd31533086c1b72f86770a4d9d7058ee8b4643fd1cfd10c7aac1ecb8725698e88352a87805cf4b2ce890aa35947df4b4da9655fb7fdfa60dbb448a43f6ebcf1 + checksum: 10c0/3fd1cd5b38b907ecb3f5e7537ab91204efb38bc1ad0ca6e46fc4112f13b594272ff56e641b41580049bc333fbcb5b1b99ca9a542e8406e7da5e951068cbaec77 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.0.1, espree@npm:^10.4.0": + version: 10.4.0 + resolution: "espree@npm:10.4.0" dependencies: - acorn: "npm:^8.9.0" + acorn: "npm:^8.15.0" acorn-jsx: "npm:^5.3.2" - eslint-visitor-keys: "npm:^3.4.1" - checksum: 10c0/1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460 + eslint-visitor-keys: "npm:^4.2.1" + checksum: 10c0/c63fe06131c26c8157b4083313cb02a9a54720a08e21543300e55288c40e06c3fc284bdecf108d3a1372c5934a0a88644c98714f38b6ae8ed272b40d9ea08d6b languageName: node linkType: hard @@ -5922,7 +6159,7 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.4.2, esquery@npm:^1.5.0": +"esquery@npm:^1.5.0, esquery@npm:^1.6.0": version: 1.6.0 resolution: "esquery@npm:1.6.0" dependencies: @@ -5947,7 +6184,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: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 @@ -6274,12 +6511,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: 10c0/58473e8a82794d01b38e5e435f6feaf648e3f36fdb3a56e98f417f4efae71ad1c0d4ebd8a9a7c50c3ad085820a93fc7494ad721e0e4ebc1da3573f4e1c3c7cdd + flat-cache: "npm:^4.0.0" + checksum: 10c0/9e2b5938b1cd9b6d7e3612bdc533afd4ac17b2fc646569e9a8abbf2eb48e5eb8e316bc38815a3ef6a1b456f4107f0d0f055a614ca613e75db6bf9ff4d72c1638 languageName: node linkType: hard @@ -6393,14 +6630,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: 10c0/b76f611bd5f5d68f7ae632e3ae503e678d205cf97a17c6ab5b12f6ca61188b5f1f7464503efae6dc18683ed8f0b41460beb48ac4b9ac63fe6201296a91ba2f75 + keyv: "npm:^4.5.4" + checksum: 10c0/2c59d93e9faa2523e4fda6b4ada749bed432cfa28c8e251f33b25795e426a1c6dbada777afb1f74fcfff33934fdbdea921ee738fcc33e71adc9d6eca984a1cfc languageName: node linkType: hard @@ -6907,12 +7143,10 @@ __metadata: languageName: node linkType: hard -"globals@npm:^13.19.0": - version: 13.24.0 - resolution: "globals@npm:13.24.0" - dependencies: - type-fest: "npm:^0.20.2" - checksum: 10c0/d3c11aeea898eb83d5ec7a99508600fbe8f83d2cf00cbb77f873dbf2bcb39428eff1b538e4915c993d8a3b3473fa71eeebfe22c9bb3a3003d1e26b1f2c8a42cd +"globals@npm:^14.0.0": + version: 14.0.0 + resolution: "globals@npm:14.0.0" + checksum: 10c0/b96ff42620c9231ad468d4c58ff42afee7777ee1c963013ff8aabe095a451d0ceeb8dcd8ef4cbd64d2538cef45f787a78ba3a9574f4a634438963e334471302d languageName: node linkType: hard @@ -7277,7 +7511,7 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.0.4, ignore@npm:^5.2.0, ignore@npm:^5.2.4": +"ignore@npm:^5.0.4, ignore@npm:^5.2.0": version: 5.3.2 resolution: "ignore@npm:5.3.2" checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337 @@ -7291,7 +7525,7 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^7.0.5": +"ignore@npm:^7.0.0, ignore@npm:^7.0.5": version: 7.0.5 resolution: "ignore@npm:7.0.5" checksum: 10c0/ae00db89fe873064a093b8999fe4cc284b13ef2a178636211842cceb650b9c3e390d3339191acb145d81ed5379d2074840cf0c33a20bdbd6f32821f79eb4ad5d @@ -7597,15 +7831,6 @@ __metadata: languageName: node linkType: hard -"is-builtin-module@npm:^3.2.1": - version: 3.2.1 - resolution: "is-builtin-module@npm:3.2.1" - dependencies: - builtin-modules: "npm:^3.3.0" - checksum: 10c0/5a66937a03f3b18803381518f0ef679752ac18cdb7dd53b5e23ee8df8d440558737bd8dcc04d2aae555909d2ecb4a81b5c0d334d119402584b61e6a003e31af1 - languageName: node - linkType: hard - "is-bun-module@npm:^2.0.0": version: 2.0.0 resolution: "is-bun-module@npm:2.0.0" @@ -7835,13 +8060,6 @@ __metadata: languageName: node linkType: hard -"is-path-inside@npm:^3.0.3": - version: 3.0.3 - resolution: "is-path-inside@npm:3.0.3" - checksum: 10c0/cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05 - languageName: node - linkType: hard - "is-plain-obj@npm:^1.0.0, is-plain-obj@npm:^1.1.0": version: 1.1.0 resolution: "is-plain-obj@npm:1.1.0" @@ -8143,6 +8361,20 @@ __metadata: languageName: node linkType: hard +"iterator.prototype@npm:^1.1.4": + version: 1.1.5 + resolution: "iterator.prototype@npm:1.1.5" + dependencies: + define-data-property: "npm:^1.1.4" + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.6" + get-proto: "npm:^1.0.0" + has-symbols: "npm:^1.1.0" + set-function-name: "npm:^2.0.2" + checksum: 10c0/f7a262808e1b41049ab55f1e9c29af7ec1025a000d243b83edf34ce2416eedd56079b117fa59376bb4a724110690f13aa8427f2ee29a09eec63a7e72367626d0 + languageName: node + linkType: hard + "jackspeak@npm:^3.1.2": version: 3.4.3 resolution: "jackspeak@npm:3.4.3" @@ -8157,16 +8389,15 @@ __metadata: linkType: hard "jake@npm:^10.8.5": - version: 10.9.2 - resolution: "jake@npm:10.9.2" + version: 10.9.4 + resolution: "jake@npm:10.9.4" dependencies: - async: "npm:^3.2.3" - chalk: "npm:^4.0.2" + async: "npm:^3.2.6" filelist: "npm:^1.0.4" - minimatch: "npm:^3.1.2" + picocolors: "npm:^1.1.1" bin: jake: bin/cli.js - checksum: 10c0/c4597b5ed9b6a908252feab296485a4f87cba9e26d6c20e0ca144fb69e0c40203d34a2efddb33b3d297b8bd59605e6c1f44f6221ca1e10e69175ecbf3ff5fe31 + checksum: 10c0/bb52f000340d4a32f1a3893b9abe56ef2b77c25da4dbf2c0c874a8159d082dddda50a5ad10e26060198bd645b928ba8dba3b362710f46a247e335321188c5a9c languageName: node linkType: hard @@ -8642,7 +8873,7 @@ __metadata: languageName: node linkType: hard -"js-tokens@npm:^4.0.0": +"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": version: 4.0.0 resolution: "js-tokens@npm:4.0.0" checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed @@ -8679,10 +8910,10 @@ __metadata: languageName: node linkType: hard -"jsdoc-type-pratt-parser@npm:~4.0.0": - version: 4.0.0 - resolution: "jsdoc-type-pratt-parser@npm:4.0.0" - checksum: 10c0/b23ef7bbbe2f56d72630d1c5a233dc9fecaff399063d373c57bef136908c1b05e723dac107177303c03ccf8d75aa51507510b282aa567600477479c5ea0c36d1 +"jsdoc-type-pratt-parser@npm:~4.1.0": + version: 4.1.0 + resolution: "jsdoc-type-pratt-parser@npm:4.1.0" + checksum: 10c0/7700372d2e733a32f7ea0a1df9cec6752321a5345c11a91b2ab478a031a426e934f16d5c1f15c8566c7b2c10af9f27892a29c2c789039f595470e929a4aa60ea languageName: node linkType: hard @@ -8812,6 +9043,18 @@ __metadata: languageName: node linkType: hard +"jsx-ast-utils@npm:^2.4.1 || ^3.0.0": + version: 3.3.5 + resolution: "jsx-ast-utils@npm:3.3.5" + dependencies: + array-includes: "npm:^3.1.6" + array.prototype.flat: "npm:^1.3.1" + object.assign: "npm:^4.1.4" + object.values: "npm:^1.1.6" + checksum: 10c0/a32679e9cb55469cb6d8bbc863f7d631b2c98b7fc7bf172629261751a6e7bc8da6ae374ddb74d5fbd8b06cf0eb4572287b259813d92b36e384024ed35e4c13e1 + languageName: node + linkType: hard + "just-diff-apply@npm:^5.2.0": version: 5.5.0 resolution: "just-diff-apply@npm:5.5.0" @@ -8826,7 +9069,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: @@ -8836,11 +9079,11 @@ __metadata: linkType: hard "keyv@npm:^5.4.0": - version: 5.4.0 - resolution: "keyv@npm:5.4.0" + version: 5.5.0 + resolution: "keyv@npm:5.5.0" dependencies: "@keyv/serialize": "npm:^1.1.0" - checksum: 10c0/e4dc553ff5a75c7bf4bfa5550254da011ae63d08719fe8e651940eb537d74b8f5737082caac3e88c955ccbeb7857ec2706b0c512faf39c80773cc821e5b48c80 + checksum: 10c0/2db63fd2abcdf71929f032569673b6edd0de111edb012411658e2589dc5f49793a98aecd56c67fafda3f90a31f32e35555a97f8621040728260c66ad8daeea48 languageName: node linkType: hard @@ -9225,6 +9468,17 @@ __metadata: languageName: node linkType: hard +"loose-envify@npm:^1.4.0": + version: 1.4.0 + resolution: "loose-envify@npm:1.4.0" + dependencies: + js-tokens: "npm:^3.0.0 || ^4.0.0" + bin: + loose-envify: cli.js + checksum: 10c0/655d110220983c1a4b9c0c679a2e8016d4b67f6e9c7b5435ff5979ecdb20d0813f4dec0a08674fcbdd4846a3f07edbb50a36811fd37930b94aaa0d9daceb017e + languageName: node + linkType: hard + "loud-rejection@npm:^1.0.0": version: 1.6.0 resolution: "loud-rejection@npm:1.6.0" @@ -10167,7 +10421,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: @@ -10849,7 +11103,7 @@ __metadata: languageName: node linkType: hard -"object-assign@npm:^4, object-assign@npm:^4.0.1": +"object-assign@npm:^4, object-assign@npm:^4.0.1, object-assign@npm:^4.1.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" checksum: 10c0/1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414 @@ -10880,7 +11134,7 @@ __metadata: languageName: node linkType: hard -"object.assign@npm:^4.1.2, object.assign@npm:^4.1.7": +"object.assign@npm:^4.1.2, object.assign@npm:^4.1.4, object.assign@npm:^4.1.7": version: 4.1.7 resolution: "object.assign@npm:4.1.7" dependencies: @@ -10894,7 +11148,7 @@ __metadata: languageName: node linkType: hard -"object.entries@npm:^1.1.5": +"object.entries@npm:^1.1.5, object.entries@npm:^1.1.9": version: 1.1.9 resolution: "object.entries@npm:1.1.9" dependencies: @@ -10929,7 +11183,7 @@ __metadata: languageName: node linkType: hard -"object.values@npm:^1.2.1": +"object.values@npm:^1.1.6, object.values@npm:^1.2.1": version: 1.2.1 resolution: "object.values@npm:1.2.1" dependencies: @@ -11285,6 +11539,15 @@ __metadata: languageName: node linkType: hard +"parse-imports-exports@npm:^0.2.4": + version: 0.2.4 + resolution: "parse-imports-exports@npm:0.2.4" + dependencies: + parse-statements: "npm:1.0.11" + checksum: 10c0/51b729037208abdf65c4a1f8e9ed06f4e7ccd907c17c668a64db54b37d95bb9e92081f8b16e4133e14102af3cb4e89870975b6ad661b4d654e9ec8f4fb5c77d6 + languageName: node + linkType: hard + "parse-json@npm:^2.2.0": version: 2.2.0 resolution: "parse-json@npm:2.2.0" @@ -11349,6 +11612,13 @@ __metadata: languageName: node linkType: hard +"parse-statements@npm:1.0.11": + version: 1.0.11 + resolution: "parse-statements@npm:1.0.11" + checksum: 10c0/48960e085019068a5f5242e875fd9d21ec87df2e291acf5ad4e4887b40eab6929a8c8d59542acb85a6497e870c5c6a24f5ab7f980ef5f907c14cc5f7984a93f3 + languageName: node + linkType: hard + "parse-url@npm:^8.1.0": version: 8.1.0 resolution: "parse-url@npm:8.1.0" @@ -11818,6 +12088,17 @@ __metadata: languageName: node linkType: hard +"prop-types@npm:^15.8.1": + version: 15.8.1 + resolution: "prop-types@npm:15.8.1" + dependencies: + loose-envify: "npm:^1.4.0" + object-assign: "npm:^4.1.1" + react-is: "npm:^16.13.1" + checksum: 10c0/59ece7ca2fb9838031d73a48d4becb9a7cc1ed10e610517c7d8f19a1e02fa47f7c27d557d8a5702bec3cfeccddc853579832b43f449e54635803f277b1c78077 + languageName: node + linkType: hard + "property-information@npm:^5.0.0": version: 5.6.0 resolution: "property-information@npm:5.6.0" @@ -11961,6 +12242,13 @@ __metadata: languageName: node linkType: hard +"react-is@npm:^16.13.1": + version: 16.13.1 + resolution: "react-is@npm:16.13.1" + checksum: 10c0/33977da7a5f1a287936a0c85639fec6ca74f4f15ef1e59a6bc20338fc73dc69555381e211f7a3529b8150a1f71e4225525b41b60b52965bda53ce7d47377ada1 + languageName: node + linkType: hard + "react-is@npm:^18.0.0": version: 18.3.1 resolution: "react-is@npm:18.3.1" @@ -12196,7 +12484,7 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.5.1, regexp.prototype.flags@npm:^1.5.4": +"regexp.prototype.flags@npm:^1.5.1, regexp.prototype.flags@npm:^1.5.3, regexp.prototype.flags@npm:^1.5.4": version: 1.5.4 resolution: "regexp.prototype.flags@npm:1.5.4" dependencies: @@ -13180,6 +13468,19 @@ __metadata: languageName: node linkType: hard +"resolve@npm:^2.0.0-next.5": + version: 2.0.0-next.5 + resolution: "resolve@npm:2.0.0-next.5" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/a6c33555e3482ea2ec4c6e3d3bf0d78128abf69dca99ae468e64f1e30acaa318fd267fb66c8836b04d558d3e2d6ed875fe388067e7d8e0de647d3c21af21c43a + languageName: node + linkType: hard + "resolve@patch:resolve@npm%3A^1.1.6#optional!builtin, resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": version: 1.22.10 resolution: "resolve@patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d" @@ -13193,6 +13494,19 @@ __metadata: languageName: node linkType: hard +"resolve@patch:resolve@npm%3A^2.0.0-next.5#optional!builtin": + version: 2.0.0-next.5 + resolution: "resolve@patch:resolve@npm%3A2.0.0-next.5#optional!builtin::version=2.0.0-next.5&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/78ad6edb8309a2bfb720c2c1898f7907a37f858866ce11a5974643af1203a6a6e05b2fa9c53d8064a673a447b83d42569260c306d43628bff5bb101969708355 + languageName: node + linkType: hard + "restore-cursor@npm:^3.1.0": version: 3.1.0 resolution: "restore-cursor@npm:3.1.0" @@ -13228,17 +13542,6 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:^3.0.2": - version: 3.0.2 - resolution: "rimraf@npm:3.0.2" - dependencies: - glob: "npm:^7.1.3" - bin: - rimraf: bin.js - checksum: 10c0/9cb7757acb489bd83757ba1a274ab545eafd75598a9d817e0c3f8b164238dd90eba50d6b848bd4dcc5f3040912e882dc7ba71653e35af660d77b25c381d402e8 - languageName: node - linkType: hard - "rimraf@npm:^4.4.1": version: 4.4.1 resolution: "rimraf@npm:4.4.1" @@ -13361,7 +13664,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.7.1": +"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.7.1, semver@npm:^7.7.2": version: 7.7.2 resolution: "semver@npm:7.7.2" bin: @@ -13888,6 +14191,37 @@ __metadata: languageName: node linkType: hard +"string.prototype.matchall@npm:^4.0.12": + version: 4.0.12 + resolution: "string.prototype.matchall@npm:4.0.12" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.6" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.6" + gopd: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + internal-slot: "npm:^1.1.0" + regexp.prototype.flags: "npm:^1.5.3" + set-function-name: "npm:^2.0.2" + side-channel: "npm:^1.1.0" + checksum: 10c0/1a53328ada73f4a77f1fdf1c79414700cf718d0a8ef6672af5603e709d26a24f2181208144aed7e858b1bcc1a0d08567a570abfb45567db4ae47637ed2c2f85c + languageName: node + linkType: hard + +"string.prototype.repeat@npm:^1.0.0": + version: 1.0.0 + resolution: "string.prototype.repeat@npm:1.0.0" + dependencies: + define-properties: "npm:^1.1.3" + es-abstract: "npm:^1.17.5" + checksum: 10c0/94c7978566cffa1327d470fd924366438af9b04b497c43a9805e476e2e908aa37a1fd34cc0911156c17556dab62159d12c7b92b3cc304c3e1281fe4c8e668f40 + languageName: node + linkType: hard + "string.prototype.trim@npm:^1.2.10": version: 1.2.10 resolution: "string.prototype.trim@npm:1.2.10" @@ -14661,12 +14995,12 @@ __metadata: languageName: node linkType: hard -"ts-api-utils@npm:^1.0.1": - version: 1.4.3 - resolution: "ts-api-utils@npm:1.4.3" +"ts-api-utils@npm:^2.1.0": + version: 2.1.0 + resolution: "ts-api-utils@npm:2.1.0" peerDependencies: - typescript: ">=4.2.0" - checksum: 10c0/e65dc6e7e8141140c23e1dc94984bf995d4f6801919c71d6dc27cf0cd51b100a91ffcfe5217626193e5bea9d46831e8586febdc7e172df3f1091a7384299e23a + typescript: ">=4.8.4" + checksum: 10c0/9806a38adea2db0f6aa217ccc6bc9c391ddba338a9fe3080676d0d50ed806d305bb90e8cef0276e793d28c8a929f400abb184ddd7ff83a416959c0f4d2ce754f languageName: node linkType: hard @@ -14693,13 +15027,6 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^1.8.1": - version: 1.14.1 - resolution: "tslib@npm:1.14.1" - checksum: 10c0/69ae09c49eea644bc5ebe1bca4fa4cc2c82b7b3e02f43b84bd891504edf66dbc6b2ec0eef31a957042de2269139e4acff911e6d186a258fb14069cd7f6febce2 - languageName: node - linkType: hard - "tslib@npm:^2.0.0, tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.4.1, tslib@npm:^2.5.0, tslib@npm:^2.6.2, tslib@npm:^2.7.0, tslib@npm:^2.8.1": version: 2.8.1 resolution: "tslib@npm:2.8.1" @@ -14707,17 +15034,6 @@ __metadata: languageName: node linkType: hard -"tsutils@npm:^3.21.0": - version: 3.21.0 - resolution: "tsutils@npm:3.21.0" - dependencies: - tslib: "npm:^1.8.1" - peerDependencies: - typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - checksum: 10c0/02f19e458ec78ead8fffbf711f834ad8ecd2cc6ade4ec0320790713dccc0a412b99e7fd907c4cda2a1dc602c75db6f12e0108e87a5afad4b2f9e90a24cabd5a2 - languageName: node - linkType: hard - "tuf-js@npm:^2.2.1": version: 2.2.1 resolution: "tuf-js@npm:2.2.1" @@ -14752,13 +15068,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.20.2": - version: 0.20.2 - resolution: "type-fest@npm:0.20.2" - checksum: 10c0/dea9df45ea1f0aaa4e2d3bed3f9a0bfe9e5b2592bddb92eb1bf06e50bcf98dbb78189668cd8bc31a0511d3fc25539b4cd5c704497e53e93e2d40ca764b10bfc3 - languageName: node - linkType: hard - "type-fest@npm:^0.21.3": version: 0.21.3 resolution: "type-fest@npm:0.21.3" @@ -14888,6 +15197,21 @@ __metadata: languageName: node linkType: hard +"typescript-eslint@npm:^8.38.0": + version: 8.38.0 + resolution: "typescript-eslint@npm:8.38.0" + dependencies: + "@typescript-eslint/eslint-plugin": "npm:8.38.0" + "@typescript-eslint/parser": "npm:8.38.0" + "@typescript-eslint/typescript-estree": "npm:8.38.0" + "@typescript-eslint/utils": "npm:8.38.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/486b9862ee08f7827d808a2264ce03b58087b11c4c646c0da3533c192a67ae3fcb4e68d7a1e69d0f35a1edc274371a903a50ecfe74012d5eaa896cb9d5a81e0b + languageName: node + linkType: hard + "typescript@npm:>=3 < 6": version: 5.9.2 resolution: "typescript@npm:5.9.2" @@ -14936,10 +15260,10 @@ __metadata: languageName: node linkType: hard -"undici-types@npm:~7.8.0": - version: 7.8.0 - resolution: "undici-types@npm:7.8.0" - checksum: 10c0/9d9d246d1dc32f318d46116efe3cfca5a72d4f16828febc1918d94e58f6ffcf39c158aa28bf5b4fc52f410446bc7858f35151367bd7a49f21746cab6497b709b +"undici-types@npm:~7.10.0": + version: 7.10.0 + resolution: "undici-types@npm:7.10.0" + checksum: 10c0/8b00ce50e235fe3cc601307f148b5e8fb427092ee3b23e8118ec0a5d7f68eca8cee468c8fc9f15cbb2cf2a3797945ebceb1cbd9732306a1d00e0a9b6afa0f635 languageName: node linkType: hard