From dd1af6d221f24a7b87d1728110a5662dc1e3acb4 Mon Sep 17 00:00:00 2001 From: Rebecca Stevens Date: Mon, 15 Apr 2024 22:10:30 +1200 Subject: [PATCH] feat: eslint 9 migration BREAKING CHANGE: eslint 9 is now require BREAKING CHANGE: typescript >= v4.7 is now required (when using typescript) --- .eslintrc.json | 146 -- .github/workflows/lint-prettier.yml | 14 - .github/workflows/release.yml | 3 - .github/workflows/test-js.yml | 5 +- .lintstagedrc.yml | 5 +- .prettierrc.yml | 1 - .vscode/settings.json | 21 +- GETTING_STARTED.md | 116 +- README.md | 96 +- cz-adapter/engine.ts | 33 +- docs/rules/functional-parameters.md | 2 +- docs/rules/immutable-data.md | 2 +- docs/rules/no-classes.md | 4 +- docs/rules/no-conditional-statements.md | 2 +- docs/rules/no-expression-statements.md | 2 +- docs/rules/no-let.md | 4 +- docs/rules/no-loop-statements.md | 2 +- docs/rules/no-mixed-types.md | 2 +- docs/rules/no-return-void.md | 2 +- docs/rules/no-this-expressions.md | 2 +- docs/rules/no-throw-statements.md | 2 +- docs/rules/no-try-statements.md | 2 +- docs/rules/prefer-immutable-types.md | 2 +- docs/rules/prefer-property-signatures.md | 4 +- docs/rules/prefer-readonly-type.md | 4 +- docs/rules/prefer-tacit.md | 2 +- docs/rules/readonly-type.md | 2 +- docs/rules/settings/immutability.md | 10 +- docs/rules/type-declaration-immutability.md | 2 +- docs/user-guide/migrating-from-tslint.md | 18 +- eslint.config.js | 120 ++ knip.jsonc | 40 +- package.json | 121 +- pnpm-lock.yaml | 1875 ++++++++++------- project-dictionary.txt | 1 + rollup.config.ts | 121 +- src/classic.ts | 47 - src/configs/disable-type-checked.ts | 2 +- src/{flat.ts => index.ts} | 1 - src/rules/functional-parameters.ts | 6 +- src/rules/immutable-data.ts | 10 +- src/rules/no-classes.ts | 2 +- src/rules/no-conditional-statements.ts | 4 +- src/rules/no-expression-statements.ts | 6 +- src/rules/no-let.ts | 4 +- src/rules/no-loop-statements.ts | 2 +- src/rules/no-mixed-types.ts | 13 +- src/rules/no-promise-reject.ts | 2 +- src/rules/no-return-void.ts | 4 +- src/rules/no-this-expressions.ts | 2 +- src/rules/no-throw-statements.ts | 2 +- src/rules/no-try-statements.ts | 2 +- src/rules/prefer-immutable-types.ts | 8 +- src/rules/prefer-property-signatures.ts | 2 +- src/rules/prefer-readonly-type.ts | 8 +- src/rules/prefer-tacit.ts | 29 +- src/rules/readonly-type.ts | 6 +- src/rules/type-declaration-immutability.ts | 10 +- src/settings/immutability.ts | 7 +- src/utils/constants.ts | 2 +- src/utils/misc.ts | 4 +- src/utils/rule.ts | 23 +- src/utils/tree.ts | 2 - tests/common/ignore-options.test.ts | 30 +- tests/configs.test.ts | 12 +- tests/helpers/RuleTester.ts | 4 +- tests/helpers/configs.ts | 4 +- tests/helpers/testers.ts | 4 +- tests/helpers/util.ts | 2 +- tests/index.test.ts | 42 +- .../functional-parameters/es2015/valid.ts | 2 +- tests/rules/prefer-tacit/ts/invalid.ts | 4 +- tsconfig.base.json | 3 +- 73 files changed, 1641 insertions(+), 1466 deletions(-) delete mode 100644 .eslintrc.json delete mode 100644 .github/workflows/lint-prettier.yml create mode 100644 eslint.config.js delete mode 100644 src/classic.ts rename src/{flat.ts => index.ts} (96%) diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index b51e8ac66..000000000 --- a/.eslintrc.json +++ /dev/null @@ -1,146 +0,0 @@ -{ - "root": true, - "env": { - "node": true - }, - "plugins": ["prettier"], - "extends": [ - "@rebeccastevens/eslint-config/modern", - "@rebeccastevens/eslint-config/typescript", - "@rebeccastevens/eslint-config/common-overrides", - "plugin:prettier/recommended", - "prettier" - ], - "parserOptions": { - "project": "./tsconfig.eslint.json" - }, - "ignorePatterns": [ - "/build/", - "/coverage/", - "/lib/", - "/node_modules/", - "/tests-compiled/", - "/cz-adapter/**/*.js", - "/pnpm-lock.yaml" - ], - "rules": { - "functional/prefer-immutable-types": "off", - "@typescript-eslint/no-explicit-any": "warn", - "@typescript-eslint/no-unnecessary-condition": "off", - "@typescript-eslint/restrict-plus-operands": "off" - }, - "overrides": [ - { - "files": ["./src/configs/", "./src/index.ts"], - "extends": ["plugin:eslint-plugin/recommended"], - "rules": { - "@typescript-eslint/naming-convention": "off" - } - }, - { - "files": ["./src/utils/type-guards.ts", "./src/utils/node-types.ts"], - "rules": { - "jsdoc/require-jsdoc": "off" - } - }, - { - "files": ["./cz-adapter/**/*"], - "extends": ["@rebeccastevens/eslint-config/script"], - "rules": { - "@typescript-eslint/no-unsafe-argument": "off", - "@typescript-eslint/no-unsafe-assignment": "off", - "@typescript-eslint/no-unsafe-call": "off", - "@typescript-eslint/no-unsafe-member-access": "off", - "@typescript-eslint/no-unsafe-return": "off", - "import/no-extraneous-dependencies": [ - "error", - { - "devDependencies": true, - "peerDependencies": true - } - ], - "functional/immutable-data": "off", - "jsdoc/require-jsdoc": "off", - "unicorn/prefer-module": "off" - } - }, - { - "files": ["**/*.test.ts"], - "plugins": ["vitest"], - "extends": ["plugin:vitest/recommended", "plugin:functional/off"], - "rules": { - "@typescript-eslint/no-unsafe-argument": "off", - "@typescript-eslint/no-unsafe-assignment": "off", - "@typescript-eslint/no-unsafe-call": "off", - "@typescript-eslint/no-unsafe-member-access": "off", - "@typescript-eslint/no-unsafe-return": "off", - "@typescript-eslint/no-unused-vars-experimental": "off", - "@typescript-eslint/strict-boolean-expressions": "off", - "eslint-comments/disable-enable-pair": "off", - "eslint-comments/no-unlimited-disable": "off", - "import/no-named-as-default-member": "off", - "jsdoc/require-jsdoc": "off", - "sonarjs/no-duplicate-string": "off", - "sonarjs/no-identical-functions": "off", - "unicorn/prefer-module": "off", - "vitest/valid-expect": "off" - }, - "settings": { - "vitest": { - "typecheck": true - } - } - }, - { - "files": ["./typings/**/*"], - "extends": ["plugin:functional/off"], - "rules": { - "@typescript-eslint/no-unused-vars": "off", - "@typescript-eslint/no-explicit-any": "off" - } - }, - // FIXME: This override is defined in the upsteam; it shouldn't need to be redefined here. Why? - { - "files": ["./**/*.md/**"], - "parserOptions": { - "project": null - }, - "extends": [ - "plugin:markdown/recommended", - "plugin:@typescript-eslint/disable-type-checked", - "plugin:functional/off" - ], - "rules": { - "@typescript-eslint/consistent-type-definitions": "off", - "@typescript-eslint/explicit-member-accessibility": "off", - "@typescript-eslint/no-empty-function": "off", - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/no-unused-expressions": "off", - "@typescript-eslint/no-unused-vars": "off", - "@typescript-eslint/prefer-function-type": "off", - "@typescript-eslint/consistent-generic-constructors": "off", - "import/extensions": "off", - "import/no-unresolved": "off", - "init-declarations": "off", - "jsdoc/require-jsdoc": "off", - "n/handle-callback-err": "off", - "prefer-const": "off", - "prettier/prettier": "off", - "sonarjs/no-extra-arguments": "off", - "sonarjs/no-unused-collection": "off", - "unicorn/prefer-optional-catch-binding": "off", - "unicorn/prefer-top-level-await": "off", - "unicorn/switch-case-braces": "off", - "no-console": "off", - "no-empty": "off", - "no-invalid-this": "off", - "no-undef": "off", - "no-useless-return": "off", - "dot-notation": "off", - "no-empty-function": "off", - "no-throw-literal": "off", - "no-unused-vars": "off" - } - } - ] -} diff --git a/.github/workflows/lint-prettier.yml b/.github/workflows/lint-prettier.yml deleted file mode 100644 index 63f9b4fa7..000000000 --- a/.github/workflows/lint-prettier.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: Prettier - -on: - pull_request: - workflow_dispatch: - workflow_call: - -jobs: - lint_prettier: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/actions/prepare - - run: pnpm run lint:prettier diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9d2a85fd5..228932ce8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -28,8 +28,6 @@ jobs: uses: ./.github/workflows/lint-markdown.yml lint_packages: uses: ./.github/workflows/lint-packages.yml - lint_prettier: - uses: ./.github/workflows/lint-prettier.yml lint_spelling: uses: ./.github/workflows/lint-spelling.yml test: @@ -46,7 +44,6 @@ jobs: - lint_markdown - lint_spelling - lint_packages - - lint_prettier - test - type_check runs-on: ubuntu-latest diff --git a/.github/workflows/test-js.yml b/.github/workflows/test-js.yml index a5f987495..7e49a1f43 100644 --- a/.github/workflows/test-js.yml +++ b/.github/workflows/test-js.yml @@ -14,14 +14,13 @@ jobs: os: - "ubuntu-latest" node_version: - - "16" - - "18" + - "18.18" - "20" - "latest" ts_version: - "next" - "latest" - - "4.3.5" + - "4.7.4" # - "JS" runs-on: ${{ matrix.os }} continue-on-error: ${{ matrix.ts_version == 'next' }} diff --git a/.lintstagedrc.yml b/.lintstagedrc.yml index 49ded9793..b47e14b17 100644 --- a/.lintstagedrc.yml +++ b/.lintstagedrc.yml @@ -1,15 +1,14 @@ "*.{json,yml}": - - prettier --ignore-unknown --write + - eslint --fix - cspell lint --no-progress --show-suggestions --show-context --no-must-find-files --dot "*.ts": - - prettier --ignore-unknown --write - eslint --fix - cspell lint --no-progress --show-suggestions --show-context --no-must-find-files --dot - tsc-files -p tsconfig.build.json --noEmit "*.md": - - prettier --ignore-unknown --write + - eslint --fix - markdownlint --config=.markdownlint.json --ignore-path=.markdownlintignore - cspell lint --no-progress --show-suggestions --show-context --no-must-find-files --dot diff --git a/.prettierrc.yml b/.prettierrc.yml index 0f2671aaa..ca544b678 100644 --- a/.prettierrc.yml +++ b/.prettierrc.yml @@ -2,7 +2,6 @@ plugins: - prettier-plugin-packagejson - - prettier-plugin-multiline-arrays trailingComma: "all" diff --git a/.vscode/settings.json b/.vscode/settings.json index ae45bc1b3..61cc6cdad 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,15 +1,24 @@ { "editor.codeActionsOnSave": { - "source.fixAll": "explicit", - "source.fixAll.eslint": "explicit", - "source.formatDocument": "explicit", - "source.organizeImports": "explicit", - "source.sortImports": "explicit" + "source.fixAll.eslint": "explicit" }, "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.formatOnSave": true, "editor.formatOnSaveMode": "file", "editor.rulers": [80], + "eslint.probe": [ + "html", + "javascript", + "javascriptreact", + "json", + "jsonc", + "markdown", + "toml", + "typescript", + "typescriptreact", + "vue", + "yaml" + ], "files.associations": { ".markdownlint.json": "jsonc", ".markdownlintignore": "ignore" @@ -29,6 +38,6 @@ }, "typescript.tsdk": "./node_modules/typescript/lib", "[markdown]": { - "editor.rulers": [160] + "editor.rulers": [120] } } diff --git a/GETTING_STARTED.md b/GETTING_STARTED.md index 44f7198a6..2471cb2c3 100644 --- a/GETTING_STARTED.md +++ b/GETTING_STARTED.md @@ -19,97 +19,67 @@ pnpm add -D eslint eslint-plugin-functional ```sh # Install with npm -npm install -D eslint @typescript-eslint/parser eslint-plugin-functional +npm install -D eslint typescript-eslint eslint-plugin-functional # Install with yarn -yarn add -D eslint @typescript-eslint/parser eslint-plugin-functional +yarn add -D eslint typescript-eslint eslint-plugin-functional # Install with pnpm -pnpm add -D eslint @typescript-eslint/parser eslint-plugin-functional +pnpm add -D eslint typescript-eslint eslint-plugin-functional ``` ## Usage -### Flat Config +### Without TypeScript -If using the new [flat config](https://eslint.org/docs/latest/use/configure/configuration-files-new), -import from `eslint-plugin-functional/flat`. +In your `eslint.config.js` file, import `eslint-plugin-functional` and configure it as you wish. -```ts -import functional from "eslint-plugin-functional/flat"; -``` - -### Classic Config +If you're not using TypeScript, be sure to include the `disableTypeChecked` config after the other configs to +disable rules that require TypeScript. -Add `functional` to the plugins section of your `.eslintrc` configuration file. Then configure the rules you want to use under the rules section. +```js +// eslint.config.js +import functional from "eslint-plugin-functional"; -```jsonc -{ - "plugins": ["functional"], - "rules": { - "functional/rule-name": "error" - } -} -``` - -There are several rulesets provided by this plugin. -[See the README](./README.md#rulesets) for what they are and what rules are included in each. -Enable rulesets via the "extends" property of your `.eslintrc` configuration file. - -Be sure to include the `"plugin:functional/disable-type-checked"` ruleset to disable rules that require TypeScript. - -```jsonc -{ - // ... - "extends": [ - "plugin:functional/external-vanilla-recommended", - "plugin:functional/recommended", - "plugin:functional/stylistic", - "plugin:functional/disable-type-checked" - ] -} +export default [ + ...functional.configs.externalVanillaRecommended, + ...functional.configs.recommended, + ...functional.configs.stylistic, + ...functional.configs.disableTypeChecked, + // your other plugin configs here + { + rules: { + // any rule configs here + }, + }, +]; ``` ### With TypeScript -Add `@typescript-eslint/parser` to the "parser" filed in your `.eslintrc` configuration file. -To use type information, you will need to specify a path to your `tsconfig.json` file in the "project" property of "parserOptions". -Alternatively, you can just set "project" to `true` to automatically use the nearest `tsconfig.json` files. - -```jsonc -{ - "parser": "@typescript-eslint/parser", - "parserOptions": { - "project": true - } -} -``` - -See [@typescript-eslint/parser's README.md](https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/parser#readme) for more information on the available parser options. +In your `eslint.config.js` file, import `typescript-eslint` and `eslint-plugin-functional` and configure them as you wish. -### Example Config +```js +// eslint.config.js +import functional from "eslint-plugin-functional"; +import tseslint from "typescript-eslint"; -```jsonc -{ - "parser": "@typescript-eslint/parser", - "parserOptions": { - "project": true +export default tseslint.config({ + files: ["**/*.ts"], + extends: [ + functional.configs.externalVanillaRecommended, + functional.configs.recommended, + functional.configs.stylistic, + // your other plugin configs here + ], + languageOptions: { + parser: tseslint.parser, + parserOptions: { + project: true, + }, }, - "env": { - "es6": true + rules: { + // any rule configs here }, - "plugins": [ - "@typescript-eslint", - "functional" - ], - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/eslint-recommended", - "plugin:@typescript-eslint/recommended", - "plugin:@typescript-eslint/recommended-requiring-type-checking", - "plugin:functional/external-typescript-recommended", - "plugin:functional/recommended", - "plugin:functional/stylistic" - ] -} +}); ``` diff --git a/README.md b/README.md index 1d0c32861..bcb13bf2a 100644 --- a/README.md +++ b/README.md @@ -37,50 +37,50 @@ The following rulesets are made available by this plugin. Presets: -- **Strict** (`plugin:functional/strict`)\ +- **Strict** (`configs.strict`)\ Enforce recommended rules designed to strictly enforce functional programming. -- **Recommended** (`plugin:functional/recommended`)\ +- **Recommended** (`configs.recommended`)\ Has the same goal as the `strict` preset but a little more lenient, allowing for functional-like coding styles and nicer integration with non-functional 3rd-party libraries. -- **Lite** (`plugin:functional/lite`)\ +- **Lite** (`configs.lite`)\ Good if you're new to functional programming or are converting a large codebase. Categorized: -- **Currying** (`plugin:functional/currying`)\ +- **Currying** (`configs.currying`)\ JavaScript functions support syntax that is not compatible with curried functions. To enforce currying, this syntax should be prevented. -- **No Exceptions** (`plugin:functional/no-exceptions`)\ +- **No Exceptions** (`configs.noExceptions`)\ Functional programming style does not use run-time exceptions. Instead expressions produces values to indicate errors. -- **No Mutations** (`plugin:functional/no-mutations`)\ +- **No Mutations** (`configs.noMutations`)\ Prevent mutating any data as that's not functional -- **No Other Paradigms** (`plugin:functional/no-other-paradigms`)\ +- **No Other Paradigms** (`configs.noOtherParadigms`)\ JavaScript is multi-paradigm, allowing not only functional, but object-oriented as well as other programming styles. To promote a functional style, prevent the use of other paradigm styles. -- **No Statements** (`plugin:functional/no-statements`)\ +- **No Statements** (`configs.noStatements`)\ In functional programming everything is an expression that produces a value. JavaScript has a lot of syntax that is just statements that does not produce a value. That syntax has to be prevented to promote a functional style. -- **Stylistic** (`plugin:functional/stylistic`)\ +- **Stylistic** (`configs.stylistic`)\ Enforce code styles that can be considered to be more functional. Other: -- **All** (`plugin:functional/all`)\ +- **All** (`configs.all`)\ Enables all rules defined in this plugin. -- **Off** (`plugin:functional/off`)\ +- **Off** (`configs.off`)\ Disable all rules defined in this plugin. -- **Disable Type Checked** (`plugin:functional/disable-type-checked`)\ +- **Disable Type Checked** (`configs.disableTypeChecked`)\ Disable all rules that require type information. -- **External Vanilla Recommended** (`plugin:functional/external-vanilla-recommended`)\ +- **External Vanilla Recommended** (`configs.externalVanillaRecommended`)\ Configures recommended [vanilla ESLint](https://www.npmjs.com/package/eslint) rules. -- **External Typescript Recommended** (`plugin:functional/external-typescript-recommended`)\ +- **External Typescript Recommended** (`configs.externalTypescriptRecommended`)\ Configures recommended [TypeScript ESLint](https://www.npmjs.com/package/@typescript-eslint/eslint-plugin) rules. Enabling this ruleset will also enable the vanilla one. @@ -88,7 +88,6 @@ The [below section](#rules) gives details on which rules are enabled by each rul ## Rules - @@ -106,62 +105,57 @@ The [below section](#rules) gives details on which rules are enabled by each rul ### Currying -| Name | Description | πŸ’Ό | ⚠️ | 🚫 | πŸ”§ | πŸ’‘ | πŸ’­ | ❌ | -| :----------------------------------------------------------- | :----------------------------- | :-------------------------- | :- | :- | :- | :- | :- | :- | -| [functional-parameters](docs/rules/functional-parameters.md) | Enforce functional parameters. | β˜‘οΈ βœ… πŸ”’ ![badge-currying][] | | | | | | | +| Name | Description | πŸ’Ό | ⚠️ | 🚫 | πŸ”§ | πŸ’‘ | πŸ’­ | ❌ | +| :----------------------------------------------------------- | :----------------------------- | :--------------------------- | :-- | :-- | :-- | :-- | :-- | :-- | +| [functional-parameters](docs/rules/functional-parameters.md) | Enforce functional parameters. | β˜‘οΈ βœ… πŸ”’ ![badge-currying][] | | | | | | | ### No Exceptions -| Name | Description | πŸ’Ό | ⚠️ | 🚫 | πŸ”§ | πŸ’‘ | πŸ’­ | ❌ | -| :------------------------------------------------------- | :----------------------------------------------------- | :------------------------------- | :- | :--- | :- | :- | :- | :- | -| [no-promise-reject](docs/rules/no-promise-reject.md) | Disallow rejecting promises. | | | | | | | | -| [no-throw-statements](docs/rules/no-throw-statements.md) | Disallow throwing exceptions. | β˜‘οΈ βœ… πŸ”’ ![badge-no-exceptions][] | | | | | | | -| [no-try-statements](docs/rules/no-try-statements.md) | Disallow try-catch[-finally] and try-finally patterns. | πŸ”’ ![badge-no-exceptions][] | | β˜‘οΈ βœ… | | | | | +| Name | Description | πŸ’Ό | ⚠️ | 🚫 | πŸ”§ | πŸ’‘ | πŸ’­ | ❌ | +| :------------------------------------------------------- | :----------------------------------------------------- | :------------------------------- | :-- | :---- | :-- | :-- | :-- | :-- | +| [no-promise-reject](docs/rules/no-promise-reject.md) | Disallow rejecting promises. | | | | | | | | +| [no-throw-statements](docs/rules/no-throw-statements.md) | Disallow throwing exceptions. | β˜‘οΈ βœ… πŸ”’ ![badge-noExceptions][] | | | | | | | +| [no-try-statements](docs/rules/no-try-statements.md) | Disallow try-catch[-finally] and try-finally patterns. | πŸ”’ ![badge-noExceptions][] | | β˜‘οΈ βœ… | | | | | ### No Mutations -| NameΒ Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β  | Description | πŸ’Ό | ⚠️ | 🚫 | πŸ”§ | πŸ’‘ | πŸ’­ | ❌ | -| :--------------------------------------------------------------------------- | :-------------------------------------------------------------- | :------------------------------ | :- | :- | :- | :- | :- | :- | -| [immutable-data](docs/rules/immutable-data.md) | Enforce treating data as immutable. | β˜‘οΈ βœ… πŸ”’ ![badge-no-mutations][] | | | | | πŸ’­ | | -| [no-let](docs/rules/no-let.md) | Disallow mutable variables. | β˜‘οΈ βœ… πŸ”’ ![badge-no-mutations][] | | | | | | | -| [prefer-immutable-types](docs/rules/prefer-immutable-types.md) | Require function parameters to be typed as certain immutability | β˜‘οΈ βœ… πŸ”’ ![badge-no-mutations][] | | | πŸ”§ | πŸ’‘ | πŸ’­ | | -| [prefer-readonly-type](docs/rules/prefer-readonly-type.md) | Prefer readonly types over mutable types. | | | | πŸ”§ | | πŸ’­ | ❌ | -| [type-declaration-immutability](docs/rules/type-declaration-immutability.md) | Enforce the immutability of types based on patterns. | β˜‘οΈ βœ… πŸ”’ ![badge-no-mutations][] | | | πŸ”§ | πŸ’‘ | πŸ’­ | | +| NameΒ Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β  | Description | πŸ’Ό | ⚠️ | 🚫 | πŸ”§ | πŸ’‘ | πŸ’­ | ❌ | +| :--------------------------------------------------------------------------- | :-------------------------------------------------------------- | :------------------------------ | :-- | :---------------------------- | :-- | :-- | :-- | :-- | +| [immutable-data](docs/rules/immutable-data.md) | Enforce treating data as immutable. | β˜‘οΈ βœ… πŸ”’ ![badge-noMutations][] | | ![badge-disableTypeChecked][] | | | πŸ’­ | | +| [no-let](docs/rules/no-let.md) | Disallow mutable variables. | β˜‘οΈ βœ… πŸ”’ ![badge-noMutations][] | | | | | | | +| [prefer-immutable-types](docs/rules/prefer-immutable-types.md) | Require function parameters to be typed as certain immutability | β˜‘οΈ βœ… πŸ”’ ![badge-noMutations][] | | ![badge-disableTypeChecked][] | πŸ”§ | πŸ’‘ | πŸ’­ | | +| [prefer-readonly-type](docs/rules/prefer-readonly-type.md) | Prefer readonly types over mutable types. | | | ![badge-disableTypeChecked][] | πŸ”§ | | πŸ’­ | ❌ | +| [type-declaration-immutability](docs/rules/type-declaration-immutability.md) | Enforce the immutability of types based on patterns. | β˜‘οΈ βœ… πŸ”’ ![badge-noMutations][] | | ![badge-disableTypeChecked][] | πŸ”§ | πŸ’‘ | πŸ’­ | | ### No Other Paradigms -| NameΒ Β Β Β Β Β Β Β Β Β Β Β Β Β Β  | Description | πŸ’Ό | ⚠️ | 🚫 | πŸ”§ | πŸ’‘ | πŸ’­ | ❌ | -| :------------------------------------------------------- | :------------------------------------------------------------------------ | :------------------------------------ | :- | :--- | :- | :- | :- | :- | -| [no-classes](docs/rules/no-classes.md) | Disallow classes. | β˜‘οΈ βœ… πŸ”’ ![badge-no-other-paradigms][] | | | | | | | -| [no-mixed-types](docs/rules/no-mixed-types.md) | Restrict types so that only members of the same kind are allowed in them. | β˜‘οΈ βœ… πŸ”’ ![badge-no-other-paradigms][] | | | | | πŸ’­ | | -| [no-this-expressions](docs/rules/no-this-expressions.md) | Disallow this access. | πŸ”’ ![badge-no-other-paradigms][] | | β˜‘οΈ βœ… | | | | | +| NameΒ Β Β Β Β Β Β Β Β Β Β Β Β Β Β  | Description | πŸ’Ό | ⚠️ | 🚫 | πŸ”§ | πŸ’‘ | πŸ’­ | ❌ | +| :------------------------------------------------------- | :------------------------------------------------------------------------ | :----------------------------------- | :-- | :---------------------------- | :-- | :-- | :-- | :-- | +| [no-classes](docs/rules/no-classes.md) | Disallow classes. | β˜‘οΈ βœ… πŸ”’ ![badge-noOtherParadigms][] | | | | | | | +| [no-mixed-types](docs/rules/no-mixed-types.md) | Restrict types so that only members of the same kind are allowed in them. | β˜‘οΈ βœ… πŸ”’ ![badge-noOtherParadigms][] | | ![badge-disableTypeChecked][] | | | πŸ’­ | | +| [no-this-expressions](docs/rules/no-this-expressions.md) | Disallow this access. | πŸ”’ ![badge-noOtherParadigms][] | | β˜‘οΈ βœ… | | | | | ### No Statements -| Name | Description | πŸ’Ό | ⚠️ | 🚫 | πŸ”§ | πŸ’‘ | πŸ’­ | ❌ | -| :------------------------------------------------------------------- | :--------------------------------------------- | :------------------------------- | :- | :- | :- | :- | :- | :- | -| [no-conditional-statements](docs/rules/no-conditional-statements.md) | Disallow conditional statements. | βœ… πŸ”’ ![badge-no-statements][] | | β˜‘οΈ | | | πŸ’­ | | -| [no-expression-statements](docs/rules/no-expression-statements.md) | Disallow expression statements. | βœ… πŸ”’ ![badge-no-statements][] | | β˜‘οΈ | | | πŸ’­ | | -| [no-loop-statements](docs/rules/no-loop-statements.md) | Disallow imperative loops. | β˜‘οΈ βœ… πŸ”’ ![badge-no-statements][] | | | | | | | -| [no-return-void](docs/rules/no-return-void.md) | Disallow functions that don't return anything. | β˜‘οΈ βœ… πŸ”’ ![badge-no-statements][] | | | | | πŸ’­ | | +| Name | Description | πŸ’Ό | ⚠️ | 🚫 | πŸ”§ | πŸ’‘ | πŸ’­ | ❌ | +| :------------------------------------------------------------------- | :--------------------------------------------- | :------------------------------- | :-- | :------------------------------- | :-- | :-- | :-- | :-- | +| [no-conditional-statements](docs/rules/no-conditional-statements.md) | Disallow conditional statements. | βœ… πŸ”’ ![badge-noStatements][] | | β˜‘οΈ ![badge-disableTypeChecked][] | | | πŸ’­ | | +| [no-expression-statements](docs/rules/no-expression-statements.md) | Disallow expression statements. | βœ… πŸ”’ ![badge-noStatements][] | | β˜‘οΈ ![badge-disableTypeChecked][] | | | πŸ’­ | | +| [no-loop-statements](docs/rules/no-loop-statements.md) | Disallow imperative loops. | β˜‘οΈ βœ… πŸ”’ ![badge-noStatements][] | | | | | | | +| [no-return-void](docs/rules/no-return-void.md) | Disallow functions that don't return anything. | β˜‘οΈ βœ… πŸ”’ ![badge-noStatements][] | | ![badge-disableTypeChecked][] | | | πŸ’­ | | ### Stylistic -| NameΒ Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β  | Description | πŸ’Ό | ⚠️ | 🚫 | πŸ”§ | πŸ’‘ | πŸ’­ | ❌ | -| :--------------------------------------------------------------------- | :--------------------------------------------------------------------- | :- | :- | :- | :- | :- | :- | :- | -| [prefer-property-signatures](docs/rules/prefer-property-signatures.md) | Prefer property signatures over method signatures. | 🎨 | | | | | πŸ’­ | | -| [prefer-tacit](docs/rules/prefer-tacit.md) | Replaces `x => f(x)` with just `f`. | | 🎨 | | | πŸ’‘ | πŸ’­ | | -| [readonly-type](docs/rules/readonly-type.md) | Require consistently using either `readonly` keywords or `Readonly` | 🎨 | | | πŸ”§ | | πŸ’­ | | +| NameΒ Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β  | Description | πŸ’Ό | ⚠️ | 🚫 | πŸ”§ | πŸ’‘ | πŸ’­ | ❌ | +| :--------------------------------------------------------------------- | :--------------------------------------------------------------------- | :-- | :-- | :---------------------------- | :-- | :-- | :-- | :-- | +| [prefer-property-signatures](docs/rules/prefer-property-signatures.md) | Prefer property signatures over method signatures. | 🎨 | | ![badge-disableTypeChecked][] | | | πŸ’­ | | +| [prefer-tacit](docs/rules/prefer-tacit.md) | Replaces `x => f(x)` with just `f`. | | 🎨 | ![badge-disableTypeChecked][] | | πŸ’‘ | πŸ’­ | | +| [readonly-type](docs/rules/readonly-type.md) | Require consistently using either `readonly` keywords or `Readonly` | 🎨 | | ![badge-disableTypeChecked][] | πŸ”§ | | πŸ’­ | | - [badge-currying]: https://img.shields.io/badge/-currying-red.svg -[badge-no-exceptions]: https://img.shields.io/badge/-no--exceptions-blue.svg -[badge-no-mutations]: https://img.shields.io/badge/-no--mutations-orange.svg -[badge-no-other-paradigms]: https://img.shields.io/badge/-no--other--paradigms-yellow.svg -[badge-no-statements]: https://img.shields.io/badge/-no--statements-purple.svg ## External Recommended Rules diff --git a/cz-adapter/engine.ts b/cz-adapter/engine.ts index 02d9e6cd5..1ede07482 100644 --- a/cz-adapter/engine.ts +++ b/cz-adapter/engine.ts @@ -21,13 +21,13 @@ type CZ = any; /** * The engine. */ -export default ( - options: Options, -): { prompter: (cz: CZ, commit: (msg: string) => unknown) => void } => { - return { +export default { + create: ( + options: Options, + ): { prompter: (cz: CZ, commit: (msg: string) => unknown) => void } => ({ prompter: (cz, commit) => promptUser(cz, options).then(doCommit(commit, options)), - }; + }), }; /** @@ -86,9 +86,7 @@ function promptUser(cz: CZ, options: Options) { name: "scope", message: "What is the scope of this change: (press enter to skip)", default: defaultScope, - when: (answers: Answers) => { - return !scopeRulesType.has(answers.type); - }, + when: (answers: Answers) => !scopeRulesType.has(answers.type), filter: filterScope(options), }, { @@ -97,9 +95,7 @@ function promptUser(cz: CZ, options: Options) { message: "Which rule does this change apply to:", choices: getRulesChoices(), default: defaultScope, - when: (answers: Answers) => { - return scopeRulesType.has(answers.type); - }, + when: (answers: Answers) => scopeRulesType.has(answers.type), filter: filterScope(options), }, { @@ -107,9 +103,7 @@ function promptUser(cz: CZ, options: Options) { name: "isBreaking", message: "Are there any breaking changes?", default: false, - when: (answers: Answers) => { - return possibleBreakingRulesType.has(answers.type); - }, + when: (answers: Answers) => possibleBreakingRulesType.has(answers.type), }, { type: "input", @@ -161,9 +155,7 @@ function promptUser(cz: CZ, options: Options) { type: "input", name: "issues", message: 'Add issue references (e.g. "fix #123", "re #123".):\n', - when: (answers: Answers) => { - return answers.isIssueAffected; - }, + when: (answers: Answers) => answers.isIssueAffected, default: defaultIssues, }, ]); @@ -266,11 +258,8 @@ function maxSummaryLength(options: Options, answers: Answers) { * Get a function to auto-process the scope. */ function filterScope(options: Options) { - return (value: string) => { - return options.disableScopeLowerCase - ? value.trim() - : value.trim().toLowerCase(); - }; + return (value: string) => + options.disableScopeLowerCase ? value.trim() : value.trim().toLowerCase(); } /** diff --git a/docs/rules/functional-parameters.md b/docs/rules/functional-parameters.md index 544b61f48..ad91c8cb6 100644 --- a/docs/rules/functional-parameters.md +++ b/docs/rules/functional-parameters.md @@ -137,7 +137,7 @@ Any function that takes multiple parameter can be rewritten as a higher-order fu Example: - + ```js // This function diff --git a/docs/rules/immutable-data.md b/docs/rules/immutable-data.md index d572cde6f..82a2651b2 100644 --- a/docs/rules/immutable-data.md +++ b/docs/rules/immutable-data.md @@ -1,6 +1,6 @@ # Enforce treating data as immutable (`functional/immutable-data`) -πŸ’Ό This rule is enabled in the following configs: β˜‘οΈ `lite`, `no-mutations`, βœ… `recommended`, πŸ”’ `strict`. +πŸ’ΌπŸš« This rule is enabled in the following configs: β˜‘οΈ `lite`, `noMutations`, βœ… `recommended`, πŸ”’ `strict`. This rule is _disabled_ in the `disableTypeChecked` config. πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). diff --git a/docs/rules/no-classes.md b/docs/rules/no-classes.md index 56785260e..6374ca85b 100644 --- a/docs/rules/no-classes.md +++ b/docs/rules/no-classes.md @@ -1,6 +1,6 @@ # Disallow classes (`functional/no-classes`) -πŸ’Ό This rule is enabled in the following configs: β˜‘οΈ `lite`, `no-other-paradigms`, βœ… `recommended`, πŸ”’ `strict`. +πŸ’Ό This rule is enabled in the following configs: β˜‘οΈ `lite`, `noOtherParadigms`, βœ… `recommended`, πŸ”’ `strict`. @@ -69,7 +69,7 @@ const Message = ({ message }) =>
{message}
; What about lifecycle methods like `shouldComponentUpdate`? We can use the [recompose](https://github.com/acdlite/recompose) library to apply these optimizations to your Stateless Functional Components. The [recompose](https://github.com/acdlite/recompose) library relies on the fact that your Redux state is immutable to efficiently implement `shouldComponentUpdate` for you. ```js -import { pure, onlyUpdateForKeys } from "recompose"; +import { onlyUpdateForKeys, pure } from "recompose"; const Message = ({ message }) =>
{message}
; diff --git a/docs/rules/no-conditional-statements.md b/docs/rules/no-conditional-statements.md index dbb560ae2..d07918fb1 100644 --- a/docs/rules/no-conditional-statements.md +++ b/docs/rules/no-conditional-statements.md @@ -1,6 +1,6 @@ # Disallow conditional statements (`functional/no-conditional-statements`) -πŸ’ΌπŸš« This rule is enabled in the following configs: `no-statements`, βœ… `recommended`, πŸ”’ `strict`. This rule is _disabled_ in the β˜‘οΈ `lite` config. +πŸ’ΌπŸš« This rule is enabled in the following configs: `noStatements`, βœ… `recommended`, πŸ”’ `strict`. This rule is _disabled_ in the following configs: `disableTypeChecked`, β˜‘οΈ `lite`. πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). diff --git a/docs/rules/no-expression-statements.md b/docs/rules/no-expression-statements.md index 7bb180b84..bce7e9ca6 100644 --- a/docs/rules/no-expression-statements.md +++ b/docs/rules/no-expression-statements.md @@ -1,6 +1,6 @@ # Disallow expression statements (`functional/no-expression-statements`) -πŸ’ΌπŸš« This rule is enabled in the following configs: `no-statements`, βœ… `recommended`, πŸ”’ `strict`. This rule is _disabled_ in the β˜‘οΈ `lite` config. +πŸ’ΌπŸš« This rule is enabled in the following configs: `noStatements`, βœ… `recommended`, πŸ”’ `strict`. This rule is _disabled_ in the following configs: `disableTypeChecked`, β˜‘οΈ `lite`. πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). diff --git a/docs/rules/no-let.md b/docs/rules/no-let.md index 100c85fd5..21cffa6dd 100644 --- a/docs/rules/no-let.md +++ b/docs/rules/no-let.md @@ -1,6 +1,6 @@ # Disallow mutable variables (`functional/no-let`) -πŸ’Ό This rule is enabled in the following configs: β˜‘οΈ `lite`, `no-mutations`, βœ… `recommended`, πŸ”’ `strict`. +πŸ’Ό This rule is enabled in the following configs: β˜‘οΈ `lite`, `noMutations`, βœ… `recommended`, πŸ”’ `strict`. @@ -86,7 +86,7 @@ If set, `let`s inside of for a loop initializer are allowed. This does not inclu #### βœ… Correct - + ```js /* eslint functional/no-let: ["error", { "allowInForLoopInit": true } ] */ diff --git a/docs/rules/no-loop-statements.md b/docs/rules/no-loop-statements.md index d36ed693a..9bf6ad429 100644 --- a/docs/rules/no-loop-statements.md +++ b/docs/rules/no-loop-statements.md @@ -1,6 +1,6 @@ # Disallow imperative loops (`functional/no-loop-statements`) -πŸ’Ό This rule is enabled in the following configs: β˜‘οΈ `lite`, `no-statements`, βœ… `recommended`, πŸ”’ `strict`. +πŸ’Ό This rule is enabled in the following configs: β˜‘οΈ `lite`, `noStatements`, βœ… `recommended`, πŸ”’ `strict`. diff --git a/docs/rules/no-mixed-types.md b/docs/rules/no-mixed-types.md index d060823b3..6241ae1fe 100644 --- a/docs/rules/no-mixed-types.md +++ b/docs/rules/no-mixed-types.md @@ -1,6 +1,6 @@ # Restrict types so that only members of the same kind are allowed in them (`functional/no-mixed-types`) -πŸ’Ό This rule is enabled in the following configs: β˜‘οΈ `lite`, `no-other-paradigms`, βœ… `recommended`, πŸ”’ `strict`. +πŸ’ΌπŸš« This rule is enabled in the following configs: β˜‘οΈ `lite`, `noOtherParadigms`, βœ… `recommended`, πŸ”’ `strict`. This rule is _disabled_ in the `disableTypeChecked` config. πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). diff --git a/docs/rules/no-return-void.md b/docs/rules/no-return-void.md index 8cb51a5cd..992dfc3eb 100644 --- a/docs/rules/no-return-void.md +++ b/docs/rules/no-return-void.md @@ -1,6 +1,6 @@ # Disallow functions that don't return anything (`functional/no-return-void`) -πŸ’Ό This rule is enabled in the following configs: β˜‘οΈ `lite`, `no-statements`, βœ… `recommended`, πŸ”’ `strict`. +πŸ’ΌπŸš« This rule is enabled in the following configs: β˜‘οΈ `lite`, `noStatements`, βœ… `recommended`, πŸ”’ `strict`. This rule is _disabled_ in the `disableTypeChecked` config. πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). diff --git a/docs/rules/no-this-expressions.md b/docs/rules/no-this-expressions.md index 865699999..1636d35c2 100644 --- a/docs/rules/no-this-expressions.md +++ b/docs/rules/no-this-expressions.md @@ -1,6 +1,6 @@ # Disallow this access (`functional/no-this-expressions`) -πŸ’ΌπŸš« This rule is enabled in the following configs: `no-other-paradigms`, πŸ”’ `strict`. This rule is _disabled_ in the following configs: β˜‘οΈ `lite`, βœ… `recommended`. +πŸ’ΌπŸš« This rule is enabled in the following configs: `noOtherParadigms`, πŸ”’ `strict`. This rule is _disabled_ in the following configs: β˜‘οΈ `lite`, βœ… `recommended`. diff --git a/docs/rules/no-throw-statements.md b/docs/rules/no-throw-statements.md index aed2fb89d..287f119ee 100644 --- a/docs/rules/no-throw-statements.md +++ b/docs/rules/no-throw-statements.md @@ -1,6 +1,6 @@ # Disallow throwing exceptions (`functional/no-throw-statements`) -πŸ’Ό This rule is enabled in the following configs: β˜‘οΈ `lite`, `no-exceptions`, βœ… `recommended`, πŸ”’ `strict`. +πŸ’Ό This rule is enabled in the following configs: β˜‘οΈ `lite`, `noExceptions`, βœ… `recommended`, πŸ”’ `strict`. diff --git a/docs/rules/no-try-statements.md b/docs/rules/no-try-statements.md index e7dd4c3bc..6ec4ff670 100644 --- a/docs/rules/no-try-statements.md +++ b/docs/rules/no-try-statements.md @@ -1,6 +1,6 @@ # Disallow try-catch[-finally] and try-finally patterns (`functional/no-try-statements`) -πŸ’ΌπŸš« This rule is enabled in the following configs: `no-exceptions`, πŸ”’ `strict`. This rule is _disabled_ in the following configs: β˜‘οΈ `lite`, βœ… `recommended`. +πŸ’ΌπŸš« This rule is enabled in the following configs: `noExceptions`, πŸ”’ `strict`. This rule is _disabled_ in the following configs: β˜‘οΈ `lite`, βœ… `recommended`. diff --git a/docs/rules/prefer-immutable-types.md b/docs/rules/prefer-immutable-types.md index 202946f70..18be71d56 100644 --- a/docs/rules/prefer-immutable-types.md +++ b/docs/rules/prefer-immutable-types.md @@ -1,6 +1,6 @@ # Require function parameters to be typed as certain immutability (`functional/prefer-immutable-types`) -πŸ’Ό This rule is enabled in the following configs: β˜‘οΈ `lite`, `no-mutations`, βœ… `recommended`, πŸ”’ `strict`. +πŸ’ΌπŸš« This rule is enabled in the following configs: β˜‘οΈ `lite`, `noMutations`, βœ… `recommended`, πŸ”’ `strict`. This rule is _disabled_ in the `disableTypeChecked` config. πŸ”§πŸ’‘ This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix) and manually fixable by [editor suggestions](https://eslint.org/docs/latest/use/core-concepts#rule-suggestions). diff --git a/docs/rules/prefer-property-signatures.md b/docs/rules/prefer-property-signatures.md index 967d652fc..42e8fcab7 100644 --- a/docs/rules/prefer-property-signatures.md +++ b/docs/rules/prefer-property-signatures.md @@ -1,6 +1,6 @@ # Prefer property signatures over method signatures (`functional/prefer-property-signatures`) -πŸ’Ό This rule is enabled in the 🎨 `stylistic` config. +πŸ’ΌπŸš« This rule is enabled in the 🎨 `stylistic` config. This rule is _disabled_ in the `disableTypeChecked` config. πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). @@ -29,7 +29,7 @@ type Foo = { ### βœ… Correct - + ```ts /* eslint functional/prefer-property-signatures: "error" */ diff --git a/docs/rules/prefer-readonly-type.md b/docs/rules/prefer-readonly-type.md index f0f2e4ac2..6514b3794 100644 --- a/docs/rules/prefer-readonly-type.md +++ b/docs/rules/prefer-readonly-type.md @@ -2,6 +2,8 @@ ❌ This rule is deprecated. It was replaced by [`functional/prefer-immutable-types`](prefer-immutable-types.md),[`functional/type-declaration-immutability`](type-declaration-immutability.md). +🚫 This rule is _disabled_ in the `disableTypeChecked` config. + πŸ”§ This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix). πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). @@ -65,7 +67,7 @@ This is just as effective as using `Object.freeze()` to prevent mutations. Howev The `readonly` modifier also works on indexers: - + ```ts const foo: { readonly [key: string]: number } = { a: 1, b: 2 }; diff --git a/docs/rules/prefer-tacit.md b/docs/rules/prefer-tacit.md index 7b2580018..d47319401 100644 --- a/docs/rules/prefer-tacit.md +++ b/docs/rules/prefer-tacit.md @@ -1,6 +1,6 @@ # Replaces `x => f(x)` with just `f` (`functional/prefer-tacit`) -⚠️ This rule _warns_ in the 🎨 `stylistic` config. +⚠️🚫 This rule _warns_ in the 🎨 `stylistic` config. This rule is _disabled_ in the `disableTypeChecked` config. πŸ’‘ This rule is manually fixable by [editor suggestions](https://eslint.org/docs/latest/use/core-concepts#rule-suggestions). diff --git a/docs/rules/readonly-type.md b/docs/rules/readonly-type.md index baa765d9b..fbaf42577 100644 --- a/docs/rules/readonly-type.md +++ b/docs/rules/readonly-type.md @@ -1,6 +1,6 @@ # Require consistently using either `readonly` keywords or `Readonly` (`functional/readonly-type`) -πŸ’Ό This rule is enabled in the 🎨 `stylistic` config. +πŸ’ΌπŸš« This rule is enabled in the 🎨 `stylistic` config. This rule is _disabled_ in the `disableTypeChecked` config. πŸ”§ This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix). diff --git a/docs/rules/settings/immutability.md b/docs/rules/settings/immutability.md index 35de20ea8..8a98f5617 100644 --- a/docs/rules/settings/immutability.md +++ b/docs/rules/settings/immutability.md @@ -32,13 +32,13 @@ readonly, then no override will be applied. "name": "ReadonlyArray", }, "to": "Immutable", - "from": "ReadonlyDeep" - } - ] - } + "from": "ReadonlyDeep", + }, + ], + }, }, "rules": { // ... - } + }, } ``` diff --git a/docs/rules/type-declaration-immutability.md b/docs/rules/type-declaration-immutability.md index 0c0dffed4..a9d291e3c 100644 --- a/docs/rules/type-declaration-immutability.md +++ b/docs/rules/type-declaration-immutability.md @@ -1,6 +1,6 @@ # Enforce the immutability of types based on patterns (`functional/type-declaration-immutability`) -πŸ’Ό This rule is enabled in the following configs: β˜‘οΈ `lite`, `no-mutations`, βœ… `recommended`, πŸ”’ `strict`. +πŸ’ΌπŸš« This rule is enabled in the following configs: β˜‘οΈ `lite`, `noMutations`, βœ… `recommended`, πŸ”’ `strict`. This rule is _disabled_ in the `disableTypeChecked` config. πŸ”§πŸ’‘ This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix) and manually fixable by [editor suggestions](https://eslint.org/docs/latest/use/core-concepts#rule-suggestions). diff --git a/docs/user-guide/migrating-from-tslint.md b/docs/user-guide/migrating-from-tslint.md index f36977966..18fd0b2d9 100644 --- a/docs/user-guide/migrating-from-tslint.md +++ b/docs/user-guide/migrating-from-tslint.md @@ -22,17 +22,13 @@ In order for the parser to have access to type information, it needs access to y "parserOptions": { "ecmaVersion": 10, "project": "./tsconfig.json", - "sourceType": "module" + "sourceType": "module", }, - "plugins": [ - "functional" - ], + "plugins": ["functional"], "env": { - "es6": true + "es6": true, }, - "extends": [ - "plugin:functional/recommended" - ], + "extends": ["plugin:functional/recommended"], "rules": { // These rules will be applied to all linted file. }, @@ -41,9 +37,9 @@ In order for the parser to have access to type information, it needs access to y "files": ["*.ts", "*.tsx"], "rules": { // These rules will only be applied to ts file. - } - } - ] + }, + }, + ], } ``` diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 000000000..cc1b2346b --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,120 @@ +// @ts-check +import rsEslint from "@rebeccastevens/eslint-config"; +import pluginEslint from "eslint-plugin-eslint-plugin"; + +export default rsEslint( + { + typescript: { + tsconfig: "tsconfig.eslint.json", + unsafe: "off", + }, + formatters: true, + functional: "lite", + jsonc: true, + markdown: true, + stylistic: true, + yaml: true, + ignores: ["tests-compiled/"], + }, + { + plugins: { + eslint: pluginEslint, + }, + rules: { + "functional/prefer-immutable-types": "off", + + // Some types say they have nonnullable properties, but they don't always. + "ts/no-unnecessary-condition": "off", + }, + }, + { + files: ["src/**/*"], + rules: { + "eslint/fixer-return": "error", + "eslint/meta-property-ordering": "error", + "eslint/no-deprecated-context-methods": "error", + "eslint/no-deprecated-report-api": "error", + "eslint/no-missing-message-ids": "error", + "eslint/no-missing-placeholders": "error", + "eslint/no-property-in-node": "error", + "eslint/no-unused-message-ids": "error", + "eslint/no-unused-placeholders": "error", + "eslint/no-useless-token-range": "error", + "eslint/prefer-message-ids": "error", + "eslint/prefer-object-rule": "error", + "eslint/prefer-placeholders": "error", + "eslint/prefer-replace-text": "error", + "eslint/report-message-format": "error", + "eslint/require-meta-docs-description": "error", + "eslint/require-meta-docs-url": "error", + "eslint/require-meta-fixable": "error", + "eslint/require-meta-has-suggestions": "error", + "eslint/require-meta-schema": "error", + "eslint/require-meta-type": "error", + "eslint/consistent-output": "error", + "eslint/no-identical-tests": "error", + "eslint/no-only-tests": "error", + "eslint/prefer-output-null": "error", + "eslint/test-case-property-ordering": "error", + "eslint/test-case-shorthand-strings": "error", + }, + }, + { + files: ["src/configs/**/*", "src/index.ts"], + rules: { + "ts/naming-convention": "off", + }, + }, + { + files: ["src/utils/type-guards.ts", "src/utils/node-types.ts"], + rules: { + "jsdoc/require-jsdoc": "off", + }, + }, + { + files: ["src/utils/conditional-imports/**/*"], + rules: { + "@typescript-eslint/no-var-requires": "off", + "functional/functional-parameters": "off", + "functional/no-try-statements": "off", + "import/no-extraneous-dependencies": [ + "error", + { + peerDependencies: true, + }, + ], + "unicorn/prefer-module": "off", + }, + }, + { + files: ["tests/**/*"], + rules: { + "functional/no-return-void": "off", + "jsdoc/require-jsdoc": "off", + }, + }, + { + files: ["cz-adapter/**/*"], + rules: { + "no-console": "off", + + "import/no-extraneous-dependencies": [ + "error", + { + devDependencies: true, + peerDependencies: true, + }, + ], + "import/no-useless-path-segments": "off", + + "jsdoc/require-jsdoc": "off", + + "functional/immutable-data": "off", + "functional/no-conditional-statements": "off", + "functional/no-expression-statements": "off", + "functional/no-loop-statements": "off", + "functional/no-return-void": "off", + "functional/no-throw-statements": "off", + }, + }, +); diff --git a/knip.jsonc b/knip.jsonc index dd9e0b494..2f4a34efd 100644 --- a/knip.jsonc +++ b/knip.jsonc @@ -1,12 +1,38 @@ { "$schema": "node_modules/knip/schema-jsonc.json", - "entry": [ - "src/flat.ts!", - "src/classic.ts!", - "tests/**/*.test.ts", - "cz-adapter/index.js", - ], + "entry": ["src/index.ts!", "tests/**/*.test.ts", "cz-adapter/index.js"], "project": ["src/**/*.ts!", "tests/**/*.ts", "cz-adapter/**/*.{js,ts}"], "ignore": ["tests/fixture/file.ts", "src/utils/conditional-imports/esm/**/*"], - "ignoreDependencies": ["@types/eslint", "@vitest/coverage-istanbul"], + "ignoreDependencies": [ + "@stylistic/eslint-plugin", + "@types/eslint", + "@typescript-eslint/eslint-plugin", + "@typescript-eslint/parser", + "@typescript-eslint/utils", + "@vitest/coverage-istanbul", + "eslint-config-prettier", + "eslint-flat-config-utils", + "eslint-merge-processors", + "eslint-plugin-eslint-comments", + "eslint-plugin-format", + "eslint-plugin-functional", + "eslint-plugin-import-x", + "eslint-plugin-jsdoc", + "eslint-plugin-jsonc", + "eslint-plugin-markdown", + "eslint-plugin-n", + "eslint-plugin-no-only-tests", + "eslint-plugin-optimize-regex", + "eslint-plugin-prettier", + "eslint-plugin-promise", + "eslint-plugin-regexp", + "eslint-plugin-sonarjs", + "eslint-plugin-unicorn", + "eslint-plugin-vitest", + "eslint-plugin-yml", + "jsonc-eslint-parser", + "prettier-plugin-packagejson", + "prettier", + "yaml-eslint-parser", + ], } diff --git a/package.json b/package.json index 594fe402c..eb1257263 100644 --- a/package.json +++ b/package.json @@ -30,43 +30,25 @@ "name": "Rebecca Stevens", "email": "rebecca.stevens@outlook.co.nz" }, - "contributors": [ - "Jonas Kello" - ], + "contributors": ["Jonas Kello"], + "type": "module", "exports": { - ".": { - "types": { - "import": "./lib/classic.d.mts", - "require": "./lib/classic.d.cts" - }, - "import": "./lib/classic.mjs", - "require": "./lib/classic.cjs" + "types": { + "require": "./lib/index.d.cts", + "import": "./lib/index.d.mts" }, - "./flat": { - "types": { - "import": "./lib/flat.d.mts", - "require": "./lib/flat.d.cts" - }, - "import": "./lib/flat.mjs", - "require": "./lib/flat.cjs" - } + "require": "./lib/index.cjs", + "import": "./lib/index.mjs" }, - "main": "lib/classic.cjs", - "types": "lib/classic.d.cts", - "files": [ - "lib/", - "package.json", - "LICENSE", - "README.md" - ], + "files": ["lib/", "package.json", "LICENSE", "README.md"], "scripts": { "build": "pnpm run build:node && pnpm run build:docs", "build-tests": "rimraf tests-compiled && tsc -p tsconfig.tests-compiled.json && tsc-alias -p tsconfig.tests-compiled.json", "build:docs": "eslint-doc-generator", "build:node": "rimraf lib && rollup -c rollup.config.ts --configPlugin rollup-plugin-ts", "cz": "git-cz", - "lint": "pnpm run build:node && pnpm run lint:js && pnpm run lint:md && pnpm lint:eslint-docs && pnpm run lint:prettier && pnpm run lint:knip && pnpm run lint:spelling && pnpm run lint:packages", - "lint-fix": "pnpm run build:node && pnpm run lint:js-fix && pnpm lint:eslint-docs-fix && pnpm run lint:prettier-fix && pnpm run lint:packages-fix", + "lint": "pnpm run build:node && pnpm run lint:js && pnpm run lint:md && pnpm lint:eslint-docs && pnpm run lint:knip && pnpm run lint:spelling && pnpm run lint:packages", + "lint-fix": "pnpm run build:node && pnpm lint:eslint-docs-fix && pnpm run lint:js-fix && pnpm run lint:packages-fix", "lint:eslint-docs": "eslint-doc-generator --check", "lint:eslint-docs-fix": "pnpm build:docs", "lint:js": "eslint .", @@ -77,8 +59,6 @@ "lint:md": "markdownlint \"**/*.md\" --config=.markdownlint.json --ignore-path=.markdownlintignore", "lint:packages": "pnpm dedupe --check", "lint:packages-fix": "pnpm dedupe", - "lint:prettier": "prettier \"**/*\" --ignore-unknown --list-different", - "lint:prettier-fix": "prettier \"**/*\" --ignore-unknown --write", "lint:spelling": "cspell \"**\" \".github/**/*\"", "prepare": "husky", "release": "semantic-release", @@ -90,84 +70,91 @@ "verify": "pnpm run lint && pnpm run type-check && pnpm run build-tests && pnpm run test-compiled" }, "dependencies": { - "@typescript-eslint/utils": "^7.3.1", + "@typescript-eslint/utils": "^7.6.0", "deepmerge-ts": "^5.1.0", "escape-string-regexp": "^4.0.0", "is-immutable-type": "^3.1.0", - "semver": "^7.6.0", "ts-api-utils": "^1.3.0" }, "devDependencies": { "@babel/eslint-parser": "7.24.1", - "@commitlint/cli": "19.2.1", - "@commitlint/config-conventional": "19.1.0", + "@commitlint/cli": "19.2.2", + "@commitlint/config-conventional": "19.2.2", "@cspell/dict-cryptocurrencies": "5.0.0", - "@rebeccastevens/eslint-config": "2.0.11", + "@rebeccastevens/eslint-config": "3.0.0-next.5", "@semantic-release/changelog": "6.0.3", "@semantic-release/commit-analyzer": "12.0.0", "@semantic-release/git": "10.0.1", - "@semantic-release/github": "10.0.2", + "@semantic-release/github": "10.0.3", "@semantic-release/npm": "12.0.0", "@semantic-release/release-notes-generator": "13.0.0", + "@stylistic/eslint-plugin": "1.7.2", "@types/dedent": "0.7.2", - "@types/eslint": "8.56.6", - "@types/node": "16.18.93", + "@types/eslint": "8.56.9", + "@types/node": "20.12.7", "@types/rollup-plugin-auto-external": "2.0.5", - "@types/semver": "7.5.8", - "@typescript-eslint/eslint-plugin": "7.4.0", - "@typescript-eslint/parser": "7.4.0", - "@typescript-eslint/rule-tester": "7.4.0", - "@vitest/coverage-istanbul": "1.4.0", - "@vitest/coverage-v8": "1.4.0", + "@typescript-eslint/eslint-plugin": "7.7.0", + "@typescript-eslint/parser": "7.7.0", + "@typescript-eslint/rule-tester": "7.6.0", + "@vitest/coverage-istanbul": "1.5.0", + "@vitest/coverage-v8": "1.5.0", "chalk": "4.1.2", "commitizen": "4.3.0", "conventional-commit-types": "3.0.0", - "cspell": "8.6.1", + "cspell": "8.7.0", "deassert": "1.0.2", - "dedent": "1.5.1", - "eslint": "8.57.0", + "dedent": "1.5.3", + "eslint": "9.0.0", "eslint-config-prettier": "9.1.0", "eslint-doc-generator": "1.7.0", + "eslint-flat-config-utils": "0.2.3", "eslint-import-resolver-typescript": "3.6.1", + "eslint-merge-processors": "0.1.0", "eslint-plugin-eslint-comments": "3.2.0", - "eslint-plugin-eslint-plugin": "5.4.1", - "eslint-plugin-import": "2.29.1", - "eslint-plugin-jsdoc": "48.2.2", - "eslint-plugin-markdown": "3.0.1", - "eslint-plugin-n": "16.6.2", + "eslint-plugin-eslint-plugin": "6.0.0", + "eslint-plugin-format": "0.1.1", + "eslint-plugin-functional": "file:.", + "eslint-plugin-import-x": "0.5.0", + "eslint-plugin-jsdoc": "48.2.3", + "eslint-plugin-jsonc": "2.15.1", + "eslint-plugin-markdown": "4.0.1", + "eslint-plugin-n": "17.2.1", + "eslint-plugin-no-only-tests": "3.1.0", "eslint-plugin-optimize-regex": "1.2.1", - "eslint-plugin-prettier": "5.1.3", "eslint-plugin-promise": "6.1.1", - "eslint-plugin-sonarjs": "0.25.0", - "eslint-plugin-unicorn": "51.0.1", - "eslint-plugin-vitest": "0.4.1", + "eslint-plugin-regexp": "2.5.0", + "eslint-plugin-sonarjs": "0.25.1", + "eslint-plugin-unicorn": "52.0.0", + "eslint-plugin-vitest": "0.5.3", + "eslint-plugin-yml": "1.14.0", "espree": "10.0.1", "husky": "9.0.11", - "knip": "5.7.0", + "jsonc-eslint-parser": "2.4.0", + "knip": "5.9.4", "lint-staged": "15.2.2", "markdownlint": "0.34.0", "markdownlint-cli": "0.39.0", "prettier": "3.2.5", - "prettier-plugin-multiline-arrays": "3.0.4", - "prettier-plugin-packagejson": "2.4.14", + "prettier-plugin-packagejson": "2.5.0", "rimraf": "5.0.5", - "rollup": "4.13.2", + "rollup": "4.14.3", "rollup-plugin-auto-external": "2.0.0", "rollup-plugin-ts": "3.4.5", - "semantic-release": "23.0.6", + "semantic-release": "23.0.8", "semantic-release-replace-plugin": "1.2.7", "ts-node": "10.9.2", "tsc-alias": "1.8.8", "tsc-files": "1.1.4", "tsconfig-paths": "4.2.0", - "typescript": "5.4.3", + "typescript": "5.4.5", "vite-tsconfig-paths": "4.3.2", - "vitest": "1.4.0", - "word-wrap": "1.2.5" + "vitest": "1.5.0", + "word-wrap": "1.2.5", + "yaml-eslint-parser": "1.2.2" }, "peerDependencies": { - "eslint": "^8.0.0", - "typescript": ">=4.3.5" + "eslint": "^9.0.0", + "typescript": ">=4.7.4" }, "peerDependenciesMeta": { "typescript": { @@ -176,6 +163,6 @@ }, "packageManager": "pnpm@8.15.5", "engines": { - "node": ">=16.10.0" + "node": ">=v18.18.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e1a4d0eeb..be0e5a646 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,8 +6,8 @@ settings: dependencies: '@typescript-eslint/utils': - specifier: ^7.3.1 - version: 7.4.0(eslint@8.57.0)(typescript@5.4.3) + specifier: ^7.6.0 + version: 7.7.0(eslint@9.0.0)(typescript@5.4.5) deepmerge-ts: specifier: ^5.1.0 version: 5.1.0 @@ -16,153 +16,174 @@ dependencies: version: 4.0.0 is-immutable-type: specifier: ^3.1.0 - version: 3.1.0(eslint@8.57.0)(typescript@5.4.3) - semver: - specifier: ^7.6.0 - version: 7.6.0 + version: 3.1.0(eslint@9.0.0)(typescript@5.4.5) ts-api-utils: specifier: ^1.3.0 - version: 1.3.0(typescript@5.4.3) + version: 1.3.0(typescript@5.4.5) devDependencies: '@babel/eslint-parser': specifier: 7.24.1 - version: 7.24.1(@babel/core@7.24.1)(eslint@8.57.0) + version: 7.24.1(@babel/core@7.24.1)(eslint@9.0.0) '@commitlint/cli': - specifier: 19.2.1 - version: 19.2.1(@types/node@16.18.93)(typescript@5.4.3) + specifier: 19.2.2 + version: 19.2.2(@types/node@20.12.7)(typescript@5.4.5) '@commitlint/config-conventional': - specifier: 19.1.0 - version: 19.1.0 + specifier: 19.2.2 + version: 19.2.2 '@cspell/dict-cryptocurrencies': specifier: 5.0.0 version: 5.0.0 '@rebeccastevens/eslint-config': - specifier: 2.0.11 - version: 2.0.11(@typescript-eslint/eslint-plugin@7.4.0)(@typescript-eslint/parser@7.4.0)(eslint-import-resolver-typescript@3.6.1)(eslint-plugin-eslint-comments@3.2.0)(eslint-plugin-functional@6.1.1)(eslint-plugin-import@2.29.1)(eslint-plugin-jsdoc@48.2.2)(eslint-plugin-markdown@3.0.1)(eslint-plugin-n@16.6.2)(eslint-plugin-optimize-regex@1.2.1)(eslint-plugin-promise@6.1.1)(eslint-plugin-sonarjs@0.25.0)(eslint-plugin-unicorn@51.0.1)(eslint@8.57.0) + specifier: 3.0.0-next.5 + version: 3.0.0-next.5(@stylistic/eslint-plugin@1.7.2)(@typescript-eslint/eslint-plugin@7.7.0)(@typescript-eslint/parser@7.7.0)(@typescript-eslint/utils@7.7.0)(eslint-config-prettier@9.1.0)(eslint-flat-config-utils@0.2.3)(eslint-import-resolver-typescript@3.6.1)(eslint-merge-processors@0.1.0)(eslint-plugin-eslint-comments@3.2.0)(eslint-plugin-format@0.1.1)(eslint-plugin-functional@0.0.0-development)(eslint-plugin-import-x@0.5.0)(eslint-plugin-jsdoc@48.2.3)(eslint-plugin-jsonc@2.15.1)(eslint-plugin-markdown@4.0.1)(eslint-plugin-n@17.2.1)(eslint-plugin-no-only-tests@3.1.0)(eslint-plugin-optimize-regex@1.2.1)(eslint-plugin-promise@6.1.1)(eslint-plugin-regexp@2.5.0)(eslint-plugin-sonarjs@0.25.1)(eslint-plugin-unicorn@52.0.0)(eslint-plugin-vitest@0.5.3)(eslint-plugin-yml@1.14.0)(eslint@9.0.0)(jsonc-eslint-parser@2.4.0)(prettier-plugin-packagejson@2.5.0)(prettier@3.2.5)(yaml-eslint-parser@1.2.2) '@semantic-release/changelog': specifier: 6.0.3 - version: 6.0.3(semantic-release@23.0.6) + version: 6.0.3(semantic-release@23.0.8) '@semantic-release/commit-analyzer': specifier: 12.0.0 - version: 12.0.0(semantic-release@23.0.6) + version: 12.0.0(semantic-release@23.0.8) '@semantic-release/git': specifier: 10.0.1 - version: 10.0.1(semantic-release@23.0.6) + version: 10.0.1(semantic-release@23.0.8) '@semantic-release/github': - specifier: 10.0.2 - version: 10.0.2(semantic-release@23.0.6) + specifier: 10.0.3 + version: 10.0.3(semantic-release@23.0.8) '@semantic-release/npm': specifier: 12.0.0 - version: 12.0.0(semantic-release@23.0.6) + version: 12.0.0(semantic-release@23.0.8) '@semantic-release/release-notes-generator': specifier: 13.0.0 - version: 13.0.0(semantic-release@23.0.6) + version: 13.0.0(semantic-release@23.0.8) + '@stylistic/eslint-plugin': + specifier: 1.7.2 + version: 1.7.2(eslint@9.0.0)(typescript@5.4.5) '@types/dedent': specifier: 0.7.2 version: 0.7.2 '@types/eslint': - specifier: 8.56.6 - version: 8.56.6 + specifier: 8.56.9 + version: 8.56.9 '@types/node': - specifier: 16.18.93 - version: 16.18.93 + specifier: 20.12.7 + version: 20.12.7 '@types/rollup-plugin-auto-external': specifier: 2.0.5 version: 2.0.5 - '@types/semver': - specifier: 7.5.8 - version: 7.5.8 '@typescript-eslint/eslint-plugin': - specifier: 7.4.0 - version: 7.4.0(@typescript-eslint/parser@7.4.0)(eslint@8.57.0)(typescript@5.4.3) + specifier: 7.7.0 + version: 7.7.0(@typescript-eslint/parser@7.7.0)(eslint@9.0.0)(typescript@5.4.5) '@typescript-eslint/parser': - specifier: 7.4.0 - version: 7.4.0(eslint@8.57.0)(typescript@5.4.3) + specifier: 7.7.0 + version: 7.7.0(eslint@9.0.0)(typescript@5.4.5) '@typescript-eslint/rule-tester': - specifier: 7.4.0 - version: 7.4.0(@eslint/eslintrc@3.0.2)(eslint@8.57.0)(typescript@5.4.3) + specifier: 7.6.0 + version: 7.6.0(@eslint/eslintrc@3.0.2)(eslint@9.0.0)(typescript@5.4.5) '@vitest/coverage-istanbul': - specifier: 1.4.0 - version: 1.4.0(vitest@1.4.0) + specifier: 1.5.0 + version: 1.5.0(vitest@1.5.0) '@vitest/coverage-v8': - specifier: 1.4.0 - version: 1.4.0(vitest@1.4.0) + specifier: 1.5.0 + version: 1.5.0(vitest@1.5.0) chalk: specifier: 4.1.2 version: 4.1.2 commitizen: specifier: 4.3.0 - version: 4.3.0(@types/node@16.18.93)(typescript@5.4.3) + version: 4.3.0(@types/node@20.12.7)(typescript@5.4.5) conventional-commit-types: specifier: 3.0.0 version: 3.0.0 cspell: - specifier: 8.6.1 - version: 8.6.1 + specifier: 8.7.0 + version: 8.7.0 deassert: specifier: 1.0.2 - version: 1.0.2(rollup@4.13.2) + version: 1.0.2(rollup@4.14.3) dedent: - specifier: 1.5.1 - version: 1.5.1 + specifier: 1.5.3 + version: 1.5.3 eslint: - specifier: 8.57.0 - version: 8.57.0 + specifier: 9.0.0 + version: 9.0.0 eslint-config-prettier: specifier: 9.1.0 - version: 9.1.0(eslint@8.57.0) + version: 9.1.0(eslint@9.0.0) eslint-doc-generator: specifier: 1.7.0 - version: 1.7.0(eslint@8.57.0)(typescript@5.4.3) + version: 1.7.0(eslint@9.0.0)(typescript@5.4.5) + eslint-flat-config-utils: + specifier: 0.2.3 + version: 0.2.3 eslint-import-resolver-typescript: specifier: 3.6.1 - version: 3.6.1(@typescript-eslint/parser@7.4.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + version: 3.6.1(@typescript-eslint/parser@7.7.0)(eslint-plugin-import@2.29.1)(eslint@9.0.0) + eslint-merge-processors: + specifier: 0.1.0 + version: 0.1.0(eslint@9.0.0) eslint-plugin-eslint-comments: specifier: 3.2.0 - version: 3.2.0(eslint@8.57.0) + version: 3.2.0(eslint@9.0.0) eslint-plugin-eslint-plugin: - specifier: 5.4.1 - version: 5.4.1(eslint@8.57.0) - eslint-plugin-import: - specifier: 2.29.1 - version: 2.29.1(@typescript-eslint/parser@7.4.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + specifier: 6.0.0 + version: 6.0.0(eslint@9.0.0) + eslint-plugin-format: + specifier: 0.1.1 + version: 0.1.1(eslint@9.0.0) + eslint-plugin-functional: + specifier: file:. + version: file:(eslint@9.0.0)(typescript@5.4.5) + eslint-plugin-import-x: + specifier: 0.5.0 + version: 0.5.0(eslint@9.0.0)(typescript@5.4.5) eslint-plugin-jsdoc: - specifier: 48.2.2 - version: 48.2.2(eslint@8.57.0) + specifier: 48.2.3 + version: 48.2.3(eslint@9.0.0) + eslint-plugin-jsonc: + specifier: 2.15.1 + version: 2.15.1(eslint@9.0.0) eslint-plugin-markdown: - specifier: 3.0.1 - version: 3.0.1(eslint@8.57.0) + specifier: 4.0.1 + version: 4.0.1(eslint@9.0.0) eslint-plugin-n: - specifier: 16.6.2 - version: 16.6.2(eslint@8.57.0) + specifier: 17.2.1 + version: 17.2.1(eslint@9.0.0) + eslint-plugin-no-only-tests: + specifier: 3.1.0 + version: 3.1.0 eslint-plugin-optimize-regex: specifier: 1.2.1 version: 1.2.1 - eslint-plugin-prettier: - specifier: 5.1.3 - version: 5.1.3(@types/eslint@8.56.6)(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5) eslint-plugin-promise: specifier: 6.1.1 - version: 6.1.1(eslint@8.57.0) + version: 6.1.1(eslint@9.0.0) + eslint-plugin-regexp: + specifier: 2.5.0 + version: 2.5.0(eslint@9.0.0) eslint-plugin-sonarjs: - specifier: 0.25.0 - version: 0.25.0(eslint@8.57.0) + specifier: 0.25.1 + version: 0.25.1(eslint@9.0.0) eslint-plugin-unicorn: - specifier: 51.0.1 - version: 51.0.1(eslint@8.57.0) + specifier: 52.0.0 + version: 52.0.0(eslint@9.0.0) eslint-plugin-vitest: - specifier: 0.4.1 - version: 0.4.1(@typescript-eslint/eslint-plugin@7.4.0)(eslint@8.57.0)(typescript@5.4.3)(vitest@1.4.0) + specifier: 0.5.3 + version: 0.5.3(@typescript-eslint/eslint-plugin@7.7.0)(eslint@9.0.0)(typescript@5.4.5)(vitest@1.5.0) + eslint-plugin-yml: + specifier: 1.14.0 + version: 1.14.0(eslint@9.0.0) espree: specifier: 10.0.1 version: 10.0.1 husky: specifier: 9.0.11 version: 9.0.11 + jsonc-eslint-parser: + specifier: 2.4.0 + version: 2.4.0 knip: - specifier: 5.7.0 - version: 5.7.0(@types/node@16.18.93)(typescript@5.4.3) + specifier: 5.9.4 + version: 5.9.4(@types/node@20.12.7)(typescript@5.4.5) lint-staged: specifier: 15.2.2 version: 15.2.2 @@ -175,54 +196,54 @@ devDependencies: prettier: specifier: 3.2.5 version: 3.2.5 - prettier-plugin-multiline-arrays: - specifier: 3.0.4 - version: 3.0.4(prettier@3.2.5) prettier-plugin-packagejson: - specifier: 2.4.14 - version: 2.4.14(prettier@3.2.5) + specifier: 2.5.0 + version: 2.5.0(prettier@3.2.5) rimraf: specifier: 5.0.5 version: 5.0.5 rollup: - specifier: 4.13.2 - version: 4.13.2 + specifier: 4.14.3 + version: 4.14.3 rollup-plugin-auto-external: specifier: 2.0.0 - version: 2.0.0(rollup@4.13.2) + version: 2.0.0(rollup@4.14.3) rollup-plugin-ts: specifier: 3.4.5 - version: 3.4.5(@babel/core@7.24.1)(rollup@4.13.2)(typescript@5.4.3) + version: 3.4.5(@babel/core@7.24.1)(rollup@4.14.3)(typescript@5.4.5) semantic-release: - specifier: 23.0.6 - version: 23.0.6(typescript@5.4.3) + specifier: 23.0.8 + version: 23.0.8(typescript@5.4.5) semantic-release-replace-plugin: specifier: 1.2.7 - version: 1.2.7(semantic-release@23.0.6) + version: 1.2.7(semantic-release@23.0.8) ts-node: specifier: 10.9.2 - version: 10.9.2(@types/node@16.18.93)(typescript@5.4.3) + version: 10.9.2(@types/node@20.12.7)(typescript@5.4.5) tsc-alias: specifier: 1.8.8 version: 1.8.8 tsc-files: specifier: 1.1.4 - version: 1.1.4(typescript@5.4.3) + version: 1.1.4(typescript@5.4.5) tsconfig-paths: specifier: 4.2.0 version: 4.2.0 typescript: - specifier: 5.4.3 - version: 5.4.3 + specifier: 5.4.5 + version: 5.4.5 vite-tsconfig-paths: specifier: 4.3.2 - version: 4.3.2(typescript@5.4.3) + version: 4.3.2(typescript@5.4.5) vitest: - specifier: 1.4.0 - version: 1.4.0(@types/node@16.18.93) + specifier: 1.5.0 + version: 1.5.0(@types/node@20.12.7) word-wrap: specifier: 1.2.5 version: 1.2.5 + yaml-eslint-parser: + specifier: 1.2.2 + version: 1.2.2 packages: @@ -238,20 +259,10 @@ packages: '@jridgewell/trace-mapping': 0.3.25 dev: true - /@augment-vir/common@23.4.0: - resolution: {integrity: sha512-QIrJ1doD00TNbOzeVrk9KgPTzRlIjayxERnhtbQjK/AFPj5yElcB03GbnGdQZPzws/R+5gfMM5cZiH7QyBP+Kg==} + /@antfu/install-pkg@0.3.2: + resolution: {integrity: sha512-FFYqME8+UHlPnRlX/vn+8cTD4Wo/nG/lzRxpABs3XANBmdJdNImVz3QvjNAE/W3PSCNbG387FOz8o5WelnWOlg==} dependencies: - browser-or-node: 2.1.1 - run-time-assertions: 1.2.0 - type-fest: 4.13.1 - dev: true - - /@augment-vir/common@26.2.1: - resolution: {integrity: sha512-NoVW3K3MB6ndMspsxbdFiQZ3Fc6mapXphyOUZKlQbWTMNGF7RaVEcnP1m8Un1fXTUBblBcdUZWwP95Z51mg/RQ==} - dependencies: - browser-or-node: 2.1.1 - run-time-assertions: 1.2.0 - type-fest: 4.13.1 + execa: 8.0.1 dev: true /@babel/code-frame@7.24.2: @@ -290,7 +301,7 @@ packages: - supports-color dev: true - /@babel/eslint-parser@7.24.1(@babel/core@7.24.1)(eslint@8.57.0): + /@babel/eslint-parser@7.24.1(@babel/core@7.24.1)(eslint@9.0.0): resolution: {integrity: sha512-d5guuzMlPeDfZIbpQ8+g1NaCNuAGBBGNECh0HVqz1sjOeVLh2CEaifuOysCH18URW6R7pqXINvf5PaR/dC6jLQ==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: @@ -299,7 +310,7 @@ packages: dependencies: '@babel/core': 7.24.1 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 8.57.0 + eslint: 9.0.0 eslint-visitor-keys: 2.1.0 semver: 6.3.1 dev: true @@ -464,6 +475,23 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true + /@clack/core@0.3.4: + resolution: {integrity: sha512-H4hxZDXgHtWTwV3RAVenqcC4VbJZNegbBjlPvzOzCouXtS2y3sDvlO3IsbrPNWuLWPPlYVYPghQdSF64683Ldw==} + dependencies: + picocolors: 1.0.0 + sisteransi: 1.0.5 + dev: true + + /@clack/prompts@0.7.0: + resolution: {integrity: sha512-0MhX9/B4iL6Re04jPrttDm+BsP8y6mS7byuv0BvXgdXhbV5PdlsHt55dvNsuBCPZ7xq1oTAOOuotR9NFbQyMSA==} + dependencies: + '@clack/core': 0.3.4 + picocolors: 1.0.0 + sisteransi: 1.0.5 + dev: true + bundledDependencies: + - is-unicode-supported + /@colors/colors@1.5.0: resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} @@ -471,14 +499,14 @@ packages: dev: true optional: true - /@commitlint/cli@19.2.1(@types/node@16.18.93)(typescript@5.4.3): - resolution: {integrity: sha512-cbkYUJsLqRomccNxvoJTyv5yn0bSy05BBizVyIcLACkRbVUqYorC351Diw/XFSWC/GtpwiwT2eOvQgFZa374bg==} + /@commitlint/cli@19.2.2(@types/node@20.12.7)(typescript@5.4.5): + resolution: {integrity: sha512-P8cbOHfg2PQRzfICLSrzUVOCVMqjEZ8Hlth6mtJ4yOEjT47Q5PbIGymgX3rLVylNw+3IAT2Djn9IJ2wHbXFzBg==} engines: {node: '>=v18'} hasBin: true dependencies: '@commitlint/format': 19.0.3 - '@commitlint/lint': 19.1.0 - '@commitlint/load': 19.2.0(@types/node@16.18.93)(typescript@5.4.3) + '@commitlint/lint': 19.2.2 + '@commitlint/load': 19.2.0(@types/node@20.12.7)(typescript@5.4.5) '@commitlint/read': 19.2.1 '@commitlint/types': 19.0.3 execa: 8.0.1 @@ -488,8 +516,8 @@ packages: - typescript dev: true - /@commitlint/config-conventional@19.1.0: - resolution: {integrity: sha512-KIKD2xrp6Uuk+dcZVj3++MlzIr/Su6zLE8crEDQCZNvWHNQSeeGbzOlNtsR32TUy6H3JbP7nWgduAHCaiGQ6EA==} + /@commitlint/config-conventional@19.2.2: + resolution: {integrity: sha512-mLXjsxUVLYEGgzbxbxicGPggDuyWNkf25Ht23owXIH+zV2pv1eJuzLK3t1gDY5Gp6pxdE60jZnWUY5cvgL3ufw==} engines: {node: '>=v18'} dependencies: '@commitlint/types': 19.0.3 @@ -529,25 +557,25 @@ packages: chalk: 5.3.0 dev: true - /@commitlint/is-ignored@19.0.3: - resolution: {integrity: sha512-MqDrxJaRSVSzCbPsV6iOKG/Lt52Y+PVwFVexqImmYYFhe51iVJjK2hRhOG2jUAGiUHk4jpdFr0cZPzcBkSzXDQ==} + /@commitlint/is-ignored@19.2.2: + resolution: {integrity: sha512-eNX54oXMVxncORywF4ZPFtJoBm3Tvp111tg1xf4zWXGfhBPKpfKG6R+G3G4v5CPlRROXpAOpQ3HMhA9n1Tck1g==} engines: {node: '>=v18'} dependencies: '@commitlint/types': 19.0.3 semver: 7.6.0 dev: true - /@commitlint/lint@19.1.0: - resolution: {integrity: sha512-ESjaBmL/9cxm+eePyEr6SFlBUIYlYpI80n+Ltm7IA3MAcrmiP05UMhJdAD66sO8jvo8O4xdGn/1Mt2G5VzfZKw==} + /@commitlint/lint@19.2.2: + resolution: {integrity: sha512-xrzMmz4JqwGyKQKTpFzlN0dx0TAiT7Ran1fqEBgEmEj+PU98crOFtysJgY+QdeSagx6EDRigQIXJVnfrI0ratA==} engines: {node: '>=v18'} dependencies: - '@commitlint/is-ignored': 19.0.3 + '@commitlint/is-ignored': 19.2.2 '@commitlint/parse': 19.0.3 '@commitlint/rules': 19.0.3 '@commitlint/types': 19.0.3 dev: true - /@commitlint/load@19.2.0(@types/node@16.18.93)(typescript@5.4.3): + /@commitlint/load@19.2.0(@types/node@20.12.7)(typescript@5.4.5): resolution: {integrity: sha512-XvxxLJTKqZojCxaBQ7u92qQLFMMZc4+p9qrIq/9kJDy8DOrEa7P1yx7Tjdc2u2JxIalqT4KOGraVgCE7eCYJyQ==} engines: {node: '>=v18'} dependencies: @@ -556,8 +584,8 @@ packages: '@commitlint/resolve-extends': 19.1.0 '@commitlint/types': 19.0.3 chalk: 5.3.0 - cosmiconfig: 9.0.0(typescript@5.4.3) - cosmiconfig-typescript-loader: 5.0.0(@types/node@16.18.93)(cosmiconfig@9.0.0)(typescript@5.4.3) + cosmiconfig: 9.0.0(typescript@5.4.5) + cosmiconfig-typescript-loader: 5.0.0(@types/node@20.12.7)(cosmiconfig@9.0.0)(typescript@5.4.5) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -634,8 +662,8 @@ packages: chalk: 5.3.0 dev: true - /@cspell/cspell-bundled-dicts@8.6.1: - resolution: {integrity: sha512-s6Av1xIgctYLuUiazKZjQ2WRUXc9dU38BOZXwM/lb7y8grQMEuTjST1c+8MOkZkppx48/sO7GHIF3k9rEzD3fg==} + /@cspell/cspell-bundled-dicts@8.7.0: + resolution: {integrity: sha512-B5YQI7Dd9m0JHTmHgs7PiyP4BWXzl8ixpK+HGOwhxzh7GyfFt1Eo/gxMxBDX/9SaewEzeb2OjRpRKEFtEsto3A==} engines: {node: '>=18'} dependencies: '@cspell/dict-ada': 4.0.2 @@ -671,6 +699,7 @@ packages: '@cspell/dict-lorem-ipsum': 4.0.0 '@cspell/dict-lua': 4.0.3 '@cspell/dict-makefile': 1.0.0 + '@cspell/dict-monkeyc': 1.0.6 '@cspell/dict-node': 4.0.3 '@cspell/dict-npm': 5.0.15 '@cspell/dict-php': 4.0.6 @@ -690,32 +719,32 @@ packages: '@cspell/dict-vue': 3.0.0 dev: true - /@cspell/cspell-json-reporter@8.6.1: - resolution: {integrity: sha512-75cmJgU9iQgrDnLFIUyvgybySJJi29BPw71z+8ZO9WhNofufxoSjaWepZeYV2nK0nHXM+MbdQG5Mmj/Lv6J1FA==} + /@cspell/cspell-json-reporter@8.7.0: + resolution: {integrity: sha512-LTQPEvXvCqnc+ok9WXpSISZyt4/nGse9fVEM430g0BpGzKpt3RMx49B8uasvvnanzCuikaW9+wFLmwgvraERhA==} engines: {node: '>=18'} dependencies: - '@cspell/cspell-types': 8.6.1 + '@cspell/cspell-types': 8.7.0 dev: true - /@cspell/cspell-pipe@8.6.1: - resolution: {integrity: sha512-guIlGhhOLQwfqevBSgp26b+SX4I1hCH+puAksWAk93bybKkcGtGpcavAQSN9qvamox4zcHnvGutEPF+UcXuceQ==} + /@cspell/cspell-pipe@8.7.0: + resolution: {integrity: sha512-ePqddIQ4arqPQgOkC146SkZxvZb9/jL7xIM5Igy2n3tiWTC5ijrX/mbHpPZ1VGcFck+1M0cJUuyhuJk+vMj3rg==} engines: {node: '>=18'} dev: true - /@cspell/cspell-resolver@8.6.1: - resolution: {integrity: sha512-ZUbYcvEhfokHG9qfUlIylUqEobG84PiDozCkE8U4h/rTSmYkf/nAD+M6yg+jQ0F2aTFGNbvpKKGFlfXFXveX7A==} + /@cspell/cspell-resolver@8.7.0: + resolution: {integrity: sha512-grZwDFYqcBYQDaz4AkUtdyqc4UUH2J3/7yWVkBbYDPE+FQHa9ofFXzXxyjs56GJlPfi9ULpe5/Wz6uVLg8rQkQ==} engines: {node: '>=18'} dependencies: global-directory: 4.0.1 dev: true - /@cspell/cspell-service-bus@8.6.1: - resolution: {integrity: sha512-WpI3fSW8t00UMetfd6tS8f9+xE3+ElIUO/bQ1YKK95TMIRdEUcH+QDxcHM66pJXEm4WiaN3H/MfWk1fIhGlJ8g==} + /@cspell/cspell-service-bus@8.7.0: + resolution: {integrity: sha512-KW48iu0nTDzbedixc7iB7K7mlAZQ7QeMLuM/akxigOlvtOdVJrRa9Pfn44lwejts1ANb/IXil3GH8YylkVi76Q==} engines: {node: '>=18'} dev: true - /@cspell/cspell-types@8.6.1: - resolution: {integrity: sha512-MXa9v6sXbbwyiNno7v7vczNph6AsMNWnpMRCcW3h/siXNQYRuMssdxqT5sQJ8Kurh3M/Wo7DlKX4n74elKL3iQ==} + /@cspell/cspell-types@8.7.0: + resolution: {integrity: sha512-Rb+LCE5I9JEb/LE8nSViVSF8z1CWv/z4mPBIG37VMa7aUx2gAQa6gJekNfpY9YZiMzx4Tv3gDujN80ytks4pGA==} engines: {node: '>=18'} dev: true @@ -855,6 +884,10 @@ packages: resolution: {integrity: sha512-3W9tHPcSbJa6s0bcqWo6VisEDTSN5zOtDbnPabF7rbyjRpNo0uHXHRJQF8gAbFzoTzBBhgkTmrfSiuyQm7vBUQ==} dev: true + /@cspell/dict-monkeyc@1.0.6: + resolution: {integrity: sha512-oO8ZDu/FtZ55aq9Mb67HtaCnsLn59xvhO/t2mLLTHAp667hJFxpp7bCtr2zOrR1NELzFXmKln/2lw/PvxMSvrA==} + dev: true + /@cspell/dict-node@4.0.3: resolution: {integrity: sha512-sFlUNI5kOogy49KtPg8SMQYirDGIAoKBO3+cDLIwD4MLdsWy1q0upc7pzGht3mrjuyMiPRUV14Bb0rkVLrxOhg==} dev: true @@ -925,15 +958,15 @@ packages: resolution: {integrity: sha512-niiEMPWPV9IeRBRzZ0TBZmNnkK3olkOPYxC1Ny2AX4TGlYRajcW0WUtoSHmvvjZNfWLSg2L6ruiBeuPSbjnG6A==} dev: true - /@cspell/dynamic-import@8.6.1: - resolution: {integrity: sha512-Fjvkcb5umIAcHfw/iiciYWgO2mXVuRZzQAWPSub6UFCxxcJlRz39YPXa+3O/m3lnXCeo8ChoaEN8qnuV4ogk6g==} + /@cspell/dynamic-import@8.7.0: + resolution: {integrity: sha512-xlEPdiHVDu+4xYkvwjL9MgklxOi9XB+Pr1H9s3Ww9WEq+q6BA3xOHxLIU/k8mhqFTMZGFZRCsdy/EwMu6SyRhQ==} engines: {node: '>=18.0'} dependencies: import-meta-resolve: 4.0.0 dev: true - /@cspell/strong-weak-map@8.6.1: - resolution: {integrity: sha512-X6/7cy+GGVJFXsfrZapxVKn5mtehNTr7hTlg0bVj3iFoNYEPW9zq9l6WIcI4psmaU8G4DSrNsBK7pp87W3u16A==} + /@cspell/strong-weak-map@8.7.0: + resolution: {integrity: sha512-0bo0WwDr2lzGoCP7vbpWbDpPyuOrHKK+218txnUpx6Pn1EDBLfcDQsiZED5B6zlpwgbGi6y3vc0rWtJbjKvwzg==} engines: {node: '>=18'} dev: true @@ -944,6 +977,18 @@ packages: '@jridgewell/trace-mapping': 0.3.9 dev: true + /@dprint/formatter@0.2.1: + resolution: {integrity: sha512-GCzgRt2o4mhZLy8L47k2A+q9EMG/jWhzZebE29EqKsxmjDrSfv2VisEj/Q+39OOf04jTkEfB/TRO+IZSyxHdYg==} + dev: true + + /@dprint/markdown@0.16.4: + resolution: {integrity: sha512-WjsC4yLybR5/76+d/2s36nOBGjETe+jJR//ddFHohDXKdis+FTUv7dJ00kmd6g0AKQwDITayM1Nid10gFNG0Yg==} + dev: true + + /@dprint/toml@0.6.1: + resolution: {integrity: sha512-1fmGui+BNLKNonG3fvjT+thtL8u0pL1GsIuRbhgRnP+UOkcfPgoUsgNFctDmOE13y6MX4TVvxXKKrMY/qwXqkA==} + dev: true + /@ericcornelissen/bash-parser@0.5.2: resolution: {integrity: sha512-4pIMTa1nEFfMXitv7oaNEWOdM+zpOZavesa5GaiWTgda6Zk32CFGxjUp/iIaN0PwgUW1yTq/fztSjbpE8SLGZQ==} engines: {node: '>=4'} @@ -1185,13 +1230,13 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): + /@eslint-community/eslint-utils@4.4.0(eslint@9.0.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.57.0 + eslint: 9.0.0 eslint-visitor-keys: 3.4.3 /@eslint-community/regexpp@4.10.0: @@ -1213,6 +1258,7 @@ packages: strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color + dev: true /@eslint/eslintrc@3.0.2: resolution: {integrity: sha512-wV19ZEGEMAC1eHgrS7UQPqsdEiCIbTKTasEfcXAigzoXICcqZSjBZEHlZwNVvKg6UBCjSlos84XiLqsRJnIcIg==} @@ -1229,17 +1275,16 @@ packages: strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - dev: true - /@eslint/js@8.57.0: - resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@eslint/js@9.0.0: + resolution: {integrity: sha512-RThY/MnKrhubF6+s1JflwUjPEsnCEmYCWwqa/aRISKWNXGZ9epUwft4bUMM35SdKF9xvBrLydAM1RDHd1Z//ZQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - /@humanwhocodes/config-array@0.11.14: - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + /@humanwhocodes/config-array@0.12.3: + resolution: {integrity: sha512-jsNnTBlMWuTpDkeE3on7+dWJi0D6fdDfeANj/w7MpS8ztROCoLvIO2nG0CcFj+E4k8j4QrSTh4Oryi3i2G669g==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 2.0.2 + '@humanwhocodes/object-schema': 2.0.3 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: @@ -1249,8 +1294,8 @@ packages: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - /@humanwhocodes/object-schema@2.0.2: - resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + /@humanwhocodes/object-schema@2.0.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} /@isaacs/cliui@8.0.2: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} @@ -1384,7 +1429,7 @@ packages: dependencies: '@npmcli/name-from-folder': 2.0.0 glob: 10.3.10 - minimatch: 9.0.3 + minimatch: 9.0.4 read-package-json-fast: 3.0.2 dev: true @@ -1454,14 +1499,18 @@ packages: resolution: {integrity: sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==} dev: true - /@octokit/plugin-paginate-rest@10.0.0(@octokit/core@6.0.1): - resolution: {integrity: sha512-G1Z67qOiFneKDJyMafHQkWnKm1kU3FfbRZLzxgsFg4dOa3pRNdABbdk+xo/oev6P88lnbt7GKdBNB6dJZuPphA==} + /@octokit/openapi-types@22.0.1: + resolution: {integrity: sha512-1yN5m1IMNXthoBDUXFF97N1gHop04B3H8ws7wtOr8GgRyDO1gKALjwMHARNBoMBiB/2vEe/vxstrApcJZzQbnQ==} + dev: true + + /@octokit/plugin-paginate-rest@11.1.0(@octokit/core@6.0.1): + resolution: {integrity: sha512-VyWrvJUivEv2pKmHLBLtLX2vDbGfMiLrxSZE7vV2NAO1VsCWFIVVj7xodkOr7zOfsEkzTvF1Koi7Rsg6KvSc2A==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '>=6' dependencies: '@octokit/core': 6.0.1 - '@octokit/types': 12.6.0 + '@octokit/types': 13.4.0 dev: true /@octokit/plugin-retry@7.0.3(@octokit/core@6.0.1): @@ -1510,6 +1559,12 @@ packages: '@octokit/openapi-types': 20.0.0 dev: true + /@octokit/types@13.4.0: + resolution: {integrity: sha512-WlMegy3lPXYWASe3k9Jslc5a0anrYAYMWtsFrxBTdQjS70hvLH6C+PGvHbOsgy3RA3LouGJoU/vAt4KarecQLQ==} + dependencies: + '@octokit/openapi-types': 22.0.1 + dev: true + /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -1542,8 +1597,8 @@ packages: '@pnpm/types': 9.4.2 dev: true - /@pnpm/error@5.0.3: - resolution: {integrity: sha512-ONJU5cUeoeJSy50qOYsMZQHTA/9QKmGgh1ATfEpCLgtbdwqUiwD9MxHNeXUYYI/pocBCz6r1ZCFqiQvO+8SUKA==} + /@pnpm/error@5.0.2: + resolution: {integrity: sha512-0TEm+tWNYm+9uh6DSKyRbv8pv/6b4NL0PastLvMxIoqZbBZ5Zj1cYi332R9xsSUi31ZOsu2wpgn/bC7DA9hrjg==} engines: {node: '>=16.14'} dependencies: '@pnpm/constants': 7.1.1 @@ -1599,14 +1654,14 @@ packages: validate-npm-package-name: 4.0.0 dev: true - /@pnpm/npm-resolver@18.1.1(@pnpm/logger@5.0.0): - resolution: {integrity: sha512-NptzncmMD5ZMimbjWkGpMzuBRhlCY+sh7mzypPdBOTNlh5hmEQe/VaRKjNK4V9/b0C/llElkvIePL6acybu86w==} + /@pnpm/npm-resolver@18.1.0(@pnpm/logger@5.0.0): + resolution: {integrity: sha512-fUYKX/iHiHldL0VRVvkQI35YK2jWhZEkPO6rrGke8309+LKAo12v833nBttMDpQrtHefmqhB4mhCzQq6L2Xqmg==} engines: {node: '>=16.14'} peerDependencies: '@pnpm/logger': ^5.0.0 dependencies: '@pnpm/core-loggers': 9.0.6(@pnpm/logger@5.0.0) - '@pnpm/error': 5.0.3 + '@pnpm/error': 5.0.2 '@pnpm/fetching-types': 5.0.0 '@pnpm/graceful-fs': 3.2.0 '@pnpm/logger': 5.0.0 @@ -1654,12 +1709,12 @@ packages: engines: {node: '>=16.14'} dev: true - /@pnpm/workspace.pkgs-graph@2.0.15(@pnpm/logger@5.0.0): - resolution: {integrity: sha512-Txxd5FzzVfBfGCTngISaxFlJzZhzdS8BUrCEtAWJfZOFbQzpWy27rzkaS7TaWW2dHiFcCVYzPI/2vgxfeRansA==} + /@pnpm/workspace.pkgs-graph@2.0.14(@pnpm/logger@5.0.0): + resolution: {integrity: sha512-SBXXyWDkPEoaLTjLRyQzRHoBYH+P0NLcIjX1yPUxuJiMTvGOMzjpLWTuxYNVe/P0V0VQMrjpJFaJPjlViNLhzg==} engines: {node: '>=16.14'} dependencies: '@pnpm/npm-package-arg': 1.0.0 - '@pnpm/npm-resolver': 18.1.1(@pnpm/logger@5.0.0) + '@pnpm/npm-resolver': 18.1.0(@pnpm/logger@5.0.0) '@pnpm/resolve-workspace-range': 5.0.1 ramda: /@pnpm/ramda@0.28.1 transitivePeerDependencies: @@ -1667,43 +1722,154 @@ packages: - domexception dev: true - /@rebeccastevens/eslint-config@2.0.11(@typescript-eslint/eslint-plugin@7.4.0)(@typescript-eslint/parser@7.4.0)(eslint-import-resolver-typescript@3.6.1)(eslint-plugin-eslint-comments@3.2.0)(eslint-plugin-functional@6.1.1)(eslint-plugin-import@2.29.1)(eslint-plugin-jsdoc@48.2.2)(eslint-plugin-markdown@3.0.1)(eslint-plugin-n@16.6.2)(eslint-plugin-optimize-regex@1.2.1)(eslint-plugin-promise@6.1.1)(eslint-plugin-sonarjs@0.25.0)(eslint-plugin-unicorn@51.0.1)(eslint@8.57.0): - resolution: {integrity: sha512-I5hulFEN1YHrC3f7Ah/j/4CgHPrZeyXKTevilmgOjNe3S7sOqA8l9tjnEj7l0v9H9RDufQ+bQu24QZHnp+G6yw==} - engines: {node: '>=18.12.1'} + /@rebeccastevens/eslint-config@3.0.0-next.5(@stylistic/eslint-plugin@1.7.2)(@typescript-eslint/eslint-plugin@7.7.0)(@typescript-eslint/parser@7.7.0)(@typescript-eslint/utils@7.7.0)(eslint-config-prettier@9.1.0)(eslint-flat-config-utils@0.2.3)(eslint-import-resolver-typescript@3.6.1)(eslint-merge-processors@0.1.0)(eslint-plugin-eslint-comments@3.2.0)(eslint-plugin-format@0.1.1)(eslint-plugin-functional@0.0.0-development)(eslint-plugin-import-x@0.5.0)(eslint-plugin-jsdoc@48.2.3)(eslint-plugin-jsonc@2.15.1)(eslint-plugin-markdown@4.0.1)(eslint-plugin-n@17.2.1)(eslint-plugin-no-only-tests@3.1.0)(eslint-plugin-optimize-regex@1.2.1)(eslint-plugin-promise@6.1.1)(eslint-plugin-regexp@2.5.0)(eslint-plugin-sonarjs@0.25.1)(eslint-plugin-unicorn@52.0.0)(eslint-plugin-vitest@0.5.3)(eslint-plugin-yml@1.14.0)(eslint@9.0.0)(jsonc-eslint-parser@2.4.0)(prettier-plugin-packagejson@2.5.0)(prettier@3.2.5)(yaml-eslint-parser@1.2.2): + resolution: {integrity: sha512-5g4SAwD9JKKsMTQRxC3HCn4eCDxVPIgq1tYB9WAfPfOCgu40ssxFOKGft2CmXsV0hJ1zJA+ALMfAvT9fFwqDLg==} + engines: {node: '>=20.0.0'} peerDependencies: - '@typescript-eslint/eslint-plugin': '>=6.0.0' - '@typescript-eslint/parser': '>=6.0.0' - eslint: '>=8.24.0' + '@stylistic/eslint-plugin': '*' + '@typescript-eslint/eslint-plugin': '*' + '@typescript-eslint/parser': '*' + '@typescript-eslint/utils': '*' + '@unocss/eslint-plugin': '*' + eslint: '*' + eslint-config-prettier: '*' + eslint-flat-config-utils: '*' eslint-import-resolver-typescript: '*' + eslint-merge-processors: '*' eslint-plugin-eslint-comments: '*' - eslint-plugin-functional: '>=5.0.0' - eslint-plugin-import: '*' + eslint-plugin-format: '*' + eslint-plugin-functional: '*' + eslint-plugin-import-x: '*' eslint-plugin-jsdoc: '*' + eslint-plugin-jsonc: '*' eslint-plugin-markdown: '*' eslint-plugin-n: '*' + eslint-plugin-no-only-tests: '*' eslint-plugin-optimize-regex: '*' + eslint-plugin-prettier: '*' eslint-plugin-promise: '*' + eslint-plugin-regexp: '*' eslint-plugin-sonarjs: '*' + eslint-plugin-toml: '*' eslint-plugin-unicorn: '*' + eslint-plugin-vitest: '*' + eslint-plugin-vue: '*' + eslint-plugin-yml: '*' + eslint-processor-vue-blocks: '*' + jsonc-eslint-parser: '*' + prettier: '*' + prettier-plugin-packagejson: '*' + toml-eslint-parser: '*' + vue-eslint-parser: '*' + yaml-eslint-parser: '*' + peerDependenciesMeta: + '@stylistic/eslint-plugin': + optional: true + '@typescript-eslint/eslint-plugin': + optional: true + '@typescript-eslint/parser': + optional: true + '@typescript-eslint/utils': + optional: true + '@unocss/eslint-plugin': + optional: true + eslint-config-prettier: + optional: true + eslint-flat-config-utils: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-merge-processors: + optional: true + eslint-plugin-eslint-comments: + optional: true + eslint-plugin-format: + optional: true + eslint-plugin-functional: + optional: true + eslint-plugin-import-x: + optional: true + eslint-plugin-jsdoc: + optional: true + eslint-plugin-jsonc: + optional: true + eslint-plugin-markdown: + optional: true + eslint-plugin-n: + optional: true + eslint-plugin-no-only-tests: + optional: true + eslint-plugin-optimize-regex: + optional: true + eslint-plugin-prettier: + optional: true + eslint-plugin-promise: + optional: true + eslint-plugin-regexp: + optional: true + eslint-plugin-sonarjs: + optional: true + eslint-plugin-toml: + optional: true + eslint-plugin-unicorn: + optional: true + eslint-plugin-vitest: + optional: true + eslint-plugin-vue: + optional: true + eslint-plugin-yml: + optional: true + eslint-processor-vue-blocks: + optional: true + jsonc-eslint-parser: + optional: true + prettier: + optional: true + prettier-plugin-packagejson: + optional: true + toml-eslint-parser: + optional: true + vue-eslint-parser: + optional: true + yaml-eslint-parser: + optional: true dependencies: - '@typescript-eslint/eslint-plugin': 7.4.0(@typescript-eslint/parser@7.4.0)(eslint@8.57.0)(typescript@5.4.3) - '@typescript-eslint/parser': 7.4.0(eslint@8.57.0)(typescript@5.4.3) - deepmerge-ts: 5.1.0 - eslint: 8.57.0 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.4.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.0) - eslint-plugin-functional: 6.1.1(eslint@8.57.0)(typescript@5.4.3) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.4.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - eslint-plugin-jsdoc: 48.2.2(eslint@8.57.0) - eslint-plugin-markdown: 3.0.1(eslint@8.57.0) - eslint-plugin-n: 16.6.2(eslint@8.57.0) + '@antfu/install-pkg': 0.3.2 + '@clack/prompts': 0.7.0 + '@stylistic/eslint-plugin': 1.7.2(eslint@9.0.0)(typescript@5.4.5) + '@typescript-eslint/eslint-plugin': 7.7.0(@typescript-eslint/parser@7.7.0)(eslint@9.0.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.7.0(eslint@9.0.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.7.0(eslint@9.0.0)(typescript@5.4.5) + eslint: 9.0.0 + eslint-config-prettier: 9.1.0(eslint@9.0.0) + eslint-flat-config-utils: 0.2.3 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.7.0)(eslint-plugin-import@2.29.1)(eslint@9.0.0) + eslint-merge-processors: 0.1.0(eslint@9.0.0) + eslint-plugin-eslint-comments: 3.2.0(eslint@9.0.0) + eslint-plugin-format: 0.1.1(eslint@9.0.0) + eslint-plugin-functional: file:(eslint@9.0.0)(typescript@5.4.5) + eslint-plugin-import-x: 0.5.0(eslint@9.0.0)(typescript@5.4.5) + eslint-plugin-jsdoc: 48.2.3(eslint@9.0.0) + eslint-plugin-jsonc: 2.15.1(eslint@9.0.0) + eslint-plugin-markdown: 4.0.1(eslint@9.0.0) + eslint-plugin-n: 17.2.1(eslint@9.0.0) + eslint-plugin-no-only-tests: 3.1.0 eslint-plugin-optimize-regex: 1.2.1 - eslint-plugin-promise: 6.1.1(eslint@8.57.0) - eslint-plugin-sonarjs: 0.25.0(eslint@8.57.0) - eslint-plugin-unicorn: 51.0.1(eslint@8.57.0) + eslint-plugin-promise: 6.1.1(eslint@9.0.0) + eslint-plugin-regexp: 2.5.0(eslint@9.0.0) + eslint-plugin-sonarjs: 0.25.1(eslint@9.0.0) + eslint-plugin-unicorn: 52.0.0(eslint@9.0.0) + eslint-plugin-vitest: 0.5.3(@typescript-eslint/eslint-plugin@7.7.0)(eslint@9.0.0)(typescript@5.4.5)(vitest@1.5.0) + eslint-plugin-yml: 1.14.0(eslint@9.0.0) + globals: 15.0.0 + jsonc-eslint-parser: 2.4.0 + local-pkg: 0.5.0 + prettier: 3.2.5 + prettier-plugin-packagejson: 2.5.0(prettier@3.2.5) + yaml-eslint-parser: 1.2.2 dev: true - /@rollup/pluginutils@5.1.0(rollup@4.13.2): + /@rollup/pluginutils@5.1.0(rollup@4.14.3): resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} peerDependencies: @@ -1715,130 +1881,138 @@ packages: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 4.13.2 + rollup: 4.14.3 dev: true - /@rollup/rollup-android-arm-eabi@4.13.2: - resolution: {integrity: sha512-3XFIDKWMFZrMnao1mJhnOT1h2g0169Os848NhhmGweEcfJ4rCi+3yMCOLG4zA61rbJdkcrM/DjVZm9Hg5p5w7g==} + /@rollup/rollup-android-arm-eabi@4.14.3: + resolution: {integrity: sha512-X9alQ3XM6I9IlSlmC8ddAvMSyG1WuHk5oUnXGw+yUBs3BFoTizmG1La/Gr8fVJvDWAq+zlYTZ9DBgrlKRVY06g==} cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-android-arm64@4.13.2: - resolution: {integrity: sha512-GdxxXbAuM7Y/YQM9/TwwP+L0omeE/lJAR1J+olu36c3LqqZEBdsIWeQ91KBe6nxwOnb06Xh7JS2U5ooWU5/LgQ==} + /@rollup/rollup-android-arm64@4.14.3: + resolution: {integrity: sha512-eQK5JIi+POhFpzk+LnjKIy4Ks+pwJ+NXmPxOCSvOKSNRPONzKuUvWE+P9JxGZVxrtzm6BAYMaL50FFuPe0oWMQ==} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-arm64@4.13.2: - resolution: {integrity: sha512-mCMlpzlBgOTdaFs83I4XRr8wNPveJiJX1RLfv4hggyIVhfB5mJfN4P8Z6yKh+oE4Luz+qq1P3kVdWrCKcMYrrA==} + /@rollup/rollup-darwin-arm64@4.14.3: + resolution: {integrity: sha512-Od4vE6f6CTT53yM1jgcLqNfItTsLt5zE46fdPaEmeFHvPs5SjZYlLpHrSiHEKR1+HdRfxuzXHjDOIxQyC3ptBA==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-x64@4.13.2: - resolution: {integrity: sha512-yUoEvnH0FBef/NbB1u6d3HNGyruAKnN74LrPAfDQL3O32e3k3OSfLrPgSJmgb3PJrBZWfPyt6m4ZhAFa2nZp2A==} + /@rollup/rollup-darwin-x64@4.14.3: + resolution: {integrity: sha512-0IMAO21axJeNIrvS9lSe/PGthc8ZUS+zC53O0VhF5gMxfmcKAP4ESkKOCwEi6u2asUrt4mQv2rjY8QseIEb1aw==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.13.2: - resolution: {integrity: sha512-GYbLs5ErswU/Xs7aGXqzc3RrdEjKdmoCrgzhJWyFL0r5fL3qd1NPcDKDowDnmcoSiGJeU68/Vy+OMUluRxPiLQ==} + /@rollup/rollup-linux-arm-gnueabihf@4.14.3: + resolution: {integrity: sha512-ge2DC7tHRHa3caVEoSbPRJpq7azhG+xYsd6u2MEnJ6XzPSzQsTKyXvh6iWjXRf7Rt9ykIUWHtl0Uz3T6yXPpKw==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-musleabihf@4.14.3: + resolution: {integrity: sha512-ljcuiDI4V3ySuc7eSk4lQ9wU8J8r8KrOUvB2U+TtK0TiW6OFDmJ+DdIjjwZHIw9CNxzbmXY39wwpzYuFDwNXuw==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.13.2: - resolution: {integrity: sha512-L1+D8/wqGnKQIlh4Zre9i4R4b4noxzH5DDciyahX4oOz62CphY7WDWqJoQ66zNR4oScLNOqQJfNSIAe/6TPUmQ==} + /@rollup/rollup-linux-arm64-gnu@4.14.3: + resolution: {integrity: sha512-Eci2us9VTHm1eSyn5/eEpaC7eP/mp5n46gTRB3Aar3BgSvDQGJZuicyq6TsH4HngNBgVqC5sDYxOzTExSU+NjA==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.13.2: - resolution: {integrity: sha512-tK5eoKFkXdz6vjfkSTCupUzCo40xueTOiOO6PeEIadlNBkadH1wNOH8ILCPIl8by/Gmb5AGAeQOFeLev7iZDOA==} + /@rollup/rollup-linux-arm64-musl@4.14.3: + resolution: {integrity: sha512-UrBoMLCq4E92/LCqlh+blpqMz5h1tJttPIniwUgOFJyjWI1qrtrDhhpHPuFxULlUmjFHfloWdixtDhSxJt5iKw==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-powerpc64le-gnu@4.13.2: - resolution: {integrity: sha512-zvXvAUGGEYi6tYhcDmb9wlOckVbuD+7z3mzInCSTACJ4DQrdSLPNUeDIcAQW39M3q6PDquqLWu7pnO39uSMRzQ==} - cpu: [ppc64le] + /@rollup/rollup-linux-powerpc64le-gnu@4.14.3: + resolution: {integrity: sha512-5aRjvsS8q1nWN8AoRfrq5+9IflC3P1leMoy4r2WjXyFqf3qcqsxRCfxtZIV58tCxd+Yv7WELPcO9mY9aeQyAmw==} + cpu: [ppc64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.13.2: - resolution: {integrity: sha512-C3GSKvMtdudHCN5HdmAMSRYR2kkhgdOfye4w0xzyii7lebVr4riCgmM6lRiSCnJn2w1Xz7ZZzHKuLrjx5620kw==} + /@rollup/rollup-linux-riscv64-gnu@4.14.3: + resolution: {integrity: sha512-sk/Qh1j2/RJSX7FhEpJn8n0ndxy/uf0kI/9Zc4b1ELhqULVdTfN6HL31CDaTChiBAOgLcsJ1sgVZjWv8XNEsAQ==} cpu: [riscv64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-s390x-gnu@4.13.2: - resolution: {integrity: sha512-l4U0KDFwzD36j7HdfJ5/TveEQ1fUTjFFQP5qIt9gBqBgu1G8/kCaq5Ok05kd5TG9F8Lltf3MoYsUMw3rNlJ0Yg==} + /@rollup/rollup-linux-s390x-gnu@4.14.3: + resolution: {integrity: sha512-jOO/PEaDitOmY9TgkxF/TQIjXySQe5KVYB57H/8LRP/ux0ZoO8cSHCX17asMSv3ruwslXW/TLBcxyaUzGRHcqg==} cpu: [s390x] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.13.2: - resolution: {integrity: sha512-xXMLUAMzrtsvh3cZ448vbXqlUa7ZL8z0MwHp63K2IIID2+DeP5iWIT6g1SN7hg1VxPzqx0xZdiDM9l4n9LRU1A==} + /@rollup/rollup-linux-x64-gnu@4.14.3: + resolution: {integrity: sha512-8ybV4Xjy59xLMyWo3GCfEGqtKV5M5gCSrZlxkPGvEPCGDLNla7v48S662HSGwRd6/2cSneMQWiv+QzcttLrrOA==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.13.2: - resolution: {integrity: sha512-M/JYAWickafUijWPai4ehrjzVPKRCyDb1SLuO+ZyPfoXgeCEAlgPkNXewFZx0zcnoIe3ay4UjXIMdXQXOZXWqA==} + /@rollup/rollup-linux-x64-musl@4.14.3: + resolution: {integrity: sha512-s+xf1I46trOY10OqAtZ5Rm6lzHre/UiLA1J2uOhCFXWkbZrJRkYBPO6FhvGfHmdtQ3Bx793MNa7LvoWFAm93bg==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.13.2: - resolution: {integrity: sha512-2YWwoVg9KRkIKaXSh0mz3NmfurpmYoBBTAXA9qt7VXk0Xy12PoOP40EFuau+ajgALbbhi4uTj3tSG3tVseCjuA==} + /@rollup/rollup-win32-arm64-msvc@4.14.3: + resolution: {integrity: sha512-+4h2WrGOYsOumDQ5S2sYNyhVfrue+9tc9XcLWLh+Kw3UOxAvrfOrSMFon60KspcDdytkNDh7K2Vs6eMaYImAZg==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.13.2: - resolution: {integrity: sha512-2FSsE9aQ6OWD20E498NYKEQLneShWes0NGMPQwxWOdws35qQXH+FplabOSP5zEe1pVjurSDOGEVCE2agFwSEsw==} + /@rollup/rollup-win32-ia32-msvc@4.14.3: + resolution: {integrity: sha512-T1l7y/bCeL/kUwh9OD4PQT4aM7Bq43vX05htPJJ46RTI4r5KNt6qJRzAfNfM+OYMNEVBWQzR2Gyk+FXLZfogGw==} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.13.2: - resolution: {integrity: sha512-7h7J2nokcdPePdKykd8wtc8QqqkqxIrUz7MHj6aNr8waBRU//NLDVnNjQnqQO6fqtjrtCdftpbTuOKAyrAQETQ==} + /@rollup/rollup-win32-x64-msvc@4.14.3: + resolution: {integrity: sha512-/BypzV0H1y1HzgYpxqRaXGBRqfodgoBBCcsrujT6QRcakDQdfU+Lq9PENPh5jB4I44YWq+0C2eHsHya+nZY1sA==} cpu: [x64] os: [win32] requiresBuild: true dev: true optional: true - /@semantic-release/changelog@6.0.3(semantic-release@23.0.6): + /@semantic-release/changelog@6.0.3(semantic-release@23.0.8): resolution: {integrity: sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==} engines: {node: '>=14.17'} peerDependencies: @@ -1848,10 +2022,10 @@ packages: aggregate-error: 3.1.0 fs-extra: 11.2.0 lodash: 4.17.21 - semantic-release: 23.0.6(typescript@5.4.3) + semantic-release: 23.0.8(typescript@5.4.5) dev: true - /@semantic-release/commit-analyzer@12.0.0(semantic-release@23.0.6): + /@semantic-release/commit-analyzer@12.0.0(semantic-release@23.0.8): resolution: {integrity: sha512-qG+md5gdes+xa8zP7lIo1fWE17zRdO8yMCaxh9lyL65TQleoSv8WHHOqRURfghTytUh+NpkSyBprQ5hrkxOKVQ==} engines: {node: '>=20.8.1'} peerDependencies: @@ -1864,7 +2038,7 @@ packages: import-from-esm: 1.3.3 lodash-es: 4.17.21 micromatch: 4.0.5 - semantic-release: 23.0.6(typescript@5.4.3) + semantic-release: 23.0.8(typescript@5.4.5) transitivePeerDependencies: - supports-color dev: true @@ -1879,7 +2053,7 @@ packages: engines: {node: '>=18'} dev: true - /@semantic-release/git@10.0.1(semantic-release@23.0.6): + /@semantic-release/git@10.0.1(semantic-release@23.0.8): resolution: {integrity: sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==} engines: {node: '>=14.17'} peerDependencies: @@ -1893,19 +2067,19 @@ packages: lodash: 4.17.21 micromatch: 4.0.5 p-reduce: 2.1.0 - semantic-release: 23.0.6(typescript@5.4.3) + semantic-release: 23.0.8(typescript@5.4.5) transitivePeerDependencies: - supports-color dev: true - /@semantic-release/github@10.0.2(semantic-release@23.0.6): - resolution: {integrity: sha512-SP5ihhv/uQa8vPuWKmbJrrzfv8lRUkDFC6qwgaWoorrflN1DEW0IGCa9w/PxUp8Ad3dbvXZPmpXdGiP3eyTzhg==} + /@semantic-release/github@10.0.3(semantic-release@23.0.8): + resolution: {integrity: sha512-nSJQboKrG4xBn7hHpRMrK8lt5DgqJg50ZMz9UbrsfTxuRk55XVoQEadbGZ2L9M0xZAC6hkuwkDhQJKqfPU35Fw==} engines: {node: '>=20.8.1'} peerDependencies: semantic-release: '>=20.1.0' dependencies: '@octokit/core': 6.0.1 - '@octokit/plugin-paginate-rest': 10.0.0(@octokit/core@6.0.1) + '@octokit/plugin-paginate-rest': 11.1.0(@octokit/core@6.0.1) '@octokit/plugin-retry': 7.0.3(@octokit/core@6.0.1) '@octokit/plugin-throttling': 9.0.3(@octokit/core@6.0.1) '@semantic-release/error': 4.0.0 @@ -1919,13 +2093,13 @@ packages: lodash-es: 4.17.21 mime: 4.0.1 p-filter: 4.1.0 - semantic-release: 23.0.6(typescript@5.4.3) + semantic-release: 23.0.8(typescript@5.4.5) url-join: 5.0.0 transitivePeerDependencies: - supports-color dev: true - /@semantic-release/npm@12.0.0(semantic-release@23.0.6): + /@semantic-release/npm@12.0.0(semantic-release@23.0.8): resolution: {integrity: sha512-72TVYQCH9NvVsO/y13eF8vE4bNnfls518+4KcFwJUKi7AtA/ZXoNgSg9gTTfw5eMZMkiH0izUrpGXgZE/cSQhA==} engines: {node: '>=20.8.1'} peerDependencies: @@ -1942,12 +2116,12 @@ packages: rc: 1.2.8 read-pkg: 9.0.1 registry-auth-token: 5.0.2 - semantic-release: 23.0.6(typescript@5.4.3) + semantic-release: 23.0.8(typescript@5.4.5) semver: 7.6.0 tempy: 3.1.0 dev: true - /@semantic-release/release-notes-generator@13.0.0(semantic-release@23.0.6): + /@semantic-release/release-notes-generator@13.0.0(semantic-release@23.0.8): resolution: {integrity: sha512-LEeZWb340keMYuREMyxrODPXJJ0JOL8D/mCl74B4LdzbxhtXV2LrPN2QBEcGJrlQhoqLO0RhxQb6masHytKw+A==} engines: {node: '>=20.8.1'} peerDependencies: @@ -1963,7 +2137,7 @@ packages: into-stream: 7.0.0 lodash-es: 4.17.21 read-pkg-up: 11.0.0 - semantic-release: 23.0.6(typescript@5.4.3) + semantic-release: 23.0.8(typescript@5.4.5) transitivePeerDependencies: - supports-color dev: true @@ -1992,6 +2166,78 @@ packages: p-map: 4.0.0 dev: true + /@stylistic/eslint-plugin-js@1.7.2(eslint@9.0.0): + resolution: {integrity: sha512-ZYX7C5p7zlHbACwFLU+lISVh6tdcRP/++PWegh2Sy0UgMT5kU0XkPa2tKWEtJYzZmPhJxu9LxbnWcnE/tTwSDQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: '>=8.40.0' + dependencies: + '@types/eslint': 8.56.9 + acorn: 8.11.3 + escape-string-regexp: 4.0.0 + eslint: 9.0.0 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + dev: true + + /@stylistic/eslint-plugin-jsx@1.7.2(eslint@9.0.0): + resolution: {integrity: sha512-lNZR5PR0HLJPs+kY0y8fy6KroKlYqA5PwsYWpVYWzqZWiL5jgAeUo4s9yLFYjJjzildJ5MsTVMy/xP81Qz6GXg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: '>=8.40.0' + dependencies: + '@stylistic/eslint-plugin-js': 1.7.2(eslint@9.0.0) + '@types/eslint': 8.56.9 + eslint: 9.0.0 + estraverse: 5.3.0 + picomatch: 4.0.2 + dev: true + + /@stylistic/eslint-plugin-plus@1.7.2(eslint@9.0.0)(typescript@5.4.5): + resolution: {integrity: sha512-luUfRVbBVtt0+/FNt8/76BANJEzb/nHWasHD7UUjyMrch2U9xUKpObrkTCzqBuisKek+uFupwGjqXqDP07+fQw==} + peerDependencies: + eslint: '*' + dependencies: + '@types/eslint': 8.56.9 + '@typescript-eslint/utils': 6.21.0(eslint@9.0.0)(typescript@5.4.5) + eslint: 9.0.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@stylistic/eslint-plugin-ts@1.7.2(eslint@9.0.0)(typescript@5.4.5): + resolution: {integrity: sha512-szX89YPocwCe4T0eT3alj7MwEzDHt5+B+kb/vQfSSLIjI9CGgoWrgj50zU8PtaDctTh4ZieFBzU/lRmkSUo0RQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: '>=8.40.0' + dependencies: + '@stylistic/eslint-plugin-js': 1.7.2(eslint@9.0.0) + '@types/eslint': 8.56.9 + '@typescript-eslint/utils': 6.21.0(eslint@9.0.0)(typescript@5.4.5) + eslint: 9.0.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@stylistic/eslint-plugin@1.7.2(eslint@9.0.0)(typescript@5.4.5): + resolution: {integrity: sha512-TesaPR4AOCeD4unwu9gZCdTe8SsUpykriICuwXV8GFBgESuVbfVp+S8g6xTWe9ntVR803bNMtnr2UhxHW0iFqg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: '>=8.40.0' + dependencies: + '@stylistic/eslint-plugin-js': 1.7.2(eslint@9.0.0) + '@stylistic/eslint-plugin-jsx': 1.7.2(eslint@9.0.0) + '@stylistic/eslint-plugin-plus': 1.7.2(eslint@9.0.0)(typescript@5.4.5) + '@stylistic/eslint-plugin-ts': 1.7.2(eslint@9.0.0)(typescript@5.4.5) + '@types/eslint': 8.56.9 + eslint: 9.0.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /@tsconfig/node10@1.0.9: resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} dev: true @@ -2011,15 +2257,15 @@ packages: /@types/conventional-commits-parser@5.0.0: resolution: {integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==} dependencies: - '@types/node': 16.18.93 + '@types/node': 20.12.7 dev: true /@types/dedent@0.7.2: resolution: {integrity: sha512-kRiitIeUg1mPV9yH4VUJ/1uk2XjyANfeL8/7rH1tsjvHeO9PJLBHJIYsFWmAvmGj5u8rj+1TZx7PZzW2qLw3Lw==} dev: true - /@types/eslint@8.56.6: - resolution: {integrity: sha512-ymwc+qb1XkjT/gfoQwxIeHZ6ixH23A+tCT2ADSA/DPVKzAjwYkTXBMCQ/f6fe4wEa85Lhp26VPeUxI7wMhAi7A==} + /@types/eslint@8.56.9: + resolution: {integrity: sha512-W4W3KcqzjJ0sHg2vAq9vfml6OhsJ53TcUjUqfzzZf/EChUtwspszj/S0pzMxnfRcO55/iGq47dscXw71Fxc4Zg==} dependencies: '@types/estree': 1.0.5 '@types/json-schema': 7.0.15 @@ -2029,10 +2275,6 @@ packages: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} dev: true - /@types/istanbul-lib-coverage@2.0.6: - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - dev: true - /@types/json-schema@7.0.15: resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -2046,14 +2288,16 @@ packages: '@types/unist': 2.0.10 dev: true - /@types/node@16.18.93: - resolution: {integrity: sha512-epWuohp6c0bQt0j3RYCiP9x52axHVn+CjS1Rx1VjPwF+ySg8lrigH3yXGs88XqnA+jGM2qnSMuFTsBxft+hO1Q==} - dev: true - /@types/node@17.0.45: resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} dev: true + /@types/node@20.12.7: + resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} + dependencies: + undici-types: 5.26.5 + dev: true + /@types/normalize-package-data@2.4.4: resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} dev: true @@ -2069,7 +2313,7 @@ packages: /@types/rollup-plugin-auto-external@2.0.5: resolution: {integrity: sha512-jspE/1q/4MjrC0lilOpF7Ej5z2vvByPq6lb5ERHt9jCRnp0WJRq+SLK9oPfYroy0xhFhDqQoXLeSHcKqATDaoA==} dependencies: - rollup: 4.13.2 + rollup: 4.14.3 dev: true /@types/semver@7.5.8: @@ -2083,8 +2327,8 @@ packages: resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} dev: true - /@typescript-eslint/eslint-plugin@7.4.0(@typescript-eslint/parser@7.4.0)(eslint@8.57.0)(typescript@5.4.3): - resolution: {integrity: sha512-yHMQ/oFaM7HZdVrVm/M2WHaNPgyuJH4WelkSVEWSSsir34kxW2kDJCxlXRhhGWEsMN0WAW/vLpKfKVcm8k+MPw==} + /@typescript-eslint/eslint-plugin@7.7.0(@typescript-eslint/parser@7.7.0)(eslint@9.0.0)(typescript@5.4.5): + resolution: {integrity: sha512-GJWR0YnfrKnsRoluVO3PRb9r5aMZriiMMM/RHj5nnTrBy1/wIgk76XCtCKcnXGjpZQJQRFtGV9/0JJ6n30uwpQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -2095,25 +2339,25 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.4.0(eslint@8.57.0)(typescript@5.4.3) - '@typescript-eslint/scope-manager': 7.4.0 - '@typescript-eslint/type-utils': 7.4.0(eslint@8.57.0)(typescript@5.4.3) - '@typescript-eslint/utils': 7.4.0(eslint@8.57.0)(typescript@5.4.3) - '@typescript-eslint/visitor-keys': 7.4.0 + '@typescript-eslint/parser': 7.7.0(eslint@9.0.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.7.0 + '@typescript-eslint/type-utils': 7.7.0(eslint@9.0.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.7.0(eslint@9.0.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.7.0 debug: 4.3.4 - eslint: 8.57.0 + eslint: 9.0.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.3) - typescript: 5.4.3 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.4.3): - resolution: {integrity: sha512-ZvKHxHLusweEUVwrGRXXUVzFgnWhigo4JurEj0dGF1tbcGh6buL+ejDdjxOQxv6ytcY1uhun1p2sm8iWStlgLQ==} + /@typescript-eslint/parser@7.7.0(eslint@9.0.0)(typescript@5.4.5): + resolution: {integrity: sha512-fNcDm3wSwVM8QYL4HKVBggdIPAy9Q41vcvC/GtDobw3c4ndVT3K6cqudUmjHPw8EAp4ufax0o58/xvWaP2FmTg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -2122,29 +2366,29 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 7.4.0 - '@typescript-eslint/types': 7.4.0 - '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.4.3) - '@typescript-eslint/visitor-keys': 7.4.0 + '@typescript-eslint/scope-manager': 7.7.0 + '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.7.0 debug: 4.3.4 - eslint: 8.57.0 - typescript: 5.4.3 + eslint: 9.0.0 + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/rule-tester@7.4.0(@eslint/eslintrc@3.0.2)(eslint@8.57.0)(typescript@5.4.3): - resolution: {integrity: sha512-AAus65/utkn6WZ3Ls1aoTyK34JdPFm3ZTfsz/Nis8c+Z1gNM4uiGuoyGXF0BnGo+lGvNPYOphGZ+0Y/LBHPi4w==} + /@typescript-eslint/rule-tester@7.6.0(@eslint/eslintrc@3.0.2)(eslint@9.0.0)(typescript@5.4.5): + resolution: {integrity: sha512-ioebRNx3V1pENvCM9uyY+MtJKDuU6wP/l21ju2HOlKL9wbT9tND8odqsD9V3/kgd2TepJlnmvd2pdnQIv01Y/g==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@eslint/eslintrc': '>=2' eslint: ^8.56.0 dependencies: '@eslint/eslintrc': 3.0.2 - '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.4.3) - '@typescript-eslint/utils': 7.4.0(eslint@8.57.0)(typescript@5.4.3) + '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.5) + '@typescript-eslint/utils': 7.6.0(eslint@9.0.0)(typescript@5.4.5) ajv: 6.12.6 - eslint: 8.57.0 + eslint: 9.0.0 lodash.merge: 4.6.2 semver: 7.6.0 transitivePeerDependencies: @@ -2168,15 +2412,23 @@ packages: '@typescript-eslint/visitor-keys': 6.21.0 dev: true - /@typescript-eslint/scope-manager@7.4.0: - resolution: {integrity: sha512-68VqENG5HK27ypafqLVs8qO+RkNc7TezCduYrx8YJpXq2QGZ30vmNZGJJJC48+MVn4G2dCV8m5ZTVnzRexTVtw==} + /@typescript-eslint/scope-manager@7.6.0: + resolution: {integrity: sha512-ngttyfExA5PsHSx0rdFgnADMYQi+Zkeiv4/ZxGYUWd0nLs63Ha0ksmp8VMxAIC0wtCFxMos7Lt3PszJssG/E6w==} engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.4.0 - '@typescript-eslint/visitor-keys': 7.4.0 + '@typescript-eslint/types': 7.6.0 + '@typescript-eslint/visitor-keys': 7.6.0 + dev: true + + /@typescript-eslint/scope-manager@7.7.0: + resolution: {integrity: sha512-/8INDn0YLInbe9Wt7dK4cXLDYp0fNHP5xKLHvZl3mOT5X17rK/YShXaiNmorl+/U4VKCVIjJnx4Ri5b0y+HClw==} + engines: {node: ^18.18.0 || >=20.0.0} + dependencies: + '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/visitor-keys': 7.7.0 - /@typescript-eslint/type-utils@7.4.0(eslint@8.57.0)(typescript@5.4.3): - resolution: {integrity: sha512-247ETeHgr9WTRMqHbbQdzwzhuyaJ8dPTuyuUEMANqzMRB1rj/9qFIuIXK7l0FX9i9FXbHeBQl/4uz6mYuCE7Aw==} + /@typescript-eslint/type-utils@7.7.0(eslint@9.0.0)(typescript@5.4.5): + resolution: {integrity: sha512-bOp3ejoRYrhAlnT/bozNQi3nio9tIgv3U5C0mVDdZC7cpcQEDZXvq8inrHYghLVwuNABRqrMW5tzAv88Vy77Sg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -2185,12 +2437,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.4.3) - '@typescript-eslint/utils': 7.4.0(eslint@8.57.0)(typescript@5.4.3) + '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) + '@typescript-eslint/utils': 7.7.0(eslint@9.0.0)(typescript@5.4.5) debug: 4.3.4 - eslint: 8.57.0 - ts-api-utils: 1.3.0(typescript@5.4.3) - typescript: 5.4.3 + eslint: 9.0.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color @@ -2204,11 +2456,16 @@ packages: engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/types@7.4.0: - resolution: {integrity: sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw==} + /@typescript-eslint/types@7.6.0: + resolution: {integrity: sha512-h02rYQn8J+MureCvHVVzhl69/GAfQGPQZmOMjG1KfCl7o3HtMSlPaPUAPu6lLctXI5ySRGIYk94clD/AUMCUgQ==} + engines: {node: ^18.18.0 || >=20.0.0} + dev: true + + /@typescript-eslint/types@7.7.0: + resolution: {integrity: sha512-G01YPZ1Bd2hn+KPpIbrAhEWOn5lQBrjxkzHkWvP6NucMXFtfXoevK82hzQdpfuQYuhkvFDeQYbzXCjR1z9Z03w==} engines: {node: ^18.18.0 || >=20.0.0} - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.3): + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.5): resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2223,13 +2480,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.0 - tsutils: 3.21.0(typescript@5.4.3) - typescript: 5.4.3 + tsutils: 3.21.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.3): + /@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.5): resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -2245,14 +2502,14 @@ packages: is-glob: 4.0.3 minimatch: 9.0.3 semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.3) - typescript: 5.4.3 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree@7.4.0(typescript@5.4.3): - resolution: {integrity: sha512-A99j5AYoME/UBQ1ucEbbMEmGkN7SE0BvZFreSnTd1luq7yulcHdyGamZKizU7canpGDWGJ+Q6ZA9SyQobipePg==} + /@typescript-eslint/typescript-estree@7.6.0(typescript@5.4.5): + resolution: {integrity: sha512-+7Y/GP9VuYibecrCQWSKgl3GvUM5cILRttpWtnAu8GNL9j11e4tbuGZmZjJ8ejnKYyBRb2ddGQ3rEFCq3QjMJw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -2260,31 +2517,53 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 7.4.0 - '@typescript-eslint/visitor-keys': 7.4.0 + '@typescript-eslint/types': 7.6.0 + '@typescript-eslint/visitor-keys': 7.6.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - minimatch: 9.0.3 + minimatch: 9.0.4 semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.3) - typescript: 5.4.3 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color + dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.4.3): + /@typescript-eslint/typescript-estree@7.7.0(typescript@5.4.5): + resolution: {integrity: sha512-8p71HQPE6CbxIBy2kWHqM1KGrC07pk6RJn40n0DSc6bMOBBREZxSDJ+BmRzc8B5OdaMh1ty3mkuWRg4sCFiDQQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/visitor-keys': 7.7.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.4 + semver: 7.6.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + + /@typescript-eslint/utils@5.62.0(eslint@9.0.0)(typescript@5.4.5): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.3) - eslint: 8.57.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5) + eslint: 9.0.0 eslint-scope: 5.1.1 semver: 7.6.0 transitivePeerDependencies: @@ -2292,38 +2571,57 @@ packages: - typescript dev: true - /@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.4.3): + /@typescript-eslint/utils@6.21.0(eslint@9.0.0)(typescript@5.4.5): resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.3) - eslint: 8.57.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) + eslint: 9.0.0 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils@7.6.0(eslint@9.0.0)(typescript@5.4.5): + resolution: {integrity: sha512-x54gaSsRRI+Nwz59TXpCsr6harB98qjXYzsRxGqvA5Ue3kQH+FxS7FYU81g/omn22ML2pZJkisy6Q+ElK8pBCA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 7.6.0 + '@typescript-eslint/types': 7.6.0 + '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.5) + eslint: 9.0.0 semver: 7.6.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/utils@7.4.0(eslint@8.57.0)(typescript@5.4.3): - resolution: {integrity: sha512-NQt9QLM4Tt8qrlBVY9lkMYzfYtNz8/6qwZg8pI3cMGlPnj6mOpRxxAm7BMJN9K0AiY+1BwJ5lVC650YJqYOuNg==} + /@typescript-eslint/utils@7.7.0(eslint@9.0.0)(typescript@5.4.5): + resolution: {integrity: sha512-LKGAXMPQs8U/zMRFXDZOzmMKgFv3COlxUQ+2NMPhbqgVm6R1w+nU1i4836Pmxu9jZAuIeyySNrN/6Rc657ggig==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 7.4.0 - '@typescript-eslint/types': 7.4.0 - '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.4.3) - eslint: 8.57.0 + '@typescript-eslint/scope-manager': 7.7.0 + '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) + eslint: 9.0.0 semver: 7.6.0 transitivePeerDependencies: - supports-color @@ -2345,20 +2643,25 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@7.4.0: - resolution: {integrity: sha512-0zkC7YM0iX5Y41homUUeW1CHtZR01K3ybjM1l6QczoMuay0XKtrb93kv95AxUGwdjGr64nNqnOCwmEl616N8CA==} + /@typescript-eslint/visitor-keys@7.6.0: + resolution: {integrity: sha512-4eLB7t+LlNUmXzfOu1VAIAdkjbu5xNSerURS9X/S5TUKWFRpXRQZbmtPqgKmYx8bj3J0irtQXSiWAOY82v+cgw==} engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.4.0 + '@typescript-eslint/types': 7.6.0 eslint-visitor-keys: 3.4.3 + dev: true - /@ungap/structured-clone@1.2.0: - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + /@typescript-eslint/visitor-keys@7.7.0: + resolution: {integrity: sha512-h0WHOj8MhdhY8YWkzIF30R379y0NqyOHExI9N9KCzvmu05EgG4FumeYa3ccfKUSphyWkWQE1ybVrgz/Pbam6YA==} + engines: {node: ^18.18.0 || >=20.0.0} + dependencies: + '@typescript-eslint/types': 7.7.0 + eslint-visitor-keys: 3.4.3 - /@vitest/coverage-istanbul@1.4.0(vitest@1.4.0): - resolution: {integrity: sha512-39TjURYyAY6CLDx8M1RNYGoAuWicPWoofk+demJbAZROLCwUgGPgMRSg51GN+snbmQRTpSizuS9XC3cMSdQH2Q==} + /@vitest/coverage-istanbul@1.5.0(vitest@1.5.0): + resolution: {integrity: sha512-mEbVTIAPKhMkszO0lwOwWiG8Cvkj7rdMgdmCNUDnmcSZYUWGIqM8+4O1bcQ1WMHkejpcwvED5oU6ZFm3syVb6A==} peerDependencies: - vitest: 1.4.0 + vitest: 1.5.0 dependencies: debug: 4.3.4 istanbul-lib-coverage: 3.2.2 @@ -2369,15 +2672,15 @@ packages: magicast: 0.3.3 picocolors: 1.0.0 test-exclude: 6.0.0 - vitest: 1.4.0(@types/node@16.18.93) + vitest: 1.5.0(@types/node@20.12.7) transitivePeerDependencies: - supports-color dev: true - /@vitest/coverage-v8@1.4.0(vitest@1.4.0): - resolution: {integrity: sha512-4hDGyH1SvKpgZnIByr9LhGgCEuF9DKM34IBLCC/fVfy24Z3+PZ+Ii9hsVBsHvY1umM1aGPEjceRkzxCfcQ10wg==} + /@vitest/coverage-v8@1.5.0(vitest@1.5.0): + resolution: {integrity: sha512-1igVwlcqw1QUMdfcMlzzY4coikSIBN944pkueGi0pawrX5I5Z+9hxdTR+w3Sg6Q3eZhvdMAs8ZaF9JuTG1uYOQ==} peerDependencies: - vitest: 1.4.0 + vitest: 1.5.0 dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -2392,44 +2695,43 @@ packages: std-env: 3.7.0 strip-literal: 2.0.0 test-exclude: 6.0.0 - v8-to-istanbul: 9.2.0 - vitest: 1.4.0(@types/node@16.18.93) + vitest: 1.5.0(@types/node@20.12.7) transitivePeerDependencies: - supports-color dev: true - /@vitest/expect@1.4.0: - resolution: {integrity: sha512-Jths0sWCJZ8BxjKe+p+eKsoqev1/T8lYcrjavEaz8auEJ4jAVY0GwW3JKmdVU4mmNPLPHixh4GNXP7GFtAiDHA==} + /@vitest/expect@1.5.0: + resolution: {integrity: sha512-0pzuCI6KYi2SIC3LQezmxujU9RK/vwC1U9R0rLuGlNGcOuDWxqWKu6nUdFsX9tH1WU0SXtAxToOsEjeUn1s3hA==} dependencies: - '@vitest/spy': 1.4.0 - '@vitest/utils': 1.4.0 + '@vitest/spy': 1.5.0 + '@vitest/utils': 1.5.0 chai: 4.4.1 dev: true - /@vitest/runner@1.4.0: - resolution: {integrity: sha512-EDYVSmesqlQ4RD2VvWo3hQgTJ7ZrFQ2VSJdfiJiArkCerDAGeyF1i6dHkmySqk573jLp6d/cfqCN+7wUB5tLgg==} + /@vitest/runner@1.5.0: + resolution: {integrity: sha512-7HWwdxXP5yDoe7DTpbif9l6ZmDwCzcSIK38kTSIt6CFEpMjX4EpCgT6wUmS0xTXqMI6E/ONmfgRKmaujpabjZQ==} dependencies: - '@vitest/utils': 1.4.0 + '@vitest/utils': 1.5.0 p-limit: 5.0.0 pathe: 1.1.2 dev: true - /@vitest/snapshot@1.4.0: - resolution: {integrity: sha512-saAFnt5pPIA5qDGxOHxJ/XxhMFKkUSBJmVt5VgDsAqPTX6JP326r5C/c9UuCMPoXNzuudTPsYDZCoJ5ilpqG2A==} + /@vitest/snapshot@1.5.0: + resolution: {integrity: sha512-qpv3fSEuNrhAO3FpH6YYRdaECnnRjg9VxbhdtPwPRnzSfHVXnNzzrpX4cJxqiwgRMo7uRMWDFBlsBq4Cr+rO3A==} dependencies: magic-string: 0.30.8 pathe: 1.1.2 pretty-format: 29.7.0 dev: true - /@vitest/spy@1.4.0: - resolution: {integrity: sha512-Ywau/Qs1DzM/8Uc+yA77CwSegizMlcgTJuYGAi0jujOteJOUf1ujunHThYo243KG9nAyWT3L9ifPYZ5+As/+6Q==} + /@vitest/spy@1.5.0: + resolution: {integrity: sha512-vu6vi6ew5N5MMHJjD5PoakMRKYdmIrNJmyfkhRpQt5d9Ewhw9nZ5Aqynbi3N61bvk9UvZ5UysMT6ayIrZ8GA9w==} dependencies: tinyspy: 2.2.1 dev: true - /@vitest/utils@1.4.0: - resolution: {integrity: sha512-mx3Yd1/6e2Vt/PUC98DcqTirtfxUyAZ32uK82r8rZzbtBeBo+nqgnjx/LvqQdWsrvNtm14VmurNgcf4nqY5gJg==} + /@vitest/utils@1.5.0: + resolution: {integrity: sha512-BDU0GNL8MWkRkSRdNFvCUCAVOeHaUlVJ9Tx0TYBZyXaaOTmGtUFObzchCivIBrIwKzvZA7A9sCejVhXM2aY98A==} dependencies: diff-sequences: 29.6.3 estree-walker: 3.0.3 @@ -2616,13 +2918,14 @@ packages: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} dev: true - /array-includes@3.1.7: - resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + /array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 is-string: 1.0.7 dev: true @@ -2648,7 +2951,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 es-errors: 1.3.0 es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 @@ -2660,7 +2963,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 dev: true @@ -2670,7 +2973,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 dev: true @@ -2681,7 +2984,7 @@ packages: array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 es-errors: 1.3.0 get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 @@ -2765,10 +3068,6 @@ packages: dependencies: fill-range: 7.0.1 - /browser-or-node@2.1.1: - resolution: {integrity: sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==} - dev: true - /browserslist-generator@2.1.0: resolution: {integrity: sha512-ZFz4mAOgqm0cbwKaZsfJbYDbTXGoPANlte7qRsRJOfjB9KmmISQrXJxAVrnXG8C8v/QHNzXyeJt0Cfcks6zZvQ==} engines: {node: '>=16.15.1', npm: '>=7.0.0', pnpm: '>=3.2.0', yarn: '>=1.13'} @@ -3105,13 +3404,13 @@ packages: engines: {node: '>= 12.0.0'} dev: true - /commitizen@4.3.0(@types/node@16.18.93)(typescript@5.4.3): + /commitizen@4.3.0(@types/node@20.12.7)(typescript@5.4.5): resolution: {integrity: sha512-H0iNtClNEhT0fotHvGV3E9tDejDeS04sN1veIebsKYGMuGscFaswRoYJKmT3eW85eIJAs0F28bG2+a/9wCOfPw==} engines: {node: '>= 12'} hasBin: true dependencies: cachedir: 2.3.0 - cz-conventional-changelog: 3.3.0(@types/node@16.18.93)(typescript@5.4.3) + cz-conventional-changelog: 3.3.0(@types/node@20.12.7)(typescript@5.4.5) dedent: 0.7.0 detect-indent: 6.1.0 find-node-modules: 2.1.3 @@ -3136,14 +3435,14 @@ packages: dot-prop: 5.3.0 dev: true - /compatfactory@3.0.0(typescript@5.4.3): + /compatfactory@3.0.0(typescript@5.4.5): resolution: {integrity: sha512-WD5kF7koPwVoyKL8p0LlrmIZtilrD46sQStyzzxzTFinMKN2Dxk1hN+sddLSQU1mGIZvQfU8c+ONSghvvM40jg==} engines: {node: '>=14.9.0'} peerDependencies: typescript: '>=3.x || >= 4.x || >= 5.x' dependencies: helpertypes: 0.0.19 - typescript: 5.4.3 + typescript: 5.4.5 dev: true /compose-function@3.0.3: @@ -3220,6 +3519,11 @@ packages: split2: 4.2.0 dev: true + /convert-hrtime@5.0.0: + resolution: {integrity: sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==} + engines: {node: '>=12'} + dev: true + /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} dev: true @@ -3234,7 +3538,7 @@ packages: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true - /cosmiconfig-typescript-loader@5.0.0(@types/node@16.18.93)(cosmiconfig@9.0.0)(typescript@5.4.3): + /cosmiconfig-typescript-loader@5.0.0(@types/node@20.12.7)(cosmiconfig@9.0.0)(typescript@5.4.5): resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==} engines: {node: '>=v16'} peerDependencies: @@ -3242,13 +3546,13 @@ packages: cosmiconfig: '>=8.2' typescript: '>=4' dependencies: - '@types/node': 16.18.93 - cosmiconfig: 9.0.0(typescript@5.4.3) + '@types/node': 20.12.7 + cosmiconfig: 9.0.0(typescript@5.4.5) jiti: 1.21.0 - typescript: 5.4.3 + typescript: 5.4.5 dev: true - /cosmiconfig@8.3.6(typescript@5.4.3): + /cosmiconfig@8.3.6(typescript@5.4.5): resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} peerDependencies: @@ -3261,10 +3565,10 @@ packages: js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - typescript: 5.4.3 + typescript: 5.4.5 dev: true - /cosmiconfig@9.0.0(typescript@5.4.3): + /cosmiconfig@9.0.0(typescript@5.4.5): resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} engines: {node: '>=14'} peerDependencies: @@ -3277,7 +3581,7 @@ packages: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 - typescript: 5.4.3 + typescript: 5.4.5 dev: true /create-require@1.1.1: @@ -3311,77 +3615,77 @@ packages: type-fest: 1.4.0 dev: true - /cspell-config-lib@8.6.1: - resolution: {integrity: sha512-I6LatgXJb8mxKFzIywO81TlUD/qWnUDrhB6yTUPdP90bwZcXMmGoCsZxhd2Rvl9fz5fWne0T839I1coShfm86g==} + /cspell-config-lib@8.7.0: + resolution: {integrity: sha512-depsd01GbLBo71/tfRrL5iECWQLS4CjCxA9C01dVkFAJqVB0s+K9KLKjTlq5aHOhcvo9Z3dHV+bGQCf5/Q7bfw==} engines: {node: '>=18'} dependencies: - '@cspell/cspell-types': 8.6.1 + '@cspell/cspell-types': 8.7.0 comment-json: 4.2.3 yaml: 2.4.1 dev: true - /cspell-dictionary@8.6.1: - resolution: {integrity: sha512-0SfKPi1QoWbGpZ/rWMR7Jn0+GaQT9PAMLWjVOu66PUNUXI5f4oCTHpnZE1Xts+5VX8shZC3TAMHEgtgKuQn4RQ==} + /cspell-dictionary@8.7.0: + resolution: {integrity: sha512-S6IpZSzIMxlOO/33NgCOuP0TPH2mZbw8d5CP44z5jajflloq8l74MeJLkeDzYfCRcm0Rtk0A5drBeMg+Ai34OA==} engines: {node: '>=18'} dependencies: - '@cspell/cspell-pipe': 8.6.1 - '@cspell/cspell-types': 8.6.1 - cspell-trie-lib: 8.6.1 + '@cspell/cspell-pipe': 8.7.0 + '@cspell/cspell-types': 8.7.0 + cspell-trie-lib: 8.7.0 fast-equals: 5.0.1 gensequence: 7.0.0 dev: true - /cspell-gitignore@8.6.1: - resolution: {integrity: sha512-3gtt351sSDfN826aMXTqGHVLz2lz9ZHr8uemImUc24Q+676sXkJM9lXzqP8PUqwGhLyt5qSf+9pt0ieNwQy/cA==} + /cspell-gitignore@8.7.0: + resolution: {integrity: sha512-yvUZ86qyopUpDgn+YXP1qTpUe/lp65ZFvpMtw21lWHTFlg1OWKntr349EQU/5ben/K6koxk1FiElCBV7Lr4uFg==} engines: {node: '>=18'} hasBin: true dependencies: - cspell-glob: 8.6.1 + cspell-glob: 8.7.0 find-up-simple: 1.0.0 dev: true - /cspell-glob@8.6.1: - resolution: {integrity: sha512-QjtngIR0XsUQLmHHDO86hps/JR5sRxSBwCvcsNCEmSdpdofLFc8cuxi3o33JWge7UAPBCQOLGfpA7/Wx31srmw==} + /cspell-glob@8.7.0: + resolution: {integrity: sha512-AMdfx0gvROA/aIL8t8b5Y5NtMgscGZELFj6WhCSZiQSuWRxXUKiLGGLUFjx2y0hgXN9LUYOo6aBjvhnxI/v71g==} engines: {node: '>=18'} dependencies: micromatch: 4.0.5 dev: true - /cspell-grammar@8.6.1: - resolution: {integrity: sha512-MaG0e/F0b2FnIRULCZ61JxEiJgTP/6rsbUoR5nG9X+WmJYItYmxC1F/FPPrVeTu+jJr/8O4pdnslE20pimHaCw==} + /cspell-grammar@8.7.0: + resolution: {integrity: sha512-SGcXc7322wU2WNRi7vtpToWDXTqZHhxqvR+aIXHT2kkxlMSWp3Rvfpshd0ckgY54nZtgw7R/JtKND2jeACRpwQ==} engines: {node: '>=18'} hasBin: true dependencies: - '@cspell/cspell-pipe': 8.6.1 - '@cspell/cspell-types': 8.6.1 + '@cspell/cspell-pipe': 8.7.0 + '@cspell/cspell-types': 8.7.0 dev: true - /cspell-io@8.6.1: - resolution: {integrity: sha512-ofxBB8QtUPvh/bOwKLYsqU1hwQCet8E98jkn/5f4jtG+/x5Zd80I0Ez+tlbjiBmrrQfOKh+i8ipfzHD8JtoreQ==} + /cspell-io@8.7.0: + resolution: {integrity: sha512-o7OltyyvVkRG1gQrIqGpN5pUkHNnv6rvihb7Qu6cJ8jITinLGuWJuEQpgt0eF5yIr624jDbFwSzAxsFox8riQg==} engines: {node: '>=18'} dependencies: - '@cspell/cspell-service-bus': 8.6.1 + '@cspell/cspell-service-bus': 8.7.0 dev: true - /cspell-lib@8.6.1: - resolution: {integrity: sha512-kGeDUypRtThFT81IdUK7yU8eUwO5MYWj8pGQ0N8WFsqbCahJrUdcocceVSpnCX48W3CXu12DkqYG9kv5Umn7Xw==} + /cspell-lib@8.7.0: + resolution: {integrity: sha512-qDSHZGekwiDmouYRECTQokE+hgAuPqREm+Hb+G3DoIo3ZK5H47TtEUo8fNCw22XsKefcF8X28LiyoZwiYHVpSg==} engines: {node: '>=18'} dependencies: - '@cspell/cspell-bundled-dicts': 8.6.1 - '@cspell/cspell-pipe': 8.6.1 - '@cspell/cspell-resolver': 8.6.1 - '@cspell/cspell-types': 8.6.1 - '@cspell/dynamic-import': 8.6.1 - '@cspell/strong-weak-map': 8.6.1 + '@cspell/cspell-bundled-dicts': 8.7.0 + '@cspell/cspell-pipe': 8.7.0 + '@cspell/cspell-resolver': 8.7.0 + '@cspell/cspell-types': 8.7.0 + '@cspell/dynamic-import': 8.7.0 + '@cspell/strong-weak-map': 8.7.0 clear-module: 4.1.2 comment-json: 4.2.3 configstore: 6.0.0 - cspell-config-lib: 8.6.1 - cspell-dictionary: 8.6.1 - cspell-glob: 8.6.1 - cspell-grammar: 8.6.1 - cspell-io: 8.6.1 - cspell-trie-lib: 8.6.1 + cspell-config-lib: 8.7.0 + cspell-dictionary: 8.7.0 + cspell-glob: 8.7.0 + cspell-grammar: 8.7.0 + cspell-io: 8.7.0 + cspell-trie-lib: 8.7.0 fast-equals: 5.0.1 gensequence: 7.0.0 import-fresh: 3.3.0 @@ -3390,31 +3694,31 @@ packages: vscode-uri: 3.0.8 dev: true - /cspell-trie-lib@8.6.1: - resolution: {integrity: sha512-iuJuAyWoqTH/TpFAR/ISJGQQoW3oiw54GyvXIucPoCJt/jgQONDuzqPW+skiLvcgcTbXCN9dutZTb2gImIkmpw==} + /cspell-trie-lib@8.7.0: + resolution: {integrity: sha512-W3Nh2cO7gMV91r+hLqyTMgKlvRl4W5diKs5YiyOxjZumRkMBy42IzcNYtgIIacOxghklv96F5Bd1Vx/zY6ylGA==} engines: {node: '>=18'} dependencies: - '@cspell/cspell-pipe': 8.6.1 - '@cspell/cspell-types': 8.6.1 + '@cspell/cspell-pipe': 8.7.0 + '@cspell/cspell-types': 8.7.0 gensequence: 7.0.0 dev: true - /cspell@8.6.1: - resolution: {integrity: sha512-/Qle15v4IQe7tViSWX0+RCZJ2HJ4HUCZV9Z4uOVasNUz+DWCrxysNR+pfCRYuLX/6lQdqCM9QCR9GZc7a2KIVA==} + /cspell@8.7.0: + resolution: {integrity: sha512-77nRPgLl240C6FK8RKVKo34lP15Lzp/6bk+SKYJFwUKKXlcgWXDis+Lw4JolA741/JgHtuxmhW1C8P7dCKjJ3w==} engines: {node: '>=18'} hasBin: true dependencies: - '@cspell/cspell-json-reporter': 8.6.1 - '@cspell/cspell-pipe': 8.6.1 - '@cspell/cspell-types': 8.6.1 - '@cspell/dynamic-import': 8.6.1 + '@cspell/cspell-json-reporter': 8.7.0 + '@cspell/cspell-pipe': 8.7.0 + '@cspell/cspell-types': 8.7.0 + '@cspell/dynamic-import': 8.7.0 chalk: 5.3.0 chalk-template: 1.1.0 commander: 12.0.0 - cspell-gitignore: 8.6.1 - cspell-glob: 8.6.1 - cspell-io: 8.6.1 - cspell-lib: 8.6.1 + cspell-gitignore: 8.7.0 + cspell-glob: 8.7.0 + cspell-io: 8.7.0 + cspell-lib: 8.7.0 fast-glob: 3.3.2 fast-json-stable-stringify: 2.1.0 file-entry-cache: 8.0.0 @@ -3424,18 +3728,18 @@ packages: vscode-uri: 3.0.8 dev: true - /cz-conventional-changelog@3.3.0(@types/node@16.18.93)(typescript@5.4.3): + /cz-conventional-changelog@3.3.0(@types/node@20.12.7)(typescript@5.4.5): resolution: {integrity: sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==} engines: {node: '>= 10'} dependencies: chalk: 2.4.2 - commitizen: 4.3.0(@types/node@16.18.93)(typescript@5.4.3) + commitizen: 4.3.0(@types/node@20.12.7)(typescript@5.4.5) conventional-commit-types: 3.0.0 lodash.map: 4.6.0 longest: 2.0.1 word-wrap: 1.2.5 optionalDependencies: - '@commitlint/load': 19.2.0(@types/node@16.18.93)(typescript@5.4.3) + '@commitlint/load': 19.2.0(@types/node@20.12.7)(typescript@5.4.5) transitivePeerDependencies: - '@types/node' - typescript @@ -3478,11 +3782,11 @@ packages: is-data-view: 1.0.1 dev: true - /deassert@1.0.2(rollup@4.13.2): + /deassert@1.0.2(rollup@4.14.3): resolution: {integrity: sha512-cF1/OfxthRQkkC4vOGVT9fs0wuPWIBAPzEk/YI1XSq3JZdgSXmLW1aEegpNLq9VgypeAtmvI8vHiQ31YBK5vvQ==} hasBin: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.13.2) + '@rollup/pluginutils': 5.1.0(rollup@4.14.3) acorn: 8.11.3 acorn-walk: 8.3.2 magic-string: 0.30.8 @@ -3516,8 +3820,8 @@ packages: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: true - /dedent@1.5.1: - resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} + /dedent@1.5.3: + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: @@ -3626,6 +3930,7 @@ packages: engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 + dev: true /dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} @@ -3729,8 +4034,8 @@ packages: is-arrayish: 0.2.1 dev: true - /es-abstract@1.23.2: - resolution: {integrity: sha512-60s3Xv2T2p1ICykc7c+DNDPLDMm9t4QxCOUU0K9JxiLjM3C1zB9YVdN7tjxrFd4+AkZ8CdX1ovUga4P2+1e+/w==} + /es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.1 @@ -3772,11 +4077,11 @@ packages: safe-regex-test: 1.0.3 string.prototype.trim: 1.2.9 string.prototype.trimend: 1.0.8 - string.prototype.trimstart: 1.0.7 + string.prototype.trimstart: 1.0.8 typed-array-buffer: 1.0.2 typed-array-byte-length: 1.0.1 typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.5 + typed-array-length: 1.0.6 unbox-primitive: 1.0.2 which-typed-array: 1.1.15 dev: true @@ -3874,39 +4179,40 @@ packages: engines: {node: '>=12'} dev: true - /eslint-compat-utils@0.1.2(eslint@8.57.0): - resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} + /eslint-compat-utils@0.5.0(eslint@9.0.0): + resolution: {integrity: sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==} engines: {node: '>=12'} peerDependencies: eslint: '>=6.0.0' dependencies: - eslint: 8.57.0 + eslint: 9.0.0 + semver: 7.6.0 dev: true - /eslint-config-prettier@9.1.0(eslint@8.57.0): + /eslint-config-prettier@9.1.0(eslint@9.0.0): resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.57.0 + eslint: 9.0.0 dev: true - /eslint-doc-generator@1.7.0(eslint@8.57.0)(typescript@5.4.3): + /eslint-doc-generator@1.7.0(eslint@9.0.0)(typescript@5.4.5): resolution: {integrity: sha512-C1hE1acb/jruOO+cJe/rIsf+Kgq32JhimTgTtffwsjckKEJ800gx26kUtZhP+8Xm8M/n3BVBZ0XiNbojnNDqHQ==} engines: {node: ^14.18.0 || ^16.0.0 || >=18.0.0} hasBin: true peerDependencies: eslint: '>= 7' dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.3) + '@typescript-eslint/utils': 5.62.0(eslint@9.0.0)(typescript@5.4.5) ajv: 8.12.0 boolean: 3.2.0 commander: 10.0.1 - cosmiconfig: 8.3.6(typescript@5.4.3) + cosmiconfig: 8.3.6(typescript@5.4.5) deepmerge: 4.3.1 dot-prop: 7.2.0 - eslint: 8.57.0 + eslint: 9.0.0 jest-diff: 29.7.0 json-schema-traverse: 1.0.0 markdown-table: 3.0.3 @@ -3917,6 +4223,22 @@ packages: - typescript dev: true + /eslint-flat-config-utils@0.2.3: + resolution: {integrity: sha512-tfrMNXZfuN4q7sFi1Cr//BN3qdI7c8fLJhbshlp8l9PZIqZ7eVeeyd2Regtu/P9kjOlv18lRlBALzsZaF7ByUg==} + dependencies: + '@types/eslint': 8.56.9 + pathe: 1.1.2 + dev: true + + /eslint-formatting-reporter@0.0.0(eslint@9.0.0): + resolution: {integrity: sha512-k9RdyTqxqN/wNYVaTk/ds5B5rA8lgoAmvceYN7bcZMBwU7TuXx5ntewJv81eF3pIL/CiJE+pJZm36llG8yhyyw==} + peerDependencies: + eslint: '>=8.40.0' + dependencies: + eslint: 9.0.0 + prettier-linter-helpers: 1.0.0 + dev: true + /eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: @@ -3927,7 +4249,7 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.4.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0): + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0)(eslint-plugin-import@2.29.1)(eslint@9.0.0): resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -3936,9 +4258,9 @@ packages: dependencies: debug: 4.3.4 enhanced-resolve: 5.16.0 - eslint: 8.57.0 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.4.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.4.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint: 9.0.0 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.7.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@9.0.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.7.0)(eslint-import-resolver-typescript@3.6.1)(eslint@9.0.0) fast-glob: 3.3.2 get-tsconfig: 4.7.3 is-core-module: 2.13.1 @@ -3950,7 +4272,15 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.4.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + /eslint-merge-processors@0.1.0(eslint@9.0.0): + resolution: {integrity: sha512-IvRXXtEajLeyssvW4wJcZ2etxkR9mUf4zpNwgI+m/Uac9RfXHskuJefkHUcawVzePnd6xp24enp5jfgdHzjRdQ==} + peerDependencies: + eslint: '*' + dependencies: + eslint: 9.0.0 + dev: true + + /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.7.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@9.0.0): resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} engines: {node: '>=4'} peerDependencies: @@ -3971,72 +4301,89 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 7.4.0(eslint@8.57.0)(typescript@5.4.3) + '@typescript-eslint/parser': 7.7.0(eslint@9.0.0)(typescript@5.4.5) debug: 3.2.7 - eslint: 8.57.0 + eslint: 9.0.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.4.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.7.0)(eslint-plugin-import@2.29.1)(eslint@9.0.0) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-es-x@7.5.0(eslint@8.57.0): - resolution: {integrity: sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==} + /eslint-parser-plain@0.1.0: + resolution: {integrity: sha512-oOeA6FWU0UJT/Rxc3XF5Cq0nbIZbylm7j8+plqq0CZoE6m4u32OXJrR+9iy4srGMmF6v6pmgvP1zPxSRIGh3sg==} + dev: true + + /eslint-plugin-es-x@7.6.0(eslint@9.0.0): + resolution: {integrity: sha512-I0AmeNgevgaTR7y2lrVCJmGYF0rjoznpDvqV/kIkZSZbZ8Rw3eu4cGlvBBULScfkSOCzqKbff5LR4CNrV7mZHA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) '@eslint-community/regexpp': 4.10.0 - eslint: 8.57.0 - eslint-compat-utils: 0.1.2(eslint@8.57.0) + eslint: 9.0.0 + eslint-compat-utils: 0.5.0(eslint@9.0.0) dev: true - /eslint-plugin-eslint-comments@3.2.0(eslint@8.57.0): + /eslint-plugin-eslint-comments@3.2.0(eslint@9.0.0): resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} engines: {node: '>=6.5.0'} peerDependencies: eslint: '>=4.19.1' dependencies: escape-string-regexp: 1.0.5 - eslint: 8.57.0 + eslint: 9.0.0 ignore: 5.3.1 dev: true - /eslint-plugin-eslint-plugin@5.4.1(eslint@8.57.0): - resolution: {integrity: sha512-Wu0C9Jx0ekl05NnTraPujdUt5aOGHI+73KHcTAyCucvoWf76wlOT5bNus5DG3Ceq+p0J/HBd0LLrVrrGzpnFog==} - engines: {node: ^14.17.0 || ^16.0.0 || >= 18.0.0} + /eslint-plugin-eslint-plugin@6.0.0(eslint@9.0.0): + resolution: {integrity: sha512-NGHm67Wkuzkvm/I3g6iNEkCKwtQHW4z+8r4S9a1kNoeRVE9JvGiwXlh6H9F+VTHOmDdgY8KpxHzDiu+oL4fBww==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: '>=7.0.0' + eslint: '>=8.23.0' dependencies: - eslint: 8.57.0 - eslint-utils: 3.0.0(eslint@8.57.0) + eslint: 9.0.0 + eslint-utils: 3.0.0(eslint@9.0.0) estraverse: 5.3.0 dev: true - /eslint-plugin-functional@6.1.1(eslint@8.57.0)(typescript@5.4.3): - resolution: {integrity: sha512-m1gNU6iQltEYhjJZIw+vzdsa8yCHTrQ1u7XU0cG05+Z6oGEbOXYmjFl0UPWYtWtp4/ubjxLsh8QqUCCHC/Utmg==} - engines: {node: '>=16.10.0'} + /eslint-plugin-format@0.1.1(eslint@9.0.0): + resolution: {integrity: sha512-jzk70D3RbaseNIdMtimMqiJHDPUw9bzZjmZTT9tQ6x3HU9U9bGqnsieQK5H0FIZUpx4qC41CidLDWwVCylICRQ==} peerDependencies: - eslint: ^8.0.0 - typescript: '>=4.3.5' - peerDependenciesMeta: - typescript: - optional: true + eslint: ^8.40.0 || ^9.0.0 + dependencies: + '@dprint/formatter': 0.2.1 + '@dprint/markdown': 0.16.4 + '@dprint/toml': 0.6.1 + eslint: 9.0.0 + eslint-formatting-reporter: 0.0.0(eslint@9.0.0) + eslint-parser-plain: 0.1.0 + prettier: 3.2.5 + synckit: 0.9.0 + dev: true + + /eslint-plugin-import-x@0.5.0(eslint@9.0.0)(typescript@5.4.5): + resolution: {integrity: sha512-C7R8Z4IzxmsoOPMtSzwuOBW5FH6iRlxHR6iTks+MzVlrk3r3TUxokkWTx3ypdj9nGOEP+CG/5e6ebZzHbxgbbQ==} + engines: {node: '>=16'} + peerDependencies: + eslint: ^8.56.0 || ^9.0.0-0 dependencies: - '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.3) - deepmerge-ts: 5.1.0 - escape-string-regexp: 4.0.0 - eslint: 8.57.0 - is-immutable-type: 2.0.4(eslint@8.57.0)(typescript@5.4.3) + '@typescript-eslint/utils': 7.7.0(eslint@9.0.0)(typescript@5.4.5) + debug: 4.3.4 + doctrine: 3.0.0 + eslint: 9.0.0 + eslint-import-resolver-node: 0.3.9 + get-tsconfig: 4.7.3 + is-glob: 4.0.3 + minimatch: 9.0.4 semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.3) - typescript: 5.4.3 transitivePeerDependencies: - supports-color + - typescript dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.4.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0)(eslint-import-resolver-typescript@3.6.1)(eslint@9.0.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -4046,16 +4393,16 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 7.4.0(eslint@8.57.0)(typescript@5.4.3) - array-includes: 3.1.7 + '@typescript-eslint/parser': 7.7.0(eslint@9.0.0)(typescript@5.4.5) + array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.57.0 + eslint: 9.0.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.4.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.7.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@9.0.0) hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -4071,8 +4418,8 @@ packages: - supports-color dev: true - /eslint-plugin-jsdoc@48.2.2(eslint@8.57.0): - resolution: {integrity: sha512-S0Gk+rpT5w/ephKCncUY7kUsix9uE4B9XI8D/fS1/26d8okE+vZsuG1IvIt4B6sJUdQqsnzi+YXfmh+HJG11CA==} + /eslint-plugin-jsdoc@48.2.3(eslint@9.0.0): + resolution: {integrity: sha512-r9DMAmFs66VNvNqRLLjHejdnJtILrt3xGi+Qx0op0oRfFGVpOR1Hb3BC++MacseHx93d8SKYPhyrC9BS7Os2QA==} engines: {node: '>=18'} peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 @@ -4082,7 +4429,7 @@ packages: comment-parser: 1.4.1 debug: 4.3.4 escape-string-regexp: 4.0.0 - eslint: 8.57.0 + eslint: 9.0.0 esquery: 1.5.0 is-builtin-module: 3.2.1 semver: 7.6.0 @@ -4091,38 +4438,56 @@ packages: - supports-color dev: true - /eslint-plugin-markdown@3.0.1(eslint@8.57.0): - resolution: {integrity: sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==} + /eslint-plugin-jsonc@2.15.1(eslint@9.0.0): + resolution: {integrity: sha512-PVFrqIJa8BbM/e828RSn0SwB/Z5ye+2LDuy2XqG6AymNgPsfApRRcznsbxP7VrjdLEU4Nb+g9n/d6opyp0jp9A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: '>=6.0.0' dependencies: - eslint: 8.57.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) + eslint: 9.0.0 + eslint-compat-utils: 0.5.0(eslint@9.0.0) + espree: 9.6.1 + graphemer: 1.4.0 + jsonc-eslint-parser: 2.4.0 + natural-compare: 1.4.0 + synckit: 0.6.2 + dev: true + + /eslint-plugin-markdown@4.0.1(eslint@9.0.0): + resolution: {integrity: sha512-5/MnGvYU0i8MbHH5cg8S+Vl3DL+bqRNYshk1xUO86DilNBaxtTkhH+5FD0/yO03AmlI6+lfNFdk2yOw72EPzpA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=8' + dependencies: + eslint: 9.0.0 mdast-util-from-markdown: 0.8.5 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-n@16.6.2(eslint@8.57.0): - resolution: {integrity: sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==} - engines: {node: '>=16.0.0'} + /eslint-plugin-n@17.2.1(eslint@9.0.0): + resolution: {integrity: sha512-uW1+df2bo06kR7ix6nB614RUlvjRPrYxlaX832O6e1MCJp4V7YozEdvMgCYuvn4ltnjPu1FVYhQ2KRrmTNoJfg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: '>=7.0.0' + eslint: '>=8.23.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - builtins: 5.0.1 - eslint: 8.57.0 - eslint-plugin-es-x: 7.5.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) + enhanced-resolve: 5.16.0 + eslint: 9.0.0 + eslint-plugin-es-x: 7.6.0(eslint@9.0.0) get-tsconfig: 4.7.3 - globals: 13.24.0 + globals: 14.0.0 ignore: 5.3.1 - is-builtin-module: 3.2.1 - is-core-module: 2.13.1 - minimatch: 3.1.2 - resolve: 1.22.8 + minimatch: 9.0.4 semver: 7.6.0 dev: true + /eslint-plugin-no-only-tests@3.1.0: + resolution: {integrity: sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw==} + engines: {node: '>=5.0.0'} + dev: true + /eslint-plugin-optimize-regex@1.2.1: resolution: {integrity: sha512-fUaU7Tj1G/KSTDTABJw4Wp427Rl7RPl9ViYTu1Jrv36fJw4DFhd4elPdXiuYtdPsNsvzn9GcVlKEssGIVjw0UQ==} engines: {node: '>=10'} @@ -4130,59 +4495,53 @@ packages: regexp-tree: 0.1.27 dev: true - /eslint-plugin-prettier@5.1.3(@types/eslint@8.56.6)(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5): - resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} - engines: {node: ^14.18.0 || >=16.0.0} + /eslint-plugin-promise@6.1.1(eslint@9.0.0): + resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '*' - prettier: '>=3.0.0' - peerDependenciesMeta: - '@types/eslint': - optional: true - eslint-config-prettier: - optional: true + eslint: ^7.0.0 || ^8.0.0 dependencies: - '@types/eslint': 8.56.6 - eslint: 8.57.0 - eslint-config-prettier: 9.1.0(eslint@8.57.0) - prettier: 3.2.5 - prettier-linter-helpers: 1.0.0 - synckit: 0.8.8 + eslint: 9.0.0 dev: true - /eslint-plugin-promise@6.1.1(eslint@8.57.0): - resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /eslint-plugin-regexp@2.5.0(eslint@9.0.0): + resolution: {integrity: sha512-I7vKcP0o75WS5SHiVNXN+Eshq49sbrweMQIuqSL3AId9AwDe9Dhbfug65vw64LxmOd4v+yf5l5Xt41y9puiq0g==} + engines: {node: ^18 || >=20} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: '>=8.44.0' dependencies: - eslint: 8.57.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) + '@eslint-community/regexpp': 4.10.0 + comment-parser: 1.4.1 + eslint: 9.0.0 + jsdoc-type-pratt-parser: 4.0.0 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 + scslre: 0.3.0 dev: true - /eslint-plugin-sonarjs@0.25.0(eslint@8.57.0): - resolution: {integrity: sha512-DaZOtpUucEZbvowgKxVFwICV6r0h7jSCAx0IHICvCowP+etFussnhtaiCPSnYAuwVJ+P/6UFUhkv7QJklpXFyA==} + /eslint-plugin-sonarjs@0.25.1(eslint@9.0.0): + resolution: {integrity: sha512-5IOKvj/GMBNqjxBdItfotfRHo7w48496GOu1hxdeXuD0mB1JBlDCViiLHETDTfA8pDAVSBimBEQoetRXYceQEw==} engines: {node: '>=16'} peerDependencies: eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - eslint: 8.57.0 + eslint: 9.0.0 dev: true - /eslint-plugin-unicorn@51.0.1(eslint@8.57.0): - resolution: {integrity: sha512-MuR/+9VuB0fydoI0nIn2RDA5WISRn4AsJyNSaNKLVwie9/ONvQhxOBbkfSICBPnzKrB77Fh6CZZXjgTt/4Latw==} + /eslint-plugin-unicorn@52.0.0(eslint@9.0.0): + resolution: {integrity: sha512-1Yzm7/m+0R4djH0tjDjfVei/ju2w3AzUGjG6q8JnuNIL5xIwsflyCooW5sfBvQp2pMYQFSWWCFONsjCax1EHng==} engines: {node: '>=16'} peerDependencies: eslint: '>=8.56.0' dependencies: '@babel/helper-validator-identifier': 7.22.20 - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) '@eslint/eslintrc': 2.1.4 ci-info: 4.0.0 clean-regexp: 1.0.0 core-js-compat: 3.36.1 - eslint: 8.57.0 + eslint: 9.0.0 esquery: 1.5.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 @@ -4197,12 +4556,12 @@ packages: - supports-color dev: true - /eslint-plugin-vitest@0.4.1(@typescript-eslint/eslint-plugin@7.4.0)(eslint@8.57.0)(typescript@5.4.3)(vitest@1.4.0): - resolution: {integrity: sha512-+PnZ2u/BS+f5FiuHXz4zKsHPcMKHie+K+1Uvu/x91ovkCMEOJqEI8E9Tw1Wzx2QRz4MHOBHYf1ypO8N1K0aNAA==} + /eslint-plugin-vitest@0.5.3(@typescript-eslint/eslint-plugin@7.7.0)(eslint@9.0.0)(typescript@5.4.5)(vitest@1.5.0): + resolution: {integrity: sha512-D0iu6ppP6FmNSZP4cdhEXqyI+fuW6JwwWdECRrNymd1jiVgUmDgSvtryytonNxHQQWhGNmZM3V/qvpXttH1rRQ==} engines: {node: ^18.0.0 || >= 20.0.0} peerDependencies: '@typescript-eslint/eslint-plugin': '*' - eslint: '>=8.0.0' + eslint: ^8.57.0 || ^9.0.0 vitest: '*' peerDependenciesMeta: '@typescript-eslint/eslint-plugin': @@ -4210,15 +4569,31 @@ packages: vitest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 7.4.0(@typescript-eslint/parser@7.4.0)(eslint@8.57.0)(typescript@5.4.3) - '@typescript-eslint/utils': 7.4.0(eslint@8.57.0)(typescript@5.4.3) - eslint: 8.57.0 - vitest: 1.4.0(@types/node@16.18.93) + '@typescript-eslint/eslint-plugin': 7.7.0(@typescript-eslint/parser@7.7.0)(eslint@9.0.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.7.0(eslint@9.0.0)(typescript@5.4.5) + eslint: 9.0.0 + vitest: 1.5.0(@types/node@20.12.7) transitivePeerDependencies: - supports-color - typescript dev: true + /eslint-plugin-yml@1.14.0(eslint@9.0.0): + resolution: {integrity: sha512-ESUpgYPOcAYQO9czugcX5OqRvn/ydDVwGCPXY4YjPqc09rHaUVUA6IE6HLQys4rXk/S+qx3EwTd1wHCwam/OWQ==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + debug: 4.3.4 + eslint: 9.0.0 + eslint-compat-utils: 0.5.0(eslint@9.0.0) + lodash: 4.17.21 + natural-compare: 1.4.0 + yaml-eslint-parser: 1.2.2 + transitivePeerDependencies: + - supports-color + dev: true + /eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -4227,20 +4602,20 @@ packages: estraverse: 4.3.0 dev: true - /eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /eslint-scope@8.0.1: + resolution: {integrity: sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - /eslint-utils@3.0.0(eslint@8.57.0): + /eslint-utils@3.0.0(eslint@9.0.0): resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 8.57.0 + eslint: 9.0.0 eslint-visitor-keys: 2.1.0 dev: true @@ -4256,43 +4631,38 @@ packages: /eslint-visitor-keys@4.0.0: resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dev: true - /eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /eslint@9.0.0: + resolution: {integrity: sha512-IMryZ5SudxzQvuod6rUdIUz29qFItWx281VhtFVc2Psy/ZhlCeD/5DT6lBIJ4H3G+iamGJoTln1v+QSuPw0p7Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.0 - '@humanwhocodes/config-array': 0.11.14 + '@eslint/eslintrc': 3.0.2 + '@eslint/js': 9.0.0 + '@humanwhocodes/config-array': 0.12.3 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 debug: 4.3.4 - doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 + eslint-scope: 8.0.1 + eslint-visitor-keys: 4.0.0 + espree: 10.0.1 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 + file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.24.0 graphemer: 1.4.0 ignore: 5.3.1 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 @@ -4311,7 +4681,6 @@ packages: acorn: 8.11.3 acorn-jsx: 5.3.2(acorn@8.11.3) eslint-visitor-keys: 4.0.0 - dev: true /espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} @@ -4320,6 +4689,7 @@ packages: acorn: 8.11.3 acorn-jsx: 5.3.2(acorn@8.11.3) eslint-visitor-keys: 3.4.3 + dev: true /esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} @@ -4403,10 +4773,6 @@ packages: homedir-polyfill: 1.0.3 dev: true - /expect-type@0.15.0: - resolution: {integrity: sha512-yWnriYB4e8G54M5/fAFj7rCIBiKs1HAACaY13kCz6Ku0dezjS9aMcfcdVK2X8Tv2tEV1BPz/wKfQ7WA4S/d8aA==} - dev: true - /external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} @@ -4484,18 +4850,11 @@ packages: is-unicode-supported: 2.0.0 dev: true - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flat-cache: 3.2.0 - /file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} dependencies: flat-cache: 4.0.1 - dev: true /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} @@ -4559,11 +4918,12 @@ packages: unicorn-magic: 0.1.0 dev: true - /find-versions@5.1.0: - resolution: {integrity: sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==} - engines: {node: '>=12'} + /find-versions@6.0.0: + resolution: {integrity: sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA==} + engines: {node: '>=18'} dependencies: semver-regex: 4.0.5 + super-regex: 1.0.0 dev: true /findup-sync@4.0.0: @@ -4576,21 +4936,12 @@ packages: resolve-dir: 1.0.1 dev: true - /flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flatted: 3.3.1 - keyv: 4.5.4 - rimraf: 3.0.2 - /flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} dependencies: flatted: 3.3.1 keyv: 4.5.4 - dev: true /flatted@3.3.1: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} @@ -4646,6 +4997,7 @@ packages: /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true /fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} @@ -4659,13 +5011,18 @@ packages: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} dev: true + /function-timeout@1.0.1: + resolution: {integrity: sha512-6yPMImFFuaMPNaTMTBuolA8EanHJWF5Vju0NHpObRURT105J6x1Mf2a7J4P7Sqk2xDxv24N5L0RatEhTBhNmdA==} + engines: {node: '>=18'} + dev: true + /function.prototype.name@1.1.6: resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 functions-have-names: 1.2.3 dev: true @@ -4787,7 +5144,7 @@ packages: dependencies: foreground-child: 3.1.1 jackspeak: 2.3.6 - minimatch: 9.0.3 + minimatch: 9.0.4 minipass: 7.0.4 path-scurry: 1.10.1 dev: true @@ -4801,6 +5158,7 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 + dev: true /glob@8.1.0: resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} @@ -4850,10 +5208,15 @@ packages: engines: {node: '>=8'} dependencies: type-fest: 0.20.2 + dev: true /globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} + + /globals@15.0.0: + resolution: {integrity: sha512-m/C/yR4mjO6pXDTm9/R/SpYTAIyaUB4EOzcaaMEl7mds7Mshct9GfejiJNQGjHHbdMPey13Kpu4TMbYi9ex1pw==} + engines: {node: '>=18'} dev: true /globalthis@1.0.3: @@ -5130,9 +5493,11 @@ packages: dependencies: once: 1.4.0 wrappy: 1.0.2 + dev: true /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true /ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} @@ -5297,34 +5662,19 @@ packages: resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} dev: true - /is-immutable-type@2.0.4(eslint@8.57.0)(typescript@5.4.3): - resolution: {integrity: sha512-kjNGSmAQdEj7NJ/Cim9u6OUB/efEsuoUU3fCygl+o0DBwNS0blVjRHumRBX9cBwpZQEQaYVpVLO635HqWvdZRw==} - peerDependencies: - eslint: '*' - typescript: '>=4.7.4' - dependencies: - '@typescript-eslint/type-utils': 7.4.0(eslint@8.57.0)(typescript@5.4.3) - eslint: 8.57.0 - ts-api-utils: 1.3.0(typescript@5.4.3) - typescript: 5.4.3 - transitivePeerDependencies: - - supports-color - dev: true - - /is-immutable-type@3.1.0(eslint@8.57.0)(typescript@5.4.3): + /is-immutable-type@3.1.0(eslint@9.0.0)(typescript@5.4.5): resolution: {integrity: sha512-EIAsgCk/4tEohdqKa5iGf1+IwoRYV/81Fe1awSspgobMxOmmxTZslvkH/PAtSKtR2NDFXGVkZZNqiLQA37GKBQ==} peerDependencies: eslint: '*' typescript: '>=4.7.4' dependencies: - '@typescript-eslint/type-utils': 7.4.0(eslint@8.57.0)(typescript@5.4.3) - eslint: 8.57.0 - ts-api-utils: 1.3.0(typescript@5.4.3) - ts-declaration-location: 1.0.0(typescript@5.4.3) - typescript: 5.4.3 + '@typescript-eslint/type-utils': 7.7.0(eslint@9.0.0)(typescript@5.4.5) + eslint: 9.0.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + ts-declaration-location: 1.0.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color - dev: false /is-interactive@1.0.0: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} @@ -5649,6 +5999,16 @@ packages: hasBin: true dev: true + /jsonc-eslint-parser@2.4.0: + resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.11.3 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + semver: 7.6.0 + dev: true + /jsonc-parser@3.2.1: resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} dev: true @@ -5671,8 +6031,8 @@ packages: dependencies: json-buffer: 3.0.1 - /knip@5.7.0(@types/node@16.18.93)(typescript@5.4.3): - resolution: {integrity: sha512-wTw7Mt7nGa8dBelC3UrAzBtRqHwER7o6m+GzNYGMlt6HnJ/5IoKoxC/1KvPfyXanEJfsSq0ciSchdtnN0RA9RA==} + /knip@5.9.4(@types/node@20.12.7)(typescript@5.4.5): + resolution: {integrity: sha512-33TM8bSHxMMoj+wP9lzjUkIIEfpXaZsLWMYRCoHdbmYnl2HKPMNijcYTxwi1omRROobXrR/VJyH2ZsYOKM1jtg==} engines: {node: '>=18.6.0'} hasBin: true peerDependencies: @@ -5684,9 +6044,9 @@ packages: '@npmcli/map-workspaces': 3.0.4 '@npmcli/package-json': 5.0.0 '@pnpm/logger': 5.0.0 - '@pnpm/workspace.pkgs-graph': 2.0.15(@pnpm/logger@5.0.0) + '@pnpm/workspace.pkgs-graph': 2.0.14(@pnpm/logger@5.0.0) '@snyk/github-codeowners': 1.1.0 - '@types/node': 16.18.93 + '@types/node': 20.12.7 '@types/picomatch': 2.3.3 easy-table: 1.2.0 fast-glob: 3.3.2 @@ -5695,13 +6055,13 @@ packages: micromatch: 4.0.5 minimist: 1.2.8 picocolors: 1.0.0 - picomatch: 4.0.1 + picomatch: 4.0.2 pretty-ms: 9.0.0 resolve: 1.22.8 smol-toml: 1.1.4 strip-json-comments: 5.0.1 summary: 2.1.0 - typescript: 5.4.3 + typescript: 5.4.5 zod: 3.22.4 zod-validation-error: 3.0.3(zod@3.22.4) transitivePeerDependencies: @@ -6022,7 +6382,7 @@ packages: js-yaml: 4.1.0 jsonc-parser: 3.2.1 markdownlint: 0.33.0 - minimatch: 9.0.3 + minimatch: 9.0.4 run-con: 1.3.2 dev: true @@ -6185,6 +6545,13 @@ packages: engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 + dev: true + + /minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 /minimist@1.2.7: resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} @@ -6488,7 +6855,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 es-object-atoms: 1.0.0 dev: true @@ -6498,7 +6865,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 dev: true /object.values@1.2.0: @@ -6514,6 +6881,7 @@ packages: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 + dev: true /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} @@ -6782,6 +7150,7 @@ packages: /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} + dev: true /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} @@ -6843,8 +7212,8 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - /picomatch@4.0.1: - resolution: {integrity: sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg==} + /picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} dev: true @@ -6912,18 +7281,8 @@ packages: fast-diff: 1.3.0 dev: true - /prettier-plugin-multiline-arrays@3.0.4(prettier@3.2.5): - resolution: {integrity: sha512-Oj9ZfEisLOF0did1CGXXQLTA0WEChT2pfI06pNA1PbvWqbys9a5xoys6DoZlDL+Uio0uW1XwKZkeKMAkG1EEfQ==} - peerDependencies: - prettier: '>=3.0.0' - dependencies: - '@augment-vir/common': 23.4.0 - prettier: 3.2.5 - proxy-vir: 1.0.0 - dev: true - - /prettier-plugin-packagejson@2.4.14(prettier@3.2.5): - resolution: {integrity: sha512-sli+gV5tW7uxvzDZQscaBtSfbyAW2ToL6n/HGt51PipwX9vI7M54vefG0mKSfklVkT29TNGO6Mo6g8c6Z79gmw==} + /prettier-plugin-packagejson@2.5.0(prettier@3.2.5): + resolution: {integrity: sha512-6XkH3rpin5QEQodBSVNg+rBo4r91g/1mCaRwS1YGdQJZ6jwqrg2UchBsIG9tpS1yK1kNBvOt84OILsX8uHzBGg==} peerDependencies: prettier: '>= 1.16.0' peerDependenciesMeta: @@ -6987,12 +7346,6 @@ packages: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} dev: true - /proxy-vir@1.0.0: - resolution: {integrity: sha512-WV1gkBxUOwLSz0Bn09tisIqLK7leAqtFm/474t3L0hQKJw7/gdrkGcWw0/OT1PhSy+TDS6swfq7Niuoq3XJhkQ==} - dependencies: - '@augment-vir/common': 23.4.0 - dev: true - /punycode.js@2.3.1: resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} engines: {node: '>=6'} @@ -7032,6 +7385,15 @@ packages: npm-normalize-package-bin: 3.0.1 dev: true + /read-package-up@11.0.0: + resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==} + engines: {node: '>=18'} + dependencies: + find-up-simple: 1.0.0 + read-pkg: 9.0.1 + type-fest: 4.13.1 + dev: true + /read-pkg-up@11.0.0: resolution: {integrity: sha512-LOVbvF1Q0SZdjClSefZ0Nz5z8u+tIE7mV5NibzmE9VYmDe9CaBbAVtz1veOSZbofrdsilxuDAYnFenukZVp8/Q==} engines: {node: '>=18'} @@ -7109,6 +7471,21 @@ packages: picomatch: 2.3.1 dev: true + /refa@0.12.1: + resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dependencies: + '@eslint-community/regexpp': 4.10.0 + dev: true + + /regexp-ast-analysis@0.7.1: + resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dependencies: + '@eslint-community/regexpp': 4.10.0 + refa: 0.12.1 + dev: true + /regexp-tree@0.1.27: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true @@ -7239,6 +7616,7 @@ packages: hasBin: true dependencies: glob: 7.2.3 + dev: true /rimraf@5.0.5: resolution: {integrity: sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==} @@ -7248,7 +7626,7 @@ packages: glob: 10.3.10 dev: true - /rollup-plugin-auto-external@2.0.0(rollup@4.13.2): + /rollup-plugin-auto-external@2.0.0(rollup@4.14.3): resolution: {integrity: sha512-HQM3ZkZYfSam1uoZtAB9sK26EiAsfs1phrkf91c/YX+S07wugyRXSigBxrIwiLr5EPPilKYmoMxsrnlGBsXnuQ==} engines: {node: '>=6'} peerDependencies: @@ -7256,12 +7634,12 @@ packages: dependencies: builtins: 2.0.1 read-pkg: 3.0.0 - rollup: 4.13.2 + rollup: 4.14.3 safe-resolve: 1.0.0 semver: 5.7.2 dev: true - /rollup-plugin-ts@3.4.5(@babel/core@7.24.1)(rollup@4.13.2)(typescript@5.4.3): + /rollup-plugin-ts@3.4.5(@babel/core@7.24.1)(rollup@4.14.3)(typescript@5.4.5): resolution: {integrity: sha512-9iCstRJpEZXSRQuXitlSZAzcGlrqTbJg1pE4CMbEi6xYldxVncdPyzA2I+j6vnh73wBymZckerS+Q/iEE/M3Ow==} engines: {node: '>=16.15.1', npm: '>=7.0.0', pnpm: '>=3.2.0', yarn: '>=1.13'} peerDependencies: @@ -7291,42 +7669,43 @@ packages: optional: true dependencies: '@babel/core': 7.24.1 - '@rollup/pluginutils': 5.1.0(rollup@4.13.2) + '@rollup/pluginutils': 5.1.0(rollup@4.14.3) '@wessberg/stringutil': 1.0.19 ansi-colors: 4.1.3 browserslist: 4.23.0 browserslist-generator: 2.1.0 - compatfactory: 3.0.0(typescript@5.4.3) + compatfactory: 3.0.0(typescript@5.4.5) crosspath: 2.0.0 magic-string: 0.30.8 - rollup: 4.13.2 - ts-clone-node: 3.0.0(typescript@5.4.3) + rollup: 4.14.3 + ts-clone-node: 3.0.0(typescript@5.4.5) tslib: 2.6.2 - typescript: 5.4.3 + typescript: 5.4.5 dev: true - /rollup@4.13.2: - resolution: {integrity: sha512-MIlLgsdMprDBXC+4hsPgzWUasLO9CE4zOkj/u6j+Z6j5A4zRY+CtiXAdJyPtgCsc42g658Aeh1DlrdVEJhsL2g==} + /rollup@4.14.3: + resolution: {integrity: sha512-ag5tTQKYsj1bhrFC9+OEWqb5O6VYgtQDO9hPDBMmIbePwhfSr+ExlcU741t8Dhw5DkPCQf6noz0jb36D6W9/hw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.13.2 - '@rollup/rollup-android-arm64': 4.13.2 - '@rollup/rollup-darwin-arm64': 4.13.2 - '@rollup/rollup-darwin-x64': 4.13.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.13.2 - '@rollup/rollup-linux-arm64-gnu': 4.13.2 - '@rollup/rollup-linux-arm64-musl': 4.13.2 - '@rollup/rollup-linux-powerpc64le-gnu': 4.13.2 - '@rollup/rollup-linux-riscv64-gnu': 4.13.2 - '@rollup/rollup-linux-s390x-gnu': 4.13.2 - '@rollup/rollup-linux-x64-gnu': 4.13.2 - '@rollup/rollup-linux-x64-musl': 4.13.2 - '@rollup/rollup-win32-arm64-msvc': 4.13.2 - '@rollup/rollup-win32-ia32-msvc': 4.13.2 - '@rollup/rollup-win32-x64-msvc': 4.13.2 + '@rollup/rollup-android-arm-eabi': 4.14.3 + '@rollup/rollup-android-arm64': 4.14.3 + '@rollup/rollup-darwin-arm64': 4.14.3 + '@rollup/rollup-darwin-x64': 4.14.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.14.3 + '@rollup/rollup-linux-arm-musleabihf': 4.14.3 + '@rollup/rollup-linux-arm64-gnu': 4.14.3 + '@rollup/rollup-linux-arm64-musl': 4.14.3 + '@rollup/rollup-linux-powerpc64le-gnu': 4.14.3 + '@rollup/rollup-linux-riscv64-gnu': 4.14.3 + '@rollup/rollup-linux-s390x-gnu': 4.14.3 + '@rollup/rollup-linux-x64-gnu': 4.14.3 + '@rollup/rollup-linux-x64-musl': 4.14.3 + '@rollup/rollup-win32-arm64-msvc': 4.14.3 + '@rollup/rollup-win32-ia32-msvc': 4.14.3 + '@rollup/rollup-win32-x64-msvc': 4.14.3 fsevents: 2.3.3 dev: true @@ -7350,14 +7729,6 @@ packages: dependencies: queue-microtask: 1.2.3 - /run-time-assertions@1.2.0: - resolution: {integrity: sha512-cQwqdopGyGpJytXHPYJoCHzt2rr+VzZyW3/bXD8kuKujqDuTtOc0Y6DrlLU6a//wnQogznA7n2LFEIar2Pa2cA==} - dependencies: - '@augment-vir/common': 26.2.1 - expect-type: 0.15.0 - type-fest: 4.13.1 - dev: true - /rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: @@ -7399,7 +7770,16 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true - /semantic-release-replace-plugin@1.2.7(semantic-release@23.0.6): + /scslre@0.3.0: + resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} + engines: {node: ^14.0.0 || >=16.0.0} + dependencies: + '@eslint-community/regexpp': 4.10.0 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 + dev: true + + /semantic-release-replace-plugin@1.2.7(semantic-release@23.0.8): resolution: {integrity: sha512-BfFQVnfC8O7+NpyfjWZuQQEkXwxf1ABbGEQuXqMsrBi7ItCnkSlO3mwuqUllxxuh1WgKx5oYKMVhmZJ0aMaqVQ==} engines: {node: '>=18'} peerDependencies: @@ -7408,26 +7788,26 @@ packages: jest-diff: 29.7.0 lodash-es: 4.17.21 replace-in-file: 7.1.0 - semantic-release: 23.0.6(typescript@5.4.3) + semantic-release: 23.0.8(typescript@5.4.5) dev: true - /semantic-release@23.0.6(typescript@5.4.3): - resolution: {integrity: sha512-/r62F4PNhJZhyZYMobcpcACGwpFNQyaVcSmqZQXG50GMbHSBVZQLCvwafqxO1lDQKVgmGmyCEtOVYzwvzvyhVw==} + /semantic-release@23.0.8(typescript@5.4.5): + resolution: {integrity: sha512-yZkuWcTTfh5h/DrR4Q4QvJSARJdb6wjwn/sN0qKMYEkvwaVFek8YWfrgtL8oWaRdl0fLte0Y1wWMzLbwoaII1g==} engines: {node: '>=20.8.1'} hasBin: true dependencies: - '@semantic-release/commit-analyzer': 12.0.0(semantic-release@23.0.6) + '@semantic-release/commit-analyzer': 12.0.0(semantic-release@23.0.8) '@semantic-release/error': 4.0.0 - '@semantic-release/github': 10.0.2(semantic-release@23.0.6) - '@semantic-release/npm': 12.0.0(semantic-release@23.0.6) - '@semantic-release/release-notes-generator': 13.0.0(semantic-release@23.0.6) + '@semantic-release/github': 10.0.3(semantic-release@23.0.8) + '@semantic-release/npm': 12.0.0(semantic-release@23.0.8) + '@semantic-release/release-notes-generator': 13.0.0(semantic-release@23.0.8) aggregate-error: 5.0.0 - cosmiconfig: 9.0.0(typescript@5.4.3) + cosmiconfig: 9.0.0(typescript@5.4.5) debug: 4.3.4 env-ci: 11.0.0 execa: 8.0.1 figures: 6.1.0 - find-versions: 5.1.0 + find-versions: 6.0.0 get-stream: 6.0.1 git-log-parser: 1.2.0 hook-std: 3.0.0 @@ -7439,7 +7819,7 @@ packages: micromatch: 4.0.5 p-each-series: 3.0.0 p-reduce: 3.0.0 - read-pkg-up: 11.0.0 + read-package-up: 11.0.0 resolve-from: 5.0.0 semver: 7.6.0 semver-diff: 4.0.0 @@ -7547,6 +7927,10 @@ packages: pkg-conf: 2.1.0 dev: true + /sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + dev: true + /skin-tone@2.0.0: resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} engines: {node: '>=8'} @@ -7731,7 +8115,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 es-object-atoms: 1.0.0 dev: true @@ -7743,12 +8127,13 @@ packages: es-object-atoms: 1.0.0 dev: true - /string.prototype.trimstart@1.0.7: - resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + /string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-object-atoms: 1.0.0 dev: true /string_decoder@1.1.1: @@ -7827,6 +8212,14 @@ packages: resolution: {integrity: sha512-nMIjMrd5Z2nuB2RZCKJfFMjgS3fygbeyGk9PxPPaJR1RIcyN9yn4A63Isovzm3ZtQuEkLBVgMdPup8UeLH7aQw==} dev: true + /super-regex@1.0.0: + resolution: {integrity: sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg==} + engines: {node: '>=18'} + dependencies: + function-timeout: 1.0.1 + time-span: 5.1.0 + dev: true + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -7853,11 +8246,10 @@ packages: engines: {node: '>= 0.4'} dev: true - /synckit@0.8.8: - resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} - engines: {node: ^14.18.0 || >=16.0.0} + /synckit@0.6.2: + resolution: {integrity: sha512-Vhf+bUa//YSTYKseDiiEuQmhGCoIF3CVBhunm3r/DQnYiGT4JssmnKQc44BIyOZRK2pKjXXAgbhfmbeoC9CJpA==} + engines: {node: '>=12.20'} dependencies: - '@pkgr/core': 0.1.1 tslib: 2.6.2 dev: true @@ -7936,12 +8328,19 @@ packages: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true + /time-span@5.1.0: + resolution: {integrity: sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==} + engines: {node: '>=12'} + dependencies: + convert-hrtime: 5.0.0 + dev: true + /tinybench@2.6.0: resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} dev: true - /tinypool@0.8.2: - resolution: {integrity: sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==} + /tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} engines: {node: '>=14.0.0'} dev: true @@ -7989,34 +8388,33 @@ packages: engines: {node: '>= 0.4'} dev: true - /ts-api-utils@1.3.0(typescript@5.4.3): + /ts-api-utils@1.3.0(typescript@5.4.5): resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.4.3 + typescript: 5.4.5 - /ts-clone-node@3.0.0(typescript@5.4.3): + /ts-clone-node@3.0.0(typescript@5.4.5): resolution: {integrity: sha512-egavvyHbIoelkgh1IC2agNB1uMNjB8VJgh0g/cn0bg2XXTcrtjrGMzEk4OD3Fi2hocICjP3vMa56nkzIzq0FRg==} engines: {node: '>=14.9.0'} peerDependencies: typescript: ^3.x || ^4.x || ^5.x dependencies: - compatfactory: 3.0.0(typescript@5.4.3) - typescript: 5.4.3 + compatfactory: 3.0.0(typescript@5.4.5) + typescript: 5.4.5 dev: true - /ts-declaration-location@1.0.0(typescript@5.4.3): + /ts-declaration-location@1.0.0(typescript@5.4.5): resolution: {integrity: sha512-/C+R0e1CLF1KtwbE59IFhCg4jLwfU7Puob+uVIl4iUVQhepN/bHmWXy3Gt3mAgvdLQybEZ4yb4qhnJQbphnEgA==} peerDependencies: typescript: '>=4.0.0' dependencies: fast-glob: 3.3.2 - typescript: 5.4.3 - dev: false + typescript: 5.4.5 - /ts-node@10.9.2(@types/node@16.18.93)(typescript@5.4.3): + /ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5): resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: @@ -8035,14 +8433,14 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 16.18.93 + '@types/node': 20.12.7 acorn: 8.11.3 acorn-walk: 8.3.2 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.4.3 + typescript: 5.4.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true @@ -8059,16 +8457,16 @@ packages: plimit-lit: 1.6.1 dev: true - /tsc-files@1.1.4(typescript@5.4.3): + /tsc-files@1.1.4(typescript@5.4.5): resolution: {integrity: sha512-RePsRsOLru3BPpnf237y1Xe1oCGta8rmSYzM76kYo5tLGsv5R2r3s64yapYorGTPuuLyfS9NVbh9ydzmvNie2w==} hasBin: true peerDependencies: typescript: '>=3' dependencies: - typescript: 5.4.3 + typescript: 5.4.5 dev: true - /tsconfck@3.0.3(typescript@5.4.3): + /tsconfck@3.0.3(typescript@5.4.5): resolution: {integrity: sha512-4t0noZX9t6GcPTfBAbIbbIU4pfpCwh0ueq3S4O/5qXI1VwK1outmxhe9dOiEWqMz3MW2LKgDTpqWV+37IWuVbA==} engines: {node: ^18 || >=20} hasBin: true @@ -8078,7 +8476,7 @@ packages: typescript: optional: true dependencies: - typescript: 5.4.3 + typescript: 5.4.5 dev: true /tsconfig-paths@3.15.0: @@ -8107,14 +8505,14 @@ packages: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: true - /tsutils@3.21.0(typescript@5.4.3): + /tsutils@3.21.0(typescript@5.4.5): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} 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' dependencies: tslib: 1.14.1 - typescript: 5.4.3 + typescript: 5.4.5 dev: true /type-check@0.4.0: @@ -8131,6 +8529,7 @@ packages: /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} + dev: true /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} @@ -8199,8 +8598,8 @@ packages: is-typed-array: 1.1.13 dev: true - /typed-array-length@1.0.5: - resolution: {integrity: sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==} + /typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 @@ -8217,8 +8616,8 @@ packages: is-typedarray: 1.0.0 dev: true - /typescript@5.4.3: - resolution: {integrity: sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==} + /typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} engines: {node: '>=14.17'} hasBin: true @@ -8251,6 +8650,10 @@ packages: which-boxed-primitive: 1.0.2 dev: true + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true + /unescape-js@1.1.4: resolution: {integrity: sha512-42SD8NOQEhdYntEiUQdYq/1V/YHwr1HLwlHuTJB5InVVdOSbgI6xu8jK5q65yIzuFCfczzyDF/7hbGzVbyCw0g==} dependencies: @@ -8325,15 +8728,6 @@ packages: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} dev: true - /v8-to-istanbul@9.2.0: - resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} - engines: {node: '>=10.12.0'} - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - '@types/istanbul-lib-coverage': 2.0.6 - convert-source-map: 2.0.0 - dev: true - /validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: @@ -8362,8 +8756,8 @@ packages: semver: 7.6.0 dev: true - /vite-node@1.4.0(@types/node@16.18.93): - resolution: {integrity: sha512-VZDAseqjrHgNd4Kh8icYHWzTKSCZMhia7GyHfhtzLW33fZlG9SwsB6CEhgyVOWkJfJ2pFLrp/Gj1FSfAiqH9Lw==} + /vite-node@1.5.0(@types/node@20.12.7): + resolution: {integrity: sha512-tV8h6gMj6vPzVCa7l+VGq9lwoJjW8Y79vst8QZZGiuRAfijU+EEWuc0kFpmndQrWhMMhet1jdSF+40KSZUqIIw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true dependencies: @@ -8371,7 +8765,7 @@ packages: debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.1.6(@types/node@16.18.93) + vite: 5.1.6(@types/node@20.12.7) transitivePeerDependencies: - '@types/node' - less @@ -8383,7 +8777,7 @@ packages: - terser dev: true - /vite-tsconfig-paths@4.3.2(typescript@5.4.3): + /vite-tsconfig-paths@4.3.2(typescript@5.4.5): resolution: {integrity: sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==} peerDependencies: vite: '*' @@ -8393,13 +8787,13 @@ packages: dependencies: debug: 4.3.4 globrex: 0.1.2 - tsconfck: 3.0.3(typescript@5.4.3) + tsconfck: 3.0.3(typescript@5.4.5) transitivePeerDependencies: - supports-color - typescript dev: true - /vite@5.1.6(@types/node@16.18.93): + /vite@5.1.6(@types/node@20.12.7): resolution: {integrity: sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -8427,23 +8821,23 @@ packages: terser: optional: true dependencies: - '@types/node': 16.18.93 + '@types/node': 20.12.7 esbuild: 0.19.12 postcss: 8.4.37 - rollup: 4.13.2 + rollup: 4.14.3 optionalDependencies: fsevents: 2.3.3 dev: true - /vitest@1.4.0(@types/node@16.18.93): - resolution: {integrity: sha512-gujzn0g7fmwf83/WzrDTnncZt2UiXP41mHuFYFrdwaLRVQ6JYQEiME2IfEjU3vcFL3VKa75XhI3lFgn+hfVsQw==} + /vitest@1.5.0(@types/node@20.12.7): + resolution: {integrity: sha512-d8UKgR0m2kjdxDWX6911uwxout6GHS0XaGH1cksSIVVG8kRlE7G7aBw7myKQCvDI5dT4j7ZMa+l706BIORMDLw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.4.0 - '@vitest/ui': 1.4.0 + '@vitest/browser': 1.5.0 + '@vitest/ui': 1.5.0 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -8460,12 +8854,12 @@ packages: jsdom: optional: true dependencies: - '@types/node': 16.18.93 - '@vitest/expect': 1.4.0 - '@vitest/runner': 1.4.0 - '@vitest/snapshot': 1.4.0 - '@vitest/spy': 1.4.0 - '@vitest/utils': 1.4.0 + '@types/node': 20.12.7 + '@vitest/expect': 1.5.0 + '@vitest/runner': 1.5.0 + '@vitest/snapshot': 1.5.0 + '@vitest/spy': 1.5.0 + '@vitest/utils': 1.5.0 acorn-walk: 8.3.2 chai: 4.4.1 debug: 4.3.4 @@ -8477,9 +8871,9 @@ packages: std-env: 3.7.0 strip-literal: 2.0.0 tinybench: 2.6.0 - tinypool: 0.8.2 - vite: 5.1.6(@types/node@16.18.93) - vite-node: 1.4.0(@types/node@16.18.93) + tinypool: 0.8.4 + vite: 5.1.6(@types/node@20.12.7) + vite-node: 1.5.0(@types/node@20.12.7) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -8599,6 +8993,7 @@ packages: /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true /write-file-atomic@3.0.3: resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} @@ -8631,6 +9026,15 @@ packages: /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + /yaml-eslint-parser@1.2.2: + resolution: {integrity: sha512-pEwzfsKbTrB8G3xc/sN7aw1v6A6c/pKxLAkjclnAyo5g5qOh6eL9WGu0o3cSDQZKrTNk4KL4lQSwZW+nBkANEg==} + engines: {node: ^14.17.0 || >=16.0.0} + dependencies: + eslint-visitor-keys: 3.4.3 + lodash: 4.17.21 + yaml: 2.4.1 + dev: true + /yaml@2.3.4: resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} engines: {node: '>= 14'} @@ -8704,3 +9108,26 @@ packages: /zod@3.22.4: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} dev: true + + file:(eslint@9.0.0)(typescript@5.4.5): + resolution: {directory: '', type: directory} + id: 'file:' + name: eslint-plugin-functional + engines: {node: '>=v18.18.0'} + peerDependencies: + eslint: ^9.0.0 + typescript: '>=4.7.4' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/utils': 7.7.0(eslint@9.0.0)(typescript@5.4.5) + deepmerge-ts: 5.1.0 + escape-string-regexp: 4.0.0 + eslint: 9.0.0 + is-immutable-type: 3.1.0(eslint@9.0.0)(typescript@5.4.5) + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true diff --git a/project-dictionary.txt b/project-dictionary.txt index e2301ea00..e2fd461f0 100644 --- a/project-dictionary.txt +++ b/project-dictionary.txt @@ -16,5 +16,6 @@ noreply rebeccastevens ruleset rulesets +sonarjs treeshake TSES diff --git a/rollup.config.ts b/rollup.config.ts index a720ffdf4..8f56a52ed 100644 --- a/rollup.config.ts +++ b/rollup.config.ts @@ -1,5 +1,5 @@ import { rollupPlugin as rollupPluginDeassert } from "deassert"; -import { type RollupOptions } from "rollup"; +import { type OutputOptions, type RollupOptions } from "rollup"; import rollupPluginAutoExternal from "rollup-plugin-auto-external"; import rollupPluginTs from "rollup-plugin-ts"; @@ -12,16 +12,15 @@ const treeshake = { unknownGlobalSideEffects: false, } satisfies RollupOptions["treeshake"]; -const classicCJS = { - input: "src/classic.ts", - - output: { - file: pkg.exports["."].require, - format: "cjs", - sourcemap: false, +const output = { + sourcemap: false, + generatedCode: { + preset: "es2015", }, +} satisfies Omit; - plugins: [ +function getPlugins(format: "esm" | "cjs"): RollupOptions["plugins"] { + return [ rollupPluginAutoExternal(), rollupPluginTs({ transpileOnly: true, @@ -32,7 +31,7 @@ const classicCJS = { paths: { ...resolvedConfig.paths, "#eslint-plugin-functional/conditional-imports/*": [ - "src/utils/conditional-imports/cjs/*", + `src/utils/conditional-imports/${format}/*`, ], }, }), @@ -41,111 +40,35 @@ const classicCJS = { rollupPluginDeassert({ include: ["**/*.{js,ts}"], }), - ], + ]; +} - treeshake, -} satisfies RollupOptions; - -const classicESM = { - input: "src/classic.ts", +const esm = { + input: "src/index.ts", output: { - file: pkg.exports["."].import, + ...output, + file: pkg.exports.import, format: "esm", - sourcemap: false, }, - plugins: [ - rollupPluginAutoExternal(), - rollupPluginTs({ - transpileOnly: true, - tsconfig: { - fileName: "tsconfig.build.json", - hook: (resolvedConfig) => ({ - ...resolvedConfig, - paths: { - ...resolvedConfig.paths, - "#eslint-plugin-functional/conditional-imports/*": [ - "src/utils/conditional-imports/esm/*", - ], - }, - }), - }, - }), - rollupPluginDeassert({ - include: ["**/*.{js,ts}"], - }), - ], + plugins: getPlugins("esm"), treeshake, } satisfies RollupOptions; -const flatCJS = { - input: "src/flat.ts", +const cjs = { + input: "src/index.ts", output: { - file: pkg.exports["./flat"].require, + ...output, + file: pkg.exports.require, format: "cjs", - sourcemap: false, }, - plugins: [ - rollupPluginAutoExternal(), - rollupPluginTs({ - transpileOnly: true, - tsconfig: { - fileName: "tsconfig.build.json", - hook: (resolvedConfig) => ({ - ...resolvedConfig, - paths: { - ...resolvedConfig.paths, - "#eslint-plugin-functional/conditional-imports/*": [ - "src/utils/conditional-imports/cjs/*", - ], - }, - }), - }, - }), - rollupPluginDeassert({ - include: ["**/*.{js,ts}"], - }), - ], - - treeshake, -} satisfies RollupOptions; - -const flatESM = { - input: "src/flat.ts", - - output: { - file: pkg.exports["./flat"].import, - format: "esm", - sourcemap: false, - }, - - plugins: [ - rollupPluginAutoExternal(), - rollupPluginTs({ - transpileOnly: true, - tsconfig: { - fileName: "tsconfig.build.json", - hook: (resolvedConfig) => ({ - ...resolvedConfig, - paths: { - ...resolvedConfig.paths, - "#eslint-plugin-functional/conditional-imports/*": [ - "src/utils/conditional-imports/esm/*", - ], - }, - }), - }, - }), - rollupPluginDeassert({ - include: ["**/*.{js,ts}"], - }), - ], + plugins: getPlugins("cjs"), treeshake, } satisfies RollupOptions; -export default [classicCJS, classicESM, flatCJS, flatESM]; +export default [cjs, esm]; diff --git a/src/classic.ts b/src/classic.ts deleted file mode 100644 index 21ca483ab..000000000 --- a/src/classic.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { type Linter } from "@typescript-eslint/utils/ts-eslint"; - -import all from "#eslint-plugin-functional/configs/all"; -import currying from "#eslint-plugin-functional/configs/currying"; -import disableTypeChecked from "#eslint-plugin-functional/configs/disable-type-checked"; -import externalTypeScriptRecommended from "#eslint-plugin-functional/configs/external-typescript-recommended"; -import externalVanillaRecommended from "#eslint-plugin-functional/configs/external-vanilla-recommended"; -import lite from "#eslint-plugin-functional/configs/lite"; -import noExceptions from "#eslint-plugin-functional/configs/no-exceptions"; -import noMutations from "#eslint-plugin-functional/configs/no-mutations"; -import noOtherParadigms from "#eslint-plugin-functional/configs/no-other-paradigms"; -import noStatements from "#eslint-plugin-functional/configs/no-statements"; -import off from "#eslint-plugin-functional/configs/off"; -import recommended from "#eslint-plugin-functional/configs/recommended"; -import strict from "#eslint-plugin-functional/configs/strict"; -import stylistic from "#eslint-plugin-functional/configs/stylistic"; -import { rules } from "#eslint-plugin-functional/rules"; -import { ruleNameScope } from "#eslint-plugin-functional/utils/misc"; - -export default { - rules, - configs: { - all: { plugins: [ruleNameScope], rules: all }, - lite: { plugins: [ruleNameScope], rules: lite }, - recommended: { plugins: [ruleNameScope], rules: recommended }, - strict: { plugins: [ruleNameScope], rules: strict }, - off: { plugins: [ruleNameScope], rules: off }, - "disable-type-checked": { - plugins: [ruleNameScope], - rules: disableTypeChecked, - }, - "external-vanilla-recommended": { - plugins: [ruleNameScope], - rules: externalVanillaRecommended, - }, - "external-typescript-recommended": { - plugins: [ruleNameScope], - rules: externalTypeScriptRecommended, - }, - currying: { plugins: [ruleNameScope], rules: currying }, - "no-exceptions": { plugins: [ruleNameScope], rules: noExceptions }, - "no-mutations": { plugins: [ruleNameScope], rules: noMutations }, - "no-other-paradigms": { plugins: [ruleNameScope], rules: noOtherParadigms }, - "no-statements": { plugins: [ruleNameScope], rules: noStatements }, - stylistic: { plugins: [ruleNameScope], rules: stylistic }, - }, -} as Linter.Plugin; diff --git a/src/configs/disable-type-checked.ts b/src/configs/disable-type-checked.ts index 76827e53a..c770022e4 100644 --- a/src/configs/disable-type-checked.ts +++ b/src/configs/disable-type-checked.ts @@ -5,6 +5,6 @@ import { ruleNameScope } from "#eslint-plugin-functional/utils/misc"; export default Object.fromEntries( Object.entries(rules) - .filter(([, rule]) => rule.meta.docs?.requiresTypeChecking === true) + .filter(([, rule]) => rule.meta.docs.requiresTypeChecking === true) .map(([name]) => [`${ruleNameScope}/${name}`, "off"]), ) satisfies FlatConfig.Config["rules"]; diff --git a/src/flat.ts b/src/index.ts similarity index 96% rename from src/flat.ts rename to src/index.ts index b83911651..0a4ccfc04 100644 --- a/src/flat.ts +++ b/src/index.ts @@ -56,7 +56,6 @@ const configs = { stylistic: { plugins: { functional }, rules: stylistic }, } satisfies Record; -// eslint-disable-next-line functional/immutable-data, functional/no-expression-statements functional.configs = configs; export default functional as FlatConfig.Plugin & { diff --git a/src/rules/functional-parameters.ts b/src/rules/functional-parameters.ts index 61304395b..acf160950 100644 --- a/src/rules/functional-parameters.ts +++ b/src/rules/functional-parameters.ts @@ -7,18 +7,18 @@ import { type RuleContext } from "@typescript-eslint/utils/ts-eslint"; import { deepmerge } from "deepmerge-ts"; import { + type IgnoreIdentifierPatternOption, + type IgnorePrefixSelectorOption, ignoreIdentifierPatternOptionSchema, ignorePrefixSelectorOptionSchema, shouldIgnorePattern, - type IgnoreIdentifierPatternOption, - type IgnorePrefixSelectorOption, } from "#eslint-plugin-functional/options"; import { ruleNameScope } from "#eslint-plugin-functional/utils/misc"; import { type ESFunction } from "#eslint-plugin-functional/utils/node-types"; import { - createRuleUsingFunction, type NamedCreateRuleCustomMeta, type RuleResult, + createRuleUsingFunction, } from "#eslint-plugin-functional/utils/rule"; import { isArgument, diff --git a/src/rules/immutable-data.ts b/src/rules/immutable-data.ts index 1854463d5..58147e25e 100644 --- a/src/rules/immutable-data.ts +++ b/src/rules/immutable-data.ts @@ -7,24 +7,24 @@ import { type RuleContext } from "@typescript-eslint/utils/ts-eslint"; import { deepmerge } from "deepmerge-ts"; import { + type IgnoreAccessorPatternOption, + type IgnoreClassesOption, + type IgnoreIdentifierPatternOption, ignoreAccessorPatternOptionSchema, ignoreClassesOptionSchema, ignoreIdentifierPatternOptionSchema, shouldIgnoreClasses, shouldIgnorePattern, - type IgnoreAccessorPatternOption, - type IgnoreClassesOption, - type IgnoreIdentifierPatternOption, } from "#eslint-plugin-functional/options"; import { isExpected, ruleNameScope, } from "#eslint-plugin-functional/utils/misc"; import { - createRule, - getTypeOfNode, type NamedCreateRuleCustomMeta, type RuleResult, + createRule, + getTypeOfNode, } from "#eslint-plugin-functional/utils/rule"; import { findRootIdentifier, diff --git a/src/rules/no-classes.ts b/src/rules/no-classes.ts index df2378e97..2a8aea044 100644 --- a/src/rules/no-classes.ts +++ b/src/rules/no-classes.ts @@ -4,9 +4,9 @@ import { type RuleContext } from "@typescript-eslint/utils/ts-eslint"; import { ruleNameScope } from "#eslint-plugin-functional/utils/misc"; import { type ESClass } from "#eslint-plugin-functional/utils/node-types"; import { - createRule, type NamedCreateRuleCustomMeta, type RuleResult, + createRule, } from "#eslint-plugin-functional/utils/rule"; /** diff --git a/src/rules/no-conditional-statements.ts b/src/rules/no-conditional-statements.ts index ae20989ea..2deb8e1f2 100644 --- a/src/rules/no-conditional-statements.ts +++ b/src/rules/no-conditional-statements.ts @@ -6,10 +6,10 @@ import { type Type } from "typescript"; import tsApiUtils from "#eslint-plugin-functional/conditional-imports/ts-api-utils"; import { ruleNameScope } from "#eslint-plugin-functional/utils/misc"; import { - createRule, - getTypeOfNode, type NamedCreateRuleCustomMeta, type RuleResult, + createRule, + getTypeOfNode, } from "#eslint-plugin-functional/utils/rule"; import { isBlockStatement, diff --git a/src/rules/no-expression-statements.ts b/src/rules/no-expression-statements.ts index 43294fcfd..3bec6c698 100644 --- a/src/rules/no-expression-statements.ts +++ b/src/rules/no-expression-statements.ts @@ -9,19 +9,19 @@ import { deepmerge } from "deepmerge-ts"; import tsApiUtils from "#eslint-plugin-functional/conditional-imports/ts-api-utils"; import typescript from "#eslint-plugin-functional/conditional-imports/typescript"; import { + type IgnoreCodePatternOption, ignoreCodePatternOptionSchema, shouldIgnorePattern, - type IgnoreCodePatternOption, } from "#eslint-plugin-functional/options"; import { isDirectivePrologue, ruleNameScope, } from "#eslint-plugin-functional/utils/misc"; import { - createRule, - getTypeOfNode, type NamedCreateRuleCustomMeta, type RuleResult, + createRule, + getTypeOfNode, } from "#eslint-plugin-functional/utils/rule"; import { isCallExpression, diff --git a/src/rules/no-let.ts b/src/rules/no-let.ts index 591e29955..d0b53a35e 100644 --- a/src/rules/no-let.ts +++ b/src/rules/no-let.ts @@ -7,16 +7,16 @@ import { type RuleContext } from "@typescript-eslint/utils/ts-eslint"; import { deepmerge } from "deepmerge-ts"; import { + type IgnoreIdentifierPatternOption, ignoreIdentifierPatternOptionSchema, shouldIgnoreInFunction, shouldIgnorePattern, - type IgnoreIdentifierPatternOption, } from "#eslint-plugin-functional/options"; import { ruleNameScope } from "#eslint-plugin-functional/utils/misc"; import { - createRule, type NamedCreateRuleCustomMeta, type RuleResult, + createRule, } from "#eslint-plugin-functional/utils/rule"; import { isInForLoopInitializer } from "#eslint-plugin-functional/utils/tree"; diff --git a/src/rules/no-loop-statements.ts b/src/rules/no-loop-statements.ts index 03c4bebdc..d9d8a352b 100644 --- a/src/rules/no-loop-statements.ts +++ b/src/rules/no-loop-statements.ts @@ -4,9 +4,9 @@ import { type RuleContext } from "@typescript-eslint/utils/ts-eslint"; import { ruleNameScope } from "#eslint-plugin-functional/utils/misc"; import { type ESLoop } from "#eslint-plugin-functional/utils/node-types"; import { - createRule, type NamedCreateRuleCustomMeta, type RuleResult, + createRule, } from "#eslint-plugin-functional/utils/rule"; /** diff --git a/src/rules/no-mixed-types.ts b/src/rules/no-mixed-types.ts index 6e5e725f9..b3a9f19b1 100644 --- a/src/rules/no-mixed-types.ts +++ b/src/rules/no-mixed-types.ts @@ -4,10 +4,10 @@ import { type RuleContext } from "@typescript-eslint/utils/ts-eslint"; import { ruleNameScope } from "#eslint-plugin-functional/utils/misc"; import { - createRuleUsingFunction, - getTypeOfNode, type NamedCreateRuleCustomMeta, type RuleResult, + createRuleUsingFunction, + getTypeOfNode, } from "#eslint-plugin-functional/utils/rule"; import { isFunctionLikeType, @@ -102,17 +102,16 @@ function hasTypeElementViolations( context: Readonly>, ): boolean { return !typeElements - .map((member) => { - return ( + .map( + (member) => isTSMethodSignature(member) || isTSCallSignatureDeclaration(member) || isTSConstructSignatureDeclaration(member) || ((isTSPropertySignature(member) || isTSIndexSignature(member)) && member.typeAnnotation !== undefined && (isTSFunctionType(member.typeAnnotation.typeAnnotation) || - isFunctionLikeType(getTypeOfNode(member, context)))) - ); - }) + isFunctionLikeType(getTypeOfNode(member, context)))), + ) .every((isFunction, _, array) => array[0] === isFunction); } diff --git a/src/rules/no-promise-reject.ts b/src/rules/no-promise-reject.ts index 58330c243..25b47370e 100644 --- a/src/rules/no-promise-reject.ts +++ b/src/rules/no-promise-reject.ts @@ -4,9 +4,9 @@ import { type RuleContext } from "@typescript-eslint/utils/ts-eslint"; import { ruleNameScope } from "#eslint-plugin-functional/utils/misc"; import { - createRule, type NamedCreateRuleCustomMeta, type RuleResult, + createRule, } from "#eslint-plugin-functional/utils/rule"; import { isIdentifier, diff --git a/src/rules/no-return-void.ts b/src/rules/no-return-void.ts index 2c9e0bb6c..73481ebfe 100644 --- a/src/rules/no-return-void.ts +++ b/src/rules/no-return-void.ts @@ -5,10 +5,10 @@ import tsApiUtils from "#eslint-plugin-functional/conditional-imports/ts-api-uti import { ruleNameScope } from "#eslint-plugin-functional/utils/misc"; import { type ESFunctionType } from "#eslint-plugin-functional/utils/node-types"; import { - createRule, - getTypeOfNode, type NamedCreateRuleCustomMeta, type RuleResult, + createRule, + getTypeOfNode, } from "#eslint-plugin-functional/utils/rule"; import { isFunctionLike, diff --git a/src/rules/no-this-expressions.ts b/src/rules/no-this-expressions.ts index 57b718a37..73ef424d4 100644 --- a/src/rules/no-this-expressions.ts +++ b/src/rules/no-this-expressions.ts @@ -4,9 +4,9 @@ import { type RuleContext } from "@typescript-eslint/utils/ts-eslint"; import { ruleNameScope } from "#eslint-plugin-functional/utils/misc"; import { - createRule, type NamedCreateRuleCustomMeta, type RuleResult, + createRule, } from "#eslint-plugin-functional/utils/rule"; /** diff --git a/src/rules/no-throw-statements.ts b/src/rules/no-throw-statements.ts index 90b621909..5ad98afda 100644 --- a/src/rules/no-throw-statements.ts +++ b/src/rules/no-throw-statements.ts @@ -4,9 +4,9 @@ import { type RuleContext } from "@typescript-eslint/utils/ts-eslint"; import { ruleNameScope } from "#eslint-plugin-functional/utils/misc"; import { - createRule, type NamedCreateRuleCustomMeta, type RuleResult, + createRule, } from "#eslint-plugin-functional/utils/rule"; import { isInFunctionBody } from "#eslint-plugin-functional/utils/tree"; diff --git a/src/rules/no-try-statements.ts b/src/rules/no-try-statements.ts index 75cde1e91..265f3a3ba 100644 --- a/src/rules/no-try-statements.ts +++ b/src/rules/no-try-statements.ts @@ -4,9 +4,9 @@ import { type RuleContext } from "@typescript-eslint/utils/ts-eslint"; import { ruleNameScope } from "#eslint-plugin-functional/utils/misc"; import { - createRule, type NamedCreateRuleCustomMeta, type RuleResult, + createRule, } from "#eslint-plugin-functional/utils/rule"; /** diff --git a/src/rules/prefer-immutable-types.ts b/src/rules/prefer-immutable-types.ts index ab31d5b62..c5199e5a2 100644 --- a/src/rules/prefer-immutable-types.ts +++ b/src/rules/prefer-immutable-types.ts @@ -11,22 +11,22 @@ import { deepmerge } from "deepmerge-ts"; import { Immutability } from "is-immutable-type"; import { + type IgnoreClassesOption, ignoreClassesOptionSchema, shouldIgnoreClasses, shouldIgnoreInFunction, shouldIgnorePattern, - type IgnoreClassesOption, } from "#eslint-plugin-functional/options"; import { ruleNameScope } from "#eslint-plugin-functional/utils/misc"; import { type ESFunctionType } from "#eslint-plugin-functional/utils/node-types"; import { + type NamedCreateRuleCustomMeta, + type RuleResult, createRule, getReturnTypesOfFunction, getTypeImmutabilityOfNode, getTypeImmutabilityOfType, isImplementationOfOverload, - type NamedCreateRuleCustomMeta, - type RuleResult, } from "#eslint-plugin-functional/utils/rule"; import { hasID, @@ -343,7 +343,7 @@ function getAllFixers( fixerConfigs: FixerConfig[] | false, suggestionsConfigs: SuggestionsConfig[] | false, ): AllFixers { - const nodeText = context.sourceCode.getText(node).replaceAll(/\s+/gmu, " "); + const nodeText = context.sourceCode.getText(node).replaceAll(/\s+/gu, " "); const fix = fixerConfigs === false diff --git a/src/rules/prefer-property-signatures.ts b/src/rules/prefer-property-signatures.ts index 47c4ce6a3..c7a49d47e 100644 --- a/src/rules/prefer-property-signatures.ts +++ b/src/rules/prefer-property-signatures.ts @@ -4,9 +4,9 @@ import { type RuleContext } from "@typescript-eslint/utils/ts-eslint"; import { ruleNameScope } from "#eslint-plugin-functional/utils/misc"; import { - createRule, type NamedCreateRuleCustomMeta, type RuleResult, + createRule, } from "#eslint-plugin-functional/utils/rule"; import { isInReadonly } from "#eslint-plugin-functional/utils/tree"; diff --git a/src/rules/prefer-readonly-type.ts b/src/rules/prefer-readonly-type.ts index 1ba860405..d6bfce16c 100644 --- a/src/rules/prefer-readonly-type.ts +++ b/src/rules/prefer-readonly-type.ts @@ -3,20 +3,20 @@ import { type JSONSchema4 } from "@typescript-eslint/utils/json-schema"; import { type RuleContext } from "@typescript-eslint/utils/ts-eslint"; import { + type IgnoreAccessorPatternOption, + type IgnoreCodePatternOption, shouldIgnoreClasses, shouldIgnoreInFunction, shouldIgnorePattern, - type IgnoreAccessorPatternOption, - type IgnoreCodePatternOption, } from "#eslint-plugin-functional/options"; import { ruleNameScope } from "#eslint-plugin-functional/utils/misc"; import { type ESArrayTupleType } from "#eslint-plugin-functional/utils/node-types"; import { - createRule, - getTypeOfNode, type BaseOptions, type NamedCreateRuleCustomMeta, type RuleResult, + createRule, + getTypeOfNode, } from "#eslint-plugin-functional/utils/rule"; import { isInInterface, diff --git a/src/rules/prefer-tacit.ts b/src/rules/prefer-tacit.ts index 2b9ed5fe8..b61213f9b 100644 --- a/src/rules/prefer-tacit.ts +++ b/src/rules/prefer-tacit.ts @@ -7,18 +7,16 @@ import { type RuleFix, type RuleFixer, } from "@typescript-eslint/utils/ts-eslint"; -import * as semver from "semver"; import { type Type } from "typescript"; -import ts from "#eslint-plugin-functional/conditional-imports/typescript"; import { ruleNameScope } from "#eslint-plugin-functional/utils/misc"; import { type ESFunction } from "#eslint-plugin-functional/utils/node-types"; import { + type NamedCreateRuleCustomMeta, + type RuleResult, createRule, getTypeOfNode, getTypeOfTSNode, - type NamedCreateRuleCustomMeta, - type RuleResult, } from "#eslint-plugin-functional/utils/rule"; import { isNested } from "#eslint-plugin-functional/utils/tree"; import { @@ -96,15 +94,6 @@ const meta: NamedCreateRuleCustomMeta = { schema, }; -/** - * Is the version of TypeScript being used 4.7 or newer? - */ -const isTS4dot7 = - ts !== undefined && - semver.satisfies(ts.version, `>= 4.7.0 || >= 4.7.1-rc || >= 4.7.0-beta`, { - includePrerelease: true, - }); - /** * From the callee's type, does it follow that the caller violates this rule. */ @@ -141,15 +130,13 @@ function fixFunctionCallToReference( ): RuleFix[] | null { // Fix to Instantiation Expression. if ( - caller.typeParameters !== undefined && - caller.typeParameters.params.length > 0 + caller.typeArguments !== undefined && + caller.typeArguments.params.length > 0 ) { - return isTS4dot7 - ? [ - fixer.removeRange([node.range[0], caller.callee.range[0]]), - fixer.removeRange([caller.typeParameters.range[1], node.range[1]]), - ] - : null; + return [ + fixer.removeRange([node.range[0], caller.callee.range[0]]), + fixer.removeRange([caller.typeArguments.range[1], node.range[1]]), + ]; } return [ diff --git a/src/rules/readonly-type.ts b/src/rules/readonly-type.ts index 426778886..faf4b7e99 100644 --- a/src/rules/readonly-type.ts +++ b/src/rules/readonly-type.ts @@ -7,9 +7,9 @@ import { import { ruleNameScope } from "#eslint-plugin-functional/utils/misc"; import { - createRule, type NamedCreateRuleCustomMeta, type RuleResult, + createRule, } from "#eslint-plugin-functional/utils/rule"; import { getReadonly } from "#eslint-plugin-functional/utils/tree"; import { @@ -136,9 +136,7 @@ function checkTypeLiteral( const text = sourceCode.getText(readonlyWrapper); const wrapperStartPattern = /^Readonly\s*$/gu; - - // eslint-disable-next-line functional/no-expression-statements -- Sets `wrapperStartPattern.lastIndex`. + const wrapperEndPattern = /\s*>$/u; wrapperStartPattern.exec(text); const end = wrapperEndPattern.exec(text); diff --git a/src/rules/type-declaration-immutability.ts b/src/rules/type-declaration-immutability.ts index d80f2db12..19ff5190e 100644 --- a/src/rules/type-declaration-immutability.ts +++ b/src/rules/type-declaration-immutability.ts @@ -8,9 +8,9 @@ import { deepmerge } from "deepmerge-ts"; import { Immutability } from "is-immutable-type"; import { + type IgnoreIdentifierPatternOption, ignoreIdentifierPatternOptionSchema, shouldIgnorePattern, - type IgnoreIdentifierPatternOption, } from "#eslint-plugin-functional/options"; import { getNodeIdentifierTexts, @@ -18,10 +18,10 @@ import { } from "#eslint-plugin-functional/utils/misc"; import { type ESTypeDeclaration } from "#eslint-plugin-functional/utils/node-types"; import { - createRule, - getTypeImmutabilityOfNode, type NamedCreateRuleCustomMeta, type RuleResult, + createRule, + getTypeImmutabilityOfNode, } from "#eslint-plugin-functional/utils/rule"; import { isTSInterfaceDeclaration } from "#eslint-plugin-functional/utils/type-guards"; @@ -268,7 +268,7 @@ function getRules(options: Readonly): ImmutabilityRule[] { ? false : (Array.isArray(rule.fixer) ? rule.fixer : [rule.fixer]).map((r) => ({ ...r, - pattern: new RegExp(r.pattern, "us"), + pattern: new RegExp(r.pattern, "su"), })); const suggestions = @@ -276,7 +276,7 @@ function getRules(options: Readonly): ImmutabilityRule[] { ? false : rule.suggestions.map((r) => ({ ...r, - pattern: new RegExp(r.pattern, "us"), + pattern: new RegExp(r.pattern, "su"), })); return { diff --git a/src/settings/immutability.ts b/src/settings/immutability.ts index 7bf9de125..d2bef054e 100644 --- a/src/settings/immutability.ts +++ b/src/settings/immutability.ts @@ -1,9 +1,9 @@ import { type SharedConfigurationSettings } from "@typescript-eslint/utils"; import { Immutability, - getDefaultOverrides as getDefaultImmutabilityOverrides, type ImmutabilityOverrides, type TypeSpecifier, + getDefaultOverrides as getDefaultImmutabilityOverrides, } from "is-immutable-type"; declare module "@typescript-eslint/utils" { @@ -13,7 +13,7 @@ declare module "@typescript-eslint/utils" { from?: Immutability | keyof typeof Immutability; }; - // eslint-disable-next-line @typescript-eslint/consistent-type-definitions, @typescript-eslint/no-shadow + // eslint-disable-next-line ts/consistent-type-definitions, ts/no-shadow interface SharedConfigurationSettings { immutability?: { overrides?: @@ -46,7 +46,6 @@ export function getImmutabilityOverrides({ if (!cachedSettings.has(immutability)) { const overrides = loadImmutabilityOverrides(immutability); - // eslint-disable-next-line functional/no-expression-statements cachedSettings.set(immutability, overrides); return overrides; } @@ -82,7 +81,6 @@ function loadImmutabilityOverrides( : from, } as ImmutabilityOverrides[number]; - /* c8 ignore start */ if (value.type === undefined) { // eslint-disable-next-line functional/no-throw-statements throw new Error( @@ -108,7 +106,6 @@ function loadImmutabilityOverrides( )}". Value: "${JSON.stringify(rawValue)}"`, ); } - /* c8 ignore stop */ return value; }); diff --git a/src/utils/constants.ts b/src/utils/constants.ts index 6af1f8d59..df2953410 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -1,2 +1,2 @@ -// eslint-disable-next-line @typescript-eslint/naming-convention -- This is a special var. +// eslint-disable-next-line ts/naming-convention -- This is a special var. export const __VERSION__ = "0.0.0-development"; diff --git a/src/utils/misc.ts b/src/utils/misc.ts index 576303ce8..8ee168032 100644 --- a/src/utils/misc.ts +++ b/src/utils/misc.ts @@ -11,9 +11,9 @@ import { isIdentifier, isMemberExpression, isPrivateIdentifier, - isThisExpression, isTSAsExpression, isTSTypeAnnotation, + isThisExpression, isUnaryExpression, isVariableDeclaration, } from "#eslint-plugin-functional/utils/type-guards"; @@ -72,7 +72,7 @@ function getNodeIdentifierText( : isTSTypeAnnotation(node) ? context.sourceCode .getText(node.typeAnnotation as TSESTree.Node) - .replaceAll(/\s+/gmu, "") + .replaceAll(/\s+/gu, "") : isTSAsExpression(node) ? getNodeIdentifierText(node.expression, context) : null; diff --git a/src/utils/rule.ts b/src/utils/rule.ts index 49d4be3a0..80973cd32 100644 --- a/src/utils/rule.ts +++ b/src/utils/rule.ts @@ -1,8 +1,8 @@ import { type TSESTree } from "@typescript-eslint/utils"; import { + type NamedCreateRuleMeta, RuleCreator, getParserServices, - type NamedCreateRuleMeta, } from "@typescript-eslint/utils/eslint-utils"; import { type ReportDescriptor, @@ -11,8 +11,8 @@ import { } from "@typescript-eslint/utils/ts-eslint"; import { Immutability, - getTypeImmutability, type ImmutabilityOverrides, + getTypeImmutability, } from "is-immutable-type"; import { type Node as TSNode, type Type, type TypeNode } from "typescript"; @@ -50,16 +50,17 @@ export type NamedCreateRuleCustomMeta< */ export type BaseOptions = ReadonlyArray; +/** + * The definition of a rule. + */ export type RuleDefinition< MessageIds extends string, Options extends BaseOptions, -> = { - readonly defaultOptions: Options; - readonly meta: NamedCreateRuleCustomMeta; - readonly create: ( - context: Readonly>, - ) => RuleListener; -}; +> = Readonly<{ + defaultOptions: Options; + meta: NamedCreateRuleCustomMeta; + create: (context: Readonly>) => RuleListener; +}>; /** * The result all rules return. @@ -89,7 +90,7 @@ export type RuleFunctionsMap< // This function can't be functional as it needs to interact with 3rd-party // libraries that aren't functional. -/* eslint-disable functional/no-return-void, functional/no-expression-statements */ + /** * Create a function that processes common options and then runs the given * check. @@ -117,7 +118,6 @@ function checkNode< } }; } -/* eslint-enable functional/no-return-void, functional/no-expression-statements */ /** * Create a rule. @@ -168,7 +168,6 @@ export function createRuleUsingFunction< return Object.fromEntries( Object.entries(ruleFunctionsMap).map(([nodeSelector, ruleFunction]) => [ nodeSelector, - // prettier-ignore checkNode< MessageIds, Readonly>, diff --git a/src/utils/tree.ts b/src/utils/tree.ts index d80d9bc43..eab28f17c 100644 --- a/src/utils/tree.ts +++ b/src/utils/tree.ts @@ -208,7 +208,6 @@ export function isArgument(node: TSESTree.Node): boolean { return ( node.parent !== undefined && isCallExpression(node.parent) && - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument node.parent.arguments.includes(node as any) ); } @@ -220,7 +219,6 @@ export function isParameter(node: TSESTree.Node): boolean { return ( node.parent !== undefined && isFunctionLike(node.parent) && - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument node.parent.params.includes(node as any) ); } diff --git a/tests/common/ignore-options.test.ts b/tests/common/ignore-options.test.ts index 2c576cb1d..48f277542 100644 --- a/tests/common/ignore-options.test.ts +++ b/tests/common/ignore-options.test.ts @@ -5,10 +5,10 @@ import { import dedent from "dedent"; import { - shouldIgnorePattern, type IgnoreAccessorPatternOption, type IgnoreCodePatternOption, type IgnoreIdentifierPatternOption, + shouldIgnorePattern, } from "#eslint-plugin-functional/options"; import { getRuleTester } from "#eslint-plugin-functional/tests/helpers/RuleTester"; import { @@ -27,21 +27,19 @@ function createDummyRuleFor(nodeType: string) { return createDummyRule((context) => { const [allowed, options] = context.options; return { - [nodeType]: (node) => { - return { - context, - descriptors: - shouldIgnorePattern( - node, - context, - options.ignoreIdentifierPattern, - options.ignoreAccessorPattern, - options.ignoreCodePattern, - ) === allowed - ? [] - : [{ node, messageId: "generic" }], - }; - }, + [nodeType]: (node) => ({ + context, + descriptors: + shouldIgnorePattern( + node, + context, + options.ignoreIdentifierPattern, + options.ignoreAccessorPattern, + options.ignoreCodePattern, + ) === allowed + ? [] + : [{ node, messageId: "generic" }], + }), }; }); } diff --git a/tests/configs.test.ts b/tests/configs.test.ts index bb657274e..601665c5a 100644 --- a/tests/configs.test.ts +++ b/tests/configs.test.ts @@ -13,12 +13,12 @@ import strict from "#eslint-plugin-functional/configs/strict"; import stylistic from "#eslint-plugin-functional/configs/stylistic"; import { rules } from "#eslint-plugin-functional/rules"; -describe("Configs", () => { +describe("configs", () => { const allRules = Object.values(rules); - const allConfigRules = Object.keys(all ?? {}); - const offConfigRules = Object.entries(off ?? {}); + const allConfigRules = Object.keys(all); + const offConfigRules = Object.entries(off); const allNonDeprecatedRules = allRules.filter( - (rule) => rule.meta === undefined || rule.meta.deprecated !== true, + (rule) => rule.meta.deprecated !== true, ); it('"All" - should have the right number of rules', () => { @@ -71,10 +71,10 @@ describe("Configs", () => { describe.each(configs)( '"%s" Config rules are in the "All" Config', (name, config) => { - const ruleNames = Object.keys(config ?? {}); + const ruleNames = Object.keys(config); it.each(ruleNames)(`%s`, (rule) => { - expect(all?.[rule]).toBeDefined(); + expect(all[rule]).toBeDefined(); }); }, ); diff --git a/tests/helpers/RuleTester.ts b/tests/helpers/RuleTester.ts index 5c14fc617..8b4b13405 100644 --- a/tests/helpers/RuleTester.ts +++ b/tests/helpers/RuleTester.ts @@ -4,7 +4,7 @@ import { } from "@typescript-eslint/rule-tester"; import { afterAll, beforeAll, describe, it } from "vitest"; -/* eslint-disable @typescript-eslint/naming-convention */ +/* eslint-disable ts/naming-convention */ class VitestRuleTester extends RuleTester { public static afterAll = afterAll; public static beforeAll = beforeAll; @@ -15,7 +15,7 @@ class VitestRuleTester extends RuleTester { public static describeOnly = describe.only; public static describeSkip = describe.skip; } -/* eslint-enable @typescript-eslint/naming-convention */ +/* eslint-enable ts/naming-convention */ export function getRuleTester(config: RuleTesterConfig) { return new VitestRuleTester(config); diff --git a/tests/helpers/configs.ts b/tests/helpers/configs.ts index 6c91b4b6d..5687344dd 100644 --- a/tests/helpers/configs.ts +++ b/tests/helpers/configs.ts @@ -5,11 +5,9 @@ import { type RuleTesterConfig } from "@typescript-eslint/rule-tester"; const fixturePath = path.join(process.cwd(), "tests/fixture"); export const filename = path.join(fixturePath, "file.ts"); -/* eslint-disable unicorn/prefer-module */ const typescriptParser = require.resolve("@typescript-eslint/parser"); const babelParser = require.resolve("@babel/eslint-parser"); const espreeParser = require.resolve("espree"); -/* eslint-enable unicorn/prefer-module */ export const configs = { typescript: { @@ -20,7 +18,7 @@ export const configs = { project: "tsconfig.json", }, dependencyConstraints: { - typescript: "4.3.5", + typescript: "4.7.4", }, } satisfies RuleTesterConfig, diff --git a/tests/helpers/testers.ts b/tests/helpers/testers.ts index 5f998a812..ed3efa47a 100644 --- a/tests/helpers/testers.ts +++ b/tests/helpers/testers.ts @@ -3,10 +3,10 @@ import { type RuleDefinition } from "#eslint-plugin-functional/utils/rule"; import { getRuleTester } from "./RuleTester"; import { configs } from "./configs"; import { - processInvalidTestCase, - processValidTestCase, type InvalidTestCaseSet, type ValidTestCaseSet, + processInvalidTestCase, + processValidTestCase, } from "./util"; type TestFunction< diff --git a/tests/helpers/util.ts b/tests/helpers/util.ts index e9d01457a..9e4615b60 100644 --- a/tests/helpers/util.ts +++ b/tests/helpers/util.ts @@ -10,9 +10,9 @@ import { import { type NamedCreateRuleMeta } from "@typescript-eslint/utils/eslint-utils"; import { - createRuleUsingFunction, type RuleDefinition, type RuleFunctionsMap, + createRuleUsingFunction, } from "#eslint-plugin-functional/utils/rule"; import { filename as dummyFilename } from "./configs"; diff --git a/tests/index.test.ts b/tests/index.test.ts index 103552985..217b5824b 100644 --- a/tests/index.test.ts +++ b/tests/index.test.ts @@ -6,49 +6,21 @@ import { readdirSync } from "node:fs"; import { describe, expect, it } from "vitest"; -import classic from "#eslint-plugin-functional/classic"; -import flat from "#eslint-plugin-functional/flat"; +import functional from "#eslint-plugin-functional"; -describe("Flat", () => { +describe("index", () => { it("should have all the rules", () => { const ruleFiles: string[] = readdirSync("./src/rules").filter( (file) => file !== "index.ts" && file.endsWith(".ts"), ); expect( - Object.hasOwn(flat, "rules"), + Object.hasOwn(functional, "rules"), 'The plugin\'s config object should have a "rules" property.', ); - expect(ruleFiles.length).to.equal(Object.keys(flat.rules ?? {}).length); - }); - - it("should have all the configs", () => { - const configFiles: string[] = readdirSync("./src/configs").filter( - (file) => file !== "index.ts" && file.endsWith(".ts"), - ); - - expect( - Object.hasOwn(flat, "configs"), - 'The plugin\'s config object should have a "configs" property.', - ); - expect(configFiles.length).to.equal( - Object.keys(flat.configs ?? {}).length, - "should have all the configs except deprecated", - ); - }); -}); - -describe("Classic", () => { - it("should have all the rules", () => { - const ruleFiles: string[] = readdirSync("./src/rules").filter( - (file) => file !== "index.ts" && file.endsWith(".ts"), - ); - - expect( - Object.hasOwn(classic, "rules"), - 'The plugin\'s config object should have a "rules" property.', + expect(ruleFiles.length).to.equal( + Object.keys(functional.rules ?? {}).length, ); - expect(ruleFiles.length).to.equal(Object.keys(classic.rules ?? {}).length); }); it("should have all the configs", () => { @@ -57,11 +29,11 @@ describe("Classic", () => { ); expect( - Object.hasOwn(classic, "configs"), + Object.hasOwn(functional, "configs"), 'The plugin\'s config object should have a "configs" property.', ); expect(configFiles.length).to.equal( - Object.keys(classic.configs ?? {}).length, + Object.keys(functional.configs ?? {}).length, "should have all the configs except deprecated", ); }); diff --git a/tests/rules/functional-parameters/es2015/valid.ts b/tests/rules/functional-parameters/es2015/valid.ts index d8b5adc88..5ea9e9b02 100644 --- a/tests/rules/functional-parameters/es2015/valid.ts +++ b/tests/rules/functional-parameters/es2015/valid.ts @@ -2,8 +2,8 @@ import dedent from "dedent"; import { type rule } from "#eslint-plugin-functional/rules/functional-parameters"; import { - type ValidTestCaseSet, type OptionsOf, + type ValidTestCaseSet, } from "#eslint-plugin-functional/tests/helpers/util"; const tests: Array>> = [ diff --git a/tests/rules/prefer-tacit/ts/invalid.ts b/tests/rules/prefer-tacit/ts/invalid.ts index 21e775a23..99f850b04 100644 --- a/tests/rules/prefer-tacit/ts/invalid.ts +++ b/tests/rules/prefer-tacit/ts/invalid.ts @@ -253,8 +253,8 @@ const tests: Array< { messageId: "generic", output: dedent` - const foo = [1, 2, 3].map(Boolean); - `, + const foo = [1, 2, 3].map(Boolean); + `, }, ], }, diff --git a/tsconfig.base.json b/tsconfig.base.json index 436171c1d..93b4026a5 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -31,8 +31,7 @@ "types": ["vitest/importMeta"], "baseUrl": ".", "paths": { - "#eslint-plugin-functional/flat": ["src/flat.ts"], - "#eslint-plugin-functional/classic": ["src/classic.ts"], + "#eslint-plugin-functional": ["src/index.ts"], "#eslint-plugin-functional/configs/*": ["src/configs/*"], "#eslint-plugin-functional/options": ["src/options"], "#eslint-plugin-functional/rules": ["src/rules"],