From 4383ec99ee2bd2ffd31ded465c925c85ce7af3f6 Mon Sep 17 00:00:00 2001 From: prisis Date: Sun, 22 Dec 2024 21:43:36 +0100 Subject: [PATCH 01/31] feat(eslint-config): update all possible rules to eslint v9 flat config BREAKING-CHANGE: Removed support for eslint v8 Signed-off-by: prisis --- packages/eslint-config/.prettierignore | 9 + packages/eslint-config/.prettierrc.cjs | 5 + packages/eslint-config/README.md | 178 +- .../__fixtures__/old-config/index.js | 1 - .../__fixtures__/old-config/pnpm-lock.yaml | 1613 ++++++++--------- packages/eslint-config/package.json | 310 +--- .../eslint-config/scripts/global-vitest.ts | 67 + packages/eslint-config/scripts/typegen.ts | 79 + packages/eslint-config/skip.js | 7 - packages/eslint-config/src/config.ts | 8 - .../eslint-config/src/config/plugins/antfu.ts | 49 +- .../src/config/plugins/array-func.ts | 34 +- .../eslint-config/src/config/plugins/ava.ts | 31 - .../eslint-config/src/config/plugins/babel.ts | 57 - .../src/config/plugins/comments.ts | 36 + .../src/config/plugins/compat.ts | 18 +- .../src/config/plugins/cypress.ts | 17 - .../src/config/plugins/deprecation.ts | 11 - .../src/config/plugins/editorconfig.ts | 10 - .../src/config/plugins/eslint-comments.ts | 22 - .../src/config/plugins/import.ts | 24 +- .../src/config/plugins/jest-async.ts | 10 - .../src/config/plugins/jest-dom.ts | 7 - .../src/config/plugins/jest-formatting.ts | 7 - .../eslint-config/src/config/plugins/jest.ts | 67 - .../eslint-config/src/config/plugins/jsonc.ts | 116 +- .../eslint-config/src/config/plugins/mdx.ts | 46 - .../src/config/plugins/react-hooks.ts | 24 - .../src/config/plugins/react-redux.ts | 15 - .../src/config/plugins/react-usememo.ts | 18 - .../eslint-config/src/config/plugins/react.ts | 247 ++- .../src/config/plugins/regexp.ts | 40 +- .../src/config/plugins/security.ts | 16 - .../src/config/plugins/simple-import-sort.ts | 17 - .../src/config/plugins/sonarjs.ts | 42 +- .../src/config/plugins/ssr-friendly.ts | 11 - .../src/config/plugins/storybook.ts | 33 +- .../src/config/plugins/tailwindcss.ts | 31 +- .../src/config/plugins/tanstack-query.ts | 23 +- .../src/config/plugins/testing-library-dom.ts | 29 - .../config/plugins/testing-library-react.ts | 29 - .../src/config/plugins/testing-library.ts | 26 + .../eslint-config/src/config/plugins/toml.ts | 63 +- .../eslint-config/src/config/plugins/tsdoc.ts | 29 +- .../src/config/plugins/unicorn.ts | 133 +- .../config/plugins/validate-jsx-nesting.ts | 29 +- .../src/config/plugins/vitest.ts | 77 +- .../eslint-config/src/config/plugins/yml.ts | 66 +- .../you-dont-need-lodash-underscore.ts | 25 +- .../config/plugins/you-dont-need-momentjs.ts | 9 - .../eslint-config/src/config/plugins/zod.ts | 30 +- packages/eslint-config/src/define-config.ts | 1 - packages/eslint-config/src/global.d.ts | 50 - packages/eslint-config/src/index.ts | 319 ++-- packages/eslint-config/src/index2.ts | 228 +++ packages/eslint-config/src/postinstall.ts | 29 - .../src/postinstall/write-eslint-ignore.ts | 22 - .../src/postinstall/write-eslint-rc.ts | 125 -- packages/eslint-config/src/stub.d.ts | 4 + packages/eslint-config/src/types.d.ts | 7 - packages/eslint-config/src/types.ts | 427 +++++ .../eslint-config/src/utils/create-config.ts | 87 +- .../eslint-config/src/utils/eslint-config.ts | 10 - packages/eslint-config/src/utils/indent.ts | 15 - .../src/utils/interop-default.ts | 9 + .../eslint-config/src/utils/is-in-editor.ts | 16 +- .../utils/is-in-git-hooks-or-lint-staged.ts | 5 + .../src/vender/prettier-types.ts | 163 ++ packages/eslint-config/tsconfig.dev.json | 3 - packages/eslint-config/tsup.config.ts | 7 - 70 files changed, 2923 insertions(+), 2505 deletions(-) create mode 100644 packages/eslint-config/.prettierignore create mode 100644 packages/eslint-config/.prettierrc.cjs create mode 100644 packages/eslint-config/scripts/global-vitest.ts create mode 100644 packages/eslint-config/scripts/typegen.ts delete mode 100644 packages/eslint-config/skip.js delete mode 100644 packages/eslint-config/src/config/plugins/ava.ts delete mode 100644 packages/eslint-config/src/config/plugins/babel.ts create mode 100644 packages/eslint-config/src/config/plugins/comments.ts delete mode 100644 packages/eslint-config/src/config/plugins/cypress.ts delete mode 100644 packages/eslint-config/src/config/plugins/deprecation.ts delete mode 100644 packages/eslint-config/src/config/plugins/editorconfig.ts delete mode 100644 packages/eslint-config/src/config/plugins/eslint-comments.ts delete mode 100644 packages/eslint-config/src/config/plugins/jest-async.ts delete mode 100644 packages/eslint-config/src/config/plugins/jest-dom.ts delete mode 100644 packages/eslint-config/src/config/plugins/jest-formatting.ts delete mode 100644 packages/eslint-config/src/config/plugins/jest.ts delete mode 100644 packages/eslint-config/src/config/plugins/mdx.ts delete mode 100644 packages/eslint-config/src/config/plugins/react-hooks.ts delete mode 100644 packages/eslint-config/src/config/plugins/react-redux.ts delete mode 100644 packages/eslint-config/src/config/plugins/react-usememo.ts delete mode 100644 packages/eslint-config/src/config/plugins/security.ts delete mode 100644 packages/eslint-config/src/config/plugins/simple-import-sort.ts delete mode 100644 packages/eslint-config/src/config/plugins/ssr-friendly.ts delete mode 100644 packages/eslint-config/src/config/plugins/testing-library-dom.ts delete mode 100644 packages/eslint-config/src/config/plugins/testing-library-react.ts create mode 100644 packages/eslint-config/src/config/plugins/testing-library.ts delete mode 100644 packages/eslint-config/src/config/plugins/you-dont-need-momentjs.ts delete mode 100644 packages/eslint-config/src/define-config.ts delete mode 100644 packages/eslint-config/src/global.d.ts create mode 100644 packages/eslint-config/src/index2.ts delete mode 100644 packages/eslint-config/src/postinstall.ts delete mode 100644 packages/eslint-config/src/postinstall/write-eslint-ignore.ts delete mode 100644 packages/eslint-config/src/postinstall/write-eslint-rc.ts create mode 100644 packages/eslint-config/src/stub.d.ts delete mode 100644 packages/eslint-config/src/types.d.ts create mode 100644 packages/eslint-config/src/types.ts delete mode 100644 packages/eslint-config/src/utils/eslint-config.ts delete mode 100644 packages/eslint-config/src/utils/indent.ts create mode 100644 packages/eslint-config/src/utils/interop-default.ts create mode 100644 packages/eslint-config/src/utils/is-in-git-hooks-or-lint-staged.ts create mode 100644 packages/eslint-config/src/vender/prettier-types.ts delete mode 100644 packages/eslint-config/tsconfig.dev.json delete mode 100644 packages/eslint-config/tsup.config.ts diff --git a/packages/eslint-config/.prettierignore b/packages/eslint-config/.prettierignore new file mode 100644 index 000000000..ebf52909d --- /dev/null +++ b/packages/eslint-config/.prettierignore @@ -0,0 +1,9 @@ +.gitkeep +.env* +*.ico +*.lock +dist +CHANGELOG.md +coverage +node_modules +.eslintcache diff --git a/packages/eslint-config/.prettierrc.cjs b/packages/eslint-config/.prettierrc.cjs new file mode 100644 index 000000000..32f893c08 --- /dev/null +++ b/packages/eslint-config/.prettierrc.cjs @@ -0,0 +1,5 @@ +const config = require("@anolilab/prettier-config"); + +module.exports = { + ...config, +}; diff --git a/packages/eslint-config/README.md b/packages/eslint-config/README.md index 48f1f6440..db278ccd8 100644 --- a/packages/eslint-config/README.md +++ b/packages/eslint-config/README.md @@ -22,28 +22,28 @@ Our package serves as a valuable resource for JavaScript/Typescript-based projects, offering composable [ESLint](https://eslint.org/) configurations. It encompasses a range of features, including performance optimization and the flexibility to extend pre-defined base configurations. -- Tailored Configuration for Workspaces: With this package, each workspace within your monorepo gains the ability to have its own customized ESLint configuration. This ensures that individual projects can maintain their specific requirements while still adhering to the overall guidelines. +- Tailored Configuration for Workspaces: With this package, each workspace within your monorepo gains the ability to have its own customized ESLint configuration. This ensures that individual projects can maintain their specific requirements while still adhering to the overall guidelines. -- Configurability at Your Fingertips: Crafting your workspace's ESLint configuration is a breeze, thanks to the seamless composition of pre-defined base configurations. This empowers you to tailor the settings to suit your project's unique needs, without starting from scratch. +- Configurability at Your Fingertips: Crafting your workspace's ESLint configuration is a breeze, thanks to the seamless composition of pre-defined base configurations. This empowers you to tailor the settings to suit your project's unique needs, without starting from scratch. -- Streamlined Convenience: Say goodbye to the hassle of installing plugins for each workspace. Our package integrates [@rushstack/eslint-patch](https://www.npmjs.com/package/@rushstack/eslint-patch), eliminating the need for repetitive plugin installations. Enjoy peace of mind as you focus on your work, knowing that the necessary plugins are automatically included. +- Streamlined Convenience: Say goodbye to the hassle of installing plugins for each workspace. Our package integrates [@rushstack/eslint-patch](https://www.npmjs.com/package/@rushstack/eslint-patch), eliminating the need for repetitive plugin installations. Enjoy peace of mind as you focus on your work, knowing that the necessary plugins are automatically included. -- Enhanced Efficiency: We've optimized the package's performance by intelligently enabling plugins based on file naming conventions. This streamlined approach ensures that your ESLint checks run efficiently, targeting the relevant files and maximizing productivity. +- Enhanced Efficiency: We've optimized the package's performance by intelligently enabling plugins based on file naming conventions. This streamlined approach ensures that your ESLint checks run efficiently, targeting the relevant files and maximizing productivity. In summary, our package provides comprehensive and adaptable ESLint configurations for JavaScript and Typescript projects. It empowers you to achieve code quality while minimizing overhead and maximizing productivity throughout your workspaces. ## Highlights -- Zero-config, but configurable when needed. -- Enforces readable code, because you read more code than you write. -- No need to specify file paths to lint as it lints all JS/TS files except for commonly ignored paths. -- Config overrides per files/globs. -- TypeScript supported by default, if `typescript` was installed. -- Includes many useful ESLint plugins, like [unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn), [import](https://github.com/benmosher/eslint-plugin-import) and [more](#plugins). -- Automatically enables rules based on the [engines](https://docs.npmjs.com/files/package.json#engines) field in your package.json. -- Specify indent and semicolon preferences easily without messing with the rule config. -- Disables rules that conflict with [Prettier](#let-prettier-handle-style-related-rules). -- Typesafe, because it's written in TypeScript and uses [eslint-define-config](https://github.com/Shinigami92/eslint-define-config) to define the config. +- Zero-config, but configurable when needed. +- Enforces readable code, because you read more code than you write. +- No need to specify file paths to lint as it lints all JS/TS files except for commonly ignored paths. +- Config overrides per files/globs. +- TypeScript supported by default, if `typescript` was installed. +- Includes many useful ESLint plugins, like [unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn), [import](https://github.com/benmosher/eslint-plugin-import) and [more](#plugins). +- Automatically enables rules based on the [engines](https://docs.npmjs.com/files/package.json#engines) field in your package.json. +- Specify indent and semicolon preferences easily without messing with the rule config. +- Disables rules that conflict with [Prettier](#let-prettier-handle-style-related-rules). +- Typesafe, because it's written in TypeScript and uses [eslint-define-config](https://github.com/Shinigami92/eslint-define-config) to define the config. ## Install @@ -79,7 +79,7 @@ If you already have a `.eslintrc.js`, then you can extend the `.eslintrc.js`, wi ```js /** @ts-check */ -const { defineConfig } = require('@anolilab/eslint-config/define-config'); +const { defineConfig } = require("@anolilab/eslint-config/define-config"); /// /// @@ -137,7 +137,7 @@ Extend the `.eslintrc.js` file: ```js /** @ts-check */ -const { defineConfig } = require('@anolilab/eslint-config/define-config'); +const { defineConfig } = require("@anolilab/eslint-config/define-config"); /// /// @@ -214,15 +214,15 @@ In your `babel.config.js` file add the plugin. const babelPluginSyntaxJSX = require("@babel/plugin-syntax-jsx"); module.exports = { - plugins: [ - [ - babelPluginSyntaxJSX, - { - pragma: "React.createElement", - pragmaFrag: "React.Fragment", - }, + plugins: [ + [ + babelPluginSyntaxJSX, + { + pragma: "React.createElement", + pragmaFrag: "React.Fragment", + }, + ], ], - ], }; ``` @@ -448,19 +448,19 @@ npm install --save-dev @babel/core This plugin provide a range of code quality rules: -- [eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn) -- [eslint-plugin-antfu](https://github.com/antfu/eslint-config) +- [eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn) +- [eslint-plugin-antfu](https://github.com/antfu/eslint-config) ### Languages The following plugins expand esLint to work with json files, and lint JavaScript contained in HTML, and MarkDown: -- [eslint-plugin-html](https://github.com/BenoitZugmeyer/eslint-plugin-html) -- [eslint-plugin-jsonc](https://github.com/ota-meshi/eslint-plugin-jsonc) -- [eslint-plugin-markdown](https://github.com/eslint/eslint-plugin-markdown) -- [eslint-plugin-mdx](https://github.com/mdx-js/eslint-mdx) -- [eslint-plugin-toml](https://github.com/ota-meshi/eslint-plugin-toml) -- [eslint-plugin-yml](https://github.com/ota-meshi/eslint-plugin-yml) +- [eslint-plugin-html](https://github.com/BenoitZugmeyer/eslint-plugin-html) +- [eslint-plugin-jsonc](https://github.com/ota-meshi/eslint-plugin-jsonc) +- [eslint-plugin-markdown](https://github.com/eslint/eslint-plugin-markdown) +- [eslint-plugin-mdx](https://github.com/mdx-js/eslint-mdx) +- [eslint-plugin-toml](https://github.com/ota-meshi/eslint-plugin-toml) +- [eslint-plugin-yml](https://github.com/ota-meshi/eslint-plugin-yml) When linting code snippets in Markdown files, a few [rules](src/config/plugins/markdown.ts#L3) relating to globals and unused vars are disabled. @@ -468,76 +468,76 @@ When linting code snippets in Markdown files, a few [rules](src/config/plugins/m If a supported library is part of your project then it’s related esLint plugins will be loaded. The following plugins are supported: -- [eslint-plugin-fsa](https://github.com/joseph-galindo/eslint-plugin-fsa) -- [eslint-plugin-lodash](https://github.com/wix/eslint-plugin-lodash) - - You need to install `eslint-plugin-lodash` and `lodash` to use this plugin. -- [eslint-plugin-lodash-fp](https://github.com/jfmengels/eslint-plugin-lodash-fp) - - You need to install `eslint-plugin-lodash-fp` and `lodash` to use this plugin. -- [eslint-plugin-react-redux](https://github.com/DianaSuvorova/eslint-plugin-react-redux#readme) - - You need to install `eslint-plugin-react-redux` and `react-redux` to use this plugin. -- [eslint-plugin-redux-saga](https://github.com/pke/eslint-plugin-redux-saga) - - You need to install `eslint-plugin-redux-saga` and `redux-saga` to use this plugin. +- [eslint-plugin-fsa](https://github.com/joseph-galindo/eslint-plugin-fsa) +- [eslint-plugin-lodash](https://github.com/wix/eslint-plugin-lodash) + - You need to install `eslint-plugin-lodash` and `lodash` to use this plugin. +- [eslint-plugin-lodash-fp](https://github.com/jfmengels/eslint-plugin-lodash-fp) + - You need to install `eslint-plugin-lodash-fp` and `lodash` to use this plugin. +- [eslint-plugin-react-redux](https://github.com/DianaSuvorova/eslint-plugin-react-redux#readme) + - You need to install `eslint-plugin-react-redux` and `react-redux` to use this plugin. +- [eslint-plugin-redux-saga](https://github.com/pke/eslint-plugin-redux-saga) + - You need to install `eslint-plugin-redux-saga` and `redux-saga` to use this plugin. ### Practices The following esLint plugins enforce good coding practices: -- [eslint-plugin-array-func](https://github.com/freaktechnik/eslint-plugin-array-func) -- [eslint-plugin-eslint-comments](https://github.com/mysticatea/eslint-plugin-eslint-comments) -- [eslint-plugin-promise](https://github.com/xjamundx/eslint-plugin-promise) -- [eslint-plugin-no-loops](https://github.com/buildo/eslint-plugin-no-loops) -- [eslint-plugin-simple-import-sort](https://github.com/lydell/eslint-plugin-simple-import-sort) -- [eslint-plugin-es-x](https://github.com/eslint-community/eslint-plugin-es-x) +- [eslint-plugin-array-func](https://github.com/freaktechnik/eslint-plugin-array-func) +- [eslint-plugin-eslint-comments](https://github.com/mysticatea/eslint-plugin-eslint-comments) +- [eslint-plugin-promise](https://github.com/xjamundx/eslint-plugin-promise) +- [eslint-plugin-no-loops](https://github.com/buildo/eslint-plugin-no-loops) +- [eslint-plugin-simple-import-sort](https://github.com/lydell/eslint-plugin-simple-import-sort) +- [eslint-plugin-es-x](https://github.com/eslint-community/eslint-plugin-es-x) ### Security These plugins add code security rules to esLint: -- [eslint-plugin-no-secrets](https://github.com/nickdeis/eslint-plugin-no-secrets) -- [eslint-plugin-no-unsanitized](https://github.com/mozilla/eslint-plugin-no-unsanitized) -- [eslint-plugin-sonarjs](https://github.com/SonarSource/eslint-plugin-sonarjs) -- [eslint-plugin-security](https://github.com/eslint-community/eslint-plugin-security) -- [rushstack/eslint-plugin-security](https://www.npmjs.com/package/@rushstack/eslint-plugin-security) +- [eslint-plugin-no-secrets](https://github.com/nickdeis/eslint-plugin-no-secrets) +- [eslint-plugin-no-unsanitized](https://github.com/mozilla/eslint-plugin-no-unsanitized) +- [eslint-plugin-sonarjs](https://github.com/SonarSource/eslint-plugin-sonarjs) +- [eslint-plugin-security](https://github.com/eslint-community/eslint-plugin-security) +- [rushstack/eslint-plugin-security](https://www.npmjs.com/package/@rushstack/eslint-plugin-security) ### Test Libraries The following test plugins are supported: -- [eslint-plugin-ava](https://github.com/avajs/eslint-plugin-ava) - - You need to install `eslint-plugin-ava` and `ava` to use this plugin. -- [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) - - You need to install `eslint-plugin-jest` and `jest` to use this plugin. -- [eslint-plugin-jest-async](https://www.npmjs.com/package/eslint-plugin-jest-async) - - You need to install `eslint-plugin-jest-async` and `jest` to use this plugin. -- [eslint-plugin-cypress](https://github.com/cypress-io/eslint-plugin-cypress) - - You need to install `eslint-plugin-cypress` and `cypress` to use this plugin. +- [eslint-plugin-ava](https://github.com/avajs/eslint-plugin-ava) + - You need to install `eslint-plugin-ava` and `ava` to use this plugin. +- [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) + - You need to install `eslint-plugin-jest` and `jest` to use this plugin. +- [eslint-plugin-jest-async](https://www.npmjs.com/package/eslint-plugin-jest-async) + - You need to install `eslint-plugin-jest-async` and `jest` to use this plugin. +- [eslint-plugin-cypress](https://github.com/cypress-io/eslint-plugin-cypress) + - You need to install `eslint-plugin-cypress` and `cypress` to use this plugin. ### List of used plugins -- eslint-plugin-security -- @rushstack/eslint-plugin-security -- @typescript-eslint/eslint-plugin -- eslint-plugin-antfu -- eslint-plugin-compat -- eslint-plugin-es-x -- eslint-plugin-eslint-comments -- eslint-plugin-html -- eslint-plugin-i -- eslint-plugin-jsonc -- eslint-plugin-markdown -- eslint-plugin-mdx -- eslint-plugin-no-loops -- eslint-plugin-no-only-tests -- eslint-plugin-no-secrets -- eslint-plugin-no-use-extend-native -- eslint-plugin-promise -- eslint-plugin-regexp -- eslint-plugin-simple-import-sort -- eslint-plugin-sonarjs -- eslint-plugin-toml -- eslint-plugin-typescript-sort-keys -- eslint-plugin-unicorn -- eslint-plugin-yml +- eslint-plugin-security +- @rushstack/eslint-plugin-security +- @typescript-eslint/eslint-plugin +- eslint-plugin-antfu +- eslint-plugin-compat +- eslint-plugin-es-x +- eslint-plugin-eslint-comments +- eslint-plugin-html +- eslint-plugin-i +- eslint-plugin-jsonc +- eslint-plugin-markdown +- eslint-plugin-mdx +- eslint-plugin-no-loops +- eslint-plugin-no-only-tests +- eslint-plugin-no-secrets +- eslint-plugin-no-use-extend-native +- eslint-plugin-promise +- eslint-plugin-regexp +- eslint-plugin-simple-import-sort +- eslint-plugin-sonarjs +- eslint-plugin-toml +- eslint-plugin-typescript-sort-keys +- eslint-plugin-unicorn +- eslint-plugin-yml ## Troubleshooting @@ -632,11 +632,11 @@ If you would like to help take a look at the [list of issues](https://github.com ## Credits -- [Daniel Bannert](https://github.com/prisis) -- [All Contributors](https://github.com/anolilab/javascript-style-guide/graphs/contributors) -- [eslint-config-airbnb](https://www.npmjs.com/package/eslint-config-airbnb) -- [eslint-config-alloy](https://github.com/AlloyTeam/eslint-config-alloy) -- [eslint-config-canonical](https://github.com/gajus/eslint-config-canonical) +- [Daniel Bannert](https://github.com/prisis) +- [All Contributors](https://github.com/anolilab/javascript-style-guide/graphs/contributors) +- [eslint-config-airbnb](https://www.npmjs.com/package/eslint-config-airbnb) +- [eslint-config-alloy](https://github.com/AlloyTeam/eslint-config-alloy) +- [eslint-config-canonical](https://github.com/gajus/eslint-config-canonical) ## License diff --git a/packages/eslint-config/__fixtures__/old-config/index.js b/packages/eslint-config/__fixtures__/old-config/index.js index c36e70fbb..6b2b3db0f 100644 --- a/packages/eslint-config/__fixtures__/old-config/index.js +++ b/packages/eslint-config/__fixtures__/old-config/index.js @@ -1,2 +1 @@ - console.log("hello world"); diff --git a/packages/eslint-config/__fixtures__/old-config/pnpm-lock.yaml b/packages/eslint-config/__fixtures__/old-config/pnpm-lock.yaml index 54fe3d890..b17356a02 100644 --- a/packages/eslint-config/__fixtures__/old-config/pnpm-lock.yaml +++ b/packages/eslint-config/__fixtures__/old-config/pnpm-lock.yaml @@ -1,813 +1,812 @@ -lockfileVersion: '6.0' +lockfileVersion: "6.0" settings: - autoInstallPeers: true - excludeLinksFromLockfile: false + autoInstallPeers: true + excludeLinksFromLockfile: false devDependencies: - '@anolilab/eslint-config': - specifier: file:../../dist - version: file:../../dist - eslint: - specifier: latest - version: 8.50.0 - eslint-plugin-import: - specifier: npm:eslint-plugin-i@2.28.1 - version: /eslint-plugin-i@2.28.1(eslint@8.50.0) + "@anolilab/eslint-config": + specifier: file:../../dist + version: file:../../dist + eslint: + specifier: latest + version: 8.50.0 + eslint-plugin-import: + specifier: npm:eslint-plugin-i@2.28.1 + version: /eslint-plugin-i@2.28.1(eslint@8.50.0) packages: - - /@aashutoshrathi/word-wrap@1.2.6: - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - dev: true - - /@eslint-community/eslint-utils@4.4.0(eslint@8.50.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.50.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@eslint-community/regexpp@4.8.2: - resolution: {integrity: sha512-0MGxAVt1m/ZK+LTJp/j0qF7Hz97D9O/FH9Ms3ltnyIdDD57cbb1ACIQTkbHvNXtWDv5TPq7w5Kq56+cNukbo7g==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true - - /@eslint/eslintrc@2.1.2: - resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.6.1 - globals: 13.22.0 - ignore: 5.2.4 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@eslint/js@8.50.0: - resolution: {integrity: sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /@humanwhocodes/config-array@0.11.11: - resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} - engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@humanwhocodes/module-importer@1.0.1: - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - dev: true - - /@humanwhocodes/object-schema@1.2.1: - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} - dev: true - - /@nodelib/fs.scandir@2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - dev: true - - /@nodelib/fs.stat@2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - dev: true - - /@nodelib/fs.walk@1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 - dev: true - - /acorn-jsx@5.3.2(acorn@8.10.0): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 8.10.0 - dev: true - - /acorn@8.10.0: - resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - - /ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - dev: true - - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - dev: true - - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - dev: true - - /argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true - - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: true - - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - dev: true - - /callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - dev: true - - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true - - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - dev: true - - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: true - - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: true - - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: true - - /debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.3 - dev: true - - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - dev: true - - /deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true - - /doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - dependencies: - esutils: 2.0.3 - dev: true - - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dependencies: - esutils: 2.0.3 - dev: true - - /escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - dev: true - - /eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - dependencies: - debug: 3.2.7 - is-core-module: 2.13.0 - resolve: 1.22.6 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-module-utils@2.8.0(eslint-import-resolver-node@0.3.9)(eslint@8.50.0): - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - dependencies: - debug: 3.2.7 - eslint: 8.50.0 - eslint-import-resolver-node: 0.3.9 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-plugin-i@2.28.1(eslint@8.50.0): - resolution: {integrity: sha512-a4oVt0j3ixNhGhvV4XF6NS7OWRFK2rrJ0Q5C4S2dSRb8FxZi31J0uUd5WJLL58wnVJ/OiQ1BxiXnFA4dWQO1Cg==} - engines: {node: '>=12'} - peerDependencies: - eslint: ^7.2.0 || ^8 - dependencies: - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 8.50.0 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(eslint-import-resolver-node@0.3.9)(eslint@8.50.0) - get-tsconfig: 4.7.2 - is-glob: 4.0.3 - minimatch: 3.1.2 - resolve: 1.22.6 - semver: 7.5.4 - transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - 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} - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - dev: true - - /eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /eslint@8.50.0: - resolution: {integrity: sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) - '@eslint-community/regexpp': 4.8.2 - '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.50.0 - '@humanwhocodes/config-array': 0.11.11 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - 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 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.22.0 - graphemer: 1.4.0 - ignore: 5.2.4 - 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 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.3 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - dev: true - - /espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - acorn: 8.10.0 - acorn-jsx: 5.3.2(acorn@8.10.0) - eslint-visitor-keys: 3.4.3 - dev: true - - /esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} - dependencies: - estraverse: 5.3.0 - dev: true - - /esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - dependencies: - estraverse: 5.3.0 - dev: true - - /estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - dev: true - - /esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - dev: true - - /fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true - - /fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true - - /fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true - - /fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} - dependencies: - reusify: 1.0.4 - 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.1.0 - dev: true - - /find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - dev: true - - /flat-cache@3.1.0: - resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} - engines: {node: '>=12.0.0'} - dependencies: - flatted: 3.2.9 - keyv: 4.5.3 - rimraf: 3.0.2 - dev: true - - /flatted@3.2.9: - resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} - dev: true - - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: true - - /function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: true - - /get-tsconfig@4.7.2: - resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} - dependencies: - resolve-pkg-maps: 1.0.0 - dev: true - - /glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - dependencies: - is-glob: 4.0.3 - dev: true - - /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: true - - /globals@13.22.0: - resolution: {integrity: sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 - dev: true - - /graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - dev: true - - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - dev: true - - /has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} - dependencies: - function-bind: 1.1.1 - dev: true - - /ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} - engines: {node: '>= 4'} - dev: true - - /import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - dev: true - - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - dev: true - - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - dev: true - - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: true - - /is-core-module@2.13.0: - resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} - dependencies: - has: 1.0.3 - dev: true - - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - dev: true - - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - dev: true - - /is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: true - - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: true - - /js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - dependencies: - argparse: 2.0.1 - dev: true - - /json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: true - - /json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true - - /json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true - - /keyv@4.5.3: - resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} - dependencies: - json-buffer: 3.0.1 - dev: true - - /levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - dev: true - - /locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - dependencies: - p-locate: 5.0.0 - dev: true - - /lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: true - - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - dev: true - - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - dependencies: - brace-expansion: 1.1.11 - dev: true - - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true - - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: true - - /natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true - - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - dependencies: - wrappy: 1.0.2 - dev: true - - /optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} - dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - dev: true - - /p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - dependencies: - yocto-queue: 0.1.0 - dev: true - - /p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - dependencies: - p-limit: 3.1.0 - dev: true - - /parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - dependencies: - callsites: 3.1.0 - dev: true - - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: true - - /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==} - engines: {node: '>=8'} - dev: true - - /path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true - - /prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - dev: true - - /punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} - engines: {node: '>=6'} - dev: true - - /queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true - - /resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - dev: true - - /resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - dev: true - - /resolve@1.22.6: - resolution: {integrity: sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==} - hasBin: true - dependencies: - is-core-module: 2.13.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true - - /rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true - dependencies: - glob: 7.2.3 - dev: true - - /run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - dependencies: - queue-microtask: 1.2.3 - dev: true - - /semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 - dev: true - - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - dev: true - - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - dependencies: - ansi-regex: 5.0.1 - dev: true - - /strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - dev: true - - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - dev: true - - /supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - dev: true - - /text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: true - - /type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - dev: true - - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true - - /uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - dependencies: - punycode: 2.3.0 - dev: true - - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: true - - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: true - - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true - - /yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - dev: true - - file:../../dist: - resolution: {directory: ../../dist, type: directory} - name: dist - dev: true + /@aashutoshrathi/word-wrap@1.2.6: + resolution: { integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== } + engines: { node: ">=0.10.0" } + dev: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.50.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.50.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.8.2: + resolution: { integrity: sha512-0MGxAVt1m/ZK+LTJp/j0qF7Hz97D9O/FH9Ms3ltnyIdDD57cbb1ACIQTkbHvNXtWDv5TPq7w5Kq56+cNukbo7g== } + engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } + dev: true + + /@eslint/eslintrc@2.1.2: + resolution: { integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g== } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.22.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.50.0: + resolution: { integrity: sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ== } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dev: true + + /@humanwhocodes/config-array@0.11.11: + resolution: { integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA== } + engines: { node: ">=10.10.0" } + dependencies: + "@humanwhocodes/object-schema": 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: { integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== } + engines: { node: ">=12.22" } + dev: true + + /@humanwhocodes/object-schema@1.2.1: + resolution: { integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== } + dev: true + + /@nodelib/fs.scandir@2.1.5: + resolution: { integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== } + engines: { node: ">= 8" } + dependencies: + "@nodelib/fs.stat": 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: { integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== } + engines: { node: ">= 8" } + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: { integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== } + engines: { node: ">= 8" } + dependencies: + "@nodelib/fs.scandir": 2.1.5 + fastq: 1.15.0 + dev: true + + /acorn-jsx@5.3.2(acorn@8.10.0): + resolution: { integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== } + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.10.0 + dev: true + + /acorn@8.10.0: + resolution: { integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== } + engines: { node: ">=0.4.0" } + hasBin: true + dev: true + + /ajv@6.12.6: + resolution: { integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== } + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ansi-regex@5.0.1: + resolution: { integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== } + engines: { node: ">=8" } + dev: true + + /ansi-styles@4.3.0: + resolution: { integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== } + engines: { node: ">=8" } + dependencies: + color-convert: 2.0.1 + dev: true + + /argparse@2.0.1: + resolution: { integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== } + dev: true + + /balanced-match@1.0.2: + resolution: { integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== } + dev: true + + /brace-expansion@1.1.11: + resolution: { integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== } + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /callsites@3.1.0: + resolution: { integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== } + engines: { node: ">=6" } + dev: true + + /chalk@4.1.2: + resolution: { integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== } + engines: { node: ">=10" } + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /color-convert@2.0.1: + resolution: { integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== } + engines: { node: ">=7.0.0" } + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.4: + resolution: { integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== } + dev: true + + /concat-map@0.0.1: + resolution: { integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== } + dev: true + + /cross-spawn@7.0.3: + resolution: { integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== } + engines: { node: ">= 8" } + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /debug@3.2.7: + resolution: { integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== } + peerDependencies: + supports-color: "*" + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: true + + /debug@4.3.4: + resolution: { integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== } + engines: { node: ">=6.0" } + peerDependencies: + supports-color: "*" + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /deep-is@0.1.4: + resolution: { integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== } + dev: true + + /doctrine@2.1.0: + resolution: { integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== } + engines: { node: ">=0.10.0" } + dependencies: + esutils: 2.0.3 + dev: true + + /doctrine@3.0.0: + resolution: { integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== } + engines: { node: ">=6.0.0" } + dependencies: + esutils: 2.0.3 + dev: true + + /escape-string-regexp@4.0.0: + resolution: { integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== } + engines: { node: ">=10" } + dev: true + + /eslint-import-resolver-node@0.3.9: + resolution: { integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== } + dependencies: + debug: 3.2.7 + is-core-module: 2.13.0 + resolve: 1.22.6 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-module-utils@2.8.0(eslint-import-resolver-node@0.3.9)(eslint@8.50.0): + resolution: { integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== } + engines: { node: ">=4" } + peerDependencies: + "@typescript-eslint/parser": "*" + eslint: "*" + eslint-import-resolver-node: "*" + eslint-import-resolver-typescript: "*" + eslint-import-resolver-webpack: "*" + peerDependenciesMeta: + "@typescript-eslint/parser": + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + debug: 3.2.7 + eslint: 8.50.0 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-i@2.28.1(eslint@8.50.0): + resolution: { integrity: sha512-a4oVt0j3ixNhGhvV4XF6NS7OWRFK2rrJ0Q5C4S2dSRb8FxZi31J0uUd5WJLL58wnVJ/OiQ1BxiXnFA4dWQO1Cg== } + engines: { node: ">=12" } + peerDependencies: + eslint: ^7.2.0 || ^8 + dependencies: + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.50.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(eslint-import-resolver-node@0.3.9)(eslint@8.50.0) + get-tsconfig: 4.7.2 + is-glob: 4.0.3 + minimatch: 3.1.2 + resolve: 1.22.6 + semver: 7.5.4 + transitivePeerDependencies: + - "@typescript-eslint/parser" + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + 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 } + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-visitor-keys@3.4.3: + resolution: { integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dev: true + + /eslint@8.50.0: + resolution: { integrity: sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg== } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + hasBin: true + dependencies: + "@eslint-community/eslint-utils": 4.4.0(eslint@8.50.0) + "@eslint-community/regexpp": 4.8.2 + "@eslint/eslintrc": 2.1.2 + "@eslint/js": 8.50.0 + "@humanwhocodes/config-array": 0.11.11 + "@humanwhocodes/module-importer": 1.0.1 + "@nodelib/fs.walk": 1.2.8 + 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 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.22.0 + graphemer: 1.4.0 + ignore: 5.2.4 + 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 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree@9.6.1: + resolution: { integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + acorn: 8.10.0 + acorn-jsx: 5.3.2(acorn@8.10.0) + eslint-visitor-keys: 3.4.3 + dev: true + + /esquery@1.5.0: + resolution: { integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== } + engines: { node: ">=0.10" } + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: { integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== } + engines: { node: ">=4.0" } + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@5.3.0: + resolution: { integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== } + engines: { node: ">=4.0" } + dev: true + + /esutils@2.0.3: + resolution: { integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== } + engines: { node: ">=0.10.0" } + dev: true + + /fast-deep-equal@3.1.3: + resolution: { integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== } + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: { integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== } + dev: true + + /fast-levenshtein@2.0.6: + resolution: { integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== } + dev: true + + /fastq@1.15.0: + resolution: { integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== } + dependencies: + reusify: 1.0.4 + 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.1.0 + dev: true + + /find-up@5.0.0: + resolution: { integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== } + engines: { node: ">=10" } + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache@3.1.0: + resolution: { integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew== } + engines: { node: ">=12.0.0" } + dependencies: + flatted: 3.2.9 + keyv: 4.5.3 + rimraf: 3.0.2 + dev: true + + /flatted@3.2.9: + resolution: { integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== } + dev: true + + /fs.realpath@1.0.0: + resolution: { integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== } + dev: true + + /function-bind@1.1.1: + resolution: { integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== } + dev: true + + /get-tsconfig@4.7.2: + resolution: { integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A== } + dependencies: + resolve-pkg-maps: 1.0.0 + dev: true + + /glob-parent@6.0.2: + resolution: { integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== } + engines: { node: ">=10.13.0" } + dependencies: + is-glob: 4.0.3 + dev: true + + /glob@7.2.3: + resolution: { integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== } + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /globals@13.22.0: + resolution: { integrity: sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw== } + engines: { node: ">=8" } + dependencies: + type-fest: 0.20.2 + dev: true + + /graphemer@1.4.0: + resolution: { integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== } + dev: true + + /has-flag@4.0.0: + resolution: { integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== } + engines: { node: ">=8" } + dev: true + + /has@1.0.3: + resolution: { integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== } + engines: { node: ">= 0.4.0" } + dependencies: + function-bind: 1.1.1 + dev: true + + /ignore@5.2.4: + resolution: { integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== } + engines: { node: ">= 4" } + dev: true + + /import-fresh@3.3.0: + resolution: { integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== } + engines: { node: ">=6" } + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /imurmurhash@0.1.4: + resolution: { integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== } + engines: { node: ">=0.8.19" } + dev: true + + /inflight@1.0.6: + resolution: { integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== } + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: { integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== } + dev: true + + /is-core-module@2.13.0: + resolution: { integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== } + dependencies: + has: 1.0.3 + dev: true + + /is-extglob@2.1.1: + resolution: { integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== } + engines: { node: ">=0.10.0" } + dev: true + + /is-glob@4.0.3: + resolution: { integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== } + engines: { node: ">=0.10.0" } + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-path-inside@3.0.3: + resolution: { integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== } + engines: { node: ">=8" } + dev: true + + /isexe@2.0.0: + resolution: { integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== } + dev: true + + /js-yaml@4.1.0: + resolution: { integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== } + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /json-buffer@3.0.1: + resolution: { integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== } + dev: true + + /json-schema-traverse@0.4.1: + resolution: { integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== } + dev: true + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: { integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== } + dev: true + + /keyv@4.5.3: + resolution: { integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug== } + dependencies: + json-buffer: 3.0.1 + dev: true + + /levn@0.4.1: + resolution: { integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== } + engines: { node: ">= 0.8.0" } + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /locate-path@6.0.0: + resolution: { integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== } + engines: { node: ">=10" } + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash.merge@4.6.2: + resolution: { integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== } + dev: true + + /lru-cache@6.0.0: + resolution: { integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== } + engines: { node: ">=10" } + dependencies: + yallist: 4.0.0 + dev: true + + /minimatch@3.1.2: + resolution: { integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== } + dependencies: + brace-expansion: 1.1.11 + dev: true + + /ms@2.1.2: + resolution: { integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== } + dev: true + + /ms@2.1.3: + resolution: { integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== } + dev: true + + /natural-compare@1.4.0: + resolution: { integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== } + dev: true + + /once@1.4.0: + resolution: { integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== } + dependencies: + wrappy: 1.0.2 + dev: true + + /optionator@0.9.3: + resolution: { integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== } + engines: { node: ">= 0.8.0" } + dependencies: + "@aashutoshrathi/word-wrap": 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /p-limit@3.1.0: + resolution: { integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== } + engines: { node: ">=10" } + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate@5.0.0: + resolution: { integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== } + engines: { node: ">=10" } + dependencies: + p-limit: 3.1.0 + dev: true + + /parent-module@1.0.1: + resolution: { integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== } + engines: { node: ">=6" } + dependencies: + callsites: 3.1.0 + dev: true + + /path-exists@4.0.0: + resolution: { integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== } + engines: { node: ">=8" } + dev: true + + /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== } + engines: { node: ">=8" } + dev: true + + /path-parse@1.0.7: + resolution: { integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== } + dev: true + + /prelude-ls@1.2.1: + resolution: { integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== } + engines: { node: ">= 0.8.0" } + dev: true + + /punycode@2.3.0: + resolution: { integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== } + engines: { node: ">=6" } + dev: true + + /queue-microtask@1.2.3: + resolution: { integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== } + dev: true + + /resolve-from@4.0.0: + resolution: { integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== } + engines: { node: ">=4" } + dev: true + + /resolve-pkg-maps@1.0.0: + resolution: { integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== } + dev: true + + /resolve@1.22.6: + resolution: { integrity: sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw== } + hasBin: true + dependencies: + is-core-module: 2.13.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /reusify@1.0.4: + resolution: { integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== } + engines: { iojs: ">=1.0.0", node: ">=0.10.0" } + dev: true + + /rimraf@3.0.2: + resolution: { integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== } + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /run-parallel@1.2.0: + resolution: { integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== } + dependencies: + queue-microtask: 1.2.3 + dev: true + + /semver@7.5.4: + resolution: { integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== } + engines: { node: ">=10" } + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /shebang-command@2.0.0: + resolution: { integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== } + engines: { node: ">=8" } + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@3.0.0: + resolution: { integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== } + engines: { node: ">=8" } + dev: true + + /strip-ansi@6.0.1: + resolution: { integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== } + engines: { node: ">=8" } + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-json-comments@3.1.1: + resolution: { integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== } + engines: { node: ">=8" } + dev: true + + /supports-color@7.2.0: + resolution: { integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== } + engines: { node: ">=8" } + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: { integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== } + engines: { node: ">= 0.4" } + dev: true + + /text-table@0.2.0: + resolution: { integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== } + dev: true + + /type-check@0.4.0: + resolution: { integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== } + engines: { node: ">= 0.8.0" } + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-fest@0.20.2: + resolution: { integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== } + engines: { node: ">=10" } + dev: true + + /uri-js@4.4.1: + resolution: { integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== } + dependencies: + punycode: 2.3.0 + dev: true + + /which@2.0.2: + resolution: { integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== } + engines: { node: ">= 8" } + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /wrappy@1.0.2: + resolution: { integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== } + dev: true + + /yallist@4.0.0: + resolution: { integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== } + dev: true + + /yocto-queue@0.1.0: + resolution: { integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== } + engines: { node: ">=10" } + dev: true + + file:../../dist: + resolution: { directory: ../../dist, type: directory } + name: dist + dev: true diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 212f9f946..fe9de9198 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -27,25 +27,16 @@ "eslint-plugin-i", "eslint-plugin-jsonc", "eslint-plugin-markdown", - "eslint-plugin-mdx", "eslint-plugin-no-loops", "eslint-plugin-no-secrets", "eslint-plugin-no-use-extend-native", "eslint-plugin-promise", "eslint-plugin-regexp", - "eslint-plugin-simple-import-sort", "eslint-plugin-sonarjs", "eslint-plugin-toml", "eslint-plugin-unicorn", "eslint-plugin-yml", "eslint-plugin-array-func", - "eslint-plugin-ava", - "eslint-plugin-babel", - "eslint-plugin-cypress", - "eslint-plugin-jest", - "eslint-plugin-jest-async", - "eslint-plugin-jest-dom", - "eslint-plugin-jest-formatting", "eslint-plugin-playwright", "eslint-plugin-jsdoc", "eslint-plugin-jsx-a11y", @@ -54,14 +45,12 @@ "eslint-plugin-prefer-object-spread", "eslint-plugin-react", "eslint-plugin-react-hooks", - "eslint-plugin-react-redux", "eslint-plugin-storybook", "eslint-plugin-tailwindcss", "eslint-plugin-testing-library", "eslint-plugin-tsdoc", "eslint-plugin-etc", - "eslint-plugin-you-dont-need-lodash-underscore", - "eslint-plugin-you-dont-need-momentjs" + "eslint-plugin-you-dont-need-lodash-underscore" ], "homepage": "https://anolilab.com/nodejs/packages/eslint-config", "repository": { @@ -120,169 +109,136 @@ "LICENSE.md" ], "scripts": { - "build": "cross-env NODE_ENV=development tsup", - "build:prod": "cross-env NODE_ENV=production tsup", + "build": "packem build --development", + "build:prod": "packem build --production", "clean": "rimraf node_modules dist", - "postinstall": "node ./skip.js || node ./dist/postinstall.js", - "test": "vitest --config ./vitest.config.ts", - "test:coverage": "vitest --config ./vitest.config.ts --run --coverage" + "debug:rules": "@eslint/config-inspector", + "lint:attw": "attw --pack", + "lint:prettier": "prettier --config=.prettierrc.cjs --check .", + "lint:prettier:fix": "prettier --config=.prettierrc.cjs --write .", + "test": "vitest run", + "test:coverage": "vitest run --coverage", + "test:ui": "vitest --ui --coverage.enabled=true", + "test:watch": "vitest" }, "dependencies": { - "@anolilab/package-json-utils": "3.0.9", - "@babel/eslint-parser": "^7.22.15", - "@babel/plugin-syntax-import-assertions": "^7.22.5", - "@eslint/js": "^8.52.0", - "@html-eslint/eslint-plugin": "^0.20.0", - "@html-eslint/parser": "^0.20.0", - "@jsenv/eslint-import-resolver": ">=8.0.4", - "@rushstack/eslint-patch": "^1.5.1", - "@rushstack/eslint-plugin-security": "^0.7.1", - "@typescript-eslint/eslint-plugin": ">=6.9.1", - "@typescript-eslint/parser": "^6.9.1", + "@antfu/install-pkg": "^0.5.0", + "@babel/eslint-parser": "^7.25.9", + "@babel/plugin-syntax-import-assertions": "^7.26.0", + "@eslint-community/eslint-plugin-eslint-comments": "^4.4.1", + "@eslint/js": "^9.17.0", + "@eslint/markdown": "^6.2.1", + "@html-eslint/eslint-plugin": "^0.31.1", + "@html-eslint/parser": "^0.31.0", + "@jsenv/eslint-import-resolver": "^8.2.0", + "@stylistic/eslint-plugin": "^2.12.1", + "@typescript-eslint/eslint-plugin": "^8.18.1", + "@typescript-eslint/parser": "^8.18.1", + "@visulima/package": "^3.2.0", + "@visulima/tsconfig": "^1.1.2", + "@vitest/eslint-plugin": "^1.1.17", "confusing-browser-globals": "^1.0.11", - "eslint-define-config": "^1.24.1", + "eslint-config-flat-gitignore": "^0.3.0", + "eslint-flat-config-utils": "^0.4.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-import-resolver-typescript": "^3.6.1", - "eslint-plugin-antfu": "^1.0.1", - "eslint-plugin-compat": "^4.2.0", - "eslint-plugin-es-x": "^7.2.0", - "eslint-plugin-eslint-comments": "^3.2.0", - "eslint-plugin-html": "^7.1.0", - "eslint-plugin-i": "^2.29.0", - "eslint-plugin-jsonc": "^2.10.0", - "eslint-plugin-markdown": "^3.0.1", - "eslint-plugin-mdx": "^2.2.0", - "eslint-plugin-n": "^16.2.0", - "eslint-plugin-no-loops": "^0.3.0", - "eslint-plugin-no-only-tests": "^3.1.0", - "eslint-plugin-no-secrets": "^0.8.9", - "eslint-plugin-no-use-extend-native": "^0.5.0", - "eslint-plugin-perfectionist": "^2.2.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-regexp": "^2.1.1", - "eslint-plugin-security": "^1.7.1", - "eslint-plugin-simple-import-sort": "^10.0.0", - "eslint-plugin-sonarjs": "^0.22.0", - "eslint-plugin-toml": "^0.6.0", - "eslint-plugin-unicorn": "^49.0.0", - "eslint-plugin-yml": "^1.10.0", - "find-up": "5.0.0", - "globals": "^13.23.0", + "eslint-import-resolver-typescript": "^3.7.0", + "eslint-merge-processors": "^0.1.0", + "eslint-plugin-antfu": "^2.7.0", + "eslint-plugin-compat": "^6.0.2", + "eslint-plugin-es-x": "^8.4.1", + "eslint-plugin-html": "^8.1.2", + "eslint-plugin-import-x": "^4.5.1", + "eslint-plugin-jsonc": "^2.18.2", + "eslint-plugin-n": "^17.15.0", + "eslint-plugin-no-loops": "^0.4.0", + "eslint-plugin-no-only-tests": "^3.3.0", + "eslint-plugin-no-secrets": "^2.1.1", + "eslint-plugin-no-use-extend-native": "^0.7.2", + "eslint-plugin-perfectionist": "^4.3.0", + "eslint-plugin-promise": "^7.2.1", + "eslint-plugin-regexp": "^2.7.0", + "eslint-plugin-security": "^3.0.1", + "eslint-plugin-sonarjs": "^3.0.1", + "eslint-plugin-toml": "^0.12.0", + "eslint-plugin-unicorn": "^56.0.1", + "eslint-plugin-unused-imports": "^4.1.4", + "eslint-plugin-yml": "^1.16.0", + "globals": "^15.13.0", "jsonc-eslint-parser": "^2.4.0", - "read-pkg-up": "^7.0.1", - "semver": "^7.5.4", - "toml-eslint-parser": "^0.6.0", - "yaml-eslint-parser": "^1.2.2" + "parse-gitignore": "^2.0.0", + "semver": "^7.6.3", + "toml-eslint-parser": "^0.10.0", + "yaml-eslint-parser": "^1.2.3" }, "devDependencies": { - "@anolilab/semantic-release-preset": "8.0.3", - "@arthurgeron/eslint-plugin-react-usememo": "^2.2.1", - "@testing-library/dom": "^9.3.3", - "@total-typescript/ts-reset": "^0.5.1", + "@types/eslint-plugin-tailwindcss": "^3.17.0", + "@anolilab/prettier-config": "^5.0.14", + "@anolilab/semantic-release-preset": "9.0.3", + "@eslint-react/eslint-plugin": "^1.20.0", + "@eslint/config-inspector": "^0.6.0", + "@stylistic/eslint-plugin-migrate": "^2.12.1", + "@testing-library/dom": "^10.4.0", + "@total-typescript/ts-reset": "^0.6.1", "@types/confusing-browser-globals": "^1.0.3", - "@types/eslint": "^8.56.0", - "@types/semver": "^7.5.6", - "eslint": "^8.56.0", - "eslint-find-rules": "^4.1.0", - "eslint-plugin-babel": "^5.3.1", - "eslint-plugin-cypress": "^2.15.1", - "eslint-plugin-deprecation": "^2.0.0", - "eslint-plugin-editorconfig": "^4.0.3", + "@types/eslint": "^9.6.1", + "@types/semver": "^7.5.8", + "eslint": "^9.17.0", + "eslint-find-rules": "^4.2.0", "eslint-plugin-etc": "^2.0.3", - "eslint-plugin-jest": "^27.6.0", - "eslint-plugin-jest-async": "^1.0.3", - "eslint-plugin-jest-dom": "^5.1.0", - "eslint-plugin-jest-formatting": "^3.1.0", - "eslint-plugin-jsdoc": "^46.9.1", - "eslint-plugin-jsx-a11y": "^6.8.0", - "eslint-plugin-no-unsanitized": "^4.0.2", + "eslint-plugin-format": "^0.1.3", + "eslint-plugin-jsdoc": "^50.6.1", + "eslint-plugin-jsx-a11y": "^6.10.2", + "eslint-plugin-no-unsanitized": "^4.1.2", "eslint-plugin-prefer-object-spread": "^1.2.1", - "eslint-plugin-react": "^7.33.2", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-redux": "^4.1.0", - "eslint-plugin-ssr-friendly": "^1.3.0", - "eslint-plugin-storybook": "^0.6.15", - "eslint-plugin-tailwindcss": "^3.13.0", - "eslint-plugin-testing-library": "^6.2.0", + "eslint-plugin-react": "^7.37.2", + "eslint-plugin-react-refresh": "^0.4.16", + "eslint-plugin-react-hooks": "^5.1.0", + "eslint-plugin-storybook": "^0.11.1", + "eslint-plugin-tailwindcss": "^3.17.5", + "eslint-plugin-testing-library": "^7.1.1", "eslint-plugin-validate-jsx-nesting": "^0.1.1", - "eslint-plugin-vitest": "^0.3.18", - "eslint-plugin-you-dont-need-lodash-underscore": "^6.13.0", - "eslint-plugin-you-dont-need-momentjs": "^1.6.0", + "eslint-plugin-vitest": "^0.5.4", + "eslint-plugin-you-dont-need-lodash-underscore": "^6.14.0", "eslint-plugin-zod": "^1.4.0", - "jest": "^29.7.0", - "react": "^18.2.0", - "rimraf": "^5.0.5", - "semantic-release": "^22.0.12", - "tsup": "^8.0.1", - "type-fest": "^4.8.3", - "typescript": "^5.3.3", - "vitest": "^1.1.0" + "eslint-typegen": "^0.3.2", + "prettier": "^3.4.2", + "react": "^19.0.0", + "rimraf": "^6.0.1", + "semantic-release": "^24.2.0", + "type-fest": "^4.30.2", + "typescript": "^5.7.2", + "vitest": "^2.1.8" }, "peerDependencies": { - "@arthurgeron/eslint-plugin-react-usememo": "^2.0.1", "@babel/core": "^7.22.20", "@tanstack/eslint-plugin-query": "^4.34.1 || ^5.0.0", - "eslint": "^8.15.0", + "@visulima/packem": "^1.10.0", + "esbuild": "^0.24.0", + "eslint": "^9.10.0", "eslint-plugin-array-func": "^4.0.0", - "eslint-plugin-ava": "^14.0.0", - "eslint-plugin-babel": "^5.3.1", - "eslint-plugin-cypress": "^2.15.1", - "eslint-plugin-editorconfig": "^4.0.3", - "eslint-plugin-jest": "^27.4.0", - "eslint-plugin-jest-async": "^1.0.3", - "eslint-plugin-jest-dom": "^5.1.0", - "eslint-plugin-jest-formatting": "^3.1.0", + "eslint-plugin-format": ">=0.1.0", "eslint-plugin-jsdoc": "^46.8.2", "eslint-plugin-jsx-a11y": "^6.7.1", "eslint-plugin-no-unsanitized": "^4.0.2", "eslint-plugin-playwright": "^0.16.0 || ^0.18.0", "eslint-plugin-prefer-object-spread": "^1.2.1", "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-refresh": "^0.4.16", "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-redux": "^4.0.0", - "eslint-plugin-ssr-friendly": "^1.2.0", "eslint-plugin-storybook": "^0.6.14", "eslint-plugin-tailwindcss": "^3.13.0", "eslint-plugin-testing-library": "^6.0.1", "eslint-plugin-tsdoc": "^0.2.17", "eslint-plugin-validate-jsx-nesting": "^0.1.1", - "eslint-plugin-you-dont-need-lodash-underscore": "^6.13.0", - "eslint-plugin-you-dont-need-momentjs": "^1.6.0" + "eslint-plugin-you-dont-need-lodash-underscore": "^6.13.0" }, "peerDependenciesMeta": { - "@arthurgeron/eslint-plugin-react-usememo": { - "optional": true - }, "@tanstack/eslint-plugin-query": { "optional": true }, "eslint-plugin-array-func": { "optional": true }, - "eslint-plugin-ava": { - "optional": true - }, - "eslint-plugin-babel": { - "optional": true - }, - "eslint-plugin-cypress": { - "optional": true - }, - "eslint-plugin-editorconfig": { - "optional": true - }, - "eslint-plugin-jest": { - "optional": true - }, - "eslint-plugin-jest-async": { - "optional": true - }, - "eslint-plugin-jest-dom": { - "optional": true - }, - "eslint-plugin-jest-formatting": { - "optional": true - }, "eslint-plugin-jsdoc": { "optional": true }, @@ -307,12 +263,6 @@ "eslint-plugin-react-hooks": { "optional": true }, - "eslint-plugin-react-redux": { - "optional": true - }, - "eslint-plugin-ssr-friendly": { - "optional": true - }, "eslint-plugin-storybook": { "optional": true }, @@ -331,85 +281,15 @@ "eslint-plugin-you-dont-need-lodash-underscore": { "optional": true }, - "eslint-plugin-you-dont-need-momentjs": { - "optional": true - }, "typescript": { "optional": true } }, "engines": { - "node": ">=18.* <=21.*" + "node": ">=18.* <=23.*" }, "publishConfig": { "access": "public", "provenance": true - }, - "sources": [ - "src/config/best-practices.ts", - "src/config/errors.ts", - "src/config/es6.ts", - "src/config/plugins/antfu.ts", - "src/config/plugins/array-func.ts", - "src/config/plugins/ava.ts", - "src/config/plugins/babel.ts", - "src/config/plugins/compat.ts", - "src/config/plugins/cypress.ts", - "src/config/plugins/deprecation.ts", - "src/config/plugins/es.ts", - "src/config/plugins/eslint-comments.ts", - "src/config/plugins/etc.ts", - "src/config/plugins/editorconfig.ts", - "src/config/plugins/html.ts", - "src/config/plugins/import.ts", - "src/config/plugins/jest-async.ts", - "src/config/plugins/jest-dom.ts", - "src/config/plugins/jest-formatting.ts", - "src/config/plugins/jest.ts", - "src/config/plugins/jsdoc.ts", - "src/config/plugins/jsonc.ts", - "src/config/plugins/jsx-a11y.ts", - "src/config/plugins/markdown.ts", - "src/config/plugins/mdx.ts", - "src/config/plugins/no-extend-native.ts", - "src/config/plugins/no-loops.ts", - "src/config/plugins/no-only-tests.ts", - "src/config/plugins/no-secrets.ts", - "src/config/plugins/no-unsanitized.ts", - "src/config/plugins/node.ts", - "src/config/plugins/perfectionist.ts", - "src/config/plugins/playwright.ts", - "src/config/plugins/promise.ts", - "src/config/plugins/regexp.ts", - "src/config/plugins/react.ts", - "src/config/plugins/react-hooks.ts", - "src/config/plugins/react-redux.ts", - "src/config/plugins/react-usememo.ts", - "src/config/plugins/security.ts", - "src/config/plugins/simple-import-sort.ts", - "src/config/plugins/sonarjs.ts", - "src/config/plugins/ssr-friendly.ts", - "src/config/plugins/storybook.ts", - "src/config/plugins/tailwindcss.ts", - "src/config/plugins/tanstack-query.ts", - "src/config/plugins/testing-library-dom.ts", - "src/config/plugins/testing-library-react.ts", - "src/config/plugins/toml.ts", - "src/config/plugins/tsdoc.ts", - "src/config/plugins/typescript.ts", - "src/config/plugins/unicorn.ts", - "src/config/plugins/validate-jsx-nesting.ts", - "src/config/plugins/vitest.ts", - "src/config/plugins/yml.ts", - "src/config/plugins/you-dont-need-lodash-underscore.ts", - "src/config/plugins/you-dont-need-momentjs.ts", - "src/config/plugins/zod.ts", - "src/config/style.ts", - "src/config/variables.ts", - "src/globals.ts", - "src/index.ts", - "src/postinstall.ts", - "src/typescript-type-checking.ts", - "src/define-config.ts" - ] + } } diff --git a/packages/eslint-config/scripts/global-vitest.ts b/packages/eslint-config/scripts/global-vitest.ts new file mode 100644 index 000000000..3b0ce5e30 --- /dev/null +++ b/packages/eslint-config/scripts/global-vitest.ts @@ -0,0 +1,67 @@ +import { createRequire } from "node:module"; +import { writeFileSync } from "node:fs"; +import { fileURLToPath } from "node:url"; +import { dirname, join } from "node:path"; +import ts from "typescript"; + +const __dirname = dirname(fileURLToPath(import.meta.url)); + +const e = (msg, fail = true) => { + // eslint-disable-next-line no-console + console.log(msg); + process.exit(fail ? 1 : 0); +}; + +function extract(file) { + const program = ts.createProgram([file], {}); + const sourceFile = program.getSourceFile(file); + const globals = []; + + ts.forEachChild(sourceFile, (node) => { + if (ts.isModuleDeclaration(node)) { + ts.forEachChild(node.body, (node) => { + if (ts.isVariableStatement(node)) { + ts.forEachChild(node, (node) => { + if (ts.isVariableDeclarationList(node)) { + for (const declaration of node.declarations) { + const name = ts.getNameOfDeclaration(declaration); + if (name) { + globals.push(name.escapedText); + } + } + } + }); + } + }); + } + }); + + return globals; +} + +const require = createRequire(import.meta.url); +const pkgPath = require.resolve("vitest/package.json"); +const { + default: { version: vitestVersion }, +} = await import(pkgPath, { + with: { type: "json" }, +}); + +if (!vitestVersion) { + e("Vitest version cannot be read."); +} + +writeFileSync(join(__dirname, "..", "VERSION"), vitestVersion); + +const globalsPath = require.resolve("vitest/globals.d.ts"); +const globalsArray = extract(globalsPath); +const globals = {}; +if (!globalsArray.length) e("No globals! Check extractor implementation."); + +globalsArray.forEach((globalName) => (globals[globalName] = true)); +const moduleContent = `export default /** @type {const} */ (${JSON.stringify(globals, undefined, 2)});`; + +writeFileSync(join(__dirname, "..", "index.mjs"), moduleContent); + +// eslint-disable-next-line no-console +console.log("Finished generation with result:\n", moduleContent); diff --git a/packages/eslint-config/scripts/typegen.ts b/packages/eslint-config/scripts/typegen.ts new file mode 100644 index 000000000..86413b5fd --- /dev/null +++ b/packages/eslint-config/scripts/typegen.ts @@ -0,0 +1,79 @@ +import fs from "node:fs/promises"; + +import { flatConfigsToRulesDTS } from "eslint-typegen/core"; +import { builtinRules } from "eslint/use-at-your-own-risk"; + +import { + astro, + combine, + comments, + formatters, + imports, + javascript, + jsdoc, + jsonc, + jsx, + markdown, + node, + perfectionist, + react, + regexp, + solid, + sortPackageJson, + stylistic, + svelte, + test, + toml, + typescript, + unicorn, + unocss, + vue, + yaml, +} from "../src"; + +const configs = await combine( + { + plugins: { + "": { + rules: Object.fromEntries(builtinRules.entries()), + }, + }, + }, + astro(), + comments(), + formatters(), + imports(), + javascript(), + jsx(), + jsdoc(), + jsonc(), + markdown(), + node(), + perfectionist(), + react(), + solid(), + sortPackageJson(), + stylistic(), + svelte(), + test(), + toml(), + regexp(), + typescript(), + unicorn(), + unocss(), + vue(), + yaml(), +); + +const configNames = configs.map((i) => i.name).filter(Boolean) as string[]; + +let dts = await flatConfigsToRulesDTS(configs, { + includeAugmentation: false, +}); + +dts += ` +// Names of all the configs +export type ConfigNames = ${configNames.map((i) => `'${i}'`).join(" | ")} +`; + +await fs.writeFile("src/typegen.d.ts", dts); diff --git a/packages/eslint-config/skip.js b/packages/eslint-config/skip.js deleted file mode 100644 index d64d9b3c9..000000000 --- a/packages/eslint-config/skip.js +++ /dev/null @@ -1,7 +0,0 @@ -if (process.env.SKIP_BUILD) { - // eslint-disable-next-line unicorn/no-process-exit - process.exit(0); -} else { - // eslint-disable-next-line unicorn/no-process-exit - process.exit(1); -} diff --git a/packages/eslint-config/src/config.ts b/packages/eslint-config/src/config.ts index 0687d2cf4..c1546c7ce 100644 --- a/packages/eslint-config/src/config.ts +++ b/packages/eslint-config/src/config.ts @@ -400,14 +400,6 @@ const pluginConfig: PackageRules = [ dependencies: ["@arthurgeron/eslint-plugin-react-usememo"], oneOfDependency: ["react", "react-dom", "preact", "preact/compat"], }, - { - configName: "you-dont-need-momentjs", - dependencies: ["moment", "eslint-plugin-you-dont-need-momentjs"], - }, - { - configName: "you-dont-need-momentjs", - dependencies: ["moment-timezone", "eslint-plugin-you-dont-need-momentjs"], - }, { configName: "tailwindcss", dependencies: ["eslint-plugin-tailwindcss"], diff --git a/packages/eslint-config/src/config/plugins/antfu.ts b/packages/eslint-config/src/config/plugins/antfu.ts index 486f15194..f361b4f65 100644 --- a/packages/eslint-config/src/config/plugins/antfu.ts +++ b/packages/eslint-config/src/config/plugins/antfu.ts @@ -1,19 +1,36 @@ -import { hasTypescript, packageIsTypeModule } from "@anolilab/package-json-utils"; -import type { Linter } from "eslint"; - import { createConfig } from "../../utils/create-config"; +import type { OptionsFiles, OptionsOverrides, OptionsPackageJson } from "../../types"; +import interopDefault from "../../utils/interop-default"; +import { hasPackageJsonAnyDependency } from "@visulima/package"; -const config: Linter.Config = createConfig("all", { - plugins: ["antfu"], - rules: { - "antfu/generic-spacing": "error", - "antfu/if-newline": "error", - "antfu/import-dedupe": "error", - "antfu/no-cjs-exports": packageIsTypeModule ? "error" : "off", - "antfu/no-ts-export-equal": hasTypescript ? "error" : "off", - "antfu/prefer-inline-type-import": "off", - "antfu/top-level-function": "off", - }, -}); +export default createConfig("all", async (config, oFiles) => { + const { files = oFiles, overrides, packageJson } = config; + + const antfuPlugin = await interopDefault(import("eslint-plugin-antfu")); + + return [ + { + files, + name: "anolilab/antfu", + plugins: { + antfu: antfuPlugin, + }, + rules: { + "antfu/import-dedupe": "error", + "ntfu/no-import-dist": "error", + "antfu/no-import-node-modules-by-path": "error", -export default config; + "antfu/generic-spacing": "error", + + "antfu/no-cjs-exports": packageJson.type === "module" ? "error" : "off", + "antfu/no-ts-export-equal": hasPackageJsonAnyDependency(packageJson, ["typescript"]) ? "error" : "off", + + "antfu/if-newline": "error", + "antfu/prefer-inline-type-import": "off", + "antfu/top-level-function": "off", + + ...overrides, + }, + }, + ]; +}); diff --git a/packages/eslint-config/src/config/plugins/array-func.ts b/packages/eslint-config/src/config/plugins/array-func.ts index 0f86c31f4..3ce53dd2f 100644 --- a/packages/eslint-config/src/config/plugins/array-func.ts +++ b/packages/eslint-config/src/config/plugins/array-func.ts @@ -1,19 +1,23 @@ -// eslint-disable-next-line unicorn/prevent-abbreviations -import type { Linter } from "eslint"; - import { createConfig } from "../../utils/create-config"; +import interopDefault from "../../utils/interop-default"; +import type { OptionsFiles, OptionsOverrides } from "../../types"; -const config: Linter.Config = createConfig("all", { - extends: ["plugin:array-func/recommended"], - plugins: ["array-func"], - rules: { - // Rule disabled due to clash with Unicorn - "array-func/prefer-array-from": "off", +export default createConfig("all", async (config, oFiles) => { + const { overrides, files = oFiles } = config; - // Rules not in recommended config - "array-func/prefer-flat": 0, - "array-func/prefer-flat-map": 0, - }, -}); + const arrayFuncPlugin = await interopDefault(import("eslint-plugin-array-func")); -export default config; + return [ + { + files, + name: "anolilab/array-func/rules", + parserOptions: { + ecmaVersion: 2018, + }, + rules: { + ...arrayFuncPlugin.rules, + ...overrides, + }, + }, + ]; +}); diff --git a/packages/eslint-config/src/config/plugins/ava.ts b/packages/eslint-config/src/config/plugins/ava.ts deleted file mode 100644 index c2357c775..000000000 --- a/packages/eslint-config/src/config/plugins/ava.ts +++ /dev/null @@ -1,31 +0,0 @@ -import type { Linter } from "eslint"; - -const config: Linter.Config = { - overrides: [ - { - env: { - es6: true, - }, - extends: "plugin:ava/recommended", - // Default ava test search patterns - files: [ - "test.js", - "src/test.js", - "source/test.js", - "**/test-*.js", - "**/*.spec.js", - "**/*.test.js", - "**/test/**/*.js", - "**/tests/**/*.js", - "**/__tests__/**/*.js", - ], - parserOptions: { - ecmaVersion: "latest", - sourceType: "module", - }, - plugins: ["ava"], - }, - ], -}; - -export default config; diff --git a/packages/eslint-config/src/config/plugins/babel.ts b/packages/eslint-config/src/config/plugins/babel.ts deleted file mode 100644 index 0dabc8d74..000000000 --- a/packages/eslint-config/src/config/plugins/babel.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { hasDependency, hasDevDependency } from "@anolilab/package-json-utils"; -import type { Linter } from "eslint"; - -import { createConfig } from "../../utils/create-config"; -import bestPracticesConfig from "../best-practices"; -import errorsConfig from "../errors"; -import styleConfig from "../style"; - -// @ts-expect-error TODO: find the correct type -const bestPracticesRules = bestPracticesConfig.overrides[0].rules as Linter.RulesRecord; -// @ts-expect-error TODO: find the correct type -const errorsRules = errorsConfig.overrides[0].rules as Linter.RulesRecord; -// @ts-expect-error TODO: find the correct type -const styleRules = styleConfig.overrides[0].rules as Linter.RulesRecord; - -if (global.anolilabEslintConfigBabelPrettierRules === undefined && (hasDependency("prettier") || hasDevDependency("prettier"))) { - global.anolilabEslintConfigBabelPrettierRules = { - "@babel/object-curly-spacing": "off", - - "@babel/semi": "off", - "babel/quotes": 0, - }; -} - -const config: Linter.Config = createConfig("all", { - plugins: ["babel"], - rules: { - // Deep clone to avoid object mutation weirdness - "babel/camelcase": [...(styleRules["camelcase"] as unknown[])] as Linter.RuleEntry, - "babel/new-cap": styleRules["new-cap"], - - "babel/no-invalid-this": bestPracticesRules["no-invalid-this"], - "babel/no-unused-expressions": bestPracticesRules["no-unused-expressions"], - - "babel/object-curly-spacing": styleRules["object-curly-spacing"], - "babel/quotes": styleRules["quotes"], - - "babel/semi": styleRules["semi"], - "babel/valid-typeof": errorsRules["valid-typeof"], - - camelcase: "off", - "new-cap": "off", - - "no-invalid-this": "off", - "no-unused-expressions": "off", - - "object-curly-spacing": "off", - quotes: "off", - - semi: "off", - "valid-typeof": "off", - - ...global.anolilabEslintConfigBabelPrettierRules, - }, -}); - -export default config; diff --git a/packages/eslint-config/src/config/plugins/comments.ts b/packages/eslint-config/src/config/plugins/comments.ts new file mode 100644 index 000000000..b1f074544 --- /dev/null +++ b/packages/eslint-config/src/config/plugins/comments.ts @@ -0,0 +1,36 @@ +import { createConfig } from "../../utils/create-config"; +import type { OptionsFiles, OptionsOverrides } from "../../types"; +import interopDefault from "../../utils/interop-default"; + +export default createConfig("all", async (config, oFiles) => { + const { files = oFiles, overrides } = config; + + const pluginComments = await interopDefault(import("eslint-plugin-eslint-comments")); + + return [ + { + files, + name: "anolilab/eslint-comments/rules", + plugins: { + "eslint-comments": pluginComments, + }, + rules: { + // Rules are not in recommended config + "eslint-comments/no-restricted-disable": "off", + + // Disabled as it's already covered by the `unicorn/no-abusive-eslint-disable` rule. + "eslint-comments/no-unlimited-disable": "off", + "eslint-comments/no-unused-disable": "error", + "eslint-comments/no-unused-enable": "error", + + "eslint-comments/no-aggregating-enable": "error", + "eslint-comments/no-duplicate-disable": "error", + + "eslint-comments/no-use": "off", + "eslint-comments/require-description": "off", + + ...overrides, + }, + }, + ]; +}); diff --git a/packages/eslint-config/src/config/plugins/compat.ts b/packages/eslint-config/src/config/plugins/compat.ts index b563d0d69..6457d7b95 100644 --- a/packages/eslint-config/src/config/plugins/compat.ts +++ b/packages/eslint-config/src/config/plugins/compat.ts @@ -1,7 +1,15 @@ -import type { Linter } from "eslint"; +import { createConfig } from "../../utils/create-config"; +import type { OptionsFiles } from "../../types"; +import interopDefault from "../../utils/interop-default"; -const config: Linter.Config = { - extends: ["plugin:compat/recommended"], -}; +export default createConfig("all", async (config, oFiles) => { + const { files = oFiles } = config; -export default config; + const compatPlugin = await interopDefault(import("eslint-plugin-compat")); + + const fConfig = compatPlugin.configs["flat/recommended"]; + + fConfig.files = files; + + return [fConfig]; +}); diff --git a/packages/eslint-config/src/config/plugins/cypress.ts b/packages/eslint-config/src/config/plugins/cypress.ts deleted file mode 100644 index 335e93703..000000000 --- a/packages/eslint-config/src/config/plugins/cypress.ts +++ /dev/null @@ -1,17 +0,0 @@ -import type { Linter } from "eslint"; - -const config: Linter.Config = { - env: { - "cypress/globals": true, - }, - extends: ["plugin:cypress/recommended"], - plugins: ["cypress"], - rules: { - // Rules not in recommend config - "cypress/assertion-before-screenshot": 0, - "cypress/no-force": 0, - "cypress/require-data-selectors": 0, - }, -}; - -export default config; diff --git a/packages/eslint-config/src/config/plugins/deprecation.ts b/packages/eslint-config/src/config/plugins/deprecation.ts deleted file mode 100644 index 233c76c2d..000000000 --- a/packages/eslint-config/src/config/plugins/deprecation.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { Linter } from "eslint"; - -import { createConfig } from "../../utils/create-config"; - -// @see https://github.com/francoismassart/eslint-plugin-tailwindcss, -const config: Linter.Config = createConfig("typescript", { - plugins: ["deprecation"], - extends: ["plugin:deprecation/recommended"], -}); - -export default config; diff --git a/packages/eslint-config/src/config/plugins/editorconfig.ts b/packages/eslint-config/src/config/plugins/editorconfig.ts deleted file mode 100644 index a76065e4f..000000000 --- a/packages/eslint-config/src/config/plugins/editorconfig.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { Linter } from "eslint"; - -import { createConfig } from "../../utils/create-config"; - -const config: Linter.Config = createConfig("all", { - extends: ["plugin:editorconfig/all"], - plugins: ["editorconfig"], -}); - -export default config; diff --git a/packages/eslint-config/src/config/plugins/eslint-comments.ts b/packages/eslint-config/src/config/plugins/eslint-comments.ts deleted file mode 100644 index 71d4b7d46..000000000 --- a/packages/eslint-config/src/config/plugins/eslint-comments.ts +++ /dev/null @@ -1,22 +0,0 @@ -import type { Linter } from "eslint"; - -import { createConfig } from "../../utils/create-config"; - -const config: Linter.Config = createConfig("all", { - extends: ["plugin:eslint-comments/recommended"], - plugins: ["eslint-comments"], - rules: { - // Rules are not in recommended config - "eslint-comments/no-restricted-disable": "off", - - // Disabled as it's already covered by the `unicorn/no-abusive-eslint-disable` rule. - "eslint-comments/no-unlimited-disable": "off", - "eslint-comments/no-unused-disable": "error", - "eslint-comments/no-unused-enable": "error", - - "eslint-comments/no-use": "off", - "eslint-comments/require-description": "off", - }, -}); - -export default config; diff --git a/packages/eslint-config/src/config/plugins/import.ts b/packages/eslint-config/src/config/plugins/import.ts index 819df56c8..52c210437 100644 --- a/packages/eslint-config/src/config/plugins/import.ts +++ b/packages/eslint-config/src/config/plugins/import.ts @@ -58,19 +58,19 @@ const config: Linter.Config = createConfigs([ "ignorePackages", packageIsTypeModule ? { - cjs: "always", - js: "always", - jsx: "always", - mjs: "always", - json: "always", - } + cjs: "always", + js: "always", + jsx: "always", + mjs: "always", + json: "always", + } : { - cjs: "never", - js: "never", - jsx: "never", - mjs: "never", - json: "always", - }, + cjs: "never", + js: "never", + jsx: "never", + mjs: "never", + json: "always", + }, ], // disallow non-import statements appearing before import statements diff --git a/packages/eslint-config/src/config/plugins/jest-async.ts b/packages/eslint-config/src/config/plugins/jest-async.ts deleted file mode 100644 index 2bbb4e6f7..000000000 --- a/packages/eslint-config/src/config/plugins/jest-async.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { Linter } from "eslint"; - -const config: Linter.Config = { - plugins: ["jest-async"], - rules: { - "jest-async/expect-return": "error", - }, -}; - -export default config; diff --git a/packages/eslint-config/src/config/plugins/jest-dom.ts b/packages/eslint-config/src/config/plugins/jest-dom.ts deleted file mode 100644 index e6fcb91c0..000000000 --- a/packages/eslint-config/src/config/plugins/jest-dom.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { Linter } from "eslint"; - -const config: Linter.Config = { - extends: ["plugin:jest-dom/recommended"], -}; - -export default config; diff --git a/packages/eslint-config/src/config/plugins/jest-formatting.ts b/packages/eslint-config/src/config/plugins/jest-formatting.ts deleted file mode 100644 index a0e44d73c..000000000 --- a/packages/eslint-config/src/config/plugins/jest-formatting.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { Linter } from "eslint"; - -const config: Linter.Config = { - extends: ["plugin:jest-formatting/recommended"], -}; - -export default config; diff --git a/packages/eslint-config/src/config/plugins/jest.ts b/packages/eslint-config/src/config/plugins/jest.ts deleted file mode 100644 index 2ac47f2ba..000000000 --- a/packages/eslint-config/src/config/plugins/jest.ts +++ /dev/null @@ -1,67 +0,0 @@ -import type { Linter } from "eslint"; -import globals from "globals"; - -const config: Linter.Config = { - overrides: [ - { - files: ["setupJest.js"], - rules: { - "import/no-extraneous-dependencies": "off", - }, - }, - { - env: { - es6: true, - jest: true, - node: true, - }, - extends: ["plugin:jest/recommended", "plugin:jest/style"], - files: [ - // Test files - "**/*.spec.{js,ts,tsx}", - "**/*.test.{js,ts,tsx}", - "**/test/*.{js,ts,tsx}", - - // Facebook convention - "**/__mocks__/*.{js,ts,tsx}", - "**/__tests__/*.{js,ts,tsx}", - ], - globals: { - ...globals.jest, - }, - plugins: ["jest"], - rules: { - "@typescript-eslint/ban-ts-comment": "off", - - "@typescript-eslint/no-empty-function": "off", - - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/no-non-null-assertion": "off", - "@typescript-eslint/no-object-literal-type-assertion": "off", - // you should turn the original rule off *only* for test files - "@typescript-eslint/unbound-method": "off", - "import/default": "off", - // Relax rules that are known to be slow and less useful in a test context - "import/namespace": "off", - "import/no-duplicates": "off", - - // Relax rules that makes writing tests easier - "import/no-named-as-default-member": "off", - "jest/consistent-test-it": ["error", { fn: "it" }], - "jest/no-disabled-tests": "off", - "jest/no-duplicate-hooks": "error", - - "jest/no-test-return-statement": "error", - "jest/prefer-hooks-in-order": "error", - "jest/prefer-hooks-on-top": "error", - "jest/prefer-strict-equal": "error", - "jest/prefer-to-have-length": "error", - - // Disabled this rule because jest doc blocks clash with jsdoc/check-tag-names - "jsdoc/check-tag-names": "off", - }, - }, - ], -}; - -export default config; diff --git a/packages/eslint-config/src/config/plugins/jsonc.ts b/packages/eslint-config/src/config/plugins/jsonc.ts index f17f7e755..a7bf99e3a 100644 --- a/packages/eslint-config/src/config/plugins/jsonc.ts +++ b/packages/eslint-config/src/config/plugins/jsonc.ts @@ -54,64 +54,64 @@ const config: Linter.Config = { "jsonc/sort-keys": global.hasAnolilabEsLintConfigJsoncPackageJsonSort ? "off" : [ - "error", - { - order: [ - "publisher", - "name", - "displayName", - "type", - "version", - "private", - "packageManager", - "description", - "author", - "license", - "funding", - "homepage", - "repository", - "bugs", - "keywords", - "categories", - "sideEffects", - "exports", - "main", - "module", - "unpkg", - "jsdelivr", - "types", - "typesVersions", - "bin", - "icon", - "files", - "engines", - "activationEvents", - "contributes", - "scripts", - "peerDependencies", - "peerDependenciesMeta", - "dependencies", - "optionalDependencies", - "devDependencies", - "pnpm", - "overrides", - "resolutions", - "husky", - "simple-git-hooks", - "lint-staged", - "eslintConfig", - ], - pathPattern: "^$", - }, - { - order: { type: "asc" }, - pathPattern: "^(?:dev|peer|optional|bundled)?[Dd]ependencies$", - }, - { - order: ["types", "require", "import"], - pathPattern: "^exports.*$", - }, - ], + "error", + { + order: [ + "publisher", + "name", + "displayName", + "type", + "version", + "private", + "packageManager", + "description", + "author", + "license", + "funding", + "homepage", + "repository", + "bugs", + "keywords", + "categories", + "sideEffects", + "exports", + "main", + "module", + "unpkg", + "jsdelivr", + "types", + "typesVersions", + "bin", + "icon", + "files", + "engines", + "activationEvents", + "contributes", + "scripts", + "peerDependencies", + "peerDependenciesMeta", + "dependencies", + "optionalDependencies", + "devDependencies", + "pnpm", + "overrides", + "resolutions", + "husky", + "simple-git-hooks", + "lint-staged", + "eslintConfig", + ], + pathPattern: "^$", + }, + { + order: { type: "asc" }, + pathPattern: "^(?:dev|peer|optional|bundled)?[Dd]ependencies$", + }, + { + order: ["types", "require", "import"], + pathPattern: "^exports.*$", + }, + ], }, }, ], diff --git a/packages/eslint-config/src/config/plugins/mdx.ts b/packages/eslint-config/src/config/plugins/mdx.ts deleted file mode 100644 index a2f2f426c..000000000 --- a/packages/eslint-config/src/config/plugins/mdx.ts +++ /dev/null @@ -1,46 +0,0 @@ -import type { Linter } from "eslint"; - -import { createConfig } from "../../utils/create-config"; - -// @see https://github.com/mdx-js/eslint-mdx/tree/master/packages/eslint-plugin-mdx -const config: Linter.Config = createConfig("mdx", { - extends: ["plugin:mdx/recommended"], - parser: "eslint-mdx", - parserOptions: { - ecmaVersion: "latest", - }, - processor: "mdx/remark", - rules: { - "@typescript-eslint/comma-dangle": "off", - "@typescript-eslint/no-redeclare": "off", - "@typescript-eslint/no-unused-vars": "off", - "@typescript-eslint/no-use-before-define": "off", - "@typescript-eslint/no-var-requires": "off", - - "global-require": "off", - - "import/namespace": "off", - - "import/no-extraneous-dependencies": "off", - "import/no-unresolved": "off", - "import/order": "off", - "no-alert": "off", - - "no-console": "off", - "no-restricted-imports": "off", - "no-undef": "off", - "no-unused-expressions": "off", - "no-unused-vars": "off", - "prefer-reflect": "off", - - "react/jsx-no-undef": "off", - "react-hooks/rules-of-hooks": "off", - - "sonar/no-dead-store": "off", - }, - settings: { - "mdx/code-blocks": true, - }, -}); - -export default config; diff --git a/packages/eslint-config/src/config/plugins/react-hooks.ts b/packages/eslint-config/src/config/plugins/react-hooks.ts deleted file mode 100644 index eceda5867..000000000 --- a/packages/eslint-config/src/config/plugins/react-hooks.ts +++ /dev/null @@ -1,24 +0,0 @@ -import type { Linter } from "eslint"; - -import { createConfig } from "../../utils/create-config"; - -// @see https://github.com/yannickcr/eslint-plugin-react -const config: Linter.Config = createConfig("jsx_and_tsx", { - parserOptions: { - ecmaFeatures: { - jsx: true, - }, - }, - plugins: ["react-hooks"], - rules: { - // Enforce Rules of Hooks - // https://github.com/facebook/react/blob/1204c789776cb01fbaf3e9f032e7e2ba85a44137/packages/eslint-plugin-react-hooks/src/ExhaustiveDeps.js - "react-hooks/exhaustive-deps": "error", - - // Verify the list of the dependencies for Hooks like useEffect and similar - // https://github.com/facebook/react/blob/c11015ff4f610ac2924d1fc6d569a17657a404fd/packages/eslint-plugin-react-hooks/src/RulesOfHooks.js - "react-hooks/rules-of-hooks": "error", - }, -}); - -export default config; diff --git a/packages/eslint-config/src/config/plugins/react-redux.ts b/packages/eslint-config/src/config/plugins/react-redux.ts deleted file mode 100644 index 311167c6b..000000000 --- a/packages/eslint-config/src/config/plugins/react-redux.ts +++ /dev/null @@ -1,15 +0,0 @@ -import type { Linter } from "eslint"; - -import { createConfig } from "../../utils/create-config"; - -// @see https://github.com/DianaSuvorova/eslint-plugin-react-redux#readme -const config: Linter.Config = createConfig("jsx_and_tsx", { - extends: ["plugin:react-redux/recommended"], - plugins: ["react-redux"], - rules: { - "react-redux/mapStateToProps-prefer-selectors": "off", - "react-redux/prefer-separate-component-file": "off", - }, -}); - -export default config; diff --git a/packages/eslint-config/src/config/plugins/react-usememo.ts b/packages/eslint-config/src/config/plugins/react-usememo.ts deleted file mode 100644 index 4bcf587fc..000000000 --- a/packages/eslint-config/src/config/plugins/react-usememo.ts +++ /dev/null @@ -1,18 +0,0 @@ -import type { Linter } from "eslint"; - -import { createConfig } from "../../utils/create-config"; - -// @see https://www.npmjs.com/package/@arthurgeron/eslint-plugin-react-usememo -const config: Linter.Config = createConfig("jsx_and_tsx", { - parserOptions: { - ecmaFeatures: { - jsx: true, - }, - }, - plugins: ["@arthurgeron/react-usememo"], - rules: { - "@arthurgeron/react-usememo/require-usememo": "error", - }, -}); - -export default config; diff --git a/packages/eslint-config/src/config/plugins/react.ts b/packages/eslint-config/src/config/plugins/react.ts index ac50026f1..b3fd50589 100644 --- a/packages/eslint-config/src/config/plugins/react.ts +++ b/packages/eslint-config/src/config/plugins/react.ts @@ -1,109 +1,156 @@ -// @see https://github.com/yannickcr/eslint-plugin-react -import { env } from "node:process"; - -import { getPackageSubProperty, hasDependency, hasDevDependency } from "@anolilab/package-json-utils"; import type { Linter } from "eslint"; -import findUp from "find-up"; import { parse } from "semver"; -import anolilabEslintConfig from "../../utils/eslint-config"; -import indent from "../../utils/indent"; -import { consoleLog } from "../../utils/loggers"; import styleConfig from "../style"; +import { createConfig, getFilesGlobs } from "../../utils/create-config"; +import type { + OptionsFiles, + OptionsHasPrettier, + OptionsOverrides, + OptionsPackageJson, + OptionsStylistic, + OptionsTypeScriptParserOptions, + OptionsTypeScriptWithTypes, + TypedFlatConfigItem, +} from "../../types"; +import interopDefault from "../../utils/interop-default"; +import { hasPackageJsonAnyDependency } from "@visulima/package"; +import { readTsConfig } from "@visulima/tsconfig"; // @ts-expect-error TODO: find the correct type const styleRules = styleConfig.overrides[0].rules as Linter.RulesRecord; const dangleRules = styleRules["no-underscore-dangle"] as Linter.RuleEntry; -if (!global.hasAnolilabEsLintConfigPrettier && (hasDependency("prettier") || hasDevDependency("prettier"))) { - global.hasAnolilabEsLintConfigPrettier = true; -} - -if (global.anolilabEslintConfigReactPrettierRules === undefined && global.hasAnolilabEsLintConfigPrettier) { - global.anolilabEslintConfigReactPrettierRules = { - "react/jsx-child-element-spacing": "off", - "react/jsx-closing-bracket-location": "off", - "react/jsx-closing-tag-location": "off", - "react/jsx-curly-newline": "off", - "react/jsx-curly-spacing": "off", - "react/jsx-equals-spacing": "off", - "react/jsx-first-prop-new-line": "off", - "react/jsx-indent": "off", - "react/jsx-indent-props": "off", - "react/jsx-max-props-per-line": "off", - "react/jsx-newline": "off", - "react/jsx-one-expression-per-line": "off", - "react/jsx-props-no-multi-spaces": "off", - "react/jsx-tag-spacing": "off", - "react/jsx-wrap-multilines": "off", - }; -} - -const hasJsxRuntime = (() => { - // Workaround VS Code trying to run this file twice! - if (!global.hasAnolilabEsLintConfigReactRuntimePath) { - const reactPath = findUp.sync("node_modules/react/jsx-runtime.js"); - const isFile = typeof reactPath === "string"; - - let showLog: boolean = env["DISABLE_INFO_ON_DISABLING_JSX_REACT_RULE"] !== "true"; +// react refresh +const ReactRefreshAllowConstantExportPackages = ["vite"]; +const RemixPackages = ["@remix-run/node", "@remix-run/react", "@remix-run/serve", "@remix-run/dev"]; +const NextJsPackages = ["next"]; - if (showLog && anolilabEslintConfig["info_on_disabling_jsx_react_rule"] !== undefined) { - showLog = anolilabEslintConfig["info_on_disabling_jsx_react_rule"] as boolean; - } - - if (showLog && isFile) { - consoleLog(`\n@anolilab/eslint-config found react jsx-runtime. \n - Following rules are disabled: "react/jsx-uses-react" and "react/react-in-jsx-scope". - If you dont use the new react jsx-runtime in you project, please enable it manually.\n`); - } +// @see https://github.com/yannickcr/eslint-plugin-react +export default createConfig< + OptionsTypeScriptParserOptions & OptionsTypeScriptWithTypes & OptionsOverrides & OptionsFiles & OptionsPackageJson & OptionsHasPrettier & OptionsStylistic +>("jsx_and_tsx", async (config, oFiles) => { + const { + files = oFiles, + filesTypeAware = [GLOB_TS, GLOB_TSX], + ignoresTypeAware = [`${GLOB_MARKDOWN}/**`, GLOB_ASTRO_TS], + overrides, + tsconfigPath, + packageJson, + prettier, + stylistic = true, + } = config; + + const isTypeAware = tsconfigPath !== undefined; + + const { indent = 4 } = typeof stylistic === "boolean" ? {} : stylistic; + + const typeAwareRules: TypedFlatConfigItem["rules"] = { + "react/no-leaked-conditional-rendering": "warn", + }; - global.hasAnolilabEsLintConfigReactRuntimePath = isFile; - } + const [pluginReact, pluginReactHooks, pluginReactRefresh] = await Promise.all([ + interopDefault(import("@eslint-react/eslint-plugin")), + interopDefault(import("eslint-plugin-react-hooks")), + interopDefault(import("eslint-plugin-react-refresh")), + ] as const); - return global.hasAnolilabEsLintConfigReactRuntimePath; -})(); + const isAllowConstantExport = hasPackageJsonAnyDependency(packageJson, ReactRefreshAllowConstantExportPackages); + const isUsingRemix = hasPackageJsonAnyDependency(packageJson, RemixPackages); + const isUsingNext = hasPackageJsonAnyDependency(packageJson, NextJsPackages); -if (!global.anolilabEslintConfigReactVersion) { - let reactVersion = getPackageSubProperty("dependencies")("react"); + const plugins = pluginReact.configs.all.plugins; - if (reactVersion === undefined) { - reactVersion = getPackageSubProperty("devDependencies")("react"); - } + let reactVersion = packageJson?.["dependencies"]?.["react"] || packageJson?.["devDependencies"]?.["react"]; if (reactVersion !== undefined) { const parsedVersion = parse(reactVersion); if (parsedVersion !== null) { - global.anolilabEslintConfigReactVersion = `${parsedVersion.major}.${parsedVersion.minor}`; + reactVersion = `${parsedVersion.major}.${parsedVersion.minor}`; + + // TODO: add log flag + console.info( + `\n@anolilab/eslint-config found the version ${reactVersion} of react in your dependencies, this version ${reactVersion} will be used to setup the "eslint-plugin-react"\n`, + ); } } -} -if (global.anolilabEslintConfigReactVersion !== undefined && anolilabEslintConfig["info_on_found_react_version"] !== false) { - consoleLog( - `\n@anolilab/eslint-config found the version ${global.anolilabEslintConfigReactVersion} of react in your dependencies, this version ${global.anolilabEslintConfigReactVersion} will be used to setup the "eslint-plugin-react"\n`, - ); -} + let hasJsxRuntime = false; + + if (tsconfigPath !== undefined) { + const tsConfig = readTsConfig(tsconfigPath); + + if (tsConfig?.compilerOptions !== undefined && (tsConfig?.compilerOptions.jsx === "react-jsx" || tsConfig?.compilerOptions.jsx === "react-jsxdev")) { + hasJsxRuntime = true; + // TODO: add log flag + console.info(`\n@anolilab/eslint-config found react jsx-runtime. \n + Following rules are disabled: "react/jsx-uses-react" and "react/react-in-jsx-scope". + If you dont use the new react jsx-runtime in you project, please enable it manually.\n`); + } + } -const config: Linter.Config = { - overrides: [ + return [ { + name: "anolilab/react/setup", + plugins: { + react: plugins["@eslint-react"], + "react-dom": plugins["@eslint-react/dom"], + "react-hooks": pluginReactHooks, + "react-hooks-extra": plugins["@eslint-react/hooks-extra"], + "react-naming-convention": plugins["@eslint-react/naming-convention"], + "react-refresh": pluginReactRefresh, + }, + }, + { + name: "anolilab/react/rules", env: { browser: true, }, - - files: ["**/*.jsx", "**/*.tsx"], - + files, parserOptions: { ecmaFeatures: { jsx: true, }, }, - - plugins: ["react"], - // https://github.com/yannickcr/eslint-plugin-react#list-of-supported-rules rules: { + // Enforce Rules of Hooks + // https://github.com/facebook/react/blob/1204c789776cb01fbaf3e9f032e7e2ba85a44137/packages/eslint-plugin-react-hooks/src/ExhaustiveDeps.js + "react-hooks/exhaustive-deps": "error", + + // Verify the list of the dependencies for Hooks like useEffect and similar + // https://github.com/facebook/react/blob/c11015ff4f610ac2924d1fc6d569a17657a404fd/packages/eslint-plugin-react-hooks/src/RulesOfHooks.js + "react-hooks/rules-of-hooks": "error", + + // react refresh + "react-refresh/only-export-components": [ + "warn", + { + allowConstantExport: isAllowConstantExport, + allowExportNames: [ + ...(isUsingNext + ? [ + "dynamic", + "dynamicParams", + "revalidate", + "fetchCache", + "runtime", + "preferredRegion", + "maxDuration", + "config", + "generateStaticParams", + "metadata", + "generateMetadata", + "viewport", + "generateViewport", + ] + : []), + ...(isUsingRemix ? ["meta", "links", "headers", "loader", "action"] : []), + ], + }, + ], + "class-methods-use-this": [ "error", { @@ -537,7 +584,7 @@ const config: Linter.Config = { "error", { forbidDefaultForRequired: true, - functions: hasDependency("typescript") || hasDevDependency("typescript") ? "defaultArguments" : "defaultProps", + functions: hasPackageJsonAnyDependency(packageJson, ["typescript"]) ? "defaultArguments" : "defaultProps", }, ], @@ -629,12 +676,10 @@ const config: Linter.Config = { ], // Prevent adjacent inline elements not separated by whitespace - // TODO: set to "never" once @anolilab/babel-preset supports public class fields - "react/state-in-constructor": ["error", "always"], + "react/state-in-constructor": ["error", "never"], // Enforce a specific function type for function components - // TODO: set to "static public field" once @anolilab/babel-preset supports public class fields - "react/static-property-placement": ["error", "property assignment"], + "react/static-property-placement": ["error", "static public field"], // Enforce a new line after jsx elements and expressions // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/style-prop-object.md @@ -644,7 +689,28 @@ const config: Linter.Config = { // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/void-dom-elements-no-children.md "react/void-dom-elements-no-children": "error", - ...global.anolilabEslintConfigReactPrettierRules, + ...(prettier + ? { + "react/jsx-child-element-spacing": "off", + "react/jsx-closing-bracket-location": "off", + "react/jsx-closing-tag-location": "off", + "react/jsx-curly-newline": "off", + "react/jsx-curly-spacing": "off", + "react/jsx-equals-spacing": "off", + "react/jsx-first-prop-new-line": "off", + "react/jsx-indent": "off", + "react/jsx-indent-props": "off", + "react/jsx-max-props-per-line": "off", + "react/jsx-newline": "off", + "react/jsx-one-expression-per-line": "off", + "react/jsx-props-no-multi-spaces": "off", + "react/jsx-tag-spacing": "off", + "react/jsx-wrap-multilines": "off", + } + : {}), + + // overrides + ...overrides, }, // View link below for react rules documentation @@ -658,11 +724,12 @@ const config: Linter.Config = { // The default value is "detect". Automatic detection works by loading the entire React library // into the linter's process, which is inefficient. It is recommended to specify the version // explicity. - version: global.anolilabEslintConfigReactVersion ?? "detect", + version: reactVersion ?? "detect", }, }, }, { + name: "anolilab/react/jsx", files: ["**/*.jsx"], parser: "@babel/eslint-parser", parserOptions: { @@ -703,6 +770,7 @@ const config: Linter.Config = { }, }, { + name: "anolilab/react/tsx", files: ["**/*.tsx"], rules: { "react/default-props-match-prop-types": "off", @@ -713,13 +781,24 @@ const config: Linter.Config = { }, }, { + name: "anolilab/react/storybook", // For performance run storybook/recommended on test files, not regular code - files: ["**/*.stories.{ts,tsx,mdx}"], + files: getFilesGlobs("storybook"), rules: { "react/jsx-props-no-spreading": "off", }, }, - ], -}; - -export default config; + ...(isTypeAware + ? [ + { + files: filesTypeAware, + ignores: ignoresTypeAware, + name: "anolilab/react/type-aware-rules", + rules: { + ...typeAwareRules, + }, + }, + ] + : []), + ]; +}); diff --git a/packages/eslint-config/src/config/plugins/regexp.ts b/packages/eslint-config/src/config/plugins/regexp.ts index 5b2c7e8fb..d2afa21b9 100644 --- a/packages/eslint-config/src/config/plugins/regexp.ts +++ b/packages/eslint-config/src/config/plugins/regexp.ts @@ -1,14 +1,32 @@ -import type { Linter } from "eslint"; - import { createConfig } from "../../utils/create-config"; +import type { OptionsOverrides, OptionsRegExp, OptionsFiles, TypedFlatConfigItem } from "../../types"; -const config: Linter.Config = createConfig("all", { - extends: ["plugin:regexp/recommended"], - plugins: ["regexp"], - rules: { - // disallow control characters - "regexp/no-control-character": "error", - }, -}); +import { configs } from "eslint-plugin-regexp"; + +export default createConfig("all", async (config, oFiles) => { + const { overrides, level, files = oFiles } = config; + const recommended = configs["flat/recommended"] as TypedFlatConfigItem; -export default config; + const rules = { + ...recommended.rules, + }; + + if (level === "warn") { + for (const key in rules) { + if (rules[key] === "error") { + rules[key] = "warn"; + } + } + } + return [ + { + ...recommended, + files, + name: "anolilab/regexp/rules", + rules: { + ...rules, + ...overrides, + }, + }, + ]; +}); diff --git a/packages/eslint-config/src/config/plugins/security.ts b/packages/eslint-config/src/config/plugins/security.ts deleted file mode 100644 index 8c33f61a4..000000000 --- a/packages/eslint-config/src/config/plugins/security.ts +++ /dev/null @@ -1,16 +0,0 @@ -import type { Linter } from "eslint"; - -const config: Linter.Config = { - // @see https://github.com/eslint-community/eslint-plugin-security - extends: ["plugin:security/recommended"], - // @see https://www.npmjs.com/package/@rushstack/eslint-plugin-security - plugins: ["@rushstack/eslint-plugin-security"], - rules: { - // This is disabled for tools because, for example, it is a common and safe practice for a tool - // to read a RegExp from a config file and use it to filter files paths. - - "@rushstack/security/no-unsafe-regexp": process.env["TRUSTED_TOOL"] ? "off" : "warn", - }, -}; - -export default config; diff --git a/packages/eslint-config/src/config/plugins/simple-import-sort.ts b/packages/eslint-config/src/config/plugins/simple-import-sort.ts deleted file mode 100644 index 828349c4f..000000000 --- a/packages/eslint-config/src/config/plugins/simple-import-sort.ts +++ /dev/null @@ -1,17 +0,0 @@ -import type { Linter } from "eslint"; - -import { createConfig } from "../../utils/create-config"; - -const config: Linter.Config = createConfig("all", { - env: { es6: true }, - parserOptions: { - sourceType: "module", - }, - plugins: ["simple-import-sort"], - rules: { - "simple-import-sort/exports": "error", - "simple-import-sort/imports": "error", - }, -}); - -export default config; diff --git a/packages/eslint-config/src/config/plugins/sonarjs.ts b/packages/eslint-config/src/config/plugins/sonarjs.ts index 2b045ceb0..555900cfa 100644 --- a/packages/eslint-config/src/config/plugins/sonarjs.ts +++ b/packages/eslint-config/src/config/plugins/sonarjs.ts @@ -1,6 +1,8 @@ import type { Linter } from "eslint"; -import { createConfigs } from "../../utils/create-config"; +import { createConfig, createConfigs, getFilesGlobs } from "../../utils/create-config"; +import type { OptionsFiles, OptionsOverrides } from "../../types"; +import interopDefault from "../../utils/interop-default"; // @see https://github.com/SonarSource/eslint-plugin-sonarjs const config: Linter.Config = createConfigs([ @@ -40,4 +42,40 @@ const config: Linter.Config = createConfigs([ }, ]); -export default config; +export default createConfig("all", async (config, oFiles) => { + const { overrides, files = oFiles } = config; + + const sonarJsPlugin = await interopDefault(import("eslint-plugin-sonarjs")); + + return [ + { + name: "anolilab/sonarjs/plugin", + plugins: { + sonarjs: sonarJsPlugin, + }, + }, + { + name: "anolilab/sonarjs/config", + files, + rules: { + ...sonarJsPlugin.configs["recommended"].rules, + "sonarjs/no-nested-template-literals": "off", + "sonarjs/file-name-differ-from-class": "error", + "sonarjs/no-collapsible-if": "error", + "sonarjs/no-tab": "error", + + ...overrides, + }, + }, + { + name: "anolilab/sonarjs/js_and_ts", + files: getFilesGlobs("js_and_ts"), + rules: { + // relax complexity for react code + "sonarjs/cognitive-complexity": ["error", 15], + // relax duplicate strings + "sonarjs/no-duplicate-string": "off", + }, + }, + ]; +}); diff --git a/packages/eslint-config/src/config/plugins/ssr-friendly.ts b/packages/eslint-config/src/config/plugins/ssr-friendly.ts deleted file mode 100644 index 548fe095b..000000000 --- a/packages/eslint-config/src/config/plugins/ssr-friendly.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { Linter } from "eslint"; - -import { createConfig } from "../../utils/create-config"; - -// @see https://github.com/francoismassart/eslint-plugin-tailwindcss, -const config: Linter.Config = createConfig("jsx_and_tsx", { - plugins: ["ssr-friendly"], - extends: ["plugin:ssr-friendly/recommended"], -}); - -export default config; diff --git a/packages/eslint-config/src/config/plugins/storybook.ts b/packages/eslint-config/src/config/plugins/storybook.ts index 844be5bff..166441527 100644 --- a/packages/eslint-config/src/config/plugins/storybook.ts +++ b/packages/eslint-config/src/config/plugins/storybook.ts @@ -1,19 +1,18 @@ -import type { Linter } from "eslint"; +import { createConfig } from "../../utils/create-config"; +import type { OptionsOverrides } from "../../types"; +import interopDefault from "../../utils/interop-default"; -// @see https://github.com/storybookjs/eslint-plugin-storybook -const config: Linter.Config = { - env: { - browser: true, - es6: true, - node: true, - }, - overrides: [ - { - extends: ["plugin:storybook/recommended"], - // For performance run storybook/recommended on test files, not regular code - files: ["**/*.stories.{ts,tsx,mdx}", ".storybook/**/*"], - }, - ], -}; +export default createConfig("storybook", async (config) => { + const { overrides } = config; -export default config; + const storybookPlugin = await interopDefault(import("eslint-plugin-storybook")); + + const options = [...storybookPlugin.configs["flat/recommended"]]; + + options[0].rules = { + ...options[0].rules, + ...overrides, + }; + + return options; +}); diff --git a/packages/eslint-config/src/config/plugins/tailwindcss.ts b/packages/eslint-config/src/config/plugins/tailwindcss.ts index aadbc9771..435b2dff4 100644 --- a/packages/eslint-config/src/config/plugins/tailwindcss.ts +++ b/packages/eslint-config/src/config/plugins/tailwindcss.ts @@ -1,19 +1,20 @@ -import type { Linter } from "eslint"; - import { createConfig } from "../../utils/create-config"; +import type { OptionsFiles, OptionsOverrides } from "../../types"; +import interopDefault from "../../utils/interop-default"; // @see https://github.com/francoismassart/eslint-plugin-tailwindcss, -const config: Linter.Config = createConfig( - "jsx_and_tsx", - { - extends: ["plugin:tailwindcss/recommended"], - plugins: ["tailwindcss"], - }, - { - browser: true, - es6: true, - node: true, - }, -); +export default createConfig("jsx_and_tsx", async (config, oFiles) => { + const { files = oFiles, overrides } = config; + + const validateJsxNestingPlugin = await interopDefault(import("eslint-plugin-tailwindcss")); + + const options = [...validateJsxNestingPlugin.configs["flat/recommended"]]; + + options[1].files = files; + options[1].rules = { + ...options[1].rules, + ...overrides, + }; -export default config; + return options; +}); diff --git a/packages/eslint-config/src/config/plugins/tanstack-query.ts b/packages/eslint-config/src/config/plugins/tanstack-query.ts index b6d7fb25e..dbb35fb0b 100644 --- a/packages/eslint-config/src/config/plugins/tanstack-query.ts +++ b/packages/eslint-config/src/config/plugins/tanstack-query.ts @@ -1,10 +1,21 @@ -import type { Linter } from "eslint"; - import { createConfig } from "../../utils/create-config"; +import type { OptionsFiles, OptionsOverrides } from "../../types"; +import interopDefault from "../../utils/interop-default"; // @see https://tanstack.com/query/v4/docs/react/eslint/eslint-plugin-query -const config: Linter.Config = createConfig("all", { - extends: ["plugin:@tanstack/eslint-plugin-query/recommended"], -}); +export default createConfig("all", async (config, oFiles) => { + const { files = oFiles, overrides } = config; -export default config; + const pluginTanstackQuery = await interopDefault(import("@tanstack/eslint-plugin-query")); + + return [{ + files, + plugins: { + "tanstack-query": pluginTanstackQuery, + }, + rules: { + ...pluginTanstackQuery.configs["recommended"].rules, + ...overrides, + } + }] +}); diff --git a/packages/eslint-config/src/config/plugins/testing-library-dom.ts b/packages/eslint-config/src/config/plugins/testing-library-dom.ts deleted file mode 100644 index 43c43fa54..000000000 --- a/packages/eslint-config/src/config/plugins/testing-library-dom.ts +++ /dev/null @@ -1,29 +0,0 @@ -import type { Linter } from "eslint"; - -import { createConfig } from "../../utils/create-config"; -import anolilabEslintConfig from "../../utils/eslint-config"; -import { consolePlugin } from "../../utils/loggers"; - -// Workaround VS Code trying to run this file twice! -if (!global.hasAnolilabEsLintTestConfigLoaded) { - if (anolilabEslintConfig["info_on_testing_library_framework"] !== false) { - consolePlugin(`testing-library: loading "dom" ruleset`); - } - - global.hasAnolilabEsLintTestConfigLoaded = true; -} - -// For performance enable react-testing-library only on test files -const config: Linter.Config = createConfig( - "tests", - { - extends: [`plugin:testing-library/dom`], - }, - { - browser: true, - es6: true, - node: true, - }, -); - -export default config; diff --git a/packages/eslint-config/src/config/plugins/testing-library-react.ts b/packages/eslint-config/src/config/plugins/testing-library-react.ts deleted file mode 100644 index 0e15a8540..000000000 --- a/packages/eslint-config/src/config/plugins/testing-library-react.ts +++ /dev/null @@ -1,29 +0,0 @@ -import type { Linter } from "eslint"; - -import { createConfig } from "../../utils/create-config"; -import anolilabEslintConfig from "../../utils/eslint-config"; -import { consolePlugin } from "../../utils/loggers"; - -// Workaround VS Code trying to run this file twice! -if (!global.hasAnolilabEsLintTestConfigLoaded) { - if (anolilabEslintConfig["info_on_testing_library_framework"] !== false) { - consolePlugin(`testing-library: loading "react" ruleset`); - } - - global.hasAnolilabEsLintTestConfigLoaded = true; -} - -// For performance enable react-testing-library only on test files -const config: Linter.Config = createConfig( - "tests", - { - extends: [`plugin:testing-library/react`], - }, - { - browser: true, - es6: true, - node: true, - }, -); - -export default config; diff --git a/packages/eslint-config/src/config/plugins/testing-library.ts b/packages/eslint-config/src/config/plugins/testing-library.ts new file mode 100644 index 000000000..16b4a4332 --- /dev/null +++ b/packages/eslint-config/src/config/plugins/testing-library.ts @@ -0,0 +1,26 @@ +import { createConfig } from "../../utils/create-config"; +import type { OptionsFiles, OptionsOverrides, OptionsPackageJson } from "../../types"; +import { hasPackageJsonAnyDependency } from "@visulima/package"; + +export default createConfig("vitest", async (config, oFiles) => { + const { files = oFiles, overrides, packageJson } = config; + + const testingLibraryPlugin = await import("eslint-plugin-testing-library"); + + const hasReact = hasPackageJsonAnyDependency(packageJson, ["react", "react-dom", "eslint-plugin-react"]) + + return [ + { + files, + plugins: { + "testing-library": testingLibraryPlugin, + }, + rules: { + ...testingLibraryPlugin.configs["flat/dom"].rules, + ...(hasReact ? testingLibraryPlugin.configs["flat/react"].rules : {}), + + ...overrides, + }, + }, + ]; +}); diff --git a/packages/eslint-config/src/config/plugins/toml.ts b/packages/eslint-config/src/config/plugins/toml.ts index 7997348be..56c0fa05b 100644 --- a/packages/eslint-config/src/config/plugins/toml.ts +++ b/packages/eslint-config/src/config/plugins/toml.ts @@ -1,13 +1,56 @@ -import type { Linter } from "eslint"; +import { createConfig } from "../../utils/create-config"; +import type { OptionsFiles, OptionsOverrides, OptionsStylistic } from "../../types"; +import interopDefault from "../../utils/interop-default"; -const config: Linter.Config = { - overrides: [ +export default createConfig("toml", async (config, oFiles) => { + const { files = oFiles, overrides = {}, stylistic = true } = config; + + const { indent = 2 } = typeof stylistic === "boolean" ? {} : stylistic; + + const [pluginToml, parserToml] = await Promise.all([interopDefault(import("eslint-plugin-toml")), interopDefault(import("toml-eslint-parser"))] as const); + + return [ { - extends: ["plugin:toml/standard"], - files: ["**/*.toml"], - parser: "toml-eslint-parser", - }, - ], -}; + plugins: { + toml: pluginToml, + }, + files, + languageOptions: { + parser: parserToml, + }, + name: "anolilab/toml", + rules: { + // @TODO: move this to the correct place + "style/spaced-comment": "off", -export default config; + "toml/comma-style": "error", + "toml/keys-order": "error", + "toml/no-space-dots": "error", + "toml/no-unreadable-number-separator": "error", + "toml/precision-of-fractional-seconds": "error", + "toml/precision-of-integer": "error", + "toml/tables-order": "error", + + "toml/vue-custom-block/no-parsing-error": "error", + + ...(stylistic + ? { + "toml/array-bracket-newline": "error", + "toml/array-bracket-spacing": "error", + "toml/array-element-newline": "error", + "toml/indent": ["error", indent === "tab" ? 2 : indent], + "toml/inline-table-curly-spacing": "error", + "toml/key-spacing": "error", + "toml/padding-line-between-pairs": "error", + "toml/padding-line-between-tables": "error", + "toml/quoted-keys": "error", + "toml/spaced-comment": "error", + "toml/table-bracket-spacing": "error", + } + : {}), + + ...overrides, + }, + }, + ]; +}); diff --git a/packages/eslint-config/src/config/plugins/tsdoc.ts b/packages/eslint-config/src/config/plugins/tsdoc.ts index 75a2ac226..2546aff14 100644 --- a/packages/eslint-config/src/config/plugins/tsdoc.ts +++ b/packages/eslint-config/src/config/plugins/tsdoc.ts @@ -1,12 +1,23 @@ -import type { Linter } from "eslint"; - import { createConfig } from "../../utils/create-config"; +import interopDefault from "../../utils/interop-default"; +import type { OptionsFiles, OptionsOverrides } from "../../types"; -const config: Linter.Config = createConfig("typescript", { - plugins: ["eslint-plugin-tsdoc"], - rules: { - "tsdoc/syntax": "error", - }, -}); +export default createConfig("typescript", async (config, oFiles) => { + const { files = oFiles, overrides } = config; + + const eslintPluginTsdoc = await interopDefault(import("eslint-plugin-tsdoc")); -export default config; + return [ + { + files, + plugins: { + tsdoc: eslintPluginTsdoc, + }, + rules: { + "tsdoc/syntax": "error", + + ...overrides, + }, + }, + ]; +}); diff --git a/packages/eslint-config/src/config/plugins/unicorn.ts b/packages/eslint-config/src/config/plugins/unicorn.ts index 85fd1e348..868049632 100644 --- a/packages/eslint-config/src/config/plugins/unicorn.ts +++ b/packages/eslint-config/src/config/plugins/unicorn.ts @@ -1,75 +1,90 @@ -import { hasDependency, hasDevDependency, packageIsTypeModule } from "@anolilab/package-json-utils"; -import type { Linter } from "eslint"; +import { createConfig } from "../../utils/create-config"; +import interopDefault from "../../utils/interop-default"; +import type { OptionsFiles, OptionsHasPrettier, OptionsOverrides, OptionsPackageJson, OptionsStylistic } from "../../types"; -import indent from "../../utils/indent"; +export default createConfig( + "all", + async (config, oFiles) => { + const { files = oFiles, prettier, stylistic = true, overrides, packageJson } = config; -if (global.anolilabEslintConfigUnicornPrettierRules === undefined && (hasDependency("prettier") || hasDevDependency("prettier"))) { - global.anolilabEslintConfigUnicornPrettierRules = { - "unicorn/empty-brace-spaces": "off", - "unicorn/no-nested-ternary": "off", - "unicorn/number-literal-case": "off", - "unicorn/template-indent": "off", - }; -} + const { indent = 4 } = typeof stylistic === "boolean" ? {} : stylistic; -// @see https://github.com/sindresorhus/eslint-plugin-unicorn -const config: Linter.Config = { - extends: ["plugin:unicorn/recommended"], - overrides: [ - { - files: ["tsconfig.dev.json", "tsconfig.prod.json"], - rules: { - "unicorn/prevent-abbreviations": "off", - }, - }, - { - files: ["**/*.ts", "**/*.tsx", "**/*.mts", "**/*.cts"], - rules: { - "unicorn/import-style": "off", - }, - }, - ], - plugins: ["unicorn"], - rules: { - // TODO: Temporarily disabled as the rule is buggy. - "function-call-argument-newline": "off", - // Disabled because of eslint-plugin-regexp - "unicorn/better-regex": "off", - // TODO: Disabled for now until it becomes more stable: https://github.com/sindresorhus/eslint-plugin-unicorn/search?q=consistent-destructuring+is:issue&state=open&type=issues - "unicorn/consistent-destructuring": "off", - // TODO: Remove this override when the rule is more stable. - "unicorn/consistent-function-scoping": "off", + const pluginUnicorn = await interopDefault(import("eslint-plugin-unicorn")); - "unicorn/filename-case": [ - "error", + return [ { - case: "kebabCase", - ignore: [/(FUNDING\.yml|README\.md|CHANGELOG\.md|CONTRIBUTING\.md|CODE_OF_CONDUCT\.md|SECURITY\.md|LICENSE)/u], + name: "anolilab/unicorn/plugin", + plugins: { + unicorn: pluginUnicorn, + }, }, - ], + { + name: "anolilab/unicorn/rules", + files, + rules: { + // TODO: Temporarily disabled as the rule is buggy. + "function-call-argument-newline": "off", + // Disabled because of eslint-plugin-regexp + "unicorn/better-regex": "off", + // TODO: Disabled for now until it becomes more stable: https://github.com/sindresorhus/eslint-plugin-unicorn/search?q=consistent-destructuring+is:issue&state=open&type=issues + "unicorn/consistent-destructuring": "off", + // TODO: Remove this override when the rule is more stable. + "unicorn/consistent-function-scoping": "off", - "unicorn/no-array-for-each": "off", + "unicorn/filename-case": [ + "error", + { + case: "kebabCase", + ignore: [/(FUNDING\.yml|README\.md|CHANGELOG\.md|CONTRIBUTING\.md|CODE_OF_CONDUCT\.md|SECURITY\.md|LICENSE)/u], + }, + ], - // TODO: Disabled for now as I don't have time to deal with the backslash that might come from this. Try to enable this rule in 2024. - "unicorn/no-null": "off", + "unicorn/no-array-for-each": "off", - // TODO: Temporarily disabled until it becomes more mature. - "unicorn/no-useless-undefined": "off", + // TODO: Disabled for now as I don't have time to deal with the backslash that might come from this. Try to enable this rule in 2024. + "unicorn/no-null": "off", - // It will be disabled in the next version of eslint-plugin-unicorn. - "unicorn/prefer-json-parse-buffer": "off", + // TODO: Temporarily disabled until it becomes more mature. + "unicorn/no-useless-undefined": "off", - "unicorn/prefer-module": packageIsTypeModule ? "error" : "off", + // It will be disabled in the next version of eslint-plugin-unicorn. + "unicorn/prefer-json-parse-buffer": "off", - "unicorn/prefer-node-protocol": "error", + "unicorn/prefer-module": packageJson.type === "module" ? "error" : "off", - // We only enforce it for single-line statements to not be too opinionated. - "unicorn/prefer-ternary": ["error", "only-single-line"], + "unicorn/prefer-node-protocol": "error", - "unicorn/template-indent": ["error", { indent }], + // We only enforce it for single-line statements to not be too opinionated. + "unicorn/prefer-ternary": ["error", "only-single-line"], - ...global.anolilabEslintConfigUnicornPrettierRules, - }, -}; + "unicorn/template-indent": ["error", { indent }], + + ...(prettier + ? { + "unicorn/empty-brace-spaces": "off", + "unicorn/no-nested-ternary": "off", + "unicorn/number-literal-case": "off", + "unicorn/template-indent": "off", + } + : {}), -export default config; + ...overrides, + }, + }, + { + name: "anolilab/unicorn/tsconfig-overrides", + files: ["tsconfig.dev.json", "tsconfig.prod.json"], + rules: { + "unicorn/prevent-abbreviations": "off", + }, + }, + { + name: "anolilab/unicorn/ts-overrides", + files: ["**/*.ts", "**/*.tsx", "**/*.mts", "**/*.cts"], + rules: { + "unicorn/import-style": "off", + }, + }, + ]; + }, +); diff --git a/packages/eslint-config/src/config/plugins/validate-jsx-nesting.ts b/packages/eslint-config/src/config/plugins/validate-jsx-nesting.ts index 9d037be12..49ba57001 100644 --- a/packages/eslint-config/src/config/plugins/validate-jsx-nesting.ts +++ b/packages/eslint-config/src/config/plugins/validate-jsx-nesting.ts @@ -1,13 +1,24 @@ -import type { Linter } from "eslint"; - import { createConfig } from "../../utils/create-config"; +import type { OptionsFiles, OptionsOverrides } from "../../types"; +import interopDefault from "../../utils/interop-default"; // @see https://github.com/francoismassart/eslint-plugin-tailwindcss, -const config: Linter.Config = createConfig("jsx_and_tsx", { - plugins: ["validate-jsx-nesting"], - rules: { - "validate-jsx-nesting/no-invalid-jsx-nesting": "error", - }, -}); +export default createConfig("jsx_and_tsx", async (config, oFiles) => { + const { files = oFiles, overrides } = config; + + const validateJsxNestingPlugin = await interopDefault(import("eslint-plugin-validate-jsx-nesting")); -export default config; + return [ + { + files, + plugins: { + "validate-jsx-nesting": validateJsxNestingPlugin, + }, + rules: { + "validate-jsx-nesting/no-invalid-jsx-nesting": "error", + + ...overrides, + }, + }, + ]; +}); diff --git a/packages/eslint-config/src/config/plugins/vitest.ts b/packages/eslint-config/src/config/plugins/vitest.ts index 371c38077..298e6ddb9 100644 --- a/packages/eslint-config/src/config/plugins/vitest.ts +++ b/packages/eslint-config/src/config/plugins/vitest.ts @@ -1,24 +1,42 @@ -import { hasDependency, hasDevDependency } from "@anolilab/package-json-utils"; -import type { Linter } from "eslint"; +import { createConfig } from "../../utils/create-config"; +import type { OptionsFiles, OptionsOverrides } from "../../types"; +import interopDefault from "../../utils/interop-default"; -if (!global.hasAnolilabEsLintVitestGlobalsPlugin) { - global.hasAnolilabEsLintVitestGlobalsPlugin = hasDependency("eslint-plugin-vitest-globals") || hasDevDependency("eslint-plugin-vitest-globals"); -} +// Hold the reference so we don't redeclare the plugin on each call +let _pluginTest: any; -const plugins = ["plugin:vitest/recommended", "plugin:vitest/all"]; +export default createConfig("all", async (config, oFiles) => { + const { files = oFiles, overrides } = config; -if (global.hasAnolilabEsLintVitestGlobalsPlugin) { - plugins.push("plugin:vitest-globals/recommended"); -} + const [vitestPlugin, noOnlyTestsPlugin] = await Promise.all([ + interopDefault(import("@vitest/eslint-plugin")), + // @ts-expect-error missing types + interopDefault(import("eslint-plugin-no-only-tests")), + ] as const); -const config: Linter.Config = { - overrides: [ + _pluginTest = _pluginTest || { + ...vitestPlugin, + rules: { + ...vitestPlugin.rules, + // extend `test/no-only-tests` rule + ...noOnlyTestsPlugin.rules, + }, + }; + + return [ + { + name: "anolilab/vitest/setup", + plugins: { + vitest: _pluginTest, + }, + }, { - extends: plugins, - files: ["**/__tests__/**/*.?(c|m)[jt]s?(x)", "**/?(*.){test,spec}.?(c|m)[jt]s?(x)"], - plugins: ["vitest"], - // TODO: transform all rules to error + files, + name: "anolilab/vitest/rules", rules: { + ...vitestPlugin.configs.all.rules, + ...vitestPlugin.configs.recommended.rules, + // Enforce a maximum number of expect per test // https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/max-expects.md // This rule should be set on the root config @@ -43,9 +61,30 @@ const config: Linter.Config = { // Disallow using expect outside of it or test blocks // https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/valid-expect.md "vitest/valid-expect": ["error", { alwaysAwait: true, maxArgs: 2, minArgs: 1 }], + + // Disables + // @TODO move this into the correct places + ...{ + "antfu/no-top-level-await": "off", + "no-unused-expressions": "off", + "node/prefer-global/process": "off", + "ts/explicit-function-return-type": "off", + }, + + ...overrides, + }, + // TODO: hide this behind a config flag + settings: { + vitest: { + typecheck: true, + }, + }, + // TODO: hide this behind a config flag + languageOptions: { + globals: { + ...vitestPlugin.environments.env.globals, + }, }, }, - ], -}; - -export default config; + ]; +}); diff --git a/packages/eslint-config/src/config/plugins/yml.ts b/packages/eslint-config/src/config/plugins/yml.ts index 220b9ee76..844f5f984 100644 --- a/packages/eslint-config/src/config/plugins/yml.ts +++ b/packages/eslint-config/src/config/plugins/yml.ts @@ -1,24 +1,56 @@ -import { hasDependency, hasDevDependency } from "@anolilab/package-json-utils"; -import type { Linter } from "eslint"; +import { createConfig } from "../../utils/create-config"; +import type { OptionsFiles, OptionsHasPrettier, OptionsOverrides, OptionsStylistic } from "../../types"; +import interopDefault from "../../utils/interop-default"; -import indent from "../../utils/indent"; +export default createConfig("yaml", async (options, oFiles) => { + const { files = oFiles, overrides = {}, stylistic = true, prettier } = options; -if (!global.hasAnolilabEsLintConfigPrettier && (hasDependency("prettier") || hasDevDependency("prettier"))) { - global.hasAnolilabEsLintConfigPrettier = true; -} + const { indent = 4, quotes = "double" } = typeof stylistic === "boolean" ? {} : stylistic; -const config: Linter.Config = { - overrides: [ + const [pluginYaml, parserYaml] = await Promise.all([interopDefault(import("eslint-plugin-yml")), interopDefault(import("yaml-eslint-parser"))] as const); + + return [ { - extends: ["plugin:yml/recommended", ...(global.hasAnolilabEsLintConfigPrettier ? ["plugin:yml/prettier"] : [])], - files: ["**/*.yaml", "**/*.yml"], - parser: "yaml-eslint-parser", + name: "anolilab/yaml", + plugins: { + yaml: pluginYaml, + }, + languageOptions: { + parser: parserYaml, + }, + files, rules: { - indent: [global.hasAnolilabEsLintConfigPrettier ? "off" : "error", indent], - "spaced-comment": "off", + "style/spaced-comment": "off", + + "yaml/block-mapping": "error", + "yaml/block-sequence": "error", + "yaml/no-empty-key": "error", + "yaml/no-empty-sequence-entry": "error", + "yaml/no-irregular-whitespace": "error", + "yaml/plain-scalar": "error", + + "yaml/vue-custom-block/no-parsing-error": "error", + + ...(stylistic + ? { + "yaml/block-mapping-question-indicator-newline": "error", + "yaml/block-sequence-hyphen-indicator-newline": "error", + "yaml/flow-mapping-curly-newline": "error", + "yaml/flow-mapping-curly-spacing": "error", + "yaml/flow-sequence-bracket-newline": "error", + "yaml/flow-sequence-bracket-spacing": "error", + "yaml/indent": [prettier ? "off" : "error", indent === "tab" ? 2 : indent], + "yaml/key-spacing": "error", + "yaml/no-tab-indent": "error", + "yaml/quotes": ["error", { avoidEscape: true, prefer: quotes === "backtick" ? "single" : quotes }], + "yaml/spaced-comment": "error", + } + : {}), + + ...(prettier ? pluginYaml.configs.prettier.rules : {}), + + ...overrides, }, }, - ], -}; - -export default config; + ]; +}); diff --git a/packages/eslint-config/src/config/plugins/you-dont-need-lodash-underscore.ts b/packages/eslint-config/src/config/plugins/you-dont-need-lodash-underscore.ts index 7c90a6cc1..50fd4cb31 100644 --- a/packages/eslint-config/src/config/plugins/you-dont-need-lodash-underscore.ts +++ b/packages/eslint-config/src/config/plugins/you-dont-need-lodash-underscore.ts @@ -1,9 +1,24 @@ -import type { Linter } from "eslint"; +import { fixupPluginRules } from "@eslint/compat"; import { createConfig } from "../../utils/create-config"; +import interopDefault from "../../utils/interop-default"; +import type { OptionsFiles, OptionsOverrides } from "../../types"; -const config: Linter.Config = createConfig("all", { - extends: ["plugin:you-dont-need-lodash-underscore/compatible"], -}); +export default createConfig("all", async (config, oFiles) => { + const { files = oFiles, overrides } = config; + + const pluginYouDontNeedLodashUnderscore = await interopDefault(import("eslint-plugin-you-dont-need-lodash-underscore")); -export default config; + return [ + { + files, + plugins: { + "you-dont-need-lodash-underscore": fixupPluginRules(pluginYouDontNeedLodashUnderscore), + }, + rules: { + ...pluginYouDontNeedLodashUnderscore.configs["all"].rules, + ...overrides, + }, + }, + ]; +}); diff --git a/packages/eslint-config/src/config/plugins/you-dont-need-momentjs.ts b/packages/eslint-config/src/config/plugins/you-dont-need-momentjs.ts deleted file mode 100644 index fdccbf70b..000000000 --- a/packages/eslint-config/src/config/plugins/you-dont-need-momentjs.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { Linter } from "eslint"; - -import { createConfig } from "../../utils/create-config"; - -const config: Linter.Config = createConfig("all", { - extends: ["plugin:you-dont-need-momentjs/recommended"], -}); - -export default config; diff --git a/packages/eslint-config/src/config/plugins/zod.ts b/packages/eslint-config/src/config/plugins/zod.ts index c9f91efcc..b4946afcb 100644 --- a/packages/eslint-config/src/config/plugins/zod.ts +++ b/packages/eslint-config/src/config/plugins/zod.ts @@ -1,13 +1,23 @@ -import type { Linter } from "eslint"; - import { createConfig } from "../../utils/create-config"; +import interopDefault from "../../utils/interop-default"; +import type { OptionsFiles, OptionsOverrides } from "../../types"; -const config: Linter.Config = createConfig("all", { - plugins: ["zod"], - rules: { - "zod/prefer-enum": "error", - "zod/require-strict": "error", - }, -}); +export default createConfig("all", async (config, oFiles) => { + const { files = oFiles, overrides } = config; -export default config; + const zodPlugin = await interopDefault(import("eslint-plugin-zod")); + + return [ + { + files, + plugins: { + zod: zodPlugin, + }, + rules: { + "zod/prefer-enum": "error", + "zod/require-strict": "error", + ...overrides, + }, + }, + ]; +}); diff --git a/packages/eslint-config/src/define-config.ts b/packages/eslint-config/src/define-config.ts deleted file mode 100644 index c1a4b1bbc..000000000 --- a/packages/eslint-config/src/define-config.ts +++ /dev/null @@ -1 +0,0 @@ -export { defineConfig, defineFlatConfig } from "eslint-define-config"; diff --git a/packages/eslint-config/src/global.d.ts b/packages/eslint-config/src/global.d.ts deleted file mode 100644 index e12d466fa..000000000 --- a/packages/eslint-config/src/global.d.ts +++ /dev/null @@ -1,50 +0,0 @@ -import type { Linter } from "eslint"; - -export {}; - -declare global { - var hasAnolilabEsLintConfigLoaded: undefined | boolean; - - var hasAnolilabEsLintConfigReactRuntimePath: undefined | boolean; - - var hasAnolilabEsLintTestConfigLoaded: undefined | boolean; - - var hasAnolilabEsLintConfigPrettier: undefined | boolean; - - var hasAnolilabEsLintVitestGlobalsPlugin: undefined | boolean; - - var hasAnolilabEsLintConfigJsyA11yStorybook: undefined | boolean; - - var hasAnolilabEsLintConfigPerfectionistTypescriptSortKeys: undefined | boolean; - - var hasAnolilabEsLintConfigPlaywrightJest: undefined | boolean; - - var hasAnolilabEsLintConfigJsoncPackageJsonSort: undefined | boolean; - - var hasAnolilabEsLintConfigDeprecation: undefined | boolean; - - var anolilabEslintIndent: undefined | number; - - var anolilabEslintPackageJsonConfig: undefined | { [key: string]: boolean | undefined }; - - var anolilabEslintConfigTypescriptPrettierRules: undefined | Linter.RulesRecord; - - var anolilabEslintConfigBabelPrettierRules: undefined | Linter.RulesRecord; - - var anolilabEslintConfigJsDocRules: undefined | Linter.Config["overrides"]; - - var anolilabEslintConfigNodeRules: undefined | Linter.RulesRecord; - - var anolilabEslintConfigReactPrettierRules: undefined | Linter.RulesRecord; - - var anolilabEslintConfigHtmlPrettierRules: undefined | Linter.RulesRecord; - var anolilabEslintConfigHtmlPrettierSettings: undefined | Linter.Config["settings"]; - - var anolilabEslintConfigReactVersion: undefined | string; - - var anolilabEslintConfigTestingLibraryRuleSet: undefined | string; - - var anolilabEslintConfigUnicornPrettierRules: undefined | Linter.RulesRecord; - - var anolilabEslintImportNoUnusedModulesConfig: undefined | string[]; -} diff --git a/packages/eslint-config/src/index.ts b/packages/eslint-config/src/index.ts index 65d789ebd..16db5cc92 100644 --- a/packages/eslint-config/src/index.ts +++ b/packages/eslint-config/src/index.ts @@ -1,228 +1,133 @@ +import { FlatConfigComposer } from "eslint-flat-config-utils"; +import type { Awaitable, OptionsConfig, TypedFlatConfigItem, ConfigNames } from "./types"; +import type { Linter } from "eslint"; +import isInEditorEnv from "./utils/is-in-editor"; +import interopDefault from "./utils/interop-default"; +import type { RuleOptions } from "./typegen"; +import { hasPackageJsonAnyDependency, parsePackageJson } from "@visulima/package"; +import { readFileSync } from "node:fs"; +import { join } from "node:path"; + +const flatConfigProps = ["name", "languageOptions", "linterOptions", "processor", "plugins", "rules", "settings"] satisfies (keyof TypedFlatConfigItem)[]; + +export type ResolvedOptions = T extends boolean ? never : NonNullable; + +export function resolveSubOptions(options: OptionsConfig, key: K): ResolvedOptions { + return typeof options[key] === "boolean" ? ({} as any) : options[key] || {}; +} + +export function getOverrides(options: OptionsConfig, key: K): Partial { + const sub = resolveSubOptions(options, key); + + return { + ...(options.overrides as any)?.[key], + ...("overrides" in sub ? sub.overrides : {}), + }; +} + /** - * rushstack eslint-patch is used to include plugins as dev - * dependencies instead of imposing them as peer dependencies + * Construct an array of ESLint flat config items. * - * {@link https://www.npmjs.com/package/@rushstack/eslint-patch} - * {@link https://stackoverflow.com/a/74478635/1392749} - * {@link https://github.com/eslint/eslint/issues/3458} - * {@link https://eslint.org/blog/2022/08/new-config-system-part-1/} - * {@link https://eslint.org/blog/2022/08/new-config-system-part-2/} - * {@link https://eslint.org/blog/2022/08/new-config-system-part-3/} - * {@link https://eslint.org/docs/latest/user-guide/configuring/configuration-files-new} + * @param {OptionsConfig & TypedFlatConfigItem} options + * The options for generating the ESLint configurations. + * @param {Awaitable[]} userConfigs + * The user configurations to be merged with the generated configurations. + * @returns {Promise} + * The merged ESLint configurations. */ -import "@rushstack/eslint-patch/modern-module-resolution"; +export const createConfig = ( + options: OptionsConfig & Omit = {}, + ...userConfigs: Awaitable | Linter.Config[]>[] +): FlatConfigComposer => { + if ("files" in options) { + throw new Error( + '[@anolilab/eslint-config] The first argument should not contain the "files" property as the options are supposed to be global. Place it in the second or later config instead.', + ); + } -import { join } from "node:path"; + const cwd = options.cwd ?? process.cwd(); -import { hasDependency, hasDevDependency, packageIsTypeModule, pkg } from "@anolilab/package-json-utils"; -import type { Linter } from "eslint"; -import globals from "globals"; -import { intersects, rcompare } from "semver"; - -import { internalPluginConfig, pluginRules, possiblePluginRules, rules } from "./config"; -import engineRules from "./engine-node-overwrite"; -import anolilabEslintConfig from "./utils/eslint-config"; -import { consoleLog, consolePlugin } from "./utils/loggers"; - -// Workaround VS Code trying to run this file twice! -if (!global.hasAnolilabEsLintConfigLoaded) { - if (process.env["DEBUG"]) { - consoleLog("\n@anolilab/eslint-config loaded the following plugins:\n"); - - consoleLog(" @rushstack/eslint-plugin-security"); - internalPluginConfig - .map((name: string) => { - if (name === "import") { - return "i"; - } - - if (name === "node") { - return "n"; - } - - return name; - }) - .forEach((plugin) => consolePlugin(plugin)); - } + const packageJson = parsePackageJson(readFileSync(join(cwd, "package.json"), "utf-8")); - let hasLogged = false; + const enablePrettier = hasPackageJsonAnyDependency(packageJson, ["prettier"]); - Object.entries(possiblePluginRules).forEach(([plugin, dependencies]) => { - const hasOneDependency = Object.values(dependencies).some(Boolean); + const { + astro: enableAstro = false, + autoRenamePlugins = true, + componentExts = [], + gitignore: enableGitignore = true, + jsx: enableJsx = true, + react: enableReact = false, + regexp: enableRegexp = true, + solid: enableSolid = false, + svelte: enableSvelte = false, + typescript: enableTypeScript = hasPackageJsonAnyDependency(packageJson, ["typescript"]), + unicorn: enableUnicorn = true, + unocss: enableUnoCSS = false, + } = options; - if (hasOneDependency) { - hasLogged = true; + let isInEditor = options.isInEditor; - consoleLog( - `\nYour package.json container dependencies for the "${plugin}" eslint-plugin, please add the following dependencies with your chosen package manager to enable this plugin:`, - ); + if (isInEditor == null) { + isInEditor = isInEditorEnv(); - Object.entries(dependencies).forEach(([dependency, installed]) => { - if (!installed) { - consoleLog(` ${dependency}`); - } - }); + if (isInEditor) { + // eslint-disable-next-line no-console + console.log("[@anolilab/eslint-config] Detected running in editor, some rules are disabled."); } - }); - - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - if (hasLogged) { - consoleLog("\nTo disable this message, add the following to your package.json:"); - consoleLog(' "anolilab": { "eslint-config": { plugin: { "plugin-name": false } } }\n'); } - consoleLog('To disable all logging, add the following to your eslint command call "NO_LOGS=true eslint ..."'); + const stylisticOptions = options.stylistic === false ? false : typeof options.stylistic === "object" ? options.stylistic : {}; - global.hasAnolilabEsLintConfigLoaded = true; -} + if (stylisticOptions && !("jsx" in stylisticOptions)) { + stylisticOptions.jsx = enableJsx; + } -const configRules: Linter.RulesRecord = {}; + const configs: Awaitable[] = []; + + if (enableGitignore) { + if (typeof enableGitignore !== "boolean") { + configs.push( + interopDefault(import("eslint-config-flat-gitignore")).then((r) => [ + r({ + name: "anolilab/gitignore", + ...enableGitignore, + }), + ]), + ); + } else { + configs.push( + interopDefault(import("eslint-config-flat-gitignore")).then((r) => [ + r({ + name: "anolilab/gitignore", + strict: false, + }), + ]), + ); + } + } -let nodeVersion: string | undefined; + const typescriptOptions = resolveSubOptions(options, "typescript"); + const tsconfigPath = "tsconfigPath" in typescriptOptions ? typescriptOptions.tsconfigPath : undefined; -if (pkg?.engines?.["node"]) { - nodeVersion = pkg.engines["node"]; -} + // User can optionally pass a flat config item to the first argument + // We pick the known keys as ESLint would do schema validation + const fusedConfig = flatConfigProps.reduce((acc, key) => { + if (key in options) acc[key] = options[key] as any; + return acc; + }, {} as TypedFlatConfigItem); -Object.entries(engineRules).forEach(([rule, ruleConfig]) => { - Object.keys(ruleConfig) - .sort(rcompare) - .forEach((minVersion) => { - if (nodeVersion && intersects(nodeVersion, `<${minVersion}`)) { - // eslint-disable-next-line security/detect-object-injection - configRules[rule] = ruleConfig[minVersion as keyof typeof ruleConfig] as Linter.RuleEntry; - } - }); -}); - -// Workaround VS Code trying to run this file twice! -if (!global.hasAnolilabEsLintConfigPrettier && (hasDependency("prettier") || hasDevDependency("prettier"))) { - global.hasAnolilabEsLintConfigPrettier = true; - - if (anolilabEslintConfig["info_on_disabling_prettier_conflict_rule"] !== false) { - consoleLog("\nFound prettier as dependency, disabling some rules to fix wrong behavior of the rule with eslint and prettier"); + if (Object.keys(fusedConfig).length) { + configs.push([fusedConfig]); } -} -const config: Linter.Config = { - // After an .eslintrc.js file is loaded, ESLint will normally continue visiting all parent folders - // to look for other .eslintrc.js files, and also consult a personal file ~/.eslintrc.js. If any files - // are found, their options will be merged. This is difficult for humans to understand, and it will cause - // nondeterministic behavior if files are loaded from outside the Git working folder. - // - // Setting root=true causes ESLint to stop looking for other config files after the first .eslintrc.js - extends: [ - ...rules.map((plugin) => join(__dirname, `./config/${plugin}.js`)), - - ...pluginRules.map((plugin) => join(__dirname, `./config/plugins/${plugin}.js`)), - ], - globals: { - ...globals.browser, - ...globals.nodeBuiltin, - ...(packageIsTypeModule - ? { - __dirname: "off", - __filename: "off", - exports: "off", - require: "off", - } - : { __dirname: true, __filename: true, exports: true, require: true }), - }, - ignorePatterns: [ - "!.*", - - ".git/", - "node_modules/", - "bower_components/", - "jspm_packages/", - ".npm/", - - "lib-cov/", - "coverage/", - ".nyc_output/", - ".cache/", - - "build/", - "dist/", - "tmp/", - - "**/*.min.*", - - // Manually authored .d.ts files are generally used to describe external APIs that are not expected - // to follow our coding conventions. Linting those files tends to produce a lot of spurious suppressions, - // so we simply ignore them. - "*.d.ts", - - "pnpm-lock.yaml", - ], - overrides: [ - { - files: ["**/migrations/*.{js,ts}"], - rules: { - "filenames/match-regex": "off", - }, - }, - { - files: [ - // Test files - "**/*.spec.{js,ts,tsx}", - "**/*.test.{js,ts,tsx}", - - // Facebook convention - "**/__mocks__/*.{js,ts,tsx}", - "**/__tests__/*.{js,ts,tsx}", - - // Microsoft convention - "**/test/*.{js,ts,tsx}", - ], - rules: { - "no-magic-numbers": "off", - "sonarjs/no-duplicate-string": "off", - }, - }, - // Fixes https://github.com/eslint/eslint/discussions/15305 - { - files: packageIsTypeModule ? ["**/*.js", "**/*.mjs"] : ["**/*.mjs"], - parser: "@babel/eslint-parser", - parserOptions: { - babelOptions: { - plugins: ["@babel/plugin-syntax-import-assertions"], - }, - requireConfigFile: false, - }, - }, - { - env: { - commonjs: true, - }, - files: ["**/*.cjs"], - // inside *.cjs files. restore commonJS "globals" - globals: { - __dirname: true, - __filename: true, - exports: true, - require: true, - }, - }, - { - env: { - commonjs: false, - }, - files: ["**/*.mjs"], - globals: { - __dirname: "off", - __filename: "off", - exports: "off", - require: "off", - }, - }, - ], - // Disable the parser by default - parser: "", - // is loaded. - rules: { - ...configRules, - }, -}; + let composer = new FlatConfigComposer(); -export default config; + composer = composer.append(...configs, ...(userConfigs as any)); + + // if (autoRenamePlugins) { + // composer = composer.renamePlugins(defaultPluginRenaming); + // } + + return composer; +}; diff --git a/packages/eslint-config/src/index2.ts b/packages/eslint-config/src/index2.ts new file mode 100644 index 000000000..85cfb2b34 --- /dev/null +++ b/packages/eslint-config/src/index2.ts @@ -0,0 +1,228 @@ +/** + * rushstack eslint-patch is used to include plugins as dev + * dependencies instead of imposing them as peer dependencies + * + * {@link https://www.npmjs.com/package/@rushstack/eslint-patch} + * {@link https://stackoverflow.com/a/74478635/1392749} + * {@link https://github.com/eslint/eslint/issues/3458} + * {@link https://eslint.org/blog/2022/08/new-config-system-part-1/} + * {@link https://eslint.org/blog/2022/08/new-config-system-part-2/} + * {@link https://eslint.org/blog/2022/08/new-config-system-part-3/} + * {@link https://eslint.org/docs/latest/user-guide/configuring/configuration-files-new} + */ +import "@rushstack/eslint-patch/modern-module-resolution"; + +import { join } from "node:path"; + +import { hasDependency, hasDevDependency, packageIsTypeModule, pkg } from "@anolilab/package-json-utils"; +import type { Linter } from "eslint"; +import globals from "globals"; +import { intersects, rcompare } from "semver"; + +import { internalPluginConfig, pluginRules, possiblePluginRules, rules } from "./config"; +import engineRules from "./engine-node-overwrite"; +import anolilabEslintConfig from "./utils/eslint-config"; +import { consoleLog, consolePlugin } from "./utils/loggers"; + +// Workaround VS Code trying to run this file twice! +if (!global.hasAnolilabEsLintConfigLoaded) { + if (process.env["DEBUG"]) { + consoleLog("\n@anolilab/eslint-config loaded the following plugins:\n"); + + consoleLog(" @rushstack/eslint-plugin-security"); + internalPluginConfig + .map((name: string) => { + if (name === "import") { + return "i"; + } + + if (name === "node") { + return "n"; + } + + return name; + }) + .forEach((plugin) => consolePlugin(plugin)); + } + + let hasLogged = false; + + Object.entries(possiblePluginRules).forEach(([plugin, dependencies]) => { + const hasOneDependency = Object.values(dependencies).some(Boolean); + + if (hasOneDependency) { + hasLogged = true; + + consoleLog( + `\nYour package.json container dependencies for the "${plugin}" eslint-plugin, please add the following dependencies with your chosen package manager to enable this plugin:`, + ); + + Object.entries(dependencies).forEach(([dependency, installed]) => { + if (!installed) { + consoleLog(` ${dependency}`); + } + }); + } + }); + + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (hasLogged) { + consoleLog("\nTo disable this message, add the following to your package.json:"); + consoleLog(' "anolilab": { "eslint-config": { plugin: { "plugin-name": false } } }\n'); + } + + consoleLog('To disable all logging, add the following to your eslint command call "NO_LOGS=true eslint ..."'); + + global.hasAnolilabEsLintConfigLoaded = true; +} + +const configRules: Linter.RulesRecord = {}; + +let nodeVersion: string | undefined; + +if (pkg?.engines?.["node"]) { + nodeVersion = pkg.engines["node"]; +} + +Object.entries(engineRules).forEach(([rule, ruleConfig]) => { + Object.keys(ruleConfig) + .sort(rcompare) + .forEach((minVersion) => { + if (nodeVersion && intersects(nodeVersion, `<${minVersion}`)) { + // eslint-disable-next-line security/detect-object-injection + configRules[rule] = ruleConfig[minVersion as keyof typeof ruleConfig] as Linter.RuleEntry; + } + }); +}); + +// Workaround VS Code trying to run this file twice! +if (!global.hasAnolilabEsLintConfigPrettier && (hasDependency("prettier") || hasDevDependency("prettier"))) { + global.hasAnolilabEsLintConfigPrettier = true; + + if (anolilabEslintConfig["info_on_disabling_prettier_conflict_rule"] !== false) { + consoleLog("\nFound prettier as dependency, disabling some rules to fix wrong behavior of the rule with eslint and prettier"); + } +} + +const config: Linter.Config = { + // After an .eslintrc.js file is loaded, ESLint will normally continue visiting all parent folders + // to look for other .eslintrc.js files, and also consult a personal file ~/.eslintrc.js. If any files + // are found, their options will be merged. This is difficult for humans to understand, and it will cause + // nondeterministic behavior if files are loaded from outside the Git working folder. + // + // Setting root=true causes ESLint to stop looking for other config files after the first .eslintrc.js + extends: [ + ...rules.map((plugin) => join(__dirname, `./config/${plugin}.js`)), + + ...pluginRules.map((plugin) => join(__dirname, `./config/plugins/${plugin}.js`)), + ], + globals: { + ...globals.browser, + ...globals.nodeBuiltin, + ...(packageIsTypeModule + ? { + __dirname: "off", + __filename: "off", + exports: "off", + require: "off", + } + : { __dirname: true, __filename: true, exports: true, require: true }), + }, + ignorePatterns: [ + "!.*", + + ".git/", + "node_modules/", + "bower_components/", + "jspm_packages/", + ".npm/", + + "lib-cov/", + "coverage/", + ".nyc_output/", + ".cache/", + + "build/", + "dist/", + "tmp/", + + "**/*.min.*", + + // Manually authored .d.ts files are generally used to describe external APIs that are not expected + // to follow our coding conventions. Linting those files tends to produce a lot of spurious suppressions, + // so we simply ignore them. + "*.d.ts", + + "pnpm-lock.yaml", + ], + overrides: [ + { + files: ["**/migrations/*.{js,ts}"], + rules: { + "filenames/match-regex": "off", + }, + }, + { + files: [ + // Test files + "**/*.spec.{js,ts,tsx}", + "**/*.test.{js,ts,tsx}", + + // Facebook convention + "**/__mocks__/*.{js,ts,tsx}", + "**/__tests__/*.{js,ts,tsx}", + + // Microsoft convention + "**/test/*.{js,ts,tsx}", + ], + rules: { + "no-magic-numbers": "off", + "sonarjs/no-duplicate-string": "off", + }, + }, + // Fixes https://github.com/eslint/eslint/discussions/15305 + { + files: packageIsTypeModule ? ["**/*.js", "**/*.mjs"] : ["**/*.mjs"], + parser: "@babel/eslint-parser", + parserOptions: { + babelOptions: { + plugins: ["@babel/plugin-syntax-import-assertions"], + }, + requireConfigFile: false, + }, + }, + { + env: { + commonjs: true, + }, + files: ["**/*.cjs"], + // inside *.cjs files. restore commonJS "globals" + globals: { + __dirname: true, + __filename: true, + exports: true, + require: true, + }, + }, + { + env: { + commonjs: false, + }, + files: ["**/*.mjs"], + globals: { + __dirname: "off", + __filename: "off", + exports: "off", + require: "off", + }, + }, + ], + // Disable the parser by default + parser: "", + // is loaded. + rules: { + ...configRules, + }, +}; + +export default config; diff --git a/packages/eslint-config/src/postinstall.ts b/packages/eslint-config/src/postinstall.ts deleted file mode 100644 index 6f8387eed..000000000 --- a/packages/eslint-config/src/postinstall.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { env, exit } from "node:process"; - -import { projectPath } from "@anolilab/package-json-utils"; - -import writeEslintIgnore from "./postinstall/write-eslint-ignore"; -import writeEslintRc from "./postinstall/write-eslint-rc"; - -if (env["CI"]) { - exit(0); -} - -console.log("Configuring @anolilab/eslint-config", projectPath, "\n"); - -// eslint-disable-next-line unicorn/prefer-top-level-await -(async () => { - try { - // eslint-disable-next-line compat/compat - await Promise.all([writeEslintRc(), writeEslintIgnore()]); - - console.log("😎 Everything went well, have fun!"); - - exit(0); - } catch (error) { - console.log("😬 something went wrong:"); - console.error(error); - - exit(1); - } -})(); diff --git a/packages/eslint-config/src/postinstall/write-eslint-ignore.ts b/packages/eslint-config/src/postinstall/write-eslint-ignore.ts deleted file mode 100644 index b51642ebc..000000000 --- a/packages/eslint-config/src/postinstall/write-eslint-ignore.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { existsSync, writeFile } from "node:fs"; -import { join } from "node:path"; -import { promisify } from "node:util"; - -import { projectPath } from "@anolilab/package-json-utils"; - -const writeFileAsync = promisify(writeFile); - -const writeEslintIgnore = async (): Promise => { - const eslintIgnorePath = join(projectPath, ".eslintignore"); - - // eslint-disable-next-line security/detect-non-literal-fs-filename - if (existsSync(eslintIgnorePath)) { - console.warn("⚠️ .eslintignore already exists"); - - return; - } - - await writeFileAsync(eslintIgnorePath, "", "utf8"); -}; - -export default writeEslintIgnore; diff --git a/packages/eslint-config/src/postinstall/write-eslint-rc.ts b/packages/eslint-config/src/postinstall/write-eslint-rc.ts deleted file mode 100644 index f19870f2a..000000000 --- a/packages/eslint-config/src/postinstall/write-eslint-rc.ts +++ /dev/null @@ -1,125 +0,0 @@ -import { existsSync, readFileSync, writeFile } from "node:fs"; -import { join } from "node:path"; -import { promisify } from "node:util"; - -import { packageIsTypeModule, projectPath } from "@anolilab/package-json-utils"; -import type { TsConfigJson } from "type-fest"; - -const writeFileAsync = promisify(writeFile); - -console.log("Configuring @anolilab/eslint-config", projectPath, "\n"); - -const configFile = ".eslintrc"; - -// eslint-disable-next-line sonarjs/cognitive-complexity -const writeEslintRc = async (): Promise => { - // eslint-disable-next-line no-restricted-syntax,no-loops/no-loops - for (const filename of [configFile, `${configFile}.js`, `${configFile}.cjs`, `${configFile}.json`, `${configFile}.yaml`, `${configFile}.yml`]) { - // eslint-disable-next-line security/detect-non-literal-fs-filename - if (existsSync(join(projectPath, filename))) { - console.warn(`⚠️ ${filename} already exists; -Make sure that it includes the following for @anolilab/eslint-config' -to work as it should: { extends: ["@anolilab/eslint-config"] }.`); - - return; - } - } - - const eslintPath = join(projectPath, `.eslintrc.${packageIsTypeModule ? "c" : ""}js`); - - let pluginExtends = ""; - let parserOptions = ` - parserOptions: { - ecmaVersion: "latest", - sourceType: ${packageIsTypeModule ? '"module"' : '"commonjs"'}, - },`; - - const tsconfigPath = join(projectPath, "tsconfig.json"); - - let ecmaVersion = "latest"; - - // eslint-disable-next-line security/detect-non-literal-fs-filename - if (existsSync(tsconfigPath)) { - // eslint-disable-next-line security/detect-non-literal-fs-filename - const tsConfig = JSON.parse(readFileSync(tsconfigPath, "utf8")) as TsConfigJson; - - if (tsConfig.compilerOptions?.target) { - ecmaVersion = tsConfig.compilerOptions.target; - - ecmaVersion = - ecmaVersion.toLowerCase() === "es2022" || ecmaVersion.toLowerCase() === "esnext" ? "latest" : ecmaVersion.toLowerCase().replace("es", ""); - - if (ecmaVersion !== "latest" && ecmaVersion !== "2022" && ecmaVersion !== "2021" && ecmaVersion !== "6") { - pluginExtends = `, "plugin:es-x/restrict-to-es${ecmaVersion}"`; - } - } - - parserOptions = ` - parserOptions: { - project: true, - ecmaVersion: ${ecmaVersion === "latest" ? `"${ecmaVersion}"` : ecmaVersion}, - sourceType: ${packageIsTypeModule ? '"module"' : '"commonjs"'}, - },`; - } - - const content = `/** @ts-check */ -const { defineConfig } = require('@anolilab/eslint-config/define-config'); -${["es2015", "es2017", "es2020", "es2021", "latest"].includes(ecmaVersion) ? 'const { globals } = require("@anolilab/eslint-config/globals");' : ""} - -/// -/// -/// -/// -/// - -module.exports = defineConfig({ - root: true, - extends: ["@anolilab/eslint-config"${pluginExtends}], - ignorePatterns: ["!**/*"], - env: { - // Your environments (which contains several predefined global variables) - // Most environments are loaded automatically if our rules are added - },${parserOptions} - globals: {${ - ["es2015", "es2017", "es2020", "es2021", "latest"].includes(ecmaVersion) - ? `\n ...globals.${ecmaVersion === "latest" ? "es2021" : ecmaVersion},` - : "" -} - // Your global variables (setting to false means it's not allowed to be reassigned) - // myGlobal: false - }, - rules: { - // Customize your rules - }, - overrides: [ - { - files: [ - "**/*.ts", - "**/*.tsx", - "**/*.mts", - "**/*.cts", - "**/*.js", - "**/*.jsx", - ], - // Set parserOptions.project for the project to allow TypeScript to create the type-checker behind the scenes when we run linting - parserOptions: {}, - rules: {}, - }, - { - files: ["**/*.ts", "**/*.tsx", "**/*.mts", "**/*.cts"], - // Set parserOptions.project for the project to allow TypeScript to create the type-checker behind the scenes when we run linting - parserOptions: {}, - rules: {}, - }, - { - files: ["**/*.js", "**/*.jsx"], - rules: {}, - }, - ], -}); -`; - - await writeFileAsync(eslintPath, content, "utf8"); -}; - -export default writeEslintRc; diff --git a/packages/eslint-config/src/stub.d.ts b/packages/eslint-config/src/stub.d.ts new file mode 100644 index 000000000..49e0555be --- /dev/null +++ b/packages/eslint-config/src/stub.d.ts @@ -0,0 +1,4 @@ +declare module "eslint-plugin-react-hooks"; +declare module "eslint-plugin-react-refresh"; +declare module "eslint-plugin-you-dont-need-lodash-underscore"; +declare module "eslint-plugin-validate-jsx-nesting"; diff --git a/packages/eslint-config/src/types.d.ts b/packages/eslint-config/src/types.d.ts deleted file mode 100644 index 50343ddf9..000000000 --- a/packages/eslint-config/src/types.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -export type PackageRules = { - configName: string; - dependencies: string[]; - oneOfDependency?: string[]; - resolve?: string[]; - files?: string[]; -}[]; diff --git a/packages/eslint-config/src/types.ts b/packages/eslint-config/src/types.ts new file mode 100644 index 000000000..a3fddfb0c --- /dev/null +++ b/packages/eslint-config/src/types.ts @@ -0,0 +1,427 @@ +import type { StylisticCustomizeOptions } from "@stylistic/eslint-plugin"; +import type { ParserOptions } from "@typescript-eslint/parser"; +import type { Linter } from "eslint"; +import type { FlatGitignoreOptions } from "eslint-config-flat-gitignore"; +import type { ConfigNames, RuleOptions } from "./typegen"; +import type { VendoredPrettierOptions } from "./vender/prettier-types"; +import type { NormalizedPackageJson } from "@visulima/package"; + +export type Awaitable = T | Promise; + +export type Rules = RuleOptions; + +export type { ConfigNames }; + +export type TypedFlatConfigItem = Omit, "plugins"> & { + // Relax plugins type limitation, as most of the plugins did not have correct type info yet. + /** + * An object containing a name-value mapping of plugin names to plugin objects. When `files` is specified, these plugins are only available to the matching files. + * + * @see [Using plugins in your configuration](https://eslint.org/docs/latest/user-guide/configuring/configuration-files-new#using-plugins-in-your-configuration) + */ + plugins?: Record; +}; + +export interface OptionsFiles { + /** + * Override the `files` option to provide custom globs. + */ + files?: string[]; +} + +export interface OptionsPackageJson { + /** + * The package.json object + */ + packageJson: NormalizedPackageJson; +} + +export type OptionsTypescript = (OptionsTypeScriptWithTypes & OptionsOverrides) | (OptionsTypeScriptParserOptions & OptionsOverrides); + +export interface OptionsFormatters { + /** + * Enable formatting support for CSS, Less, Sass, and SCSS. + * + * Currently only support Prettier. + */ + css?: "prettier" | boolean; + + /** + * Enable formatting support for HTML. + * + * Currently only support Prettier. + */ + html?: "prettier" | boolean; + + /** + * Enable formatting support for XML. + * + * Currently only support Prettier. + */ + xml?: "prettier" | boolean; + + /** + * Enable formatting support for SVG. + * + * Currently only support Prettier. + */ + svg?: "prettier" | boolean; + + /** + * Enable formatting support for Markdown. + * + * Support both Prettier and dprint. + * + * When set to `true`, it will use Prettier. + */ + markdown?: "prettier" | "dprint" | boolean; + + /** + * Enable formatting support for GraphQL. + */ + graphql?: "prettier" | boolean; + + /** + * Custom options for Prettier. + * + * By default it's controlled by our own config. + */ + prettierOptions?: VendoredPrettierOptions; + + /** + * Custom options for dprint. + * + * By default it's controlled by our own config. + */ + dprintOptions?: boolean; + + /** + * Install the prettier plugin for handle Slidev markdown + * + * Only works when `markdown` is enabled with `prettier`. + */ + slidev?: + | boolean + | { + files?: string[]; + }; + + /** + * Enable formatting support for Astro. + * + * Currently only support Prettier. + */ + astro?: "prettier" | boolean; +} + +export interface OptionsComponentExts { + /** + * Additional extensions for components. + * + * @example ['vue'] + * @default [] + */ + componentExts?: string[]; +} + +export interface OptionsUnicorn { + /** + * Include all rules recommended by `eslint-plugin-unicorn`, instead of only ones picked by Anthony. + * + * @default false + */ + allRecommended?: boolean; +} + +export interface OptionsTypeScriptParserOptions { + /** + * Additional parser options for TypeScript. + */ + parserOptions?: Partial; + + /** + * Glob patterns for files that should be type aware. + * @default ['**\/*.{ts,tsx}'] + */ + filesTypeAware?: string[]; + + /** + * Glob patterns for files that should not be type aware. + * @default ['**\/*.md\/**', '**\/*.astro/*.ts'] + */ + ignoresTypeAware?: string[]; +} + +export interface OptionsTypeScriptWithTypes { + /** + * When this options is provided, type aware rules will be enabled. + * @see https://typescript-eslint.io/linting/typed-linting/ + */ + tsconfigPath?: string; + + /** + * Override type aware rules. + */ + overridesTypeAware?: TypedFlatConfigItem["rules"]; +} + +export interface OptionsHasTypeScript { + typescript?: boolean; +} + +export interface OptionsHasPrettier { + prettier?: boolean; +} + +export interface OptionsStylistic { + stylistic?: boolean | StylisticConfig; +} + +export interface StylisticConfig extends Pick {} + +export interface OptionsOverrides { + overrides?: TypedFlatConfigItem["rules"]; +} + +export interface OptionsProjectType { + /** + * Type of the project. `lib` will enable more strict rules for libraries. + * + * @default 'app' + */ + type?: "app" | "lib"; +} + +export interface OptionsRegExp { + /** + * Override rulelevels + */ + level?: "error" | "warn"; +} + +export interface OptionsIsInEditor { + isInEditor?: boolean; +} + +export interface OptionsUnoCSS extends OptionsOverrides { + /** + * Enable attributify support. + * @default true + */ + attributify?: boolean; + /** + * Enable strict mode by throwing errors about blocklisted classes. + * @default false + */ + strict?: boolean; +} + +export interface OptionsConfig extends OptionsComponentExts, OptionsProjectType { + /** + * The working directory for the config. + * + * @default process.cwd() + */ + cwd?: string; + + /** + * Enable gitignore support. + * + * Passing an object to configure the options. + * + * @see https://github.com/antfu/eslint-config-flat-gitignore + * @default true + */ + gitignore?: boolean | FlatGitignoreOptions; + + /** + * Disable some opinionated rules to Anolilab's preference. + * + * Including: + * - `anolilab/top-level-function` + * - `anolilab/if-newline` + * + * @default false + */ + lessOpinionated?: boolean; + + /** + * Core rules. Can't be disabled. + */ + javascript?: OptionsOverrides; + + /** + * Enable TypeScript support. + * + * Passing an object to enable TypeScript Language Server support. + * + * @default auto-detect based on the dependencies + */ + typescript?: boolean | OptionsTypescript; + + /** + * Enable JSX related rules. + * + * Currently only stylistic rules are included. + * + * @default true + */ + jsx?: boolean; + + /** + * Options for eslint-plugin-unicorn. + * + * @default true + */ + unicorn?: boolean | OptionsUnicorn; + + /** + * Enable test support. + * + * @default true + */ + test?: boolean | OptionsOverrides; + + /** + * Enable JSONC support. + * + * @default true + */ + jsonc?: boolean | OptionsOverrides; + + /** + * Enable YAML support. + * + * @default true + */ + yaml?: boolean | OptionsOverrides; + + /** + * Enable TOML support. + * + * @default true + */ + toml?: boolean | OptionsOverrides; + + /** + * Enable ASTRO support. + * + * Requires installing: + * - `eslint-plugin-astro` + * + * Requires installing for formatting .astro: + * - `prettier-plugin-astro` + * + * @default false + */ + astro?: boolean | OptionsOverrides; + + /** + * Enable linting for **code snippets** in Markdown. + * + * For formatting Markdown content, enable also `formatters.markdown`. + * + * @default true + */ + markdown?: boolean | OptionsOverrides; + + /** + * Enable stylistic rules. + * + * @see https://eslint.style/ + * @default true + */ + stylistic?: boolean | (StylisticConfig & OptionsOverrides); + + /** + * Enable regexp rules. + * + * @see https://ota-meshi.github.io/eslint-plugin-regexp/ + * @default true + */ + regexp?: boolean | (OptionsRegExp & OptionsOverrides); + + /** + * Enable react rules. + * + * Requires installing: + * - `@eslint-react/eslint-plugin` + * - `eslint-plugin-react-hooks` + * - `eslint-plugin-react-refresh` + * + * @default false + */ + react?: boolean | OptionsOverrides; + /** + * Enable solid rules. + * + * Requires installing: + * - `eslint-plugin-solid` + * + * @default false + */ + solid?: boolean | OptionsOverrides; + + /** + * Enable svelte rules. + * + * Requires installing: + * - `eslint-plugin-svelte` + * + * @default false + */ + svelte?: boolean; + + /** + * Enable unocss rules. + * + * Requires installing: + * - `@unocss/eslint-plugin` + * + * @default false + */ + unocss?: boolean | OptionsUnoCSS; + + /** + * Use external formatters to format files. + * + * Requires installing: + * - `eslint-plugin-format` + * + * When set to `true`, it will enable all formatters. + * + * @default false + */ + formatters?: boolean | OptionsFormatters; + + /** + * Control to disable some rules in editors. + * @default auto-detect based on the process.env + */ + isInEditor?: boolean; + + /** + * Automatically rename plugins in the config. + * + * @default true + */ + autoRenamePlugins?: boolean; + + /** + * Provide overrides for rules for each integration. + * + * @deprecated use `overrides` option in each integration key instead + */ + overrides?: { + stylistic?: TypedFlatConfigItem["rules"]; + javascript?: TypedFlatConfigItem["rules"]; + typescript?: TypedFlatConfigItem["rules"]; + test?: TypedFlatConfigItem["rules"]; + jsonc?: TypedFlatConfigItem["rules"]; + markdown?: TypedFlatConfigItem["rules"]; + yaml?: TypedFlatConfigItem["rules"]; + toml?: TypedFlatConfigItem["rules"]; + react?: TypedFlatConfigItem["rules"]; + svelte?: TypedFlatConfigItem["rules"]; + }; +} diff --git a/packages/eslint-config/src/utils/create-config.ts b/packages/eslint-config/src/utils/create-config.ts index 57bda539b..faa826f61 100644 --- a/packages/eslint-config/src/utils/create-config.ts +++ b/packages/eslint-config/src/utils/create-config.ts @@ -1,22 +1,22 @@ import type { Linter } from "eslint"; +import type { OptionsFiles, OptionsHasTypeScript, OptionsIsInEditor, OptionsOverrides, OptionsStylistic, TypedFlatConfigItem } from "../types"; type FileType = | "all" - | "ava" | "d.ts" | "javascript" - | "jest" | "js_and_ts" | "jsx_and_tsx" | "markdown_inline_js_jsx" | "markdown" - | "mdx" | "postcss" - | "tests" + | "yaml" + | "toml" + | "storybook" | "typescript" | "vitest"; -const getType = (fileType: FileType) => { +export const getFilesGlobs = (fileType: FileType): string[] => { switch (fileType) { case "typescript": { // @see https://devblogs.microsoft.com/typescript/announcing-typescript-4-5-beta/#new-file-extensions @@ -40,83 +40,34 @@ const getType = (fileType: FileType) => { case "markdown_inline_js_jsx": { return ["**/*.{md,mkdn,mdown,markdown}/*.{js,javascript,jsx,node,json}"]; } - case "mdx": { - return ["**/*.mdx"]; - } - case "jest": { - return [ - // Test files - "**/*.spec.{js,ts,tsx}", - "**/*.test.{js,ts,tsx}", - "**/test/*.{js,ts,tsx}", - - // Facebook convention - "**/__mocks__/*.{js,ts,tsx}", - "**/__tests__/*.{js,ts,tsx}", - ]; - } - case "ava": { - return [ - "test.js", - "src/test.js", - "source/test.js", - "**/test-*.js", - "**/*.spec.js", - "**/*.test.js", - "**/test/**/*.js", - "**/tests/**/*.js", - "**/__tests__/**/*.js", - ]; - } case "vitest": { return ["**/__tests__/**/*.?(c|m)[jt]s?(x)", "**/?(*.){test,spec}.?(c|m)[jt]s?(x)"]; } - case "tests": { - return [ - // ava - "test.js", - "src/test.js", - "source/test.js", - "**/test-*.js", - "**/*.spec.js", - "**/*.test.js", - "**/test/**/*.js", - "**/tests/**/*.js", - "**/__tests__/**/*.js", - - // jest - "**/*.spec.{js,ts,tsx}", - "**/*.test.{js,ts,tsx}", - "**/test/*.{js,ts,tsx}", - "**/__mocks__/*.{js,ts,tsx}", - "**/__tests__/*.{js,ts,tsx}", - "**/__tests__/**/*.?(c|m)[jt]s?(x)", - "**/?(*.){test,spec}.?(c|m)[jt]s?(x)", - ]; - } case "d.ts": { return ["**/*.d.ts"]; } + case "storybook": { + return ["**/*.stories.@(ts|tsx|js|jsx|mjs|cjs)", "**/*.story.@(ts|tsx|js|jsx|mjs|cjs)"]; + } case "postcss": { return ["**/postcss.config.js", "**/postcssrc.js", "**/postcss.config.cjs", "**/postcssrc.cjs"]; } + case "yaml": { + return ["**/*.yaml", "**/*.yml"]; + } + case "toml": { + return ["**/*.toml"]; + } default: { throw new Error("Unknown type"); } } }; -export const createConfig = (type: FileType, config: Omit, environment?: Record): Linter.Config => { - return { - env: environment, - overrides: [ - { - files: getType(type), - ...config, - }, - ], - }; -}; +export const createConfig = + (type: FileType, rules: (options: O, files: string[]) => Promise[]>) => + async (options: O): Promise => + await rules(options, getFilesGlobs(type)); export const createConfigs = ( rules: { config: Omit; @@ -126,7 +77,7 @@ export const createConfigs = ( return { overrides: rules.map(({ config, type }) => { return { - files: getType(type), + files: getFilesGlobs(type), ...config, }; }), diff --git a/packages/eslint-config/src/utils/eslint-config.ts b/packages/eslint-config/src/utils/eslint-config.ts deleted file mode 100644 index e1e6ae8af..000000000 --- a/packages/eslint-config/src/utils/eslint-config.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { pkg } from "@anolilab/package-json-utils"; - -if (!global.anolilabEslintPackageJsonConfig && pkg) { - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-member-access - global.anolilabEslintPackageJsonConfig = pkg["anolilab"]?.["eslint-config"]; -} - -const config: Record = global.anolilabEslintPackageJsonConfig ?? {}; - -export default config; diff --git a/packages/eslint-config/src/utils/indent.ts b/packages/eslint-config/src/utils/indent.ts deleted file mode 100644 index cf1e48e54..000000000 --- a/packages/eslint-config/src/utils/indent.ts +++ /dev/null @@ -1,15 +0,0 @@ -import anolilabEslintConfig from "./eslint-config"; - -if (global.anolilabEslintIndent === undefined && anolilabEslintConfig["indent"]) { - if (Number.isNaN(anolilabEslintConfig["indent"])) { - throw new TypeError("Indent must be a number"); - } - - global.anolilabEslintIndent = Number(anolilabEslintConfig["indent"]); -} else { - global.anolilabEslintIndent = 4; -} - -const indent = global.anolilabEslintIndent; - -export default indent; diff --git a/packages/eslint-config/src/utils/interop-default.ts b/packages/eslint-config/src/utils/interop-default.ts new file mode 100644 index 000000000..a3846e409 --- /dev/null +++ b/packages/eslint-config/src/utils/interop-default.ts @@ -0,0 +1,9 @@ +import type { Awaitable } from "../types"; + +const interopDefault = async (m: Awaitable): Promise => { + const resolved = await m; + + return (resolved as any).default || resolved; +}; + +export default interopDefault; diff --git a/packages/eslint-config/src/utils/is-in-editor.ts b/packages/eslint-config/src/utils/is-in-editor.ts index 9d05ddae4..06c011bec 100644 --- a/packages/eslint-config/src/utils/is-in-editor.ts +++ b/packages/eslint-config/src/utils/is-in-editor.ts @@ -1,3 +1,15 @@ -const isInEditor = (process.env["VSCODE_PID"] || process.env["JETBRAINS_IDE"]) && !process.env["CI"]; +import isInGitHooksOrLintStaged from "./is-in-git-hooks-or-lint-staged"; -export default isInEditor; +const isInEditorEnv = (): boolean => { + if (process.env.CI) { + return false; + } + + if (isInGitHooksOrLintStaged()) { + return false; + } + + return !!(false || process.env.VSCODE_PID || process.env.VSCODE_CWD || process.env.JETBRAINS_IDE || process.env.VIM || process.env.NVIM); +}; + +export default isInEditorEnv; diff --git a/packages/eslint-config/src/utils/is-in-git-hooks-or-lint-staged.ts b/packages/eslint-config/src/utils/is-in-git-hooks-or-lint-staged.ts new file mode 100644 index 000000000..2f8769cd7 --- /dev/null +++ b/packages/eslint-config/src/utils/is-in-git-hooks-or-lint-staged.ts @@ -0,0 +1,5 @@ +const isInGitHooksOrLintStaged = (): boolean => { + return !!(false || process.env.GIT_PARAMS || process.env.VSCODE_GIT_COMMAND || process.env.npm_lifecycle_script?.startsWith("lint-staged")); +}; + +export default isInGitHooksOrLintStaged; diff --git a/packages/eslint-config/src/vender/prettier-types.ts b/packages/eslint-config/src/vender/prettier-types.ts new file mode 100644 index 000000000..4dcb74d7f --- /dev/null +++ b/packages/eslint-config/src/vender/prettier-types.ts @@ -0,0 +1,163 @@ +/** + * Vendor types from Prettier so we don't rely on the dependency. + */ + +export type VendoredPrettierOptions = Partial; + +export type VendoredPrettierRuleOptions = VendoredPrettierOptions & { + parser?: BuiltInParserName | ExternalParserName; + [k: string]: unknown | undefined; +}; + +export interface VendoredPrettierOptionsRequired { + /** + * Specify the line length that the printer will wrap on. + * @default 120 + */ + printWidth: number; + /** + * Specify the number of spaces per indentation-level. + */ + tabWidth: number; + /** + * Indent lines with tabs instead of spaces + */ + useTabs?: boolean; + /** + * Print semicolons at the ends of statements. + */ + semi: boolean; + /** + * Use single quotes instead of double quotes. + */ + singleQuote: boolean; + /** + * Use single quotes in JSX. + */ + jsxSingleQuote: boolean; + /** + * Print trailing commas wherever possible. + */ + trailingComma: "none" | "es5" | "all"; + /** + * Print spaces between brackets in object literals. + */ + bracketSpacing: boolean; + /** + * Put the `>` of a multi-line HTML (HTML, XML, JSX, Vue, Angular) element at the end of the last line instead of being + * alone on the next line (does not apply to self closing elements). + */ + bracketSameLine: boolean; + /** + * Put the `>` of a multi-line JSX element at the end of the last line instead of being alone on the next line. + * @deprecated use bracketSameLine instead + */ + jsxBracketSameLine: boolean; + /** + * Format only a segment of a file. + */ + rangeStart: number; + /** + * Format only a segment of a file. + * @default Number.POSITIVE_INFINITY + */ + rangeEnd: number; + /** + * By default, Prettier will wrap markdown text as-is since some services use a linebreak-sensitive renderer. + * In some cases you may want to rely on editor/viewer soft wrapping instead, so this option allows you to opt out. + * @default "preserve" + */ + proseWrap: "always" | "never" | "preserve"; + /** + * Include parentheses around a sole arrow function parameter. + * @default "always" + */ + arrowParens: "avoid" | "always"; + /** + * Provide ability to support new languages to prettier. + */ + plugins: Array; + /** + * How to handle whitespaces in HTML. + * @default "css" + */ + htmlWhitespaceSensitivity: "css" | "strict" | "ignore"; + /** + * Which end of line characters to apply. + * @default "lf" + */ + endOfLine: "auto" | "lf" | "crlf" | "cr"; + /** + * Change when properties in objects are quoted. + * @default "as-needed" + */ + quoteProps: "as-needed" | "consistent" | "preserve"; + /** + * Whether or not to indent the code inside diff --git a/packages/eslint-config/__fixtures__/input/css.css b/packages/eslint-config/__fixtures__/input/css.css new file mode 100644 index 000000000..12a4724d6 --- /dev/null +++ b/packages/eslint-config/__fixtures__/input/css.css @@ -0,0 +1,10 @@ +@media (max-width: 480px) { + .bd-examples {margin-right: -.75rem;margin-left: -.75rem + } + + .bd-examples>[class^="col-"] { + padding-right: .75rem; + padding-left: .75rem; + + } +} diff --git a/packages/eslint-config/__fixtures__/input/html.html b/packages/eslint-config/__fixtures__/input/html.html new file mode 100644 index 000000000..1516dca6a --- /dev/null +++ b/packages/eslint-config/__fixtures__/input/html.html @@ -0,0 +1,17 @@ + + + + + My tITlE + + + +

Hello world!
This is HTML5 Boilerplate.

+ + + + diff --git a/packages/eslint-config/__fixtures__/input/javascript.js b/packages/eslint-config/__fixtures__/input/javascript.js new file mode 100644 index 000000000..2baab92d7 --- /dev/null +++ b/packages/eslint-config/__fixtures__/input/javascript.js @@ -0,0 +1,76 @@ +// This file is generated by ChatGPT + +// eslint-disable-next-line no-console +var log = console.log; + +// Define a class using ES6 class syntax +class Person { + constructor(name, age) { + this.name = name; + this.age = age; + } + + // Define a method within the class + sayHello() { + log(`Hello, my name is ${this.name} and I am ${this.age} years old.`); + } +} + +// Create an array of objects +const people = [ + new Person("Alice", 30), + new Person("Bob", 25), + new Person("Charlie", 35), +]; + +// Use the forEach method to iterate over the array +people.forEach((person) => { + person.sayHello(); +}); + +// Use a template literal to create a multiline string +const multilineString = ` + This is a multiline string + that spans multiple lines. +`; + +// Use destructuring assignment to extract values from an object +const { age, name } = people[0]; + +log(`First person in the array is ${name} and they are ${age} years old.`, multilineString); + +// Use the spread operator to create a new array +const numbers = [1, 2, 3]; +const newNumbers = [...numbers, 4, 5]; + +log(newNumbers); + +// Use a try-catch block for error handling +try { + // Attempt to parse an invalid JSON string + JSON.parse("invalid JSON"); +} catch (error) { + console.error("Error parsing JSON:", error.message); +} + +// Use a ternary conditional operator +const isEven = number_ => number_ % 2 === 0; +const number = 7; + +log(`${number} is ${isEven(number) ? "even" : "odd"}.`); + +// Use a callback function with setTimeout for asynchronous code +setTimeout(() => { + log("This code runs after a delay of 2 seconds."); +}, 2000); + +let a; let b; let c; let d; let + foo; + +if (a + || b + || c || d + || (d && b) +) { + foo(); +} diff --git a/packages/eslint-config/__fixtures__/input/jsx.jsx b/packages/eslint-config/__fixtures__/input/jsx.jsx new file mode 100644 index 000000000..1b26251cc --- /dev/null +++ b/packages/eslint-config/__fixtures__/input/jsx.jsx @@ -0,0 +1,28 @@ +export function HelloWorld({ + greeted = "\"World\"", + greeting = "hello", + onMouseOver, + silent = false + , +}) { + if (!greeting) { + return null; + } + + // TODO: Don't use random in render + let number_ = Math + .floor(Math.random() * 1E+7) + .toString() + .replaceAll(/\.\d+/g, ""); + + return
+ { greeting.slice(0, 1).toUpperCase() + greeting.slice(1).toLowerCase() } + {greeting.endsWith(",") + ? " " + : ", " } + + { greeted } + + { silent ? "." : "!"} +
; +} diff --git a/packages/eslint-config/__fixtures__/input/markdown.md b/packages/eslint-config/__fixtures__/input/markdown.md new file mode 100644 index 000000000..7dfed2f97 --- /dev/null +++ b/packages/eslint-config/__fixtures__/input/markdown.md @@ -0,0 +1,38 @@ +Header +====== + +_Look,_ code blocks are formatted *too!* + +```js +// This should be handled by ESLint instead of Prettier +/** + * + * @param x + */ +function identity(x) { + if (foo) { + console.log("bar"); + } +} +``` + +```css +/* This should be handled by Prettier */ +.foo { color:red;} +``` + +Pilot|Airport|Hours +--|:--:|--: +John Doe|SKG|1338 +Jane Roe|JFK|314 + +- - - - - - - - - - - - - - - + ++ List + + with a [link] (/to/somewhere) ++ and [another one] + + [another one]: http://example.com 'Example title' + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. +Curabitur consectetur maximus risus, sed maximus tellus tincidunt et. diff --git a/packages/eslint-config/__fixtures__/input/svelte.svelte b/packages/eslint-config/__fixtures__/input/svelte.svelte new file mode 100644 index 000000000..bf114b923 --- /dev/null +++ b/packages/eslint-config/__fixtures__/input/svelte.svelte @@ -0,0 +1,8 @@ + + +
+ +
{@html content}
+
\ No newline at end of file diff --git a/packages/eslint-config/__fixtures__/input/svg.svg b/packages/eslint-config/__fixtures__/input/svg.svg new file mode 100644 index 000000000..f3e336599 --- /dev/null +++ b/packages/eslint-config/__fixtures__/input/svg.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/packages/eslint-config/__fixtures__/input/toml.toml b/packages/eslint-config/__fixtures__/input/toml.toml new file mode 100644 index 000000000..1f73d046b --- /dev/null +++ b/packages/eslint-config/__fixtures__/input/toml.toml @@ -0,0 +1,23 @@ +comma = [ + 1, + 2, + 3, +] + +[foo] +b = 1 +c = "hello" +a = { answer = 42 } +indent = [ + 1, + 2 +] + +[a-table] +apple.type = "fruit" +apple.skin = "thin" +apple.color = "red" + +orange.type = "fruit" +orange.skin = "thick" +orange.color = "orange" diff --git a/packages/eslint-config/__fixtures__/input/tsconfig.json b/packages/eslint-config/__fixtures__/input/tsconfig.json new file mode 100644 index 000000000..c429e6172 --- /dev/null +++ b/packages/eslint-config/__fixtures__/input/tsconfig.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "Bundler", + "strict": true, + "skipDefaultLibCheck": true, + "skipLibCheck": true + } +} diff --git a/packages/eslint-config/__fixtures__/input/tsx.tsx b/packages/eslint-config/__fixtures__/input/tsx.tsx new file mode 100644 index 000000000..cd29195e1 --- /dev/null +++ b/packages/eslint-config/__fixtures__/input/tsx.tsx @@ -0,0 +1,25 @@ +export function Component1() { + return
; +} + +export function jsx2() { + const properties = { + a: 1, + b: 2, + }; + + return < a bar={`foo` } foo= 'bar' > +
Inline Text
+ + Block Text + +
+ Mixed +
Foo
+ Text Bar +
+

+ foobarbaz +

+ ; +} diff --git a/packages/eslint-config/__fixtures__/input/typescript.ts b/packages/eslint-config/__fixtures__/input/typescript.ts new file mode 100644 index 000000000..6d9bf6b81 --- /dev/null +++ b/packages/eslint-config/__fixtures__/input/typescript.ts @@ -0,0 +1,91 @@ +// Define a TypeScript interface +interface Person { + age: number; + name: string; +} + +// Create an array of objects with the defined interface +const people: Person[] = [ + { age: 30, name: "Alice" }, + { age: 25, name: "Bob" }, + { + age: 35, + name: "Charlie", + }, +]; + +// eslint-disable-next-line no-console +const log = console.log; + +// Use a for...of loop to iterate over the array +for (const person of people) { + log(`Hello, my name is ${person.name} and I am ${person.age} years old.`); +} + +// Define a generic function +function identity< T >(argument: T): T { + return argument; +} + +// Use the generic function with type inference +const result = identity( + "TypeScript is awesome", +); + +log(result); + +// Use optional properties in an interface +interface Car { + make: string; + model?: string; +} + +// Create objects using the interface +const car1: Car = { make: "Toyota" }; +const car2: Car = { + make: "Ford", + model: "Focus", + +}; + +// Use union types +type Fruit = "apple" | "banana" | "orange"; +const favoriteFruit: Fruit = "apple"; + +// Use a type assertion to tell TypeScript about the type +const inputValue: any = "42"; +const numericValue = inputValue as number; + +// Define a class with access modifiers +class Animal { + private name: string; + + constructor(name: string) { + this.name = name; + } + + protected makeSound(sound: string) { + log(`${this.name} says ${sound}`); + } +} + +// Extend a class +class Dog extends Animal { + constructor(private alias: string) { + super(alias); + } + + bark() { + this.makeSound("Woof!"); + } +} + +const dog = new Dog("Buddy"); + +dog.bark(); + +const function_ = (): string => { + return "hello" + 1; +}; + +log(car1, car2, favoriteFruit, numericValue, function_()); diff --git a/packages/eslint-config/__fixtures__/input/vue-ts.vue b/packages/eslint-config/__fixtures__/input/vue-ts.vue new file mode 100644 index 000000000..61ed8c6c8 --- /dev/null +++ b/packages/eslint-config/__fixtures__/input/vue-ts.vue @@ -0,0 +1,34 @@ + + + + + + + diff --git a/packages/eslint-config/__fixtures__/input/vue.vue b/packages/eslint-config/__fixtures__/input/vue.vue new file mode 100644 index 000000000..b540d06e6 --- /dev/null +++ b/packages/eslint-config/__fixtures__/input/vue.vue @@ -0,0 +1,24 @@ + + + diff --git a/packages/eslint-config/__fixtures__/input/xml.xml b/packages/eslint-config/__fixtures__/input/xml.xml new file mode 100644 index 000000000..8fbc57b9b --- /dev/null +++ b/packages/eslint-config/__fixtures__/input/xml.xml @@ -0,0 +1,9 @@ + +Effective Java45.00 + Bluetooth Speaker120.00 + Clean Code + 33.50 + + + + diff --git a/packages/eslint-config/__fixtures__/old-config/.eslintignore b/packages/eslint-config/__fixtures__/old-config/.eslintignore deleted file mode 100644 index 4f21ac90b..000000000 --- a/packages/eslint-config/__fixtures__/old-config/.eslintignore +++ /dev/null @@ -1,13 +0,0 @@ -packages/semantic-release-preset/commitlint.config.js -packages/semantic-release-preset/.czrc -packages/prettier-config/.prettierrc.js -packages/textlint-config/.textlintrc -packages/babel-preset/babel.config.js -packages/babel-preset/fixture/test.js -packages/babel-preset/fixture/test.ts -packages/stylelint-config/.stylelintrc.js -packages/lint-staged-config/.lintstagedrc.js -packages/eslint-config/src/global.d.ts -packages/eslint-config/src/types.d.ts - -tsup.config.ts diff --git a/packages/eslint-config/__fixtures__/old-config/.eslintrc.js b/packages/eslint-config/__fixtures__/old-config/.eslintrc.js deleted file mode 100644 index cd7f61bd7..000000000 --- a/packages/eslint-config/__fixtures__/old-config/.eslintrc.js +++ /dev/null @@ -1,22 +0,0 @@ -const config = require("@anolilab/eslint-config"); -const globals = require("@anolilab/eslint-config/globals"); - -module.exports = { - ...config, - extends: [...config.extends, "@anolilab/eslint-config/typescript-type-checking"], - globals: { - ...config?.globals, - ...globals.es2021, - }, - overrides: [ - ...config.overrides, - { - files: ["*.ts", "*.mts", "*.cts", "*.tsx", ".mdx"], - parserOptions: { - project: true, - tsconfigRootDir: __dirname, - }, - }, - ], - root: true, -}; diff --git a/packages/eslint-config/__fixtures__/old-config/index.js b/packages/eslint-config/__fixtures__/old-config/index.js deleted file mode 100644 index 6b2b3db0f..000000000 --- a/packages/eslint-config/__fixtures__/old-config/index.js +++ /dev/null @@ -1 +0,0 @@ -console.log("hello world"); diff --git a/packages/eslint-config/__fixtures__/old-config/package.json b/packages/eslint-config/__fixtures__/old-config/package.json deleted file mode 100644 index 221329e7f..000000000 --- a/packages/eslint-config/__fixtures__/old-config/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test-package", - "devDependencies": { - "@anolilab/eslint-config": "file:../../dist", - "eslint": "latest", - "eslint-plugin-import": "npm:eslint-plugin-i@2.29.1" - } -} diff --git a/packages/eslint-config/__fixtures__/old-config/pnpm-lock.yaml b/packages/eslint-config/__fixtures__/old-config/pnpm-lock.yaml deleted file mode 100644 index b17356a02..000000000 --- a/packages/eslint-config/__fixtures__/old-config/pnpm-lock.yaml +++ /dev/null @@ -1,812 +0,0 @@ -lockfileVersion: "6.0" - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -devDependencies: - "@anolilab/eslint-config": - specifier: file:../../dist - version: file:../../dist - eslint: - specifier: latest - version: 8.50.0 - eslint-plugin-import: - specifier: npm:eslint-plugin-i@2.28.1 - version: /eslint-plugin-i@2.28.1(eslint@8.50.0) - -packages: - /@aashutoshrathi/word-wrap@1.2.6: - resolution: { integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== } - engines: { node: ">=0.10.0" } - dev: true - - /@eslint-community/eslint-utils@4.4.0(eslint@8.50.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.50.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@eslint-community/regexpp@4.8.2: - resolution: { integrity: sha512-0MGxAVt1m/ZK+LTJp/j0qF7Hz97D9O/FH9Ms3ltnyIdDD57cbb1ACIQTkbHvNXtWDv5TPq7w5Kq56+cNukbo7g== } - engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } - dev: true - - /@eslint/eslintrc@2.1.2: - resolution: { integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.6.1 - globals: 13.22.0 - ignore: 5.2.4 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@eslint/js@8.50.0: - resolution: { integrity: sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - dev: true - - /@humanwhocodes/config-array@0.11.11: - resolution: { integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA== } - engines: { node: ">=10.10.0" } - dependencies: - "@humanwhocodes/object-schema": 1.2.1 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@humanwhocodes/module-importer@1.0.1: - resolution: { integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== } - engines: { node: ">=12.22" } - dev: true - - /@humanwhocodes/object-schema@1.2.1: - resolution: { integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== } - dev: true - - /@nodelib/fs.scandir@2.1.5: - resolution: { integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== } - engines: { node: ">= 8" } - dependencies: - "@nodelib/fs.stat": 2.0.5 - run-parallel: 1.2.0 - dev: true - - /@nodelib/fs.stat@2.0.5: - resolution: { integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== } - engines: { node: ">= 8" } - dev: true - - /@nodelib/fs.walk@1.2.8: - resolution: { integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== } - engines: { node: ">= 8" } - dependencies: - "@nodelib/fs.scandir": 2.1.5 - fastq: 1.15.0 - dev: true - - /acorn-jsx@5.3.2(acorn@8.10.0): - resolution: { integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== } - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 8.10.0 - dev: true - - /acorn@8.10.0: - resolution: { integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== } - engines: { node: ">=0.4.0" } - hasBin: true - dev: true - - /ajv@6.12.6: - resolution: { integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== } - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - dev: true - - /ansi-regex@5.0.1: - resolution: { integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== } - engines: { node: ">=8" } - dev: true - - /ansi-styles@4.3.0: - resolution: { integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== } - engines: { node: ">=8" } - dependencies: - color-convert: 2.0.1 - dev: true - - /argparse@2.0.1: - resolution: { integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== } - dev: true - - /balanced-match@1.0.2: - resolution: { integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== } - dev: true - - /brace-expansion@1.1.11: - resolution: { integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== } - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - dev: true - - /callsites@3.1.0: - resolution: { integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== } - engines: { node: ">=6" } - dev: true - - /chalk@4.1.2: - resolution: { integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== } - engines: { node: ">=10" } - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true - - /color-convert@2.0.1: - resolution: { integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== } - engines: { node: ">=7.0.0" } - dependencies: - color-name: 1.1.4 - dev: true - - /color-name@1.1.4: - resolution: { integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== } - dev: true - - /concat-map@0.0.1: - resolution: { integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== } - dev: true - - /cross-spawn@7.0.3: - resolution: { integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== } - engines: { node: ">= 8" } - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: true - - /debug@3.2.7: - resolution: { integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== } - peerDependencies: - supports-color: "*" - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.3 - dev: true - - /debug@4.3.4: - resolution: { integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== } - engines: { node: ">=6.0" } - peerDependencies: - supports-color: "*" - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - dev: true - - /deep-is@0.1.4: - resolution: { integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== } - dev: true - - /doctrine@2.1.0: - resolution: { integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== } - engines: { node: ">=0.10.0" } - dependencies: - esutils: 2.0.3 - dev: true - - /doctrine@3.0.0: - resolution: { integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== } - engines: { node: ">=6.0.0" } - dependencies: - esutils: 2.0.3 - dev: true - - /escape-string-regexp@4.0.0: - resolution: { integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== } - engines: { node: ">=10" } - dev: true - - /eslint-import-resolver-node@0.3.9: - resolution: { integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== } - dependencies: - debug: 3.2.7 - is-core-module: 2.13.0 - resolve: 1.22.6 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-module-utils@2.8.0(eslint-import-resolver-node@0.3.9)(eslint@8.50.0): - resolution: { integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== } - engines: { node: ">=4" } - peerDependencies: - "@typescript-eslint/parser": "*" - eslint: "*" - eslint-import-resolver-node: "*" - eslint-import-resolver-typescript: "*" - eslint-import-resolver-webpack: "*" - peerDependenciesMeta: - "@typescript-eslint/parser": - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - dependencies: - debug: 3.2.7 - eslint: 8.50.0 - eslint-import-resolver-node: 0.3.9 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-plugin-i@2.28.1(eslint@8.50.0): - resolution: { integrity: sha512-a4oVt0j3ixNhGhvV4XF6NS7OWRFK2rrJ0Q5C4S2dSRb8FxZi31J0uUd5WJLL58wnVJ/OiQ1BxiXnFA4dWQO1Cg== } - engines: { node: ">=12" } - peerDependencies: - eslint: ^7.2.0 || ^8 - dependencies: - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 8.50.0 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(eslint-import-resolver-node@0.3.9)(eslint@8.50.0) - get-tsconfig: 4.7.2 - is-glob: 4.0.3 - minimatch: 3.1.2 - resolve: 1.22.6 - semver: 7.5.4 - transitivePeerDependencies: - - "@typescript-eslint/parser" - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - 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 } - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - dev: true - - /eslint-visitor-keys@3.4.3: - resolution: { integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - dev: true - - /eslint@8.50.0: - resolution: { integrity: sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - hasBin: true - dependencies: - "@eslint-community/eslint-utils": 4.4.0(eslint@8.50.0) - "@eslint-community/regexpp": 4.8.2 - "@eslint/eslintrc": 2.1.2 - "@eslint/js": 8.50.0 - "@humanwhocodes/config-array": 0.11.11 - "@humanwhocodes/module-importer": 1.0.1 - "@nodelib/fs.walk": 1.2.8 - 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 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.22.0 - graphemer: 1.4.0 - ignore: 5.2.4 - 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 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.3 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - dev: true - - /espree@9.6.1: - resolution: { integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - dependencies: - acorn: 8.10.0 - acorn-jsx: 5.3.2(acorn@8.10.0) - eslint-visitor-keys: 3.4.3 - dev: true - - /esquery@1.5.0: - resolution: { integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== } - engines: { node: ">=0.10" } - dependencies: - estraverse: 5.3.0 - dev: true - - /esrecurse@4.3.0: - resolution: { integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== } - engines: { node: ">=4.0" } - dependencies: - estraverse: 5.3.0 - dev: true - - /estraverse@5.3.0: - resolution: { integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== } - engines: { node: ">=4.0" } - dev: true - - /esutils@2.0.3: - resolution: { integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== } - engines: { node: ">=0.10.0" } - dev: true - - /fast-deep-equal@3.1.3: - resolution: { integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== } - dev: true - - /fast-json-stable-stringify@2.1.0: - resolution: { integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== } - dev: true - - /fast-levenshtein@2.0.6: - resolution: { integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== } - dev: true - - /fastq@1.15.0: - resolution: { integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== } - dependencies: - reusify: 1.0.4 - 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.1.0 - dev: true - - /find-up@5.0.0: - resolution: { integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== } - engines: { node: ">=10" } - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - dev: true - - /flat-cache@3.1.0: - resolution: { integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew== } - engines: { node: ">=12.0.0" } - dependencies: - flatted: 3.2.9 - keyv: 4.5.3 - rimraf: 3.0.2 - dev: true - - /flatted@3.2.9: - resolution: { integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== } - dev: true - - /fs.realpath@1.0.0: - resolution: { integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== } - dev: true - - /function-bind@1.1.1: - resolution: { integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== } - dev: true - - /get-tsconfig@4.7.2: - resolution: { integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A== } - dependencies: - resolve-pkg-maps: 1.0.0 - dev: true - - /glob-parent@6.0.2: - resolution: { integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== } - engines: { node: ">=10.13.0" } - dependencies: - is-glob: 4.0.3 - dev: true - - /glob@7.2.3: - resolution: { integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== } - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: true - - /globals@13.22.0: - resolution: { integrity: sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw== } - engines: { node: ">=8" } - dependencies: - type-fest: 0.20.2 - dev: true - - /graphemer@1.4.0: - resolution: { integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== } - dev: true - - /has-flag@4.0.0: - resolution: { integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== } - engines: { node: ">=8" } - dev: true - - /has@1.0.3: - resolution: { integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== } - engines: { node: ">= 0.4.0" } - dependencies: - function-bind: 1.1.1 - dev: true - - /ignore@5.2.4: - resolution: { integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== } - engines: { node: ">= 4" } - dev: true - - /import-fresh@3.3.0: - resolution: { integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== } - engines: { node: ">=6" } - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - dev: true - - /imurmurhash@0.1.4: - resolution: { integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== } - engines: { node: ">=0.8.19" } - dev: true - - /inflight@1.0.6: - resolution: { integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== } - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - dev: true - - /inherits@2.0.4: - resolution: { integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== } - dev: true - - /is-core-module@2.13.0: - resolution: { integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== } - dependencies: - has: 1.0.3 - dev: true - - /is-extglob@2.1.1: - resolution: { integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== } - engines: { node: ">=0.10.0" } - dev: true - - /is-glob@4.0.3: - resolution: { integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== } - engines: { node: ">=0.10.0" } - dependencies: - is-extglob: 2.1.1 - dev: true - - /is-path-inside@3.0.3: - resolution: { integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== } - engines: { node: ">=8" } - dev: true - - /isexe@2.0.0: - resolution: { integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== } - dev: true - - /js-yaml@4.1.0: - resolution: { integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== } - hasBin: true - dependencies: - argparse: 2.0.1 - dev: true - - /json-buffer@3.0.1: - resolution: { integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== } - dev: true - - /json-schema-traverse@0.4.1: - resolution: { integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== } - dev: true - - /json-stable-stringify-without-jsonify@1.0.1: - resolution: { integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== } - dev: true - - /keyv@4.5.3: - resolution: { integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug== } - dependencies: - json-buffer: 3.0.1 - dev: true - - /levn@0.4.1: - resolution: { integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== } - engines: { node: ">= 0.8.0" } - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - dev: true - - /locate-path@6.0.0: - resolution: { integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== } - engines: { node: ">=10" } - dependencies: - p-locate: 5.0.0 - dev: true - - /lodash.merge@4.6.2: - resolution: { integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== } - dev: true - - /lru-cache@6.0.0: - resolution: { integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== } - engines: { node: ">=10" } - dependencies: - yallist: 4.0.0 - dev: true - - /minimatch@3.1.2: - resolution: { integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== } - dependencies: - brace-expansion: 1.1.11 - dev: true - - /ms@2.1.2: - resolution: { integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== } - dev: true - - /ms@2.1.3: - resolution: { integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== } - dev: true - - /natural-compare@1.4.0: - resolution: { integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== } - dev: true - - /once@1.4.0: - resolution: { integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== } - dependencies: - wrappy: 1.0.2 - dev: true - - /optionator@0.9.3: - resolution: { integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== } - engines: { node: ">= 0.8.0" } - dependencies: - "@aashutoshrathi/word-wrap": 1.2.6 - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - dev: true - - /p-limit@3.1.0: - resolution: { integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== } - engines: { node: ">=10" } - dependencies: - yocto-queue: 0.1.0 - dev: true - - /p-locate@5.0.0: - resolution: { integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== } - engines: { node: ">=10" } - dependencies: - p-limit: 3.1.0 - dev: true - - /parent-module@1.0.1: - resolution: { integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== } - engines: { node: ">=6" } - dependencies: - callsites: 3.1.0 - dev: true - - /path-exists@4.0.0: - resolution: { integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== } - engines: { node: ">=8" } - dev: true - - /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== } - engines: { node: ">=8" } - dev: true - - /path-parse@1.0.7: - resolution: { integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== } - dev: true - - /prelude-ls@1.2.1: - resolution: { integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== } - engines: { node: ">= 0.8.0" } - dev: true - - /punycode@2.3.0: - resolution: { integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== } - engines: { node: ">=6" } - dev: true - - /queue-microtask@1.2.3: - resolution: { integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== } - dev: true - - /resolve-from@4.0.0: - resolution: { integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== } - engines: { node: ">=4" } - dev: true - - /resolve-pkg-maps@1.0.0: - resolution: { integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== } - dev: true - - /resolve@1.22.6: - resolution: { integrity: sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw== } - hasBin: true - dependencies: - is-core-module: 2.13.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - - /reusify@1.0.4: - resolution: { integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== } - engines: { iojs: ">=1.0.0", node: ">=0.10.0" } - dev: true - - /rimraf@3.0.2: - resolution: { integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== } - hasBin: true - dependencies: - glob: 7.2.3 - dev: true - - /run-parallel@1.2.0: - resolution: { integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== } - dependencies: - queue-microtask: 1.2.3 - dev: true - - /semver@7.5.4: - resolution: { integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== } - engines: { node: ">=10" } - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - - /shebang-command@2.0.0: - resolution: { integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== } - engines: { node: ">=8" } - dependencies: - shebang-regex: 3.0.0 - dev: true - - /shebang-regex@3.0.0: - resolution: { integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== } - engines: { node: ">=8" } - dev: true - - /strip-ansi@6.0.1: - resolution: { integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== } - engines: { node: ">=8" } - dependencies: - ansi-regex: 5.0.1 - dev: true - - /strip-json-comments@3.1.1: - resolution: { integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== } - engines: { node: ">=8" } - dev: true - - /supports-color@7.2.0: - resolution: { integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== } - engines: { node: ">=8" } - dependencies: - has-flag: 4.0.0 - dev: true - - /supports-preserve-symlinks-flag@1.0.0: - resolution: { integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== } - engines: { node: ">= 0.4" } - dev: true - - /text-table@0.2.0: - resolution: { integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== } - dev: true - - /type-check@0.4.0: - resolution: { integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== } - engines: { node: ">= 0.8.0" } - dependencies: - prelude-ls: 1.2.1 - dev: true - - /type-fest@0.20.2: - resolution: { integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== } - engines: { node: ">=10" } - dev: true - - /uri-js@4.4.1: - resolution: { integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== } - dependencies: - punycode: 2.3.0 - dev: true - - /which@2.0.2: - resolution: { integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== } - engines: { node: ">= 8" } - hasBin: true - dependencies: - isexe: 2.0.0 - dev: true - - /wrappy@1.0.2: - resolution: { integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== } - dev: true - - /yallist@4.0.0: - resolution: { integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== } - dev: true - - /yocto-queue@0.1.0: - resolution: { integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== } - engines: { node: ">=10" } - dev: true - - file:../../dist: - resolution: { directory: ../../dist, type: directory } - name: dist - dev: true diff --git a/packages/eslint-config/__fixtures__/output/all/astro.astro b/packages/eslint-config/__fixtures__/output/all/astro.astro new file mode 100644 index 000000000..b67c6784e --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/all/astro.astro @@ -0,0 +1,21 @@ +--- +const isJsx = true +const content = 'hi!'; +--- + +
+
{content}
+
+ {isJsx && ( +

{content}

+ )} +
+
+ + + diff --git a/packages/eslint-config/__fixtures__/output/all/javascript.js b/packages/eslint-config/__fixtures__/output/all/javascript.js new file mode 100644 index 000000000..e0702598c --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/all/javascript.js @@ -0,0 +1,73 @@ +// This file is generated by ChatGPT + +// eslint-disable-next-line no-console +const log = console.log + +// Define a class using ES6 class syntax +class Person { + constructor(name, age) { + this.name = name + this.age = age + } + + // Define a method within the class + sayHello() { + log(`Hello, my name is ${this.name} and I am ${this.age} years old.`) + } +} + +// Create an array of objects +const people = [ + new Person('Alice', 30), + new Person('Bob', 25), + new Person('Charlie', 35), +] + +// Use the forEach method to iterate over the array +people.forEach((person) => { + person.sayHello() +}) + +// Use a template literal to create a multiline string +const multilineString = ` + This is a multiline string + that spans multiple lines. +` + +// Use destructuring assignment to extract values from an object +const { name, age } = people[0] +log(`First person in the array is ${name} and they are ${age} years old.`, multilineString) + +// Use the spread operator to create a new array +const numbers = [1, 2, 3] +const newNumbers = [...numbers, 4, 5] +log(newNumbers) + +// Use a try-catch block for error handling +try { + // Attempt to parse an invalid JSON string + JSON.parse('invalid JSON') +} +catch (error) { + console.error('Error parsing JSON:', error.message) +} + +// Use a ternary conditional operator +const isEven = num => num % 2 === 0 +const number = 7 +log(`${number} is ${isEven(number) ? 'even' : 'odd'}.`) + +// Use a callback function with setTimeout for asynchronous code +setTimeout(() => { + log('This code runs after a delay of 2 seconds.') +}, 2000) + +let a, b, c, d, foo + +if (a + || b + || c || d + || (d && b) +) { + foo() +} diff --git a/packages/eslint-config/__fixtures__/output/all/jsx.jsx b/packages/eslint-config/__fixtures__/output/all/jsx.jsx new file mode 100644 index 000000000..523af3782 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/all/jsx.jsx @@ -0,0 +1,29 @@ +export function HelloWorld({ + greeting = 'hello', + greeted = '"World"', + silent = false, + onMouseOver, +}) { + if (!greeting) { + return null + }; + + // TODO: Don't use random in render + const num = Math + .floor (Math.random() * 1e+7) + .toString() + .replace(/\.\d+/g, '') + + return ( +
+ { greeting.slice(0, 1).toUpperCase() + greeting.slice(1).toLowerCase() } + {greeting.endsWith(',') + ? ' ' + : ", " } + + { greeted } + + { (silent) ? '.' : '!'} +
+ ) +} diff --git a/packages/eslint-config/__fixtures__/output/all/markdown.md b/packages/eslint-config/__fixtures__/output/all/markdown.md new file mode 100644 index 000000000..a66c94c89 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/all/markdown.md @@ -0,0 +1,34 @@ +Header +====== + +_Look,_ code blocks are formatted *too!* + +```js +// This should be handled by ESLint instead of Prettier +function identity(x) { + if (foo) { + console.log('bar') + } +} +``` + +```css +/* This should be handled by Prettier */ +.foo { color:red;} +``` + +Pilot|Airport|Hours +--|:--:|--: +John Doe|SKG|1338 +Jane Roe|JFK|314 + +- - - - - - - - - - - - - - - + ++ List + + with a [link] (/to/somewhere) ++ and [another one] + + [another one]: http://example.com 'Example title' + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. +Curabitur consectetur maximus risus, sed maximus tellus tincidunt et. diff --git a/packages/eslint-config/__fixtures__/output/all/svelte.svelte b/packages/eslint-config/__fixtures__/output/all/svelte.svelte new file mode 100644 index 000000000..7cc629a47 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/all/svelte.svelte @@ -0,0 +1,8 @@ + + +
+ +
{@html content}
+
diff --git a/packages/eslint-config/__fixtures__/output/all/toml.toml b/packages/eslint-config/__fixtures__/output/all/toml.toml new file mode 100644 index 000000000..1f73d046b --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/all/toml.toml @@ -0,0 +1,23 @@ +comma = [ + 1, + 2, + 3, +] + +[foo] +b = 1 +c = "hello" +a = { answer = 42 } +indent = [ + 1, + 2 +] + +[a-table] +apple.type = "fruit" +apple.skin = "thin" +apple.color = "red" + +orange.type = "fruit" +orange.skin = "thick" +orange.color = "orange" diff --git a/packages/eslint-config/__fixtures__/output/all/tsx.tsx b/packages/eslint-config/__fixtures__/output/all/tsx.tsx new file mode 100644 index 000000000..ab640af67 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/all/tsx.tsx @@ -0,0 +1,32 @@ +export function Component1() { + return
+} + +export function jsx2() { + const props = { a: 1, b: 2 } + return ( + +
+ Inline Text +
+ + Block Text + +
+ Mixed +
Foo
+ Text + Bar +
+

+ foo + bar + baz +

+
+ ) +} diff --git a/packages/eslint-config/__fixtures__/output/all/typescript.ts b/packages/eslint-config/__fixtures__/output/all/typescript.ts new file mode 100644 index 000000000..29016e385 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/all/typescript.ts @@ -0,0 +1,84 @@ +// Define a TypeScript interface +interface Person { + name: string + age: number +} + +// Create an array of objects with the defined interface +const people: Person[] = [ + { name: 'Alice', age: 30 }, + { name: 'Bob', age: 25 }, + { name: 'Charlie', age: 35 }, +] + +// eslint-disable-next-line no-console +const log = console.log + +// Use a for...of loop to iterate over the array +for (const person of people) { + log(`Hello, my name is ${person.name} and I am ${person.age} years old.`) +} + +// Define a generic function +function identity< T >(arg: T): T { + return arg +} + +// Use the generic function with type inference +const result = identity( + 'TypeScript is awesome', +) +log(result) + +// Use optional properties in an interface +interface Car { + make: string + model?: string +} + +// Create objects using the interface +const car1: Car = { make: 'Toyota' } +const car2: Car = { + make: 'Ford', + model: 'Focus', +} + +// Use union types +type Fruit = 'apple' | 'banana' | 'orange' +const favoriteFruit: Fruit = 'apple' + +// Use a type assertion to tell TypeScript about the type +const inputValue: any = '42' +const numericValue = inputValue as number + +// Define a class with access modifiers +class Animal { + private name: string + constructor(name: string) { + this.name = name + } + + protected makeSound(sound: string) { + log(`${this.name} says ${sound}`) + } +} + +// Extend a class +class Dog extends Animal { + constructor(private alias: string) { + super(alias) + } + + bark() { + this.makeSound('Woof!') + } +} + +const dog = new Dog('Buddy') +dog.bark() + +function fn(): string { + return `hello${1}` +} + +log(car1, car2, favoriteFruit, numericValue, fn()) diff --git a/packages/eslint-config/__fixtures__/output/all/vue-ts.vue b/packages/eslint-config/__fixtures__/output/all/vue-ts.vue new file mode 100644 index 000000000..ce35e66b0 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/all/vue-ts.vue @@ -0,0 +1,35 @@ + + + + + + + diff --git a/packages/eslint-config/__fixtures__/output/all/vue.vue b/packages/eslint-config/__fixtures__/output/all/vue.vue new file mode 100644 index 000000000..944cc4e56 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/all/vue.vue @@ -0,0 +1,27 @@ + + + diff --git a/packages/eslint-config/__fixtures__/output/js/javascript.js b/packages/eslint-config/__fixtures__/output/js/javascript.js new file mode 100644 index 000000000..e0702598c --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/js/javascript.js @@ -0,0 +1,73 @@ +// This file is generated by ChatGPT + +// eslint-disable-next-line no-console +const log = console.log + +// Define a class using ES6 class syntax +class Person { + constructor(name, age) { + this.name = name + this.age = age + } + + // Define a method within the class + sayHello() { + log(`Hello, my name is ${this.name} and I am ${this.age} years old.`) + } +} + +// Create an array of objects +const people = [ + new Person('Alice', 30), + new Person('Bob', 25), + new Person('Charlie', 35), +] + +// Use the forEach method to iterate over the array +people.forEach((person) => { + person.sayHello() +}) + +// Use a template literal to create a multiline string +const multilineString = ` + This is a multiline string + that spans multiple lines. +` + +// Use destructuring assignment to extract values from an object +const { name, age } = people[0] +log(`First person in the array is ${name} and they are ${age} years old.`, multilineString) + +// Use the spread operator to create a new array +const numbers = [1, 2, 3] +const newNumbers = [...numbers, 4, 5] +log(newNumbers) + +// Use a try-catch block for error handling +try { + // Attempt to parse an invalid JSON string + JSON.parse('invalid JSON') +} +catch (error) { + console.error('Error parsing JSON:', error.message) +} + +// Use a ternary conditional operator +const isEven = num => num % 2 === 0 +const number = 7 +log(`${number} is ${isEven(number) ? 'even' : 'odd'}.`) + +// Use a callback function with setTimeout for asynchronous code +setTimeout(() => { + log('This code runs after a delay of 2 seconds.') +}, 2000) + +let a, b, c, d, foo + +if (a + || b + || c || d + || (d && b) +) { + foo() +} diff --git a/packages/eslint-config/__fixtures__/output/js/jsx.jsx b/packages/eslint-config/__fixtures__/output/js/jsx.jsx new file mode 100644 index 000000000..523af3782 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/js/jsx.jsx @@ -0,0 +1,29 @@ +export function HelloWorld({ + greeting = 'hello', + greeted = '"World"', + silent = false, + onMouseOver, +}) { + if (!greeting) { + return null + }; + + // TODO: Don't use random in render + const num = Math + .floor (Math.random() * 1e+7) + .toString() + .replace(/\.\d+/g, '') + + return ( +
+ { greeting.slice(0, 1).toUpperCase() + greeting.slice(1).toLowerCase() } + {greeting.endsWith(',') + ? ' ' + : ", " } + + { greeted } + + { (silent) ? '.' : '!'} +
+ ) +} diff --git a/packages/eslint-config/__fixtures__/output/js/markdown.md b/packages/eslint-config/__fixtures__/output/js/markdown.md new file mode 100644 index 000000000..a66c94c89 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/js/markdown.md @@ -0,0 +1,34 @@ +Header +====== + +_Look,_ code blocks are formatted *too!* + +```js +// This should be handled by ESLint instead of Prettier +function identity(x) { + if (foo) { + console.log('bar') + } +} +``` + +```css +/* This should be handled by Prettier */ +.foo { color:red;} +``` + +Pilot|Airport|Hours +--|:--:|--: +John Doe|SKG|1338 +Jane Roe|JFK|314 + +- - - - - - - - - - - - - - - + ++ List + + with a [link] (/to/somewhere) ++ and [another one] + + [another one]: http://example.com 'Example title' + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. +Curabitur consectetur maximus risus, sed maximus tellus tincidunt et. diff --git a/packages/eslint-config/__fixtures__/output/js/toml.toml b/packages/eslint-config/__fixtures__/output/js/toml.toml new file mode 100644 index 000000000..1f73d046b --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/js/toml.toml @@ -0,0 +1,23 @@ +comma = [ + 1, + 2, + 3, +] + +[foo] +b = 1 +c = "hello" +a = { answer = 42 } +indent = [ + 1, + 2 +] + +[a-table] +apple.type = "fruit" +apple.skin = "thin" +apple.color = "red" + +orange.type = "fruit" +orange.skin = "thick" +orange.color = "orange" diff --git a/packages/eslint-config/__fixtures__/output/js/tsx.tsx b/packages/eslint-config/__fixtures__/output/js/tsx.tsx new file mode 100644 index 000000000..ab640af67 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/js/tsx.tsx @@ -0,0 +1,32 @@ +export function Component1() { + return
+} + +export function jsx2() { + const props = { a: 1, b: 2 } + return ( + +
+ Inline Text +
+ + Block Text + +
+ Mixed +
Foo
+ Text + Bar +
+

+ foo + bar + baz +

+
+ ) +} diff --git a/packages/eslint-config/__fixtures__/output/no-markdown-with-formatters/javascript.js b/packages/eslint-config/__fixtures__/output/no-markdown-with-formatters/javascript.js new file mode 100644 index 000000000..e0702598c --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/no-markdown-with-formatters/javascript.js @@ -0,0 +1,73 @@ +// This file is generated by ChatGPT + +// eslint-disable-next-line no-console +const log = console.log + +// Define a class using ES6 class syntax +class Person { + constructor(name, age) { + this.name = name + this.age = age + } + + // Define a method within the class + sayHello() { + log(`Hello, my name is ${this.name} and I am ${this.age} years old.`) + } +} + +// Create an array of objects +const people = [ + new Person('Alice', 30), + new Person('Bob', 25), + new Person('Charlie', 35), +] + +// Use the forEach method to iterate over the array +people.forEach((person) => { + person.sayHello() +}) + +// Use a template literal to create a multiline string +const multilineString = ` + This is a multiline string + that spans multiple lines. +` + +// Use destructuring assignment to extract values from an object +const { name, age } = people[0] +log(`First person in the array is ${name} and they are ${age} years old.`, multilineString) + +// Use the spread operator to create a new array +const numbers = [1, 2, 3] +const newNumbers = [...numbers, 4, 5] +log(newNumbers) + +// Use a try-catch block for error handling +try { + // Attempt to parse an invalid JSON string + JSON.parse('invalid JSON') +} +catch (error) { + console.error('Error parsing JSON:', error.message) +} + +// Use a ternary conditional operator +const isEven = num => num % 2 === 0 +const number = 7 +log(`${number} is ${isEven(number) ? 'even' : 'odd'}.`) + +// Use a callback function with setTimeout for asynchronous code +setTimeout(() => { + log('This code runs after a delay of 2 seconds.') +}, 2000) + +let a, b, c, d, foo + +if (a + || b + || c || d + || (d && b) +) { + foo() +} diff --git a/packages/eslint-config/__fixtures__/output/no-markdown-with-formatters/markdown.md b/packages/eslint-config/__fixtures__/output/no-markdown-with-formatters/markdown.md new file mode 100644 index 000000000..b049fd926 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/no-markdown-with-formatters/markdown.md @@ -0,0 +1,33 @@ +# Header + +_Look,_ code blocks are formatted _too!_ + +```js +// This should be handled by ESLint instead of Prettier +function identity(x) { + if (foo) { + console.log('bar'); + } + } +``` + +```css +/* This should be handled by Prettier */ +.foo { color:red;} +``` + +| Pilot | Airport | Hours | +| -------- | :-----: | ----: | +| John Doe | SKG | 1338 | +| Jane Roe | JFK | 314 | + +--- + +- List +- with a [link] (/to/somewhere) +- and [another one] + + [another one]: http://example.com 'Example title' + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. +Curabitur consectetur maximus risus, sed maximus tellus tincidunt et. diff --git a/packages/eslint-config/__fixtures__/output/no-markdown-with-formatters/toml.toml b/packages/eslint-config/__fixtures__/output/no-markdown-with-formatters/toml.toml new file mode 100644 index 000000000..1f73d046b --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/no-markdown-with-formatters/toml.toml @@ -0,0 +1,23 @@ +comma = [ + 1, + 2, + 3, +] + +[foo] +b = 1 +c = "hello" +a = { answer = 42 } +indent = [ + 1, + 2 +] + +[a-table] +apple.type = "fruit" +apple.skin = "thin" +apple.color = "red" + +orange.type = "fruit" +orange.skin = "thick" +orange.color = "orange" diff --git a/packages/eslint-config/__fixtures__/output/no-markdown-with-formatters/tsx.tsx b/packages/eslint-config/__fixtures__/output/no-markdown-with-formatters/tsx.tsx new file mode 100644 index 000000000..efc80b97c --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/no-markdown-with-formatters/tsx.tsx @@ -0,0 +1,21 @@ +export function Component1() { + return
+} + +export function jsx2() { + const props = { a: 1, b: 2 } + return < a foo= 'bar' bar={`foo` } > +
Inline Text
+ + Block Text + +
+ Mixed +
Foo
+ Text Bar +
+

+ foobarbaz +

+ +} diff --git a/packages/eslint-config/__fixtures__/output/no-markdown-with-formatters/typescript.ts b/packages/eslint-config/__fixtures__/output/no-markdown-with-formatters/typescript.ts new file mode 100644 index 000000000..29016e385 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/no-markdown-with-formatters/typescript.ts @@ -0,0 +1,84 @@ +// Define a TypeScript interface +interface Person { + name: string + age: number +} + +// Create an array of objects with the defined interface +const people: Person[] = [ + { name: 'Alice', age: 30 }, + { name: 'Bob', age: 25 }, + { name: 'Charlie', age: 35 }, +] + +// eslint-disable-next-line no-console +const log = console.log + +// Use a for...of loop to iterate over the array +for (const person of people) { + log(`Hello, my name is ${person.name} and I am ${person.age} years old.`) +} + +// Define a generic function +function identity< T >(arg: T): T { + return arg +} + +// Use the generic function with type inference +const result = identity( + 'TypeScript is awesome', +) +log(result) + +// Use optional properties in an interface +interface Car { + make: string + model?: string +} + +// Create objects using the interface +const car1: Car = { make: 'Toyota' } +const car2: Car = { + make: 'Ford', + model: 'Focus', +} + +// Use union types +type Fruit = 'apple' | 'banana' | 'orange' +const favoriteFruit: Fruit = 'apple' + +// Use a type assertion to tell TypeScript about the type +const inputValue: any = '42' +const numericValue = inputValue as number + +// Define a class with access modifiers +class Animal { + private name: string + constructor(name: string) { + this.name = name + } + + protected makeSound(sound: string) { + log(`${this.name} says ${sound}`) + } +} + +// Extend a class +class Dog extends Animal { + constructor(private alias: string) { + super(alias) + } + + bark() { + this.makeSound('Woof!') + } +} + +const dog = new Dog('Buddy') +dog.bark() + +function fn(): string { + return `hello${1}` +} + +log(car1, car2, favoriteFruit, numericValue, fn()) diff --git a/packages/eslint-config/__fixtures__/output/no-style/javascript.js b/packages/eslint-config/__fixtures__/output/no-style/javascript.js new file mode 100644 index 000000000..9ee4a7ca3 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/no-style/javascript.js @@ -0,0 +1,72 @@ +// This file is generated by ChatGPT + +// eslint-disable-next-line no-console +const log = console.log + +// Define a class using ES6 class syntax +class Person { + constructor(name, age) { + this.name = name; + this.age = age; + } + +// Define a method within the class +sayHello() { + log(`Hello, my name is ${this.name} and I am ${this.age} years old.`); +} +} + +// Create an array of objects +const people = [ + new Person('Alice', 30), + new Person('Bob', 25), + new Person('Charlie', 35) +]; + +// Use the forEach method to iterate over the array +people.forEach(person => { + person.sayHello(); +}); + +// Use a template literal to create a multiline string +const multilineString = ` + This is a multiline string + that spans multiple lines. +`; + +// Use destructuring assignment to extract values from an object +const { name, age } = people[0]; +log(`First person in the array is ${name} and they are ${age} years old.`, multilineString); + +// Use the spread operator to create a new array +const numbers = [1, 2, 3]; +const newNumbers = [...numbers, 4, 5]; +log(newNumbers); + +// Use a try-catch block for error handling +try { + // Attempt to parse an invalid JSON string + JSON.parse('invalid JSON'); +} catch (error) { + console.error('Error parsing JSON:', error.message); +} + +// Use a ternary conditional operator +const isEven = num => num % 2 === 0; +const number = 7; +log(`${number} is ${isEven(number) ? 'even' : 'odd'}.`); + +// Use a callback function with setTimeout for asynchronous code +setTimeout(() => { + log('This code runs after a delay of 2 seconds.'); +}, 2000); + +let a, b, c, d, foo + +if (a + || b + || c || d + || (d && b) + ) { + foo() + } diff --git a/packages/eslint-config/__fixtures__/output/no-style/jsx.jsx b/packages/eslint-config/__fixtures__/output/no-style/jsx.jsx new file mode 100644 index 000000000..762fec4f0 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/no-style/jsx.jsx @@ -0,0 +1,22 @@ +export function HelloWorld({ + greeting = "hello", greeted = '"World"', silent = false, onMouseOver,}) { + + if(!greeting){ + return null}; + + // TODO: Don't use random in render + const num = Math + .floor (Math.random() * 1e+7).toString() + .replace(/\.\d+/g, "") + + return
+ { greeting.slice( 0, 1 ).toUpperCase() + greeting.slice(1).toLowerCase() } + {greeting.endsWith(",") + ? " " : ", " } + + { greeted } + + { (silent)? ".": "!"} +
; + +} diff --git a/packages/eslint-config/__fixtures__/output/no-style/toml.toml b/packages/eslint-config/__fixtures__/output/no-style/toml.toml new file mode 100644 index 000000000..a28003c42 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/no-style/toml.toml @@ -0,0 +1,23 @@ +comma = [ + 1, + 2, + 3, +] + +[foo] + b = 1 + c = "hello" + a = {answer = 42} + +"indent" = [ +1, + 2 +] + +['a-table'] +apple.type = "fruit" +apple.skin = "thin" +apple.color = "red" +orange.type = "fruit" +orange.skin = "thick" +orange.color = "orange" diff --git a/packages/eslint-config/__fixtures__/output/no-style/typescript.ts b/packages/eslint-config/__fixtures__/output/no-style/typescript.ts new file mode 100644 index 000000000..1cf34cafb --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/no-style/typescript.ts @@ -0,0 +1,80 @@ +// Define a TypeScript interface +interface Person { + name: string; age: number; +} + +// Create an array of objects with the defined interface +const people: Person[] = [ + { name: 'Alice', age: 30 }, + { name: 'Bob', age: 25 }, + { name: 'Charlie', + age: 35 } +]; + +// eslint-disable-next-line no-console +const log = console.log + +// Use a for...of loop to iterate over the array +for (const person of people) { + log(`Hello, my name is ${person.name} and I am ${person.age} years old.`); +} + +// Define a generic function +function identity< T >(arg: T): T { + return arg; +} + +// Use the generic function with type inference +const result = identity( + 'TypeScript is awesome'); +log(result); + +// Use optional properties in an interface +interface Car { + make: string; + model?: string; +} + +// Create objects using the interface +const car1: Car = { make: 'Toyota' }; +const car2: Car = { + make: 'Ford', model: 'Focus' }; + +// Use union types +type Fruit = 'apple' | 'banana' | 'orange'; +const favoriteFruit: Fruit = 'apple'; + +// Use a type assertion to tell TypeScript about the type +const inputValue: any = '42'; +const numericValue = inputValue as number; + +// Define a class with access modifiers +class Animal { + private name: string; + constructor(name: string) { + this.name = name; + } + protected makeSound(sound: string) { + log(`${this.name} says ${sound}`); + } +} + +// Extend a class +class Dog extends Animal { + constructor(private alias: string) { + super(alias); + } + bark() { + this.makeSound('Woof!'); + } +} + +const dog = new Dog('Buddy'); +dog.bark(); + +const fn = (): string => { + return `hello${ 1}` +} + +log(car1, car2, favoriteFruit, numericValue, fn()) + diff --git a/packages/eslint-config/__fixtures__/output/no-style/vue-ts.vue b/packages/eslint-config/__fixtures__/output/no-style/vue-ts.vue new file mode 100644 index 000000000..944abcf50 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/no-style/vue-ts.vue @@ -0,0 +1,35 @@ + + + + + + + diff --git a/packages/eslint-config/__fixtures__/output/no-style/vue.vue b/packages/eslint-config/__fixtures__/output/no-style/vue.vue new file mode 100644 index 000000000..36b2ff6d8 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/no-style/vue.vue @@ -0,0 +1,27 @@ + + + diff --git a/packages/eslint-config/__fixtures__/output/tab-double-quotes/javascript.js b/packages/eslint-config/__fixtures__/output/tab-double-quotes/javascript.js new file mode 100644 index 000000000..3918d1388 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/tab-double-quotes/javascript.js @@ -0,0 +1,73 @@ +// This file is generated by ChatGPT + +// eslint-disable-next-line no-console +const log = console.log + +// Define a class using ES6 class syntax +class Person { + constructor(name, age) { + this.name = name + this.age = age + } + + // Define a method within the class + sayHello() { + log(`Hello, my name is ${this.name} and I am ${this.age} years old.`) + } +} + +// Create an array of objects +const people = [ + new Person("Alice", 30), + new Person("Bob", 25), + new Person("Charlie", 35), +] + +// Use the forEach method to iterate over the array +people.forEach((person) => { + person.sayHello() +}) + +// Use a template literal to create a multiline string +const multilineString = ` + This is a multiline string + that spans multiple lines. +` + +// Use destructuring assignment to extract values from an object +const { name, age } = people[0] +log(`First person in the array is ${name} and they are ${age} years old.`, multilineString) + +// Use the spread operator to create a new array +const numbers = [1, 2, 3] +const newNumbers = [...numbers, 4, 5] +log(newNumbers) + +// Use a try-catch block for error handling +try { + // Attempt to parse an invalid JSON string + JSON.parse("invalid JSON") +} +catch (error) { + console.error("Error parsing JSON:", error.message) +} + +// Use a ternary conditional operator +const isEven = num => num % 2 === 0 +const number = 7 +log(`${number} is ${isEven(number) ? "even" : "odd"}.`) + +// Use a callback function with setTimeout for asynchronous code +setTimeout(() => { + log("This code runs after a delay of 2 seconds.") +}, 2000) + +let a, b, c, d, foo + +if (a + || b + || c || d + || (d && b) +) { + foo() +} diff --git a/packages/eslint-config/__fixtures__/output/tab-double-quotes/jsx.jsx b/packages/eslint-config/__fixtures__/output/tab-double-quotes/jsx.jsx new file mode 100644 index 000000000..08744a513 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/tab-double-quotes/jsx.jsx @@ -0,0 +1,29 @@ +export function HelloWorld({ + greeting = "hello", + greeted = "\"World\"", + silent = false, + onMouseOver, +}) { + if (!greeting) { + return null + }; + + // TODO: Don't use random in render + const num = Math + .floor (Math.random() * 1e+7) + .toString() + .replace(/\.\d+/g, "") + + return ( +
+ { greeting.slice(0, 1).toUpperCase() + greeting.slice(1).toLowerCase() } + {greeting.endsWith(",") + ? " " + : ", " } + + { greeted } + + { (silent) ? "." : "!"} +
+ ) +} diff --git a/packages/eslint-config/__fixtures__/output/tab-double-quotes/markdown.md b/packages/eslint-config/__fixtures__/output/tab-double-quotes/markdown.md new file mode 100644 index 000000000..c9616151a --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/tab-double-quotes/markdown.md @@ -0,0 +1,34 @@ +Header +====== + +_Look,_ code blocks are formatted *too!* + +```js +// This should be handled by ESLint instead of Prettier +function identity(x) { + if (foo) { + console.log("bar") + } +} +``` + +```css +/* This should be handled by Prettier */ +.foo { color:red;} +``` + +Pilot|Airport|Hours +--|:--:|--: +John Doe|SKG|1338 +Jane Roe|JFK|314 + +- - - - - - - - - - - - - - - + ++ List + + with a [link] (/to/somewhere) ++ and [another one] + + [another one]: http://example.com 'Example title' + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. +Curabitur consectetur maximus risus, sed maximus tellus tincidunt et. diff --git a/packages/eslint-config/__fixtures__/output/tab-double-quotes/toml.toml b/packages/eslint-config/__fixtures__/output/tab-double-quotes/toml.toml new file mode 100644 index 000000000..1f73d046b --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/tab-double-quotes/toml.toml @@ -0,0 +1,23 @@ +comma = [ + 1, + 2, + 3, +] + +[foo] +b = 1 +c = "hello" +a = { answer = 42 } +indent = [ + 1, + 2 +] + +[a-table] +apple.type = "fruit" +apple.skin = "thin" +apple.color = "red" + +orange.type = "fruit" +orange.skin = "thick" +orange.color = "orange" diff --git a/packages/eslint-config/__fixtures__/output/tab-double-quotes/tsconfig.json b/packages/eslint-config/__fixtures__/output/tab-double-quotes/tsconfig.json new file mode 100644 index 000000000..75dd2b29a --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/tab-double-quotes/tsconfig.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "Bundler", + "strict": true, + "skipDefaultLibCheck": true, + "skipLibCheck": true + } +} diff --git a/packages/eslint-config/__fixtures__/output/tab-double-quotes/tsx.tsx b/packages/eslint-config/__fixtures__/output/tab-double-quotes/tsx.tsx new file mode 100644 index 000000000..2f56c5c4a --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/tab-double-quotes/tsx.tsx @@ -0,0 +1,32 @@ +export function Component1() { + return
+} + +export function jsx2() { + const props = { a: 1, b: 2 } + return ( + +
+ Inline Text +
+ + Block Text + +
+ Mixed +
Foo
+ Text + Bar +
+

+ foo + bar + baz +

+
+ ) +} diff --git a/packages/eslint-config/__fixtures__/output/tab-double-quotes/typescript.ts b/packages/eslint-config/__fixtures__/output/tab-double-quotes/typescript.ts new file mode 100644 index 000000000..d0bcb65ba --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/tab-double-quotes/typescript.ts @@ -0,0 +1,84 @@ +// Define a TypeScript interface +interface Person { + name: string + age: number +} + +// Create an array of objects with the defined interface +const people: Person[] = [ + { name: "Alice", age: 30 }, + { name: "Bob", age: 25 }, + { name: "Charlie", age: 35 }, +] + +// eslint-disable-next-line no-console +const log = console.log + +// Use a for...of loop to iterate over the array +for (const person of people) { + log(`Hello, my name is ${person.name} and I am ${person.age} years old.`) +} + +// Define a generic function +function identity< T >(arg: T): T { + return arg +} + +// Use the generic function with type inference +const result = identity( + "TypeScript is awesome", +) +log(result) + +// Use optional properties in an interface +interface Car { + make: string + model?: string +} + +// Create objects using the interface +const car1: Car = { make: "Toyota" } +const car2: Car = { + make: "Ford", + model: "Focus", +} + +// Use union types +type Fruit = "apple" | "banana" | "orange" +const favoriteFruit: Fruit = "apple" + +// Use a type assertion to tell TypeScript about the type +const inputValue: any = "42" +const numericValue = inputValue as number + +// Define a class with access modifiers +class Animal { + private name: string + constructor(name: string) { + this.name = name + } + + protected makeSound(sound: string) { + log(`${this.name} says ${sound}`) + } +} + +// Extend a class +class Dog extends Animal { + constructor(private alias: string) { + super(alias) + } + + bark() { + this.makeSound("Woof!") + } +} + +const dog = new Dog("Buddy") +dog.bark() + +function fn(): string { + return `hello${1}` +} + +log(car1, car2, favoriteFruit, numericValue, fn()) diff --git a/packages/eslint-config/__fixtures__/output/tab-double-quotes/vue-ts.vue b/packages/eslint-config/__fixtures__/output/tab-double-quotes/vue-ts.vue new file mode 100644 index 000000000..00e3aaeae --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/tab-double-quotes/vue-ts.vue @@ -0,0 +1,35 @@ + + + + + + + diff --git a/packages/eslint-config/__fixtures__/output/tab-double-quotes/vue.vue b/packages/eslint-config/__fixtures__/output/tab-double-quotes/vue.vue new file mode 100644 index 000000000..1356a70c6 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/tab-double-quotes/vue.vue @@ -0,0 +1,27 @@ + + + diff --git a/packages/eslint-config/__fixtures__/output/ts-override/javascript.js b/packages/eslint-config/__fixtures__/output/ts-override/javascript.js new file mode 100644 index 000000000..e0702598c --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/ts-override/javascript.js @@ -0,0 +1,73 @@ +// This file is generated by ChatGPT + +// eslint-disable-next-line no-console +const log = console.log + +// Define a class using ES6 class syntax +class Person { + constructor(name, age) { + this.name = name + this.age = age + } + + // Define a method within the class + sayHello() { + log(`Hello, my name is ${this.name} and I am ${this.age} years old.`) + } +} + +// Create an array of objects +const people = [ + new Person('Alice', 30), + new Person('Bob', 25), + new Person('Charlie', 35), +] + +// Use the forEach method to iterate over the array +people.forEach((person) => { + person.sayHello() +}) + +// Use a template literal to create a multiline string +const multilineString = ` + This is a multiline string + that spans multiple lines. +` + +// Use destructuring assignment to extract values from an object +const { name, age } = people[0] +log(`First person in the array is ${name} and they are ${age} years old.`, multilineString) + +// Use the spread operator to create a new array +const numbers = [1, 2, 3] +const newNumbers = [...numbers, 4, 5] +log(newNumbers) + +// Use a try-catch block for error handling +try { + // Attempt to parse an invalid JSON string + JSON.parse('invalid JSON') +} +catch (error) { + console.error('Error parsing JSON:', error.message) +} + +// Use a ternary conditional operator +const isEven = num => num % 2 === 0 +const number = 7 +log(`${number} is ${isEven(number) ? 'even' : 'odd'}.`) + +// Use a callback function with setTimeout for asynchronous code +setTimeout(() => { + log('This code runs after a delay of 2 seconds.') +}, 2000) + +let a, b, c, d, foo + +if (a + || b + || c || d + || (d && b) +) { + foo() +} diff --git a/packages/eslint-config/__fixtures__/output/ts-override/jsx.jsx b/packages/eslint-config/__fixtures__/output/ts-override/jsx.jsx new file mode 100644 index 000000000..523af3782 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/ts-override/jsx.jsx @@ -0,0 +1,29 @@ +export function HelloWorld({ + greeting = 'hello', + greeted = '"World"', + silent = false, + onMouseOver, +}) { + if (!greeting) { + return null + }; + + // TODO: Don't use random in render + const num = Math + .floor (Math.random() * 1e+7) + .toString() + .replace(/\.\d+/g, '') + + return ( +
+ { greeting.slice(0, 1).toUpperCase() + greeting.slice(1).toLowerCase() } + {greeting.endsWith(',') + ? ' ' + : ", " } + + { greeted } + + { (silent) ? '.' : '!'} +
+ ) +} diff --git a/packages/eslint-config/__fixtures__/output/ts-override/markdown.md b/packages/eslint-config/__fixtures__/output/ts-override/markdown.md new file mode 100644 index 000000000..a66c94c89 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/ts-override/markdown.md @@ -0,0 +1,34 @@ +Header +====== + +_Look,_ code blocks are formatted *too!* + +```js +// This should be handled by ESLint instead of Prettier +function identity(x) { + if (foo) { + console.log('bar') + } +} +``` + +```css +/* This should be handled by Prettier */ +.foo { color:red;} +``` + +Pilot|Airport|Hours +--|:--:|--: +John Doe|SKG|1338 +Jane Roe|JFK|314 + +- - - - - - - - - - - - - - - + ++ List + + with a [link] (/to/somewhere) ++ and [another one] + + [another one]: http://example.com 'Example title' + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. +Curabitur consectetur maximus risus, sed maximus tellus tincidunt et. diff --git a/packages/eslint-config/__fixtures__/output/ts-override/toml.toml b/packages/eslint-config/__fixtures__/output/ts-override/toml.toml new file mode 100644 index 000000000..1f73d046b --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/ts-override/toml.toml @@ -0,0 +1,23 @@ +comma = [ + 1, + 2, + 3, +] + +[foo] +b = 1 +c = "hello" +a = { answer = 42 } +indent = [ + 1, + 2 +] + +[a-table] +apple.type = "fruit" +apple.skin = "thin" +apple.color = "red" + +orange.type = "fruit" +orange.skin = "thick" +orange.color = "orange" diff --git a/packages/eslint-config/__fixtures__/output/ts-override/tsx.tsx b/packages/eslint-config/__fixtures__/output/ts-override/tsx.tsx new file mode 100644 index 000000000..ab640af67 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/ts-override/tsx.tsx @@ -0,0 +1,32 @@ +export function Component1() { + return
+} + +export function jsx2() { + const props = { a: 1, b: 2 } + return ( + +
+ Inline Text +
+ + Block Text + +
+ Mixed +
Foo
+ Text + Bar +
+

+ foo + bar + baz +

+
+ ) +} diff --git a/packages/eslint-config/__fixtures__/output/ts-override/typescript.ts b/packages/eslint-config/__fixtures__/output/ts-override/typescript.ts new file mode 100644 index 000000000..ed4c4b607 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/ts-override/typescript.ts @@ -0,0 +1,84 @@ +// Define a TypeScript interface +type Person = { + name: string + age: number +} + +// Create an array of objects with the defined interface +const people: Person[] = [ + { name: 'Alice', age: 30 }, + { name: 'Bob', age: 25 }, + { name: 'Charlie', age: 35 }, +] + +// eslint-disable-next-line no-console +const log = console.log + +// Use a for...of loop to iterate over the array +for (const person of people) { + log(`Hello, my name is ${person.name} and I am ${person.age} years old.`) +} + +// Define a generic function +function identity< T >(arg: T): T { + return arg +} + +// Use the generic function with type inference +const result = identity( + 'TypeScript is awesome', +) +log(result) + +// Use optional properties in an interface +type Car = { + make: string + model?: string +} + +// Create objects using the interface +const car1: Car = { make: 'Toyota' } +const car2: Car = { + make: 'Ford', + model: 'Focus', +} + +// Use union types +type Fruit = 'apple' | 'banana' | 'orange' +const favoriteFruit: Fruit = 'apple' + +// Use a type assertion to tell TypeScript about the type +const inputValue: any = '42' +const numericValue = inputValue as number + +// Define a class with access modifiers +class Animal { + private name: string + constructor(name: string) { + this.name = name + } + + protected makeSound(sound: string) { + log(`${this.name} says ${sound}`) + } +} + +// Extend a class +class Dog extends Animal { + constructor(private alias: string) { + super(alias) + } + + bark() { + this.makeSound('Woof!') + } +} + +const dog = new Dog('Buddy') +dog.bark() + +function fn(): string { + return `hello${1}` +} + +log(car1, car2, favoriteFruit, numericValue, fn()) diff --git a/packages/eslint-config/__fixtures__/output/ts-override/vue-ts.vue b/packages/eslint-config/__fixtures__/output/ts-override/vue-ts.vue new file mode 100644 index 000000000..ce35e66b0 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/ts-override/vue-ts.vue @@ -0,0 +1,35 @@ + + + + + + + diff --git a/packages/eslint-config/__fixtures__/output/ts-override/vue.vue b/packages/eslint-config/__fixtures__/output/ts-override/vue.vue new file mode 100644 index 000000000..944cc4e56 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/ts-override/vue.vue @@ -0,0 +1,27 @@ + + + diff --git a/packages/eslint-config/__fixtures__/output/ts-strict-with-react/javascript.js b/packages/eslint-config/__fixtures__/output/ts-strict-with-react/javascript.js new file mode 100644 index 000000000..e0702598c --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/ts-strict-with-react/javascript.js @@ -0,0 +1,73 @@ +// This file is generated by ChatGPT + +// eslint-disable-next-line no-console +const log = console.log + +// Define a class using ES6 class syntax +class Person { + constructor(name, age) { + this.name = name + this.age = age + } + + // Define a method within the class + sayHello() { + log(`Hello, my name is ${this.name} and I am ${this.age} years old.`) + } +} + +// Create an array of objects +const people = [ + new Person('Alice', 30), + new Person('Bob', 25), + new Person('Charlie', 35), +] + +// Use the forEach method to iterate over the array +people.forEach((person) => { + person.sayHello() +}) + +// Use a template literal to create a multiline string +const multilineString = ` + This is a multiline string + that spans multiple lines. +` + +// Use destructuring assignment to extract values from an object +const { name, age } = people[0] +log(`First person in the array is ${name} and they are ${age} years old.`, multilineString) + +// Use the spread operator to create a new array +const numbers = [1, 2, 3] +const newNumbers = [...numbers, 4, 5] +log(newNumbers) + +// Use a try-catch block for error handling +try { + // Attempt to parse an invalid JSON string + JSON.parse('invalid JSON') +} +catch (error) { + console.error('Error parsing JSON:', error.message) +} + +// Use a ternary conditional operator +const isEven = num => num % 2 === 0 +const number = 7 +log(`${number} is ${isEven(number) ? 'even' : 'odd'}.`) + +// Use a callback function with setTimeout for asynchronous code +setTimeout(() => { + log('This code runs after a delay of 2 seconds.') +}, 2000) + +let a, b, c, d, foo + +if (a + || b + || c || d + || (d && b) +) { + foo() +} diff --git a/packages/eslint-config/__fixtures__/output/ts-strict-with-react/jsx.jsx b/packages/eslint-config/__fixtures__/output/ts-strict-with-react/jsx.jsx new file mode 100644 index 000000000..523af3782 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/ts-strict-with-react/jsx.jsx @@ -0,0 +1,29 @@ +export function HelloWorld({ + greeting = 'hello', + greeted = '"World"', + silent = false, + onMouseOver, +}) { + if (!greeting) { + return null + }; + + // TODO: Don't use random in render + const num = Math + .floor (Math.random() * 1e+7) + .toString() + .replace(/\.\d+/g, '') + + return ( +
+ { greeting.slice(0, 1).toUpperCase() + greeting.slice(1).toLowerCase() } + {greeting.endsWith(',') + ? ' ' + : ", " } + + { greeted } + + { (silent) ? '.' : '!'} +
+ ) +} diff --git a/packages/eslint-config/__fixtures__/output/ts-strict-with-react/markdown.md b/packages/eslint-config/__fixtures__/output/ts-strict-with-react/markdown.md new file mode 100644 index 000000000..a66c94c89 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/ts-strict-with-react/markdown.md @@ -0,0 +1,34 @@ +Header +====== + +_Look,_ code blocks are formatted *too!* + +```js +// This should be handled by ESLint instead of Prettier +function identity(x) { + if (foo) { + console.log('bar') + } +} +``` + +```css +/* This should be handled by Prettier */ +.foo { color:red;} +``` + +Pilot|Airport|Hours +--|:--:|--: +John Doe|SKG|1338 +Jane Roe|JFK|314 + +- - - - - - - - - - - - - - - + ++ List + + with a [link] (/to/somewhere) ++ and [another one] + + [another one]: http://example.com 'Example title' + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. +Curabitur consectetur maximus risus, sed maximus tellus tincidunt et. diff --git a/packages/eslint-config/__fixtures__/output/ts-strict-with-react/toml.toml b/packages/eslint-config/__fixtures__/output/ts-strict-with-react/toml.toml new file mode 100644 index 000000000..1f73d046b --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/ts-strict-with-react/toml.toml @@ -0,0 +1,23 @@ +comma = [ + 1, + 2, + 3, +] + +[foo] +b = 1 +c = "hello" +a = { answer = 42 } +indent = [ + 1, + 2 +] + +[a-table] +apple.type = "fruit" +apple.skin = "thin" +apple.color = "red" + +orange.type = "fruit" +orange.skin = "thick" +orange.color = "orange" diff --git a/packages/eslint-config/__fixtures__/output/ts-strict-with-react/tsx.tsx b/packages/eslint-config/__fixtures__/output/ts-strict-with-react/tsx.tsx new file mode 100644 index 000000000..ab640af67 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/ts-strict-with-react/tsx.tsx @@ -0,0 +1,32 @@ +export function Component1() { + return
+} + +export function jsx2() { + const props = { a: 1, b: 2 } + return ( + +
+ Inline Text +
+ + Block Text + +
+ Mixed +
Foo
+ Text + Bar +
+

+ foo + bar + baz +

+
+ ) +} diff --git a/packages/eslint-config/__fixtures__/output/ts-strict-with-react/typescript.ts b/packages/eslint-config/__fixtures__/output/ts-strict-with-react/typescript.ts new file mode 100644 index 000000000..29016e385 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/ts-strict-with-react/typescript.ts @@ -0,0 +1,84 @@ +// Define a TypeScript interface +interface Person { + name: string + age: number +} + +// Create an array of objects with the defined interface +const people: Person[] = [ + { name: 'Alice', age: 30 }, + { name: 'Bob', age: 25 }, + { name: 'Charlie', age: 35 }, +] + +// eslint-disable-next-line no-console +const log = console.log + +// Use a for...of loop to iterate over the array +for (const person of people) { + log(`Hello, my name is ${person.name} and I am ${person.age} years old.`) +} + +// Define a generic function +function identity< T >(arg: T): T { + return arg +} + +// Use the generic function with type inference +const result = identity( + 'TypeScript is awesome', +) +log(result) + +// Use optional properties in an interface +interface Car { + make: string + model?: string +} + +// Create objects using the interface +const car1: Car = { make: 'Toyota' } +const car2: Car = { + make: 'Ford', + model: 'Focus', +} + +// Use union types +type Fruit = 'apple' | 'banana' | 'orange' +const favoriteFruit: Fruit = 'apple' + +// Use a type assertion to tell TypeScript about the type +const inputValue: any = '42' +const numericValue = inputValue as number + +// Define a class with access modifiers +class Animal { + private name: string + constructor(name: string) { + this.name = name + } + + protected makeSound(sound: string) { + log(`${this.name} says ${sound}`) + } +} + +// Extend a class +class Dog extends Animal { + constructor(private alias: string) { + super(alias) + } + + bark() { + this.makeSound('Woof!') + } +} + +const dog = new Dog('Buddy') +dog.bark() + +function fn(): string { + return `hello${1}` +} + +log(car1, car2, favoriteFruit, numericValue, fn()) diff --git a/packages/eslint-config/__fixtures__/output/ts-strict-with-react/vue-ts.vue b/packages/eslint-config/__fixtures__/output/ts-strict-with-react/vue-ts.vue new file mode 100644 index 000000000..ce35e66b0 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/ts-strict-with-react/vue-ts.vue @@ -0,0 +1,35 @@ + + + + + + + diff --git a/packages/eslint-config/__fixtures__/output/ts-strict-with-react/vue.vue b/packages/eslint-config/__fixtures__/output/ts-strict-with-react/vue.vue new file mode 100644 index 000000000..944cc4e56 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/ts-strict-with-react/vue.vue @@ -0,0 +1,27 @@ + + + diff --git a/packages/eslint-config/__fixtures__/output/ts-strict/javascript.js b/packages/eslint-config/__fixtures__/output/ts-strict/javascript.js new file mode 100644 index 000000000..e0702598c --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/ts-strict/javascript.js @@ -0,0 +1,73 @@ +// This file is generated by ChatGPT + +// eslint-disable-next-line no-console +const log = console.log + +// Define a class using ES6 class syntax +class Person { + constructor(name, age) { + this.name = name + this.age = age + } + + // Define a method within the class + sayHello() { + log(`Hello, my name is ${this.name} and I am ${this.age} years old.`) + } +} + +// Create an array of objects +const people = [ + new Person('Alice', 30), + new Person('Bob', 25), + new Person('Charlie', 35), +] + +// Use the forEach method to iterate over the array +people.forEach((person) => { + person.sayHello() +}) + +// Use a template literal to create a multiline string +const multilineString = ` + This is a multiline string + that spans multiple lines. +` + +// Use destructuring assignment to extract values from an object +const { name, age } = people[0] +log(`First person in the array is ${name} and they are ${age} years old.`, multilineString) + +// Use the spread operator to create a new array +const numbers = [1, 2, 3] +const newNumbers = [...numbers, 4, 5] +log(newNumbers) + +// Use a try-catch block for error handling +try { + // Attempt to parse an invalid JSON string + JSON.parse('invalid JSON') +} +catch (error) { + console.error('Error parsing JSON:', error.message) +} + +// Use a ternary conditional operator +const isEven = num => num % 2 === 0 +const number = 7 +log(`${number} is ${isEven(number) ? 'even' : 'odd'}.`) + +// Use a callback function with setTimeout for asynchronous code +setTimeout(() => { + log('This code runs after a delay of 2 seconds.') +}, 2000) + +let a, b, c, d, foo + +if (a + || b + || c || d + || (d && b) +) { + foo() +} diff --git a/packages/eslint-config/__fixtures__/output/ts-strict/jsx.jsx b/packages/eslint-config/__fixtures__/output/ts-strict/jsx.jsx new file mode 100644 index 000000000..523af3782 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/ts-strict/jsx.jsx @@ -0,0 +1,29 @@ +export function HelloWorld({ + greeting = 'hello', + greeted = '"World"', + silent = false, + onMouseOver, +}) { + if (!greeting) { + return null + }; + + // TODO: Don't use random in render + const num = Math + .floor (Math.random() * 1e+7) + .toString() + .replace(/\.\d+/g, '') + + return ( +
+ { greeting.slice(0, 1).toUpperCase() + greeting.slice(1).toLowerCase() } + {greeting.endsWith(',') + ? ' ' + : ", " } + + { greeted } + + { (silent) ? '.' : '!'} +
+ ) +} diff --git a/packages/eslint-config/__fixtures__/output/ts-strict/markdown.md b/packages/eslint-config/__fixtures__/output/ts-strict/markdown.md new file mode 100644 index 000000000..a66c94c89 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/ts-strict/markdown.md @@ -0,0 +1,34 @@ +Header +====== + +_Look,_ code blocks are formatted *too!* + +```js +// This should be handled by ESLint instead of Prettier +function identity(x) { + if (foo) { + console.log('bar') + } +} +``` + +```css +/* This should be handled by Prettier */ +.foo { color:red;} +``` + +Pilot|Airport|Hours +--|:--:|--: +John Doe|SKG|1338 +Jane Roe|JFK|314 + +- - - - - - - - - - - - - - - + ++ List + + with a [link] (/to/somewhere) ++ and [another one] + + [another one]: http://example.com 'Example title' + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. +Curabitur consectetur maximus risus, sed maximus tellus tincidunt et. diff --git a/packages/eslint-config/__fixtures__/output/ts-strict/toml.toml b/packages/eslint-config/__fixtures__/output/ts-strict/toml.toml new file mode 100644 index 000000000..1f73d046b --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/ts-strict/toml.toml @@ -0,0 +1,23 @@ +comma = [ + 1, + 2, + 3, +] + +[foo] +b = 1 +c = "hello" +a = { answer = 42 } +indent = [ + 1, + 2 +] + +[a-table] +apple.type = "fruit" +apple.skin = "thin" +apple.color = "red" + +orange.type = "fruit" +orange.skin = "thick" +orange.color = "orange" diff --git a/packages/eslint-config/__fixtures__/output/ts-strict/tsx.tsx b/packages/eslint-config/__fixtures__/output/ts-strict/tsx.tsx new file mode 100644 index 000000000..ab640af67 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/ts-strict/tsx.tsx @@ -0,0 +1,32 @@ +export function Component1() { + return
+} + +export function jsx2() { + const props = { a: 1, b: 2 } + return ( + +
+ Inline Text +
+ + Block Text + +
+ Mixed +
Foo
+ Text + Bar +
+

+ foo + bar + baz +

+
+ ) +} diff --git a/packages/eslint-config/__fixtures__/output/ts-strict/typescript.ts b/packages/eslint-config/__fixtures__/output/ts-strict/typescript.ts new file mode 100644 index 000000000..29016e385 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/ts-strict/typescript.ts @@ -0,0 +1,84 @@ +// Define a TypeScript interface +interface Person { + name: string + age: number +} + +// Create an array of objects with the defined interface +const people: Person[] = [ + { name: 'Alice', age: 30 }, + { name: 'Bob', age: 25 }, + { name: 'Charlie', age: 35 }, +] + +// eslint-disable-next-line no-console +const log = console.log + +// Use a for...of loop to iterate over the array +for (const person of people) { + log(`Hello, my name is ${person.name} and I am ${person.age} years old.`) +} + +// Define a generic function +function identity< T >(arg: T): T { + return arg +} + +// Use the generic function with type inference +const result = identity( + 'TypeScript is awesome', +) +log(result) + +// Use optional properties in an interface +interface Car { + make: string + model?: string +} + +// Create objects using the interface +const car1: Car = { make: 'Toyota' } +const car2: Car = { + make: 'Ford', + model: 'Focus', +} + +// Use union types +type Fruit = 'apple' | 'banana' | 'orange' +const favoriteFruit: Fruit = 'apple' + +// Use a type assertion to tell TypeScript about the type +const inputValue: any = '42' +const numericValue = inputValue as number + +// Define a class with access modifiers +class Animal { + private name: string + constructor(name: string) { + this.name = name + } + + protected makeSound(sound: string) { + log(`${this.name} says ${sound}`) + } +} + +// Extend a class +class Dog extends Animal { + constructor(private alias: string) { + super(alias) + } + + bark() { + this.makeSound('Woof!') + } +} + +const dog = new Dog('Buddy') +dog.bark() + +function fn(): string { + return `hello${1}` +} + +log(car1, car2, favoriteFruit, numericValue, fn()) diff --git a/packages/eslint-config/__fixtures__/output/ts-strict/vue-ts.vue b/packages/eslint-config/__fixtures__/output/ts-strict/vue-ts.vue new file mode 100644 index 000000000..ce35e66b0 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/ts-strict/vue-ts.vue @@ -0,0 +1,35 @@ + + + + + + + diff --git a/packages/eslint-config/__fixtures__/output/ts-strict/vue.vue b/packages/eslint-config/__fixtures__/output/ts-strict/vue.vue new file mode 100644 index 000000000..944cc4e56 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/ts-strict/vue.vue @@ -0,0 +1,27 @@ + + + diff --git a/packages/eslint-config/__fixtures__/output/with-formatters/astro.astro b/packages/eslint-config/__fixtures__/output/with-formatters/astro.astro new file mode 100644 index 000000000..47e8620b5 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/with-formatters/astro.astro @@ -0,0 +1,18 @@ +--- +const isJsx = true +const content = 'hi!' +--- + +
+
{content}
+
+ {isJsx &&

{content}

} +
+
+ + diff --git a/packages/eslint-config/__fixtures__/output/with-formatters/css.css b/packages/eslint-config/__fixtures__/output/with-formatters/css.css new file mode 100644 index 000000000..ad88dbcfb --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/with-formatters/css.css @@ -0,0 +1,11 @@ +@media (max-width: 480px) { + .bd-examples { + margin-right: -0.75rem; + margin-left: -0.75rem; + } + + .bd-examples > [class^='col-'] { + padding-right: 0.75rem; + padding-left: 0.75rem; + } +} diff --git a/packages/eslint-config/__fixtures__/output/with-formatters/html.html b/packages/eslint-config/__fixtures__/output/with-formatters/html.html new file mode 100644 index 000000000..f4aec70fe --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/with-formatters/html.html @@ -0,0 +1,24 @@ + + + + + My tITlE + + + +

+ Hello world!
+ This is HTML5 Boilerplate. +

+ + + + diff --git a/packages/eslint-config/__fixtures__/output/with-formatters/javascript.js b/packages/eslint-config/__fixtures__/output/with-formatters/javascript.js new file mode 100644 index 000000000..e0702598c --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/with-formatters/javascript.js @@ -0,0 +1,73 @@ +// This file is generated by ChatGPT + +// eslint-disable-next-line no-console +const log = console.log + +// Define a class using ES6 class syntax +class Person { + constructor(name, age) { + this.name = name + this.age = age + } + + // Define a method within the class + sayHello() { + log(`Hello, my name is ${this.name} and I am ${this.age} years old.`) + } +} + +// Create an array of objects +const people = [ + new Person('Alice', 30), + new Person('Bob', 25), + new Person('Charlie', 35), +] + +// Use the forEach method to iterate over the array +people.forEach((person) => { + person.sayHello() +}) + +// Use a template literal to create a multiline string +const multilineString = ` + This is a multiline string + that spans multiple lines. +` + +// Use destructuring assignment to extract values from an object +const { name, age } = people[0] +log(`First person in the array is ${name} and they are ${age} years old.`, multilineString) + +// Use the spread operator to create a new array +const numbers = [1, 2, 3] +const newNumbers = [...numbers, 4, 5] +log(newNumbers) + +// Use a try-catch block for error handling +try { + // Attempt to parse an invalid JSON string + JSON.parse('invalid JSON') +} +catch (error) { + console.error('Error parsing JSON:', error.message) +} + +// Use a ternary conditional operator +const isEven = num => num % 2 === 0 +const number = 7 +log(`${number} is ${isEven(number) ? 'even' : 'odd'}.`) + +// Use a callback function with setTimeout for asynchronous code +setTimeout(() => { + log('This code runs after a delay of 2 seconds.') +}, 2000) + +let a, b, c, d, foo + +if (a + || b + || c || d + || (d && b) +) { + foo() +} diff --git a/packages/eslint-config/__fixtures__/output/with-formatters/jsx.jsx b/packages/eslint-config/__fixtures__/output/with-formatters/jsx.jsx new file mode 100644 index 000000000..523af3782 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/with-formatters/jsx.jsx @@ -0,0 +1,29 @@ +export function HelloWorld({ + greeting = 'hello', + greeted = '"World"', + silent = false, + onMouseOver, +}) { + if (!greeting) { + return null + }; + + // TODO: Don't use random in render + const num = Math + .floor (Math.random() * 1e+7) + .toString() + .replace(/\.\d+/g, '') + + return ( +
+ { greeting.slice(0, 1).toUpperCase() + greeting.slice(1).toLowerCase() } + {greeting.endsWith(',') + ? ' ' + : ", " } + + { greeted } + + { (silent) ? '.' : '!'} +
+ ) +} diff --git a/packages/eslint-config/__fixtures__/output/with-formatters/markdown.md b/packages/eslint-config/__fixtures__/output/with-formatters/markdown.md new file mode 100644 index 000000000..337663bd9 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/with-formatters/markdown.md @@ -0,0 +1,35 @@ +# Header + +_Look,_ code blocks are formatted _too!_ + +```js +// This should be handled by ESLint instead of Prettier +function identity(x) { + if (foo) { + console.log('bar') + } +} +``` + +```css +/* This should be handled by Prettier */ +.foo { + color: red; +} +``` + +| Pilot | Airport | Hours | +| -------- | :-----: | ----: | +| John Doe | SKG | 1338 | +| Jane Roe | JFK | 314 | + +--- + +- List +- with a [link] (/to/somewhere) +- and [another one] + + [another one]: http://example.com 'Example title' + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. +Curabitur consectetur maximus risus, sed maximus tellus tincidunt et. diff --git a/packages/eslint-config/__fixtures__/output/with-formatters/svg.svg b/packages/eslint-config/__fixtures__/output/with-formatters/svg.svg new file mode 100644 index 000000000..493e162e7 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/with-formatters/svg.svg @@ -0,0 +1,17 @@ + + + + + + + + diff --git a/packages/eslint-config/__fixtures__/output/with-formatters/toml.toml b/packages/eslint-config/__fixtures__/output/with-formatters/toml.toml new file mode 100644 index 000000000..1f73d046b --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/with-formatters/toml.toml @@ -0,0 +1,23 @@ +comma = [ + 1, + 2, + 3, +] + +[foo] +b = 1 +c = "hello" +a = { answer = 42 } +indent = [ + 1, + 2 +] + +[a-table] +apple.type = "fruit" +apple.skin = "thin" +apple.color = "red" + +orange.type = "fruit" +orange.skin = "thick" +orange.color = "orange" diff --git a/packages/eslint-config/__fixtures__/output/with-formatters/tsx.tsx b/packages/eslint-config/__fixtures__/output/with-formatters/tsx.tsx new file mode 100644 index 000000000..ab640af67 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/with-formatters/tsx.tsx @@ -0,0 +1,32 @@ +export function Component1() { + return
+} + +export function jsx2() { + const props = { a: 1, b: 2 } + return ( + +
+ Inline Text +
+ + Block Text + +
+ Mixed +
Foo
+ Text + Bar +
+

+ foo + bar + baz +

+
+ ) +} diff --git a/packages/eslint-config/__fixtures__/output/with-formatters/typescript.ts b/packages/eslint-config/__fixtures__/output/with-formatters/typescript.ts new file mode 100644 index 000000000..29016e385 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/with-formatters/typescript.ts @@ -0,0 +1,84 @@ +// Define a TypeScript interface +interface Person { + name: string + age: number +} + +// Create an array of objects with the defined interface +const people: Person[] = [ + { name: 'Alice', age: 30 }, + { name: 'Bob', age: 25 }, + { name: 'Charlie', age: 35 }, +] + +// eslint-disable-next-line no-console +const log = console.log + +// Use a for...of loop to iterate over the array +for (const person of people) { + log(`Hello, my name is ${person.name} and I am ${person.age} years old.`) +} + +// Define a generic function +function identity< T >(arg: T): T { + return arg +} + +// Use the generic function with type inference +const result = identity( + 'TypeScript is awesome', +) +log(result) + +// Use optional properties in an interface +interface Car { + make: string + model?: string +} + +// Create objects using the interface +const car1: Car = { make: 'Toyota' } +const car2: Car = { + make: 'Ford', + model: 'Focus', +} + +// Use union types +type Fruit = 'apple' | 'banana' | 'orange' +const favoriteFruit: Fruit = 'apple' + +// Use a type assertion to tell TypeScript about the type +const inputValue: any = '42' +const numericValue = inputValue as number + +// Define a class with access modifiers +class Animal { + private name: string + constructor(name: string) { + this.name = name + } + + protected makeSound(sound: string) { + log(`${this.name} says ${sound}`) + } +} + +// Extend a class +class Dog extends Animal { + constructor(private alias: string) { + super(alias) + } + + bark() { + this.makeSound('Woof!') + } +} + +const dog = new Dog('Buddy') +dog.bark() + +function fn(): string { + return `hello${1}` +} + +log(car1, car2, favoriteFruit, numericValue, fn()) diff --git a/packages/eslint-config/__fixtures__/output/with-formatters/vue-ts.vue b/packages/eslint-config/__fixtures__/output/with-formatters/vue-ts.vue new file mode 100644 index 000000000..ea5c75ae9 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/with-formatters/vue-ts.vue @@ -0,0 +1,38 @@ + + + + + + + diff --git a/packages/eslint-config/__fixtures__/output/with-formatters/vue.vue b/packages/eslint-config/__fixtures__/output/with-formatters/vue.vue new file mode 100644 index 000000000..944cc4e56 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/with-formatters/vue.vue @@ -0,0 +1,27 @@ + + + diff --git a/packages/eslint-config/__fixtures__/output/with-formatters/xml.xml b/packages/eslint-config/__fixtures__/output/with-formatters/xml.xml new file mode 100644 index 000000000..88571e3d8 --- /dev/null +++ b/packages/eslint-config/__fixtures__/output/with-formatters/xml.xml @@ -0,0 +1,20 @@ + + + Effective Java + 45.00 + + + Bluetooth Speaker + 120.00 + + + Clean Code + 33.50 + + + + + + + + diff --git a/packages/eslint-config/__tests__/old-config-loading.test.ts b/packages/eslint-config/__tests__/old-config-loading.test.ts deleted file mode 100644 index 4c93dfbf2..000000000 --- a/packages/eslint-config/__tests__/old-config-loading.test.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { exec } from "node:child_process"; -import { rm } from "node:fs/promises"; -import { join } from "node:path"; -import { promisify } from "node:util"; - -import { - afterEach, - beforeEach, - describe, - expect, - it, -} from "vitest"; - -const ONE_SECOND_IN_MS = 1000; - -const TEST_DIR = join(__dirname, "../__fixtures__", "old-config"); -const NODE_MODULES = join(TEST_DIR, "node_modules"); - -const execAsync = promisify(exec); - -describe("integration - old config", () => { - beforeEach(async () => { - await rm(NODE_MODULES, { force: true, recursive: true }); - }); - - afterEach(async () => { - await rm(NODE_MODULES, { recursive: true }); - }); - - it( - "installs & works", - async () => { - expect.assertions(2); - - await execAsync("pnpm --ignore-workspace i", { cwd: TEST_DIR }); - - const { stderr, stdout } = await execAsync("pnpm exec eslint -c ./.eslintrc.js . || true", { - cwd: TEST_DIR, - env: { ...process.env, FORCE_COLOR: "0" }, - }); - - expect(stderr.replace(TEST_DIR, "mocked-root-dir")).toContain(""); - expect(stdout.replace(TEST_DIR, "mocked-root-dir")).toContain("4 problems (3 errors, 1 warning)"); - }, - 240 * ONE_SECOND_IN_MS, - ); -}); diff --git a/packages/eslint-config/__tests__/rules.test.ts b/packages/eslint-config/__tests__/rules.test.ts new file mode 100644 index 000000000..5353b7ce6 --- /dev/null +++ b/packages/eslint-config/__tests__/rules.test.ts @@ -0,0 +1,198 @@ +import { existsSync } from "node:fs"; +import { + copyFile, + lstat, + mkdir, + readdir, + readFile, + rm, + writeFile, +} from "node:fs/promises"; +import { + dirname, + join, +} from "node:path"; +import { fileURLToPath } from "node:url"; + +import { execa } from "execa"; +import { glob } from "tinyglobby"; +import { afterAll, beforeAll, it } from "vitest"; + +import type { OptionsConfig, TypedFlatConfigItem } from "../src/types"; + +const rootPath = dirname(fileURLToPath(import.meta.url)); +const fixturesPath = join(rootPath, "..", "__fixtures__"); + +const copyFolderRecursive = async (from: string, to: string) => { + await mkdir(to, { + recursive: true, + }); + + const files = await readdir(from, { + recursive: true, + }); + + // eslint-disable-next-line no-restricted-syntax + for (const element of files) { + // eslint-disable-next-line unicorn/no-await-expression-member,no-await-in-loop + await ((await lstat(join(from, element))).isFile() + ? copyFile(join(from, element), join(to, element)) + : copyFolderRecursive(join(from, element), join(to, element))); + } +}; + +beforeAll(async () => { + await rm(join(rootPath, "_fixtures"), { force: true, recursive: true }); +}); + +afterAll(async () => { + await rm(join(rootPath, "_fixtures"), { force: true, recursive: true }); +}); + +const runWithConfig = (name: string, configs: OptionsConfig, ...items: TypedFlatConfigItem[]) => { + it.concurrent( + // eslint-disable-next-line vitest/valid-title + name, + async ({ expect }) => { + const from = join(fixturesPath, "input"); + const output = join(fixturesPath, "output", name); + + const target = join(rootPath, "_fixtures", name); + + await copyFolderRecursive(from, target); + await writeFile( + join(target, "eslint.config.js"), + ` +// @eslint-disable +import { createConfig } from '@anolilab/eslint-config' + +export default createConfig( + ${JSON.stringify(configs)}, + ...${JSON.stringify(items) ?? []}, +) + `, + ); + + await execa("npx", ["eslint", target, "--fix"], { + cwd: target, + stdio: "pipe", + }); + + const files = await glob("**/*", { + cwd: target, + ignore: ["node_modules", "eslint.config.js"], + }); + + await Promise.all( + files.map(async (file: string) => { + const content = await readFile(join(target, file), "utf8"); + const source = await readFile(join(from, file), "utf8"); + const outputPath = join(output, file); + + if (content === source) { + if (existsSync(outputPath)) { + await rm(outputPath); + } + + return; + } + + await expect.soft(content).toMatchFileSnapshot(join(output, file)); + }), + ); + }, + 30_000, + ); +}; + +runWithConfig("js", { + typescript: false, + // vue: false, +}); +// runWithConfig("all", { +// astro: true, +// // svelte: true, +// typescript: true, +// // vue: true, +// }); +// runWithConfig("no-style", { +// stylistic: false, +// typescript: true, +// vue: true, +// }); +// runWithConfig( +// "tab-double-quotes", +// { +// stylistic: { +// indent: "tab", +// quotes: "double", +// }, +// typescript: true, +// vue: true, +// }, +// { +// rules: { +// "style/no-mixed-spaces-and-tabs": "off", +// }, +// }, +// ); +// +// // https://github.com/antfu/eslint-config/issues/255 +// runWithConfig( +// "ts-override", +// { +// typescript: true, +// }, +// { +// rules: { +// "ts/consistent-type-definitions": ["error", "type"], +// }, +// }, +// ); +// +// // https://github.com/antfu/eslint-config/issues/255 +// runWithConfig( +// "ts-strict", +// { +// typescript: { +// tsconfigPath: "./tsconfig.json", +// }, +// }, +// { +// rules: { +// "ts/no-unsafe-return": ["off"], +// }, +// }, +// ); +// +// // https://github.com/antfu/eslint-config/issues/618 +// runWithConfig( +// "ts-strict-with-react", +// { +// react: true, +// typescript: { +// tsconfigPath: "./tsconfig.json", +// }, +// }, +// { +// rules: { +// "ts/no-unsafe-return": ["off"], +// }, +// }, +// ); +// +// runWithConfig("with-formatters", { +// astro: true, +// formatters: true, +// typescript: true, +// vue: true, +// }); +// +// runWithConfig("no-markdown-with-formatters", { +// formatters: { +// markdown: true, +// }, +// jsx: false, +// markdown: false, +// vue: false, +// }); diff --git a/packages/eslint-config/eslint.config.js b/packages/eslint-config/eslint.config.js index 94ff5e2d8..327e8770f 100644 --- a/packages/eslint-config/eslint.config.js +++ b/packages/eslint-config/eslint.config.js @@ -2,7 +2,21 @@ import { createConfig } from "./dist/index.mjs"; export default createConfig( { - ignores: ["eslint.config.js", "src/typegen.d.ts"], + ignores: ["eslint.config.js", "src/typegen.d.ts", "__fixtures__/**/*"], + react: false, + playwright: false, + storybook: false, + tailwindcss: false, + tanstackQuery: false, + tanstackRouter: false, + testingLibrary: false, + tsdoc: false, + unocss: false, + zod: false, + lodash: false, + jsx: false, + html: false, + astro: false, }, { files: ["**/*.ts"], @@ -13,7 +27,15 @@ export default createConfig( { files: ["debug-eslint.config.mjs"], rules: { - "antfu/no-import-dist": "off" - } - } + "antfu/no-import-dist": "off", + }, + }, + { + files: ["README.md"], + rules: { + "import/no-commonjs": "off", + "unicorn/prefer-module": "off", + "jsdoc/check-tag-names": "off", + }, + }, ); diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 7fd131dd2..669f23864 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -105,9 +105,9 @@ ], "scripts": { "build": "pnpm run build:typegen && pnpm run build:global-vitest && packem build --development", + "build:global-vitest": "tsx ./scripts/global-vitest.ts", "build:prod": "pnpm run build:typegen && pnpm run build:global-vitest && packem build --production", "build:typegen": "tsx ./scripts/typegen.ts", - "build:global-vitest": "tsx ./scripts/global-vitest.ts", "clean": "rimraf node_modules dist", "debug:rules": "pnpm exec eslint-config-inspector --config ./debug-eslint.config.mjs", "lint:attw": "attw --pack", @@ -122,8 +122,6 @@ }, "dependencies": { "@antfu/install-pkg": "^0.5.0", - "@babel/eslint-parser": "^7.25.9", - "@babel/plugin-syntax-import-assertions": "^7.26.0", "@eslint-community/eslint-plugin-eslint-comments": "^4.4.1", "@eslint/compat": "^1.2.4", "@eslint/js": "^9.17.0", @@ -157,7 +155,6 @@ "eslint-plugin-no-unsanitized": "^4.1.2", "eslint-plugin-perfectionist": "^4.6.0", "eslint-plugin-promise": "^7.2.1", - "eslint-plugin-react-refresh": "^0.4.16", "eslint-plugin-regexp": "^2.7.0", "eslint-plugin-security": "^3.0.1", "eslint-plugin-simple-import-sort": "^12.1.1", @@ -186,6 +183,7 @@ "@total-typescript/ts-reset": "^0.6.1", "@types/confusing-browser-globals": "^1.0.3", "@types/eslint": "^9.6.1", + "@types/eslint-plugin-jsx-a11y": "^6.10.0", "@types/eslint-plugin-tailwindcss": "^3.17.0", "@types/semver": "^7.5.8", "@unocss/eslint-plugin": "^0.65.4", @@ -196,6 +194,7 @@ "eslint-plugin-astro": "^1.3.1", "eslint-plugin-format": "^1.0.1", "eslint-plugin-jsx-a11y": "^6.10.2", + "eslint-plugin-react": "^7.37.3", "eslint-plugin-react-hooks": "^5.1.0", "eslint-plugin-react-refresh": "^0.4.16", "eslint-plugin-storybook": "^0.11.2", @@ -207,10 +206,12 @@ "eslint-plugin-you-dont-need-lodash-underscore": "^6.14.0", "eslint-plugin-zod": "^1.4.0", "eslint-typegen": "^0.3.2", + "execa": "^9.5.2", "prettier": "^3.4.2", "react": "^19.0.0", "rimraf": "^6.0.1", "semantic-release": "^24.2.1", + "tinyglobby": "^0.2.10", "tsx": "^4.19.2", "type-fest": "^4.31.0", "typescript": "^5.7.3", @@ -228,6 +229,7 @@ "eslint-plugin-format": ">=0.1.0", "eslint-plugin-jsx-a11y": "^6.7.1", "eslint-plugin-playwright": "^0.16.0 || ^0.18.0", + "eslint-plugin-react": "^7.37.3", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.16", "eslint-plugin-storybook": "^0.6.14", @@ -239,6 +241,9 @@ "eslint-plugin-zod": "^1.4.0" }, "peerDependenciesMeta": { + "@eslint-react/eslint-plugin": { + "optional": true + }, "@tanstack/eslint-plugin-query": { "optional": true }, diff --git a/packages/eslint-config/scripts/global-vitest.ts b/packages/eslint-config/scripts/global-vitest.ts index 5ed94f1d2..d601f3021 100644 --- a/packages/eslint-config/scripts/global-vitest.ts +++ b/packages/eslint-config/scripts/global-vitest.ts @@ -1,3 +1,11 @@ +/** + * This script is used to generate the globals used by vitest. + * + * A modified version of the original script from https://github.com/FRSOURCE/toolkit/blob/ac470422ba97837556c8a281e6ed4f73bcd0ba90/packages/globals-vitest + * + * MIT License + * Copyright (c) 2024 FRSOURCE - Let's shape your web + */ import { writeFileSync } from "node:fs"; import { createRequire } from "node:module"; import { dirname, join } from "node:path"; diff --git a/packages/eslint-config/src/config/es6.ts b/packages/eslint-config/src/config/es6.ts index bed7f699f..608e990c2 100644 --- a/packages/eslint-config/src/config/es6.ts +++ b/packages/eslint-config/src/config/es6.ts @@ -343,15 +343,17 @@ export default createConfig("all", async (config, oFiles) => { return [ { files, - name: "anolilab/es6/rules", - parserOptions: { - ecmaFeatures: { - generators: false, - objectLiteralDuplicateProperties: false, + languageOptions: { + parserOptions: { + ecmaFeatures: { + generators: false, + objectLiteralDuplicateProperties: false, + }, + ecmaVersion: 6, + sourceType: "module", }, - ecmaVersion: 6, - sourceType: "module", }, + name: "anolilab/es6/rules", rules: es6Rules, }, // The following rules are enabled in config, but are already checked (more thoroughly) by the TypeScript compiler diff --git a/packages/eslint-config/src/config/plugins/jsonc.ts b/packages/eslint-config/src/config/plugins/jsonc.ts index 8a21c5479..c1ad1c5e1 100644 --- a/packages/eslint-config/src/config/plugins/jsonc.ts +++ b/packages/eslint-config/src/config/plugins/jsonc.ts @@ -51,7 +51,7 @@ const jsonc = async ( rules: (jsoncPlugin.configs["recommended-with-json"] as Linter.Config).rules, }, { - files: ["**/package.json"], + files: ["package.json", "**/package.json"], name: "anolilab/jsonc/package.json-rules", rules: { "jsonc/sort-array-values": hasSortPackageJson diff --git a/packages/eslint-config/src/config/plugins/jsx-a11y.ts b/packages/eslint-config/src/config/plugins/jsx-a11y.ts index 8e4bb32ba..00455dfb7 100644 --- a/packages/eslint-config/src/config/plugins/jsx-a11y.ts +++ b/packages/eslint-config/src/config/plugins/jsx-a11y.ts @@ -22,248 +22,246 @@ export default createConfig("jsx_and_tsx", asyn "jsx-a11y": jsxA11yPlugin, }, rules: { - rules: { - // Enforce that anchors have content - // disabled; rule is deprecated - "jsx-a11y/accessible-emoji": "off", - - // Require ARIA roles to be valid and non-abstract - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/alt-text.md - "jsx-a11y/alt-text": [ - "error", - { - area: [], - elements: ["img", "object", "area", "input[type=\"image\"]"], - img: [], - "input[type=\"image\"]": [], - object: [], - }, - ], - - // Enforce all aria-* props are valid. - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/anchor-has-content.md - "jsx-a11y/anchor-has-content": ["error", { components: [] }], - - // Enforce ARIA state and property values are valid. - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/anchor-is-valid.md - "jsx-a11y/anchor-is-valid": [ - "error", - { - aspects: ["noHref", "invalidHref", "preferButton"], - components: ["A", "LinkTo", "Link"], - specialLink: ["to"], - }, - ], - - // Enforce that elements that do not support ARIA roles, states, and - // properties do not have those attributes. - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/aria-activedescendant-has-tabindex.md - "jsx-a11y/aria-activedescendant-has-tabindex": "error", - - // Enforce that all elements that require alternative text have meaningful information - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/aria-props.md - "jsx-a11y/aria-props": "error", - - // Prevent img alt text from containing redundant words like "image", "picture", or "photo" - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/aria-proptypes.md - "jsx-a11y/aria-proptypes": "error", - - // require that JSX labels use "htmlFor" - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/label-has-for.md - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/aria-role.md - "jsx-a11y/aria-role": ["error", { ignoreNonDOM: false }], - - // Enforce that a label tag has a text label and an associated control. - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/aria-unsupported-elements.md - "jsx-a11y/aria-unsupported-elements": "error", - - // Enforce that a control (an interactive element) has a text label. - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/29c68596b15c4ff0a40daae6d4a2670e36e37d35/docs/rules/autocomplete-valid.md - "jsx-a11y/autocomplete-valid": [ - "off", - { - inputComponents: [], - }, - ], - - // require that mouseover/out come with focus/blur, for keyboard-only users - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/click-events-have-key-events.md - "jsx-a11y/click-events-have-key-events": "error", - - // Prevent use of `accessKey` - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/control-has-associated-label.md - "jsx-a11y/control-has-associated-label": [ - "error", - { - controlComponents: [], - depth: 5, - ignoreElements: ["audio", "canvas", "embed", "input", "textarea", "tr", "video"], - ignoreRoles: ["grid", "listbox", "menu", "menubar", "radiogroup", "row", "tablist", "toolbar", "tree", "treegrid"], - labelAttributes: ["label"], - }, - ], - - // require onBlur instead of onChange - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/heading-has-content.md - "jsx-a11y/heading-has-content": ["error", { components: [""] }], - - // Elements with an interactive role and interaction handlers must be focusable - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/html-has-lang.md - "jsx-a11y/html-has-lang": "error", - - // Enforce that elements with ARIA roles must have all required attributes - // for that role. - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/iframe-has-title.md - "jsx-a11y/iframe-has-title": "error", - - // Enforce that elements with explicit or implicit roles defined contain - // only aria-* properties supported by that role. - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/img-redundant-alt.md - "jsx-a11y/img-redundant-alt": "error", - - // Enforce tabIndex value is not greater than zero. - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/interactive-supports-focus.md - "jsx-a11y/interactive-supports-focus": "error", - - // ensure tags have content and are not aria-hidden - // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/b800f40a2a69ad48015ae9226fbe879f946757ed/docs/rules/label-has-associated-control.md - "jsx-a11y/label-has-associated-control": [ - "error", - { - assert: "both", - controlComponents: [], - depth: 25, - labelAttributes: [], - labelComponents: [], - }, - ], - - // require HTML elements to have a "lang" prop - // deprecated: replaced by `label-has-associated-control` rule - "jsx-a11y/label-has-for": [ - "off", - { - allowChildren: false, - components: [], - required: { - every: ["nesting", "id"], - }, - }, - ], - - // require HTML element's lang prop to be valid - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/lang.md - "jsx-a11y/lang": "error", - - // prevent distracting elements, like and - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/media-has-caption.md - "jsx-a11y/media-has-caption": [ - "error", - { - audio: [], - track: [], - video: [], - }, - ], - - // only allow to have the "scope" attr - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/mouse-events-have-key-events.md - "jsx-a11y/mouse-events-have-key-events": "error", - - // require onClick be accompanied by onKeyUp/onKeyDown/onKeyPress - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-access-key.md - "jsx-a11y/no-access-key": "error", - - // Enforce that DOM elements without semantic behavior not have interaction handlers - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-autofocus.md - "jsx-a11y/no-autofocus": ["error", { ignoreNonDOM: true }], - - // A non-interactive element does not support event handlers (mouse and key handlers) - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-distracting-elements.md - "jsx-a11y/no-distracting-elements": [ - "error", - { - elements: ["marquee", "blink"], - }, - ], - - // ensure emoji are accessible - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/accessible-emoji.md - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-interactive-element-to-noninteractive-role.md - "jsx-a11y/no-interactive-element-to-noninteractive-role": [ - "error", - { - tr: ["none", "presentation"], - }, - ], - - // elements with aria-activedescendant must be tabbable - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-noninteractive-element-interactions.md - "jsx-a11y/no-noninteractive-element-interactions": [ - "error", - { - handlers: ["onClick", "onMouseDown", "onMouseUp", "onKeyPress", "onKeyDown", "onKeyUp"], - }, - ], - - // ensure iframe elements have a unique title - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-noninteractive-element-to-interactive-role.md - "jsx-a11y/no-noninteractive-element-to-interactive-role": [ - "error", - { - li: ["menuitem", "option", "row", "tab", "treeitem"], - ol: ["listbox", "menu", "menubar", "radiogroup", "tablist", "tree", "treegrid"], - table: ["grid"], - td: ["gridcell"], - ul: ["listbox", "menu", "menubar", "radiogroup", "tablist", "tree", "treegrid"], - }, - ], - - // prohibit autoFocus prop - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-noninteractive-tabindex.md - "jsx-a11y/no-noninteractive-tabindex": [ - "error", - { - roles: ["tabpanel"], - tags: [], - }, - ], - - // ensure HTML elements do not specify redundant ARIA roles - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-onchange.md - "jsx-a11y/no-onchange": "off", - - // media elements must have captions - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-redundant-roles.md - "jsx-a11y/no-redundant-roles": "error", - - // WAI-ARIA roles should not be used to convert an interactive element to non-interactive - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-static-element-interactions.md - "jsx-a11y/no-static-element-interactions": [ - "error", - { - handlers: ["onClick", "onMouseDown", "onMouseUp", "onKeyPress", "onKeyDown", "onKeyUp"], + // Enforce that anchors have content + // disabled; rule is deprecated + "jsx-a11y/accessible-emoji": "off", + + // Require ARIA roles to be valid and non-abstract + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/alt-text.md + "jsx-a11y/alt-text": [ + "error", + { + area: [], + elements: ["img", "object", "area", "input[type=\"image\"]"], + img: [], + "input[type=\"image\"]": [], + object: [], + }, + ], + + // Enforce all aria-* props are valid. + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/anchor-has-content.md + "jsx-a11y/anchor-has-content": ["error", { components: [] }], + + // Enforce ARIA state and property values are valid. + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/anchor-is-valid.md + "jsx-a11y/anchor-is-valid": [ + "error", + { + aspects: ["noHref", "invalidHref", "preferButton"], + components: ["A", "LinkTo", "Link"], + specialLink: ["to"], + }, + ], + + // Enforce that elements that do not support ARIA roles, states, and + // properties do not have those attributes. + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/aria-activedescendant-has-tabindex.md + "jsx-a11y/aria-activedescendant-has-tabindex": "error", + + // Enforce that all elements that require alternative text have meaningful information + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/aria-props.md + "jsx-a11y/aria-props": "error", + + // Prevent img alt text from containing redundant words like "image", "picture", or "photo" + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/aria-proptypes.md + "jsx-a11y/aria-proptypes": "error", + + // require that JSX labels use "htmlFor" + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/label-has-for.md + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/aria-role.md + "jsx-a11y/aria-role": ["error", { ignoreNonDOM: false }], + + // Enforce that a label tag has a text label and an associated control. + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/aria-unsupported-elements.md + "jsx-a11y/aria-unsupported-elements": "error", + + // Enforce that a control (an interactive element) has a text label. + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/29c68596b15c4ff0a40daae6d4a2670e36e37d35/docs/rules/autocomplete-valid.md + "jsx-a11y/autocomplete-valid": [ + "off", + { + inputComponents: [], + }, + ], + + // require that mouseover/out come with focus/blur, for keyboard-only users + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/click-events-have-key-events.md + "jsx-a11y/click-events-have-key-events": "error", + + // Prevent use of `accessKey` + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/control-has-associated-label.md + "jsx-a11y/control-has-associated-label": [ + "error", + { + controlComponents: [], + depth: 5, + ignoreElements: ["audio", "canvas", "embed", "input", "textarea", "tr", "video"], + ignoreRoles: ["grid", "listbox", "menu", "menubar", "radiogroup", "row", "tablist", "toolbar", "tree", "treegrid"], + labelAttributes: ["label"], + }, + ], + + // require onBlur instead of onChange + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/heading-has-content.md + "jsx-a11y/heading-has-content": ["error", { components: [""] }], + + // Elements with an interactive role and interaction handlers must be focusable + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/html-has-lang.md + "jsx-a11y/html-has-lang": "error", + + // Enforce that elements with ARIA roles must have all required attributes + // for that role. + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/iframe-has-title.md + "jsx-a11y/iframe-has-title": "error", + + // Enforce that elements with explicit or implicit roles defined contain + // only aria-* properties supported by that role. + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/img-redundant-alt.md + "jsx-a11y/img-redundant-alt": "error", + + // Enforce tabIndex value is not greater than zero. + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/interactive-supports-focus.md + "jsx-a11y/interactive-supports-focus": "error", + + // ensure tags have content and are not aria-hidden + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/b800f40a2a69ad48015ae9226fbe879f946757ed/docs/rules/label-has-associated-control.md + "jsx-a11y/label-has-associated-control": [ + "error", + { + assert: "both", + controlComponents: [], + depth: 25, + labelAttributes: [], + labelComponents: [], + }, + ], + + // require HTML elements to have a "lang" prop + // deprecated: replaced by `label-has-associated-control` rule + "jsx-a11y/label-has-for": [ + "off", + { + allowChildren: false, + components: [], + required: { + every: ["nesting", "id"], }, - ], + }, + ], + + // require HTML element's lang prop to be valid + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/lang.md + "jsx-a11y/lang": "error", + + // prevent distracting elements, like and + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/media-has-caption.md + "jsx-a11y/media-has-caption": [ + "error", + { + audio: [], + track: [], + video: [], + }, + ], + + // only allow to have the "scope" attr + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/mouse-events-have-key-events.md + "jsx-a11y/mouse-events-have-key-events": "error", + + // require onClick be accompanied by onKeyUp/onKeyDown/onKeyPress + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-access-key.md + "jsx-a11y/no-access-key": "error", + + // Enforce that DOM elements without semantic behavior not have interaction handlers + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-autofocus.md + "jsx-a11y/no-autofocus": ["error", { ignoreNonDOM: true }], + + // A non-interactive element does not support event handlers (mouse and key handlers) + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-distracting-elements.md + "jsx-a11y/no-distracting-elements": [ + "error", + { + elements: ["marquee", "blink"], + }, + ], + + // ensure emoji are accessible + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/accessible-emoji.md + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-interactive-element-to-noninteractive-role.md + "jsx-a11y/no-interactive-element-to-noninteractive-role": [ + "error", + { + tr: ["none", "presentation"], + }, + ], + + // elements with aria-activedescendant must be tabbable + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-noninteractive-element-interactions.md + "jsx-a11y/no-noninteractive-element-interactions": [ + "error", + { + handlers: ["onClick", "onMouseDown", "onMouseUp", "onKeyPress", "onKeyDown", "onKeyUp"], + }, + ], + + // ensure iframe elements have a unique title + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-noninteractive-element-to-interactive-role.md + "jsx-a11y/no-noninteractive-element-to-interactive-role": [ + "error", + { + li: ["menuitem", "option", "row", "tab", "treeitem"], + ol: ["listbox", "menu", "menubar", "radiogroup", "tablist", "tree", "treegrid"], + table: ["grid"], + td: ["gridcell"], + ul: ["listbox", "menu", "menubar", "radiogroup", "tablist", "tree", "treegrid"], + }, + ], + + // prohibit autoFocus prop + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-noninteractive-tabindex.md + "jsx-a11y/no-noninteractive-tabindex": [ + "error", + { + roles: ["tabpanel"], + tags: [], + }, + ], + + // ensure HTML elements do not specify redundant ARIA roles + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-onchange.md + "jsx-a11y/no-onchange": "off", + + // media elements must have captions + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-redundant-roles.md + "jsx-a11y/no-redundant-roles": "error", + + // WAI-ARIA roles should not be used to convert an interactive element to non-interactive + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-static-element-interactions.md + "jsx-a11y/no-static-element-interactions": [ + "error", + { + handlers: ["onClick", "onMouseDown", "onMouseUp", "onKeyPress", "onKeyDown", "onKeyUp"], + }, + ], - // WAI-ARIA roles should not be used to convert a non-interactive element to interactive - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/role-has-required-aria-props.md - "jsx-a11y/role-has-required-aria-props": "error", + // WAI-ARIA roles should not be used to convert a non-interactive element to interactive + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/role-has-required-aria-props.md + "jsx-a11y/role-has-required-aria-props": "error", - // Tab key navigation should be limited to elements on the page that can be interacted with. - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/role-supports-aria-props.md - "jsx-a11y/role-supports-aria-props": "error", + // Tab key navigation should be limited to elements on the page that can be interacted with. + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/role-supports-aria-props.md + "jsx-a11y/role-supports-aria-props": "error", - // ensure tags are valid - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/scope.md - "jsx-a11y/scope": "error", + // ensure tags are valid + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/scope.md + "jsx-a11y/scope": "error", - // Ensure the autocomplete attribute is correct and suitable for the form field it is used with - // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/tabindex-no-positive.md - "jsx-a11y/tabindex-no-positive": "error", + // Ensure the autocomplete attribute is correct and suitable for the form field it is used with + // https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/tabindex-no-positive.md + "jsx-a11y/tabindex-no-positive": "error", - ...overrides, - }, + ...overrides, }, }, ]; diff --git a/packages/eslint-config/src/config/plugins/node.ts b/packages/eslint-config/src/config/plugins/node.ts index 99341ea6c..497803111 100644 --- a/packages/eslint-config/src/config/plugins/node.ts +++ b/packages/eslint-config/src/config/plugins/node.ts @@ -12,16 +12,20 @@ export default createConfig + 'react-x/avoid-shorthand-boolean'?: Linter.RuleEntry<[]> /** * disallow using shorthand fragment syntax * @see https://eslint-react.xyz/docs/rules/avoid-shorthand-fragment */ - 'react/avoid-shorthand-fragment'?: Linter.RuleEntry<[]> + 'react-x/avoid-shorthand-fragment'?: Linter.RuleEntry<[]> /** * require a 'ref' parameter to be set when using 'forwardRef' * @see https://eslint-react.xyz/docs/rules/ensure-forward-ref-using-ref */ - 'react/ensure-forward-ref-using-ref'?: Linter.RuleEntry<[]> + 'react-x/ensure-forward-ref-using-ref'?: Linter.RuleEntry<[]> /** * disallow duplicate props * @see https://eslint-react.xyz/docs/rules/no-duplicate-jsx-props */ - 'react/jsx-no-duplicate-props'?: Linter.RuleEntry<[]> + 'react-x/jsx-no-duplicate-props'?: Linter.RuleEntry<[]> /** * helpes `eslint/no-unused-vars` to correctly mark JSX variables as used. * @see https://eslint-react.xyz/docs/rules/use-jsx-vars */ - 'react/jsx-uses-vars'?: Linter.RuleEntry<[]> + 'react-x/jsx-uses-vars'?: Linter.RuleEntry<[]> /** * disallow accessing 'this.state' within 'setState' * @see https://eslint-react.xyz/docs/rules/no-access-state-in-setstate */ - 'react/no-access-state-in-setstate'?: Linter.RuleEntry<[]> + 'react-x/no-access-state-in-setstate'?: Linter.RuleEntry<[]> /** * disallow using Array index as 'key' * @see https://eslint-react.xyz/docs/rules/no-array-index-key */ - 'react/no-array-index-key'?: Linter.RuleEntry<[]> + 'react-x/no-array-index-key'?: Linter.RuleEntry<[]> /** * disallow using 'Children.count' * @see https://eslint-react.xyz/docs/rules/no-children-count */ - 'react/no-children-count'?: Linter.RuleEntry<[]> + 'react-x/no-children-count'?: Linter.RuleEntry<[]> /** * disallow using 'Children.forEach' * @see https://eslint-react.xyz/docs/rules/no-children-for-each */ - 'react/no-children-for-each'?: Linter.RuleEntry<[]> + 'react-x/no-children-for-each'?: Linter.RuleEntry<[]> /** * disallow using 'Children.map' * @see https://eslint-react.xyz/docs/rules/no-children-map */ - 'react/no-children-map'?: Linter.RuleEntry<[]> + 'react-x/no-children-map'?: Linter.RuleEntry<[]> /** * disallow using 'Children.only' * @see https://eslint-react.xyz/docs/rules/no-children-only */ - 'react/no-children-only'?: Linter.RuleEntry<[]> + 'react-x/no-children-only'?: Linter.RuleEntry<[]> /** * disallow passing 'children' as props * @see https://eslint-react.xyz/docs/rules/no-children-prop */ - 'react/no-children-prop'?: Linter.RuleEntry<[]> + 'react-x/no-children-prop'?: Linter.RuleEntry<[]> /** * disallow using 'Children.toArray' * @see https://eslint-react.xyz/docs/rules/no-children-to-array */ - 'react/no-children-to-array'?: Linter.RuleEntry<[]> + 'react-x/no-children-to-array'?: Linter.RuleEntry<[]> /** * disallow using class components * @see https://eslint-react.xyz/docs/rules/no-class-component */ - 'react/no-class-component'?: Linter.RuleEntry<[]> + 'react-x/no-class-component'?: Linter.RuleEntry<[]> /** * disallow using 'cloneElement' * @see https://eslint-react.xyz/docs/rules/no-clone-element */ - 'react/no-clone-element'?: Linter.RuleEntry<[]> + 'react-x/no-clone-element'?: Linter.RuleEntry<[]> /** * disallow comments from being inserted as text nodes * @see https://eslint-react.xyz/docs/rules/no-comment-textnodes */ - 'react/no-comment-textnodes'?: Linter.RuleEntry<[]> + 'react-x/no-comment-textnodes'?: Linter.RuleEntry<[]> /** * disallow complex conditional rendering * @see https://eslint-react.xyz/docs/rules/no-complex-conditional-rendering */ - 'react/no-complex-conditional-rendering'?: Linter.RuleEntry<[]> + 'react-x/no-complex-conditional-rendering'?: Linter.RuleEntry<[]> /** * disallow complex conditional rendering * @see https://eslint-react.xyz/docs/rules/no-complex-conditional-rendering */ - 'react/no-complicated-conditional-rendering'?: Linter.RuleEntry<[]> + 'react-x/no-complicated-conditional-rendering'?: Linter.RuleEntry<[]> /** * disallow using 'componentWillMount' * @see https://eslint-react.xyz/docs/rules/no-component-will-mount */ - 'react/no-component-will-mount'?: Linter.RuleEntry<[]> + 'react-x/no-component-will-mount'?: Linter.RuleEntry<[]> /** * disallow using 'componentWillReceiveProps' * @see https://eslint-react.xyz/docs/rules/no-component-will-receive-props */ - 'react/no-component-will-receive-props'?: Linter.RuleEntry<[]> + 'react-x/no-component-will-receive-props'?: Linter.RuleEntry<[]> /** * disallow using 'componentWillReceiveProps' * @see https://eslint-react.xyz/docs/rules/no-component-will-update */ - 'react/no-component-will-update'?: Linter.RuleEntry<[]> + 'react-x/no-component-will-update'?: Linter.RuleEntry<[]> /** * disallow the use of '' * @see https://eslint-react.xyz/docs/rules/no-context-provider */ - 'react/no-context-provider'?: Linter.RuleEntry<[]> + 'react-x/no-context-provider'?: Linter.RuleEntry<[]> /** * disallow using 'createRef' in function components * @see https://eslint-react.xyz/docs/rules/no-create-ref */ - 'react/no-create-ref'?: Linter.RuleEntry<[]> + 'react-x/no-create-ref'?: Linter.RuleEntry<[]> /** * disallow using 'defaultProps' property in components * @see https://eslint-react.xyz/docs/rules/no-default-props */ - 'react/no-default-props'?: Linter.RuleEntry<[]> + 'react-x/no-default-props'?: Linter.RuleEntry<[]> /** * disallow direct mutation of state * @see https://eslint-react.xyz/docs/rules/no-direct-mutation-state */ - 'react/no-direct-mutation-state'?: Linter.RuleEntry<[]> + 'react-x/no-direct-mutation-state'?: Linter.RuleEntry<[]> /** * disallow duplicate props * @see https://eslint-react.xyz/docs/rules/no-duplicate-jsx-props */ - 'react/no-duplicate-jsx-props'?: Linter.RuleEntry<[]> + 'react-x/no-duplicate-jsx-props'?: Linter.RuleEntry<[]> /** * disallow duplicate keys when rendering list * @see https://eslint-react.xyz/docs/rules/no-duplicate-key */ - 'react/no-duplicate-key'?: Linter.RuleEntry<[]> + 'react-x/no-duplicate-key'?: Linter.RuleEntry<[]> /** * disallow the use of 'forwardRef' * @see https://eslint-react.xyz/docs/rules/no-forward-ref */ - 'react/no-forward-ref'?: Linter.RuleEntry<[]> + 'react-x/no-forward-ref'?: Linter.RuleEntry<[]> /** * disallow implicit 'key' props * @see https://eslint-react.xyz/docs/rules/no-implicit-key */ - 'react/no-implicit-key'?: Linter.RuleEntry<[]> + 'react-x/no-implicit-key'?: Linter.RuleEntry<[]> /** * disallow problematic leaked values from being rendered * @see https://eslint-react.xyz/docs/rules/no-leaked-conditional-rendering */ - 'react/no-leaked-conditional-rendering'?: Linter.RuleEntry<[]> + 'react-x/no-leaked-conditional-rendering'?: Linter.RuleEntry<[]> /** * require 'displayName' for 'memo' and 'forwardRef' components * @see https://eslint-react.xyz/docs/rules/no-missing-component-display-name */ - 'react/no-missing-component-display-name'?: Linter.RuleEntry<[]> + 'react-x/no-missing-component-display-name'?: Linter.RuleEntry<[]> /** * require 'key' when rendering list * @see https://eslint-react.xyz/docs/rules/no-missing-key */ - 'react/no-missing-key'?: Linter.RuleEntry<[]> + 'react-x/no-missing-key'?: Linter.RuleEntry<[]> /** * disallow using unstable nested components * @see https://eslint-react.xyz/docs/rules/no-nested-components */ - 'react/no-nested-components'?: Linter.RuleEntry<[]> + 'react-x/no-nested-components'?: Linter.RuleEntry<[]> /** * disallow using 'propTypes' property in components * @see https://eslint-react.xyz/docs/rules/no-prop-types */ - 'react/no-prop-types'?: Linter.RuleEntry<[]> + 'react-x/no-prop-types'?: Linter.RuleEntry<[]> /** * disallow using 'shouldComponentUpdate' in class component extends 'React.PureComponent' * @see https://eslint-react.xyz/docs/rules/no-redundant-should-component-update */ - 'react/no-redundant-should-component-update'?: Linter.RuleEntry<[]> + 'react-x/no-redundant-should-component-update'?: Linter.RuleEntry<[]> /** * disallow using 'setState' in 'componentDidMount' * @see https://eslint-react.xyz/docs/rules/no-set-state-in-component-did-mount */ - 'react/no-set-state-in-component-did-mount'?: Linter.RuleEntry<[]> + 'react-x/no-set-state-in-component-did-mount'?: Linter.RuleEntry<[]> /** * disallow using 'setState' in 'componentDidUpdate' * @see https://eslint-react.xyz/docs/rules/no-set-state-in-component-did-update */ - 'react/no-set-state-in-component-did-update'?: Linter.RuleEntry<[]> + 'react-x/no-set-state-in-component-did-update'?: Linter.RuleEntry<[]> /** * disallow using 'setState' in 'componentWillUpdate' * @see https://eslint-react.xyz/docs/rules/no-set-state-in-component-will-update */ - 'react/no-set-state-in-component-will-update'?: Linter.RuleEntry<[]> + 'react-x/no-set-state-in-component-will-update'?: Linter.RuleEntry<[]> /** * disallow using deprecated string refs * @see https://eslint-react.xyz/docs/rules/no-string-refs */ - 'react/no-string-refs'?: Linter.RuleEntry<[]> + 'react-x/no-string-refs'?: Linter.RuleEntry<[]> /** * disallow using 'UNSAFE_componentWillMount' * @see https://eslint-react.xyz/docs/rules/no-unsafe-component-will-mount */ - 'react/no-unsafe-component-will-mount'?: Linter.RuleEntry<[]> + 'react-x/no-unsafe-component-will-mount'?: Linter.RuleEntry<[]> /** * disallow using 'UNSAFE_componentWillReceiveProps' * @see https://eslint-react.xyz/docs/rules/no-unsafe-component-will-receive-props */ - 'react/no-unsafe-component-will-receive-props'?: Linter.RuleEntry<[]> + 'react-x/no-unsafe-component-will-receive-props'?: Linter.RuleEntry<[]> /** * disallow using 'UNSAFE_componentWillUpdate' * @see https://eslint-react.xyz/docs/rules/no-unsafe-component-will-update */ - 'react/no-unsafe-component-will-update'?: Linter.RuleEntry<[]> + 'react-x/no-unsafe-component-will-update'?: Linter.RuleEntry<[]> /** * disallow passing constructed values to context providers * @see https://eslint-react.xyz/docs/rules/no-unstable-context-value */ - 'react/no-unstable-context-value'?: Linter.RuleEntry<[]> + 'react-x/no-unstable-context-value'?: Linter.RuleEntry<[]> /** * disallow using unstable value as default param in function component * @see https://eslint-react.xyz/docs/rules/no-unstable-default-props */ - 'react/no-unstable-default-props'?: Linter.RuleEntry<[]> + 'react-x/no-unstable-default-props'?: Linter.RuleEntry<[]> /** * disallow unused class component members * @see https://eslint-react.xyz/docs/rules/no-unused-class-component-members */ - 'react/no-unused-class-component-members'?: Linter.RuleEntry<[]> + 'react-x/no-unused-class-component-members'?: Linter.RuleEntry<[]> /** * disallow unused state of class component * @see https://eslint-react.xyz/docs/rules/no-unused-state */ - 'react/no-unused-state'?: Linter.RuleEntry<[]> + 'react-x/no-unused-state'?: Linter.RuleEntry<[]> /** * disallow unnecessary fragments * @see https://eslint-react.xyz/docs/rules/no-useless-fragment */ - 'react/no-useless-fragment'?: Linter.RuleEntry + 'react-x/no-useless-fragment'?: Linter.RuleEntry /** * enforce using destructuring assignment in component props and context * @see https://eslint-react.xyz/docs/rules/prefer-destructuring-assignment */ - 'react/prefer-destructuring-assignment'?: Linter.RuleEntry<[]> + 'react-x/prefer-destructuring-assignment'?: Linter.RuleEntry<[]> /** * enforce React is imported via a namespace import * @see https://eslint-react.xyz/docs/rules/prefer-react-namespace-import */ - 'react/prefer-react-namespace-import'?: Linter.RuleEntry<[]> + 'react-x/prefer-react-namespace-import'?: Linter.RuleEntry<[]> /** * enforce read-only props in components * @see https://eslint-react.xyz/docs/rules/prefer-read-only-props */ - 'react/prefer-read-only-props'?: Linter.RuleEntry<[]> + 'react-x/prefer-read-only-props'?: Linter.RuleEntry<[]> /** * enforce using shorthand boolean attributes * @see https://eslint-react.xyz/docs/rules/prefer-shorthand-boolean */ - 'react/prefer-shorthand-boolean'?: Linter.RuleEntry<[]> + 'react-x/prefer-shorthand-boolean'?: Linter.RuleEntry<[]> /** * enforce using fragment syntax instead of 'Fragment' component * @see https://eslint-react.xyz/docs/rules/prefer-shorthand-fragment */ - 'react/prefer-shorthand-fragment'?: Linter.RuleEntry<[]> + 'react-x/prefer-shorthand-fragment'?: Linter.RuleEntry<[]> /** * helpes `eslint/no-unused-vars` to correctly mark JSX variables as used. * @see https://eslint-react.xyz/docs/rules/use-jsx-vars */ - 'react/use-jsx-vars'?: Linter.RuleEntry<[]> + 'react-x/use-jsx-vars'?: Linter.RuleEntry<[]> + /** + * Enforces consistent naming for boolean props + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/boolean-prop-naming.md + */ + 'react/boolean-prop-naming'?: Linter.RuleEntry + /** + * Disallow usage of `button` elements without an explicit `type` attribute + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/button-has-type.md + */ + 'react/button-has-type'?: Linter.RuleEntry + /** + * Enforce using `onChange` or `readonly` attribute when `checked` is used + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/checked-requires-onchange-or-readonly.md + */ + 'react/checked-requires-onchange-or-readonly'?: Linter.RuleEntry + /** + * Enforce all defaultProps have a corresponding non-required PropType + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/default-props-match-prop-types.md + */ + 'react/default-props-match-prop-types'?: Linter.RuleEntry + /** + * Enforce consistent usage of destructuring assignment of props, state, and context + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/destructuring-assignment.md + */ + 'react/destructuring-assignment'?: Linter.RuleEntry + /** + * Disallow missing displayName in a React component definition + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/display-name.md + */ + 'react/display-name'?: Linter.RuleEntry + /** + * Disallow certain props on components + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-component-props.md + */ + 'react/forbid-component-props'?: Linter.RuleEntry + /** + * Disallow certain props on DOM Nodes + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-dom-props.md + */ + 'react/forbid-dom-props'?: Linter.RuleEntry + /** + * Disallow certain elements + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-elements.md + */ + 'react/forbid-elements'?: Linter.RuleEntry + /** + * Disallow using another component's propTypes + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-foreign-prop-types.md + */ + 'react/forbid-foreign-prop-types'?: Linter.RuleEntry + /** + * Disallow certain propTypes + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-prop-types.md + */ + 'react/forbid-prop-types'?: Linter.RuleEntry + /** + * Require all forwardRef components include a ref parameter + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forward-ref-uses-ref.md + */ + 'react/forward-ref-uses-ref'?: Linter.RuleEntry<[]> + /** + * Enforce a specific function type for function components + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/function-component-definition.md + */ + 'react/function-component-definition'?: Linter.RuleEntry + /** + * Ensure destructuring and symmetric naming of useState hook value and setter variables + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/hook-use-state.md + */ + 'react/hook-use-state'?: Linter.RuleEntry + /** + * Enforce sandbox attribute on iframe elements + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/iframe-missing-sandbox.md + */ + 'react/iframe-missing-sandbox'?: Linter.RuleEntry<[]> + /** + * Enforce boolean attributes notation in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-boolean-value.md + */ + 'react/jsx-boolean-value'?: Linter.RuleEntry + /** + * Enforce or disallow spaces inside of curly braces in JSX attributes and expressions + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-child-element-spacing.md + */ + 'react/jsx-child-element-spacing'?: Linter.RuleEntry<[]> + /** + * Enforce closing bracket location in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-closing-bracket-location.md + */ + 'react/jsx-closing-bracket-location'?: Linter.RuleEntry + /** + * Enforce closing tag location for multiline JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-closing-tag-location.md + */ + 'react/jsx-closing-tag-location'?: Linter.RuleEntry + /** + * Disallow unnecessary JSX expressions when literals alone are sufficient or enforce JSX expressions on literals in JSX children or attributes + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-curly-brace-presence.md + */ + 'react/jsx-curly-brace-presence'?: Linter.RuleEntry + /** + * Enforce consistent linebreaks in curly braces in JSX attributes and expressions + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-curly-newline.md + */ + 'react/jsx-curly-newline'?: Linter.RuleEntry + /** + * Enforce or disallow spaces inside of curly braces in JSX attributes and expressions + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-curly-spacing.md + */ + 'react/jsx-curly-spacing'?: Linter.RuleEntry + /** + * Enforce or disallow spaces around equal signs in JSX attributes + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-equals-spacing.md + */ + 'react/jsx-equals-spacing'?: Linter.RuleEntry + /** + * Disallow file extensions that may contain JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-filename-extension.md + */ + 'react/jsx-filename-extension'?: Linter.RuleEntry + /** + * Enforce proper position of the first property in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-first-prop-new-line.md + */ + 'react/jsx-first-prop-new-line'?: Linter.RuleEntry + /** + * Enforce shorthand or standard form for React fragments + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-fragments.md + */ + 'react/jsx-fragments'?: Linter.RuleEntry + /** + * Enforce event handler naming conventions in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-handler-names.md + */ + 'react/jsx-handler-names'?: Linter.RuleEntry + /** + * Enforce JSX indentation + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-indent.md + */ + 'react/jsx-indent'?: Linter.RuleEntry + /** + * Enforce props indentation in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-indent-props.md + */ + 'react/jsx-indent-props'?: Linter.RuleEntry + /** + * Disallow missing `key` props in iterators/collection literals + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-key.md + */ + 'react/jsx-key'?: Linter.RuleEntry + /** + * Enforce JSX maximum depth + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-max-depth.md + */ + 'react/jsx-max-depth'?: Linter.RuleEntry + /** + * Enforce maximum of props on a single line in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-max-props-per-line.md + */ + 'react/jsx-max-props-per-line'?: Linter.RuleEntry + /** + * Require or prevent a new line after jsx elements and expressions. + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-newline.md + */ + 'react/jsx-newline'?: Linter.RuleEntry + /** + * Disallow `.bind()` or arrow functions in JSX props + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-bind.md + */ + 'react/jsx-no-bind'?: Linter.RuleEntry + /** + * Disallow comments from being inserted as text nodes + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-comment-textnodes.md + */ + 'react/jsx-no-comment-textnodes'?: Linter.RuleEntry<[]> + /** + * Disallows JSX context provider values from taking values that will cause needless rerenders + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-constructed-context-values.md + */ + 'react/jsx-no-constructed-context-values'?: Linter.RuleEntry<[]> + /** + * Disallow duplicate properties in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-duplicate-props.md + */ + 'react/jsx-no-duplicate-props'?: Linter.RuleEntry + /** + * Disallow problematic leaked values from being rendered + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-leaked-render.md + */ + 'react/jsx-no-leaked-render'?: Linter.RuleEntry + /** + * Disallow usage of string literals in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-literals.md + */ + 'react/jsx-no-literals'?: Linter.RuleEntry + /** + * Disallow usage of `javascript:` URLs + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-script-url.md + */ + 'react/jsx-no-script-url'?: Linter.RuleEntry + /** + * Disallow `target="_blank"` attribute without `rel="noreferrer"` + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-target-blank.md + */ + 'react/jsx-no-target-blank'?: Linter.RuleEntry + /** + * Disallow undeclared variables in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-undef.md + */ + 'react/jsx-no-undef'?: Linter.RuleEntry + /** + * Disallow unnecessary fragments + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-useless-fragment.md + */ + 'react/jsx-no-useless-fragment'?: Linter.RuleEntry + /** + * Require one JSX element per line + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-one-expression-per-line.md + */ + 'react/jsx-one-expression-per-line'?: Linter.RuleEntry + /** + * Enforce PascalCase for user-defined JSX components + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-pascal-case.md + */ + 'react/jsx-pascal-case'?: Linter.RuleEntry + /** + * Disallow multiple spaces between inline JSX props + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-props-no-multi-spaces.md + */ + 'react/jsx-props-no-multi-spaces'?: Linter.RuleEntry<[]> + /** + * Disallow JSX prop spreading the same identifier multiple times + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-props-no-spread-multi.md + */ + 'react/jsx-props-no-spread-multi'?: Linter.RuleEntry<[]> + /** + * Disallow JSX prop spreading + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-props-no-spreading.md + */ + 'react/jsx-props-no-spreading'?: Linter.RuleEntry + /** + * Enforce defaultProps declarations alphabetical sorting + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-sort-default-props.md + * @deprecated + */ + 'react/jsx-sort-default-props'?: Linter.RuleEntry + /** + * Enforce props alphabetical sorting + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-sort-props.md + */ + 'react/jsx-sort-props'?: Linter.RuleEntry + /** + * Enforce spacing before closing bracket in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-space-before-closing.md + * @deprecated + */ + 'react/jsx-space-before-closing'?: Linter.RuleEntry + /** + * Enforce whitespace in and around the JSX opening and closing brackets + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-tag-spacing.md + */ + 'react/jsx-tag-spacing'?: Linter.RuleEntry + /** + * Disallow React to be incorrectly marked as unused + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-uses-react.md + */ + 'react/jsx-uses-react'?: Linter.RuleEntry<[]> + /** + * Disallow variables used in JSX to be incorrectly marked as unused + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-uses-vars.md + */ + 'react/jsx-uses-vars'?: Linter.RuleEntry<[]> + /** + * Disallow missing parentheses around multiline JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-wrap-multilines.md + */ + 'react/jsx-wrap-multilines'?: Linter.RuleEntry + /** + * Disallow when this.state is accessed within setState + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-access-state-in-setstate.md + */ + 'react/no-access-state-in-setstate'?: Linter.RuleEntry<[]> + /** + * Disallow adjacent inline elements not separated by whitespace. + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-adjacent-inline-elements.md + */ + 'react/no-adjacent-inline-elements'?: Linter.RuleEntry<[]> + /** + * Disallow usage of Array index in keys + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-array-index-key.md + */ + 'react/no-array-index-key'?: Linter.RuleEntry<[]> + /** + * Lifecycle methods should be methods on the prototype, not class fields + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-arrow-function-lifecycle.md + */ + 'react/no-arrow-function-lifecycle'?: Linter.RuleEntry<[]> + /** + * Disallow passing of children as props + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-children-prop.md + */ + 'react/no-children-prop'?: Linter.RuleEntry + /** + * Disallow usage of dangerous JSX properties + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-danger.md + */ + 'react/no-danger'?: Linter.RuleEntry + /** + * Disallow when a DOM element is using both children and dangerouslySetInnerHTML + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-danger-with-children.md + */ + 'react/no-danger-with-children'?: Linter.RuleEntry<[]> + /** + * Disallow usage of deprecated methods + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-deprecated.md + */ + 'react/no-deprecated'?: Linter.RuleEntry<[]> + /** + * Disallow usage of setState in componentDidMount + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-did-mount-set-state.md + */ + 'react/no-did-mount-set-state'?: Linter.RuleEntry + /** + * Disallow usage of setState in componentDidUpdate + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-did-update-set-state.md + */ + 'react/no-did-update-set-state'?: Linter.RuleEntry + /** + * Disallow direct mutation of this.state + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-direct-mutation-state.md + */ + 'react/no-direct-mutation-state'?: Linter.RuleEntry<[]> + /** + * Disallow usage of findDOMNode + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-find-dom-node.md + */ + 'react/no-find-dom-node'?: Linter.RuleEntry<[]> + /** + * Disallow usage of invalid attributes + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-invalid-html-attribute.md + */ + 'react/no-invalid-html-attribute'?: Linter.RuleEntry + /** + * Disallow usage of isMounted + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-is-mounted.md + */ + 'react/no-is-mounted'?: Linter.RuleEntry<[]> + /** + * Disallow multiple component definition per file + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-multi-comp.md + */ + 'react/no-multi-comp'?: Linter.RuleEntry + /** + * Enforce that namespaces are not used in React elements + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-namespace.md + */ + 'react/no-namespace'?: Linter.RuleEntry<[]> + /** + * Disallow usage of referential-type variables as default param in functional component + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-object-type-as-default-prop.md + */ + 'react/no-object-type-as-default-prop'?: Linter.RuleEntry<[]> + /** + * Disallow usage of shouldComponentUpdate when extending React.PureComponent + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-redundant-should-component-update.md + */ + 'react/no-redundant-should-component-update'?: Linter.RuleEntry<[]> + /** + * Disallow usage of the return value of ReactDOM.render + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-render-return-value.md + */ + 'react/no-render-return-value'?: Linter.RuleEntry<[]> + /** + * Disallow usage of setState + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-set-state.md + */ + 'react/no-set-state'?: Linter.RuleEntry<[]> + /** + * Disallow using string references + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-string-refs.md + */ + 'react/no-string-refs'?: Linter.RuleEntry + /** + * Disallow `this` from being used in stateless functional components + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-this-in-sfc.md + */ + 'react/no-this-in-sfc'?: Linter.RuleEntry<[]> + /** + * Disallow common typos + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-typos.md + */ + 'react/no-typos'?: Linter.RuleEntry<[]> + /** + * Disallow unescaped HTML entities from appearing in markup + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unescaped-entities.md + */ + 'react/no-unescaped-entities'?: Linter.RuleEntry + /** + * Disallow usage of unknown DOM property + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unknown-property.md + */ + 'react/no-unknown-property'?: Linter.RuleEntry + /** + * Disallow usage of unsafe lifecycle methods + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unsafe.md + */ + 'react/no-unsafe'?: Linter.RuleEntry + /** + * Disallow creating unstable components inside components + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unstable-nested-components.md + */ + 'react/no-unstable-nested-components'?: Linter.RuleEntry + /** + * Disallow declaring unused methods of component class + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unused-class-component-methods.md + */ + 'react/no-unused-class-component-methods'?: Linter.RuleEntry<[]> + /** + * Disallow definitions of unused propTypes + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unused-prop-types.md + */ + 'react/no-unused-prop-types'?: Linter.RuleEntry + /** + * Disallow definitions of unused state + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unused-state.md + */ + 'react/no-unused-state'?: Linter.RuleEntry<[]> + /** + * Disallow usage of setState in componentWillUpdate + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-will-update-set-state.md + */ + 'react/no-will-update-set-state'?: Linter.RuleEntry + /** + * Enforce ES5 or ES6 class for React Components + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-es6-class.md + */ + 'react/prefer-es6-class'?: Linter.RuleEntry + /** + * Prefer exact proptype definitions + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-exact-props.md + */ + 'react/prefer-exact-props'?: Linter.RuleEntry<[]> + /** + * Enforce that props are read-only + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-read-only-props.md + */ + 'react/prefer-read-only-props'?: Linter.RuleEntry<[]> + /** + * Enforce stateless components to be written as a pure function + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-stateless-function.md + */ + 'react/prefer-stateless-function'?: Linter.RuleEntry + /** + * Disallow missing props validation in a React component definition + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prop-types.md + */ + 'react/prop-types'?: Linter.RuleEntry + /** + * Disallow missing React when using JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/react-in-jsx-scope.md + */ + 'react/react-in-jsx-scope'?: Linter.RuleEntry<[]> + /** + * Enforce a defaultProps definition for every prop that is not a required prop + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/require-default-props.md + */ + 'react/require-default-props'?: Linter.RuleEntry + /** + * Enforce React components to have a shouldComponentUpdate method + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/require-optimization.md + */ + 'react/require-optimization'?: Linter.RuleEntry + /** + * Enforce ES5 or ES6 class for returning value in render function + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/require-render-return.md + */ + 'react/require-render-return'?: Linter.RuleEntry<[]> + /** + * Disallow extra closing tags for components without children + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/self-closing-comp.md + */ + 'react/self-closing-comp'?: Linter.RuleEntry + /** + * Enforce component methods order + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/sort-comp.md + */ + 'react/sort-comp'?: Linter.RuleEntry + /** + * Enforce defaultProps declarations alphabetical sorting + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/sort-default-props.md + */ + 'react/sort-default-props'?: Linter.RuleEntry + /** + * Enforce propTypes declarations alphabetical sorting + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/sort-prop-types.md + */ + 'react/sort-prop-types'?: Linter.RuleEntry + /** + * Enforce class component state initialization style + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/state-in-constructor.md + */ + 'react/state-in-constructor'?: Linter.RuleEntry + /** + * Enforces where React component static properties should be positioned. + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/static-property-placement.md + */ + 'react/static-property-placement'?: Linter.RuleEntry + /** + * Enforce style prop value is an object + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/style-prop-object.md + */ + 'react/style-prop-object'?: Linter.RuleEntry + /** + * Disallow void DOM elements (e.g. ``, `
`) from receiving children + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/void-dom-elements-no-children.md + */ + 'react/void-dom-elements-no-children'?: Linter.RuleEntry<[]> /** * disallow confusing quantifiers * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/confusing-quantifier.html @@ -14654,11 +15171,475 @@ type ReactRefreshOnlyExportComponents = []|[{ customHOCs?: string[] checkJS?: boolean }] -// ----- react/no-useless-fragment ----- -type ReactNoUselessFragment = []|[{ +// ----- react-x/no-useless-fragment ----- +type ReactXNoUselessFragment = []|[{ allowExpressions?: boolean }] +// ----- react/boolean-prop-naming ----- +type ReactBooleanPropNaming = []|[{ + + propTypeNames?: [string, ...(string)[]] + rule?: string + message?: string + validateNested?: boolean +}] +// ----- react/button-has-type ----- +type ReactButtonHasType = []|[{ + button?: boolean + submit?: boolean + reset?: boolean +}] +// ----- react/checked-requires-onchange-or-readonly ----- +type ReactCheckedRequiresOnchangeOrReadonly = []|[{ + ignoreMissingProperties?: boolean + ignoreExclusiveCheckedAttribute?: boolean +}] +// ----- react/default-props-match-prop-types ----- +type ReactDefaultPropsMatchPropTypes = []|[{ + allowRequiredDefaults?: boolean +}] +// ----- react/destructuring-assignment ----- +type ReactDestructuringAssignment = []|[("always" | "never")]|[("always" | "never"), { + ignoreClassFields?: boolean + destructureInSignature?: ("always" | "ignore") +}] +// ----- react/display-name ----- +type ReactDisplayName = []|[{ + ignoreTranspilerName?: boolean + checkContextObjects?: boolean +}] +// ----- react/forbid-component-props ----- +type ReactForbidComponentProps = []|[{ + forbid?: (string | { + propName?: string + allowedFor?: string[] + allowedForPatterns?: string[] + message?: string + } | ({ + [k: string]: unknown | undefined + } | { + [k: string]: unknown | undefined + }) | { + propNamePattern?: string + allowedFor?: string[] + allowedForPatterns?: string[] + message?: string + } | ({ + [k: string]: unknown | undefined + } | { + [k: string]: unknown | undefined + }))[] + [k: string]: unknown | undefined +}] +// ----- react/forbid-dom-props ----- +type ReactForbidDomProps = []|[{ + forbid?: (string | { + propName?: string + disallowedFor?: string[] + message?: string + [k: string]: unknown | undefined + })[] +}] +// ----- react/forbid-elements ----- +type ReactForbidElements = []|[{ + forbid?: (string | { + element: string + message?: string + })[] +}] +// ----- react/forbid-foreign-prop-types ----- +type ReactForbidForeignPropTypes = []|[{ + allowInPropTypes?: boolean +}] +// ----- react/forbid-prop-types ----- +type ReactForbidPropTypes = []|[{ + forbid?: string[] + checkContextTypes?: boolean + checkChildContextTypes?: boolean + [k: string]: unknown | undefined +}] +// ----- react/function-component-definition ----- +type ReactFunctionComponentDefinition = []|[{ + namedComponents?: (("function-declaration" | "arrow-function" | "function-expression") | ("function-declaration" | "arrow-function" | "function-expression")[]) + unnamedComponents?: (("arrow-function" | "function-expression") | ("arrow-function" | "function-expression")[]) + [k: string]: unknown | undefined +}] +// ----- react/hook-use-state ----- +type ReactHookUseState = []|[{ + allowDestructuredState?: boolean +}] +// ----- react/jsx-boolean-value ----- +type ReactJsxBooleanValue = ([]|[("always" | "never")] | []|["always"]|["always", { + never?: string[] + assumeUndefinedIsFalse?: boolean +}] | []|["never"]|["never", { + always?: string[] + assumeUndefinedIsFalse?: boolean +}]) +// ----- react/jsx-closing-bracket-location ----- +type ReactJsxClosingBracketLocation = []|[(("after-props" | "props-aligned" | "tag-aligned" | "line-aligned") | { + location?: ("after-props" | "props-aligned" | "tag-aligned" | "line-aligned") +} | { + nonEmpty?: ("after-props" | "props-aligned" | "tag-aligned" | "line-aligned" | false) + selfClosing?: ("after-props" | "props-aligned" | "tag-aligned" | "line-aligned" | false) +})] +// ----- react/jsx-closing-tag-location ----- +type ReactJsxClosingTagLocation = []|[(("tag-aligned" | "line-aligned") | { + location?: ("tag-aligned" | "line-aligned") +})] +// ----- react/jsx-curly-brace-presence ----- +type ReactJsxCurlyBracePresence = []|[({ + props?: ("always" | "never" | "ignore") + children?: ("always" | "never" | "ignore") + propElementValues?: ("always" | "never" | "ignore") +} | ("always" | "never" | "ignore"))] +// ----- react/jsx-curly-newline ----- +type ReactJsxCurlyNewline = []|[(("consistent" | "never") | { + singleline?: ("consistent" | "require" | "forbid") + multiline?: ("consistent" | "require" | "forbid") +})] +// ----- react/jsx-curly-spacing ----- +type ReactJsxCurlySpacing = []|[((_ReactJsxCurlySpacing_BasicConfig & { + attributes?: _ReactJsxCurlySpacingBasicConfigOrBoolean + children?: _ReactJsxCurlySpacingBasicConfigOrBoolean + [k: string]: unknown | undefined +}) | ("always" | "never"))]|[((_ReactJsxCurlySpacing_BasicConfig & { + attributes?: _ReactJsxCurlySpacingBasicConfigOrBoolean + children?: _ReactJsxCurlySpacingBasicConfigOrBoolean + [k: string]: unknown | undefined +}) | ("always" | "never")), { + allowMultiline?: boolean + spacing?: { + objectLiterals?: ("always" | "never") + [k: string]: unknown | undefined + } +}] +type _ReactJsxCurlySpacingBasicConfigOrBoolean = (_ReactJsxCurlySpacing_BasicConfig | boolean) +interface _ReactJsxCurlySpacing_BasicConfig { + when?: ("always" | "never") + allowMultiline?: boolean + spacing?: { + objectLiterals?: ("always" | "never") + [k: string]: unknown | undefined + } + [k: string]: unknown | undefined +} +// ----- react/jsx-equals-spacing ----- +type ReactJsxEqualsSpacing = []|[("always" | "never")] +// ----- react/jsx-filename-extension ----- +type ReactJsxFilenameExtension = []|[{ + allow?: ("always" | "as-needed") + extensions?: string[] + ignoreFilesWithoutCode?: boolean +}] +// ----- react/jsx-first-prop-new-line ----- +type ReactJsxFirstPropNewLine = []|[("always" | "never" | "multiline" | "multiline-multiprop" | "multiprop")] +// ----- react/jsx-fragments ----- +type ReactJsxFragments = []|[("syntax" | "element")] +// ----- react/jsx-handler-names ----- +type ReactJsxHandlerNames = []|[({ + eventHandlerPrefix?: string + eventHandlerPropPrefix?: string + checkLocalVariables?: boolean + checkInlineFunction?: boolean + ignoreComponentNames?: string[] +} | { + eventHandlerPrefix?: string + eventHandlerPropPrefix?: false + checkLocalVariables?: boolean + checkInlineFunction?: boolean + ignoreComponentNames?: string[] +} | { + eventHandlerPrefix?: false + eventHandlerPropPrefix?: string + checkLocalVariables?: boolean + checkInlineFunction?: boolean + ignoreComponentNames?: string[] +} | { + checkLocalVariables?: boolean +} | { + checkInlineFunction?: boolean +} | { + ignoreComponentNames?: string[] + [k: string]: unknown | undefined +})] +// ----- react/jsx-indent ----- +type ReactJsxIndent = []|[("tab" | number)]|[("tab" | number), { + checkAttributes?: boolean + indentLogicalExpressions?: boolean +}] +// ----- react/jsx-indent-props ----- +type ReactJsxIndentProps = []|[(("tab" | "first") | number | { + indentMode?: (("tab" | "first") | number) + ignoreTernaryOperator?: boolean + [k: string]: unknown | undefined +})] +// ----- react/jsx-key ----- +type ReactJsxKey = []|[{ + checkFragmentShorthand?: boolean + checkKeyMustBeforeSpread?: boolean + warnOnDuplicates?: boolean +}] +// ----- react/jsx-max-depth ----- +type ReactJsxMaxDepth = []|[{ + max?: number +}] +// ----- react/jsx-max-props-per-line ----- +type ReactJsxMaxPropsPerLine = []|[({ + maximum?: { + single?: number + multi?: number + [k: string]: unknown | undefined + } +} | { + maximum?: number + when?: ("always" | "multiline") +})] +// ----- react/jsx-newline ----- +type ReactJsxNewline = []|[{ + prevent?: boolean + allowMultilines?: boolean +}] +// ----- react/jsx-no-bind ----- +type ReactJsxNoBind = []|[{ + allowArrowFunctions?: boolean + allowBind?: boolean + allowFunctions?: boolean + ignoreRefs?: boolean + ignoreDOMComponents?: boolean +}] +// ----- react/jsx-no-duplicate-props ----- +type ReactJsxNoDuplicateProps = []|[{ + ignoreCase?: boolean +}] +// ----- react/jsx-no-leaked-render ----- +type ReactJsxNoLeakedRender = []|[{ + validStrategies?: ("ternary" | "coerce")[] +}] +// ----- react/jsx-no-literals ----- +type ReactJsxNoLiterals = []|[{ + elementOverrides?: { + [k: string]: { + applyToNestedElements?: boolean + noStrings?: boolean + allowedStrings?: string[] + ignoreProps?: boolean + noAttributeStrings?: boolean + [k: string]: unknown | undefined + } + } + noStrings?: boolean + allowedStrings?: string[] + ignoreProps?: boolean + noAttributeStrings?: boolean +}] +// ----- react/jsx-no-script-url ----- +type ReactJsxNoScriptUrl = ([]|[{ + name: string + props: string[] +}[]]|[{ + name: string + props: string[] +}[], { + includeFromSettings?: boolean + [k: string]: unknown | undefined +}] | []|[{ + includeFromSettings?: boolean + [k: string]: unknown | undefined +}]) +// ----- react/jsx-no-target-blank ----- +type ReactJsxNoTargetBlank = []|[{ + allowReferrer?: boolean + enforceDynamicLinks?: ("always" | "never") + warnOnSpreadAttributes?: boolean + links?: boolean + forms?: boolean +}] +// ----- react/jsx-no-undef ----- +type ReactJsxNoUndef = []|[{ + allowGlobals?: boolean +}] +// ----- react/jsx-no-useless-fragment ----- +type ReactJsxNoUselessFragment = []|[{ + allowExpressions?: boolean + [k: string]: unknown | undefined +}] +// ----- react/jsx-one-expression-per-line ----- +type ReactJsxOneExpressionPerLine = []|[{ + allow?: ("none" | "literal" | "single-child" | "non-jsx") +}] +// ----- react/jsx-pascal-case ----- +type ReactJsxPascalCase = []|[{ + allowAllCaps?: boolean + allowLeadingUnderscore?: boolean + allowNamespace?: boolean + + ignore?: []|[string] +}] +// ----- react/jsx-props-no-spreading ----- +type ReactJsxPropsNoSpreading = []|[({ + html?: ("enforce" | "ignore") + custom?: ("enforce" | "ignore") + explicitSpread?: ("enforce" | "ignore") + exceptions?: string[] + [k: string]: unknown | undefined +} & { + [k: string]: unknown | undefined +})] +// ----- react/jsx-sort-default-props ----- +type ReactJsxSortDefaultProps = []|[{ + ignoreCase?: boolean +}] +// ----- react/jsx-sort-props ----- +type ReactJsxSortProps = []|[{ + callbacksLast?: boolean + shorthandFirst?: boolean + shorthandLast?: boolean + multiline?: ("ignore" | "first" | "last") + ignoreCase?: boolean + noSortAlphabetically?: boolean + reservedFirst?: (unknown[] | boolean) + locale?: string +}] +// ----- react/jsx-space-before-closing ----- +type ReactJsxSpaceBeforeClosing = []|[("always" | "never")] +// ----- react/jsx-tag-spacing ----- +type ReactJsxTagSpacing = []|[{ + closingSlash?: ("always" | "never" | "allow") + beforeSelfClosing?: ("always" | "proportional-always" | "never" | "allow") + afterOpening?: ("always" | "allow-multiline" | "never" | "allow") + beforeClosing?: ("always" | "proportional-always" | "never" | "allow") +}] +// ----- react/jsx-wrap-multilines ----- +type ReactJsxWrapMultilines = []|[{ + declaration?: (true | false | "ignore" | "parens" | "parens-new-line" | "never") + assignment?: (true | false | "ignore" | "parens" | "parens-new-line" | "never") + return?: (true | false | "ignore" | "parens" | "parens-new-line" | "never") + arrow?: (true | false | "ignore" | "parens" | "parens-new-line" | "never") + condition?: (true | false | "ignore" | "parens" | "parens-new-line" | "never") + logical?: (true | false | "ignore" | "parens" | "parens-new-line" | "never") + prop?: (true | false | "ignore" | "parens" | "parens-new-line" | "never") +}] +// ----- react/no-children-prop ----- +type ReactNoChildrenProp = []|[{ + allowFunctions?: boolean +}] +// ----- react/no-danger ----- +type ReactNoDanger = []|[{ + + customComponentNames?: string[] + [k: string]: unknown | undefined +}] +// ----- react/no-did-mount-set-state ----- +type ReactNoDidMountSetState = []|["disallow-in-func"] +// ----- react/no-did-update-set-state ----- +type ReactNoDidUpdateSetState = []|["disallow-in-func"] +// ----- react/no-invalid-html-attribute ----- +type ReactNoInvalidHtmlAttribute = []|[("rel")[]] +// ----- react/no-multi-comp ----- +type ReactNoMultiComp = []|[{ + ignoreStateless?: boolean +}] +// ----- react/no-string-refs ----- +type ReactNoStringRefs = []|[{ + noTemplateLiterals?: boolean +}] +// ----- react/no-unescaped-entities ----- +type ReactNoUnescapedEntities = []|[{ + forbid?: (string | { + char?: string + alternatives?: string[] + [k: string]: unknown | undefined + })[] +}] +// ----- react/no-unknown-property ----- +type ReactNoUnknownProperty = []|[{ + ignore?: string[] + requireDataLowercase?: boolean +}] +// ----- react/no-unsafe ----- +type ReactNoUnsafe = []|[{ + checkAliases?: boolean +}] +// ----- react/no-unstable-nested-components ----- +type ReactNoUnstableNestedComponents = []|[{ + customValidators?: string[] + allowAsProps?: boolean + propNamePattern?: string +}] +// ----- react/no-unused-prop-types ----- +type ReactNoUnusedPropTypes = []|[{ + ignore?: string[] + customValidators?: string[] + skipShapeProps?: boolean +}] +// ----- react/no-will-update-set-state ----- +type ReactNoWillUpdateSetState = []|["disallow-in-func"] +// ----- react/prefer-es6-class ----- +type ReactPreferEs6Class = []|[("always" | "never")] +// ----- react/prefer-stateless-function ----- +type ReactPreferStatelessFunction = []|[{ + ignorePureComponents?: boolean +}] +// ----- react/prop-types ----- +type ReactPropTypes = []|[{ + ignore?: string[] + customValidators?: string[] + skipUndeclared?: boolean +}] +// ----- react/require-default-props ----- +type ReactRequireDefaultProps = []|[{ + forbidDefaultForRequired?: boolean + classes?: ("defaultProps" | "ignore") + functions?: ("defaultArguments" | "defaultProps" | "ignore") + ignoreFunctionalComponents?: boolean +}] +// ----- react/require-optimization ----- +type ReactRequireOptimization = []|[{ + allowDecorators?: string[] +}] +// ----- react/self-closing-comp ----- +type ReactSelfClosingComp = []|[{ + component?: boolean + html?: boolean +}] +// ----- react/sort-comp ----- +type ReactSortComp = []|[{ + order?: string[] + groups?: { + [k: string]: string[] + } +}] +// ----- react/sort-default-props ----- +type ReactSortDefaultProps = []|[{ + ignoreCase?: boolean +}] +// ----- react/sort-prop-types ----- +type ReactSortPropTypes = []|[{ + requiredFirst?: boolean + callbacksLast?: boolean + ignoreCase?: boolean + noSortAlphabetically?: boolean + sortShapeProp?: boolean + checkTypes?: boolean +}] +// ----- react/state-in-constructor ----- +type ReactStateInConstructor = []|[("always" | "never")] +// ----- react/static-property-placement ----- +type ReactStaticPropertyPlacement = []|[("static public field" | "static getter" | "property assignment")]|[("static public field" | "static getter" | "property assignment"), { + propTypes?: ("static public field" | "static getter" | "property assignment") + defaultProps?: ("static public field" | "static getter" | "property assignment") + childContextTypes?: ("static public field" | "static getter" | "property assignment") + contextTypes?: ("static public field" | "static getter" | "property assignment") + contextType?: ("static public field" | "static getter" | "property assignment") + displayName?: ("static public field" | "static getter" | "property assignment") +}] +// ----- react/style-prop-object ----- +type ReactStylePropObject = []|[{ + allow?: string[] + [k: string]: unknown | undefined +}] // ----- regexp/hexadecimal-escape ----- type RegexpHexadecimalEscape = []|[("always" | "never")] // ----- regexp/letter-case ----- @@ -15966,4 +16947,4 @@ type ZodRequireStrict = []|[{ allowPassthrough?: boolean }] // Names of all the configs -export type ConfigNames = 'anolilab/antfu' | 'anolilab/astro/setup' | 'anolilab/astro/rules' | 'anolilab/best-practices/rules' | 'anolilab/best-practices/ts-rules' | 'compat/flat/recommended' | 'anolilab/errors/rules' | 'anolilab/errors/ts-rules' | 'anolilab/html/setup' | 'anolilab/no-secrets' | 'anolilab/no-unsanitized/setup' | 'anolilab/promise/rules' | 'anolilab/simple-import-sort' | 'anolilab/sonarjs/plugin' | 'anolilab/sonarjs/rules' | 'anolilab/sonarjs/js-and-ts-rules' | 'anolilab/sonarjs/js-rules' | 'storybook:recommended:setup' | 'storybook:recommended:stories-rules' | 'storybook:recommended:main-rules' | 'tailwindcss:base' | 'tailwindcss:rules' | 'anolilab/validate-jsx-nesting/setup' | 'anolilab/variables/rules' | 'anolilab/variables/ts-rules' | 'anolilab/style/rules' | 'anolilab/style/ts-rules' | 'anolilab/eslint-comments/rules' | 'anolilab/formatter/setup' | 'anolilab/imports/setup' | 'anolilab/imports/rules' | 'anolilab/imports/d.ts-rules' | 'anolilab/javascript/setup' | 'anolilab/jsx-a11y/setup' | 'anolilab/jsdoc/setup' | 'anolilab/jsdoc/js-rules' | 'anolilab/jsonc/json5-rules' | 'anolilab/jsonc/jsonc-rules' | 'anolilab/jsonc/json-rules' | 'anolilab/jsonc/package.json-rules' | 'anolilab/jsonc/tsconfig-json' | 'anolilab/markdown/setup' | 'anolilab/markdown/processor' | 'anolilab/markdown/parser' | 'anolilab/markdown/disables' | 'anolilab/perfectionist/setup' | 'anolilab/perfectionist/rules' | 'anolilab/perfectionist/typescript' | 'anolilab/perfectionist/postcss' | 'anolilab/react/setup' | 'anolilab/react/rules' | 'anolilab/react/jsx' | 'anolilab/react/tsx' | 'anolilab/react/storybook' | 'anolilab/node' | 'anolilab/stylistic/rules' | 'anolilab/vitest/setup' | 'anolilab/vitest/rules' | 'anolilab/toml' | 'anolilab/regexp/rules' | 'anolilab/typescript/setup' | 'anolilab/typescript/parser' | 'typescript-eslint/base' | 'typescript-eslint/eslint-recommended' | 'typescript-eslint/strict' | 'typescript-eslint/base' | 'typescript-eslint/eslint-recommended' | 'typescript-eslint/stylistic' | 'anolilab/typescript/rules' | 'anolilab/unicorn/plugin' | 'anolilab/unicorn/rules' | 'anolilab/unicorn/tsconfig-overrides' | 'anolilab/unicorn/ts-overrides' | 'anolilab/unocss' | 'anolilab/yaml' +export type ConfigNames = 'anolilab/antfu' | 'anolilab/astro/setup' | 'anolilab/astro/rules' | 'anolilab/best-practices/rules' | 'anolilab/best-practices/ts-rules' | 'compat/flat/recommended' | 'anolilab/errors/rules' | 'anolilab/errors/ts-rules' | 'anolilab/html/setup' | 'anolilab/no-secrets' | 'anolilab/no-unsanitized/setup' | 'anolilab/promise/rules' | 'anolilab/simple-import-sort' | 'anolilab/sonarjs/plugin' | 'anolilab/sonarjs/rules' | 'anolilab/sonarjs/js-and-ts-rules' | 'anolilab/sonarjs/js-rules' | 'storybook:recommended:setup' | 'storybook:recommended:stories-rules' | 'storybook:recommended:main-rules' | 'tailwindcss:base' | 'tailwindcss:rules' | 'anolilab/validate-jsx-nesting/setup' | 'anolilab/variables/rules' | 'anolilab/variables/ts-rules' | 'anolilab/style/rules' | 'anolilab/style/ts-rules' | 'anolilab/eslint-comments/rules' | 'anolilab/formatter/setup' | 'anolilab/imports/setup' | 'anolilab/imports/rules' | 'anolilab/imports/d.ts-rules' | 'anolilab/javascript/setup' | 'anolilab/jsx-a11y/setup' | 'anolilab/jsdoc/setup' | 'anolilab/jsdoc/js-rules' | 'anolilab/jsonc/json5-rules' | 'anolilab/jsonc/jsonc-rules' | 'anolilab/jsonc/json-rules' | 'anolilab/jsonc/package.json-rules' | 'anolilab/jsonc/tsconfig-json' | 'anolilab/markdown/setup' | 'anolilab/markdown/processor' | 'anolilab/markdown/parser' | 'anolilab/markdown/disables' | 'anolilab/perfectionist/setup' | 'anolilab/perfectionist/rules' | 'anolilab/perfectionist/typescript' | 'anolilab/perfectionist/postcss' | 'anolilab/react/setup' | 'anolilab/react/rules' | 'anolilab/react/jsx' | 'anolilab/react/tsx' | 'anolilab/react/storybook' | 'anolilab/node/setup' | 'anolilab/node/rules' | 'anolilab/stylistic/rules' | 'anolilab/vitest/setup' | 'anolilab/vitest/rules' | 'anolilab/toml' | 'anolilab/regexp/rules' | 'anolilab/typescript/setup' | 'anolilab/typescript/parser' | 'typescript-eslint/base' | 'typescript-eslint/eslint-recommended' | 'typescript-eslint/strict' | 'typescript-eslint/base' | 'typescript-eslint/eslint-recommended' | 'typescript-eslint/stylistic' | 'anolilab/typescript/rules' | 'anolilab/unicorn/plugin' | 'anolilab/unicorn/rules' | 'anolilab/unicorn/tsconfig-overrides' | 'anolilab/unicorn/ts-overrides' | 'anolilab/unocss' | 'anolilab/yaml' From 18f1f4726a40db4dd8d9ffe089786fe25e300a79 Mon Sep 17 00:00:00 2001 From: prisis Date: Sat, 11 Jan 2025 21:50:47 +0100 Subject: [PATCH 18/31] feat: more work on the configs Signed-off-by: prisis --- packages/eslint-config/README.md | 373 ------------------ .../eslint-config/__tests__/rules.test.ts | 15 +- .../eslint-config/src/config/plugins/jsdoc.ts | 6 +- packages/eslint-config/src/index.ts | 1 - packages/eslint-config/src/types.ts | 32 -- packages/eslint-config/src/utils/combine.ts | 2 + .../eslint-config/src/utils/vitest-globals.ts | 36 +- 7 files changed, 31 insertions(+), 434 deletions(-) diff --git a/packages/eslint-config/README.md b/packages/eslint-config/README.md index f0a2909ff..b93db704e 100644 --- a/packages/eslint-config/README.md +++ b/packages/eslint-config/README.md @@ -65,383 +65,10 @@ yarn add -D eslint @anolilab/eslint-config eslint-plugin-import@npm:eslint-plugi ## Usage -If you don’t have a `.eslintrc.js`, we will create the file for you after installing `@anolilab/eslint-config`. - -If you already have a `.eslintrc.js`, then you can extend the `.eslintrc.js`, with `@anolilab/eslint-config`. - -> Note: If the script detects an existing `.eslintrc.js` file, it will not overwrite it. - -> Note: It can happen that the postinstall script don't run, then you have to add the `.eslintrc.js` manually, or you will use bin command `./node_modules/bin/anolilab-eslint-config` to generate it. - > Note: Our default export contains all of our ESLint rules, including ECMAScript 6+. `@anolilab/eslint-config` use the `ecmaVersion`:`2021` as default. > > To change this configuration, change `env: { es2021: false, then active you needed env }` same for, `parserOptions: { "ecmaVersion": 2021 change the version }` -```js -/** @ts-check */ -const { defineConfig } = require("@anolilab/eslint-config/define-config"); - -/// -/// -/// -/// -/// - -module.exports = defineConfig({ - env: { - // Your environments (which contains several predefined global variables) - // - // browser: true, - // node: true, - // mocha: true, - // jest: true, - // jquery: true - }, - extends: ["@anolilab/eslint-config"], - globals: { - // Your global variables (setting to false means it's not allowed to be reassigned) - // - // myGlobal: false - }, - root: true, - rules: { - // Customize your rules - }, -}); -``` - -For more advanced use cases see the example configurations for Node, TypeScript, React or Prettier. - -> Note: `@anolilab/eslint-config` will handle the configuration for almost all eslint-plugins / eslint-configs automatically. -> With this you only need to install the needed plugins/configs for TypeScript or React and you done. - -### TypeScript - -```bash -npm install --save-dev typescript -``` - -Please extend the `.eslintrc.js` file with the correct `tsconfig.js` path if you have a custom path. - -```js -module.exports = { - parserOptions: { - project: "./tsconfig.eslint.json", - }, -}; -``` - -For projects that use TypeScript and want additional rules that require type information (rules using type information take longer to run). - -Extend the `.eslintrc.js` file: - -```js -/** @ts-check */ -const { defineConfig } = require("@anolilab/eslint-config/define-config"); - -/// -/// -/// -/// -/// - -module.exports = defineConfig({ - env: { - // Your environments (which contains several predefined global variables) - // - // browser: true, - // node: true, - // mocha: true, - // jest: true, - // jquery: true - }, - extends: ["@anolilab/eslint-config", "@anolilab/eslint-config/typescript-type-checking"], - globals: { - // Your global variables (setting to false means it's not allowed to be reassigned) - // - // myGlobal: false - }, - root: true, - rules: { - // Customize your rules - }, -}); -``` - -> Tip: Run eslint with the TIMING=1 to identify slow rules. -> -> `TIMING=1 eslint . --ext .ts,.tsx` -> -> This is useful to identify rules that are slow because they require type information. - -### React - -You need to have "react" and "react-dom" installed. - -```bash -npm install --save-dev eslint-plugin-react eslint-plugin-react-hooks - -yarn add -D eslint-plugin-react eslint-plugin-react-hooks - -pnpm add -D eslint-plugin-react eslint-plugin-react-hooks -``` - -Or for the use of `TypeScript` in react install "typescript" as a dev dependency. - -Please extend the `.eslintrc.js` file with the correct `tsconfig.js` path if you have a custom path. - -```js -module.exports = { - parserOptions: { - project: "./tsconfig.eslint.json", - }, -}; -``` - -Or for the use of `.jsx` files install "@babel/plugin-syntax-jsx" as a dev dependency. - -```bash -npm install --save-dev babel @babel/plugin-syntax-jsx - -yarn add -D babel @babel/plugin-syntax-jsx - -pnpm add -D babel @babel/plugin-syntax-jsx -``` - -In your `babel.config.js` file add the plugin. - -```js -const babelPluginSyntaxJSX = require("@babel/plugin-syntax-jsx"); - -module.exports = { - plugins: [ - [ - babelPluginSyntaxJSX, - { - pragma: "React.createElement", - pragmaFrag: "React.Fragment", - }, - ], - ], -}; -``` - -### MDX - -```bash -npm install --save-dev eslint eslint-plugin-mdx -``` - -For more information about `missing` or `optional` to install rules see the `eslint` console output. - -### Config - -You can configure `@anolilab/eslint-config` options with your `package.json` file. - -Add this property to your package.json: - -```json5 -{ - "anolilab": { - "eslint-config": { - // options - } - } -} -``` - -#### indent - -Type: `number` - -Default: `4` - -It will throw an error if the value is not numeric. - -#### plugin - -Type: `object` -> key: `string` value: `boolean` - -Disable a plugin in your package.json config to turn it off globally in your project. - -Example using package.json: - -```json -{ - "anolilab": { - "eslint-config": { - "plugin": { - "unicorn": false - } - } - } -} -``` - -#### warn_on_unsupported_typescript_version - -Type: `boolean` - -Default: `undefined` - -To disable the warning, set the value to `false`. - -```json -{ - "anolilab": { - "eslint-config": { - "warn_on_unsupported_typescript_version": false - } - } -} -``` - -#### info_on_disabling_jsx_react_rule - -Type: `boolean` - -Default: `undefined` - -To disable the info, set the value to `false`. - -```json -{ - "anolilab": { - "eslint-config": { - "info_on_disabling_jsx_react_rule": false - } - } -} -``` - -#### info_on_disabling_prettier_conflict_rule - -Type: `boolean` - -Default: `undefined` - -To disable the info, set the value to `false`. - -```json -{ - "anolilab": { - "eslint-config": { - "info_on_disabling_prettier_conflict_rule": false - } - } -} -``` - -#### info_on_disabling_jsonc_sort_keys_rule - -Type: `boolean` - -Default: `undefined` - -To disable the info, set the value to `false`. - -```json -{ - "anolilab": { - "eslint-config": { - "info_on_disabling_jsonc_sort_keys_rule": false - } - } -} -``` - -#### info_on_disabling_etc_no_deprecated - -Type: `boolean` - -Default: `undefined` - -To disable the info, set the value to `false`. - -```json -{ - "anolilab": { - "eslint-config": { - "info_on_disabling_etc_no_deprecated": false - } - } -} -``` - -#### info_on_testing_library_framework - -Type: `boolean` - -Default: `undefined` - -To disable the info, set the value to `false`. - -```json -{ - "anolilab": { - "eslint-config": { - "info_on_testing_library_framework": false - } - } -} -``` - -#### info_on_found_react_version - -Type: `boolean` - -Default: `undefined` - -To disable the info, set the value to `false`. - -```json -{ - "anolilab": { - "eslint-config": { - "info_on_found_react_version": false - } - } -} -``` - -#### import_ignore_exports - -Type: `string[]` - -Default: `[]` - -An array with files/paths for which unused exports will not be reported (e.g module entry points in a published package). - -```json -{ - "anolilab": { - "eslint-config": { - "import_ignore_exports": [] - } - } -} -``` - -### Let [Prettier](https://prettier.io/) handle style-related rules - -Prettier is a code formatting tool that offers fewer options but is more professional than the style-related rules in ESLint. - -Now that Prettier has become a necessary tool in front end projects, `@anolilab/eslint-config` does not need to maintain the style-related rules in ESLint anymore, -so we completely removed all Prettier related rules, if `prettier` is found in your `package.json` and use ESLint to check logical errors which it’s good at. - -As for whether two spaces or four spaces are used for indentation and whether there is a semicolon at the end, you can configure it in the project’s `.prettierrc.js`. -Of course, we also provide a recommended Prettier [configuration](../prettier-config/README.md) for your reference. - -`@anolilab/eslint-config` does disable all included style-related rules, so there is no need to install [`eslint-config-prettier`](https://github.com/prettier/eslint-config-prettier). - -## Using experimental features with JavaScript - -If you are using experimental features such as class fields with JavaScript files you should install `@babel/eslint-parser`. - -```bash -npm install --save-dev @babel/core -``` - ## Plugins ### Code Quality diff --git a/packages/eslint-config/__tests__/rules.test.ts b/packages/eslint-config/__tests__/rules.test.ts index 5353b7ce6..5f02b7879 100644 --- a/packages/eslint-config/__tests__/rules.test.ts +++ b/packages/eslint-config/__tests__/rules.test.ts @@ -8,10 +8,7 @@ import { rm, writeFile, } from "node:fs/promises"; -import { - dirname, - join, -} from "node:path"; +import { dirname, join } from "node:path"; import { fileURLToPath } from "node:url"; import { execa } from "execa"; @@ -41,15 +38,18 @@ const copyFolderRecursive = async (from: string, to: string) => { } }; +// eslint-disable-next-line vitest/require-top-level-describe beforeAll(async () => { await rm(join(rootPath, "_fixtures"), { force: true, recursive: true }); }); +// eslint-disable-next-line vitest/require-top-level-describe afterAll(async () => { await rm(join(rootPath, "_fixtures"), { force: true, recursive: true }); }); const runWithConfig = (name: string, configs: OptionsConfig, ...items: TypedFlatConfigItem[]) => { + // eslint-disable-next-line vitest/prefer-expect-assertions,vitest/require-top-level-describe it.concurrent( // eslint-disable-next-line vitest/valid-title name, @@ -64,12 +64,12 @@ const runWithConfig = (name: string, configs: OptionsConfig, ...items: TypedFlat join(target, "eslint.config.js"), ` // @eslint-disable -import { createConfig } from '@anolilab/eslint-config' +import { createConfig } from "@anolilab/eslint-config"; export default createConfig( ${JSON.stringify(configs)}, - ...${JSON.stringify(items) ?? []}, -) + ...(${JSON.stringify(items) ?? []}), +); `, ); @@ -105,6 +105,7 @@ export default createConfig( ); }; +// eslint-disable-next-line vitest/require-hook runWithConfig("js", { typescript: false, // vue: false, diff --git a/packages/eslint-config/src/config/plugins/jsdoc.ts b/packages/eslint-config/src/config/plugins/jsdoc.ts index 8cad7776c..281c769ed 100644 --- a/packages/eslint-config/src/config/plugins/jsdoc.ts +++ b/packages/eslint-config/src/config/plugins/jsdoc.ts @@ -5,6 +5,7 @@ import type { OptionsPackageJson, OptionsSilentConsoleLogs, OptionsStylistic, + TypedFlatConfigItem, } from "../../types"; import { createConfig, getFilesGlobs } from "../../utils/create-config"; import interopDefault from "../../utils/interop-default"; @@ -27,9 +28,8 @@ export default createConfig(options: OptionsConfig, /** * Construct an array of ESLint flat config items. - * * @param {OptionsConfig & TypedFlatConfigItem} options * The options for generating the ESLint configurations. * @param {Awaitable[]} userConfigs diff --git a/packages/eslint-config/src/types.ts b/packages/eslint-config/src/types.ts index 95c1327ce..7922cd756 100644 --- a/packages/eslint-config/src/types.ts +++ b/packages/eslint-config/src/types.ts @@ -12,7 +12,6 @@ export type Awaitable = Promise | T; export interface OptionsComponentExtensions { /** * Additional extensions for components. - * * @example ['vue'] * @default [] */ @@ -35,7 +34,6 @@ export interface OptionsConfig extends OptionsComponentExtensions, OptionsSilent * * Requires installing for formatting .astro: * - `prettier-plugin-astro` - * * @default false */ astro?: boolean | (OptionsFiles & OptionsOverrides); @@ -52,7 +50,6 @@ export interface OptionsConfig extends OptionsComponentExtensions, OptionsSilent /** * The working directory for the config. - * * @default process.cwd() */ cwd?: string; @@ -64,7 +61,6 @@ export interface OptionsConfig extends OptionsComponentExtensions, OptionsSilent * - `eslint-plugin-format` * * When set to `true`, it will enable all formatters. - * * @default false */ formatters?: OptionsFormatters | boolean; @@ -73,7 +69,6 @@ export interface OptionsConfig extends OptionsComponentExtensions, OptionsSilent * Enable gitignore support. * * Passing an object to configure the options. - * * @see https://github.com/antfu/eslint-config-flat-gitignore * @default true */ @@ -84,7 +79,6 @@ export interface OptionsConfig extends OptionsComponentExtensions, OptionsSilent * * Requires installing: * - `eslint-plugin-html` - * * @default false */ html?: boolean | (OptionsFiles & OptionsOverrides); @@ -112,7 +106,6 @@ export interface OptionsConfig extends OptionsComponentExtensions, OptionsSilent /** * Enable JSONC support. - * * @default true */ jsonc?: boolean | (OptionsFiles & OptionsOverrides); @@ -121,7 +114,6 @@ export interface OptionsConfig extends OptionsComponentExtensions, OptionsSilent * Enable JSX related rules. * * Currently only stylistic rules are included. - * * @default true */ jsx?: boolean; @@ -137,7 +129,6 @@ export interface OptionsConfig extends OptionsComponentExtensions, OptionsSilent * Including: * - `anolilab/top-level-function` * - `anolilab/if-newline` - * * @default false */ lessOpinionated?: boolean; @@ -147,7 +138,6 @@ export interface OptionsConfig extends OptionsComponentExtensions, OptionsSilent * * Requires installing: * - `eslint-plugin-lodash` - * * @default false */ lodash?: boolean | (OptionsFiles & OptionsOverrides); @@ -156,7 +146,6 @@ export interface OptionsConfig extends OptionsComponentExtensions, OptionsSilent * Enable linting for **code snippets** in Markdown. * * For formatting Markdown content, enable also `formatters.markdown`. - * * @default true */ markdown?: boolean | (OptionsFiles & OptionsOverrides); @@ -178,7 +167,6 @@ export interface OptionsConfig extends OptionsComponentExtensions, OptionsSilent /** * Provide overrides for rules for each integration. - * * @deprecated use `overrides` option in each integration key instead */ overrides?: { @@ -218,7 +206,6 @@ export interface OptionsConfig extends OptionsComponentExtensions, OptionsSilent * * Requires installing: * - `eslint-plugin-playwright` - * * @default false */ playwright?: boolean | (OptionsFiles & OptionsOverrides); @@ -235,14 +222,12 @@ export interface OptionsConfig extends OptionsComponentExtensions, OptionsSilent * - `@eslint-react/eslint-plugin` * - `eslint-plugin-react-hooks` * - `eslint-plugin-react-refresh` - * * @default false */ react?: boolean | (OptionsFiles & OptionsOverrides); /** * Enable regexp rules. - * * @see https://ota-meshi.github.io/eslint-plugin-regexp/ * @default true */ @@ -263,14 +248,12 @@ export interface OptionsConfig extends OptionsComponentExtensions, OptionsSilent * * Requires installing: * - `eslint-plugin-storybook` - * * @default false */ storybook?: boolean | (OptionsFiles & OptionsOverrides); /** * Enable stylistic rules. - * * @see https://eslint.style/ * @default true */ @@ -281,7 +264,6 @@ export interface OptionsConfig extends OptionsComponentExtensions, OptionsSilent * * Requires installing: * - `eslint-plugin-tailwindcss` - * * @default false */ tailwindcss?: boolean | (OptionsFiles & OptionsOverrides); @@ -291,7 +273,6 @@ export interface OptionsConfig extends OptionsComponentExtensions, OptionsSilent * * Requires installing: * - `@tanstack/eslint-plugin-query` - * * @default false */ tanstackQuery?: boolean | (OptionsFiles & OptionsOverrides); @@ -301,7 +282,6 @@ export interface OptionsConfig extends OptionsComponentExtensions, OptionsSilent * * Requires installing: * - `@tanstack/eslint-plugin-router` - * * @default false */ tanstackRouter?: boolean | (OptionsFiles & OptionsOverrides); @@ -311,14 +291,12 @@ export interface OptionsConfig extends OptionsComponentExtensions, OptionsSilent * * Requires installing: * - `eslint-plugin-testing-library` - * * @default false */ testingLibrary?: boolean | (OptionsFiles & OptionsOverrides & OptionsPackageJson); /** * Enable TOML support. - * * @default true */ toml?: boolean | (OptionsFiles & OptionsOverrides); @@ -328,7 +306,6 @@ export interface OptionsConfig extends OptionsComponentExtensions, OptionsSilent * * Requires installing: * - `eslint-plugin-tsdoc` - * * @default false */ tsdoc?: boolean | (OptionsFiles & OptionsOverrides); @@ -337,14 +314,12 @@ export interface OptionsConfig extends OptionsComponentExtensions, OptionsSilent * Enable TypeScript support. * * Passing an object to enable TypeScript Language Server support. - * * @default auto-detect based on the dependencies */ typescript?: OptionsTypescript | boolean; /** * Options for eslint-plugin-unicorn. - * * @default true */ unicorn?: OptionsUnicorn | boolean; @@ -354,7 +329,6 @@ export interface OptionsConfig extends OptionsComponentExtensions, OptionsSilent * * Requires installing: * - `@unocss/eslint-plugin` - * * @default false */ unocss?: OptionsUnoCSS | boolean; @@ -366,14 +340,12 @@ export interface OptionsConfig extends OptionsComponentExtensions, OptionsSilent /** * Enable vitest support. - * * @default true */ vitest?: boolean | (OptionsFiles & OptionsOverrides); /** * Enable YAML support. - * * @default true */ yaml?: boolean | (OptionsFiles & OptionsOverrides); @@ -383,7 +355,6 @@ export interface OptionsConfig extends OptionsComponentExtensions, OptionsSilent * * Requires installing: * - `eslint-plugin-zod` - * * @default false */ zod?: boolean | (OptionsFiles & OptionsOverrides); @@ -392,7 +363,6 @@ export interface OptionsConfig extends OptionsComponentExtensions, OptionsSilent export interface OptionsCwd { /** * The working directory for the config. - * * @default process.cwd() */ cwd: string; @@ -560,7 +530,6 @@ export interface OptionsTypeScriptWithTypes { export interface OptionsUnicorn { /** * Include all rules recommended by `eslint-plugin-unicorn`, instead of only ones picked by Anthony. - * * @default false */ allRecommended?: boolean; @@ -588,7 +557,6 @@ export type TypedFlatConfigItem = Omit /** * An object containing a name-value mapping of plugin names to plugin objects. * When `files` is specified, these plugins are only available to the matching files. - * * @see [Using plugins in your configuration](https://eslint.org/docs/latest/user-guide/configuring/configuration-files-new#using-plugins-in-your-configuration) */ // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/packages/eslint-config/src/utils/combine.ts b/packages/eslint-config/src/utils/combine.ts index 504e8da0e..677e24935 100644 --- a/packages/eslint-config/src/utils/combine.ts +++ b/packages/eslint-config/src/utils/combine.ts @@ -2,6 +2,8 @@ import type { Awaitable, TypedFlatConfigItem } from "../types"; /** * Combine array and non-array configs into a single array. + * @param {TypedFlatConfigItem | TypedFlatConfigItem[]} configs + * @returns {Promise} */ const combine = async (...configs: Awaitable[]): Promise => { const resolved = await Promise.all(configs); diff --git a/packages/eslint-config/src/utils/vitest-globals.ts b/packages/eslint-config/src/utils/vitest-globals.ts index 8ba23ba1b..7cbd0eee8 100644 --- a/packages/eslint-config/src/utils/vitest-globals.ts +++ b/packages/eslint-config/src/utils/vitest-globals.ts @@ -1,21 +1,21 @@ /** * vitest version 2.1.8 */ -export default /** @type {const} */ ({ - "suite": true, - "test": true, - "describe": true, - "it": true, - "expectTypeOf": true, - "assertType": true, - "expect": true, - "assert": true, - "vitest": true, - "vi": true, - "beforeAll": true, - "afterAll": true, - "beforeEach": true, - "afterEach": true, - "onTestFailed": true, - "onTestFinished": true -}); +export default /** @type {const} */ { + afterAll: true, + afterEach: true, + assert: true, + assertType: true, + beforeAll: true, + beforeEach: true, + describe: true, + expect: true, + expectTypeOf: true, + it: true, + onTestFailed: true, + onTestFinished: true, + suite: true, + test: true, + vi: true, + vitest: true, +}; From d46eda8e2c670c448e958d3fb66cffa27a970227 Mon Sep 17 00:00:00 2001 From: prisis Date: Sun, 12 Jan 2025 13:00:02 +0100 Subject: [PATCH 19/31] chore: updated lock file Signed-off-by: prisis --- packages/eslint-config/package.json | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 669f23864..e3c83c53b 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -121,10 +121,10 @@ "test:watch": "vitest" }, "dependencies": { - "@antfu/install-pkg": "^0.5.0", + "@antfu/install-pkg": "^1.0.0", "@eslint-community/eslint-plugin-eslint-comments": "^4.4.1", - "@eslint/compat": "^1.2.4", - "@eslint/js": "^9.17.0", + "@eslint/compat": "^1.2.5", + "@eslint/js": "^9.18.0", "@eslint/markdown": "^6.2.1", "@html-eslint/eslint-plugin": "^0.32.0", "@html-eslint/parser": "^0.32.0", @@ -134,13 +134,13 @@ "@typescript-eslint/parser": "^8.19.1", "@visulima/package": "^3.4.2", "@visulima/tsconfig": "^1.1.6", - "@vitest/eslint-plugin": "^1.1.24", + "@vitest/eslint-plugin": "^1.1.25", "confusing-browser-globals": "^1.0.11", - "eslint-config-flat-gitignore": "^0.3.0", - "eslint-flat-config-utils": "^0.4.0", + "eslint-config-flat-gitignore": "^1.0.0", + "eslint-flat-config-utils": "^1.0.0", "eslint-import-resolver-node": "^0.3.9", "eslint-import-resolver-typescript": "^3.7.0", - "eslint-merge-processors": "^0.1.0", + "eslint-merge-processors": "^1.0.0", "eslint-plugin-antfu": "^2.7.0", "eslint-plugin-compat": "^6.0.2", "eslint-plugin-es-x": "^8.4.1", @@ -186,17 +186,17 @@ "@types/eslint-plugin-jsx-a11y": "^6.10.0", "@types/eslint-plugin-tailwindcss": "^3.17.0", "@types/semver": "^7.5.8", - "@unocss/eslint-plugin": "^0.65.4", + "@unocss/eslint-plugin": "^65.4.0", "@visulima/packem": "^1.10.7", "astro-eslint-parser": "^1.1.0", "esbuild": "^0.24.2", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "eslint-plugin-astro": "^1.3.1", "eslint-plugin-format": "^1.0.1", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-react": "^7.37.3", "eslint-plugin-react-hooks": "^5.1.0", - "eslint-plugin-react-refresh": "^0.4.16", + "eslint-plugin-react-refresh": "^0.4.18", "eslint-plugin-storybook": "^0.11.2", "eslint-plugin-tailwindcss": "^3.17.5", "eslint-plugin-testing-library": "^7.1.1", @@ -205,7 +205,7 @@ "eslint-plugin-vitest": "^0.5.4", "eslint-plugin-you-dont-need-lodash-underscore": "^6.14.0", "eslint-plugin-zod": "^1.4.0", - "eslint-typegen": "^0.3.2", + "eslint-typegen": "^1.0.0", "execa": "^9.5.2", "prettier": "^3.4.2", "react": "^19.0.0", @@ -213,7 +213,7 @@ "semantic-release": "^24.2.1", "tinyglobby": "^0.2.10", "tsx": "^4.19.2", - "type-fest": "^4.31.0", + "type-fest": "^4.32.0", "typescript": "^5.7.3", "vitest": "^2.1.8" }, From 18971cfe30a4fefa0deab7ad9dfdaeb3199049aa Mon Sep 17 00:00:00 2001 From: prisis Date: Fri, 23 May 2025 16:02:39 +0200 Subject: [PATCH 20/31] chore: update dependencies and configuration files - Updated Node version in .nvmrc from 18.18 to 22. - Modified pnpm-lock.yaml to reflect updated package versions and dependencies. - Added new files to .gitignore for Cursor rules and GitHub instructions. - Created vitest.workspace.ts for Vitest configuration. - Added mcp.json for MCP server configuration. - Introduced .vscode/settings.json for VSCode settings related to ESLint and Prettier. - Updated ESLint configuration in packages/eslint-config, including dependency upgrades and rule adjustments. - Enhanced various ESLint rules and added new rules for React and TypeScript. - Improved YAML configuration for pnpm-workspace. Signed-off-by: prisis --- .husky/post-commit | 1 - .husky/pre-commit | 1 - .husky/prepare-commit-msg | 1 - packages/eslint-config/README.md | 1 + .../__fixtures__/input/markdown.md | 2 +- .../eslint-config/__tests__/rules.test.ts | 10 +- packages/eslint-config/package.json | 124 +- packages/eslint-config/scripts/typegen.ts | 4 +- packages/eslint-config/src/config/es6.ts | 16 +- .../eslint-config/src/config/plugins/jsonc.ts | 2 + .../eslint-config/src/config/plugins/react.ts | 353 +- .../src/config/plugins/stylistic.ts | 5 +- .../src/config/plugins/typescript.ts | 49 +- .../src/config/plugins/unicorn.ts | 4 +- .../eslint-config/src/config/plugins/yml.ts | 32 + packages/eslint-config/src/typegen.d.ts | 19097 ++++++++-------- packages/eslint-config/src/types.ts | 3 +- .../eslint-config/src/utils/vitest-globals.ts | 39 +- 18 files changed, 9662 insertions(+), 10082 deletions(-) diff --git a/.husky/post-commit b/.husky/post-commit index a2499f0ee..a3c20e3e4 100755 --- a/.husky/post-commit +++ b/.husky/post-commit @@ -1,6 +1,5 @@ #!/bin/sh -. "$(dirname "$0")/_/husky.sh" . "$(dirname "$0")/common.sh" # The hook should exit with non-zero status after issuing diff --git a/.husky/pre-commit b/.husky/pre-commit index 7062c41f9..2dcff06dd 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,6 +1,5 @@ #!/bin/sh -. "$(dirname "$0")/_/husky.sh" . "$(dirname "$0")/common.sh" # The hook should exit with non-zero status after issuing diff --git a/.husky/prepare-commit-msg b/.husky/prepare-commit-msg index a5db2fc10..ba5fc2615 100755 --- a/.husky/prepare-commit-msg +++ b/.husky/prepare-commit-msg @@ -1,6 +1,5 @@ #!/bin/sh -. "$(dirname "$0")/_/husky.sh" . "$(dirname "$0")/common.sh" echo -------------------------------------------- diff --git a/packages/eslint-config/README.md b/packages/eslint-config/README.md index b93db704e..f0d9f33f4 100644 --- a/packages/eslint-config/README.md +++ b/packages/eslint-config/README.md @@ -251,6 +251,7 @@ If you would like to help take a look at the [list of issues](https://github.com - [All Contributors](https://github.com/anolilab/javascript-style-guide/graphs/contributors) - [eslint-config-airbnb](https://www.npmjs.com/package/eslint-config-airbnb) - [eslint-config-canonical](https://github.com/gajus/eslint-config-canonical) +- [](https://github.com/antfu/eslint-config) ## License diff --git a/packages/eslint-config/__fixtures__/input/markdown.md b/packages/eslint-config/__fixtures__/input/markdown.md index 7dfed2f97..56c0212f8 100644 --- a/packages/eslint-config/__fixtures__/input/markdown.md +++ b/packages/eslint-config/__fixtures__/input/markdown.md @@ -9,7 +9,7 @@ _Look,_ code blocks are formatted *too!* * * @param x */ -function identity(x) { +const identity = (x) => { if (foo) { console.log("bar"); } diff --git a/packages/eslint-config/__tests__/rules.test.ts b/packages/eslint-config/__tests__/rules.test.ts index 5f02b7879..02992a7e0 100644 --- a/packages/eslint-config/__tests__/rules.test.ts +++ b/packages/eslint-config/__tests__/rules.test.ts @@ -38,14 +38,16 @@ const copyFolderRecursive = async (from: string, to: string) => { } }; +const tempDirectoryPath = join(rootPath, "..", "tmp_fixtures"); + // eslint-disable-next-line vitest/require-top-level-describe beforeAll(async () => { - await rm(join(rootPath, "_fixtures"), { force: true, recursive: true }); + await rm(tempDirectoryPath, { force: true, recursive: true }); }); // eslint-disable-next-line vitest/require-top-level-describe afterAll(async () => { - await rm(join(rootPath, "_fixtures"), { force: true, recursive: true }); + await rm(tempDirectoryPath, { force: true, recursive: true }); }); const runWithConfig = (name: string, configs: OptionsConfig, ...items: TypedFlatConfigItem[]) => { @@ -57,7 +59,7 @@ const runWithConfig = (name: string, configs: OptionsConfig, ...items: TypedFlat const from = join(fixturesPath, "input"); const output = join(fixturesPath, "output", name); - const target = join(rootPath, "_fixtures", name); + const target = join(tempDirectoryPath, name); await copyFolderRecursive(from, target); await writeFile( @@ -108,7 +110,7 @@ export default createConfig( // eslint-disable-next-line vitest/require-hook runWithConfig("js", { typescript: false, - // vue: false, + vitest: false, }); // runWithConfig("all", { // astro: true, diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index e3c83c53b..778cf3ac5 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -121,101 +121,101 @@ "test:watch": "vitest" }, "dependencies": { - "@antfu/install-pkg": "^1.0.0", - "@eslint-community/eslint-plugin-eslint-comments": "^4.4.1", - "@eslint/compat": "^1.2.5", - "@eslint/js": "^9.18.0", - "@eslint/markdown": "^6.2.1", - "@html-eslint/eslint-plugin": "^0.32.0", - "@html-eslint/parser": "^0.32.0", - "@stylistic/eslint-plugin": "^2.12.1", - "@stylistic/eslint-plugin-ts": "^2.12.1", - "@typescript-eslint/eslint-plugin": "^8.19.1", - "@typescript-eslint/parser": "^8.19.1", - "@visulima/package": "^3.4.2", - "@visulima/tsconfig": "^1.1.6", - "@vitest/eslint-plugin": "^1.1.25", + "@antfu/install-pkg": "^1.1.0", + "@eslint-community/eslint-plugin-eslint-comments": "^4.5.0", + "@eslint/compat": "^1.2.9", + "@eslint/js": "^9.27.0", + "@eslint/markdown": "^6.4.0", + "@html-eslint/eslint-plugin": "^0.40.3", + "@html-eslint/parser": "^0.40.0", + "@stylistic/eslint-plugin": "^4.2.0", + "@stylistic/eslint-plugin-ts": "^4.2.0", + "@typescript-eslint/eslint-plugin": "^8.32.1", + "@typescript-eslint/parser": "^8.32.1", + "@visulima/package": "^3.5.4", + "@visulima/tsconfig": "^1.1.16", + "@vitest/eslint-plugin": "^1.2.0", "confusing-browser-globals": "^1.0.11", - "eslint-config-flat-gitignore": "^1.0.0", - "eslint-flat-config-utils": "^1.0.0", + "eslint-config-flat-gitignore": "^2.1.0", + "eslint-flat-config-utils": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-import-resolver-typescript": "^3.7.0", - "eslint-merge-processors": "^1.0.0", - "eslint-plugin-antfu": "^2.7.0", + "eslint-import-resolver-typescript": "^4.3.5", + "eslint-merge-processors": "^2.0.0", + "eslint-plugin-antfu": "^3.1.1", "eslint-plugin-compat": "^6.0.2", - "eslint-plugin-es-x": "^8.4.1", - "eslint-plugin-html": "^8.1.2", - "eslint-plugin-import-x": "^4.6.1", - "eslint-plugin-jsdoc": "^50.6.1", - "eslint-plugin-jsonc": "^2.18.2", - "eslint-plugin-n": "^17.15.1", + "eslint-plugin-es-x": "^8.6.2", + "eslint-plugin-html": "^8.1.3", + "eslint-plugin-import-x": "^4.12.2", + "eslint-plugin-jsdoc": "^50.6.17", + "eslint-plugin-jsonc": "^2.20.1", + "eslint-plugin-n": "^17.18.0", "eslint-plugin-no-for-of-array": "^0.1.0", "eslint-plugin-no-only-tests": "^3.3.0", - "eslint-plugin-no-secrets": "^2.1.1", + "eslint-plugin-no-secrets": "^2.2.1", "eslint-plugin-no-unsanitized": "^4.1.2", - "eslint-plugin-perfectionist": "^4.6.0", + "eslint-plugin-perfectionist": "^4.13.0", "eslint-plugin-promise": "^7.2.1", "eslint-plugin-regexp": "^2.7.0", "eslint-plugin-security": "^3.0.1", "eslint-plugin-simple-import-sort": "^12.1.1", - "eslint-plugin-sonarjs": "^3.0.1", + "eslint-plugin-sonarjs": "^3.0.2", "eslint-plugin-toml": "^0.12.0", - "eslint-plugin-unicorn": "^56.0.1", + "eslint-plugin-unicorn": "^59.0.1", "eslint-plugin-unused-imports": "^4.1.4", - "eslint-plugin-yml": "^1.16.0", - "globals": "^15.14.0", + "eslint-plugin-yml": "^1.18.0", + "globals": "^16.1.0", "jsonc-eslint-parser": "^2.4.0", "parse-gitignore": "^2.0.0", - "semver": "^7.6.3", + "semver": "^7.7.2", "toml-eslint-parser": "^0.10.0", - "typescript-eslint": "^8.19.1", - "yaml-eslint-parser": "^1.2.3" + "typescript-eslint": "^8.32.1", + "yaml-eslint-parser": "^1.3.0" }, "devDependencies": { "@anolilab/prettier-config": "^5.0.14", - "@anolilab/semantic-release-preset": "9.0.3", - "@eslint-react/eslint-plugin": "^1.23.2", - "@eslint/config-inspector": "^0.7.1", - "@stylistic/eslint-plugin-migrate": "^2.12.1", - "@tanstack/eslint-plugin-query": "^5.62.16", - "@tanstack/eslint-plugin-router": "^1.92.7", + "@anolilab/semantic-release-preset": "10.0.5", + "@eslint-react/eslint-plugin": "^1.49.0", + "@eslint/config-inspector": "^1.0.2", + "@stylistic/eslint-plugin-migrate": "^4.2.0", + "@tanstack/eslint-plugin-query": "^5.74.7", + "@tanstack/eslint-plugin-router": "^1.115.0", "@testing-library/dom": "^10.4.0", "@total-typescript/ts-reset": "^0.6.1", "@types/confusing-browser-globals": "^1.0.3", "@types/eslint": "^9.6.1", "@types/eslint-plugin-jsx-a11y": "^6.10.0", "@types/eslint-plugin-tailwindcss": "^3.17.0", - "@types/semver": "^7.5.8", - "@unocss/eslint-plugin": "^65.4.0", - "@visulima/packem": "^1.10.7", - "astro-eslint-parser": "^1.1.0", - "esbuild": "^0.24.2", - "eslint": "^9.18.0", + "@types/semver": "^7.7.0", + "@unocss/eslint-plugin": "^66.1.2", + "@visulima/packem": "^1.19.1", + "astro-eslint-parser": "^1.2.2", + "esbuild": "^0.25.4", + "eslint": "^9.27.0", "eslint-plugin-astro": "^1.3.1", "eslint-plugin-format": "^1.0.1", "eslint-plugin-jsx-a11y": "^6.10.2", - "eslint-plugin-react": "^7.37.3", - "eslint-plugin-react-hooks": "^5.1.0", - "eslint-plugin-react-refresh": "^0.4.18", - "eslint-plugin-storybook": "^0.11.2", - "eslint-plugin-tailwindcss": "^3.17.5", - "eslint-plugin-testing-library": "^7.1.1", + "eslint-plugin-react": "^7.37.5", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.20", + "eslint-plugin-storybook": "^0.12.0", + "eslint-plugin-tailwindcss": "^3.18.0", + "eslint-plugin-testing-library": "^7.2.1", "eslint-plugin-tsdoc": "^0.4.0", "eslint-plugin-validate-jsx-nesting": "^0.1.1", "eslint-plugin-vitest": "^0.5.4", "eslint-plugin-you-dont-need-lodash-underscore": "^6.14.0", "eslint-plugin-zod": "^1.4.0", - "eslint-typegen": "^1.0.0", - "execa": "^9.5.2", - "prettier": "^3.4.2", - "react": "^19.0.0", + "eslint-typegen": "^2.2.0", + "execa": "^9.5.3", + "prettier": "^3.5.3", + "react": "^19.1.0", "rimraf": "^6.0.1", - "semantic-release": "^24.2.1", - "tinyglobby": "^0.2.10", - "tsx": "^4.19.2", - "type-fest": "^4.32.0", - "typescript": "^5.7.3", - "vitest": "^2.1.8" + "semantic-release": "^24.2.4", + "tinyglobby": "^0.2.13", + "tsx": "^4.19.4", + "type-fest": "^4.41.0", + "typescript": "^5.8.3", + "vitest": "^3.1.4" }, "peerDependencies": { "@babel/core": "^7.22.20", diff --git a/packages/eslint-config/scripts/typegen.ts b/packages/eslint-config/scripts/typegen.ts index c98602bc8..96457c669 100644 --- a/packages/eslint-config/scripts/typegen.ts +++ b/packages/eslint-config/scripts/typegen.ts @@ -1,7 +1,7 @@ import fs from "node:fs/promises"; import type { NormalizedPackageJson } from "@visulima/package"; -import { builtinRules } from "eslint/use-at-your-own-risk"; +import JS from '@eslint/js' import { flatConfigsToRulesDTS } from "eslint-typegen/core"; import bestPractices from "../src/config/best-practices"; @@ -54,7 +54,7 @@ const configs = await combine( { plugins: { "": { - rules: Object.fromEntries(builtinRules.entries()), + rules: JS.configs.all, }, }, }, diff --git a/packages/eslint-config/src/config/es6.ts b/packages/eslint-config/src/config/es6.ts index 608e990c2..ebf491ef1 100644 --- a/packages/eslint-config/src/config/es6.ts +++ b/packages/eslint-config/src/config/es6.ts @@ -1,9 +1,9 @@ import type { Linter } from "eslint"; -import type { OptionsFiles } from "../types"; +import type { OptionsFiles, OptionsIsInEditor } from "../types"; import { createConfig, getFilesGlobs } from "../utils/create-config"; -export const es6Rules: Partial = { +export const es6Rules: (isInEditor: boolean) => Partial = (isInEditor: boolean) => ({ // enforces no braces where they can be omitted // https://eslint.org/docs/rules/arrow-body-style "arrow-body-style": [ @@ -257,7 +257,9 @@ export const es6Rules: Partial = { ], // suggest using of const declaration for variables that are never modified after declared - "prefer-const": [ + "prefer-const": isInEditor + ? "off" + : [ "error", { destructuring: "any", @@ -335,10 +337,10 @@ export const es6Rules: Partial = { // enforce spacing around the * in yield* expressions // https://eslint.org/docs/rules/yield-star-spacing "yield-star-spacing": ["error", "after"], -}; +}); -export default createConfig("all", async (config, oFiles) => { - const { files = oFiles } = config; +export default createConfig("all", async (config, oFiles) => { + const { files = oFiles, isInEditor = false } = config; return [ { @@ -354,7 +356,7 @@ export default createConfig("all", async (config, oFiles) => { }, }, name: "anolilab/es6/rules", - rules: es6Rules, + rules: es6Rules(isInEditor), }, // The following rules are enabled in config, but are already checked (more thoroughly) by the TypeScript compiler // Some rules also fail in TypeScript files, for example: https://github.com/typescript-eslint/typescript-eslint/issues/662#issuecomment-507081586 diff --git a/packages/eslint-config/src/config/plugins/jsonc.ts b/packages/eslint-config/src/config/plugins/jsonc.ts index c1ad1c5e1..ca33d6745 100644 --- a/packages/eslint-config/src/config/plugins/jsonc.ts +++ b/packages/eslint-config/src/config/plugins/jsonc.ts @@ -255,6 +255,7 @@ const jsonc = async ( "useDefineForClassFields", "emitDecoratorMetadata", "experimentalDecorators", + "libReplacement", /* Modules */ "baseUrl", "rootDir", @@ -329,6 +330,7 @@ const jsonc = async ( "isolatedModules", "preserveSymlinks", "verbatimModuleSyntax", + "erasableSyntaxOnly", /* Completeness */ "skipDefaultLibCheck", "skipLibCheck", diff --git a/packages/eslint-config/src/config/plugins/react.ts b/packages/eslint-config/src/config/plugins/react.ts index e10f8f64e..2299f9e8b 100644 --- a/packages/eslint-config/src/config/plugins/react.ts +++ b/packages/eslint-config/src/config/plugins/react.ts @@ -52,7 +52,7 @@ export default createConfig< const { indent = 4 } = typeof stylistic === "boolean" ? {} : stylistic; const typeAwareRules: TypedFlatConfigItem["rules"] = { - "react/no-leaked-conditional-rendering": "warn", + "react-x/no-leaked-conditional-rendering": "error", }; const [pluginReactX, pluginReact, pluginReactHooks, pluginReactRefresh] = await Promise.all([ @@ -113,6 +113,7 @@ export default createConfig< "react-hooks-extra": plugins["@eslint-react/hooks-extra"], "react-naming-convention": plugins["@eslint-react/naming-convention"], "react-refresh": pluginReactRefresh, + "react-web-api": plugins["@eslint-react/web-api"], "react-x": plugins["@eslint-react"], }, }, @@ -165,6 +166,26 @@ export default createConfig< }, ], + // Disallow direct calls to the set function of useState in useEffect + // https://eslint-react.xyz/docs/rules/no-direct-set-state-in-use-effect + "react-hooks-extra/no-direct-set-state-in-use-effect": "error", + + // Disallow unnecessary usage of useCallback + // https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-callback + "react-hooks-extra/no-unnecessary-use-callback": "error", + + // Disallow unnecessary usage of useMemo + // https://eslint-react.xyz/docs/rules/react-hooks-extra/no-unnecessary-use-memo + "react-hooks-extra/no-unnecessary-use-memo": "error", + + // Enforces that a function with the use prefix should use at least one hook inside of it + // https://eslint-react.xyz/docs/rules/no-unnecessary-use-prefix + "react-hooks-extra/no-unnecessary-use-prefix": "error", + + // Prefer lazy initialization for useState + // https://eslint-react.xyz/docs/rules/prefer-use-state-lazy-initialization + "react-hooks-extra/prefer-use-state-lazy-initialization": "error", + // Enforce Rules of Hooks // https://github.com/facebook/react/blob/1204c789776cb01fbaf3e9f032e7e2ba85a44137/packages/eslint-plugin-react-hooks/src/ExhaustiveDeps.js "react-hooks/exhaustive-deps": "error", @@ -173,9 +194,25 @@ export default createConfig< // https://github.com/facebook/react/blob/c11015ff4f610ac2924d1fc6d569a17657a404fd/packages/eslint-plugin-react-hooks/src/RulesOfHooks.js "react-hooks/rules-of-hooks": "error", + // Enforces naming conventions for components + // https://eslint-react.xyz/docs/rules/naming-convention-component-name + "react-naming-convention/component-name": "error", + + // Enforces context name to be a valid component name with the suffix Context + // https://eslint-react.xyz/docs/rules/naming-convention-context-name + "react-naming-convention/context-name": "error", + + // Enforces consistent file naming conventions + // https://eslint-react.xyz/docs/rules/naming-convention-filename + "react-naming-convention/filename": "off", + + // Enforces naming conventions for useState + // https://eslint-react.xyz/docs/rules/naming-convention-use-state + "react-naming-convention/use-state": "error", + // react refresh "react-refresh/only-export-components": [ - "warn", + "error", { allowConstantExport: isAllowConstantExport, allowExportNames: [ @@ -201,6 +238,253 @@ export default createConfig< }, ], + // Prevents leaked addEventListener in a component or custom hook + // https://eslint-react.xyz/docs/rules/web-api-no-leaked-event-listener + "react-web-api/no-leaked-event-listener": "error", + + // Prevents leaked setInterval in a component or custom hook + // https://eslint-react.xyz/docs/rules/web-api-no-leaked-interval + "react-web-api/no-leaked-interval": "error", + + // Prevents leaked ResizeObserver in a component or custom hook + // https://eslint-react.xyz/docs/rules/web-api-no-leaked-resize-observer + "react-web-api/no-leaked-resize-observer": "error", + + // Prevents leaked setTimeout in a component or custom hook + // https://eslint-react.xyz/docs/rules/web-api-no-leaked-timeout + "react-web-api/no-leaked-timeout": "error", + + // React-X Rules + // https://eslint-react.xyz/docs/rules + + // Enforces that the key attribute is placed before the spread attribute in JSX elements + // https://eslint-react.xyz/docs/rules/jsx-key-before-spread + "react-x/jsx-key-before-spread": "error", + + // Disallow duplicate props in JSX elements + // https://eslint-react.xyz/docs/rules/jsx-no-duplicate-props + "react-x/jsx-no-duplicate-props": "error", + + // Disallow undefined variables in JSX elements + // https://eslint-react.xyz/docs/rules/jsx-no-undef + "react-x/jsx-no-undef": "off", + + // Marks React variables as used when JSX is used + // https://eslint-react.xyz/docs/rules/jsx-uses-react + "react-x/jsx-uses-react": hasJsxRuntime ? "off" : "error", + + // Marks variables used in JSX elements as used + // https://eslint-react.xyz/docs/rules/jsx-uses-vars + "react-x/jsx-uses-vars": "error", + + // Disallow accessing this.state inside setState calls + // https://eslint-react.xyz/docs/rules/no-access-state-in-setstate + "react-x/no-access-state-in-setstate": "error", + + // Disallow an item's index in the array as its key + // https://eslint-react.xyz/docs/rules/no-array-index-key + "react-x/no-array-index-key": "error", + + // Disallow Children.count + // https://eslint-react.xyz/docs/rules/no-children-count + "react-x/no-children-count": "error", + + // Disallow Children.forEach + // https://eslint-react.xyz/docs/rules/no-children-for-each + "react-x/no-children-for-each": "error", + + // Disallow Children.map + // https://eslint-react.xyz/docs/rules/no-children-map + "react-x/no-children-map": "error", + + // Disallow Children.only + // https://eslint-react.xyz/docs/rules/no-children-only + "react-x/no-children-only": "error", + + // Disallow passing children as a prop + // https://eslint-react.xyz/docs/rules/no-children-prop + "react-x/no-children-prop": "off", + + // Disallow Children.toArray + // https://eslint-react.xyz/docs/rules/no-children-to-array + "react-x/no-children-to-array": "error", + + // Disallow class components except for error boundaries + // https://eslint-react.xyz/docs/rules/no-class-component + "react-x/no-class-component": "off", + + // Disallow cloneElement + // https://eslint-react.xyz/docs/rules/no-clone-element + "react-x/no-clone-element": "error", + + // Prevents comments from being inserted as text nodes + // https://eslint-react.xyz/docs/rules/no-comment-textnodes + "react-x/no-comment-textnodes": "error", + + // Disallow complex conditional rendering in JSX expressions + // https://eslint-react.xyz/docs/rules/no-complex-conditional-rendering + "react-x/no-complex-conditional-rendering": "off", + + // Replaces usages of componentWillMount with UNSAFE_componentWillMount + // https://eslint-react.xyz/docs/rules/no-component-will-mount + "react-x/no-component-will-mount": "error", + + // Replaces usages of componentWillReceiveProps with UNSAFE_componentWillReceiveProps + // https://eslint-react.xyz/docs/rules/no-component-will-receive-props + "react-x/no-component-will-receive-props": "error", + + // Replaces usages of componentWillUpdate with UNSAFE_componentWillUpdate + // https://eslint-react.xyz/docs/rules/no-component-will-update + "react-x/no-component-will-update": "error", + + // Replaces usages of with + // https://eslint-react.xyz/docs/rules/no-context-provider + "react-x/no-context-provider": "error", + + // Disallow createRef in function components + // https://eslint-react.xyz/docs/rules/no-create-ref + "react-x/no-create-ref": "error", + + // Disallow defaultProps property in favor of ES6 default parameters + // https://eslint-react.xyz/docs/rules/no-default-props + "react-x/no-default-props": "error", + + // Disallow direct mutation of this.state + // https://eslint-react.xyz/docs/rules/no-direct-mutation-state + "react-x/no-direct-mutation-state": "error", + + // Disallow duplicate key on elements in the same array or a list of children + // https://eslint-react.xyz/docs/rules/no-duplicate-key + "react-x/no-duplicate-key": "error", + + // Replaces usages of forwardRef with passing ref as a prop + // https://eslint-react.xyz/docs/rules/no-forward-ref + "react-x/no-forward-ref": "error", + + // Prevents key from not being explicitly specified (e.g. spreading key from objects) + // https://eslint-react.xyz/docs/rules/no-implicit-key + "react-x/no-implicit-key": "error", + + // Prevents problematic leaked values from being rendered + // https://eslint-react.xyz/docs/rules/no-leaked-conditional-rendering + "react-x/no-leaked-conditional-rendering": "error", + + // Enforces that all components have a displayName which can be used in devtools + // https://eslint-react.xyz/docs/rules/no-missing-component-display-name + "react-x/no-missing-component-display-name": "off", + + // Enforces that all contexts have a displayName which can be used in devtools + // https://eslint-react.xyz/docs/rules/no-missing-context-display-name + "react-x/no-missing-context-display-name": "off", + + // Disallow missing key on items in list rendering + // https://eslint-react.xyz/docs/rules/no-missing-key + "react-x/no-missing-key": "error", + + // Prevents incorrect usage of captureOwnerStack + // https://eslint-react.xyz/docs/rules/no-misused-capture-owner-stack + "react-x/no-misused-capture-owner-stack": "off", + + // Disallow nesting component definitions inside other components + // https://eslint-react.xyz/docs/rules/no-nested-component-definitions + "react-x/no-nested-component-definitions": "error", + + // Disallow nesting lazy component declarations inside other components + // https://eslint-react.xyz/docs/rules/no-nested-lazy-component-declarations + "react-x/no-nested-lazy-component-declarations": "error", + + // Disallow propTypes in favor of TypeScript or another type-checking solution + // https://eslint-react.xyz/docs/rules/no-prop-types + "react-x/no-prop-types": "error", + + // Disallow shouldComponentUpdate when extending React.PureComponent + // https://eslint-react.xyz/docs/rules/no-redundant-should-component-update + "react-x/no-redundant-should-component-update": "error", + + // Disallow calling this.setState in componentDidMount outside of functions, such as callbacks + // https://eslint-react.xyz/docs/rules/no-set-state-in-component-did-mount + "react-x/no-set-state-in-component-did-mount": "error", + + // Disallow calling this.setState in componentDidUpdate outside of functions, such as callbacks + // https://eslint-react.xyz/docs/rules/no-set-state-in-component-did-update + "react-x/no-set-state-in-component-did-update": "error", + + // Disallow calling this.setState in componentWillUpdate outside of functions, such as callbacks + // https://eslint-react.xyz/docs/rules/no-set-state-in-component-will-update + "react-x/no-set-state-in-component-will-update": "error", + + // Replaces string refs with callback refs + // https://eslint-react.xyz/docs/rules/no-string-refs + "react-x/no-string-refs": "error", + + // Warns the usage of UNSAFE_componentWillMount in class components + // https://eslint-react.xyz/docs/rules/no-unsafe-component-will-mount + "react-x/no-unsafe-component-will-mount": "error", + + // Warns the usage of UNSAFE_componentWillReceiveProps in class components + // https://eslint-react.xyz/docs/rules/no-unsafe-component-will-receive-props + "react-x/no-unsafe-component-will-receive-props": "error", + + // Warns the usage of UNSAFE_componentWillUpdate in class components + // https://eslint-react.xyz/docs/rules/no-unsafe-component-will-update + "react-x/no-unsafe-component-will-update": "error", + + // Prevents non-stable values (i.e. object literals) from being used as a value for Context.Provider + // https://eslint-react.xyz/docs/rules/no-unstable-context-value + "react-x/no-unstable-context-value": "error", + + // Prevents using referential-type values as default props in object destructuring + // https://eslint-react.xyz/docs/rules/no-unstable-default-props + "react-x/no-unstable-default-props": "error", + + // Warns unused class component methods and properties + // https://eslint-react.xyz/docs/rules/no-unused-class-component-members + "react-x/no-unused-class-component-members": "error", + + // Warns unused class component state + // https://eslint-react.xyz/docs/rules/no-unused-state + "react-x/no-unused-state": "error", + + // Replaces usages of useContext with use + // https://eslint-react.xyz/docs/rules/no-use-context + "react-x/no-use-context": "error", + + // Disallow useless forwardRef calls on components that don't use refs + // https://eslint-react.xyz/docs/rules/no-useless-forward-ref + "react-x/no-useless-forward-ref": "error", + + // Disallow useless fragment elements + // https://eslint-react.xyz/docs/rules/no-useless-fragment + "react-x/no-useless-fragment": "off", + + // Enforces destructuring assignment for component props and context + // https://eslint-react.xyz/docs/rules/prefer-destructuring-assignment + "react-x/prefer-destructuring-assignment": "off", + + // Enforces React is imported via a namespace import + // https://eslint-react.xyz/docs/rules/prefer-react-namespace-import + "react-x/prefer-react-namespace-import": "off", + + // Enforces read-only props in components + // https://eslint-react.xyz/docs/rules/prefer-read-only-props + "react-x/prefer-read-only-props": "off", + + // Enforces shorthand syntax for boolean attributes + // https://eslint-react.xyz/docs/rules/prefer-shorthand-boolean + "react-x/prefer-shorthand-boolean": "off", + + // Enforces shorthand syntax for fragments + // https://eslint-react.xyz/docs/rules/prefer-shorthand-fragment + "react-x/prefer-shorthand-fragment": "off", + + // Enforces explicit boolean values for boolean attributes + // https://eslint-react.xyz/docs/rules/avoid-shorthand-boolean + "react-x/avoid-shorthand-boolean": "off", + + // Enforces explicit components instead of the shorthand <> or syntax + // https://eslint-react.xyz/docs/rules/avoid-shorthand-fragment + "react-x/avoid-shorthand-fragment": "off", + // Prevent missing displayName in a React component definition // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/boolean-prop-naming.md "react/boolean-prop-naming": [ @@ -249,7 +533,7 @@ export default createConfig< // Validate JSX has key prop when in array or iterator // but it's only critical if you're stripping propTypes in production. - "react/forbid-foreign-prop-types": ["warn", { allowInPropTypes: true }], + "react/forbid-foreign-prop-types": ["error", { allowInPropTypes: true }], // Limit maximum of props on a single line in JSX // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/forbid-prop-types.md @@ -363,7 +647,7 @@ export default createConfig< // Require ES6 class declarations over React.createClass // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-comment-textnodes.md - "react/jsx-no-comment-textnodes": "error", + "react/jsx-no-comment-textnodes": "off", // Require stateless functions when not using lifecycle methods, setState or ref // https://github.com/jsx-eslint/eslint-plugin-react/blob/e2eaadae316f9506d163812a09424eb42698470a/docs/rules/jsx-no-constructed-context-values.md @@ -371,7 +655,7 @@ export default createConfig< // Prevent missing props validation in a React component definition // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-duplicate-props.md - "react/jsx-no-duplicate-props": ["error", { ignoreCase: true }], + "react/jsx-no-duplicate-props": "off", // Prevent missing React when using JSX // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-literals.md @@ -395,11 +679,11 @@ export default createConfig< // Enforce defaultProps declarations alphabetical sorting // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-undef.md - "react/jsx-no-undef": "error", + "react/jsx-no-undef": "off", // Enforce component methods order // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-useless-fragment.md - "react/jsx-no-useless-fragment": "error", + "react/jsx-no-useless-fragment": "off", // Require that the first prop in a JSX element be on a new line when the element is multiline // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-one-expression-per-line.md @@ -454,15 +738,18 @@ export default createConfig< // disallow using React.render/ReactDOM.render's return value // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-uses-react.md - "react/jsx-uses-react": [hasJsxRuntime ? "off" : "error"], + // DISABLED: Handled by react-x/jsx-uses-react + "react/jsx-uses-react": "off", // require a shouldComponentUpdate method, or PureRenderMixin // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-uses-vars.md - "react/jsx-uses-vars": "error", + // DISABLED: Handled by react-x/jsx-uses-vars + "react/jsx-uses-vars": "off", // warn against using findDOMNode() // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-access-state-in-setstate.md - "react/no-access-state-in-setstate": "error", + // DISABLED: Handled by react-x/no-access-state-in-setstate + "react/no-access-state-in-setstate": "off", // Forbid certain props on Components // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-adjacent-inline-elements.md @@ -470,15 +757,17 @@ export default createConfig< // Forbid certain elements // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-array-index-key.md - "react/no-array-index-key": "error", + // DISABLED: Handled by react-x/no-array-index-key + "react/no-array-index-key": "off", // Prevent problem with children and props.dangerouslySetInnerHTML // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-children-prop.md - "react/no-children-prop": "error", + // DISABLED: Handled by react-x/no-children-prop + "react/no-children-prop": "off", // Prevent unused propType definitions // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-danger.md - "react/no-danger": "warn", + "react/no-danger": "error", // Require style prop value be an object or var // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-danger-with-children.md @@ -499,7 +788,8 @@ export default createConfig< // Enforce spaces before the closing bracket of self-closing JSX elements // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-space-before-closing.md // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-direct-mutation-state.md - "react/no-direct-mutation-state": "error", + // DISABLED: Handled by react-x/no-direct-mutation-state + "react/no-direct-mutation-state": "off", // Prevent usage of Array index in keys // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-find-dom-node.md @@ -511,13 +801,14 @@ export default createConfig< // Forbids using non-exported propTypes // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/forbid-foreign-prop-types.md - // this is intentionally set to "warn". it would be "error", + // this is intentionally set to "error". it would be "error", // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-multi-comp.md "react/no-multi-comp": "off", // Prevent void DOM elements from receiving children // https://github.com/jsx-eslint/eslint-plugin-react/blob/9e13ae2c51e44872b45cc15bf1ac3a72105bdd0e/docs/rules/no-redundant-should-component-update.md - "react/no-redundant-should-component-update": "error", + // DISABLED: Handled by react-x/no-redundant-should-component-update + "react/no-redundant-should-component-update": "off", // Enforce all defaultProps have a corresponding non-required PropType // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-render-return-value.md @@ -529,7 +820,8 @@ export default createConfig< // Prevent unused state values // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-string-refs.md - "react/no-string-refs": "error", + // DISABLED: Handled by react-x/no-string-refs + "react/no-string-refs": "off", // Enforces consistent naming for boolean props // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-this-in-sfc.md @@ -559,7 +851,8 @@ export default createConfig< // Prevent usage of button elements without an explicit type attribute // https://github.com/jsx-eslint/eslint-plugin-react/pull/1103/ - "react/no-unused-state": "error", + // DISABLED: Handled by react-x/no-unused-state + "react/no-unused-state": "off", // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-will-update-set-state.md "react/no-will-update-set-state": "error", @@ -578,14 +871,7 @@ export default createConfig< // Prevent usage of UNSAFE_ methods // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/prop-types.md - "react/prop-types": [ - "error", - { - customValidators: [], - ignore: [], - skipUndeclared: false, - }, - ], + "react/prop-types": "off", // Enforce shorthand or standard form for React fragments // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/react-in-jsx-scope.md @@ -593,13 +879,7 @@ export default createConfig< // Enforce a defaultProps definition for every prop that is not a required prop // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/require-default-props.md - "react/require-default-props": [ - "error", - { - forbidDefaultForRequired: true, - functions: hasPackageJsonAnyDependency(packageJson, ["typescript"]) ? "defaultArguments" : "defaultProps", - }, - ], + "react/require-default-props": "off", // Enforce state initialization style // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/state-in-constructor.md @@ -693,7 +973,6 @@ export default createConfig< // Enforce a specific function type for function components "react/static-property-placement": ["error", "static public field"], - // Enforce a new line after jsx elements and expressions // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/style-prop-object.md "react/style-prop-object": "error", @@ -757,7 +1036,11 @@ export default createConfig< // Prevents common casing typos // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-filename-extension.md - "react/jsx-filename-extension": "error", + "react/jsx-filename-extension": "off", + + // Enforces consistent use of the JSX file extension. + // https://eslint-react.xyz/docs/rules/naming-convention-filename-extension + "react-x/naming-convention/filename-extension": ["error", "as-needed"], // Validate closing tag location in JSX // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-wrap-multilines.md diff --git a/packages/eslint-config/src/config/plugins/stylistic.ts b/packages/eslint-config/src/config/plugins/stylistic.ts index 3dcaae604..9111a3d3a 100644 --- a/packages/eslint-config/src/config/plugins/stylistic.ts +++ b/packages/eslint-config/src/config/plugins/stylistic.ts @@ -25,7 +25,6 @@ const stylistic = async (options: OptionsHasPrettier & OptionsOverrides & Stylis const pluginStylistic = await interopDefault(import("@stylistic/eslint-plugin")); const config = pluginStylistic.configs.customize({ - flat: true, indent, jsx, pluginName: "@stylistic", @@ -72,6 +71,8 @@ const stylistic = async (options: OptionsHasPrettier & OptionsOverrides & Stylis // Replace 'func-call-spacing' rule with '@stylistic' version "@stylistic/func-call-spacing": ["error", "never"], + "@stylistic/generator-star-spacing": ["error", { after: true, before: false }], + "@stylistic/indent": [ "error", indent, @@ -228,7 +229,9 @@ const stylistic = async (options: OptionsHasPrettier & OptionsOverrides & Stylis // require spaces around operators "@stylistic/space-infix-ops": "error", + "@stylistic/type-annotation-spacing": "error", + "@stylistic/yield-star-spacing": ["error", { after: true, before: false }], ...overrides, diff --git a/packages/eslint-config/src/config/plugins/typescript.ts b/packages/eslint-config/src/config/plugins/typescript.ts index 67411a6fa..6d3a85913 100644 --- a/packages/eslint-config/src/config/plugins/typescript.ts +++ b/packages/eslint-config/src/config/plugins/typescript.ts @@ -6,12 +6,13 @@ import type { OptionsStylistic, OptionsTypeScriptParserOptions, OptionsTypeScriptWithTypes, + OptionsIsInEditor, TypedFlatConfigItem, } from "../../types"; import { createConfig, getFilesGlobs } from "../../utils/create-config"; import interopDefault from "../../utils/interop-default"; import { bestPracticesRules } from "../best-practices"; -import { es6Rules } from "../es6"; +import { es6Rules as es6RulesFn } from "../es6"; import { styleRules } from "../style"; import { variablesRules } from "../variables"; @@ -22,7 +23,8 @@ export default createConfig< OptionsOverrides & OptionsStylistic & OptionsTypeScriptParserOptions & - OptionsTypeScriptWithTypes + OptionsTypeScriptWithTypes & + OptionsIsInEditor >("ts", async (config, oFiles) => { const { componentExts: componentExtensions = [], @@ -32,8 +34,11 @@ export default createConfig< parserOptions, prettier, stylistic = true, + isInEditor = false } = config; + const es6Rules = es6RulesFn(isInEditor); + const [pluginTs, parserTs, tseslint, noForOfArrayPlugin] = await Promise.all([ interopDefault(import("@typescript-eslint/eslint-plugin")), interopDefault(import("@typescript-eslint/parser")), @@ -186,7 +191,11 @@ export default createConfig< // Enforce consistent usage of type imports. // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/consistent-type-imports.md - "@typescript-eslint/consistent-type-imports": "error", + "@typescript-eslint/consistent-type-imports": ["error", { + disallowTypeAnnotations: false, + fixStyle: "separate-type-imports", + prefer: "type-imports", + }], // Require explicit accessibility modifiers on class properties and methods. // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/explicit-member-accessibility.md @@ -246,7 +255,7 @@ export default createConfig< // Replace 'no-array-constructor' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-array-constructor.md - "@typescript-eslint/no-array-constructor": styleRules["no-array-constructor"], + "@typescript-eslint/no-array-constructor": styleRules["no-array-constructor"] ? (Array.isArray(styleRules["no-array-constructor"]) ? styleRules["no-array-constructor"][0] : styleRules["no-array-constructor"]) : "off", // Disallow non-null assertion in locations that may be confusing. // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/no-confusing-non-null-assertion.md @@ -254,7 +263,7 @@ export default createConfig< // Replace 'no-dupe-class-members' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-dupe-class-members.md - "@typescript-eslint/no-dupe-class-members": es6Rules["no-dupe-class-members"], + "@typescript-eslint/no-dupe-class-members": es6Rules["no-dupe-class-members"] ? (Array.isArray(es6Rules["no-dupe-class-members"]) ? es6Rules["no-dupe-class-members"][0] : es6Rules["no-dupe-class-members"]) : "off", // Disallow duplicate enum member values. // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/no-duplicate-enum-values.md @@ -266,7 +275,7 @@ export default createConfig< // Replace 'no-empty-function' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-empty-function.md - "@typescript-eslint/no-empty-function": bestPracticesRules["no-empty-function"], + "@typescript-eslint/no-empty-function": bestPracticesRules["no-empty-function"] ? (Array.isArray(bestPracticesRules["no-empty-function"]) ? bestPracticesRules["no-empty-function"][0] : bestPracticesRules["no-empty-function"]) : "off", // Disallow extra non-null assertions. // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/no-extra-non-null-assertion.md @@ -281,11 +290,11 @@ export default createConfig< // Replace 'no-loop-func' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-loop-func.md - "@typescript-eslint/no-loop-func": bestPracticesRules["no-loop-func"], + "@typescript-eslint/no-loop-func": bestPracticesRules["no-loop-func"] ? (Array.isArray(bestPracticesRules["no-loop-func"]) ? bestPracticesRules["no-loop-func"][0] : bestPracticesRules["no-loop-func"]) : "off", // Replace 'no-magic-numbers' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-magic-numbers.md - "@typescript-eslint/no-magic-numbers": bestPracticesRules["no-magic-numbers"], + "@typescript-eslint/no-magic-numbers": bestPracticesRules["no-magic-numbers"] ? (Array.isArray(bestPracticesRules["no-magic-numbers"]) ? bestPracticesRules["no-magic-numbers"][0] : bestPracticesRules["no-magic-numbers"]) : "off", // Enforce valid definition of new and constructor. // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/no-misused-new.md @@ -309,7 +318,7 @@ export default createConfig< // Replace 'no-redeclare' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-redeclare.md - "@typescript-eslint/no-redeclare": bestPracticesRules["no-redeclare"], + "@typescript-eslint/no-redeclare": bestPracticesRules["no-redeclare"] ? (Array.isArray(bestPracticesRules["no-redeclare"]) ? bestPracticesRules["no-redeclare"][0] : bestPracticesRules["no-redeclare"]) : "off", // Disallow invocation of require(). // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/no-require-imports.md @@ -317,7 +326,7 @@ export default createConfig< // Replace 'no-shadow' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-shadow.md - "@typescript-eslint/no-shadow": variablesRules["no-shadow"], + "@typescript-eslint/no-shadow": variablesRules["no-shadow"] ? (Array.isArray(variablesRules["no-shadow"]) ? variablesRules["no-shadow"][0] : variablesRules["no-shadow"]) : "off", // Disallow aliasing this. // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/no-this-alias.md @@ -333,19 +342,19 @@ export default createConfig< // Replace 'no-unused-expressions' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-unused-expressions.md - "@typescript-eslint/no-unused-expressions": bestPracticesRules["no-unused-expressions"], + "@typescript-eslint/no-unused-expressions": bestPracticesRules["no-unused-expressions"] ? (Array.isArray(bestPracticesRules["no-unused-expressions"]) ? bestPracticesRules["no-unused-expressions"][0] : bestPracticesRules["no-unused-expressions"]) : "off", // Replace 'no-unused-vars' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-unused-vars.md - "@typescript-eslint/no-unused-vars": variablesRules["no-unused-vars"], + "@typescript-eslint/no-unused-vars": variablesRules["no-unused-vars"] ? (Array.isArray(variablesRules["no-unused-vars"]) ? variablesRules["no-unused-vars"][0] : variablesRules["no-unused-vars"]) : "off", // Replace 'no-use-before-define' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-use-before-define.md - "@typescript-eslint/no-use-before-define": variablesRules["no-use-before-define"], + "@typescript-eslint/no-use-before-define": variablesRules["no-use-before-define"] ? (Array.isArray(variablesRules["no-use-before-define"]) ? variablesRules["no-use-before-define"][0] : variablesRules["no-use-before-define"]) : "off", // Replace 'no-useless-constructor' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-useless-constructor.md - "@typescript-eslint/no-useless-constructor": es6Rules["no-useless-constructor"], + "@typescript-eslint/no-useless-constructor": es6Rules["no-useless-constructor"] ? (Array.isArray(es6Rules["no-useless-constructor"]) ? es6Rules["no-useless-constructor"][0] : es6Rules["no-useless-constructor"]) : "off", // Disallow empty exports that don't change anything in a module file. // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/no-useless-empty-export.md @@ -368,15 +377,17 @@ export default createConfig< // Enforce using @ts-expect-error over @ts-ignore. // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/prefer-ts-expect-error.md - "@typescript-eslint/prefer-ts-expect-error": "error", + // DEPRECATED: in favor of ban-ts-comment + "@typescript-eslint/prefer-ts-expect-error": "off", + "@typescript-eslint/ban-ts-comment": ["error", { "ts-expect-error": "allow-with-description", "ts-ignore": "allow-with-description", "ts-nocheck": true, "ts-check": false, minimumDescriptionLength: 3 }], // Replace 'no-return-await' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/return-await.md - "@typescript-eslint/return-await": bestPracticesRules["no-return-await"], + "@typescript-eslint/return-await": bestPracticesRules["no-return-await"] ? (Array.isArray(bestPracticesRules["no-return-await"]) ? bestPracticesRules["no-return-await"][0] : bestPracticesRules["no-return-await"]) : "off", // Replace 'semi' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/semi.md - "@typescript-eslint/semi": styleRules["semi"], + "@typescript-eslint/semi": styleRules["semi"] ? (Array.isArray(styleRules["semi"]) ? styleRules["semi"][0] : styleRules["semi"]) : "off", // Enforce constituents of a type union/intersection to be sorted alphabetically. // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/sort-type-constituents.md @@ -384,11 +395,11 @@ export default createConfig< // Replace 'space-before-function-paren' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/space-before-function-paren.md - "@typescript-eslint/space-before-function-paren": styleRules["space-before-function-paren"], + "@typescript-eslint/space-before-function-paren": styleRules["space-before-function-paren"] ? (Array.isArray(styleRules["space-before-function-paren"]) ? styleRules["space-before-function-paren"][0] : styleRules["space-before-function-paren"]) : "off", // Replace 'space-infix-ops' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/space-infix-ops.md - "@typescript-eslint/space-infix-ops": styleRules["space-infix-ops"], + "@typescript-eslint/space-infix-ops": styleRules["space-infix-ops"] ? (Array.isArray(styleRules["space-infix-ops"]) ? styleRules["space-infix-ops"][0] : styleRules["space-infix-ops"]) : "off", ...overrides, diff --git a/packages/eslint-config/src/config/plugins/unicorn.ts b/packages/eslint-config/src/config/plugins/unicorn.ts index 2900fe39b..8bae748da 100644 --- a/packages/eslint-config/src/config/plugins/unicorn.ts +++ b/packages/eslint-config/src/config/plugins/unicorn.ts @@ -37,7 +37,7 @@ export default createConfig /** * Enforce consistent spacing before and after semicolons - * @see https://eslint.style/rules/js/semi-spacing + * @see https://eslint.style/rules/ts/semi-spacing */ '@stylistic/semi-spacing'?: Linter.RuleEntry /** @@ -504,6 +504,11 @@ export interface RuleOptions { * @see https://tanstack.com/query/latest/docs/eslint/no-unstable-deps */ '@tanstack/query/no-unstable-deps'?: Linter.RuleEntry<[]> + /** + * Ensures queryFn returns a non-undefined value + * @see https://tanstack.com/query/latest/docs/eslint/no-void-query-fn + */ + '@tanstack/query/no-void-query-fn'?: Linter.RuleEntry<[]> /** * Makes sure that QueryClient is stable * @see https://tanstack.com/query/latest/docs/eslint/stable-query-client @@ -663,7 +668,7 @@ export interface RuleOptions { * Disallow using code marked as `@deprecated` * @see https://typescript-eslint.io/rules/no-deprecated */ - '@typescript-eslint/no-deprecated'?: Linter.RuleEntry<[]> + '@typescript-eslint/no-deprecated'?: Linter.RuleEntry /** * Disallow duplicate class members * @see https://typescript-eslint.io/rules/no-dupe-class-members @@ -726,7 +731,7 @@ export interface RuleOptions { */ '@typescript-eslint/no-for-in-array'?: Linter.RuleEntry<[]> /** - * Disallow the use of `eval()`-like methods + * Disallow the use of `eval()`-like functions * @see https://typescript-eslint.io/rules/no-implied-eval */ '@typescript-eslint/no-implied-eval'?: Linter.RuleEntry<[]> @@ -781,6 +786,11 @@ export interface RuleOptions { * @see https://typescript-eslint.io/rules/no-misused-promises */ '@typescript-eslint/no-misused-promises'?: Linter.RuleEntry + /** + * Disallow using the spread operator when it might cause unexpected behavior + * @see https://typescript-eslint.io/rules/no-misused-spread + */ + '@typescript-eslint/no-misused-spread'?: Linter.RuleEntry /** * Disallow enums from having both number and string members * @see https://typescript-eslint.io/rules/no-mixed-enums @@ -887,6 +897,11 @@ export interface RuleOptions { * @see https://typescript-eslint.io/rules/no-unnecessary-type-constraint */ '@typescript-eslint/no-unnecessary-type-constraint'?: Linter.RuleEntry<[]> + /** + * Disallow conversion idioms when they do not change the type or value of the expression + * @see https://typescript-eslint.io/rules/no-unnecessary-type-conversion + */ + '@typescript-eslint/no-unnecessary-type-conversion'?: Linter.RuleEntry<[]> /** * Disallow type parameters that aren't used multiple times * @see https://typescript-eslint.io/rules/no-unnecessary-type-parameters @@ -1165,11 +1180,6 @@ export interface RuleOptions { * @see https://typescript-eslint.io/rules/use-unknown-in-catch-callback-variable */ '@typescript-eslint/use-unknown-in-catch-callback-variable'?: Linter.RuleEntry<[]> - /** - * Enforce getter and setter pairs in objects and classes - * @see https://eslint.org/docs/latest/rules/accessor-pairs - */ - 'accessor-pairs'?: Linter.RuleEntry /** * Having line breaks styles to object, array and named imports * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/consistent-chaining.md @@ -1225,46 +1235,6 @@ export interface RuleOptions { * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/top-level-function.md */ 'antfu/top-level-function'?: Linter.RuleEntry<[]> - /** - * Enforce linebreaks after opening and before closing array brackets - * @see https://eslint.org/docs/latest/rules/array-bracket-newline - * @deprecated - */ - 'array-bracket-newline'?: Linter.RuleEntry - /** - * Enforce consistent spacing inside array brackets - * @see https://eslint.org/docs/latest/rules/array-bracket-spacing - * @deprecated - */ - 'array-bracket-spacing'?: Linter.RuleEntry - /** - * Enforce `return` statements in callbacks of array methods - * @see https://eslint.org/docs/latest/rules/array-callback-return - */ - 'array-callback-return'?: Linter.RuleEntry - /** - * Enforce line breaks after each array element - * @see https://eslint.org/docs/latest/rules/array-element-newline - * @deprecated - */ - 'array-element-newline'?: Linter.RuleEntry - /** - * Require braces around arrow function bodies - * @see https://eslint.org/docs/latest/rules/arrow-body-style - */ - 'arrow-body-style'?: Linter.RuleEntry - /** - * Require parentheses around arrow function arguments - * @see https://eslint.org/docs/latest/rules/arrow-parens - * @deprecated - */ - 'arrow-parens'?: Linter.RuleEntry - /** - * Enforce consistent spacing before and after the arrow in arrow functions - * @see https://eslint.org/docs/latest/rules/arrow-spacing - * @deprecated - */ - 'arrow-spacing'?: Linter.RuleEntry /** * apply `jsx-a11y/alt-text` rule to Astro components * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/alt-text/ @@ -1530,135 +1500,11 @@ export interface RuleOptions { * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/valid-compile/ */ 'astro/valid-compile'?: Linter.RuleEntry<[]> - /** - * Enforce the use of variables within the scope they are defined - * @see https://eslint.org/docs/latest/rules/block-scoped-var - */ - 'block-scoped-var'?: Linter.RuleEntry<[]> - /** - * Disallow or enforce spaces inside of blocks after opening block and before closing block - * @see https://eslint.org/docs/latest/rules/block-spacing - * @deprecated - */ - 'block-spacing'?: Linter.RuleEntry - /** - * Enforce consistent brace style for blocks - * @see https://eslint.org/docs/latest/rules/brace-style - * @deprecated - */ - 'brace-style'?: Linter.RuleEntry - /** - * Require `return` statements after callbacks - * @see https://eslint.org/docs/latest/rules/callback-return - * @deprecated - */ - 'callback-return'?: Linter.RuleEntry - /** - * Enforce camelcase naming convention - * @see https://eslint.org/docs/latest/rules/camelcase - */ - 'camelcase'?: Linter.RuleEntry - /** - * Enforce or disallow capitalization of the first letter of a comment - * @see https://eslint.org/docs/latest/rules/capitalized-comments - */ - 'capitalized-comments'?: Linter.RuleEntry - /** - * Enforce that class methods utilize `this` - * @see https://eslint.org/docs/latest/rules/class-methods-use-this - */ - 'class-methods-use-this'?: Linter.RuleEntry - /** - * Require or disallow trailing commas - * @see https://eslint.org/docs/latest/rules/comma-dangle - * @deprecated - */ - 'comma-dangle'?: Linter.RuleEntry - /** - * Enforce consistent spacing before and after commas - * @see https://eslint.org/docs/latest/rules/comma-spacing - * @deprecated - */ - 'comma-spacing'?: Linter.RuleEntry - /** - * Enforce consistent comma style - * @see https://eslint.org/docs/latest/rules/comma-style - * @deprecated - */ - 'comma-style'?: Linter.RuleEntry /** * Ensure cross-browser API compatibility * @see https://github.com/amilajack/eslint-plugin-compat/blob/master/docs/rules/compat.md */ 'compat/compat'?: Linter.RuleEntry - /** - * Enforce a maximum cyclomatic complexity allowed in a program - * @see https://eslint.org/docs/latest/rules/complexity - */ - 'complexity'?: Linter.RuleEntry - /** - * Enforce consistent spacing inside computed property brackets - * @see https://eslint.org/docs/latest/rules/computed-property-spacing - * @deprecated - */ - 'computed-property-spacing'?: Linter.RuleEntry - /** - * Require `return` statements to either always or never specify values - * @see https://eslint.org/docs/latest/rules/consistent-return - */ - 'consistent-return'?: Linter.RuleEntry - /** - * Enforce consistent naming when capturing the current execution context - * @see https://eslint.org/docs/latest/rules/consistent-this - */ - 'consistent-this'?: Linter.RuleEntry - /** - * Require `super()` calls in constructors - * @see https://eslint.org/docs/latest/rules/constructor-super - */ - 'constructor-super'?: Linter.RuleEntry<[]> - /** - * Enforce consistent brace style for all control statements - * @see https://eslint.org/docs/latest/rules/curly - */ - 'curly'?: Linter.RuleEntry - /** - * Require `default` cases in `switch` statements - * @see https://eslint.org/docs/latest/rules/default-case - */ - 'default-case'?: Linter.RuleEntry - /** - * Enforce `default` clauses in switch statements to be last - * @see https://eslint.org/docs/latest/rules/default-case-last - */ - 'default-case-last'?: Linter.RuleEntry<[]> - /** - * Enforce default parameters to be last - * @see https://eslint.org/docs/latest/rules/default-param-last - */ - 'default-param-last'?: Linter.RuleEntry<[]> - /** - * Enforce consistent newlines before and after dots - * @see https://eslint.org/docs/latest/rules/dot-location - * @deprecated - */ - 'dot-location'?: Linter.RuleEntry - /** - * Enforce dot notation whenever possible - * @see https://eslint.org/docs/latest/rules/dot-notation - */ - 'dot-notation'?: Linter.RuleEntry - /** - * Require or disallow newline at the end of files - * @see https://eslint.org/docs/latest/rules/eol-last - * @deprecated - */ - 'eol-last'?: Linter.RuleEntry - /** - * Require the use of `===` and `!==` - * @see https://eslint.org/docs/latest/rules/eqeqeq - */ - 'eqeqeq'?: Linter.RuleEntry /** * require a `eslint-enable` comment for every `eslint-disable` comment * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/disable-enable-pair.html @@ -1704,11 +1550,6 @@ export interface RuleOptions { * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/require-description.html */ 'eslint-comments/require-description'?: Linter.RuleEntry - /** - * Enforce `for` loop update clause moving the counter in the right direction - * @see https://eslint.org/docs/latest/rules/for-direction - */ - 'for-direction'?: Linter.RuleEntry<[]> /** * Use dprint to format code */ @@ -1717,347 +1558,237 @@ export interface RuleOptions { * Use Prettier to format code */ 'format/prettier'?: Linter.RuleEntry - /** - * Require or disallow spacing between function identifiers and their invocations - * @see https://eslint.org/docs/latest/rules/func-call-spacing - * @deprecated - */ - 'func-call-spacing'?: Linter.RuleEntry - /** - * Require function names to match the name of the variable or property to which they are assigned - * @see https://eslint.org/docs/latest/rules/func-name-matching - */ - 'func-name-matching'?: Linter.RuleEntry - /** - * Require or disallow named `function` expressions - * @see https://eslint.org/docs/latest/rules/func-names - */ - 'func-names'?: Linter.RuleEntry - /** - * Enforce the consistent use of either `function` declarations or expressions assigned to variables - * @see https://eslint.org/docs/latest/rules/func-style - */ - 'func-style'?: Linter.RuleEntry - /** - * Enforce line breaks between arguments of a function call - * @see https://eslint.org/docs/latest/rules/function-call-argument-newline - * @deprecated - */ - 'function-call-argument-newline'?: Linter.RuleEntry - /** - * Enforce consistent line breaks inside function parentheses - * @see https://eslint.org/docs/latest/rules/function-paren-newline - * @deprecated - */ - 'function-paren-newline'?: Linter.RuleEntry - /** - * Enforce consistent spacing around `*` operators in generator functions - * @see https://eslint.org/docs/latest/rules/generator-star-spacing - * @deprecated - */ - 'generator-star-spacing'?: Linter.RuleEntry - /** - * Enforce `return` statements in getters - * @see https://eslint.org/docs/latest/rules/getter-return - */ - 'getter-return'?: Linter.RuleEntry - /** - * Require `require()` calls to be placed at top-level module scope - * @see https://eslint.org/docs/latest/rules/global-require - * @deprecated - */ - 'global-require'?: Linter.RuleEntry<[]> - /** - * Require grouped accessor pairs in object literals and classes - * @see https://eslint.org/docs/latest/rules/grouped-accessor-pairs - */ - 'grouped-accessor-pairs'?: Linter.RuleEntry - /** - * Require `for-in` loops to include an `if` statement - * @see https://eslint.org/docs/latest/rules/guard-for-in - */ - 'guard-for-in'?: Linter.RuleEntry<[]> - /** - * Require error handling in callbacks - * @see https://eslint.org/docs/latest/rules/handle-callback-err - * @deprecated - */ - 'handle-callback-err'?: Linter.RuleEntry - /** - * Disallow specified identifiers - * @see https://eslint.org/docs/latest/rules/id-blacklist - * @deprecated - */ - 'id-blacklist'?: Linter.RuleEntry - /** - * Disallow specified identifiers - * @see https://eslint.org/docs/latest/rules/id-denylist - */ - 'id-denylist'?: Linter.RuleEntry - /** - * Enforce minimum and maximum identifier lengths - * @see https://eslint.org/docs/latest/rules/id-length - */ - 'id-length'?: Linter.RuleEntry - /** - * Require identifiers to match a specified regular expression - * @see https://eslint.org/docs/latest/rules/id-match - */ - 'id-match'?: Linter.RuleEntry - /** - * Enforce the location of arrow function bodies - * @see https://eslint.org/docs/latest/rules/implicit-arrow-linebreak - * @deprecated - */ - 'implicit-arrow-linebreak'?: Linter.RuleEntry /** * Enforce or ban the use of inline type-only markers for named imports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/consistent-type-specifier-style.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/consistent-type-specifier-style.md */ 'import/consistent-type-specifier-style'?: Linter.RuleEntry /** * Ensure a default export is present, given a default import. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/default.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/default.md */ 'import/default'?: Linter.RuleEntry<[]> /** * Enforce a leading comment with the webpackChunkName for dynamic imports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/dynamic-import-chunkname.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/dynamic-import-chunkname.md */ 'import/dynamic-import-chunkname'?: Linter.RuleEntry /** * Forbid any invalid exports, i.e. re-export of the same name. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/export.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/export.md */ 'import/export'?: Linter.RuleEntry<[]> /** * Ensure all exports appear after other statements. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/exports-last.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/exports-last.md */ 'import/exports-last'?: Linter.RuleEntry<[]> /** * Ensure consistent use of file extension within the import path. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/extensions.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/extensions.md */ 'import/extensions'?: Linter.RuleEntry /** * Ensure all imports appear before other statements. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/first.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/first.md */ 'import/first'?: Linter.RuleEntry /** * Prefer named exports to be grouped together in a single export declaration. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/group-exports.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/group-exports.md */ 'import/group-exports'?: Linter.RuleEntry<[]> /** * Replaced by `import-x/first`. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/imports-first.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/imports-first.md * @deprecated */ 'import/imports-first'?: Linter.RuleEntry /** * Enforce the maximum number of dependencies a module can have. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/max-dependencies.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/max-dependencies.md */ 'import/max-dependencies'?: Linter.RuleEntry /** * Ensure named imports correspond to a named export in the remote file. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/named.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/named.md */ 'import/named'?: Linter.RuleEntry /** * Ensure imported namespaces contain dereferenced properties as they are dereferenced. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/namespace.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/namespace.md */ 'import/namespace'?: Linter.RuleEntry /** * Enforce a newline after import statements. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/newline-after-import.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/newline-after-import.md */ 'import/newline-after-import'?: Linter.RuleEntry /** * Forbid import of modules using absolute paths. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-absolute-path.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-absolute-path.md */ 'import/no-absolute-path'?: Linter.RuleEntry /** * Forbid AMD `require` and `define` calls. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-amd.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-amd.md */ 'import/no-amd'?: Linter.RuleEntry<[]> /** * Forbid anonymous values as default exports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-anonymous-default-export.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-anonymous-default-export.md */ 'import/no-anonymous-default-export'?: Linter.RuleEntry /** * Forbid CommonJS `require` calls and `module.exports` or `exports.*`. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-commonjs.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-commonjs.md */ 'import/no-commonjs'?: Linter.RuleEntry /** * Forbid a module from importing a module with a dependency path back to itself. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-cycle.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-cycle.md */ 'import/no-cycle'?: Linter.RuleEntry /** * Forbid default exports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-default-export.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-default-export.md */ 'import/no-default-export'?: Linter.RuleEntry<[]> /** * Forbid imported names marked with `@deprecated` documentation tag. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-deprecated.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-deprecated.md */ 'import/no-deprecated'?: Linter.RuleEntry<[]> /** * Forbid repeated import of the same module in multiple places. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-duplicates.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-duplicates.md */ 'import/no-duplicates'?: Linter.RuleEntry /** * Forbid `require()` calls with expressions. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-dynamic-require.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-dynamic-require.md */ 'import/no-dynamic-require'?: Linter.RuleEntry /** * Forbid empty named import blocks. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-empty-named-blocks.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-empty-named-blocks.md */ 'import/no-empty-named-blocks'?: Linter.RuleEntry<[]> /** * Forbid the use of extraneous packages. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-extraneous-dependencies.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-extraneous-dependencies.md */ 'import/no-extraneous-dependencies'?: Linter.RuleEntry /** * Forbid import statements with CommonJS module.exports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-import-module-exports.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-import-module-exports.md */ 'import/no-import-module-exports'?: Linter.RuleEntry /** * Forbid importing the submodules of other modules. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-internal-modules.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-internal-modules.md */ 'import/no-internal-modules'?: Linter.RuleEntry /** * Forbid the use of mutable exports with `var` or `let`. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-mutable-exports.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-mutable-exports.md */ 'import/no-mutable-exports'?: Linter.RuleEntry<[]> /** * Forbid use of exported name as identifier of default export. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-named-as-default.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-named-as-default.md */ 'import/no-named-as-default'?: Linter.RuleEntry<[]> /** * Forbid use of exported name as property of default export. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-named-as-default-member.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-named-as-default-member.md */ 'import/no-named-as-default-member'?: Linter.RuleEntry<[]> /** * Forbid named default exports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-named-default.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-named-default.md */ 'import/no-named-default'?: Linter.RuleEntry<[]> /** * Forbid named exports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-named-export.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-named-export.md */ 'import/no-named-export'?: Linter.RuleEntry<[]> /** * Forbid namespace (a.k.a. "wildcard" `*`) imports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-namespace.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-namespace.md */ 'import/no-namespace'?: Linter.RuleEntry /** * Forbid Node.js builtin modules. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-nodejs-modules.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-nodejs-modules.md */ 'import/no-nodejs-modules'?: Linter.RuleEntry /** * Forbid importing packages through relative paths. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-relative-packages.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-relative-packages.md */ 'import/no-relative-packages'?: Linter.RuleEntry /** * Forbid importing modules from parent directories. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-relative-parent-imports.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-relative-parent-imports.md */ 'import/no-relative-parent-imports'?: Linter.RuleEntry /** * Forbid importing a default export by a different name. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-rename-default.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-rename-default.md */ 'import/no-rename-default'?: Linter.RuleEntry /** * Enforce which files can be imported in a given folder. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-restricted-paths.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-restricted-paths.md */ 'import/no-restricted-paths'?: Linter.RuleEntry /** * Forbid a module from importing itself. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-self-import.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-self-import.md */ 'import/no-self-import'?: Linter.RuleEntry<[]> /** * Forbid unassigned imports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-unassigned-import.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-unassigned-import.md */ 'import/no-unassigned-import'?: Linter.RuleEntry /** * Ensure imports point to a file/module that can be resolved. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-unresolved.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-unresolved.md */ 'import/no-unresolved'?: Linter.RuleEntry /** * Forbid modules without exports, or exports without matching import in another module. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-unused-modules.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-unused-modules.md */ 'import/no-unused-modules'?: Linter.RuleEntry /** * Forbid unnecessary path segments in import and require statements. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-useless-path-segments.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-useless-path-segments.md */ 'import/no-useless-path-segments'?: Linter.RuleEntry /** * Forbid webpack loader syntax in imports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/no-webpack-loader-syntax.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-webpack-loader-syntax.md */ 'import/no-webpack-loader-syntax'?: Linter.RuleEntry<[]> /** * Enforce a convention in module import order. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/order.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/order.md */ 'import/order'?: Linter.RuleEntry /** * Prefer a default export if module exports a single name or multiple names. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/prefer-default-export.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/prefer-default-export.md */ 'import/prefer-default-export'?: Linter.RuleEntry /** * Forbid potentially ambiguous parse goal (`script` vs. `module`). - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.6.1/docs/rules/unambiguous.md + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/unambiguous.md */ 'import/unambiguous'?: Linter.RuleEntry<[]> - /** - * Enforce consistent indentation - * @see https://eslint.org/docs/latest/rules/indent - * @deprecated - */ - 'indent'?: Linter.RuleEntry - /** - * Enforce consistent indentation - * @see https://eslint.org/docs/latest/rules/indent-legacy - * @deprecated - */ - 'indent-legacy'?: Linter.RuleEntry - /** - * Require or disallow initialization in variable declarations - * @see https://eslint.org/docs/latest/rules/init-declarations - */ - 'init-declarations'?: Linter.RuleEntry /** * Checks that `@access` tags have a valid value. * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-access.md#repos-sticky-header @@ -2512,7 +2243,7 @@ export interface RuleOptions { * disallow unnecessary escape usage * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-useless-escape.html */ - 'jsonc/no-useless-escape'?: Linter.RuleEntry<[]> + 'jsonc/no-useless-escape'?: Linter.RuleEntry /** * enforce consistent line breaks inside braces * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/object-curly-newline.html @@ -2762,145 +2493,40 @@ export interface RuleOptions { */ 'jsx-a11y/tabindex-no-positive'?: Linter.RuleEntry /** - * Enforce the consistent use of either double or single quotes in JSX attributes - * @see https://eslint.org/docs/latest/rules/jsx-quotes - * @deprecated - */ - 'jsx-quotes'?: Linter.RuleEntry - /** - * Enforce consistent spacing between keys and values in object literal properties - * @see https://eslint.org/docs/latest/rules/key-spacing - * @deprecated - */ - 'key-spacing'?: Linter.RuleEntry - /** - * Enforce consistent spacing before and after keywords - * @see https://eslint.org/docs/latest/rules/keyword-spacing - * @deprecated - */ - 'keyword-spacing'?: Linter.RuleEntry - /** - * Enforce position of line comments - * @see https://eslint.org/docs/latest/rules/line-comment-position - * @deprecated - */ - 'line-comment-position'?: Linter.RuleEntry - /** - * Enforce consistent linebreak style - * @see https://eslint.org/docs/latest/rules/linebreak-style - * @deprecated - */ - 'linebreak-style'?: Linter.RuleEntry - /** - * Require empty lines around comments - * @see https://eslint.org/docs/latest/rules/lines-around-comment - * @deprecated - */ - 'lines-around-comment'?: Linter.RuleEntry - /** - * Require or disallow newlines around directives - * @see https://eslint.org/docs/latest/rules/lines-around-directive - * @deprecated - */ - 'lines-around-directive'?: Linter.RuleEntry - /** - * Require or disallow an empty line between class members - * @see https://eslint.org/docs/latest/rules/lines-between-class-members - * @deprecated - */ - 'lines-between-class-members'?: Linter.RuleEntry - /** - * Require or disallow logical assignment operator shorthand - * @see https://eslint.org/docs/latest/rules/logical-assignment-operators - */ - 'logical-assignment-operators'?: Linter.RuleEntry - /** - * Require languages for fenced code blocks. + * Require languages for fenced code blocks + * @see https://github.com/eslint/markdown/blob/main/docs/rules/fenced-code-language.md */ 'markdown/fenced-code-language'?: Linter.RuleEntry /** - * Enforce heading levels increment by one. + * Enforce heading levels increment by one + * @see https://github.com/eslint/markdown/blob/main/docs/rules/heading-increment.md */ 'markdown/heading-increment'?: Linter.RuleEntry<[]> /** - * Disallow duplicate headings in the same document. + * Disallow duplicate headings in the same document + * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-duplicate-headings.md */ 'markdown/no-duplicate-headings'?: Linter.RuleEntry<[]> /** - * Disallow empty links. + * Disallow empty links + * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-empty-links.md */ 'markdown/no-empty-links'?: Linter.RuleEntry<[]> /** - * Disallow HTML tags. + * Disallow HTML tags + * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-html.md */ 'markdown/no-html'?: Linter.RuleEntry /** - * Disallow invalid label references. + * Disallow invalid label references + * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-invalid-label-refs.md */ 'markdown/no-invalid-label-refs'?: Linter.RuleEntry<[]> /** - * Disallow missing label references. + * Disallow missing label references + * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-missing-label-refs.md */ 'markdown/no-missing-label-refs'?: Linter.RuleEntry<[]> - /** - * Enforce a maximum number of classes per file - * @see https://eslint.org/docs/latest/rules/max-classes-per-file - */ - 'max-classes-per-file'?: Linter.RuleEntry - /** - * Enforce a maximum depth that blocks can be nested - * @see https://eslint.org/docs/latest/rules/max-depth - */ - 'max-depth'?: Linter.RuleEntry - /** - * Enforce a maximum line length - * @see https://eslint.org/docs/latest/rules/max-len - * @deprecated - */ - 'max-len'?: Linter.RuleEntry - /** - * Enforce a maximum number of lines per file - * @see https://eslint.org/docs/latest/rules/max-lines - */ - 'max-lines'?: Linter.RuleEntry - /** - * Enforce a maximum number of lines of code in a function - * @see https://eslint.org/docs/latest/rules/max-lines-per-function - */ - 'max-lines-per-function'?: Linter.RuleEntry - /** - * Enforce a maximum depth that callbacks can be nested - * @see https://eslint.org/docs/latest/rules/max-nested-callbacks - */ - 'max-nested-callbacks'?: Linter.RuleEntry - /** - * Enforce a maximum number of parameters in function definitions - * @see https://eslint.org/docs/latest/rules/max-params - */ - 'max-params'?: Linter.RuleEntry - /** - * Enforce a maximum number of statements allowed in function blocks - * @see https://eslint.org/docs/latest/rules/max-statements - */ - 'max-statements'?: Linter.RuleEntry - /** - * Enforce a maximum number of statements allowed per line - * @see https://eslint.org/docs/latest/rules/max-statements-per-line - * @deprecated - */ - 'max-statements-per-line'?: Linter.RuleEntry - /** - * Enforce a particular style for multiline comments - * @see https://eslint.org/docs/latest/rules/multiline-comment-style - * @deprecated - */ - 'multiline-comment-style'?: Linter.RuleEntry - /** - * Enforce newlines between operands of ternary expressions - * @see https://eslint.org/docs/latest/rules/multiline-ternary - * @deprecated - */ - 'multiline-ternary'?: Linter.RuleEntry /** * require `return` statements after callbacks * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/callback-return.md @@ -3104,7724 +2730,6350 @@ export interface RuleOptions { */ 'n/shebang'?: Linter.RuleEntry /** - * Require constructor names to begin with a capital letter - * @see https://eslint.org/docs/latest/rules/new-cap + * Do not use for...of loop with array, use for loop instead, because for loop is faster than for...of loop + * @see https://www.npmjs.com/package/eslint-plugin-not-for-of-array */ - 'new-cap'?: Linter.RuleEntry + 'no-for-of-array/no-for-of-array'?: Linter.RuleEntry<[]> /** - * Enforce or disallow parentheses when invoking a constructor with no arguments - * @see https://eslint.org/docs/latest/rules/new-parens - * @deprecated + * An eslint rule that does pattern matching against an entire file */ - 'new-parens'?: Linter.RuleEntry + 'no-secrets/no-pattern-match'?: Linter.RuleEntry<[]> /** - * Require or disallow an empty line after variable declarations - * @see https://eslint.org/docs/latest/rules/newline-after-var - * @deprecated + * An eslint rule that looks for possible leftover secrets in code */ - 'newline-after-var'?: Linter.RuleEntry + 'no-secrets/no-secrets'?: Linter.RuleEntry<[]> /** - * Require an empty line before `return` statements - * @see https://eslint.org/docs/latest/rules/newline-before-return - * @deprecated + * ESLint rule to disallow unsanitized method calls + * @see https://github.com/mozilla/eslint-plugin-no-unsanitized/tree/master/docs/rules/method.md */ - 'newline-before-return'?: Linter.RuleEntry<[]> + 'no-unsanitized/method'?: Linter.RuleEntry /** - * Require a newline after each call in a method chain - * @see https://eslint.org/docs/latest/rules/newline-per-chained-call - * @deprecated + * ESLint rule to disallow unsanitized property assignment + * @see https://github.com/mozilla/eslint-plugin-no-unsanitized/tree/master/docs/rules/property.md */ - 'newline-per-chained-call'?: Linter.RuleEntry + 'no-unsanitized/property'?: Linter.RuleEntry /** - * Disallow the use of `alert`, `confirm`, and `prompt` - * @see https://eslint.org/docs/latest/rules/no-alert + * Enforce sorted arrays before include method. + * @see https://perfectionist.dev/rules/sort-array-includes */ - 'no-alert'?: Linter.RuleEntry<[]> + 'perfectionist/sort-array-includes'?: Linter.RuleEntry /** - * Disallow `Array` constructors - * @see https://eslint.org/docs/latest/rules/no-array-constructor + * Enforce sorted classes. + * @see https://perfectionist.dev/rules/sort-classes */ - 'no-array-constructor'?: Linter.RuleEntry<[]> + 'perfectionist/sort-classes'?: Linter.RuleEntry /** - * Disallow using an async function as a Promise executor - * @see https://eslint.org/docs/latest/rules/no-async-promise-executor + * Enforce sorted decorators. + * @see https://perfectionist.dev/rules/sort-decorators */ - 'no-async-promise-executor'?: Linter.RuleEntry<[]> + 'perfectionist/sort-decorators'?: Linter.RuleEntry /** - * Disallow `await` inside of loops - * @see https://eslint.org/docs/latest/rules/no-await-in-loop + * Enforce sorted TypeScript enums. + * @see https://perfectionist.dev/rules/sort-enums */ - 'no-await-in-loop'?: Linter.RuleEntry<[]> + 'perfectionist/sort-enums'?: Linter.RuleEntry /** - * Disallow bitwise operators - * @see https://eslint.org/docs/latest/rules/no-bitwise + * Enforce sorted exports. + * @see https://perfectionist.dev/rules/sort-exports */ - 'no-bitwise'?: Linter.RuleEntry + 'perfectionist/sort-exports'?: Linter.RuleEntry /** - * Disallow use of the `Buffer()` constructor - * @see https://eslint.org/docs/latest/rules/no-buffer-constructor - * @deprecated + * Enforce sorted heritage clauses. + * @see https://perfectionist.dev/rules/sort-heritage-clauses */ - 'no-buffer-constructor'?: Linter.RuleEntry<[]> + 'perfectionist/sort-heritage-clauses'?: Linter.RuleEntry /** - * Disallow the use of `arguments.caller` or `arguments.callee` - * @see https://eslint.org/docs/latest/rules/no-caller + * Enforce sorted imports. + * @see https://perfectionist.dev/rules/sort-imports */ - 'no-caller'?: Linter.RuleEntry<[]> + 'perfectionist/sort-imports'?: Linter.RuleEntry /** - * Disallow lexical declarations in case clauses - * @see https://eslint.org/docs/latest/rules/no-case-declarations + * Enforce sorted interface properties. + * @see https://perfectionist.dev/rules/sort-interfaces */ - 'no-case-declarations'?: Linter.RuleEntry<[]> + 'perfectionist/sort-interfaces'?: Linter.RuleEntry /** - * Disallow `catch` clause parameters from shadowing variables in the outer scope - * @see https://eslint.org/docs/latest/rules/no-catch-shadow - * @deprecated + * Enforce sorted intersection types. + * @see https://perfectionist.dev/rules/sort-intersection-types */ - 'no-catch-shadow'?: Linter.RuleEntry<[]> + 'perfectionist/sort-intersection-types'?: Linter.RuleEntry /** - * Disallow reassigning class members - * @see https://eslint.org/docs/latest/rules/no-class-assign + * Enforce sorted JSX props. + * @see https://perfectionist.dev/rules/sort-jsx-props */ - 'no-class-assign'?: Linter.RuleEntry<[]> + 'perfectionist/sort-jsx-props'?: Linter.RuleEntry /** - * Disallow comparing against `-0` - * @see https://eslint.org/docs/latest/rules/no-compare-neg-zero + * Enforce sorted Map elements. + * @see https://perfectionist.dev/rules/sort-maps */ - 'no-compare-neg-zero'?: Linter.RuleEntry<[]> + 'perfectionist/sort-maps'?: Linter.RuleEntry /** - * Disallow assignment operators in conditional expressions - * @see https://eslint.org/docs/latest/rules/no-cond-assign + * Enforce sorted modules. + * @see https://perfectionist.dev/rules/sort-modules */ - 'no-cond-assign'?: Linter.RuleEntry + 'perfectionist/sort-modules'?: Linter.RuleEntry /** - * Disallow arrow functions where they could be confused with comparisons - * @see https://eslint.org/docs/latest/rules/no-confusing-arrow - * @deprecated + * Enforce sorted named exports. + * @see https://perfectionist.dev/rules/sort-named-exports */ - 'no-confusing-arrow'?: Linter.RuleEntry + 'perfectionist/sort-named-exports'?: Linter.RuleEntry /** - * Disallow the use of `console` - * @see https://eslint.org/docs/latest/rules/no-console + * Enforce sorted named imports. + * @see https://perfectionist.dev/rules/sort-named-imports */ - 'no-console'?: Linter.RuleEntry + 'perfectionist/sort-named-imports'?: Linter.RuleEntry /** - * Disallow reassigning `const` variables - * @see https://eslint.org/docs/latest/rules/no-const-assign + * Enforce sorted object types. + * @see https://perfectionist.dev/rules/sort-object-types */ - 'no-const-assign'?: Linter.RuleEntry<[]> + 'perfectionist/sort-object-types'?: Linter.RuleEntry /** - * Disallow expressions where the operation doesn't affect the value - * @see https://eslint.org/docs/latest/rules/no-constant-binary-expression + * Enforce sorted objects. + * @see https://perfectionist.dev/rules/sort-objects */ - 'no-constant-binary-expression'?: Linter.RuleEntry<[]> + 'perfectionist/sort-objects'?: Linter.RuleEntry /** - * Disallow constant expressions in conditions - * @see https://eslint.org/docs/latest/rules/no-constant-condition + * Enforce sorted sets. + * @see https://perfectionist.dev/rules/sort-sets */ - 'no-constant-condition'?: Linter.RuleEntry + 'perfectionist/sort-sets'?: Linter.RuleEntry /** - * Disallow returning value from constructor - * @see https://eslint.org/docs/latest/rules/no-constructor-return + * Enforce sorted switch cases. + * @see https://perfectionist.dev/rules/sort-switch-case */ - 'no-constructor-return'?: Linter.RuleEntry<[]> + 'perfectionist/sort-switch-case'?: Linter.RuleEntry /** - * Disallow `continue` statements - * @see https://eslint.org/docs/latest/rules/no-continue + * Enforce sorted union types. + * @see https://perfectionist.dev/rules/sort-union-types */ - 'no-continue'?: Linter.RuleEntry<[]> + 'perfectionist/sort-union-types'?: Linter.RuleEntry /** - * Disallow control characters in regular expressions - * @see https://eslint.org/docs/latest/rules/no-control-regex + * Enforce sorted variable declarations. + * @see https://perfectionist.dev/rules/sort-variable-declarations */ - 'no-control-regex'?: Linter.RuleEntry<[]> + 'perfectionist/sort-variable-declarations'?: Linter.RuleEntry /** - * Disallow the use of `debugger` - * @see https://eslint.org/docs/latest/rules/no-debugger + * Enforce assertion to be made in a test body + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/expect-expect.md */ - 'no-debugger'?: Linter.RuleEntry<[]> + 'playwright/expect-expect'?: Linter.RuleEntry /** - * Disallow deleting variables - * @see https://eslint.org/docs/latest/rules/no-delete-var + * Enforces a maximum depth to nested describe calls + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/max-nested-describe.md */ - 'no-delete-var'?: Linter.RuleEntry<[]> + 'playwright/max-nested-describe'?: Linter.RuleEntry /** - * Disallow equal signs explicitly at the beginning of regular expressions - * @see https://eslint.org/docs/latest/rules/no-div-regex + * Identify false positives when async Playwright APIs are not properly awaited. */ - 'no-div-regex'?: Linter.RuleEntry<[]> + 'playwright/missing-playwright-await'?: Linter.RuleEntry /** - * Disallow duplicate arguments in `function` definitions - * @see https://eslint.org/docs/latest/rules/no-dupe-args + * Disallow conditional logic in tests + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-conditional-in-test.md */ - 'no-dupe-args'?: Linter.RuleEntry<[]> + 'playwright/no-conditional-in-test'?: Linter.RuleEntry<[]> /** - * Disallow duplicate class members - * @see https://eslint.org/docs/latest/rules/no-dupe-class-members + * The use of ElementHandle is discouraged, use Locator instead + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-element-handle.md */ - 'no-dupe-class-members'?: Linter.RuleEntry<[]> + 'playwright/no-element-handle'?: Linter.RuleEntry<[]> /** - * Disallow duplicate conditions in if-else-if chains - * @see https://eslint.org/docs/latest/rules/no-dupe-else-if + * The use of `page.$eval` and `page.$$eval` are discouraged, use `locator.evaluate` or `locator.evaluateAll` instead + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-eval.md */ - 'no-dupe-else-if'?: Linter.RuleEntry<[]> + 'playwright/no-eval'?: Linter.RuleEntry<[]> /** - * Disallow duplicate keys in object literals - * @see https://eslint.org/docs/latest/rules/no-dupe-keys + * Prevent usage of `.only()` focus test annotation + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-focused-test.md */ - 'no-dupe-keys'?: Linter.RuleEntry<[]> + 'playwright/no-focused-test'?: Linter.RuleEntry<[]> /** - * Disallow duplicate case labels - * @see https://eslint.org/docs/latest/rules/no-duplicate-case + * Prevent usage of `{ force: true }` option. + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-force-option.md */ - 'no-duplicate-case'?: Linter.RuleEntry<[]> + 'playwright/no-force-option'?: Linter.RuleEntry<[]> /** - * Disallow duplicate module imports - * @see https://eslint.org/docs/latest/rules/no-duplicate-imports + * Disallow nested `test.step()` methods + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-nested-step.md */ - 'no-duplicate-imports'?: Linter.RuleEntry + 'playwright/no-nested-step'?: Linter.RuleEntry<[]> /** - * Disallow `else` blocks after `return` statements in `if` statements - * @see https://eslint.org/docs/latest/rules/no-else-return + * Prevent usage of the networkidle option */ - 'no-else-return'?: Linter.RuleEntry + 'playwright/no-networkidle'?: Linter.RuleEntry<[]> /** - * Disallow empty block statements - * @see https://eslint.org/docs/latest/rules/no-empty + * Disallow usage of nth methods + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-nth-methods.md */ - 'no-empty'?: Linter.RuleEntry + 'playwright/no-nth-methods'?: Linter.RuleEntry<[]> /** - * Disallow empty character classes in regular expressions - * @see https://eslint.org/docs/latest/rules/no-empty-character-class + * Prevent usage of page.pause() */ - 'no-empty-character-class'?: Linter.RuleEntry<[]> + 'playwright/no-page-pause'?: Linter.RuleEntry<[]> /** - * Disallow empty functions - * @see https://eslint.org/docs/latest/rules/no-empty-function + * Disallows the usage of raw locators + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-raw-locators.md */ - 'no-empty-function'?: Linter.RuleEntry + 'playwright/no-raw-locators'?: Linter.RuleEntry<[]> /** - * Disallow empty destructuring patterns - * @see https://eslint.org/docs/latest/rules/no-empty-pattern + * Disallow specific matchers & modifiers + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-restricted-matchers.md */ - 'no-empty-pattern'?: Linter.RuleEntry + 'playwright/no-restricted-matchers'?: Linter.RuleEntry /** - * Disallow empty static blocks - * @see https://eslint.org/docs/latest/rules/no-empty-static-block + * Prevent usage of the `.skip()` skip test annotation. + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-skipped-test.md */ - 'no-empty-static-block'?: Linter.RuleEntry<[]> + 'playwright/no-skipped-test'?: Linter.RuleEntry /** - * Disallow `null` comparisons without type-checking operators - * @see https://eslint.org/docs/latest/rules/no-eq-null + * Disallow unnecessary awaits for Playwright methods */ - 'no-eq-null'?: Linter.RuleEntry<[]> + 'playwright/no-useless-await'?: Linter.RuleEntry<[]> /** - * Disallow the use of `eval()` - * @see https://eslint.org/docs/latest/rules/no-eval + * Disallow usage of 'not' matchers when a more specific matcher exists + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-useless-not.md */ - 'no-eval'?: Linter.RuleEntry + 'playwright/no-useless-not'?: Linter.RuleEntry<[]> /** - * Disallow reassigning exceptions in `catch` clauses - * @see https://eslint.org/docs/latest/rules/no-ex-assign + * Prevent usage of page.waitForTimeout() + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-wait-for-timeout.md */ - 'no-ex-assign'?: Linter.RuleEntry<[]> + 'playwright/no-wait-for-timeout'?: Linter.RuleEntry<[]> /** - * Disallow extending native types - * @see https://eslint.org/docs/latest/rules/no-extend-native + * Enforce lowercase test names + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-lowercase-title.md */ - 'no-extend-native'?: Linter.RuleEntry + 'playwright/prefer-lowercase-title'?: Linter.RuleEntry /** - * Disallow unnecessary calls to `.bind()` - * @see https://eslint.org/docs/latest/rules/no-extra-bind + * Suggest using `toStrictEqual()` + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-strict-equal.md */ - 'no-extra-bind'?: Linter.RuleEntry<[]> + 'playwright/prefer-strict-equal'?: Linter.RuleEntry<[]> /** - * Disallow unnecessary boolean casts - * @see https://eslint.org/docs/latest/rules/no-extra-boolean-cast + * Suggest using `toBe()` for primitive literals + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-to-be.md */ - 'no-extra-boolean-cast'?: Linter.RuleEntry + 'playwright/prefer-to-be'?: Linter.RuleEntry<[]> /** - * Disallow unnecessary labels - * @see https://eslint.org/docs/latest/rules/no-extra-label + * Suggest using toContain() + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-to-contain.md */ - 'no-extra-label'?: Linter.RuleEntry<[]> + 'playwright/prefer-to-contain'?: Linter.RuleEntry<[]> /** - * Disallow unnecessary parentheses - * @see https://eslint.org/docs/latest/rules/no-extra-parens - * @deprecated + * Suggest using `toHaveCount()` + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-to-have-count.md */ - 'no-extra-parens'?: Linter.RuleEntry + 'playwright/prefer-to-have-count'?: Linter.RuleEntry<[]> /** - * Disallow unnecessary semicolons - * @see https://eslint.org/docs/latest/rules/no-extra-semi - * @deprecated + * Suggest using `toHaveLength()` + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-to-have-length.md */ - 'no-extra-semi'?: Linter.RuleEntry<[]> + 'playwright/prefer-to-have-length'?: Linter.RuleEntry<[]> /** - * Disallow fallthrough of `case` statements - * @see https://eslint.org/docs/latest/rules/no-fallthrough + * Prefer web first assertions + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-web-first-assertions.md */ - 'no-fallthrough'?: Linter.RuleEntry + 'playwright/prefer-web-first-assertions'?: Linter.RuleEntry<[]> /** - * Disallow leading or trailing decimal points in numeric literals - * @see https://eslint.org/docs/latest/rules/no-floating-decimal - * @deprecated + * Require all assertions to use `expect.soft` + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/require-soft-assertions.md */ - 'no-floating-decimal'?: Linter.RuleEntry<[]> + 'playwright/require-soft-assertions'?: Linter.RuleEntry<[]> /** - * Do not use for...of loop with array, use for loop instead, because for loop is faster than for...of loop - * @see https://www.npmjs.com/package/eslint-plugin-not-for-of-array + * Require test cases and hooks to be inside a `test.describe` block + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/require-top-level-describe.md */ - 'no-for-of-array/no-for-of-array'?: Linter.RuleEntry<[]> + 'playwright/require-top-level-describe'?: Linter.RuleEntry /** - * Disallow reassigning `function` declarations - * @see https://eslint.org/docs/latest/rules/no-func-assign + * Enforce valid `expect()` usage + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/valid-expect.md */ - 'no-func-assign'?: Linter.RuleEntry<[]> + 'playwright/valid-expect'?: Linter.RuleEntry /** - * Disallow assignments to native objects or read-only global variables - * @see https://eslint.org/docs/latest/rules/no-global-assign + * Require returning inside each `then()` to create readable and reusable Promise chains. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/always-return.md */ - 'no-global-assign'?: Linter.RuleEntry + 'promise/always-return'?: Linter.RuleEntry /** - * Disallow shorthand type conversions - * @see https://eslint.org/docs/latest/rules/no-implicit-coercion + * Disallow creating `new` promises outside of utility libs (use [util.promisify][] instead). + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/avoid-new.md */ - 'no-implicit-coercion'?: Linter.RuleEntry + 'promise/avoid-new'?: Linter.RuleEntry<[]> /** - * Disallow declarations in the global scope - * @see https://eslint.org/docs/latest/rules/no-implicit-globals + * Enforce the use of `catch()` on un-returned promises. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/catch-or-return.md */ - 'no-implicit-globals'?: Linter.RuleEntry + 'promise/catch-or-return'?: Linter.RuleEntry /** - * Disallow the use of `eval()`-like methods - * @see https://eslint.org/docs/latest/rules/no-implied-eval + * Disallow calling `cb()` inside of a `then()` (use [util.callbackify][] instead). + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-callback-in-promise.md */ - 'no-implied-eval'?: Linter.RuleEntry<[]> + 'promise/no-callback-in-promise'?: Linter.RuleEntry /** - * Disallow assigning to imported bindings - * @see https://eslint.org/docs/latest/rules/no-import-assign + * Disallow creating new promises with paths that resolve multiple times. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-multiple-resolved.md */ - 'no-import-assign'?: Linter.RuleEntry<[]> + 'promise/no-multiple-resolved'?: Linter.RuleEntry<[]> /** - * Disallow inline comments after code - * @see https://eslint.org/docs/latest/rules/no-inline-comments + * Require creating a `Promise` constructor before using it in an ES5 environment. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-native.md */ - 'no-inline-comments'?: Linter.RuleEntry + 'promise/no-native'?: Linter.RuleEntry<[]> /** - * Disallow variable or `function` declarations in nested blocks - * @see https://eslint.org/docs/latest/rules/no-inner-declarations + * Disallow nested `then()` or `catch()` statements. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-nesting.md */ - 'no-inner-declarations'?: Linter.RuleEntry + 'promise/no-nesting'?: Linter.RuleEntry<[]> /** - * Disallow invalid regular expression strings in `RegExp` constructors - * @see https://eslint.org/docs/latest/rules/no-invalid-regexp + * Disallow calling `new` on a Promise static method. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-new-statics.md */ - 'no-invalid-regexp'?: Linter.RuleEntry + 'promise/no-new-statics'?: Linter.RuleEntry<[]> /** - * Disallow use of `this` in contexts where the value of `this` is `undefined` - * @see https://eslint.org/docs/latest/rules/no-invalid-this + * Disallow using promises inside of callbacks. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-promise-in-callback.md */ - 'no-invalid-this'?: Linter.RuleEntry + 'promise/no-promise-in-callback'?: Linter.RuleEntry<[]> /** - * Disallow irregular whitespace - * @see https://eslint.org/docs/latest/rules/no-irregular-whitespace + * Disallow return statements in `finally()`. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-return-in-finally.md */ - 'no-irregular-whitespace'?: Linter.RuleEntry + 'promise/no-return-in-finally'?: Linter.RuleEntry<[]> /** - * Disallow the use of the `__iterator__` property - * @see https://eslint.org/docs/latest/rules/no-iterator + * Disallow wrapping values in `Promise.resolve` or `Promise.reject` when not needed. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-return-wrap.md */ - 'no-iterator'?: Linter.RuleEntry<[]> + 'promise/no-return-wrap'?: Linter.RuleEntry /** - * Disallow labels that share a name with a variable - * @see https://eslint.org/docs/latest/rules/no-label-var + * Enforce consistent param names and ordering when creating new promises. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/param-names.md */ - 'no-label-var'?: Linter.RuleEntry<[]> + 'promise/param-names'?: Linter.RuleEntry /** - * Disallow labeled statements - * @see https://eslint.org/docs/latest/rules/no-labels + * Prefer `async`/`await` to the callback pattern. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/prefer-await-to-callbacks.md */ - 'no-labels'?: Linter.RuleEntry + 'promise/prefer-await-to-callbacks'?: Linter.RuleEntry<[]> /** - * Disallow unnecessary nested blocks - * @see https://eslint.org/docs/latest/rules/no-lone-blocks + * Prefer `await` to `then()`/`catch()`/`finally()` for reading Promise values. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/prefer-await-to-then.md */ - 'no-lone-blocks'?: Linter.RuleEntry<[]> + 'promise/prefer-await-to-then'?: Linter.RuleEntry /** - * Disallow `if` statements as the only statement in `else` blocks - * @see https://eslint.org/docs/latest/rules/no-lonely-if + * Prefer `catch` to `then(a, b)`/`then(null, b)` for handling errors. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/prefer-catch.md */ - 'no-lonely-if'?: Linter.RuleEntry<[]> + 'promise/prefer-catch'?: Linter.RuleEntry<[]> /** - * Disallow function declarations that contain unsafe references inside loop statements - * @see https://eslint.org/docs/latest/rules/no-loop-func + * Disallow use of non-standard Promise static methods. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/spec-only.md */ - 'no-loop-func'?: Linter.RuleEntry<[]> + 'promise/spec-only'?: Linter.RuleEntry /** - * Disallow literal numbers that lose precision - * @see https://eslint.org/docs/latest/rules/no-loss-of-precision + * Enforces the proper number of arguments are passed to Promise functions. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/valid-params.md */ - 'no-loss-of-precision'?: Linter.RuleEntry<[]> + 'promise/valid-params'?: Linter.RuleEntry /** - * Disallow magic numbers - * @see https://eslint.org/docs/latest/rules/no-magic-numbers + * Disallow `children` in void DOM elements. + * @see https://eslint-react.xyz/docs/rules/dom-no-void-elements-with-children */ - 'no-magic-numbers'?: Linter.RuleEntry + 'react-dom/no-children-in-void-dom-elements'?: Linter.RuleEntry<[]> /** - * Disallow characters which are made with multiple code points in character class syntax - * @see https://eslint.org/docs/latest/rules/no-misleading-character-class + * Disallow `dangerouslySetInnerHTML`. + * @see https://eslint-react.xyz/docs/rules/dom-no-dangerously-set-innerhtml */ - 'no-misleading-character-class'?: Linter.RuleEntry + 'react-dom/no-dangerously-set-innerhtml'?: Linter.RuleEntry<[]> /** - * Disallow mixed binary operators - * @see https://eslint.org/docs/latest/rules/no-mixed-operators - * @deprecated + * Disallow `dangerouslySetInnerHTML` and `children` at the same time. + * @see https://eslint-react.xyz/docs/rules/dom-no-dangerously-set-innerhtml-with-children */ - 'no-mixed-operators'?: Linter.RuleEntry + 'react-dom/no-dangerously-set-innerhtml-with-children'?: Linter.RuleEntry<[]> /** - * Disallow `require` calls to be mixed with regular variable declarations - * @see https://eslint.org/docs/latest/rules/no-mixed-requires - * @deprecated + * Disallow `findDOMNode`. + * @see https://eslint-react.xyz/docs/rules/dom-no-find-dom-node */ - 'no-mixed-requires'?: Linter.RuleEntry + 'react-dom/no-find-dom-node'?: Linter.RuleEntry<[]> /** - * Disallow mixed spaces and tabs for indentation - * @see https://eslint.org/docs/latest/rules/no-mixed-spaces-and-tabs - * @deprecated + * Disallow `flushSync`. + * @see https://eslint-react.xyz/docs/rules/dom-no-flush-sync */ - 'no-mixed-spaces-and-tabs'?: Linter.RuleEntry + 'react-dom/no-flush-sync'?: Linter.RuleEntry<[]> /** - * Disallow use of chained assignment expressions - * @see https://eslint.org/docs/latest/rules/no-multi-assign + * Replaces usages of `ReactDom.hydrate()` with `hydrateRoot()`. + * @see https://eslint-react.xyz/docs/rules/dom-no-hydrate */ - 'no-multi-assign'?: Linter.RuleEntry + 'react-dom/no-hydrate'?: Linter.RuleEntry<[]> /** - * Disallow multiple spaces - * @see https://eslint.org/docs/latest/rules/no-multi-spaces - * @deprecated + * Enforces explicit `type` attribute for `button` elements. + * @see https://eslint-react.xyz/docs/rules/dom-no-missing-button-type */ - 'no-multi-spaces'?: Linter.RuleEntry + 'react-dom/no-missing-button-type'?: Linter.RuleEntry<[]> /** - * Disallow multiline strings - * @see https://eslint.org/docs/latest/rules/no-multi-str + * Enforces explicit `sandbox` attribute for `iframe` elements. + * @see https://eslint-react.xyz/docs/rules/dom-no-missing-iframe-sandbox */ - 'no-multi-str'?: Linter.RuleEntry<[]> + 'react-dom/no-missing-iframe-sandbox'?: Linter.RuleEntry<[]> /** - * Disallow multiple empty lines - * @see https://eslint.org/docs/latest/rules/no-multiple-empty-lines - * @deprecated + * Enforces the absence of a `namespace` in React elements. + * @see https://eslint-react.xyz/docs/rules/dom-no-namespace */ - 'no-multiple-empty-lines'?: Linter.RuleEntry + 'react-dom/no-namespace'?: Linter.RuleEntry<[]> /** - * Disallow assignments to native objects or read-only global variables - * @see https://eslint.org/docs/latest/rules/no-native-reassign - * @deprecated + * Replaces usages of `ReactDom.render()` with `createRoot(node).render()`. + * @see https://eslint-react.xyz/docs/rules/dom-no-render */ - 'no-native-reassign'?: Linter.RuleEntry + 'react-dom/no-render'?: Linter.RuleEntry<[]> /** - * Disallow negated conditions - * @see https://eslint.org/docs/latest/rules/no-negated-condition + * Disallow the return value of `ReactDOM.render`. + * @see https://eslint-react.xyz/docs/rules/dom-no-render-return-value */ - 'no-negated-condition'?: Linter.RuleEntry<[]> + 'react-dom/no-render-return-value'?: Linter.RuleEntry<[]> /** - * Disallow negating the left operand in `in` expressions - * @see https://eslint.org/docs/latest/rules/no-negated-in-lhs - * @deprecated + * Disallow `javascript:` URLs as attribute values. + * @see https://eslint-react.xyz/docs/rules/dom-no-script-url */ - 'no-negated-in-lhs'?: Linter.RuleEntry<[]> + 'react-dom/no-script-url'?: Linter.RuleEntry<[]> /** - * Disallow nested ternary expressions - * @see https://eslint.org/docs/latest/rules/no-nested-ternary + * Disallow unknown `DOM` property. + * @see https://eslint-react.xyz/docs/rules/dom-no-unknown-property */ - 'no-nested-ternary'?: Linter.RuleEntry<[]> + 'react-dom/no-unknown-property'?: Linter.RuleEntry /** - * Disallow `new` operators outside of assignments or comparisons - * @see https://eslint.org/docs/latest/rules/no-new + * Enforces `sandbox` attribute for `iframe` elements is not set to unsafe combinations. + * @see https://eslint-react.xyz/docs/rules/dom-no-unsafe-iframe-sandbox */ - 'no-new'?: Linter.RuleEntry<[]> + 'react-dom/no-unsafe-iframe-sandbox'?: Linter.RuleEntry<[]> /** - * Disallow `new` operators with the `Function` object - * @see https://eslint.org/docs/latest/rules/no-new-func + * Disallow `target="_blank"` without `rel="noreferrer noopener"`. + * @see https://eslint-react.xyz/docs/rules/dom-no-unsafe-target-blank */ - 'no-new-func'?: Linter.RuleEntry<[]> + 'react-dom/no-unsafe-target-blank'?: Linter.RuleEntry<[]> /** - * Disallow `new` operators with global non-constructor functions - * @see https://eslint.org/docs/latest/rules/no-new-native-nonconstructor + * Replaces usages of `useFormState` with `useActionState`. + * @see https://eslint-react.xyz/docs/rules/dom-no-use-form-state */ - 'no-new-native-nonconstructor'?: Linter.RuleEntry<[]> + 'react-dom/no-use-form-state'?: Linter.RuleEntry<[]> /** - * Disallow `Object` constructors - * @see https://eslint.org/docs/latest/rules/no-new-object - * @deprecated + * Disallow `children` in void DOM elements. + * @see https://eslint-react.xyz/docs/rules/dom-no-void-elements-with-children */ - 'no-new-object'?: Linter.RuleEntry<[]> + 'react-dom/no-void-elements-with-children'?: Linter.RuleEntry<[]> /** - * Disallow `new` operators with calls to `require` - * @see https://eslint.org/docs/latest/rules/no-new-require - * @deprecated + * Enforces that a function with the `use` prefix should use at least one Hook inside of it. + * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-prefix */ - 'no-new-require'?: Linter.RuleEntry<[]> + 'react-hooks-extra/ensure-custom-hooks-using-other-hooks'?: Linter.RuleEntry<[]> /** - * Disallow `new` operators with the `Symbol` object - * @see https://eslint.org/docs/latest/rules/no-new-symbol - * @deprecated + * Disallow unnecessary usage of `useCallback`. + * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-callback */ - 'no-new-symbol'?: Linter.RuleEntry<[]> + 'react-hooks-extra/ensure-use-callback-has-non-empty-deps'?: Linter.RuleEntry<[]> /** - * Disallow `new` operators with the `String`, `Number`, and `Boolean` objects - * @see https://eslint.org/docs/latest/rules/no-new-wrappers + * Disallow unnecessary usage of `useMemo`. + * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-memo */ - 'no-new-wrappers'?: Linter.RuleEntry<[]> + 'react-hooks-extra/ensure-use-memo-has-non-empty-deps'?: Linter.RuleEntry<[]> /** - * Disallow `\8` and `\9` escape sequences in string literals - * @see https://eslint.org/docs/latest/rules/no-nonoctal-decimal-escape + * Disallow direct calls to the `set` function of `useState` in `useEffect`. + * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-direct-set-state-in-use-effect */ - 'no-nonoctal-decimal-escape'?: Linter.RuleEntry<[]> + 'react-hooks-extra/no-direct-set-state-in-use-effect'?: Linter.RuleEntry<[]> /** - * Disallow calling global object properties as functions - * @see https://eslint.org/docs/latest/rules/no-obj-calls + * Disallow direct calls to the `set` function of `useState` in `useLayoutEffect`. + * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-direct-set-state-in-use-layout-effect */ - 'no-obj-calls'?: Linter.RuleEntry<[]> + 'react-hooks-extra/no-direct-set-state-in-use-layout-effect'?: Linter.RuleEntry<[]> /** - * Disallow calls to the `Object` constructor without an argument - * @see https://eslint.org/docs/latest/rules/no-object-constructor + * Enforces that a function with the `use` prefix should use at least one Hook inside of it. + * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-prefix */ - 'no-object-constructor'?: Linter.RuleEntry<[]> + 'react-hooks-extra/no-redundant-custom-hook'?: Linter.RuleEntry<[]> /** - * Disallow octal literals - * @see https://eslint.org/docs/latest/rules/no-octal + * Disallow unnecessary usage of `useCallback`. + * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-callback */ - 'no-octal'?: Linter.RuleEntry<[]> + 'react-hooks-extra/no-unnecessary-use-callback'?: Linter.RuleEntry<[]> /** - * Disallow octal escape sequences in string literals - * @see https://eslint.org/docs/latest/rules/no-octal-escape + * Disallow unnecessary usage of `useMemo`. + * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-memo */ - 'no-octal-escape'?: Linter.RuleEntry<[]> + 'react-hooks-extra/no-unnecessary-use-memo'?: Linter.RuleEntry<[]> /** - * Disallow reassigning function parameters - * @see https://eslint.org/docs/latest/rules/no-param-reassign + * Enforces that a function with the `use` prefix should use at least one Hook inside of it. + * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-prefix */ - 'no-param-reassign'?: Linter.RuleEntry + 'react-hooks-extra/no-unnecessary-use-prefix'?: Linter.RuleEntry<[]> /** - * Disallow string concatenation with `__dirname` and `__filename` - * @see https://eslint.org/docs/latest/rules/no-path-concat - * @deprecated + * Enforces that a function with the `use` prefix should use at least one Hook inside of it. + * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-prefix */ - 'no-path-concat'?: Linter.RuleEntry<[]> + 'react-hooks-extra/no-useless-custom-hooks'?: Linter.RuleEntry<[]> /** - * Disallow the unary operators `++` and `--` - * @see https://eslint.org/docs/latest/rules/no-plusplus + * Enforces function calls made inside `useState` to be wrapped in an `initializer function`. + * @see https://eslint-react.xyz/docs/rules/hooks-extra-prefer-use-state-lazy-initialization */ - 'no-plusplus'?: Linter.RuleEntry + 'react-hooks-extra/prefer-use-state-lazy-initialization'?: Linter.RuleEntry<[]> /** - * Disallow the use of `process.env` - * @see https://eslint.org/docs/latest/rules/no-process-env - * @deprecated + * verifies the list of dependencies for Hooks like useEffect and similar + * @see https://github.com/facebook/react/issues/14920 */ - 'no-process-env'?: Linter.RuleEntry<[]> + 'react-hooks/exhaustive-deps'?: Linter.RuleEntry /** - * Disallow the use of `process.exit()` - * @see https://eslint.org/docs/latest/rules/no-process-exit - * @deprecated + * enforces the Rules of Hooks + * @see https://reactjs.org/docs/hooks-rules.html */ - 'no-process-exit'?: Linter.RuleEntry<[]> + 'react-hooks/rules-of-hooks'?: Linter.RuleEntry<[]> /** - * Disallow returning values from Promise executor functions - * @see https://eslint.org/docs/latest/rules/no-promise-executor-return + * Enforces naming conventions for components. + * @see https://eslint-react.xyz/docs/rules/naming-convention-component-name */ - 'no-promise-executor-return'?: Linter.RuleEntry + 'react-naming-convention/component-name'?: Linter.RuleEntry /** - * Disallow the use of the `__proto__` property - * @see https://eslint.org/docs/latest/rules/no-proto + * Enforces context name to be a valid component name with the suffix `Context`. + * @see https://eslint-react.xyz/docs/rules/naming-convention-context-name */ - 'no-proto'?: Linter.RuleEntry<[]> + 'react-naming-convention/context-name'?: Linter.RuleEntry<[]> /** - * Disallow calling some `Object.prototype` methods directly on objects - * @see https://eslint.org/docs/latest/rules/no-prototype-builtins + * Enforces consistent file naming conventions. + * @see https://eslint-react.xyz/docs/rules/naming-convention-filename */ - 'no-prototype-builtins'?: Linter.RuleEntry<[]> + 'react-naming-convention/filename'?: Linter.RuleEntry /** - * Disallow variable redeclaration - * @see https://eslint.org/docs/latest/rules/no-redeclare + * Enforces consistent file naming conventions. + * @see https://eslint-react.xyz/docs/rules/naming-convention-filename-extension */ - 'no-redeclare'?: Linter.RuleEntry + 'react-naming-convention/filename-extension'?: Linter.RuleEntry /** - * Disallow multiple spaces in regular expressions - * @see https://eslint.org/docs/latest/rules/no-regex-spaces + * Enforces destructuring and symmetric naming of `useState` hook value and setter. + * @see https://eslint-react.xyz/docs/rules/naming-convention-use-state */ - 'no-regex-spaces'?: Linter.RuleEntry<[]> + 'react-naming-convention/use-state'?: Linter.RuleEntry<[]> + 'react-refresh/only-export-components'?: Linter.RuleEntry /** - * Disallow specified names in exports - * @see https://eslint.org/docs/latest/rules/no-restricted-exports + * Prevents leaked `addEventListener` in a component or custom Hook. + * @see https://eslint-react.xyz/docs/rules/web-api-no-leaked-event-listener */ - 'no-restricted-exports'?: Linter.RuleEntry + 'react-web-api/no-leaked-event-listener'?: Linter.RuleEntry<[]> /** - * Disallow specified global variables - * @see https://eslint.org/docs/latest/rules/no-restricted-globals + * Prevents leaked `setInterval` in a component or custom Hook. + * @see https://eslint-react.xyz/docs/rules/web-api-no-leaked-interval */ - 'no-restricted-globals'?: Linter.RuleEntry + 'react-web-api/no-leaked-interval'?: Linter.RuleEntry<[]> /** - * Disallow specified modules when loaded by `import` - * @see https://eslint.org/docs/latest/rules/no-restricted-imports + * Prevents leaked `ResizeObserver` in a component or custom Hook. + * @see https://eslint-react.xyz/docs/rules/web-api-no-leaked-resize-observer */ - 'no-restricted-imports'?: Linter.RuleEntry + 'react-web-api/no-leaked-resize-observer'?: Linter.RuleEntry<[]> /** - * Disallow specified modules when loaded by `require` - * @see https://eslint.org/docs/latest/rules/no-restricted-modules - * @deprecated + * Prevents leaked `setTimeout` in a component or custom Hook. + * @see https://eslint-react.xyz/docs/rules/web-api-no-leaked-timeout */ - 'no-restricted-modules'?: Linter.RuleEntry + 'react-web-api/no-leaked-timeout'?: Linter.RuleEntry<[]> /** - * Disallow certain properties on certain objects - * @see https://eslint.org/docs/latest/rules/no-restricted-properties + * Enforces explicit boolean values for boolean attributes. + * @see https://eslint-react.xyz/docs/rules/avoid-shorthand-boolean */ - 'no-restricted-properties'?: Linter.RuleEntry + 'react-x/avoid-shorthand-boolean'?: Linter.RuleEntry<[]> /** - * Disallow specified syntax - * @see https://eslint.org/docs/latest/rules/no-restricted-syntax + * Enforces explicit `` components instead of the shorthand `<>` or `` syntax. + * @see https://eslint-react.xyz/docs/rules/avoid-shorthand-fragment */ - 'no-restricted-syntax'?: Linter.RuleEntry + 'react-x/avoid-shorthand-fragment'?: Linter.RuleEntry<[]> /** - * Disallow assignment operators in `return` statements - * @see https://eslint.org/docs/latest/rules/no-return-assign + * Disallow useless `forwardRef` calls on components that don't use `ref`s. + * @see https://eslint-react.xyz/docs/rules/no-useless-forward-ref */ - 'no-return-assign'?: Linter.RuleEntry + 'react-x/ensure-forward-ref-using-ref'?: Linter.RuleEntry<[]> /** - * Disallow unnecessary `return await` - * @see https://eslint.org/docs/latest/rules/no-return-await - * @deprecated + * Enforces that the 'key' attribute is placed before the spread attribute in JSX elements. + * @see https://eslint-react.xyz/docs/rules/jsx-key-before-spread */ - 'no-return-await'?: Linter.RuleEntry<[]> + 'react-x/jsx-key-before-spread'?: Linter.RuleEntry<[]> /** - * Disallow `javascript:` URLs - * @see https://eslint.org/docs/latest/rules/no-script-url + * Disallow duplicate props in JSX elements. + * @see https://eslint-react.xyz/docs/rules/jsx-no-duplicate-props */ - 'no-script-url'?: Linter.RuleEntry<[]> + 'react-x/jsx-no-duplicate-props'?: Linter.RuleEntry<[]> /** - * An eslint rule that does pattern matching against an entire file + * Disallow undefined variables in JSX. + * @see https://eslint-react.xyz/docs/rules/jsx-no-undef */ - 'no-secrets/no-pattern-match'?: Linter.RuleEntry<[]> + 'react-x/jsx-no-undef'?: Linter.RuleEntry<[]> /** - * An eslint rule that looks for possible leftover secrets in code + * Marks React variables as used when JSX is used. + * @see https://eslint-react.xyz/docs/rules/jsx-uses-react */ - 'no-secrets/no-secrets'?: Linter.RuleEntry<[]> + 'react-x/jsx-uses-react'?: Linter.RuleEntry<[]> /** - * Disallow assignments where both sides are exactly the same - * @see https://eslint.org/docs/latest/rules/no-self-assign + * Marks variables used in JSX elements as used. + * @see https://eslint-react.xyz/docs/rules/jsx-uses-vars */ - 'no-self-assign'?: Linter.RuleEntry + 'react-x/jsx-uses-vars'?: Linter.RuleEntry<[]> /** - * Disallow comparisons where both sides are exactly the same - * @see https://eslint.org/docs/latest/rules/no-self-compare + * Disallow accessing `this.state` inside `setState` calls. + * @see https://eslint-react.xyz/docs/rules/no-access-state-in-setstate */ - 'no-self-compare'?: Linter.RuleEntry<[]> + 'react-x/no-access-state-in-setstate'?: Linter.RuleEntry<[]> /** - * Disallow comma operators - * @see https://eslint.org/docs/latest/rules/no-sequences + * Disallow an item's index in the array as its key. + * @see https://eslint-react.xyz/docs/rules/no-array-index-key */ - 'no-sequences'?: Linter.RuleEntry + 'react-x/no-array-index-key'?: Linter.RuleEntry<[]> /** - * Disallow returning values from setters - * @see https://eslint.org/docs/latest/rules/no-setter-return + * Disallow `Children.count`. + * @see https://eslint-react.xyz/docs/rules/no-children-count */ - 'no-setter-return'?: Linter.RuleEntry<[]> + 'react-x/no-children-count'?: Linter.RuleEntry<[]> /** - * Disallow variable declarations from shadowing variables declared in the outer scope - * @see https://eslint.org/docs/latest/rules/no-shadow + * Disallow 'Children.forEach'. + * @see https://eslint-react.xyz/docs/rules/no-children-for-each */ - 'no-shadow'?: Linter.RuleEntry + 'react-x/no-children-for-each'?: Linter.RuleEntry<[]> /** - * Disallow identifiers from shadowing restricted names - * @see https://eslint.org/docs/latest/rules/no-shadow-restricted-names + * Disallow `Children.map`. + * @see https://eslint-react.xyz/docs/rules/no-children-map */ - 'no-shadow-restricted-names'?: Linter.RuleEntry<[]> + 'react-x/no-children-map'?: Linter.RuleEntry<[]> /** - * Disallow spacing between function identifiers and their applications (deprecated) - * @see https://eslint.org/docs/latest/rules/no-spaced-func - * @deprecated + * Disallow `Children.only`. + * @see https://eslint-react.xyz/docs/rules/no-children-only */ - 'no-spaced-func'?: Linter.RuleEntry<[]> + 'react-x/no-children-only'?: Linter.RuleEntry<[]> /** - * Disallow sparse arrays - * @see https://eslint.org/docs/latest/rules/no-sparse-arrays + * Disallow passing `children` as a prop. + * @see https://eslint-react.xyz/docs/rules/no-children-prop */ - 'no-sparse-arrays'?: Linter.RuleEntry<[]> + 'react-x/no-children-prop'?: Linter.RuleEntry<[]> /** - * Disallow synchronous methods - * @see https://eslint.org/docs/latest/rules/no-sync - * @deprecated + * Disallow `Children.toArray`. + * @see https://eslint-react.xyz/docs/rules/no-children-to-array */ - 'no-sync'?: Linter.RuleEntry + 'react-x/no-children-to-array'?: Linter.RuleEntry<[]> /** - * Disallow all tabs - * @see https://eslint.org/docs/latest/rules/no-tabs - * @deprecated + * Disallow class components except for error boundaries. + * @see https://eslint-react.xyz/docs/rules/no-class-component */ - 'no-tabs'?: Linter.RuleEntry + 'react-x/no-class-component'?: Linter.RuleEntry<[]> /** - * Disallow template literal placeholder syntax in regular strings - * @see https://eslint.org/docs/latest/rules/no-template-curly-in-string + * Disallow `cloneElement`. + * @see https://eslint-react.xyz/docs/rules/no-clone-element */ - 'no-template-curly-in-string'?: Linter.RuleEntry<[]> + 'react-x/no-clone-element'?: Linter.RuleEntry<[]> /** - * Disallow ternary operators - * @see https://eslint.org/docs/latest/rules/no-ternary + * Prevents comments from being inserted as text nodes. + * @see https://eslint-react.xyz/docs/rules/no-comment-textnodes */ - 'no-ternary'?: Linter.RuleEntry<[]> + 'react-x/no-comment-textnodes'?: Linter.RuleEntry<[]> /** - * Disallow `this`/`super` before calling `super()` in constructors - * @see https://eslint.org/docs/latest/rules/no-this-before-super + * Disallow complex conditional rendering in JSX expressions. + * @see https://eslint-react.xyz/docs/rules/no-complex-conditional-rendering */ - 'no-this-before-super'?: Linter.RuleEntry<[]> + 'react-x/no-complex-conditional-rendering'?: Linter.RuleEntry<[]> /** - * Disallow throwing literals as exceptions - * @see https://eslint.org/docs/latest/rules/no-throw-literal + * Disallow complex conditional rendering in JSX expressions. + * @see https://eslint-react.xyz/docs/rules/no-complex-conditional-rendering */ - 'no-throw-literal'?: Linter.RuleEntry<[]> + 'react-x/no-complicated-conditional-rendering'?: Linter.RuleEntry<[]> /** - * Disallow trailing whitespace at the end of lines - * @see https://eslint.org/docs/latest/rules/no-trailing-spaces - * @deprecated + * Replace usages of `componentWillMount` with `UNSAFE_componentWillMount`. + * @see https://eslint-react.xyz/docs/rules/no-component-will-mount */ - 'no-trailing-spaces'?: Linter.RuleEntry + 'react-x/no-component-will-mount'?: Linter.RuleEntry<[]> /** - * Disallow the use of undeclared variables unless mentioned in `/*global *\/` comments - * @see https://eslint.org/docs/latest/rules/no-undef + * Replace usages of `componentWillReceiveProps` with `UNSAFE_componentWillReceiveProps`. + * @see https://eslint-react.xyz/docs/rules/no-component-will-receive-props */ - 'no-undef'?: Linter.RuleEntry + 'react-x/no-component-will-receive-props'?: Linter.RuleEntry<[]> /** - * Disallow initializing variables to `undefined` - * @see https://eslint.org/docs/latest/rules/no-undef-init + * Replace usages of `componentWillUpdate` with `UNSAFE_componentWillUpdate`. + * @see https://eslint-react.xyz/docs/rules/no-component-will-update */ - 'no-undef-init'?: Linter.RuleEntry<[]> + 'react-x/no-component-will-update'?: Linter.RuleEntry<[]> /** - * Disallow the use of `undefined` as an identifier - * @see https://eslint.org/docs/latest/rules/no-undefined + * Replace usages of `` with ``. + * @see https://eslint-react.xyz/docs/rules/no-context-provider */ - 'no-undefined'?: Linter.RuleEntry<[]> + 'react-x/no-context-provider'?: Linter.RuleEntry<[]> /** - * Disallow dangling underscores in identifiers - * @see https://eslint.org/docs/latest/rules/no-underscore-dangle + * Disallow `createRef` in function components. + * @see https://eslint-react.xyz/docs/rules/no-create-ref */ - 'no-underscore-dangle'?: Linter.RuleEntry + 'react-x/no-create-ref'?: Linter.RuleEntry<[]> /** - * Disallow confusing multiline expressions - * @see https://eslint.org/docs/latest/rules/no-unexpected-multiline + * Disallow `defaultProps` property in favor of ES6 default parameters. + * @see https://eslint-react.xyz/docs/rules/no-default-props */ - 'no-unexpected-multiline'?: Linter.RuleEntry<[]> + 'react-x/no-default-props'?: Linter.RuleEntry<[]> /** - * Disallow unmodified loop conditions - * @see https://eslint.org/docs/latest/rules/no-unmodified-loop-condition + * Disallow direct mutation of `this.state`. + * @see https://eslint-react.xyz/docs/rules/no-direct-mutation-state */ - 'no-unmodified-loop-condition'?: Linter.RuleEntry<[]> + 'react-x/no-direct-mutation-state'?: Linter.RuleEntry<[]> /** - * Disallow ternary operators when simpler alternatives exist - * @see https://eslint.org/docs/latest/rules/no-unneeded-ternary + * Disallow duplicate props in JSX elements. + * @see https://eslint-react.xyz/docs/rules/jsx-no-duplicate-props */ - 'no-unneeded-ternary'?: Linter.RuleEntry + 'react-x/no-duplicate-jsx-props'?: Linter.RuleEntry<[]> /** - * Disallow unreachable code after `return`, `throw`, `continue`, and `break` statements - * @see https://eslint.org/docs/latest/rules/no-unreachable + * Disallow duplicate `key` on elements in the same array or a list of `children`. + * @see https://eslint-react.xyz/docs/rules/no-duplicate-key */ - 'no-unreachable'?: Linter.RuleEntry<[]> + 'react-x/no-duplicate-key'?: Linter.RuleEntry<[]> /** - * Disallow loops with a body that allows only one iteration - * @see https://eslint.org/docs/latest/rules/no-unreachable-loop + * Replaces usages of `forwardRef` with passing `ref` as a prop. + * @see https://eslint-react.xyz/docs/rules/no-forward-ref */ - 'no-unreachable-loop'?: Linter.RuleEntry + 'react-x/no-forward-ref'?: Linter.RuleEntry<[]> /** - * Disallow control flow statements in `finally` blocks - * @see https://eslint.org/docs/latest/rules/no-unsafe-finally + * Prevents `key` from not being explicitly specified (e.g. spreading `key` from objects). + * @see https://eslint-react.xyz/docs/rules/no-implicit-key */ - 'no-unsafe-finally'?: Linter.RuleEntry<[]> + 'react-x/no-implicit-key'?: Linter.RuleEntry<[]> /** - * Disallow negating the left operand of relational operators - * @see https://eslint.org/docs/latest/rules/no-unsafe-negation + * Prevents problematic leaked values from being rendered. + * @see https://eslint-react.xyz/docs/rules/no-leaked-conditional-rendering */ - 'no-unsafe-negation'?: Linter.RuleEntry + 'react-x/no-leaked-conditional-rendering'?: Linter.RuleEntry<[]> /** - * Disallow use of optional chaining in contexts where the `undefined` value is not allowed - * @see https://eslint.org/docs/latest/rules/no-unsafe-optional-chaining + * Enforces that all components have a `displayName` which can be used in devtools. + * @see https://eslint-react.xyz/docs/rules/no-missing-component-display-name */ - 'no-unsafe-optional-chaining'?: Linter.RuleEntry + 'react-x/no-missing-component-display-name'?: Linter.RuleEntry<[]> /** - * ESLint rule to disallow unsanitized method calls - * @see https://github.com/mozilla/eslint-plugin-no-unsanitized/tree/master/docs/rules/method.md + * Enforces that all contexts have a `displayName` which can be used in devtools. + * @see https://eslint-react.xyz/docs/rules/no-missing-context-display-name */ - 'no-unsanitized/method'?: Linter.RuleEntry + 'react-x/no-missing-context-display-name'?: Linter.RuleEntry<[]> /** - * ESLint rule to disallow unsanitized property assignment - * @see https://github.com/mozilla/eslint-plugin-no-unsanitized/tree/master/docs/rules/property.md + * Disallow missing `key` on items in list rendering. + * @see https://eslint-react.xyz/docs/rules/no-missing-key */ - 'no-unsanitized/property'?: Linter.RuleEntry + 'react-x/no-missing-key'?: Linter.RuleEntry<[]> /** - * Disallow unused expressions - * @see https://eslint.org/docs/latest/rules/no-unused-expressions + * Prevents incorrect usage of `captureOwnerStack`. + * @see https://eslint-react.xyz/docs/rules/no-misused-capture-owner-stack */ - 'no-unused-expressions'?: Linter.RuleEntry + 'react-x/no-misused-capture-owner-stack'?: Linter.RuleEntry<[]> /** - * Disallow unused labels - * @see https://eslint.org/docs/latest/rules/no-unused-labels + * Disallow nesting component definitions inside other components. + * @see https://eslint-react.xyz/docs/rules/no-nested-component-definitions */ - 'no-unused-labels'?: Linter.RuleEntry<[]> + 'react-x/no-nested-component-definitions'?: Linter.RuleEntry<[]> /** - * Disallow unused private class members - * @see https://eslint.org/docs/latest/rules/no-unused-private-class-members + * Disallow nesting component definitions inside other components. + * @see https://eslint-react.xyz/docs/rules/no-nested-component-definitions */ - 'no-unused-private-class-members'?: Linter.RuleEntry<[]> + 'react-x/no-nested-components'?: Linter.RuleEntry<[]> /** - * Disallow unused variables - * @see https://eslint.org/docs/latest/rules/no-unused-vars + * Disallow nesting lazy component declarations inside other components. + * @see https://eslint-react.xyz/docs/rules/no-nested-component-definitions */ - 'no-unused-vars'?: Linter.RuleEntry + 'react-x/no-nested-lazy-component-declarations'?: Linter.RuleEntry<[]> /** - * Disallow the use of variables before they are defined - * @see https://eslint.org/docs/latest/rules/no-use-before-define + * Disallow `propTypes` in favor of TypeScript or another type-checking solution. + * @see https://eslint-react.xyz/docs/rules/no-prop-types */ - 'no-use-before-define'?: Linter.RuleEntry + 'react-x/no-prop-types'?: Linter.RuleEntry<[]> /** - * Disallow variable assignments when the value is not used - * @see https://eslint.org/docs/latest/rules/no-useless-assignment + * Disallow `shouldComponentUpdate` when extending `React.PureComponent`. + * @see https://eslint-react.xyz/docs/rules/no-redundant-should-component-update */ - 'no-useless-assignment'?: Linter.RuleEntry<[]> + 'react-x/no-redundant-should-component-update'?: Linter.RuleEntry<[]> /** - * Disallow useless backreferences in regular expressions - * @see https://eslint.org/docs/latest/rules/no-useless-backreference + * Disallow calling `this.setState` in `componentDidMount` outside of functions, such as callbacks. + * @see https://eslint-react.xyz/docs/rules/no-set-state-in-component-did-mount */ - 'no-useless-backreference'?: Linter.RuleEntry<[]> + 'react-x/no-set-state-in-component-did-mount'?: Linter.RuleEntry<[]> /** - * Disallow unnecessary calls to `.call()` and `.apply()` - * @see https://eslint.org/docs/latest/rules/no-useless-call + * Disallow calling `this.setState` in `componentDidUpdate` outside of functions, such as callbacks. + * @see https://eslint-react.xyz/docs/rules/no-set-state-in-component-did-update */ - 'no-useless-call'?: Linter.RuleEntry<[]> + 'react-x/no-set-state-in-component-did-update'?: Linter.RuleEntry<[]> /** - * Disallow unnecessary `catch` clauses - * @see https://eslint.org/docs/latest/rules/no-useless-catch + * Disallows calling `this.setState` in `componentWillUpdate` outside of functions, such as callbacks. + * @see https://eslint-react.xyz/docs/rules/no-set-state-in-component-will-update */ - 'no-useless-catch'?: Linter.RuleEntry<[]> + 'react-x/no-set-state-in-component-will-update'?: Linter.RuleEntry<[]> /** - * Disallow unnecessary computed property keys in objects and classes - * @see https://eslint.org/docs/latest/rules/no-useless-computed-key + * Replaces string refs with callback refs. + * @see https://eslint-react.xyz/docs/rules/no-string-refs */ - 'no-useless-computed-key'?: Linter.RuleEntry + 'react-x/no-string-refs'?: Linter.RuleEntry<[]> /** - * Disallow unnecessary concatenation of literals or template literals - * @see https://eslint.org/docs/latest/rules/no-useless-concat + * Warns the usage of `UNSAFE_componentWillMount` in class components. + * @see https://eslint-react.xyz/docs/rules/no-unsafe-component-will-mount */ - 'no-useless-concat'?: Linter.RuleEntry<[]> + 'react-x/no-unsafe-component-will-mount'?: Linter.RuleEntry<[]> /** - * Disallow unnecessary constructors - * @see https://eslint.org/docs/latest/rules/no-useless-constructor + * Warns the usage of `UNSAFE_componentWillReceiveProps` in class components. + * @see https://eslint-react.xyz/docs/rules/no-unsafe-component-will-receive-props */ - 'no-useless-constructor'?: Linter.RuleEntry<[]> + 'react-x/no-unsafe-component-will-receive-props'?: Linter.RuleEntry<[]> /** - * Disallow unnecessary escape characters - * @see https://eslint.org/docs/latest/rules/no-useless-escape + * Warns the usage of `UNSAFE_componentWillUpdate` in class components. + * @see https://eslint-react.xyz/docs/rules/no-unsafe-component-will-update */ - 'no-useless-escape'?: Linter.RuleEntry<[]> + 'react-x/no-unsafe-component-will-update'?: Linter.RuleEntry<[]> /** - * Disallow renaming import, export, and destructured assignments to the same name - * @see https://eslint.org/docs/latest/rules/no-useless-rename + * Prevents non-stable values (i.e. object literals) from being used as a value for `Context.Provider`. + * @see https://eslint-react.xyz/docs/rules/no-unstable-context-value */ - 'no-useless-rename'?: Linter.RuleEntry + 'react-x/no-unstable-context-value'?: Linter.RuleEntry<[]> /** - * Disallow redundant return statements - * @see https://eslint.org/docs/latest/rules/no-useless-return + * Prevents using referential-type values as default props in object destructuring. + * @see https://eslint-react.xyz/docs/rules/no-unstable-default-props */ - 'no-useless-return'?: Linter.RuleEntry<[]> + 'react-x/no-unstable-default-props'?: Linter.RuleEntry<[]> /** - * Require `let` or `const` instead of `var` - * @see https://eslint.org/docs/latest/rules/no-var + * Warns unused class component methods and properties. + * @see https://eslint-react.xyz/docs/rules/no-unused-class-component-members */ - 'no-var'?: Linter.RuleEntry<[]> + 'react-x/no-unused-class-component-members'?: Linter.RuleEntry<[]> /** - * Disallow `void` operators - * @see https://eslint.org/docs/latest/rules/no-void + * Warns unused class component state. + * @see https://eslint-react.xyz/docs/rules/no-unused-state */ - 'no-void'?: Linter.RuleEntry + 'react-x/no-unused-state'?: Linter.RuleEntry<[]> /** - * Disallow specified warning terms in comments - * @see https://eslint.org/docs/latest/rules/no-warning-comments + * Replaces usages of `useContext` with `use`. + * @see https://eslint-react.xyz/docs/rules/no-use-context */ - 'no-warning-comments'?: Linter.RuleEntry + 'react-x/no-use-context'?: Linter.RuleEntry<[]> /** - * Disallow whitespace before properties - * @see https://eslint.org/docs/latest/rules/no-whitespace-before-property - * @deprecated + * Disallow useless `forwardRef` calls on components that don't use `ref`s. + * @see https://eslint-react.xyz/docs/rules/no-useless-forward-ref */ - 'no-whitespace-before-property'?: Linter.RuleEntry<[]> + 'react-x/no-useless-forward-ref'?: Linter.RuleEntry<[]> /** - * Disallow `with` statements - * @see https://eslint.org/docs/latest/rules/no-with + * Disallow useless fragment elements. + * @see https://eslint-react.xyz/docs/rules/no-useless-fragment */ - 'no-with'?: Linter.RuleEntry<[]> + 'react-x/no-useless-fragment'?: Linter.RuleEntry /** - * Enforce the location of single-line statements - * @see https://eslint.org/docs/latest/rules/nonblock-statement-body-position - * @deprecated + * Enforces destructuring assignment for component props and context. + * @see https://eslint-react.xyz/docs/rules/prefer-destructuring-assignment */ - 'nonblock-statement-body-position'?: Linter.RuleEntry + 'react-x/prefer-destructuring-assignment'?: Linter.RuleEntry<[]> /** - * Enforce consistent line breaks after opening and before closing braces - * @see https://eslint.org/docs/latest/rules/object-curly-newline - * @deprecated + * Enforces React is imported via a namespace import. + * @see https://eslint-react.xyz/docs/rules/prefer-react-namespace-import */ - 'object-curly-newline'?: Linter.RuleEntry + 'react-x/prefer-react-namespace-import'?: Linter.RuleEntry<[]> /** - * Enforce consistent spacing inside braces - * @see https://eslint.org/docs/latest/rules/object-curly-spacing - * @deprecated + * Enforces read-only props in components. + * @see https://eslint-react.xyz/docs/rules/prefer-read-only-props */ - 'object-curly-spacing'?: Linter.RuleEntry + 'react-x/prefer-read-only-props'?: Linter.RuleEntry<[]> /** - * Enforce placing object properties on separate lines - * @see https://eslint.org/docs/latest/rules/object-property-newline - * @deprecated + * Enforces shorthand syntax for boolean attributes. + * @see https://eslint-react.xyz/docs/rules/prefer-shorthand-boolean */ - 'object-property-newline'?: Linter.RuleEntry + 'react-x/prefer-shorthand-boolean'?: Linter.RuleEntry<[]> /** - * Require or disallow method and property shorthand syntax for object literals - * @see https://eslint.org/docs/latest/rules/object-shorthand + * Enforces shorthand syntax for fragments. + * @see https://eslint-react.xyz/docs/rules/prefer-shorthand-fragment */ - 'object-shorthand'?: Linter.RuleEntry + 'react-x/prefer-shorthand-fragment'?: Linter.RuleEntry<[]> /** - * Enforce variables to be declared either together or separately in functions - * @see https://eslint.org/docs/latest/rules/one-var + * Marks variables used in JSX elements as used. + * @see https://eslint-react.xyz/docs/rules/jsx-uses-vars */ - 'one-var'?: Linter.RuleEntry + 'react-x/use-jsx-vars'?: Linter.RuleEntry<[]> /** - * Require or disallow newlines around variable declarations - * @see https://eslint.org/docs/latest/rules/one-var-declaration-per-line - * @deprecated + * Enforces consistent naming for boolean props + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/boolean-prop-naming.md */ - 'one-var-declaration-per-line'?: Linter.RuleEntry + 'react/boolean-prop-naming'?: Linter.RuleEntry /** - * Require or disallow assignment operator shorthand where possible - * @see https://eslint.org/docs/latest/rules/operator-assignment + * Disallow usage of `button` elements without an explicit `type` attribute + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/button-has-type.md */ - 'operator-assignment'?: Linter.RuleEntry + 'react/button-has-type'?: Linter.RuleEntry /** - * Enforce consistent linebreak style for operators - * @see https://eslint.org/docs/latest/rules/operator-linebreak - * @deprecated + * Enforce using `onChange` or `readonly` attribute when `checked` is used + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/checked-requires-onchange-or-readonly.md */ - 'operator-linebreak'?: Linter.RuleEntry + 'react/checked-requires-onchange-or-readonly'?: Linter.RuleEntry /** - * Require or disallow padding within blocks - * @see https://eslint.org/docs/latest/rules/padded-blocks - * @deprecated + * Enforce all defaultProps have a corresponding non-required PropType + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/default-props-match-prop-types.md */ - 'padded-blocks'?: Linter.RuleEntry + 'react/default-props-match-prop-types'?: Linter.RuleEntry /** - * Require or disallow padding lines between statements - * @see https://eslint.org/docs/latest/rules/padding-line-between-statements - * @deprecated + * Enforce consistent usage of destructuring assignment of props, state, and context + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/destructuring-assignment.md */ - 'padding-line-between-statements'?: Linter.RuleEntry + 'react/destructuring-assignment'?: Linter.RuleEntry /** - * Enforce sorted arrays before include method. - * @see https://perfectionist.dev/rules/sort-array-includes + * Disallow missing displayName in a React component definition + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/display-name.md */ - 'perfectionist/sort-array-includes'?: Linter.RuleEntry + 'react/display-name'?: Linter.RuleEntry /** - * Enforce sorted classes. - * @see https://perfectionist.dev/rules/sort-classes + * Disallow certain props on components + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-component-props.md */ - 'perfectionist/sort-classes'?: Linter.RuleEntry + 'react/forbid-component-props'?: Linter.RuleEntry /** - * Enforce sorted decorators. - * @see https://perfectionist.dev/rules/sort-decorators + * Disallow certain props on DOM Nodes + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-dom-props.md */ - 'perfectionist/sort-decorators'?: Linter.RuleEntry + 'react/forbid-dom-props'?: Linter.RuleEntry /** - * Enforce sorted TypeScript enums. - * @see https://perfectionist.dev/rules/sort-enums + * Disallow certain elements + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-elements.md */ - 'perfectionist/sort-enums'?: Linter.RuleEntry + 'react/forbid-elements'?: Linter.RuleEntry /** - * Enforce sorted exports. - * @see https://perfectionist.dev/rules/sort-exports + * Disallow using another component's propTypes + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-foreign-prop-types.md */ - 'perfectionist/sort-exports'?: Linter.RuleEntry + 'react/forbid-foreign-prop-types'?: Linter.RuleEntry /** - * Enforce sorted heritage clauses. - * @see https://perfectionist.dev/rules/sort-heritage-clauses + * Disallow certain propTypes + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-prop-types.md */ - 'perfectionist/sort-heritage-clauses'?: Linter.RuleEntry + 'react/forbid-prop-types'?: Linter.RuleEntry /** - * Enforce sorted imports. - * @see https://perfectionist.dev/rules/sort-imports + * Require all forwardRef components include a ref parameter + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forward-ref-uses-ref.md */ - 'perfectionist/sort-imports'?: Linter.RuleEntry + 'react/forward-ref-uses-ref'?: Linter.RuleEntry<[]> /** - * Enforce sorted interface properties. - * @see https://perfectionist.dev/rules/sort-interfaces + * Enforce a specific function type for function components + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/function-component-definition.md */ - 'perfectionist/sort-interfaces'?: Linter.RuleEntry + 'react/function-component-definition'?: Linter.RuleEntry /** - * Enforce sorted intersection types. - * @see https://perfectionist.dev/rules/sort-intersection-types + * Ensure destructuring and symmetric naming of useState hook value and setter variables + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/hook-use-state.md */ - 'perfectionist/sort-intersection-types'?: Linter.RuleEntry + 'react/hook-use-state'?: Linter.RuleEntry /** - * Enforce sorted JSX props. - * @see https://perfectionist.dev/rules/sort-jsx-props + * Enforce sandbox attribute on iframe elements + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/iframe-missing-sandbox.md */ - 'perfectionist/sort-jsx-props'?: Linter.RuleEntry + 'react/iframe-missing-sandbox'?: Linter.RuleEntry<[]> /** - * Enforce sorted Map elements. - * @see https://perfectionist.dev/rules/sort-maps + * Enforce boolean attributes notation in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-boolean-value.md */ - 'perfectionist/sort-maps'?: Linter.RuleEntry + 'react/jsx-boolean-value'?: Linter.RuleEntry /** - * Enforce sorted modules. - * @see https://perfectionist.dev/rules/sort-modules + * Enforce or disallow spaces inside of curly braces in JSX attributes and expressions + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-child-element-spacing.md */ - 'perfectionist/sort-modules'?: Linter.RuleEntry + 'react/jsx-child-element-spacing'?: Linter.RuleEntry<[]> /** - * Enforce sorted named exports. - * @see https://perfectionist.dev/rules/sort-named-exports + * Enforce closing bracket location in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-closing-bracket-location.md */ - 'perfectionist/sort-named-exports'?: Linter.RuleEntry + 'react/jsx-closing-bracket-location'?: Linter.RuleEntry /** - * Enforce sorted named imports. - * @see https://perfectionist.dev/rules/sort-named-imports + * Enforce closing tag location for multiline JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-closing-tag-location.md */ - 'perfectionist/sort-named-imports'?: Linter.RuleEntry + 'react/jsx-closing-tag-location'?: Linter.RuleEntry /** - * Enforce sorted object types. - * @see https://perfectionist.dev/rules/sort-object-types + * Disallow unnecessary JSX expressions when literals alone are sufficient or enforce JSX expressions on literals in JSX children or attributes + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-curly-brace-presence.md */ - 'perfectionist/sort-object-types'?: Linter.RuleEntry + 'react/jsx-curly-brace-presence'?: Linter.RuleEntry /** - * Enforce sorted objects. - * @see https://perfectionist.dev/rules/sort-objects + * Enforce consistent linebreaks in curly braces in JSX attributes and expressions + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-curly-newline.md */ - 'perfectionist/sort-objects'?: Linter.RuleEntry + 'react/jsx-curly-newline'?: Linter.RuleEntry /** - * Enforce sorted sets. - * @see https://perfectionist.dev/rules/sort-sets + * Enforce or disallow spaces inside of curly braces in JSX attributes and expressions + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-curly-spacing.md */ - 'perfectionist/sort-sets'?: Linter.RuleEntry + 'react/jsx-curly-spacing'?: Linter.RuleEntry /** - * Enforce sorted switch cases. - * @see https://perfectionist.dev/rules/sort-switch-case + * Enforce or disallow spaces around equal signs in JSX attributes + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-equals-spacing.md */ - 'perfectionist/sort-switch-case'?: Linter.RuleEntry + 'react/jsx-equals-spacing'?: Linter.RuleEntry /** - * Enforce sorted union types. - * @see https://perfectionist.dev/rules/sort-union-types + * Disallow file extensions that may contain JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-filename-extension.md */ - 'perfectionist/sort-union-types'?: Linter.RuleEntry + 'react/jsx-filename-extension'?: Linter.RuleEntry /** - * Enforce sorted variable declarations. - * @see https://perfectionist.dev/rules/sort-variable-declarations + * Enforce proper position of the first property in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-first-prop-new-line.md */ - 'perfectionist/sort-variable-declarations'?: Linter.RuleEntry + 'react/jsx-first-prop-new-line'?: Linter.RuleEntry /** - * Enforce assertion to be made in a test body - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/expect-expect.md + * Enforce shorthand or standard form for React fragments + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-fragments.md */ - 'playwright/expect-expect'?: Linter.RuleEntry + 'react/jsx-fragments'?: Linter.RuleEntry /** - * Enforces a maximum depth to nested describe calls - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/max-nested-describe.md + * Enforce event handler naming conventions in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-handler-names.md */ - 'playwright/max-nested-describe'?: Linter.RuleEntry + 'react/jsx-handler-names'?: Linter.RuleEntry /** - * Identify false positives when async Playwright APIs are not properly awaited. + * Enforce JSX indentation + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-indent.md */ - 'playwright/missing-playwright-await'?: Linter.RuleEntry + 'react/jsx-indent'?: Linter.RuleEntry /** - * Disallow conditional logic in tests - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-conditional-in-test.md + * Enforce props indentation in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-indent-props.md */ - 'playwright/no-conditional-in-test'?: Linter.RuleEntry<[]> + 'react/jsx-indent-props'?: Linter.RuleEntry /** - * The use of ElementHandle is discouraged, use Locator instead - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-element-handle.md + * Disallow missing `key` props in iterators/collection literals + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-key.md */ - 'playwright/no-element-handle'?: Linter.RuleEntry<[]> + 'react/jsx-key'?: Linter.RuleEntry /** - * The use of `page.$eval` and `page.$$eval` are discouraged, use `locator.evaluate` or `locator.evaluateAll` instead - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-eval.md + * Enforce JSX maximum depth + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-max-depth.md */ - 'playwright/no-eval'?: Linter.RuleEntry<[]> + 'react/jsx-max-depth'?: Linter.RuleEntry /** - * Prevent usage of `.only()` focus test annotation - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-focused-test.md + * Enforce maximum of props on a single line in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-max-props-per-line.md */ - 'playwright/no-focused-test'?: Linter.RuleEntry<[]> + 'react/jsx-max-props-per-line'?: Linter.RuleEntry /** - * Prevent usage of `{ force: true }` option. - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-force-option.md + * Require or prevent a new line after jsx elements and expressions. + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-newline.md */ - 'playwright/no-force-option'?: Linter.RuleEntry<[]> + 'react/jsx-newline'?: Linter.RuleEntry /** - * Disallow nested `test.step()` methods - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-nested-step.md + * Disallow `.bind()` or arrow functions in JSX props + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-bind.md */ - 'playwright/no-nested-step'?: Linter.RuleEntry<[]> + 'react/jsx-no-bind'?: Linter.RuleEntry /** - * Prevent usage of the networkidle option + * Disallow comments from being inserted as text nodes + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-comment-textnodes.md */ - 'playwright/no-networkidle'?: Linter.RuleEntry<[]> + 'react/jsx-no-comment-textnodes'?: Linter.RuleEntry<[]> /** - * Disallow usage of nth methods - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-nth-methods.md + * Disallows JSX context provider values from taking values that will cause needless rerenders + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-constructed-context-values.md */ - 'playwright/no-nth-methods'?: Linter.RuleEntry<[]> + 'react/jsx-no-constructed-context-values'?: Linter.RuleEntry<[]> /** - * Prevent usage of page.pause() + * Disallow duplicate properties in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-duplicate-props.md */ - 'playwright/no-page-pause'?: Linter.RuleEntry<[]> + 'react/jsx-no-duplicate-props'?: Linter.RuleEntry /** - * Disallows the usage of raw locators - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-raw-locators.md + * Disallow problematic leaked values from being rendered + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-leaked-render.md */ - 'playwright/no-raw-locators'?: Linter.RuleEntry<[]> + 'react/jsx-no-leaked-render'?: Linter.RuleEntry /** - * Disallow specific matchers & modifiers - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-restricted-matchers.md + * Disallow usage of string literals in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-literals.md */ - 'playwright/no-restricted-matchers'?: Linter.RuleEntry + 'react/jsx-no-literals'?: Linter.RuleEntry /** - * Prevent usage of the `.skip()` skip test annotation. - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-skipped-test.md + * Disallow usage of `javascript:` URLs + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-script-url.md */ - 'playwright/no-skipped-test'?: Linter.RuleEntry + 'react/jsx-no-script-url'?: Linter.RuleEntry /** - * Disallow unnecessary awaits for Playwright methods + * Disallow `target="_blank"` attribute without `rel="noreferrer"` + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-target-blank.md */ - 'playwright/no-useless-await'?: Linter.RuleEntry<[]> + 'react/jsx-no-target-blank'?: Linter.RuleEntry /** - * Disallow usage of 'not' matchers when a more specific matcher exists - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-useless-not.md + * Disallow undeclared variables in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-undef.md */ - 'playwright/no-useless-not'?: Linter.RuleEntry<[]> + 'react/jsx-no-undef'?: Linter.RuleEntry /** - * Prevent usage of page.waitForTimeout() - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-wait-for-timeout.md + * Disallow unnecessary fragments + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-useless-fragment.md */ - 'playwright/no-wait-for-timeout'?: Linter.RuleEntry<[]> + 'react/jsx-no-useless-fragment'?: Linter.RuleEntry /** - * Enforce lowercase test names - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-lowercase-title.md + * Require one JSX element per line + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-one-expression-per-line.md */ - 'playwright/prefer-lowercase-title'?: Linter.RuleEntry + 'react/jsx-one-expression-per-line'?: Linter.RuleEntry /** - * Suggest using `toStrictEqual()` - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-strict-equal.md + * Enforce PascalCase for user-defined JSX components + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-pascal-case.md */ - 'playwright/prefer-strict-equal'?: Linter.RuleEntry<[]> + 'react/jsx-pascal-case'?: Linter.RuleEntry /** - * Suggest using `toBe()` for primitive literals - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-to-be.md + * Disallow multiple spaces between inline JSX props + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-props-no-multi-spaces.md */ - 'playwright/prefer-to-be'?: Linter.RuleEntry<[]> + 'react/jsx-props-no-multi-spaces'?: Linter.RuleEntry<[]> /** - * Suggest using toContain() - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-to-contain.md + * Disallow JSX prop spreading the same identifier multiple times + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-props-no-spread-multi.md */ - 'playwright/prefer-to-contain'?: Linter.RuleEntry<[]> + 'react/jsx-props-no-spread-multi'?: Linter.RuleEntry<[]> /** - * Suggest using `toHaveCount()` - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-to-have-count.md + * Disallow JSX prop spreading + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-props-no-spreading.md */ - 'playwright/prefer-to-have-count'?: Linter.RuleEntry<[]> + 'react/jsx-props-no-spreading'?: Linter.RuleEntry /** - * Suggest using `toHaveLength()` - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-to-have-length.md + * Enforce defaultProps declarations alphabetical sorting + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-sort-default-props.md + * @deprecated */ - 'playwright/prefer-to-have-length'?: Linter.RuleEntry<[]> + 'react/jsx-sort-default-props'?: Linter.RuleEntry /** - * Prefer web first assertions - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-web-first-assertions.md + * Enforce props alphabetical sorting + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-sort-props.md */ - 'playwright/prefer-web-first-assertions'?: Linter.RuleEntry<[]> + 'react/jsx-sort-props'?: Linter.RuleEntry /** - * Require all assertions to use `expect.soft` - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/require-soft-assertions.md + * Enforce spacing before closing bracket in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-space-before-closing.md + * @deprecated */ - 'playwright/require-soft-assertions'?: Linter.RuleEntry<[]> + 'react/jsx-space-before-closing'?: Linter.RuleEntry /** - * Require test cases and hooks to be inside a `test.describe` block - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/require-top-level-describe.md + * Enforce whitespace in and around the JSX opening and closing brackets + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-tag-spacing.md */ - 'playwright/require-top-level-describe'?: Linter.RuleEntry + 'react/jsx-tag-spacing'?: Linter.RuleEntry /** - * Enforce valid `expect()` usage - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/valid-expect.md + * Disallow React to be incorrectly marked as unused + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-uses-react.md */ - 'playwright/valid-expect'?: Linter.RuleEntry + 'react/jsx-uses-react'?: Linter.RuleEntry<[]> /** - * Require using arrow functions for callbacks - * @see https://eslint.org/docs/latest/rules/prefer-arrow-callback + * Disallow variables used in JSX to be incorrectly marked as unused + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-uses-vars.md */ - 'prefer-arrow-callback'?: Linter.RuleEntry + 'react/jsx-uses-vars'?: Linter.RuleEntry<[]> /** - * Require `const` declarations for variables that are never reassigned after declared - * @see https://eslint.org/docs/latest/rules/prefer-const + * Disallow missing parentheses around multiline JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-wrap-multilines.md */ - 'prefer-const'?: Linter.RuleEntry + 'react/jsx-wrap-multilines'?: Linter.RuleEntry /** - * Require destructuring from arrays and/or objects - * @see https://eslint.org/docs/latest/rules/prefer-destructuring + * Disallow when this.state is accessed within setState + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-access-state-in-setstate.md */ - 'prefer-destructuring'?: Linter.RuleEntry + 'react/no-access-state-in-setstate'?: Linter.RuleEntry<[]> /** - * Disallow the use of `Math.pow` in favor of the `**` operator - * @see https://eslint.org/docs/latest/rules/prefer-exponentiation-operator + * Disallow adjacent inline elements not separated by whitespace. + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-adjacent-inline-elements.md */ - 'prefer-exponentiation-operator'?: Linter.RuleEntry<[]> + 'react/no-adjacent-inline-elements'?: Linter.RuleEntry<[]> /** - * Enforce using named capture group in regular expression - * @see https://eslint.org/docs/latest/rules/prefer-named-capture-group + * Disallow usage of Array index in keys + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-array-index-key.md */ - 'prefer-named-capture-group'?: Linter.RuleEntry<[]> + 'react/no-array-index-key'?: Linter.RuleEntry<[]> /** - * Disallow `parseInt()` and `Number.parseInt()` in favor of binary, octal, and hexadecimal literals - * @see https://eslint.org/docs/latest/rules/prefer-numeric-literals + * Lifecycle methods should be methods on the prototype, not class fields + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-arrow-function-lifecycle.md */ - 'prefer-numeric-literals'?: Linter.RuleEntry<[]> + 'react/no-arrow-function-lifecycle'?: Linter.RuleEntry<[]> /** - * Disallow use of `Object.prototype.hasOwnProperty.call()` and prefer use of `Object.hasOwn()` - * @see https://eslint.org/docs/latest/rules/prefer-object-has-own + * Disallow passing of children as props + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-children-prop.md */ - 'prefer-object-has-own'?: Linter.RuleEntry<[]> + 'react/no-children-prop'?: Linter.RuleEntry /** - * Disallow using `Object.assign` with an object literal as the first argument and prefer the use of object spread instead - * @see https://eslint.org/docs/latest/rules/prefer-object-spread + * Disallow usage of dangerous JSX properties + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-danger.md */ - 'prefer-object-spread'?: Linter.RuleEntry<[]> + 'react/no-danger'?: Linter.RuleEntry /** - * Require using Error objects as Promise rejection reasons - * @see https://eslint.org/docs/latest/rules/prefer-promise-reject-errors + * Disallow when a DOM element is using both children and dangerouslySetInnerHTML + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-danger-with-children.md */ - 'prefer-promise-reject-errors'?: Linter.RuleEntry + 'react/no-danger-with-children'?: Linter.RuleEntry<[]> /** - * Require `Reflect` methods where applicable - * @see https://eslint.org/docs/latest/rules/prefer-reflect - * @deprecated + * Disallow usage of deprecated methods + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-deprecated.md */ - 'prefer-reflect'?: Linter.RuleEntry + 'react/no-deprecated'?: Linter.RuleEntry<[]> /** - * Disallow use of the `RegExp` constructor in favor of regular expression literals - * @see https://eslint.org/docs/latest/rules/prefer-regex-literals + * Disallow usage of setState in componentDidMount + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-did-mount-set-state.md */ - 'prefer-regex-literals'?: Linter.RuleEntry + 'react/no-did-mount-set-state'?: Linter.RuleEntry /** - * Require rest parameters instead of `arguments` - * @see https://eslint.org/docs/latest/rules/prefer-rest-params + * Disallow usage of setState in componentDidUpdate + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-did-update-set-state.md */ - 'prefer-rest-params'?: Linter.RuleEntry<[]> + 'react/no-did-update-set-state'?: Linter.RuleEntry /** - * Require spread operators instead of `.apply()` - * @see https://eslint.org/docs/latest/rules/prefer-spread + * Disallow direct mutation of this.state + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-direct-mutation-state.md */ - 'prefer-spread'?: Linter.RuleEntry<[]> + 'react/no-direct-mutation-state'?: Linter.RuleEntry<[]> /** - * Require template literals instead of string concatenation - * @see https://eslint.org/docs/latest/rules/prefer-template + * Disallow usage of findDOMNode + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-find-dom-node.md */ - 'prefer-template'?: Linter.RuleEntry<[]> + 'react/no-find-dom-node'?: Linter.RuleEntry<[]> /** - * Require returning inside each `then()` to create readable and reusable Promise chains. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/always-return.md + * Disallow usage of invalid attributes + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-invalid-html-attribute.md */ - 'promise/always-return'?: Linter.RuleEntry + 'react/no-invalid-html-attribute'?: Linter.RuleEntry /** - * Disallow creating `new` promises outside of utility libs (use [util.promisify][] instead). - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/avoid-new.md + * Disallow usage of isMounted + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-is-mounted.md */ - 'promise/avoid-new'?: Linter.RuleEntry<[]> + 'react/no-is-mounted'?: Linter.RuleEntry<[]> /** - * Enforce the use of `catch()` on un-returned promises. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/catch-or-return.md + * Disallow multiple component definition per file + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-multi-comp.md */ - 'promise/catch-or-return'?: Linter.RuleEntry + 'react/no-multi-comp'?: Linter.RuleEntry /** - * Disallow calling `cb()` inside of a `then()` (use [util.callbackify][] instead). - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-callback-in-promise.md + * Enforce that namespaces are not used in React elements + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-namespace.md */ - 'promise/no-callback-in-promise'?: Linter.RuleEntry + 'react/no-namespace'?: Linter.RuleEntry<[]> /** - * Disallow creating new promises with paths that resolve multiple times. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-multiple-resolved.md + * Disallow usage of referential-type variables as default param in functional component + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-object-type-as-default-prop.md */ - 'promise/no-multiple-resolved'?: Linter.RuleEntry<[]> + 'react/no-object-type-as-default-prop'?: Linter.RuleEntry<[]> /** - * Require creating a `Promise` constructor before using it in an ES5 environment. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-native.md + * Disallow usage of shouldComponentUpdate when extending React.PureComponent + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-redundant-should-component-update.md */ - 'promise/no-native'?: Linter.RuleEntry<[]> + 'react/no-redundant-should-component-update'?: Linter.RuleEntry<[]> /** - * Disallow nested `then()` or `catch()` statements. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-nesting.md + * Disallow usage of the return value of ReactDOM.render + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-render-return-value.md */ - 'promise/no-nesting'?: Linter.RuleEntry<[]> + 'react/no-render-return-value'?: Linter.RuleEntry<[]> /** - * Disallow calling `new` on a Promise static method. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-new-statics.md + * Disallow usage of setState + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-set-state.md */ - 'promise/no-new-statics'?: Linter.RuleEntry<[]> + 'react/no-set-state'?: Linter.RuleEntry<[]> /** - * Disallow using promises inside of callbacks. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-promise-in-callback.md + * Disallow using string references + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-string-refs.md */ - 'promise/no-promise-in-callback'?: Linter.RuleEntry<[]> + 'react/no-string-refs'?: Linter.RuleEntry /** - * Disallow return statements in `finally()`. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-return-in-finally.md + * Disallow `this` from being used in stateless functional components + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-this-in-sfc.md */ - 'promise/no-return-in-finally'?: Linter.RuleEntry<[]> + 'react/no-this-in-sfc'?: Linter.RuleEntry<[]> /** - * Disallow wrapping values in `Promise.resolve` or `Promise.reject` when not needed. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-return-wrap.md + * Disallow common typos + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-typos.md */ - 'promise/no-return-wrap'?: Linter.RuleEntry + 'react/no-typos'?: Linter.RuleEntry<[]> /** - * Enforce consistent param names and ordering when creating new promises. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/param-names.md + * Disallow unescaped HTML entities from appearing in markup + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unescaped-entities.md */ - 'promise/param-names'?: Linter.RuleEntry + 'react/no-unescaped-entities'?: Linter.RuleEntry /** - * Prefer `async`/`await` to the callback pattern. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/prefer-await-to-callbacks.md + * Disallow usage of unknown DOM property + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unknown-property.md */ - 'promise/prefer-await-to-callbacks'?: Linter.RuleEntry<[]> + 'react/no-unknown-property'?: Linter.RuleEntry /** - * Prefer `await` to `then()`/`catch()`/`finally()` for reading Promise values. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/prefer-await-to-then.md + * Disallow usage of unsafe lifecycle methods + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unsafe.md */ - 'promise/prefer-await-to-then'?: Linter.RuleEntry + 'react/no-unsafe'?: Linter.RuleEntry /** - * Prefer `catch` to `then(a, b)`/`then(null, b)` for handling errors. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/prefer-catch.md + * Disallow creating unstable components inside components + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unstable-nested-components.md */ - 'promise/prefer-catch'?: Linter.RuleEntry<[]> + 'react/no-unstable-nested-components'?: Linter.RuleEntry /** - * Disallow use of non-standard Promise static methods. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/spec-only.md + * Disallow declaring unused methods of component class + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unused-class-component-methods.md */ - 'promise/spec-only'?: Linter.RuleEntry + 'react/no-unused-class-component-methods'?: Linter.RuleEntry<[]> /** - * Enforces the proper number of arguments are passed to Promise functions. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/valid-params.md + * Disallow definitions of unused propTypes + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unused-prop-types.md */ - 'promise/valid-params'?: Linter.RuleEntry + 'react/no-unused-prop-types'?: Linter.RuleEntry /** - * Require quotes around object literal property names - * @see https://eslint.org/docs/latest/rules/quote-props - * @deprecated + * Disallow definitions of unused state + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unused-state.md */ - 'quote-props'?: Linter.RuleEntry + 'react/no-unused-state'?: Linter.RuleEntry<[]> /** - * Enforce the consistent use of either backticks, double, or single quotes - * @see https://eslint.org/docs/latest/rules/quotes - * @deprecated + * Disallow usage of setState in componentWillUpdate + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-will-update-set-state.md */ - 'quotes'?: Linter.RuleEntry + 'react/no-will-update-set-state'?: Linter.RuleEntry /** - * Enforce the consistent use of the radix argument when using `parseInt()` - * @see https://eslint.org/docs/latest/rules/radix + * Enforce ES5 or ES6 class for React Components + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-es6-class.md */ - 'radix'?: Linter.RuleEntry + 'react/prefer-es6-class'?: Linter.RuleEntry /** - * disallow void elements (AKA self-closing elements) from having children - * @see https://eslint-react.xyz/docs/rules/dom-no-void-elements-with-children + * Prefer exact proptype definitions + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-exact-props.md */ - 'react-dom/no-children-in-void-dom-elements'?: Linter.RuleEntry<[]> + 'react/prefer-exact-props'?: Linter.RuleEntry<[]> /** - * disallow when a DOM component is using 'dangerouslySetInnerHTML' - * @see https://eslint-react.xyz/docs/rules/dom-no-dangerously-set-innerhtml + * Enforce that props are read-only + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-read-only-props.md */ - 'react-dom/no-dangerously-set-innerhtml'?: Linter.RuleEntry<[]> + 'react/prefer-read-only-props'?: Linter.RuleEntry<[]> /** - * disallow when a DOM component is using both 'children' and 'dangerouslySetInnerHTML' - * @see https://eslint-react.xyz/docs/rules/dom-no-dangerously-set-innerhtml-with-children + * Enforce stateless components to be written as a pure function + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-stateless-function.md */ - 'react-dom/no-dangerously-set-innerhtml-with-children'?: Linter.RuleEntry<[]> + 'react/prefer-stateless-function'?: Linter.RuleEntry /** - * disallow 'findDOMNode' - * @see https://eslint-react.xyz/docs/rules/dom-no-find-dom-node + * Disallow missing props validation in a React component definition + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prop-types.md */ - 'react-dom/no-find-dom-node'?: Linter.RuleEntry<[]> + 'react/prop-types'?: Linter.RuleEntry /** - * enforce that button component have an explicit 'type' attribute - * @see https://eslint-react.xyz/docs/rules/dom-no-missing-button-type + * Disallow missing React when using JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/react-in-jsx-scope.md */ - 'react-dom/no-missing-button-type'?: Linter.RuleEntry<[]> + 'react/react-in-jsx-scope'?: Linter.RuleEntry<[]> /** - * enforce that 'iframe' component have an explicit 'sandbox' attribute - * @see https://eslint-react.xyz/docs/rules/dom-no-missing-iframe-sandbox + * Enforce a defaultProps definition for every prop that is not a required prop + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/require-default-props.md */ - 'react-dom/no-missing-iframe-sandbox'?: Linter.RuleEntry<[]> + 'react/require-default-props'?: Linter.RuleEntry /** - * enforce that namespaces are not used in React elements - * @see https://eslint-react.xyz/docs/rules/dom-no-namespace + * Enforce React components to have a shouldComponentUpdate method + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/require-optimization.md */ - 'react-dom/no-namespace'?: Linter.RuleEntry<[]> + 'react/require-optimization'?: Linter.RuleEntry /** - * disallow usage of the return value of 'ReactDOM.render' - * @see https://eslint-react.xyz/docs/rules/dom-no-render-return-value + * Enforce ES5 or ES6 class for returning value in render function + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/require-render-return.md */ - 'react-dom/no-render-return-value'?: Linter.RuleEntry<[]> + 'react/require-render-return'?: Linter.RuleEntry<[]> /** - * disallow 'javascript:' URLs as JSX event handler prop's value - * @see https://eslint-react.xyz/docs/rules/dom-no-script-url + * Disallow extra closing tags for components without children + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/self-closing-comp.md */ - 'react-dom/no-script-url'?: Linter.RuleEntry<[]> + 'react/self-closing-comp'?: Linter.RuleEntry /** - * disallow usage of unknown DOM property - * @see https://eslint-react.xyz/docs/rules/dom-no-unknown-property + * Enforce component methods order + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/sort-comp.md */ - 'react-dom/no-unknown-property'?: Linter.RuleEntry + 'react/sort-comp'?: Linter.RuleEntry /** - * disallow unsafe iframe 'sandbox' attribute combinations - * @see https://eslint-react.xyz/docs/rules/dom-no-unsafe-iframe-sandbox + * Enforce defaultProps declarations alphabetical sorting + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/sort-default-props.md */ - 'react-dom/no-unsafe-iframe-sandbox'?: Linter.RuleEntry<[]> + 'react/sort-default-props'?: Linter.RuleEntry /** - * disallow 'target="_blank"' on an external link without 'rel="noreferrer noopener"' - * @see https://eslint-react.xyz/docs/rules/dom-no-unsafe-target-blank + * Enforce propTypes declarations alphabetical sorting + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/sort-prop-types.md */ - 'react-dom/no-unsafe-target-blank'?: Linter.RuleEntry<[]> + 'react/sort-prop-types'?: Linter.RuleEntry /** - * disallow void elements (AKA self-closing elements) from having children - * @see https://eslint-react.xyz/docs/rules/dom-no-void-elements-with-children + * Enforce class component state initialization style + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/state-in-constructor.md */ - 'react-dom/no-void-elements-with-children'?: Linter.RuleEntry<[]> + 'react/state-in-constructor'?: Linter.RuleEntry /** - * enforce custom Hooks to use at least one other hook inside - * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-useless-custom-hooks + * Enforces where React component static properties should be positioned. + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/static-property-placement.md */ - 'react-hooks-extra/ensure-custom-hooks-using-other-hooks'?: Linter.RuleEntry<[]> + 'react/static-property-placement'?: Linter.RuleEntry /** - * disallow unnecessary usage of 'useCallback' - * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-callback + * Enforce style prop value is an object + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/style-prop-object.md */ - 'react-hooks-extra/ensure-use-callback-has-non-empty-deps'?: Linter.RuleEntry<[]> + 'react/style-prop-object'?: Linter.RuleEntry /** - * disallow unnecessary usage of 'useMemo' - * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-memo + * Disallow void DOM elements (e.g. ``, `
`) from receiving children + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/void-dom-elements-no-children.md */ - 'react-hooks-extra/ensure-use-memo-has-non-empty-deps'?: Linter.RuleEntry<[]> + 'react/void-dom-elements-no-children'?: Linter.RuleEntry<[]> /** - * disallow direct calls to the 'set' function of 'useState' in 'useEffect' - * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-direct-set-state-in-use-effect + * disallow confusing quantifiers + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/confusing-quantifier.html */ - 'react-hooks-extra/no-direct-set-state-in-use-effect'?: Linter.RuleEntry<[]> + 'regexp/confusing-quantifier'?: Linter.RuleEntry<[]> /** - * disallow direct calls to the 'set' function of 'useState' in 'useLayoutEffect' - * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-direct-set-state-in-use-layout-effect + * enforce consistent escaping of control characters + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/control-character-escape.html */ - 'react-hooks-extra/no-direct-set-state-in-use-layout-effect'?: Linter.RuleEntry<[]> + 'regexp/control-character-escape'?: Linter.RuleEntry<[]> /** - * enforce custom Hooks to use at least one other hook inside - * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-useless-custom-hooks + * enforce single grapheme in string literal + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/grapheme-string-literal.html */ - 'react-hooks-extra/no-redundant-custom-hook'?: Linter.RuleEntry<[]> + 'regexp/grapheme-string-literal'?: Linter.RuleEntry<[]> /** - * disallow unnecessary usage of 'useCallback' - * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-callback + * enforce consistent usage of hexadecimal escape + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/hexadecimal-escape.html */ - 'react-hooks-extra/no-unnecessary-use-callback'?: Linter.RuleEntry<[]> + 'regexp/hexadecimal-escape'?: Linter.RuleEntry /** - * disallow unnecessary usage of 'useMemo' - * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-memo + * enforce into your favorite case + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/letter-case.html */ - 'react-hooks-extra/no-unnecessary-use-memo'?: Linter.RuleEntry<[]> + 'regexp/letter-case'?: Linter.RuleEntry /** - * enforce custom Hooks to use at least one other hook inside - * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-useless-custom-hooks + * enforce match any character style + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/match-any.html */ - 'react-hooks-extra/no-useless-custom-hooks'?: Linter.RuleEntry<[]> + 'regexp/match-any'?: Linter.RuleEntry /** - * disallow function calls in 'useState' that aren't wrapped in an initializer function - * @see https://eslint-react.xyz/docs/rules/hooks-extra-prefer-use-state-lazy-initialization + * enforce use of escapes on negation + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/negation.html */ - 'react-hooks-extra/prefer-use-state-lazy-initialization'?: Linter.RuleEntry<[]> + 'regexp/negation'?: Linter.RuleEntry<[]> /** - * verifies the list of dependencies for Hooks like useEffect and similar - * @see https://github.com/facebook/react/issues/14920 + * disallow elements that contradict assertions + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-contradiction-with-assertion.html */ - 'react-hooks/exhaustive-deps'?: Linter.RuleEntry + 'regexp/no-contradiction-with-assertion'?: Linter.RuleEntry<[]> /** - * enforces the Rules of Hooks - * @see https://reactjs.org/docs/hooks-rules.html + * disallow control characters + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-control-character.html */ - 'react-hooks/rules-of-hooks'?: Linter.RuleEntry<[]> + 'regexp/no-control-character'?: Linter.RuleEntry<[]> /** - * enforce component naming convention to 'PascalCase' or 'CONSTANT_CASE' - * @see https://eslint-react.xyz/docs/rules/naming-convention-component-name + * disallow duplicate characters in the RegExp character class + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-dupe-characters-character-class.html */ - 'react-naming-convention/component-name'?: Linter.RuleEntry + 'regexp/no-dupe-characters-character-class'?: Linter.RuleEntry<[]> /** - * enforce naming convention for JSX filenames - * @see https://eslint-react.xyz/docs/rules/naming-convention-filename + * disallow duplicate disjunctions + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-dupe-disjunctions.html */ - 'react-naming-convention/filename'?: Linter.RuleEntry + 'regexp/no-dupe-disjunctions'?: Linter.RuleEntry /** - * enforce naming convention for JSX file extensions - * @see https://eslint-react.xyz/docs/rules/naming-convention-filename-extension + * disallow alternatives without elements + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-alternative.html */ - 'react-naming-convention/filename-extension'?: Linter.RuleEntry + 'regexp/no-empty-alternative'?: Linter.RuleEntry<[]> /** - * enforce destructuring and symmetric naming of 'useState' hook value and setter variables - * @see https://eslint-react.xyz/docs/rules/naming-convention-use-state + * disallow capturing group that captures empty. + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-capturing-group.html */ - 'react-naming-convention/use-state'?: Linter.RuleEntry<[]> - 'react-refresh/only-export-components'?: Linter.RuleEntry + 'regexp/no-empty-capturing-group'?: Linter.RuleEntry<[]> /** - * disallow using shorthand boolean attributes - * @see https://eslint-react.xyz/docs/rules/avoid-shorthand-boolean + * disallow character classes that match no characters + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-character-class.html */ - 'react-x/avoid-shorthand-boolean'?: Linter.RuleEntry<[]> + 'regexp/no-empty-character-class'?: Linter.RuleEntry<[]> /** - * disallow using shorthand fragment syntax - * @see https://eslint-react.xyz/docs/rules/avoid-shorthand-fragment - */ - 'react-x/avoid-shorthand-fragment'?: Linter.RuleEntry<[]> - /** - * require a 'ref' parameter to be set when using 'forwardRef' - * @see https://eslint-react.xyz/docs/rules/ensure-forward-ref-using-ref + * disallow empty group + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-group.html */ - 'react-x/ensure-forward-ref-using-ref'?: Linter.RuleEntry<[]> + 'regexp/no-empty-group'?: Linter.RuleEntry<[]> /** - * disallow duplicate props - * @see https://eslint-react.xyz/docs/rules/no-duplicate-jsx-props + * disallow empty lookahead assertion or empty lookbehind assertion + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-lookarounds-assertion.html */ - 'react-x/jsx-no-duplicate-props'?: Linter.RuleEntry<[]> + 'regexp/no-empty-lookarounds-assertion'?: Linter.RuleEntry<[]> /** - * helpes `eslint/no-unused-vars` to correctly mark JSX variables as used. - * @see https://eslint-react.xyz/docs/rules/use-jsx-vars + * disallow empty string literals in character classes + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-string-literal.html */ - 'react-x/jsx-uses-vars'?: Linter.RuleEntry<[]> + 'regexp/no-empty-string-literal'?: Linter.RuleEntry<[]> /** - * disallow accessing 'this.state' within 'setState' - * @see https://eslint-react.xyz/docs/rules/no-access-state-in-setstate + * disallow escape backspace (`[\b]`) + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-escape-backspace.html */ - 'react-x/no-access-state-in-setstate'?: Linter.RuleEntry<[]> + 'regexp/no-escape-backspace'?: Linter.RuleEntry<[]> /** - * disallow using Array index as 'key' - * @see https://eslint-react.xyz/docs/rules/no-array-index-key + * disallow unnecessary nested lookaround assertions + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-extra-lookaround-assertions.html */ - 'react-x/no-array-index-key'?: Linter.RuleEntry<[]> + 'regexp/no-extra-lookaround-assertions'?: Linter.RuleEntry<[]> /** - * disallow using 'Children.count' - * @see https://eslint-react.xyz/docs/rules/no-children-count + * disallow invalid regular expression strings in `RegExp` constructors + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-invalid-regexp.html */ - 'react-x/no-children-count'?: Linter.RuleEntry<[]> + 'regexp/no-invalid-regexp'?: Linter.RuleEntry<[]> /** - * disallow using 'Children.forEach' - * @see https://eslint-react.xyz/docs/rules/no-children-for-each + * disallow invisible raw character + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-invisible-character.html */ - 'react-x/no-children-for-each'?: Linter.RuleEntry<[]> + 'regexp/no-invisible-character'?: Linter.RuleEntry<[]> /** - * disallow using 'Children.map' - * @see https://eslint-react.xyz/docs/rules/no-children-map + * disallow lazy quantifiers at the end of an expression + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-lazy-ends.html */ - 'react-x/no-children-map'?: Linter.RuleEntry<[]> + 'regexp/no-lazy-ends'?: Linter.RuleEntry /** - * disallow using 'Children.only' - * @see https://eslint-react.xyz/docs/rules/no-children-only + * disallow legacy RegExp features + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-legacy-features.html */ - 'react-x/no-children-only'?: Linter.RuleEntry<[]> + 'regexp/no-legacy-features'?: Linter.RuleEntry /** - * disallow passing 'children' as props - * @see https://eslint-react.xyz/docs/rules/no-children-prop + * disallow capturing groups that do not behave as one would expect + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-misleading-capturing-group.html */ - 'react-x/no-children-prop'?: Linter.RuleEntry<[]> + 'regexp/no-misleading-capturing-group'?: Linter.RuleEntry /** - * disallow using 'Children.toArray' - * @see https://eslint-react.xyz/docs/rules/no-children-to-array + * disallow multi-code-point characters in character classes and quantifiers + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-misleading-unicode-character.html */ - 'react-x/no-children-to-array'?: Linter.RuleEntry<[]> + 'regexp/no-misleading-unicode-character'?: Linter.RuleEntry /** - * disallow using class components - * @see https://eslint-react.xyz/docs/rules/no-class-component + * disallow missing `g` flag in patterns used in `String#matchAll` and `String#replaceAll` + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-missing-g-flag.html */ - 'react-x/no-class-component'?: Linter.RuleEntry<[]> + 'regexp/no-missing-g-flag'?: Linter.RuleEntry /** - * disallow using 'cloneElement' - * @see https://eslint-react.xyz/docs/rules/no-clone-element + * disallow non-standard flags + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-non-standard-flag.html */ - 'react-x/no-clone-element'?: Linter.RuleEntry<[]> + 'regexp/no-non-standard-flag'?: Linter.RuleEntry<[]> /** - * disallow comments from being inserted as text nodes - * @see https://eslint-react.xyz/docs/rules/no-comment-textnodes + * disallow obscure character ranges + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-obscure-range.html */ - 'react-x/no-comment-textnodes'?: Linter.RuleEntry<[]> + 'regexp/no-obscure-range'?: Linter.RuleEntry /** - * disallow complex conditional rendering - * @see https://eslint-react.xyz/docs/rules/no-complex-conditional-rendering + * disallow octal escape sequence + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-octal.html */ - 'react-x/no-complex-conditional-rendering'?: Linter.RuleEntry<[]> + 'regexp/no-octal'?: Linter.RuleEntry<[]> /** - * disallow complex conditional rendering - * @see https://eslint-react.xyz/docs/rules/no-complex-conditional-rendering + * disallow optional assertions + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-optional-assertion.html */ - 'react-x/no-complicated-conditional-rendering'?: Linter.RuleEntry<[]> + 'regexp/no-optional-assertion'?: Linter.RuleEntry<[]> /** - * disallow using 'componentWillMount' - * @see https://eslint-react.xyz/docs/rules/no-component-will-mount + * disallow backreferences that reference a group that might not be matched + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-potentially-useless-backreference.html */ - 'react-x/no-component-will-mount'?: Linter.RuleEntry<[]> + 'regexp/no-potentially-useless-backreference'?: Linter.RuleEntry<[]> /** - * disallow using 'componentWillReceiveProps' - * @see https://eslint-react.xyz/docs/rules/no-component-will-receive-props + * disallow standalone backslashes (`\`) + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-standalone-backslash.html */ - 'react-x/no-component-will-receive-props'?: Linter.RuleEntry<[]> + 'regexp/no-standalone-backslash'?: Linter.RuleEntry<[]> /** - * disallow using 'componentWillReceiveProps' - * @see https://eslint-react.xyz/docs/rules/no-component-will-update + * disallow exponential and polynomial backtracking + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-super-linear-backtracking.html */ - 'react-x/no-component-will-update'?: Linter.RuleEntry<[]> + 'regexp/no-super-linear-backtracking'?: Linter.RuleEntry /** - * disallow the use of '' - * @see https://eslint-react.xyz/docs/rules/no-context-provider + * disallow quantifiers that cause quadratic moves + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-super-linear-move.html */ - 'react-x/no-context-provider'?: Linter.RuleEntry<[]> + 'regexp/no-super-linear-move'?: Linter.RuleEntry /** - * disallow using 'createRef' in function components - * @see https://eslint-react.xyz/docs/rules/no-create-ref + * disallow trivially nested assertions + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-trivially-nested-assertion.html */ - 'react-x/no-create-ref'?: Linter.RuleEntry<[]> + 'regexp/no-trivially-nested-assertion'?: Linter.RuleEntry<[]> /** - * disallow using 'defaultProps' property in components - * @see https://eslint-react.xyz/docs/rules/no-default-props + * disallow nested quantifiers that can be rewritten as one quantifier + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-trivially-nested-quantifier.html */ - 'react-x/no-default-props'?: Linter.RuleEntry<[]> + 'regexp/no-trivially-nested-quantifier'?: Linter.RuleEntry<[]> /** - * disallow direct mutation of state - * @see https://eslint-react.xyz/docs/rules/no-direct-mutation-state + * disallow unused capturing group + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-unused-capturing-group.html */ - 'react-x/no-direct-mutation-state'?: Linter.RuleEntry<[]> + 'regexp/no-unused-capturing-group'?: Linter.RuleEntry /** - * disallow duplicate props - * @see https://eslint-react.xyz/docs/rules/no-duplicate-jsx-props + * disallow assertions that are known to always accept (or reject) + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-assertions.html */ - 'react-x/no-duplicate-jsx-props'?: Linter.RuleEntry<[]> + 'regexp/no-useless-assertions'?: Linter.RuleEntry<[]> /** - * disallow duplicate keys when rendering list - * @see https://eslint-react.xyz/docs/rules/no-duplicate-key + * disallow useless backreferences in regular expressions + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-backreference.html */ - 'react-x/no-duplicate-key'?: Linter.RuleEntry<[]> + 'regexp/no-useless-backreference'?: Linter.RuleEntry<[]> /** - * disallow the use of 'forwardRef' - * @see https://eslint-react.xyz/docs/rules/no-forward-ref + * disallow character class with one character + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-character-class.html */ - 'react-x/no-forward-ref'?: Linter.RuleEntry<[]> + 'regexp/no-useless-character-class'?: Linter.RuleEntry /** - * disallow implicit 'key' props - * @see https://eslint-react.xyz/docs/rules/no-implicit-key + * disallow useless `$` replacements in replacement string + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-dollar-replacements.html */ - 'react-x/no-implicit-key'?: Linter.RuleEntry<[]> + 'regexp/no-useless-dollar-replacements'?: Linter.RuleEntry<[]> /** - * disallow problematic leaked values from being rendered - * @see https://eslint-react.xyz/docs/rules/no-leaked-conditional-rendering + * disallow unnecessary escape characters in RegExp + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-escape.html */ - 'react-x/no-leaked-conditional-rendering'?: Linter.RuleEntry<[]> + 'regexp/no-useless-escape'?: Linter.RuleEntry<[]> /** - * require 'displayName' for 'memo' and 'forwardRef' components - * @see https://eslint-react.xyz/docs/rules/no-missing-component-display-name + * disallow unnecessary regex flags + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-flag.html */ - 'react-x/no-missing-component-display-name'?: Linter.RuleEntry<[]> + 'regexp/no-useless-flag'?: Linter.RuleEntry /** - * require 'key' when rendering list - * @see https://eslint-react.xyz/docs/rules/no-missing-key + * disallow unnecessarily non-greedy quantifiers + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-lazy.html */ - 'react-x/no-missing-key'?: Linter.RuleEntry<[]> + 'regexp/no-useless-lazy'?: Linter.RuleEntry<[]> /** - * disallow using unstable nested components - * @see https://eslint-react.xyz/docs/rules/no-nested-components + * disallow unnecessary non-capturing group + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-non-capturing-group.html */ - 'react-x/no-nested-components'?: Linter.RuleEntry<[]> + 'regexp/no-useless-non-capturing-group'?: Linter.RuleEntry /** - * disallow using 'propTypes' property in components - * @see https://eslint-react.xyz/docs/rules/no-prop-types + * disallow quantifiers that can be removed + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-quantifier.html */ - 'react-x/no-prop-types'?: Linter.RuleEntry<[]> + 'regexp/no-useless-quantifier'?: Linter.RuleEntry<[]> /** - * disallow using 'shouldComponentUpdate' in class component extends 'React.PureComponent' - * @see https://eslint-react.xyz/docs/rules/no-redundant-should-component-update + * disallow unnecessary character ranges + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-range.html */ - 'react-x/no-redundant-should-component-update'?: Linter.RuleEntry<[]> + 'regexp/no-useless-range'?: Linter.RuleEntry<[]> /** - * disallow using 'setState' in 'componentDidMount' - * @see https://eslint-react.xyz/docs/rules/no-set-state-in-component-did-mount + * disallow unnecessary elements in expression character classes + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-set-operand.html */ - 'react-x/no-set-state-in-component-did-mount'?: Linter.RuleEntry<[]> + 'regexp/no-useless-set-operand'?: Linter.RuleEntry<[]> /** - * disallow using 'setState' in 'componentDidUpdate' - * @see https://eslint-react.xyz/docs/rules/no-set-state-in-component-did-update + * disallow string disjunction of single characters in `\q{...}` + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-string-literal.html */ - 'react-x/no-set-state-in-component-did-update'?: Linter.RuleEntry<[]> + 'regexp/no-useless-string-literal'?: Linter.RuleEntry<[]> /** - * disallow using 'setState' in 'componentWillUpdate' - * @see https://eslint-react.xyz/docs/rules/no-set-state-in-component-will-update + * disallow unnecessary `{n,m}` quantifier + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-two-nums-quantifier.html */ - 'react-x/no-set-state-in-component-will-update'?: Linter.RuleEntry<[]> + 'regexp/no-useless-two-nums-quantifier'?: Linter.RuleEntry<[]> /** - * disallow using deprecated string refs - * @see https://eslint-react.xyz/docs/rules/no-string-refs + * disallow quantifiers with a maximum of zero + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-zero-quantifier.html */ - 'react-x/no-string-refs'?: Linter.RuleEntry<[]> + 'regexp/no-zero-quantifier'?: Linter.RuleEntry<[]> /** - * disallow using 'UNSAFE_componentWillMount' - * @see https://eslint-react.xyz/docs/rules/no-unsafe-component-will-mount + * disallow the alternatives of lookarounds that end with a non-constant quantifier + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/optimal-lookaround-quantifier.html */ - 'react-x/no-unsafe-component-will-mount'?: Linter.RuleEntry<[]> + 'regexp/optimal-lookaround-quantifier'?: Linter.RuleEntry<[]> /** - * disallow using 'UNSAFE_componentWillReceiveProps' - * @see https://eslint-react.xyz/docs/rules/no-unsafe-component-will-receive-props + * require optimal quantifiers for concatenated quantifiers + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/optimal-quantifier-concatenation.html */ - 'react-x/no-unsafe-component-will-receive-props'?: Linter.RuleEntry<[]> + 'regexp/optimal-quantifier-concatenation'?: Linter.RuleEntry /** - * disallow using 'UNSAFE_componentWillUpdate' - * @see https://eslint-react.xyz/docs/rules/no-unsafe-component-will-update + * enforce using character class + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-character-class.html */ - 'react-x/no-unsafe-component-will-update'?: Linter.RuleEntry<[]> + 'regexp/prefer-character-class'?: Linter.RuleEntry /** - * disallow passing constructed values to context providers - * @see https://eslint-react.xyz/docs/rules/no-unstable-context-value + * enforce using `\d` + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-d.html */ - 'react-x/no-unstable-context-value'?: Linter.RuleEntry<[]> + 'regexp/prefer-d'?: Linter.RuleEntry /** - * disallow using unstable value as default param in function component - * @see https://eslint-react.xyz/docs/rules/no-unstable-default-props + * enforces escape of replacement `$` character (`$$`). + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-escape-replacement-dollar-char.html */ - 'react-x/no-unstable-default-props'?: Linter.RuleEntry<[]> + 'regexp/prefer-escape-replacement-dollar-char'?: Linter.RuleEntry<[]> /** - * disallow unused class component members - * @see https://eslint-react.xyz/docs/rules/no-unused-class-component-members + * prefer lookarounds over capturing group that do not replace + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-lookaround.html */ - 'react-x/no-unused-class-component-members'?: Linter.RuleEntry<[]> + 'regexp/prefer-lookaround'?: Linter.RuleEntry /** - * disallow unused state of class component - * @see https://eslint-react.xyz/docs/rules/no-unused-state + * enforce using named backreferences + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-named-backreference.html */ - 'react-x/no-unused-state'?: Linter.RuleEntry<[]> + 'regexp/prefer-named-backreference'?: Linter.RuleEntry<[]> /** - * disallow unnecessary fragments - * @see https://eslint-react.xyz/docs/rules/no-useless-fragment + * enforce using named capture groups + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-named-capture-group.html */ - 'react-x/no-useless-fragment'?: Linter.RuleEntry + 'regexp/prefer-named-capture-group'?: Linter.RuleEntry<[]> /** - * enforce using destructuring assignment in component props and context - * @see https://eslint-react.xyz/docs/rules/prefer-destructuring-assignment + * enforce using named replacement + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-named-replacement.html */ - 'react-x/prefer-destructuring-assignment'?: Linter.RuleEntry<[]> + 'regexp/prefer-named-replacement'?: Linter.RuleEntry /** - * enforce React is imported via a namespace import - * @see https://eslint-react.xyz/docs/rules/prefer-react-namespace-import + * enforce using `+` quantifier + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-plus-quantifier.html */ - 'react-x/prefer-react-namespace-import'?: Linter.RuleEntry<[]> + 'regexp/prefer-plus-quantifier'?: Linter.RuleEntry<[]> /** - * enforce read-only props in components - * @see https://eslint-react.xyz/docs/rules/prefer-read-only-props + * prefer predefined assertion over equivalent lookarounds + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-predefined-assertion.html */ - 'react-x/prefer-read-only-props'?: Linter.RuleEntry<[]> + 'regexp/prefer-predefined-assertion'?: Linter.RuleEntry<[]> /** - * enforce using shorthand boolean attributes - * @see https://eslint-react.xyz/docs/rules/prefer-shorthand-boolean + * enforce using quantifier + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-quantifier.html */ - 'react-x/prefer-shorthand-boolean'?: Linter.RuleEntry<[]> + 'regexp/prefer-quantifier'?: Linter.RuleEntry<[]> /** - * enforce using fragment syntax instead of 'Fragment' component - * @see https://eslint-react.xyz/docs/rules/prefer-shorthand-fragment + * enforce using `?` quantifier + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-question-quantifier.html */ - 'react-x/prefer-shorthand-fragment'?: Linter.RuleEntry<[]> + 'regexp/prefer-question-quantifier'?: Linter.RuleEntry<[]> /** - * helpes `eslint/no-unused-vars` to correctly mark JSX variables as used. - * @see https://eslint-react.xyz/docs/rules/use-jsx-vars + * enforce using character class range + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-range.html */ - 'react-x/use-jsx-vars'?: Linter.RuleEntry<[]> + 'regexp/prefer-range'?: Linter.RuleEntry /** - * Enforces consistent naming for boolean props - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/boolean-prop-naming.md + * enforce that `RegExp#exec` is used instead of `String#match` if no global flag is provided + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-regexp-exec.html */ - 'react/boolean-prop-naming'?: Linter.RuleEntry + 'regexp/prefer-regexp-exec'?: Linter.RuleEntry<[]> /** - * Disallow usage of `button` elements without an explicit `type` attribute - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/button-has-type.md + * enforce that `RegExp#test` is used instead of `String#match` and `RegExp#exec` + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-regexp-test.html */ - 'react/button-has-type'?: Linter.RuleEntry + 'regexp/prefer-regexp-test'?: Linter.RuleEntry<[]> /** - * Enforce using `onChange` or `readonly` attribute when `checked` is used - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/checked-requires-onchange-or-readonly.md + * enforce using result array `groups` + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-result-array-groups.html */ - 'react/checked-requires-onchange-or-readonly'?: Linter.RuleEntry + 'regexp/prefer-result-array-groups'?: Linter.RuleEntry /** - * Enforce all defaultProps have a corresponding non-required PropType - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/default-props-match-prop-types.md + * prefer character class set operations instead of lookarounds + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-set-operation.html */ - 'react/default-props-match-prop-types'?: Linter.RuleEntry + 'regexp/prefer-set-operation'?: Linter.RuleEntry<[]> /** - * Enforce consistent usage of destructuring assignment of props, state, and context - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/destructuring-assignment.md + * enforce using `*` quantifier + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-star-quantifier.html */ - 'react/destructuring-assignment'?: Linter.RuleEntry + 'regexp/prefer-star-quantifier'?: Linter.RuleEntry<[]> /** - * Disallow missing displayName in a React component definition - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/display-name.md + * enforce use of unicode codepoint escapes + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-unicode-codepoint-escapes.html */ - 'react/display-name'?: Linter.RuleEntry + 'regexp/prefer-unicode-codepoint-escapes'?: Linter.RuleEntry<[]> /** - * Disallow certain props on components - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-component-props.md + * enforce using `\w` + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-w.html */ - 'react/forbid-component-props'?: Linter.RuleEntry + 'regexp/prefer-w'?: Linter.RuleEntry<[]> /** - * Disallow certain props on DOM Nodes - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-dom-props.md + * enforce the use of the `u` flag + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/require-unicode-regexp.html */ - 'react/forbid-dom-props'?: Linter.RuleEntry + 'regexp/require-unicode-regexp'?: Linter.RuleEntry<[]> /** - * Disallow certain elements - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-elements.md + * enforce the use of the `v` flag + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/require-unicode-sets-regexp.html */ - 'react/forbid-elements'?: Linter.RuleEntry + 'regexp/require-unicode-sets-regexp'?: Linter.RuleEntry<[]> /** - * Disallow using another component's propTypes - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-foreign-prop-types.md + * require simplify set operations + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/simplify-set-operations.html */ - 'react/forbid-foreign-prop-types'?: Linter.RuleEntry + 'regexp/simplify-set-operations'?: Linter.RuleEntry<[]> /** - * Disallow certain propTypes - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-prop-types.md + * sort alternatives if order doesn't matter + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/sort-alternatives.html */ - 'react/forbid-prop-types'?: Linter.RuleEntry + 'regexp/sort-alternatives'?: Linter.RuleEntry<[]> /** - * Require all forwardRef components include a ref parameter - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forward-ref-uses-ref.md + * enforces elements order in character class + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/sort-character-class-elements.html */ - 'react/forward-ref-uses-ref'?: Linter.RuleEntry<[]> + 'regexp/sort-character-class-elements'?: Linter.RuleEntry /** - * Enforce a specific function type for function components - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/function-component-definition.md + * require regex flags to be sorted + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/sort-flags.html */ - 'react/function-component-definition'?: Linter.RuleEntry + 'regexp/sort-flags'?: Linter.RuleEntry<[]> /** - * Ensure destructuring and symmetric naming of useState hook value and setter variables - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/hook-use-state.md + * disallow not strictly valid regular expressions + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/strict.html */ - 'react/hook-use-state'?: Linter.RuleEntry + 'regexp/strict'?: Linter.RuleEntry<[]> /** - * Enforce sandbox attribute on iframe elements - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/iframe-missing-sandbox.md + * enforce consistent usage of unicode escape or unicode codepoint escape + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/unicode-escape.html */ - 'react/iframe-missing-sandbox'?: Linter.RuleEntry<[]> + 'regexp/unicode-escape'?: Linter.RuleEntry /** - * Enforce boolean attributes notation in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-boolean-value.md + * enforce consistent naming of unicode properties + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/unicode-property.html */ - 'react/jsx-boolean-value'?: Linter.RuleEntry + 'regexp/unicode-property'?: Linter.RuleEntry /** - * Enforce or disallow spaces inside of curly braces in JSX attributes and expressions - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-child-element-spacing.md + * use the `i` flag if it simplifies the pattern + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/use-ignore-case.html */ - 'react/jsx-child-element-spacing'?: Linter.RuleEntry<[]> + 'regexp/use-ignore-case'?: Linter.RuleEntry<[]> /** - * Enforce closing bracket location in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-closing-bracket-location.md + * Automatically sort exports. + * @see https://github.com/lydell/eslint-plugin-simple-import-sort#sort-order */ - 'react/jsx-closing-bracket-location'?: Linter.RuleEntry + 'simple-import-sort/exports'?: Linter.RuleEntry<[]> /** - * Enforce closing tag location for multiline JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-closing-tag-location.md + * Automatically sort imports. + * @see https://github.com/lydell/eslint-plugin-simple-import-sort#sort-order */ - 'react/jsx-closing-tag-location'?: Linter.RuleEntry + 'simple-import-sort/imports'?: Linter.RuleEntry /** - * Disallow unnecessary JSX expressions when literals alone are sufficient or enforce JSX expressions on literals in JSX children or attributes - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-curly-brace-presence.md + * Alternatives in regular expressions should be grouped when used with anchors + * @see https://sonarsource.github.io/rspec/#/rspec/S5850/javascript */ - 'react/jsx-curly-brace-presence'?: Linter.RuleEntry + 'sonarjs/anchor-precedence'?: Linter.RuleEntry<[]> /** - * Enforce consistent linebreaks in curly braces in JSX attributes and expressions - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-curly-newline.md + * Arguments to built-in functions should match documented types + * @see https://sonarsource.github.io/rspec/#/rspec/S3782/javascript */ - 'react/jsx-curly-newline'?: Linter.RuleEntry + 'sonarjs/argument-type'?: Linter.RuleEntry<[]> /** - * Enforce or disallow spaces inside of curly braces in JSX attributes and expressions - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-curly-spacing.md + * Parameters should be passed in the correct order + * @see https://sonarsource.github.io/rspec/#/rspec/S2234/javascript */ - 'react/jsx-curly-spacing'?: Linter.RuleEntry + 'sonarjs/arguments-order'?: Linter.RuleEntry /** - * Enforce or disallow spaces around equal signs in JSX attributes - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-equals-spacing.md + * "arguments" should not be accessed directly + * @see https://sonarsource.github.io/rspec/#/rspec/S3513/javascript */ - 'react/jsx-equals-spacing'?: Linter.RuleEntry + 'sonarjs/arguments-usage'?: Linter.RuleEntry /** - * Disallow file extensions that may contain JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-filename-extension.md + * Callbacks of array methods should have return statements + * @see https://sonarsource.github.io/rspec/#/rspec/S3796/javascript */ - 'react/jsx-filename-extension'?: Linter.RuleEntry + 'sonarjs/array-callback-without-return'?: Linter.RuleEntry<[]> /** - * Enforce proper position of the first property in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-first-prop-new-line.md + * Array constructors should not be used + * @see https://sonarsource.github.io/rspec/#/rspec/S1528/javascript */ - 'react/jsx-first-prop-new-line'?: Linter.RuleEntry + 'sonarjs/array-constructor'?: Linter.RuleEntry<[]> /** - * Enforce shorthand or standard form for React fragments - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-fragments.md + * Braces and parentheses should be used consistently with arrow functions + * @see https://sonarsource.github.io/rspec/#/rspec/S3524/javascript */ - 'react/jsx-fragments'?: Linter.RuleEntry + 'sonarjs/arrow-function-convention'?: Linter.RuleEntry /** - * Enforce event handler naming conventions in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-handler-names.md + * Tests should include assertions + * @see https://sonarsource.github.io/rspec/#/rspec/S2699/javascript */ - 'react/jsx-handler-names'?: Linter.RuleEntry + 'sonarjs/assertions-in-tests'?: Linter.RuleEntry<[]> /** - * Enforce JSX indentation - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-indent.md + * Creating public APIs is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6333/javascript */ - 'react/jsx-indent'?: Linter.RuleEntry + 'sonarjs/aws-apigateway-public-api'?: Linter.RuleEntry<[]> /** - * Enforce props indentation in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-indent-props.md + * Allowing public network access to cloud resources is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6329/javascript */ - 'react/jsx-indent-props'?: Linter.RuleEntry + 'sonarjs/aws-ec2-rds-dms-public'?: Linter.RuleEntry<[]> /** - * Disallow missing `key` props in iterators/collection literals - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-key.md + * Using unencrypted EBS volumes is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6275/javascript */ - 'react/jsx-key'?: Linter.RuleEntry + 'sonarjs/aws-ec2-unencrypted-ebs-volume'?: Linter.RuleEntry<[]> /** - * Enforce JSX maximum depth - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-max-depth.md + * Using unencrypted EFS file systems is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6332/javascript */ - 'react/jsx-max-depth'?: Linter.RuleEntry + 'sonarjs/aws-efs-unencrypted'?: Linter.RuleEntry<[]> /** - * Enforce maximum of props on a single line in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-max-props-per-line.md + * Policies granting all privileges are security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6302/javascript */ - 'react/jsx-max-props-per-line'?: Linter.RuleEntry + 'sonarjs/aws-iam-all-privileges'?: Linter.RuleEntry /** - * Require or prevent a new line after jsx elements and expressions. - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-newline.md + * Policies granting access to all resources of an account are security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6304/javascript */ - 'react/jsx-newline'?: Linter.RuleEntry + 'sonarjs/aws-iam-all-resources-accessible'?: Linter.RuleEntry /** - * Disallow `.bind()` or arrow functions in JSX props - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-bind.md + * AWS IAM policies should limit the scope of permissions given + * @see https://sonarsource.github.io/rspec/#/rspec/S6317/javascript */ - 'react/jsx-no-bind'?: Linter.RuleEntry + 'sonarjs/aws-iam-privilege-escalation'?: Linter.RuleEntry /** - * Disallow comments from being inserted as text nodes - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-comment-textnodes.md + * Policies authorizing public access to resources are security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6270/javascript */ - 'react/jsx-no-comment-textnodes'?: Linter.RuleEntry<[]> + 'sonarjs/aws-iam-public-access'?: Linter.RuleEntry /** - * Disallows JSX context provider values from taking values that will cause needless rerenders - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-constructed-context-values.md + * Using unencrypted Elasticsearch domains is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6308/javascript */ - 'react/jsx-no-constructed-context-values'?: Linter.RuleEntry<[]> + 'sonarjs/aws-opensearchservice-domain'?: Linter.RuleEntry<[]> /** - * Disallow duplicate properties in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-duplicate-props.md + * Using unencrypted RDS DB resources is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6303/javascript */ - 'react/jsx-no-duplicate-props'?: Linter.RuleEntry + 'sonarjs/aws-rds-unencrypted-databases'?: Linter.RuleEntry<[]> /** - * Disallow problematic leaked values from being rendered - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-leaked-render.md + * Administration services access should be restricted to specific IP addresses + * @see https://sonarsource.github.io/rspec/#/rspec/S6321/javascript */ - 'react/jsx-no-leaked-render'?: Linter.RuleEntry + 'sonarjs/aws-restricted-ip-admin-access'?: Linter.RuleEntry<[]> /** - * Disallow usage of string literals in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-literals.md + * Granting access to S3 buckets to all or authenticated users is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6265/javascript */ - 'react/jsx-no-literals'?: Linter.RuleEntry + 'sonarjs/aws-s3-bucket-granted-access'?: Linter.RuleEntry /** - * Disallow usage of `javascript:` URLs - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-script-url.md + * Authorizing HTTP communications with S3 buckets is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6249/javascript */ - 'react/jsx-no-script-url'?: Linter.RuleEntry + 'sonarjs/aws-s3-bucket-insecure-http'?: Linter.RuleEntry<[]> /** - * Disallow `target="_blank"` attribute without `rel="noreferrer"` - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-target-blank.md + * Allowing public ACLs or policies on a S3 bucket is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6281/javascript */ - 'react/jsx-no-target-blank'?: Linter.RuleEntry + 'sonarjs/aws-s3-bucket-public-access'?: Linter.RuleEntry /** - * Disallow undeclared variables in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-undef.md + * Disabling server-side encryption of S3 buckets is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6245/javascript + * @deprecated */ - 'react/jsx-no-undef'?: Linter.RuleEntry + 'sonarjs/aws-s3-bucket-server-encryption'?: Linter.RuleEntry /** - * Disallow unnecessary fragments - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-useless-fragment.md + * Disabling versioning of S3 buckets is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6252/javascript */ - 'react/jsx-no-useless-fragment'?: Linter.RuleEntry + 'sonarjs/aws-s3-bucket-versioning'?: Linter.RuleEntry /** - * Require one JSX element per line - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-one-expression-per-line.md + * Using unencrypted SageMaker notebook instances is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6319/javascript */ - 'react/jsx-one-expression-per-line'?: Linter.RuleEntry + 'sonarjs/aws-sagemaker-unencrypted-notebook'?: Linter.RuleEntry<[]> /** - * Enforce PascalCase for user-defined JSX components - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-pascal-case.md + * Using unencrypted SNS topics is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6327/javascript */ - 'react/jsx-pascal-case'?: Linter.RuleEntry + 'sonarjs/aws-sns-unencrypted-topics'?: Linter.RuleEntry<[]> /** - * Disallow multiple spaces between inline JSX props - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-props-no-multi-spaces.md + * Using unencrypted SQS queues is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6330/javascript */ - 'react/jsx-props-no-multi-spaces'?: Linter.RuleEntry<[]> + 'sonarjs/aws-sqs-unencrypted-queue'?: Linter.RuleEntry<[]> /** - * Disallow JSX prop spreading the same identifier multiple times - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-props-no-spread-multi.md + * Bitwise operators should not be used in boolean contexts + * @see https://sonarsource.github.io/rspec/#/rspec/S1529/javascript */ - 'react/jsx-props-no-spread-multi'?: Linter.RuleEntry<[]> + 'sonarjs/bitwise-operators'?: Linter.RuleEntry<[]> /** - * Disallow JSX prop spreading - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-props-no-spreading.md + * Variables should be used in the blocks where they are declared + * @see https://sonarsource.github.io/rspec/#/rspec/S2392/javascript */ - 'react/jsx-props-no-spreading'?: Linter.RuleEntry + 'sonarjs/block-scoped-var'?: Linter.RuleEntry /** - * Enforce defaultProps declarations alphabetical sorting - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-sort-default-props.md - * @deprecated + * Optional boolean parameters should have default value + * @see https://sonarsource.github.io/rspec/#/rspec/S4798/javascript */ - 'react/jsx-sort-default-props'?: Linter.RuleEntry + 'sonarjs/bool-param-default'?: Linter.RuleEntry<[]> /** - * Enforce props alphabetical sorting - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-sort-props.md + * Function call arguments should not start on new lines + * @see https://sonarsource.github.io/rspec/#/rspec/S1472/javascript */ - 'react/jsx-sort-props'?: Linter.RuleEntry + 'sonarjs/call-argument-line'?: Linter.RuleEntry<[]> /** - * Enforce spacing before closing bracket in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-space-before-closing.md + * Disabling Certificate Transparency monitoring is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5742/javascript * @deprecated */ - 'react/jsx-space-before-closing'?: Linter.RuleEntry + 'sonarjs/certificate-transparency'?: Linter.RuleEntry /** - * Enforce whitespace in and around the JSX opening and closing brackets - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-tag-spacing.md + * Chai assertions should have only one reason to succeed + * @see https://sonarsource.github.io/rspec/#/rspec/S6092/javascript */ - 'react/jsx-tag-spacing'?: Linter.RuleEntry + 'sonarjs/chai-determinate-assertion'?: Linter.RuleEntry<[]> /** - * Disallow React to be incorrectly marked as unused - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-uses-react.md + * Class names should comply with a naming convention + * @see https://sonarsource.github.io/rspec/#/rspec/S101/javascript */ - 'react/jsx-uses-react'?: Linter.RuleEntry<[]> + 'sonarjs/class-name'?: Linter.RuleEntry /** - * Disallow variables used in JSX to be incorrectly marked as unused - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-uses-vars.md + * Class methods should be used instead of "prototype" assignments + * @see https://sonarsource.github.io/rspec/#/rspec/S3525/javascript */ - 'react/jsx-uses-vars'?: Linter.RuleEntry<[]> + 'sonarjs/class-prototype'?: Linter.RuleEntry<[]> /** - * Disallow missing parentheses around multiline JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-wrap-multilines.md + * Dynamically executing code is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S1523/javascript */ - 'react/jsx-wrap-multilines'?: Linter.RuleEntry + 'sonarjs/code-eval'?: Linter.RuleEntry<[]> /** - * Disallow when this.state is accessed within setState - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-access-state-in-setstate.md + * Cognitive Complexity of functions should not be too high + * @see https://sonarsource.github.io/rspec/#/rspec/S3776/javascript */ - 'react/no-access-state-in-setstate'?: Linter.RuleEntry<[]> + 'sonarjs/cognitive-complexity'?: Linter.RuleEntry /** - * Disallow adjacent inline elements not separated by whitespace. - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-adjacent-inline-elements.md + * Comma and logical OR operators should not be used in switch cases + * @see https://sonarsource.github.io/rspec/#/rspec/S3616/javascript */ - 'react/no-adjacent-inline-elements'?: Linter.RuleEntry<[]> + 'sonarjs/comma-or-logical-or-case'?: Linter.RuleEntry<[]> /** - * Disallow usage of Array index in keys - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-array-index-key.md + * Track comments matching a regular expression + * @see https://sonarsource.github.io/rspec/#/rspec/S124/javascript */ - 'react/no-array-index-key'?: Linter.RuleEntry<[]> + 'sonarjs/comment-regex'?: Linter.RuleEntry /** - * Lifecycle methods should be methods on the prototype, not class fields - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-arrow-function-lifecycle.md + * Regular expression quantifiers and character classes should be used concisely + * @see https://sonarsource.github.io/rspec/#/rspec/S6353/javascript */ - 'react/no-arrow-function-lifecycle'?: Linter.RuleEntry<[]> + 'sonarjs/concise-regex'?: Linter.RuleEntry<[]> /** - * Disallow passing of children as props - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-children-prop.md + * A conditionally executed single line should be denoted by indentation + * @see https://sonarsource.github.io/rspec/#/rspec/S3973/javascript + * @deprecated */ - 'react/no-children-prop'?: Linter.RuleEntry + 'sonarjs/conditional-indentation'?: Linter.RuleEntry /** - * Disallow usage of dangerous JSX properties - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-danger.md + * Allowing confidential information to be logged is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5757/javascript */ - 'react/no-danger'?: Linter.RuleEntry + 'sonarjs/confidential-information-logging'?: Linter.RuleEntry /** - * Disallow when a DOM element is using both children and dangerouslySetInnerHTML - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-danger-with-children.md + * Objects should not be created to be dropped immediately without being used + * @see https://sonarsource.github.io/rspec/#/rspec/S1848/javascript */ - 'react/no-danger-with-children'?: Linter.RuleEntry<[]> + 'sonarjs/constructor-for-side-effects'?: Linter.RuleEntry<[]> /** - * Disallow usage of deprecated methods - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-deprecated.md + * Allowing requests with excessive content length is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5693/javascript */ - 'react/no-deprecated'?: Linter.RuleEntry<[]> + 'sonarjs/content-length'?: Linter.RuleEntry /** - * Disallow usage of setState in componentDidMount - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-did-mount-set-state.md + * Disabling content security policy fetch directives is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5728/javascript */ - 'react/no-did-mount-set-state'?: Linter.RuleEntry + 'sonarjs/content-security-policy'?: Linter.RuleEntry /** - * Disallow usage of setState in componentDidUpdate - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-did-update-set-state.md + * Creating cookies without the "HttpOnly" flag is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S3330/javascript */ - 'react/no-did-update-set-state'?: Linter.RuleEntry + 'sonarjs/cookie-no-httponly'?: Linter.RuleEntry /** - * Disallow direct mutation of this.state - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-direct-mutation-state.md + * Writing cookies is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S2255/javascript + * @deprecated */ - 'react/no-direct-mutation-state'?: Linter.RuleEntry<[]> + 'sonarjs/cookies'?: Linter.RuleEntry<[]> /** - * Disallow usage of findDOMNode - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-find-dom-node.md + * Having a permissive Cross-Origin Resource Sharing policy is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5122/javascript */ - 'react/no-find-dom-node'?: Linter.RuleEntry<[]> + 'sonarjs/cors'?: Linter.RuleEntry /** - * Disallow usage of invalid attributes - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-invalid-html-attribute.md + * Disabling CSRF protections is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S4502/javascript */ - 'react/no-invalid-html-attribute'?: Linter.RuleEntry + 'sonarjs/csrf'?: Linter.RuleEntry /** - * Disallow usage of isMounted - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-is-mounted.md + * Cyclomatic Complexity of functions should not be too high + * @see https://sonarsource.github.io/rspec/#/rspec/S1541/javascript */ - 'react/no-is-mounted'?: Linter.RuleEntry<[]> + 'sonarjs/cyclomatic-complexity'?: Linter.RuleEntry /** - * Disallow multiple component definition per file - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-multi-comp.md + * Variables and functions should not be declared in the global scope + * @see https://sonarsource.github.io/rspec/#/rspec/S3798/javascript */ - 'react/no-multi-comp'?: Linter.RuleEntry + 'sonarjs/declarations-in-global-scope'?: Linter.RuleEntry<[]> /** - * Enforce that namespaces are not used in React elements - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-namespace.md + * Deprecated APIs should not be used + * @see https://sonarsource.github.io/rspec/#/rspec/S1874/javascript */ - 'react/no-namespace'?: Linter.RuleEntry<[]> + 'sonarjs/deprecation'?: Linter.RuleEntry<[]> /** - * Disallow usage of referential-type variables as default param in functional component - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-object-type-as-default-prop.md + * Destructuring syntax should be used for assignments + * @see https://sonarsource.github.io/rspec/#/rspec/S3514/javascript */ - 'react/no-object-type-as-default-prop'?: Linter.RuleEntry<[]> + 'sonarjs/destructuring-assignment-syntax'?: Linter.RuleEntry /** - * Disallow usage of shouldComponentUpdate when extending React.PureComponent - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-redundant-should-component-update.md + * Strict equality operators should not be used with dissimilar types + * @see https://sonarsource.github.io/rspec/#/rspec/S3403/javascript */ - 'react/no-redundant-should-component-update'?: Linter.RuleEntry<[]> + 'sonarjs/different-types-comparison'?: Linter.RuleEntry /** - * Disallow usage of the return value of ReactDOM.render - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-render-return-value.md + * Disabling auto-escaping in template engines is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5247/javascript */ - 'react/no-render-return-value'?: Linter.RuleEntry<[]> + 'sonarjs/disabled-auto-escaping'?: Linter.RuleEntry /** - * Disallow usage of setState - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-set-state.md + * Using remote artifacts without integrity checks is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5725/javascript */ - 'react/no-set-state'?: Linter.RuleEntry<[]> + 'sonarjs/disabled-resource-integrity'?: Linter.RuleEntry<[]> /** - * Disallow using string references - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-string-refs.md + * Disabling Mocha timeouts should be explicit + * @see https://sonarsource.github.io/rspec/#/rspec/S6080/javascript */ - 'react/no-string-refs'?: Linter.RuleEntry + 'sonarjs/disabled-timeout'?: Linter.RuleEntry<[]> /** - * Disallow `this` from being used in stateless functional components - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-this-in-sfc.md + * Allowing browsers to perform DNS prefetching is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5743/javascript + * @deprecated */ - 'react/no-this-in-sfc'?: Linter.RuleEntry<[]> + 'sonarjs/dns-prefetching'?: Linter.RuleEntry /** - * Disallow common typos - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-typos.md + * Character classes in regular expressions should not contain the same character twice + * @see https://sonarsource.github.io/rspec/#/rspec/S5869/javascript */ - 'react/no-typos'?: Linter.RuleEntry<[]> + 'sonarjs/duplicates-in-character-class'?: Linter.RuleEntry /** - * Disallow unescaped HTML entities from appearing in markup - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unescaped-entities.md + * "if ... else if" constructs should end with "else" clauses + * @see https://sonarsource.github.io/rspec/#/rspec/S126/javascript */ - 'react/no-unescaped-entities'?: Linter.RuleEntry + 'sonarjs/elseif-without-else'?: Linter.RuleEntry<[]> /** - * Disallow usage of unknown DOM property - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unknown-property.md + * Repeated patterns in regular expressions should not match the empty string + * @see https://sonarsource.github.io/rspec/#/rspec/S5842/javascript */ - 'react/no-unknown-property'?: Linter.RuleEntry + 'sonarjs/empty-string-repetition'?: Linter.RuleEntry<[]> /** - * Disallow usage of unsafe lifecycle methods - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unsafe.md + * Encrypting data is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S4787/javascript + * @deprecated */ - 'react/no-unsafe'?: Linter.RuleEntry + 'sonarjs/encryption'?: Linter.RuleEntry<[]> /** - * Disallow creating unstable components inside components - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unstable-nested-components.md + * Encryption algorithms should be used with secure mode and padding scheme + * @see https://sonarsource.github.io/rspec/#/rspec/S5542/javascript */ - 'react/no-unstable-nested-components'?: Linter.RuleEntry + 'sonarjs/encryption-secure-mode'?: Linter.RuleEntry<[]> /** - * Disallow declaring unused methods of component class - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unused-class-component-methods.md + * Trailing commas should be used + * @see https://sonarsource.github.io/rspec/#/rspec/S3723/javascript + * @deprecated */ - 'react/no-unused-class-component-methods'?: Linter.RuleEntry<[]> + 'sonarjs/enforce-trailing-comma'?: Linter.RuleEntry /** - * Disallow definitions of unused propTypes - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unused-prop-types.md + * Replacement strings should reference existing regular expression groups + * @see https://sonarsource.github.io/rspec/#/rspec/S6328/javascript */ - 'react/no-unused-prop-types'?: Linter.RuleEntry + 'sonarjs/existing-groups'?: Linter.RuleEntry<[]> /** - * Disallow definitions of unused state - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unused-state.md + * Expressions should not be too complex + * @see https://sonarsource.github.io/rspec/#/rspec/S1067/javascript */ - 'react/no-unused-state'?: Linter.RuleEntry<[]> + 'sonarjs/expression-complexity'?: Linter.RuleEntry /** - * Disallow usage of setState in componentWillUpdate - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-will-update-set-state.md + * Track lack of copyright and license headers + * @see https://sonarsource.github.io/rspec/#/rspec/S1451/javascript */ - 'react/no-will-update-set-state'?: Linter.RuleEntry + 'sonarjs/file-header'?: Linter.RuleEntry /** - * Enforce ES5 or ES6 class for React Components - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-es6-class.md + * Default export names and file names should match + * @see https://sonarsource.github.io/rspec/#/rspec/S3317/javascript */ - 'react/prefer-es6-class'?: Linter.RuleEntry + 'sonarjs/file-name-differ-from-class'?: Linter.RuleEntry<[]> /** - * Prefer exact proptype definitions - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-exact-props.md + * Setting loose POSIX file permissions is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S2612/javascript */ - 'react/prefer-exact-props'?: Linter.RuleEntry<[]> + 'sonarjs/file-permissions'?: Linter.RuleEntry<[]> /** - * Enforce that props are read-only - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-read-only-props.md + * File uploads should be restricted + * @see https://sonarsource.github.io/rspec/#/rspec/S2598/javascript */ - 'react/prefer-read-only-props'?: Linter.RuleEntry<[]> + 'sonarjs/file-uploads'?: Linter.RuleEntry /** - * Enforce stateless components to be written as a pure function - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-stateless-function.md + * Track uses of "FIXME" tags + * @see https://sonarsource.github.io/rspec/#/rspec/S1134/javascript */ - 'react/prefer-stateless-function'?: Linter.RuleEntry + 'sonarjs/fixme-tag'?: Linter.RuleEntry<[]> /** - * Disallow missing props validation in a React component definition - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prop-types.md + * "for...in" loops should filter properties before acting on them + * @see https://sonarsource.github.io/rspec/#/rspec/S1535/javascript */ - 'react/prop-types'?: Linter.RuleEntry + 'sonarjs/for-in'?: Linter.RuleEntry<[]> /** - * Disallow missing React when using JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/react-in-jsx-scope.md + * A "for" loop update clause should move the counter in the right direction + * @see https://sonarsource.github.io/rspec/#/rspec/S2251/javascript */ - 'react/react-in-jsx-scope'?: Linter.RuleEntry<[]> + 'sonarjs/for-loop-increment-sign'?: Linter.RuleEntry /** - * Enforce a defaultProps definition for every prop that is not a required prop - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/require-default-props.md + * Disabling content security policy frame-ancestors directive is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5732/javascript */ - 'react/require-default-props'?: Linter.RuleEntry + 'sonarjs/frame-ancestors'?: Linter.RuleEntry /** - * Enforce React components to have a shouldComponentUpdate method - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/require-optimization.md + * Functions should not be defined inside loops + * @see https://sonarsource.github.io/rspec/#/rspec/S1515/javascript */ - 'react/require-optimization'?: Linter.RuleEntry + 'sonarjs/function-inside-loop'?: Linter.RuleEntry /** - * Enforce ES5 or ES6 class for returning value in render function - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/require-render-return.md + * Function and method names should comply with a naming convention + * @see https://sonarsource.github.io/rspec/#/rspec/S100/javascript */ - 'react/require-render-return'?: Linter.RuleEntry<[]> + 'sonarjs/function-name'?: Linter.RuleEntry /** - * Disallow extra closing tags for components without children - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/self-closing-comp.md + * Functions should always return the same type + * @see https://sonarsource.github.io/rspec/#/rspec/S3800/javascript */ - 'react/self-closing-comp'?: Linter.RuleEntry + 'sonarjs/function-return-type'?: Linter.RuleEntry /** - * Enforce component methods order - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/sort-comp.md + * Future reserved words should not be used as identifiers + * @see https://sonarsource.github.io/rspec/#/rspec/S1527/javascript */ - 'react/sort-comp'?: Linter.RuleEntry + 'sonarjs/future-reserved-words'?: Linter.RuleEntry<[]> /** - * Enforce defaultProps declarations alphabetical sorting - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/sort-default-props.md + * Generators should explicitly "yield" a value + * @see https://sonarsource.github.io/rspec/#/rspec/S3531/javascript */ - 'react/sort-default-props'?: Linter.RuleEntry + 'sonarjs/generator-without-yield'?: Linter.RuleEntry<[]> /** - * Enforce propTypes declarations alphabetical sorting - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/sort-prop-types.md + * Using weak hashing algorithms is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S4790/javascript */ - 'react/sort-prop-types'?: Linter.RuleEntry + 'sonarjs/hashing'?: Linter.RuleEntry<[]> /** - * Enforce class component state initialization style - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/state-in-constructor.md + * Statically serving hidden files is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5691/javascript */ - 'react/state-in-constructor'?: Linter.RuleEntry + 'sonarjs/hidden-files'?: Linter.RuleEntry<[]> /** - * Enforces where React component static properties should be positioned. - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/static-property-placement.md + * "in" should not be used with primitive types + * @see https://sonarsource.github.io/rspec/#/rspec/S3785/javascript */ - 'react/static-property-placement'?: Linter.RuleEntry + 'sonarjs/in-operator-type-error'?: Linter.RuleEntry /** - * Enforce style prop value is an object - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/style-prop-object.md + * Functions should be called consistently with or without "new" + * @see https://sonarsource.github.io/rspec/#/rspec/S3686/javascript */ - 'react/style-prop-object'?: Linter.RuleEntry + 'sonarjs/inconsistent-function-call'?: Linter.RuleEntry /** - * Disallow void DOM elements (e.g. ``, `
`) from receiving children - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/void-dom-elements-no-children.md + * "indexOf" checks should not be for positive numbers + * @see https://sonarsource.github.io/rspec/#/rspec/S2692/javascript */ - 'react/void-dom-elements-no-children'?: Linter.RuleEntry<[]> + 'sonarjs/index-of-compare-to-positive-number'?: Linter.RuleEntry<[]> /** - * disallow confusing quantifiers - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/confusing-quantifier.html + * Creating cookies without the "secure" flag is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S2092/javascript */ - 'regexp/confusing-quantifier'?: Linter.RuleEntry<[]> + 'sonarjs/insecure-cookie'?: Linter.RuleEntry /** - * enforce consistent escaping of control characters - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/control-character-escape.html + * JWT should be signed and verified with strong cipher algorithms + * @see https://sonarsource.github.io/rspec/#/rspec/S5659/javascript */ - 'regexp/control-character-escape'?: Linter.RuleEntry<[]> + 'sonarjs/insecure-jwt-token'?: Linter.RuleEntry /** - * enforce single grapheme in string literal - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/grapheme-string-literal.html + * Assertion arguments should be passed in the correct order + * @see https://sonarsource.github.io/rspec/#/rspec/S3415/javascript */ - 'regexp/grapheme-string-literal'?: Linter.RuleEntry<[]> + 'sonarjs/inverted-assertion-arguments'?: Linter.RuleEntry /** - * enforce consistent usage of hexadecimal escape - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/hexadecimal-escape.html + * React components should not render non-boolean condition values + * @see https://sonarsource.github.io/rspec/#/rspec/S6439/javascript */ - 'regexp/hexadecimal-escape'?: Linter.RuleEntry + 'sonarjs/jsx-no-leaked-render'?: Linter.RuleEntry<[]> /** - * enforce into your favorite case - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/letter-case.html + * Only "while", "do", "for" and "switch" statements should be labelled + * @see https://sonarsource.github.io/rspec/#/rspec/S1439/javascript */ - 'regexp/letter-case'?: Linter.RuleEntry + 'sonarjs/label-position'?: Linter.RuleEntry<[]> /** - * enforce match any character style - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/match-any.html + * Authorizing an opened window to access back to the originating window is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5148/javascript */ - 'regexp/match-any'?: Linter.RuleEntry + 'sonarjs/link-with-target-blank'?: Linter.RuleEntry<[]> /** - * enforce use of escapes on negation - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/negation.html + * Files should not have too many lines of code + * @see https://sonarsource.github.io/rspec/#/rspec/S104/javascript */ - 'regexp/negation'?: Linter.RuleEntry<[]> + 'sonarjs/max-lines'?: Linter.RuleEntry /** - * disallow elements that contradict assertions - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-contradiction-with-assertion.html + * Functions should not have too many lines of code + * @see https://sonarsource.github.io/rspec/#/rspec/S138/javascript */ - 'regexp/no-contradiction-with-assertion'?: Linter.RuleEntry<[]> + 'sonarjs/max-lines-per-function'?: Linter.RuleEntry /** - * disallow control characters - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-control-character.html + * "switch" statements should not have too many "case" clauses + * @see https://sonarsource.github.io/rspec/#/rspec/S1479/javascript */ - 'regexp/no-control-character'?: Linter.RuleEntry<[]> + 'sonarjs/max-switch-cases'?: Linter.RuleEntry /** - * disallow duplicate characters in the RegExp character class - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-dupe-characters-character-class.html + * Union types should not have too many elements + * @see https://sonarsource.github.io/rspec/#/rspec/S4622/javascript */ - 'regexp/no-dupe-characters-character-class'?: Linter.RuleEntry<[]> + 'sonarjs/max-union-size'?: Linter.RuleEntry /** - * disallow duplicate disjunctions - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-dupe-disjunctions.html + * "for" loop increment clauses should modify the loops' counters + * @see https://sonarsource.github.io/rspec/#/rspec/S1994/javascript */ - 'regexp/no-dupe-disjunctions'?: Linter.RuleEntry + 'sonarjs/misplaced-loop-counter'?: Linter.RuleEntry<[]> /** - * disallow alternatives without elements - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-alternative.html + * Control flow statements "if", "for", "while", "switch" and "try" should not be nested too deeply + * @see https://sonarsource.github.io/rspec/#/rspec/S134/javascript */ - 'regexp/no-empty-alternative'?: Linter.RuleEntry<[]> + 'sonarjs/nested-control-flow'?: Linter.RuleEntry /** - * disallow capturing group that captures empty. - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-capturing-group.html + * "new" should only be used with functions and classes + * @see https://sonarsource.github.io/rspec/#/rspec/S2999/javascript */ - 'regexp/no-empty-capturing-group'?: Linter.RuleEntry<[]> + 'sonarjs/new-operator-misuse'?: Linter.RuleEntry /** - * disallow character classes that match no characters - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-character-class.html + * All branches in a conditional structure should not have exactly the same implementation + * @see https://sonarsource.github.io/rspec/#/rspec/S3923/javascript */ - 'regexp/no-empty-character-class'?: Linter.RuleEntry<[]> + 'sonarjs/no-all-duplicated-branches'?: Linter.RuleEntry<[]> /** - * disallow empty group - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-group.html + * "Array.prototype.sort()" and "Array.prototype.toSorted()" should use a compare function + * @see https://sonarsource.github.io/rspec/#/rspec/S2871/javascript */ - 'regexp/no-empty-group'?: Linter.RuleEntry<[]> + 'sonarjs/no-alphabetical-sort'?: Linter.RuleEntry<[]> /** - * disallow empty lookahead assertion or empty lookbehind assertion - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-lookarounds-assertion.html + * Disabling Angular built-in sanitization is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6268/javascript */ - 'regexp/no-empty-lookarounds-assertion'?: Linter.RuleEntry<[]> + 'sonarjs/no-angular-bypass-sanitization'?: Linter.RuleEntry<[]> /** - * disallow empty string literals in character classes - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-string-literal.html + * "delete" should not be used on arrays + * @see https://sonarsource.github.io/rspec/#/rspec/S2870/javascript */ - 'regexp/no-empty-string-literal'?: Linter.RuleEntry<[]> + 'sonarjs/no-array-delete'?: Linter.RuleEntry<[]> /** - * disallow escape backspace (`[\b]`) - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-escape-backspace.html + * Array indexes should be numeric + * @see https://sonarsource.github.io/rspec/#/rspec/S3579/javascript */ - 'regexp/no-escape-backspace'?: Linter.RuleEntry<[]> + 'sonarjs/no-associative-arrays'?: Linter.RuleEntry<[]> /** - * disallow unnecessary nested lookaround assertions - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-extra-lookaround-assertions.html + * Constructors should not contain asynchronous operations + * @see https://sonarsource.github.io/rspec/#/rspec/S7059/javascript */ - 'regexp/no-extra-lookaround-assertions'?: Linter.RuleEntry<[]> + 'sonarjs/no-async-constructor'?: Linter.RuleEntry<[]> /** - * disallow invalid regular expression strings in `RegExp` constructors - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-invalid-regexp.html + * Built-in objects should not be overridden + * @see https://sonarsource.github.io/rspec/#/rspec/S2424/javascript */ - 'regexp/no-invalid-regexp'?: Linter.RuleEntry<[]> + 'sonarjs/no-built-in-override'?: Linter.RuleEntry<[]> /** - * disallow invisible raw character - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-invisible-character.html + * "switch" statements should not contain non-case labels + * @see https://sonarsource.github.io/rspec/#/rspec/S1219/javascript */ - 'regexp/no-invisible-character'?: Linter.RuleEntry<[]> + 'sonarjs/no-case-label-in-switch'?: Linter.RuleEntry<[]> /** - * disallow lazy quantifiers at the end of an expression - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-lazy-ends.html + * Using clear-text protocols is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5332/javascript */ - 'regexp/no-lazy-ends'?: Linter.RuleEntry + 'sonarjs/no-clear-text-protocols'?: Linter.RuleEntry<[]> /** - * disallow legacy RegExp features - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-legacy-features.html + * Tests should not execute any code after "done()" is called + * @see https://sonarsource.github.io/rspec/#/rspec/S6079/javascript */ - 'regexp/no-legacy-features'?: Linter.RuleEntry + 'sonarjs/no-code-after-done'?: Linter.RuleEntry /** - * disallow capturing groups that do not behave as one would expect - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-misleading-capturing-group.html + * Mergeable "if" statements should be combined + * @see https://sonarsource.github.io/rspec/#/rspec/S1066/javascript */ - 'regexp/no-misleading-capturing-group'?: Linter.RuleEntry + 'sonarjs/no-collapsible-if'?: Linter.RuleEntry /** - * disallow multi-code-point characters in character classes and quantifiers - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-misleading-unicode-character.html + * Collection size and array length comparisons should make sense + * @see https://sonarsource.github.io/rspec/#/rspec/S3981/javascript */ - 'regexp/no-misleading-unicode-character'?: Linter.RuleEntry + 'sonarjs/no-collection-size-mischeck'?: Linter.RuleEntry<[]> /** - * disallow missing `g` flag in patterns used in `String#matchAll` and `String#replaceAll` - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-missing-g-flag.html + * Sections of code should not be commented out + * @see https://sonarsource.github.io/rspec/#/rspec/S125/javascript */ - 'regexp/no-missing-g-flag'?: Linter.RuleEntry + 'sonarjs/no-commented-code'?: Linter.RuleEntry<[]> /** - * disallow non-standard flags - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-non-standard-flag.html + * Regular expressions should not contain control characters + * @see https://sonarsource.github.io/rspec/#/rspec/S6324/javascript */ - 'regexp/no-non-standard-flag'?: Linter.RuleEntry<[]> + 'sonarjs/no-control-regex'?: Linter.RuleEntry<[]> /** - * disallow obscure character ranges - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-obscure-range.html + * Unused assignments should be removed + * @see https://sonarsource.github.io/rspec/#/rspec/S1854/javascript */ - 'regexp/no-obscure-range'?: Linter.RuleEntry + 'sonarjs/no-dead-store'?: Linter.RuleEntry<[]> /** - * disallow octal escape sequence - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-octal.html + * "delete" should be used only with object properties + * @see https://sonarsource.github.io/rspec/#/rspec/S3001/javascript */ - 'regexp/no-octal'?: Linter.RuleEntry<[]> + 'sonarjs/no-delete-var'?: Linter.RuleEntry<[]> /** - * disallow optional assertions - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-optional-assertion.html + * Union and intersection types should not include duplicated constituents + * @see https://sonarsource.github.io/rspec/#/rspec/S4621/javascript */ - 'regexp/no-optional-assertion'?: Linter.RuleEntry<[]> + 'sonarjs/no-duplicate-in-composite'?: Linter.RuleEntry /** - * disallow backreferences that reference a group that might not be matched - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-potentially-useless-backreference.html + * String literals should not be duplicated + * @see https://sonarsource.github.io/rspec/#/rspec/S1192/javascript */ - 'regexp/no-potentially-useless-backreference'?: Linter.RuleEntry<[]> + 'sonarjs/no-duplicate-string'?: Linter.RuleEntry /** - * disallow standalone backslashes (`\`) - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-standalone-backslash.html + * Two branches in a conditional structure should not have exactly the same implementation + * @see https://sonarsource.github.io/rspec/#/rspec/S1871/javascript */ - 'regexp/no-standalone-backslash'?: Linter.RuleEntry<[]> + 'sonarjs/no-duplicated-branches'?: Linter.RuleEntry /** - * disallow exponential and polynomial backtracking - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-super-linear-backtracking.html + * Collection elements should not be replaced unconditionally + * @see https://sonarsource.github.io/rspec/#/rspec/S4143/javascript */ - 'regexp/no-super-linear-backtracking'?: Linter.RuleEntry + 'sonarjs/no-element-overwrite'?: Linter.RuleEntry /** - * disallow quantifiers that cause quadratic moves - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-super-linear-move.html + * Reluctant quantifiers in regular expressions should be followed by an expression that can't match the empty string + * @see https://sonarsource.github.io/rspec/#/rspec/S6019/javascript */ - 'regexp/no-super-linear-move'?: Linter.RuleEntry + 'sonarjs/no-empty-after-reluctant'?: Linter.RuleEntry<[]> /** - * disallow trivially nested assertions - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-trivially-nested-assertion.html + * Alternation in regular expressions should not contain empty alternatives + * @see https://sonarsource.github.io/rspec/#/rspec/S6323/javascript */ - 'regexp/no-trivially-nested-assertion'?: Linter.RuleEntry<[]> + 'sonarjs/no-empty-alternatives'?: Linter.RuleEntry<[]> /** - * disallow nested quantifiers that can be rewritten as one quantifier - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-trivially-nested-quantifier.html + * Empty character classes should not be used + * @see https://sonarsource.github.io/rspec/#/rspec/S2639/javascript */ - 'regexp/no-trivially-nested-quantifier'?: Linter.RuleEntry<[]> + 'sonarjs/no-empty-character-class'?: Linter.RuleEntry<[]> /** - * disallow unused capturing group - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-unused-capturing-group.html + * Empty collections should not be accessed or iterated + * @see https://sonarsource.github.io/rspec/#/rspec/S4158/javascript */ - 'regexp/no-unused-capturing-group'?: Linter.RuleEntry + 'sonarjs/no-empty-collection'?: Linter.RuleEntry<[]> /** - * disallow assertions that are known to always accept (or reject) - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-assertions.html + * Regular expressions should not contain empty groups + * @see https://sonarsource.github.io/rspec/#/rspec/S6331/javascript */ - 'regexp/no-useless-assertions'?: Linter.RuleEntry<[]> + 'sonarjs/no-empty-group'?: Linter.RuleEntry<[]> /** - * disallow useless backreferences in regular expressions - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-backreference.html + * Test files should contain at least one test case + * @see https://sonarsource.github.io/rspec/#/rspec/S2187/javascript */ - 'regexp/no-useless-backreference'?: Linter.RuleEntry<[]> + 'sonarjs/no-empty-test-file'?: Linter.RuleEntry<[]> /** - * disallow character class with one character - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-character-class.html + * Equality operators should not be used in "for" loop termination conditions + * @see https://sonarsource.github.io/rspec/#/rspec/S888/javascript */ - 'regexp/no-useless-character-class'?: Linter.RuleEntry + 'sonarjs/no-equals-in-for-termination'?: Linter.RuleEntry<[]> /** - * disallow useless `$` replacements in replacement string - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-dollar-replacements.html + * Exclusive tests should not be commited to version control + * @see https://sonarsource.github.io/rspec/#/rspec/S6426/javascript */ - 'regexp/no-useless-dollar-replacements'?: Linter.RuleEntry<[]> + 'sonarjs/no-exclusive-tests'?: Linter.RuleEntry<[]> /** - * disallow unnecessary escape characters in RegExp - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-escape.html + * Function calls should not pass extra arguments + * @see https://sonarsource.github.io/rspec/#/rspec/S930/javascript */ - 'regexp/no-useless-escape'?: Linter.RuleEntry<[]> + 'sonarjs/no-extra-arguments'?: Linter.RuleEntry /** - * disallow unnecessary regex flags - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-flag.html + * Switch cases should end with an unconditional "break" statement + * @see https://sonarsource.github.io/rspec/#/rspec/S128/javascript */ - 'regexp/no-useless-flag'?: Linter.RuleEntry + 'sonarjs/no-fallthrough'?: Linter.RuleEntry<[]> /** - * disallow unnecessarily non-greedy quantifiers - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-lazy.html + * "for in" should not be used with iterables + * @see https://sonarsource.github.io/rspec/#/rspec/S4139/javascript */ - 'regexp/no-useless-lazy'?: Linter.RuleEntry<[]> + 'sonarjs/no-for-in-iterable'?: Linter.RuleEntry<[]> /** - * disallow unnecessary non-capturing group - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-non-capturing-group.html + * Function declarations should not be made within blocks + * @see https://sonarsource.github.io/rspec/#/rspec/S1530/javascript */ - 'regexp/no-useless-non-capturing-group'?: Linter.RuleEntry + 'sonarjs/no-function-declaration-in-block'?: Linter.RuleEntry<[]> /** - * disallow quantifiers that can be removed - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-quantifier.html + * The global "this" object should not be used + * @see https://sonarsource.github.io/rspec/#/rspec/S2990/javascript */ - 'regexp/no-useless-quantifier'?: Linter.RuleEntry<[]> + 'sonarjs/no-global-this'?: Linter.RuleEntry<[]> /** - * disallow unnecessary character ranges - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-range.html + * Special identifiers should not be bound or assigned + * @see https://sonarsource.github.io/rspec/#/rspec/S2137/javascript */ - 'regexp/no-useless-range'?: Linter.RuleEntry<[]> + 'sonarjs/no-globals-shadowing'?: Linter.RuleEntry<[]> /** - * disallow unnecessary elements in expression character classes - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-set-operand.html + * Boolean expressions should not be gratuitous + * @see https://sonarsource.github.io/rspec/#/rspec/S2589/javascript */ - 'regexp/no-useless-set-operand'?: Linter.RuleEntry<[]> + 'sonarjs/no-gratuitous-expressions'?: Linter.RuleEntry /** - * disallow string disjunction of single characters in `\q{...}` - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-string-literal.html + * Using hardcoded IP addresses is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S1313/javascript */ - 'regexp/no-useless-string-literal'?: Linter.RuleEntry<[]> + 'sonarjs/no-hardcoded-ip'?: Linter.RuleEntry<[]> /** - * disallow unnecessary `{n,m}` quantifier - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-two-nums-quantifier.html + * Hard-coded passwords are security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S2068/javascript */ - 'regexp/no-useless-two-nums-quantifier'?: Linter.RuleEntry<[]> + 'sonarjs/no-hardcoded-passwords'?: Linter.RuleEntry /** - * disallow quantifiers with a maximum of zero - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-zero-quantifier.html + * Hard-coded secrets are security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6418/javascript */ - 'regexp/no-zero-quantifier'?: Linter.RuleEntry<[]> + 'sonarjs/no-hardcoded-secrets'?: Linter.RuleEntry /** - * disallow the alternatives of lookarounds that end with a non-constant quantifier - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/optimal-lookaround-quantifier.html + * React's useState hook should not be used directly in the render function or body of a component + * @see https://sonarsource.github.io/rspec/#/rspec/S6442/javascript */ - 'regexp/optimal-lookaround-quantifier'?: Linter.RuleEntry<[]> + 'sonarjs/no-hook-setter-in-body'?: Linter.RuleEntry<[]> /** - * require optimal quantifiers for concatenated quantifiers - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/optimal-quantifier-concatenation.html + * "if/else if" chains and "switch" cases should not have the same condition + * @see https://sonarsource.github.io/rspec/#/rspec/S1862/javascript */ - 'regexp/optimal-quantifier-concatenation'?: Linter.RuleEntry + 'sonarjs/no-identical-conditions'?: Linter.RuleEntry /** - * enforce using character class - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-character-class.html + * Identical expressions should not be used on both sides of a binary operator + * @see https://sonarsource.github.io/rspec/#/rspec/S1764/javascript */ - 'regexp/prefer-character-class'?: Linter.RuleEntry + 'sonarjs/no-identical-expressions'?: Linter.RuleEntry /** - * enforce using `\d` - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-d.html + * Functions should not have identical implementations + * @see https://sonarsource.github.io/rspec/#/rspec/S4144/javascript */ - 'regexp/prefer-d'?: Linter.RuleEntry + 'sonarjs/no-identical-functions'?: Linter.RuleEntry /** - * enforces escape of replacement `$` character (`$$`). - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-escape-replacement-dollar-char.html + * Exceptions should not be ignored + * @see https://sonarsource.github.io/rspec/#/rspec/S2486/javascript */ - 'regexp/prefer-escape-replacement-dollar-char'?: Linter.RuleEntry<[]> + 'sonarjs/no-ignored-exceptions'?: Linter.RuleEntry<[]> /** - * prefer lookarounds over capturing group that do not replace - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-lookaround.html + * Return values from functions without side effects should not be ignored + * @see https://sonarsource.github.io/rspec/#/rspec/S2201/javascript */ - 'regexp/prefer-lookaround'?: Linter.RuleEntry + 'sonarjs/no-ignored-return'?: Linter.RuleEntry<[]> /** - * enforce using named backreferences - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-named-backreference.html + * Dependencies should be explicit + * @see https://sonarsource.github.io/rspec/#/rspec/S4328/javascript */ - 'regexp/prefer-named-backreference'?: Linter.RuleEntry<[]> + 'sonarjs/no-implicit-dependencies'?: Linter.RuleEntry /** - * enforce using named capture groups - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-named-capture-group.html + * Variables should be declared explicitly + * @see https://sonarsource.github.io/rspec/#/rspec/S2703/javascript */ - 'regexp/prefer-named-capture-group'?: Linter.RuleEntry<[]> + 'sonarjs/no-implicit-global'?: Linter.RuleEntry<[]> /** - * enforce using named replacement - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-named-replacement.html + * "in" should not be used on arrays + * @see https://sonarsource.github.io/rspec/#/rspec/S4619/javascript */ - 'regexp/prefer-named-replacement'?: Linter.RuleEntry + 'sonarjs/no-in-misuse'?: Linter.RuleEntry<[]> /** - * enforce using `+` quantifier - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-plus-quantifier.html + * Assertions should be complete + * @see https://sonarsource.github.io/rspec/#/rspec/S2970/javascript */ - 'regexp/prefer-plus-quantifier'?: Linter.RuleEntry<[]> + 'sonarjs/no-incomplete-assertions'?: Linter.RuleEntry<[]> /** - * prefer predefined assertion over equivalent lookarounds - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-predefined-assertion.html + * Functions should use "return" consistently + * @see https://sonarsource.github.io/rspec/#/rspec/S3801/javascript */ - 'regexp/prefer-predefined-assertion'?: Linter.RuleEntry<[]> + 'sonarjs/no-inconsistent-returns'?: Linter.RuleEntry /** - * enforce using quantifier - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-quantifier.html + * Strings and non-strings should not be added + * @see https://sonarsource.github.io/rspec/#/rspec/S3402/javascript */ - 'regexp/prefer-quantifier'?: Linter.RuleEntry<[]> + 'sonarjs/no-incorrect-string-concat'?: Linter.RuleEntry /** - * enforce using `?` quantifier - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-question-quantifier.html + * Users should not use internal APIs + * @see https://sonarsource.github.io/rspec/#/rspec/S6627/javascript */ - 'regexp/prefer-question-quantifier'?: Linter.RuleEntry<[]> + 'sonarjs/no-internal-api-use'?: Linter.RuleEntry<[]> /** - * enforce using character class range - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-range.html + * Using intrusive permissions is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5604/javascript */ - 'regexp/prefer-range'?: Linter.RuleEntry + 'sonarjs/no-intrusive-permissions'?: Linter.RuleEntry /** - * enforce that `RegExp#exec` is used instead of `String#match` if no global flag is provided - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-regexp-exec.html + * "await" should only be used with promises + * @see https://sonarsource.github.io/rspec/#/rspec/S4123/javascript */ - 'regexp/prefer-regexp-exec'?: Linter.RuleEntry<[]> + 'sonarjs/no-invalid-await'?: Linter.RuleEntry<[]> /** - * enforce that `RegExp#test` is used instead of `String#match` and `RegExp#exec` - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-regexp-test.html + * Regular expressions should be syntactically valid + * @see https://sonarsource.github.io/rspec/#/rspec/S5856/javascript */ - 'regexp/prefer-regexp-test'?: Linter.RuleEntry<[]> + 'sonarjs/no-invalid-regexp'?: Linter.RuleEntry<[]> /** - * enforce using result array `groups` - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-result-array-groups.html + * Function returns should not be invariant + * @see https://sonarsource.github.io/rspec/#/rspec/S3516/javascript */ - 'regexp/prefer-result-array-groups'?: Linter.RuleEntry + 'sonarjs/no-invariant-returns'?: Linter.RuleEntry /** - * prefer character class set operations instead of lookarounds - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-set-operation.html + * Boolean checks should not be inverted + * @see https://sonarsource.github.io/rspec/#/rspec/S1940/javascript */ - 'regexp/prefer-set-operation'?: Linter.RuleEntry<[]> + 'sonarjs/no-inverted-boolean-check'?: Linter.RuleEntry<[]> /** - * enforce using `*` quantifier - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-star-quantifier.html + * Forwarding client IP address is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5759/javascript */ - 'regexp/prefer-star-quantifier'?: Linter.RuleEntry<[]> + 'sonarjs/no-ip-forward'?: Linter.RuleEntry /** - * enforce use of unicode codepoint escapes - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-unicode-codepoint-escapes.html + * Labels should not be used + * @see https://sonarsource.github.io/rspec/#/rspec/S1119/javascript */ - 'regexp/prefer-unicode-codepoint-escapes'?: Linter.RuleEntry<[]> + 'sonarjs/no-labels'?: Linter.RuleEntry<[]> /** - * enforce using `\w` - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-w.html + * Literals should not be used as functions + * @see https://sonarsource.github.io/rspec/#/rspec/S6958/javascript */ - 'regexp/prefer-w'?: Linter.RuleEntry<[]> + 'sonarjs/no-literal-call'?: Linter.RuleEntry<[]> /** - * enforce the use of the `u` flag - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/require-unicode-regexp.html + * Allowing browsers to sniff MIME types is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5734/javascript */ - 'regexp/require-unicode-regexp'?: Linter.RuleEntry<[]> + 'sonarjs/no-mime-sniff'?: Linter.RuleEntry /** - * enforce the use of the `v` flag - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/require-unicode-sets-regexp.html + * Array-mutating methods should not be used misleadingly + * @see https://sonarsource.github.io/rspec/#/rspec/S4043/javascript */ - 'regexp/require-unicode-sets-regexp'?: Linter.RuleEntry<[]> + 'sonarjs/no-misleading-array-reverse'?: Linter.RuleEntry<[]> /** - * require simplify set operations - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/simplify-set-operations.html + * Unicode Grapheme Clusters should be avoided inside regex character classes + * @see https://sonarsource.github.io/rspec/#/rspec/S5868/javascript */ - 'regexp/simplify-set-operations'?: Linter.RuleEntry<[]> + 'sonarjs/no-misleading-character-class'?: Linter.RuleEntry<[]> /** - * sort alternatives if order doesn't matter - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/sort-alternatives.html + * Allowing mixed-content is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5730/javascript */ - 'regexp/sort-alternatives'?: Linter.RuleEntry<[]> + 'sonarjs/no-mixed-content'?: Linter.RuleEntry /** - * enforces elements order in character class - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/sort-character-class-elements.html + * Assignments should not be made from within sub-expressions + * @see https://sonarsource.github.io/rspec/#/rspec/S1121/javascript */ - 'regexp/sort-character-class-elements'?: Linter.RuleEntry + 'sonarjs/no-nested-assignment'?: Linter.RuleEntry<[]> /** - * require regex flags to be sorted - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/sort-flags.html + * Ternary operators should not be nested + * @see https://sonarsource.github.io/rspec/#/rspec/S3358/javascript */ - 'regexp/sort-flags'?: Linter.RuleEntry<[]> + 'sonarjs/no-nested-conditional'?: Linter.RuleEntry<[]> /** - * disallow not strictly valid regular expressions - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/strict.html + * Functions should not be nested too deeply + * @see https://sonarsource.github.io/rspec/#/rspec/S2004/javascript */ - 'regexp/strict'?: Linter.RuleEntry<[]> + 'sonarjs/no-nested-functions'?: Linter.RuleEntry /** - * enforce consistent usage of unicode escape or unicode codepoint escape - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/unicode-escape.html + * Increment (++) and decrement (--) operators should not be used in a method call or mixed with other operators in an expression + * @see https://sonarsource.github.io/rspec/#/rspec/S881/javascript */ - 'regexp/unicode-escape'?: Linter.RuleEntry + 'sonarjs/no-nested-incdec'?: Linter.RuleEntry<[]> /** - * enforce consistent naming of unicode properties - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/unicode-property.html + * "switch" statements should not be nested + * @see https://sonarsource.github.io/rspec/#/rspec/S1821/javascript */ - 'regexp/unicode-property'?: Linter.RuleEntry + 'sonarjs/no-nested-switch'?: Linter.RuleEntry<[]> /** - * use the `i` flag if it simplifies the pattern - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/use-ignore-case.html + * Template literals should not be nested + * @see https://sonarsource.github.io/rspec/#/rspec/S4624/javascript */ - 'regexp/use-ignore-case'?: Linter.RuleEntry<[]> + 'sonarjs/no-nested-template-literals'?: Linter.RuleEntry<[]> /** - * Disallow assignments that can lead to race conditions due to usage of `await` or `yield` - * @see https://eslint.org/docs/latest/rules/require-atomic-updates + * Loops with at most one iteration should be refactored + * @see https://sonarsource.github.io/rspec/#/rspec/S1751/javascript */ - 'require-atomic-updates'?: Linter.RuleEntry + 'sonarjs/no-one-iteration-loop'?: Linter.RuleEntry<[]> /** - * Disallow async functions which have no `await` expression - * @see https://eslint.org/docs/latest/rules/require-await + * Searching OS commands in PATH is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S4036/javascript */ - 'require-await'?: Linter.RuleEntry<[]> + 'sonarjs/no-os-command-from-path'?: Linter.RuleEntry<[]> /** - * Enforce the use of `u` or `v` flag on regular expressions - * @see https://eslint.org/docs/latest/rules/require-unicode-regexp + * Initial values of parameters, caught exceptions, and loop variables should not be ignored + * @see https://sonarsource.github.io/rspec/#/rspec/S1226/javascript */ - 'require-unicode-regexp'?: Linter.RuleEntry + 'sonarjs/no-parameter-reassignment'?: Linter.RuleEntry<[]> /** - * Require generator functions to contain `yield` - * @see https://eslint.org/docs/latest/rules/require-yield + * Wrapper objects should not be used for primitive types + * @see https://sonarsource.github.io/rspec/#/rspec/S1533/javascript */ - 'require-yield'?: Linter.RuleEntry<[]> + 'sonarjs/no-primitive-wrappers'?: Linter.RuleEntry<[]> /** - * Enforce spacing between rest and spread operators and their expressions - * @see https://eslint.org/docs/latest/rules/rest-spread-spacing - * @deprecated + * Assignments should not be redundant + * @see https://sonarsource.github.io/rspec/#/rspec/S4165/javascript */ - 'rest-spread-spacing'?: Linter.RuleEntry + 'sonarjs/no-redundant-assignments'?: Linter.RuleEntry<[]> /** - * Require or disallow semicolons instead of ASI - * @see https://eslint.org/docs/latest/rules/semi - * @deprecated + * Boolean literals should not be used in comparisons + * @see https://sonarsource.github.io/rspec/#/rspec/S1125/javascript */ - 'semi'?: Linter.RuleEntry + 'sonarjs/no-redundant-boolean'?: Linter.RuleEntry<[]> /** - * Enforce consistent spacing before and after semicolons - * @see https://eslint.org/docs/latest/rules/semi-spacing - * @deprecated + * Jump statements should not be redundant + * @see https://sonarsource.github.io/rspec/#/rspec/S3626/javascript */ - 'semi-spacing'?: Linter.RuleEntry + 'sonarjs/no-redundant-jump'?: Linter.RuleEntry<[]> /** - * Enforce location of semicolons - * @see https://eslint.org/docs/latest/rules/semi-style - * @deprecated + * Optional property declarations should not use both '?' and 'undefined' syntax + * @see https://sonarsource.github.io/rspec/#/rspec/S4782/javascript */ - 'semi-style'?: Linter.RuleEntry + 'sonarjs/no-redundant-optional'?: Linter.RuleEntry /** - * Automatically sort exports. - * @see https://github.com/lydell/eslint-plugin-simple-import-sort#sort-order + * Redundant pairs of parentheses should be removed + * @see https://sonarsource.github.io/rspec/#/rspec/S1110/javascript + * @deprecated */ - 'simple-import-sort/exports'?: Linter.RuleEntry<[]> + 'sonarjs/no-redundant-parentheses'?: Linter.RuleEntry /** - * Automatically sort imports. - * @see https://github.com/lydell/eslint-plugin-simple-import-sort#sort-order + * Variables should be defined before being used + * @see https://sonarsource.github.io/rspec/#/rspec/S3827/javascript */ - 'simple-import-sort/imports'?: Linter.RuleEntry + 'sonarjs/no-reference-error'?: Linter.RuleEntry /** - * Alternatives in regular expressions should be grouped when used with anchors - * @see https://sonarsource.github.io/rspec/#/rspec/S5850/javascript + * Disabling strict HTTP no-referrer policy is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5736/javascript */ - 'sonarjs/anchor-precedence'?: Linter.RuleEntry<[]> + 'sonarjs/no-referrer-policy'?: Linter.RuleEntry /** - * Arguments to built-in functions should match documented types - * @see https://sonarsource.github.io/rspec/#/rspec/S3782/javascript + * Regular expressions should not contain multiple spaces + * @see https://sonarsource.github.io/rspec/#/rspec/S6326/javascript */ - 'sonarjs/argument-type'?: Linter.RuleEntry<[]> + 'sonarjs/no-regex-spaces'?: Linter.RuleEntry<[]> /** - * Parameters should be passed in the correct order - * @see https://sonarsource.github.io/rspec/#/rspec/S2234/javascript + * "import" should be used to include external code + * @see https://sonarsource.github.io/rspec/#/rspec/S3533/javascript */ - 'sonarjs/arguments-order'?: Linter.RuleEntry + 'sonarjs/no-require-or-define'?: Linter.RuleEntry<[]> /** - * "arguments" should not be accessed directly - * @see https://sonarsource.github.io/rspec/#/rspec/S3513/javascript + * Primitive return types should be used + * @see https://sonarsource.github.io/rspec/#/rspec/S4324/javascript */ - 'sonarjs/arguments-usage'?: Linter.RuleEntry + 'sonarjs/no-return-type-any'?: Linter.RuleEntry<[]> /** - * Callbacks of array methods should have return statements - * @see https://sonarsource.github.io/rspec/#/rspec/S3796/javascript + * Assertions should not be given twice the same argument + * @see https://sonarsource.github.io/rspec/#/rspec/S5863/javascript */ - 'sonarjs/array-callback-without-return'?: Linter.RuleEntry<[]> + 'sonarjs/no-same-argument-assert'?: Linter.RuleEntry /** - * Array constructors should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S1528/javascript + * Conditionals should start on new lines + * @see https://sonarsource.github.io/rspec/#/rspec/S3972/javascript */ - 'sonarjs/array-constructor'?: Linter.RuleEntry<[]> + 'sonarjs/no-same-line-conditional'?: Linter.RuleEntry /** - * Braces and parentheses should be used consistently with arrow functions - * @see https://sonarsource.github.io/rspec/#/rspec/S3524/javascript + * Methods should not contain selector parameters + * @see https://sonarsource.github.io/rspec/#/rspec/S2301/javascript */ - 'sonarjs/arrow-function-convention'?: Linter.RuleEntry + 'sonarjs/no-selector-parameter'?: Linter.RuleEntry /** - * Tests should include assertions - * @see https://sonarsource.github.io/rspec/#/rspec/S2699/javascript + * Tests should not be skipped without providing a reason + * @see https://sonarsource.github.io/rspec/#/rspec/S1607/javascript */ - 'sonarjs/assertions-in-tests'?: Linter.RuleEntry<[]> + 'sonarjs/no-skipped-tests'?: Linter.RuleEntry<[]> /** - * Creating public APIs is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6333/javascript + * "if" statements should be preferred over "switch" when simpler + * @see https://sonarsource.github.io/rspec/#/rspec/S1301/javascript */ - 'sonarjs/aws-apigateway-public-api'?: Linter.RuleEntry<[]> + 'sonarjs/no-small-switch'?: Linter.RuleEntry<[]> /** - * Allowing public network access to cloud resources is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6329/javascript + * Track uses of "NOSONAR" comments + * @see https://sonarsource.github.io/rspec/#/rspec/S1291/javascript */ - 'sonarjs/aws-ec2-rds-dms-public'?: Linter.RuleEntry<[]> + 'sonarjs/no-sonar-comments'?: Linter.RuleEntry<[]> /** - * Using unencrypted EBS volumes is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6275/javascript + * Tabulation characters should not be used + * @see https://sonarsource.github.io/rspec/#/rspec/S105/javascript + * @deprecated */ - 'sonarjs/aws-ec2-unencrypted-ebs-volume'?: Linter.RuleEntry<[]> + 'sonarjs/no-tab'?: Linter.RuleEntry<[]> /** - * Using unencrypted EFS file systems is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6332/javascript + * HTML "" should not be used for layout purposes + * @see https://sonarsource.github.io/rspec/#/rspec/S5257/javascript */ - 'sonarjs/aws-efs-unencrypted'?: Linter.RuleEntry<[]> + 'sonarjs/no-table-as-layout'?: Linter.RuleEntry<[]> /** - * Policies granting all privileges are security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6302/javascript + * Promise rejections should not be caught by "try" blocks + * @see https://sonarsource.github.io/rspec/#/rspec/S4822/javascript */ - 'sonarjs/aws-iam-all-privileges'?: Linter.RuleEntry + 'sonarjs/no-try-promise'?: Linter.RuleEntry /** - * Policies granting access to all resources of an account are security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6304/javascript + * "undefined" should not be passed as the value of optional parameters + * @see https://sonarsource.github.io/rspec/#/rspec/S4623/javascript */ - 'sonarjs/aws-iam-all-resources-accessible'?: Linter.RuleEntry + 'sonarjs/no-undefined-argument'?: Linter.RuleEntry<[]> /** - * AWS IAM policies should limit the scope of permissions given - * @see https://sonarsource.github.io/rspec/#/rspec/S6317/javascript + * "undefined" should not be assigned + * @see https://sonarsource.github.io/rspec/#/rspec/S2138/javascript */ - 'sonarjs/aws-iam-privilege-escalation'?: Linter.RuleEntry + 'sonarjs/no-undefined-assignment'?: Linter.RuleEntry<[]> /** - * Policies authorizing public access to resources are security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6270/javascript + * Multiline blocks should be enclosed in curly braces + * @see https://sonarsource.github.io/rspec/#/rspec/S2681/javascript */ - 'sonarjs/aws-iam-public-access'?: Linter.RuleEntry + 'sonarjs/no-unenclosed-multiline-block'?: Linter.RuleEntry<[]> /** - * Using unencrypted Elasticsearch domains is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6308/javascript + * JSX list components keys should match up between renders + * @see https://sonarsource.github.io/rspec/#/rspec/S6486/javascript */ - 'sonarjs/aws-opensearchservice-domain'?: Linter.RuleEntry<[]> + 'sonarjs/no-uniq-key'?: Linter.RuleEntry<[]> /** - * Using unencrypted RDS DB resources is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6303/javascript + * Expanding archive files without controlling resource consumption is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5042/javascript */ - 'sonarjs/aws-rds-unencrypted-databases'?: Linter.RuleEntry<[]> + 'sonarjs/no-unsafe-unzip'?: Linter.RuleEntry<[]> /** - * Administration services access should be restricted to specific IP addresses - * @see https://sonarsource.github.io/rspec/#/rspec/S6321/javascript + * Errors should not be created without being thrown + * @see https://sonarsource.github.io/rspec/#/rspec/S3984/javascript */ - 'sonarjs/aws-restricted-ip-admin-access'?: Linter.RuleEntry<[]> + 'sonarjs/no-unthrown-error'?: Linter.RuleEntry<[]> /** - * Granting access to S3 buckets to all or authenticated users is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6265/javascript + * Collection contents should be used + * @see https://sonarsource.github.io/rspec/#/rspec/S4030/javascript */ - 'sonarjs/aws-s3-bucket-granted-access'?: Linter.RuleEntry + 'sonarjs/no-unused-collection'?: Linter.RuleEntry<[]> /** - * Authorizing HTTP communications with S3 buckets is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6249/javascript - */ - 'sonarjs/aws-s3-bucket-insecure-http'?: Linter.RuleEntry<[]> - /** - * Allowing public ACLs or policies on a S3 bucket is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6281/javascript + * Unused function parameters should be removed + * @see https://sonarsource.github.io/rspec/#/rspec/S1172/javascript */ - 'sonarjs/aws-s3-bucket-public-access'?: Linter.RuleEntry + 'sonarjs/no-unused-function-argument'?: Linter.RuleEntry<[]> /** - * Disabling server-side encryption of S3 buckets is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6245/javascript - * @deprecated + * Unused local variables and functions should be removed + * @see https://sonarsource.github.io/rspec/#/rspec/S1481/javascript */ - 'sonarjs/aws-s3-bucket-server-encryption'?: Linter.RuleEntry + 'sonarjs/no-unused-vars'?: Linter.RuleEntry<[]> /** - * Disabling versioning of S3 buckets is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6252/javascript + * The return value of void functions should not be used + * @see https://sonarsource.github.io/rspec/#/rspec/S3699/javascript */ - 'sonarjs/aws-s3-bucket-versioning'?: Linter.RuleEntry + 'sonarjs/no-use-of-empty-return-value'?: Linter.RuleEntry<[]> /** - * Using unencrypted SageMaker notebook instances is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6319/javascript + * "catch" clauses should do more than rethrow + * @see https://sonarsource.github.io/rspec/#/rspec/S2737/javascript */ - 'sonarjs/aws-sagemaker-unencrypted-notebook'?: Linter.RuleEntry<[]> + 'sonarjs/no-useless-catch'?: Linter.RuleEntry<[]> /** - * Using unencrypted SNS topics is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6327/javascript + * Values should not be uselessly incremented + * @see https://sonarsource.github.io/rspec/#/rspec/S2123/javascript */ - 'sonarjs/aws-sns-unencrypted-topics'?: Linter.RuleEntry<[]> + 'sonarjs/no-useless-increment'?: Linter.RuleEntry<[]> /** - * Using unencrypted SQS queues is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6330/javascript + * Type intersections should use meaningful types + * @see https://sonarsource.github.io/rspec/#/rspec/S4335/javascript */ - 'sonarjs/aws-sqs-unencrypted-queue'?: Linter.RuleEntry<[]> + 'sonarjs/no-useless-intersection'?: Linter.RuleEntry<[]> /** - * Bitwise operators should not be used in boolean contexts - * @see https://sonarsource.github.io/rspec/#/rspec/S1529/javascript + * React state setter function should not be called with its matching state variable + * @see https://sonarsource.github.io/rspec/#/rspec/S6443/javascript */ - 'sonarjs/bitwise-operators'?: Linter.RuleEntry<[]> + 'sonarjs/no-useless-react-setstate'?: Linter.RuleEntry<[]> /** - * Variables should be used in the blocks where they are declared - * @see https://sonarsource.github.io/rspec/#/rspec/S2392/javascript + * Variables declared with "var" should be declared before they are used + * @see https://sonarsource.github.io/rspec/#/rspec/S1526/javascript */ - 'sonarjs/block-scoped-var'?: Linter.RuleEntry + 'sonarjs/no-variable-usage-before-declaration'?: Linter.RuleEntry /** - * Optional boolean parameters should have default value - * @see https://sonarsource.github.io/rspec/#/rspec/S4798/javascript + * Disabling Vue.js built-in escaping is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6299/javascript + * @deprecated */ - 'sonarjs/bool-param-default'?: Linter.RuleEntry<[]> + 'sonarjs/no-vue-bypass-sanitization'?: Linter.RuleEntry<[]> /** - * Function call arguments should not start on new lines - * @see https://sonarsource.github.io/rspec/#/rspec/S1472/javascript + * Cipher algorithms should be robust + * @see https://sonarsource.github.io/rspec/#/rspec/S5547/javascript */ - 'sonarjs/call-argument-line'?: Linter.RuleEntry<[]> + 'sonarjs/no-weak-cipher'?: Linter.RuleEntry<[]> /** - * Disabling Certificate Transparency monitoring is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5742/javascript + * Cryptographic keys should be robust + * @see https://sonarsource.github.io/rspec/#/rspec/S4426/javascript */ - 'sonarjs/certificate-transparency'?: Linter.RuleEntry + 'sonarjs/no-weak-keys'?: Linter.RuleEntry<[]> /** - * Chai assertions should have only one reason to succeed - * @see https://sonarsource.github.io/rspec/#/rspec/S6092/javascript + * Wildcard imports should not be used + * @see https://sonarsource.github.io/rspec/#/rspec/S2208/javascript */ - 'sonarjs/chai-determinate-assertion'?: Linter.RuleEntry<[]> + 'sonarjs/no-wildcard-import'?: Linter.RuleEntry<[]> /** - * Class names should comply with a naming convention - * @see https://sonarsource.github.io/rspec/#/rspec/S101/javascript + * Non-existent operators '=+', '=-' and '=!' should not be used + * @see https://sonarsource.github.io/rspec/#/rspec/S2757/javascript */ - 'sonarjs/class-name'?: Linter.RuleEntry + 'sonarjs/non-existent-operator'?: Linter.RuleEntry<[]> /** - * Class methods should be used instead of "prototype" assignments - * @see https://sonarsource.github.io/rspec/#/rspec/S3525/javascript + * Arithmetic operators should only have numbers as operands + * @see https://sonarsource.github.io/rspec/#/rspec/S3760/javascript */ - 'sonarjs/class-prototype'?: Linter.RuleEntry<[]> + 'sonarjs/non-number-in-arithmetic-expression'?: Linter.RuleEntry /** - * Dynamically executing code is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S1523/javascript + * Properties of variables with "null" or "undefined" values should not be accessed + * @see https://sonarsource.github.io/rspec/#/rspec/S2259/javascript */ - 'sonarjs/code-eval'?: Linter.RuleEntry<[]> + 'sonarjs/null-dereference'?: Linter.RuleEntry<[]> /** - * Cognitive Complexity of functions should not be too high - * @see https://sonarsource.github.io/rspec/#/rspec/S3776/javascript + * "" tags should provide an alternative content + * @see https://sonarsource.github.io/rspec/#/rspec/S5264/javascript */ - 'sonarjs/cognitive-complexity'?: Linter.RuleEntry + 'sonarjs/object-alt-content'?: Linter.RuleEntry<[]> /** - * Comma and logical OR operators should not be used in switch cases - * @see https://sonarsource.github.io/rspec/#/rspec/S3616/javascript + * Arithmetic operations should not result in "NaN" + * @see https://sonarsource.github.io/rspec/#/rspec/S3757/javascript */ - 'sonarjs/comma-or-logical-or-case'?: Linter.RuleEntry<[]> + 'sonarjs/operation-returning-nan'?: Linter.RuleEntry<[]> /** - * Track comments matching a regular expression - * @see https://sonarsource.github.io/rspec/#/rspec/S124/javascript + * Using shell interpreter when executing OS commands is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S4721/javascript */ - 'sonarjs/comment-regex'?: Linter.RuleEntry + 'sonarjs/os-command'?: Linter.RuleEntry<[]> /** - * Regular expression quantifiers and character classes should be used concisely - * @see https://sonarsource.github.io/rspec/#/rspec/S6353/javascript + * Origins should be verified during cross-origin communications + * @see https://sonarsource.github.io/rspec/#/rspec/S2819/javascript */ - 'sonarjs/concise-regex'?: Linter.RuleEntry<[]> + 'sonarjs/post-message'?: Linter.RuleEntry<[]> /** - * A conditionally executed single line should be denoted by indentation - * @see https://sonarsource.github.io/rspec/#/rspec/S3973/javascript - * @deprecated + * "default" clauses should be last + * @see https://sonarsource.github.io/rspec/#/rspec/S4524/javascript */ - 'sonarjs/conditional-indentation'?: Linter.RuleEntry + 'sonarjs/prefer-default-last'?: Linter.RuleEntry<[]> /** - * Allowing confidential information to be logged is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5757/javascript + * Local variables should not be declared and then immediately returned or thrown + * @see https://sonarsource.github.io/rspec/#/rspec/S1488/javascript */ - 'sonarjs/confidential-information-logging'?: Linter.RuleEntry + 'sonarjs/prefer-immediate-return'?: Linter.RuleEntry<[]> /** - * Objects should not be created to be dropped immediately without being used - * @see https://sonarsource.github.io/rspec/#/rspec/S1848/javascript + * Object literal syntax should be used + * @see https://sonarsource.github.io/rspec/#/rspec/S2428/javascript */ - 'sonarjs/constructor-for-side-effects'?: Linter.RuleEntry<[]> + 'sonarjs/prefer-object-literal'?: Linter.RuleEntry<[]> /** - * Allowing requests with excessive content length is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5693/javascript + * Shorthand promises should be used + * @see https://sonarsource.github.io/rspec/#/rspec/S4634/javascript */ - 'sonarjs/content-length'?: Linter.RuleEntry + 'sonarjs/prefer-promise-shorthand'?: Linter.RuleEntry<[]> /** - * Disabling content security policy fetch directives is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5728/javascript + * React props should be read-only + * @see https://sonarsource.github.io/rspec/#/rspec/S6759/javascript */ - 'sonarjs/content-security-policy'?: Linter.RuleEntry + 'sonarjs/prefer-read-only-props'?: Linter.RuleEntry<[]> /** - * Creating cookies without the "HttpOnly" flag is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S3330/javascript + * "RegExp.exec()" should be preferred over "String.match()" + * @see https://sonarsource.github.io/rspec/#/rspec/S6594/javascript */ - 'sonarjs/cookie-no-httponly'?: Linter.RuleEntry + 'sonarjs/prefer-regexp-exec'?: Linter.RuleEntry<[]> /** - * Writing cookies is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S2255/javascript - * @deprecated + * Return of boolean expressions should not be wrapped into an "if-then-else" statement + * @see https://sonarsource.github.io/rspec/#/rspec/S1126/javascript */ - 'sonarjs/cookies'?: Linter.RuleEntry<[]> + 'sonarjs/prefer-single-boolean-return'?: Linter.RuleEntry<[]> /** - * Having a permissive Cross-Origin Resource Sharing policy is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5122/javascript + * Type predicates should be used + * @see https://sonarsource.github.io/rspec/#/rspec/S4322/javascript */ - 'sonarjs/cors'?: Linter.RuleEntry + 'sonarjs/prefer-type-guard'?: Linter.RuleEntry<[]> /** - * Disabling CSRF protections is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4502/javascript + * A "while" loop should be used instead of a "for" loop + * @see https://sonarsource.github.io/rspec/#/rspec/S1264/javascript */ - 'sonarjs/csrf'?: Linter.RuleEntry + 'sonarjs/prefer-while'?: Linter.RuleEntry<[]> /** - * Cyclomatic Complexity of functions should not be too high - * @see https://sonarsource.github.io/rspec/#/rspec/S1541/javascript + * Using command line arguments is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S4823/javascript + * @deprecated */ - 'sonarjs/cyclomatic-complexity'?: Linter.RuleEntry + 'sonarjs/process-argv'?: Linter.RuleEntry<[]> /** - * Variables and functions should not be declared in the global scope - * @see https://sonarsource.github.io/rspec/#/rspec/S3798/javascript + * Delivering code in production with debug features activated is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S4507/javascript */ - 'sonarjs/declarations-in-global-scope'?: Linter.RuleEntry<[]> + 'sonarjs/production-debug'?: Linter.RuleEntry<[]> /** - * Deprecated APIs should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S1874/javascript + * Using pseudorandom number generators (PRNGs) is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S2245/javascript */ - 'sonarjs/deprecation'?: Linter.RuleEntry<[]> + 'sonarjs/pseudo-random'?: Linter.RuleEntry<[]> /** - * Destructuring syntax should be used for assignments - * @see https://sonarsource.github.io/rspec/#/rspec/S3514/javascript + * Public "static" fields should be read-only + * @see https://sonarsource.github.io/rspec/#/rspec/S1444/javascript */ - 'sonarjs/destructuring-assignment-syntax'?: Linter.RuleEntry + 'sonarjs/public-static-readonly'?: Linter.RuleEntry<[]> /** - * Strict equality operators should not be used with dissimilar types - * @see https://sonarsource.github.io/rspec/#/rspec/S3403/javascript + * Using publicly writable directories is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5443/javascript */ - 'sonarjs/different-types-comparison'?: Linter.RuleEntry + 'sonarjs/publicly-writable-directories'?: Linter.RuleEntry<[]> /** - * Disabling auto-escaping in template engines is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5247/javascript + * "Array.reduce()" calls should include an initial value + * @see https://sonarsource.github.io/rspec/#/rspec/S6959/javascript */ - 'sonarjs/disabled-auto-escaping'?: Linter.RuleEntry + 'sonarjs/reduce-initial-value'?: Linter.RuleEntry<[]> /** - * Using remote artifacts without integrity checks is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5725/javascript + * Redundant type aliases should not be used + * @see https://sonarsource.github.io/rspec/#/rspec/S6564/javascript */ - 'sonarjs/disabled-resource-integrity'?: Linter.RuleEntry<[]> + 'sonarjs/redundant-type-aliases'?: Linter.RuleEntry<[]> /** - * Disabling Mocha timeouts should be explicit - * @see https://sonarsource.github.io/rspec/#/rspec/S6080/javascript + * Regular expressions should not be too complicated + * @see https://sonarsource.github.io/rspec/#/rspec/S5843/javascript */ - 'sonarjs/disabled-timeout'?: Linter.RuleEntry<[]> + 'sonarjs/regex-complexity'?: Linter.RuleEntry /** - * Allowing browsers to perform DNS prefetching is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5743/javascript + * Using regular expressions is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S4784/javascript * @deprecated */ - 'sonarjs/dns-prefetching'?: Linter.RuleEntry + 'sonarjs/regular-expr'?: Linter.RuleEntry<[]> /** - * Character classes in regular expressions should not contain the same character twice - * @see https://sonarsource.github.io/rspec/#/rspec/S5869/javascript + * A new session should be created during user authentication + * @see https://sonarsource.github.io/rspec/#/rspec/S5876/javascript */ - 'sonarjs/duplicates-in-character-class'?: Linter.RuleEntry + 'sonarjs/session-regeneration'?: Linter.RuleEntry<[]> /** - * "if ... else if" constructs should end with "else" clauses - * @see https://sonarsource.github.io/rspec/#/rspec/S126/javascript + * Shorthand object properties should be grouped at the beginning or end of an object declaration + * @see https://sonarsource.github.io/rspec/#/rspec/S3499/javascript */ - 'sonarjs/elseif-without-else'?: Linter.RuleEntry<[]> + 'sonarjs/shorthand-property-grouping'?: Linter.RuleEntry /** - * Repeated patterns in regular expressions should not match the empty string - * @see https://sonarsource.github.io/rspec/#/rspec/S5842/javascript + * Character classes in regular expressions should not contain only one character + * @see https://sonarsource.github.io/rspec/#/rspec/S6397/javascript */ - 'sonarjs/empty-string-repetition'?: Linter.RuleEntry<[]> + 'sonarjs/single-char-in-character-classes'?: Linter.RuleEntry<[]> /** - * Encrypting data is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4787/javascript - * @deprecated + * Single-character alternations in regular expressions should be replaced with character classes + * @see https://sonarsource.github.io/rspec/#/rspec/S6035/javascript */ - 'sonarjs/encryption'?: Linter.RuleEntry<[]> + 'sonarjs/single-character-alternation'?: Linter.RuleEntry<[]> /** - * Encryption algorithms should be used with secure mode and padding scheme - * @see https://sonarsource.github.io/rspec/#/rspec/S5542/javascript + * Using slow regular expressions is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5852/javascript */ - 'sonarjs/encryption-secure-mode'?: Linter.RuleEntry<[]> + 'sonarjs/slow-regex'?: Linter.RuleEntry<[]> /** - * Trailing commas should be used - * @see https://sonarsource.github.io/rspec/#/rspec/S3723/javascript + * Using Sockets is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S4818/javascript * @deprecated */ - 'sonarjs/enforce-trailing-comma'?: Linter.RuleEntry + 'sonarjs/sockets'?: Linter.RuleEntry<[]> /** - * Replacement strings should reference existing regular expression groups - * @see https://sonarsource.github.io/rspec/#/rspec/S6328/javascript + * Formatting SQL queries is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S2077/javascript */ - 'sonarjs/existing-groups'?: Linter.RuleEntry<[]> + 'sonarjs/sql-queries'?: Linter.RuleEntry<[]> /** - * Expressions should not be too complex - * @see https://sonarsource.github.io/rspec/#/rspec/S1067/javascript + * Tests should be stable + * @see https://sonarsource.github.io/rspec/#/rspec/S5973/javascript */ - 'sonarjs/expression-complexity'?: Linter.RuleEntry + 'sonarjs/stable-tests'?: Linter.RuleEntry<[]> /** - * Track lack of copyright and license headers - * @see https://sonarsource.github.io/rspec/#/rspec/S1451/javascript + * Reading the Standard Input is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S4829/javascript + * @deprecated */ - 'sonarjs/file-header'?: Linter.RuleEntry + 'sonarjs/standard-input'?: Linter.RuleEntry<[]> /** - * Default export names and file names should match - * @see https://sonarsource.github.io/rspec/#/rspec/S3317/javascript + * Regular expressions with the global flag should be used with caution + * @see https://sonarsource.github.io/rspec/#/rspec/S6351/javascript */ - 'sonarjs/file-name-differ-from-class'?: Linter.RuleEntry<[]> + 'sonarjs/stateful-regex'?: Linter.RuleEntry /** - * Setting loose POSIX file permissions is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S2612/javascript + * Disabling Strict-Transport-Security policy is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5739/javascript */ - 'sonarjs/file-permissions'?: Linter.RuleEntry<[]> + 'sonarjs/strict-transport-security'?: Linter.RuleEntry /** - * File uploads should be restricted - * @see https://sonarsource.github.io/rspec/#/rspec/S2598/javascript + * Comparison operators should not be used with strings + * @see https://sonarsource.github.io/rspec/#/rspec/S3003/javascript */ - 'sonarjs/file-uploads'?: Linter.RuleEntry + 'sonarjs/strings-comparison'?: Linter.RuleEntry /** - * Track uses of "FIXME" tags - * @see https://sonarsource.github.io/rspec/#/rspec/S1134/javascript + * "super()" should be invoked appropriately + * @see https://sonarsource.github.io/rspec/#/rspec/S3854/javascript */ - 'sonarjs/fixme-tag'?: Linter.RuleEntry<[]> + 'sonarjs/super-invocation'?: Linter.RuleEntry<[]> /** - * "for...in" loops should filter properties before acting on them - * @see https://sonarsource.github.io/rspec/#/rspec/S1535/javascript + * Tables should have headers + * @see https://sonarsource.github.io/rspec/#/rspec/S5256/javascript */ - 'sonarjs/for-in'?: Linter.RuleEntry<[]> + 'sonarjs/table-header'?: Linter.RuleEntry<[]> /** - * A "for" loop update clause should move the counter in the right direction - * @see https://sonarsource.github.io/rspec/#/rspec/S2251/javascript + * Table cells should reference their headers + * @see https://sonarsource.github.io/rspec/#/rspec/S5260/javascript */ - 'sonarjs/for-loop-increment-sign'?: Linter.RuleEntry + 'sonarjs/table-header-reference'?: Linter.RuleEntry<[]> /** - * Disabling content security policy frame-ancestors directive is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5732/javascript + * Tests should check which exception is thrown + * @see https://sonarsource.github.io/rspec/#/rspec/S5958/javascript */ - 'sonarjs/frame-ancestors'?: Linter.RuleEntry + 'sonarjs/test-check-exception'?: Linter.RuleEntry<[]> /** - * Functions should not be defined inside loops - * @see https://sonarsource.github.io/rspec/#/rspec/S1515/javascript + * Track uses of "TODO" tags + * @see https://sonarsource.github.io/rspec/#/rspec/S1135/javascript */ - 'sonarjs/function-inside-loop'?: Linter.RuleEntry + 'sonarjs/todo-tag'?: Linter.RuleEntry<[]> /** - * Function and method names should comply with a naming convention - * @see https://sonarsource.github.io/rspec/#/rspec/S100/javascript + * Loops should not contain more than a single "break" or "continue" statement + * @see https://sonarsource.github.io/rspec/#/rspec/S135/javascript */ - 'sonarjs/function-name'?: Linter.RuleEntry + 'sonarjs/too-many-break-or-continue-in-loop'?: Linter.RuleEntry /** - * Functions should always return the same type - * @see https://sonarsource.github.io/rspec/#/rspec/S3800/javascript + * Regular expressions using Unicode character classes or property escapes should enable the unicode flag + * @see https://sonarsource.github.io/rspec/#/rspec/S5867/javascript */ - 'sonarjs/function-return-type'?: Linter.RuleEntry + 'sonarjs/unicode-aware-regex'?: Linter.RuleEntry /** - * Future reserved words should not be used as identifiers - * @see https://sonarsource.github.io/rspec/#/rspec/S1527/javascript + * Unnecessary imports should be removed + * @see https://sonarsource.github.io/rspec/#/rspec/S1128/javascript */ - 'sonarjs/future-reserved-words'?: Linter.RuleEntry<[]> + 'sonarjs/unused-import'?: Linter.RuleEntry<[]> /** - * Generators should explicitly "yield" a value - * @see https://sonarsource.github.io/rspec/#/rspec/S3531/javascript + * Names of regular expressions named groups should be used + * @see https://sonarsource.github.io/rspec/#/rspec/S5860/javascript */ - 'sonarjs/generator-without-yield'?: Linter.RuleEntry<[]> + 'sonarjs/unused-named-groups'?: Linter.RuleEntry /** - * Using weak hashing algorithms is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4790/javascript + * Server certificates should be verified during SSL/TLS connections + * @see https://sonarsource.github.io/rspec/#/rspec/S4830/javascript */ - 'sonarjs/hashing'?: Linter.RuleEntry<[]> + 'sonarjs/unverified-certificate'?: Linter.RuleEntry /** - * Statically serving hidden files is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5691/javascript + * Server hostnames should be verified during SSL/TLS connections + * @see https://sonarsource.github.io/rspec/#/rspec/S5527/javascript */ - 'sonarjs/hidden-files'?: Linter.RuleEntry<[]> + 'sonarjs/unverified-hostname'?: Linter.RuleEntry /** - * "in" should not be used with primitive types - * @see https://sonarsource.github.io/rspec/#/rspec/S3785/javascript + * "const" variables should not be reassigned + * @see https://sonarsource.github.io/rspec/#/rspec/S3500/javascript */ - 'sonarjs/in-operator-type-error'?: Linter.RuleEntry + 'sonarjs/updated-const-var'?: Linter.RuleEntry /** - * Functions should be called consistently with or without "new" - * @see https://sonarsource.github.io/rspec/#/rspec/S3686/javascript + * Loop counters should not be assigned within the loop body + * @see https://sonarsource.github.io/rspec/#/rspec/S2310/javascript */ - 'sonarjs/inconsistent-function-call'?: Linter.RuleEntry + 'sonarjs/updated-loop-counter'?: Linter.RuleEntry /** - * "indexOf" checks should not be for positive numbers - * @see https://sonarsource.github.io/rspec/#/rspec/S2692/javascript + * Type aliases should be used + * @see https://sonarsource.github.io/rspec/#/rspec/S4323/javascript */ - 'sonarjs/index-of-compare-to-positive-number'?: Linter.RuleEntry<[]> + 'sonarjs/use-type-alias'?: Linter.RuleEntry /** - * Creating cookies without the "secure" flag is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S2092/javascript + * Results of operations on strings should not be ignored + * @see https://sonarsource.github.io/rspec/#/rspec/S1154/javascript + * @deprecated */ - 'sonarjs/insecure-cookie'?: Linter.RuleEntry + 'sonarjs/useless-string-operation'?: Linter.RuleEntry<[]> /** - * JWT should be signed and verified with strong cipher algorithms - * @see https://sonarsource.github.io/rspec/#/rspec/S5659/javascript + * Values not convertible to numbers should not be used in numeric comparisons + * @see https://sonarsource.github.io/rspec/#/rspec/S3758/javascript */ - 'sonarjs/insecure-jwt-token'?: Linter.RuleEntry + 'sonarjs/values-not-convertible-to-numbers'?: Linter.RuleEntry<[]> /** - * Assertion arguments should be passed in the correct order - * @see https://sonarsource.github.io/rspec/#/rspec/S3415/javascript + * Variable, property and parameter names should comply with a naming convention + * @see https://sonarsource.github.io/rspec/#/rspec/S117/javascript */ - 'sonarjs/inverted-assertion-arguments'?: Linter.RuleEntry + 'sonarjs/variable-name'?: Linter.RuleEntry /** - * React components should not render non-boolean condition values - * @see https://sonarsource.github.io/rspec/#/rspec/S6439/javascript + * "void" should not be used + * @see https://sonarsource.github.io/rspec/#/rspec/S3735/javascript */ - 'sonarjs/jsx-no-leaked-render'?: Linter.RuleEntry<[]> + 'sonarjs/void-use'?: Linter.RuleEntry<[]> /** - * Only "while", "do", "for" and "switch" statements should be labelled - * @see https://sonarsource.github.io/rspec/#/rspec/S1439/javascript + * Weak SSL/TLS protocols should not be used + * @see https://sonarsource.github.io/rspec/#/rspec/S4423/javascript */ - 'sonarjs/label-position'?: Linter.RuleEntry<[]> + 'sonarjs/weak-ssl'?: Linter.RuleEntry<[]> /** - * Authorizing an opened window to access back to the originating window is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5148/javascript + * Web SQL databases should not be used + * @see https://sonarsource.github.io/rspec/#/rspec/S2817/javascript + * @deprecated */ - 'sonarjs/link-with-target-blank'?: Linter.RuleEntry<[]> + 'sonarjs/web-sql-database'?: Linter.RuleEntry<[]> /** - * Files should not have too many lines of code - * @see https://sonarsource.github.io/rspec/#/rspec/S104/javascript + * Disclosing fingerprints from web application technologies is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5689/javascript */ - 'sonarjs/max-lines'?: Linter.RuleEntry + 'sonarjs/x-powered-by'?: Linter.RuleEntry<[]> /** - * Functions should not have too many lines of code - * @see https://sonarsource.github.io/rspec/#/rspec/S138/javascript + * XML parsers should not be vulnerable to XXE attacks + * @see https://sonarsource.github.io/rspec/#/rspec/S2755/javascript */ - 'sonarjs/max-lines-per-function'?: Linter.RuleEntry + 'sonarjs/xml-parser-xxe'?: Linter.RuleEntry /** - * "switch" statements should not have too many "case" clauses - * @see https://sonarsource.github.io/rspec/#/rspec/S1479/javascript + * Executing XPath expressions is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S4817/javascript + * @deprecated */ - 'sonarjs/max-switch-cases'?: Linter.RuleEntry + 'sonarjs/xpath'?: Linter.RuleEntry<[]> /** - * Union types should not have too many elements - * @see https://sonarsource.github.io/rspec/#/rspec/S4622/javascript + * Interactions should be awaited + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/await-interactions.md */ - 'sonarjs/max-union-size'?: Linter.RuleEntry + 'storybook/await-interactions'?: Linter.RuleEntry<[]> /** - * "for" loop increment clauses should modify the loops' counters - * @see https://sonarsource.github.io/rspec/#/rspec/S1994/javascript + * Pass a context when invoking play function of another story + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/context-in-play-function.md */ - 'sonarjs/misplaced-loop-counter'?: Linter.RuleEntry<[]> + 'storybook/context-in-play-function'?: Linter.RuleEntry<[]> /** - * Control flow statements "if", "for", "while", "switch" and "try" should not be nested too deeply - * @see https://sonarsource.github.io/rspec/#/rspec/S134/javascript + * The component property should be set + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/csf-component.md */ - 'sonarjs/nested-control-flow'?: Linter.RuleEntry + 'storybook/csf-component'?: Linter.RuleEntry<[]> /** - * "new" should only be used with functions and classes - * @see https://sonarsource.github.io/rspec/#/rspec/S2999/javascript + * Story files should have a default export + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/default-exports.md */ - 'sonarjs/new-operator-misuse'?: Linter.RuleEntry + 'storybook/default-exports'?: Linter.RuleEntry<[]> /** - * All branches in a conditional structure should not have exactly the same implementation - * @see https://sonarsource.github.io/rspec/#/rspec/S3923/javascript + * Deprecated hierarchy separator in title property + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/hierarchy-separator.md */ - 'sonarjs/no-all-duplicated-branches'?: Linter.RuleEntry<[]> + 'storybook/hierarchy-separator'?: Linter.RuleEntry<[]> /** - * "Array.prototype.sort()" and "Array.prototype.toSorted()" should use a compare function - * @see https://sonarsource.github.io/rspec/#/rspec/S2871/javascript + * Meta should only have inline properties + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/meta-inline-properties.md */ - 'sonarjs/no-alphabetical-sort'?: Linter.RuleEntry<[]> + 'storybook/meta-inline-properties'?: Linter.RuleEntry /** - * Disabling Angular built-in sanitization is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6268/javascript + * Meta should use `satisfies Meta` + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/meta-satisfies-type.md */ - 'sonarjs/no-angular-bypass-sanitization'?: Linter.RuleEntry<[]> + 'storybook/meta-satisfies-type'?: Linter.RuleEntry<[]> /** - * "delete" should not be used on arrays - * @see https://sonarsource.github.io/rspec/#/rspec/S2870/javascript + * A story should not have a redundant name property + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-redundant-story-name.md */ - 'sonarjs/no-array-delete'?: Linter.RuleEntry<[]> + 'storybook/no-redundant-story-name'?: Linter.RuleEntry<[]> /** - * Array indexes should be numeric - * @see https://sonarsource.github.io/rspec/#/rspec/S3579/javascript + * storiesOf is deprecated and should not be used + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-stories-of.md */ - 'sonarjs/no-associative-arrays'?: Linter.RuleEntry<[]> + 'storybook/no-stories-of'?: Linter.RuleEntry<[]> /** - * Constructors should not contain asynchronous operations - * @see https://sonarsource.github.io/rspec/#/rspec/S7059/javascript + * Do not define a title in meta + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-title-property-in-meta.md */ - 'sonarjs/no-async-constructor'?: Linter.RuleEntry<[]> + 'storybook/no-title-property-in-meta'?: Linter.RuleEntry<[]> /** - * Built-in objects should not be overridden - * @see https://sonarsource.github.io/rspec/#/rspec/S2424/javascript + * This rule identifies storybook addons that are invalid because they are either not installed or contain a typo in their name. + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-uninstalled-addons.md */ - 'sonarjs/no-built-in-override'?: Linter.RuleEntry<[]> + 'storybook/no-uninstalled-addons'?: Linter.RuleEntry /** - * "switch" statements should not contain non-case labels - * @see https://sonarsource.github.io/rspec/#/rspec/S1219/javascript + * Stories should use PascalCase + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/prefer-pascal-case.md */ - 'sonarjs/no-case-label-in-switch'?: Linter.RuleEntry<[]> + 'storybook/prefer-pascal-case'?: Linter.RuleEntry<[]> /** - * Using clear-text protocols is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5332/javascript + * A story file must contain at least one story export + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/story-exports.md */ - 'sonarjs/no-clear-text-protocols'?: Linter.RuleEntry<[]> + 'storybook/story-exports'?: Linter.RuleEntry<[]> /** - * Tests should not execute any code after "done()" is called - * @see https://sonarsource.github.io/rspec/#/rspec/S6079/javascript + * Use expect from `@storybook/test`, `storybook/test` or `@storybook/jest` + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/use-storybook-expect.md */ - 'sonarjs/no-code-after-done'?: Linter.RuleEntry + 'storybook/use-storybook-expect'?: Linter.RuleEntry<[]> /** - * Mergeable "if" statements should be combined - * @see https://sonarsource.github.io/rspec/#/rspec/S1066/javascript + * Do not use testing-library directly on stories + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/use-storybook-testing-library.md */ - 'sonarjs/no-collapsible-if'?: Linter.RuleEntry + 'storybook/use-storybook-testing-library'?: Linter.RuleEntry<[]> /** - * Collection size and array length comparisons should make sense - * @see https://sonarsource.github.io/rspec/#/rspec/S3981/javascript + * Enforce a consistent and logical order of the Tailwind CSS classnames + * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/classnames-order.md */ - 'sonarjs/no-collection-size-mischeck'?: Linter.RuleEntry<[]> + 'tailwindcss/classnames-order'?: Linter.RuleEntry /** - * Sections of code should not be commented out - * @see https://sonarsource.github.io/rspec/#/rspec/S125/javascript + * Warns about dash prefixed classnames using arbitrary values + * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/enforces-negative-arbitrary-values.md */ - 'sonarjs/no-commented-code'?: Linter.RuleEntry<[]> + 'tailwindcss/enforces-negative-arbitrary-values'?: Linter.RuleEntry /** - * Regular expressions should not contain control characters - * @see https://sonarsource.github.io/rspec/#/rspec/S6324/javascript + * Enforces the usage of shorthand Tailwind CSS classnames + * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/enforces-shorthand.md */ - 'sonarjs/no-control-regex'?: Linter.RuleEntry<[]> + 'tailwindcss/enforces-shorthand'?: Linter.RuleEntry /** - * Unused assignments should be removed - * @see https://sonarsource.github.io/rspec/#/rspec/S1854/javascript + * Detect obsolete classnames when upgrading to Tailwind CSS v3 + * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/migration-from-tailwind-2.md */ - 'sonarjs/no-dead-store'?: Linter.RuleEntry<[]> + 'tailwindcss/migration-from-tailwind-2'?: Linter.RuleEntry /** - * "delete" should be used only with object properties - * @see https://sonarsource.github.io/rspec/#/rspec/S3001/javascript + * Forbid using arbitrary values in classnames + * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/no-arbitrary-value.md */ - 'sonarjs/no-delete-var'?: Linter.RuleEntry<[]> + 'tailwindcss/no-arbitrary-value'?: Linter.RuleEntry /** - * Union and intersection types should not include duplicated constituents - * @see https://sonarsource.github.io/rspec/#/rspec/S4621/javascript + * Avoid contradicting Tailwind CSS classnames (e.g. "w-3 w-5") + * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/no-contradicting-classname.md */ - 'sonarjs/no-duplicate-in-composite'?: Linter.RuleEntry + 'tailwindcss/no-contradicting-classname'?: Linter.RuleEntry /** - * String literals should not be duplicated - * @see https://sonarsource.github.io/rspec/#/rspec/S1192/javascript + * Detect classnames which do not belong to Tailwind CSS + * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/no-custom-classname.md */ - 'sonarjs/no-duplicate-string'?: Linter.RuleEntry + 'tailwindcss/no-custom-classname'?: Linter.RuleEntry /** - * Two branches in a conditional structure should not have exactly the same implementation - * @see https://sonarsource.github.io/rspec/#/rspec/S1871/javascript + * Forbid using arbitrary values in classnames when an equivalent preset exists + * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/no-unnecessary-arbitrary-value.md */ - 'sonarjs/no-duplicated-branches'?: Linter.RuleEntry + 'tailwindcss/no-unnecessary-arbitrary-value'?: Linter.RuleEntry /** - * Collection elements should not be replaced unconditionally - * @see https://sonarsource.github.io/rspec/#/rspec/S4143/javascript + * Enforce promises from async event methods are handled + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/await-async-events.md */ - 'sonarjs/no-element-overwrite'?: Linter.RuleEntry + 'testing-library/await-async-events'?: Linter.RuleEntry /** - * Reluctant quantifiers in regular expressions should be followed by an expression that can't match the empty string - * @see https://sonarsource.github.io/rspec/#/rspec/S6019/javascript + * Enforce promises from async queries to be handled + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/await-async-queries.md */ - 'sonarjs/no-empty-after-reluctant'?: Linter.RuleEntry<[]> + 'testing-library/await-async-queries'?: Linter.RuleEntry<[]> /** - * Alternation in regular expressions should not contain empty alternatives - * @see https://sonarsource.github.io/rspec/#/rspec/S6323/javascript + * Enforce promises from async utils to be awaited properly + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/await-async-utils.md */ - 'sonarjs/no-empty-alternatives'?: Linter.RuleEntry<[]> + 'testing-library/await-async-utils'?: Linter.RuleEntry<[]> /** - * Empty character classes should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S2639/javascript + * Ensures consistent usage of `data-testid` + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/consistent-data-testid.md */ - 'sonarjs/no-empty-character-class'?: Linter.RuleEntry<[]> + 'testing-library/consistent-data-testid'?: Linter.RuleEntry /** - * Empty collections should not be accessed or iterated - * @see https://sonarsource.github.io/rspec/#/rspec/S4158/javascript + * Disallow unnecessary `await` for sync events + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-await-sync-events.md */ - 'sonarjs/no-empty-collection'?: Linter.RuleEntry<[]> + 'testing-library/no-await-sync-events'?: Linter.RuleEntry /** - * Regular expressions should not contain empty groups - * @see https://sonarsource.github.io/rspec/#/rspec/S6331/javascript + * Disallow unnecessary `await` for sync queries + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-await-sync-queries.md */ - 'sonarjs/no-empty-group'?: Linter.RuleEntry<[]> + 'testing-library/no-await-sync-queries'?: Linter.RuleEntry<[]> /** - * Test files should contain at least one test case - * @see https://sonarsource.github.io/rspec/#/rspec/S2187/javascript + * Disallow the use of `container` methods + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-container.md */ - 'sonarjs/no-empty-test-file'?: Linter.RuleEntry<[]> + 'testing-library/no-container'?: Linter.RuleEntry<[]> /** - * Equality operators should not be used in "for" loop termination conditions - * @see https://sonarsource.github.io/rspec/#/rspec/S888/javascript + * Disallow the use of debugging utilities like `debug` + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-debugging-utils.md */ - 'sonarjs/no-equals-in-for-termination'?: Linter.RuleEntry<[]> + 'testing-library/no-debugging-utils'?: Linter.RuleEntry /** - * Exclusive tests should not be commited to version control - * @see https://sonarsource.github.io/rspec/#/rspec/S6426/javascript + * Disallow importing from DOM Testing Library + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-dom-import.md */ - 'sonarjs/no-exclusive-tests'?: Linter.RuleEntry<[]> + 'testing-library/no-dom-import'?: Linter.RuleEntry /** - * Function calls should not pass extra arguments - * @see https://sonarsource.github.io/rspec/#/rspec/S930/javascript + * Disallow the use of the global RegExp flag (/g) in queries + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-global-regexp-flag-in-query.md */ - 'sonarjs/no-extra-arguments'?: Linter.RuleEntry + 'testing-library/no-global-regexp-flag-in-query'?: Linter.RuleEntry<[]> /** - * Switch cases should end with an unconditional "break" statement - * @see https://sonarsource.github.io/rspec/#/rspec/S128/javascript + * Disallow the use of `cleanup` + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-manual-cleanup.md */ - 'sonarjs/no-fallthrough'?: Linter.RuleEntry<[]> + 'testing-library/no-manual-cleanup'?: Linter.RuleEntry<[]> /** - * "for in" should not be used with iterables - * @see https://sonarsource.github.io/rspec/#/rspec/S4139/javascript + * Disallow direct Node access + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-node-access.md */ - 'sonarjs/no-for-in-iterable'?: Linter.RuleEntry<[]> + 'testing-library/no-node-access'?: Linter.RuleEntry /** - * Function declarations should not be made within blocks - * @see https://sonarsource.github.io/rspec/#/rspec/S1530/javascript + * Disallow the use of promises passed to a `fireEvent` method + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-promise-in-fire-event.md */ - 'sonarjs/no-function-declaration-in-block'?: Linter.RuleEntry<[]> + 'testing-library/no-promise-in-fire-event'?: Linter.RuleEntry<[]> /** - * The global "this" object should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S2990/javascript + * Disallow the use of `render` in testing frameworks setup functions + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-render-in-lifecycle.md */ - 'sonarjs/no-global-this'?: Linter.RuleEntry<[]> + 'testing-library/no-render-in-lifecycle'?: Linter.RuleEntry /** - * Special identifiers should not be bound or assigned - * @see https://sonarsource.github.io/rspec/#/rspec/S2137/javascript + * Ensure no `data-testid` queries are used + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-test-id-queries.md */ - 'sonarjs/no-globals-shadowing'?: Linter.RuleEntry<[]> + 'testing-library/no-test-id-queries'?: Linter.RuleEntry<[]> /** - * Boolean expressions should not be gratuitous - * @see https://sonarsource.github.io/rspec/#/rspec/S2589/javascript + * Disallow wrapping Testing Library utils or empty callbacks in `act` + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-unnecessary-act.md */ - 'sonarjs/no-gratuitous-expressions'?: Linter.RuleEntry + 'testing-library/no-unnecessary-act'?: Linter.RuleEntry /** - * Using hardcoded IP addresses is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S1313/javascript + * Disallow the use of multiple `expect` calls inside `waitFor` + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-wait-for-multiple-assertions.md */ - 'sonarjs/no-hardcoded-ip'?: Linter.RuleEntry<[]> + 'testing-library/no-wait-for-multiple-assertions'?: Linter.RuleEntry<[]> /** - * Hard-coded passwords are security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S2068/javascript + * Disallow the use of side effects in `waitFor` + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-wait-for-side-effects.md */ - 'sonarjs/no-hardcoded-passwords'?: Linter.RuleEntry + 'testing-library/no-wait-for-side-effects'?: Linter.RuleEntry<[]> /** - * Hard-coded secrets are security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6418/javascript + * Ensures no snapshot is generated inside of a `waitFor` call + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-wait-for-snapshot.md */ - 'sonarjs/no-hardcoded-secrets'?: Linter.RuleEntry + 'testing-library/no-wait-for-snapshot'?: Linter.RuleEntry<[]> /** - * React's useState hook should not be used directly in the render function or body of a component - * @see https://sonarsource.github.io/rspec/#/rspec/S6442/javascript + * Suggest using explicit assertions rather than standalone queries + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-explicit-assert.md */ - 'sonarjs/no-hook-setter-in-body'?: Linter.RuleEntry<[]> + 'testing-library/prefer-explicit-assert'?: Linter.RuleEntry /** - * "if/else if" chains and "switch" cases should not have the same condition - * @see https://sonarsource.github.io/rspec/#/rspec/S1862/javascript + * Suggest using `find(All)By*` query instead of `waitFor` + `get(All)By*` to wait for elements + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-find-by.md */ - 'sonarjs/no-identical-conditions'?: Linter.RuleEntry + 'testing-library/prefer-find-by'?: Linter.RuleEntry<[]> /** - * Identical expressions should not be used on both sides of a binary operator - * @see https://sonarsource.github.io/rspec/#/rspec/S1764/javascript + * Suggest using implicit assertions for getBy* & findBy* queries + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-implicit-assert.md */ - 'sonarjs/no-identical-expressions'?: Linter.RuleEntry + 'testing-library/prefer-implicit-assert'?: Linter.RuleEntry<[]> /** - * Functions should not have identical implementations - * @see https://sonarsource.github.io/rspec/#/rspec/S4144/javascript + * Ensure appropriate `get*`/`query*` queries are used with their respective matchers + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-presence-queries.md */ - 'sonarjs/no-identical-functions'?: Linter.RuleEntry + 'testing-library/prefer-presence-queries'?: Linter.RuleEntry /** - * Exceptions should not be ignored - * @see https://sonarsource.github.io/rspec/#/rspec/S2486/javascript + * Suggest using `queryBy*` queries when waiting for disappearance + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-query-by-disappearance.md */ - 'sonarjs/no-ignored-exceptions'?: Linter.RuleEntry<[]> + 'testing-library/prefer-query-by-disappearance'?: Linter.RuleEntry<[]> /** - * Return values from functions without side effects should not be ignored - * @see https://sonarsource.github.io/rspec/#/rspec/S2201/javascript + * Ensure the configured `get*`/`query*` query is used with the corresponding matchers + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-query-matchers.md */ - 'sonarjs/no-ignored-return'?: Linter.RuleEntry<[]> + 'testing-library/prefer-query-matchers'?: Linter.RuleEntry /** - * Dependencies should be explicit - * @see https://sonarsource.github.io/rspec/#/rspec/S4328/javascript + * Suggest using `screen` while querying + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-screen-queries.md */ - 'sonarjs/no-implicit-dependencies'?: Linter.RuleEntry + 'testing-library/prefer-screen-queries'?: Linter.RuleEntry<[]> /** - * Variables should be declared explicitly - * @see https://sonarsource.github.io/rspec/#/rspec/S2703/javascript + * Suggest using `userEvent` over `fireEvent` for simulating user interactions + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-user-event.md */ - 'sonarjs/no-implicit-global'?: Linter.RuleEntry<[]> + 'testing-library/prefer-user-event'?: Linter.RuleEntry /** - * "in" should not be used on arrays - * @see https://sonarsource.github.io/rspec/#/rspec/S4619/javascript + * Enforce a valid naming for return value from `render` + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/render-result-naming-convention.md */ - 'sonarjs/no-in-misuse'?: Linter.RuleEntry<[]> + 'testing-library/render-result-naming-convention'?: Linter.RuleEntry<[]> /** - * Assertions should be complete - * @see https://sonarsource.github.io/rspec/#/rspec/S2970/javascript + * enforce linebreaks after opening and before closing array brackets + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/array-bracket-newline.html */ - 'sonarjs/no-incomplete-assertions'?: Linter.RuleEntry<[]> + 'toml/array-bracket-newline'?: Linter.RuleEntry /** - * Functions should use "return" consistently - * @see https://sonarsource.github.io/rspec/#/rspec/S3801/javascript + * enforce consistent spacing inside array brackets + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/array-bracket-spacing.html */ - 'sonarjs/no-inconsistent-returns'?: Linter.RuleEntry + 'toml/array-bracket-spacing'?: Linter.RuleEntry /** - * Strings and non-strings should not be added - * @see https://sonarsource.github.io/rspec/#/rspec/S3402/javascript + * enforce line breaks between array elements + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/array-element-newline.html */ - 'sonarjs/no-incorrect-string-concat'?: Linter.RuleEntry + 'toml/array-element-newline'?: Linter.RuleEntry /** - * Users should not use internal APIs - * @see https://sonarsource.github.io/rspec/#/rspec/S6627/javascript + * enforce consistent comma style in array + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/comma-style.html */ - 'sonarjs/no-internal-api-use'?: Linter.RuleEntry<[]> + 'toml/comma-style'?: Linter.RuleEntry /** - * Using intrusive permissions is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5604/javascript + * enforce consistent indentation + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/indent.html */ - 'sonarjs/no-intrusive-permissions'?: Linter.RuleEntry + 'toml/indent'?: Linter.RuleEntry /** - * "await" should only be used with promises - * @see https://sonarsource.github.io/rspec/#/rspec/S4123/javascript + * enforce consistent spacing inside braces + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/inline-table-curly-spacing.html */ - 'sonarjs/no-invalid-await'?: Linter.RuleEntry<[]> + 'toml/inline-table-curly-spacing'?: Linter.RuleEntry /** - * Regular expressions should be syntactically valid - * @see https://sonarsource.github.io/rspec/#/rspec/S5856/javascript + * enforce consistent spacing between keys and values in key/value pairs + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/key-spacing.html */ - 'sonarjs/no-invalid-regexp'?: Linter.RuleEntry<[]> + 'toml/key-spacing'?: Linter.RuleEntry /** - * Function returns should not be invariant - * @see https://sonarsource.github.io/rspec/#/rspec/S3516/javascript + * disallow defining pair keys out-of-order + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/keys-order.html */ - 'sonarjs/no-invariant-returns'?: Linter.RuleEntry + 'toml/keys-order'?: Linter.RuleEntry<[]> /** - * Boolean checks should not be inverted - * @see https://sonarsource.github.io/rspec/#/rspec/S1940/javascript + * disallow mixed data types in array + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/no-mixed-type-in-array.html */ - 'sonarjs/no-inverted-boolean-check'?: Linter.RuleEntry<[]> + 'toml/no-mixed-type-in-array'?: Linter.RuleEntry /** - * Forwarding client IP address is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5759/javascript + * disallow hexadecimal, octal and binary integer + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/no-non-decimal-integer.html */ - 'sonarjs/no-ip-forward'?: Linter.RuleEntry + 'toml/no-non-decimal-integer'?: Linter.RuleEntry /** - * Labels should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S1119/javascript + * disallow spacing around infix operators + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/no-space-dots.html */ - 'sonarjs/no-labels'?: Linter.RuleEntry<[]> + 'toml/no-space-dots'?: Linter.RuleEntry<[]> /** - * Literals should not be used as functions - * @see https://sonarsource.github.io/rspec/#/rspec/S6958/javascript + * disallow number separators that to not enhance readability. + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/no-unreadable-number-separator.html */ - 'sonarjs/no-literal-call'?: Linter.RuleEntry<[]> + 'toml/no-unreadable-number-separator'?: Linter.RuleEntry<[]> /** - * Allowing browsers to sniff MIME types is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5734/javascript + * require or disallow padding lines between pairs + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/padding-line-between-pairs.html */ - 'sonarjs/no-mime-sniff'?: Linter.RuleEntry + 'toml/padding-line-between-pairs'?: Linter.RuleEntry<[]> /** - * Array-mutating methods should not be used misleadingly - * @see https://sonarsource.github.io/rspec/#/rspec/S4043/javascript + * require or disallow padding lines between tables + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/padding-line-between-tables.html */ - 'sonarjs/no-misleading-array-reverse'?: Linter.RuleEntry<[]> + 'toml/padding-line-between-tables'?: Linter.RuleEntry<[]> /** - * Unicode Grapheme Clusters should be avoided inside regex character classes - * @see https://sonarsource.github.io/rspec/#/rspec/S5868/javascript + * disallow precision of fractional seconds greater than the specified value. + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/precision-of-fractional-seconds.html */ - 'sonarjs/no-misleading-character-class'?: Linter.RuleEntry<[]> + 'toml/precision-of-fractional-seconds'?: Linter.RuleEntry /** - * Allowing mixed-content is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5730/javascript + * disallow precision of integer greater than the specified value. + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/precision-of-integer.html */ - 'sonarjs/no-mixed-content'?: Linter.RuleEntry + 'toml/precision-of-integer'?: Linter.RuleEntry /** - * Assignments should not be made from within sub-expressions - * @see https://sonarsource.github.io/rspec/#/rspec/S1121/javascript + * require or disallow quotes around keys + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/quoted-keys.html */ - 'sonarjs/no-nested-assignment'?: Linter.RuleEntry<[]> + 'toml/quoted-keys'?: Linter.RuleEntry /** - * Ternary operators should not be nested - * @see https://sonarsource.github.io/rspec/#/rspec/S3358/javascript + * require spacing around equals sign + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/space-eq-sign.html + * @deprecated */ - 'sonarjs/no-nested-conditional'?: Linter.RuleEntry<[]> + 'toml/space-eq-sign'?: Linter.RuleEntry<[]> /** - * Functions should not be nested too deeply - * @see https://sonarsource.github.io/rspec/#/rspec/S2004/javascript + * enforce consistent spacing after the `#` in a comment + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/spaced-comment.html */ - 'sonarjs/no-nested-functions'?: Linter.RuleEntry + 'toml/spaced-comment'?: Linter.RuleEntry /** - * Increment (++) and decrement (--) operators should not be used in a method call or mixed with other operators in an expression - * @see https://sonarsource.github.io/rspec/#/rspec/S881/javascript + * enforce consistent spacing inside table brackets + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/table-bracket-spacing.html */ - 'sonarjs/no-nested-incdec'?: Linter.RuleEntry<[]> + 'toml/table-bracket-spacing'?: Linter.RuleEntry /** - * "switch" statements should not be nested - * @see https://sonarsource.github.io/rspec/#/rspec/S1821/javascript + * disallow defining tables out-of-order + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/tables-order.html */ - 'sonarjs/no-nested-switch'?: Linter.RuleEntry<[]> + 'toml/tables-order'?: Linter.RuleEntry<[]> /** - * Template literals should not be nested - * @see https://sonarsource.github.io/rspec/#/rspec/S4624/javascript + * disallow parsing errors in Vue custom blocks + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/vue-custom-block/no-parsing-error.html */ - 'sonarjs/no-nested-template-literals'?: Linter.RuleEntry<[]> + 'toml/vue-custom-block/no-parsing-error'?: Linter.RuleEntry<[]> /** - * Loops with at most one iteration should be refactored - * @see https://sonarsource.github.io/rspec/#/rspec/S1751/javascript + * Validates that TypeScript documentation comments conform to the TSDoc standard + * @see https://tsdoc.org/pages/packages/eslint-plugin-tsdoc */ - 'sonarjs/no-one-iteration-loop'?: Linter.RuleEntry<[]> + 'tsdoc/syntax'?: Linter.RuleEntry<[]> /** - * Searching OS commands in PATH is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4036/javascript + * Improve regexes by making them shorter, consistent, and safer. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/better-regex.md */ - 'sonarjs/no-os-command-from-path'?: Linter.RuleEntry<[]> + 'unicorn/better-regex'?: Linter.RuleEntry /** - * Initial values of parameters, caught exceptions, and loop variables should not be ignored - * @see https://sonarsource.github.io/rspec/#/rspec/S1226/javascript + * Enforce a specific parameter name in catch clauses. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/catch-error-name.md */ - 'sonarjs/no-parameter-reassignment'?: Linter.RuleEntry<[]> + 'unicorn/catch-error-name'?: Linter.RuleEntry /** - * Wrapper objects should not be used for primitive types - * @see https://sonarsource.github.io/rspec/#/rspec/S1533/javascript + * Enforce consistent assertion style with `node:assert`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/consistent-assert.md */ - 'sonarjs/no-primitive-wrappers'?: Linter.RuleEntry<[]> + 'unicorn/consistent-assert'?: Linter.RuleEntry<[]> /** - * Assignments should not be redundant - * @see https://sonarsource.github.io/rspec/#/rspec/S4165/javascript + * Prefer passing `Date` directly to the constructor when cloning. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/consistent-date-clone.md */ - 'sonarjs/no-redundant-assignments'?: Linter.RuleEntry<[]> + 'unicorn/consistent-date-clone'?: Linter.RuleEntry<[]> /** - * Boolean literals should not be used in comparisons - * @see https://sonarsource.github.io/rspec/#/rspec/S1125/javascript + * Use destructured variables over properties. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/consistent-destructuring.md */ - 'sonarjs/no-redundant-boolean'?: Linter.RuleEntry<[]> + 'unicorn/consistent-destructuring'?: Linter.RuleEntry<[]> /** - * Jump statements should not be redundant - * @see https://sonarsource.github.io/rspec/#/rspec/S3626/javascript + * Prefer consistent types when spreading a ternary in an array literal. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/consistent-empty-array-spread.md */ - 'sonarjs/no-redundant-jump'?: Linter.RuleEntry<[]> + 'unicorn/consistent-empty-array-spread'?: Linter.RuleEntry<[]> /** - * Optional property declarations should not use both '?' and 'undefined' syntax - * @see https://sonarsource.github.io/rspec/#/rspec/S4782/javascript + * Enforce consistent style for element existence checks with `indexOf()`, `lastIndexOf()`, `findIndex()`, and `findLastIndex()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/consistent-existence-index-check.md */ - 'sonarjs/no-redundant-optional'?: Linter.RuleEntry + 'unicorn/consistent-existence-index-check'?: Linter.RuleEntry<[]> /** - * Redundant pairs of parentheses should be removed - * @see https://sonarsource.github.io/rspec/#/rspec/S1110/javascript - * @deprecated + * Move function definitions to the highest possible scope. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/consistent-function-scoping.md */ - 'sonarjs/no-redundant-parentheses'?: Linter.RuleEntry + 'unicorn/consistent-function-scoping'?: Linter.RuleEntry /** - * Variables should be defined before being used - * @see https://sonarsource.github.io/rspec/#/rspec/S3827/javascript + * Enforce correct `Error` subclassing. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/custom-error-definition.md */ - 'sonarjs/no-reference-error'?: Linter.RuleEntry + 'unicorn/custom-error-definition'?: Linter.RuleEntry<[]> /** - * Disabling strict HTTP no-referrer policy is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5736/javascript + * Enforce no spaces between braces. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/empty-brace-spaces.md */ - 'sonarjs/no-referrer-policy'?: Linter.RuleEntry + 'unicorn/empty-brace-spaces'?: Linter.RuleEntry<[]> /** - * Regular expressions should not contain multiple spaces - * @see https://sonarsource.github.io/rspec/#/rspec/S6326/javascript + * Enforce passing a `message` value when creating a built-in error. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/error-message.md */ - 'sonarjs/no-regex-spaces'?: Linter.RuleEntry<[]> + 'unicorn/error-message'?: Linter.RuleEntry<[]> /** - * "import" should be used to include external code - * @see https://sonarsource.github.io/rspec/#/rspec/S3533/javascript + * Require escape sequences to use uppercase or lowercase values. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/escape-case.md */ - 'sonarjs/no-require-or-define'?: Linter.RuleEntry<[]> + 'unicorn/escape-case'?: Linter.RuleEntry /** - * Primitive return types should be used - * @see https://sonarsource.github.io/rspec/#/rspec/S4324/javascript + * Add expiration conditions to TODO comments. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/expiring-todo-comments.md */ - 'sonarjs/no-return-type-any'?: Linter.RuleEntry<[]> + 'unicorn/expiring-todo-comments'?: Linter.RuleEntry /** - * Assertions should not be given twice the same argument - * @see https://sonarsource.github.io/rspec/#/rspec/S5863/javascript + * Enforce explicitly comparing the `length` or `size` property of a value. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/explicit-length-check.md */ - 'sonarjs/no-same-argument-assert'?: Linter.RuleEntry + 'unicorn/explicit-length-check'?: Linter.RuleEntry /** - * Conditionals should start on new lines - * @see https://sonarsource.github.io/rspec/#/rspec/S3972/javascript + * Enforce a case style for filenames. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/filename-case.md */ - 'sonarjs/no-same-line-conditional'?: Linter.RuleEntry + 'unicorn/filename-case'?: Linter.RuleEntry /** - * Methods should not contain selector parameters - * @see https://sonarsource.github.io/rspec/#/rspec/S2301/javascript + * Enforce specific import styles per module. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/import-style.md */ - 'sonarjs/no-selector-parameter'?: Linter.RuleEntry + 'unicorn/import-style'?: Linter.RuleEntry /** - * Tests should not be skipped without providing a reason - * @see https://sonarsource.github.io/rspec/#/rspec/S1607/javascript + * Enforce the use of `new` for all builtins, except `String`, `Number`, `Boolean`, `Symbol` and `BigInt`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/new-for-builtins.md */ - 'sonarjs/no-skipped-tests'?: Linter.RuleEntry<[]> + 'unicorn/new-for-builtins'?: Linter.RuleEntry<[]> /** - * "if" statements should be preferred over "switch" when simpler - * @see https://sonarsource.github.io/rspec/#/rspec/S1301/javascript + * Enforce specifying rules to disable in `eslint-disable` comments. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-abusive-eslint-disable.md */ - 'sonarjs/no-small-switch'?: Linter.RuleEntry<[]> + 'unicorn/no-abusive-eslint-disable'?: Linter.RuleEntry<[]> /** - * Track uses of "NOSONAR" comments - * @see https://sonarsource.github.io/rspec/#/rspec/S1291/javascript + * Disallow recursive access to `this` within getters and setters. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-accessor-recursion.md */ - 'sonarjs/no-sonar-comments'?: Linter.RuleEntry<[]> + 'unicorn/no-accessor-recursion'?: Linter.RuleEntry<[]> /** - * Tabulation characters should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S105/javascript - * @deprecated + * Disallow anonymous functions and classes as the default export. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-anonymous-default-export.md */ - 'sonarjs/no-tab'?: Linter.RuleEntry<[]> + 'unicorn/no-anonymous-default-export'?: Linter.RuleEntry<[]> /** - * HTML "
" should not be used for layout purposes - * @see https://sonarsource.github.io/rspec/#/rspec/S5257/javascript + * Prevent passing a function reference directly to iterator methods. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-array-callback-reference.md */ - 'sonarjs/no-table-as-layout'?: Linter.RuleEntry<[]> + 'unicorn/no-array-callback-reference'?: Linter.RuleEntry<[]> /** - * Promise rejections should not be caught by "try" blocks - * @see https://sonarsource.github.io/rspec/#/rspec/S4822/javascript + * Prefer `for…of` over the `forEach` method. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-array-for-each.md */ - 'sonarjs/no-try-promise'?: Linter.RuleEntry + 'unicorn/no-array-for-each'?: Linter.RuleEntry<[]> /** - * "undefined" should not be passed as the value of optional parameters - * @see https://sonarsource.github.io/rspec/#/rspec/S4623/javascript + * Disallow using the `this` argument in array methods. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-array-method-this-argument.md */ - 'sonarjs/no-undefined-argument'?: Linter.RuleEntry<[]> + 'unicorn/no-array-method-this-argument'?: Linter.RuleEntry<[]> /** - * "undefined" should not be assigned - * @see https://sonarsource.github.io/rspec/#/rspec/S2138/javascript + * Replaced by `unicorn/prefer-single-call` which covers more cases. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/deprecated-rules.md#no-array-push-push + * @deprecated */ - 'sonarjs/no-undefined-assignment'?: Linter.RuleEntry<[]> + 'unicorn/no-array-push-push'?: Linter.RuleEntry<[]> /** - * Multiline blocks should be enclosed in curly braces - * @see https://sonarsource.github.io/rspec/#/rspec/S2681/javascript + * Disallow `Array#reduce()` and `Array#reduceRight()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-array-reduce.md */ - 'sonarjs/no-unenclosed-multiline-block'?: Linter.RuleEntry<[]> + 'unicorn/no-array-reduce'?: Linter.RuleEntry /** - * JSX list components keys should match up between renders - * @see https://sonarsource.github.io/rspec/#/rspec/S6486/javascript + * Disallow member access from await expression. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-await-expression-member.md */ - 'sonarjs/no-uniq-key'?: Linter.RuleEntry<[]> + 'unicorn/no-await-expression-member'?: Linter.RuleEntry<[]> /** - * Expanding archive files without controlling resource consumption is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5042/javascript + * Disallow using `await` in `Promise` method parameters. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-await-in-promise-methods.md */ - 'sonarjs/no-unsafe-unzip'?: Linter.RuleEntry<[]> + 'unicorn/no-await-in-promise-methods'?: Linter.RuleEntry<[]> /** - * Errors should not be created without being thrown - * @see https://sonarsource.github.io/rspec/#/rspec/S3984/javascript + * Do not use leading/trailing space between `console.log` parameters. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-console-spaces.md */ - 'sonarjs/no-unthrown-error'?: Linter.RuleEntry<[]> + 'unicorn/no-console-spaces'?: Linter.RuleEntry<[]> /** - * Collection contents should be used - * @see https://sonarsource.github.io/rspec/#/rspec/S4030/javascript + * Do not use `document.cookie` directly. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-document-cookie.md */ - 'sonarjs/no-unused-collection'?: Linter.RuleEntry<[]> + 'unicorn/no-document-cookie'?: Linter.RuleEntry<[]> /** - * Unused function parameters should be removed - * @see https://sonarsource.github.io/rspec/#/rspec/S1172/javascript + * Disallow empty files. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-empty-file.md */ - 'sonarjs/no-unused-function-argument'?: Linter.RuleEntry<[]> + 'unicorn/no-empty-file'?: Linter.RuleEntry<[]> /** - * Unused local variables and functions should be removed - * @see https://sonarsource.github.io/rspec/#/rspec/S1481/javascript + * Do not use a `for` loop that can be replaced with a `for-of` loop. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-for-loop.md */ - 'sonarjs/no-unused-vars'?: Linter.RuleEntry<[]> + 'unicorn/no-for-loop'?: Linter.RuleEntry<[]> /** - * The return value of void functions should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S3699/javascript + * Enforce the use of Unicode escapes instead of hexadecimal escapes. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-hex-escape.md */ - 'sonarjs/no-use-of-empty-return-value'?: Linter.RuleEntry<[]> + 'unicorn/no-hex-escape'?: Linter.RuleEntry<[]> /** - * "catch" clauses should do more than rethrow - * @see https://sonarsource.github.io/rspec/#/rspec/S2737/javascript + * Replaced by `unicorn/no-instanceof-builtins` which covers more cases. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/deprecated-rules.md#no-instanceof-array + * @deprecated */ - 'sonarjs/no-useless-catch'?: Linter.RuleEntry<[]> + 'unicorn/no-instanceof-array'?: Linter.RuleEntry<[]> /** - * Values should not be uselessly incremented - * @see https://sonarsource.github.io/rspec/#/rspec/S2123/javascript + * Disallow `instanceof` with built-in objects + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-instanceof-builtins.md */ - 'sonarjs/no-useless-increment'?: Linter.RuleEntry<[]> + 'unicorn/no-instanceof-builtins'?: Linter.RuleEntry /** - * Type intersections should use meaningful types - * @see https://sonarsource.github.io/rspec/#/rspec/S4335/javascript + * Disallow invalid options in `fetch()` and `new Request()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-invalid-fetch-options.md */ - 'sonarjs/no-useless-intersection'?: Linter.RuleEntry<[]> + 'unicorn/no-invalid-fetch-options'?: Linter.RuleEntry<[]> /** - * React state setter function should not be called with its matching state variable - * @see https://sonarsource.github.io/rspec/#/rspec/S6443/javascript + * Prevent calling `EventTarget#removeEventListener()` with the result of an expression. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-invalid-remove-event-listener.md */ - 'sonarjs/no-useless-react-setstate'?: Linter.RuleEntry<[]> + 'unicorn/no-invalid-remove-event-listener'?: Linter.RuleEntry<[]> /** - * Variables declared with "var" should be declared before they are used - * @see https://sonarsource.github.io/rspec/#/rspec/S1526/javascript + * Disallow identifiers starting with `new` or `class`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-keyword-prefix.md */ - 'sonarjs/no-variable-usage-before-declaration'?: Linter.RuleEntry + 'unicorn/no-keyword-prefix'?: Linter.RuleEntry /** - * Disabling Vue.js built-in escaping is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6299/javascript + * Replaced by `unicorn/no-unnecessary-slice-end` which covers more cases. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/deprecated-rules.md#no-length-as-slice-end * @deprecated */ - 'sonarjs/no-vue-bypass-sanitization'?: Linter.RuleEntry<[]> + 'unicorn/no-length-as-slice-end'?: Linter.RuleEntry<[]> /** - * Cipher algorithms should be robust - * @see https://sonarsource.github.io/rspec/#/rspec/S5547/javascript + * Disallow `if` statements as the only statement in `if` blocks without `else`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-lonely-if.md */ - 'sonarjs/no-weak-cipher'?: Linter.RuleEntry<[]> + 'unicorn/no-lonely-if'?: Linter.RuleEntry<[]> /** - * Cryptographic keys should be robust - * @see https://sonarsource.github.io/rspec/#/rspec/S4426/javascript + * Disallow a magic number as the `depth` argument in `Array#flat(…).` + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-magic-array-flat-depth.md */ - 'sonarjs/no-weak-keys'?: Linter.RuleEntry<[]> + 'unicorn/no-magic-array-flat-depth'?: Linter.RuleEntry<[]> /** - * Wildcard imports should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S2208/javascript + * Disallow named usage of default import and export. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-named-default.md */ - 'sonarjs/no-wildcard-import'?: Linter.RuleEntry<[]> + 'unicorn/no-named-default'?: Linter.RuleEntry<[]> /** - * Non-existent operators '=+', '=-' and '=!' should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S2757/javascript + * Disallow negated conditions. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-negated-condition.md */ - 'sonarjs/non-existent-operator'?: Linter.RuleEntry<[]> + 'unicorn/no-negated-condition'?: Linter.RuleEntry<[]> /** - * Arithmetic operators should only have numbers as operands - * @see https://sonarsource.github.io/rspec/#/rspec/S3760/javascript + * Disallow negated expression in equality check. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-negation-in-equality-check.md */ - 'sonarjs/non-number-in-arithmetic-expression'?: Linter.RuleEntry + 'unicorn/no-negation-in-equality-check'?: Linter.RuleEntry<[]> /** - * Properties of variables with "null" or "undefined" values should not be accessed - * @see https://sonarsource.github.io/rspec/#/rspec/S2259/javascript + * Disallow nested ternary expressions. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-nested-ternary.md */ - 'sonarjs/null-dereference'?: Linter.RuleEntry<[]> + 'unicorn/no-nested-ternary'?: Linter.RuleEntry<[]> /** - * "" tags should provide an alternative content - * @see https://sonarsource.github.io/rspec/#/rspec/S5264/javascript + * Disallow `new Array()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-new-array.md */ - 'sonarjs/object-alt-content'?: Linter.RuleEntry<[]> + 'unicorn/no-new-array'?: Linter.RuleEntry<[]> /** - * Arithmetic operations should not result in "NaN" - * @see https://sonarsource.github.io/rspec/#/rspec/S3757/javascript + * Enforce the use of `Buffer.from()` and `Buffer.alloc()` instead of the deprecated `new Buffer()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-new-buffer.md */ - 'sonarjs/operation-returning-nan'?: Linter.RuleEntry<[]> + 'unicorn/no-new-buffer'?: Linter.RuleEntry<[]> /** - * Using shell interpreter when executing OS commands is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4721/javascript + * Disallow the use of the `null` literal. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-null.md */ - 'sonarjs/os-command'?: Linter.RuleEntry<[]> + 'unicorn/no-null'?: Linter.RuleEntry /** - * Origins should be verified during cross-origin communications - * @see https://sonarsource.github.io/rspec/#/rspec/S2819/javascript + * Disallow the use of objects as default parameters. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-object-as-default-parameter.md */ - 'sonarjs/post-message'?: Linter.RuleEntry<[]> + 'unicorn/no-object-as-default-parameter'?: Linter.RuleEntry<[]> /** - * "default" clauses should be last - * @see https://sonarsource.github.io/rspec/#/rspec/S4524/javascript + * Disallow `process.exit()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-process-exit.md */ - 'sonarjs/prefer-default-last'?: Linter.RuleEntry<[]> + 'unicorn/no-process-exit'?: Linter.RuleEntry<[]> /** - * Local variables should not be declared and then immediately returned or thrown - * @see https://sonarsource.github.io/rspec/#/rspec/S1488/javascript + * Disallow passing single-element arrays to `Promise` methods. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-single-promise-in-promise-methods.md */ - 'sonarjs/prefer-immediate-return'?: Linter.RuleEntry<[]> + 'unicorn/no-single-promise-in-promise-methods'?: Linter.RuleEntry<[]> /** - * Object literal syntax should be used - * @see https://sonarsource.github.io/rspec/#/rspec/S2428/javascript + * Disallow classes that only have static members. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-static-only-class.md */ - 'sonarjs/prefer-object-literal'?: Linter.RuleEntry<[]> + 'unicorn/no-static-only-class'?: Linter.RuleEntry<[]> /** - * Shorthand promises should be used - * @see https://sonarsource.github.io/rspec/#/rspec/S4634/javascript + * Disallow `then` property. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-thenable.md */ - 'sonarjs/prefer-promise-shorthand'?: Linter.RuleEntry<[]> + 'unicorn/no-thenable'?: Linter.RuleEntry<[]> /** - * React props should be read-only - * @see https://sonarsource.github.io/rspec/#/rspec/S6759/javascript + * Disallow assigning `this` to a variable. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-this-assignment.md */ - 'sonarjs/prefer-read-only-props'?: Linter.RuleEntry<[]> + 'unicorn/no-this-assignment'?: Linter.RuleEntry<[]> /** - * "RegExp.exec()" should be preferred over "String.match()" - * @see https://sonarsource.github.io/rspec/#/rspec/S6594/javascript + * Disallow comparing `undefined` using `typeof`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-typeof-undefined.md */ - 'sonarjs/prefer-regexp-exec'?: Linter.RuleEntry<[]> + 'unicorn/no-typeof-undefined'?: Linter.RuleEntry /** - * Return of boolean expressions should not be wrapped into an "if-then-else" statement - * @see https://sonarsource.github.io/rspec/#/rspec/S1126/javascript + * Disallow using `1` as the `depth` argument of `Array#flat()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unnecessary-array-flat-depth.md */ - 'sonarjs/prefer-single-boolean-return'?: Linter.RuleEntry<[]> + 'unicorn/no-unnecessary-array-flat-depth'?: Linter.RuleEntry<[]> /** - * Type predicates should be used - * @see https://sonarsource.github.io/rspec/#/rspec/S4322/javascript + * Disallow using `.length` or `Infinity` as the `deleteCount` or `skipCount` argument of `Array#{splice,toSpliced}()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unnecessary-array-splice-count.md */ - 'sonarjs/prefer-type-guard'?: Linter.RuleEntry<[]> + 'unicorn/no-unnecessary-array-splice-count'?: Linter.RuleEntry<[]> /** - * A "while" loop should be used instead of a "for" loop - * @see https://sonarsource.github.io/rspec/#/rspec/S1264/javascript + * Disallow awaiting non-promise values. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unnecessary-await.md */ - 'sonarjs/prefer-while'?: Linter.RuleEntry<[]> + 'unicorn/no-unnecessary-await'?: Linter.RuleEntry<[]> /** - * Using command line arguments is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4823/javascript - * @deprecated + * Enforce the use of built-in methods instead of unnecessary polyfills. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unnecessary-polyfills.md */ - 'sonarjs/process-argv'?: Linter.RuleEntry<[]> + 'unicorn/no-unnecessary-polyfills'?: Linter.RuleEntry /** - * Delivering code in production with debug features activated is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4507/javascript + * Disallow using `.length` or `Infinity` as the `end` argument of `{Array,String,TypedArray}#slice()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unnecessary-slice-end.md */ - 'sonarjs/production-debug'?: Linter.RuleEntry<[]> + 'unicorn/no-unnecessary-slice-end'?: Linter.RuleEntry<[]> /** - * Using pseudorandom number generators (PRNGs) is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S2245/javascript + * Disallow unreadable array destructuring. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unreadable-array-destructuring.md */ - 'sonarjs/pseudo-random'?: Linter.RuleEntry<[]> + 'unicorn/no-unreadable-array-destructuring'?: Linter.RuleEntry<[]> /** - * Public "static" fields should be read-only - * @see https://sonarsource.github.io/rspec/#/rspec/S1444/javascript + * Disallow unreadable IIFEs. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unreadable-iife.md */ - 'sonarjs/public-static-readonly'?: Linter.RuleEntry<[]> + 'unicorn/no-unreadable-iife'?: Linter.RuleEntry<[]> /** - * Using publicly writable directories is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5443/javascript + * Disallow unused object properties. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unused-properties.md */ - 'sonarjs/publicly-writable-directories'?: Linter.RuleEntry<[]> + 'unicorn/no-unused-properties'?: Linter.RuleEntry<[]> /** - * "Array.reduce()" calls should include an initial value - * @see https://sonarsource.github.io/rspec/#/rspec/S6959/javascript + * Disallow useless fallback when spreading in object literals. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-useless-fallback-in-spread.md */ - 'sonarjs/reduce-initial-value'?: Linter.RuleEntry<[]> + 'unicorn/no-useless-fallback-in-spread'?: Linter.RuleEntry<[]> /** - * Redundant type aliases should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S6564/javascript + * Disallow useless array length check. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-useless-length-check.md */ - 'sonarjs/redundant-type-aliases'?: Linter.RuleEntry<[]> + 'unicorn/no-useless-length-check'?: Linter.RuleEntry<[]> /** - * Regular expressions should not be too complicated - * @see https://sonarsource.github.io/rspec/#/rspec/S5843/javascript + * Disallow returning/yielding `Promise.resolve/reject()` in async functions or promise callbacks + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-useless-promise-resolve-reject.md */ - 'sonarjs/regex-complexity'?: Linter.RuleEntry + 'unicorn/no-useless-promise-resolve-reject'?: Linter.RuleEntry<[]> /** - * Using regular expressions is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4784/javascript - * @deprecated + * Disallow unnecessary spread. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-useless-spread.md */ - 'sonarjs/regular-expr'?: Linter.RuleEntry<[]> + 'unicorn/no-useless-spread'?: Linter.RuleEntry<[]> /** - * A new session should be created during user authentication - * @see https://sonarsource.github.io/rspec/#/rspec/S5876/javascript + * Disallow useless case in switch statements. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-useless-switch-case.md */ - 'sonarjs/session-regeneration'?: Linter.RuleEntry<[]> + 'unicorn/no-useless-switch-case'?: Linter.RuleEntry<[]> /** - * Shorthand object properties should be grouped at the beginning or end of an object declaration - * @see https://sonarsource.github.io/rspec/#/rspec/S3499/javascript + * Disallow useless `undefined`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-useless-undefined.md */ - 'sonarjs/shorthand-property-grouping'?: Linter.RuleEntry + 'unicorn/no-useless-undefined'?: Linter.RuleEntry /** - * Character classes in regular expressions should not contain only one character - * @see https://sonarsource.github.io/rspec/#/rspec/S6397/javascript + * Disallow number literals with zero fractions or dangling dots. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-zero-fractions.md */ - 'sonarjs/single-char-in-character-classes'?: Linter.RuleEntry<[]> + 'unicorn/no-zero-fractions'?: Linter.RuleEntry<[]> /** - * Single-character alternations in regular expressions should be replaced with character classes - * @see https://sonarsource.github.io/rspec/#/rspec/S6035/javascript + * Enforce proper case for numeric literals. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/number-literal-case.md */ - 'sonarjs/single-character-alternation'?: Linter.RuleEntry<[]> + 'unicorn/number-literal-case'?: Linter.RuleEntry /** - * Using slow regular expressions is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5852/javascript + * Enforce the style of numeric separators by correctly grouping digits. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/numeric-separators-style.md */ - 'sonarjs/slow-regex'?: Linter.RuleEntry<[]> + 'unicorn/numeric-separators-style'?: Linter.RuleEntry /** - * Using Sockets is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4818/javascript - * @deprecated + * Prefer `.addEventListener()` and `.removeEventListener()` over `on`-functions. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-add-event-listener.md */ - 'sonarjs/sockets'?: Linter.RuleEntry<[]> + 'unicorn/prefer-add-event-listener'?: Linter.RuleEntry /** - * Formatting SQL queries is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S2077/javascript + * Prefer `.find(…)` and `.findLast(…)` over the first or last element from `.filter(…)`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-array-find.md */ - 'sonarjs/sql-queries'?: Linter.RuleEntry<[]> + 'unicorn/prefer-array-find'?: Linter.RuleEntry /** - * Tests should be stable - * @see https://sonarsource.github.io/rspec/#/rspec/S5973/javascript + * Prefer `Array#flat()` over legacy techniques to flatten arrays. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-array-flat.md */ - 'sonarjs/stable-tests'?: Linter.RuleEntry<[]> + 'unicorn/prefer-array-flat'?: Linter.RuleEntry /** - * Reading the Standard Input is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4829/javascript - * @deprecated + * Prefer `.flatMap(…)` over `.map(…).flat()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-array-flat-map.md */ - 'sonarjs/standard-input'?: Linter.RuleEntry<[]> + 'unicorn/prefer-array-flat-map'?: Linter.RuleEntry<[]> /** - * Regular expressions with the global flag should be used with caution - * @see https://sonarsource.github.io/rspec/#/rspec/S6351/javascript + * Prefer `Array#{indexOf,lastIndexOf}()` over `Array#{findIndex,findLastIndex}()` when looking for the index of an item. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-array-index-of.md */ - 'sonarjs/stateful-regex'?: Linter.RuleEntry + 'unicorn/prefer-array-index-of'?: Linter.RuleEntry<[]> /** - * Disabling Strict-Transport-Security policy is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5739/javascript + * Prefer `.some(…)` over `.filter(…).length` check and `.{find,findLast,findIndex,findLastIndex}(…)`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-array-some.md */ - 'sonarjs/strict-transport-security'?: Linter.RuleEntry + 'unicorn/prefer-array-some'?: Linter.RuleEntry<[]> /** - * Comparison operators should not be used with strings - * @see https://sonarsource.github.io/rspec/#/rspec/S3003/javascript + * Prefer `.at()` method for index access and `String#charAt()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-at.md */ - 'sonarjs/strings-comparison'?: Linter.RuleEntry + 'unicorn/prefer-at'?: Linter.RuleEntry /** - * "super()" should be invoked appropriately - * @see https://sonarsource.github.io/rspec/#/rspec/S3854/javascript + * Prefer `Blob#arrayBuffer()` over `FileReader#readAsArrayBuffer(…)` and `Blob#text()` over `FileReader#readAsText(…)`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-blob-reading-methods.md */ - 'sonarjs/super-invocation'?: Linter.RuleEntry<[]> + 'unicorn/prefer-blob-reading-methods'?: Linter.RuleEntry<[]> /** - * Tables should have headers - * @see https://sonarsource.github.io/rspec/#/rspec/S5256/javascript + * Prefer `String#codePointAt(…)` over `String#charCodeAt(…)` and `String.fromCodePoint(…)` over `String.fromCharCode(…)`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-code-point.md */ - 'sonarjs/table-header'?: Linter.RuleEntry<[]> + 'unicorn/prefer-code-point'?: Linter.RuleEntry<[]> /** - * Table cells should reference their headers - * @see https://sonarsource.github.io/rspec/#/rspec/S5260/javascript + * Prefer `Date.now()` to get the number of milliseconds since the Unix Epoch. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-date-now.md */ - 'sonarjs/table-header-reference'?: Linter.RuleEntry<[]> + 'unicorn/prefer-date-now'?: Linter.RuleEntry<[]> /** - * Tests should check which exception is thrown - * @see https://sonarsource.github.io/rspec/#/rspec/S5958/javascript + * Prefer default parameters over reassignment. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-default-parameters.md */ - 'sonarjs/test-check-exception'?: Linter.RuleEntry<[]> + 'unicorn/prefer-default-parameters'?: Linter.RuleEntry<[]> /** - * Track uses of "TODO" tags - * @see https://sonarsource.github.io/rspec/#/rspec/S1135/javascript + * Prefer `Node#append()` over `Node#appendChild()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-dom-node-append.md */ - 'sonarjs/todo-tag'?: Linter.RuleEntry<[]> + 'unicorn/prefer-dom-node-append'?: Linter.RuleEntry<[]> /** - * Loops should not contain more than a single "break" or "continue" statement - * @see https://sonarsource.github.io/rspec/#/rspec/S135/javascript + * Prefer using `.dataset` on DOM elements over calling attribute methods. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-dom-node-dataset.md */ - 'sonarjs/too-many-break-or-continue-in-loop'?: Linter.RuleEntry + 'unicorn/prefer-dom-node-dataset'?: Linter.RuleEntry<[]> /** - * Regular expressions using Unicode character classes or property escapes should enable the unicode flag - * @see https://sonarsource.github.io/rspec/#/rspec/S5867/javascript + * Prefer `childNode.remove()` over `parentNode.removeChild(childNode)`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-dom-node-remove.md */ - 'sonarjs/unicode-aware-regex'?: Linter.RuleEntry + 'unicorn/prefer-dom-node-remove'?: Linter.RuleEntry<[]> /** - * Unnecessary imports should be removed - * @see https://sonarsource.github.io/rspec/#/rspec/S1128/javascript + * Prefer `.textContent` over `.innerText`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-dom-node-text-content.md */ - 'sonarjs/unused-import'?: Linter.RuleEntry<[]> + 'unicorn/prefer-dom-node-text-content'?: Linter.RuleEntry<[]> /** - * Names of regular expressions named groups should be used - * @see https://sonarsource.github.io/rspec/#/rspec/S5860/javascript + * Prefer `EventTarget` over `EventEmitter`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-event-target.md */ - 'sonarjs/unused-named-groups'?: Linter.RuleEntry + 'unicorn/prefer-event-target'?: Linter.RuleEntry<[]> /** - * Server certificates should be verified during SSL/TLS connections - * @see https://sonarsource.github.io/rspec/#/rspec/S4830/javascript + * Prefer `export…from` when re-exporting. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-export-from.md */ - 'sonarjs/unverified-certificate'?: Linter.RuleEntry + 'unicorn/prefer-export-from'?: Linter.RuleEntry /** - * Server hostnames should be verified during SSL/TLS connections - * @see https://sonarsource.github.io/rspec/#/rspec/S5527/javascript + * Prefer `globalThis` over `window`, `self`, and `global`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-global-this.md */ - 'sonarjs/unverified-hostname'?: Linter.RuleEntry + 'unicorn/prefer-global-this'?: Linter.RuleEntry<[]> /** - * "const" variables should not be reassigned - * @see https://sonarsource.github.io/rspec/#/rspec/S3500/javascript + * Prefer `import.meta.{dirname,filename}` over legacy techniques for getting file paths. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-import-meta-properties.md */ - 'sonarjs/updated-const-var'?: Linter.RuleEntry + 'unicorn/prefer-import-meta-properties'?: Linter.RuleEntry<[]> /** - * Loop counters should not be assigned within the loop body - * @see https://sonarsource.github.io/rspec/#/rspec/S2310/javascript + * Prefer `.includes()` over `.indexOf()`, `.lastIndexOf()`, and `Array#some()` when checking for existence or non-existence. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-includes.md */ - 'sonarjs/updated-loop-counter'?: Linter.RuleEntry + 'unicorn/prefer-includes'?: Linter.RuleEntry<[]> /** - * Type aliases should be used - * @see https://sonarsource.github.io/rspec/#/rspec/S4323/javascript + * Prefer reading a JSON file as a buffer. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-json-parse-buffer.md */ - 'sonarjs/use-type-alias'?: Linter.RuleEntry + 'unicorn/prefer-json-parse-buffer'?: Linter.RuleEntry<[]> /** - * Results of operations on strings should not be ignored - * @see https://sonarsource.github.io/rspec/#/rspec/S1154/javascript - * @deprecated + * Prefer `KeyboardEvent#key` over `KeyboardEvent#keyCode`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-keyboard-event-key.md */ - 'sonarjs/useless-string-operation'?: Linter.RuleEntry<[]> + 'unicorn/prefer-keyboard-event-key'?: Linter.RuleEntry<[]> /** - * Values not convertible to numbers should not be used in numeric comparisons - * @see https://sonarsource.github.io/rspec/#/rspec/S3758/javascript + * Prefer using a logical operator over a ternary. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-logical-operator-over-ternary.md */ - 'sonarjs/values-not-convertible-to-numbers'?: Linter.RuleEntry<[]> + 'unicorn/prefer-logical-operator-over-ternary'?: Linter.RuleEntry<[]> /** - * Variable, property and parameter names should comply with a naming convention - * @see https://sonarsource.github.io/rspec/#/rspec/S117/javascript + * Prefer `Math.min()` and `Math.max()` over ternaries for simple comparisons. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-math-min-max.md */ - 'sonarjs/variable-name'?: Linter.RuleEntry + 'unicorn/prefer-math-min-max'?: Linter.RuleEntry<[]> /** - * "void" should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S3735/javascript + * Enforce the use of `Math.trunc` instead of bitwise operators. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-math-trunc.md */ - 'sonarjs/void-use'?: Linter.RuleEntry<[]> + 'unicorn/prefer-math-trunc'?: Linter.RuleEntry<[]> /** - * Weak SSL/TLS protocols should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S4423/javascript + * Prefer `.before()` over `.insertBefore()`, `.replaceWith()` over `.replaceChild()`, prefer one of `.before()`, `.after()`, `.append()` or `.prepend()` over `insertAdjacentText()` and `insertAdjacentElement()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-modern-dom-apis.md */ - 'sonarjs/weak-ssl'?: Linter.RuleEntry<[]> + 'unicorn/prefer-modern-dom-apis'?: Linter.RuleEntry<[]> /** - * Web SQL databases should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S2817/javascript - * @deprecated + * Prefer modern `Math` APIs over legacy patterns. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-modern-math-apis.md */ - 'sonarjs/web-sql-database'?: Linter.RuleEntry<[]> + 'unicorn/prefer-modern-math-apis'?: Linter.RuleEntry<[]> /** - * Disclosing fingerprints from web application technologies is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5689/javascript + * Prefer JavaScript modules (ESM) over CommonJS. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-module.md */ - 'sonarjs/x-powered-by'?: Linter.RuleEntry<[]> + 'unicorn/prefer-module'?: Linter.RuleEntry<[]> /** - * XML parsers should not be vulnerable to XXE attacks - * @see https://sonarsource.github.io/rspec/#/rspec/S2755/javascript + * Prefer using `String`, `Number`, `BigInt`, `Boolean`, and `Symbol` directly. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-native-coercion-functions.md */ - 'sonarjs/xml-parser-xxe'?: Linter.RuleEntry + 'unicorn/prefer-native-coercion-functions'?: Linter.RuleEntry<[]> /** - * Executing XPath expressions is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4817/javascript - * @deprecated + * Prefer negative index over `.length - index` when possible. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-negative-index.md */ - 'sonarjs/xpath'?: Linter.RuleEntry<[]> + 'unicorn/prefer-negative-index'?: Linter.RuleEntry<[]> /** - * Enforce sorted import declarations within modules - * @see https://eslint.org/docs/latest/rules/sort-imports + * Prefer using the `node:` protocol when importing Node.js builtin modules. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-node-protocol.md */ - 'sort-imports'?: Linter.RuleEntry + 'unicorn/prefer-node-protocol'?: Linter.RuleEntry<[]> /** - * Require object keys to be sorted - * @see https://eslint.org/docs/latest/rules/sort-keys + * Prefer `Number` static properties over global ones. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-number-properties.md */ - 'sort-keys'?: Linter.RuleEntry + 'unicorn/prefer-number-properties'?: Linter.RuleEntry /** - * Require variables within the same declaration block to be sorted - * @see https://eslint.org/docs/latest/rules/sort-vars + * Prefer using `Object.fromEntries(…)` to transform a list of key-value pairs into an object. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-object-from-entries.md */ - 'sort-vars'?: Linter.RuleEntry + 'unicorn/prefer-object-from-entries'?: Linter.RuleEntry /** - * Enforce consistent spacing before blocks - * @see https://eslint.org/docs/latest/rules/space-before-blocks - * @deprecated + * Prefer omitting the `catch` binding parameter. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-optional-catch-binding.md */ - 'space-before-blocks'?: Linter.RuleEntry + 'unicorn/prefer-optional-catch-binding'?: Linter.RuleEntry<[]> /** - * Enforce consistent spacing before `function` definition opening parenthesis - * @see https://eslint.org/docs/latest/rules/space-before-function-paren - * @deprecated + * Prefer borrowing methods from the prototype instead of the instance. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-prototype-methods.md */ - 'space-before-function-paren'?: Linter.RuleEntry + 'unicorn/prefer-prototype-methods'?: Linter.RuleEntry<[]> /** - * Enforce consistent spacing inside parentheses - * @see https://eslint.org/docs/latest/rules/space-in-parens - * @deprecated + * Prefer `.querySelector()` over `.getElementById()`, `.querySelectorAll()` over `.getElementsByClassName()` and `.getElementsByTagName()` and `.getElementsByName()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-query-selector.md */ - 'space-in-parens'?: Linter.RuleEntry + 'unicorn/prefer-query-selector'?: Linter.RuleEntry<[]> /** - * Require spacing around infix operators - * @see https://eslint.org/docs/latest/rules/space-infix-ops - * @deprecated + * Prefer `Reflect.apply()` over `Function#apply()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-reflect-apply.md */ - 'space-infix-ops'?: Linter.RuleEntry + 'unicorn/prefer-reflect-apply'?: Linter.RuleEntry<[]> /** - * Enforce consistent spacing before or after unary operators - * @see https://eslint.org/docs/latest/rules/space-unary-ops - * @deprecated + * Prefer `RegExp#test()` over `String#match()` and `RegExp#exec()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-regexp-test.md */ - 'space-unary-ops'?: Linter.RuleEntry + 'unicorn/prefer-regexp-test'?: Linter.RuleEntry<[]> /** - * Enforce consistent spacing after the `//` or `/*` in a comment - * @see https://eslint.org/docs/latest/rules/spaced-comment - * @deprecated + * Prefer `Set#has()` over `Array#includes()` when checking for existence or non-existence. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-set-has.md */ - 'spaced-comment'?: Linter.RuleEntry + 'unicorn/prefer-set-has'?: Linter.RuleEntry<[]> /** - * Interactions should be awaited - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/await-interactions.md + * Prefer using `Set#size` instead of `Array#length`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-set-size.md */ - 'storybook/await-interactions'?: Linter.RuleEntry<[]> + 'unicorn/prefer-set-size'?: Linter.RuleEntry<[]> /** - * Pass a context when invoking play function of another story - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/context-in-play-function.md + * Enforce combining multiple `Array#push()`, `Element#classList.{add,remove}()`, and `importScripts()` into one call. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-single-call.md */ - 'storybook/context-in-play-function'?: Linter.RuleEntry<[]> + 'unicorn/prefer-single-call'?: Linter.RuleEntry /** - * The component property should be set - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/csf-component.md + * Prefer the spread operator over `Array.from(…)`, `Array#concat(…)`, `Array#{slice,toSpliced}()` and `String#split('')`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-spread.md */ - 'storybook/csf-component'?: Linter.RuleEntry<[]> + 'unicorn/prefer-spread'?: Linter.RuleEntry<[]> /** - * Story files should have a default export - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/default-exports.md + * Prefer using the `String.raw` tag to avoid escaping `\`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-string-raw.md */ - 'storybook/default-exports'?: Linter.RuleEntry<[]> + 'unicorn/prefer-string-raw'?: Linter.RuleEntry<[]> /** - * Deprecated hierarchy separator in title property - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/hierarchy-separator.md + * Prefer `String#replaceAll()` over regex searches with the global flag. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-string-replace-all.md */ - 'storybook/hierarchy-separator'?: Linter.RuleEntry<[]> + 'unicorn/prefer-string-replace-all'?: Linter.RuleEntry<[]> /** - * Meta should only have inline properties - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/meta-inline-properties.md + * Prefer `String#slice()` over `String#substr()` and `String#substring()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-string-slice.md */ - 'storybook/meta-inline-properties'?: Linter.RuleEntry + 'unicorn/prefer-string-slice'?: Linter.RuleEntry<[]> /** - * A story should not have a redundant name property - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-redundant-story-name.md + * Prefer `String#startsWith()` & `String#endsWith()` over `RegExp#test()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-string-starts-ends-with.md */ - 'storybook/no-redundant-story-name'?: Linter.RuleEntry<[]> + 'unicorn/prefer-string-starts-ends-with'?: Linter.RuleEntry<[]> /** - * storiesOf is deprecated and should not be used - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-stories-of.md + * Prefer `String#trimStart()` / `String#trimEnd()` over `String#trimLeft()` / `String#trimRight()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-string-trim-start-end.md */ - 'storybook/no-stories-of'?: Linter.RuleEntry<[]> + 'unicorn/prefer-string-trim-start-end'?: Linter.RuleEntry<[]> /** - * Do not define a title in meta - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-title-property-in-meta.md + * Prefer using `structuredClone` to create a deep clone. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-structured-clone.md */ - 'storybook/no-title-property-in-meta'?: Linter.RuleEntry<[]> + 'unicorn/prefer-structured-clone'?: Linter.RuleEntry /** - * This rule identifies storybook addons that are invalid because they are either not installed or contain a typo in their name. - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-uninstalled-addons.md + * Prefer `switch` over multiple `else-if`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-switch.md */ - 'storybook/no-uninstalled-addons'?: Linter.RuleEntry + 'unicorn/prefer-switch'?: Linter.RuleEntry /** - * Stories should use PascalCase - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/prefer-pascal-case.md + * Prefer ternary expressions over simple `if-else` statements. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-ternary.md */ - 'storybook/prefer-pascal-case'?: Linter.RuleEntry<[]> + 'unicorn/prefer-ternary'?: Linter.RuleEntry /** - * A story file must contain at least one story export - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/story-exports.md + * Prefer top-level await over top-level promises and async function calls. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-top-level-await.md */ - 'storybook/story-exports'?: Linter.RuleEntry<[]> + 'unicorn/prefer-top-level-await'?: Linter.RuleEntry<[]> /** - * Use expect from `@storybook/test` or `@storybook/jest` - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/use-storybook-expect.md + * Enforce throwing `TypeError` in type checking conditions. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-type-error.md */ - 'storybook/use-storybook-expect'?: Linter.RuleEntry<[]> + 'unicorn/prefer-type-error'?: Linter.RuleEntry<[]> /** - * Do not use testing-library directly on stories - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/use-storybook-testing-library.md + * Prevent abbreviations. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prevent-abbreviations.md */ - 'storybook/use-storybook-testing-library'?: Linter.RuleEntry<[]> + 'unicorn/prevent-abbreviations'?: Linter.RuleEntry /** - * Require or disallow strict mode directives - * @see https://eslint.org/docs/latest/rules/strict + * Enforce consistent relative URL style. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/relative-url-style.md */ - 'strict'?: Linter.RuleEntry + 'unicorn/relative-url-style'?: Linter.RuleEntry /** - * Enforce spacing around colons of switch statements - * @see https://eslint.org/docs/latest/rules/switch-colon-spacing - * @deprecated + * Enforce using the separator argument with `Array#join()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/require-array-join-separator.md */ - 'switch-colon-spacing'?: Linter.RuleEntry + 'unicorn/require-array-join-separator'?: Linter.RuleEntry<[]> /** - * Require symbol descriptions - * @see https://eslint.org/docs/latest/rules/symbol-description + * Enforce using the digits argument with `Number#toFixed()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/require-number-to-fixed-digits-argument.md */ - 'symbol-description'?: Linter.RuleEntry<[]> + 'unicorn/require-number-to-fixed-digits-argument'?: Linter.RuleEntry<[]> /** - * Enforce a consistent and logical order of the Tailwind CSS classnames - * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/classnames-order.md + * Enforce using the `targetOrigin` argument with `window.postMessage()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/require-post-message-target-origin.md */ - 'tailwindcss/classnames-order'?: Linter.RuleEntry + 'unicorn/require-post-message-target-origin'?: Linter.RuleEntry<[]> /** - * Warns about dash prefixed classnames using arbitrary values - * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/enforces-negative-arbitrary-values.md + * Enforce better string content. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/string-content.md */ - 'tailwindcss/enforces-negative-arbitrary-values'?: Linter.RuleEntry + 'unicorn/string-content'?: Linter.RuleEntry /** - * Enforces the usage of shorthand Tailwind CSS classnames - * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/enforces-shorthand.md + * Enforce consistent brace style for `case` clauses. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/switch-case-braces.md */ - 'tailwindcss/enforces-shorthand'?: Linter.RuleEntry + 'unicorn/switch-case-braces'?: Linter.RuleEntry /** - * Detect obsolete classnames when upgrading to Tailwind CSS v3 - * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/migration-from-tailwind-2.md + * Fix whitespace-insensitive template indentation. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/template-indent.md */ - 'tailwindcss/migration-from-tailwind-2'?: Linter.RuleEntry + 'unicorn/template-indent'?: Linter.RuleEntry /** - * Forbid using arbitrary values in classnames - * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/no-arbitrary-value.md + * Enforce consistent case for text encoding identifiers. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/text-encoding-identifier-case.md */ - 'tailwindcss/no-arbitrary-value'?: Linter.RuleEntry + 'unicorn/text-encoding-identifier-case'?: Linter.RuleEntry<[]> /** - * Avoid contradicting Tailwind CSS classnames (e.g. "w-3 w-5") - * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/no-contradicting-classname.md + * Require `new` when creating an error. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/throw-new-error.md */ - 'tailwindcss/no-contradicting-classname'?: Linter.RuleEntry + 'unicorn/throw-new-error'?: Linter.RuleEntry<[]> /** - * Detect classnames which do not belong to Tailwind CSS - * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/no-custom-classname.md + * Utilities in UnoCSS blocklist + * @see https://unocss.dev/integrations/eslint#rules */ - 'tailwindcss/no-custom-classname'?: Linter.RuleEntry + 'unocss/blocklist'?: Linter.RuleEntry<[]> /** - * Forbid using arbitrary values in classnames when an equivalent preset exists - * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/no-unnecessary-arbitrary-value.md + * Enforce class compilation + * @see https://unocss.dev/integrations/eslint#rules */ - 'tailwindcss/no-unnecessary-arbitrary-value'?: Linter.RuleEntry + 'unocss/enforce-class-compile'?: Linter.RuleEntry /** - * Require or disallow spacing around embedded expressions of template strings - * @see https://eslint.org/docs/latest/rules/template-curly-spacing - * @deprecated + * Order of UnoCSS utilities in class attribute + * @see https://unocss.dev/integrations/eslint#rules */ - 'template-curly-spacing'?: Linter.RuleEntry + 'unocss/order'?: Linter.RuleEntry<[]> /** - * Require or disallow spacing between template tags and their literals - * @see https://eslint.org/docs/latest/rules/template-tag-spacing - * @deprecated + * Order of UnoCSS attributes + * @see https://unocss.dev/integrations/eslint#rules */ - 'template-tag-spacing'?: Linter.RuleEntry + 'unocss/order-attributify'?: Linter.RuleEntry<[]> + 'validate-jsx-nesting/no-invalid-jsx-nesting'?: Linter.RuleEntry<[]> /** - * Enforce promises from async event methods are handled - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/await-async-events.md + * require .spec test file pattern + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/consistent-test-filename.md */ - 'testing-library/await-async-events'?: Linter.RuleEntry + 'vitest/consistent-test-filename'?: Linter.RuleEntry /** - * Enforce promises from async queries to be handled - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/await-async-queries.md + * enforce using test or it but not both + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/consistent-test-it.md */ - 'testing-library/await-async-queries'?: Linter.RuleEntry<[]> + 'vitest/consistent-test-it'?: Linter.RuleEntry /** - * Enforce promises from async utils to be awaited properly - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/await-async-utils.md + * enforce having expectation in test body + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/expect-expect.md */ - 'testing-library/await-async-utils'?: Linter.RuleEntry<[]> + 'vitest/expect-expect'?: Linter.RuleEntry /** - * Ensures consistent usage of `data-testid` - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/consistent-data-testid.md + * enforce a maximum number of expect per test + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/max-expects.md */ - 'testing-library/consistent-data-testid'?: Linter.RuleEntry + 'vitest/max-expects'?: Linter.RuleEntry /** - * Disallow unnecessary `await` for sync events - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-await-sync-events.md + * require describe block to be less than set max value or default value + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/max-nested-describe.md */ - 'testing-library/no-await-sync-events'?: Linter.RuleEntry + 'vitest/max-nested-describe'?: Linter.RuleEntry /** - * Disallow unnecessary `await` for sync queries - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-await-sync-queries.md + * disallow alias methods + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-alias-methods.md */ - 'testing-library/no-await-sync-queries'?: Linter.RuleEntry<[]> + 'vitest/no-alias-methods'?: Linter.RuleEntry<[]> /** - * Disallow the use of `container` methods - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-container.md + * disallow commented out tests + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-commented-out-tests.md */ - 'testing-library/no-container'?: Linter.RuleEntry<[]> + 'vitest/no-commented-out-tests'?: Linter.RuleEntry<[]> /** - * Disallow the use of debugging utilities like `debug` - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-debugging-utils.md + * disallow conditional expects + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-expect.md */ - 'testing-library/no-debugging-utils'?: Linter.RuleEntry + 'vitest/no-conditional-expect'?: Linter.RuleEntry<[]> /** - * Disallow importing from DOM Testing Library - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-dom-import.md + * disallow conditional tests + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-in-test.md */ - 'testing-library/no-dom-import'?: Linter.RuleEntry + 'vitest/no-conditional-in-test'?: Linter.RuleEntry<[]> /** - * Disallow the use of the global RegExp flag (/g) in queries - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-global-regexp-flag-in-query.md + * disallow conditional tests + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-tests.md */ - 'testing-library/no-global-regexp-flag-in-query'?: Linter.RuleEntry<[]> + 'vitest/no-conditional-tests'?: Linter.RuleEntry<[]> /** - * Disallow the use of `cleanup` - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-manual-cleanup.md + * disallow disabled tests + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-disabled-tests.md */ - 'testing-library/no-manual-cleanup'?: Linter.RuleEntry<[]> + 'vitest/no-disabled-tests'?: Linter.RuleEntry<[]> /** - * Disallow direct Node access - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-node-access.md + * disallow using a callback in asynchronous tests and hooks + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-done-callback.md + * @deprecated */ - 'testing-library/no-node-access'?: Linter.RuleEntry + 'vitest/no-done-callback'?: Linter.RuleEntry<[]> /** - * Disallow the use of promises passed to a `fireEvent` method - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-promise-in-fire-event.md + * disallow duplicate hooks and teardown hooks + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-duplicate-hooks.md */ - 'testing-library/no-promise-in-fire-event'?: Linter.RuleEntry<[]> + 'vitest/no-duplicate-hooks'?: Linter.RuleEntry<[]> /** - * Disallow the use of `render` in testing frameworks setup functions - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-render-in-lifecycle.md + * disallow focused tests + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-focused-tests.md */ - 'testing-library/no-render-in-lifecycle'?: Linter.RuleEntry + 'vitest/no-focused-tests'?: Linter.RuleEntry /** - * Disallow wrapping Testing Library utils or empty callbacks in `act` - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-unnecessary-act.md + * disallow setup and teardown hooks + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-hooks.md */ - 'testing-library/no-unnecessary-act'?: Linter.RuleEntry + 'vitest/no-hooks'?: Linter.RuleEntry /** - * Disallow the use of multiple `expect` calls inside `waitFor` - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-wait-for-multiple-assertions.md + * disallow identical titles + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-identical-title.md */ - 'testing-library/no-wait-for-multiple-assertions'?: Linter.RuleEntry<[]> + 'vitest/no-identical-title'?: Linter.RuleEntry<[]> /** - * Disallow the use of side effects in `waitFor` - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-wait-for-side-effects.md + * disallow importing `node:test` + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-import-node-test.md */ - 'testing-library/no-wait-for-side-effects'?: Linter.RuleEntry<[]> + 'vitest/no-import-node-test'?: Linter.RuleEntry<[]> /** - * Ensures no snapshot is generated inside of a `waitFor` call - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-wait-for-snapshot.md + * disallow string interpolation in snapshots + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-interpolation-in-snapshots.md */ - 'testing-library/no-wait-for-snapshot'?: Linter.RuleEntry<[]> + 'vitest/no-interpolation-in-snapshots'?: Linter.RuleEntry<[]> /** - * Suggest using explicit assertions rather than standalone queries - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-explicit-assert.md + * disallow large snapshots + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-large-snapshots.md */ - 'testing-library/prefer-explicit-assert'?: Linter.RuleEntry + 'vitest/no-large-snapshots'?: Linter.RuleEntry /** - * Suggest using `find(All)By*` query instead of `waitFor` + `get(All)By*` to wait for elements - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-find-by.md + * disallow importing from __mocks__ directory + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-mocks-import.md */ - 'testing-library/prefer-find-by'?: Linter.RuleEntry<[]> + 'vitest/no-mocks-import'?: Linter.RuleEntry<[]> /** - * Suggest using implicit assertions for getBy* & findBy* queries - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-implicit-assert.md + * disallow .only blocks in tests + * @see https://github.com/levibuzolic/eslint-plugin-no-only-tests */ - 'testing-library/prefer-implicit-assert'?: Linter.RuleEntry<[]> + 'vitest/no-only-tests'?: Linter.RuleEntry /** - * Ensure appropriate `get*`/`query*` queries are used with their respective matchers - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-presence-queries.md + * disallow the use of certain matchers + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-restricted-matchers.md */ - 'testing-library/prefer-presence-queries'?: Linter.RuleEntry + 'vitest/no-restricted-matchers'?: Linter.RuleEntry /** - * Suggest using `queryBy*` queries when waiting for disappearance - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-query-by-disappearance.md + * disallow specific `vi.` methods + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-restricted-vi-methods.md */ - 'testing-library/prefer-query-by-disappearance'?: Linter.RuleEntry<[]> + 'vitest/no-restricted-vi-methods'?: Linter.RuleEntry /** - * Ensure the configured `get*`/`query*` query is used with the corresponding matchers - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-query-matchers.md + * disallow using `expect` outside of `it` or `test` blocks + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-standalone-expect.md */ - 'testing-library/prefer-query-matchers'?: Linter.RuleEntry + 'vitest/no-standalone-expect'?: Linter.RuleEntry /** - * Suggest using `screen` while querying - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-screen-queries.md + * Disallow using the `f` and `x` prefixes in favour of `.only` and `.skip` + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-test-prefixes.md */ - 'testing-library/prefer-screen-queries'?: Linter.RuleEntry<[]> + 'vitest/no-test-prefixes'?: Linter.RuleEntry<[]> /** - * Suggest using `userEvent` over `fireEvent` for simulating user interactions - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-user-event.md + * disallow return statements in tests + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-test-return-statement.md */ - 'testing-library/prefer-user-event'?: Linter.RuleEntry + 'vitest/no-test-return-statement'?: Linter.RuleEntry<[]> /** - * Enforce a valid naming for return value from `render` - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/render-result-naming-convention.md + * Enforce padding around `afterAll` blocks + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-after-all-blocks.md */ - 'testing-library/render-result-naming-convention'?: Linter.RuleEntry<[]> + 'vitest/padding-around-after-all-blocks'?: Linter.RuleEntry<[]> /** - * enforce linebreaks after opening and before closing array brackets - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/array-bracket-newline.html + * Enforce padding around `afterEach` blocks + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-after-each-blocks.md */ - 'toml/array-bracket-newline'?: Linter.RuleEntry + 'vitest/padding-around-after-each-blocks'?: Linter.RuleEntry<[]> /** - * enforce consistent spacing inside array brackets - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/array-bracket-spacing.html + * Enforce padding around vitest functions + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-all.md */ - 'toml/array-bracket-spacing'?: Linter.RuleEntry + 'vitest/padding-around-all'?: Linter.RuleEntry<[]> /** - * enforce line breaks between array elements - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/array-element-newline.html + * Enforce padding around `beforeAll` blocks + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-before-all-blocks.md */ - 'toml/array-element-newline'?: Linter.RuleEntry + 'vitest/padding-around-before-all-blocks'?: Linter.RuleEntry<[]> /** - * enforce consistent comma style in array - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/comma-style.html + * Enforce padding around `beforeEach` blocks + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-before-each-blocks.md */ - 'toml/comma-style'?: Linter.RuleEntry + 'vitest/padding-around-before-each-blocks'?: Linter.RuleEntry<[]> /** - * enforce consistent indentation - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/indent.html + * Enforce padding around `describe` blocks + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-describe-blocks.md */ - 'toml/indent'?: Linter.RuleEntry + 'vitest/padding-around-describe-blocks'?: Linter.RuleEntry<[]> /** - * enforce consistent spacing inside braces - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/inline-table-curly-spacing.html + * Enforce padding around `expect` groups + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-expect-groups.md */ - 'toml/inline-table-curly-spacing'?: Linter.RuleEntry + 'vitest/padding-around-expect-groups'?: Linter.RuleEntry<[]> /** - * enforce consistent spacing between keys and values in key/value pairs - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/key-spacing.html + * Enforce padding around `test` blocks + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-test-blocks.md */ - 'toml/key-spacing'?: Linter.RuleEntry + 'vitest/padding-around-test-blocks'?: Linter.RuleEntry<[]> /** - * disallow defining pair keys out-of-order - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/keys-order.html + * enforce using `toBeCalledWith()` or `toHaveBeenCalledWith()` + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-called-with.md */ - 'toml/keys-order'?: Linter.RuleEntry<[]> + 'vitest/prefer-called-with'?: Linter.RuleEntry<[]> /** - * disallow mixed data types in array - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/no-mixed-type-in-array.html + * enforce using the built-in comparison matchers + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-comparison-matcher.md */ - 'toml/no-mixed-type-in-array'?: Linter.RuleEntry + 'vitest/prefer-comparison-matcher'?: Linter.RuleEntry<[]> /** - * disallow hexadecimal, octal and binary integer - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/no-non-decimal-integer.html + * enforce using a function as a describe title over an equivalent string + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-describe-function-title.md */ - 'toml/no-non-decimal-integer'?: Linter.RuleEntry + 'vitest/prefer-describe-function-title'?: Linter.RuleEntry<[]> /** - * disallow spacing around infix operators - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/no-space-dots.html + * enforce using `each` rather than manual loops + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-each.md */ - 'toml/no-space-dots'?: Linter.RuleEntry<[]> + 'vitest/prefer-each'?: Linter.RuleEntry<[]> /** - * disallow number separators that to not enhance readability. - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/no-unreadable-number-separator.html + * enforce using the built-in quality matchers + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-equality-matcher.md */ - 'toml/no-unreadable-number-separator'?: Linter.RuleEntry<[]> + 'vitest/prefer-equality-matcher'?: Linter.RuleEntry<[]> /** - * require or disallow padding lines between pairs - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/padding-line-between-pairs.html + * enforce using expect assertions instead of callbacks + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-expect-assertions.md */ - 'toml/padding-line-between-pairs'?: Linter.RuleEntry<[]> + 'vitest/prefer-expect-assertions'?: Linter.RuleEntry /** - * require or disallow padding lines between tables - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/padding-line-between-tables.html + * enforce using `expect().resolves` over `expect(await ...)` syntax + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-expect-resolves.md */ - 'toml/padding-line-between-tables'?: Linter.RuleEntry<[]> + 'vitest/prefer-expect-resolves'?: Linter.RuleEntry<[]> /** - * disallow precision of fractional seconds greater than the specified value. - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/precision-of-fractional-seconds.html + * enforce having hooks in consistent order + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-hooks-in-order.md */ - 'toml/precision-of-fractional-seconds'?: Linter.RuleEntry + 'vitest/prefer-hooks-in-order'?: Linter.RuleEntry<[]> /** - * disallow precision of integer greater than the specified value. - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/precision-of-integer.html + * enforce having hooks before any test cases + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-hooks-on-top.md */ - 'toml/precision-of-integer'?: Linter.RuleEntry + 'vitest/prefer-hooks-on-top'?: Linter.RuleEntry<[]> /** - * require or disallow quotes around keys - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/quoted-keys.html + * enforce lowercase titles + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-lowercase-title.md */ - 'toml/quoted-keys'?: Linter.RuleEntry + 'vitest/prefer-lowercase-title'?: Linter.RuleEntry /** - * require spacing around equals sign - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/space-eq-sign.html - * @deprecated - */ - 'toml/space-eq-sign'?: Linter.RuleEntry<[]> - /** - * enforce consistent spacing after the `#` in a comment - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/spaced-comment.html - */ - 'toml/spaced-comment'?: Linter.RuleEntry - /** - * enforce consistent spacing inside table brackets - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/table-bracket-spacing.html + * enforce mock resolved/rejected shorthands for promises + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-mock-promise-shorthand.md */ - 'toml/table-bracket-spacing'?: Linter.RuleEntry + 'vitest/prefer-mock-promise-shorthand'?: Linter.RuleEntry<[]> /** - * disallow defining tables out-of-order - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/tables-order.html + * enforce including a hint with external snapshots + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-snapshot-hint.md */ - 'toml/tables-order'?: Linter.RuleEntry<[]> + 'vitest/prefer-snapshot-hint'?: Linter.RuleEntry /** - * disallow parsing errors in Vue custom blocks - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/vue-custom-block/no-parsing-error.html + * enforce using `vi.spyOn` + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-spy-on.md */ - 'toml/vue-custom-block/no-parsing-error'?: Linter.RuleEntry<[]> + 'vitest/prefer-spy-on'?: Linter.RuleEntry<[]> /** - * Validates that TypeScript documentation comments conform to the TSDoc standard - * @see https://tsdoc.org/pages/packages/eslint-plugin-tsdoc + * enforce using `toBe(true)` and `toBe(false)` over matchers that coerce types to boolean + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-strict-boolean-matchers.md */ - 'tsdoc/syntax'?: Linter.RuleEntry<[]> + 'vitest/prefer-strict-boolean-matchers'?: Linter.RuleEntry<[]> /** - * Require or disallow Unicode byte order mark (BOM) - * @see https://eslint.org/docs/latest/rules/unicode-bom + * enforce strict equal over equal + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-strict-equal.md */ - 'unicode-bom'?: Linter.RuleEntry + 'vitest/prefer-strict-equal'?: Linter.RuleEntry<[]> /** - * Improve regexes by making them shorter, consistent, and safer. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/better-regex.md + * enforce using toBe() + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be.md */ - 'unicorn/better-regex'?: Linter.RuleEntry + 'vitest/prefer-to-be'?: Linter.RuleEntry<[]> /** - * Enforce a specific parameter name in catch clauses. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/catch-error-name.md + * enforce using toBeFalsy() + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-falsy.md */ - 'unicorn/catch-error-name'?: Linter.RuleEntry + 'vitest/prefer-to-be-falsy'?: Linter.RuleEntry<[]> /** - * Use destructured variables over properties. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/consistent-destructuring.md + * enforce using toBeObject() + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-object.md */ - 'unicorn/consistent-destructuring'?: Linter.RuleEntry<[]> + 'vitest/prefer-to-be-object'?: Linter.RuleEntry<[]> /** - * Prefer consistent types when spreading a ternary in an array literal. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/consistent-empty-array-spread.md + * enforce using `toBeTruthy` + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-truthy.md */ - 'unicorn/consistent-empty-array-spread'?: Linter.RuleEntry<[]> + 'vitest/prefer-to-be-truthy'?: Linter.RuleEntry<[]> /** - * Enforce consistent style for element existence checks with `indexOf()`, `lastIndexOf()`, `findIndex()`, and `findLastIndex()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/consistent-existence-index-check.md + * enforce using toContain() + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-contain.md */ - 'unicorn/consistent-existence-index-check'?: Linter.RuleEntry<[]> + 'vitest/prefer-to-contain'?: Linter.RuleEntry<[]> /** - * Move function definitions to the highest possible scope. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/consistent-function-scoping.md + * enforce using toHaveLength() + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-have-length.md */ - 'unicorn/consistent-function-scoping'?: Linter.RuleEntry + 'vitest/prefer-to-have-length'?: Linter.RuleEntry<[]> /** - * Enforce correct `Error` subclassing. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/custom-error-definition.md + * enforce using `test.todo` + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-todo.md */ - 'unicorn/custom-error-definition'?: Linter.RuleEntry<[]> + 'vitest/prefer-todo'?: Linter.RuleEntry<[]> /** - * Enforce no spaces between braces. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/empty-brace-spaces.md + * require `vi.mocked()` over `fn as Mock` + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-vi-mocked.md */ - 'unicorn/empty-brace-spaces'?: Linter.RuleEntry<[]> + 'vitest/prefer-vi-mocked'?: Linter.RuleEntry<[]> /** - * Enforce passing a `message` value when creating a built-in error. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/error-message.md + * require setup and teardown to be within a hook + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-hook.md */ - 'unicorn/error-message'?: Linter.RuleEntry<[]> + 'vitest/require-hook'?: Linter.RuleEntry /** - * Require escape sequences to use uppercase values. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/escape-case.md + * require local Test Context for concurrent snapshot tests + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-local-test-context-for-concurrent-snapshots.md */ - 'unicorn/escape-case'?: Linter.RuleEntry<[]> + 'vitest/require-local-test-context-for-concurrent-snapshots'?: Linter.RuleEntry<[]> /** - * Add expiration conditions to TODO comments. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/expiring-todo-comments.md + * enforce using type parameters with vitest mock functions + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-mock-type-parameters.md */ - 'unicorn/expiring-todo-comments'?: Linter.RuleEntry + 'vitest/require-mock-type-parameters'?: Linter.RuleEntry /** - * Enforce explicitly comparing the `length` or `size` property of a value. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/explicit-length-check.md + * require toThrow() to be called with an error message + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-to-throw-message.md */ - 'unicorn/explicit-length-check'?: Linter.RuleEntry + 'vitest/require-to-throw-message'?: Linter.RuleEntry<[]> /** - * Enforce a case style for filenames. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/filename-case.md + * enforce that all tests are in a top-level describe + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-top-level-describe.md */ - 'unicorn/filename-case'?: Linter.RuleEntry + 'vitest/require-top-level-describe'?: Linter.RuleEntry /** - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/deprecated-rules.md#import-index - * @deprecated + * enforce valid describe callback + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-describe-callback.md */ - 'unicorn/import-index'?: Linter.RuleEntry<[]> + 'vitest/valid-describe-callback'?: Linter.RuleEntry<[]> /** - * Enforce specific import styles per module. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/import-style.md + * enforce valid `expect()` usage + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-expect.md */ - 'unicorn/import-style'?: Linter.RuleEntry + 'vitest/valid-expect'?: Linter.RuleEntry /** - * Enforce the use of `new` for all builtins, except `String`, `Number`, `Boolean`, `Symbol` and `BigInt`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/new-for-builtins.md + * require promises that have expectations in their chain to be valid + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-expect-in-promise.md */ - 'unicorn/new-for-builtins'?: Linter.RuleEntry<[]> + 'vitest/valid-expect-in-promise'?: Linter.RuleEntry<[]> /** - * Enforce specifying rules to disable in `eslint-disable` comments. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-abusive-eslint-disable.md + * enforce valid titles + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-title.md */ - 'unicorn/no-abusive-eslint-disable'?: Linter.RuleEntry<[]> + 'vitest/valid-title'?: Linter.RuleEntry /** - * Disallow anonymous functions and classes as the default export. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-anonymous-default-export.md + * require or disallow block style mappings. + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/block-mapping.html */ - 'unicorn/no-anonymous-default-export'?: Linter.RuleEntry<[]> + 'yaml/block-mapping'?: Linter.RuleEntry /** - * Prevent passing a function reference directly to iterator methods. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-array-callback-reference.md + * enforce consistent line breaks after `:` indicator + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/block-mapping-colon-indicator-newline.html */ - 'unicorn/no-array-callback-reference'?: Linter.RuleEntry<[]> + 'yaml/block-mapping-colon-indicator-newline'?: Linter.RuleEntry /** - * Prefer `for…of` over the `forEach` method. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-array-for-each.md + * enforce consistent line breaks after `?` indicator + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/block-mapping-question-indicator-newline.html */ - 'unicorn/no-array-for-each'?: Linter.RuleEntry<[]> + 'yaml/block-mapping-question-indicator-newline'?: Linter.RuleEntry /** - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/deprecated-rules.md#no-array-instanceof - * @deprecated + * require or disallow block style sequences. + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/block-sequence.html */ - 'unicorn/no-array-instanceof'?: Linter.RuleEntry<[]> + 'yaml/block-sequence'?: Linter.RuleEntry /** - * Disallow using the `this` argument in array methods. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-array-method-this-argument.md + * enforce consistent line breaks after `-` indicator + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/block-sequence-hyphen-indicator-newline.html */ - 'unicorn/no-array-method-this-argument'?: Linter.RuleEntry<[]> + 'yaml/block-sequence-hyphen-indicator-newline'?: Linter.RuleEntry /** - * Enforce combining multiple `Array#push()` into one call. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-array-push-push.md + * enforce YAML file extension + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/file-extension.html */ - 'unicorn/no-array-push-push'?: Linter.RuleEntry + 'yaml/file-extension'?: Linter.RuleEntry /** - * Disallow `Array#reduce()` and `Array#reduceRight()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-array-reduce.md + * enforce consistent line breaks inside braces + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/flow-mapping-curly-newline.html */ - 'unicorn/no-array-reduce'?: Linter.RuleEntry + 'yaml/flow-mapping-curly-newline'?: Linter.RuleEntry /** - * Disallow member access from await expression. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-await-expression-member.md + * enforce consistent spacing inside braces + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/flow-mapping-curly-spacing.html */ - 'unicorn/no-await-expression-member'?: Linter.RuleEntry<[]> + 'yaml/flow-mapping-curly-spacing'?: Linter.RuleEntry /** - * Disallow using `await` in `Promise` method parameters. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-await-in-promise-methods.md + * enforce linebreaks after opening and before closing flow sequence brackets + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/flow-sequence-bracket-newline.html */ - 'unicorn/no-await-in-promise-methods'?: Linter.RuleEntry<[]> + 'yaml/flow-sequence-bracket-newline'?: Linter.RuleEntry /** - * Do not use leading/trailing space between `console.log` parameters. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-console-spaces.md + * enforce consistent spacing inside flow sequence brackets + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/flow-sequence-bracket-spacing.html */ - 'unicorn/no-console-spaces'?: Linter.RuleEntry<[]> + 'yaml/flow-sequence-bracket-spacing'?: Linter.RuleEntry /** - * Do not use `document.cookie` directly. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-document-cookie.md + * enforce consistent indentation + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/indent.html */ - 'unicorn/no-document-cookie'?: Linter.RuleEntry<[]> + 'yaml/indent'?: Linter.RuleEntry /** - * Disallow empty files. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-empty-file.md + * enforce naming convention to key names + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/key-name-casing.html */ - 'unicorn/no-empty-file'?: Linter.RuleEntry<[]> + 'yaml/key-name-casing'?: Linter.RuleEntry /** - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/deprecated-rules.md#no-fn-reference-in-iterator - * @deprecated + * enforce consistent spacing between keys and values in mapping pairs + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/key-spacing.html */ - 'unicorn/no-fn-reference-in-iterator'?: Linter.RuleEntry<[]> + 'yaml/key-spacing'?: Linter.RuleEntry /** - * Do not use a `for` loop that can be replaced with a `for-of` loop. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-for-loop.md + * disallow empty document + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-empty-document.html */ - 'unicorn/no-for-loop'?: Linter.RuleEntry<[]> + 'yaml/no-empty-document'?: Linter.RuleEntry<[]> /** - * Enforce the use of Unicode escapes instead of hexadecimal escapes. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-hex-escape.md + * disallow empty mapping keys + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-empty-key.html */ - 'unicorn/no-hex-escape'?: Linter.RuleEntry<[]> + 'yaml/no-empty-key'?: Linter.RuleEntry<[]> /** - * Require `Array.isArray()` instead of `instanceof Array`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-instanceof-array.md + * disallow empty mapping values + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-empty-mapping-value.html */ - 'unicorn/no-instanceof-array'?: Linter.RuleEntry<[]> + 'yaml/no-empty-mapping-value'?: Linter.RuleEntry<[]> /** - * Disallow invalid options in `fetch()` and `new Request()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-invalid-fetch-options.md + * disallow empty sequence entries + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-empty-sequence-entry.html */ - 'unicorn/no-invalid-fetch-options'?: Linter.RuleEntry<[]> + 'yaml/no-empty-sequence-entry'?: Linter.RuleEntry<[]> /** - * Prevent calling `EventTarget#removeEventListener()` with the result of an expression. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-invalid-remove-event-listener.md + * disallow irregular whitespace + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-irregular-whitespace.html */ - 'unicorn/no-invalid-remove-event-listener'?: Linter.RuleEntry<[]> + 'yaml/no-irregular-whitespace'?: Linter.RuleEntry /** - * Disallow identifiers starting with `new` or `class`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-keyword-prefix.md + * disallow multiple empty lines + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-multiple-empty-lines.html */ - 'unicorn/no-keyword-prefix'?: Linter.RuleEntry + 'yaml/no-multiple-empty-lines'?: Linter.RuleEntry /** - * Disallow using `.length` as the `end` argument of `{Array,String,TypedArray}#slice()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-length-as-slice-end.md + * disallow tabs for indentation. + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-tab-indent.html */ - 'unicorn/no-length-as-slice-end'?: Linter.RuleEntry<[]> + 'yaml/no-tab-indent'?: Linter.RuleEntry<[]> /** - * Disallow `if` statements as the only statement in `if` blocks without `else`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-lonely-if.md + * disallow trailing zeros for floats + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-trailing-zeros.html */ - 'unicorn/no-lonely-if'?: Linter.RuleEntry<[]> + 'yaml/no-trailing-zeros'?: Linter.RuleEntry<[]> /** - * Disallow a magic number as the `depth` argument in `Array#flat(…).` - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-magic-array-flat-depth.md + * require or disallow plain style scalar. + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/plain-scalar.html */ - 'unicorn/no-magic-array-flat-depth'?: Linter.RuleEntry<[]> + 'yaml/plain-scalar'?: Linter.RuleEntry /** - * Disallow negated conditions. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-negated-condition.md + * enforce the consistent use of either double, or single quotes + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/quotes.html */ - 'unicorn/no-negated-condition'?: Linter.RuleEntry<[]> + 'yaml/quotes'?: Linter.RuleEntry /** - * Disallow negated expression in equality check. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-negation-in-equality-check.md + * disallow mapping keys other than strings + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/require-string-key.html */ - 'unicorn/no-negation-in-equality-check'?: Linter.RuleEntry<[]> + 'yaml/require-string-key'?: Linter.RuleEntry<[]> /** - * Disallow nested ternary expressions. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-nested-ternary.md + * require mapping keys to be sorted + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/sort-keys.html */ - 'unicorn/no-nested-ternary'?: Linter.RuleEntry<[]> + 'yaml/sort-keys'?: Linter.RuleEntry /** - * Disallow `new Array()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-new-array.md + * require sequence values to be sorted + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/sort-sequence-values.html */ - 'unicorn/no-new-array'?: Linter.RuleEntry<[]> + 'yaml/sort-sequence-values'?: Linter.RuleEntry /** - * Enforce the use of `Buffer.from()` and `Buffer.alloc()` instead of the deprecated `new Buffer()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-new-buffer.md + * enforce consistent spacing after the `#` in a comment + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/spaced-comment.html */ - 'unicorn/no-new-buffer'?: Linter.RuleEntry<[]> + 'yaml/spaced-comment'?: Linter.RuleEntry /** - * Disallow the use of the `null` literal. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-null.md + * disallow parsing errors in Vue custom blocks + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/vue-custom-block/no-parsing-error.html */ - 'unicorn/no-null'?: Linter.RuleEntry + 'yaml/vue-custom-block/no-parsing-error'?: Linter.RuleEntry<[]> /** - * Disallow the use of objects as default parameters. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-object-as-default-parameter.md + * Prefers `z.enum` over a union of literals. + * @see https://github.com/gajus/eslint-plugin-zod#eslint-plugin-zod-rules-prefer-enum */ - 'unicorn/no-object-as-default-parameter'?: Linter.RuleEntry<[]> + 'zod/prefer-enum'?: Linter.RuleEntry /** - * Disallow `process.exit()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-process-exit.md + * Requires that objects are initialized with .strict(). + * @see https://github.com/gajus/eslint-plugin-zod#eslint-plugin-zod-rules-require-strict */ - 'unicorn/no-process-exit'?: Linter.RuleEntry<[]> - /** - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/deprecated-rules.md#no-reduce - * @deprecated - */ - 'unicorn/no-reduce'?: Linter.RuleEntry<[]> - /** - * Disallow passing single-element arrays to `Promise` methods. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-single-promise-in-promise-methods.md - */ - 'unicorn/no-single-promise-in-promise-methods'?: Linter.RuleEntry<[]> - /** - * Disallow classes that only have static members. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-static-only-class.md - */ - 'unicorn/no-static-only-class'?: Linter.RuleEntry<[]> - /** - * Disallow `then` property. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-thenable.md - */ - 'unicorn/no-thenable'?: Linter.RuleEntry<[]> - /** - * Disallow assigning `this` to a variable. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-this-assignment.md - */ - 'unicorn/no-this-assignment'?: Linter.RuleEntry<[]> - /** - * Disallow comparing `undefined` using `typeof`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-typeof-undefined.md - */ - 'unicorn/no-typeof-undefined'?: Linter.RuleEntry - /** - * Disallow awaiting non-promise values. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-unnecessary-await.md - */ - 'unicorn/no-unnecessary-await'?: Linter.RuleEntry<[]> - /** - * Enforce the use of built-in methods instead of unnecessary polyfills. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-unnecessary-polyfills.md - */ - 'unicorn/no-unnecessary-polyfills'?: Linter.RuleEntry - /** - * Disallow unreadable array destructuring. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-unreadable-array-destructuring.md - */ - 'unicorn/no-unreadable-array-destructuring'?: Linter.RuleEntry<[]> - /** - * Disallow unreadable IIFEs. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-unreadable-iife.md - */ - 'unicorn/no-unreadable-iife'?: Linter.RuleEntry<[]> - /** - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/deprecated-rules.md#no-unsafe-regex - * @deprecated - */ - 'unicorn/no-unsafe-regex'?: Linter.RuleEntry<[]> - /** - * Disallow unused object properties. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-unused-properties.md - */ - 'unicorn/no-unused-properties'?: Linter.RuleEntry<[]> - /** - * Disallow useless fallback when spreading in object literals. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-useless-fallback-in-spread.md - */ - 'unicorn/no-useless-fallback-in-spread'?: Linter.RuleEntry<[]> - /** - * Disallow useless array length check. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-useless-length-check.md - */ - 'unicorn/no-useless-length-check'?: Linter.RuleEntry<[]> - /** - * Disallow returning/yielding `Promise.resolve/reject()` in async functions or promise callbacks - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-useless-promise-resolve-reject.md - */ - 'unicorn/no-useless-promise-resolve-reject'?: Linter.RuleEntry<[]> - /** - * Disallow unnecessary spread. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-useless-spread.md - */ - 'unicorn/no-useless-spread'?: Linter.RuleEntry<[]> - /** - * Disallow useless case in switch statements. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-useless-switch-case.md - */ - 'unicorn/no-useless-switch-case'?: Linter.RuleEntry<[]> - /** - * Disallow useless `undefined`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-useless-undefined.md - */ - 'unicorn/no-useless-undefined'?: Linter.RuleEntry - /** - * Disallow number literals with zero fractions or dangling dots. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/no-zero-fractions.md - */ - 'unicorn/no-zero-fractions'?: Linter.RuleEntry<[]> - /** - * Enforce proper case for numeric literals. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/number-literal-case.md - */ - 'unicorn/number-literal-case'?: Linter.RuleEntry<[]> - /** - * Enforce the style of numeric separators by correctly grouping digits. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/numeric-separators-style.md - */ - 'unicorn/numeric-separators-style'?: Linter.RuleEntry - /** - * Prefer `.addEventListener()` and `.removeEventListener()` over `on`-functions. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-add-event-listener.md - */ - 'unicorn/prefer-add-event-listener'?: Linter.RuleEntry - /** - * Prefer `.find(…)` and `.findLast(…)` over the first or last element from `.filter(…)`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-array-find.md - */ - 'unicorn/prefer-array-find'?: Linter.RuleEntry - /** - * Prefer `Array#flat()` over legacy techniques to flatten arrays. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-array-flat.md - */ - 'unicorn/prefer-array-flat'?: Linter.RuleEntry - /** - * Prefer `.flatMap(…)` over `.map(…).flat()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-array-flat-map.md - */ - 'unicorn/prefer-array-flat-map'?: Linter.RuleEntry<[]> - /** - * Prefer `Array#{indexOf,lastIndexOf}()` over `Array#{findIndex,findLastIndex}()` when looking for the index of an item. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-array-index-of.md - */ - 'unicorn/prefer-array-index-of'?: Linter.RuleEntry<[]> - /** - * Prefer `.some(…)` over `.filter(…).length` check and `.{find,findLast,findIndex,findLastIndex}(…)`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-array-some.md - */ - 'unicorn/prefer-array-some'?: Linter.RuleEntry<[]> - /** - * Prefer `.at()` method for index access and `String#charAt()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-at.md - */ - 'unicorn/prefer-at'?: Linter.RuleEntry - /** - * Prefer `Blob#arrayBuffer()` over `FileReader#readAsArrayBuffer(…)` and `Blob#text()` over `FileReader#readAsText(…)`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-blob-reading-methods.md - */ - 'unicorn/prefer-blob-reading-methods'?: Linter.RuleEntry<[]> - /** - * Prefer `String#codePointAt(…)` over `String#charCodeAt(…)` and `String.fromCodePoint(…)` over `String.fromCharCode(…)`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-code-point.md - */ - 'unicorn/prefer-code-point'?: Linter.RuleEntry<[]> - /** - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/deprecated-rules.md#prefer-dataset - * @deprecated - */ - 'unicorn/prefer-dataset'?: Linter.RuleEntry<[]> - /** - * Prefer `Date.now()` to get the number of milliseconds since the Unix Epoch. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-date-now.md - */ - 'unicorn/prefer-date-now'?: Linter.RuleEntry<[]> - /** - * Prefer default parameters over reassignment. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-default-parameters.md - */ - 'unicorn/prefer-default-parameters'?: Linter.RuleEntry<[]> - /** - * Prefer `Node#append()` over `Node#appendChild()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-dom-node-append.md - */ - 'unicorn/prefer-dom-node-append'?: Linter.RuleEntry<[]> - /** - * Prefer using `.dataset` on DOM elements over calling attribute methods. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-dom-node-dataset.md - */ - 'unicorn/prefer-dom-node-dataset'?: Linter.RuleEntry<[]> - /** - * Prefer `childNode.remove()` over `parentNode.removeChild(childNode)`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-dom-node-remove.md - */ - 'unicorn/prefer-dom-node-remove'?: Linter.RuleEntry<[]> - /** - * Prefer `.textContent` over `.innerText`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-dom-node-text-content.md - */ - 'unicorn/prefer-dom-node-text-content'?: Linter.RuleEntry<[]> - /** - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/deprecated-rules.md#prefer-event-key - * @deprecated - */ - 'unicorn/prefer-event-key'?: Linter.RuleEntry<[]> - /** - * Prefer `EventTarget` over `EventEmitter`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-event-target.md - */ - 'unicorn/prefer-event-target'?: Linter.RuleEntry<[]> - /** - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/deprecated-rules.md#prefer-exponentiation-operator - * @deprecated - */ - 'unicorn/prefer-exponentiation-operator'?: Linter.RuleEntry<[]> - /** - * Prefer `export…from` when re-exporting. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-export-from.md - */ - 'unicorn/prefer-export-from'?: Linter.RuleEntry - /** - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/deprecated-rules.md#prefer-flat-map - * @deprecated - */ - 'unicorn/prefer-flat-map'?: Linter.RuleEntry<[]> - /** - * Prefer `globalThis` over `window`, `self`, and `global`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-global-this.md - */ - 'unicorn/prefer-global-this'?: Linter.RuleEntry<[]> - /** - * Prefer `.includes()` over `.indexOf()`, `.lastIndexOf()`, and `Array#some()` when checking for existence or non-existence. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-includes.md - */ - 'unicorn/prefer-includes'?: Linter.RuleEntry<[]> - /** - * Prefer reading a JSON file as a buffer. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-json-parse-buffer.md - */ - 'unicorn/prefer-json-parse-buffer'?: Linter.RuleEntry<[]> - /** - * Prefer `KeyboardEvent#key` over `KeyboardEvent#keyCode`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-keyboard-event-key.md - */ - 'unicorn/prefer-keyboard-event-key'?: Linter.RuleEntry<[]> - /** - * Prefer using a logical operator over a ternary. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-logical-operator-over-ternary.md - */ - 'unicorn/prefer-logical-operator-over-ternary'?: Linter.RuleEntry<[]> - /** - * Prefer `Math.min()` and `Math.max()` over ternaries for simple comparisons. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-math-min-max.md - */ - 'unicorn/prefer-math-min-max'?: Linter.RuleEntry<[]> - /** - * Enforce the use of `Math.trunc` instead of bitwise operators. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-math-trunc.md - */ - 'unicorn/prefer-math-trunc'?: Linter.RuleEntry<[]> - /** - * Prefer `.before()` over `.insertBefore()`, `.replaceWith()` over `.replaceChild()`, prefer one of `.before()`, `.after()`, `.append()` or `.prepend()` over `insertAdjacentText()` and `insertAdjacentElement()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-modern-dom-apis.md - */ - 'unicorn/prefer-modern-dom-apis'?: Linter.RuleEntry<[]> - /** - * Prefer modern `Math` APIs over legacy patterns. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-modern-math-apis.md - */ - 'unicorn/prefer-modern-math-apis'?: Linter.RuleEntry<[]> - /** - * Prefer JavaScript modules (ESM) over CommonJS. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-module.md - */ - 'unicorn/prefer-module'?: Linter.RuleEntry<[]> - /** - * Prefer using `String`, `Number`, `BigInt`, `Boolean`, and `Symbol` directly. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-native-coercion-functions.md - */ - 'unicorn/prefer-native-coercion-functions'?: Linter.RuleEntry<[]> - /** - * Prefer negative index over `.length - index` when possible. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-negative-index.md - */ - 'unicorn/prefer-negative-index'?: Linter.RuleEntry<[]> - /** - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/deprecated-rules.md#prefer-node-append - * @deprecated - */ - 'unicorn/prefer-node-append'?: Linter.RuleEntry<[]> - /** - * Prefer using the `node:` protocol when importing Node.js builtin modules. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-node-protocol.md - */ - 'unicorn/prefer-node-protocol'?: Linter.RuleEntry<[]> - /** - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/deprecated-rules.md#prefer-node-remove - * @deprecated - */ - 'unicorn/prefer-node-remove'?: Linter.RuleEntry<[]> - /** - * Prefer `Number` static properties over global ones. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-number-properties.md - */ - 'unicorn/prefer-number-properties'?: Linter.RuleEntry - /** - * Prefer using `Object.fromEntries(…)` to transform a list of key-value pairs into an object. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-object-from-entries.md - */ - 'unicorn/prefer-object-from-entries'?: Linter.RuleEntry - /** - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/deprecated-rules.md#prefer-object-has-own - * @deprecated - */ - 'unicorn/prefer-object-has-own'?: Linter.RuleEntry<[]> - /** - * Prefer omitting the `catch` binding parameter. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-optional-catch-binding.md - */ - 'unicorn/prefer-optional-catch-binding'?: Linter.RuleEntry<[]> - /** - * Prefer borrowing methods from the prototype instead of the instance. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-prototype-methods.md - */ - 'unicorn/prefer-prototype-methods'?: Linter.RuleEntry<[]> - /** - * Prefer `.querySelector()` over `.getElementById()`, `.querySelectorAll()` over `.getElementsByClassName()` and `.getElementsByTagName()` and `.getElementsByName()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-query-selector.md - */ - 'unicorn/prefer-query-selector'?: Linter.RuleEntry<[]> - /** - * Prefer `Reflect.apply()` over `Function#apply()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-reflect-apply.md - */ - 'unicorn/prefer-reflect-apply'?: Linter.RuleEntry<[]> - /** - * Prefer `RegExp#test()` over `String#match()` and `RegExp#exec()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-regexp-test.md - */ - 'unicorn/prefer-regexp-test'?: Linter.RuleEntry<[]> - /** - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/deprecated-rules.md#prefer-replace-all - * @deprecated - */ - 'unicorn/prefer-replace-all'?: Linter.RuleEntry<[]> - /** - * Prefer `Set#has()` over `Array#includes()` when checking for existence or non-existence. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-set-has.md - */ - 'unicorn/prefer-set-has'?: Linter.RuleEntry<[]> - /** - * Prefer using `Set#size` instead of `Array#length`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-set-size.md - */ - 'unicorn/prefer-set-size'?: Linter.RuleEntry<[]> - /** - * Prefer the spread operator over `Array.from(…)`, `Array#concat(…)`, `Array#{slice,toSpliced}()` and `String#split('')`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-spread.md - */ - 'unicorn/prefer-spread'?: Linter.RuleEntry<[]> - /** - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/deprecated-rules.md#prefer-starts-ends-with - * @deprecated - */ - 'unicorn/prefer-starts-ends-with'?: Linter.RuleEntry<[]> - /** - * Prefer using the `String.raw` tag to avoid escaping `\`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-string-raw.md - */ - 'unicorn/prefer-string-raw'?: Linter.RuleEntry<[]> - /** - * Prefer `String#replaceAll()` over regex searches with the global flag. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-string-replace-all.md - */ - 'unicorn/prefer-string-replace-all'?: Linter.RuleEntry<[]> - /** - * Prefer `String#slice()` over `String#substr()` and `String#substring()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-string-slice.md - */ - 'unicorn/prefer-string-slice'?: Linter.RuleEntry<[]> - /** - * Prefer `String#startsWith()` & `String#endsWith()` over `RegExp#test()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-string-starts-ends-with.md - */ - 'unicorn/prefer-string-starts-ends-with'?: Linter.RuleEntry<[]> - /** - * Prefer `String#trimStart()` / `String#trimEnd()` over `String#trimLeft()` / `String#trimRight()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-string-trim-start-end.md - */ - 'unicorn/prefer-string-trim-start-end'?: Linter.RuleEntry<[]> - /** - * Prefer using `structuredClone` to create a deep clone. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-structured-clone.md - */ - 'unicorn/prefer-structured-clone'?: Linter.RuleEntry - /** - * Prefer `switch` over multiple `else-if`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-switch.md - */ - 'unicorn/prefer-switch'?: Linter.RuleEntry - /** - * Prefer ternary expressions over simple `if-else` statements. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-ternary.md - */ - 'unicorn/prefer-ternary'?: Linter.RuleEntry - /** - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/deprecated-rules.md#prefer-text-content - * @deprecated - */ - 'unicorn/prefer-text-content'?: Linter.RuleEntry<[]> - /** - * Prefer top-level await over top-level promises and async function calls. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-top-level-await.md - */ - 'unicorn/prefer-top-level-await'?: Linter.RuleEntry<[]> - /** - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/deprecated-rules.md#prefer-trim-start-end - * @deprecated - */ - 'unicorn/prefer-trim-start-end'?: Linter.RuleEntry<[]> - /** - * Enforce throwing `TypeError` in type checking conditions. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prefer-type-error.md - */ - 'unicorn/prefer-type-error'?: Linter.RuleEntry<[]> - /** - * Prevent abbreviations. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/prevent-abbreviations.md - */ - 'unicorn/prevent-abbreviations'?: Linter.RuleEntry - /** - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/deprecated-rules.md#regex-shorthand - * @deprecated - */ - 'unicorn/regex-shorthand'?: Linter.RuleEntry<[]> - /** - * Enforce consistent relative URL style. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/relative-url-style.md - */ - 'unicorn/relative-url-style'?: Linter.RuleEntry - /** - * Enforce using the separator argument with `Array#join()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/require-array-join-separator.md - */ - 'unicorn/require-array-join-separator'?: Linter.RuleEntry<[]> - /** - * Enforce using the digits argument with `Number#toFixed()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/require-number-to-fixed-digits-argument.md - */ - 'unicorn/require-number-to-fixed-digits-argument'?: Linter.RuleEntry<[]> - /** - * Enforce using the `targetOrigin` argument with `window.postMessage()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/require-post-message-target-origin.md - */ - 'unicorn/require-post-message-target-origin'?: Linter.RuleEntry<[]> - /** - * Enforce better string content. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/string-content.md - */ - 'unicorn/string-content'?: Linter.RuleEntry - /** - * Enforce consistent brace style for `case` clauses. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/switch-case-braces.md - */ - 'unicorn/switch-case-braces'?: Linter.RuleEntry - /** - * Fix whitespace-insensitive template indentation. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/template-indent.md - */ - 'unicorn/template-indent'?: Linter.RuleEntry - /** - * Enforce consistent case for text encoding identifiers. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/text-encoding-identifier-case.md - */ - 'unicorn/text-encoding-identifier-case'?: Linter.RuleEntry<[]> - /** - * Require `new` when creating an error. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v56.0.1/docs/rules/throw-new-error.md - */ - 'unicorn/throw-new-error'?: Linter.RuleEntry<[]> - /** - * Utilities in UnoCSS blocklist - * @see https://unocss.dev/integrations/eslint#rules - */ - 'unocss/blocklist'?: Linter.RuleEntry<[]> - /** - * Enforce class compilation - * @see https://unocss.dev/integrations/eslint#rules - */ - 'unocss/enforce-class-compile'?: Linter.RuleEntry - /** - * Order of UnoCSS utilities in class attribute - * @see https://unocss.dev/integrations/eslint#rules - */ - 'unocss/order'?: Linter.RuleEntry<[]> - /** - * Order of UnoCSS attributes - * @see https://unocss.dev/integrations/eslint#rules - */ - 'unocss/order-attributify'?: Linter.RuleEntry<[]> - /** - * Require calls to `isNaN()` when checking for `NaN` - * @see https://eslint.org/docs/latest/rules/use-isnan - */ - 'use-isnan'?: Linter.RuleEntry - /** - * Enforce comparing `typeof` expressions against valid strings - * @see https://eslint.org/docs/latest/rules/valid-typeof - */ - 'valid-typeof'?: Linter.RuleEntry - 'validate-jsx-nesting/no-invalid-jsx-nesting'?: Linter.RuleEntry<[]> - /** - * Require `var` declarations be placed at the top of their containing scope - * @see https://eslint.org/docs/latest/rules/vars-on-top - */ - 'vars-on-top'?: Linter.RuleEntry<[]> - /** - * require .spec test file pattern - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/consistent-test-filename.md - */ - 'vitest/consistent-test-filename'?: Linter.RuleEntry - /** - * enforce using test or it but not both - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/consistent-test-it.md - */ - 'vitest/consistent-test-it'?: Linter.RuleEntry - /** - * enforce having expectation in test body - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/expect-expect.md - */ - 'vitest/expect-expect'?: Linter.RuleEntry - /** - * enforce a maximum number of expect per test - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/max-expects.md - */ - 'vitest/max-expects'?: Linter.RuleEntry - /** - * require describe block to be less than set max value or default value - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/max-nested-describe.md - */ - 'vitest/max-nested-describe'?: Linter.RuleEntry - /** - * disallow alias methods - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-alias-methods.md - */ - 'vitest/no-alias-methods'?: Linter.RuleEntry<[]> - /** - * disallow commented out tests - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-commented-out-tests.md - */ - 'vitest/no-commented-out-tests'?: Linter.RuleEntry<[]> - /** - * disallow conditional expects - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-expect.md - */ - 'vitest/no-conditional-expect'?: Linter.RuleEntry<[]> - /** - * disallow conditional tests - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-in-test.md - */ - 'vitest/no-conditional-in-test'?: Linter.RuleEntry<[]> - /** - * disallow conditional tests - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-tests.md - */ - 'vitest/no-conditional-tests'?: Linter.RuleEntry<[]> - /** - * disallow disabled tests - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-disabled-tests.md - */ - 'vitest/no-disabled-tests'?: Linter.RuleEntry<[]> - /** - * disallow using a callback in asynchronous tests and hooks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-done-callback.md - * @deprecated - */ - 'vitest/no-done-callback'?: Linter.RuleEntry<[]> - /** - * disallow duplicate hooks and teardown hooks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-duplicate-hooks.md - */ - 'vitest/no-duplicate-hooks'?: Linter.RuleEntry<[]> - /** - * disallow focused tests - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-focused-tests.md - */ - 'vitest/no-focused-tests'?: Linter.RuleEntry - /** - * disallow setup and teardown hooks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-hooks.md - */ - 'vitest/no-hooks'?: Linter.RuleEntry - /** - * disallow identical titles - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-identical-title.md - */ - 'vitest/no-identical-title'?: Linter.RuleEntry<[]> - /** - * disallow importing `node:test` - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-import-node-test.md - */ - 'vitest/no-import-node-test'?: Linter.RuleEntry<[]> - /** - * disallow string interpolation in snapshots - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-interpolation-in-snapshots.md - */ - 'vitest/no-interpolation-in-snapshots'?: Linter.RuleEntry<[]> - /** - * disallow large snapshots - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-large-snapshots.md - */ - 'vitest/no-large-snapshots'?: Linter.RuleEntry - /** - * disallow importing from __mocks__ directory - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-mocks-import.md - */ - 'vitest/no-mocks-import'?: Linter.RuleEntry<[]> - /** - * disallow .only blocks in tests - * @see https://github.com/levibuzolic/eslint-plugin-no-only-tests - */ - 'vitest/no-only-tests'?: Linter.RuleEntry - /** - * disallow the use of certain matchers - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-restricted-matchers.md - */ - 'vitest/no-restricted-matchers'?: Linter.RuleEntry - /** - * disallow specific `vi.` methods - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-restricted-vi-methods.md - */ - 'vitest/no-restricted-vi-methods'?: Linter.RuleEntry - /** - * disallow using `expect` outside of `it` or `test` blocks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-standalone-expect.md - */ - 'vitest/no-standalone-expect'?: Linter.RuleEntry - /** - * disallow using `test` as a prefix - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-test-prefixes.md - */ - 'vitest/no-test-prefixes'?: Linter.RuleEntry<[]> - /** - * disallow return statements in tests - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-test-return-statement.md - */ - 'vitest/no-test-return-statement'?: Linter.RuleEntry<[]> - /** - * Enforce padding around `afterAll` blocks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-after-all-blocks.md - */ - 'vitest/padding-around-after-all-blocks'?: Linter.RuleEntry<[]> - /** - * Enforce padding around `afterEach` blocks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-after-each-blocks.md - */ - 'vitest/padding-around-after-each-blocks'?: Linter.RuleEntry<[]> - /** - * Enforce padding around vitest functions - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-all.md - */ - 'vitest/padding-around-all'?: Linter.RuleEntry<[]> - /** - * Enforce padding around `beforeAll` blocks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-before-all-blocks.md - */ - 'vitest/padding-around-before-all-blocks'?: Linter.RuleEntry<[]> - /** - * Enforce padding around `beforeEach` blocks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-before-each-blocks.md - */ - 'vitest/padding-around-before-each-blocks'?: Linter.RuleEntry<[]> - /** - * Enforce padding around `describe` blocks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-describe-blocks.md - */ - 'vitest/padding-around-describe-blocks'?: Linter.RuleEntry<[]> - /** - * Enforce padding around `expect` groups - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-expect-groups.md - */ - 'vitest/padding-around-expect-groups'?: Linter.RuleEntry<[]> - /** - * Enforce padding around `test` blocks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-test-blocks.md - */ - 'vitest/padding-around-test-blocks'?: Linter.RuleEntry<[]> - /** - * enforce using `toBeCalledWith()` or `toHaveBeenCalledWith()` - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-called-with.md - */ - 'vitest/prefer-called-with'?: Linter.RuleEntry<[]> - /** - * enforce using the built-in comparison matchers - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-comparison-matcher.md - */ - 'vitest/prefer-comparison-matcher'?: Linter.RuleEntry<[]> - /** - * enforce using `each` rather than manual loops - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-each.md - */ - 'vitest/prefer-each'?: Linter.RuleEntry<[]> - /** - * enforce using the built-in quality matchers - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-equality-matcher.md - */ - 'vitest/prefer-equality-matcher'?: Linter.RuleEntry<[]> - /** - * enforce using expect assertions instead of callbacks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-expect-assertions.md - */ - 'vitest/prefer-expect-assertions'?: Linter.RuleEntry - /** - * enforce using `expect().resolves` over `expect(await ...)` syntax - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-expect-resolves.md - */ - 'vitest/prefer-expect-resolves'?: Linter.RuleEntry<[]> - /** - * enforce having hooks in consistent order - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-hooks-in-order.md - */ - 'vitest/prefer-hooks-in-order'?: Linter.RuleEntry<[]> - /** - * enforce having hooks before any test cases - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-hooks-on-top.md - */ - 'vitest/prefer-hooks-on-top'?: Linter.RuleEntry<[]> - /** - * enforce lowercase titles - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-lowercase-title.md - */ - 'vitest/prefer-lowercase-title'?: Linter.RuleEntry - /** - * enforce mock resolved/rejected shorthands for promises - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-mock-promise-shorthand.md - */ - 'vitest/prefer-mock-promise-shorthand'?: Linter.RuleEntry<[]> - /** - * enforce including a hint with external snapshots - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-snapshot-hint.md - */ - 'vitest/prefer-snapshot-hint'?: Linter.RuleEntry - /** - * enforce using `vi.spyOn` - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-spy-on.md - */ - 'vitest/prefer-spy-on'?: Linter.RuleEntry<[]> - /** - * enforce strict equal over equal - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-strict-equal.md - */ - 'vitest/prefer-strict-equal'?: Linter.RuleEntry<[]> - /** - * enforce using toBe() - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be.md - */ - 'vitest/prefer-to-be'?: Linter.RuleEntry<[]> - /** - * enforce using toBeFalsy() - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-falsy.md - */ - 'vitest/prefer-to-be-falsy'?: Linter.RuleEntry<[]> - /** - * enforce using toBeObject() - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-object.md - */ - 'vitest/prefer-to-be-object'?: Linter.RuleEntry<[]> - /** - * enforce using `toBeTruthy` - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-truthy.md - */ - 'vitest/prefer-to-be-truthy'?: Linter.RuleEntry<[]> - /** - * enforce using toContain() - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-contain.md - */ - 'vitest/prefer-to-contain'?: Linter.RuleEntry<[]> - /** - * enforce using toHaveLength() - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-have-length.md - */ - 'vitest/prefer-to-have-length'?: Linter.RuleEntry<[]> - /** - * enforce using `test.todo` - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-todo.md - */ - 'vitest/prefer-todo'?: Linter.RuleEntry<[]> - /** - * require `vi.mocked()` over `fn as Mock` - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-vi-mocked.md - */ - 'vitest/prefer-vi-mocked'?: Linter.RuleEntry<[]> - /** - * require setup and teardown to be within a hook - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-hook.md - */ - 'vitest/require-hook'?: Linter.RuleEntry - /** - * require local Test Context for concurrent snapshot tests - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-local-test-context-for-concurrent-snapshots.md - */ - 'vitest/require-local-test-context-for-concurrent-snapshots'?: Linter.RuleEntry<[]> - /** - * require toThrow() to be called with an error message - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-to-throw-message.md - */ - 'vitest/require-to-throw-message'?: Linter.RuleEntry<[]> - /** - * enforce that all tests are in a top-level describe - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-top-level-describe.md - */ - 'vitest/require-top-level-describe'?: Linter.RuleEntry - /** - * enforce valid describe callback - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-describe-callback.md - */ - 'vitest/valid-describe-callback'?: Linter.RuleEntry<[]> - /** - * enforce valid `expect()` usage - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-expect.md - */ - 'vitest/valid-expect'?: Linter.RuleEntry - /** - * require promises that have expectations in their chain to be valid - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-expect-in-promise.md - */ - 'vitest/valid-expect-in-promise'?: Linter.RuleEntry<[]> - /** - * enforce valid titles - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-title.md - */ - 'vitest/valid-title'?: Linter.RuleEntry - /** - * Require parentheses around immediate `function` invocations - * @see https://eslint.org/docs/latest/rules/wrap-iife - * @deprecated - */ - 'wrap-iife'?: Linter.RuleEntry - /** - * Require parenthesis around regex literals - * @see https://eslint.org/docs/latest/rules/wrap-regex - * @deprecated - */ - 'wrap-regex'?: Linter.RuleEntry<[]> - /** - * require or disallow block style mappings. - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/block-mapping.html - */ - 'yaml/block-mapping'?: Linter.RuleEntry - /** - * enforce consistent line breaks after `:` indicator - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/block-mapping-colon-indicator-newline.html - */ - 'yaml/block-mapping-colon-indicator-newline'?: Linter.RuleEntry - /** - * enforce consistent line breaks after `?` indicator - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/block-mapping-question-indicator-newline.html - */ - 'yaml/block-mapping-question-indicator-newline'?: Linter.RuleEntry - /** - * require or disallow block style sequences. - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/block-sequence.html - */ - 'yaml/block-sequence'?: Linter.RuleEntry - /** - * enforce consistent line breaks after `-` indicator - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/block-sequence-hyphen-indicator-newline.html - */ - 'yaml/block-sequence-hyphen-indicator-newline'?: Linter.RuleEntry - /** - * enforce YAML file extension - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/file-extension.html - */ - 'yaml/file-extension'?: Linter.RuleEntry - /** - * enforce consistent line breaks inside braces - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/flow-mapping-curly-newline.html - */ - 'yaml/flow-mapping-curly-newline'?: Linter.RuleEntry - /** - * enforce consistent spacing inside braces - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/flow-mapping-curly-spacing.html - */ - 'yaml/flow-mapping-curly-spacing'?: Linter.RuleEntry - /** - * enforce linebreaks after opening and before closing flow sequence brackets - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/flow-sequence-bracket-newline.html - */ - 'yaml/flow-sequence-bracket-newline'?: Linter.RuleEntry - /** - * enforce consistent spacing inside flow sequence brackets - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/flow-sequence-bracket-spacing.html - */ - 'yaml/flow-sequence-bracket-spacing'?: Linter.RuleEntry - /** - * enforce consistent indentation - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/indent.html - */ - 'yaml/indent'?: Linter.RuleEntry - /** - * enforce naming convention to key names - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/key-name-casing.html - */ - 'yaml/key-name-casing'?: Linter.RuleEntry - /** - * enforce consistent spacing between keys and values in mapping pairs - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/key-spacing.html - */ - 'yaml/key-spacing'?: Linter.RuleEntry - /** - * disallow empty document - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-empty-document.html - */ - 'yaml/no-empty-document'?: Linter.RuleEntry<[]> - /** - * disallow empty mapping keys - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-empty-key.html - */ - 'yaml/no-empty-key'?: Linter.RuleEntry<[]> - /** - * disallow empty mapping values - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-empty-mapping-value.html - */ - 'yaml/no-empty-mapping-value'?: Linter.RuleEntry<[]> - /** - * disallow empty sequence entries - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-empty-sequence-entry.html - */ - 'yaml/no-empty-sequence-entry'?: Linter.RuleEntry<[]> - /** - * disallow irregular whitespace - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-irregular-whitespace.html - */ - 'yaml/no-irregular-whitespace'?: Linter.RuleEntry - /** - * disallow multiple empty lines - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-multiple-empty-lines.html - */ - 'yaml/no-multiple-empty-lines'?: Linter.RuleEntry - /** - * disallow tabs for indentation. - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-tab-indent.html - */ - 'yaml/no-tab-indent'?: Linter.RuleEntry<[]> - /** - * disallow trailing zeros for floats - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-trailing-zeros.html - */ - 'yaml/no-trailing-zeros'?: Linter.RuleEntry<[]> - /** - * require or disallow plain style scalar. - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/plain-scalar.html - */ - 'yaml/plain-scalar'?: Linter.RuleEntry - /** - * enforce the consistent use of either double, or single quotes - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/quotes.html - */ - 'yaml/quotes'?: Linter.RuleEntry - /** - * disallow mapping keys other than strings - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/require-string-key.html - */ - 'yaml/require-string-key'?: Linter.RuleEntry<[]> - /** - * require mapping keys to be sorted - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/sort-keys.html - */ - 'yaml/sort-keys'?: Linter.RuleEntry - /** - * require sequence values to be sorted - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/sort-sequence-values.html - */ - 'yaml/sort-sequence-values'?: Linter.RuleEntry - /** - * enforce consistent spacing after the `#` in a comment - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/spaced-comment.html - */ - 'yaml/spaced-comment'?: Linter.RuleEntry - /** - * disallow parsing errors in Vue custom blocks - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/vue-custom-block/no-parsing-error.html - */ - 'yaml/vue-custom-block/no-parsing-error'?: Linter.RuleEntry<[]> - /** - * Require or disallow spacing around the `*` in `yield*` expressions - * @see https://eslint.org/docs/latest/rules/yield-star-spacing - * @deprecated - */ - 'yield-star-spacing'?: Linter.RuleEntry - /** - * Require or disallow "Yoda" conditions - * @see https://eslint.org/docs/latest/rules/yoda - */ - 'yoda'?: Linter.RuleEntry - /** - * Prefers `z.enum` over a union of literals. - * @see https://github.com/gajus/eslint-plugin-zod#eslint-plugin-zod-rules-prefer-enum - */ - 'zod/prefer-enum'?: Linter.RuleEntry - /** - * Requires that objects are initialized with .strict(). - * @see https://github.com/gajus/eslint-plugin-zod#eslint-plugin-zod-rules-require-strict - */ - 'zod/require-strict'?: Linter.RuleEntry -} - -/* ======= Declarations ======= */ -// ----- @stylistic/array-bracket-newline ----- -type StylisticArrayBracketNewline = []|[(("always" | "never" | "consistent") | { - multiline?: boolean - minItems?: (number | null) -})] -// ----- @stylistic/array-bracket-spacing ----- -type StylisticArrayBracketSpacing = []|[("always" | "never")]|[("always" | "never"), { - singleValue?: boolean - objectsInArrays?: boolean - arraysInArrays?: boolean -}] -// ----- @stylistic/array-element-newline ----- -type StylisticArrayElementNewline = []|[(_StylisticArrayElementNewlineBasicConfig | { - ArrayExpression?: _StylisticArrayElementNewlineBasicConfig - ArrayPattern?: _StylisticArrayElementNewlineBasicConfig -})] -type _StylisticArrayElementNewlineBasicConfig = (("always" | "never" | "consistent") | { - consistent?: boolean - multiline?: boolean - minItems?: (number | null) -}) -// ----- @stylistic/arrow-parens ----- -type StylisticArrowParens = []|[("always" | "as-needed")]|[("always" | "as-needed"), { - requireForBlockBody?: boolean -}] -// ----- @stylistic/arrow-spacing ----- -type StylisticArrowSpacing = []|[{ - before?: boolean - after?: boolean -}] -// ----- @stylistic/block-spacing ----- -type StylisticBlockSpacing = []|[("always" | "never")] -// ----- @stylistic/brace-style ----- -type StylisticBraceStyle = []|[("1tbs" | "stroustrup" | "allman")]|[("1tbs" | "stroustrup" | "allman"), { - allowSingleLine?: boolean -}] -// ----- @stylistic/comma-dangle ----- -type StylisticCommaDangle = []|[(_StylisticCommaDangleValue | { - arrays?: _StylisticCommaDangleValueWithIgnore - objects?: _StylisticCommaDangleValueWithIgnore - imports?: _StylisticCommaDangleValueWithIgnore - exports?: _StylisticCommaDangleValueWithIgnore - functions?: _StylisticCommaDangleValueWithIgnore - importAttributes?: _StylisticCommaDangleValueWithIgnore - dynamicImports?: _StylisticCommaDangleValueWithIgnore - enums?: _StylisticCommaDangleValueWithIgnore - generics?: _StylisticCommaDangleValueWithIgnore - tuples?: _StylisticCommaDangleValueWithIgnore -})] -type _StylisticCommaDangleValue = ("always-multiline" | "always" | "never" | "only-multiline") -type _StylisticCommaDangleValueWithIgnore = ("always-multiline" | "always" | "never" | "only-multiline" | "ignore") -// ----- @stylistic/comma-spacing ----- -type StylisticCommaSpacing = []|[{ - before?: boolean - after?: boolean -}] -// ----- @stylistic/comma-style ----- -type StylisticCommaStyle = []|[("first" | "last")]|[("first" | "last"), { - exceptions?: { - [k: string]: boolean | undefined - } -}] -// ----- @stylistic/computed-property-spacing ----- -type StylisticComputedPropertySpacing = []|[("always" | "never")]|[("always" | "never"), { - enforceForClassMembers?: boolean -}] -// ----- @stylistic/curly-newline ----- -type StylisticCurlyNewline = []|[(("always" | "never") | { - IfStatementConsequent?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - IfStatementAlternative?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - DoWhileStatement?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - ForInStatement?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - ForOfStatement?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - ForStatement?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - WhileStatement?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - SwitchStatement?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - SwitchCase?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - TryStatementBlock?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - TryStatementHandler?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - TryStatementFinalizer?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - BlockStatement?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - ArrowFunctionExpression?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - FunctionDeclaration?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - FunctionExpression?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - Property?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - ClassBody?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - StaticBlock?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - WithStatement?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - TSEnumBody?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - TSInterfaceBody?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - TSModuleBlock?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - multiline?: boolean - minElements?: number - consistent?: boolean -})] -// ----- @stylistic/dot-location ----- -type StylisticDotLocation = []|[("object" | "property")] -// ----- @stylistic/eol-last ----- -type StylisticEolLast = []|[("always" | "never" | "unix" | "windows")] -// ----- @stylistic/func-call-spacing ----- -type StylisticFuncCallSpacing = ([]|["never"] | []|["always"]|["always", { - allowNewlines?: boolean - optionalChain?: { - before?: boolean - after?: boolean - } -}]) -// ----- @stylistic/function-call-argument-newline ----- -type StylisticFunctionCallArgumentNewline = []|[("always" | "never" | "consistent")] -// ----- @stylistic/function-call-spacing ----- -type StylisticFunctionCallSpacing = ([]|["never"] | []|["always"]|["always", { - allowNewlines?: boolean - optionalChain?: { - before?: boolean - after?: boolean - } -}]) -// ----- @stylistic/function-paren-newline ----- -type StylisticFunctionParenNewline = []|[(("always" | "never" | "consistent" | "multiline" | "multiline-arguments") | { - minItems?: number -})] -// ----- @stylistic/generator-star-spacing ----- -type StylisticGeneratorStarSpacing = []|[(("before" | "after" | "both" | "neither") | { - before?: boolean - after?: boolean - named?: (("before" | "after" | "both" | "neither") | { - before?: boolean - after?: boolean - }) - anonymous?: (("before" | "after" | "both" | "neither") | { - before?: boolean - after?: boolean - }) - method?: (("before" | "after" | "both" | "neither") | { - before?: boolean - after?: boolean - }) -})] -// ----- @stylistic/implicit-arrow-linebreak ----- -type StylisticImplicitArrowLinebreak = []|[("beside" | "below")] -// ----- @stylistic/indent ----- -type StylisticIndent = []|[("tab" | number)]|[("tab" | number), { - SwitchCase?: number - VariableDeclarator?: ((number | ("first" | "off")) | { - var?: (number | ("first" | "off")) - let?: (number | ("first" | "off")) - const?: (number | ("first" | "off")) - }) - outerIIFEBody?: (number | "off") - MemberExpression?: (number | "off") - FunctionDeclaration?: { - parameters?: (number | ("first" | "off")) - body?: number - } - FunctionExpression?: { - parameters?: (number | ("first" | "off")) - body?: number - } - StaticBlock?: { - body?: number - } - CallExpression?: { - arguments?: (number | ("first" | "off")) - } - ArrayExpression?: (number | ("first" | "off")) - ObjectExpression?: (number | ("first" | "off")) - ImportDeclaration?: (number | ("first" | "off")) - flatTernaryExpressions?: boolean - offsetTernaryExpressions?: boolean - offsetTernaryExpressionsOffsetCallExpressions?: boolean - ignoredNodes?: string[] - ignoreComments?: boolean - tabLength?: number -}] -// ----- @stylistic/indent-binary-ops ----- -type StylisticIndentBinaryOps = []|[(number | "tab")] -// ----- @stylistic/jsx-closing-bracket-location ----- -type StylisticJsxClosingBracketLocation = []|[(("after-props" | "props-aligned" | "tag-aligned" | "line-aligned") | { - location?: ("after-props" | "props-aligned" | "tag-aligned" | "line-aligned") -} | { - nonEmpty?: (("after-props" | "props-aligned" | "tag-aligned" | "line-aligned") | false) - selfClosing?: (("after-props" | "props-aligned" | "tag-aligned" | "line-aligned") | false) -})] -// ----- @stylistic/jsx-closing-tag-location ----- -type StylisticJsxClosingTagLocation = []|[("tag-aligned" | "line-aligned")] -// ----- @stylistic/jsx-curly-brace-presence ----- -type StylisticJsxCurlyBracePresence = []|[({ - props?: ("always" | "never" | "ignore") - children?: ("always" | "never" | "ignore") - propElementValues?: ("always" | "never" | "ignore") -} | ("always" | "never" | "ignore"))] -// ----- @stylistic/jsx-curly-newline ----- -type StylisticJsxCurlyNewline = []|[(("consistent" | "never") | { - singleline?: ("consistent" | "require" | "forbid") - multiline?: ("consistent" | "require" | "forbid") -})] -// ----- @stylistic/jsx-curly-spacing ----- -type StylisticJsxCurlySpacing = []|[((_StylisticJsxCurlySpacing_BasicConfig & { - attributes?: _StylisticJsxCurlySpacingBasicConfigOrBoolean - children?: _StylisticJsxCurlySpacingBasicConfigOrBoolean - [k: string]: unknown | undefined -}) | ("always" | "never"))]|[((_StylisticJsxCurlySpacing_BasicConfig & { - attributes?: _StylisticJsxCurlySpacingBasicConfigOrBoolean - children?: _StylisticJsxCurlySpacingBasicConfigOrBoolean - [k: string]: unknown | undefined -}) | ("always" | "never")), { - allowMultiline?: boolean - spacing?: { - objectLiterals?: ("always" | "never") - [k: string]: unknown | undefined - } -}] -type _StylisticJsxCurlySpacingBasicConfigOrBoolean = (_StylisticJsxCurlySpacing_BasicConfig | boolean) -interface _StylisticJsxCurlySpacing_BasicConfig { - when?: ("always" | "never") - allowMultiline?: boolean - spacing?: { - objectLiterals?: ("always" | "never") - [k: string]: unknown | undefined - } - [k: string]: unknown | undefined -} -// ----- @stylistic/jsx-equals-spacing ----- -type StylisticJsxEqualsSpacing = []|[("always" | "never")] -// ----- @stylistic/jsx-first-prop-new-line ----- -type StylisticJsxFirstPropNewLine = []|[("always" | "never" | "multiline" | "multiline-multiprop" | "multiprop")] -// ----- @stylistic/jsx-function-call-newline ----- -type StylisticJsxFunctionCallNewline = []|[("always" | "multiline")] -// ----- @stylistic/jsx-indent ----- -type StylisticJsxIndent = []|[("tab" | number)]|[("tab" | number), { - checkAttributes?: boolean - indentLogicalExpressions?: boolean -}] -// ----- @stylistic/jsx-indent-props ----- -type StylisticJsxIndentProps = []|[(("tab" | "first") | number | { - indentMode?: (("tab" | "first") | number) - ignoreTernaryOperator?: boolean - [k: string]: unknown | undefined -})] -// ----- @stylistic/jsx-max-props-per-line ----- -type StylisticJsxMaxPropsPerLine = []|[({ - maximum?: { - single?: number - multi?: number - [k: string]: unknown | undefined - } -} | { - maximum?: number - when?: ("always" | "multiline") -})] -// ----- @stylistic/jsx-newline ----- -type StylisticJsxNewline = []|[{ - prevent?: boolean - allowMultilines?: boolean -}] -// ----- @stylistic/jsx-one-expression-per-line ----- -type StylisticJsxOneExpressionPerLine = []|[{ - allow?: ("none" | "literal" | "single-child" | "single-line" | "non-jsx") -}] -// ----- @stylistic/jsx-pascal-case ----- -type StylisticJsxPascalCase = []|[{ - allowAllCaps?: boolean - allowLeadingUnderscore?: boolean - allowNamespace?: boolean - ignore?: string[] -}] -// ----- @stylistic/jsx-quotes ----- -type StylisticJsxQuotes = []|[("prefer-single" | "prefer-double")] -// ----- @stylistic/jsx-self-closing-comp ----- -type StylisticJsxSelfClosingComp = []|[{ - component?: boolean - html?: boolean -}] -// ----- @stylistic/jsx-sort-props ----- -type StylisticJsxSortProps = []|[{ - callbacksLast?: boolean - shorthandFirst?: boolean - shorthandLast?: boolean - multiline?: ("ignore" | "first" | "last") - ignoreCase?: boolean - noSortAlphabetically?: boolean - reservedFirst?: (unknown[] | boolean) - locale?: string -}] -// ----- @stylistic/jsx-tag-spacing ----- -type StylisticJsxTagSpacing = []|[{ - closingSlash?: ("always" | "never" | "allow") - beforeSelfClosing?: ("always" | "proportional-always" | "never" | "allow") - afterOpening?: ("always" | "allow-multiline" | "never" | "allow") - beforeClosing?: ("always" | "proportional-always" | "never" | "allow") -}] -// ----- @stylistic/jsx-wrap-multilines ----- -type StylisticJsxWrapMultilines = []|[{ - declaration?: ((true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line")) - assignment?: ((true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line")) - return?: ((true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line")) - arrow?: ((true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line")) - condition?: ((true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line")) - logical?: ((true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line")) - prop?: ((true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line")) - propertyValue?: ((true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line")) -}] -// ----- @stylistic/key-spacing ----- -type StylisticKeySpacing = []|[({ - align?: (("colon" | "value") | { - mode?: ("strict" | "minimum") - on?: ("colon" | "value") - beforeColon?: boolean - afterColon?: boolean - }) - mode?: ("strict" | "minimum") - beforeColon?: boolean - afterColon?: boolean -} | { - singleLine?: { - mode?: ("strict" | "minimum") - beforeColon?: boolean - afterColon?: boolean - } - multiLine?: { - align?: (("colon" | "value") | { - mode?: ("strict" | "minimum") - on?: ("colon" | "value") - beforeColon?: boolean - afterColon?: boolean - }) - mode?: ("strict" | "minimum") - beforeColon?: boolean - afterColon?: boolean - } -} | { - singleLine?: { - mode?: ("strict" | "minimum") - beforeColon?: boolean - afterColon?: boolean - } - multiLine?: { - mode?: ("strict" | "minimum") - beforeColon?: boolean - afterColon?: boolean - } - align?: { - mode?: ("strict" | "minimum") - on?: ("colon" | "value") - beforeColon?: boolean - afterColon?: boolean - } -})] -// ----- @stylistic/keyword-spacing ----- -type StylisticKeywordSpacing = []|[{ - before?: boolean - after?: boolean - overrides?: { - abstract?: { - before?: boolean - after?: boolean - } - as?: { - before?: boolean - after?: boolean - } - async?: { - before?: boolean - after?: boolean - } - await?: { - before?: boolean - after?: boolean - } - boolean?: { - before?: boolean - after?: boolean - } - break?: { - before?: boolean - after?: boolean - } - byte?: { - before?: boolean - after?: boolean - } - case?: { - before?: boolean - after?: boolean - } - catch?: { - before?: boolean - after?: boolean - } - char?: { - before?: boolean - after?: boolean - } - class?: { - before?: boolean - after?: boolean - } - const?: { - before?: boolean - after?: boolean - } - continue?: { - before?: boolean - after?: boolean - } - debugger?: { - before?: boolean - after?: boolean - } - default?: { - before?: boolean - after?: boolean - } - delete?: { - before?: boolean - after?: boolean - } - do?: { - before?: boolean - after?: boolean - } - double?: { - before?: boolean - after?: boolean - } - else?: { - before?: boolean - after?: boolean - } - enum?: { - before?: boolean - after?: boolean - } - export?: { - before?: boolean - after?: boolean - } - extends?: { - before?: boolean - after?: boolean - } - false?: { - before?: boolean - after?: boolean - } - final?: { - before?: boolean - after?: boolean - } - finally?: { - before?: boolean - after?: boolean - } - float?: { - before?: boolean - after?: boolean - } - for?: { - before?: boolean - after?: boolean - } - from?: { - before?: boolean - after?: boolean - } - function?: { - before?: boolean - after?: boolean - } - get?: { - before?: boolean - after?: boolean - } - goto?: { - before?: boolean - after?: boolean - } - if?: { - before?: boolean - after?: boolean - } - implements?: { - before?: boolean - after?: boolean - } - import?: { - before?: boolean - after?: boolean - } - in?: { - before?: boolean - after?: boolean - } - instanceof?: { - before?: boolean - after?: boolean - } - int?: { - before?: boolean - after?: boolean - } - interface?: { - before?: boolean - after?: boolean - } - let?: { - before?: boolean - after?: boolean - } - long?: { - before?: boolean - after?: boolean - } - native?: { - before?: boolean - after?: boolean - } - new?: { - before?: boolean - after?: boolean - } - null?: { - before?: boolean - after?: boolean - } - of?: { - before?: boolean - after?: boolean - } - package?: { - before?: boolean - after?: boolean - } - private?: { - before?: boolean - after?: boolean - } - protected?: { - before?: boolean - after?: boolean - } - public?: { - before?: boolean - after?: boolean - } - return?: { - before?: boolean - after?: boolean - } - satisfies?: { - before?: boolean - after?: boolean - } - set?: { - before?: boolean - after?: boolean - } - short?: { - before?: boolean - after?: boolean - } - static?: { - before?: boolean - after?: boolean - } - super?: { - before?: boolean - after?: boolean - } - switch?: { - before?: boolean - after?: boolean - } - synchronized?: { - before?: boolean - after?: boolean - } - this?: { - before?: boolean - after?: boolean - } - throw?: { - before?: boolean - after?: boolean - } - throws?: { - before?: boolean - after?: boolean - } - transient?: { - before?: boolean - after?: boolean - } - true?: { - before?: boolean - after?: boolean - } - try?: { - before?: boolean - after?: boolean - } - typeof?: { - before?: boolean - after?: boolean - } - var?: { - before?: boolean - after?: boolean - } - void?: { - before?: boolean - after?: boolean - } - volatile?: { - before?: boolean - after?: boolean - } - while?: { - before?: boolean - after?: boolean - } - with?: { - before?: boolean - after?: boolean - } - yield?: { - before?: boolean - after?: boolean - } - type?: { - before?: boolean - after?: boolean - } - } -}] -// ----- @stylistic/line-comment-position ----- -type StylisticLineCommentPosition = []|[(("above" | "beside") | { - position?: ("above" | "beside") - ignorePattern?: string - applyDefaultPatterns?: boolean - applyDefaultIgnorePatterns?: boolean -})] -// ----- @stylistic/linebreak-style ----- -type StylisticLinebreakStyle = []|[("unix" | "windows")] -// ----- @stylistic/lines-around-comment ----- -type StylisticLinesAroundComment = []|[{ - beforeBlockComment?: boolean - afterBlockComment?: boolean - beforeLineComment?: boolean - afterLineComment?: boolean - allowBlockStart?: boolean - allowBlockEnd?: boolean - allowClassStart?: boolean - allowClassEnd?: boolean - allowObjectStart?: boolean - allowObjectEnd?: boolean - allowArrayStart?: boolean - allowArrayEnd?: boolean - allowInterfaceStart?: boolean - allowInterfaceEnd?: boolean - allowTypeStart?: boolean - allowTypeEnd?: boolean - allowEnumStart?: boolean - allowEnumEnd?: boolean - allowModuleStart?: boolean - allowModuleEnd?: boolean - ignorePattern?: string - applyDefaultIgnorePatterns?: boolean - afterHashbangComment?: boolean -}] -// ----- @stylistic/lines-between-class-members ----- -type StylisticLinesBetweenClassMembers = []|[({ - - enforce: [{ - blankLine: ("always" | "never") - prev: ("method" | "field" | "*") - next: ("method" | "field" | "*") - }, ...({ - blankLine: ("always" | "never") - prev: ("method" | "field" | "*") - next: ("method" | "field" | "*") - })[]] -} | ("always" | "never"))]|[({ - - enforce: [{ - blankLine: ("always" | "never") - prev: ("method" | "field" | "*") - next: ("method" | "field" | "*") - }, ...({ - blankLine: ("always" | "never") - prev: ("method" | "field" | "*") - next: ("method" | "field" | "*") - })[]] -} | ("always" | "never")), { - exceptAfterSingleLine?: boolean - exceptAfterOverload?: boolean -}] -// ----- @stylistic/max-len ----- -type StylisticMaxLen = []|[({ - code?: number - comments?: number - tabWidth?: number - ignorePattern?: string - ignoreComments?: boolean - ignoreStrings?: boolean - ignoreUrls?: boolean - ignoreTemplateLiterals?: boolean - ignoreRegExpLiterals?: boolean - ignoreTrailingComments?: boolean -} | number)]|[({ - code?: number - comments?: number - tabWidth?: number - ignorePattern?: string - ignoreComments?: boolean - ignoreStrings?: boolean - ignoreUrls?: boolean - ignoreTemplateLiterals?: boolean - ignoreRegExpLiterals?: boolean - ignoreTrailingComments?: boolean -} | number), ({ - code?: number - comments?: number - tabWidth?: number - ignorePattern?: string - ignoreComments?: boolean - ignoreStrings?: boolean - ignoreUrls?: boolean - ignoreTemplateLiterals?: boolean - ignoreRegExpLiterals?: boolean - ignoreTrailingComments?: boolean -} | number)]|[({ - code?: number - comments?: number - tabWidth?: number - ignorePattern?: string - ignoreComments?: boolean - ignoreStrings?: boolean - ignoreUrls?: boolean - ignoreTemplateLiterals?: boolean - ignoreRegExpLiterals?: boolean - ignoreTrailingComments?: boolean -} | number), ({ - code?: number - comments?: number - tabWidth?: number - ignorePattern?: string - ignoreComments?: boolean - ignoreStrings?: boolean - ignoreUrls?: boolean - ignoreTemplateLiterals?: boolean - ignoreRegExpLiterals?: boolean - ignoreTrailingComments?: boolean -} | number), { - code?: number - comments?: number - tabWidth?: number - ignorePattern?: string - ignoreComments?: boolean - ignoreStrings?: boolean - ignoreUrls?: boolean - ignoreTemplateLiterals?: boolean - ignoreRegExpLiterals?: boolean - ignoreTrailingComments?: boolean -}] -// ----- @stylistic/max-statements-per-line ----- -type StylisticMaxStatementsPerLine = []|[{ - max?: number - ignoredNodes?: ("BreakStatement" | "ClassDeclaration" | "ContinueStatement" | "DebuggerStatement" | "DoWhileStatement" | "ExpressionStatement" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "IfStatement" | "ImportDeclaration" | "LabeledStatement" | "ReturnStatement" | "SwitchStatement" | "ThrowStatement" | "TryStatement" | "VariableDeclaration" | "WhileStatement" | "WithStatement" | "ExportNamedDeclaration" | "ExportDefaultDeclaration" | "ExportAllDeclaration")[] -}] -// ----- @stylistic/member-delimiter-style ----- -type StylisticMemberDelimiterStyle = []|[{ - multiline?: { - delimiter?: ("none" | "semi" | "comma") - requireLast?: boolean - } - singleline?: { - delimiter?: ("semi" | "comma") - requireLast?: boolean - } - overrides?: { - interface?: _StylisticMemberDelimiterStyle_DelimiterConfig - typeLiteral?: _StylisticMemberDelimiterStyle_DelimiterConfig - } - multilineDetection?: ("brackets" | "last-member") -}] -interface _StylisticMemberDelimiterStyle_DelimiterConfig { - multiline?: { - delimiter?: ("none" | "semi" | "comma") - requireLast?: boolean - } - singleline?: { - delimiter?: ("semi" | "comma") - requireLast?: boolean - } -} -// ----- @stylistic/multiline-comment-style ----- -type StylisticMultilineCommentStyle = ([]|[("starred-block" | "bare-block")] | []|["separate-lines"]|["separate-lines", { - checkJSDoc?: boolean -}]) -// ----- @stylistic/multiline-ternary ----- -type StylisticMultilineTernary = []|[("always" | "always-multiline" | "never")]|[("always" | "always-multiline" | "never"), { - ignoreJSX?: boolean - [k: string]: unknown | undefined -}] -// ----- @stylistic/new-parens ----- -type StylisticNewParens = []|[("always" | "never")] -// ----- @stylistic/newline-per-chained-call ----- -type StylisticNewlinePerChainedCall = []|[{ - ignoreChainWithDepth?: number -}] -// ----- @stylistic/no-confusing-arrow ----- -type StylisticNoConfusingArrow = []|[{ - allowParens?: boolean - onlyOneSimpleParam?: boolean -}] -// ----- @stylistic/no-extra-parens ----- -type StylisticNoExtraParens = ([]|["functions"] | []|["all"]|["all", { - conditionalAssign?: boolean - ternaryOperandBinaryExpressions?: boolean - nestedBinaryExpressions?: boolean - returnAssign?: boolean - ignoreJSX?: ("none" | "all" | "single-line" | "multi-line") - enforceForArrowConditionals?: boolean - enforceForSequenceExpressions?: boolean - enforceForNewInMemberExpressions?: boolean - enforceForFunctionPrototypeMethods?: boolean - allowParensAfterCommentPattern?: string -}]) -// ----- @stylistic/no-mixed-operators ----- -type StylisticNoMixedOperators = []|[{ - groups?: [("+" | "-" | "*" | "/" | "%" | "**" | "&" | "|" | "^" | "~" | "<<" | ">>" | ">>>" | "==" | "!=" | "===" | "!==" | ">" | ">=" | "<" | "<=" | "&&" | "||" | "in" | "instanceof" | "?:" | "??"), ("+" | "-" | "*" | "/" | "%" | "**" | "&" | "|" | "^" | "~" | "<<" | ">>" | ">>>" | "==" | "!=" | "===" | "!==" | ">" | ">=" | "<" | "<=" | "&&" | "||" | "in" | "instanceof" | "?:" | "??"), ...(("+" | "-" | "*" | "/" | "%" | "**" | "&" | "|" | "^" | "~" | "<<" | ">>" | ">>>" | "==" | "!=" | "===" | "!==" | ">" | ">=" | "<" | "<=" | "&&" | "||" | "in" | "instanceof" | "?:" | "??"))[]][] - allowSamePrecedence?: boolean -}] -// ----- @stylistic/no-mixed-spaces-and-tabs ----- -type StylisticNoMixedSpacesAndTabs = []|[("smart-tabs" | boolean)] -// ----- @stylistic/no-multi-spaces ----- -type StylisticNoMultiSpaces = []|[{ - exceptions?: { - [k: string]: boolean - } - ignoreEOLComments?: boolean - includeTabs?: boolean -}] -// ----- @stylistic/no-multiple-empty-lines ----- -type StylisticNoMultipleEmptyLines = []|[{ - max: number - maxEOF?: number - maxBOF?: number -}] -// ----- @stylistic/no-tabs ----- -type StylisticNoTabs = []|[{ - allowIndentationTabs?: boolean -}] -// ----- @stylistic/no-trailing-spaces ----- -type StylisticNoTrailingSpaces = []|[{ - skipBlankLines?: boolean - ignoreComments?: boolean -}] -// ----- @stylistic/nonblock-statement-body-position ----- -type StylisticNonblockStatementBodyPosition = []|[("beside" | "below" | "any")]|[("beside" | "below" | "any"), { - overrides?: { - if?: ("beside" | "below" | "any") - else?: ("beside" | "below" | "any") - while?: ("beside" | "below" | "any") - do?: ("beside" | "below" | "any") - for?: ("beside" | "below" | "any") - } -}] -// ----- @stylistic/object-curly-newline ----- -type StylisticObjectCurlyNewline = []|[((("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean -}) | { - ObjectExpression?: (("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean - }) - ObjectPattern?: (("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean - }) - ImportDeclaration?: (("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean - }) - ExportDeclaration?: (("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean - }) - TSTypeLiteral?: (("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean - }) - TSInterfaceBody?: (("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean - }) -})] -// ----- @stylistic/object-curly-spacing ----- -type StylisticObjectCurlySpacing = []|[("always" | "never")]|[("always" | "never"), { - arraysInObjects?: boolean - objectsInObjects?: boolean -}] -// ----- @stylistic/object-property-newline ----- -type StylisticObjectPropertyNewline = []|[{ - allowAllPropertiesOnSameLine?: boolean - allowMultiplePropertiesPerLine?: boolean -}] -// ----- @stylistic/one-var-declaration-per-line ----- -type StylisticOneVarDeclarationPerLine = []|[("always" | "initializations")] -// ----- @stylistic/operator-linebreak ----- -type StylisticOperatorLinebreak = []|[(("after" | "before" | "none") | null)]|[(("after" | "before" | "none") | null), { - overrides?: { - [k: string]: ("after" | "before" | "none" | "ignore") | undefined - } -}] -// ----- @stylistic/padded-blocks ----- -type StylisticPaddedBlocks = []|[(("always" | "never") | { - blocks?: ("always" | "never") - switches?: ("always" | "never") - classes?: ("always" | "never") -})]|[(("always" | "never") | { - blocks?: ("always" | "never") - switches?: ("always" | "never") - classes?: ("always" | "never") -}), { - allowSingleLineBlocks?: boolean -}] -// ----- @stylistic/padding-line-between-statements ----- -type _StylisticPaddingLineBetweenStatementsPaddingType = ("any" | "never" | "always") -type _StylisticPaddingLineBetweenStatementsStatementType = (("*" | "block-like" | "exports" | "require" | "directive" | "expression" | "iife" | "multiline-block-like" | "multiline-expression" | "multiline-const" | "multiline-export" | "multiline-let" | "multiline-var" | "singleline-const" | "singleline-export" | "singleline-let" | "singleline-var" | "block" | "empty" | "function" | "ts-method" | "break" | "case" | "class" | "const" | "continue" | "debugger" | "default" | "do" | "export" | "for" | "if" | "import" | "let" | "return" | "switch" | "throw" | "try" | "var" | "while" | "with" | "cjs-export" | "cjs-import" | "enum" | "interface" | "type" | "function-overload") | [("*" | "block-like" | "exports" | "require" | "directive" | "expression" | "iife" | "multiline-block-like" | "multiline-expression" | "multiline-const" | "multiline-export" | "multiline-let" | "multiline-var" | "singleline-const" | "singleline-export" | "singleline-let" | "singleline-var" | "block" | "empty" | "function" | "ts-method" | "break" | "case" | "class" | "const" | "continue" | "debugger" | "default" | "do" | "export" | "for" | "if" | "import" | "let" | "return" | "switch" | "throw" | "try" | "var" | "while" | "with" | "cjs-export" | "cjs-import" | "enum" | "interface" | "type" | "function-overload"), ...(("*" | "block-like" | "exports" | "require" | "directive" | "expression" | "iife" | "multiline-block-like" | "multiline-expression" | "multiline-const" | "multiline-export" | "multiline-let" | "multiline-var" | "singleline-const" | "singleline-export" | "singleline-let" | "singleline-var" | "block" | "empty" | "function" | "ts-method" | "break" | "case" | "class" | "const" | "continue" | "debugger" | "default" | "do" | "export" | "for" | "if" | "import" | "let" | "return" | "switch" | "throw" | "try" | "var" | "while" | "with" | "cjs-export" | "cjs-import" | "enum" | "interface" | "type" | "function-overload"))[]]) -type StylisticPaddingLineBetweenStatements = { - blankLine: _StylisticPaddingLineBetweenStatementsPaddingType - prev: _StylisticPaddingLineBetweenStatementsStatementType - next: _StylisticPaddingLineBetweenStatementsStatementType -}[] -// ----- @stylistic/quote-props ----- -type StylisticQuoteProps = ([]|[("always" | "as-needed" | "consistent" | "consistent-as-needed")] | []|[("always" | "as-needed" | "consistent" | "consistent-as-needed")]|[("always" | "as-needed" | "consistent" | "consistent-as-needed"), { - keywords?: boolean - unnecessary?: boolean - numbers?: boolean -}]) -// ----- @stylistic/quotes ----- -type StylisticQuotes = []|[("single" | "double" | "backtick")]|[("single" | "double" | "backtick"), ("avoid-escape" | { - avoidEscape?: boolean - allowTemplateLiterals?: boolean - ignoreStringLiterals?: boolean -})] -// ----- @stylistic/rest-spread-spacing ----- -type StylisticRestSpreadSpacing = []|[("always" | "never")] -// ----- @stylistic/semi ----- -type StylisticSemi = ([]|["never"]|["never", { - beforeStatementContinuationChars?: ("always" | "any" | "never") -}] | []|["always"]|["always", { - omitLastInOneLineBlock?: boolean - omitLastInOneLineClassBody?: boolean -}]) -// ----- @stylistic/semi-spacing ----- -type StylisticSemiSpacing = []|[{ - before?: boolean - after?: boolean -}] -// ----- @stylistic/semi-style ----- -type StylisticSemiStyle = []|[("last" | "first")] -// ----- @stylistic/space-before-blocks ----- -type StylisticSpaceBeforeBlocks = []|[(("always" | "never") | { - keywords?: ("always" | "never" | "off") - functions?: ("always" | "never" | "off") - classes?: ("always" | "never" | "off") -})] -// ----- @stylistic/space-before-function-paren ----- -type StylisticSpaceBeforeFunctionParen = []|[(("always" | "never") | { - anonymous?: ("always" | "never" | "ignore") - named?: ("always" | "never" | "ignore") - asyncArrow?: ("always" | "never" | "ignore") -})] -// ----- @stylistic/space-in-parens ----- -type StylisticSpaceInParens = []|[("always" | "never")]|[("always" | "never"), { - exceptions?: ("{}" | "[]" | "()" | "empty")[] -}] -// ----- @stylistic/space-infix-ops ----- -type StylisticSpaceInfixOps = []|[{ - int32Hint?: boolean -}] -// ----- @stylistic/space-unary-ops ----- -type StylisticSpaceUnaryOps = []|[{ - words?: boolean - nonwords?: boolean - overrides?: { - [k: string]: boolean | undefined - } -}] -// ----- @stylistic/spaced-comment ----- -type StylisticSpacedComment = []|[("always" | "never")]|[("always" | "never"), { - exceptions?: string[] - markers?: string[] - line?: { - exceptions?: string[] - markers?: string[] - } - block?: { - exceptions?: string[] - markers?: string[] - balanced?: boolean - } -}] -// ----- @stylistic/switch-colon-spacing ----- -type StylisticSwitchColonSpacing = []|[{ - before?: boolean - after?: boolean -}] -// ----- @stylistic/template-curly-spacing ----- -type StylisticTemplateCurlySpacing = []|[("always" | "never")] -// ----- @stylistic/template-tag-spacing ----- -type StylisticTemplateTagSpacing = []|[("always" | "never")] -// ----- @stylistic/type-annotation-spacing ----- -type StylisticTypeAnnotationSpacing = []|[{ - before?: boolean - after?: boolean - overrides?: { - colon?: _StylisticTypeAnnotationSpacing_SpacingConfig - arrow?: _StylisticTypeAnnotationSpacing_SpacingConfig - variable?: _StylisticTypeAnnotationSpacing_SpacingConfig - parameter?: _StylisticTypeAnnotationSpacing_SpacingConfig - property?: _StylisticTypeAnnotationSpacing_SpacingConfig - returnType?: _StylisticTypeAnnotationSpacing_SpacingConfig - } -}] -interface _StylisticTypeAnnotationSpacing_SpacingConfig { - before?: boolean - after?: boolean -} -// ----- @stylistic/wrap-iife ----- -type StylisticWrapIife = []|[("outside" | "inside" | "any")]|[("outside" | "inside" | "any"), { - functionPrototypeMethods?: boolean -}] -// ----- @stylistic/yield-star-spacing ----- -type StylisticYieldStarSpacing = []|[(("before" | "after" | "both" | "neither") | { - before?: boolean - after?: boolean -})] -// ----- @typescript-eslint/array-type ----- -type TypescriptEslintArrayType = []|[{ - - default?: ("array" | "generic" | "array-simple") - - readonly?: ("array" | "generic" | "array-simple") -}] -// ----- @typescript-eslint/ban-ts-comment ----- -type TypescriptEslintBanTsComment = []|[{ - - minimumDescriptionLength?: number - "ts-check"?: (boolean | "allow-with-description" | { - descriptionFormat?: string - }) - "ts-expect-error"?: (boolean | "allow-with-description" | { - descriptionFormat?: string - }) - "ts-ignore"?: (boolean | "allow-with-description" | { - descriptionFormat?: string - }) - "ts-nocheck"?: (boolean | "allow-with-description" | { - descriptionFormat?: string - }) -}] -// ----- @typescript-eslint/class-literal-property-style ----- -type TypescriptEslintClassLiteralPropertyStyle = []|[("fields" | "getters")] -// ----- @typescript-eslint/class-methods-use-this ----- -type TypescriptEslintClassMethodsUseThis = []|[{ - - enforceForClassFields?: boolean - - exceptMethods?: string[] - - ignoreClassesThatImplementAnInterface?: (boolean | "public-fields") - - ignoreOverrideMethods?: boolean -}] -// ----- @typescript-eslint/consistent-generic-constructors ----- -type TypescriptEslintConsistentGenericConstructors = []|[("type-annotation" | "constructor")] -// ----- @typescript-eslint/consistent-indexed-object-style ----- -type TypescriptEslintConsistentIndexedObjectStyle = []|[("record" | "index-signature")] -// ----- @typescript-eslint/consistent-return ----- -type TypescriptEslintConsistentReturn = []|[{ - treatUndefinedAsUnspecified?: boolean -}] -// ----- @typescript-eslint/consistent-type-assertions ----- -type TypescriptEslintConsistentTypeAssertions = []|[({ - - assertionStyle: "never" -} | { - - assertionStyle?: ("as" | "angle-bracket") - - objectLiteralTypeAssertions?: ("allow" | "allow-as-parameter" | "never") -})] -// ----- @typescript-eslint/consistent-type-definitions ----- -type TypescriptEslintConsistentTypeDefinitions = []|[("interface" | "type")] -// ----- @typescript-eslint/consistent-type-exports ----- -type TypescriptEslintConsistentTypeExports = []|[{ - - fixMixedExportsWithInlineTypeSpecifier?: boolean -}] -// ----- @typescript-eslint/consistent-type-imports ----- -type TypescriptEslintConsistentTypeImports = []|[{ - - disallowTypeAnnotations?: boolean - - fixStyle?: ("separate-type-imports" | "inline-type-imports") - - prefer?: ("type-imports" | "no-type-imports") -}] -// ----- @typescript-eslint/dot-notation ----- -type TypescriptEslintDotNotation = []|[{ - - allowIndexSignaturePropertyAccess?: boolean - - allowKeywords?: boolean - - allowPattern?: string - - allowPrivateClassPropertyAccess?: boolean - - allowProtectedClassPropertyAccess?: boolean -}] -// ----- @typescript-eslint/explicit-function-return-type ----- -type TypescriptEslintExplicitFunctionReturnType = []|[{ - - allowConciseArrowFunctionExpressionsStartingWithVoid?: boolean - - allowDirectConstAssertionInArrowFunctions?: boolean - - allowedNames?: string[] - - allowExpressions?: boolean - - allowFunctionsWithoutTypeParameters?: boolean - - allowHigherOrderFunctions?: boolean - - allowIIFEs?: boolean - - allowTypedFunctionExpressions?: boolean -}] -// ----- @typescript-eslint/explicit-member-accessibility ----- -type TypescriptEslintExplicitMemberAccessibility = []|[{ - - accessibility?: ("explicit" | "no-public" | "off") - - ignoredMethodNames?: string[] - - overrides?: { - accessors?: ("explicit" | "no-public" | "off") - constructors?: ("explicit" | "no-public" | "off") - methods?: ("explicit" | "no-public" | "off") - parameterProperties?: ("explicit" | "no-public" | "off") - properties?: ("explicit" | "no-public" | "off") - } -}] -// ----- @typescript-eslint/explicit-module-boundary-types ----- -type TypescriptEslintExplicitModuleBoundaryTypes = []|[{ - - allowArgumentsExplicitlyTypedAsAny?: boolean - - allowDirectConstAssertionInArrowFunctions?: boolean - - allowedNames?: string[] - - allowHigherOrderFunctions?: boolean - - allowTypedFunctionExpressions?: boolean -}] -// ----- @typescript-eslint/init-declarations ----- -type TypescriptEslintInitDeclarations = ([]|["always"] | []|["never"]|["never", { - ignoreForLoopInit?: boolean -}]) -// ----- @typescript-eslint/max-params ----- -type TypescriptEslintMaxParams = []|[{ - - countVoidThis?: boolean - - max?: number - - maximum?: number -}] -// ----- @typescript-eslint/member-ordering ----- -type TypescriptEslintMemberOrdering = []|[{ - classes?: ("never" | (("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization") | ("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization")[])[] | { - memberTypes?: ((("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization") | ("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization")[])[] | "never") - optionalityOrder?: ("optional-first" | "required-first") - order?: ("alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive") - }) - classExpressions?: ("never" | (("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization") | ("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization")[])[] | { - memberTypes?: ((("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization") | ("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization")[])[] | "never") - optionalityOrder?: ("optional-first" | "required-first") - order?: ("alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive") - }) - default?: ("never" | (("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization") | ("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization")[])[] | { - memberTypes?: ((("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization") | ("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization")[])[] | "never") - optionalityOrder?: ("optional-first" | "required-first") - order?: ("alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive") - }) - interfaces?: ("never" | (("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor") | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor")[])[] | { - memberTypes?: ((("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor") | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor")[])[] | "never") - optionalityOrder?: ("optional-first" | "required-first") - order?: ("alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive") - }) - typeLiterals?: ("never" | (("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor") | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor")[])[] | { - memberTypes?: ((("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor") | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor")[])[] | "never") - optionalityOrder?: ("optional-first" | "required-first") - order?: ("alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive") - }) -}] -// ----- @typescript-eslint/method-signature-style ----- -type TypescriptEslintMethodSignatureStyle = []|[("property" | "method")] -// ----- @typescript-eslint/naming-convention ----- -type _TypescriptEslintNamingConventionFormatOptionsConfig = (_TypescriptEslintNamingConventionPredefinedFormats[] | null) -type _TypescriptEslintNamingConventionPredefinedFormats = ("camelCase" | "strictCamelCase" | "PascalCase" | "StrictPascalCase" | "snake_case" | "UPPER_CASE") -type _TypescriptEslintNamingConventionUnderscoreOptions = ("forbid" | "allow" | "require" | "requireDouble" | "allowDouble" | "allowSingleOrDouble") -type _TypescriptEslintNamingConvention_PrefixSuffixConfig = string[] -type _TypescriptEslintNamingConventionTypeModifiers = ("boolean" | "string" | "number" | "function" | "array") -type TypescriptEslintNamingConvention = ({ - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - modifiers?: ("const" | "readonly" | "static" | "public" | "protected" | "private" | "#private" | "abstract" | "destructured" | "global" | "exported" | "unused" | "requiresQuotes" | "override" | "async" | "default" | "namespace")[] - selector: ("default" | "variableLike" | "memberLike" | "typeLike" | "method" | "property" | "accessor" | "variable" | "function" | "parameter" | "parameterProperty" | "classicAccessor" | "enumMember" | "classMethod" | "objectLiteralMethod" | "typeMethod" | "classProperty" | "objectLiteralProperty" | "typeProperty" | "autoAccessor" | "class" | "interface" | "typeAlias" | "enum" | "typeParameter" | "import")[] - types?: _TypescriptEslintNamingConventionTypeModifiers[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "default" - modifiers?: ("const" | "readonly" | "static" | "public" | "protected" | "private" | "#private" | "abstract" | "destructured" | "global" | "exported" | "unused" | "requiresQuotes" | "override" | "async" | "default" | "namespace")[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "variableLike" - modifiers?: ("unused" | "async")[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "variable" - modifiers?: ("const" | "destructured" | "exported" | "global" | "unused" | "async")[] - types?: _TypescriptEslintNamingConventionTypeModifiers[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "function" - modifiers?: ("exported" | "global" | "unused" | "async")[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "parameter" - modifiers?: ("destructured" | "unused")[] - types?: _TypescriptEslintNamingConventionTypeModifiers[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "memberLike" - modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "readonly" | "requiresQuotes" | "static" | "override" | "async")[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "classProperty" - modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "readonly" | "requiresQuotes" | "static" | "override")[] - types?: _TypescriptEslintNamingConventionTypeModifiers[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "objectLiteralProperty" - modifiers?: ("public" | "requiresQuotes")[] - types?: _TypescriptEslintNamingConventionTypeModifiers[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "typeProperty" - modifiers?: ("public" | "readonly" | "requiresQuotes")[] - types?: _TypescriptEslintNamingConventionTypeModifiers[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "parameterProperty" - modifiers?: ("private" | "protected" | "public" | "readonly")[] - types?: _TypescriptEslintNamingConventionTypeModifiers[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "property" - modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "readonly" | "requiresQuotes" | "static" | "override" | "async")[] - types?: _TypescriptEslintNamingConventionTypeModifiers[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "classMethod" - modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "requiresQuotes" | "static" | "override" | "async")[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "objectLiteralMethod" - modifiers?: ("public" | "requiresQuotes" | "async")[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "typeMethod" - modifiers?: ("public" | "requiresQuotes")[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "method" - modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "requiresQuotes" | "static" | "override" | "async")[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "classicAccessor" - modifiers?: ("abstract" | "private" | "protected" | "public" | "requiresQuotes" | "static" | "override")[] - types?: _TypescriptEslintNamingConventionTypeModifiers[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "autoAccessor" - modifiers?: ("abstract" | "private" | "protected" | "public" | "requiresQuotes" | "static" | "override")[] - types?: _TypescriptEslintNamingConventionTypeModifiers[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "accessor" - modifiers?: ("abstract" | "private" | "protected" | "public" | "requiresQuotes" | "static" | "override")[] - types?: _TypescriptEslintNamingConventionTypeModifiers[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "enumMember" - modifiers?: ("requiresQuotes")[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "typeLike" - modifiers?: ("abstract" | "exported" | "unused")[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "class" - modifiers?: ("abstract" | "exported" | "unused")[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "interface" - modifiers?: ("exported" | "unused")[] + 'zod/require-strict'?: Linter.RuleEntry +} + +/* ======= Declarations ======= */ +// ----- @stylistic/array-bracket-newline ----- +type StylisticArrayBracketNewline = []|[(("always" | "never" | "consistent") | { + multiline?: boolean + minItems?: (number | null) +})] +// ----- @stylistic/array-bracket-spacing ----- +type StylisticArrayBracketSpacing = []|[("always" | "never")]|[("always" | "never"), { + singleValue?: boolean + objectsInArrays?: boolean + arraysInArrays?: boolean +}] +// ----- @stylistic/array-element-newline ----- +type StylisticArrayElementNewline = []|[(_StylisticArrayElementNewlineBasicConfig | { + ArrayExpression?: _StylisticArrayElementNewlineBasicConfig + ArrayPattern?: _StylisticArrayElementNewlineBasicConfig +})] +type _StylisticArrayElementNewlineBasicConfig = (("always" | "never" | "consistent") | { + consistent?: boolean + multiline?: boolean + minItems?: (number | null) +}) +// ----- @stylistic/arrow-parens ----- +type StylisticArrowParens = []|[("always" | "as-needed")]|[("always" | "as-needed"), { + requireForBlockBody?: boolean +}] +// ----- @stylistic/arrow-spacing ----- +type StylisticArrowSpacing = []|[{ + before?: boolean + after?: boolean +}] +// ----- @stylistic/block-spacing ----- +type StylisticBlockSpacing = []|[("always" | "never")] +// ----- @stylistic/brace-style ----- +type StylisticBraceStyle = []|[("1tbs" | "stroustrup" | "allman")]|[("1tbs" | "stroustrup" | "allman"), { + allowSingleLine?: boolean +}] +// ----- @stylistic/comma-dangle ----- +type StylisticCommaDangle = []|[(_StylisticCommaDangleValue | { + arrays?: _StylisticCommaDangleValueWithIgnore + objects?: _StylisticCommaDangleValueWithIgnore + imports?: _StylisticCommaDangleValueWithIgnore + exports?: _StylisticCommaDangleValueWithIgnore + functions?: _StylisticCommaDangleValueWithIgnore + importAttributes?: _StylisticCommaDangleValueWithIgnore + dynamicImports?: _StylisticCommaDangleValueWithIgnore + enums?: _StylisticCommaDangleValueWithIgnore + generics?: _StylisticCommaDangleValueWithIgnore + tuples?: _StylisticCommaDangleValueWithIgnore +})] +type _StylisticCommaDangleValue = ("always-multiline" | "always" | "never" | "only-multiline") +type _StylisticCommaDangleValueWithIgnore = ("always-multiline" | "always" | "never" | "only-multiline" | "ignore") +// ----- @stylistic/comma-spacing ----- +type StylisticCommaSpacing = []|[{ + before?: boolean + after?: boolean +}] +// ----- @stylistic/comma-style ----- +type StylisticCommaStyle = []|[("first" | "last")]|[("first" | "last"), { + exceptions?: { + [k: string]: boolean | undefined + } +}] +// ----- @stylistic/computed-property-spacing ----- +type StylisticComputedPropertySpacing = []|[("always" | "never")]|[("always" | "never"), { + enforceForClassMembers?: boolean +}] +// ----- @stylistic/curly-newline ----- +type StylisticCurlyNewline = []|[(("always" | "never") | { + IfStatementConsequent?: (("always" | "never") | { + multiline?: boolean + minElements?: number + consistent?: boolean + }) + IfStatementAlternative?: (("always" | "never") | { + multiline?: boolean + minElements?: number + consistent?: boolean + }) + DoWhileStatement?: (("always" | "never") | { + multiline?: boolean + minElements?: number + consistent?: boolean + }) + ForInStatement?: (("always" | "never") | { + multiline?: boolean + minElements?: number + consistent?: boolean + }) + ForOfStatement?: (("always" | "never") | { + multiline?: boolean + minElements?: number + consistent?: boolean + }) + ForStatement?: (("always" | "never") | { + multiline?: boolean + minElements?: number + consistent?: boolean + }) + WhileStatement?: (("always" | "never") | { + multiline?: boolean + minElements?: number + consistent?: boolean + }) + SwitchStatement?: (("always" | "never") | { + multiline?: boolean + minElements?: number + consistent?: boolean + }) + SwitchCase?: (("always" | "never") | { + multiline?: boolean + minElements?: number + consistent?: boolean + }) + TryStatementBlock?: (("always" | "never") | { + multiline?: boolean + minElements?: number + consistent?: boolean + }) + TryStatementHandler?: (("always" | "never") | { + multiline?: boolean + minElements?: number + consistent?: boolean + }) + TryStatementFinalizer?: (("always" | "never") | { + multiline?: boolean + minElements?: number + consistent?: boolean + }) + BlockStatement?: (("always" | "never") | { + multiline?: boolean + minElements?: number + consistent?: boolean + }) + ArrowFunctionExpression?: (("always" | "never") | { + multiline?: boolean + minElements?: number + consistent?: boolean + }) + FunctionDeclaration?: (("always" | "never") | { + multiline?: boolean + minElements?: number + consistent?: boolean + }) + FunctionExpression?: (("always" | "never") | { + multiline?: boolean + minElements?: number + consistent?: boolean + }) + Property?: (("always" | "never") | { + multiline?: boolean + minElements?: number + consistent?: boolean + }) + ClassBody?: (("always" | "never") | { + multiline?: boolean + minElements?: number + consistent?: boolean + }) + StaticBlock?: (("always" | "never") | { + multiline?: boolean + minElements?: number + consistent?: boolean + }) + WithStatement?: (("always" | "never") | { + multiline?: boolean + minElements?: number + consistent?: boolean + }) + TSEnumBody?: (("always" | "never") | { + multiline?: boolean + minElements?: number + consistent?: boolean + }) + TSInterfaceBody?: (("always" | "never") | { + multiline?: boolean + minElements?: number + consistent?: boolean + }) + TSModuleBlock?: (("always" | "never") | { + multiline?: boolean + minElements?: number + consistent?: boolean + }) + multiline?: boolean + minElements?: number + consistent?: boolean +})] +// ----- @stylistic/dot-location ----- +type StylisticDotLocation = []|[("object" | "property")] +// ----- @stylistic/eol-last ----- +type StylisticEolLast = []|[("always" | "never" | "unix" | "windows")] +// ----- @stylistic/func-call-spacing ----- +type StylisticFuncCallSpacing = ([]|["never"] | []|["always"]|["always", { + allowNewlines?: boolean + optionalChain?: { + before?: boolean + after?: boolean + } +}]) +// ----- @stylistic/function-call-argument-newline ----- +type StylisticFunctionCallArgumentNewline = []|[("always" | "never" | "consistent")] +// ----- @stylistic/function-call-spacing ----- +type StylisticFunctionCallSpacing = ([]|["never"] | []|["always"]|["always", { + allowNewlines?: boolean + optionalChain?: { + before?: boolean + after?: boolean + } +}]) +// ----- @stylistic/function-paren-newline ----- +type StylisticFunctionParenNewline = []|[(("always" | "never" | "consistent" | "multiline" | "multiline-arguments") | { + minItems?: number +})] +// ----- @stylistic/generator-star-spacing ----- +type StylisticGeneratorStarSpacing = []|[(("before" | "after" | "both" | "neither") | { + before?: boolean + after?: boolean + named?: (("before" | "after" | "both" | "neither") | { + before?: boolean + after?: boolean + }) + anonymous?: (("before" | "after" | "both" | "neither") | { + before?: boolean + after?: boolean + }) + method?: (("before" | "after" | "both" | "neither") | { + before?: boolean + after?: boolean + }) +})] +// ----- @stylistic/implicit-arrow-linebreak ----- +type StylisticImplicitArrowLinebreak = []|[("beside" | "below")] +// ----- @stylistic/indent ----- +type StylisticIndent = []|[("tab" | number)]|[("tab" | number), { + SwitchCase?: number + VariableDeclarator?: ((number | ("first" | "off")) | { + var?: (number | ("first" | "off")) + let?: (number | ("first" | "off")) + const?: (number | ("first" | "off")) + }) + outerIIFEBody?: (number | "off") + MemberExpression?: (number | "off") + FunctionDeclaration?: { + parameters?: (number | ("first" | "off")) + body?: number + } + FunctionExpression?: { + parameters?: (number | ("first" | "off")) + body?: number + } + StaticBlock?: { + body?: number + } + CallExpression?: { + arguments?: (number | ("first" | "off")) + } + ArrayExpression?: (number | ("first" | "off")) + ObjectExpression?: (number | ("first" | "off")) + ImportDeclaration?: (number | ("first" | "off")) + flatTernaryExpressions?: boolean + offsetTernaryExpressions?: boolean + offsetTernaryExpressionsOffsetCallExpressions?: boolean + ignoredNodes?: string[] + ignoreComments?: boolean + tabLength?: number +}] +// ----- @stylistic/indent-binary-ops ----- +type StylisticIndentBinaryOps = []|[(number | "tab")] +// ----- @stylistic/jsx-closing-bracket-location ----- +type StylisticJsxClosingBracketLocation = []|[(("after-props" | "props-aligned" | "tag-aligned" | "line-aligned") | { + location?: ("after-props" | "props-aligned" | "tag-aligned" | "line-aligned") } | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "typeAlias" - modifiers?: ("exported" | "unused")[] + nonEmpty?: (("after-props" | "props-aligned" | "tag-aligned" | "line-aligned") | false) + selfClosing?: (("after-props" | "props-aligned" | "tag-aligned" | "line-aligned") | false) +})] +// ----- @stylistic/jsx-closing-tag-location ----- +type StylisticJsxClosingTagLocation = []|[("tag-aligned" | "line-aligned")] +// ----- @stylistic/jsx-curly-brace-presence ----- +type StylisticJsxCurlyBracePresence = []|[({ + props?: ("always" | "never" | "ignore") + children?: ("always" | "never" | "ignore") + propElementValues?: ("always" | "never" | "ignore") +} | ("always" | "never" | "ignore"))] +// ----- @stylistic/jsx-curly-newline ----- +type StylisticJsxCurlyNewline = []|[(("consistent" | "never") | { + singleline?: ("consistent" | "require" | "forbid") + multiline?: ("consistent" | "require" | "forbid") +})] +// ----- @stylistic/jsx-curly-spacing ----- +type StylisticJsxCurlySpacing = []|[((_StylisticJsxCurlySpacing_BasicConfig & { + attributes?: _StylisticJsxCurlySpacingBasicConfigOrBoolean + children?: _StylisticJsxCurlySpacingBasicConfigOrBoolean + [k: string]: unknown | undefined +}) | ("always" | "never"))]|[((_StylisticJsxCurlySpacing_BasicConfig & { + attributes?: _StylisticJsxCurlySpacingBasicConfigOrBoolean + children?: _StylisticJsxCurlySpacingBasicConfigOrBoolean + [k: string]: unknown | undefined +}) | ("always" | "never")), { + allowMultiline?: boolean + spacing?: { + objectLiterals?: ("always" | "never") + [k: string]: unknown | undefined + } +}] +type _StylisticJsxCurlySpacingBasicConfigOrBoolean = (_StylisticJsxCurlySpacing_BasicConfig | boolean) +interface _StylisticJsxCurlySpacing_BasicConfig { + when?: ("always" | "never") + allowMultiline?: boolean + spacing?: { + objectLiterals?: ("always" | "never") + [k: string]: unknown | undefined + } + [k: string]: unknown | undefined +} +// ----- @stylistic/jsx-equals-spacing ----- +type StylisticJsxEqualsSpacing = []|[("always" | "never")] +// ----- @stylistic/jsx-first-prop-new-line ----- +type StylisticJsxFirstPropNewLine = []|[("always" | "never" | "multiline" | "multiline-multiprop" | "multiprop")] +// ----- @stylistic/jsx-function-call-newline ----- +type StylisticJsxFunctionCallNewline = []|[("always" | "multiline")] +// ----- @stylistic/jsx-indent ----- +type StylisticJsxIndent = []|[("tab" | number)]|[("tab" | number), { + checkAttributes?: boolean + indentLogicalExpressions?: boolean +}] +// ----- @stylistic/jsx-indent-props ----- +type StylisticJsxIndentProps = []|[(("tab" | "first") | number | { + indentMode?: (("tab" | "first") | number) + ignoreTernaryOperator?: boolean + [k: string]: unknown | undefined +})] +// ----- @stylistic/jsx-max-props-per-line ----- +type StylisticJsxMaxPropsPerLine = []|[({ + maximum?: { + single?: number + multi?: number + [k: string]: unknown | undefined + } } | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "enum" - modifiers?: ("exported" | "unused")[] + maximum?: number + when?: ("always" | "multiline") +})] +// ----- @stylistic/jsx-newline ----- +type StylisticJsxNewline = []|[{ + prevent?: boolean + allowMultilines?: boolean +}] +// ----- @stylistic/jsx-one-expression-per-line ----- +type StylisticJsxOneExpressionPerLine = []|[{ + allow?: ("none" | "literal" | "single-child" | "single-line" | "non-jsx") +}] +// ----- @stylistic/jsx-pascal-case ----- +type StylisticJsxPascalCase = []|[{ + allowAllCaps?: boolean + allowLeadingUnderscore?: boolean + allowNamespace?: boolean + ignore?: string[] +}] +// ----- @stylistic/jsx-quotes ----- +type StylisticJsxQuotes = []|[("prefer-single" | "prefer-double")] +// ----- @stylistic/jsx-self-closing-comp ----- +type StylisticJsxSelfClosingComp = []|[{ + component?: boolean + html?: boolean +}] +// ----- @stylistic/jsx-sort-props ----- +type StylisticJsxSortProps = []|[{ + callbacksLast?: boolean + shorthandFirst?: boolean + shorthandLast?: boolean + multiline?: ("ignore" | "first" | "last") + ignoreCase?: boolean + noSortAlphabetically?: boolean + reservedFirst?: (unknown[] | boolean) + locale?: string +}] +// ----- @stylistic/jsx-tag-spacing ----- +type StylisticJsxTagSpacing = []|[{ + closingSlash?: ("always" | "never" | "allow") + beforeSelfClosing?: ("always" | "proportional-always" | "never" | "allow") + afterOpening?: ("always" | "allow-multiline" | "never" | "allow") + beforeClosing?: ("always" | "proportional-always" | "never" | "allow") +}] +// ----- @stylistic/jsx-wrap-multilines ----- +type StylisticJsxWrapMultilines = []|[{ + declaration?: ((true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line")) + assignment?: ((true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line")) + return?: ((true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line")) + arrow?: ((true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line")) + condition?: ((true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line")) + logical?: ((true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line")) + prop?: ((true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line")) + propertyValue?: ((true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line")) +}] +// ----- @stylistic/key-spacing ----- +type StylisticKeySpacing = []|[({ + align?: (("colon" | "value") | { + mode?: ("strict" | "minimum") + on?: ("colon" | "value") + beforeColon?: boolean + afterColon?: boolean + }) + mode?: ("strict" | "minimum") + beforeColon?: boolean + afterColon?: boolean + ignoredNodes?: ("ObjectExpression" | "ObjectPattern" | "ImportDeclaration" | "ExportNamedDeclaration" | "ExportAllDeclaration" | "TSTypeLiteral" | "TSInterfaceBody" | "ClassBody")[] } | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "typeParameter" - modifiers?: ("unused")[] + singleLine?: { + mode?: ("strict" | "minimum") + beforeColon?: boolean + afterColon?: boolean + } + multiLine?: { + align?: (("colon" | "value") | { + mode?: ("strict" | "minimum") + on?: ("colon" | "value") + beforeColon?: boolean + afterColon?: boolean + }) + mode?: ("strict" | "minimum") + beforeColon?: boolean + afterColon?: boolean + } } | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "import" - modifiers?: ("default" | "namespace")[] -})[] -interface _TypescriptEslintNamingConvention_MatchRegexConfig { - match: boolean - regex: string + singleLine?: { + mode?: ("strict" | "minimum") + beforeColon?: boolean + afterColon?: boolean + } + multiLine?: { + mode?: ("strict" | "minimum") + beforeColon?: boolean + afterColon?: boolean + } + align?: { + mode?: ("strict" | "minimum") + on?: ("colon" | "value") + beforeColon?: boolean + afterColon?: boolean + } +})] +// ----- @stylistic/keyword-spacing ----- +type StylisticKeywordSpacing = []|[{ + before?: boolean + after?: boolean + overrides?: { + abstract?: { + before?: boolean + after?: boolean + } + as?: { + before?: boolean + after?: boolean + } + async?: { + before?: boolean + after?: boolean + } + await?: { + before?: boolean + after?: boolean + } + boolean?: { + before?: boolean + after?: boolean + } + break?: { + before?: boolean + after?: boolean + } + byte?: { + before?: boolean + after?: boolean + } + case?: { + before?: boolean + after?: boolean + } + catch?: { + before?: boolean + after?: boolean + } + char?: { + before?: boolean + after?: boolean + } + class?: { + before?: boolean + after?: boolean + } + const?: { + before?: boolean + after?: boolean + } + continue?: { + before?: boolean + after?: boolean + } + debugger?: { + before?: boolean + after?: boolean + } + default?: { + before?: boolean + after?: boolean + } + delete?: { + before?: boolean + after?: boolean + } + do?: { + before?: boolean + after?: boolean + } + double?: { + before?: boolean + after?: boolean + } + else?: { + before?: boolean + after?: boolean + } + enum?: { + before?: boolean + after?: boolean + } + export?: { + before?: boolean + after?: boolean + } + extends?: { + before?: boolean + after?: boolean + } + false?: { + before?: boolean + after?: boolean + } + final?: { + before?: boolean + after?: boolean + } + finally?: { + before?: boolean + after?: boolean + } + float?: { + before?: boolean + after?: boolean + } + for?: { + before?: boolean + after?: boolean + } + from?: { + before?: boolean + after?: boolean + } + function?: { + before?: boolean + after?: boolean + } + get?: { + before?: boolean + after?: boolean + } + goto?: { + before?: boolean + after?: boolean + } + if?: { + before?: boolean + after?: boolean + } + implements?: { + before?: boolean + after?: boolean + } + import?: { + before?: boolean + after?: boolean + } + in?: { + before?: boolean + after?: boolean + } + instanceof?: { + before?: boolean + after?: boolean + } + int?: { + before?: boolean + after?: boolean + } + interface?: { + before?: boolean + after?: boolean + } + let?: { + before?: boolean + after?: boolean + } + long?: { + before?: boolean + after?: boolean + } + native?: { + before?: boolean + after?: boolean + } + new?: { + before?: boolean + after?: boolean + } + null?: { + before?: boolean + after?: boolean + } + of?: { + before?: boolean + after?: boolean + } + package?: { + before?: boolean + after?: boolean + } + private?: { + before?: boolean + after?: boolean + } + protected?: { + before?: boolean + after?: boolean + } + public?: { + before?: boolean + after?: boolean + } + return?: { + before?: boolean + after?: boolean + } + satisfies?: { + before?: boolean + after?: boolean + } + set?: { + before?: boolean + after?: boolean + } + short?: { + before?: boolean + after?: boolean + } + static?: { + before?: boolean + after?: boolean + } + super?: { + before?: boolean + after?: boolean + } + switch?: { + before?: boolean + after?: boolean + } + synchronized?: { + before?: boolean + after?: boolean + } + this?: { + before?: boolean + after?: boolean + } + throw?: { + before?: boolean + after?: boolean + } + throws?: { + before?: boolean + after?: boolean + } + transient?: { + before?: boolean + after?: boolean + } + true?: { + before?: boolean + after?: boolean + } + try?: { + before?: boolean + after?: boolean + } + typeof?: { + before?: boolean + after?: boolean + } + var?: { + before?: boolean + after?: boolean + } + void?: { + before?: boolean + after?: boolean + } + volatile?: { + before?: boolean + after?: boolean + } + while?: { + before?: boolean + after?: boolean + } + with?: { + before?: boolean + after?: boolean + } + yield?: { + before?: boolean + after?: boolean + } + type?: { + before?: boolean + after?: boolean + } + } +}] +// ----- @stylistic/line-comment-position ----- +type StylisticLineCommentPosition = []|[(("above" | "beside") | { + position?: ("above" | "beside") + ignorePattern?: string + applyDefaultPatterns?: boolean + applyDefaultIgnorePatterns?: boolean +})] +// ----- @stylistic/linebreak-style ----- +type StylisticLinebreakStyle = []|[("unix" | "windows")] +// ----- @stylistic/lines-around-comment ----- +type StylisticLinesAroundComment = []|[{ + beforeBlockComment?: boolean + afterBlockComment?: boolean + beforeLineComment?: boolean + afterLineComment?: boolean + allowBlockStart?: boolean + allowBlockEnd?: boolean + allowClassStart?: boolean + allowClassEnd?: boolean + allowObjectStart?: boolean + allowObjectEnd?: boolean + allowArrayStart?: boolean + allowArrayEnd?: boolean + allowInterfaceStart?: boolean + allowInterfaceEnd?: boolean + allowTypeStart?: boolean + allowTypeEnd?: boolean + allowEnumStart?: boolean + allowEnumEnd?: boolean + allowModuleStart?: boolean + allowModuleEnd?: boolean + ignorePattern?: string + applyDefaultIgnorePatterns?: boolean + afterHashbangComment?: boolean +}] +// ----- @stylistic/lines-between-class-members ----- +type StylisticLinesBetweenClassMembers = []|[({ + + enforce: [{ + blankLine: ("always" | "never") + prev: ("method" | "field" | "*") + next: ("method" | "field" | "*") + }, ...({ + blankLine: ("always" | "never") + prev: ("method" | "field" | "*") + next: ("method" | "field" | "*") + })[]] +} | ("always" | "never"))]|[({ + + enforce: [{ + blankLine: ("always" | "never") + prev: ("method" | "field" | "*") + next: ("method" | "field" | "*") + }, ...({ + blankLine: ("always" | "never") + prev: ("method" | "field" | "*") + next: ("method" | "field" | "*") + })[]] +} | ("always" | "never")), { + exceptAfterSingleLine?: boolean + exceptAfterOverload?: boolean +}] +// ----- @stylistic/max-len ----- +type StylisticMaxLen = []|[({ + code?: number + comments?: number + tabWidth?: number + ignorePattern?: string + ignoreComments?: boolean + ignoreStrings?: boolean + ignoreUrls?: boolean + ignoreTemplateLiterals?: boolean + ignoreRegExpLiterals?: boolean + ignoreTrailingComments?: boolean +} | number)]|[({ + code?: number + comments?: number + tabWidth?: number + ignorePattern?: string + ignoreComments?: boolean + ignoreStrings?: boolean + ignoreUrls?: boolean + ignoreTemplateLiterals?: boolean + ignoreRegExpLiterals?: boolean + ignoreTrailingComments?: boolean +} | number), ({ + code?: number + comments?: number + tabWidth?: number + ignorePattern?: string + ignoreComments?: boolean + ignoreStrings?: boolean + ignoreUrls?: boolean + ignoreTemplateLiterals?: boolean + ignoreRegExpLiterals?: boolean + ignoreTrailingComments?: boolean +} | number)]|[({ + code?: number + comments?: number + tabWidth?: number + ignorePattern?: string + ignoreComments?: boolean + ignoreStrings?: boolean + ignoreUrls?: boolean + ignoreTemplateLiterals?: boolean + ignoreRegExpLiterals?: boolean + ignoreTrailingComments?: boolean +} | number), ({ + code?: number + comments?: number + tabWidth?: number + ignorePattern?: string + ignoreComments?: boolean + ignoreStrings?: boolean + ignoreUrls?: boolean + ignoreTemplateLiterals?: boolean + ignoreRegExpLiterals?: boolean + ignoreTrailingComments?: boolean +} | number), { + code?: number + comments?: number + tabWidth?: number + ignorePattern?: string + ignoreComments?: boolean + ignoreStrings?: boolean + ignoreUrls?: boolean + ignoreTemplateLiterals?: boolean + ignoreRegExpLiterals?: boolean + ignoreTrailingComments?: boolean +}] +// ----- @stylistic/max-statements-per-line ----- +type StylisticMaxStatementsPerLine = []|[{ + max?: number + ignoredNodes?: ("BreakStatement" | "ClassDeclaration" | "ContinueStatement" | "DebuggerStatement" | "DoWhileStatement" | "ExpressionStatement" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "IfStatement" | "ImportDeclaration" | "LabeledStatement" | "ReturnStatement" | "SwitchStatement" | "ThrowStatement" | "TryStatement" | "VariableDeclaration" | "WhileStatement" | "WithStatement" | "ExportNamedDeclaration" | "ExportDefaultDeclaration" | "ExportAllDeclaration")[] +}] +// ----- @stylistic/member-delimiter-style ----- +type StylisticMemberDelimiterStyle = []|[{ + multiline?: { + delimiter?: ("none" | "semi" | "comma") + requireLast?: boolean + } + singleline?: { + delimiter?: ("semi" | "comma") + requireLast?: boolean + } + overrides?: { + interface?: _StylisticMemberDelimiterStyle_DelimiterConfig + typeLiteral?: _StylisticMemberDelimiterStyle_DelimiterConfig + } + multilineDetection?: ("brackets" | "last-member") +}] +interface _StylisticMemberDelimiterStyle_DelimiterConfig { + multiline?: { + delimiter?: ("none" | "semi" | "comma") + requireLast?: boolean + } + singleline?: { + delimiter?: ("semi" | "comma") + requireLast?: boolean + } } -// ----- @typescript-eslint/no-base-to-string ----- -type TypescriptEslintNoBaseToString = []|[{ - - ignoredTypeNames?: string[] +// ----- @stylistic/multiline-comment-style ----- +type StylisticMultilineCommentStyle = ([]|[("starred-block" | "bare-block")] | []|["separate-lines"]|["separate-lines", { + checkJSDoc?: boolean +}]) +// ----- @stylistic/multiline-ternary ----- +type StylisticMultilineTernary = []|[("always" | "always-multiline" | "never")]|[("always" | "always-multiline" | "never"), { + ignoreJSX?: boolean + [k: string]: unknown | undefined }] -// ----- @typescript-eslint/no-confusing-void-expression ----- -type TypescriptEslintNoConfusingVoidExpression = []|[{ - - ignoreArrowShorthand?: boolean - - ignoreVoidOperator?: boolean - - ignoreVoidReturningFunctions?: boolean +// ----- @stylistic/new-parens ----- +type StylisticNewParens = []|[("always" | "never")] +// ----- @stylistic/newline-per-chained-call ----- +type StylisticNewlinePerChainedCall = []|[{ + ignoreChainWithDepth?: number }] -// ----- @typescript-eslint/no-duplicate-type-constituents ----- -type TypescriptEslintNoDuplicateTypeConstituents = []|[{ - - ignoreIntersections?: boolean - - ignoreUnions?: boolean +// ----- @stylistic/no-confusing-arrow ----- +type StylisticNoConfusingArrow = []|[{ + allowParens?: boolean + onlyOneSimpleParam?: boolean }] -// ----- @typescript-eslint/no-empty-function ----- -type TypescriptEslintNoEmptyFunction = []|[{ - - allow?: ("functions" | "arrowFunctions" | "generatorFunctions" | "methods" | "generatorMethods" | "getters" | "setters" | "constructors" | "private-constructors" | "protected-constructors" | "asyncFunctions" | "asyncMethods" | "decoratedFunctions" | "overrideMethods")[] +// ----- @stylistic/no-extra-parens ----- +type StylisticNoExtraParens = ([]|["functions"] | []|["all"]|["all", { + conditionalAssign?: boolean + ternaryOperandBinaryExpressions?: boolean + nestedBinaryExpressions?: boolean + returnAssign?: boolean + ignoreJSX?: ("none" | "all" | "single-line" | "multi-line") + enforceForArrowConditionals?: boolean + enforceForSequenceExpressions?: boolean + enforceForNewInMemberExpressions?: boolean + enforceForFunctionPrototypeMethods?: boolean + allowParensAfterCommentPattern?: string + nestedConditionalExpressions?: boolean +}]) +// ----- @stylistic/no-mixed-operators ----- +type StylisticNoMixedOperators = []|[{ + groups?: [("+" | "-" | "*" | "/" | "%" | "**" | "&" | "|" | "^" | "~" | "<<" | ">>" | ">>>" | "==" | "!=" | "===" | "!==" | ">" | ">=" | "<" | "<=" | "&&" | "||" | "in" | "instanceof" | "?:" | "??"), ("+" | "-" | "*" | "/" | "%" | "**" | "&" | "|" | "^" | "~" | "<<" | ">>" | ">>>" | "==" | "!=" | "===" | "!==" | ">" | ">=" | "<" | "<=" | "&&" | "||" | "in" | "instanceof" | "?:" | "??"), ...(("+" | "-" | "*" | "/" | "%" | "**" | "&" | "|" | "^" | "~" | "<<" | ">>" | ">>>" | "==" | "!=" | "===" | "!==" | ">" | ">=" | "<" | "<=" | "&&" | "||" | "in" | "instanceof" | "?:" | "??"))[]][] + allowSamePrecedence?: boolean }] -// ----- @typescript-eslint/no-empty-interface ----- -type TypescriptEslintNoEmptyInterface = []|[{ - - allowSingleExtends?: boolean +// ----- @stylistic/no-mixed-spaces-and-tabs ----- +type StylisticNoMixedSpacesAndTabs = []|[("smart-tabs" | boolean)] +// ----- @stylistic/no-multi-spaces ----- +type StylisticNoMultiSpaces = []|[{ + exceptions?: { + [k: string]: boolean + } + ignoreEOLComments?: boolean + includeTabs?: boolean }] -// ----- @typescript-eslint/no-empty-object-type ----- -type TypescriptEslintNoEmptyObjectType = []|[{ - - allowInterfaces?: ("always" | "never" | "with-single-extends") - - allowObjectTypes?: ("always" | "never") - - allowWithName?: string +// ----- @stylistic/no-multiple-empty-lines ----- +type StylisticNoMultipleEmptyLines = []|[{ + max: number + maxEOF?: number + maxBOF?: number }] -// ----- @typescript-eslint/no-explicit-any ----- -type TypescriptEslintNoExplicitAny = []|[{ - - fixToUnknown?: boolean - - ignoreRestArgs?: boolean +// ----- @stylistic/no-tabs ----- +type StylisticNoTabs = []|[{ + allowIndentationTabs?: boolean }] -// ----- @typescript-eslint/no-extraneous-class ----- -type TypescriptEslintNoExtraneousClass = []|[{ - - allowConstructorOnly?: boolean - - allowEmpty?: boolean - - allowStaticOnly?: boolean - - allowWithDecorator?: boolean +// ----- @stylistic/no-trailing-spaces ----- +type StylisticNoTrailingSpaces = []|[{ + skipBlankLines?: boolean + ignoreComments?: boolean }] -// ----- @typescript-eslint/no-floating-promises ----- -type TypescriptEslintNoFloatingPromises = []|[{ - - allowForKnownSafeCalls?: (string | { - from: "file" - name: (string | [string, ...(string)[]]) - path?: string - } | { - from: "lib" - name: (string | [string, ...(string)[]]) - } | { - from: "package" - name: (string | [string, ...(string)[]]) - package: string - })[] - - allowForKnownSafePromises?: (string | { - from: "file" - name: (string | [string, ...(string)[]]) - path?: string - } | { - from: "lib" - name: (string | [string, ...(string)[]]) - } | { - from: "package" - name: (string | [string, ...(string)[]]) - package: string - })[] - - checkThenables?: boolean - - ignoreIIFE?: boolean - - ignoreVoid?: boolean +// ----- @stylistic/nonblock-statement-body-position ----- +type StylisticNonblockStatementBodyPosition = []|[("beside" | "below" | "any")]|[("beside" | "below" | "any"), { + overrides?: { + if?: ("beside" | "below" | "any") + else?: ("beside" | "below" | "any") + while?: ("beside" | "below" | "any") + do?: ("beside" | "below" | "any") + for?: ("beside" | "below" | "any") + } +}] +// ----- @stylistic/object-curly-newline ----- +type StylisticObjectCurlyNewline = []|[((("always" | "never") | { + multiline?: boolean + minProperties?: number + consistent?: boolean +}) | { + ObjectExpression?: (("always" | "never") | { + multiline?: boolean + minProperties?: number + consistent?: boolean + }) + ObjectPattern?: (("always" | "never") | { + multiline?: boolean + minProperties?: number + consistent?: boolean + }) + ImportDeclaration?: (("always" | "never") | { + multiline?: boolean + minProperties?: number + consistent?: boolean + }) + ExportDeclaration?: (("always" | "never") | { + multiline?: boolean + minProperties?: number + consistent?: boolean + }) + TSTypeLiteral?: (("always" | "never") | { + multiline?: boolean + minProperties?: number + consistent?: boolean + }) + TSInterfaceBody?: (("always" | "never") | { + multiline?: boolean + minProperties?: number + consistent?: boolean + }) +})] +// ----- @stylistic/object-curly-spacing ----- +type StylisticObjectCurlySpacing = []|[("always" | "never")]|[("always" | "never"), { + arraysInObjects?: boolean + objectsInObjects?: boolean }] -// ----- @typescript-eslint/no-inferrable-types ----- -type TypescriptEslintNoInferrableTypes = []|[{ - - ignoreParameters?: boolean - - ignoreProperties?: boolean +// ----- @stylistic/object-property-newline ----- +type StylisticObjectPropertyNewline = []|[{ + allowAllPropertiesOnSameLine?: boolean + allowMultiplePropertiesPerLine?: boolean }] -// ----- @typescript-eslint/no-invalid-this ----- -type TypescriptEslintNoInvalidThis = []|[{ - capIsConstructor?: boolean +// ----- @stylistic/one-var-declaration-per-line ----- +type StylisticOneVarDeclarationPerLine = []|[("always" | "initializations")] +// ----- @stylistic/operator-linebreak ----- +type StylisticOperatorLinebreak = []|[(("after" | "before" | "none") | null)]|[(("after" | "before" | "none") | null), { + overrides?: { + [k: string]: ("after" | "before" | "none" | "ignore") | undefined + } }] -// ----- @typescript-eslint/no-invalid-void-type ----- -type TypescriptEslintNoInvalidVoidType = []|[{ - - allowAsThisParameter?: boolean - - allowInGenericTypeArguments?: (boolean | [string, ...(string)[]]) +// ----- @stylistic/padded-blocks ----- +type StylisticPaddedBlocks = []|[(("always" | "never" | "start" | "end") | { + blocks?: ("always" | "never" | "start" | "end") + switches?: ("always" | "never" | "start" | "end") + classes?: ("always" | "never" | "start" | "end") +})]|[(("always" | "never" | "start" | "end") | { + blocks?: ("always" | "never" | "start" | "end") + switches?: ("always" | "never" | "start" | "end") + classes?: ("always" | "never" | "start" | "end") +}), { + allowSingleLineBlocks?: boolean }] -// ----- @typescript-eslint/no-magic-numbers ----- -type TypescriptEslintNoMagicNumbers = []|[{ - detectObjects?: boolean - enforceConst?: boolean - ignore?: (number | string)[] - ignoreArrayIndexes?: boolean - ignoreDefaultValues?: boolean - ignoreClassFieldInitialValues?: boolean - - ignoreEnums?: boolean - - ignoreNumericLiteralTypes?: boolean - - ignoreReadonlyClassProperties?: boolean - - ignoreTypeIndexes?: boolean +// ----- @stylistic/padding-line-between-statements ----- +type _StylisticPaddingLineBetweenStatementsPaddingType = ("any" | "never" | "always") +type _StylisticPaddingLineBetweenStatementsStatementType = (("*" | "block-like" | "exports" | "require" | "directive" | "expression" | "iife" | "multiline-block-like" | "multiline-expression" | "multiline-const" | "multiline-export" | "multiline-let" | "multiline-var" | "singleline-const" | "singleline-export" | "singleline-let" | "singleline-var" | "block" | "empty" | "function" | "ts-method" | "break" | "case" | "class" | "const" | "continue" | "debugger" | "default" | "do" | "export" | "for" | "if" | "import" | "let" | "return" | "switch" | "throw" | "try" | "var" | "while" | "with" | "cjs-export" | "cjs-import" | "enum" | "interface" | "type" | "function-overload") | [("*" | "block-like" | "exports" | "require" | "directive" | "expression" | "iife" | "multiline-block-like" | "multiline-expression" | "multiline-const" | "multiline-export" | "multiline-let" | "multiline-var" | "singleline-const" | "singleline-export" | "singleline-let" | "singleline-var" | "block" | "empty" | "function" | "ts-method" | "break" | "case" | "class" | "const" | "continue" | "debugger" | "default" | "do" | "export" | "for" | "if" | "import" | "let" | "return" | "switch" | "throw" | "try" | "var" | "while" | "with" | "cjs-export" | "cjs-import" | "enum" | "interface" | "type" | "function-overload"), ...(("*" | "block-like" | "exports" | "require" | "directive" | "expression" | "iife" | "multiline-block-like" | "multiline-expression" | "multiline-const" | "multiline-export" | "multiline-let" | "multiline-var" | "singleline-const" | "singleline-export" | "singleline-let" | "singleline-var" | "block" | "empty" | "function" | "ts-method" | "break" | "case" | "class" | "const" | "continue" | "debugger" | "default" | "do" | "export" | "for" | "if" | "import" | "let" | "return" | "switch" | "throw" | "try" | "var" | "while" | "with" | "cjs-export" | "cjs-import" | "enum" | "interface" | "type" | "function-overload"))[]]) +type StylisticPaddingLineBetweenStatements = { + blankLine: _StylisticPaddingLineBetweenStatementsPaddingType + prev: _StylisticPaddingLineBetweenStatementsStatementType + next: _StylisticPaddingLineBetweenStatementsStatementType +}[] +// ----- @stylistic/quote-props ----- +type StylisticQuoteProps = ([]|[("always" | "as-needed" | "consistent" | "consistent-as-needed")] | []|[("always" | "as-needed" | "consistent" | "consistent-as-needed")]|[("always" | "as-needed" | "consistent" | "consistent-as-needed"), { + keywords?: boolean + unnecessary?: boolean + numbers?: boolean +}]) +// ----- @stylistic/quotes ----- +type StylisticQuotes = []|[("single" | "double" | "backtick")]|[("single" | "double" | "backtick"), ("avoid-escape" | { + avoidEscape?: boolean + allowTemplateLiterals?: (boolean | ("never" | "avoidEscape" | "always")) + ignoreStringLiterals?: boolean +})] +// ----- @stylistic/rest-spread-spacing ----- +type StylisticRestSpreadSpacing = []|[("always" | "never")] +// ----- @stylistic/semi ----- +type StylisticSemi = ([]|["never"]|["never", { + beforeStatementContinuationChars?: ("always" | "any" | "never") +}] | []|["always"]|["always", { + omitLastInOneLineBlock?: boolean + omitLastInOneLineClassBody?: boolean +}]) +// ----- @stylistic/semi-spacing ----- +type StylisticSemiSpacing = []|[{ + before?: boolean + after?: boolean }] -// ----- @typescript-eslint/no-meaningless-void-operator ----- -type TypescriptEslintNoMeaninglessVoidOperator = []|[{ - - checkNever?: boolean +// ----- @stylistic/semi-style ----- +type StylisticSemiStyle = []|[("last" | "first")] +// ----- @stylistic/space-before-blocks ----- +type StylisticSpaceBeforeBlocks = []|[(("always" | "never") | { + keywords?: ("always" | "never" | "off") + functions?: ("always" | "never" | "off") + classes?: ("always" | "never" | "off") +})] +// ----- @stylistic/space-before-function-paren ----- +type StylisticSpaceBeforeFunctionParen = []|[(("always" | "never") | { + anonymous?: ("always" | "never" | "ignore") + named?: ("always" | "never" | "ignore") + asyncArrow?: ("always" | "never" | "ignore") +})] +// ----- @stylistic/space-in-parens ----- +type StylisticSpaceInParens = []|[("always" | "never")]|[("always" | "never"), { + exceptions?: ("{}" | "[]" | "()" | "empty")[] }] -// ----- @typescript-eslint/no-misused-promises ----- -type TypescriptEslintNoMisusedPromises = []|[{ - - checksConditionals?: boolean - - checksSpreads?: boolean - - checksVoidReturn?: (boolean | { - - arguments?: boolean - - attributes?: boolean - - inheritedMethods?: boolean - - properties?: boolean - - returns?: boolean - - variables?: boolean - }) +// ----- @stylistic/space-infix-ops ----- +type StylisticSpaceInfixOps = []|[{ + int32Hint?: boolean + ignoreTypes?: boolean }] -// ----- @typescript-eslint/no-namespace ----- -type TypescriptEslintNoNamespace = []|[{ - - allowDeclarations?: boolean - - allowDefinitionFiles?: boolean +// ----- @stylistic/space-unary-ops ----- +type StylisticSpaceUnaryOps = []|[{ + words?: boolean + nonwords?: boolean + overrides?: { + [k: string]: boolean | undefined + } }] -// ----- @typescript-eslint/no-redeclare ----- -type TypescriptEslintNoRedeclare = []|[{ - - builtinGlobals?: boolean - - ignoreDeclarationMerge?: boolean +// ----- @stylistic/spaced-comment ----- +type StylisticSpacedComment = []|[("always" | "never")]|[("always" | "never"), { + exceptions?: string[] + markers?: string[] + line?: { + exceptions?: string[] + markers?: string[] + } + block?: { + exceptions?: string[] + markers?: string[] + balanced?: boolean + } }] -// ----- @typescript-eslint/no-require-imports ----- -type TypescriptEslintNoRequireImports = []|[{ - - allow?: string[] - - allowAsImport?: boolean +// ----- @stylistic/switch-colon-spacing ----- +type StylisticSwitchColonSpacing = []|[{ + before?: boolean + after?: boolean }] -// ----- @typescript-eslint/no-restricted-imports ----- -type TypescriptEslintNoRestrictedImports = ((string | { - name: string - message?: string - importNames?: string[] - allowImportNames?: string[] - - allowTypeImports?: boolean -})[] | []|[{ - paths?: (string | { - name: string - message?: string - importNames?: string[] - allowImportNames?: string[] - - allowTypeImports?: boolean - })[] - patterns?: (string[] | { - - importNames?: [string, ...(string)[]] - - allowImportNames?: [string, ...(string)[]] - - group?: [string, ...(string)[]] - regex?: string - importNamePattern?: string - allowImportNamePattern?: string - message?: string - caseSensitive?: boolean - - allowTypeImports?: boolean - }[]) -}]) -// ----- @typescript-eslint/no-restricted-types ----- -type TypescriptEslintNoRestrictedTypes = []|[{ - - types?: { - [k: string]: (true | string | { - - fixWith?: string - - message?: string - - suggest?: string[] - }) | undefined +// ----- @stylistic/template-curly-spacing ----- +type StylisticTemplateCurlySpacing = []|[("always" | "never")] +// ----- @stylistic/template-tag-spacing ----- +type StylisticTemplateTagSpacing = []|[("always" | "never")] +// ----- @stylistic/type-annotation-spacing ----- +type StylisticTypeAnnotationSpacing = []|[{ + before?: boolean + after?: boolean + overrides?: { + colon?: _StylisticTypeAnnotationSpacing_SpacingConfig + arrow?: _StylisticTypeAnnotationSpacing_SpacingConfig + variable?: _StylisticTypeAnnotationSpacing_SpacingConfig + parameter?: _StylisticTypeAnnotationSpacing_SpacingConfig + property?: _StylisticTypeAnnotationSpacing_SpacingConfig + returnType?: _StylisticTypeAnnotationSpacing_SpacingConfig } }] -// ----- @typescript-eslint/no-shadow ----- -type TypescriptEslintNoShadow = []|[{ +interface _StylisticTypeAnnotationSpacing_SpacingConfig { + before?: boolean + after?: boolean +} +// ----- @stylistic/wrap-iife ----- +type StylisticWrapIife = []|[("outside" | "inside" | "any")]|[("outside" | "inside" | "any"), { + functionPrototypeMethods?: boolean +}] +// ----- @stylistic/yield-star-spacing ----- +type StylisticYieldStarSpacing = []|[(("before" | "after" | "both" | "neither") | { + before?: boolean + after?: boolean +})] +// ----- @typescript-eslint/array-type ----- +type TypescriptEslintArrayType = []|[{ - allow?: string[] + default?: ("array" | "generic" | "array-simple") - builtinGlobals?: boolean + readonly?: ("array" | "generic" | "array-simple") +}] +// ----- @typescript-eslint/ban-ts-comment ----- +type TypescriptEslintBanTsComment = []|[{ - hoist?: ("all" | "functions" | "never") + minimumDescriptionLength?: number + "ts-check"?: (boolean | "allow-with-description" | { + descriptionFormat?: string + }) + "ts-expect-error"?: (boolean | "allow-with-description" | { + descriptionFormat?: string + }) + "ts-ignore"?: (boolean | "allow-with-description" | { + descriptionFormat?: string + }) + "ts-nocheck"?: (boolean | "allow-with-description" | { + descriptionFormat?: string + }) +}] +// ----- @typescript-eslint/class-literal-property-style ----- +type TypescriptEslintClassLiteralPropertyStyle = []|[("fields" | "getters")] +// ----- @typescript-eslint/class-methods-use-this ----- +type TypescriptEslintClassMethodsUseThis = []|[{ - ignoreFunctionTypeParameterNameValueShadow?: boolean + enforceForClassFields?: boolean - ignoreOnInitialization?: boolean + exceptMethods?: string[] - ignoreTypeValueShadow?: boolean + ignoreClassesThatImplementAnInterface?: (boolean | "public-fields") + + ignoreOverrideMethods?: boolean }] -// ----- @typescript-eslint/no-this-alias ----- -type TypescriptEslintNoThisAlias = []|[{ +// ----- @typescript-eslint/consistent-generic-constructors ----- +type TypescriptEslintConsistentGenericConstructors = []|[("type-annotation" | "constructor")] +// ----- @typescript-eslint/consistent-indexed-object-style ----- +type TypescriptEslintConsistentIndexedObjectStyle = []|[("record" | "index-signature")] +// ----- @typescript-eslint/consistent-return ----- +type TypescriptEslintConsistentReturn = []|[{ + treatUndefinedAsUnspecified?: boolean +}] +// ----- @typescript-eslint/consistent-type-assertions ----- +type TypescriptEslintConsistentTypeAssertions = []|[({ - allowDestructuring?: boolean + assertionStyle: "never" +} | { - allowedNames?: string[] + arrayLiteralTypeAssertions?: ("allow" | "allow-as-parameter" | "never") + + assertionStyle?: ("as" | "angle-bracket") + + objectLiteralTypeAssertions?: ("allow" | "allow-as-parameter" | "never") +})] +// ----- @typescript-eslint/consistent-type-definitions ----- +type TypescriptEslintConsistentTypeDefinitions = []|[("interface" | "type")] +// ----- @typescript-eslint/consistent-type-exports ----- +type TypescriptEslintConsistentTypeExports = []|[{ + + fixMixedExportsWithInlineTypeSpecifier?: boolean }] -// ----- @typescript-eslint/no-type-alias ----- -type TypescriptEslintNoTypeAlias = []|[{ +// ----- @typescript-eslint/consistent-type-imports ----- +type TypescriptEslintConsistentTypeImports = []|[{ - allowAliases?: ("always" | "never" | "in-unions" | "in-intersections" | "in-unions-and-intersections") + disallowTypeAnnotations?: boolean - allowCallbacks?: ("always" | "never") + fixStyle?: ("separate-type-imports" | "inline-type-imports") - allowConditionalTypes?: ("always" | "never") + prefer?: ("type-imports" | "no-type-imports") +}] +// ----- @typescript-eslint/dot-notation ----- +type TypescriptEslintDotNotation = []|[{ - allowConstructors?: ("always" | "never") + allowIndexSignaturePropertyAccess?: boolean - allowGenerics?: ("always" | "never") + allowKeywords?: boolean - allowLiterals?: ("always" | "never" | "in-unions" | "in-intersections" | "in-unions-and-intersections") + allowPattern?: string - allowMappedTypes?: ("always" | "never" | "in-unions" | "in-intersections" | "in-unions-and-intersections") + allowPrivateClassPropertyAccess?: boolean - allowTupleTypes?: ("always" | "never" | "in-unions" | "in-intersections" | "in-unions-and-intersections") + allowProtectedClassPropertyAccess?: boolean }] -// ----- @typescript-eslint/no-unnecessary-boolean-literal-compare ----- -type TypescriptEslintNoUnnecessaryBooleanLiteralCompare = []|[{ +// ----- @typescript-eslint/explicit-function-return-type ----- +type TypescriptEslintExplicitFunctionReturnType = []|[{ - allowComparingNullableBooleansToFalse?: boolean + allowConciseArrowFunctionExpressionsStartingWithVoid?: boolean - allowComparingNullableBooleansToTrue?: boolean -}] -// ----- @typescript-eslint/no-unnecessary-condition ----- -type TypescriptEslintNoUnnecessaryCondition = []|[{ + allowDirectConstAssertionInArrowFunctions?: boolean - allowConstantLoopConditions?: boolean + allowedNames?: string[] - allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean + allowExpressions?: boolean - checkTypePredicates?: boolean -}] -// ----- @typescript-eslint/no-unnecessary-type-assertion ----- -type TypescriptEslintNoUnnecessaryTypeAssertion = []|[{ + allowFunctionsWithoutTypeParameters?: boolean - typesToIgnore?: string[] -}] -// ----- @typescript-eslint/no-unused-expressions ----- -type TypescriptEslintNoUnusedExpressions = []|[{ - allowShortCircuit?: boolean - allowTernary?: boolean - allowTaggedTemplates?: boolean - enforceForJSX?: boolean -}] -// ----- @typescript-eslint/no-unused-vars ----- -type TypescriptEslintNoUnusedVars = []|[(("all" | "local") | { + allowHigherOrderFunctions?: boolean - args?: ("all" | "after-used" | "none") + allowIIFEs?: boolean - argsIgnorePattern?: string + allowTypedFunctionExpressions?: boolean +}] +// ----- @typescript-eslint/explicit-member-accessibility ----- +type TypescriptEslintExplicitMemberAccessibility = []|[{ - caughtErrors?: ("all" | "none") + accessibility?: ("explicit" | "no-public" | "off") - caughtErrorsIgnorePattern?: string + ignoredMethodNames?: string[] - destructuredArrayIgnorePattern?: string + overrides?: { + accessors?: ("explicit" | "no-public" | "off") + constructors?: ("explicit" | "no-public" | "off") + methods?: ("explicit" | "no-public" | "off") + parameterProperties?: ("explicit" | "no-public" | "off") + properties?: ("explicit" | "no-public" | "off") + } +}] +// ----- @typescript-eslint/explicit-module-boundary-types ----- +type TypescriptEslintExplicitModuleBoundaryTypes = []|[{ - ignoreClassWithStaticInitBlock?: boolean + allowArgumentsExplicitlyTypedAsAny?: boolean - ignoreRestSiblings?: boolean + allowDirectConstAssertionInArrowFunctions?: boolean - reportUsedIgnorePattern?: boolean + allowedNames?: string[] - vars?: ("all" | "local") + allowHigherOrderFunctions?: boolean - varsIgnorePattern?: string -})] -// ----- @typescript-eslint/no-use-before-define ----- -type TypescriptEslintNoUseBeforeDefine = []|[("nofunc" | { + allowOverloadFunctions?: boolean - allowNamedExports?: boolean + allowTypedFunctionExpressions?: boolean +}] +// ----- @typescript-eslint/init-declarations ----- +type TypescriptEslintInitDeclarations = ([]|["always"] | []|["never"]|["never", { + ignoreForLoopInit?: boolean +}]) +// ----- @typescript-eslint/max-params ----- +type TypescriptEslintMaxParams = []|[{ - classes?: boolean + countVoidThis?: boolean - enums?: boolean + max?: number - functions?: boolean + maximum?: number +}] +// ----- @typescript-eslint/member-ordering ----- +type TypescriptEslintMemberOrdering = []|[{ + classes?: ("never" | (("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization") | ("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization")[])[] | { + memberTypes?: ((("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization") | ("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization")[])[] | "never") + optionalityOrder?: ("optional-first" | "required-first") + order?: ("alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive") + }) + classExpressions?: ("never" | (("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization") | ("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization")[])[] | { + memberTypes?: ((("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization") | ("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization")[])[] | "never") + optionalityOrder?: ("optional-first" | "required-first") + order?: ("alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive") + }) + default?: ("never" | (("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization") | ("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization")[])[] | { + memberTypes?: ((("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization") | ("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization")[])[] | "never") + optionalityOrder?: ("optional-first" | "required-first") + order?: ("alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive") + }) + interfaces?: ("never" | (("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor") | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor")[])[] | { + memberTypes?: ((("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor") | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor")[])[] | "never") + optionalityOrder?: ("optional-first" | "required-first") + order?: ("alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive") + }) + typeLiterals?: ("never" | (("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor") | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor")[])[] | { + memberTypes?: ((("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor") | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor")[])[] | "never") + optionalityOrder?: ("optional-first" | "required-first") + order?: ("alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive") + }) +}] +// ----- @typescript-eslint/method-signature-style ----- +type TypescriptEslintMethodSignatureStyle = []|[("property" | "method")] +// ----- @typescript-eslint/naming-convention ----- +type _TypescriptEslintNamingConventionFormatOptionsConfig = (_TypescriptEslintNamingConventionPredefinedFormats[] | null) +type _TypescriptEslintNamingConventionPredefinedFormats = ("camelCase" | "strictCamelCase" | "PascalCase" | "StrictPascalCase" | "snake_case" | "UPPER_CASE") +type _TypescriptEslintNamingConventionUnderscoreOptions = ("forbid" | "allow" | "require" | "requireDouble" | "allowDouble" | "allowSingleOrDouble") +type _TypescriptEslintNamingConvention_PrefixSuffixConfig = string[] +type _TypescriptEslintNamingConventionTypeModifiers = ("boolean" | "string" | "number" | "function" | "array") +type TypescriptEslintNamingConvention = ({ + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig + failureMessage?: string + format: _TypescriptEslintNamingConventionFormatOptionsConfig + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) + modifiers?: ("const" | "readonly" | "static" | "public" | "protected" | "private" | "#private" | "abstract" | "destructured" | "global" | "exported" | "unused" | "requiresQuotes" | "override" | "async" | "default" | "namespace")[] + selector: ("default" | "variableLike" | "memberLike" | "typeLike" | "method" | "property" | "accessor" | "variable" | "function" | "parameter" | "parameterProperty" | "classicAccessor" | "enumMember" | "classMethod" | "objectLiteralMethod" | "typeMethod" | "classProperty" | "objectLiteralProperty" | "typeProperty" | "autoAccessor" | "class" | "interface" | "typeAlias" | "enum" | "typeParameter" | "import")[] + types?: _TypescriptEslintNamingConventionTypeModifiers[] +} | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig + failureMessage?: string + format: _TypescriptEslintNamingConventionFormatOptionsConfig + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) + selector: "default" + modifiers?: ("const" | "readonly" | "static" | "public" | "protected" | "private" | "#private" | "abstract" | "destructured" | "global" | "exported" | "unused" | "requiresQuotes" | "override" | "async" | "default" | "namespace")[] +} | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig + failureMessage?: string + format: _TypescriptEslintNamingConventionFormatOptionsConfig + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) + selector: "variableLike" + modifiers?: ("unused" | "async")[] +} | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig + failureMessage?: string + format: _TypescriptEslintNamingConventionFormatOptionsConfig + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) + selector: "variable" + modifiers?: ("const" | "destructured" | "exported" | "global" | "unused" | "async")[] + types?: _TypescriptEslintNamingConventionTypeModifiers[] +} | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig + failureMessage?: string + format: _TypescriptEslintNamingConventionFormatOptionsConfig + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) + selector: "function" + modifiers?: ("exported" | "global" | "unused" | "async")[] +} | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig + failureMessage?: string + format: _TypescriptEslintNamingConventionFormatOptionsConfig + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) + selector: "parameter" + modifiers?: ("destructured" | "unused")[] + types?: _TypescriptEslintNamingConventionTypeModifiers[] +} | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig + failureMessage?: string + format: _TypescriptEslintNamingConventionFormatOptionsConfig + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) + selector: "memberLike" + modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "readonly" | "requiresQuotes" | "static" | "override" | "async")[] +} | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig + failureMessage?: string + format: _TypescriptEslintNamingConventionFormatOptionsConfig + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) + selector: "classProperty" + modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "readonly" | "requiresQuotes" | "static" | "override")[] + types?: _TypescriptEslintNamingConventionTypeModifiers[] +} | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig + failureMessage?: string + format: _TypescriptEslintNamingConventionFormatOptionsConfig + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) + selector: "objectLiteralProperty" + modifiers?: ("public" | "requiresQuotes")[] + types?: _TypescriptEslintNamingConventionTypeModifiers[] +} | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig + failureMessage?: string + format: _TypescriptEslintNamingConventionFormatOptionsConfig + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) + selector: "typeProperty" + modifiers?: ("public" | "readonly" | "requiresQuotes")[] + types?: _TypescriptEslintNamingConventionTypeModifiers[] +} | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig + failureMessage?: string + format: _TypescriptEslintNamingConventionFormatOptionsConfig + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) + selector: "parameterProperty" + modifiers?: ("private" | "protected" | "public" | "readonly")[] + types?: _TypescriptEslintNamingConventionTypeModifiers[] +} | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig + failureMessage?: string + format: _TypescriptEslintNamingConventionFormatOptionsConfig + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) + selector: "property" + modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "readonly" | "requiresQuotes" | "static" | "override" | "async")[] + types?: _TypescriptEslintNamingConventionTypeModifiers[] +} | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig + failureMessage?: string + format: _TypescriptEslintNamingConventionFormatOptionsConfig + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) + selector: "classMethod" + modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "requiresQuotes" | "static" | "override" | "async")[] +} | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig + failureMessage?: string + format: _TypescriptEslintNamingConventionFormatOptionsConfig + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) + selector: "objectLiteralMethod" + modifiers?: ("public" | "requiresQuotes" | "async")[] +} | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig + failureMessage?: string + format: _TypescriptEslintNamingConventionFormatOptionsConfig + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) + selector: "typeMethod" + modifiers?: ("public" | "requiresQuotes")[] +} | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig + failureMessage?: string + format: _TypescriptEslintNamingConventionFormatOptionsConfig + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) + selector: "method" + modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "requiresQuotes" | "static" | "override" | "async")[] +} | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig + failureMessage?: string + format: _TypescriptEslintNamingConventionFormatOptionsConfig + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) + selector: "classicAccessor" + modifiers?: ("abstract" | "private" | "protected" | "public" | "requiresQuotes" | "static" | "override")[] + types?: _TypescriptEslintNamingConventionTypeModifiers[] +} | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig + failureMessage?: string + format: _TypescriptEslintNamingConventionFormatOptionsConfig + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) + selector: "autoAccessor" + modifiers?: ("abstract" | "private" | "protected" | "public" | "requiresQuotes" | "static" | "override")[] + types?: _TypescriptEslintNamingConventionTypeModifiers[] +} | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig + failureMessage?: string + format: _TypescriptEslintNamingConventionFormatOptionsConfig + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) + selector: "accessor" + modifiers?: ("abstract" | "private" | "protected" | "public" | "requiresQuotes" | "static" | "override")[] + types?: _TypescriptEslintNamingConventionTypeModifiers[] +} | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig + failureMessage?: string + format: _TypescriptEslintNamingConventionFormatOptionsConfig + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) + selector: "enumMember" + modifiers?: ("requiresQuotes")[] +} | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig + failureMessage?: string + format: _TypescriptEslintNamingConventionFormatOptionsConfig + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) + selector: "typeLike" + modifiers?: ("abstract" | "exported" | "unused")[] +} | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig + failureMessage?: string + format: _TypescriptEslintNamingConventionFormatOptionsConfig + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) + selector: "class" + modifiers?: ("abstract" | "exported" | "unused")[] +} | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig + failureMessage?: string + format: _TypescriptEslintNamingConventionFormatOptionsConfig + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) + selector: "interface" + modifiers?: ("exported" | "unused")[] +} | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig + failureMessage?: string + format: _TypescriptEslintNamingConventionFormatOptionsConfig + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) + selector: "typeAlias" + modifiers?: ("exported" | "unused")[] +} | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig + failureMessage?: string + format: _TypescriptEslintNamingConventionFormatOptionsConfig + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) + selector: "enum" + modifiers?: ("exported" | "unused")[] +} | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig + failureMessage?: string + format: _TypescriptEslintNamingConventionFormatOptionsConfig + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) + selector: "typeParameter" + modifiers?: ("unused")[] +} | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig + failureMessage?: string + format: _TypescriptEslintNamingConventionFormatOptionsConfig + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions + filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) + selector: "import" + modifiers?: ("default" | "namespace")[] +})[] +interface _TypescriptEslintNamingConvention_MatchRegexConfig { + match: boolean + regex: string +} +// ----- @typescript-eslint/no-base-to-string ----- +type TypescriptEslintNoBaseToString = []|[{ - ignoreTypeReferences?: boolean + ignoredTypeNames?: string[] +}] +// ----- @typescript-eslint/no-confusing-void-expression ----- +type TypescriptEslintNoConfusingVoidExpression = []|[{ - typedefs?: boolean + ignoreArrowShorthand?: boolean - variables?: boolean -})] -// ----- @typescript-eslint/no-var-requires ----- -type TypescriptEslintNoVarRequires = []|[{ + ignoreVoidOperator?: boolean - allow?: string[] + ignoreVoidReturningFunctions?: boolean }] -// ----- @typescript-eslint/only-throw-error ----- -type TypescriptEslintOnlyThrowError = []|[{ +// ----- @typescript-eslint/no-deprecated ----- +type TypescriptEslintNoDeprecated = []|[{ allow?: (string | { from: "file" @@ -10835,117 +9087,55 @@ type TypescriptEslintOnlyThrowError = []|[{ name: (string | [string, ...(string)[]]) package: string })[] - - allowThrowingAny?: boolean - - allowThrowingUnknown?: boolean }] -// ----- @typescript-eslint/parameter-properties ----- -type TypescriptEslintParameterProperties = []|[{ +// ----- @typescript-eslint/no-duplicate-type-constituents ----- +type TypescriptEslintNoDuplicateTypeConstituents = []|[{ - allow?: ("readonly" | "private" | "protected" | "public" | "private readonly" | "protected readonly" | "public readonly")[] + ignoreIntersections?: boolean - prefer?: ("class-property" | "parameter-property") + ignoreUnions?: boolean }] -// ----- @typescript-eslint/prefer-destructuring ----- -type TypescriptEslintPreferDestructuring = []|[({ - AssignmentExpression?: { - array?: boolean - object?: boolean - } - VariableDeclarator?: { - array?: boolean - object?: boolean - } -} | { - array?: boolean - object?: boolean -})]|[({ - AssignmentExpression?: { - array?: boolean - object?: boolean - } - VariableDeclarator?: { - array?: boolean - object?: boolean - } -} | { - array?: boolean - object?: boolean -}), { - - enforceForDeclarationWithTypeAnnotation?: boolean +// ----- @typescript-eslint/no-empty-function ----- +type TypescriptEslintNoEmptyFunction = []|[{ - enforceForRenamedProperties?: boolean - [k: string]: unknown | undefined + allow?: ("functions" | "arrowFunctions" | "generatorFunctions" | "methods" | "generatorMethods" | "getters" | "setters" | "constructors" | "private-constructors" | "protected-constructors" | "asyncFunctions" | "asyncMethods" | "decoratedFunctions" | "overrideMethods")[] }] -// ----- @typescript-eslint/prefer-literal-enum-member ----- -type TypescriptEslintPreferLiteralEnumMember = []|[{ +// ----- @typescript-eslint/no-empty-interface ----- +type TypescriptEslintNoEmptyInterface = []|[{ - allowBitwiseExpressions?: boolean + allowSingleExtends?: boolean }] -// ----- @typescript-eslint/prefer-nullish-coalescing ----- -type TypescriptEslintPreferNullishCoalescing = []|[{ - - allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean - - ignoreBooleanCoercion?: boolean - - ignoreConditionalTests?: boolean +// ----- @typescript-eslint/no-empty-object-type ----- +type TypescriptEslintNoEmptyObjectType = []|[{ - ignoreMixedLogicalExpressions?: boolean + allowInterfaces?: ("always" | "never" | "with-single-extends") - ignorePrimitives?: ({ - - bigint?: boolean - - boolean?: boolean - - number?: boolean - - string?: boolean - [k: string]: unknown | undefined - } | true) + allowObjectTypes?: ("always" | "never") - ignoreTernaryTests?: boolean + allowWithName?: string }] -// ----- @typescript-eslint/prefer-optional-chain ----- -type TypescriptEslintPreferOptionalChain = []|[{ - - allowPotentiallyUnsafeFixesThatModifyTheReturnTypeIKnowWhatImDoing?: boolean - - checkAny?: boolean - - checkBigInt?: boolean - - checkBoolean?: boolean - - checkNumber?: boolean - - checkString?: boolean +// ----- @typescript-eslint/no-explicit-any ----- +type TypescriptEslintNoExplicitAny = []|[{ - checkUnknown?: boolean + fixToUnknown?: boolean - requireNullish?: boolean + ignoreRestArgs?: boolean }] -// ----- @typescript-eslint/prefer-promise-reject-errors ----- -type TypescriptEslintPreferPromiseRejectErrors = []|[{ +// ----- @typescript-eslint/no-extraneous-class ----- +type TypescriptEslintNoExtraneousClass = []|[{ - allowEmptyReject?: boolean + allowConstructorOnly?: boolean - allowThrowingAny?: boolean + allowEmpty?: boolean - allowThrowingUnknown?: boolean -}] -// ----- @typescript-eslint/prefer-readonly ----- -type TypescriptEslintPreferReadonly = []|[{ + allowStaticOnly?: boolean - onlyInlineLambdas?: boolean + allowWithDecorator?: boolean }] -// ----- @typescript-eslint/prefer-readonly-parameter-types ----- -type TypescriptEslintPreferReadonlyParameterTypes = []|[{ +// ----- @typescript-eslint/no-floating-promises ----- +type TypescriptEslintNoFloatingPromises = []|[{ - allow?: (string | { + allowForKnownSafeCalls?: (string | { from: "file" name: (string | [string, ...(string)[]]) path?: string @@ -10958,70 +9148,7 @@ type TypescriptEslintPreferReadonlyParameterTypes = []|[{ package: string })[] - checkParameterProperties?: boolean - - ignoreInferredTypes?: boolean - - treatMethodsAsReadonly?: boolean -}] -// ----- @typescript-eslint/prefer-string-starts-ends-with ----- -type TypescriptEslintPreferStringStartsEndsWith = []|[{ - - allowSingleElementEquality?: ("always" | "never") -}] -// ----- @typescript-eslint/promise-function-async ----- -type TypescriptEslintPromiseFunctionAsync = []|[{ - - allowAny?: boolean - - allowedPromiseNames?: string[] - - checkArrowFunctions?: boolean - - checkFunctionDeclarations?: boolean - - checkFunctionExpressions?: boolean - - checkMethodDeclarations?: boolean -}] -// ----- @typescript-eslint/require-array-sort-compare ----- -type TypescriptEslintRequireArraySortCompare = []|[{ - - ignoreStringArrays?: boolean -}] -// ----- @typescript-eslint/restrict-plus-operands ----- -type TypescriptEslintRestrictPlusOperands = []|[{ - - allowAny?: boolean - - allowBoolean?: boolean - - allowNullish?: boolean - - allowNumberAndString?: boolean - - allowRegExp?: boolean - - skipCompoundAssignments?: boolean -}] -// ----- @typescript-eslint/restrict-template-expressions ----- -type TypescriptEslintRestrictTemplateExpressions = []|[{ - - allowAny?: boolean - - allowArray?: boolean - - allowBoolean?: boolean - - allowNullish?: boolean - - allowNumber?: boolean - - allowRegExp?: boolean - - allowNever?: boolean - - allow?: (string | { + allowForKnownSafePromises?: (string | { from: "file" name: (string | [string, ...(string)[]]) path?: string @@ -11033,1813 +9160,1651 @@ type TypescriptEslintRestrictTemplateExpressions = []|[{ name: (string | [string, ...(string)[]]) package: string })[] -}] -// ----- @typescript-eslint/return-await ----- -type TypescriptEslintReturnAwait = []|[(("always" | "error-handling-correctness-only" | "in-try-catch" | "never") & string)] -// ----- @typescript-eslint/sort-type-constituents ----- -type TypescriptEslintSortTypeConstituents = []|[{ - - caseSensitive?: boolean - - checkIntersections?: boolean - - checkUnions?: boolean - - groupOrder?: ("conditional" | "function" | "import" | "intersection" | "keyword" | "nullish" | "literal" | "named" | "object" | "operator" | "tuple" | "union")[] -}] -// ----- @typescript-eslint/strict-boolean-expressions ----- -type TypescriptEslintStrictBooleanExpressions = []|[{ - - allowAny?: boolean - - allowNullableBoolean?: boolean - - allowNullableEnum?: boolean - - allowNullableNumber?: boolean - - allowNullableObject?: boolean - - allowNullableString?: boolean - allowNumber?: boolean + checkThenables?: boolean - allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean + ignoreIIFE?: boolean - allowString?: boolean + ignoreVoid?: boolean }] -// ----- @typescript-eslint/switch-exhaustiveness-check ----- -type TypescriptEslintSwitchExhaustivenessCheck = []|[{ - - allowDefaultCaseForExhaustiveSwitch?: boolean - - considerDefaultExhaustiveForUnions?: boolean +// ----- @typescript-eslint/no-inferrable-types ----- +type TypescriptEslintNoInferrableTypes = []|[{ - defaultCaseCommentPattern?: string + ignoreParameters?: boolean - requireDefaultForNonUnion?: boolean + ignoreProperties?: boolean }] -// ----- @typescript-eslint/triple-slash-reference ----- -type TypescriptEslintTripleSlashReference = []|[{ - - lib?: ("always" | "never") +// ----- @typescript-eslint/no-invalid-this ----- +type TypescriptEslintNoInvalidThis = []|[{ + capIsConstructor?: boolean +}] +// ----- @typescript-eslint/no-invalid-void-type ----- +type TypescriptEslintNoInvalidVoidType = []|[{ - path?: ("always" | "never") + allowAsThisParameter?: boolean - types?: ("always" | "never" | "prefer-import") + allowInGenericTypeArguments?: (boolean | [string, ...(string)[]]) }] -// ----- @typescript-eslint/typedef ----- -type TypescriptEslintTypedef = []|[{ +// ----- @typescript-eslint/no-magic-numbers ----- +type TypescriptEslintNoMagicNumbers = []|[{ + detectObjects?: boolean + enforceConst?: boolean + ignore?: (number | string)[] + ignoreArrayIndexes?: boolean + ignoreDefaultValues?: boolean + ignoreClassFieldInitialValues?: boolean - arrayDestructuring?: boolean + ignoreEnums?: boolean - arrowParameter?: boolean + ignoreNumericLiteralTypes?: boolean - memberVariableDeclaration?: boolean + ignoreReadonlyClassProperties?: boolean - objectDestructuring?: boolean + ignoreTypeIndexes?: boolean +}] +// ----- @typescript-eslint/no-meaningless-void-operator ----- +type TypescriptEslintNoMeaninglessVoidOperator = []|[{ - parameter?: boolean + checkNever?: boolean +}] +// ----- @typescript-eslint/no-misused-promises ----- +type TypescriptEslintNoMisusedPromises = []|[{ - propertyDeclaration?: boolean + checksConditionals?: boolean - variableDeclaration?: boolean + checksSpreads?: boolean - variableDeclarationIgnoreFunction?: boolean + checksVoidReturn?: (boolean | { + + arguments?: boolean + + attributes?: boolean + + inheritedMethods?: boolean + + properties?: boolean + + returns?: boolean + + variables?: boolean + }) }] -// ----- @typescript-eslint/unbound-method ----- -type TypescriptEslintUnboundMethod = []|[{ +// ----- @typescript-eslint/no-misused-spread ----- +type TypescriptEslintNoMisusedSpread = []|[{ - ignoreStatic?: boolean + allow?: (string | { + from: "file" + name: (string | [string, ...(string)[]]) + path?: string + } | { + from: "lib" + name: (string | [string, ...(string)[]]) + } | { + from: "package" + name: (string | [string, ...(string)[]]) + package: string + })[] }] -// ----- @typescript-eslint/unified-signatures ----- -type TypescriptEslintUnifiedSignatures = []|[{ +// ----- @typescript-eslint/no-namespace ----- +type TypescriptEslintNoNamespace = []|[{ - ignoreDifferentlyNamedParameters?: boolean -}] -// ----- accessor-pairs ----- -type AccessorPairs = []|[{ - getWithoutSet?: boolean - setWithoutGet?: boolean - enforceForClassMembers?: boolean -}] -// ----- antfu/consistent-chaining ----- -type AntfuConsistentChaining = []|[{ + allowDeclarations?: boolean - allowLeadingPropertyAccess?: boolean -}] -// ----- antfu/consistent-list-newline ----- -type AntfuConsistentListNewline = []|[{ - ArrayExpression?: boolean - ArrayPattern?: boolean - ArrowFunctionExpression?: boolean - CallExpression?: boolean - ExportNamedDeclaration?: boolean - FunctionDeclaration?: boolean - FunctionExpression?: boolean - ImportDeclaration?: boolean - JSONArrayExpression?: boolean - JSONObjectExpression?: boolean - JSXOpeningElement?: boolean - NewExpression?: boolean - ObjectExpression?: boolean - ObjectPattern?: boolean - TSFunctionType?: boolean - TSInterfaceDeclaration?: boolean - TSTupleType?: boolean - TSTypeLiteral?: boolean - TSTypeParameterDeclaration?: boolean - TSTypeParameterInstantiation?: boolean -}] -// ----- antfu/indent-unindent ----- -type AntfuIndentUnindent = []|[{ - indent?: number - tags?: string[] -}] -// ----- array-bracket-newline ----- -type ArrayBracketNewline = []|[(("always" | "never" | "consistent") | { - multiline?: boolean - minItems?: (number | null) -})] -// ----- array-bracket-spacing ----- -type ArrayBracketSpacing = []|[("always" | "never")]|[("always" | "never"), { - singleValue?: boolean - objectsInArrays?: boolean - arraysInArrays?: boolean -}] -// ----- array-callback-return ----- -type ArrayCallbackReturn = []|[{ - allowImplicit?: boolean - checkForEach?: boolean - allowVoid?: boolean -}] -// ----- array-element-newline ----- -type ArrayElementNewline = []|[(_ArrayElementNewlineBasicConfig | { - ArrayExpression?: _ArrayElementNewlineBasicConfig - ArrayPattern?: _ArrayElementNewlineBasicConfig -})] -type _ArrayElementNewlineBasicConfig = (("always" | "never" | "consistent") | { - multiline?: boolean - minItems?: (number | null) -}) -// ----- arrow-body-style ----- -type ArrowBodyStyle = ([]|[("always" | "never")] | []|["as-needed"]|["as-needed", { - requireReturnForObjectLiteral?: boolean -}]) -// ----- arrow-parens ----- -type ArrowParens = []|[("always" | "as-needed")]|[("always" | "as-needed"), { - requireForBlockBody?: boolean -}] -// ----- arrow-spacing ----- -type ArrowSpacing = []|[{ - before?: boolean - after?: boolean -}] -// ----- astro/jsx-a11y/alt-text ----- -type AstroJsxA11YAltText = []|[{ - elements?: string[] - img?: string[] - object?: string[] - area?: string[] - "input[type=\"image\"]"?: string[] - [k: string]: unknown | undefined -}] -// ----- astro/jsx-a11y/anchor-ambiguous-text ----- -type AstroJsxA11YAnchorAmbiguousText = []|[{ - words?: string[] - [k: string]: unknown | undefined -}] -// ----- astro/jsx-a11y/anchor-has-content ----- -type AstroJsxA11YAnchorHasContent = []|[{ - components?: string[] - [k: string]: unknown | undefined + allowDefinitionFiles?: boolean }] -// ----- astro/jsx-a11y/anchor-is-valid ----- -type AstroJsxA11YAnchorIsValid = []|[{ - components?: string[] - specialLink?: string[] +// ----- @typescript-eslint/no-redeclare ----- +type TypescriptEslintNoRedeclare = []|[{ - aspects?: [("noHref" | "invalidHref" | "preferButton"), ...(("noHref" | "invalidHref" | "preferButton"))[]] - [k: string]: unknown | undefined -}] -// ----- astro/jsx-a11y/aria-activedescendant-has-tabindex ----- -type AstroJsxA11YAriaActivedescendantHasTabindex = []|[{ - [k: string]: unknown | undefined -}] -// ----- astro/jsx-a11y/aria-props ----- -type AstroJsxA11YAriaProps = []|[{ - [k: string]: unknown | undefined -}] -// ----- astro/jsx-a11y/aria-proptypes ----- -type AstroJsxA11YAriaProptypes = []|[{ - [k: string]: unknown | undefined -}] -// ----- astro/jsx-a11y/aria-role ----- -type AstroJsxA11YAriaRole = []|[{ - allowedInvalidRoles?: string[] - ignoreNonDOM?: boolean - [k: string]: unknown | undefined -}] -// ----- astro/jsx-a11y/aria-unsupported-elements ----- -type AstroJsxA11YAriaUnsupportedElements = []|[{ - [k: string]: unknown | undefined -}] -// ----- astro/jsx-a11y/autocomplete-valid ----- -type AstroJsxA11YAutocompleteValid = []|[{ - inputComponents?: string[] - [k: string]: unknown | undefined -}] -// ----- astro/jsx-a11y/click-events-have-key-events ----- -type AstroJsxA11YClickEventsHaveKeyEvents = []|[{ - [k: string]: unknown | undefined -}] -// ----- astro/jsx-a11y/control-has-associated-label ----- -type AstroJsxA11YControlHasAssociatedLabel = []|[{ - labelAttributes?: string[] - controlComponents?: string[] - ignoreElements?: string[] - ignoreRoles?: string[] + builtinGlobals?: boolean - depth?: number - [k: string]: unknown | undefined -}] -// ----- astro/jsx-a11y/heading-has-content ----- -type AstroJsxA11YHeadingHasContent = []|[{ - components?: string[] - [k: string]: unknown | undefined -}] -// ----- astro/jsx-a11y/html-has-lang ----- -type AstroJsxA11YHtmlHasLang = []|[{ - [k: string]: unknown | undefined -}] -// ----- astro/jsx-a11y/iframe-has-title ----- -type AstroJsxA11YIframeHasTitle = []|[{ - [k: string]: unknown | undefined + ignoreDeclarationMerge?: boolean }] -// ----- astro/jsx-a11y/img-redundant-alt ----- -type AstroJsxA11YImgRedundantAlt = []|[{ - components?: string[] - words?: string[] - [k: string]: unknown | undefined +// ----- @typescript-eslint/no-require-imports ----- +type TypescriptEslintNoRequireImports = []|[{ + + allow?: string[] + + allowAsImport?: boolean }] -// ----- astro/jsx-a11y/interactive-supports-focus ----- -type AstroJsxA11YInteractiveSupportsFocus = []|[{ +// ----- @typescript-eslint/no-restricted-imports ----- +type TypescriptEslintNoRestrictedImports = ((string | { + name: string + message?: string + importNames?: string[] + allowImportNames?: string[] + + allowTypeImports?: boolean +})[] | []|[{ + paths?: (string | { + name: string + message?: string + importNames?: string[] + allowImportNames?: string[] + + allowTypeImports?: boolean + })[] + patterns?: (string[] | { + + importNames?: [string, ...(string)[]] + + allowImportNames?: [string, ...(string)[]] + + group?: [string, ...(string)[]] + regex?: string + importNamePattern?: string + allowImportNamePattern?: string + message?: string + caseSensitive?: boolean + + allowTypeImports?: boolean + }[]) +}]) +// ----- @typescript-eslint/no-restricted-types ----- +type TypescriptEslintNoRestrictedTypes = []|[{ - tabbable?: ("button" | "checkbox" | "columnheader" | "combobox" | "grid" | "gridcell" | "link" | "listbox" | "menu" | "menubar" | "menuitem" | "menuitemcheckbox" | "menuitemradio" | "option" | "progressbar" | "radio" | "radiogroup" | "row" | "rowheader" | "scrollbar" | "searchbox" | "slider" | "spinbutton" | "switch" | "tab" | "tablist" | "textbox" | "tree" | "treegrid" | "treeitem" | "doc-backlink" | "doc-biblioref" | "doc-glossref" | "doc-noteref")[] - [k: string]: unknown | undefined + types?: { + [k: string]: (true | string | { + + fixWith?: string + + message?: string + + suggest?: string[] + }) | undefined + } }] -// ----- astro/jsx-a11y/label-has-associated-control ----- -type AstroJsxA11YLabelHasAssociatedControl = []|[{ - labelComponents?: string[] - labelAttributes?: string[] - controlComponents?: string[] +// ----- @typescript-eslint/no-shadow ----- +type TypescriptEslintNoShadow = []|[{ - assert?: ("htmlFor" | "nesting" | "both" | "either") + allow?: string[] - depth?: number - [k: string]: unknown | undefined -}] -// ----- astro/jsx-a11y/lang ----- -type AstroJsxA11YLang = []|[{ - [k: string]: unknown | undefined -}] -// ----- astro/jsx-a11y/media-has-caption ----- -type AstroJsxA11YMediaHasCaption = []|[{ - audio?: string[] - video?: string[] - track?: string[] - [k: string]: unknown | undefined -}] -// ----- astro/jsx-a11y/mouse-events-have-key-events ----- -type AstroJsxA11YMouseEventsHaveKeyEvents = []|[{ + builtinGlobals?: boolean - hoverInHandlers?: string[] + hoist?: ("all" | "functions" | "functions-and-types" | "never" | "types") - hoverOutHandlers?: string[] - [k: string]: unknown | undefined -}] -// ----- astro/jsx-a11y/no-access-key ----- -type AstroJsxA11YNoAccessKey = []|[{ - [k: string]: unknown | undefined -}] -// ----- astro/jsx-a11y/no-aria-hidden-on-focusable ----- -type AstroJsxA11YNoAriaHiddenOnFocusable = []|[{ - [k: string]: unknown | undefined -}] -// ----- astro/jsx-a11y/no-autofocus ----- -type AstroJsxA11YNoAutofocus = []|[{ - ignoreNonDOM?: boolean - [k: string]: unknown | undefined -}] -// ----- astro/jsx-a11y/no-distracting-elements ----- -type AstroJsxA11YNoDistractingElements = []|[{ + ignoreFunctionTypeParameterNameValueShadow?: boolean - elements?: ("marquee" | "blink")[] - [k: string]: unknown | undefined -}] -// ----- astro/jsx-a11y/no-interactive-element-to-noninteractive-role ----- -type AstroJsxA11YNoInteractiveElementToNoninteractiveRole = []|[{ - [k: string]: string[] | undefined -}] -// ----- astro/jsx-a11y/no-noninteractive-element-interactions ----- -type AstroJsxA11YNoNoninteractiveElementInteractions = []|[{ - handlers?: string[] - [k: string]: unknown | undefined -}] -// ----- astro/jsx-a11y/no-noninteractive-element-to-interactive-role ----- -type AstroJsxA11YNoNoninteractiveElementToInteractiveRole = []|[{ - [k: string]: string[] | undefined + ignoreOnInitialization?: boolean + + ignoreTypeValueShadow?: boolean }] -// ----- astro/jsx-a11y/no-noninteractive-tabindex ----- -type AstroJsxA11YNoNoninteractiveTabindex = []|[{ +// ----- @typescript-eslint/no-this-alias ----- +type TypescriptEslintNoThisAlias = []|[{ - roles?: string[] + allowDestructuring?: boolean - tags?: string[] - [k: string]: unknown | undefined -}] -// ----- astro/jsx-a11y/no-redundant-roles ----- -type AstroJsxA11YNoRedundantRoles = []|[{ - [k: string]: string[] | undefined -}] -// ----- astro/jsx-a11y/no-static-element-interactions ----- -type AstroJsxA11YNoStaticElementInteractions = []|[{ - handlers?: string[] - [k: string]: unknown | undefined -}] -// ----- astro/jsx-a11y/prefer-tag-over-role ----- -type AstroJsxA11YPreferTagOverRole = []|[{ - [k: string]: unknown | undefined + allowedNames?: string[] }] -// ----- astro/jsx-a11y/role-has-required-aria-props ----- -type AstroJsxA11YRoleHasRequiredAriaProps = []|[{ - [k: string]: unknown | undefined +// ----- @typescript-eslint/no-type-alias ----- +type TypescriptEslintNoTypeAlias = []|[{ + + allowAliases?: ("always" | "never" | "in-unions" | "in-intersections" | "in-unions-and-intersections") + + allowCallbacks?: ("always" | "never") + + allowConditionalTypes?: ("always" | "never") + + allowConstructors?: ("always" | "never") + + allowGenerics?: ("always" | "never") + + allowLiterals?: ("always" | "never" | "in-unions" | "in-intersections" | "in-unions-and-intersections") + + allowMappedTypes?: ("always" | "never" | "in-unions" | "in-intersections" | "in-unions-and-intersections") + + allowTupleTypes?: ("always" | "never" | "in-unions" | "in-intersections" | "in-unions-and-intersections") }] -// ----- astro/jsx-a11y/role-supports-aria-props ----- -type AstroJsxA11YRoleSupportsAriaProps = []|[{ - [k: string]: unknown | undefined +// ----- @typescript-eslint/no-unnecessary-boolean-literal-compare ----- +type TypescriptEslintNoUnnecessaryBooleanLiteralCompare = []|[{ + + allowComparingNullableBooleansToFalse?: boolean + + allowComparingNullableBooleansToTrue?: boolean + + allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean }] -// ----- astro/jsx-a11y/scope ----- -type AstroJsxA11YScope = []|[{ - [k: string]: unknown | undefined +// ----- @typescript-eslint/no-unnecessary-condition ----- +type TypescriptEslintNoUnnecessaryCondition = []|[{ + + allowConstantLoopConditions?: (boolean | ("always" | "never" | "only-allowed-literals")) + + allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean + + checkTypePredicates?: boolean }] -// ----- astro/jsx-a11y/tabindex-no-positive ----- -type AstroJsxA11YTabindexNoPositive = []|[{ - [k: string]: unknown | undefined +// ----- @typescript-eslint/no-unnecessary-type-assertion ----- +type TypescriptEslintNoUnnecessaryTypeAssertion = []|[{ + + checkLiteralConstAssertions?: boolean + + typesToIgnore?: string[] }] -// ----- astro/prefer-split-class-list ----- -type AstroPreferSplitClassList = []|[{ - splitLiteral?: boolean +// ----- @typescript-eslint/no-unused-expressions ----- +type TypescriptEslintNoUnusedExpressions = []|[{ + allowShortCircuit?: boolean + allowTernary?: boolean + allowTaggedTemplates?: boolean + enforceForJSX?: boolean + ignoreDirectives?: boolean }] -// ----- astro/semi ----- -type AstroSemi = ([]|["never"]|["never", { - beforeStatementContinuationChars?: ("always" | "any" | "never") -}] | []|["always"]|["always", { - omitLastInOneLineBlock?: boolean - omitLastInOneLineClassBody?: boolean -}]) -// ----- astro/sort-attributes ----- -type AstroSortAttributes = []|[{ - type?: ("alphabetical" | "line-length") - ignoreCase?: boolean - order?: ("asc" | "desc") +// ----- @typescript-eslint/no-unused-vars ----- +type TypescriptEslintNoUnusedVars = []|[(("all" | "local") | { + + args?: ("all" | "after-used" | "none") + + argsIgnorePattern?: string + + caughtErrors?: ("all" | "none") + + caughtErrorsIgnorePattern?: string + + destructuredArrayIgnorePattern?: string + + ignoreClassWithStaticInitBlock?: boolean + + ignoreRestSiblings?: boolean + + reportUsedIgnorePattern?: boolean + + vars?: ("all" | "local") + + varsIgnorePattern?: string +})] +// ----- @typescript-eslint/no-use-before-define ----- +type TypescriptEslintNoUseBeforeDefine = []|[("nofunc" | { + + allowNamedExports?: boolean + + classes?: boolean + + enums?: boolean + + functions?: boolean + + ignoreTypeReferences?: boolean + + typedefs?: boolean + + variables?: boolean +})] +// ----- @typescript-eslint/no-var-requires ----- +type TypescriptEslintNoVarRequires = []|[{ + + allow?: string[] }] -// ----- block-spacing ----- -type BlockSpacing = []|[("always" | "never")] -// ----- brace-style ----- -type BraceStyle = []|[("1tbs" | "stroustrup" | "allman")]|[("1tbs" | "stroustrup" | "allman"), { - allowSingleLine?: boolean +// ----- @typescript-eslint/only-throw-error ----- +type TypescriptEslintOnlyThrowError = []|[{ + + allow?: (string | { + from: "file" + name: (string | [string, ...(string)[]]) + path?: string + } | { + from: "lib" + name: (string | [string, ...(string)[]]) + } | { + from: "package" + name: (string | [string, ...(string)[]]) + package: string + })[] + + allowRethrowing?: boolean + + allowThrowingAny?: boolean + + allowThrowingUnknown?: boolean }] -// ----- callback-return ----- -type CallbackReturn = []|[string[]] -// ----- camelcase ----- -type Camelcase = []|[{ - ignoreDestructuring?: boolean - ignoreImports?: boolean - ignoreGlobals?: boolean - properties?: ("always" | "never") +// ----- @typescript-eslint/parameter-properties ----- +type TypescriptEslintParameterProperties = []|[{ - allow?: string[] + allow?: ("readonly" | "private" | "protected" | "public" | "private readonly" | "protected readonly" | "public readonly")[] + + prefer?: ("class-property" | "parameter-property") }] -// ----- capitalized-comments ----- -type CapitalizedComments = []|[("always" | "never")]|[("always" | "never"), ({ - ignorePattern?: string - ignoreInlineComments?: boolean - ignoreConsecutiveComments?: boolean -} | { - line?: { - ignorePattern?: string - ignoreInlineComments?: boolean - ignoreConsecutiveComments?: boolean +// ----- @typescript-eslint/prefer-destructuring ----- +type TypescriptEslintPreferDestructuring = []|[({ + AssignmentExpression?: { + array?: boolean + object?: boolean } - block?: { - ignorePattern?: string - ignoreInlineComments?: boolean - ignoreConsecutiveComments?: boolean + VariableDeclarator?: { + array?: boolean + object?: boolean + } +} | { + array?: boolean + object?: boolean +})]|[({ + AssignmentExpression?: { + array?: boolean + object?: boolean } -})] -// ----- class-methods-use-this ----- -type ClassMethodsUseThis = []|[{ - exceptMethods?: string[] - enforceForClassFields?: boolean -}] -// ----- comma-dangle ----- -type CommaDangle = []|[(_CommaDangleValue | { - arrays?: _CommaDangleValueWithIgnore - objects?: _CommaDangleValueWithIgnore - imports?: _CommaDangleValueWithIgnore - exports?: _CommaDangleValueWithIgnore - functions?: _CommaDangleValueWithIgnore -})] -type _CommaDangleValue = ("always-multiline" | "always" | "never" | "only-multiline") -type _CommaDangleValueWithIgnore = ("always-multiline" | "always" | "ignore" | "never" | "only-multiline") -// ----- comma-spacing ----- -type CommaSpacing = []|[{ - before?: boolean - after?: boolean -}] -// ----- comma-style ----- -type CommaStyle = []|[("first" | "last")]|[("first" | "last"), { - exceptions?: { - [k: string]: boolean | undefined + VariableDeclarator?: { + array?: boolean + object?: boolean } +} | { + array?: boolean + object?: boolean +}), { + + enforceForDeclarationWithTypeAnnotation?: boolean + + enforceForRenamedProperties?: boolean + [k: string]: unknown | undefined }] -// ----- compat/compat ----- -type CompatCompat = []|[string] -// ----- complexity ----- -type Complexity = []|[(number | { - maximum?: number - max?: number - variant?: ("classic" | "modified") -})] -// ----- computed-property-spacing ----- -type ComputedPropertySpacing = []|[("always" | "never")]|[("always" | "never"), { - enforceForClassMembers?: boolean -}] -// ----- consistent-return ----- -type ConsistentReturn = []|[{ - treatUndefinedAsUnspecified?: boolean -}] -// ----- consistent-this ----- -type ConsistentThis = string[] -// ----- curly ----- -type Curly = ([]|["all"] | []|[("multi" | "multi-line" | "multi-or-nest")]|[("multi" | "multi-line" | "multi-or-nest"), "consistent"]) -// ----- default-case ----- -type DefaultCase = []|[{ - commentPattern?: string -}] -// ----- dot-location ----- -type DotLocation = []|[("object" | "property")] -// ----- dot-notation ----- -type DotNotation = []|[{ - allowKeywords?: boolean - allowPattern?: string -}] -// ----- eol-last ----- -type EolLast = []|[("always" | "never" | "unix" | "windows")] -// ----- eqeqeq ----- -type Eqeqeq = ([]|["always"]|["always", { - null?: ("always" | "never" | "ignore") -}] | []|[("smart" | "allow-null")]) -// ----- eslint-comments/disable-enable-pair ----- -type EslintCommentsDisableEnablePair = []|[{ - allowWholeFile?: boolean +// ----- @typescript-eslint/prefer-literal-enum-member ----- +type TypescriptEslintPreferLiteralEnumMember = []|[{ + + allowBitwiseExpressions?: boolean }] -// ----- eslint-comments/no-restricted-disable ----- -type EslintCommentsNoRestrictedDisable = string[] -// ----- eslint-comments/no-use ----- -type EslintCommentsNoUse = []|[{ - allow?: ("eslint" | "eslint-disable" | "eslint-disable-line" | "eslint-disable-next-line" | "eslint-enable" | "eslint-env" | "exported" | "global" | "globals")[] +// ----- @typescript-eslint/prefer-nullish-coalescing ----- +type TypescriptEslintPreferNullishCoalescing = []|[{ + + allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean + + ignoreBooleanCoercion?: boolean + + ignoreConditionalTests?: boolean + + ignoreIfStatements?: boolean + + ignoreMixedLogicalExpressions?: boolean + + ignorePrimitives?: ({ + + bigint?: boolean + + boolean?: boolean + + number?: boolean + + string?: boolean + [k: string]: unknown | undefined + } | true) + + ignoreTernaryTests?: boolean }] -// ----- eslint-comments/require-description ----- -type EslintCommentsRequireDescription = []|[{ - ignore?: ("eslint" | "eslint-disable" | "eslint-disable-line" | "eslint-disable-next-line" | "eslint-enable" | "eslint-env" | "exported" | "global" | "globals")[] +// ----- @typescript-eslint/prefer-optional-chain ----- +type TypescriptEslintPreferOptionalChain = []|[{ + + allowPotentiallyUnsafeFixesThatModifyTheReturnTypeIKnowWhatImDoing?: boolean + + checkAny?: boolean + + checkBigInt?: boolean + + checkBoolean?: boolean + + checkNumber?: boolean + + checkString?: boolean + + checkUnknown?: boolean + + requireNullish?: boolean }] -// ----- format/dprint ----- -type FormatDprint = []|[{ - language?: string - languageOptions?: { - [k: string]: unknown | undefined - } - [k: string]: unknown | undefined +// ----- @typescript-eslint/prefer-promise-reject-errors ----- +type TypescriptEslintPreferPromiseRejectErrors = []|[{ + + allowEmptyReject?: boolean + + allowThrowingAny?: boolean + + allowThrowingUnknown?: boolean }] -// ----- format/prettier ----- -type FormatPrettier = []|[{ - parser?: string - [k: string]: unknown | undefined +// ----- @typescript-eslint/prefer-readonly ----- +type TypescriptEslintPreferReadonly = []|[{ + + onlyInlineLambdas?: boolean }] -// ----- func-call-spacing ----- -type FuncCallSpacing = ([]|["never"] | []|["always"]|["always", { - allowNewlines?: boolean -}]) -// ----- func-name-matching ----- -type FuncNameMatching = ([]|[("always" | "never")]|[("always" | "never"), { - considerPropertyDescriptor?: boolean - includeCommonJSModuleExports?: boolean -}] | []|[{ - considerPropertyDescriptor?: boolean - includeCommonJSModuleExports?: boolean -}]) -// ----- func-names ----- -type FuncNames = []|[_FuncNamesValue]|[_FuncNamesValue, { - generators?: _FuncNamesValue +// ----- @typescript-eslint/prefer-readonly-parameter-types ----- +type TypescriptEslintPreferReadonlyParameterTypes = []|[{ + + allow?: (string | { + from: "file" + name: (string | [string, ...(string)[]]) + path?: string + } | { + from: "lib" + name: (string | [string, ...(string)[]]) + } | { + from: "package" + name: (string | [string, ...(string)[]]) + package: string + })[] + + checkParameterProperties?: boolean + + ignoreInferredTypes?: boolean + + treatMethodsAsReadonly?: boolean }] -type _FuncNamesValue = ("always" | "as-needed" | "never") -// ----- func-style ----- -type FuncStyle = []|[("declaration" | "expression")]|[("declaration" | "expression"), { - allowArrowFunctions?: boolean - overrides?: { - namedExports?: ("declaration" | "expression" | "ignore") - } +// ----- @typescript-eslint/prefer-string-starts-ends-with ----- +type TypescriptEslintPreferStringStartsEndsWith = []|[{ + + allowSingleElementEquality?: ("always" | "never") }] -// ----- function-call-argument-newline ----- -type FunctionCallArgumentNewline = []|[("always" | "never" | "consistent")] -// ----- function-paren-newline ----- -type FunctionParenNewline = []|[(("always" | "never" | "consistent" | "multiline" | "multiline-arguments") | { - minItems?: number -})] -// ----- generator-star-spacing ----- -type GeneratorStarSpacing = []|[(("before" | "after" | "both" | "neither") | { - before?: boolean - after?: boolean - named?: (("before" | "after" | "both" | "neither") | { - before?: boolean - after?: boolean - }) - anonymous?: (("before" | "after" | "both" | "neither") | { - before?: boolean - after?: boolean - }) - method?: (("before" | "after" | "both" | "neither") | { - before?: boolean - after?: boolean - }) -})] -// ----- getter-return ----- -type GetterReturn = []|[{ - allowImplicit?: boolean -}] -// ----- grouped-accessor-pairs ----- -type GroupedAccessorPairs = []|[("anyOrder" | "getBeforeSet" | "setBeforeGet")] -// ----- handle-callback-err ----- -type HandleCallbackErr = []|[string] -// ----- id-blacklist ----- -type IdBlacklist = string[] -// ----- id-denylist ----- -type IdDenylist = string[] -// ----- id-length ----- -type IdLength = []|[{ - min?: number - max?: number - exceptions?: string[] - exceptionPatterns?: string[] - properties?: ("always" | "never") -}] -// ----- id-match ----- -type IdMatch = []|[string]|[string, { - properties?: boolean - classFields?: boolean - onlyDeclarations?: boolean - ignoreDestructuring?: boolean -}] -// ----- implicit-arrow-linebreak ----- -type ImplicitArrowLinebreak = []|[("beside" | "below")] -// ----- import/consistent-type-specifier-style ----- -type ImportConsistentTypeSpecifierStyle = []|[("prefer-inline" | "prefer-top-level")] -// ----- import/dynamic-import-chunkname ----- -type ImportDynamicImportChunkname = []|[{ - importFunctions?: string[] - allowEmpty?: boolean - webpackChunknameFormat?: string - [k: string]: unknown | undefined +// ----- @typescript-eslint/promise-function-async ----- +type TypescriptEslintPromiseFunctionAsync = []|[{ + + allowAny?: boolean + + allowedPromiseNames?: string[] + + checkArrowFunctions?: boolean + + checkFunctionDeclarations?: boolean + + checkFunctionExpressions?: boolean + + checkMethodDeclarations?: boolean }] -// ----- import/extensions ----- -type ImportExtensions = ([]|[("always" | "ignorePackages" | "never")] | []|[("always" | "ignorePackages" | "never")]|[("always" | "ignorePackages" | "never"), { - pattern?: { - [k: string]: ("always" | "ignorePackages" | "never") - } - ignorePackages?: boolean - checkTypeImports?: boolean - [k: string]: unknown | undefined -}] | []|[{ - pattern?: { - [k: string]: ("always" | "ignorePackages" | "never") - } - ignorePackages?: boolean - checkTypeImports?: boolean - [k: string]: unknown | undefined -}] | []|[("always" | "ignorePackages" | "never")]|[("always" | "ignorePackages" | "never"), { - [k: string]: ("always" | "ignorePackages" | "never") -}] | []|[{ - [k: string]: ("always" | "ignorePackages" | "never") -}]) -// ----- import/first ----- -type ImportFirst = []|[("absolute-first" | "disable-absolute-first")] -// ----- import/imports-first ----- -type ImportImportsFirst = []|[("absolute-first" | "disable-absolute-first")] -// ----- import/max-dependencies ----- -type ImportMaxDependencies = []|[{ - max?: number - ignoreTypeImports?: boolean +// ----- @typescript-eslint/require-array-sort-compare ----- +type TypescriptEslintRequireArraySortCompare = []|[{ + + ignoreStringArrays?: boolean }] -// ----- import/named ----- -type ImportNamed = []|[{ - commonjs?: boolean +// ----- @typescript-eslint/restrict-plus-operands ----- +type TypescriptEslintRestrictPlusOperands = []|[{ + + allowAny?: boolean + + allowBoolean?: boolean + + allowNullish?: boolean + + allowNumberAndString?: boolean + + allowRegExp?: boolean + + skipCompoundAssignments?: boolean }] -// ----- import/namespace ----- -type ImportNamespace = []|[{ +// ----- @typescript-eslint/restrict-template-expressions ----- +type TypescriptEslintRestrictTemplateExpressions = []|[{ + + allowAny?: boolean + + allowArray?: boolean + + allowBoolean?: boolean + + allowNullish?: boolean + + allowNumber?: boolean + + allowRegExp?: boolean - allowComputed?: boolean -}] -// ----- import/newline-after-import ----- -type ImportNewlineAfterImport = []|[{ - count?: number - exactCount?: boolean - considerComments?: boolean + allowNever?: boolean + + allow?: (string | { + from: "file" + name: (string | [string, ...(string)[]]) + path?: string + } | { + from: "lib" + name: (string | [string, ...(string)[]]) + } | { + from: "package" + name: (string | [string, ...(string)[]]) + package: string + })[] }] -// ----- import/no-absolute-path ----- -type ImportNoAbsolutePath = []|[{ - commonjs?: boolean - amd?: boolean - esmodule?: boolean +// ----- @typescript-eslint/return-await ----- +type TypescriptEslintReturnAwait = []|[(("always" | "error-handling-correctness-only" | "in-try-catch" | "never") & string)] +// ----- @typescript-eslint/sort-type-constituents ----- +type TypescriptEslintSortTypeConstituents = []|[{ - ignore?: [string, ...(string)[]] + caseSensitive?: boolean + + checkIntersections?: boolean + + checkUnions?: boolean + + groupOrder?: ("conditional" | "function" | "import" | "intersection" | "keyword" | "nullish" | "literal" | "named" | "object" | "operator" | "tuple" | "union")[] }] -// ----- import/no-anonymous-default-export ----- -type ImportNoAnonymousDefaultExport = []|[{ +// ----- @typescript-eslint/strict-boolean-expressions ----- +type TypescriptEslintStrictBooleanExpressions = []|[{ - allowArray?: boolean + allowAny?: boolean - allowArrowFunction?: boolean + allowNullableBoolean?: boolean - allowCallExpression?: boolean + allowNullableEnum?: boolean - allowAnonymousClass?: boolean + allowNullableNumber?: boolean - allowAnonymousFunction?: boolean + allowNullableObject?: boolean - allowLiteral?: boolean + allowNullableString?: boolean - allowObject?: boolean + allowNumber?: boolean - allowNew?: boolean + allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean + + allowString?: boolean }] -// ----- import/no-commonjs ----- -type ImportNoCommonjs = ([]|["allow-primitive-modules"] | []|[{ - allowPrimitiveModules?: boolean - allowRequire?: boolean - allowConditionalRequire?: boolean -}]) -// ----- import/no-cycle ----- -type ImportNoCycle = []|[{ - commonjs?: boolean - amd?: boolean - esmodule?: boolean +// ----- @typescript-eslint/switch-exhaustiveness-check ----- +type TypescriptEslintSwitchExhaustivenessCheck = []|[{ - ignore?: [string, ...(string)[]] - maxDepth?: (number | "∞") + allowDefaultCaseForExhaustiveSwitch?: boolean - ignoreExternal?: boolean + considerDefaultExhaustiveForUnions?: boolean - allowUnsafeDynamicCyclicDependency?: boolean -}] -// ----- import/no-duplicates ----- -type ImportNoDuplicates = []|[{ - considerQueryString?: boolean - "prefer-inline"?: boolean -}] -// ----- import/no-dynamic-require ----- -type ImportNoDynamicRequire = []|[{ - esmodule?: boolean -}] -// ----- import/no-extraneous-dependencies ----- -type ImportNoExtraneousDependencies = []|[{ - devDependencies?: (boolean | unknown[]) - optionalDependencies?: (boolean | unknown[]) - peerDependencies?: (boolean | unknown[]) - bundledDependencies?: (boolean | unknown[]) - packageDir?: (string | unknown[]) - includeInternal?: boolean - includeTypes?: boolean - whitelist?: unknown[] + defaultCaseCommentPattern?: string + + requireDefaultForNonUnion?: boolean }] -// ----- import/no-import-module-exports ----- -type ImportNoImportModuleExports = []|[{ - exceptions?: unknown[] +// ----- @typescript-eslint/triple-slash-reference ----- +type TypescriptEslintTripleSlashReference = []|[{ + + lib?: ("always" | "never") + + path?: ("always" | "never") + + types?: ("always" | "never" | "prefer-import") }] -// ----- import/no-internal-modules ----- -type ImportNoInternalModules = []|[({ - allow?: string[] -} | { - forbid?: string[] -})] -// ----- import/no-namespace ----- -type ImportNoNamespace = []|[{ - ignore?: string[] - [k: string]: unknown | undefined +// ----- @typescript-eslint/typedef ----- +type TypescriptEslintTypedef = []|[{ + + arrayDestructuring?: boolean + + arrowParameter?: boolean + + memberVariableDeclaration?: boolean + + objectDestructuring?: boolean + + parameter?: boolean + + propertyDeclaration?: boolean + + variableDeclaration?: boolean + + variableDeclarationIgnoreFunction?: boolean }] -// ----- import/no-nodejs-modules ----- -type ImportNoNodejsModules = []|[{ - allow?: string[] +// ----- @typescript-eslint/unbound-method ----- +type TypescriptEslintUnboundMethod = []|[{ + + ignoreStatic?: boolean }] -// ----- import/no-relative-packages ----- -type ImportNoRelativePackages = []|[{ - commonjs?: boolean - amd?: boolean - esmodule?: boolean +// ----- @typescript-eslint/unified-signatures ----- +type TypescriptEslintUnifiedSignatures = []|[{ - ignore?: [string, ...(string)[]] + ignoreDifferentlyNamedParameters?: boolean + + ignoreOverloadsWithDifferentJSDoc?: boolean }] -// ----- import/no-relative-parent-imports ----- -type ImportNoRelativeParentImports = []|[{ - commonjs?: boolean - amd?: boolean - esmodule?: boolean +// ----- antfu/consistent-chaining ----- +type AntfuConsistentChaining = []|[{ - ignore?: [string, ...(string)[]] + allowLeadingPropertyAccess?: boolean }] -// ----- import/no-rename-default ----- -type ImportNoRenameDefault = []|[{ - commonjs?: boolean - preventRenamingBindings?: boolean +// ----- antfu/consistent-list-newline ----- +type AntfuConsistentListNewline = []|[{ + ArrayExpression?: boolean + ArrayPattern?: boolean + ArrowFunctionExpression?: boolean + CallExpression?: boolean + ExportNamedDeclaration?: boolean + FunctionDeclaration?: boolean + FunctionExpression?: boolean + ImportDeclaration?: boolean + JSONArrayExpression?: boolean + JSONObjectExpression?: boolean + JSXOpeningElement?: boolean + NewExpression?: boolean + ObjectExpression?: boolean + ObjectPattern?: boolean + TSFunctionType?: boolean + TSInterfaceDeclaration?: boolean + TSTupleType?: boolean + TSTypeLiteral?: boolean + TSTypeParameterDeclaration?: boolean + TSTypeParameterInstantiation?: boolean }] -// ----- import/no-restricted-paths ----- -type ImportNoRestrictedPaths = []|[{ - - zones?: [{ - target?: (string | [string, ...(string)[]]) - from?: (string | [string, ...(string)[]]) - except?: string[] - message?: string - }, ...({ - target?: (string | [string, ...(string)[]]) - from?: (string | [string, ...(string)[]]) - except?: string[] - message?: string - })[]] - basePath?: string +// ----- antfu/indent-unindent ----- +type AntfuIndentUnindent = []|[{ + indent?: number + tags?: string[] }] -// ----- import/no-unassigned-import ----- -type ImportNoUnassignedImport = []|[{ - devDependencies?: (boolean | unknown[]) - optionalDependencies?: (boolean | unknown[]) - peerDependencies?: (boolean | unknown[]) - allow?: string[] +// ----- astro/jsx-a11y/alt-text ----- +type AstroJsxA11YAltText = []|[{ + elements?: string[] + img?: string[] + object?: string[] + area?: string[] + "input[type=\"image\"]"?: string[] + [k: string]: unknown | undefined }] -// ----- import/no-unresolved ----- -type ImportNoUnresolved = []|[{ - commonjs?: boolean - amd?: boolean - esmodule?: boolean - - ignore?: [string, ...(string)[]] - caseSensitive?: boolean - caseSensitiveStrict?: boolean +// ----- astro/jsx-a11y/anchor-ambiguous-text ----- +type AstroJsxA11YAnchorAmbiguousText = []|[{ + words?: string[] + [k: string]: unknown | undefined }] -// ----- import/no-unused-modules ----- -type ImportNoUnusedModules = []|[({ - unusedExports: true - - src?: [unknown, ...(unknown)[]] +// ----- astro/jsx-a11y/anchor-has-content ----- +type AstroJsxA11YAnchorHasContent = []|[{ + components?: string[] [k: string]: unknown | undefined -} | { - missingExports: true +}] +// ----- astro/jsx-a11y/anchor-is-valid ----- +type AstroJsxA11YAnchorIsValid = []|[{ + components?: string[] + specialLink?: string[] + + aspects?: [("noHref" | "invalidHref" | "preferButton"), ...(("noHref" | "invalidHref" | "preferButton"))[]] [k: string]: unknown | undefined -})] -// ----- import/no-useless-path-segments ----- -type ImportNoUselessPathSegments = []|[{ - commonjs?: boolean - noUselessIndex?: boolean }] -// ----- import/order ----- -type ImportOrder = []|[{ - groups?: unknown[] - pathGroupsExcludedImportTypes?: unknown[] - distinctGroup?: boolean - pathGroups?: { - pattern: string - patternOptions?: { - [k: string]: unknown | undefined - } - group: ("builtin" | "external" | "internal" | "unknown" | "parent" | "sibling" | "index" | "object" | "type") - position?: ("after" | "before") - }[] - "newlines-between"?: ("ignore" | "always" | "always-and-inside-groups" | "never") - alphabetize?: { - caseInsensitive?: boolean - order?: ("ignore" | "asc" | "desc") - orderImportKind?: ("ignore" | "asc" | "desc") - } - warnOnUnassignedImports?: boolean +// ----- astro/jsx-a11y/aria-activedescendant-has-tabindex ----- +type AstroJsxA11YAriaActivedescendantHasTabindex = []|[{ + [k: string]: unknown | undefined }] -// ----- import/prefer-default-export ----- -type ImportPreferDefaultExport = []|[{ - target?: ("single" | "any") +// ----- astro/jsx-a11y/aria-props ----- +type AstroJsxA11YAriaProps = []|[{ + [k: string]: unknown | undefined }] -// ----- indent ----- -type Indent = []|[("tab" | number)]|[("tab" | number), { - SwitchCase?: number - VariableDeclarator?: ((number | ("first" | "off")) | { - var?: (number | ("first" | "off")) - let?: (number | ("first" | "off")) - const?: (number | ("first" | "off")) - }) - outerIIFEBody?: (number | "off") - MemberExpression?: (number | "off") - FunctionDeclaration?: { - parameters?: (number | ("first" | "off")) - body?: number - } - FunctionExpression?: { - parameters?: (number | ("first" | "off")) - body?: number - } - StaticBlock?: { - body?: number - } - CallExpression?: { - arguments?: (number | ("first" | "off")) - } - ArrayExpression?: (number | ("first" | "off")) - ObjectExpression?: (number | ("first" | "off")) - ImportDeclaration?: (number | ("first" | "off")) - flatTernaryExpressions?: boolean - offsetTernaryExpressions?: boolean - ignoredNodes?: string[] - ignoreComments?: boolean +// ----- astro/jsx-a11y/aria-proptypes ----- +type AstroJsxA11YAriaProptypes = []|[{ + [k: string]: unknown | undefined }] -// ----- indent-legacy ----- -type IndentLegacy = []|[("tab" | number)]|[("tab" | number), { - SwitchCase?: number - VariableDeclarator?: (number | { - var?: number - let?: number - const?: number - [k: string]: unknown | undefined - }) - outerIIFEBody?: number - MemberExpression?: number - FunctionDeclaration?: { - parameters?: (number | "first") - body?: number - [k: string]: unknown | undefined - } - FunctionExpression?: { - parameters?: (number | "first") - body?: number - [k: string]: unknown | undefined - } - CallExpression?: { - parameters?: (number | "first") - [k: string]: unknown | undefined - } - ArrayExpression?: (number | "first") - ObjectExpression?: (number | "first") +// ----- astro/jsx-a11y/aria-role ----- +type AstroJsxA11YAriaRole = []|[{ + allowedInvalidRoles?: string[] + ignoreNonDOM?: boolean + [k: string]: unknown | undefined }] -// ----- init-declarations ----- -type InitDeclarations = ([]|["always"] | []|["never"]|["never", { - ignoreForLoopInit?: boolean -}]) -// ----- jsdoc/check-examples ----- -type JsdocCheckExamples = []|[{ - allowInlineConfig?: boolean - baseConfig?: { - [k: string]: unknown | undefined - } - captionRequired?: boolean - checkDefaults?: boolean - checkEslintrc?: boolean - checkParams?: boolean - checkProperties?: boolean - configFile?: string - exampleCodeRegex?: string - matchingFileName?: string - matchingFileNameDefaults?: string - matchingFileNameParams?: string - matchingFileNameProperties?: string - noDefaultExampleRules?: boolean - paddedIndent?: number - rejectExampleCodeRegex?: string - reportUnusedDisableDirectives?: boolean +// ----- astro/jsx-a11y/aria-unsupported-elements ----- +type AstroJsxA11YAriaUnsupportedElements = []|[{ + [k: string]: unknown | undefined }] -// ----- jsdoc/check-indentation ----- -type JsdocCheckIndentation = []|[{ - excludeTags?: string[] +// ----- astro/jsx-a11y/autocomplete-valid ----- +type AstroJsxA11YAutocompleteValid = []|[{ + inputComponents?: string[] + [k: string]: unknown | undefined }] -// ----- jsdoc/check-line-alignment ----- -type JsdocCheckLineAlignment = []|[("always" | "never" | "any")]|[("always" | "never" | "any"), { - customSpacings?: { - postDelimiter?: number - postHyphen?: number - postName?: number - postTag?: number - postType?: number - } - preserveMainDescriptionPostDelimiter?: boolean - tags?: string[] - wrapIndent?: string - disableWrapIndent?: boolean +// ----- astro/jsx-a11y/click-events-have-key-events ----- +type AstroJsxA11YClickEventsHaveKeyEvents = []|[{ + [k: string]: unknown | undefined }] -// ----- jsdoc/check-param-names ----- -type JsdocCheckParamNames = []|[{ - allowExtraTrailingParamDocs?: boolean - checkDestructured?: boolean - checkRestProperty?: boolean - checkTypesPattern?: string - disableExtraPropertyReporting?: boolean - disableMissingParamChecks?: boolean - enableFixer?: boolean - useDefaultObjectProperties?: boolean +// ----- astro/jsx-a11y/control-has-associated-label ----- +type AstroJsxA11YControlHasAssociatedLabel = []|[{ + labelAttributes?: string[] + controlComponents?: string[] + ignoreElements?: string[] + ignoreRoles?: string[] + + depth?: number + [k: string]: unknown | undefined }] -// ----- jsdoc/check-property-names ----- -type JsdocCheckPropertyNames = []|[{ - enableFixer?: boolean +// ----- astro/jsx-a11y/heading-has-content ----- +type AstroJsxA11YHeadingHasContent = []|[{ + components?: string[] + [k: string]: unknown | undefined }] -// ----- jsdoc/check-tag-names ----- -type JsdocCheckTagNames = []|[{ - definedTags?: string[] - enableFixer?: boolean - jsxTags?: boolean - typed?: boolean +// ----- astro/jsx-a11y/html-has-lang ----- +type AstroJsxA11YHtmlHasLang = []|[{ + [k: string]: unknown | undefined }] -// ----- jsdoc/check-types ----- -type JsdocCheckTypes = []|[{ - exemptTagContexts?: { - tag?: string - types?: (boolean | string[]) - }[] - noDefaults?: boolean - unifyParentAndChildTypeChecks?: boolean +// ----- astro/jsx-a11y/iframe-has-title ----- +type AstroJsxA11YIframeHasTitle = []|[{ + [k: string]: unknown | undefined }] -// ----- jsdoc/check-values ----- -type JsdocCheckValues = []|[{ - allowedAuthors?: string[] - allowedLicenses?: (string[] | boolean) - licensePattern?: string - numericOnlyVariation?: boolean +// ----- astro/jsx-a11y/img-redundant-alt ----- +type AstroJsxA11YImgRedundantAlt = []|[{ + components?: string[] + words?: string[] + [k: string]: unknown | undefined }] -// ----- jsdoc/convert-to-jsdoc-comments ----- -type JsdocConvertToJsdocComments = []|[{ - allowedPrefixes?: string[] - contexts?: (string | { - context?: string - inlineCommentBlock?: boolean - })[] - contextsAfter?: (string | { - context?: string - inlineCommentBlock?: boolean - })[] - contextsBeforeAndAfter?: (string | { - context?: string - inlineCommentBlock?: boolean - })[] - enableFixer?: boolean - enforceJsdocLineStyle?: ("multi" | "single") - lineOrBlockStyle?: ("block" | "line" | "both") +// ----- astro/jsx-a11y/interactive-supports-focus ----- +type AstroJsxA11YInteractiveSupportsFocus = []|[{ + + tabbable?: ("button" | "checkbox" | "columnheader" | "combobox" | "grid" | "gridcell" | "link" | "listbox" | "menu" | "menubar" | "menuitem" | "menuitemcheckbox" | "menuitemradio" | "option" | "progressbar" | "radio" | "radiogroup" | "row" | "rowheader" | "scrollbar" | "searchbox" | "slider" | "spinbutton" | "switch" | "tab" | "tablist" | "textbox" | "tree" | "treegrid" | "treeitem" | "doc-backlink" | "doc-biblioref" | "doc-glossref" | "doc-noteref")[] + [k: string]: unknown | undefined }] -// ----- jsdoc/empty-tags ----- -type JsdocEmptyTags = []|[{ - tags?: string[] +// ----- astro/jsx-a11y/label-has-associated-control ----- +type AstroJsxA11YLabelHasAssociatedControl = []|[{ + labelComponents?: string[] + labelAttributes?: string[] + controlComponents?: string[] + + assert?: ("htmlFor" | "nesting" | "both" | "either") + + depth?: number + [k: string]: unknown | undefined }] -// ----- jsdoc/implements-on-classes ----- -type JsdocImplementsOnClasses = []|[{ - contexts?: (string | { - comment?: string - context?: string - })[] +// ----- astro/jsx-a11y/lang ----- +type AstroJsxA11YLang = []|[{ + [k: string]: unknown | undefined }] -// ----- jsdoc/informative-docs ----- -type JsdocInformativeDocs = []|[{ - aliases?: { - [k: string]: string[] - } - excludedTags?: string[] - uselessWords?: string[] +// ----- astro/jsx-a11y/media-has-caption ----- +type AstroJsxA11YMediaHasCaption = []|[{ + audio?: string[] + video?: string[] + track?: string[] + [k: string]: unknown | undefined +}] +// ----- astro/jsx-a11y/mouse-events-have-key-events ----- +type AstroJsxA11YMouseEventsHaveKeyEvents = []|[{ + + hoverInHandlers?: string[] + + hoverOutHandlers?: string[] + [k: string]: unknown | undefined }] -// ----- jsdoc/lines-before-block ----- -type JsdocLinesBeforeBlock = []|[{ - checkBlockStarts?: boolean - excludedTags?: string[] - ignoreSameLine?: boolean - lines?: number +// ----- astro/jsx-a11y/no-access-key ----- +type AstroJsxA11YNoAccessKey = []|[{ + [k: string]: unknown | undefined }] -// ----- jsdoc/match-description ----- -type JsdocMatchDescription = []|[{ - contexts?: (string | { - comment?: string - context?: string - })[] - mainDescription?: (string | boolean | { - match?: (string | boolean) - message?: string - }) - matchDescription?: string - message?: string - nonemptyTags?: boolean - tags?: { - [k: string]: (string | true | { - match?: (string | true) - message?: string - }) - } +// ----- astro/jsx-a11y/no-aria-hidden-on-focusable ----- +type AstroJsxA11YNoAriaHiddenOnFocusable = []|[{ + [k: string]: unknown | undefined }] -// ----- jsdoc/match-name ----- -type JsdocMatchName = []|[{ - match: { - allowName?: string - comment?: string - context?: string - disallowName?: string - message?: string - tags?: string[] - [k: string]: unknown | undefined - }[] +// ----- astro/jsx-a11y/no-autofocus ----- +type AstroJsxA11YNoAutofocus = []|[{ + ignoreNonDOM?: boolean + [k: string]: unknown | undefined }] -// ----- jsdoc/multiline-blocks ----- -type JsdocMultilineBlocks = []|[{ - allowMultipleTags?: boolean - minimumLengthForMultiline?: number - multilineTags?: ("*" | string[]) - noFinalLineText?: boolean - noMultilineBlocks?: boolean - noSingleLineBlocks?: boolean - noZeroLineText?: boolean - singleLineTags?: string[] +// ----- astro/jsx-a11y/no-distracting-elements ----- +type AstroJsxA11YNoDistractingElements = []|[{ + + elements?: ("marquee" | "blink")[] + [k: string]: unknown | undefined }] -// ----- jsdoc/no-bad-blocks ----- -type JsdocNoBadBlocks = []|[{ - ignore?: string[] - preventAllMultiAsteriskBlocks?: boolean +// ----- astro/jsx-a11y/no-interactive-element-to-noninteractive-role ----- +type AstroJsxA11YNoInteractiveElementToNoninteractiveRole = []|[{ + [k: string]: string[] | undefined }] -// ----- jsdoc/no-blank-blocks ----- -type JsdocNoBlankBlocks = []|[{ - enableFixer?: boolean +// ----- astro/jsx-a11y/no-noninteractive-element-interactions ----- +type AstroJsxA11YNoNoninteractiveElementInteractions = []|[{ + handlers?: string[] + [k: string]: unknown | undefined }] -// ----- jsdoc/no-defaults ----- -type JsdocNoDefaults = []|[{ - contexts?: (string | { - comment?: string - context?: string - })[] - noOptionalParamNames?: boolean +// ----- astro/jsx-a11y/no-noninteractive-element-to-interactive-role ----- +type AstroJsxA11YNoNoninteractiveElementToInteractiveRole = []|[{ + [k: string]: string[] | undefined }] -// ----- jsdoc/no-missing-syntax ----- -type JsdocNoMissingSyntax = []|[{ - contexts?: (string | { - comment?: string - context?: string - message?: string - minimum?: number - })[] +// ----- astro/jsx-a11y/no-noninteractive-tabindex ----- +type AstroJsxA11YNoNoninteractiveTabindex = []|[{ + + roles?: string[] + + tags?: string[] + [k: string]: unknown | undefined }] -// ----- jsdoc/no-multi-asterisks ----- -type JsdocNoMultiAsterisks = []|[{ - allowWhitespace?: boolean - preventAtEnd?: boolean - preventAtMiddleLines?: boolean +// ----- astro/jsx-a11y/no-redundant-roles ----- +type AstroJsxA11YNoRedundantRoles = []|[{ + [k: string]: string[] | undefined }] -// ----- jsdoc/no-restricted-syntax ----- -type JsdocNoRestrictedSyntax = []|[{ - contexts: (string | { - comment?: string - context?: string - message?: string - })[] +// ----- astro/jsx-a11y/no-static-element-interactions ----- +type AstroJsxA11YNoStaticElementInteractions = []|[{ + handlers?: string[] + [k: string]: unknown | undefined }] -// ----- jsdoc/no-types ----- -type JsdocNoTypes = []|[{ - contexts?: (string | { - comment?: string - context?: string - })[] +// ----- astro/jsx-a11y/prefer-tag-over-role ----- +type AstroJsxA11YPreferTagOverRole = []|[{ + [k: string]: unknown | undefined }] -// ----- jsdoc/no-undefined-types ----- -type JsdocNoUndefinedTypes = []|[{ - definedTypes?: string[] - disableReporting?: boolean - markVariablesAsUsed?: boolean +// ----- astro/jsx-a11y/role-has-required-aria-props ----- +type AstroJsxA11YRoleHasRequiredAriaProps = []|[{ + [k: string]: unknown | undefined }] -// ----- jsdoc/require-asterisk-prefix ----- -type JsdocRequireAsteriskPrefix = []|[("always" | "never" | "any")]|[("always" | "never" | "any"), { - tags?: { - always?: string[] - any?: string[] - never?: string[] - [k: string]: unknown | undefined - } +// ----- astro/jsx-a11y/role-supports-aria-props ----- +type AstroJsxA11YRoleSupportsAriaProps = []|[{ + [k: string]: unknown | undefined }] -// ----- jsdoc/require-description ----- -type JsdocRequireDescription = []|[{ - checkConstructors?: boolean - checkGetters?: boolean - checkSetters?: boolean - contexts?: (string | { - comment?: string - context?: string - })[] - descriptionStyle?: ("body" | "tag" | "any") - exemptedBy?: string[] +// ----- astro/jsx-a11y/scope ----- +type AstroJsxA11YScope = []|[{ + [k: string]: unknown | undefined }] -// ----- jsdoc/require-description-complete-sentence ----- -type JsdocRequireDescriptionCompleteSentence = []|[{ - abbreviations?: string[] - newlineBeforeCapsAssumesBadSentenceEnd?: boolean - tags?: string[] +// ----- astro/jsx-a11y/tabindex-no-positive ----- +type AstroJsxA11YTabindexNoPositive = []|[{ + [k: string]: unknown | undefined }] -// ----- jsdoc/require-example ----- -type JsdocRequireExample = []|[{ - checkConstructors?: boolean - checkGetters?: boolean - checkSetters?: boolean - contexts?: (string | { - comment?: string - context?: string - })[] - enableFixer?: boolean - exemptedBy?: string[] - exemptNoArguments?: boolean +// ----- astro/prefer-split-class-list ----- +type AstroPreferSplitClassList = []|[{ + splitLiteral?: boolean }] -// ----- jsdoc/require-file-overview ----- -type JsdocRequireFileOverview = []|[{ - tags?: { - [k: string]: { - initialCommentsOnly?: boolean - mustExist?: boolean - preventDuplicates?: boolean - } - } +// ----- astro/semi ----- +type AstroSemi = ([]|["never"]|["never", { + beforeStatementContinuationChars?: ("always" | "any" | "never") +}] | []|["always"]|["always", { + omitLastInOneLineBlock?: boolean + omitLastInOneLineClassBody?: boolean +}]) +// ----- astro/sort-attributes ----- +type AstroSortAttributes = []|[{ + type?: ("alphabetical" | "line-length") + ignoreCase?: boolean + order?: ("asc" | "desc") }] -// ----- jsdoc/require-hyphen-before-param-description ----- -type JsdocRequireHyphenBeforeParamDescription = []|[("always" | "never")]|[("always" | "never"), { - tags?: ({ - [k: string]: ("always" | "never") - } | "any") +// ----- compat/compat ----- +type CompatCompat = []|[string] +// ----- eslint-comments/disable-enable-pair ----- +type EslintCommentsDisableEnablePair = []|[{ + allowWholeFile?: boolean }] -// ----- jsdoc/require-jsdoc ----- -type JsdocRequireJsdoc = []|[{ - checkConstructors?: boolean - checkGetters?: (boolean | "no-setter") - checkSetters?: (boolean | "no-getter") - contexts?: (string | { - context?: string - inlineCommentBlock?: boolean - minLineCount?: number - })[] - enableFixer?: boolean - exemptEmptyConstructors?: boolean - exemptEmptyFunctions?: boolean - fixerMessage?: string - minLineCount?: number - publicOnly?: (boolean | { - ancestorsOnly?: boolean - cjs?: boolean - esm?: boolean - window?: boolean - }) - require?: { - ArrowFunctionExpression?: boolean - ClassDeclaration?: boolean - ClassExpression?: boolean - FunctionDeclaration?: boolean - FunctionExpression?: boolean - MethodDefinition?: boolean +// ----- eslint-comments/no-restricted-disable ----- +type EslintCommentsNoRestrictedDisable = string[] +// ----- eslint-comments/no-use ----- +type EslintCommentsNoUse = []|[{ + allow?: ("eslint" | "eslint-disable" | "eslint-disable-line" | "eslint-disable-next-line" | "eslint-enable" | "eslint-env" | "exported" | "global" | "globals")[] +}] +// ----- eslint-comments/require-description ----- +type EslintCommentsRequireDescription = []|[{ + ignore?: ("eslint" | "eslint-disable" | "eslint-disable-line" | "eslint-disable-next-line" | "eslint-enable" | "eslint-env" | "exported" | "global" | "globals")[] +}] +// ----- format/dprint ----- +type FormatDprint = []|[{ + language?: string + languageOptions?: { + [k: string]: unknown | undefined } + [k: string]: unknown | undefined }] -// ----- jsdoc/require-param ----- -type JsdocRequireParam = []|[{ - autoIncrementBase?: number - checkConstructors?: boolean - checkDestructured?: boolean - checkDestructuredRoots?: boolean - checkGetters?: boolean - checkRestProperty?: boolean - checkSetters?: boolean - checkTypesPattern?: string - contexts?: (string | { - comment?: string - context?: string - })[] - enableFixer?: boolean - enableRestElementFixer?: boolean - enableRootFixer?: boolean - exemptedBy?: string[] - ignoreWhenAllParamsMissing?: boolean - unnamedRootBase?: string[] - useDefaultObjectProperties?: boolean +// ----- format/prettier ----- +type FormatPrettier = []|[{ + parser?: string + [k: string]: unknown | undefined }] -// ----- jsdoc/require-param-description ----- -type JsdocRequireParamDescription = []|[{ - contexts?: (string | { - comment?: string - context?: string - })[] - defaultDestructuredRootDescription?: string - setDefaultDestructuredRootDescription?: boolean +// ----- import/consistent-type-specifier-style ----- +type ImportConsistentTypeSpecifierStyle = []|[("prefer-top-level" | "prefer-inline")] +// ----- import/dynamic-import-chunkname ----- +type ImportDynamicImportChunkname = []|[{ + importFunctions?: string[] + allowEmpty?: boolean + webpackChunknameFormat?: string + [k: string]: unknown | undefined }] -// ----- jsdoc/require-param-name ----- -type JsdocRequireParamName = []|[{ - contexts?: (string | { - comment?: string - context?: string - })[] +// ----- import/extensions ----- +type ImportExtensions = ([]|[("always" | "ignorePackages" | "never")] | []|[("always" | "ignorePackages" | "never")]|[("always" | "ignorePackages" | "never"), { + pattern?: { + [k: string]: ("always" | "ignorePackages" | "never") + } + ignorePackages?: boolean + checkTypeImports?: boolean + pathGroupOverrides?: { + pattern: string + patternOptions?: { + [k: string]: unknown | undefined + } + action: ("enforce" | "ignore") + }[] + fix?: boolean + [k: string]: unknown | undefined +}] | []|[{ + pattern?: { + [k: string]: ("always" | "ignorePackages" | "never") + } + ignorePackages?: boolean + checkTypeImports?: boolean + pathGroupOverrides?: { + pattern: string + patternOptions?: { + [k: string]: unknown | undefined + } + action: ("enforce" | "ignore") + }[] + fix?: boolean + [k: string]: unknown | undefined +}] | []|[("always" | "ignorePackages" | "never")]|[("always" | "ignorePackages" | "never"), { + [k: string]: ("always" | "ignorePackages" | "never") +}] | []|[{ + [k: string]: ("always" | "ignorePackages" | "never") +}]) +// ----- import/first ----- +type ImportFirst = []|[("absolute-first" | "disable-absolute-first")] +// ----- import/imports-first ----- +type ImportImportsFirst = []|[("absolute-first" | "disable-absolute-first")] +// ----- import/max-dependencies ----- +type ImportMaxDependencies = []|[{ + max?: number + ignoreTypeImports?: boolean }] -// ----- jsdoc/require-param-type ----- -type JsdocRequireParamType = []|[{ - contexts?: (string | { - comment?: string - context?: string - })[] - defaultDestructuredRootType?: string - setDefaultDestructuredRootType?: boolean +// ----- import/named ----- +type ImportNamed = []|[{ + commonjs?: boolean }] -// ----- jsdoc/require-returns ----- -type JsdocRequireReturns = []|[{ - checkConstructors?: boolean - checkGetters?: boolean - contexts?: (string | { - comment?: string - context?: string - forceRequireReturn?: boolean - })[] - enableFixer?: boolean - exemptedBy?: string[] - forceRequireReturn?: boolean - forceReturnsWithAsync?: boolean - publicOnly?: (boolean | { - ancestorsOnly?: boolean - cjs?: boolean - esm?: boolean - window?: boolean - }) +// ----- import/namespace ----- +type ImportNamespace = []|[{ + + allowComputed?: boolean }] -// ----- jsdoc/require-returns-check ----- -type JsdocRequireReturnsCheck = []|[{ - exemptAsync?: boolean - exemptGenerators?: boolean - reportMissingReturnForUndefinedTypes?: boolean +// ----- import/newline-after-import ----- +type ImportNewlineAfterImport = []|[{ + count?: number + exactCount?: boolean + considerComments?: boolean }] -// ----- jsdoc/require-returns-description ----- -type JsdocRequireReturnsDescription = []|[{ - contexts?: (string | { - comment?: string - context?: string - })[] +// ----- import/no-absolute-path ----- +type ImportNoAbsolutePath = []|[{ + commonjs?: boolean + amd?: boolean + esmodule?: boolean + + ignore?: [string, ...(string)[]] }] -// ----- jsdoc/require-returns-type ----- -type JsdocRequireReturnsType = []|[{ - contexts?: (string | { - comment?: string - context?: string - })[] +// ----- import/no-anonymous-default-export ----- +type ImportNoAnonymousDefaultExport = []|[{ + + allowArray?: boolean + + allowArrowFunction?: boolean + + allowCallExpression?: boolean + + allowAnonymousClass?: boolean + + allowAnonymousFunction?: boolean + + allowLiteral?: boolean + + allowObject?: boolean + + allowNew?: boolean }] -// ----- jsdoc/require-template ----- -type JsdocRequireTemplate = []|[{ - requireSeparateTemplates?: boolean +// ----- import/no-commonjs ----- +type ImportNoCommonjs = ([]|["allow-primitive-modules"] | []|[{ + allowPrimitiveModules?: boolean + allowRequire?: boolean + allowConditionalRequire?: boolean +}]) +// ----- import/no-cycle ----- +type ImportNoCycle = []|[{ + commonjs?: boolean + amd?: boolean + esmodule?: boolean + + ignore?: [string, ...(string)[]] + maxDepth?: (number | "∞") + + ignoreExternal?: boolean + + allowUnsafeDynamicCyclicDependency?: boolean }] -// ----- jsdoc/require-throws ----- -type JsdocRequireThrows = []|[{ - contexts?: (string | { - comment?: string - context?: string - })[] - exemptedBy?: string[] +// ----- import/no-duplicates ----- +type ImportNoDuplicates = []|[{ + considerQueryString?: boolean + "prefer-inline"?: boolean }] -// ----- jsdoc/require-yields ----- -type JsdocRequireYields = []|[{ - contexts?: (string | { - comment?: string - context?: string - })[] - exemptedBy?: string[] - forceRequireNext?: boolean - forceRequireYields?: boolean - next?: boolean - nextWithGeneratorTag?: boolean - withGeneratorTag?: boolean +// ----- import/no-dynamic-require ----- +type ImportNoDynamicRequire = []|[{ + esmodule?: boolean }] -// ----- jsdoc/require-yields-check ----- -type JsdocRequireYieldsCheck = []|[{ - checkGeneratorsOnly?: boolean - contexts?: (string | { - comment?: string - context?: string - })[] - exemptedBy?: string[] - next?: boolean +// ----- import/no-extraneous-dependencies ----- +type ImportNoExtraneousDependencies = []|[{ + devDependencies?: (boolean | unknown[]) + optionalDependencies?: (boolean | unknown[]) + peerDependencies?: (boolean | unknown[]) + bundledDependencies?: (boolean | unknown[]) + packageDir?: (string | unknown[]) + includeInternal?: boolean + includeTypes?: boolean + whitelist?: unknown[] +}] +// ----- import/no-import-module-exports ----- +type ImportNoImportModuleExports = []|[{ + exceptions?: unknown[] +}] +// ----- import/no-internal-modules ----- +type ImportNoInternalModules = []|[({ + allow?: string[] +} | { + forbid?: string[] +})] +// ----- import/no-namespace ----- +type ImportNoNamespace = []|[{ + ignore?: string[] + [k: string]: unknown | undefined +}] +// ----- import/no-nodejs-modules ----- +type ImportNoNodejsModules = []|[{ + allow?: string[] }] -// ----- jsdoc/sort-tags ----- -type JsdocSortTags = []|[{ - alphabetizeExtras?: boolean - linesBetween?: number - reportIntraTagGroupSpacing?: boolean - reportTagGroupSpacing?: boolean - tagSequence?: { - tags?: string[] - [k: string]: unknown | undefined - }[] +// ----- import/no-relative-packages ----- +type ImportNoRelativePackages = []|[{ + commonjs?: boolean + amd?: boolean + esmodule?: boolean + + ignore?: [string, ...(string)[]] }] -// ----- jsdoc/tag-lines ----- -type JsdocTagLines = []|[("always" | "any" | "never")]|[("always" | "any" | "never"), { - applyToEndTag?: boolean - count?: number - endLines?: (number | null) - startLines?: (number | null) - tags?: { - [k: string]: { - count?: number - lines?: ("always" | "never" | "any") - } - } +// ----- import/no-relative-parent-imports ----- +type ImportNoRelativeParentImports = []|[{ + commonjs?: boolean + amd?: boolean + esmodule?: boolean + + ignore?: [string, ...(string)[]] }] -// ----- jsdoc/text-escaping ----- -type JsdocTextEscaping = []|[{ - escapeHTML?: boolean - escapeMarkdown?: boolean +// ----- import/no-rename-default ----- +type ImportNoRenameDefault = []|[{ + commonjs?: boolean + preventRenamingBindings?: boolean }] -// ----- jsdoc/valid-types ----- -type JsdocValidTypes = []|[{ - allowEmptyNamepaths?: boolean +// ----- import/no-restricted-paths ----- +type ImportNoRestrictedPaths = []|[{ + + zones?: [{ + target?: (string | [string, ...(string)[]]) + from?: (string | [string, ...(string)[]]) + except?: string[] + message?: string + }, ...({ + target?: (string | [string, ...(string)[]]) + from?: (string | [string, ...(string)[]]) + except?: string[] + message?: string + })[]] + basePath?: string }] -// ----- jsonc/array-bracket-newline ----- -type JsoncArrayBracketNewline = []|[(("always" | "never" | "consistent") | { - multiline?: boolean - minItems?: (number | null) -})] -// ----- jsonc/array-bracket-spacing ----- -type JsoncArrayBracketSpacing = []|[("always" | "never")]|[("always" | "never"), { - singleValue?: boolean - objectsInArrays?: boolean - arraysInArrays?: boolean +// ----- import/no-unassigned-import ----- +type ImportNoUnassignedImport = []|[{ + devDependencies?: (boolean | unknown[]) + optionalDependencies?: (boolean | unknown[]) + peerDependencies?: (boolean | unknown[]) + allow?: string[] }] -// ----- jsonc/array-element-newline ----- -type JsoncArrayElementNewline = []|[(_JsoncArrayElementNewlineBasicConfig | { - ArrayExpression?: _JsoncArrayElementNewlineBasicConfig - JSONArrayExpression?: _JsoncArrayElementNewlineBasicConfig - ArrayPattern?: _JsoncArrayElementNewlineBasicConfig -})] -type _JsoncArrayElementNewlineBasicConfig = (("always" | "never" | "consistent") | { - multiline?: boolean - minItems?: (number | null) -}) -// ----- jsonc/comma-dangle ----- -type JsoncCommaDangle = []|[(_JsoncCommaDangleValue | { - arrays?: _JsoncCommaDangleValueWithIgnore - objects?: _JsoncCommaDangleValueWithIgnore - imports?: _JsoncCommaDangleValueWithIgnore - exports?: _JsoncCommaDangleValueWithIgnore - functions?: _JsoncCommaDangleValueWithIgnore +// ----- import/no-unresolved ----- +type ImportNoUnresolved = []|[{ + commonjs?: boolean + amd?: boolean + esmodule?: boolean + + ignore?: [string, ...(string)[]] + caseSensitive?: boolean + caseSensitiveStrict?: boolean +}] +// ----- import/no-unused-modules ----- +type ImportNoUnusedModules = []|[({ + unusedExports: true + + src?: [unknown, ...(unknown)[]] + [k: string]: unknown | undefined +} | { + missingExports: true + [k: string]: unknown | undefined })] -type _JsoncCommaDangleValue = ("always-multiline" | "always" | "never" | "only-multiline") -type _JsoncCommaDangleValueWithIgnore = ("always-multiline" | "always" | "ignore" | "never" | "only-multiline") -// ----- jsonc/comma-style ----- -type JsoncCommaStyle = []|[("first" | "last")]|[("first" | "last"), { - exceptions?: { - [k: string]: boolean | undefined - } +// ----- import/no-useless-path-segments ----- +type ImportNoUselessPathSegments = []|[{ + commonjs?: boolean + noUselessIndex?: boolean }] -// ----- jsonc/indent ----- -type JsoncIndent = []|[("tab" | number)]|[("tab" | number), { - SwitchCase?: number - VariableDeclarator?: ((number | ("first" | "off")) | { - var?: (number | ("first" | "off")) - let?: (number | ("first" | "off")) - const?: (number | ("first" | "off")) +// ----- import/order ----- +type ImportOrder = []|[{ + groups?: unknown[] + pathGroupsExcludedImportTypes?: unknown[] + distinctGroup?: boolean + pathGroups?: { + pattern: string + patternOptions?: { + [k: string]: unknown | undefined + } + group: ("builtin" | "external" | "internal" | "unknown" | "parent" | "sibling" | "index" | "object" | "type") + position?: ("after" | "before") + }[] + "newlines-between"?: ("ignore" | "always" | "always-and-inside-groups" | "never") + "newlines-between-types"?: ("ignore" | "always" | "always-and-inside-groups" | "never") + consolidateIslands?: ("inside-groups" | "never") + sortTypesGroup?: boolean + named?: (boolean | { + enabled?: boolean + import?: boolean + export?: boolean + require?: boolean + cjsExports?: boolean + types?: ("mixed" | "types-first" | "types-last") }) - outerIIFEBody?: (number | "off") - MemberExpression?: (number | "off") - FunctionDeclaration?: { - parameters?: (number | ("first" | "off")) - body?: number - } - FunctionExpression?: { - parameters?: (number | ("first" | "off")) - body?: number - } - StaticBlock?: { - body?: number - } - CallExpression?: { - arguments?: (number | ("first" | "off")) + alphabetize?: { + caseInsensitive?: boolean + order?: ("ignore" | "asc" | "desc") + orderImportKind?: ("ignore" | "asc" | "desc") } - ArrayExpression?: (number | ("first" | "off")) - ObjectExpression?: (number | ("first" | "off")) - ImportDeclaration?: (number | ("first" | "off")) - flatTernaryExpressions?: boolean - offsetTernaryExpressions?: boolean - ignoredNodes?: string[] - ignoreComments?: boolean + warnOnUnassignedImports?: boolean }] -// ----- jsonc/key-name-casing ----- -type JsoncKeyNameCasing = []|[{ - camelCase?: boolean - PascalCase?: boolean - SCREAMING_SNAKE_CASE?: boolean - "kebab-case"?: boolean - snake_case?: boolean - ignores?: string[] +// ----- import/prefer-default-export ----- +type ImportPreferDefaultExport = []|[{ + target?: ("single" | "any") }] -// ----- jsonc/key-spacing ----- -type JsoncKeySpacing = []|[({ - align?: (("colon" | "value") | { - mode?: ("strict" | "minimum") - on?: ("colon" | "value") - beforeColon?: boolean - afterColon?: boolean - }) - mode?: ("strict" | "minimum") - beforeColon?: boolean - afterColon?: boolean -} | { - singleLine?: { - mode?: ("strict" | "minimum") - beforeColon?: boolean - afterColon?: boolean - } - multiLine?: { - align?: (("colon" | "value") | { - mode?: ("strict" | "minimum") - on?: ("colon" | "value") - beforeColon?: boolean - afterColon?: boolean - }) - mode?: ("strict" | "minimum") - beforeColon?: boolean - afterColon?: boolean - } -} | { - singleLine?: { - mode?: ("strict" | "minimum") - beforeColon?: boolean - afterColon?: boolean - } - multiLine?: { - mode?: ("strict" | "minimum") - beforeColon?: boolean - afterColon?: boolean +// ----- jsdoc/check-examples ----- +type JsdocCheckExamples = []|[{ + allowInlineConfig?: boolean + baseConfig?: { + [k: string]: unknown | undefined } - align?: { - mode?: ("strict" | "minimum") - on?: ("colon" | "value") - beforeColon?: boolean - afterColon?: boolean + captionRequired?: boolean + checkDefaults?: boolean + checkEslintrc?: boolean + checkParams?: boolean + checkProperties?: boolean + configFile?: string + exampleCodeRegex?: string + matchingFileName?: string + matchingFileNameDefaults?: string + matchingFileNameParams?: string + matchingFileNameProperties?: string + noDefaultExampleRules?: boolean + paddedIndent?: number + rejectExampleCodeRegex?: string + reportUnusedDisableDirectives?: boolean +}] +// ----- jsdoc/check-indentation ----- +type JsdocCheckIndentation = []|[{ + excludeTags?: string[] +}] +// ----- jsdoc/check-line-alignment ----- +type JsdocCheckLineAlignment = []|[("always" | "never" | "any")]|[("always" | "never" | "any"), { + customSpacings?: { + postDelimiter?: number + postHyphen?: number + postName?: number + postTag?: number + postType?: number } -})] -// ----- jsonc/no-irregular-whitespace ----- -type JsoncNoIrregularWhitespace = []|[{ - skipComments?: boolean - skipStrings?: boolean - skipTemplates?: boolean - skipRegExps?: boolean - skipJSXText?: boolean + preserveMainDescriptionPostDelimiter?: boolean + tags?: string[] + wrapIndent?: string + disableWrapIndent?: boolean }] -// ----- jsonc/object-curly-newline ----- -type JsoncObjectCurlyNewline = []|[((("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean -}) | { - ObjectExpression?: (("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean - }) - ObjectPattern?: (("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean - }) - ImportDeclaration?: (("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean - }) - ExportDeclaration?: (("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean - }) -})] -// ----- jsonc/object-curly-spacing ----- -type JsoncObjectCurlySpacing = []|[("always" | "never")]|[("always" | "never"), { - arraysInObjects?: boolean - objectsInObjects?: boolean +// ----- jsdoc/check-param-names ----- +type JsdocCheckParamNames = []|[{ + allowExtraTrailingParamDocs?: boolean + checkDestructured?: boolean + checkRestProperty?: boolean + checkTypesPattern?: string + disableExtraPropertyReporting?: boolean + disableMissingParamChecks?: boolean + enableFixer?: boolean + useDefaultObjectProperties?: boolean }] -// ----- jsonc/object-property-newline ----- -type JsoncObjectPropertyNewline = []|[{ - allowAllPropertiesOnSameLine?: boolean - allowMultiplePropertiesPerLine?: boolean +// ----- jsdoc/check-property-names ----- +type JsdocCheckPropertyNames = []|[{ + enableFixer?: boolean }] -// ----- jsonc/quote-props ----- -type JsoncQuoteProps = ([]|[("always" | "as-needed" | "consistent" | "consistent-as-needed")] | []|[("always" | "as-needed" | "consistent" | "consistent-as-needed")]|[("always" | "as-needed" | "consistent" | "consistent-as-needed"), { - keywords?: boolean - unnecessary?: boolean - numbers?: boolean -}]) -// ----- jsonc/quotes ----- -type JsoncQuotes = []|[("single" | "double" | "backtick")]|[("single" | "double" | "backtick"), ("avoid-escape" | { - avoidEscape?: boolean - allowTemplateLiterals?: boolean -})] -// ----- jsonc/sort-array-values ----- -type JsoncSortArrayValues = [{ - pathPattern: string - order: ((string | { - valuePattern?: string - order?: { - type?: ("asc" | "desc") - caseSensitive?: boolean - natural?: boolean - } - })[] | { - type?: ("asc" | "desc") - caseSensitive?: boolean - natural?: boolean - }) - minValues?: number -}, ...({ - pathPattern: string - order: ((string | { - valuePattern?: string - order?: { - type?: ("asc" | "desc") - caseSensitive?: boolean - natural?: boolean - } - })[] | { - type?: ("asc" | "desc") - caseSensitive?: boolean - natural?: boolean - }) - minValues?: number -})[]] -// ----- jsonc/sort-keys ----- -type JsoncSortKeys = ([{ - pathPattern: string - hasProperties?: string[] - order: ((string | { - keyPattern?: string - order?: { - type?: ("asc" | "desc") - caseSensitive?: boolean - natural?: boolean - } - })[] | { - type?: ("asc" | "desc") - caseSensitive?: boolean - natural?: boolean - }) - minKeys?: number - allowLineSeparatedGroups?: boolean -}, ...({ - pathPattern: string - hasProperties?: string[] - order: ((string | { - keyPattern?: string - order?: { - type?: ("asc" | "desc") - caseSensitive?: boolean - natural?: boolean - } - })[] | { - type?: ("asc" | "desc") - caseSensitive?: boolean - natural?: boolean - }) - minKeys?: number - allowLineSeparatedGroups?: boolean -})[]] | []|[("asc" | "desc")]|[("asc" | "desc"), { - caseSensitive?: boolean - natural?: boolean - minKeys?: number - allowLineSeparatedGroups?: boolean -}]) -// ----- jsonc/space-unary-ops ----- -type JsoncSpaceUnaryOps = []|[{ - words?: boolean - nonwords?: boolean - overrides?: { - [k: string]: boolean | undefined - } +// ----- jsdoc/check-tag-names ----- +type JsdocCheckTagNames = []|[{ + definedTags?: string[] + enableFixer?: boolean + jsxTags?: boolean + typed?: boolean }] -// ----- jsx-a11y/accessible-emoji ----- -type JsxA11YAccessibleEmoji = []|[{ - [k: string]: unknown | undefined +// ----- jsdoc/check-types ----- +type JsdocCheckTypes = []|[{ + exemptTagContexts?: { + tag?: string + types?: (boolean | string[]) + }[] + noDefaults?: boolean + unifyParentAndChildTypeChecks?: boolean }] -// ----- jsx-a11y/alt-text ----- -type JsxA11YAltText = []|[{ - elements?: string[] - img?: string[] - object?: string[] - area?: string[] - "input[type=\"image\"]"?: string[] - [k: string]: unknown | undefined +// ----- jsdoc/check-values ----- +type JsdocCheckValues = []|[{ + allowedAuthors?: string[] + allowedLicenses?: (string[] | boolean) + licensePattern?: string + numericOnlyVariation?: boolean }] -// ----- jsx-a11y/anchor-ambiguous-text ----- -type JsxA11YAnchorAmbiguousText = []|[{ - words?: string[] - [k: string]: unknown | undefined +// ----- jsdoc/convert-to-jsdoc-comments ----- +type JsdocConvertToJsdocComments = []|[{ + allowedPrefixes?: string[] + contexts?: (string | { + context?: string + inlineCommentBlock?: boolean + })[] + contextsAfter?: (string | { + context?: string + inlineCommentBlock?: boolean + })[] + contextsBeforeAndAfter?: (string | { + context?: string + inlineCommentBlock?: boolean + })[] + enableFixer?: boolean + enforceJsdocLineStyle?: ("multi" | "single") + lineOrBlockStyle?: ("block" | "line" | "both") }] -// ----- jsx-a11y/anchor-has-content ----- -type JsxA11YAnchorHasContent = []|[{ - components?: string[] - [k: string]: unknown | undefined +// ----- jsdoc/empty-tags ----- +type JsdocEmptyTags = []|[{ + tags?: string[] +}] +// ----- jsdoc/implements-on-classes ----- +type JsdocImplementsOnClasses = []|[{ + contexts?: (string | { + comment?: string + context?: string + })[] +}] +// ----- jsdoc/informative-docs ----- +type JsdocInformativeDocs = []|[{ + aliases?: { + [k: string]: string[] + } + excludedTags?: string[] + uselessWords?: string[] +}] +// ----- jsdoc/lines-before-block ----- +type JsdocLinesBeforeBlock = []|[{ + checkBlockStarts?: boolean + excludedTags?: string[] + ignoreSameLine?: boolean + lines?: number +}] +// ----- jsdoc/match-description ----- +type JsdocMatchDescription = []|[{ + contexts?: (string | { + comment?: string + context?: string + })[] + mainDescription?: (string | boolean | { + match?: (string | boolean) + message?: string + }) + matchDescription?: string + message?: string + nonemptyTags?: boolean + tags?: { + [k: string]: (string | true | { + match?: (string | true) + message?: string + }) + } }] -// ----- jsx-a11y/anchor-is-valid ----- -type JsxA11YAnchorIsValid = []|[{ - components?: string[] - specialLink?: string[] - - aspects?: [("noHref" | "invalidHref" | "preferButton"), ...(("noHref" | "invalidHref" | "preferButton"))[]] - [k: string]: unknown | undefined +// ----- jsdoc/match-name ----- +type JsdocMatchName = []|[{ + match: { + allowName?: string + comment?: string + context?: string + disallowName?: string + message?: string + tags?: string[] + [k: string]: unknown | undefined + }[] }] -// ----- jsx-a11y/aria-activedescendant-has-tabindex ----- -type JsxA11YAriaActivedescendantHasTabindex = []|[{ - [k: string]: unknown | undefined +// ----- jsdoc/multiline-blocks ----- +type JsdocMultilineBlocks = []|[{ + allowMultipleTags?: boolean + minimumLengthForMultiline?: number + multilineTags?: ("*" | string[]) + noFinalLineText?: boolean + noMultilineBlocks?: boolean + noSingleLineBlocks?: boolean + noZeroLineText?: boolean + singleLineTags?: string[] }] -// ----- jsx-a11y/aria-props ----- -type JsxA11YAriaProps = []|[{ - [k: string]: unknown | undefined +// ----- jsdoc/no-bad-blocks ----- +type JsdocNoBadBlocks = []|[{ + ignore?: string[] + preventAllMultiAsteriskBlocks?: boolean }] -// ----- jsx-a11y/aria-proptypes ----- -type JsxA11YAriaProptypes = []|[{ - [k: string]: unknown | undefined +// ----- jsdoc/no-blank-blocks ----- +type JsdocNoBlankBlocks = []|[{ + enableFixer?: boolean }] -// ----- jsx-a11y/aria-role ----- -type JsxA11YAriaRole = []|[{ - allowedInvalidRoles?: string[] - ignoreNonDOM?: boolean - [k: string]: unknown | undefined +// ----- jsdoc/no-defaults ----- +type JsdocNoDefaults = []|[{ + contexts?: (string | { + comment?: string + context?: string + })[] + noOptionalParamNames?: boolean }] -// ----- jsx-a11y/aria-unsupported-elements ----- -type JsxA11YAriaUnsupportedElements = []|[{ - [k: string]: unknown | undefined +// ----- jsdoc/no-missing-syntax ----- +type JsdocNoMissingSyntax = []|[{ + contexts?: (string | { + comment?: string + context?: string + message?: string + minimum?: number + })[] }] -// ----- jsx-a11y/autocomplete-valid ----- -type JsxA11YAutocompleteValid = []|[{ - inputComponents?: string[] - [k: string]: unknown | undefined +// ----- jsdoc/no-multi-asterisks ----- +type JsdocNoMultiAsterisks = []|[{ + allowWhitespace?: boolean + preventAtEnd?: boolean + preventAtMiddleLines?: boolean }] -// ----- jsx-a11y/click-events-have-key-events ----- -type JsxA11YClickEventsHaveKeyEvents = []|[{ - [k: string]: unknown | undefined +// ----- jsdoc/no-restricted-syntax ----- +type JsdocNoRestrictedSyntax = []|[{ + contexts: (string | { + comment?: string + context?: string + message?: string + })[] }] -// ----- jsx-a11y/control-has-associated-label ----- -type JsxA11YControlHasAssociatedLabel = []|[{ - labelAttributes?: string[] - controlComponents?: string[] - ignoreElements?: string[] - ignoreRoles?: string[] - - depth?: number - [k: string]: unknown | undefined +// ----- jsdoc/no-types ----- +type JsdocNoTypes = []|[{ + contexts?: (string | { + comment?: string + context?: string + })[] }] -// ----- jsx-a11y/heading-has-content ----- -type JsxA11YHeadingHasContent = []|[{ - components?: string[] - [k: string]: unknown | undefined +// ----- jsdoc/no-undefined-types ----- +type JsdocNoUndefinedTypes = []|[{ + definedTypes?: string[] + disableReporting?: boolean + markVariablesAsUsed?: boolean }] -// ----- jsx-a11y/html-has-lang ----- -type JsxA11YHtmlHasLang = []|[{ - [k: string]: unknown | undefined +// ----- jsdoc/require-asterisk-prefix ----- +type JsdocRequireAsteriskPrefix = []|[("always" | "never" | "any")]|[("always" | "never" | "any"), { + tags?: { + always?: string[] + any?: string[] + never?: string[] + [k: string]: unknown | undefined + } }] -// ----- jsx-a11y/iframe-has-title ----- -type JsxA11YIframeHasTitle = []|[{ - [k: string]: unknown | undefined +// ----- jsdoc/require-description ----- +type JsdocRequireDescription = []|[{ + checkConstructors?: boolean + checkGetters?: boolean + checkSetters?: boolean + contexts?: (string | { + comment?: string + context?: string + })[] + descriptionStyle?: ("body" | "tag" | "any") + exemptedBy?: string[] }] -// ----- jsx-a11y/img-redundant-alt ----- -type JsxA11YImgRedundantAlt = []|[{ - components?: string[] - words?: string[] - [k: string]: unknown | undefined +// ----- jsdoc/require-description-complete-sentence ----- +type JsdocRequireDescriptionCompleteSentence = []|[{ + abbreviations?: string[] + newlineBeforeCapsAssumesBadSentenceEnd?: boolean + tags?: string[] }] -// ----- jsx-a11y/interactive-supports-focus ----- -type JsxA11YInteractiveSupportsFocus = []|[{ - - tabbable?: ("button" | "checkbox" | "columnheader" | "combobox" | "grid" | "gridcell" | "link" | "listbox" | "menu" | "menubar" | "menuitem" | "menuitemcheckbox" | "menuitemradio" | "option" | "progressbar" | "radio" | "radiogroup" | "row" | "rowheader" | "scrollbar" | "searchbox" | "slider" | "spinbutton" | "switch" | "tab" | "tablist" | "textbox" | "tree" | "treegrid" | "treeitem" | "doc-backlink" | "doc-biblioref" | "doc-glossref" | "doc-noteref")[] - [k: string]: unknown | undefined +// ----- jsdoc/require-example ----- +type JsdocRequireExample = []|[{ + checkConstructors?: boolean + checkGetters?: boolean + checkSetters?: boolean + contexts?: (string | { + comment?: string + context?: string + })[] + enableFixer?: boolean + exemptedBy?: string[] + exemptNoArguments?: boolean }] -// ----- jsx-a11y/label-has-associated-control ----- -type JsxA11YLabelHasAssociatedControl = []|[{ - labelComponents?: string[] - labelAttributes?: string[] - controlComponents?: string[] - - assert?: ("htmlFor" | "nesting" | "both" | "either") - - depth?: number - [k: string]: unknown | undefined +// ----- jsdoc/require-file-overview ----- +type JsdocRequireFileOverview = []|[{ + tags?: { + [k: string]: { + initialCommentsOnly?: boolean + mustExist?: boolean + preventDuplicates?: boolean + } + } }] -// ----- jsx-a11y/label-has-for ----- -type JsxA11YLabelHasFor = []|[{ - components?: string[] - required?: (("nesting" | "id") | { - - some: ("nesting" | "id")[] - [k: string]: unknown | undefined - } | { - - every: ("nesting" | "id")[] - [k: string]: unknown | undefined +// ----- jsdoc/require-hyphen-before-param-description ----- +type JsdocRequireHyphenBeforeParamDescription = []|[("always" | "never")]|[("always" | "never"), { + tags?: ({ + [k: string]: ("always" | "never") + } | "any") +}] +// ----- jsdoc/require-jsdoc ----- +type JsdocRequireJsdoc = []|[{ + checkConstructors?: boolean + checkGetters?: (boolean | "no-setter") + checkSetters?: (boolean | "no-getter") + contexts?: (string | { + context?: string + inlineCommentBlock?: boolean + minLineCount?: number + })[] + enableFixer?: boolean + exemptEmptyConstructors?: boolean + exemptEmptyFunctions?: boolean + fixerMessage?: string + minLineCount?: number + publicOnly?: (boolean | { + ancestorsOnly?: boolean + cjs?: boolean + esm?: boolean + window?: boolean }) - allowChildren?: boolean - [k: string]: unknown | undefined + require?: { + ArrowFunctionExpression?: boolean + ClassDeclaration?: boolean + ClassExpression?: boolean + FunctionDeclaration?: boolean + FunctionExpression?: boolean + MethodDefinition?: boolean + } }] -// ----- jsx-a11y/lang ----- -type JsxA11YLang = []|[{ - [k: string]: unknown | undefined +// ----- jsdoc/require-param ----- +type JsdocRequireParam = []|[{ + autoIncrementBase?: number + checkConstructors?: boolean + checkDestructured?: boolean + checkDestructuredRoots?: boolean + checkGetters?: boolean + checkRestProperty?: boolean + checkSetters?: boolean + checkTypesPattern?: string + contexts?: (string | { + comment?: string + context?: string + })[] + enableFixer?: boolean + enableRestElementFixer?: boolean + enableRootFixer?: boolean + exemptedBy?: string[] + ignoreWhenAllParamsMissing?: boolean + unnamedRootBase?: string[] + useDefaultObjectProperties?: boolean +}] +// ----- jsdoc/require-param-description ----- +type JsdocRequireParamDescription = []|[{ + contexts?: (string | { + comment?: string + context?: string + })[] + defaultDestructuredRootDescription?: string + setDefaultDestructuredRootDescription?: boolean }] -// ----- jsx-a11y/media-has-caption ----- -type JsxA11YMediaHasCaption = []|[{ - audio?: string[] - video?: string[] - track?: string[] - [k: string]: unknown | undefined +// ----- jsdoc/require-param-name ----- +type JsdocRequireParamName = []|[{ + contexts?: (string | { + comment?: string + context?: string + })[] }] -// ----- jsx-a11y/mouse-events-have-key-events ----- -type JsxA11YMouseEventsHaveKeyEvents = []|[{ - - hoverInHandlers?: string[] - - hoverOutHandlers?: string[] - [k: string]: unknown | undefined +// ----- jsdoc/require-param-type ----- +type JsdocRequireParamType = []|[{ + contexts?: (string | { + comment?: string + context?: string + })[] + defaultDestructuredRootType?: string + setDefaultDestructuredRootType?: boolean }] -// ----- jsx-a11y/no-access-key ----- -type JsxA11YNoAccessKey = []|[{ - [k: string]: unknown | undefined +// ----- jsdoc/require-returns ----- +type JsdocRequireReturns = []|[{ + checkConstructors?: boolean + checkGetters?: boolean + contexts?: (string | { + comment?: string + context?: string + forceRequireReturn?: boolean + })[] + enableFixer?: boolean + exemptedBy?: string[] + forceRequireReturn?: boolean + forceReturnsWithAsync?: boolean + publicOnly?: (boolean | { + ancestorsOnly?: boolean + cjs?: boolean + esm?: boolean + window?: boolean + }) }] -// ----- jsx-a11y/no-aria-hidden-on-focusable ----- -type JsxA11YNoAriaHiddenOnFocusable = []|[{ - [k: string]: unknown | undefined +// ----- jsdoc/require-returns-check ----- +type JsdocRequireReturnsCheck = []|[{ + exemptAsync?: boolean + exemptGenerators?: boolean + reportMissingReturnForUndefinedTypes?: boolean }] -// ----- jsx-a11y/no-autofocus ----- -type JsxA11YNoAutofocus = []|[{ - ignoreNonDOM?: boolean - [k: string]: unknown | undefined +// ----- jsdoc/require-returns-description ----- +type JsdocRequireReturnsDescription = []|[{ + contexts?: (string | { + comment?: string + context?: string + })[] }] -// ----- jsx-a11y/no-distracting-elements ----- -type JsxA11YNoDistractingElements = []|[{ - - elements?: ("marquee" | "blink")[] - [k: string]: unknown | undefined +// ----- jsdoc/require-returns-type ----- +type JsdocRequireReturnsType = []|[{ + contexts?: (string | { + comment?: string + context?: string + })[] }] -// ----- jsx-a11y/no-interactive-element-to-noninteractive-role ----- -type JsxA11YNoInteractiveElementToNoninteractiveRole = []|[{ - [k: string]: string[] | undefined +// ----- jsdoc/require-template ----- +type JsdocRequireTemplate = []|[{ + requireSeparateTemplates?: boolean }] -// ----- jsx-a11y/no-noninteractive-element-interactions ----- -type JsxA11YNoNoninteractiveElementInteractions = []|[{ - handlers?: string[] - [k: string]: unknown | undefined +// ----- jsdoc/require-throws ----- +type JsdocRequireThrows = []|[{ + contexts?: (string | { + comment?: string + context?: string + })[] + exemptedBy?: string[] }] -// ----- jsx-a11y/no-noninteractive-element-to-interactive-role ----- -type JsxA11YNoNoninteractiveElementToInteractiveRole = []|[{ - [k: string]: string[] | undefined +// ----- jsdoc/require-yields ----- +type JsdocRequireYields = []|[{ + contexts?: (string | { + comment?: string + context?: string + })[] + exemptedBy?: string[] + forceRequireNext?: boolean + forceRequireYields?: boolean + next?: boolean + nextWithGeneratorTag?: boolean + withGeneratorTag?: boolean }] -// ----- jsx-a11y/no-noninteractive-tabindex ----- -type JsxA11YNoNoninteractiveTabindex = []|[{ - - roles?: string[] - - tags?: string[] - [k: string]: unknown | undefined +// ----- jsdoc/require-yields-check ----- +type JsdocRequireYieldsCheck = []|[{ + checkGeneratorsOnly?: boolean + contexts?: (string | { + comment?: string + context?: string + })[] + exemptedBy?: string[] + next?: boolean }] -// ----- jsx-a11y/no-onchange ----- -type JsxA11YNoOnchange = []|[{ - [k: string]: unknown | undefined +// ----- jsdoc/sort-tags ----- +type JsdocSortTags = []|[{ + alphabetizeExtras?: boolean + linesBetween?: number + reportIntraTagGroupSpacing?: boolean + reportTagGroupSpacing?: boolean + tagSequence?: { + tags?: string[] + [k: string]: unknown | undefined + }[] }] -// ----- jsx-a11y/no-redundant-roles ----- -type JsxA11YNoRedundantRoles = []|[{ - [k: string]: string[] | undefined +// ----- jsdoc/tag-lines ----- +type JsdocTagLines = []|[("always" | "any" | "never")]|[("always" | "any" | "never"), { + applyToEndTag?: boolean + count?: number + endLines?: (number | null) + startLines?: (number | null) + tags?: { + [k: string]: { + count?: number + lines?: ("always" | "never" | "any") + } + } }] -// ----- jsx-a11y/no-static-element-interactions ----- -type JsxA11YNoStaticElementInteractions = []|[{ - handlers?: string[] - [k: string]: unknown | undefined +// ----- jsdoc/text-escaping ----- +type JsdocTextEscaping = []|[{ + escapeHTML?: boolean + escapeMarkdown?: boolean }] -// ----- jsx-a11y/prefer-tag-over-role ----- -type JsxA11YPreferTagOverRole = []|[{ - [k: string]: unknown | undefined +// ----- jsdoc/valid-types ----- +type JsdocValidTypes = []|[{ + allowEmptyNamepaths?: boolean }] -// ----- jsx-a11y/role-has-required-aria-props ----- -type JsxA11YRoleHasRequiredAriaProps = []|[{ - [k: string]: unknown | undefined +// ----- jsonc/array-bracket-newline ----- +type JsoncArrayBracketNewline = []|[(("always" | "never" | "consistent") | { + multiline?: boolean + minItems?: (number | null) +})] +// ----- jsonc/array-bracket-spacing ----- +type JsoncArrayBracketSpacing = []|[("always" | "never")]|[("always" | "never"), { + singleValue?: boolean + objectsInArrays?: boolean + arraysInArrays?: boolean }] -// ----- jsx-a11y/role-supports-aria-props ----- -type JsxA11YRoleSupportsAriaProps = []|[{ - [k: string]: unknown | undefined +// ----- jsonc/array-element-newline ----- +type JsoncArrayElementNewline = []|[(_JsoncArrayElementNewlineBasicConfig | { + ArrayExpression?: _JsoncArrayElementNewlineBasicConfig + JSONArrayExpression?: _JsoncArrayElementNewlineBasicConfig + ArrayPattern?: _JsoncArrayElementNewlineBasicConfig +})] +type _JsoncArrayElementNewlineBasicConfig = (("always" | "never" | "consistent") | { + multiline?: boolean + minItems?: (number | null) +}) +// ----- jsonc/comma-dangle ----- +type JsoncCommaDangle = []|[(_JsoncCommaDangleValue | { + arrays?: _JsoncCommaDangleValueWithIgnore + objects?: _JsoncCommaDangleValueWithIgnore + imports?: _JsoncCommaDangleValueWithIgnore + exports?: _JsoncCommaDangleValueWithIgnore + functions?: _JsoncCommaDangleValueWithIgnore +})] +type _JsoncCommaDangleValue = ("always-multiline" | "always" | "never" | "only-multiline") +type _JsoncCommaDangleValueWithIgnore = ("always-multiline" | "always" | "ignore" | "never" | "only-multiline") +// ----- jsonc/comma-style ----- +type JsoncCommaStyle = []|[("first" | "last")]|[("first" | "last"), { + exceptions?: { + [k: string]: boolean | undefined + } }] -// ----- jsx-a11y/scope ----- -type JsxA11YScope = []|[{ - [k: string]: unknown | undefined +// ----- jsonc/indent ----- +type JsoncIndent = []|[("tab" | number)]|[("tab" | number), { + SwitchCase?: number + VariableDeclarator?: ((number | ("first" | "off")) | { + var?: (number | ("first" | "off")) + let?: (number | ("first" | "off")) + const?: (number | ("first" | "off")) + }) + outerIIFEBody?: (number | "off") + MemberExpression?: (number | "off") + FunctionDeclaration?: { + parameters?: (number | ("first" | "off")) + body?: number + } + FunctionExpression?: { + parameters?: (number | ("first" | "off")) + body?: number + } + StaticBlock?: { + body?: number + } + CallExpression?: { + arguments?: (number | ("first" | "off")) + } + ArrayExpression?: (number | ("first" | "off")) + ObjectExpression?: (number | ("first" | "off")) + ImportDeclaration?: (number | ("first" | "off")) + flatTernaryExpressions?: boolean + offsetTernaryExpressions?: boolean + ignoredNodes?: string[] + ignoreComments?: boolean }] -// ----- jsx-a11y/tabindex-no-positive ----- -type JsxA11YTabindexNoPositive = []|[{ - [k: string]: unknown | undefined +// ----- jsonc/key-name-casing ----- +type JsoncKeyNameCasing = []|[{ + camelCase?: boolean + PascalCase?: boolean + SCREAMING_SNAKE_CASE?: boolean + "kebab-case"?: boolean + snake_case?: boolean + ignores?: string[] }] -// ----- jsx-quotes ----- -type JsxQuotes = []|[("prefer-single" | "prefer-double")] -// ----- key-spacing ----- -type KeySpacing = []|[({ +// ----- jsonc/key-spacing ----- +type JsoncKeySpacing = []|[({ align?: (("colon" | "value") | { mode?: ("strict" | "minimum") on?: ("colon" | "value") @@ -12884,1315 +10849,2281 @@ type KeySpacing = []|[({ afterColon?: boolean } })] -// ----- keyword-spacing ----- -type KeywordSpacing = []|[{ - before?: boolean - after?: boolean - overrides?: { - abstract?: { - before?: boolean - after?: boolean - } - as?: { - before?: boolean - after?: boolean - } - async?: { - before?: boolean - after?: boolean - } - await?: { - before?: boolean - after?: boolean - } - boolean?: { - before?: boolean - after?: boolean - } - break?: { - before?: boolean - after?: boolean - } - byte?: { - before?: boolean - after?: boolean - } - case?: { - before?: boolean - after?: boolean - } - catch?: { - before?: boolean - after?: boolean - } - char?: { - before?: boolean - after?: boolean - } - class?: { - before?: boolean - after?: boolean - } - const?: { - before?: boolean - after?: boolean - } - continue?: { - before?: boolean - after?: boolean - } - debugger?: { - before?: boolean - after?: boolean - } - default?: { - before?: boolean - after?: boolean - } - delete?: { - before?: boolean - after?: boolean - } - do?: { - before?: boolean - after?: boolean - } - double?: { - before?: boolean - after?: boolean - } - else?: { - before?: boolean - after?: boolean - } - enum?: { - before?: boolean - after?: boolean - } - export?: { - before?: boolean - after?: boolean - } - extends?: { - before?: boolean - after?: boolean - } - false?: { - before?: boolean - after?: boolean - } - final?: { - before?: boolean - after?: boolean - } - finally?: { - before?: boolean - after?: boolean - } - float?: { - before?: boolean - after?: boolean - } - for?: { - before?: boolean - after?: boolean - } - from?: { - before?: boolean - after?: boolean - } - function?: { - before?: boolean - after?: boolean - } - get?: { - before?: boolean - after?: boolean - } - goto?: { - before?: boolean - after?: boolean - } - if?: { - before?: boolean - after?: boolean - } - implements?: { - before?: boolean - after?: boolean - } - import?: { - before?: boolean - after?: boolean - } - in?: { - before?: boolean - after?: boolean - } - instanceof?: { - before?: boolean - after?: boolean - } - int?: { - before?: boolean - after?: boolean - } - interface?: { - before?: boolean - after?: boolean - } - let?: { - before?: boolean - after?: boolean - } - long?: { - before?: boolean - after?: boolean - } - native?: { - before?: boolean - after?: boolean - } - new?: { - before?: boolean - after?: boolean - } - null?: { - before?: boolean - after?: boolean - } - of?: { - before?: boolean - after?: boolean - } - package?: { - before?: boolean - after?: boolean - } - private?: { - before?: boolean - after?: boolean - } - protected?: { - before?: boolean - after?: boolean - } - public?: { - before?: boolean - after?: boolean - } - return?: { - before?: boolean - after?: boolean - } - set?: { - before?: boolean - after?: boolean - } - short?: { - before?: boolean - after?: boolean - } - static?: { - before?: boolean - after?: boolean - } - super?: { - before?: boolean - after?: boolean - } - switch?: { - before?: boolean - after?: boolean - } - synchronized?: { - before?: boolean - after?: boolean - } - this?: { - before?: boolean - after?: boolean - } - throw?: { - before?: boolean - after?: boolean - } - throws?: { - before?: boolean - after?: boolean - } - transient?: { - before?: boolean - after?: boolean - } - true?: { - before?: boolean - after?: boolean - } - try?: { - before?: boolean - after?: boolean +// ----- jsonc/no-irregular-whitespace ----- +type JsoncNoIrregularWhitespace = []|[{ + skipComments?: boolean + skipStrings?: boolean + skipTemplates?: boolean + skipRegExps?: boolean + skipJSXText?: boolean +}] +// ----- jsonc/no-useless-escape ----- +type JsoncNoUselessEscape = []|[{ + allowRegexCharacters?: string[] +}] +// ----- jsonc/object-curly-newline ----- +type JsoncObjectCurlyNewline = []|[((("always" | "never") | { + multiline?: boolean + minProperties?: number + consistent?: boolean +}) | { + ObjectExpression?: (("always" | "never") | { + multiline?: boolean + minProperties?: number + consistent?: boolean + }) + ObjectPattern?: (("always" | "never") | { + multiline?: boolean + minProperties?: number + consistent?: boolean + }) + ImportDeclaration?: (("always" | "never") | { + multiline?: boolean + minProperties?: number + consistent?: boolean + }) + ExportDeclaration?: (("always" | "never") | { + multiline?: boolean + minProperties?: number + consistent?: boolean + }) +})] +// ----- jsonc/object-curly-spacing ----- +type JsoncObjectCurlySpacing = []|[("always" | "never")]|[("always" | "never"), { + arraysInObjects?: boolean + objectsInObjects?: boolean +}] +// ----- jsonc/object-property-newline ----- +type JsoncObjectPropertyNewline = []|[{ + allowAllPropertiesOnSameLine?: boolean + allowMultiplePropertiesPerLine?: boolean +}] +// ----- jsonc/quote-props ----- +type JsoncQuoteProps = ([]|[("always" | "as-needed" | "consistent" | "consistent-as-needed")] | []|[("always" | "as-needed" | "consistent" | "consistent-as-needed")]|[("always" | "as-needed" | "consistent" | "consistent-as-needed"), { + keywords?: boolean + unnecessary?: boolean + numbers?: boolean +}]) +// ----- jsonc/quotes ----- +type JsoncQuotes = []|[("single" | "double" | "backtick")]|[("single" | "double" | "backtick"), ("avoid-escape" | { + avoidEscape?: boolean + allowTemplateLiterals?: boolean +})] +// ----- jsonc/sort-array-values ----- +type JsoncSortArrayValues = [{ + pathPattern: string + order: ((string | { + valuePattern?: string + order?: { + type?: ("asc" | "desc") + caseSensitive?: boolean + natural?: boolean } - typeof?: { - before?: boolean - after?: boolean + })[] | { + type?: ("asc" | "desc") + caseSensitive?: boolean + natural?: boolean + }) + minValues?: number +}, ...({ + pathPattern: string + order: ((string | { + valuePattern?: string + order?: { + type?: ("asc" | "desc") + caseSensitive?: boolean + natural?: boolean } - var?: { - before?: boolean - after?: boolean + })[] | { + type?: ("asc" | "desc") + caseSensitive?: boolean + natural?: boolean + }) + minValues?: number +})[]] +// ----- jsonc/sort-keys ----- +type JsoncSortKeys = ([{ + pathPattern: string + hasProperties?: string[] + order: ((string | { + keyPattern?: string + order?: { + type?: ("asc" | "desc") + caseSensitive?: boolean + natural?: boolean } - void?: { - before?: boolean - after?: boolean + })[] | { + type?: ("asc" | "desc") + caseSensitive?: boolean + natural?: boolean + }) + minKeys?: number + allowLineSeparatedGroups?: boolean +}, ...({ + pathPattern: string + hasProperties?: string[] + order: ((string | { + keyPattern?: string + order?: { + type?: ("asc" | "desc") + caseSensitive?: boolean + natural?: boolean } - volatile?: { - before?: boolean - after?: boolean + })[] | { + type?: ("asc" | "desc") + caseSensitive?: boolean + natural?: boolean + }) + minKeys?: number + allowLineSeparatedGroups?: boolean +})[]] | []|[("asc" | "desc")]|[("asc" | "desc"), { + caseSensitive?: boolean + natural?: boolean + minKeys?: number + allowLineSeparatedGroups?: boolean +}]) +// ----- jsonc/space-unary-ops ----- +type JsoncSpaceUnaryOps = []|[{ + words?: boolean + nonwords?: boolean + overrides?: { + [k: string]: boolean | undefined + } +}] +// ----- jsx-a11y/accessible-emoji ----- +type JsxA11YAccessibleEmoji = []|[{ + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/alt-text ----- +type JsxA11YAltText = []|[{ + elements?: string[] + img?: string[] + object?: string[] + area?: string[] + "input[type=\"image\"]"?: string[] + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/anchor-ambiguous-text ----- +type JsxA11YAnchorAmbiguousText = []|[{ + words?: string[] + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/anchor-has-content ----- +type JsxA11YAnchorHasContent = []|[{ + components?: string[] + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/anchor-is-valid ----- +type JsxA11YAnchorIsValid = []|[{ + components?: string[] + specialLink?: string[] + + aspects?: [("noHref" | "invalidHref" | "preferButton"), ...(("noHref" | "invalidHref" | "preferButton"))[]] + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/aria-activedescendant-has-tabindex ----- +type JsxA11YAriaActivedescendantHasTabindex = []|[{ + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/aria-props ----- +type JsxA11YAriaProps = []|[{ + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/aria-proptypes ----- +type JsxA11YAriaProptypes = []|[{ + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/aria-role ----- +type JsxA11YAriaRole = []|[{ + allowedInvalidRoles?: string[] + ignoreNonDOM?: boolean + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/aria-unsupported-elements ----- +type JsxA11YAriaUnsupportedElements = []|[{ + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/autocomplete-valid ----- +type JsxA11YAutocompleteValid = []|[{ + inputComponents?: string[] + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/click-events-have-key-events ----- +type JsxA11YClickEventsHaveKeyEvents = []|[{ + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/control-has-associated-label ----- +type JsxA11YControlHasAssociatedLabel = []|[{ + labelAttributes?: string[] + controlComponents?: string[] + ignoreElements?: string[] + ignoreRoles?: string[] + + depth?: number + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/heading-has-content ----- +type JsxA11YHeadingHasContent = []|[{ + components?: string[] + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/html-has-lang ----- +type JsxA11YHtmlHasLang = []|[{ + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/iframe-has-title ----- +type JsxA11YIframeHasTitle = []|[{ + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/img-redundant-alt ----- +type JsxA11YImgRedundantAlt = []|[{ + components?: string[] + words?: string[] + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/interactive-supports-focus ----- +type JsxA11YInteractiveSupportsFocus = []|[{ + + tabbable?: ("button" | "checkbox" | "columnheader" | "combobox" | "grid" | "gridcell" | "link" | "listbox" | "menu" | "menubar" | "menuitem" | "menuitemcheckbox" | "menuitemradio" | "option" | "progressbar" | "radio" | "radiogroup" | "row" | "rowheader" | "scrollbar" | "searchbox" | "slider" | "spinbutton" | "switch" | "tab" | "tablist" | "textbox" | "tree" | "treegrid" | "treeitem" | "doc-backlink" | "doc-biblioref" | "doc-glossref" | "doc-noteref")[] + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/label-has-associated-control ----- +type JsxA11YLabelHasAssociatedControl = []|[{ + labelComponents?: string[] + labelAttributes?: string[] + controlComponents?: string[] + + assert?: ("htmlFor" | "nesting" | "both" | "either") + + depth?: number + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/label-has-for ----- +type JsxA11YLabelHasFor = []|[{ + components?: string[] + required?: (("nesting" | "id") | { + + some: ("nesting" | "id")[] + [k: string]: unknown | undefined + } | { + + every: ("nesting" | "id")[] + [k: string]: unknown | undefined + }) + allowChildren?: boolean + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/lang ----- +type JsxA11YLang = []|[{ + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/media-has-caption ----- +type JsxA11YMediaHasCaption = []|[{ + audio?: string[] + video?: string[] + track?: string[] + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/mouse-events-have-key-events ----- +type JsxA11YMouseEventsHaveKeyEvents = []|[{ + + hoverInHandlers?: string[] + + hoverOutHandlers?: string[] + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/no-access-key ----- +type JsxA11YNoAccessKey = []|[{ + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/no-aria-hidden-on-focusable ----- +type JsxA11YNoAriaHiddenOnFocusable = []|[{ + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/no-autofocus ----- +type JsxA11YNoAutofocus = []|[{ + ignoreNonDOM?: boolean + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/no-distracting-elements ----- +type JsxA11YNoDistractingElements = []|[{ + + elements?: ("marquee" | "blink")[] + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/no-interactive-element-to-noninteractive-role ----- +type JsxA11YNoInteractiveElementToNoninteractiveRole = []|[{ + [k: string]: string[] | undefined +}] +// ----- jsx-a11y/no-noninteractive-element-interactions ----- +type JsxA11YNoNoninteractiveElementInteractions = []|[{ + handlers?: string[] + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/no-noninteractive-element-to-interactive-role ----- +type JsxA11YNoNoninteractiveElementToInteractiveRole = []|[{ + [k: string]: string[] | undefined +}] +// ----- jsx-a11y/no-noninteractive-tabindex ----- +type JsxA11YNoNoninteractiveTabindex = []|[{ + + roles?: string[] + + tags?: string[] + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/no-onchange ----- +type JsxA11YNoOnchange = []|[{ + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/no-redundant-roles ----- +type JsxA11YNoRedundantRoles = []|[{ + [k: string]: string[] | undefined +}] +// ----- jsx-a11y/no-static-element-interactions ----- +type JsxA11YNoStaticElementInteractions = []|[{ + handlers?: string[] + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/prefer-tag-over-role ----- +type JsxA11YPreferTagOverRole = []|[{ + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/role-has-required-aria-props ----- +type JsxA11YRoleHasRequiredAriaProps = []|[{ + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/role-supports-aria-props ----- +type JsxA11YRoleSupportsAriaProps = []|[{ + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/scope ----- +type JsxA11YScope = []|[{ + [k: string]: unknown | undefined +}] +// ----- jsx-a11y/tabindex-no-positive ----- +type JsxA11YTabindexNoPositive = []|[{ + [k: string]: unknown | undefined +}] +// ----- markdown/fenced-code-language ----- +type MarkdownFencedCodeLanguage = []|[{ + required?: string[] +}] +// ----- markdown/no-html ----- +type MarkdownNoHtml = []|[{ + allowed?: string[] +}] +// ----- n/callback-return ----- +type NCallbackReturn = []|[string[]] +// ----- n/exports-style ----- +type NExportsStyle = []|[("module.exports" | "exports")]|[("module.exports" | "exports"), { + allowBatchAssign?: boolean +}] +// ----- n/file-extension-in-import ----- +type NFileExtensionInImport = []|[("always" | "never")]|[("always" | "never"), { + [k: string]: ("always" | "never") | undefined +}] +// ----- n/handle-callback-err ----- +type NHandleCallbackErr = []|[string] +// ----- n/hashbang ----- +type NHashbang = []|[{ + convertPath?: ({ + + [k: string]: [string, string] + } | [{ + + include: [string, ...(string)[]] + exclude?: string[] + + replace: [string, string] + }, ...({ + + include: [string, ...(string)[]] + exclude?: string[] + + replace: [string, string] + })[]]) + ignoreUnpublished?: boolean + additionalExecutables?: string[] + executableMap?: { + [k: string]: string + } +}] +// ----- n/no-deprecated-api ----- +type NNoDeprecatedApi = []|[{ + version?: string + ignoreModuleItems?: ("_linklist" | "_stream_wrap" | "async_hooks.currentId" | "async_hooks.triggerId" | "buffer.Buffer()" | "new buffer.Buffer()" | "buffer.SlowBuffer" | "constants" | "crypto._toBuf" | "crypto.Credentials" | "crypto.DEFAULT_ENCODING" | "crypto.createCipher" | "crypto.createCredentials" | "crypto.createDecipher" | "crypto.fips" | "crypto.prng" | "crypto.pseudoRandomBytes" | "crypto.rng" | "domain" | "events.EventEmitter.listenerCount" | "events.listenerCount" | "freelist" | "fs.SyncWriteStream" | "fs.exists" | "fs.lchmod" | "fs.lchmodSync" | "http.createClient" | "module.Module.createRequireFromPath" | "module.Module.requireRepl" | "module.Module._debug" | "module.createRequireFromPath" | "module.requireRepl" | "module._debug" | "net._setSimultaneousAccepts" | "os.getNetworkInterfaces" | "os.tmpDir" | "path._makeLong" | "process.EventEmitter" | "process.assert" | "process.binding" | "process.env.NODE_REPL_HISTORY_FILE" | "process.report.triggerReport" | "punycode" | "readline.codePointAt" | "readline.getStringWidth" | "readline.isFullWidthCodePoint" | "readline.stripVTControlCharacters" | "repl.REPLServer" | "repl.Recoverable" | "repl.REPL_MODE_MAGIC" | "safe-buffer.Buffer()" | "new safe-buffer.Buffer()" | "safe-buffer.SlowBuffer" | "sys" | "timers.enroll" | "timers.unenroll" | "tls.CleartextStream" | "tls.CryptoStream" | "tls.SecurePair" | "tls.convertNPNProtocols" | "tls.createSecurePair" | "tls.parseCertString" | "tty.setRawMode" | "url.parse" | "url.resolve" | "util.debug" | "util.error" | "util.isArray" | "util.isBoolean" | "util.isBuffer" | "util.isDate" | "util.isError" | "util.isFunction" | "util.isNull" | "util.isNullOrUndefined" | "util.isNumber" | "util.isObject" | "util.isPrimitive" | "util.isRegExp" | "util.isString" | "util.isSymbol" | "util.isUndefined" | "util.log" | "util.print" | "util.pump" | "util.puts" | "util._extend" | "vm.runInDebugContext" | "zlib.BrotliCompress()" | "zlib.BrotliDecompress()" | "zlib.Deflate()" | "zlib.DeflateRaw()" | "zlib.Gunzip()" | "zlib.Gzip()" | "zlib.Inflate()" | "zlib.InflateRaw()" | "zlib.Unzip()")[] + ignoreGlobalItems?: ("Buffer()" | "new Buffer()" | "COUNTER_NET_SERVER_CONNECTION" | "COUNTER_NET_SERVER_CONNECTION_CLOSE" | "COUNTER_HTTP_SERVER_REQUEST" | "COUNTER_HTTP_SERVER_RESPONSE" | "COUNTER_HTTP_CLIENT_REQUEST" | "COUNTER_HTTP_CLIENT_RESPONSE" | "GLOBAL" | "Intl.v8BreakIterator" | "require.extensions" | "root" | "process.EventEmitter" | "process.assert" | "process.binding" | "process.env.NODE_REPL_HISTORY_FILE" | "process.report.triggerReport")[] + ignoreIndirectDependencies?: boolean +}] +// ----- n/no-extraneous-import ----- +type NNoExtraneousImport = []|[{ + allowModules?: string[] + convertPath?: ({ + + [k: string]: [string, string] + } | [{ + + include: [string, ...(string)[]] + exclude?: string[] + + replace: [string, string] + }, ...({ + + include: [string, ...(string)[]] + exclude?: string[] + + replace: [string, string] + })[]]) + resolvePaths?: string[] + resolverConfig?: { + [k: string]: unknown | undefined + } +}] +// ----- n/no-extraneous-require ----- +type NNoExtraneousRequire = []|[{ + allowModules?: string[] + convertPath?: ({ + + [k: string]: [string, string] + } | [{ + + include: [string, ...(string)[]] + exclude?: string[] + + replace: [string, string] + }, ...({ + + include: [string, ...(string)[]] + exclude?: string[] + + replace: [string, string] + })[]]) + resolvePaths?: string[] + resolverConfig?: { + [k: string]: unknown | undefined + } + tryExtensions?: string[] +}] +// ----- n/no-hide-core-modules ----- +type NNoHideCoreModules = []|[{ + allow?: ("assert" | "buffer" | "child_process" | "cluster" | "console" | "constants" | "crypto" | "dgram" | "dns" | "events" | "fs" | "http" | "https" | "module" | "net" | "os" | "path" | "querystring" | "readline" | "repl" | "stream" | "string_decoder" | "timers" | "tls" | "tty" | "url" | "util" | "vm" | "zlib")[] + ignoreDirectDependencies?: boolean + ignoreIndirectDependencies?: boolean +}] +// ----- n/no-missing-import ----- +type NNoMissingImport = []|[{ + allowModules?: string[] + resolvePaths?: string[] + resolverConfig?: { + [k: string]: unknown | undefined + } + tryExtensions?: string[] + ignoreTypeImport?: boolean + tsconfigPath?: string + typescriptExtensionMap?: (unknown[][] | ("react" | "react-jsx" | "react-jsxdev" | "react-native" | "preserve")) +}] +// ----- n/no-missing-require ----- +type NNoMissingRequire = []|[{ + allowModules?: string[] + tryExtensions?: string[] + resolvePaths?: string[] + resolverConfig?: { + [k: string]: unknown | undefined + } + typescriptExtensionMap?: (unknown[][] | ("react" | "react-jsx" | "react-jsxdev" | "react-native" | "preserve")) + tsconfigPath?: string +}] +// ----- n/no-mixed-requires ----- +type NNoMixedRequires = []|[(boolean | { + grouping?: boolean + allowCall?: boolean +})] +// ----- n/no-process-env ----- +type NNoProcessEnv = []|[{ + allowedVariables?: string[] +}] +// ----- n/no-restricted-import ----- +type NNoRestrictedImport = []|[(string | { + name: (string | string[]) + message?: string +})[]] +// ----- n/no-restricted-require ----- +type NNoRestrictedRequire = []|[(string | { + name: (string | string[]) + message?: string +})[]] +// ----- n/no-sync ----- +type NNoSync = []|[{ + allowAtRootLevel?: boolean + ignores?: string[] +}] +// ----- n/no-unpublished-bin ----- +type NNoUnpublishedBin = []|[{ + convertPath?: ({ + + [k: string]: [string, string] + } | [{ + + include: [string, ...(string)[]] + exclude?: string[] + + replace: [string, string] + }, ...({ + + include: [string, ...(string)[]] + exclude?: string[] + + replace: [string, string] + })[]]) + [k: string]: unknown | undefined +}] +// ----- n/no-unpublished-import ----- +type NNoUnpublishedImport = []|[{ + allowModules?: string[] + convertPath?: ({ + + [k: string]: [string, string] + } | [{ + + include: [string, ...(string)[]] + exclude?: string[] + + replace: [string, string] + }, ...({ + + include: [string, ...(string)[]] + exclude?: string[] + + replace: [string, string] + })[]]) + resolvePaths?: string[] + resolverConfig?: { + [k: string]: unknown | undefined + } + tryExtensions?: string[] + ignoreTypeImport?: boolean + ignorePrivate?: boolean +}] +// ----- n/no-unpublished-require ----- +type NNoUnpublishedRequire = []|[{ + allowModules?: string[] + convertPath?: ({ + + [k: string]: [string, string] + } | [{ + + include: [string, ...(string)[]] + exclude?: string[] + + replace: [string, string] + }, ...({ + + include: [string, ...(string)[]] + exclude?: string[] + + replace: [string, string] + })[]]) + resolvePaths?: string[] + resolverConfig?: { + [k: string]: unknown | undefined + } + tryExtensions?: string[] + ignorePrivate?: boolean +}] +// ----- n/no-unsupported-features/es-builtins ----- +type NNoUnsupportedFeaturesEsBuiltins = []|[{ + version?: string + ignores?: ("AggregateError" | "Array" | "Array.from" | "Array.isArray" | "Array.length" | "Array.of" | "Array.toLocaleString" | "ArrayBuffer" | "ArrayBuffer.isView" | "Atomics" | "Atomics.add" | "Atomics.and" | "Atomics.compareExchange" | "Atomics.exchange" | "Atomics.isLockFree" | "Atomics.load" | "Atomics.notify" | "Atomics.or" | "Atomics.store" | "Atomics.sub" | "Atomics.wait" | "Atomics.waitAsync" | "Atomics.xor" | "BigInt" | "BigInt.asIntN" | "BigInt.asUintN" | "BigInt64Array" | "BigInt64Array.BYTES_PER_ELEMENT" | "BigInt64Array.from" | "BigInt64Array.name" | "BigInt64Array.of" | "BigUint64Array" | "BigUint64Array.BYTES_PER_ELEMENT" | "BigUint64Array.from" | "BigUint64Array.name" | "BigUint64Array.of" | "Boolean" | "DataView" | "Date" | "Date.UTC" | "Date.now" | "Date.parse" | "Date.toLocaleDateString" | "Date.toLocaleString" | "Date.toLocaleTimeString" | "Error" | "Error.cause" | "EvalError" | "FinalizationRegistry" | "Float32Array" | "Float32Array.BYTES_PER_ELEMENT" | "Float32Array.from" | "Float32Array.name" | "Float32Array.of" | "Float64Array" | "Float64Array.BYTES_PER_ELEMENT" | "Float64Array.from" | "Float64Array.name" | "Float64Array.of" | "Function" | "Function.length" | "Function.name" | "Infinity" | "Int16Array" | "Int16Array.BYTES_PER_ELEMENT" | "Int16Array.from" | "Int16Array.name" | "Int16Array.of" | "Int32Array" | "Int32Array.BYTES_PER_ELEMENT" | "Int32Array.from" | "Int32Array.name" | "Int32Array.of" | "Int8Array" | "Int8Array.BYTES_PER_ELEMENT" | "Int8Array.from" | "Int8Array.name" | "Int8Array.of" | "Intl" | "Intl.Collator" | "Intl.DateTimeFormat" | "Intl.DisplayNames" | "Intl.ListFormat" | "Intl.Locale" | "Intl.NumberFormat" | "Intl.PluralRules" | "Intl.RelativeTimeFormat" | "Intl.Segmenter" | "Intl.Segments" | "Intl.getCanonicalLocales" | "Intl.supportedValuesOf" | "JSON" | "JSON.parse" | "JSON.stringify" | "Map" | "Map.groupBy" | "Math" | "Math.E" | "Math.LN10" | "Math.LN2" | "Math.LOG10E" | "Math.LOG2E" | "Math.PI" | "Math.SQRT1_2" | "Math.SQRT2" | "Math.abs" | "Math.acos" | "Math.acosh" | "Math.asin" | "Math.asinh" | "Math.atan" | "Math.atan2" | "Math.atanh" | "Math.cbrt" | "Math.ceil" | "Math.clz32" | "Math.cos" | "Math.cosh" | "Math.exp" | "Math.expm1" | "Math.floor" | "Math.fround" | "Math.hypot" | "Math.imul" | "Math.log" | "Math.log10" | "Math.log1p" | "Math.log2" | "Math.max" | "Math.min" | "Math.pow" | "Math.random" | "Math.round" | "Math.sign" | "Math.sin" | "Math.sinh" | "Math.sqrt" | "Math.tan" | "Math.tanh" | "Math.trunc" | "NaN" | "Number.EPSILON" | "Number.MAX_SAFE_INTEGER" | "Number.MAX_VALUE" | "Number.MIN_SAFE_INTEGER" | "Number.MIN_VALUE" | "Number.NEGATIVE_INFINITY" | "Number.NaN" | "Number.POSITIVE_INFINITY" | "Number.isFinite" | "Number.isInteger" | "Number.isNaN" | "Number.isSafeInteger" | "Number.parseFloat" | "Number.parseInt" | "Number.toLocaleString" | "Object.assign" | "Object.create" | "Object.defineGetter" | "Object.defineProperties" | "Object.defineProperty" | "Object.defineSetter" | "Object.entries" | "Object.freeze" | "Object.fromEntries" | "Object.getOwnPropertyDescriptor" | "Object.getOwnPropertyDescriptors" | "Object.getOwnPropertyNames" | "Object.getOwnPropertySymbols" | "Object.getPrototypeOf" | "Object.groupBy" | "Object.hasOwn" | "Object.is" | "Object.isExtensible" | "Object.isFrozen" | "Object.isSealed" | "Object.keys" | "Object.lookupGetter" | "Object.lookupSetter" | "Object.preventExtensions" | "Object.proto" | "Object.seal" | "Object.setPrototypeOf" | "Object.values" | "Promise" | "Promise.all" | "Promise.allSettled" | "Promise.any" | "Promise.race" | "Promise.reject" | "Promise.resolve" | "Proxy" | "Proxy.revocable" | "RangeError" | "ReferenceError" | "Reflect" | "Reflect.apply" | "Reflect.construct" | "Reflect.defineProperty" | "Reflect.deleteProperty" | "Reflect.get" | "Reflect.getOwnPropertyDescriptor" | "Reflect.getPrototypeOf" | "Reflect.has" | "Reflect.isExtensible" | "Reflect.ownKeys" | "Reflect.preventExtensions" | "Reflect.set" | "Reflect.setPrototypeOf" | "RegExp" | "RegExp.dotAll" | "RegExp.hasIndices" | "RegExp.input" | "RegExp.lastIndex" | "RegExp.lastMatch" | "RegExp.lastParen" | "RegExp.leftContext" | "RegExp.n" | "RegExp.rightContext" | "Set" | "SharedArrayBuffer" | "String" | "String.fromCharCode" | "String.fromCodePoint" | "String.length" | "String.localeCompare" | "String.raw" | "String.toLocaleLowerCase" | "String.toLocaleUpperCase" | "Symbol" | "Symbol.asyncIterator" | "Symbol.for" | "Symbol.hasInstance" | "Symbol.isConcatSpreadable" | "Symbol.iterator" | "Symbol.keyFor" | "Symbol.match" | "Symbol.matchAll" | "Symbol.replace" | "Symbol.search" | "Symbol.species" | "Symbol.split" | "Symbol.toPrimitive" | "Symbol.toStringTag" | "Symbol.unscopables" | "SyntaxError" | "TypeError" | "URIError" | "Uint16Array" | "Uint16Array.BYTES_PER_ELEMENT" | "Uint16Array.from" | "Uint16Array.name" | "Uint16Array.of" | "Uint32Array" | "Uint32Array.BYTES_PER_ELEMENT" | "Uint32Array.from" | "Uint32Array.name" | "Uint32Array.of" | "Uint8Array" | "Uint8Array.BYTES_PER_ELEMENT" | "Uint8Array.from" | "Uint8Array.name" | "Uint8Array.of" | "Uint8ClampedArray" | "Uint8ClampedArray.BYTES_PER_ELEMENT" | "Uint8ClampedArray.from" | "Uint8ClampedArray.name" | "Uint8ClampedArray.of" | "WeakMap" | "WeakRef" | "WeakSet" | "decodeURI" | "decodeURIComponent" | "encodeURI" | "encodeURIComponent" | "escape" | "eval" | "globalThis" | "isFinite" | "isNaN" | "parseFloat" | "parseInt" | "unescape")[] +}] +// ----- n/no-unsupported-features/es-syntax ----- +type NNoUnsupportedFeaturesEsSyntax = []|[{ + version?: string + ignores?: ("no-accessor-properties" | "accessor-properties" | "accessorProperties" | "no-arbitrary-module-namespace-names" | "arbitrary-module-namespace-names" | "arbitraryModuleNamespaceNames" | "no-array-from" | "array-from" | "arrayFrom" | "no-array-isarray" | "array-isarray" | "arrayIsarray" | "no-array-of" | "array-of" | "arrayOf" | "no-array-prototype-copywithin" | "array-prototype-copywithin" | "arrayPrototypeCopywithin" | "no-array-prototype-entries" | "array-prototype-entries" | "arrayPrototypeEntries" | "no-array-prototype-every" | "array-prototype-every" | "arrayPrototypeEvery" | "no-array-prototype-fill" | "array-prototype-fill" | "arrayPrototypeFill" | "no-array-prototype-filter" | "array-prototype-filter" | "arrayPrototypeFilter" | "no-array-prototype-find" | "array-prototype-find" | "arrayPrototypeFind" | "no-array-prototype-findindex" | "array-prototype-findindex" | "arrayPrototypeFindindex" | "no-array-prototype-findlast-findlastindex" | "array-prototype-findlast-findlastindex" | "arrayPrototypeFindlastFindlastindex" | "no-array-prototype-flat" | "array-prototype-flat" | "arrayPrototypeFlat" | "no-array-prototype-foreach" | "array-prototype-foreach" | "arrayPrototypeForeach" | "no-array-prototype-includes" | "array-prototype-includes" | "arrayPrototypeIncludes" | "no-array-prototype-indexof" | "array-prototype-indexof" | "arrayPrototypeIndexof" | "no-array-prototype-keys" | "array-prototype-keys" | "arrayPrototypeKeys" | "no-array-prototype-lastindexof" | "array-prototype-lastindexof" | "arrayPrototypeLastindexof" | "no-array-prototype-map" | "array-prototype-map" | "arrayPrototypeMap" | "no-array-prototype-reduce" | "array-prototype-reduce" | "arrayPrototypeReduce" | "no-array-prototype-reduceright" | "array-prototype-reduceright" | "arrayPrototypeReduceright" | "no-array-prototype-some" | "array-prototype-some" | "arrayPrototypeSome" | "no-array-prototype-toreversed" | "array-prototype-toreversed" | "arrayPrototypeToreversed" | "no-array-prototype-tosorted" | "array-prototype-tosorted" | "arrayPrototypeTosorted" | "no-array-prototype-tospliced" | "array-prototype-tospliced" | "arrayPrototypeTospliced" | "no-array-prototype-values" | "array-prototype-values" | "arrayPrototypeValues" | "no-array-prototype-with" | "array-prototype-with" | "arrayPrototypeWith" | "no-array-string-prototype-at" | "array-string-prototype-at" | "arrayStringPrototypeAt" | "no-arrow-functions" | "arrow-functions" | "arrowFunctions" | "no-async-functions" | "async-functions" | "asyncFunctions" | "no-async-iteration" | "async-iteration" | "asyncIteration" | "no-atomics-waitasync" | "atomics-waitasync" | "atomicsWaitasync" | "no-atomics" | "atomics" | "no-bigint" | "bigint" | "no-binary-numeric-literals" | "binary-numeric-literals" | "binaryNumericLiterals" | "no-block-scoped-functions" | "block-scoped-functions" | "blockScopedFunctions" | "no-block-scoped-variables" | "block-scoped-variables" | "blockScopedVariables" | "no-class-fields" | "class-fields" | "classFields" | "no-class-static-block" | "class-static-block" | "classStaticBlock" | "no-classes" | "classes" | "no-computed-properties" | "computed-properties" | "computedProperties" | "no-date-now" | "date-now" | "dateNow" | "no-date-prototype-getyear-setyear" | "date-prototype-getyear-setyear" | "datePrototypeGetyearSetyear" | "no-date-prototype-togmtstring" | "date-prototype-togmtstring" | "datePrototypeTogmtstring" | "no-default-parameters" | "default-parameters" | "defaultParameters" | "no-destructuring" | "destructuring" | "no-dynamic-import" | "dynamic-import" | "dynamicImport" | "no-error-cause" | "error-cause" | "errorCause" | "no-escape-unescape" | "escape-unescape" | "escapeUnescape" | "no-exponential-operators" | "exponential-operators" | "exponentialOperators" | "no-export-ns-from" | "export-ns-from" | "exportNsFrom" | "no-for-of-loops" | "for-of-loops" | "forOfLoops" | "no-function-declarations-in-if-statement-clauses-without-block" | "function-declarations-in-if-statement-clauses-without-block" | "functionDeclarationsInIfStatementClausesWithoutBlock" | "no-function-prototype-bind" | "function-prototype-bind" | "functionPrototypeBind" | "no-generators" | "generators" | "no-global-this" | "global-this" | "globalThis" | "no-hashbang" | "hashbang" | "no-import-meta" | "import-meta" | "importMeta" | "no-initializers-in-for-in" | "initializers-in-for-in" | "initializersInForIn" | "no-intl-datetimeformat-prototype-formatrange" | "intl-datetimeformat-prototype-formatrange" | "intlDatetimeformatPrototypeFormatrange" | "no-intl-datetimeformat-prototype-formattoparts" | "intl-datetimeformat-prototype-formattoparts" | "intlDatetimeformatPrototypeFormattoparts" | "no-intl-displaynames" | "intl-displaynames" | "intlDisplaynames" | "no-intl-getcanonicallocales" | "intl-getcanonicallocales" | "intlGetcanonicallocales" | "no-intl-listformat" | "intl-listformat" | "intlListformat" | "no-intl-locale" | "intl-locale" | "intlLocale" | "no-intl-numberformat-prototype-formatrange" | "intl-numberformat-prototype-formatrange" | "intlNumberformatPrototypeFormatrange" | "no-intl-numberformat-prototype-formatrangetoparts" | "intl-numberformat-prototype-formatrangetoparts" | "intlNumberformatPrototypeFormatrangetoparts" | "no-intl-numberformat-prototype-formattoparts" | "intl-numberformat-prototype-formattoparts" | "intlNumberformatPrototypeFormattoparts" | "no-intl-pluralrules-prototype-selectrange" | "intl-pluralrules-prototype-selectrange" | "intlPluralrulesPrototypeSelectrange" | "no-intl-pluralrules" | "intl-pluralrules" | "intlPluralrules" | "no-intl-relativetimeformat" | "intl-relativetimeformat" | "intlRelativetimeformat" | "no-intl-segmenter" | "intl-segmenter" | "intlSegmenter" | "no-intl-supportedvaluesof" | "intl-supportedvaluesof" | "intlSupportedvaluesof" | "no-json-superset" | "json-superset" | "jsonSuperset" | "no-json" | "json" | "no-keyword-properties" | "keyword-properties" | "keywordProperties" | "no-labelled-function-declarations" | "labelled-function-declarations" | "labelledFunctionDeclarations" | "no-legacy-object-prototype-accessor-methods" | "legacy-object-prototype-accessor-methods" | "legacyObjectPrototypeAccessorMethods" | "no-logical-assignment-operators" | "logical-assignment-operators" | "logicalAssignmentOperators" | "no-malformed-template-literals" | "malformed-template-literals" | "malformedTemplateLiterals" | "no-map" | "map" | "no-math-acosh" | "math-acosh" | "mathAcosh" | "no-math-asinh" | "math-asinh" | "mathAsinh" | "no-math-atanh" | "math-atanh" | "mathAtanh" | "no-math-cbrt" | "math-cbrt" | "mathCbrt" | "no-math-clz32" | "math-clz32" | "mathClz32" | "no-math-cosh" | "math-cosh" | "mathCosh" | "no-math-expm1" | "math-expm1" | "mathExpm1" | "no-math-fround" | "math-fround" | "mathFround" | "no-math-hypot" | "math-hypot" | "mathHypot" | "no-math-imul" | "math-imul" | "mathImul" | "no-math-log10" | "math-log10" | "mathLog10" | "no-math-log1p" | "math-log1p" | "mathLog1p" | "no-math-log2" | "math-log2" | "mathLog2" | "no-math-sign" | "math-sign" | "mathSign" | "no-math-sinh" | "math-sinh" | "mathSinh" | "no-math-tanh" | "math-tanh" | "mathTanh" | "no-math-trunc" | "math-trunc" | "mathTrunc" | "no-modules" | "modules" | "no-new-target" | "new-target" | "newTarget" | "new.target" | "no-nullish-coalescing-operators" | "nullish-coalescing-operators" | "nullishCoalescingOperators" | "no-number-epsilon" | "number-epsilon" | "numberEpsilon" | "no-number-isfinite" | "number-isfinite" | "numberIsfinite" | "no-number-isinteger" | "number-isinteger" | "numberIsinteger" | "no-number-isnan" | "number-isnan" | "numberIsnan" | "no-number-issafeinteger" | "number-issafeinteger" | "numberIssafeinteger" | "no-number-maxsafeinteger" | "number-maxsafeinteger" | "numberMaxsafeinteger" | "no-number-minsafeinteger" | "number-minsafeinteger" | "numberMinsafeinteger" | "no-number-parsefloat" | "number-parsefloat" | "numberParsefloat" | "no-number-parseint" | "number-parseint" | "numberParseint" | "no-numeric-separators" | "numeric-separators" | "numericSeparators" | "no-object-assign" | "object-assign" | "objectAssign" | "no-object-create" | "object-create" | "objectCreate" | "no-object-defineproperties" | "object-defineproperties" | "objectDefineproperties" | "no-object-defineproperty" | "object-defineproperty" | "objectDefineproperty" | "no-object-entries" | "object-entries" | "objectEntries" | "no-object-freeze" | "object-freeze" | "objectFreeze" | "no-object-fromentries" | "object-fromentries" | "objectFromentries" | "no-object-getownpropertydescriptor" | "object-getownpropertydescriptor" | "objectGetownpropertydescriptor" | "no-object-getownpropertydescriptors" | "object-getownpropertydescriptors" | "objectGetownpropertydescriptors" | "no-object-getownpropertynames" | "object-getownpropertynames" | "objectGetownpropertynames" | "no-object-getownpropertysymbols" | "object-getownpropertysymbols" | "objectGetownpropertysymbols" | "no-object-getprototypeof" | "object-getprototypeof" | "objectGetprototypeof" | "no-object-hasown" | "object-hasown" | "objectHasown" | "no-object-is" | "object-is" | "objectIs" | "no-object-isextensible" | "object-isextensible" | "objectIsextensible" | "no-object-isfrozen" | "object-isfrozen" | "objectIsfrozen" | "no-object-issealed" | "object-issealed" | "objectIssealed" | "no-object-keys" | "object-keys" | "objectKeys" | "no-object-map-groupby" | "object-map-groupby" | "objectMapGroupby" | "no-object-preventextensions" | "object-preventextensions" | "objectPreventextensions" | "no-object-seal" | "object-seal" | "objectSeal" | "no-object-setprototypeof" | "object-setprototypeof" | "objectSetprototypeof" | "no-object-super-properties" | "object-super-properties" | "objectSuperProperties" | "no-object-values" | "object-values" | "objectValues" | "no-octal-numeric-literals" | "octal-numeric-literals" | "octalNumericLiterals" | "no-optional-catch-binding" | "optional-catch-binding" | "optionalCatchBinding" | "no-optional-chaining" | "optional-chaining" | "optionalChaining" | "no-private-in" | "private-in" | "privateIn" | "no-promise-all-settled" | "promise-all-settled" | "promiseAllSettled" | "no-promise-any" | "promise-any" | "promiseAny" | "no-promise-prototype-finally" | "promise-prototype-finally" | "promisePrototypeFinally" | "no-promise-withresolvers" | "promise-withresolvers" | "promiseWithresolvers" | "no-promise" | "promise" | "no-property-shorthands" | "property-shorthands" | "propertyShorthands" | "no-proxy" | "proxy" | "no-reflect" | "reflect" | "no-regexp-d-flag" | "regexp-d-flag" | "regexpDFlag" | "no-regexp-lookbehind-assertions" | "regexp-lookbehind-assertions" | "regexpLookbehindAssertions" | "regexpLookbehind" | "no-regexp-named-capture-groups" | "regexp-named-capture-groups" | "regexpNamedCaptureGroups" | "no-regexp-prototype-compile" | "regexp-prototype-compile" | "regexpPrototypeCompile" | "no-regexp-prototype-flags" | "regexp-prototype-flags" | "regexpPrototypeFlags" | "no-regexp-s-flag" | "regexp-s-flag" | "regexpSFlag" | "regexpS" | "no-regexp-u-flag" | "regexp-u-flag" | "regexpUFlag" | "regexpU" | "no-regexp-unicode-property-escapes-2019" | "regexp-unicode-property-escapes-2019" | "regexpUnicodePropertyEscapes2019" | "no-regexp-unicode-property-escapes-2020" | "regexp-unicode-property-escapes-2020" | "regexpUnicodePropertyEscapes2020" | "no-regexp-unicode-property-escapes-2021" | "regexp-unicode-property-escapes-2021" | "regexpUnicodePropertyEscapes2021" | "no-regexp-unicode-property-escapes-2022" | "regexp-unicode-property-escapes-2022" | "regexpUnicodePropertyEscapes2022" | "no-regexp-unicode-property-escapes-2023" | "regexp-unicode-property-escapes-2023" | "regexpUnicodePropertyEscapes2023" | "no-regexp-unicode-property-escapes" | "regexp-unicode-property-escapes" | "regexpUnicodePropertyEscapes" | "regexpUnicodeProperties" | "no-regexp-v-flag" | "regexp-v-flag" | "regexpVFlag" | "no-regexp-y-flag" | "regexp-y-flag" | "regexpYFlag" | "regexpY" | "no-resizable-and-growable-arraybuffers" | "resizable-and-growable-arraybuffers" | "resizableAndGrowableArraybuffers" | "no-rest-parameters" | "rest-parameters" | "restParameters" | "no-rest-spread-properties" | "rest-spread-properties" | "restSpreadProperties" | "no-set" | "set" | "no-shadow-catch-param" | "shadow-catch-param" | "shadowCatchParam" | "no-shared-array-buffer" | "shared-array-buffer" | "sharedArrayBuffer" | "no-spread-elements" | "spread-elements" | "spreadElements" | "no-string-create-html-methods" | "string-create-html-methods" | "stringCreateHtmlMethods" | "no-string-fromcodepoint" | "string-fromcodepoint" | "stringFromcodepoint" | "no-string-prototype-codepointat" | "string-prototype-codepointat" | "stringPrototypeCodepointat" | "no-string-prototype-endswith" | "string-prototype-endswith" | "stringPrototypeEndswith" | "no-string-prototype-includes" | "string-prototype-includes" | "stringPrototypeIncludes" | "no-string-prototype-iswellformed-towellformed" | "string-prototype-iswellformed-towellformed" | "stringPrototypeIswellformedTowellformed" | "no-string-prototype-matchall" | "string-prototype-matchall" | "stringPrototypeMatchall" | "no-string-prototype-normalize" | "string-prototype-normalize" | "stringPrototypeNormalize" | "no-string-prototype-padstart-padend" | "string-prototype-padstart-padend" | "stringPrototypePadstartPadend" | "no-string-prototype-repeat" | "string-prototype-repeat" | "stringPrototypeRepeat" | "no-string-prototype-replaceall" | "string-prototype-replaceall" | "stringPrototypeReplaceall" | "no-string-prototype-startswith" | "string-prototype-startswith" | "stringPrototypeStartswith" | "no-string-prototype-substr" | "string-prototype-substr" | "stringPrototypeSubstr" | "no-string-prototype-trim" | "string-prototype-trim" | "stringPrototypeTrim" | "no-string-prototype-trimleft-trimright" | "string-prototype-trimleft-trimright" | "stringPrototypeTrimleftTrimright" | "no-string-prototype-trimstart-trimend" | "string-prototype-trimstart-trimend" | "stringPrototypeTrimstartTrimend" | "no-string-raw" | "string-raw" | "stringRaw" | "no-subclassing-builtins" | "subclassing-builtins" | "subclassingBuiltins" | "no-symbol-prototype-description" | "symbol-prototype-description" | "symbolPrototypeDescription" | "no-symbol" | "symbol" | "no-template-literals" | "template-literals" | "templateLiterals" | "no-top-level-await" | "top-level-await" | "topLevelAwait" | "no-trailing-commas" | "trailing-commas" | "trailingCommas" | "no-trailing-function-commas" | "trailing-function-commas" | "trailingFunctionCommas" | "trailingCommasInFunctions" | "no-typed-arrays" | "typed-arrays" | "typedArrays" | "no-unicode-codepoint-escapes" | "unicode-codepoint-escapes" | "unicodeCodepointEscapes" | "unicodeCodePointEscapes" | "no-weak-map" | "weak-map" | "weakMap" | "no-weak-set" | "weak-set" | "weakSet" | "no-weakrefs" | "weakrefs")[] +}] +// ----- n/no-unsupported-features/node-builtins ----- +type NNoUnsupportedFeaturesNodeBuiltins = []|[{ + version?: string + allowExperimental?: boolean + ignores?: ("__filename" | "__dirname" | "require" | "require.cache" | "require.extensions" | "require.main" | "require.resolve" | "require.resolve.paths" | "module" | "module.children" | "module.exports" | "module.filename" | "module.id" | "module.isPreloading" | "module.loaded" | "module.parent" | "module.path" | "module.paths" | "module.require" | "exports" | "AbortController" | "AbortSignal" | "AbortSignal.abort" | "AbortSignal.timeout" | "AbortSignal.any" | "DOMException" | "FormData" | "Headers" | "MessageEvent" | "Navigator" | "Request" | "Response" | "WebAssembly" | "WebSocket" | "fetch" | "global" | "queueMicrotask" | "navigator" | "navigator.hardwareConcurrency" | "navigator.language" | "navigator.languages" | "navigator.platform" | "navigator.userAgent" | "structuredClone" | "localStorage" | "sessionStorage" | "Storage" | "Blob" | "new Buffer()" | "Buffer" | "Buffer.alloc" | "Buffer.allocUnsafe" | "Buffer.allocUnsafeSlow" | "Buffer.byteLength" | "Buffer.compare" | "Buffer.concat" | "Buffer.copyBytesFrom" | "Buffer.from" | "Buffer.isBuffer" | "Buffer.isEncoding" | "File" | "atob" | "btoa" | "console" | "console.profile" | "console.profileEnd" | "console.timeStamp" | "console.Console" | "console.assert" | "console.clear" | "console.count" | "console.countReset" | "console.debug" | "console.dir" | "console.dirxml" | "console.error" | "console.group" | "console.groupCollapsed" | "console.groupEnd" | "console.info" | "console.log" | "console.table" | "console.time" | "console.timeEnd" | "console.timeLog" | "console.trace" | "console.warn" | "crypto" | "crypto.subtle" | "crypto.subtle.decrypt" | "crypto.subtle.deriveBits" | "crypto.subtle.deriveKey" | "crypto.subtle.digest" | "crypto.subtle.encrypt" | "crypto.subtle.exportKey" | "crypto.subtle.generateKey" | "crypto.subtle.importKey" | "crypto.subtle.sign" | "crypto.subtle.unwrapKey" | "crypto.subtle.verify" | "crypto.subtle.wrapKey" | "crypto.getRandomValues" | "crypto.randomUUID" | "Crypto" | "CryptoKey" | "SubtleCrypto" | "CloseEvent" | "CustomEvent" | "Event" | "EventSource" | "EventTarget" | "PerformanceEntry" | "PerformanceMark" | "PerformanceMeasure" | "PerformanceObserver" | "PerformanceObserverEntryList" | "PerformanceResourceTiming" | "performance" | "performance.clearMarks" | "performance.clearMeasures" | "performance.clearResourceTimings" | "performance.eventLoopUtilization" | "performance.getEntries" | "performance.getEntriesByName" | "performance.getEntriesByType" | "performance.mark" | "performance.markResourceTiming" | "performance.measure" | "performance.nodeTiming" | "performance.nodeTiming.bootstrapComplete" | "performance.nodeTiming.environment" | "performance.nodeTiming.idleTime" | "performance.nodeTiming.loopExit" | "performance.nodeTiming.loopStart" | "performance.nodeTiming.nodeStart" | "performance.nodeTiming.uvMetricsInfo" | "performance.nodeTiming.v8Start" | "performance.now" | "performance.onresourcetimingbufferfull" | "performance.setResourceTimingBufferSize" | "performance.timeOrigin" | "performance.timerify" | "performance.toJSON" | "process" | "process.allowedNodeEnvironmentFlags" | "process.availableMemory" | "process.arch" | "process.argv" | "process.argv0" | "process.channel" | "process.config" | "process.connected" | "process.debugPort" | "process.env" | "process.execArgv" | "process.execPath" | "process.exitCode" | "process.features.cached_builtins" | "process.features.debug" | "process.features.inspector" | "process.features.ipv6" | "process.features.require_module" | "process.features.tls" | "process.features.tls_alpn" | "process.features.tls_ocsp" | "process.features.tls_sni" | "process.features.typescript" | "process.features.uv" | "process.finalization.register" | "process.finalization.registerBeforeExit" | "process.finalization.unregister" | "process.getBuiltinModule" | "process.mainModule" | "process.noDeprecation" | "process.permission" | "process.pid" | "process.platform" | "process.ppid" | "process.release" | "process.report" | "process.report.excludeEnv" | "process.sourceMapsEnabled" | "process.stdin" | "process.stdin.isRaw" | "process.stdin.isTTY" | "process.stdin.setRawMode" | "process.stdout" | "process.stdout.clearLine" | "process.stdout.clearScreenDown" | "process.stdout.columns" | "process.stdout.cursorTo" | "process.stdout.getColorDepth" | "process.stdout.getWindowSize" | "process.stdout.hasColors" | "process.stdout.isTTY" | "process.stdout.moveCursor" | "process.stdout.rows" | "process.stderr" | "process.stderr.clearLine" | "process.stderr.clearScreenDown" | "process.stderr.columns" | "process.stderr.cursorTo" | "process.stderr.getColorDepth" | "process.stderr.getWindowSize" | "process.stderr.hasColors" | "process.stderr.isTTY" | "process.stderr.moveCursor" | "process.stderr.rows" | "process.throwDeprecation" | "process.title" | "process.traceDeprecation" | "process.version" | "process.versions" | "process.abort" | "process.chdir" | "process.constrainedMemory" | "process.cpuUsage" | "process.cwd" | "process.disconnect" | "process.dlopen" | "process.emitWarning" | "process.exit" | "process.getActiveResourcesInfo" | "process.getegid" | "process.geteuid" | "process.getgid" | "process.getgroups" | "process.getuid" | "process.hasUncaughtExceptionCaptureCallback" | "process.hrtime" | "process.hrtime.bigint" | "process.initgroups" | "process.kill" | "process.loadEnvFile" | "process.memoryUsage" | "process.rss" | "process.nextTick" | "process.resourceUsage" | "process.send" | "process.setegid" | "process.seteuid" | "process.setgid" | "process.setgroups" | "process.setuid" | "process.setSourceMapsEnabled" | "process.setUncaughtExceptionCaptureCallback" | "process.umask" | "process.uptime" | "ReadableStream" | "ReadableStream.from" | "ReadableStreamDefaultReader" | "ReadableStreamBYOBReader" | "ReadableStreamDefaultController" | "ReadableByteStreamController" | "ReadableStreamBYOBRequest" | "WritableStream" | "WritableStreamDefaultWriter" | "WritableStreamDefaultController" | "TransformStream" | "TransformStreamDefaultController" | "ByteLengthQueuingStrategy" | "CountQueuingStrategy" | "TextEncoderStream" | "TextDecoderStream" | "CompressionStream" | "DecompressionStream" | "setInterval" | "clearInterval" | "setTimeout" | "clearTimeout" | "setImmediate" | "clearImmediate" | "URL" | "URL.canParse" | "URL.createObjectURL" | "URL.revokeObjectURL" | "URLSearchParams" | "TextDecoder" | "TextEncoder" | "BroadcastChannel" | "MessageChannel" | "MessagePort" | "assert" | "assert.assert" | "assert.deepEqual" | "assert.deepStrictEqual" | "assert.doesNotMatch" | "assert.doesNotReject" | "assert.doesNotThrow" | "assert.equal" | "assert.fail" | "assert.ifError" | "assert.match" | "assert.notDeepEqual" | "assert.notDeepStrictEqual" | "assert.notEqual" | "assert.notStrictEqual" | "assert.ok" | "assert.rejects" | "assert.strictEqual" | "assert.throws" | "assert.CallTracker" | "assert.strict" | "assert.strict.assert" | "assert.strict.deepEqual" | "assert.strict.deepStrictEqual" | "assert.strict.doesNotMatch" | "assert.strict.doesNotReject" | "assert.strict.doesNotThrow" | "assert.strict.equal" | "assert.strict.fail" | "assert.strict.ifError" | "assert.strict.match" | "assert.strict.notDeepEqual" | "assert.strict.notDeepStrictEqual" | "assert.strict.notEqual" | "assert.strict.notStrictEqual" | "assert.strict.ok" | "assert.strict.rejects" | "assert.strict.strictEqual" | "assert.strict.throws" | "assert.strict.CallTracker" | "assert/strict" | "assert/strict.assert" | "assert/strict.deepEqual" | "assert/strict.deepStrictEqual" | "assert/strict.doesNotMatch" | "assert/strict.doesNotReject" | "assert/strict.doesNotThrow" | "assert/strict.equal" | "assert/strict.fail" | "assert/strict.ifError" | "assert/strict.match" | "assert/strict.notDeepEqual" | "assert/strict.notDeepStrictEqual" | "assert/strict.notEqual" | "assert/strict.notStrictEqual" | "assert/strict.ok" | "assert/strict.rejects" | "assert/strict.strictEqual" | "assert/strict.throws" | "assert/strict.CallTracker" | "async_hooks" | "async_hooks.createHook" | "async_hooks.executionAsyncResource" | "async_hooks.executionAsyncId" | "async_hooks.triggerAsyncId" | "async_hooks.AsyncLocalStorage" | "async_hooks.AsyncLocalStorage.bind" | "async_hooks.AsyncLocalStorage.snapshot" | "async_hooks.AsyncResource" | "async_hooks.AsyncResource.bind" | "buffer" | "buffer.constants" | "buffer.INSPECT_MAX_BYTES" | "buffer.kMaxLength" | "buffer.kStringMaxLength" | "buffer.atob" | "buffer.btoa" | "buffer.isAscii" | "buffer.isUtf8" | "buffer.resolveObjectURL" | "buffer.transcode" | "buffer.SlowBuffer" | "buffer.Blob" | "new buffer.Buffer()" | "buffer.Buffer" | "buffer.Buffer.alloc" | "buffer.Buffer.allocUnsafe" | "buffer.Buffer.allocUnsafeSlow" | "buffer.Buffer.byteLength" | "buffer.Buffer.compare" | "buffer.Buffer.concat" | "buffer.Buffer.copyBytesFrom" | "buffer.Buffer.from" | "buffer.Buffer.isBuffer" | "buffer.Buffer.isEncoding" | "buffer.File" | "child_process" | "child_process.exec" | "child_process.execFile" | "child_process.fork" | "child_process.spawn" | "child_process.execFileSync" | "child_process.execSync" | "child_process.spawnSync" | "child_process.ChildProcess" | "cluster" | "cluster.isMaster" | "cluster.isPrimary" | "cluster.isWorker" | "cluster.schedulingPolicy" | "cluster.settings" | "cluster.worker" | "cluster.workers" | "cluster.disconnect" | "cluster.fork" | "cluster.setupMaster" | "cluster.setupPrimary" | "cluster.Worker" | "crypto.constants" | "crypto.fips" | "crypto.webcrypto" | "crypto.webcrypto.subtle" | "crypto.webcrypto.subtle.decrypt" | "crypto.webcrypto.subtle.deriveBits" | "crypto.webcrypto.subtle.deriveKey" | "crypto.webcrypto.subtle.digest" | "crypto.webcrypto.subtle.encrypt" | "crypto.webcrypto.subtle.exportKey" | "crypto.webcrypto.subtle.generateKey" | "crypto.webcrypto.subtle.importKey" | "crypto.webcrypto.subtle.sign" | "crypto.webcrypto.subtle.unwrapKey" | "crypto.webcrypto.subtle.verify" | "crypto.webcrypto.subtle.wrapKey" | "crypto.webcrypto.getRandomValues" | "crypto.webcrypto.randomUUID" | "crypto.checkPrime" | "crypto.checkPrimeSync" | "crypto.createCipher" | "crypto.createCipheriv" | "crypto.createDecipher" | "crypto.createDecipheriv" | "crypto.createDiffieHellman" | "crypto.createDiffieHellmanGroup" | "crypto.createECDH" | "crypto.createHash" | "crypto.createHmac" | "crypto.createPrivateKey" | "crypto.createPublicKey" | "crypto.createSecretKey" | "crypto.createSign" | "crypto.createVerify" | "crypto.diffieHellman" | "crypto.generateKey" | "crypto.generateKeyPair" | "crypto.generateKeyPairSync" | "crypto.generateKeySync" | "crypto.generatePrime" | "crypto.generatePrimeSync" | "crypto.getCipherInfo" | "crypto.getCiphers" | "crypto.getCurves" | "crypto.getDiffieHellman" | "crypto.getFips" | "crypto.getHashes" | "crypto.hash" | "crypto.hkdf" | "crypto.hkdfSync" | "crypto.pbkdf2" | "crypto.pbkdf2Sync" | "crypto.privateDecrypt" | "crypto.privateEncrypt" | "crypto.publicDecrypt" | "crypto.publicEncrypt" | "crypto.randomBytes" | "crypto.randomFillSync" | "crypto.randomFill" | "crypto.randomInt" | "crypto.scrypt" | "crypto.scryptSync" | "crypto.secureHeapUsed" | "crypto.setEngine" | "crypto.setFips" | "crypto.sign" | "crypto.timingSafeEqual" | "crypto.verify" | "crypto.Certificate" | "crypto.Certificate.exportChallenge" | "crypto.Certificate.exportPublicKey" | "crypto.Certificate.verifySpkac" | "crypto.Cipher" | "crypto.Decipher" | "crypto.DiffieHellman" | "crypto.DiffieHellmanGroup" | "crypto.ECDH" | "crypto.ECDH.convertKey" | "crypto.Hash()" | "new crypto.Hash()" | "crypto.Hash" | "crypto.Hmac()" | "new crypto.Hmac()" | "crypto.Hmac" | "crypto.KeyObject" | "crypto.KeyObject.from" | "crypto.Sign" | "crypto.Verify" | "crypto.X509Certificate" | "dgram" | "dgram.createSocket" | "dgram.Socket" | "diagnostics_channel" | "diagnostics_channel.hasSubscribers" | "diagnostics_channel.channel" | "diagnostics_channel.subscribe" | "diagnostics_channel.unsubscribe" | "diagnostics_channel.tracingChannel" | "diagnostics_channel.Channel" | "diagnostics_channel.TracingChannel" | "dns" | "dns.Resolver" | "dns.getServers" | "dns.lookup" | "dns.lookupService" | "dns.resolve" | "dns.resolve4" | "dns.resolve6" | "dns.resolveAny" | "dns.resolveCname" | "dns.resolveCaa" | "dns.resolveMx" | "dns.resolveNaptr" | "dns.resolveNs" | "dns.resolvePtr" | "dns.resolveSoa" | "dns.resolveSrv" | "dns.resolveTxt" | "dns.reverse" | "dns.setDefaultResultOrder" | "dns.getDefaultResultOrder" | "dns.setServers" | "dns.promises" | "dns.promises.Resolver" | "dns.promises.cancel" | "dns.promises.getServers" | "dns.promises.lookup" | "dns.promises.lookupService" | "dns.promises.resolve" | "dns.promises.resolve4" | "dns.promises.resolve6" | "dns.promises.resolveAny" | "dns.promises.resolveCaa" | "dns.promises.resolveCname" | "dns.promises.resolveMx" | "dns.promises.resolveNaptr" | "dns.promises.resolveNs" | "dns.promises.resolvePtr" | "dns.promises.resolveSoa" | "dns.promises.resolveSrv" | "dns.promises.resolveTxt" | "dns.promises.reverse" | "dns.promises.setDefaultResultOrder" | "dns.promises.getDefaultResultOrder" | "dns.promises.setServers" | "dns/promises" | "dns/promises.Resolver" | "dns/promises.cancel" | "dns/promises.getServers" | "dns/promises.lookup" | "dns/promises.lookupService" | "dns/promises.resolve" | "dns/promises.resolve4" | "dns/promises.resolve6" | "dns/promises.resolveAny" | "dns/promises.resolveCaa" | "dns/promises.resolveCname" | "dns/promises.resolveMx" | "dns/promises.resolveNaptr" | "dns/promises.resolveNs" | "dns/promises.resolvePtr" | "dns/promises.resolveSoa" | "dns/promises.resolveSrv" | "dns/promises.resolveTxt" | "dns/promises.reverse" | "dns/promises.setDefaultResultOrder" | "dns/promises.getDefaultResultOrder" | "dns/promises.setServers" | "domain" | "domain.create" | "domain.Domain" | "events" | "events.Event" | "events.EventTarget" | "events.CustomEvent" | "events.NodeEventTarget" | "events.EventEmitter" | "events.EventEmitter.defaultMaxListeners" | "events.EventEmitter.errorMonitor" | "events.EventEmitter.captureRejections" | "events.EventEmitter.captureRejectionSymbol" | "events.EventEmitter.getEventListeners" | "events.EventEmitter.getMaxListeners" | "events.EventEmitter.once" | "events.EventEmitter.listenerCount" | "events.EventEmitter.on" | "events.EventEmitter.setMaxListeners" | "events.EventEmitter.addAbortListener" | "events.EventEmitterAsyncResource" | "events.EventEmitterAsyncResource.defaultMaxListeners" | "events.EventEmitterAsyncResource.errorMonitor" | "events.EventEmitterAsyncResource.captureRejections" | "events.EventEmitterAsyncResource.captureRejectionSymbol" | "events.EventEmitterAsyncResource.getEventListeners" | "events.EventEmitterAsyncResource.getMaxListeners" | "events.EventEmitterAsyncResource.once" | "events.EventEmitterAsyncResource.listenerCount" | "events.EventEmitterAsyncResource.on" | "events.EventEmitterAsyncResource.setMaxListeners" | "events.EventEmitterAsyncResource.addAbortListener" | "events.defaultMaxListeners" | "events.errorMonitor" | "events.captureRejections" | "events.captureRejectionSymbol" | "events.getEventListeners" | "events.getMaxListeners" | "events.once" | "events.listenerCount" | "events.on" | "events.setMaxListeners" | "events.addAbortListener" | "fs" | "fs.promises" | "fs.promises.FileHandle" | "fs.promises.access" | "fs.promises.appendFile" | "fs.promises.chmod" | "fs.promises.chown" | "fs.promises.constants" | "fs.promises.copyFile" | "fs.promises.cp" | "fs.promises.glob" | "fs.promises.lchmod" | "fs.promises.lchown" | "fs.promises.link" | "fs.promises.lstat" | "fs.promises.lutimes" | "fs.promises.mkdir" | "fs.promises.mkdtemp" | "fs.promises.open" | "fs.promises.opendir" | "fs.promises.readFile" | "fs.promises.readdir" | "fs.promises.readlink" | "fs.promises.realpath" | "fs.promises.rename" | "fs.promises.rm" | "fs.promises.rmdir" | "fs.promises.stat" | "fs.promises.statfs" | "fs.promises.symlink" | "fs.promises.truncate" | "fs.promises.unlink" | "fs.promises.utimes" | "fs.promises.watch" | "fs.promises.writeFile" | "fs.access" | "fs.appendFile" | "fs.chmod" | "fs.chown" | "fs.close" | "fs.copyFile" | "fs.cp" | "fs.createReadStream" | "fs.createWriteStream" | "fs.exists" | "fs.fchmod" | "fs.fchown" | "fs.fdatasync" | "fs.fstat" | "fs.fsync" | "fs.ftruncate" | "fs.futimes" | "fs.glob" | "fs.lchmod" | "fs.lchown" | "fs.link" | "fs.lstat" | "fs.lutimes" | "fs.mkdir" | "fs.mkdtemp" | "fs.native" | "fs.open" | "fs.openAsBlob" | "fs.opendir" | "fs.read" | "fs.readdir" | "fs.readFile" | "fs.readlink" | "fs.readv" | "fs.realpath" | "fs.realpath.native" | "fs.rename" | "fs.rm" | "fs.rmdir" | "fs.stat" | "fs.statfs" | "fs.symlink" | "fs.truncate" | "fs.unlink" | "fs.unwatchFile" | "fs.utimes" | "fs.watch" | "fs.watchFile" | "fs.write" | "fs.writeFile" | "fs.writev" | "fs.accessSync" | "fs.appendFileSync" | "fs.chmodSync" | "fs.chownSync" | "fs.closeSync" | "fs.copyFileSync" | "fs.cpSync" | "fs.existsSync" | "fs.fchmodSync" | "fs.fchownSync" | "fs.fdatasyncSync" | "fs.fstatSync" | "fs.fsyncSync" | "fs.ftruncateSync" | "fs.futimesSync" | "fs.globSync" | "fs.lchmodSync" | "fs.lchownSync" | "fs.linkSync" | "fs.lstatSync" | "fs.lutimesSync" | "fs.mkdirSync" | "fs.mkdtempSync" | "fs.opendirSync" | "fs.openSync" | "fs.readdirSync" | "fs.readFileSync" | "fs.readlinkSync" | "fs.readSync" | "fs.readvSync" | "fs.realpathSync" | "fs.realpathSync.native" | "fs.renameSync" | "fs.rmdirSync" | "fs.rmSync" | "fs.statfsSync" | "fs.statSync" | "fs.symlinkSync" | "fs.truncateSync" | "fs.unlinkSync" | "fs.utimesSync" | "fs.writeFileSync" | "fs.writeSync" | "fs.writevSync" | "fs.constants" | "fs.Dir" | "fs.Dirent" | "fs.FSWatcher" | "fs.StatWatcher" | "fs.ReadStream" | "fs.Stats()" | "new fs.Stats()" | "fs.Stats" | "fs.StatFs" | "fs.WriteStream" | "fs.common_objects" | "fs/promises" | "fs/promises.FileHandle" | "fs/promises.access" | "fs/promises.appendFile" | "fs/promises.chmod" | "fs/promises.chown" | "fs/promises.constants" | "fs/promises.copyFile" | "fs/promises.cp" | "fs/promises.glob" | "fs/promises.lchmod" | "fs/promises.lchown" | "fs/promises.link" | "fs/promises.lstat" | "fs/promises.lutimes" | "fs/promises.mkdir" | "fs/promises.mkdtemp" | "fs/promises.open" | "fs/promises.opendir" | "fs/promises.readFile" | "fs/promises.readdir" | "fs/promises.readlink" | "fs/promises.realpath" | "fs/promises.rename" | "fs/promises.rm" | "fs/promises.rmdir" | "fs/promises.stat" | "fs/promises.statfs" | "fs/promises.symlink" | "fs/promises.truncate" | "fs/promises.unlink" | "fs/promises.utimes" | "fs/promises.watch" | "fs/promises.writeFile" | "http2" | "http2.constants" | "http2.sensitiveHeaders" | "http2.createServer" | "http2.createSecureServer" | "http2.connect" | "http2.getDefaultSettings" | "http2.getPackedSettings" | "http2.getUnpackedSettings" | "http2.performServerHandshake" | "http2.Http2Session" | "http2.ServerHttp2Session" | "http2.ClientHttp2Session" | "http2.Http2Stream" | "http2.ClientHttp2Stream" | "http2.ServerHttp2Stream" | "http2.Http2Server" | "http2.Http2SecureServer" | "http2.Http2ServerRequest" | "http2.Http2ServerResponse" | "http" | "http.METHODS" | "http.STATUS_CODES" | "http.globalAgent" | "http.maxHeaderSize" | "http.createServer" | "http.get" | "http.request" | "http.validateHeaderName" | "http.validateHeaderValue" | "http.setMaxIdleHTTPParsers" | "http.Agent" | "http.ClientRequest" | "http.Server" | "http.ServerResponse" | "http.IncomingMessage" | "http.OutgoingMessage" | "http.WebSocket" | "https" | "https.globalAgent" | "https.createServer" | "https.get" | "https.request" | "https.Agent" | "https.Server" | "inspector" | "inspector.Session" | "inspector.Network.loadingFailed" | "inspector.Network.loadingFinished" | "inspector.Network.requestWillBeSent" | "inspector.Network.responseReceived" | "inspector.console" | "inspector.close" | "inspector.open" | "inspector.url" | "inspector.waitForDebugger" | "inspector/promises" | "inspector/promises.Session" | "inspector/promises.Network.loadingFailed" | "inspector/promises.Network.loadingFinished" | "inspector/promises.Network.requestWillBeSent" | "inspector/promises.Network.responseReceived" | "inspector/promises.console" | "inspector/promises.close" | "inspector/promises.open" | "inspector/promises.url" | "inspector/promises.waitForDebugger" | "module.builtinModules" | "module.constants.compileCacheStatus" | "module.createRequire" | "module.createRequireFromPath" | "module.enableCompileCache" | "module.findPackageJSON" | "module.flushCompileCache" | "module.getCompileCacheDir" | "module.isBuiltin" | "module.register" | "module.stripTypeScriptTypes" | "module.syncBuiltinESMExports" | "module.findSourceMap" | "module.SourceMap" | "module.Module.builtinModules" | "module.Module.createRequire" | "module.Module.createRequireFromPath" | "module.Module.enableCompileCache" | "module.Module.findPackageJSON" | "module.Module.flushCompileCache" | "module.Module.getCompileCacheDir" | "module.Module.isBuiltin" | "module.Module.register" | "module.Module.stripTypeScriptTypes" | "module.Module.syncBuiltinESMExports" | "module.Module.findSourceMap" | "module.Module.SourceMap" | "net" | "net.connect" | "net.createConnection" | "net.createServer" | "net.getDefaultAutoSelectFamily" | "net.setDefaultAutoSelectFamily" | "net.getDefaultAutoSelectFamilyAttemptTimeout" | "net.setDefaultAutoSelectFamilyAttemptTimeout" | "net.isIP" | "net.isIPv4" | "net.isIPv6" | "net.BlockList" | "net.SocketAddress" | "net.Server" | "net.Socket" | "os" | "os.EOL" | "os.constants" | "os.constants.priority" | "os.devNull" | "os.availableParallelism" | "os.arch" | "os.cpus" | "os.endianness" | "os.freemem" | "os.getPriority" | "os.homedir" | "os.hostname" | "os.loadavg" | "os.machine" | "os.networkInterfaces" | "os.platform" | "os.release" | "os.setPriority" | "os.tmpdir" | "os.totalmem" | "os.type" | "os.uptime" | "os.userInfo" | "os.version" | "path" | "path.posix" | "path.posix.delimiter" | "path.posix.sep" | "path.posix.basename" | "path.posix.dirname" | "path.posix.extname" | "path.posix.format" | "path.posix.matchesGlob" | "path.posix.isAbsolute" | "path.posix.join" | "path.posix.normalize" | "path.posix.parse" | "path.posix.relative" | "path.posix.resolve" | "path.posix.toNamespacedPath" | "path.win32" | "path.win32.delimiter" | "path.win32.sep" | "path.win32.basename" | "path.win32.dirname" | "path.win32.extname" | "path.win32.format" | "path.win32.matchesGlob" | "path.win32.isAbsolute" | "path.win32.join" | "path.win32.normalize" | "path.win32.parse" | "path.win32.relative" | "path.win32.resolve" | "path.win32.toNamespacedPath" | "path.delimiter" | "path.sep" | "path.basename" | "path.dirname" | "path.extname" | "path.format" | "path.matchesGlob" | "path.isAbsolute" | "path.join" | "path.normalize" | "path.parse" | "path.relative" | "path.resolve" | "path.toNamespacedPath" | "path/posix" | "path/posix.delimiter" | "path/posix.sep" | "path/posix.basename" | "path/posix.dirname" | "path/posix.extname" | "path/posix.format" | "path/posix.matchesGlob" | "path/posix.isAbsolute" | "path/posix.join" | "path/posix.normalize" | "path/posix.parse" | "path/posix.relative" | "path/posix.resolve" | "path/posix.toNamespacedPath" | "path/win32" | "path/win32.delimiter" | "path/win32.sep" | "path/win32.basename" | "path/win32.dirname" | "path/win32.extname" | "path/win32.format" | "path/win32.matchesGlob" | "path/win32.isAbsolute" | "path/win32.join" | "path/win32.normalize" | "path/win32.parse" | "path/win32.relative" | "path/win32.resolve" | "path/win32.toNamespacedPath" | "perf_hooks" | "perf_hooks.performance" | "perf_hooks.performance.clearMarks" | "perf_hooks.performance.clearMeasures" | "perf_hooks.performance.clearResourceTimings" | "perf_hooks.performance.eventLoopUtilization" | "perf_hooks.performance.getEntries" | "perf_hooks.performance.getEntriesByName" | "perf_hooks.performance.getEntriesByType" | "perf_hooks.performance.mark" | "perf_hooks.performance.markResourceTiming" | "perf_hooks.performance.measure" | "perf_hooks.performance.nodeTiming" | "perf_hooks.performance.nodeTiming.bootstrapComplete" | "perf_hooks.performance.nodeTiming.environment" | "perf_hooks.performance.nodeTiming.idleTime" | "perf_hooks.performance.nodeTiming.loopExit" | "perf_hooks.performance.nodeTiming.loopStart" | "perf_hooks.performance.nodeTiming.nodeStart" | "perf_hooks.performance.nodeTiming.uvMetricsInfo" | "perf_hooks.performance.nodeTiming.v8Start" | "perf_hooks.performance.now" | "perf_hooks.performance.onresourcetimingbufferfull" | "perf_hooks.performance.setResourceTimingBufferSize" | "perf_hooks.performance.timeOrigin" | "perf_hooks.performance.timerify" | "perf_hooks.performance.toJSON" | "perf_hooks.createHistogram" | "perf_hooks.monitorEventLoopDelay" | "perf_hooks.PerformanceEntry" | "perf_hooks.PerformanceMark" | "perf_hooks.PerformanceMeasure" | "perf_hooks.PerformanceNodeEntry" | "perf_hooks.PerformanceNodeTiming" | "perf_hooks.PerformanceResourceTiming" | "perf_hooks.PerformanceObserver" | "perf_hooks.PerformanceObserverEntryList" | "perf_hooks.Histogram" | "perf_hooks.IntervalHistogram" | "perf_hooks.RecordableHistogram" | "punycode" | "punycode.ucs2" | "punycode.version" | "punycode.decode" | "punycode.encode" | "punycode.toASCII" | "punycode.toUnicode" | "querystring" | "querystring.decode" | "querystring.encode" | "querystring.escape" | "querystring.parse" | "querystring.stringify" | "querystring.unescape" | "readline" | "readline.promises" | "readline.promises.createInterface" | "readline.promises.Interface" | "readline.promises.Readline" | "readline.clearLine" | "readline.clearScreenDown" | "readline.createInterface" | "readline.cursorTo" | "readline.moveCursor" | "readline.Interface" | "readline.emitKeypressEvents" | "readline.InterfaceConstructor" | "readline/promises" | "readline/promises.createInterface" | "readline/promises.Interface" | "readline/promises.Readline" | "repl" | "repl.start" | "repl.writer" | "repl.REPLServer()" | "repl.REPLServer" | "repl.REPL_MODE_MAGIC" | "repl.REPL_MODE_SLOPPY" | "repl.REPL_MODE_STRICT" | "repl.Recoverable()" | "repl.Recoverable" | "repl.builtinModules" | "sea" | "sea.isSea" | "sea.getAsset" | "sea.getAssetAsBlob" | "sea.getRawAsset" | "sea.sea.isSea" | "sea.sea.getAsset" | "sea.sea.getAssetAsBlob" | "sea.sea.getRawAsset" | "stream" | "stream.promises" | "stream.promises.pipeline" | "stream.promises.finished" | "stream.finished" | "stream.pipeline" | "stream.compose" | "stream.duplexPair" | "stream.Readable" | "stream.Readable.from" | "stream.Readable.isDisturbed" | "stream.Readable.fromWeb" | "stream.Readable.toWeb" | "stream.Writable" | "stream.Writable.fromWeb" | "stream.Writable.toWeb" | "stream.Duplex" | "stream.Duplex.from" | "stream.Duplex.fromWeb" | "stream.Duplex.toWeb" | "stream.Transform" | "stream.isErrored" | "stream.isReadable" | "stream.addAbortSignal" | "stream.getDefaultHighWaterMark" | "stream.setDefaultHighWaterMark" | "stream/promises.pipeline" | "stream/promises.finished" | "stream/web" | "stream/web.ReadableStream" | "stream/web.ReadableStream.from" | "stream/web.ReadableStreamDefaultReader" | "stream/web.ReadableStreamBYOBReader" | "stream/web.ReadableStreamDefaultController" | "stream/web.ReadableByteStreamController" | "stream/web.ReadableStreamBYOBRequest" | "stream/web.WritableStream" | "stream/web.WritableStreamDefaultWriter" | "stream/web.WritableStreamDefaultController" | "stream/web.TransformStream" | "stream/web.TransformStreamDefaultController" | "stream/web.ByteLengthQueuingStrategy" | "stream/web.CountQueuingStrategy" | "stream/web.TextEncoderStream" | "stream/web.TextDecoderStream" | "stream/web.CompressionStream" | "stream/web.DecompressionStream" | "stream/consumers" | "stream/consumers.arrayBuffer" | "stream/consumers.blob" | "stream/consumers.buffer" | "stream/consumers.json" | "stream/consumers.text" | "string_decoder" | "string_decoder.StringDecoder" | "sqlite" | "sqlite.DatabaseSync" | "sqlite.StatementSync" | "sqlite.SQLITE_CHANGESET_OMIT" | "sqlite.SQLITE_CHANGESET_REPLACE" | "sqlite.SQLITE_CHANGESET_ABORT" | "test" | "test.after" | "test.afterEach" | "test.before" | "test.beforeEach" | "test.describe" | "test.describe.only" | "test.describe.skip" | "test.describe.todo" | "test.it" | "test.it.only" | "test.it.skip" | "test.it.todo" | "test.mock" | "test.mock.fn" | "test.mock.getter" | "test.mock.method" | "test.mock.module" | "test.mock.reset" | "test.mock.restoreAll" | "test.mock.setter" | "test.mock.timers" | "test.mock.timers.enable" | "test.mock.timers.reset" | "test.mock.timers.tick" | "test.only" | "test.run" | "test.snapshot" | "test.snapshot.setDefaultSnapshotSerializers" | "test.snapshot.setResolveSnapshotPath" | "test.skip" | "test.suite" | "test.test" | "test.test.only" | "test.test.skip" | "test.test.todo" | "test.todo" | "timers" | "timers.Immediate" | "timers.Timeout" | "timers.setImmediate" | "timers.clearImmediate" | "timers.setInterval" | "timers.clearInterval" | "timers.setTimeout" | "timers.clearTimeout" | "timers.promises" | "timers.promises.setTimeout" | "timers.promises.setImmediate" | "timers.promises.setInterval" | "timers.promises.scheduler.wait" | "timers.promises.scheduler.yield" | "timers/promises" | "timers/promises.setTimeout" | "timers/promises.setImmediate" | "timers/promises.setInterval" | "timers/promises.scheduler.wait" | "timers/promises.scheduler.yield" | "tls" | "tls.rootCertificates" | "tls.DEFAULT_ECDH_CURVE" | "tls.DEFAULT_MAX_VERSION" | "tls.DEFAULT_MIN_VERSION" | "tls.DEFAULT_CIPHERS" | "tls.checkServerIdentity" | "tls.connect" | "tls.createSecureContext" | "tls.createSecurePair" | "tls.createServer" | "tls.getCiphers" | "tls.SecureContext" | "tls.CryptoStream" | "tls.SecurePair" | "tls.Server" | "tls.TLSSocket" | "trace_events" | "trace_events.createTracing" | "trace_events.getEnabledCategories" | "tty" | "tty.isatty" | "tty.ReadStream" | "tty.WriteStream" | "url" | "url.domainToASCII" | "url.domainToUnicode" | "url.fileURLToPath" | "url.format" | "url.pathToFileURL" | "url.urlToHttpOptions" | "url.URL" | "url.URL.canParse" | "url.URL.createObjectURL" | "url.URL.revokeObjectURL" | "url.URLSearchParams" | "url.Url" | "util.promisify" | "util.promisify.custom" | "util.callbackify" | "util.debuglog" | "util.debug" | "util.deprecate" | "util.format" | "util.formatWithOptions" | "util.getCallSite" | "util.getCallSites" | "util.getSystemErrorName" | "util.getSystemErrorMap" | "util.getSystemErrorMessage" | "util.inherits" | "util.inspect" | "util.inspect.custom" | "util.inspect.defaultOptions" | "util.inspect.replDefaults" | "util.isDeepStrictEqual" | "util.parseArgs" | "util.parseEnv" | "util.stripVTControlCharacters" | "util.styleText" | "util.toUSVString" | "util.transferableAbortController" | "util.transferableAbortSignal" | "util.aborted" | "util.MIMEType" | "util.MIMEParams" | "util.TextDecoder" | "util.TextEncoder" | "util.types" | "util.types.isExternal" | "util.types.isDate" | "util.types.isArgumentsObject" | "util.types.isBigIntObject" | "util.types.isBooleanObject" | "util.types.isNumberObject" | "util.types.isStringObject" | "util.types.isSymbolObject" | "util.types.isNativeError" | "util.types.isRegExp" | "util.types.isAsyncFunction" | "util.types.isGeneratorFunction" | "util.types.isGeneratorObject" | "util.types.isPromise" | "util.types.isMap" | "util.types.isSet" | "util.types.isMapIterator" | "util.types.isSetIterator" | "util.types.isWeakMap" | "util.types.isWeakSet" | "util.types.isArrayBuffer" | "util.types.isDataView" | "util.types.isSharedArrayBuffer" | "util.types.isProxy" | "util.types.isModuleNamespaceObject" | "util.types.isAnyArrayBuffer" | "util.types.isBoxedPrimitive" | "util.types.isArrayBufferView" | "util.types.isTypedArray" | "util.types.isUint8Array" | "util.types.isUint8ClampedArray" | "util.types.isUint16Array" | "util.types.isUint32Array" | "util.types.isInt8Array" | "util.types.isInt16Array" | "util.types.isInt32Array" | "util.types.isFloat32Array" | "util.types.isFloat64Array" | "util.types.isBigInt64Array" | "util.types.isBigUint64Array" | "util.types.isKeyObject" | "util.types.isCryptoKey" | "util.types.isWebAssemblyCompiledModule" | "util._extend" | "util.isArray" | "util.isBoolean" | "util.isBuffer" | "util.isDate" | "util.isError" | "util.isFunction" | "util.isNull" | "util.isNullOrUndefined" | "util.isNumber" | "util.isObject" | "util.isPrimitive" | "util.isRegExp" | "util.isString" | "util.isSymbol" | "util.isUndefined" | "util.log" | "util" | "util/types" | "util/types.isExternal" | "util/types.isDate" | "util/types.isArgumentsObject" | "util/types.isBigIntObject" | "util/types.isBooleanObject" | "util/types.isNumberObject" | "util/types.isStringObject" | "util/types.isSymbolObject" | "util/types.isNativeError" | "util/types.isRegExp" | "util/types.isAsyncFunction" | "util/types.isGeneratorFunction" | "util/types.isGeneratorObject" | "util/types.isPromise" | "util/types.isMap" | "util/types.isSet" | "util/types.isMapIterator" | "util/types.isSetIterator" | "util/types.isWeakMap" | "util/types.isWeakSet" | "util/types.isArrayBuffer" | "util/types.isDataView" | "util/types.isSharedArrayBuffer" | "util/types.isProxy" | "util/types.isModuleNamespaceObject" | "util/types.isAnyArrayBuffer" | "util/types.isBoxedPrimitive" | "util/types.isArrayBufferView" | "util/types.isTypedArray" | "util/types.isUint8Array" | "util/types.isUint8ClampedArray" | "util/types.isUint16Array" | "util/types.isUint32Array" | "util/types.isInt8Array" | "util/types.isInt16Array" | "util/types.isInt32Array" | "util/types.isFloat32Array" | "util/types.isFloat64Array" | "util/types.isBigInt64Array" | "util/types.isBigUint64Array" | "util/types.isKeyObject" | "util/types.isCryptoKey" | "util/types.isWebAssemblyCompiledModule" | "v8" | "v8.serialize" | "v8.deserialize" | "v8.Serializer" | "v8.Deserializer" | "v8.DefaultSerializer" | "v8.DefaultDeserializer" | "v8.promiseHooks" | "v8.promiseHooks.onInit" | "v8.promiseHooks.onSettled" | "v8.promiseHooks.onBefore" | "v8.promiseHooks.onAfter" | "v8.promiseHooks.createHook" | "v8.startupSnapshot" | "v8.startupSnapshot.addSerializeCallback" | "v8.startupSnapshot.addDeserializeCallback" | "v8.startupSnapshot.setDeserializeMainFunction" | "v8.startupSnapshot.isBuildingSnapshot" | "v8.cachedDataVersionTag" | "v8.getHeapCodeStatistics" | "v8.getHeapSnapshot" | "v8.getHeapSpaceStatistics" | "v8.getHeapStatistics" | "v8.queryObjects" | "v8.setFlagsFromString" | "v8.stopCoverage" | "v8.takeCoverage" | "v8.writeHeapSnapshot" | "v8.setHeapSnapshotNearHeapLimit" | "v8.GCProfiler" | "vm.constants" | "vm.compileFunction" | "vm.createContext" | "vm.isContext" | "vm.measureMemory" | "vm.runInContext" | "vm.runInNewContext" | "vm.runInThisContext" | "vm.Script" | "vm.Module" | "vm.SourceTextModule" | "vm.SyntheticModule" | "vm" | "wasi.WASI" | "wasi" | "worker_threads" | "worker_threads.isMainThread" | "worker_threads.parentPort" | "worker_threads.resourceLimits" | "worker_threads.SHARE_ENV" | "worker_threads.threadId" | "worker_threads.workerData" | "worker_threads.getEnvironmentData" | "worker_threads.markAsUncloneable" | "worker_threads.markAsUntransferable" | "worker_threads.isMarkedAsUntransferable" | "worker_threads.moveMessagePortToContext" | "worker_threads.postMessageToThread" | "worker_threads.receiveMessageOnPort" | "worker_threads.setEnvironmentData" | "worker_threads.BroadcastChannel" | "worker_threads.MessageChannel" | "worker_threads.MessagePort" | "worker_threads.Worker" | "zlib.constants" | "zlib.crc32" | "zlib.createBrotliCompress" | "zlib.createBrotliDecompress" | "zlib.createDeflate" | "zlib.createDeflateRaw" | "zlib.createGunzip" | "zlib.createGzip" | "zlib.createInflate" | "zlib.createInflateRaw" | "zlib.createUnzip" | "zlib.brotliCompress" | "zlib.brotliCompressSync" | "zlib.brotliDecompress" | "zlib.brotliDecompressSync" | "zlib.deflate" | "zlib.deflateSync" | "zlib.deflateRaw" | "zlib.deflateRawSync" | "zlib.gunzip" | "zlib.gunzipSync" | "zlib.gzip" | "zlib.gzipSync" | "zlib.inflate" | "zlib.inflateSync" | "zlib.inflateRaw" | "zlib.inflateRawSync" | "zlib.unzip" | "zlib.unzipSync" | "zlib.BrotliCompress()" | "zlib.BrotliCompress" | "zlib.BrotliDecompress()" | "zlib.BrotliDecompress" | "zlib.Deflate()" | "zlib.Deflate" | "zlib.DeflateRaw()" | "zlib.DeflateRaw" | "zlib.Gunzip()" | "zlib.Gunzip" | "zlib.Gzip()" | "zlib.Gzip" | "zlib.Inflate()" | "zlib.Inflate" | "zlib.InflateRaw()" | "zlib.InflateRaw" | "zlib.Unzip()" | "zlib.Unzip" | "zlib" | "import.meta.resolve" | "import.meta.dirname" | "import.meta.filename")[] +}] +// ----- n/prefer-global/buffer ----- +type NPreferGlobalBuffer = []|[("always" | "never")] +// ----- n/prefer-global/console ----- +type NPreferGlobalConsole = []|[("always" | "never")] +// ----- n/prefer-global/process ----- +type NPreferGlobalProcess = []|[("always" | "never")] +// ----- n/prefer-global/text-decoder ----- +type NPreferGlobalTextDecoder = []|[("always" | "never")] +// ----- n/prefer-global/text-encoder ----- +type NPreferGlobalTextEncoder = []|[("always" | "never")] +// ----- n/prefer-global/url ----- +type NPreferGlobalUrl = []|[("always" | "never")] +// ----- n/prefer-global/url-search-params ----- +type NPreferGlobalUrlSearchParams = []|[("always" | "never")] +// ----- n/prefer-node-protocol ----- +type NPreferNodeProtocol = []|[{ + version?: string +}] +// ----- n/shebang ----- +type NShebang = []|[{ + convertPath?: ({ + + [k: string]: [string, string] + } | [{ + + include: [string, ...(string)[]] + exclude?: string[] + + replace: [string, string] + }, ...({ + + include: [string, ...(string)[]] + exclude?: string[] + + replace: [string, string] + })[]]) + ignoreUnpublished?: boolean + additionalExecutables?: string[] + executableMap?: { + [k: string]: string + } +}] +// ----- no-unsanitized/method ----- +type NoUnsanitizedMethod = []|[{ + defaultDisable?: boolean + escape?: { + taggedTemplates?: []|[string] + methods?: []|[string] + [k: string]: unknown | undefined + } + objectMatches?: unknown[] + properties?: unknown[] + variableTracing?: boolean +}]|[{ + defaultDisable?: boolean + escape?: { + taggedTemplates?: []|[string] + methods?: []|[string] + [k: string]: unknown | undefined + } + objectMatches?: unknown[] + properties?: unknown[] + variableTracing?: boolean +}, { + [k: string]: unknown | undefined +}] +// ----- no-unsanitized/property ----- +type NoUnsanitizedProperty = []|[{ + escape?: { + taggedTemplates?: []|[string] + methods?: []|[string] + [k: string]: unknown | undefined + } + variableTracing?: boolean +}]|[{ + escape?: { + taggedTemplates?: []|[string] + methods?: []|[string] + [k: string]: unknown | undefined + } + variableTracing?: boolean +}, { + [k: string]: unknown | undefined +}] +// ----- perfectionist/sort-array-includes ----- +type PerfectionistSortArrayIncludes = { + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } + + specialCharacters?: ("remove" | "trim" | "keep") + + ignoreCase?: boolean + + alphabet?: string + + locales?: (string | string[]) + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + + groupKind?: ("mixed" | "literals-first" | "spreads-first") + + customGroups?: ({ + + newlinesInside?: ("always" | "never") + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") } - while?: { - before?: boolean - after?: boolean + + groupName: string + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + anyOf?: { + + selector?: ("literal" | "spread") + + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + }[] + } | { + + newlinesInside?: ("always" | "never") + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") } - with?: { - before?: boolean - after?: boolean + + groupName: string + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + + selector?: ("literal" | "spread") + + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + })[] + + useConfigurationIf?: { + + allNamesMatchPattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + } + + partitionByComment?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) | { + + block?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) + + line?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) + }) + + partitionByNewLine?: boolean + + newlinesBetween?: ("ignore" | "always" | "never") + + groups?: (string | string[] | { + + newlinesBetween: ("ignore" | "always" | "never") + })[] +}[] +// ----- perfectionist/sort-classes ----- +type PerfectionistSortClasses = []|[{ + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } + + specialCharacters?: ("remove" | "trim" | "keep") + + ignoreCase?: boolean + + alphabet?: string + + locales?: (string | string[]) + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + + customGroups?: ({ + + newlinesInside?: ("always" | "never") + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") } - yield?: { - before?: boolean - after?: boolean + + groupName: string + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + anyOf?: { + + modifiers?: ("async" | "protected" | "private" | "public" | "static" | "abstract" | "override" | "readonly" | "decorated" | "declare" | "optional")[] + + selector?: ("accessor-property" | "index-signature" | "constructor" | "static-block" | "get-method" | "set-method" | "function-property" | "property" | "method") + + decoratorNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + + elementValuePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + }[] + } | { + + newlinesInside?: ("always" | "never") + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") } - } -}] -// ----- line-comment-position ----- -type LineCommentPosition = []|[(("above" | "beside") | { - position?: ("above" | "beside") - ignorePattern?: string - applyDefaultPatterns?: boolean - applyDefaultIgnorePatterns?: boolean -})] -// ----- linebreak-style ----- -type LinebreakStyle = []|[("unix" | "windows")] -// ----- lines-around-comment ----- -type LinesAroundComment = []|[{ - beforeBlockComment?: boolean - afterBlockComment?: boolean - beforeLineComment?: boolean - afterLineComment?: boolean - allowBlockStart?: boolean - allowBlockEnd?: boolean - allowClassStart?: boolean - allowClassEnd?: boolean - allowObjectStart?: boolean - allowObjectEnd?: boolean - allowArrayStart?: boolean - allowArrayEnd?: boolean - ignorePattern?: string - applyDefaultIgnorePatterns?: boolean - afterHashbangComment?: boolean -}] -// ----- lines-around-directive ----- -type LinesAroundDirective = []|[(("always" | "never") | { - before?: ("always" | "never") - after?: ("always" | "never") -})] -// ----- lines-between-class-members ----- -type LinesBetweenClassMembers = []|[({ + + groupName: string + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + + modifiers?: ("async" | "protected" | "private" | "public" | "static" | "abstract" | "override" | "readonly" | "decorated" | "declare" | "optional")[] + + selector?: ("accessor-property" | "index-signature" | "constructor" | "static-block" | "get-method" | "set-method" | "function-property" | "property" | "method") + + decoratorNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + + elementValuePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + })[] - enforce: [{ - blankLine: ("always" | "never") - prev: ("method" | "field" | "*") - next: ("method" | "field" | "*") - }, ...({ - blankLine: ("always" | "never") - prev: ("method" | "field" | "*") - next: ("method" | "field" | "*") - })[]] -} | ("always" | "never"))]|[({ + ignoreCallbackDependenciesPatterns?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) - enforce: [{ - blankLine: ("always" | "never") - prev: ("method" | "field" | "*") - next: ("method" | "field" | "*") - }, ...({ - blankLine: ("always" | "never") - prev: ("method" | "field" | "*") - next: ("method" | "field" | "*") - })[]] -} | ("always" | "never")), { - exceptAfterSingleLine?: boolean -}] -// ----- logical-assignment-operators ----- -type LogicalAssignmentOperators = (([]|["always"]|["always", { - enforceForIfStatements?: boolean -}] | ["never"]) & unknown[]) -// ----- markdown/fenced-code-language ----- -type MarkdownFencedCodeLanguage = []|[{ - required?: string[] -}] -// ----- markdown/no-html ----- -type MarkdownNoHtml = []|[{ - allowed?: string[] -}] -// ----- max-classes-per-file ----- -type MaxClassesPerFile = []|[(number | { - ignoreExpressions?: boolean - max?: number -})] -// ----- max-depth ----- -type MaxDepth = []|[(number | { - maximum?: number - max?: number -})] -// ----- max-len ----- -type MaxLen = []|[({ - code?: number - comments?: number - tabWidth?: number - ignorePattern?: string - ignoreComments?: boolean - ignoreStrings?: boolean - ignoreUrls?: boolean - ignoreTemplateLiterals?: boolean - ignoreRegExpLiterals?: boolean - ignoreTrailingComments?: boolean -} | number)]|[({ - code?: number - comments?: number - tabWidth?: number - ignorePattern?: string - ignoreComments?: boolean - ignoreStrings?: boolean - ignoreUrls?: boolean - ignoreTemplateLiterals?: boolean - ignoreRegExpLiterals?: boolean - ignoreTrailingComments?: boolean -} | number), ({ - code?: number - comments?: number - tabWidth?: number - ignorePattern?: string - ignoreComments?: boolean - ignoreStrings?: boolean - ignoreUrls?: boolean - ignoreTemplateLiterals?: boolean - ignoreRegExpLiterals?: boolean - ignoreTrailingComments?: boolean -} | number)]|[({ - code?: number - comments?: number - tabWidth?: number - ignorePattern?: string - ignoreComments?: boolean - ignoreStrings?: boolean - ignoreUrls?: boolean - ignoreTemplateLiterals?: boolean - ignoreRegExpLiterals?: boolean - ignoreTrailingComments?: boolean -} | number), ({ - code?: number - comments?: number - tabWidth?: number - ignorePattern?: string - ignoreComments?: boolean - ignoreStrings?: boolean - ignoreUrls?: boolean - ignoreTemplateLiterals?: boolean - ignoreRegExpLiterals?: boolean - ignoreTrailingComments?: boolean -} | number), { - code?: number - comments?: number - tabWidth?: number - ignorePattern?: string - ignoreComments?: boolean - ignoreStrings?: boolean - ignoreUrls?: boolean - ignoreTemplateLiterals?: boolean - ignoreRegExpLiterals?: boolean - ignoreTrailingComments?: boolean -}] -// ----- max-lines ----- -type MaxLines = []|[(number | { - max?: number - skipComments?: boolean - skipBlankLines?: boolean -})] -// ----- max-lines-per-function ----- -type MaxLinesPerFunction = []|[({ - max?: number - skipComments?: boolean - skipBlankLines?: boolean - IIFEs?: boolean -} | number)] -// ----- max-nested-callbacks ----- -type MaxNestedCallbacks = []|[(number | { - maximum?: number - max?: number -})] -// ----- max-params ----- -type MaxParams = []|[(number | { - maximum?: number - max?: number -})] -// ----- max-statements ----- -type MaxStatements = []|[(number | { - maximum?: number - max?: number -})]|[(number | { - maximum?: number - max?: number -}), { - ignoreTopLevelFunctions?: boolean -}] -// ----- max-statements-per-line ----- -type MaxStatementsPerLine = []|[{ - max?: number -}] -// ----- multiline-comment-style ----- -type MultilineCommentStyle = ([]|[("starred-block" | "bare-block")] | []|["separate-lines"]|["separate-lines", { - checkJSDoc?: boolean -}]) -// ----- multiline-ternary ----- -type MultilineTernary = []|[("always" | "always-multiline" | "never")] -// ----- n/callback-return ----- -type NCallbackReturn = []|[string[]] -// ----- n/exports-style ----- -type NExportsStyle = []|[("module.exports" | "exports")]|[("module.exports" | "exports"), { - allowBatchAssign?: boolean -}] -// ----- n/file-extension-in-import ----- -type NFileExtensionInImport = []|[("always" | "never")]|[("always" | "never"), { - [k: string]: ("always" | "never") | undefined + partitionByComment?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) | { + + block?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) + + line?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) + }) + + partitionByNewLine?: boolean + + newlinesBetween?: ("ignore" | "always" | "never") + + groups?: (string | string[] | { + + newlinesBetween: ("ignore" | "always" | "never") + })[] }] -// ----- n/handle-callback-err ----- -type NHandleCallbackErr = []|[string] -// ----- n/hashbang ----- -type NHashbang = []|[{ - convertPath?: ({ +// ----- perfectionist/sort-decorators ----- +type PerfectionistSortDecorators = []|[{ + + fallbackSort?: { - [k: string]: [string, string] - } | [{ + order?: ("asc" | "desc") - include: [string, ...(string)[]] - exclude?: string[] + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } + + specialCharacters?: ("remove" | "trim" | "keep") + + ignoreCase?: boolean + + alphabet?: string + + locales?: (string | string[]) + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + + sortOnParameters?: boolean + + sortOnProperties?: boolean + + sortOnAccessors?: boolean + + sortOnMethods?: boolean + + sortOnClasses?: boolean + + partitionByComment?: (boolean | (({ - replace: [string, string] - }, ...({ + pattern: string - include: [string, ...(string)[]] - exclude?: string[] + flags?: string + } | string)[] | ({ - replace: [string, string] - })[]]) - ignoreUnpublished?: boolean - additionalExecutables?: string[] - executableMap?: { - [k: string]: string + pattern: string + + flags?: string + } | string)) | { + + block?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) + + line?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) + }) + + customGroups?: { + [k: string]: (string | string[]) | undefined } + + groups?: (string | string[] | { + + newlinesBetween: ("ignore" | "always" | "never") + })[] }] -// ----- n/no-deprecated-api ----- -type NNoDeprecatedApi = []|[{ - version?: string - ignoreModuleItems?: ("_linklist" | "_stream_wrap" | "async_hooks.currentId" | "async_hooks.triggerId" | "buffer.Buffer()" | "new buffer.Buffer()" | "buffer.SlowBuffer" | "constants" | "crypto._toBuf" | "crypto.Credentials" | "crypto.DEFAULT_ENCODING" | "crypto.createCipher" | "crypto.createCredentials" | "crypto.createDecipher" | "crypto.fips" | "crypto.prng" | "crypto.pseudoRandomBytes" | "crypto.rng" | "domain" | "events.EventEmitter.listenerCount" | "events.listenerCount" | "freelist" | "fs.SyncWriteStream" | "fs.exists" | "fs.lchmod" | "fs.lchmodSync" | "http.createClient" | "module.Module.createRequireFromPath" | "module.Module.requireRepl" | "module.Module._debug" | "module.createRequireFromPath" | "module.requireRepl" | "module._debug" | "net._setSimultaneousAccepts" | "os.getNetworkInterfaces" | "os.tmpDir" | "path._makeLong" | "process.EventEmitter" | "process.assert" | "process.binding" | "process.env.NODE_REPL_HISTORY_FILE" | "process.report.triggerReport" | "punycode" | "readline.codePointAt" | "readline.getStringWidth" | "readline.isFullWidthCodePoint" | "readline.stripVTControlCharacters" | "repl.REPLServer" | "repl.Recoverable" | "repl.REPL_MODE_MAGIC" | "safe-buffer.Buffer()" | "new safe-buffer.Buffer()" | "safe-buffer.SlowBuffer" | "sys" | "timers.enroll" | "timers.unenroll" | "tls.CleartextStream" | "tls.CryptoStream" | "tls.SecurePair" | "tls.convertNPNProtocols" | "tls.createSecurePair" | "tls.parseCertString" | "tty.setRawMode" | "url.parse" | "url.resolve" | "util.debug" | "util.error" | "util.isArray" | "util.isBoolean" | "util.isBuffer" | "util.isDate" | "util.isError" | "util.isFunction" | "util.isNull" | "util.isNullOrUndefined" | "util.isNumber" | "util.isObject" | "util.isPrimitive" | "util.isRegExp" | "util.isString" | "util.isSymbol" | "util.isUndefined" | "util.log" | "util.print" | "util.pump" | "util.puts" | "util._extend" | "vm.runInDebugContext" | "zlib.BrotliCompress()" | "zlib.BrotliDecompress()" | "zlib.Deflate()" | "zlib.DeflateRaw()" | "zlib.Gunzip()" | "zlib.Gzip()" | "zlib.Inflate()" | "zlib.InflateRaw()" | "zlib.Unzip()")[] - ignoreGlobalItems?: ("Buffer()" | "new Buffer()" | "COUNTER_NET_SERVER_CONNECTION" | "COUNTER_NET_SERVER_CONNECTION_CLOSE" | "COUNTER_HTTP_SERVER_REQUEST" | "COUNTER_HTTP_SERVER_RESPONSE" | "COUNTER_HTTP_CLIENT_REQUEST" | "COUNTER_HTTP_CLIENT_RESPONSE" | "GLOBAL" | "Intl.v8BreakIterator" | "require.extensions" | "root" | "process.EventEmitter" | "process.assert" | "process.binding" | "process.env.NODE_REPL_HISTORY_FILE" | "process.report.triggerReport")[] - ignoreIndirectDependencies?: boolean +// ----- perfectionist/sort-enums ----- +type PerfectionistSortEnums = []|[{ + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } + + specialCharacters?: ("remove" | "trim" | "keep") + + ignoreCase?: boolean + + alphabet?: string + + locales?: (string | string[]) + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + customGroups?: ({ + [k: string]: (string | string[]) | undefined + } | ({ + + newlinesInside?: ("always" | "never") + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } + + groupName: string + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + anyOf?: { + + elementValuePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + }[] + } | { + + newlinesInside?: ("always" | "never") + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } + + groupName: string + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + + elementValuePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + })[]) + + forceNumericSort?: boolean + + sortByValue?: boolean + + partitionByComment?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) | { + + block?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) + + line?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) + }) + + partitionByNewLine?: boolean + + newlinesBetween?: ("ignore" | "always" | "never") + + groups?: (string | string[] | { + + newlinesBetween: ("ignore" | "always" | "never") + })[] }] -// ----- n/no-extraneous-import ----- -type NNoExtraneousImport = []|[{ - allowModules?: string[] - convertPath?: ({ +// ----- perfectionist/sort-exports ----- +type PerfectionistSortExports = { + + fallbackSort?: { - [k: string]: [string, string] - } | [{ + order?: ("asc" | "desc") - include: [string, ...(string)[]] - exclude?: string[] + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } + + specialCharacters?: ("remove" | "trim" | "keep") + + ignoreCase?: boolean + + alphabet?: string + + locales?: (string | string[]) + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + + groupKind?: ("mixed" | "values-first" | "types-first") + + customGroups?: ({ - replace: [string, string] - }, ...({ + newlinesInside?: ("always" | "never") + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } + + groupName: string + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + anyOf?: { + + modifiers?: ("value" | "type")[] + + selector?: "export" + + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + }[] + } | { + + newlinesInside?: ("always" | "never") + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } + + groupName: string + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + + modifiers?: ("value" | "type")[] + + selector?: "export" + + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + })[] + + partitionByComment?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) | { + + block?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) + + line?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) + }) + + partitionByNewLine?: boolean + + newlinesBetween?: ("ignore" | "always" | "never") + + groups?: (string | string[] | { + + newlinesBetween: ("ignore" | "always" | "never") + })[] +}[] +// ----- perfectionist/sort-heritage-clauses ----- +type PerfectionistSortHeritageClauses = []|[{ + + fallbackSort?: { - include: [string, ...(string)[]] - exclude?: string[] + order?: ("asc" | "desc") - replace: [string, string] - })[]]) - resolvePaths?: string[] - resolverConfig?: { - [k: string]: unknown | undefined + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } + + specialCharacters?: ("remove" | "trim" | "keep") + + ignoreCase?: boolean + + alphabet?: string + + locales?: (string | string[]) + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + + customGroups?: { + [k: string]: (string | string[]) | undefined } + + groups?: (string | string[] | { + + newlinesBetween: ("ignore" | "always" | "never") + })[] }] -// ----- n/no-extraneous-require ----- -type NNoExtraneousRequire = []|[{ - allowModules?: string[] - convertPath?: ({ +// ----- perfectionist/sort-imports ----- +type PerfectionistSortImports = { + + fallbackSort?: { - [k: string]: [string, string] - } | [{ + order?: ("asc" | "desc") - include: [string, ...(string)[]] - exclude?: string[] + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } + + specialCharacters?: ("remove" | "trim" | "keep") + + ignoreCase?: boolean + + alphabet?: string + + locales?: (string | string[]) + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + customGroups?: ({ - replace: [string, string] - }, ...({ + value?: { + [k: string]: (string | string[]) | undefined + } - include: [string, ...(string)[]] - exclude?: string[] + type?: { + [k: string]: (string | string[]) | undefined + } + } | ({ - replace: [string, string] - })[]]) - resolvePaths?: string[] - resolverConfig?: { - [k: string]: unknown | undefined - } - tryExtensions?: string[] -}] -// ----- n/no-hide-core-modules ----- -type NNoHideCoreModules = []|[{ - allow?: ("assert" | "buffer" | "child_process" | "cluster" | "console" | "constants" | "crypto" | "dgram" | "dns" | "events" | "fs" | "http" | "https" | "module" | "net" | "os" | "path" | "querystring" | "readline" | "repl" | "stream" | "string_decoder" | "timers" | "tls" | "tty" | "url" | "util" | "vm" | "zlib")[] - ignoreDirectDependencies?: boolean - ignoreIndirectDependencies?: boolean -}] -// ----- n/no-missing-import ----- -type NNoMissingImport = []|[{ - allowModules?: string[] - resolvePaths?: string[] - resolverConfig?: { - [k: string]: unknown | undefined - } - tryExtensions?: string[] - ignoreTypeImport?: boolean - tsconfigPath?: string - typescriptExtensionMap?: (unknown[][] | ("react" | "react-jsx" | "react-jsxdev" | "react-native" | "preserve")) -}] -// ----- n/no-missing-require ----- -type NNoMissingRequire = []|[{ - allowModules?: string[] - tryExtensions?: string[] - resolvePaths?: string[] - resolverConfig?: { - [k: string]: unknown | undefined - } - typescriptExtensionMap?: (unknown[][] | ("react" | "react-jsx" | "react-jsxdev" | "react-native" | "preserve")) - tsconfigPath?: string -}] -// ----- n/no-mixed-requires ----- -type NNoMixedRequires = []|[(boolean | { - grouping?: boolean - allowCall?: boolean -})] -// ----- n/no-process-env ----- -type NNoProcessEnv = []|[{ - allowedVariables?: string[] -}] -// ----- n/no-restricted-import ----- -type NNoRestrictedImport = []|[(string | { - name: (string | string[]) - message?: string -})[]] -// ----- n/no-restricted-require ----- -type NNoRestrictedRequire = []|[(string | { - name: (string | string[]) - message?: string -})[]] -// ----- n/no-sync ----- -type NNoSync = []|[{ - allowAtRootLevel?: boolean - ignores?: string[] -}] -// ----- n/no-unpublished-bin ----- -type NNoUnpublishedBin = []|[{ - convertPath?: ({ + newlinesInside?: ("always" | "never") - [k: string]: [string, string] - } | [{ + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } - include: [string, ...(string)[]] - exclude?: string[] + groupName: string - replace: [string, string] - }, ...({ + order?: ("asc" | "desc") - include: [string, ...(string)[]] - exclude?: string[] + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + anyOf?: { + + modifiers?: ("default" | "named" | "require" | "side-effect" | "ts-equals" | "type" | "value" | "wildcard")[] + + selector?: ("side-effect-style" | "tsconfig-path" | "side-effect" | "external" | "internal" | "builtin" | "sibling" | "subpath" | "import" | "parent" | "index" | "style" | "type") + + elementValuePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + }[] + } | { - replace: [string, string] - })[]]) - [k: string]: unknown | undefined -}] -// ----- n/no-unpublished-import ----- -type NNoUnpublishedImport = []|[{ - allowModules?: string[] - convertPath?: ({ + newlinesInside?: ("always" | "never") - [k: string]: [string, string] - } | [{ + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } - include: [string, ...(string)[]] - exclude?: string[] + groupName: string - replace: [string, string] - }, ...({ + order?: ("asc" | "desc") - include: [string, ...(string)[]] - exclude?: string[] + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - replace: [string, string] - })[]]) - resolvePaths?: string[] - resolverConfig?: { - [k: string]: unknown | undefined - } - ignoreTypeImport?: boolean - ignorePrivate?: boolean -}] -// ----- n/no-unpublished-require ----- -type NNoUnpublishedRequire = []|[{ - allowModules?: string[] - convertPath?: ({ + modifiers?: ("default" | "named" | "require" | "side-effect" | "ts-equals" | "type" | "value" | "wildcard")[] - [k: string]: [string, string] - } | [{ + selector?: ("side-effect-style" | "tsconfig-path" | "side-effect" | "external" | "internal" | "builtin" | "sibling" | "subpath" | "import" | "parent" | "index" | "style" | "type") - include: [string, ...(string)[]] - exclude?: string[] + elementValuePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) - replace: [string, string] - }, ...({ + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + })[]) + + maxLineLength?: number + + sortSideEffects?: boolean + + environment?: ("node" | "bun") + + tsconfigRootDir?: string + + partitionByComment?: (boolean | (({ - include: [string, ...(string)[]] - exclude?: string[] + pattern: string - replace: [string, string] - })[]]) - resolvePaths?: string[] - resolverConfig?: { - [k: string]: unknown | undefined - } - tryExtensions?: string[] - ignorePrivate?: boolean -}] -// ----- n/no-unsupported-features/es-builtins ----- -type NNoUnsupportedFeaturesEsBuiltins = []|[{ - version?: string - ignores?: ("AggregateError" | "Array" | "Array.from" | "Array.isArray" | "Array.length" | "Array.of" | "Array.toLocaleString" | "ArrayBuffer" | "ArrayBuffer.isView" | "Atomics" | "Atomics.add" | "Atomics.and" | "Atomics.compareExchange" | "Atomics.exchange" | "Atomics.isLockFree" | "Atomics.load" | "Atomics.notify" | "Atomics.or" | "Atomics.store" | "Atomics.sub" | "Atomics.wait" | "Atomics.waitAsync" | "Atomics.xor" | "BigInt" | "BigInt.asIntN" | "BigInt.asUintN" | "BigInt64Array" | "BigInt64Array.BYTES_PER_ELEMENT" | "BigInt64Array.from" | "BigInt64Array.name" | "BigInt64Array.of" | "BigUint64Array" | "BigUint64Array.BYTES_PER_ELEMENT" | "BigUint64Array.from" | "BigUint64Array.name" | "BigUint64Array.of" | "Boolean" | "DataView" | "Date" | "Date.UTC" | "Date.now" | "Date.parse" | "Date.toLocaleDateString" | "Date.toLocaleString" | "Date.toLocaleTimeString" | "Error" | "Error.cause" | "EvalError" | "FinalizationRegistry" | "Float32Array" | "Float32Array.BYTES_PER_ELEMENT" | "Float32Array.from" | "Float32Array.name" | "Float32Array.of" | "Float64Array" | "Float64Array.BYTES_PER_ELEMENT" | "Float64Array.from" | "Float64Array.name" | "Float64Array.of" | "Function" | "Function.length" | "Function.name" | "Infinity" | "Int16Array" | "Int16Array.BYTES_PER_ELEMENT" | "Int16Array.from" | "Int16Array.name" | "Int16Array.of" | "Int32Array" | "Int32Array.BYTES_PER_ELEMENT" | "Int32Array.from" | "Int32Array.name" | "Int32Array.of" | "Int8Array" | "Int8Array.BYTES_PER_ELEMENT" | "Int8Array.from" | "Int8Array.name" | "Int8Array.of" | "Intl" | "Intl.Collator" | "Intl.DateTimeFormat" | "Intl.DisplayNames" | "Intl.ListFormat" | "Intl.Locale" | "Intl.NumberFormat" | "Intl.PluralRules" | "Intl.RelativeTimeFormat" | "Intl.Segmenter" | "Intl.Segments" | "Intl.getCanonicalLocales" | "Intl.supportedValuesOf" | "JSON" | "JSON.parse" | "JSON.stringify" | "Map" | "Map.groupBy" | "Math" | "Math.E" | "Math.LN10" | "Math.LN2" | "Math.LOG10E" | "Math.LOG2E" | "Math.PI" | "Math.SQRT1_2" | "Math.SQRT2" | "Math.abs" | "Math.acos" | "Math.acosh" | "Math.asin" | "Math.asinh" | "Math.atan" | "Math.atan2" | "Math.atanh" | "Math.cbrt" | "Math.ceil" | "Math.clz32" | "Math.cos" | "Math.cosh" | "Math.exp" | "Math.expm1" | "Math.floor" | "Math.fround" | "Math.hypot" | "Math.imul" | "Math.log" | "Math.log10" | "Math.log1p" | "Math.log2" | "Math.max" | "Math.min" | "Math.pow" | "Math.random" | "Math.round" | "Math.sign" | "Math.sin" | "Math.sinh" | "Math.sqrt" | "Math.tan" | "Math.tanh" | "Math.trunc" | "NaN" | "Number.EPSILON" | "Number.MAX_SAFE_INTEGER" | "Number.MAX_VALUE" | "Number.MIN_SAFE_INTEGER" | "Number.MIN_VALUE" | "Number.NEGATIVE_INFINITY" | "Number.NaN" | "Number.POSITIVE_INFINITY" | "Number.isFinite" | "Number.isInteger" | "Number.isNaN" | "Number.isSafeInteger" | "Number.parseFloat" | "Number.parseInt" | "Number.toLocaleString" | "Object.assign" | "Object.create" | "Object.defineGetter" | "Object.defineProperties" | "Object.defineProperty" | "Object.defineSetter" | "Object.entries" | "Object.freeze" | "Object.fromEntries" | "Object.getOwnPropertyDescriptor" | "Object.getOwnPropertyDescriptors" | "Object.getOwnPropertyNames" | "Object.getOwnPropertySymbols" | "Object.getPrototypeOf" | "Object.groupBy" | "Object.hasOwn" | "Object.is" | "Object.isExtensible" | "Object.isFrozen" | "Object.isSealed" | "Object.keys" | "Object.lookupGetter" | "Object.lookupSetter" | "Object.preventExtensions" | "Object.proto" | "Object.seal" | "Object.setPrototypeOf" | "Object.values" | "Promise" | "Promise.all" | "Promise.allSettled" | "Promise.any" | "Promise.race" | "Promise.reject" | "Promise.resolve" | "Proxy" | "Proxy.revocable" | "RangeError" | "ReferenceError" | "Reflect" | "Reflect.apply" | "Reflect.construct" | "Reflect.defineProperty" | "Reflect.deleteProperty" | "Reflect.get" | "Reflect.getOwnPropertyDescriptor" | "Reflect.getPrototypeOf" | "Reflect.has" | "Reflect.isExtensible" | "Reflect.ownKeys" | "Reflect.preventExtensions" | "Reflect.set" | "Reflect.setPrototypeOf" | "RegExp" | "RegExp.dotAll" | "RegExp.hasIndices" | "RegExp.input" | "RegExp.lastIndex" | "RegExp.lastMatch" | "RegExp.lastParen" | "RegExp.leftContext" | "RegExp.n" | "RegExp.rightContext" | "Set" | "SharedArrayBuffer" | "String" | "String.fromCharCode" | "String.fromCodePoint" | "String.length" | "String.localeCompare" | "String.raw" | "String.toLocaleLowerCase" | "String.toLocaleUpperCase" | "Symbol" | "Symbol.asyncIterator" | "Symbol.for" | "Symbol.hasInstance" | "Symbol.isConcatSpreadable" | "Symbol.iterator" | "Symbol.keyFor" | "Symbol.match" | "Symbol.matchAll" | "Symbol.replace" | "Symbol.search" | "Symbol.species" | "Symbol.split" | "Symbol.toPrimitive" | "Symbol.toStringTag" | "Symbol.unscopables" | "SyntaxError" | "TypeError" | "URIError" | "Uint16Array" | "Uint16Array.BYTES_PER_ELEMENT" | "Uint16Array.from" | "Uint16Array.name" | "Uint16Array.of" | "Uint32Array" | "Uint32Array.BYTES_PER_ELEMENT" | "Uint32Array.from" | "Uint32Array.name" | "Uint32Array.of" | "Uint8Array" | "Uint8Array.BYTES_PER_ELEMENT" | "Uint8Array.from" | "Uint8Array.name" | "Uint8Array.of" | "Uint8ClampedArray" | "Uint8ClampedArray.BYTES_PER_ELEMENT" | "Uint8ClampedArray.from" | "Uint8ClampedArray.name" | "Uint8ClampedArray.of" | "WeakMap" | "WeakRef" | "WeakSet" | "decodeURI" | "decodeURIComponent" | "encodeURI" | "encodeURIComponent" | "escape" | "eval" | "globalThis" | "isFinite" | "isNaN" | "parseFloat" | "parseInt" | "unescape")[] -}] -// ----- n/no-unsupported-features/es-syntax ----- -type NNoUnsupportedFeaturesEsSyntax = []|[{ - version?: string - ignores?: ("no-accessor-properties" | "accessor-properties" | "accessorProperties" | "no-arbitrary-module-namespace-names" | "arbitrary-module-namespace-names" | "arbitraryModuleNamespaceNames" | "no-array-from" | "array-from" | "arrayFrom" | "no-array-isarray" | "array-isarray" | "arrayIsarray" | "no-array-of" | "array-of" | "arrayOf" | "no-array-prototype-copywithin" | "array-prototype-copywithin" | "arrayPrototypeCopywithin" | "no-array-prototype-entries" | "array-prototype-entries" | "arrayPrototypeEntries" | "no-array-prototype-every" | "array-prototype-every" | "arrayPrototypeEvery" | "no-array-prototype-fill" | "array-prototype-fill" | "arrayPrototypeFill" | "no-array-prototype-filter" | "array-prototype-filter" | "arrayPrototypeFilter" | "no-array-prototype-find" | "array-prototype-find" | "arrayPrototypeFind" | "no-array-prototype-findindex" | "array-prototype-findindex" | "arrayPrototypeFindindex" | "no-array-prototype-findlast-findlastindex" | "array-prototype-findlast-findlastindex" | "arrayPrototypeFindlastFindlastindex" | "no-array-prototype-flat" | "array-prototype-flat" | "arrayPrototypeFlat" | "no-array-prototype-foreach" | "array-prototype-foreach" | "arrayPrototypeForeach" | "no-array-prototype-includes" | "array-prototype-includes" | "arrayPrototypeIncludes" | "no-array-prototype-indexof" | "array-prototype-indexof" | "arrayPrototypeIndexof" | "no-array-prototype-keys" | "array-prototype-keys" | "arrayPrototypeKeys" | "no-array-prototype-lastindexof" | "array-prototype-lastindexof" | "arrayPrototypeLastindexof" | "no-array-prototype-map" | "array-prototype-map" | "arrayPrototypeMap" | "no-array-prototype-reduce" | "array-prototype-reduce" | "arrayPrototypeReduce" | "no-array-prototype-reduceright" | "array-prototype-reduceright" | "arrayPrototypeReduceright" | "no-array-prototype-some" | "array-prototype-some" | "arrayPrototypeSome" | "no-array-prototype-toreversed" | "array-prototype-toreversed" | "arrayPrototypeToreversed" | "no-array-prototype-tosorted" | "array-prototype-tosorted" | "arrayPrototypeTosorted" | "no-array-prototype-tospliced" | "array-prototype-tospliced" | "arrayPrototypeTospliced" | "no-array-prototype-values" | "array-prototype-values" | "arrayPrototypeValues" | "no-array-prototype-with" | "array-prototype-with" | "arrayPrototypeWith" | "no-array-string-prototype-at" | "array-string-prototype-at" | "arrayStringPrototypeAt" | "no-arrow-functions" | "arrow-functions" | "arrowFunctions" | "no-async-functions" | "async-functions" | "asyncFunctions" | "no-async-iteration" | "async-iteration" | "asyncIteration" | "no-atomics-waitasync" | "atomics-waitasync" | "atomicsWaitasync" | "no-atomics" | "atomics" | "no-bigint" | "bigint" | "no-binary-numeric-literals" | "binary-numeric-literals" | "binaryNumericLiterals" | "no-block-scoped-functions" | "block-scoped-functions" | "blockScopedFunctions" | "no-block-scoped-variables" | "block-scoped-variables" | "blockScopedVariables" | "no-class-fields" | "class-fields" | "classFields" | "no-class-static-block" | "class-static-block" | "classStaticBlock" | "no-classes" | "classes" | "no-computed-properties" | "computed-properties" | "computedProperties" | "no-date-now" | "date-now" | "dateNow" | "no-date-prototype-getyear-setyear" | "date-prototype-getyear-setyear" | "datePrototypeGetyearSetyear" | "no-date-prototype-togmtstring" | "date-prototype-togmtstring" | "datePrototypeTogmtstring" | "no-default-parameters" | "default-parameters" | "defaultParameters" | "no-destructuring" | "destructuring" | "no-dynamic-import" | "dynamic-import" | "dynamicImport" | "no-error-cause" | "error-cause" | "errorCause" | "no-escape-unescape" | "escape-unescape" | "escapeUnescape" | "no-exponential-operators" | "exponential-operators" | "exponentialOperators" | "no-export-ns-from" | "export-ns-from" | "exportNsFrom" | "no-for-of-loops" | "for-of-loops" | "forOfLoops" | "no-function-declarations-in-if-statement-clauses-without-block" | "function-declarations-in-if-statement-clauses-without-block" | "functionDeclarationsInIfStatementClausesWithoutBlock" | "no-function-prototype-bind" | "function-prototype-bind" | "functionPrototypeBind" | "no-generators" | "generators" | "no-global-this" | "global-this" | "globalThis" | "no-hashbang" | "hashbang" | "no-import-meta" | "import-meta" | "importMeta" | "no-initializers-in-for-in" | "initializers-in-for-in" | "initializersInForIn" | "no-intl-datetimeformat-prototype-formatrange" | "intl-datetimeformat-prototype-formatrange" | "intlDatetimeformatPrototypeFormatrange" | "no-intl-datetimeformat-prototype-formattoparts" | "intl-datetimeformat-prototype-formattoparts" | "intlDatetimeformatPrototypeFormattoparts" | "no-intl-displaynames" | "intl-displaynames" | "intlDisplaynames" | "no-intl-getcanonicallocales" | "intl-getcanonicallocales" | "intlGetcanonicallocales" | "no-intl-listformat" | "intl-listformat" | "intlListformat" | "no-intl-locale" | "intl-locale" | "intlLocale" | "no-intl-numberformat-prototype-formatrange" | "intl-numberformat-prototype-formatrange" | "intlNumberformatPrototypeFormatrange" | "no-intl-numberformat-prototype-formatrangetoparts" | "intl-numberformat-prototype-formatrangetoparts" | "intlNumberformatPrototypeFormatrangetoparts" | "no-intl-numberformat-prototype-formattoparts" | "intl-numberformat-prototype-formattoparts" | "intlNumberformatPrototypeFormattoparts" | "no-intl-pluralrules-prototype-selectrange" | "intl-pluralrules-prototype-selectrange" | "intlPluralrulesPrototypeSelectrange" | "no-intl-pluralrules" | "intl-pluralrules" | "intlPluralrules" | "no-intl-relativetimeformat" | "intl-relativetimeformat" | "intlRelativetimeformat" | "no-intl-segmenter" | "intl-segmenter" | "intlSegmenter" | "no-intl-supportedvaluesof" | "intl-supportedvaluesof" | "intlSupportedvaluesof" | "no-json-superset" | "json-superset" | "jsonSuperset" | "no-json" | "json" | "no-keyword-properties" | "keyword-properties" | "keywordProperties" | "no-labelled-function-declarations" | "labelled-function-declarations" | "labelledFunctionDeclarations" | "no-legacy-object-prototype-accessor-methods" | "legacy-object-prototype-accessor-methods" | "legacyObjectPrototypeAccessorMethods" | "no-logical-assignment-operators" | "logical-assignment-operators" | "logicalAssignmentOperators" | "no-malformed-template-literals" | "malformed-template-literals" | "malformedTemplateLiterals" | "no-map" | "map" | "no-math-acosh" | "math-acosh" | "mathAcosh" | "no-math-asinh" | "math-asinh" | "mathAsinh" | "no-math-atanh" | "math-atanh" | "mathAtanh" | "no-math-cbrt" | "math-cbrt" | "mathCbrt" | "no-math-clz32" | "math-clz32" | "mathClz32" | "no-math-cosh" | "math-cosh" | "mathCosh" | "no-math-expm1" | "math-expm1" | "mathExpm1" | "no-math-fround" | "math-fround" | "mathFround" | "no-math-hypot" | "math-hypot" | "mathHypot" | "no-math-imul" | "math-imul" | "mathImul" | "no-math-log10" | "math-log10" | "mathLog10" | "no-math-log1p" | "math-log1p" | "mathLog1p" | "no-math-log2" | "math-log2" | "mathLog2" | "no-math-sign" | "math-sign" | "mathSign" | "no-math-sinh" | "math-sinh" | "mathSinh" | "no-math-tanh" | "math-tanh" | "mathTanh" | "no-math-trunc" | "math-trunc" | "mathTrunc" | "no-modules" | "modules" | "no-new-target" | "new-target" | "newTarget" | "new.target" | "no-nullish-coalescing-operators" | "nullish-coalescing-operators" | "nullishCoalescingOperators" | "no-number-epsilon" | "number-epsilon" | "numberEpsilon" | "no-number-isfinite" | "number-isfinite" | "numberIsfinite" | "no-number-isinteger" | "number-isinteger" | "numberIsinteger" | "no-number-isnan" | "number-isnan" | "numberIsnan" | "no-number-issafeinteger" | "number-issafeinteger" | "numberIssafeinteger" | "no-number-maxsafeinteger" | "number-maxsafeinteger" | "numberMaxsafeinteger" | "no-number-minsafeinteger" | "number-minsafeinteger" | "numberMinsafeinteger" | "no-number-parsefloat" | "number-parsefloat" | "numberParsefloat" | "no-number-parseint" | "number-parseint" | "numberParseint" | "no-numeric-separators" | "numeric-separators" | "numericSeparators" | "no-object-assign" | "object-assign" | "objectAssign" | "no-object-create" | "object-create" | "objectCreate" | "no-object-defineproperties" | "object-defineproperties" | "objectDefineproperties" | "no-object-defineproperty" | "object-defineproperty" | "objectDefineproperty" | "no-object-entries" | "object-entries" | "objectEntries" | "no-object-freeze" | "object-freeze" | "objectFreeze" | "no-object-fromentries" | "object-fromentries" | "objectFromentries" | "no-object-getownpropertydescriptor" | "object-getownpropertydescriptor" | "objectGetownpropertydescriptor" | "no-object-getownpropertydescriptors" | "object-getownpropertydescriptors" | "objectGetownpropertydescriptors" | "no-object-getownpropertynames" | "object-getownpropertynames" | "objectGetownpropertynames" | "no-object-getownpropertysymbols" | "object-getownpropertysymbols" | "objectGetownpropertysymbols" | "no-object-getprototypeof" | "object-getprototypeof" | "objectGetprototypeof" | "no-object-hasown" | "object-hasown" | "objectHasown" | "no-object-is" | "object-is" | "objectIs" | "no-object-isextensible" | "object-isextensible" | "objectIsextensible" | "no-object-isfrozen" | "object-isfrozen" | "objectIsfrozen" | "no-object-issealed" | "object-issealed" | "objectIssealed" | "no-object-keys" | "object-keys" | "objectKeys" | "no-object-map-groupby" | "object-map-groupby" | "objectMapGroupby" | "no-object-preventextensions" | "object-preventextensions" | "objectPreventextensions" | "no-object-seal" | "object-seal" | "objectSeal" | "no-object-setprototypeof" | "object-setprototypeof" | "objectSetprototypeof" | "no-object-super-properties" | "object-super-properties" | "objectSuperProperties" | "no-object-values" | "object-values" | "objectValues" | "no-octal-numeric-literals" | "octal-numeric-literals" | "octalNumericLiterals" | "no-optional-catch-binding" | "optional-catch-binding" | "optionalCatchBinding" | "no-optional-chaining" | "optional-chaining" | "optionalChaining" | "no-private-in" | "private-in" | "privateIn" | "no-promise-all-settled" | "promise-all-settled" | "promiseAllSettled" | "no-promise-any" | "promise-any" | "promiseAny" | "no-promise-prototype-finally" | "promise-prototype-finally" | "promisePrototypeFinally" | "no-promise-withresolvers" | "promise-withresolvers" | "promiseWithresolvers" | "no-promise" | "promise" | "no-property-shorthands" | "property-shorthands" | "propertyShorthands" | "no-proxy" | "proxy" | "no-reflect" | "reflect" | "no-regexp-d-flag" | "regexp-d-flag" | "regexpDFlag" | "no-regexp-lookbehind-assertions" | "regexp-lookbehind-assertions" | "regexpLookbehindAssertions" | "regexpLookbehind" | "no-regexp-named-capture-groups" | "regexp-named-capture-groups" | "regexpNamedCaptureGroups" | "no-regexp-prototype-compile" | "regexp-prototype-compile" | "regexpPrototypeCompile" | "no-regexp-prototype-flags" | "regexp-prototype-flags" | "regexpPrototypeFlags" | "no-regexp-s-flag" | "regexp-s-flag" | "regexpSFlag" | "regexpS" | "no-regexp-u-flag" | "regexp-u-flag" | "regexpUFlag" | "regexpU" | "no-regexp-unicode-property-escapes-2019" | "regexp-unicode-property-escapes-2019" | "regexpUnicodePropertyEscapes2019" | "no-regexp-unicode-property-escapes-2020" | "regexp-unicode-property-escapes-2020" | "regexpUnicodePropertyEscapes2020" | "no-regexp-unicode-property-escapes-2021" | "regexp-unicode-property-escapes-2021" | "regexpUnicodePropertyEscapes2021" | "no-regexp-unicode-property-escapes-2022" | "regexp-unicode-property-escapes-2022" | "regexpUnicodePropertyEscapes2022" | "no-regexp-unicode-property-escapes-2023" | "regexp-unicode-property-escapes-2023" | "regexpUnicodePropertyEscapes2023" | "no-regexp-unicode-property-escapes" | "regexp-unicode-property-escapes" | "regexpUnicodePropertyEscapes" | "regexpUnicodeProperties" | "no-regexp-v-flag" | "regexp-v-flag" | "regexpVFlag" | "no-regexp-y-flag" | "regexp-y-flag" | "regexpYFlag" | "regexpY" | "no-resizable-and-growable-arraybuffers" | "resizable-and-growable-arraybuffers" | "resizableAndGrowableArraybuffers" | "no-rest-parameters" | "rest-parameters" | "restParameters" | "no-rest-spread-properties" | "rest-spread-properties" | "restSpreadProperties" | "no-set" | "set" | "no-shadow-catch-param" | "shadow-catch-param" | "shadowCatchParam" | "no-shared-array-buffer" | "shared-array-buffer" | "sharedArrayBuffer" | "no-spread-elements" | "spread-elements" | "spreadElements" | "no-string-create-html-methods" | "string-create-html-methods" | "stringCreateHtmlMethods" | "no-string-fromcodepoint" | "string-fromcodepoint" | "stringFromcodepoint" | "no-string-prototype-codepointat" | "string-prototype-codepointat" | "stringPrototypeCodepointat" | "no-string-prototype-endswith" | "string-prototype-endswith" | "stringPrototypeEndswith" | "no-string-prototype-includes" | "string-prototype-includes" | "stringPrototypeIncludes" | "no-string-prototype-iswellformed-towellformed" | "string-prototype-iswellformed-towellformed" | "stringPrototypeIswellformedTowellformed" | "no-string-prototype-matchall" | "string-prototype-matchall" | "stringPrototypeMatchall" | "no-string-prototype-normalize" | "string-prototype-normalize" | "stringPrototypeNormalize" | "no-string-prototype-padstart-padend" | "string-prototype-padstart-padend" | "stringPrototypePadstartPadend" | "no-string-prototype-repeat" | "string-prototype-repeat" | "stringPrototypeRepeat" | "no-string-prototype-replaceall" | "string-prototype-replaceall" | "stringPrototypeReplaceall" | "no-string-prototype-startswith" | "string-prototype-startswith" | "stringPrototypeStartswith" | "no-string-prototype-substr" | "string-prototype-substr" | "stringPrototypeSubstr" | "no-string-prototype-trim" | "string-prototype-trim" | "stringPrototypeTrim" | "no-string-prototype-trimleft-trimright" | "string-prototype-trimleft-trimright" | "stringPrototypeTrimleftTrimright" | "no-string-prototype-trimstart-trimend" | "string-prototype-trimstart-trimend" | "stringPrototypeTrimstartTrimend" | "no-string-raw" | "string-raw" | "stringRaw" | "no-subclassing-builtins" | "subclassing-builtins" | "subclassingBuiltins" | "no-symbol-prototype-description" | "symbol-prototype-description" | "symbolPrototypeDescription" | "no-symbol" | "symbol" | "no-template-literals" | "template-literals" | "templateLiterals" | "no-top-level-await" | "top-level-await" | "topLevelAwait" | "no-trailing-commas" | "trailing-commas" | "trailingCommas" | "no-trailing-function-commas" | "trailing-function-commas" | "trailingFunctionCommas" | "trailingCommasInFunctions" | "no-typed-arrays" | "typed-arrays" | "typedArrays" | "no-unicode-codepoint-escapes" | "unicode-codepoint-escapes" | "unicodeCodepointEscapes" | "unicodeCodePointEscapes" | "no-weak-map" | "weak-map" | "weakMap" | "no-weak-set" | "weak-set" | "weakSet" | "no-weakrefs" | "weakrefs")[] -}] -// ----- n/no-unsupported-features/node-builtins ----- -type NNoUnsupportedFeaturesNodeBuiltins = []|[{ - version?: string - allowExperimental?: boolean - ignores?: ("__filename" | "__dirname" | "require" | "require.cache" | "require.extensions" | "require.main" | "require.resolve" | "require.resolve.paths" | "module" | "module.children" | "module.exports" | "module.filename" | "module.id" | "module.isPreloading" | "module.loaded" | "module.parent" | "module.path" | "module.paths" | "module.require" | "exports" | "AbortController" | "AbortSignal" | "AbortSignal.abort" | "AbortSignal.timeout" | "AbortSignal.any" | "DOMException" | "FormData" | "Headers" | "MessageEvent" | "Navigator" | "Request" | "Response" | "WebAssembly" | "WebSocket" | "fetch" | "global" | "queueMicrotask" | "navigator" | "navigator.hardwareConcurrency" | "navigator.language" | "navigator.languages" | "navigator.platform" | "navigator.userAgent" | "structuredClone" | "localStorage" | "sessionStorage" | "Storage" | "Blob" | "new Buffer()" | "Buffer" | "Buffer.alloc" | "Buffer.allocUnsafe" | "Buffer.allocUnsafeSlow" | "Buffer.byteLength" | "Buffer.compare" | "Buffer.concat" | "Buffer.copyBytesFrom" | "Buffer.from" | "Buffer.isBuffer" | "Buffer.isEncoding" | "File" | "atob" | "btoa" | "console" | "console.profile" | "console.profileEnd" | "console.timeStamp" | "console.Console" | "console.assert" | "console.clear" | "console.count" | "console.countReset" | "console.debug" | "console.dir" | "console.dirxml" | "console.error" | "console.group" | "console.groupCollapsed" | "console.groupEnd" | "console.info" | "console.log" | "console.table" | "console.time" | "console.timeEnd" | "console.timeLog" | "console.trace" | "console.warn" | "crypto" | "crypto.subtle" | "crypto.subtle.decrypt" | "crypto.subtle.deriveBits" | "crypto.subtle.deriveKey" | "crypto.subtle.digest" | "crypto.subtle.encrypt" | "crypto.subtle.exportKey" | "crypto.subtle.generateKey" | "crypto.subtle.importKey" | "crypto.subtle.sign" | "crypto.subtle.unwrapKey" | "crypto.subtle.verify" | "crypto.subtle.wrapKey" | "crypto.getRandomValues" | "crypto.randomUUID" | "Crypto" | "CryptoKey" | "SubtleCrypto" | "CloseEvent" | "CustomEvent" | "Event" | "EventSource" | "EventTarget" | "PerformanceEntry" | "PerformanceMark" | "PerformanceMeasure" | "PerformanceObserver" | "PerformanceObserverEntryList" | "PerformanceResourceTiming" | "performance" | "performance.clearMarks" | "performance.clearMeasures" | "performance.clearResourceTimings" | "performance.eventLoopUtilization" | "performance.getEntries" | "performance.getEntriesByName" | "performance.getEntriesByType" | "performance.mark" | "performance.markResourceTiming" | "performance.measure" | "performance.nodeTiming" | "performance.nodeTiming.bootstrapComplete" | "performance.nodeTiming.environment" | "performance.nodeTiming.idleTime" | "performance.nodeTiming.loopExit" | "performance.nodeTiming.loopStart" | "performance.nodeTiming.nodeStart" | "performance.nodeTiming.uvMetricsInfo" | "performance.nodeTiming.v8Start" | "performance.now" | "performance.onresourcetimingbufferfull" | "performance.setResourceTimingBufferSize" | "performance.timeOrigin" | "performance.timerify" | "performance.toJSON" | "process" | "process.allowedNodeEnvironmentFlags" | "process.availableMemory" | "process.arch" | "process.argv" | "process.argv0" | "process.channel" | "process.config" | "process.connected" | "process.debugPort" | "process.env" | "process.execArgv" | "process.execPath" | "process.exitCode" | "process.features.cached_builtins" | "process.features.debug" | "process.features.inspector" | "process.features.ipv6" | "process.features.require_module" | "process.features.tls" | "process.features.tls_alpn" | "process.features.tls_ocsp" | "process.features.tls_sni" | "process.features.typescript" | "process.features.uv" | "process.finalization.register" | "process.finalization.registerBeforeExit" | "process.finalization.unregister" | "process.getBuiltinModule" | "process.mainModule" | "process.noDeprecation" | "process.permission" | "process.pid" | "process.platform" | "process.ppid" | "process.release" | "process.report" | "process.report.excludeEnv" | "process.sourceMapsEnabled" | "process.stdin" | "process.stdin.isRaw" | "process.stdin.isTTY" | "process.stdin.setRawMode" | "process.stdout" | "process.stdout.clearLine" | "process.stdout.clearScreenDown" | "process.stdout.columns" | "process.stdout.cursorTo" | "process.stdout.getColorDepth" | "process.stdout.getWindowSize" | "process.stdout.hasColors" | "process.stdout.isTTY" | "process.stdout.moveCursor" | "process.stdout.rows" | "process.stderr" | "process.stderr.clearLine" | "process.stderr.clearScreenDown" | "process.stderr.columns" | "process.stderr.cursorTo" | "process.stderr.getColorDepth" | "process.stderr.getWindowSize" | "process.stderr.hasColors" | "process.stderr.isTTY" | "process.stderr.moveCursor" | "process.stderr.rows" | "process.throwDeprecation" | "process.title" | "process.traceDeprecation" | "process.version" | "process.versions" | "process.abort" | "process.chdir" | "process.constrainedMemory" | "process.cpuUsage" | "process.cwd" | "process.disconnect" | "process.dlopen" | "process.emitWarning" | "process.exit" | "process.getActiveResourcesInfo" | "process.getegid" | "process.geteuid" | "process.getgid" | "process.getgroups" | "process.getuid" | "process.hasUncaughtExceptionCaptureCallback" | "process.hrtime" | "process.hrtime.bigint" | "process.initgroups" | "process.kill" | "process.loadEnvFile" | "process.memoryUsage" | "process.rss" | "process.nextTick" | "process.resourceUsage" | "process.send" | "process.setegid" | "process.seteuid" | "process.setgid" | "process.setgroups" | "process.setuid" | "process.setSourceMapsEnabled" | "process.setUncaughtExceptionCaptureCallback" | "process.umask" | "process.uptime" | "ReadableStream" | "ReadableStream.from" | "ReadableStreamDefaultReader" | "ReadableStreamBYOBReader" | "ReadableStreamDefaultController" | "ReadableByteStreamController" | "ReadableStreamBYOBRequest" | "WritableStream" | "WritableStreamDefaultWriter" | "WritableStreamDefaultController" | "TransformStream" | "TransformStreamDefaultController" | "ByteLengthQueuingStrategy" | "CountQueuingStrategy" | "TextEncoderStream" | "TextDecoderStream" | "CompressionStream" | "DecompressionStream" | "setInterval" | "clearInterval" | "setTimeout" | "clearTimeout" | "setImmediate" | "clearImmediate" | "URL" | "URL.canParse" | "URL.createObjectURL" | "URL.revokeObjectURL" | "URLSearchParams" | "TextDecoder" | "TextEncoder" | "BroadcastChannel" | "MessageChannel" | "MessagePort" | "assert" | "assert.assert" | "assert.deepEqual" | "assert.deepStrictEqual" | "assert.doesNotMatch" | "assert.doesNotReject" | "assert.doesNotThrow" | "assert.equal" | "assert.fail" | "assert.ifError" | "assert.match" | "assert.notDeepEqual" | "assert.notDeepStrictEqual" | "assert.notEqual" | "assert.notStrictEqual" | "assert.ok" | "assert.rejects" | "assert.strictEqual" | "assert.throws" | "assert.CallTracker" | "assert.strict" | "assert.strict.assert" | "assert.strict.deepEqual" | "assert.strict.deepStrictEqual" | "assert.strict.doesNotMatch" | "assert.strict.doesNotReject" | "assert.strict.doesNotThrow" | "assert.strict.equal" | "assert.strict.fail" | "assert.strict.ifError" | "assert.strict.match" | "assert.strict.notDeepEqual" | "assert.strict.notDeepStrictEqual" | "assert.strict.notEqual" | "assert.strict.notStrictEqual" | "assert.strict.ok" | "assert.strict.rejects" | "assert.strict.strictEqual" | "assert.strict.throws" | "assert.strict.CallTracker" | "assert/strict" | "assert/strict.assert" | "assert/strict.deepEqual" | "assert/strict.deepStrictEqual" | "assert/strict.doesNotMatch" | "assert/strict.doesNotReject" | "assert/strict.doesNotThrow" | "assert/strict.equal" | "assert/strict.fail" | "assert/strict.ifError" | "assert/strict.match" | "assert/strict.notDeepEqual" | "assert/strict.notDeepStrictEqual" | "assert/strict.notEqual" | "assert/strict.notStrictEqual" | "assert/strict.ok" | "assert/strict.rejects" | "assert/strict.strictEqual" | "assert/strict.throws" | "assert/strict.CallTracker" | "async_hooks" | "async_hooks.createHook" | "async_hooks.executionAsyncResource" | "async_hooks.executionAsyncId" | "async_hooks.triggerAsyncId" | "async_hooks.AsyncLocalStorage" | "async_hooks.AsyncLocalStorage.bind" | "async_hooks.AsyncLocalStorage.snapshot" | "async_hooks.AsyncResource" | "async_hooks.AsyncResource.bind" | "buffer" | "buffer.constants" | "buffer.INSPECT_MAX_BYTES" | "buffer.kMaxLength" | "buffer.kStringMaxLength" | "buffer.atob" | "buffer.btoa" | "buffer.isAscii" | "buffer.isUtf8" | "buffer.resolveObjectURL" | "buffer.transcode" | "buffer.SlowBuffer" | "buffer.Blob" | "new buffer.Buffer()" | "buffer.Buffer" | "buffer.Buffer.alloc" | "buffer.Buffer.allocUnsafe" | "buffer.Buffer.allocUnsafeSlow" | "buffer.Buffer.byteLength" | "buffer.Buffer.compare" | "buffer.Buffer.concat" | "buffer.Buffer.copyBytesFrom" | "buffer.Buffer.from" | "buffer.Buffer.isBuffer" | "buffer.Buffer.isEncoding" | "buffer.File" | "child_process" | "child_process.exec" | "child_process.execFile" | "child_process.fork" | "child_process.spawn" | "child_process.execFileSync" | "child_process.execSync" | "child_process.spawnSync" | "child_process.ChildProcess" | "cluster" | "cluster.isMaster" | "cluster.isPrimary" | "cluster.isWorker" | "cluster.schedulingPolicy" | "cluster.settings" | "cluster.worker" | "cluster.workers" | "cluster.disconnect" | "cluster.fork" | "cluster.setupMaster" | "cluster.setupPrimary" | "cluster.Worker" | "crypto.constants" | "crypto.fips" | "crypto.webcrypto" | "crypto.webcrypto.subtle" | "crypto.webcrypto.subtle.decrypt" | "crypto.webcrypto.subtle.deriveBits" | "crypto.webcrypto.subtle.deriveKey" | "crypto.webcrypto.subtle.digest" | "crypto.webcrypto.subtle.encrypt" | "crypto.webcrypto.subtle.exportKey" | "crypto.webcrypto.subtle.generateKey" | "crypto.webcrypto.subtle.importKey" | "crypto.webcrypto.subtle.sign" | "crypto.webcrypto.subtle.unwrapKey" | "crypto.webcrypto.subtle.verify" | "crypto.webcrypto.subtle.wrapKey" | "crypto.webcrypto.getRandomValues" | "crypto.webcrypto.randomUUID" | "crypto.checkPrime" | "crypto.checkPrimeSync" | "crypto.createCipher" | "crypto.createCipheriv" | "crypto.createDecipher" | "crypto.createDecipheriv" | "crypto.createDiffieHellman" | "crypto.createDiffieHellmanGroup" | "crypto.createECDH" | "crypto.createHash" | "crypto.createHmac" | "crypto.createPrivateKey" | "crypto.createPublicKey" | "crypto.createSecretKey" | "crypto.createSign" | "crypto.createVerify" | "crypto.diffieHellman" | "crypto.generateKey" | "crypto.generateKeyPair" | "crypto.generateKeyPairSync" | "crypto.generateKeySync" | "crypto.generatePrime" | "crypto.generatePrimeSync" | "crypto.getCipherInfo" | "crypto.getCiphers" | "crypto.getCurves" | "crypto.getDiffieHellman" | "crypto.getFips" | "crypto.getHashes" | "crypto.hash" | "crypto.hkdf" | "crypto.hkdfSync" | "crypto.pbkdf2" | "crypto.pbkdf2Sync" | "crypto.privateDecrypt" | "crypto.privateEncrypt" | "crypto.publicDecrypt" | "crypto.publicEncrypt" | "crypto.randomBytes" | "crypto.randomFillSync" | "crypto.randomFill" | "crypto.randomInt" | "crypto.scrypt" | "crypto.scryptSync" | "crypto.secureHeapUsed" | "crypto.setEngine" | "crypto.setFips" | "crypto.sign" | "crypto.timingSafeEqual" | "crypto.verify" | "crypto.Certificate" | "crypto.Certificate.exportChallenge" | "crypto.Certificate.exportPublicKey" | "crypto.Certificate.verifySpkac" | "crypto.Cipher" | "crypto.Decipher" | "crypto.DiffieHellman" | "crypto.DiffieHellmanGroup" | "crypto.ECDH" | "crypto.ECDH.convertKey" | "crypto.Hash()" | "new crypto.Hash()" | "crypto.Hash" | "crypto.Hmac()" | "new crypto.Hmac()" | "crypto.Hmac" | "crypto.KeyObject" | "crypto.KeyObject.from" | "crypto.Sign" | "crypto.Verify" | "crypto.X509Certificate" | "dgram" | "dgram.createSocket" | "dgram.Socket" | "diagnostics_channel" | "diagnostics_channel.hasSubscribers" | "diagnostics_channel.channel" | "diagnostics_channel.subscribe" | "diagnostics_channel.unsubscribe" | "diagnostics_channel.tracingChannel" | "diagnostics_channel.Channel" | "diagnostics_channel.TracingChannel" | "dns" | "dns.Resolver" | "dns.getServers" | "dns.lookup" | "dns.lookupService" | "dns.resolve" | "dns.resolve4" | "dns.resolve6" | "dns.resolveAny" | "dns.resolveCname" | "dns.resolveCaa" | "dns.resolveMx" | "dns.resolveNaptr" | "dns.resolveNs" | "dns.resolvePtr" | "dns.resolveSoa" | "dns.resolveSrv" | "dns.resolveTxt" | "dns.reverse" | "dns.setDefaultResultOrder" | "dns.getDefaultResultOrder" | "dns.setServers" | "dns.promises" | "dns.promises.Resolver" | "dns.promises.cancel" | "dns.promises.getServers" | "dns.promises.lookup" | "dns.promises.lookupService" | "dns.promises.resolve" | "dns.promises.resolve4" | "dns.promises.resolve6" | "dns.promises.resolveAny" | "dns.promises.resolveCaa" | "dns.promises.resolveCname" | "dns.promises.resolveMx" | "dns.promises.resolveNaptr" | "dns.promises.resolveNs" | "dns.promises.resolvePtr" | "dns.promises.resolveSoa" | "dns.promises.resolveSrv" | "dns.promises.resolveTxt" | "dns.promises.reverse" | "dns.promises.setDefaultResultOrder" | "dns.promises.getDefaultResultOrder" | "dns.promises.setServers" | "dns/promises" | "dns/promises.Resolver" | "dns/promises.cancel" | "dns/promises.getServers" | "dns/promises.lookup" | "dns/promises.lookupService" | "dns/promises.resolve" | "dns/promises.resolve4" | "dns/promises.resolve6" | "dns/promises.resolveAny" | "dns/promises.resolveCaa" | "dns/promises.resolveCname" | "dns/promises.resolveMx" | "dns/promises.resolveNaptr" | "dns/promises.resolveNs" | "dns/promises.resolvePtr" | "dns/promises.resolveSoa" | "dns/promises.resolveSrv" | "dns/promises.resolveTxt" | "dns/promises.reverse" | "dns/promises.setDefaultResultOrder" | "dns/promises.getDefaultResultOrder" | "dns/promises.setServers" | "domain" | "domain.create" | "domain.Domain" | "events" | "events.Event" | "events.EventTarget" | "events.CustomEvent" | "events.NodeEventTarget" | "events.EventEmitter" | "events.EventEmitter.defaultMaxListeners" | "events.EventEmitter.errorMonitor" | "events.EventEmitter.captureRejections" | "events.EventEmitter.captureRejectionSymbol" | "events.EventEmitter.getEventListeners" | "events.EventEmitter.getMaxListeners" | "events.EventEmitter.once" | "events.EventEmitter.listenerCount" | "events.EventEmitter.on" | "events.EventEmitter.setMaxListeners" | "events.EventEmitter.addAbortListener" | "events.EventEmitterAsyncResource" | "events.EventEmitterAsyncResource.defaultMaxListeners" | "events.EventEmitterAsyncResource.errorMonitor" | "events.EventEmitterAsyncResource.captureRejections" | "events.EventEmitterAsyncResource.captureRejectionSymbol" | "events.EventEmitterAsyncResource.getEventListeners" | "events.EventEmitterAsyncResource.getMaxListeners" | "events.EventEmitterAsyncResource.once" | "events.EventEmitterAsyncResource.listenerCount" | "events.EventEmitterAsyncResource.on" | "events.EventEmitterAsyncResource.setMaxListeners" | "events.EventEmitterAsyncResource.addAbortListener" | "events.defaultMaxListeners" | "events.errorMonitor" | "events.captureRejections" | "events.captureRejectionSymbol" | "events.getEventListeners" | "events.getMaxListeners" | "events.once" | "events.listenerCount" | "events.on" | "events.setMaxListeners" | "events.addAbortListener" | "fs" | "fs.promises" | "fs.promises.FileHandle" | "fs.promises.access" | "fs.promises.appendFile" | "fs.promises.chmod" | "fs.promises.chown" | "fs.promises.constants" | "fs.promises.copyFile" | "fs.promises.cp" | "fs.promises.glob" | "fs.promises.lchmod" | "fs.promises.lchown" | "fs.promises.link" | "fs.promises.lstat" | "fs.promises.lutimes" | "fs.promises.mkdir" | "fs.promises.mkdtemp" | "fs.promises.open" | "fs.promises.opendir" | "fs.promises.readFile" | "fs.promises.readdir" | "fs.promises.readlink" | "fs.promises.realpath" | "fs.promises.rename" | "fs.promises.rm" | "fs.promises.rmdir" | "fs.promises.stat" | "fs.promises.statfs" | "fs.promises.symlink" | "fs.promises.truncate" | "fs.promises.unlink" | "fs.promises.utimes" | "fs.promises.watch" | "fs.promises.writeFile" | "fs.access" | "fs.appendFile" | "fs.chmod" | "fs.chown" | "fs.close" | "fs.copyFile" | "fs.cp" | "fs.createReadStream" | "fs.createWriteStream" | "fs.exists" | "fs.fchmod" | "fs.fchown" | "fs.fdatasync" | "fs.fstat" | "fs.fsync" | "fs.ftruncate" | "fs.futimes" | "fs.glob" | "fs.lchmod" | "fs.lchown" | "fs.link" | "fs.lstat" | "fs.lutimes" | "fs.mkdir" | "fs.mkdtemp" | "fs.native" | "fs.open" | "fs.openAsBlob" | "fs.opendir" | "fs.read" | "fs.readdir" | "fs.readFile" | "fs.readlink" | "fs.readv" | "fs.realpath" | "fs.realpath.native" | "fs.rename" | "fs.rm" | "fs.rmdir" | "fs.stat" | "fs.statfs" | "fs.symlink" | "fs.truncate" | "fs.unlink" | "fs.unwatchFile" | "fs.utimes" | "fs.watch" | "fs.watchFile" | "fs.write" | "fs.writeFile" | "fs.writev" | "fs.accessSync" | "fs.appendFileSync" | "fs.chmodSync" | "fs.chownSync" | "fs.closeSync" | "fs.copyFileSync" | "fs.cpSync" | "fs.existsSync" | "fs.fchmodSync" | "fs.fchownSync" | "fs.fdatasyncSync" | "fs.fstatSync" | "fs.fsyncSync" | "fs.ftruncateSync" | "fs.futimesSync" | "fs.globSync" | "fs.lchmodSync" | "fs.lchownSync" | "fs.linkSync" | "fs.lstatSync" | "fs.lutimesSync" | "fs.mkdirSync" | "fs.mkdtempSync" | "fs.opendirSync" | "fs.openSync" | "fs.readdirSync" | "fs.readFileSync" | "fs.readlinkSync" | "fs.readSync" | "fs.readvSync" | "fs.realpathSync" | "fs.realpathSync.native" | "fs.renameSync" | "fs.rmdirSync" | "fs.rmSync" | "fs.statfsSync" | "fs.statSync" | "fs.symlinkSync" | "fs.truncateSync" | "fs.unlinkSync" | "fs.utimesSync" | "fs.writeFileSync" | "fs.writeSync" | "fs.writevSync" | "fs.constants" | "fs.Dir" | "fs.Dirent" | "fs.FSWatcher" | "fs.StatWatcher" | "fs.ReadStream" | "fs.Stats()" | "new fs.Stats()" | "fs.Stats" | "fs.StatFs" | "fs.WriteStream" | "fs.common_objects" | "fs/promises" | "fs/promises.FileHandle" | "fs/promises.access" | "fs/promises.appendFile" | "fs/promises.chmod" | "fs/promises.chown" | "fs/promises.constants" | "fs/promises.copyFile" | "fs/promises.cp" | "fs/promises.glob" | "fs/promises.lchmod" | "fs/promises.lchown" | "fs/promises.link" | "fs/promises.lstat" | "fs/promises.lutimes" | "fs/promises.mkdir" | "fs/promises.mkdtemp" | "fs/promises.open" | "fs/promises.opendir" | "fs/promises.readFile" | "fs/promises.readdir" | "fs/promises.readlink" | "fs/promises.realpath" | "fs/promises.rename" | "fs/promises.rm" | "fs/promises.rmdir" | "fs/promises.stat" | "fs/promises.statfs" | "fs/promises.symlink" | "fs/promises.truncate" | "fs/promises.unlink" | "fs/promises.utimes" | "fs/promises.watch" | "fs/promises.writeFile" | "http2" | "http2.constants" | "http2.sensitiveHeaders" | "http2.createServer" | "http2.createSecureServer" | "http2.connect" | "http2.getDefaultSettings" | "http2.getPackedSettings" | "http2.getUnpackedSettings" | "http2.performServerHandshake" | "http2.Http2Session" | "http2.ServerHttp2Session" | "http2.ClientHttp2Session" | "http2.Http2Stream" | "http2.ClientHttp2Stream" | "http2.ServerHttp2Stream" | "http2.Http2Server" | "http2.Http2SecureServer" | "http2.Http2ServerRequest" | "http2.Http2ServerResponse" | "http" | "http.globalAgent" | "http.createServer" | "http.get" | "http.request" | "http.Agent" | "http.Server" | "inspector" | "inspector.Session" | "inspector.Network.loadingFailed" | "inspector.Network.loadingFinished" | "inspector.Network.requestWillBeSent" | "inspector.Network.responseReceived" | "inspector.console" | "inspector.close" | "inspector.open" | "inspector.url" | "inspector.waitForDebugger" | "inspector/promises" | "inspector/promises.Session" | "inspector/promises.Network.loadingFailed" | "inspector/promises.Network.loadingFinished" | "inspector/promises.Network.requestWillBeSent" | "inspector/promises.Network.responseReceived" | "inspector/promises.console" | "inspector/promises.close" | "inspector/promises.open" | "inspector/promises.url" | "inspector/promises.waitForDebugger" | "module.builtinModules" | "module.constants.compileCacheStatus" | "module.createRequire" | "module.createRequireFromPath" | "module.enableCompileCache" | "module.findPackageJSON" | "module.flushCompileCache" | "module.getCompileCacheDir" | "module.isBuiltin" | "module.register" | "module.stripTypeScriptTypes" | "module.syncBuiltinESMExports" | "module.findSourceMap" | "module.SourceMap" | "module.Module.builtinModules" | "module.Module.createRequire" | "module.Module.createRequireFromPath" | "module.Module.enableCompileCache" | "module.Module.findPackageJSON" | "module.Module.flushCompileCache" | "module.Module.getCompileCacheDir" | "module.Module.isBuiltin" | "module.Module.register" | "module.Module.stripTypeScriptTypes" | "module.Module.syncBuiltinESMExports" | "module.Module.findSourceMap" | "module.Module.SourceMap" | "net" | "net.connect" | "net.createConnection" | "net.createServer" | "net.getDefaultAutoSelectFamily" | "net.setDefaultAutoSelectFamily" | "net.getDefaultAutoSelectFamilyAttemptTimeout" | "net.setDefaultAutoSelectFamilyAttemptTimeout" | "net.isIP" | "net.isIPv4" | "net.isIPv6" | "net.BlockList" | "net.SocketAddress" | "net.Server" | "net.Socket" | "os" | "os.EOL" | "os.constants" | "os.constants.priority" | "os.devNull" | "os.availableParallelism" | "os.arch" | "os.cpus" | "os.endianness" | "os.freemem" | "os.getPriority" | "os.homedir" | "os.hostname" | "os.loadavg" | "os.machine" | "os.networkInterfaces" | "os.platform" | "os.release" | "os.setPriority" | "os.tmpdir" | "os.totalmem" | "os.type" | "os.uptime" | "os.userInfo" | "os.version" | "path" | "path.posix" | "path.posix.delimiter" | "path.posix.sep" | "path.posix.basename" | "path.posix.dirname" | "path.posix.extname" | "path.posix.format" | "path.posix.matchesGlob" | "path.posix.isAbsolute" | "path.posix.join" | "path.posix.normalize" | "path.posix.parse" | "path.posix.relative" | "path.posix.resolve" | "path.posix.toNamespacedPath" | "path.win32" | "path.win32.delimiter" | "path.win32.sep" | "path.win32.basename" | "path.win32.dirname" | "path.win32.extname" | "path.win32.format" | "path.win32.matchesGlob" | "path.win32.isAbsolute" | "path.win32.join" | "path.win32.normalize" | "path.win32.parse" | "path.win32.relative" | "path.win32.resolve" | "path.win32.toNamespacedPath" | "path.delimiter" | "path.sep" | "path.basename" | "path.dirname" | "path.extname" | "path.format" | "path.matchesGlob" | "path.isAbsolute" | "path.join" | "path.normalize" | "path.parse" | "path.relative" | "path.resolve" | "path.toNamespacedPath" | "path/posix" | "path/posix.delimiter" | "path/posix.sep" | "path/posix.basename" | "path/posix.dirname" | "path/posix.extname" | "path/posix.format" | "path/posix.matchesGlob" | "path/posix.isAbsolute" | "path/posix.join" | "path/posix.normalize" | "path/posix.parse" | "path/posix.relative" | "path/posix.resolve" | "path/posix.toNamespacedPath" | "path/win32" | "path/win32.delimiter" | "path/win32.sep" | "path/win32.basename" | "path/win32.dirname" | "path/win32.extname" | "path/win32.format" | "path/win32.matchesGlob" | "path/win32.isAbsolute" | "path/win32.join" | "path/win32.normalize" | "path/win32.parse" | "path/win32.relative" | "path/win32.resolve" | "path/win32.toNamespacedPath" | "perf_hooks" | "perf_hooks.performance" | "perf_hooks.performance.clearMarks" | "perf_hooks.performance.clearMeasures" | "perf_hooks.performance.clearResourceTimings" | "perf_hooks.performance.eventLoopUtilization" | "perf_hooks.performance.getEntries" | "perf_hooks.performance.getEntriesByName" | "perf_hooks.performance.getEntriesByType" | "perf_hooks.performance.mark" | "perf_hooks.performance.markResourceTiming" | "perf_hooks.performance.measure" | "perf_hooks.performance.nodeTiming" | "perf_hooks.performance.nodeTiming.bootstrapComplete" | "perf_hooks.performance.nodeTiming.environment" | "perf_hooks.performance.nodeTiming.idleTime" | "perf_hooks.performance.nodeTiming.loopExit" | "perf_hooks.performance.nodeTiming.loopStart" | "perf_hooks.performance.nodeTiming.nodeStart" | "perf_hooks.performance.nodeTiming.uvMetricsInfo" | "perf_hooks.performance.nodeTiming.v8Start" | "perf_hooks.performance.now" | "perf_hooks.performance.onresourcetimingbufferfull" | "perf_hooks.performance.setResourceTimingBufferSize" | "perf_hooks.performance.timeOrigin" | "perf_hooks.performance.timerify" | "perf_hooks.performance.toJSON" | "perf_hooks.createHistogram" | "perf_hooks.monitorEventLoopDelay" | "perf_hooks.PerformanceEntry" | "perf_hooks.PerformanceMark" | "perf_hooks.PerformanceMeasure" | "perf_hooks.PerformanceNodeEntry" | "perf_hooks.PerformanceNodeTiming" | "perf_hooks.PerformanceResourceTiming" | "perf_hooks.PerformanceObserver" | "perf_hooks.PerformanceObserverEntryList" | "perf_hooks.Histogram" | "perf_hooks.IntervalHistogram" | "perf_hooks.RecordableHistogram" | "punycode" | "punycode.ucs2" | "punycode.version" | "punycode.decode" | "punycode.encode" | "punycode.toASCII" | "punycode.toUnicode" | "querystring" | "querystring.decode" | "querystring.encode" | "querystring.escape" | "querystring.parse" | "querystring.stringify" | "querystring.unescape" | "readline" | "readline.promises" | "readline.promises.createInterface" | "readline.promises.Interface" | "readline.promises.Readline" | "readline.clearLine" | "readline.clearScreenDown" | "readline.createInterface" | "readline.cursorTo" | "readline.moveCursor" | "readline.Interface" | "readline.emitKeypressEvents" | "readline.InterfaceConstructor" | "readline/promises" | "readline/promises.createInterface" | "readline/promises.Interface" | "readline/promises.Readline" | "repl" | "repl.start" | "repl.writer" | "repl.REPLServer()" | "repl.REPLServer" | "repl.REPL_MODE_MAGIC" | "repl.REPL_MODE_SLOPPY" | "repl.REPL_MODE_STRICT" | "repl.Recoverable()" | "repl.Recoverable" | "repl.builtinModules" | "sea" | "sea.isSea" | "sea.getAsset" | "sea.getAssetAsBlob" | "sea.getRawAsset" | "sea.sea.isSea" | "sea.sea.getAsset" | "sea.sea.getAssetAsBlob" | "sea.sea.getRawAsset" | "stream" | "stream.promises" | "stream.promises.pipeline" | "stream.promises.finished" | "stream.finished" | "stream.pipeline" | "stream.compose" | "stream.duplexPair" | "stream.Readable" | "stream.Readable.from" | "stream.Readable.isDisturbed" | "stream.Readable.fromWeb" | "stream.Readable.toWeb" | "stream.Writable" | "stream.Writable.fromWeb" | "stream.Writable.toWeb" | "stream.Duplex" | "stream.Duplex.from" | "stream.Duplex.fromWeb" | "stream.Duplex.toWeb" | "stream.Transform" | "stream.isErrored" | "stream.isReadable" | "stream.addAbortSignal" | "stream.getDefaultHighWaterMark" | "stream.setDefaultHighWaterMark" | "stream/promises.pipeline" | "stream/promises.finished" | "stream/web" | "stream/web.ReadableStream" | "stream/web.ReadableStream.from" | "stream/web.ReadableStreamDefaultReader" | "stream/web.ReadableStreamBYOBReader" | "stream/web.ReadableStreamDefaultController" | "stream/web.ReadableByteStreamController" | "stream/web.ReadableStreamBYOBRequest" | "stream/web.WritableStream" | "stream/web.WritableStreamDefaultWriter" | "stream/web.WritableStreamDefaultController" | "stream/web.TransformStream" | "stream/web.TransformStreamDefaultController" | "stream/web.ByteLengthQueuingStrategy" | "stream/web.CountQueuingStrategy" | "stream/web.TextEncoderStream" | "stream/web.TextDecoderStream" | "stream/web.CompressionStream" | "stream/web.DecompressionStream" | "stream/consumers" | "stream/consumers.arrayBuffer" | "stream/consumers.blob" | "stream/consumers.buffer" | "stream/consumers.json" | "stream/consumers.text" | "string_decoder" | "string_decoder.StringDecoder" | "test" | "test.after" | "test.afterEach" | "test.before" | "test.beforeEach" | "test.describe" | "test.describe.only" | "test.describe.skip" | "test.describe.todo" | "test.it" | "test.it.only" | "test.it.skip" | "test.it.todo" | "test.mock" | "test.mock.fn" | "test.mock.getter" | "test.mock.method" | "test.mock.module" | "test.mock.reset" | "test.mock.restoreAll" | "test.mock.setter" | "test.mock.timers" | "test.mock.timers.enable" | "test.mock.timers.reset" | "test.mock.timers.tick" | "test.only" | "test.run" | "test.snapshot" | "test.snapshot.setDefaultSnapshotSerializers" | "test.snapshot.setResolveSnapshotPath" | "test.skip" | "test.suite" | "test.test" | "test.test.only" | "test.test.skip" | "test.test.todo" | "test.todo" | "timers" | "timers.Immediate" | "timers.Timeout" | "timers.setImmediate" | "timers.clearImmediate" | "timers.setInterval" | "timers.clearInterval" | "timers.setTimeout" | "timers.clearTimeout" | "timers.promises" | "timers.promises.setTimeout" | "timers.promises.setImmediate" | "timers.promises.setInterval" | "timers.promises.scheduler.wait" | "timers.promises.scheduler.yield" | "timers/promises" | "timers/promises.setTimeout" | "timers/promises.setImmediate" | "timers/promises.setInterval" | "timers/promises.scheduler.wait" | "timers/promises.scheduler.yield" | "tls" | "tls.rootCertificates" | "tls.DEFAULT_ECDH_CURVE" | "tls.DEFAULT_MAX_VERSION" | "tls.DEFAULT_MIN_VERSION" | "tls.DEFAULT_CIPHERS" | "tls.checkServerIdentity" | "tls.connect" | "tls.createSecureContext" | "tls.createSecurePair" | "tls.createServer" | "tls.getCiphers" | "tls.SecureContext" | "tls.CryptoStream" | "tls.SecurePair" | "tls.Server" | "tls.TLSSocket" | "trace_events" | "trace_events.createTracing" | "trace_events.getEnabledCategories" | "tty" | "tty.isatty" | "tty.ReadStream" | "tty.WriteStream" | "url" | "url.domainToASCII" | "url.domainToUnicode" | "url.fileURLToPath" | "url.format" | "url.pathToFileURL" | "url.urlToHttpOptions" | "url.URL" | "url.URL.canParse" | "url.URL.createObjectURL" | "url.URL.revokeObjectURL" | "url.URLSearchParams" | "url.Url" | "util.promisify" | "util.promisify.custom" | "util.callbackify" | "util.debuglog" | "util.debug" | "util.deprecate" | "util.format" | "util.formatWithOptions" | "util.getCallSite" | "util.getCallSites" | "util.getSystemErrorName" | "util.getSystemErrorMap" | "util.getSystemErrorMessage" | "util.inherits" | "util.inspect" | "util.inspect.custom" | "util.inspect.defaultOptions" | "util.inspect.replDefaults" | "util.isDeepStrictEqual" | "util.parseArgs" | "util.parseEnv" | "util.stripVTControlCharacters" | "util.styleText" | "util.toUSVString" | "util.transferableAbortController" | "util.transferableAbortSignal" | "util.aborted" | "util.MIMEType" | "util.MIMEParams" | "util.TextDecoder" | "util.TextEncoder" | "util.types" | "util.types.isExternal" | "util.types.isDate" | "util.types.isArgumentsObject" | "util.types.isBigIntObject" | "util.types.isBooleanObject" | "util.types.isNumberObject" | "util.types.isStringObject" | "util.types.isSymbolObject" | "util.types.isNativeError" | "util.types.isRegExp" | "util.types.isAsyncFunction" | "util.types.isGeneratorFunction" | "util.types.isGeneratorObject" | "util.types.isPromise" | "util.types.isMap" | "util.types.isSet" | "util.types.isMapIterator" | "util.types.isSetIterator" | "util.types.isWeakMap" | "util.types.isWeakSet" | "util.types.isArrayBuffer" | "util.types.isDataView" | "util.types.isSharedArrayBuffer" | "util.types.isProxy" | "util.types.isModuleNamespaceObject" | "util.types.isAnyArrayBuffer" | "util.types.isBoxedPrimitive" | "util.types.isArrayBufferView" | "util.types.isTypedArray" | "util.types.isUint8Array" | "util.types.isUint8ClampedArray" | "util.types.isUint16Array" | "util.types.isUint32Array" | "util.types.isInt8Array" | "util.types.isInt16Array" | "util.types.isInt32Array" | "util.types.isFloat32Array" | "util.types.isFloat64Array" | "util.types.isBigInt64Array" | "util.types.isBigUint64Array" | "util.types.isKeyObject" | "util.types.isCryptoKey" | "util.types.isWebAssemblyCompiledModule" | "util._extend" | "util.isArray" | "util.isBoolean" | "util.isBuffer" | "util.isDate" | "util.isError" | "util.isFunction" | "util.isNull" | "util.isNullOrUndefined" | "util.isNumber" | "util.isObject" | "util.isPrimitive" | "util.isRegExp" | "util.isString" | "util.isSymbol" | "util.isUndefined" | "util.log" | "util" | "util/types" | "util/types.isExternal" | "util/types.isDate" | "util/types.isArgumentsObject" | "util/types.isBigIntObject" | "util/types.isBooleanObject" | "util/types.isNumberObject" | "util/types.isStringObject" | "util/types.isSymbolObject" | "util/types.isNativeError" | "util/types.isRegExp" | "util/types.isAsyncFunction" | "util/types.isGeneratorFunction" | "util/types.isGeneratorObject" | "util/types.isPromise" | "util/types.isMap" | "util/types.isSet" | "util/types.isMapIterator" | "util/types.isSetIterator" | "util/types.isWeakMap" | "util/types.isWeakSet" | "util/types.isArrayBuffer" | "util/types.isDataView" | "util/types.isSharedArrayBuffer" | "util/types.isProxy" | "util/types.isModuleNamespaceObject" | "util/types.isAnyArrayBuffer" | "util/types.isBoxedPrimitive" | "util/types.isArrayBufferView" | "util/types.isTypedArray" | "util/types.isUint8Array" | "util/types.isUint8ClampedArray" | "util/types.isUint16Array" | "util/types.isUint32Array" | "util/types.isInt8Array" | "util/types.isInt16Array" | "util/types.isInt32Array" | "util/types.isFloat32Array" | "util/types.isFloat64Array" | "util/types.isBigInt64Array" | "util/types.isBigUint64Array" | "util/types.isKeyObject" | "util/types.isCryptoKey" | "util/types.isWebAssemblyCompiledModule" | "v8" | "v8.serialize" | "v8.deserialize" | "v8.Serializer" | "v8.Deserializer" | "v8.DefaultSerializer" | "v8.DefaultDeserializer" | "v8.promiseHooks" | "v8.promiseHooks.onInit" | "v8.promiseHooks.onSettled" | "v8.promiseHooks.onBefore" | "v8.promiseHooks.onAfter" | "v8.promiseHooks.createHook" | "v8.startupSnapshot" | "v8.startupSnapshot.addSerializeCallback" | "v8.startupSnapshot.addDeserializeCallback" | "v8.startupSnapshot.setDeserializeMainFunction" | "v8.startupSnapshot.isBuildingSnapshot" | "v8.cachedDataVersionTag" | "v8.getHeapCodeStatistics" | "v8.getHeapSnapshot" | "v8.getHeapSpaceStatistics" | "v8.getHeapStatistics" | "v8.queryObjects" | "v8.setFlagsFromString" | "v8.stopCoverage" | "v8.takeCoverage" | "v8.writeHeapSnapshot" | "v8.setHeapSnapshotNearHeapLimit" | "v8.GCProfiler" | "vm.constants" | "vm.compileFunction" | "vm.createContext" | "vm.isContext" | "vm.measureMemory" | "vm.runInContext" | "vm.runInNewContext" | "vm.runInThisContext" | "vm.Script" | "vm.Module" | "vm.SourceTextModule" | "vm.SyntheticModule" | "vm" | "wasi.WASI" | "wasi" | "worker_threads" | "worker_threads.isMainThread" | "worker_threads.parentPort" | "worker_threads.resourceLimits" | "worker_threads.SHARE_ENV" | "worker_threads.threadId" | "worker_threads.workerData" | "worker_threads.getEnvironmentData" | "worker_threads.markAsUncloneable" | "worker_threads.markAsUntransferable" | "worker_threads.isMarkedAsUntransferable" | "worker_threads.moveMessagePortToContext" | "worker_threads.postMessageToThread" | "worker_threads.receiveMessageOnPort" | "worker_threads.setEnvironmentData" | "worker_threads.BroadcastChannel" | "worker_threads.MessageChannel" | "worker_threads.MessagePort" | "worker_threads.Worker" | "zlib.constants" | "zlib.crc32" | "zlib.createBrotliCompress" | "zlib.createBrotliDecompress" | "zlib.createDeflate" | "zlib.createDeflateRaw" | "zlib.createGunzip" | "zlib.createGzip" | "zlib.createInflate" | "zlib.createInflateRaw" | "zlib.createUnzip" | "zlib.brotliCompress" | "zlib.brotliCompressSync" | "zlib.brotliDecompress" | "zlib.brotliDecompressSync" | "zlib.deflate" | "zlib.deflateSync" | "zlib.deflateRaw" | "zlib.deflateRawSync" | "zlib.gunzip" | "zlib.gunzipSync" | "zlib.gzip" | "zlib.gzipSync" | "zlib.inflate" | "zlib.inflateSync" | "zlib.inflateRaw" | "zlib.inflateRawSync" | "zlib.unzip" | "zlib.unzipSync" | "zlib.BrotliCompress()" | "zlib.BrotliCompress" | "zlib.BrotliDecompress()" | "zlib.BrotliDecompress" | "zlib.Deflate()" | "zlib.Deflate" | "zlib.DeflateRaw()" | "zlib.DeflateRaw" | "zlib.Gunzip()" | "zlib.Gunzip" | "zlib.Gzip()" | "zlib.Gzip" | "zlib.Inflate()" | "zlib.Inflate" | "zlib.InflateRaw()" | "zlib.InflateRaw" | "zlib.Unzip()" | "zlib.Unzip" | "zlib")[] -}] -// ----- n/prefer-global/buffer ----- -type NPreferGlobalBuffer = []|[("always" | "never")] -// ----- n/prefer-global/console ----- -type NPreferGlobalConsole = []|[("always" | "never")] -// ----- n/prefer-global/process ----- -type NPreferGlobalProcess = []|[("always" | "never")] -// ----- n/prefer-global/text-decoder ----- -type NPreferGlobalTextDecoder = []|[("always" | "never")] -// ----- n/prefer-global/text-encoder ----- -type NPreferGlobalTextEncoder = []|[("always" | "never")] -// ----- n/prefer-global/url ----- -type NPreferGlobalUrl = []|[("always" | "never")] -// ----- n/prefer-global/url-search-params ----- -type NPreferGlobalUrlSearchParams = []|[("always" | "never")] -// ----- n/prefer-node-protocol ----- -type NPreferNodeProtocol = []|[{ - version?: string -}] -// ----- n/shebang ----- -type NShebang = []|[{ - convertPath?: ({ + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) | { + + block?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) - [k: string]: [string, string] - } | [{ + line?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) + }) + + partitionByNewLine?: boolean + + newlinesBetween?: ("ignore" | "always" | "never") + + internalPattern?: (({ - include: [string, ...(string)[]] - exclude?: string[] + pattern: string - replace: [string, string] - }, ...({ + flags?: string + } | string)[] | ({ - include: [string, ...(string)[]] - exclude?: string[] + pattern: string - replace: [string, string] - })[]]) - ignoreUnpublished?: boolean - additionalExecutables?: string[] - executableMap?: { - [k: string]: string - } -}] -// ----- new-cap ----- -type NewCap = []|[{ - newIsCap?: boolean - capIsNew?: boolean - newIsCapExceptions?: string[] - newIsCapExceptionPattern?: string - capIsNewExceptions?: string[] - capIsNewExceptionPattern?: string - properties?: boolean -}] -// ----- new-parens ----- -type NewParens = []|[("always" | "never")] -// ----- newline-after-var ----- -type NewlineAfterVar = []|[("never" | "always")] -// ----- newline-per-chained-call ----- -type NewlinePerChainedCall = []|[{ - ignoreChainWithDepth?: number -}] -// ----- no-bitwise ----- -type NoBitwise = []|[{ - allow?: ("^" | "|" | "&" | "<<" | ">>" | ">>>" | "^=" | "|=" | "&=" | "<<=" | ">>=" | ">>>=" | "~")[] - int32Hint?: boolean -}] -// ----- no-cond-assign ----- -type NoCondAssign = []|[("except-parens" | "always")] -// ----- no-confusing-arrow ----- -type NoConfusingArrow = []|[{ - allowParens?: boolean - onlyOneSimpleParam?: boolean -}] -// ----- no-console ----- -type NoConsole = []|[{ + flags?: string + } | string)) - allow?: [string, ...(string)[]] -}] -// ----- no-constant-condition ----- -type NoConstantCondition = []|[{ - checkLoops?: ("all" | "allExceptWhileTrue" | "none" | true | false) -}] -// ----- no-duplicate-imports ----- -type NoDuplicateImports = []|[{ - includeExports?: boolean -}] -// ----- no-else-return ----- -type NoElseReturn = []|[{ - allowElseIf?: boolean -}] -// ----- no-empty ----- -type NoEmpty = []|[{ - allowEmptyCatch?: boolean -}] -// ----- no-empty-function ----- -type NoEmptyFunction = []|[{ - allow?: ("functions" | "arrowFunctions" | "generatorFunctions" | "methods" | "generatorMethods" | "getters" | "setters" | "constructors" | "asyncFunctions" | "asyncMethods")[] -}] -// ----- no-empty-pattern ----- -type NoEmptyPattern = []|[{ - allowObjectPatternsAsParameters?: boolean -}] -// ----- no-eval ----- -type NoEval = []|[{ - allowIndirect?: boolean -}] -// ----- no-extend-native ----- -type NoExtendNative = []|[{ - exceptions?: string[] -}] -// ----- no-extra-boolean-cast ----- -type NoExtraBooleanCast = []|[({ - enforceForInnerExpressions?: boolean -} | { - enforceForLogicalOperands?: boolean -})] -// ----- no-extra-parens ----- -type NoExtraParens = ([]|["functions"] | []|["all"]|["all", { - conditionalAssign?: boolean - ternaryOperandBinaryExpressions?: boolean - nestedBinaryExpressions?: boolean - returnAssign?: boolean - ignoreJSX?: ("none" | "all" | "single-line" | "multi-line") - enforceForArrowConditionals?: boolean - enforceForSequenceExpressions?: boolean - enforceForNewInMemberExpressions?: boolean - enforceForFunctionPrototypeMethods?: boolean - allowParensAfterCommentPattern?: string -}]) -// ----- no-fallthrough ----- -type NoFallthrough = []|[{ - commentPattern?: string - allowEmptyCase?: boolean - reportUnusedFallthroughComment?: boolean -}] -// ----- no-global-assign ----- -type NoGlobalAssign = []|[{ - exceptions?: string[] -}] -// ----- no-implicit-coercion ----- -type NoImplicitCoercion = []|[{ - boolean?: boolean - number?: boolean - string?: boolean - disallowTemplateShorthand?: boolean - allow?: ("~" | "!!" | "+" | "- -" | "-" | "*")[] -}] -// ----- no-implicit-globals ----- -type NoImplicitGlobals = []|[{ - lexicalBindings?: boolean -}] -// ----- no-inline-comments ----- -type NoInlineComments = []|[{ - ignorePattern?: string -}] -// ----- no-inner-declarations ----- -type NoInnerDeclarations = []|[("functions" | "both")]|[("functions" | "both"), { - blockScopedFunctions?: ("allow" | "disallow") -}] -// ----- no-invalid-regexp ----- -type NoInvalidRegexp = []|[{ - allowConstructorFlags?: string[] -}] -// ----- no-invalid-this ----- -type NoInvalidThis = []|[{ - capIsConstructor?: boolean -}] -// ----- no-irregular-whitespace ----- -type NoIrregularWhitespace = []|[{ - skipComments?: boolean - skipStrings?: boolean - skipTemplates?: boolean - skipRegExps?: boolean - skipJSXText?: boolean -}] -// ----- no-labels ----- -type NoLabels = []|[{ - allowLoop?: boolean - allowSwitch?: boolean -}] -// ----- no-magic-numbers ----- -type NoMagicNumbers = []|[{ - detectObjects?: boolean - enforceConst?: boolean - ignore?: (number | string)[] - ignoreArrayIndexes?: boolean - ignoreDefaultValues?: boolean - ignoreClassFieldInitialValues?: boolean -}] -// ----- no-misleading-character-class ----- -type NoMisleadingCharacterClass = []|[{ - allowEscape?: boolean -}] -// ----- no-mixed-operators ----- -type NoMixedOperators = []|[{ - groups?: [("+" | "-" | "*" | "/" | "%" | "**" | "&" | "|" | "^" | "~" | "<<" | ">>" | ">>>" | "==" | "!=" | "===" | "!==" | ">" | ">=" | "<" | "<=" | "&&" | "||" | "in" | "instanceof" | "?:" | "??"), ("+" | "-" | "*" | "/" | "%" | "**" | "&" | "|" | "^" | "~" | "<<" | ">>" | ">>>" | "==" | "!=" | "===" | "!==" | ">" | ">=" | "<" | "<=" | "&&" | "||" | "in" | "instanceof" | "?:" | "??"), ...(("+" | "-" | "*" | "/" | "%" | "**" | "&" | "|" | "^" | "~" | "<<" | ">>" | ">>>" | "==" | "!=" | "===" | "!==" | ">" | ">=" | "<" | "<=" | "&&" | "||" | "in" | "instanceof" | "?:" | "??"))[]][] - allowSamePrecedence?: boolean -}] -// ----- no-mixed-requires ----- -type NoMixedRequires = []|[(boolean | { - grouping?: boolean - allowCall?: boolean -})] -// ----- no-mixed-spaces-and-tabs ----- -type NoMixedSpacesAndTabs = []|[("smart-tabs" | true | false)] -// ----- no-multi-assign ----- -type NoMultiAssign = []|[{ - ignoreNonDeclaration?: boolean -}] -// ----- no-multi-spaces ----- -type NoMultiSpaces = []|[{ - exceptions?: { - [k: string]: boolean - } - ignoreEOLComments?: boolean -}] -// ----- no-multiple-empty-lines ----- -type NoMultipleEmptyLines = []|[{ - max: number - maxEOF?: number - maxBOF?: number -}] -// ----- no-native-reassign ----- -type NoNativeReassign = []|[{ - exceptions?: string[] -}] -// ----- no-param-reassign ----- -type NoParamReassign = []|[({ - props?: false -} | { - props?: true - ignorePropertyModificationsFor?: string[] - ignorePropertyModificationsForRegex?: string[] -})] -// ----- no-plusplus ----- -type NoPlusplus = []|[{ - allowForLoopAfterthoughts?: boolean -}] -// ----- no-promise-executor-return ----- -type NoPromiseExecutorReturn = []|[{ - allowVoid?: boolean -}] -// ----- no-redeclare ----- -type NoRedeclare = []|[{ - builtinGlobals?: boolean -}] -// ----- no-restricted-exports ----- -type NoRestrictedExports = []|[({ - restrictedNamedExports?: string[] - restrictedNamedExportsPattern?: string -} | { - restrictedNamedExports?: string[] - restrictedNamedExportsPattern?: string - restrictDefaultExports?: { - direct?: boolean - named?: boolean - defaultFrom?: boolean - namedFrom?: boolean - namespaceFrom?: boolean - } -})] -// ----- no-restricted-globals ----- -type NoRestrictedGlobals = (string | { - name: string - message?: string -})[] -// ----- no-restricted-imports ----- -type NoRestrictedImports = ((string | { - name: string - message?: string - importNames?: string[] - allowImportNames?: string[] -})[] | []|[{ - paths?: (string | { - name: string - message?: string - importNames?: string[] - allowImportNames?: string[] - })[] - patterns?: (string[] | ({ - [k: string]: unknown | undefined - } | { - [k: string]: unknown | undefined - })[]) -}]) -// ----- no-restricted-modules ----- -type NoRestrictedModules = ((string | { - name: string - message?: string -})[] | { - paths?: (string | { - name: string - message?: string + groups?: (string | string[] | { + + newlinesBetween: ("ignore" | "always" | "never") })[] - patterns?: string[] -}[]) -// ----- no-restricted-properties ----- -type NoRestrictedProperties = ({ - object: string - property?: string - message?: string -} | { - object?: string - property: string - message?: string -})[] -// ----- no-restricted-syntax ----- -type NoRestrictedSyntax = (string | { - selector: string - message?: string -})[] -// ----- no-return-assign ----- -type NoReturnAssign = []|[("except-parens" | "always")] -// ----- no-self-assign ----- -type NoSelfAssign = []|[{ - props?: boolean -}] -// ----- no-sequences ----- -type NoSequences = []|[{ - allowInParentheses?: boolean -}] -// ----- no-shadow ----- -type NoShadow = []|[{ - builtinGlobals?: boolean - hoist?: ("all" | "functions" | "never") - allow?: string[] - ignoreOnInitialization?: boolean -}] -// ----- no-sync ----- -type NoSync = []|[{ - allowAtRootLevel?: boolean -}] -// ----- no-tabs ----- -type NoTabs = []|[{ - allowIndentationTabs?: boolean -}] -// ----- no-trailing-spaces ----- -type NoTrailingSpaces = []|[{ - skipBlankLines?: boolean - ignoreComments?: boolean -}] -// ----- no-undef ----- -type NoUndef = []|[{ - typeof?: boolean -}] -// ----- no-underscore-dangle ----- -type NoUnderscoreDangle = []|[{ - allow?: string[] - allowAfterThis?: boolean - allowAfterSuper?: boolean - allowAfterThisConstructor?: boolean - enforceInMethodNames?: boolean - allowFunctionParams?: boolean - enforceInClassFields?: boolean - allowInArrayDestructuring?: boolean - allowInObjectDestructuring?: boolean -}] -// ----- no-unneeded-ternary ----- -type NoUnneededTernary = []|[{ - defaultAssignment?: boolean -}] -// ----- no-unreachable-loop ----- -type NoUnreachableLoop = []|[{ - ignore?: ("WhileStatement" | "DoWhileStatement" | "ForStatement" | "ForInStatement" | "ForOfStatement")[] -}] -// ----- no-unsafe-negation ----- -type NoUnsafeNegation = []|[{ - enforceForOrderingRelations?: boolean -}] -// ----- no-unsafe-optional-chaining ----- -type NoUnsafeOptionalChaining = []|[{ - disallowArithmeticOperators?: boolean -}] -// ----- no-unsanitized/method ----- -type NoUnsanitizedMethod = []|[{ - defaultDisable?: boolean - escape?: { - taggedTemplates?: []|[string] - methods?: []|[string] - [k: string]: unknown | undefined - } - objectMatches?: unknown[] - properties?: unknown[] - variableTracing?: boolean -}]|[{ - defaultDisable?: boolean - escape?: { - taggedTemplates?: []|[string] - methods?: []|[string] - [k: string]: unknown | undefined - } - objectMatches?: unknown[] - properties?: unknown[] - variableTracing?: boolean -}, { - [k: string]: unknown | undefined -}] -// ----- no-unsanitized/property ----- -type NoUnsanitizedProperty = []|[{ - escape?: { - taggedTemplates?: []|[string] - methods?: []|[string] - [k: string]: unknown | undefined - } - variableTracing?: boolean -}]|[{ - escape?: { - taggedTemplates?: []|[string] - methods?: []|[string] - [k: string]: unknown | undefined +}[] +// ----- perfectionist/sort-interfaces ----- +type PerfectionistSortInterfaces = { + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + sortBy?: ("name" | "value") } - variableTracing?: boolean -}, { - [k: string]: unknown | undefined -}] -// ----- no-unused-expressions ----- -type NoUnusedExpressions = []|[{ - allowShortCircuit?: boolean - allowTernary?: boolean - allowTaggedTemplates?: boolean - enforceForJSX?: boolean -}] -// ----- no-unused-vars ----- -type NoUnusedVars = []|[(("all" | "local") | { - vars?: ("all" | "local") - varsIgnorePattern?: string - args?: ("all" | "after-used" | "none") - ignoreRestSiblings?: boolean - argsIgnorePattern?: string - caughtErrors?: ("all" | "none") - caughtErrorsIgnorePattern?: string - destructuredArrayIgnorePattern?: string - ignoreClassWithStaticInitBlock?: boolean - reportUsedIgnorePattern?: boolean -})] -// ----- no-use-before-define ----- -type NoUseBeforeDefine = []|[("nofunc" | { - functions?: boolean - classes?: boolean - variables?: boolean - allowNamedExports?: boolean -})] -// ----- no-useless-computed-key ----- -type NoUselessComputedKey = []|[{ - enforceForClassMembers?: boolean -}] -// ----- no-useless-rename ----- -type NoUselessRename = []|[{ - ignoreDestructuring?: boolean - ignoreImport?: boolean - ignoreExport?: boolean -}] -// ----- no-void ----- -type NoVoid = []|[{ - allowAsStatement?: boolean -}] -// ----- no-warning-comments ----- -type NoWarningComments = []|[{ - terms?: string[] - location?: ("start" | "anywhere") - decoration?: [string, ...(string)[]] -}] -// ----- nonblock-statement-body-position ----- -type NonblockStatementBodyPosition = []|[("beside" | "below" | "any")]|[("beside" | "below" | "any"), { - overrides?: { - if?: ("beside" | "below" | "any") - else?: ("beside" | "below" | "any") - while?: ("beside" | "below" | "any") - do?: ("beside" | "below" | "any") - for?: ("beside" | "below" | "any") + specialCharacters?: ("remove" | "trim" | "keep") + + ignoreCase?: boolean + + alphabet?: string + + locales?: (string | string[]) + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + customGroups?: ({ + [k: string]: (string | string[]) | undefined + } | ({ + + newlinesInside?: ("always" | "never") + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + sortBy?: ("name" | "value") + } + + groupName: string + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + anyOf?: { + + modifiers?: ("optional" | "required" | "multiline")[] + + selector?: ("index-signature" | "member" | "method" | "multiline" | "property") + + elementValuePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + sortBy?: ("name" | "value") + }[] + } | { + + newlinesInside?: ("always" | "never") + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + sortBy?: ("name" | "value") + } + + groupName: string + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + + modifiers?: ("optional" | "required" | "multiline")[] + + selector?: ("index-signature" | "member" | "method" | "multiline" | "property") + + elementValuePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + sortBy?: ("name" | "value") + })[]) + + groupKind?: ("mixed" | "required-first" | "optional-first") + + useConfigurationIf?: { + + allNamesMatchPattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + + declarationMatchesPattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) } -}] -// ----- object-curly-newline ----- -type ObjectCurlyNewline = []|[((("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean -}) | { - ObjectExpression?: (("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean - }) - ObjectPattern?: (("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean - }) - ImportDeclaration?: (("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean + + partitionByComment?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) | { + + block?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) + + line?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) }) - ExportDeclaration?: (("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean + + partitionByNewLine?: boolean + + newlinesBetween?: ("ignore" | "always" | "never") + + ignorePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + sortBy?: ("name" | "value") + + groups?: (string | string[] | { + + newlinesBetween: ("ignore" | "always" | "never") + })[] +}[] +// ----- perfectionist/sort-intersection-types ----- +type PerfectionistSortIntersectionTypes = { + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } + + specialCharacters?: ("remove" | "trim" | "keep") + + ignoreCase?: boolean + + alphabet?: string + + locales?: (string | string[]) + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + + customGroups?: ({ + + newlinesInside?: ("always" | "never") + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } + + groupName: string + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + anyOf?: { + + selector?: ("intersection" | "conditional" | "function" | "operator" | "keyword" | "literal" | "nullish" | "import" | "object" | "named" | "tuple" | "union") + + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + }[] + } | { + + newlinesInside?: ("always" | "never") + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } + + groupName: string + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + + selector?: ("intersection" | "conditional" | "function" | "operator" | "keyword" | "literal" | "nullish" | "import" | "object" | "named" | "tuple" | "union") + + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + })[] + + partitionByComment?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) | { + + block?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) + + line?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) }) -})] -// ----- object-curly-spacing ----- -type ObjectCurlySpacing = []|[("always" | "never")]|[("always" | "never"), { - arraysInObjects?: boolean - objectsInObjects?: boolean -}] -// ----- object-property-newline ----- -type ObjectPropertyNewline = []|[{ - allowAllPropertiesOnSameLine?: boolean - allowMultiplePropertiesPerLine?: boolean -}] -// ----- object-shorthand ----- -type ObjectShorthand = ([]|[("always" | "methods" | "properties" | "never" | "consistent" | "consistent-as-needed")] | []|[("always" | "methods" | "properties")]|[("always" | "methods" | "properties"), { - avoidQuotes?: boolean -}] | []|[("always" | "methods")]|[("always" | "methods"), { - ignoreConstructors?: boolean - methodsIgnorePattern?: string - avoidQuotes?: boolean - avoidExplicitReturnArrows?: boolean -}]) -// ----- one-var ----- -type OneVar = []|[(("always" | "never" | "consecutive") | { - separateRequires?: boolean - var?: ("always" | "never" | "consecutive") - let?: ("always" | "never" | "consecutive") - const?: ("always" | "never" | "consecutive") -} | { - initialized?: ("always" | "never" | "consecutive") - uninitialized?: ("always" | "never" | "consecutive") -})] -// ----- one-var-declaration-per-line ----- -type OneVarDeclarationPerLine = []|[("always" | "initializations")] -// ----- operator-assignment ----- -type OperatorAssignment = []|[("always" | "never")] -// ----- operator-linebreak ----- -type OperatorLinebreak = []|[("after" | "before" | "none" | null)]|[("after" | "before" | "none" | null), { - overrides?: { - [k: string]: ("after" | "before" | "none" | "ignore") | undefined + + partitionByNewLine?: boolean + + newlinesBetween?: ("ignore" | "always" | "never") + + groups?: (string | string[] | { + + newlinesBetween: ("ignore" | "always" | "never") + })[] +}[] +// ----- perfectionist/sort-jsx-props ----- +type PerfectionistSortJsxProps = { + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } + + specialCharacters?: ("remove" | "trim" | "keep") + + ignoreCase?: boolean + + alphabet?: string + + locales?: (string | string[]) + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + customGroups?: ({ + [k: string]: (string | string[]) | undefined + } | ({ + + newlinesInside?: ("always" | "never") + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } + + groupName: string + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + anyOf?: { + + modifiers?: ("shorthand" | "multiline")[] + + selector?: ("multiline" | "prop" | "shorthand") + + elementValuePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + }[] + } | { + + newlinesInside?: ("always" | "never") + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } + + groupName: string + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + + modifiers?: ("shorthand" | "multiline")[] + + selector?: ("multiline" | "prop" | "shorthand") + + elementValuePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + })[]) + + useConfigurationIf?: { + + allNamesMatchPattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + + tagMatchesPattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) } -}] -// ----- padded-blocks ----- -type PaddedBlocks = []|[(("always" | "never") | { - blocks?: ("always" | "never") - switches?: ("always" | "never") - classes?: ("always" | "never") -})]|[(("always" | "never") | { - blocks?: ("always" | "never") - switches?: ("always" | "never") - classes?: ("always" | "never") -}), { - allowSingleLineBlocks?: boolean -}] -// ----- padding-line-between-statements ----- -type _PaddingLineBetweenStatementsPaddingType = ("any" | "never" | "always") -type _PaddingLineBetweenStatementsStatementType = (("*" | "block-like" | "cjs-export" | "cjs-import" | "directive" | "expression" | "iife" | "multiline-block-like" | "multiline-expression" | "multiline-const" | "multiline-let" | "multiline-var" | "singleline-const" | "singleline-let" | "singleline-var" | "block" | "empty" | "function" | "break" | "case" | "class" | "const" | "continue" | "debugger" | "default" | "do" | "export" | "for" | "if" | "import" | "let" | "return" | "switch" | "throw" | "try" | "var" | "while" | "with") | [("*" | "block-like" | "cjs-export" | "cjs-import" | "directive" | "expression" | "iife" | "multiline-block-like" | "multiline-expression" | "multiline-const" | "multiline-let" | "multiline-var" | "singleline-const" | "singleline-let" | "singleline-var" | "block" | "empty" | "function" | "break" | "case" | "class" | "const" | "continue" | "debugger" | "default" | "do" | "export" | "for" | "if" | "import" | "let" | "return" | "switch" | "throw" | "try" | "var" | "while" | "with"), ...(("*" | "block-like" | "cjs-export" | "cjs-import" | "directive" | "expression" | "iife" | "multiline-block-like" | "multiline-expression" | "multiline-const" | "multiline-let" | "multiline-var" | "singleline-const" | "singleline-let" | "singleline-var" | "block" | "empty" | "function" | "break" | "case" | "class" | "const" | "continue" | "debugger" | "default" | "do" | "export" | "for" | "if" | "import" | "let" | "return" | "switch" | "throw" | "try" | "var" | "while" | "with"))[]]) -type PaddingLineBetweenStatements = { - blankLine: _PaddingLineBetweenStatementsPaddingType - prev: _PaddingLineBetweenStatementsStatementType - next: _PaddingLineBetweenStatementsStatementType + + partitionByNewLine?: boolean + + newlinesBetween?: ("ignore" | "always" | "never") + + ignorePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + + groups?: (string | string[] | { + + newlinesBetween: ("ignore" | "always" | "never") + })[] }[] -// ----- perfectionist/sort-array-includes ----- -type PerfectionistSortArrayIncludes = { +// ----- perfectionist/sort-maps ----- +type PerfectionistSortMaps = { - partitionByComment?: (string[] | boolean | string | { - block?: (string[] | boolean | string) - line?: (string[] | boolean | string) - [k: string]: unknown | undefined - }) + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } - groupKind?: ("mixed" | "literals-first" | "spreads-first") + specialCharacters?: ("remove" | "trim" | "keep") + + ignoreCase?: boolean + + alphabet?: string + + locales?: (string | string[]) + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") customGroups?: ({ - groupName?: string + newlinesInside?: ("always" | "never") + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } - type?: ("alphabetical" | "line-length" | "natural" | "unsorted") + groupName: string - order?: ("desc" | "asc") + order?: ("asc" | "desc") - newlinesInside?: ("always" | "never") + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") anyOf?: { - selector?: ("literal" | "spread") - - elementNamePattern?: string + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) }[] } | { - groupName?: string + newlinesInside?: ("always" | "never") - type?: ("alphabetical" | "line-length" | "natural" | "unsorted") + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } - order?: ("desc" | "asc") + groupName: string - newlinesInside?: ("always" | "never") + order?: ("asc" | "desc") - selector?: ("literal" | "spread") + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - elementNamePattern?: string + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) })[] + useConfigurationIf?: { - allNamesMatchPattern?: string + + allNamesMatchPattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) } - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + partitionByComment?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) | { + + block?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) + + line?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) + }) partitionByNewLine?: boolean + newlinesBetween?: ("ignore" | "always" | "never") + + groups?: (string | string[] | { + + newlinesBetween: ("ignore" | "always" | "never") + })[] +}[] +// ----- perfectionist/sort-modules ----- +type PerfectionistSortModules = []|[{ + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } + specialCharacters?: ("remove" | "trim" | "keep") ignoreCase?: boolean @@ -14201,169 +13132,297 @@ type PerfectionistSortArrayIncludes = { locales?: (string | string[]) - groups?: (string | string[] | { - - newlinesBetween?: ("ignore" | "always" | "never") - [k: string]: unknown | undefined - })[] - order?: ("asc" | "desc") -}[] -// ----- perfectionist/sort-classes ----- -type PerfectionistSortClasses = []|[{ - ignoreCallbackDependenciesPatterns?: string[] - - partitionByComment?: (string[] | boolean | string | { - block?: (string[] | boolean | string) - line?: (string[] | boolean | string) - [k: string]: unknown | undefined - }) + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") customGroups?: ({ - groupName?: string + newlinesInside?: ("always" | "never") + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } - type?: ("alphabetical" | "line-length" | "natural" | "unsorted") + groupName: string - order?: ("desc" | "asc") + order?: ("asc" | "desc") - newlinesInside?: ("always" | "never") + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") anyOf?: { - elementValuePattern?: string - - decoratorNamePattern?: string + modifiers?: ("async" | "declare" | "decorated" | "default" | "export")[] - modifiers?: ("async" | "protected" | "private" | "public" | "static" | "abstract" | "override" | "readonly" | "decorated" | "declare" | "optional")[] + selector?: ("enum" | "function" | "interface" | "type" | "class") - selector?: ("accessor-property" | "index-signature" | "constructor" | "static-block" | "get-method" | "set-method" | "function-property" | "property" | "method") + decoratorNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) - elementNamePattern?: string + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) }[] } | { - groupName?: string + newlinesInside?: ("always" | "never") - type?: ("alphabetical" | "line-length" | "natural" | "unsorted") + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } - order?: ("desc" | "asc") + groupName: string - newlinesInside?: ("always" | "never") + order?: ("asc" | "desc") - elementValuePattern?: string + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - decoratorNamePattern?: string + modifiers?: ("async" | "declare" | "decorated" | "default" | "export")[] - modifiers?: ("async" | "protected" | "private" | "public" | "static" | "abstract" | "override" | "readonly" | "decorated" | "declare" | "optional")[] + selector?: ("enum" | "function" | "interface" | "type" | "class") - selector?: ("accessor-property" | "index-signature" | "constructor" | "static-block" | "get-method" | "set-method" | "function-property" | "property" | "method") + decoratorNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) - elementNamePattern?: string + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) })[] - partitionByNewLine?: boolean + partitionByComment?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) | { + + block?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) + + line?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) + }) - specialCharacters?: ("remove" | "trim" | "keep") + partitionByNewLine?: boolean newlinesBetween?: ("ignore" | "always" | "never") - ignoreCase?: boolean - - alphabet?: string - - type?: ("alphabetical" | "natural" | "line-length" | "custom") - - locales?: (string | string[]) - groups?: (string | string[] | { - newlinesBetween?: ("ignore" | "always" | "never") - [k: string]: unknown | undefined + newlinesBetween: ("ignore" | "always" | "never") })[] - - order?: ("asc" | "desc") }] -// ----- perfectionist/sort-decorators ----- -type PerfectionistSortDecorators = []|[{ - - partitionByComment?: (string[] | boolean | string | { - block?: (string[] | boolean | string) - line?: (string[] | boolean | string) - [k: string]: unknown | undefined - }) - - sortOnParameters?: boolean - - sortOnProperties?: boolean - - sortOnAccessors?: boolean - - sortOnMethods?: boolean +// ----- perfectionist/sort-named-exports ----- +type PerfectionistSortNamedExports = { - sortOnClasses?: boolean + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } specialCharacters?: ("remove" | "trim" | "keep") - customGroups?: { - [k: string]: (string | string[]) | undefined - } - ignoreCase?: boolean alphabet?: string - type?: ("alphabetical" | "natural" | "line-length" | "custom") - locales?: (string | string[]) - groups?: (string | string[] | { + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + + groupKind?: ("mixed" | "values-first" | "types-first") + + ignoreAlias?: boolean + + customGroups?: ({ - newlinesBetween?: ("ignore" | "always" | "never") - [k: string]: unknown | undefined + newlinesInside?: ("always" | "never") + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } + + groupName: string + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + anyOf?: { + + modifiers?: ("value" | "type")[] + + selector?: "export" + + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + }[] + } | { + + newlinesInside?: ("always" | "never") + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } + + groupName: string + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + + modifiers?: ("value" | "type")[] + + selector?: "export" + + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) })[] - order?: ("asc" | "desc") -}] -// ----- perfectionist/sort-enums ----- -type PerfectionistSortEnums = []|[{ - - partitionByComment?: (string[] | boolean | string | { - block?: (string[] | boolean | string) - line?: (string[] | boolean | string) - [k: string]: unknown | undefined + partitionByComment?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) | { + + block?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) + + line?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) }) - forceNumericSort?: boolean - - sortByValue?: boolean - partitionByNewLine?: boolean - specialCharacters?: ("remove" | "trim" | "keep") - - ignoreCase?: boolean - - alphabet?: string - - type?: ("alphabetical" | "natural" | "line-length" | "custom") - - locales?: (string | string[]) - - order?: ("asc" | "desc") -}] -// ----- perfectionist/sort-exports ----- -type PerfectionistSortExports = []|[{ - - partitionByComment?: (string[] | boolean | string | { - block?: (string[] | boolean | string) - line?: (string[] | boolean | string) - [k: string]: unknown | undefined - }) + newlinesBetween?: ("ignore" | "always" | "never") - groupKind?: ("mixed" | "values-first" | "types-first") + groups?: (string | string[] | { + + newlinesBetween: ("ignore" | "always" | "never") + })[] +}[] +// ----- perfectionist/sort-named-imports ----- +type PerfectionistSortNamedImports = { - partitionByNewLine?: boolean + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } specialCharacters?: ("remove" | "trim" | "keep") @@ -14371,239 +13430,347 @@ type PerfectionistSortExports = []|[{ alphabet?: string - type?: ("alphabetical" | "natural" | "line-length" | "custom") - locales?: (string | string[]) order?: ("asc" | "desc") -}] -// ----- perfectionist/sort-heritage-clauses ----- -type PerfectionistSortHeritageClauses = []|[{ - - specialCharacters?: ("remove" | "trim" | "keep") - - customGroups?: { - [k: string]: (string | string[]) | undefined - } - ignoreCase?: boolean - - alphabet?: string + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - type?: ("alphabetical" | "natural" | "line-length" | "custom") + groupKind?: ("mixed" | "values-first" | "types-first") - locales?: (string | string[]) + ignoreAlias?: boolean - groups?: (string | string[] | { + customGroups?: ({ - newlinesBetween?: ("ignore" | "always" | "never") - [k: string]: unknown | undefined - })[] - - order?: ("asc" | "desc") -}] -// ----- perfectionist/sort-imports ----- -type PerfectionistSortImports = []|[_PerfectionistSortImportsSortImports] -type _PerfectionistSortImportsSortImports = (_PerfectionistSortImportsMaxLineLengthRequiresLineLengthType & { - - customGroups?: { + newlinesInside?: ("always" | "never") - value?: { - [k: string]: unknown | undefined + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") } - type?: { - [k: string]: unknown | undefined + groupName: string + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + anyOf?: { + + modifiers?: ("value" | "type")[] + + selector?: "import" + + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + }[] + } | { + + newlinesInside?: ("always" | "never") + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") } - } + + groupName: string + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + + modifiers?: ("value" | "type")[] + + selector?: "import" + + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + })[] - partitionByComment?: (string[] | boolean | string | { - block?: (string[] | boolean | string) - line?: (string[] | boolean | string) - [k: string]: unknown | undefined + partitionByComment?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) | { + + block?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) + + line?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) }) - internalPattern?: string[] - - maxLineLength?: number - - sortSideEffects?: boolean + partitionByNewLine?: boolean - environment?: ("node" | "bun") + newlinesBetween?: ("ignore" | "always" | "never") - tsconfigRootDir?: string + groups?: (string | string[] | { + + newlinesBetween: ("ignore" | "always" | "never") + })[] +}[] +// ----- perfectionist/sort-object-types ----- +type PerfectionistSortObjectTypes = { - partitionByNewLine?: boolean + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + sortBy?: ("name" | "value") + } specialCharacters?: ("remove" | "trim" | "keep") - newlinesBetween?: ("ignore" | "always" | "never") - ignoreCase?: boolean alphabet?: string - type?: ("alphabetical" | "natural" | "line-length" | "custom") - locales?: (string | string[]) - groups?: (string | string[] | { - - newlinesBetween?: ("ignore" | "always" | "never") - [k: string]: unknown | undefined - })[] - order?: ("asc" | "desc") -}) -type _PerfectionistSortImportsMaxLineLengthRequiresLineLengthType = ({ - [k: string]: unknown | undefined -} | _PerfectionistSortImports_IsLineLength) -interface _PerfectionistSortImports_IsLineLength { - type: "line-length" - [k: string]: unknown | undefined -} -// ----- perfectionist/sort-interfaces ----- -type PerfectionistSortInterfaces = { - - ignorePattern?: string[] - useConfigurationIf?: { - allNamesMatchPattern?: string - declarationMatchesPattern?: string - } - partitionByComment?: (string[] | boolean | string | { - block?: (string[] | boolean | string) - line?: (string[] | boolean | string) - [k: string]: unknown | undefined - }) + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") customGroups?: ({ [k: string]: (string | string[]) | undefined } | ({ - groupName?: string + newlinesInside?: ("always" | "never") + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + sortBy?: ("name" | "value") + } - type?: ("alphabetical" | "line-length" | "natural" | "unsorted") + groupName: string - order?: ("desc" | "asc") + order?: ("asc" | "desc") - newlinesInside?: ("always" | "never") + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") anyOf?: { modifiers?: ("optional" | "required" | "multiline")[] selector?: ("index-signature" | "member" | "method" | "multiline" | "property") - elementNamePattern?: string + elementValuePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + sortBy?: ("name" | "value") }[] } | { - groupName?: string + newlinesInside?: ("always" | "never") + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + sortBy?: ("name" | "value") + } - type?: ("alphabetical" | "line-length" | "natural" | "unsorted") + groupName: string - order?: ("desc" | "asc") + order?: ("asc" | "desc") - newlinesInside?: ("always" | "never") + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") modifiers?: ("optional" | "required" | "multiline")[] selector?: ("index-signature" | "member" | "method" | "multiline" | "property") - elementNamePattern?: string + elementValuePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + sortBy?: ("name" | "value") })[]) groupKind?: ("mixed" | "required-first" | "optional-first") - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - partitionByNewLine?: boolean - - specialCharacters?: ("remove" | "trim" | "keep") - - newlinesBetween?: ("ignore" | "always" | "never") - - ignoreCase?: boolean - - alphabet?: string - - locales?: (string | string[]) - - groups?: (string | string[] | { + useConfigurationIf?: { - newlinesBetween?: ("ignore" | "always" | "never") - [k: string]: unknown | undefined - })[] - - order?: ("asc" | "desc") -}[] -// ----- perfectionist/sort-intersection-types ----- -type PerfectionistSortIntersectionTypes = []|[{ + allNamesMatchPattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + + declarationMatchesPattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + } - partitionByComment?: (string[] | boolean | string | { - block?: (string[] | boolean | string) - line?: (string[] | boolean | string) - [k: string]: unknown | undefined + partitionByComment?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) | { + + block?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) + + line?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) }) partitionByNewLine?: boolean - specialCharacters?: ("remove" | "trim" | "keep") - newlinesBetween?: ("ignore" | "always" | "never") - ignoreCase?: boolean - - alphabet?: string - - type?: ("alphabetical" | "natural" | "line-length" | "custom") - - locales?: (string | string[]) - - groups?: (string | string[] | { + ignorePattern?: (({ - newlinesBetween?: ("ignore" | "always" | "never") - [k: string]: unknown | undefined - })[] - - order?: ("asc" | "desc") -}] -// ----- perfectionist/sort-jsx-props ----- -type PerfectionistSortJsxProps = []|[{ - - ignorePattern?: string[] - - specialCharacters?: ("remove" | "trim" | "keep") - - customGroups?: { - [k: string]: (string | string[]) | undefined - } - - ignoreCase?: boolean - - alphabet?: string - - type?: ("alphabetical" | "natural" | "line-length" | "custom") - - locales?: (string | string[]) - - groups?: (string | string[] | { + pattern: string - newlinesBetween?: ("ignore" | "always" | "never") - [k: string]: unknown | undefined - })[] - - order?: ("asc" | "desc") -}] -// ----- perfectionist/sort-maps ----- -type PerfectionistSortMaps = []|[{ + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + sortBy?: ("name" | "value") - partitionByComment?: (string[] | boolean | string | { - block?: (string[] | boolean | string) - line?: (string[] | boolean | string) - [k: string]: unknown | undefined - }) + groups?: (string | string[] | { + + newlinesBetween: ("ignore" | "always" | "never") + })[] +}[] +// ----- perfectionist/sort-objects ----- +type PerfectionistSortObjects = { - partitionByNewLine?: boolean + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } specialCharacters?: ("remove" | "trim" | "keep") @@ -14611,120 +13778,210 @@ type PerfectionistSortMaps = []|[{ alphabet?: string - type?: ("alphabetical" | "natural" | "line-length" | "custom") - locales?: (string | string[]) order?: ("asc" | "desc") -}] -// ----- perfectionist/sort-modules ----- -type PerfectionistSortModules = []|[{ - partitionByComment?: (string[] | boolean | string | { - block?: (string[] | boolean | string) - line?: (string[] | boolean | string) - [k: string]: unknown | undefined - }) + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + destructuredObjects?: (boolean | { + + groups?: boolean + }) customGroups?: ({ + [k: string]: (string | string[]) | undefined + } | ({ + + newlinesInside?: ("always" | "never") - groupName?: string + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } - type?: ("alphabetical" | "line-length" | "natural" | "unsorted") + groupName: string - order?: ("desc" | "asc") + order?: ("asc" | "desc") - newlinesInside?: ("always" | "never") + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") anyOf?: { - decoratorNamePattern?: string + modifiers?: ("optional" | "required" | "multiline")[] - modifiers?: ("async" | "declare" | "decorated" | "default" | "export")[] + selector?: ("member" | "method" | "multiline" | "property") - selector?: ("enum" | "function" | "interface" | "type" | "class") + elementValuePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) - elementNamePattern?: string + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) }[] } | { - groupName?: string + newlinesInside?: ("always" | "never") - type?: ("alphabetical" | "line-length" | "natural" | "unsorted") + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } - order?: ("desc" | "asc") + groupName: string - newlinesInside?: ("always" | "never") + order?: ("asc" | "desc") - decoratorNamePattern?: string + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - modifiers?: ("async" | "declare" | "decorated" | "default" | "export")[] + modifiers?: ("optional" | "required" | "multiline")[] - selector?: ("enum" | "function" | "interface" | "type" | "class") + selector?: ("member" | "method" | "multiline" | "property") - elementNamePattern?: string - })[] - - partitionByNewLine?: boolean - - specialCharacters?: ("remove" | "trim" | "keep") - - newlinesBetween?: ("ignore" | "always" | "never") + elementValuePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + })[]) - ignoreCase?: boolean + useConfigurationIf?: { + + allNamesMatchPattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + + callingFunctionNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + } - alphabet?: string + destructureOnly?: boolean - type?: ("alphabetical" | "natural" | "line-length" | "custom") + objectDeclarations?: boolean - locales?: (string | string[]) + styledComponents?: boolean - groups?: (string | string[] | { + partitionByComment?: (boolean | (({ - newlinesBetween?: ("ignore" | "always" | "never") - [k: string]: unknown | undefined - })[] - - order?: ("asc" | "desc") -}] -// ----- perfectionist/sort-named-exports ----- -type PerfectionistSortNamedExports = []|[{ - - partitionByComment?: (string[] | boolean | string | { - block?: (string[] | boolean | string) - line?: (string[] | boolean | string) - [k: string]: unknown | undefined + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) | { + + block?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) + + line?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) }) - groupKind?: ("mixed" | "values-first" | "types-first") - partitionByNewLine?: boolean - specialCharacters?: ("remove" | "trim" | "keep") - - ignoreCase?: boolean - - alphabet?: string - - type?: ("alphabetical" | "natural" | "line-length" | "custom") - - locales?: (string | string[]) - - order?: ("asc" | "desc") -}] -// ----- perfectionist/sort-named-imports ----- -type PerfectionistSortNamedImports = []|[{ - - partitionByComment?: (string[] | boolean | string | { - block?: (string[] | boolean | string) - line?: (string[] | boolean | string) - [k: string]: unknown | undefined - }) + newlinesBetween?: ("ignore" | "always" | "never") - groupKind?: ("mixed" | "values-first" | "types-first") + ignorePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) - ignoreAlias?: boolean + groups?: (string | string[] | { + + newlinesBetween: ("ignore" | "always" | "never") + })[] +}[] +// ----- perfectionist/sort-sets ----- +type PerfectionistSortSets = { - partitionByNewLine?: boolean + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } specialCharacters?: ("remove" | "trim" | "keep") @@ -14732,204 +13989,302 @@ type PerfectionistSortNamedImports = []|[{ alphabet?: string - type?: ("alphabetical" | "natural" | "line-length" | "custom") - locales?: (string | string[]) order?: ("asc" | "desc") -}] -// ----- perfectionist/sort-object-types ----- -type PerfectionistSortObjectTypes = { - ignorePattern?: string[] - useConfigurationIf?: { - allNamesMatchPattern?: string - declarationMatchesPattern?: string - } + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + + groupKind?: ("mixed" | "literals-first" | "spreads-first") - partitionByComment?: (string[] | boolean | string | { - block?: (string[] | boolean | string) - line?: (string[] | boolean | string) - [k: string]: unknown | undefined - }) customGroups?: ({ - [k: string]: (string | string[]) | undefined - } | ({ - groupName?: string + newlinesInside?: ("always" | "never") + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } - type?: ("alphabetical" | "line-length" | "natural" | "unsorted") + groupName: string - order?: ("desc" | "asc") + order?: ("asc" | "desc") - newlinesInside?: ("always" | "never") + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") anyOf?: { - modifiers?: ("optional" | "required" | "multiline")[] - - selector?: ("index-signature" | "member" | "method" | "multiline" | "property") + selector?: ("literal" | "spread") - elementNamePattern?: string + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) }[] } | { - groupName?: string + newlinesInside?: ("always" | "never") - type?: ("alphabetical" | "line-length" | "natural" | "unsorted") + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } - order?: ("desc" | "asc") + groupName: string - newlinesInside?: ("always" | "never") + order?: ("asc" | "desc") - modifiers?: ("optional" | "required" | "multiline")[] + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - selector?: ("index-signature" | "member" | "method" | "multiline" | "property") + selector?: ("literal" | "spread") - elementNamePattern?: string - })[]) + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + })[] - groupKind?: ("mixed" | "required-first" | "optional-first") + useConfigurationIf?: { + + allNamesMatchPattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + } - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + partitionByComment?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) | { + + block?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) + + line?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) + }) partitionByNewLine?: boolean - specialCharacters?: ("remove" | "trim" | "keep") - newlinesBetween?: ("ignore" | "always" | "never") - ignoreCase?: boolean - - alphabet?: string - - locales?: (string | string[]) - groups?: (string | string[] | { - newlinesBetween?: ("ignore" | "always" | "never") - [k: string]: unknown | undefined + newlinesBetween: ("ignore" | "always" | "never") })[] - - order?: ("asc" | "desc") }[] -// ----- perfectionist/sort-objects ----- -type PerfectionistSortObjects = { +// ----- perfectionist/sort-switch-case ----- +type PerfectionistSortSwitchCase = []|[{ - destructuredObjects?: (boolean | { + fallbackSort?: { - groups?: boolean - }) - - ignorePattern?: string[] - useConfigurationIf?: { - allNamesMatchPattern?: string - callingFunctionNamePattern?: string + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") } - partitionByComment?: (string[] | boolean | string | { - block?: (string[] | boolean | string) - line?: (string[] | boolean | string) - [k: string]: unknown | undefined - }) + specialCharacters?: ("remove" | "trim" | "keep") - destructureOnly?: boolean + ignoreCase?: boolean - objectDeclarations?: boolean + alphabet?: string - styledComponents?: boolean + locales?: (string | string[]) + + order?: ("asc" | "desc") type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") +}] +// ----- perfectionist/sort-union-types ----- +type PerfectionistSortUnionTypes = { - partitionByNewLine?: boolean + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } specialCharacters?: ("remove" | "trim" | "keep") - newlinesBetween?: ("ignore" | "always" | "never") - - customGroups?: { - [k: string]: (string | string[]) | undefined - } - ignoreCase?: boolean alphabet?: string - locales?: (string | string[]) - - groups?: (string | string[] | { - - newlinesBetween?: ("ignore" | "always" | "never") - [k: string]: unknown | undefined - })[] - - order?: ("asc" | "desc") -}[] -// ----- perfectionist/sort-sets ----- -type PerfectionistSortSets = { + locales?: (string | string[]) - partitionByComment?: (string[] | boolean | string | { - block?: (string[] | boolean | string) - line?: (string[] | boolean | string) - [k: string]: unknown | undefined - }) + order?: ("asc" | "desc") - groupKind?: ("mixed" | "literals-first" | "spreads-first") + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") customGroups?: ({ - groupName?: string + newlinesInside?: ("always" | "never") + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } - type?: ("alphabetical" | "line-length" | "natural" | "unsorted") + groupName: string - order?: ("desc" | "asc") + order?: ("asc" | "desc") - newlinesInside?: ("always" | "never") + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") anyOf?: { - selector?: ("literal" | "spread") + selector?: ("intersection" | "conditional" | "function" | "operator" | "keyword" | "literal" | "nullish" | "import" | "object" | "named" | "tuple" | "union") - elementNamePattern?: string + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) }[] } | { - groupName?: string + newlinesInside?: ("always" | "never") + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } - type?: ("alphabetical" | "line-length" | "natural" | "unsorted") + groupName: string - order?: ("desc" | "asc") + order?: ("asc" | "desc") - newlinesInside?: ("always" | "never") + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - selector?: ("literal" | "spread") + selector?: ("intersection" | "conditional" | "function" | "operator" | "keyword" | "literal" | "nullish" | "import" | "object" | "named" | "tuple" | "union") - elementNamePattern?: string + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) })[] - useConfigurationIf?: { - allNamesMatchPattern?: string - } - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + partitionByComment?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) | { + + block?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) + + line?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) + }) partitionByNewLine?: boolean - specialCharacters?: ("remove" | "trim" | "keep") - - ignoreCase?: boolean - - alphabet?: string - - locales?: (string | string[]) + newlinesBetween?: ("ignore" | "always" | "never") groups?: (string | string[] | { - newlinesBetween?: ("ignore" | "always" | "never") - [k: string]: unknown | undefined + newlinesBetween: ("ignore" | "always" | "never") })[] - - order?: ("asc" | "desc") }[] -// ----- perfectionist/sort-switch-case ----- -type PerfectionistSortSwitchCase = []|[{ +// ----- perfectionist/sort-variable-declarations ----- +type PerfectionistSortVariableDeclarations = []|[{ + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } specialCharacters?: ("remove" | "trim" | "keep") @@ -14937,65 +14292,121 @@ type PerfectionistSortSwitchCase = []|[{ alphabet?: string - type?: ("alphabetical" | "natural" | "line-length" | "custom") - locales?: (string | string[]) order?: ("asc" | "desc") -}] -// ----- perfectionist/sort-union-types ----- -type PerfectionistSortUnionTypes = []|[{ - - partitionByComment?: (string[] | boolean | string | { - block?: (string[] | boolean | string) - line?: (string[] | boolean | string) - [k: string]: unknown | undefined - }) - - partitionByNewLine?: boolean - - specialCharacters?: ("remove" | "trim" | "keep") - - newlinesBetween?: ("ignore" | "always" | "never") - - ignoreCase?: boolean - - alphabet?: string - - type?: ("alphabetical" | "natural" | "line-length" | "custom") - locales?: (string | string[]) + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - groups?: (string | string[] | { + customGroups?: ({ - newlinesBetween?: ("ignore" | "always" | "never") - [k: string]: unknown | undefined + newlinesInside?: ("always" | "never") + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } + + groupName: string + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + anyOf?: { + + selector?: ("initialized" | "uninitialized") + + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) + }[] + } | { + + newlinesInside?: ("always" | "never") + + fallbackSort?: { + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + } + + groupName: string + + order?: ("asc" | "desc") + + type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") + + selector?: ("initialized" | "uninitialized") + + elementNamePattern?: (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) })[] - order?: ("asc" | "desc") -}] -// ----- perfectionist/sort-variable-declarations ----- -type PerfectionistSortVariableDeclarations = []|[{ - - partitionByComment?: (string[] | boolean | string | { - block?: (string[] | boolean | string) - line?: (string[] | boolean | string) - [k: string]: unknown | undefined + partitionByComment?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string)) | { + + block?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) + + line?: (boolean | (({ + + pattern: string + + flags?: string + } | string)[] | ({ + + pattern: string + + flags?: string + } | string))) }) partitionByNewLine?: boolean - specialCharacters?: ("remove" | "trim" | "keep") - - ignoreCase?: boolean - - alphabet?: string - - type?: ("alphabetical" | "natural" | "line-length" | "custom") - - locales?: (string | string[]) + newlinesBetween?: ("ignore" | "always" | "never") - order?: ("asc" | "desc") + groups?: (string | string[] | { + + newlinesBetween: ("ignore" | "always" | "never") + })[] }] // ----- playwright/expect-expect ----- type PlaywrightExpectExpect = []|[{ @@ -15032,56 +14443,6 @@ type PlaywrightValidExpect = []|[{ maxArgs?: number minArgs?: number }] -// ----- prefer-arrow-callback ----- -type PreferArrowCallback = []|[{ - allowNamedFunctions?: boolean - allowUnboundThis?: boolean -}] -// ----- prefer-const ----- -type PreferConst = []|[{ - destructuring?: ("any" | "all") - ignoreReadBeforeAssign?: boolean -}] -// ----- prefer-destructuring ----- -type PreferDestructuring = []|[({ - VariableDeclarator?: { - array?: boolean - object?: boolean - } - AssignmentExpression?: { - array?: boolean - object?: boolean - } -} | { - array?: boolean - object?: boolean -})]|[({ - VariableDeclarator?: { - array?: boolean - object?: boolean - } - AssignmentExpression?: { - array?: boolean - object?: boolean - } -} | { - array?: boolean - object?: boolean -}), { - enforceForRenamedProperties?: boolean -}] -// ----- prefer-promise-reject-errors ----- -type PreferPromiseRejectErrors = []|[{ - allowEmptyReject?: boolean -}] -// ----- prefer-reflect ----- -type PreferReflect = []|[{ - exceptions?: ("apply" | "call" | "delete" | "defineProperty" | "getOwnPropertyDescriptor" | "getPrototypeOf" | "setPrototypeOf" | "isExtensible" | "getOwnPropertyNames" | "preventExtensions")[] -}] -// ----- prefer-regex-literals ----- -type PreferRegexLiterals = []|[{ - disallowRedundantWrapping?: boolean -}] // ----- promise/always-return ----- type PromiseAlwaysReturn = []|[{ ignoreLastCallback?: boolean @@ -15121,19 +14482,6 @@ type PromiseSpecOnly = []|[{ type PromiseValidParams = []|[{ exclude?: string[] }] -// ----- quote-props ----- -type QuoteProps = ([]|[("always" | "as-needed" | "consistent" | "consistent-as-needed")] | []|[("always" | "as-needed" | "consistent" | "consistent-as-needed")]|[("always" | "as-needed" | "consistent" | "consistent-as-needed"), { - keywords?: boolean - unnecessary?: boolean - numbers?: boolean -}]) -// ----- quotes ----- -type Quotes = []|[("single" | "double" | "backtick")]|[("single" | "double" | "backtick"), ("avoid-escape" | { - avoidEscape?: boolean - allowTemplateLiterals?: boolean -})] -// ----- radix ----- -type Radix = []|[("always" | "as-needed")] // ----- react-dom/no-unknown-property ----- type ReactDomNoUnknownProperty = []|[{ ignore?: string[] @@ -15758,30 +15106,6 @@ type RegexpUnicodeProperty = []|[{ script?: ("short" | "long" | "ignore") }) }] -// ----- require-atomic-updates ----- -type RequireAtomicUpdates = []|[{ - allowProperties?: boolean -}] -// ----- require-unicode-regexp ----- -type RequireUnicodeRegexp = []|[{ - requireFlag?: ("u" | "v") -}] -// ----- rest-spread-spacing ----- -type RestSpreadSpacing = []|[("always" | "never")] -// ----- semi ----- -type Semi = ([]|["never"]|["never", { - beforeStatementContinuationChars?: ("always" | "any" | "never") -}] | []|["always"]|["always", { - omitLastInOneLineBlock?: boolean - omitLastInOneLineClassBody?: boolean -}]) -// ----- semi-spacing ----- -type SemiSpacing = []|[{ - before?: boolean - after?: boolean -}] -// ----- semi-style ----- -type SemiStyle = []|[("last" | "first")] // ----- simple-import-sort/imports ----- type SimpleImportSortImports = []|[{ groups?: string[][] @@ -15820,7 +15144,7 @@ type SonarjsClassName = []|[{ format?: string }] // ----- sonarjs/cognitive-complexity ----- -type SonarjsCognitiveComplexity = []|[number]|[number, ("sonar-runtime" | "metric")] +type SonarjsCognitiveComplexity = []|[(number | string)]|[(number | string), string] // ----- sonarjs/comment-regex ----- type SonarjsCommentRegex = []|[{ regularExpression?: string @@ -16050,69 +15374,6 @@ type SonarjsVariableName = []|[{ }] // ----- sonarjs/xml-parser-xxe ----- type SonarjsXmlParserXxe = []|[("sonar-runtime" | "metric")] -// ----- sort-imports ----- -type SortImports = []|[{ - ignoreCase?: boolean - - memberSyntaxSortOrder?: [("none" | "all" | "multiple" | "single"), ("none" | "all" | "multiple" | "single"), ("none" | "all" | "multiple" | "single"), ("none" | "all" | "multiple" | "single")] - ignoreDeclarationSort?: boolean - ignoreMemberSort?: boolean - allowSeparatedGroups?: boolean -}] -// ----- sort-keys ----- -type SortKeys = []|[("asc" | "desc")]|[("asc" | "desc"), { - caseSensitive?: boolean - natural?: boolean - minKeys?: number - allowLineSeparatedGroups?: boolean - ignoreComputedKeys?: boolean -}] -// ----- sort-vars ----- -type SortVars = []|[{ - ignoreCase?: boolean -}] -// ----- space-before-blocks ----- -type SpaceBeforeBlocks = []|[(("always" | "never") | { - keywords?: ("always" | "never" | "off") - functions?: ("always" | "never" | "off") - classes?: ("always" | "never" | "off") -})] -// ----- space-before-function-paren ----- -type SpaceBeforeFunctionParen = []|[(("always" | "never") | { - anonymous?: ("always" | "never" | "ignore") - named?: ("always" | "never" | "ignore") - asyncArrow?: ("always" | "never" | "ignore") -})] -// ----- space-in-parens ----- -type SpaceInParens = []|[("always" | "never")]|[("always" | "never"), { - exceptions?: ("{}" | "[]" | "()" | "empty")[] -}] -// ----- space-infix-ops ----- -type SpaceInfixOps = []|[{ - int32Hint?: boolean -}] -// ----- space-unary-ops ----- -type SpaceUnaryOps = []|[{ - words?: boolean - nonwords?: boolean - overrides?: { - [k: string]: boolean | undefined - } -}] -// ----- spaced-comment ----- -type SpacedComment = []|[("always" | "never")]|[("always" | "never"), { - exceptions?: string[] - markers?: string[] - line?: { - exceptions?: string[] - markers?: string[] - } - block?: { - exceptions?: string[] - markers?: string[] - balanced?: boolean - } -}] // ----- storybook/meta-inline-properties ----- type StorybookMetaInlineProperties = []|[{ csfVersion?: number @@ -16123,13 +15384,6 @@ type StorybookNoUninstalledAddons = []|[{ ignore?: string[] [k: string]: unknown | undefined }] -// ----- strict ----- -type Strict = []|[("never" | "global" | "function" | "safe")] -// ----- switch-colon-spacing ----- -type SwitchColonSpacing = []|[{ - before?: boolean - after?: boolean -}] // ----- tailwindcss/classnames-order ----- type TailwindcssClassnamesOrder = []|[{ callees?: string[] @@ -16214,10 +15468,6 @@ type TailwindcssNoUnnecessaryArbitraryValue = []|[{ tags?: string[] [k: string]: unknown | undefined }] -// ----- template-curly-spacing ----- -type TemplateCurlySpacing = []|[("always" | "never")] -// ----- template-tag-spacing ----- -type TemplateTagSpacing = []|[("always" | "never")] // ----- testing-library/await-async-events ----- type TestingLibraryAwaitAsyncEvents = []|[{ eventModule?: (("fireEvent" | "userEvent") | ("fireEvent" | "userEvent")[]) @@ -16408,8 +15658,6 @@ type TomlSpacedComment = []|[("always" | "never")]|[("always" | "never"), { }] // ----- toml/table-bracket-spacing ----- type TomlTableBracketSpacing = []|[("always" | "never")] -// ----- unicode-bom ----- -type UnicodeBom = []|[("always" | "never")] // ----- unicorn/better-regex ----- type UnicornBetterRegex = []|[{ sortCharacterClasses?: boolean @@ -16423,6 +15671,8 @@ type UnicornCatchErrorName = []|[{ type UnicornConsistentFunctionScoping = []|[{ checkArrowFunctions?: boolean }] +// ----- unicorn/escape-case ----- +type UnicornEscapeCase = []|[("uppercase" | "lowercase")] // ----- unicorn/expiring-todo-comments ----- type UnicornExpiringTodoComments = []|[{ terms?: string[] @@ -16466,14 +15716,17 @@ interface _UnicornImportStyle_ModuleStyles { interface _UnicornImportStyle_BooleanObject { [k: string]: boolean | undefined } -// ----- unicorn/no-array-push-push ----- -type UnicornNoArrayPushPush = []|[{ - ignore?: unknown[] -}] // ----- unicorn/no-array-reduce ----- type UnicornNoArrayReduce = []|[{ allowSimpleOperations?: boolean }] +// ----- unicorn/no-instanceof-builtins ----- +type UnicornNoInstanceofBuiltins = []|[{ + useErrorIsError?: boolean + strategy?: ("loose" | "strict") + include?: string[] + exclude?: string[] +}] // ----- unicorn/no-keyword-prefix ----- type UnicornNoKeywordPrefix = []|[{ @@ -16500,6 +15753,10 @@ type UnicornNoUselessUndefined = []|[{ checkArguments?: boolean checkArrowFunctionBody?: boolean }] +// ----- unicorn/number-literal-case ----- +type UnicornNumberLiteralCase = []|[{ + hexadecimalValue?: ("uppercase" | "lowercase") +}] // ----- unicorn/numeric-separators-style ----- type UnicornNumericSeparatorsStyle = []|[{ binary?: { @@ -16554,6 +15811,10 @@ type UnicornPreferNumberProperties = []|[{ type UnicornPreferObjectFromEntries = []|[{ functions?: unknown[] }] +// ----- unicorn/prefer-single-call ----- +type UnicornPreferSingleCall = []|[{ + ignore?: unknown[] +}] // ----- unicorn/prefer-structured-clone ----- type UnicornPreferStructuredClone = []|[{ functions?: unknown[] @@ -16613,15 +15874,6 @@ type UnocssEnforceClassCompile = []|[{ prefix?: string enableFix?: boolean }] -// ----- use-isnan ----- -type UseIsnan = []|[{ - enforceForSwitchCase?: boolean - enforceForIndexOf?: boolean -}] -// ----- valid-typeof ----- -type ValidTypeof = []|[{ - requireStringLiterals?: boolean -}] // ----- vitest/consistent-test-filename ----- type VitestConsistentTestFilename = []|[{ pattern?: string @@ -16699,6 +15951,10 @@ type VitestPreferSnapshotHint = []|[("always" | "multi")] type VitestRequireHook = []|[{ allowedFunctionCalls?: string[] }] +// ----- vitest/require-mock-type-parameters ----- +type VitestRequireMockTypeParameters = []|[{ + checkImportFunctions?: boolean +}] // ----- vitest/require-top-level-describe ----- type VitestRequireTopLevelDescribe = []|[{ maxNumberOfTopLevelDescribes?: number @@ -16719,10 +15975,6 @@ type VitestValidTitle = []|[{ [k: string]: (string | [string]|[string, string]) | undefined }) }] -// ----- wrap-iife ----- -type WrapIife = []|[("outside" | "inside" | "any")]|[("outside" | "inside" | "any"), { - functionPrototypeMethods?: boolean -}] // ----- yaml/block-mapping ----- type YamlBlockMapping = []|[(("always" | "never") | { singleline?: ("always" | "never" | "ignore") @@ -16773,6 +16025,7 @@ type YamlFlowSequenceBracketSpacing = []|[("always" | "never")]|[("always" | "ne type YamlIndent = []|[number]|[number, { indentBlockSequences?: boolean indicatorValueIndent?: number + alignMultilineFlowScalars?: boolean }] // ----- yaml/key-name-casing ----- type YamlKeyNameCasing = []|[{ @@ -16930,16 +16183,6 @@ type YamlSpacedComment = []|[("always" | "never")]|[("always" | "never"), { exceptions?: string[] markers?: string[] }] -// ----- yield-star-spacing ----- -type YieldStarSpacing = []|[(("before" | "after" | "both" | "neither") | { - before?: boolean - after?: boolean -})] -// ----- yoda ----- -type Yoda = []|[("always" | "never")]|[("always" | "never"), { - exceptRange?: boolean - onlyEquality?: boolean -}] // ----- zod/prefer-enum ----- type ZodPreferEnum = []|[{}] // ----- zod/require-strict ----- @@ -16947,4 +16190,4 @@ type ZodRequireStrict = []|[{ allowPassthrough?: boolean }] // Names of all the configs -export type ConfigNames = 'anolilab/antfu' | 'anolilab/astro/setup' | 'anolilab/astro/rules' | 'anolilab/best-practices/rules' | 'anolilab/best-practices/ts-rules' | 'compat/flat/recommended' | 'anolilab/errors/rules' | 'anolilab/errors/ts-rules' | 'anolilab/html/setup' | 'anolilab/no-secrets' | 'anolilab/no-unsanitized/setup' | 'anolilab/promise/rules' | 'anolilab/simple-import-sort' | 'anolilab/sonarjs/plugin' | 'anolilab/sonarjs/rules' | 'anolilab/sonarjs/js-and-ts-rules' | 'anolilab/sonarjs/js-rules' | 'storybook:recommended:setup' | 'storybook:recommended:stories-rules' | 'storybook:recommended:main-rules' | 'tailwindcss:base' | 'tailwindcss:rules' | 'anolilab/validate-jsx-nesting/setup' | 'anolilab/variables/rules' | 'anolilab/variables/ts-rules' | 'anolilab/style/rules' | 'anolilab/style/ts-rules' | 'anolilab/eslint-comments/rules' | 'anolilab/formatter/setup' | 'anolilab/imports/setup' | 'anolilab/imports/rules' | 'anolilab/imports/d.ts-rules' | 'anolilab/javascript/setup' | 'anolilab/jsx-a11y/setup' | 'anolilab/jsdoc/setup' | 'anolilab/jsdoc/js-rules' | 'anolilab/jsonc/json5-rules' | 'anolilab/jsonc/jsonc-rules' | 'anolilab/jsonc/json-rules' | 'anolilab/jsonc/package.json-rules' | 'anolilab/jsonc/tsconfig-json' | 'anolilab/markdown/setup' | 'anolilab/markdown/processor' | 'anolilab/markdown/parser' | 'anolilab/markdown/disables' | 'anolilab/perfectionist/setup' | 'anolilab/perfectionist/rules' | 'anolilab/perfectionist/typescript' | 'anolilab/perfectionist/postcss' | 'anolilab/react/setup' | 'anolilab/react/rules' | 'anolilab/react/jsx' | 'anolilab/react/tsx' | 'anolilab/react/storybook' | 'anolilab/node/setup' | 'anolilab/node/rules' | 'anolilab/stylistic/rules' | 'anolilab/vitest/setup' | 'anolilab/vitest/rules' | 'anolilab/toml' | 'anolilab/regexp/rules' | 'anolilab/typescript/setup' | 'anolilab/typescript/parser' | 'typescript-eslint/base' | 'typescript-eslint/eslint-recommended' | 'typescript-eslint/strict' | 'typescript-eslint/base' | 'typescript-eslint/eslint-recommended' | 'typescript-eslint/stylistic' | 'anolilab/typescript/rules' | 'anolilab/unicorn/plugin' | 'anolilab/unicorn/rules' | 'anolilab/unicorn/tsconfig-overrides' | 'anolilab/unicorn/ts-overrides' | 'anolilab/unocss' | 'anolilab/yaml' +export type ConfigNames = 'anolilab/antfu' | 'anolilab/astro/setup' | 'anolilab/astro/rules' | 'anolilab/best-practices/rules' | 'anolilab/best-practices/ts-rules' | 'compat/flat/recommended' | 'anolilab/errors/rules' | 'anolilab/errors/ts-rules' | 'anolilab/html/setup' | 'anolilab/no-secrets' | 'anolilab/no-unsanitized/setup' | 'anolilab/promise/rules' | 'anolilab/simple-import-sort' | 'anolilab/sonarjs/plugin' | 'anolilab/sonarjs/rules' | 'anolilab/sonarjs/js-and-ts-rules' | 'anolilab/sonarjs/js-rules' | 'storybook:recommended:setup' | 'storybook:recommended:stories-rules' | 'storybook:recommended:main-rules' | 'tailwindcss:base' | 'tailwindcss:rules' | 'anolilab/validate-jsx-nesting/setup' | 'anolilab/variables/rules' | 'anolilab/variables/ts-rules' | 'anolilab/style/rules' | 'anolilab/style/ts-rules' | 'anolilab/eslint-comments/rules' | 'anolilab/formatter/setup' | 'anolilab/imports/setup' | 'anolilab/imports/rules' | 'anolilab/imports/d.ts-rules' | 'anolilab/javascript/setup' | 'anolilab/jsx-a11y/setup' | 'anolilab/jsdoc/setup' | 'anolilab/jsdoc/js-rules' | 'anolilab/jsonc/json5-rules' | 'anolilab/jsonc/jsonc-rules' | 'anolilab/jsonc/json-rules' | 'anolilab/jsonc/package.json-rules' | 'anolilab/jsonc/tsconfig-json' | 'anolilab/markdown/setup' | 'anolilab/markdown/processor' | 'anolilab/markdown/parser' | 'anolilab/markdown/disables' | 'anolilab/perfectionist/setup' | 'anolilab/perfectionist/rules' | 'anolilab/perfectionist/typescript' | 'anolilab/perfectionist/postcss' | 'anolilab/react/setup' | 'anolilab/react/rules' | 'anolilab/react/jsx' | 'anolilab/react/tsx' | 'anolilab/react/storybook' | 'anolilab/node/setup' | 'anolilab/node/rules' | 'anolilab/stylistic/rules' | 'anolilab/vitest/setup' | 'anolilab/vitest/rules' | 'anolilab/toml' | 'anolilab/regexp/rules' | 'anolilab/typescript/setup' | 'anolilab/typescript/parser' | 'typescript-eslint/base' | 'typescript-eslint/eslint-recommended' | 'typescript-eslint/strict' | 'typescript-eslint/base' | 'typescript-eslint/eslint-recommended' | 'typescript-eslint/stylistic' | 'anolilab/typescript/rules' | 'anolilab/unicorn/plugin' | 'anolilab/unicorn/rules' | 'anolilab/unicorn/tsconfig-overrides' | 'anolilab/unicorn/ts-overrides' | 'anolilab/unocss' | 'anolilab/yaml' | 'anolilab/yaml/pnpm-workspace' diff --git a/packages/eslint-config/src/types.ts b/packages/eslint-config/src/types.ts index 7922cd756..8bf27e451 100644 --- a/packages/eslint-config/src/types.ts +++ b/packages/eslint-config/src/types.ts @@ -548,7 +548,8 @@ export interface OptionsUnoCSS extends OptionsOverrides { strict?: boolean; } -export type Rules = RuleOptions; +// eslint-disable-next-line @typescript-eslint/no-empty-object-type +export interface Rules extends RuleOptions {} export type StylisticConfig = Pick; diff --git a/packages/eslint-config/src/utils/vitest-globals.ts b/packages/eslint-config/src/utils/vitest-globals.ts index 7cbd0eee8..1c463aeb9 100644 --- a/packages/eslint-config/src/utils/vitest-globals.ts +++ b/packages/eslint-config/src/utils/vitest-globals.ts @@ -1,21 +1,22 @@ /** - * vitest version 2.1.8 + * vitest version 3.1.4 */ -export default /** @type {const} */ { - afterAll: true, - afterEach: true, - assert: true, - assertType: true, - beforeAll: true, - beforeEach: true, - describe: true, - expect: true, - expectTypeOf: true, - it: true, - onTestFailed: true, - onTestFinished: true, - suite: true, - test: true, - vi: true, - vitest: true, -}; +export default /** @type {const} */ ({ + "suite": true, + "test": true, + "chai": true, + "describe": true, + "it": true, + "expectTypeOf": true, + "assertType": true, + "expect": true, + "assert": true, + "vitest": true, + "vi": true, + "beforeAll": true, + "afterAll": true, + "beforeEach": true, + "afterEach": true, + "onTestFailed": true, + "onTestFinished": true +}); From 63090548fda445fda62808c444b8b5e3448e9858 Mon Sep 17 00:00:00 2001 From: prisis Date: Fri, 23 May 2025 16:23:14 +0200 Subject: [PATCH 21/31] style: cs fixes --- packages/eslint-config/.prettierignore | 1 + packages/eslint-config/README.md | 1 + .../eslint-config/__tests__/rules.test.ts | 18 +- packages/eslint-config/package.json | 4 +- packages/eslint-config/scripts/typegen.ts | 6 +- packages/eslint-config/src/config/es6.ts | 30 +- .../eslint-config/src/config/plugins/antfu.ts | 27 +- .../eslint-config/src/config/plugins/astro.ts | 21 +- .../src/config/plugins/formatters.ts | 14 +- .../eslint-config/src/config/plugins/html.ts | 30 +- .../src/config/plugins/imports.ts | 82 +- .../src/config/plugins/javascript.ts | 22 +- .../eslint-config/src/config/plugins/jsdoc.ts | 35 +- .../eslint-config/src/config/plugins/jsonc.ts | 365 +- .../src/config/plugins/jsx-a11y.ts | 4 +- .../src/config/plugins/markdown.ts | 2 +- .../eslint-config/src/config/plugins/node.ts | 12 +- .../src/config/plugins/perfectionist.ts | 2 +- .../eslint-config/src/config/plugins/react.ts | 130 +- .../src/config/plugins/regexp.ts | 7 +- .../src/config/plugins/stylistic.ts | 374 +- .../src/config/plugins/testing-library.ts | 2 +- .../eslint-config/src/config/plugins/toml.ts | 30 +- .../src/config/plugins/typescript.ts | 156 +- .../src/config/plugins/unicorn.ts | 32 +- .../src/config/plugins/unocss.ts | 16 +- .../src/config/plugins/vitest.ts | 56 +- .../eslint-config/src/config/plugins/yml.ts | 100 +- packages/eslint-config/src/config/style.ts | 144 +- packages/eslint-config/src/index.ts | 23 +- packages/eslint-config/src/typegen.d.ts | 39743 ++++++++++------ packages/eslint-config/src/types.ts | 4 +- .../eslint-config/src/utils/create-config.ts | 5 +- .../eslint-config/src/utils/vitest-globals.ts | 38 +- 34 files changed, 25179 insertions(+), 16357 deletions(-) diff --git a/packages/eslint-config/.prettierignore b/packages/eslint-config/.prettierignore index ebf52909d..c2cfc0666 100644 --- a/packages/eslint-config/.prettierignore +++ b/packages/eslint-config/.prettierignore @@ -7,3 +7,4 @@ CHANGELOG.md coverage node_modules .eslintcache +__fixtures__ \ No newline at end of file diff --git a/packages/eslint-config/README.md b/packages/eslint-config/README.md index f0d9f33f4..10dc873e5 100644 --- a/packages/eslint-config/README.md +++ b/packages/eslint-config/README.md @@ -131,6 +131,7 @@ The following test plugins are supported: - [eslint-plugin-ava](https://github.com/avajs/eslint-plugin-ava) - You need to install `@vitest/eslint-plugin` and `vitest` to use this plugin. + ### List of used plugins - eslint-plugin-security diff --git a/packages/eslint-config/__tests__/rules.test.ts b/packages/eslint-config/__tests__/rules.test.ts index 02992a7e0..b1ee16635 100644 --- a/packages/eslint-config/__tests__/rules.test.ts +++ b/packages/eslint-config/__tests__/rules.test.ts @@ -1,13 +1,5 @@ import { existsSync } from "node:fs"; -import { - copyFile, - lstat, - mkdir, - readdir, - readFile, - rm, - writeFile, -} from "node:fs/promises"; +import { copyFile, lstat, mkdir, readdir, readFile, rm, writeFile } from "node:fs/promises"; import { dirname, join } from "node:path"; import { fileURLToPath } from "node:url"; @@ -38,16 +30,16 @@ const copyFolderRecursive = async (from: string, to: string) => { } }; -const tempDirectoryPath = join(rootPath, "..", "tmp_fixtures"); +const temporaryDirectoryPath = join(rootPath, "..", "tmp_fixtures"); // eslint-disable-next-line vitest/require-top-level-describe beforeAll(async () => { - await rm(tempDirectoryPath, { force: true, recursive: true }); + await rm(temporaryDirectoryPath, { force: true, recursive: true }); }); // eslint-disable-next-line vitest/require-top-level-describe afterAll(async () => { - await rm(tempDirectoryPath, { force: true, recursive: true }); + await rm(temporaryDirectoryPath, { force: true, recursive: true }); }); const runWithConfig = (name: string, configs: OptionsConfig, ...items: TypedFlatConfigItem[]) => { @@ -59,7 +51,7 @@ const runWithConfig = (name: string, configs: OptionsConfig, ...items: TypedFlat const from = join(fixturesPath, "input"); const output = join(fixturesPath, "output", name); - const target = join(tempDirectoryPath, name); + const target = join(temporaryDirectoryPath, name); await copyFolderRecursive(from, target); await writeFile( diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 778cf3ac5..f0fd992e6 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -113,8 +113,8 @@ "lint:attw": "attw --pack", "lint:eslint": "eslint .", "lint:eslint:fix": "eslint . --fix", - "lint:prettier": "prettier --config=.prettierrc.cjs --check .", - "lint:prettier:fix": "prettier --config=.prettierrc.cjs --write .", + "lint:prettier": "prettier --config=.prettierrc.js --check .", + "lint:prettier:fix": "prettier --config=.prettierrc.js --write .", "test": "vitest run", "test:coverage": "vitest run --coverage", "test:ui": "vitest --ui --coverage.enabled=true", diff --git a/packages/eslint-config/scripts/typegen.ts b/packages/eslint-config/scripts/typegen.ts index 96457c669..610bc746d 100644 --- a/packages/eslint-config/scripts/typegen.ts +++ b/packages/eslint-config/scripts/typegen.ts @@ -1,7 +1,7 @@ import fs from "node:fs/promises"; +import JS from "@eslint/js"; import type { NormalizedPackageJson } from "@visulima/package"; -import JS from '@eslint/js' import { flatConfigsToRulesDTS } from "eslint-typegen/core"; import bestPractices from "../src/config/best-practices"; @@ -123,7 +123,7 @@ const configs = await combine( zod({}), ); -const configNames = configs.map(index => index.name).filter(Boolean) as string[]; +const configNames = configs.map((index) => index.name).filter(Boolean) as string[]; let dts = await flatConfigsToRulesDTS(configs, { includeAugmentation: false, @@ -131,7 +131,7 @@ let dts = await flatConfigsToRulesDTS(configs, { dts += ` // Names of all the configs -export type ConfigNames = ${configNames.map(index => `'${index}'`).join(" | ")} +export type ConfigNames = ${configNames.map((index) => `'${index}'`).join(" | ")} `; await fs.writeFile("src/typegen.d.ts", dts); diff --git a/packages/eslint-config/src/config/es6.ts b/packages/eslint-config/src/config/es6.ts index ebf491ef1..c1a2a2a47 100644 --- a/packages/eslint-config/src/config/es6.ts +++ b/packages/eslint-config/src/config/es6.ts @@ -119,7 +119,7 @@ export const es6Rules: (isInEditor: boolean) => Partial = (i name: "sys", }, { - message: "Is legacy, npm version got deprecated, migrate to URLSearchParams as recommended or try \"qs\" as a package", + message: 'Is legacy, npm version got deprecated, migrate to URLSearchParams as recommended or try "qs" as a package', name: "querystring", }, { @@ -131,7 +131,7 @@ export const es6Rules: (isInEditor: boolean) => Partial = (i name: "mkdirp", }, { - message: "Please use \"@faker-js/faker\" as a replacement", + message: 'Please use "@faker-js/faker" as a replacement', name: "faker", }, { @@ -151,23 +151,23 @@ export const es6Rules: (isInEditor: boolean) => Partial = (i name: "rimraf", }, { - message: "just use \"\".padStart() and \"\".padEnd()", + message: 'just use "".padStart() and "".padEnd()', name: "pad-left", }, { - message: "just use \"\".padStart() and \"\".padEnd()", + message: 'just use "".padStart() and "".padEnd()', name: "pad-right", }, { - message: "just use \"\".padStart() and \"\".padEnd()", + message: 'just use "".padStart() and "".padEnd()', name: "left-pad", }, { - message: "just use \"\".padStart() and \"\".padEnd()", + message: 'just use "".padStart() and "".padEnd()', name: "right-pad", }, { - message: "just use \"\".padStart() and \"\".padEnd()", + message: 'just use "".padStart() and "".padEnd()', name: "pad", }, { @@ -258,14 +258,14 @@ export const es6Rules: (isInEditor: boolean) => Partial = (i // suggest using of const declaration for variables that are never modified after declared "prefer-const": isInEditor - ? "off" - : [ - "error", - { - destructuring: "any", - ignoreReadBeforeAssign: true, - }, - ], + ? "off" + : [ + "error", + { + destructuring: "any", + ignoreReadBeforeAssign: true, + }, + ], // Prefer destructuring from arrays and objects // https://eslint.org/docs/rules/prefer-destructuring diff --git a/packages/eslint-config/src/config/plugins/antfu.ts b/packages/eslint-config/src/config/plugins/antfu.ts index b66ed2a90..90fd945c6 100644 --- a/packages/eslint-config/src/config/plugins/antfu.ts +++ b/packages/eslint-config/src/config/plugins/antfu.ts @@ -6,17 +6,12 @@ import interopDefault from "../../utils/interop-default"; export default createConfig< OptionsFiles & - OptionsOverrides & - OptionsPackageJson & { - lessOpinionated?: boolean; - } + OptionsOverrides & + OptionsPackageJson & { + lessOpinionated?: boolean; + } >("all", async (config, oFiles) => { - const { - files = oFiles, - lessOpinionated = false, - overrides, - packageJson, - } = config; + const { files = oFiles, lessOpinionated = false, overrides, packageJson } = config; const antfuPlugin = await interopDefault(import("eslint-plugin-antfu")); @@ -41,14 +36,14 @@ export default createConfig< "antfu/prefer-inline-type-import": "off", "antfu/top-level-function": "off", - ...lessOpinionated + ...(lessOpinionated ? { - curly: ["error", "all"], - } + curly: ["error", "all"], + } : { - "antfu/curly": "error", - "antfu/if-newline": "error", - }, + "antfu/curly": "error", + "antfu/if-newline": "error", + }), ...overrides, }, diff --git a/packages/eslint-config/src/config/plugins/astro.ts b/packages/eslint-config/src/config/plugins/astro.ts index 6836382ec..223558f9b 100644 --- a/packages/eslint-config/src/config/plugins/astro.ts +++ b/packages/eslint-config/src/config/plugins/astro.ts @@ -1,9 +1,4 @@ -import type { - OptionsFiles, - OptionsOverrides, - OptionsStylistic, - TypedFlatConfigItem, -} from "../../types"; +import type { OptionsFiles, OptionsOverrides, OptionsStylistic, TypedFlatConfigItem } from "../../types"; import { createConfig } from "../../utils/create-config"; import interopDefault from "../../utils/interop-default"; @@ -53,14 +48,14 @@ export default createConfig( "astro/semi": "off", "astro/valid-compile": "error", - ...stylistic + ...(stylistic ? { - "@stylistic/indent": "off", - "@stylistic/jsx-closing-tag-location": "off", - "@stylistic/jsx-one-expression-per-line": "off", - "@stylistic/no-multiple-empty-lines": "off", - } - : {}, + "@stylistic/indent": "off", + "@stylistic/jsx-closing-tag-location": "off", + "@stylistic/jsx-one-expression-per-line": "off", + "@stylistic/no-multiple-empty-lines": "off", + } + : {}), ...overrides, }, diff --git a/packages/eslint-config/src/config/plugins/formatters.ts b/packages/eslint-config/src/config/plugins/formatters.ts index 9d53e1edd..ac21fc6e8 100644 --- a/packages/eslint-config/src/config/plugins/formatters.ts +++ b/packages/eslint-config/src/config/plugins/formatters.ts @@ -9,7 +9,7 @@ const mergePrettierOptions = (options: VendoredPrettierOptions, overrides: Vendo return { ...options, ...overrides, - plugins: [...overrides.plugins || [], ...options.plugins || []], + plugins: [...(overrides.plugins || []), ...(options.plugins || [])], }; }; @@ -197,13 +197,13 @@ const formatters = async (options: OptionsFormatters, stylistic: StylisticConfig "error", formater === "prettier" ? mergePrettierOptions(prettierOptions, { - embeddedLanguageFormatting: "off", - parser: "markdown", - }) + embeddedLanguageFormatting: "off", + parser: "markdown", + }) : { - ...dprintOptions, - language: "markdown", - }, + ...dprintOptions, + language: "markdown", + }, ], }, }); diff --git a/packages/eslint-config/src/config/plugins/html.ts b/packages/eslint-config/src/config/plugins/html.ts index 2c122b7ac..3016e1b5c 100644 --- a/packages/eslint-config/src/config/plugins/html.ts +++ b/packages/eslint-config/src/config/plugins/html.ts @@ -1,19 +1,9 @@ -import type { - OptionsFiles, - OptionsHasPrettier, - OptionsOverrides, - OptionsStylistic, -} from "../../types"; +import type { OptionsFiles, OptionsHasPrettier, OptionsOverrides, OptionsStylistic } from "../../types"; import { createConfig } from "../../utils/create-config"; import interopDefault from "../../utils/interop-default"; export default createConfig("html", async (config, oFiles) => { - const { - files = oFiles, - overrides, - prettier, - stylistic = true, - } = config; + const { files = oFiles, overrides, prettier, stylistic = true } = config; const { indent = 4 } = typeof stylistic === "boolean" ? {} : stylistic; @@ -32,14 +22,14 @@ export default createConfig( "all", async (config, oFiles) => { - const { - files = oFiles, - overrides, - packageJson, - stylistic, - tsconfigPath, - } = config; + const { files = oFiles, overrides, packageJson, stylistic, tsconfigPath } = config; const importPlugin = await interopDefault(import("eslint-plugin-import-x")); @@ -72,21 +66,21 @@ export default createConfig extension.replace("**/*", "")), + "import/extensions": [...getFilesGlobs("js_and_ts"), ...getFilesGlobs("jsx_and_tsx")].map((extension) => extension.replace("**/*", "")), // Resolve type definition packages "import/external-module-folders": ["node_modules", "node_modules/@types"], // Apply special parsing for TypeScript files "import/parsers": { - "@typescript-eslint/parser": getFilesGlobs("ts").map(extension => extension.replace("**/*", "")), + "@typescript-eslint/parser": getFilesGlobs("ts").map((extension) => extension.replace("**/*", "")), }, - ...tsconfigPath + ...(tsconfigPath ? { - // Append 'ts' extensions to 'import/resolver' setting - "import/resolver": { - node: true, - typescript: { - // always try to resolve types under `@types` directory even it doesn't contain any source code, like `@types/unist` - alwaysTryTypes: true, - project: tsconfigPath, - }, - }, - } + // Append 'ts' extensions to 'import/resolver' setting + "import/resolver": { + node: true, + typescript: { + // always try to resolve types under `@types` directory even it doesn't contain any source code, like `@types/unist` + alwaysTryTypes: true, + project: tsconfigPath, + }, + }, + } : { - "import/resolver": { - node: true, - // You will also need to install and configure the TypeScript resolver - // See also https://github.com/import-js/eslint-import-resolver-typescript#configuration - typescript: true, - }, - }, + "import/resolver": { + node: true, + // You will also need to install and configure the TypeScript resolver + // See also https://github.com/import-js/eslint-import-resolver-typescript#configuration + typescript: true, + }, + }), }, }); } diff --git a/packages/eslint-config/src/config/plugins/javascript.ts b/packages/eslint-config/src/config/plugins/javascript.ts index e75d995d8..3948358d1 100644 --- a/packages/eslint-config/src/config/plugins/javascript.ts +++ b/packages/eslint-config/src/config/plugins/javascript.ts @@ -20,19 +20,19 @@ export default createConfig("js", async (config) => { document: "readonly", navigator: "readonly", window: "readonly", - ...packageJson.type === "module" + ...(packageJson.type === "module" ? { - __dirname: "off", - __filename: "off", - exports: "off", - require: "off", - } + __dirname: "off", + __filename: "off", + exports: "off", + require: "off", + } : { - __dirname: true, - __filename: true, - exports: true, - require: true, - }, + __dirname: true, + __filename: true, + exports: true, + require: true, + }), }, parserOptions: { ecmaFeatures: { diff --git a/packages/eslint-config/src/config/plugins/jsdoc.ts b/packages/eslint-config/src/config/plugins/jsdoc.ts index 281c769ed..717a4835e 100644 --- a/packages/eslint-config/src/config/plugins/jsdoc.ts +++ b/packages/eslint-config/src/config/plugins/jsdoc.ts @@ -1,22 +1,11 @@ import { hasPackageJsonAnyDependency } from "@visulima/package"; -import type { - OptionsFiles, - OptionsPackageJson, - OptionsSilentConsoleLogs, - OptionsStylistic, - TypedFlatConfigItem, -} from "../../types"; +import type { OptionsFiles, OptionsPackageJson, OptionsSilentConsoleLogs, OptionsStylistic, TypedFlatConfigItem } from "../../types"; import { createConfig, getFilesGlobs } from "../../utils/create-config"; import interopDefault from "../../utils/interop-default"; export default createConfig("js", async (config, oFiles) => { - const { - files = oFiles, - packageJson, - silent, - stylistic = true, - } = config; + const { files = oFiles, packageJson, silent, stylistic = true } = config; const jsdocPlugin = await interopDefault(import("eslint-plugin-jsdoc")); @@ -41,12 +30,12 @@ export default createConfig => { - const { - overrides, - packageJson, - prettier, - silent, - stylistic = true, - } = config; + const { overrides, packageJson, prettier, silent, stylistic = true } = config; const { indent = 4 } = typeof stylistic === "boolean" ? {} : stylistic; const jsoncPlugin = await interopDefault(import("eslint-plugin-jsonc")); @@ -57,170 +44,170 @@ const jsonc = async ( "jsonc/sort-array-values": hasSortPackageJson ? "off" : [ - "error", - { - order: { type: "asc" }, - pathPattern: "^files$", - }, - ], + "error", + { + order: { type: "asc" }, + pathPattern: "^files$", + }, + ], - // eslint-disable-next-line max-len - // When the package "sort-package-json" is installed, we disable the rule "jsonc/sort-keys" because, the package "sort-package-json" is responsible for sorting the keys. + // When the package "sort-package-json" is installed, we disable the rule "jsonc/sort-keys" because, + // the package "sort-package-json" is responsible for sorting the keys. "jsonc/sort-keys": hasSortPackageJson ? "off" : [ - "error", - { - order: [ - "$schema", - "name", - "displayName", - "version", - "private", - "description", - "categories", - "keywords", - "homepage", - "bugs", - "repository", - "funding", - "license", - "qna", - "author", - "maintainers", - "contributors", - "publisher", - "sideEffects", - "type", - "imports", - "exports", - "main", - "svelte", - "umd:main", - "jsdelivr", - "unpkg", - "module", - "source", - "jsnext:main", - "browser", - "react-native", - "types", - "typesVersions", - "typings", - "style", - "example", - "examplestyle", - "assets", - "bin", - "man", - "directories", - "files", - "workspaces", - "binary", - "scripts", - "betterScripts", - "contributes", - "activationEvents", - "husky", - "simple-git-hooks", - "pre-commit", - "commitlint", - "lint-staged", - "nano-staged", - "config", - "nodemonConfig", - "browserify", - "babel", - "browserslist", - "xo", - "prettier", - "eslintConfig", - "eslintIgnore", - "npmpackagejsonlint", - "release", - "remarkConfig", - "stylelint", - "ava", - "jest", - "mocha", - "nyc", - "tap", - "oclif", - "resolutions", - "dependencies", - "devDependencies", - "dependenciesMeta", - "peerDependencies", - "peerDependenciesMeta", - "optionalDependencies", - "bundledDependencies", - "bundleDependencies", - "extensionPack", - "extensionDependencies", - "flat", - "packageManager", - "engines", - "engineStrict", - "volta", - "languageName", - "os", - "cpu", - "preferGlobal", - "publishConfig", - "icon", - "badges", - "galleryBanner", - "preview", - "markdown", - "pnpm", - ], - pathPattern: "^$", - }, - { - order: { type: "asc" }, - pathPattern: "^(?:dev|peer|optional|bundled)?[Dd]ependencies(Meta)?$", - }, - { - order: { type: "asc" }, - pathPattern: "^(?:resolutions|overrides|pnpm.overrides)$", - }, - { - order: ["types", "import", "require", "default"], - pathPattern: "^exports.*$", - }, - { - order: [ - "applypatch-msg", - "pre-applypatch", - "post-applypatch", - "pre-commit", - "pre-merge-commit", - "prepare-commit-msg", - "commit-msg", - "post-commit", - "pre-rebase", - "post-checkout", - "post-merge", - "pre-push", - "pre-receive", - "update", - "post-receive", - "post-update", - "push-to-checkout", - "pre-auto-gc", - "post-rewrite", - "sendemail-validate", - "fsmonitor-watchman", - "p4-pre-submit", - "post-index-chang", - ], - pathPattern: "^(?:gitHooks|husky|simple-git-hooks)$", - }, - { - order: ["build", "preinstall", "install", "postinstall", "lint", { order: { type: "asc" } }], - pathPattern: "^scripts$", - }, - ], + "error", + { + order: [ + "$schema", + "name", + "displayName", + "version", + "private", + "description", + "categories", + "keywords", + "homepage", + "bugs", + "repository", + "funding", + "license", + "qna", + "author", + "maintainers", + "contributors", + "publisher", + "sideEffects", + "type", + "imports", + "exports", + "main", + "svelte", + "umd:main", + "jsdelivr", + "unpkg", + "module", + "source", + "jsnext:main", + "browser", + "react-native", + "types", + "typesVersions", + "typings", + "style", + "example", + "examplestyle", + "assets", + "bin", + "man", + "directories", + "files", + "workspaces", + "binary", + "scripts", + "betterScripts", + "contributes", + "activationEvents", + "husky", + "simple-git-hooks", + "pre-commit", + "commitlint", + "lint-staged", + "nano-staged", + "config", + "nodemonConfig", + "browserify", + "babel", + "browserslist", + "xo", + "prettier", + "eslintConfig", + "eslintIgnore", + "npmpackagejsonlint", + "release", + "remarkConfig", + "stylelint", + "ava", + "jest", + "mocha", + "nyc", + "tap", + "oclif", + "resolutions", + "dependencies", + "devDependencies", + "dependenciesMeta", + "peerDependencies", + "peerDependenciesMeta", + "optionalDependencies", + "bundledDependencies", + "bundleDependencies", + "extensionPack", + "extensionDependencies", + "flat", + "packageManager", + "engines", + "engineStrict", + "volta", + "languageName", + "os", + "cpu", + "preferGlobal", + "publishConfig", + "icon", + "badges", + "galleryBanner", + "preview", + "markdown", + "pnpm", + ], + pathPattern: "^$", + }, + { + order: { type: "asc" }, + pathPattern: "^(?:dev|peer|optional|bundled)?[Dd]ependencies(Meta)?$", + }, + { + order: { type: "asc" }, + pathPattern: "^(?:resolutions|overrides|pnpm.overrides)$", + }, + { + order: ["types", "import", "require", "default"], + pathPattern: "^exports.*$", + }, + { + order: [ + "applypatch-msg", + "pre-applypatch", + "post-applypatch", + "pre-commit", + "pre-merge-commit", + "prepare-commit-msg", + "commit-msg", + "post-commit", + "pre-rebase", + "post-checkout", + "post-merge", + "pre-push", + "pre-receive", + "update", + "post-receive", + "post-update", + "push-to-checkout", + "pre-auto-gc", + "post-rewrite", + "sendemail-validate", + "fsmonitor-watchman", + "p4-pre-submit", + "post-index-chang", + ], + pathPattern: "^(?:gitHooks|husky|simple-git-hooks)$", + }, + { + order: ["build", "preinstall", "install", "postinstall", "lint", { order: { type: "asc" } }], + pathPattern: "^scripts$", + }, + ], }, }, { @@ -340,24 +327,24 @@ const jsonc = async ( ], }, }, - ...prettier ? jsoncPlugin.configs["flat/prettier"] : [], + ...(prettier ? jsoncPlugin.configs["flat/prettier"] : []), { files: ["**/*.json", "**/*.jsonc", "**/*.json5"], rules: { - ...stylistic + ...(stylistic ? { - "jsonc/array-bracket-spacing": ["error", "never"], - "jsonc/comma-dangle": ["error", "never"], - "jsonc/comma-style": ["error", "last"], - "jsonc/indent": ["error", indent], - "jsonc/key-spacing": ["error", { afterColon: true, beforeColon: false }], - "jsonc/object-curly-newline": ["error", { consistent: true, multiline: true }], - "jsonc/object-curly-spacing": ["error", "always"], - "jsonc/object-property-newline": ["error", { allowMultiplePropertiesPerLine: true }], - "jsonc/quote-props": "error", - "jsonc/quotes": "error", - } - : {}, + "jsonc/array-bracket-spacing": ["error", "never"], + "jsonc/comma-dangle": ["error", "never"], + "jsonc/comma-style": ["error", "last"], + "jsonc/indent": ["error", indent], + "jsonc/key-spacing": ["error", { afterColon: true, beforeColon: false }], + "jsonc/object-curly-newline": ["error", { consistent: true, multiline: true }], + "jsonc/object-curly-spacing": ["error", "always"], + "jsonc/object-property-newline": ["error", { allowMultiplePropertiesPerLine: true }], + "jsonc/quote-props": "error", + "jsonc/quotes": "error", + } + : {}), ...overrides, }, diff --git a/packages/eslint-config/src/config/plugins/jsx-a11y.ts b/packages/eslint-config/src/config/plugins/jsx-a11y.ts index 00455dfb7..7ba9a0283 100644 --- a/packages/eslint-config/src/config/plugins/jsx-a11y.ts +++ b/packages/eslint-config/src/config/plugins/jsx-a11y.ts @@ -32,9 +32,9 @@ export default createConfig("jsx_and_tsx", asyn "error", { area: [], - elements: ["img", "object", "area", "input[type=\"image\"]"], + elements: ["img", "object", "area", 'input[type="image"]'], img: [], - "input[type=\"image\"]": [], + 'input[type="image"]': [], object: [], }, ], diff --git a/packages/eslint-config/src/config/plugins/markdown.ts b/packages/eslint-config/src/config/plugins/markdown.ts index a37243781..a137be0f9 100644 --- a/packages/eslint-config/src/config/plugins/markdown.ts +++ b/packages/eslint-config/src/config/plugins/markdown.ts @@ -35,7 +35,7 @@ export default createConfig `**/*.md/**/*.${extension}`)], + files: ["**/*.md/**/*.?([cm])[jt]s?(x)", ...componentExtensions.map((extension) => `**/*.md/**/*.${extension}`)], languageOptions: { parserOptions: { ecmaFeatures: { diff --git a/packages/eslint-config/src/config/plugins/node.ts b/packages/eslint-config/src/config/plugins/node.ts index 497803111..0490b7bd8 100644 --- a/packages/eslint-config/src/config/plugins/node.ts +++ b/packages/eslint-config/src/config/plugins/node.ts @@ -88,13 +88,13 @@ export default createConfig("jsx_and_tsx", async (config, oFiles) => { const { @@ -216,24 +216,24 @@ export default createConfig< { allowConstantExport: isAllowConstantExport, allowExportNames: [ - ...isUsingNext + ...(isUsingNext ? [ - "dynamic", - "dynamicParams", - "revalidate", - "fetchCache", - "runtime", - "preferredRegion", - "maxDuration", - "config", - "generateStaticParams", - "metadata", - "generateMetadata", - "viewport", - "generateViewport", - ] - : [], - ...isUsingRemix || isUsingReactRouter ? ["meta", "links", "headers", "loader", "action"] : [], + "dynamic", + "dynamicParams", + "revalidate", + "fetchCache", + "runtime", + "preferredRegion", + "maxDuration", + "config", + "generateStaticParams", + "metadata", + "generateMetadata", + "viewport", + "generateViewport", + ] + : []), + ...(isUsingRemix || isUsingReactRouter ? ["meta", "links", "headers", "loader", "action"] : []), ], }, ], @@ -257,6 +257,14 @@ export default createConfig< // React-X Rules // https://eslint-react.xyz/docs/rules + // Enforces explicit boolean values for boolean attributes + // https://eslint-react.xyz/docs/rules/avoid-shorthand-boolean + "react-x/avoid-shorthand-boolean": "off", + + // Enforces explicit components instead of the shorthand <> or syntax + // https://eslint-react.xyz/docs/rules/avoid-shorthand-fragment + "react-x/avoid-shorthand-fragment": "off", + // Enforces that the key attribute is placed before the spread attribute in JSX elements // https://eslint-react.xyz/docs/rules/jsx-key-before-spread "react-x/jsx-key-before-spread": "error", @@ -477,14 +485,6 @@ export default createConfig< // https://eslint-react.xyz/docs/rules/prefer-shorthand-fragment "react-x/prefer-shorthand-fragment": "off", - // Enforces explicit boolean values for boolean attributes - // https://eslint-react.xyz/docs/rules/avoid-shorthand-boolean - "react-x/avoid-shorthand-boolean": "off", - - // Enforces explicit components instead of the shorthand <> or syntax - // https://eslint-react.xyz/docs/rules/avoid-shorthand-fragment - "react-x/avoid-shorthand-fragment": "off", - // Prevent missing displayName in a React component definition // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/boolean-prop-naming.md "react/boolean-prop-naming": [ @@ -981,25 +981,25 @@ export default createConfig< // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/void-dom-elements-no-children.md "react/void-dom-elements-no-children": "error", - ...prettier + ...(prettier ? { - "react/jsx-child-element-spacing": "off", - "react/jsx-closing-bracket-location": "off", - "react/jsx-closing-tag-location": "off", - "react/jsx-curly-newline": "off", - "react/jsx-curly-spacing": "off", - "react/jsx-equals-spacing": "off", - "react/jsx-first-prop-new-line": "off", - "react/jsx-indent": "off", - "react/jsx-indent-props": "off", - "react/jsx-max-props-per-line": "off", - "react/jsx-newline": "off", - "react/jsx-one-expression-per-line": "off", - "react/jsx-props-no-multi-spaces": "off", - "react/jsx-tag-spacing": "off", - "react/jsx-wrap-multilines": "off", - } - : {}, + "react/jsx-child-element-spacing": "off", + "react/jsx-closing-bracket-location": "off", + "react/jsx-closing-tag-location": "off", + "react/jsx-curly-newline": "off", + "react/jsx-curly-spacing": "off", + "react/jsx-equals-spacing": "off", + "react/jsx-first-prop-new-line": "off", + "react/jsx-indent": "off", + "react/jsx-indent-props": "off", + "react/jsx-max-props-per-line": "off", + "react/jsx-newline": "off", + "react/jsx-one-expression-per-line": "off", + "react/jsx-props-no-multi-spaces": "off", + "react/jsx-tag-spacing": "off", + "react/jsx-wrap-multilines": "off", + } + : {}), // overrides ...overrides, @@ -1030,6 +1030,10 @@ export default createConfig< }, name: "anolilab/react/jsx", rules: { + // Enforces consistent use of the JSX file extension. + // https://eslint-react.xyz/docs/rules/naming-convention-filename-extension + "react-x/naming-convention/filename-extension": ["error", "as-needed"], + // only .jsx files may have JSX // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-closing-tag-location.md "react/jsx-closing-tag-location": "error", @@ -1038,10 +1042,6 @@ export default createConfig< // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-filename-extension.md "react/jsx-filename-extension": "off", - // Enforces consistent use of the JSX file extension. - // https://eslint-react.xyz/docs/rules/naming-convention-filename-extension - "react-x/naming-convention/filename-extension": ["error", "as-needed"], - // Validate closing tag location in JSX // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-wrap-multilines.md "react/jsx-wrap-multilines": [ @@ -1084,17 +1084,17 @@ export default createConfig< "react/jsx-props-no-spreading": "off", }, }, - ...isTypeAware + ...(isTypeAware ? [ - { - files: filesTypeAware, - ignores: ignoresTypeAware, - name: "anolilab/react/type-aware-rules", - rules: { - ...typeAwareRules, - }, - }, - ] - : [], + { + files: filesTypeAware, + ignores: ignoresTypeAware, + name: "anolilab/react/type-aware-rules", + rules: { + ...typeAwareRules, + }, + }, + ] + : []), ]; }); diff --git a/packages/eslint-config/src/config/plugins/regexp.ts b/packages/eslint-config/src/config/plugins/regexp.ts index 81aaeeffb..c9bdc5818 100644 --- a/packages/eslint-config/src/config/plugins/regexp.ts +++ b/packages/eslint-config/src/config/plugins/regexp.ts @@ -1,11 +1,6 @@ import { configs } from "eslint-plugin-regexp"; -import type { - OptionsFiles, - OptionsOverrides, - OptionsRegExp, - TypedFlatConfigItem, -} from "../../types"; +import type { OptionsFiles, OptionsOverrides, OptionsRegExp, TypedFlatConfigItem } from "../../types"; import { createConfig } from "../../utils/create-config"; export default createConfig("all", async (config, oFiles) => { diff --git a/packages/eslint-config/src/config/plugins/stylistic.ts b/packages/eslint-config/src/config/plugins/stylistic.ts index 9111a3d3a..79c66ad00 100644 --- a/packages/eslint-config/src/config/plugins/stylistic.ts +++ b/packages/eslint-config/src/config/plugins/stylistic.ts @@ -1,9 +1,4 @@ -import type { - OptionsHasPrettier, - OptionsOverrides, - StylisticConfig, - TypedFlatConfigItem, -} from "../../types"; +import type { OptionsHasPrettier, OptionsOverrides, StylisticConfig, TypedFlatConfigItem } from "../../types"; import interopDefault from "../../utils/interop-default"; const specialRule = 0; @@ -229,196 +224,195 @@ const stylistic = async (options: OptionsHasPrettier & OptionsOverrides & Stylis // require spaces around operators "@stylistic/space-infix-ops": "error", - "@stylistic/type-annotation-spacing": "error", "@stylistic/yield-star-spacing": ["error", { after: true, before: false }], ...overrides, - ...prettier + ...(prettier ? { - "@stylistic/array-bracket-newline": "off", - "@stylistic/array-bracket-spacing": "off", - "@stylistic/array-element-newline": "off", - "@stylistic/arrow-parens": "off", - "@stylistic/arrow-spacing": "off", - "@stylistic/block-spacing": "off", - "@stylistic/brace-style": "off", - "@stylistic/comma-dangle": "off", - "@stylistic/comma-spacing": "off", - "@stylistic/comma-style": "off", - "@stylistic/computed-property-spacing": "off", - "@stylistic/dot-location": "off", - "@stylistic/eol-last": "off", - "@stylistic/func-call-spacing": "off", - "@stylistic/function-call-argument-newline": "off", - "@stylistic/function-call-spacing": "off", - "@stylistic/function-paren-newline": "off", - "@stylistic/generator-star-spacing": "off", - "@stylistic/implicit-arrow-linebreak": "off", - "@stylistic/indent": "off", - "@stylistic/indent-binary-ops": "off", - "@stylistic/js/array-bracket-newline": "off", - "@stylistic/js/array-bracket-spacing": "off", - "@stylistic/js/array-element-newline": "off", - "@stylistic/js/arrow-parens": "off", - "@stylistic/js/arrow-spacing": "off", - "@stylistic/js/block-spacing": "off", - "@stylistic/js/brace-style": "off", - "@stylistic/js/comma-dangle": "off", - "@stylistic/js/comma-spacing": "off", - "@stylistic/js/comma-style": "off", - "@stylistic/js/computed-property-spacing": "off", - "@stylistic/js/dot-location": "off", - "@stylistic/js/eol-last": "off", - "@stylistic/js/func-call-spacing": "off", - "@stylistic/js/function-call-argument-newline": "off", - "@stylistic/js/function-call-spacing": "off", - "@stylistic/js/function-paren-newline": "off", - "@stylistic/js/generator-star-spacing": "off", - "@stylistic/js/implicit-arrow-linebreak": "off", - "@stylistic/js/indent": "off", - "@stylistic/js/jsx-quotes": "off", - "@stylistic/js/key-spacing": "off", - "@stylistic/js/keyword-spacing": "off", - "@stylistic/js/linebreak-style": "off", - "@stylistic/js/lines-around-comment": specialRule, - "@stylistic/js/max-len": specialRule, - "@stylistic/js/max-statements-per-line": "off", - "@stylistic/js/multiline-ternary": "off", - "@stylistic/js/new-parens": "off", - "@stylistic/js/newline-per-chained-call": "off", - "@stylistic/js/no-confusing-arrow": specialRule, - "@stylistic/js/no-extra-parens": "off", - "@stylistic/js/no-extra-semi": "off", - "@stylistic/js/no-floating-decimal": "off", - "@stylistic/js/no-mixed-operators": specialRule, - "@stylistic/js/no-mixed-spaces-and-tabs": "off", - "@stylistic/js/no-multi-spaces": "off", - "@stylistic/js/no-multiple-empty-lines": "off", - "@stylistic/js/no-tabs": specialRule, - "@stylistic/js/no-trailing-spaces": "off", - "@stylistic/js/no-whitespace-before-property": "off", - "@stylistic/js/nonblock-statement-body-position": "off", - "@stylistic/js/object-curly-newline": "off", - "@stylistic/js/object-curly-spacing": "off", - "@stylistic/js/object-property-newline": "off", - "@stylistic/js/one-var-declaration-per-line": "off", - "@stylistic/js/operator-linebreak": "off", - "@stylistic/js/padded-blocks": "off", - "@stylistic/js/quote-props": "off", - "@stylistic/js/quotes": specialRule, - "@stylistic/js/rest-spread-spacing": "off", - "@stylistic/js/semi": "off", - "@stylistic/js/semi-spacing": "off", - "@stylistic/js/semi-style": "off", - "@stylistic/js/space-before-blocks": "off", - "@stylistic/js/space-before-function-paren": "off", - "@stylistic/js/space-in-parens": "off", - "@stylistic/js/space-infix-ops": "off", - "@stylistic/js/space-unary-ops": "off", - "@stylistic/js/switch-colon-spacing": "off", - "@stylistic/js/template-curly-spacing": "off", - "@stylistic/js/template-tag-spacing": "off", - "@stylistic/js/wrap-iife": "off", - "@stylistic/js/wrap-regex": "off", - "@stylistic/js/yield-star-spacing": "off", - "@stylistic/jsx-child-element-spacing": "off", - "@stylistic/jsx-closing-bracket-location": "off", - "@stylistic/jsx-closing-tag-location": "off", - "@stylistic/jsx-curly-newline": "off", - "@stylistic/jsx-curly-spacing": "off", - "@stylistic/jsx-equals-spacing": "off", - "@stylistic/jsx-first-prop-new-line": "off", - "@stylistic/jsx-indent": "off", - "@stylistic/jsx-indent-props": "off", - "@stylistic/jsx-max-props-per-line": "off", - "@stylistic/jsx-newline": "off", - "@stylistic/jsx-one-expression-per-line": "off", - "@stylistic/jsx-props-no-multi-spaces": "off", - "@stylistic/jsx-quotes": "off", - "@stylistic/jsx-tag-spacing": "off", - "@stylistic/jsx-wrap-multilines": "off", - "@stylistic/jsx/jsx-child-element-spacing": "off", - "@stylistic/jsx/jsx-closing-bracket-location": "off", - "@stylistic/jsx/jsx-closing-tag-location": "off", - "@stylistic/jsx/jsx-curly-newline": "off", - "@stylistic/jsx/jsx-curly-spacing": "off", - "@stylistic/jsx/jsx-equals-spacing": "off", - "@stylistic/jsx/jsx-first-prop-new-line": "off", - "@stylistic/jsx/jsx-indent": "off", - "@stylistic/jsx/jsx-indent-props": "off", - "@stylistic/jsx/jsx-max-props-per-line": "off", - "@stylistic/key-spacing": "off", - "@stylistic/keyword-spacing": "off", - "@stylistic/linebreak-style": "off", - "@stylistic/lines-around-comment": specialRule, - "@stylistic/max-len": specialRule, - "@stylistic/max-statements-per-line": "off", - "@stylistic/member-delimiter-style": "off", - "@stylistic/multiline-ternary": "off", - "@stylistic/new-parens": "off", - "@stylistic/newline-per-chained-call": "off", - "@stylistic/no-confusing-arrow": specialRule, - "@stylistic/no-extra-parens": "off", - "@stylistic/no-extra-semi": "off", - "@stylistic/no-floating-decimal": "off", - "@stylistic/no-mixed-operators": specialRule, - "@stylistic/no-mixed-spaces-and-tabs": "off", - "@stylistic/no-multi-spaces": "off", - "@stylistic/no-multiple-empty-lines": "off", - "@stylistic/no-tabs": specialRule, - "@stylistic/no-trailing-spaces": "off", - "@stylistic/no-whitespace-before-property": "off", - "@stylistic/nonblock-statement-body-position": "off", - "@stylistic/object-curly-newline": "off", - "@stylistic/object-curly-spacing": "off", - "@stylistic/object-property-newline": "off", - "@stylistic/one-var-declaration-per-line": "off", - "@stylistic/operator-linebreak": "off", - "@stylistic/padded-blocks": "off", - "@stylistic/quote-props": "off", - "@stylistic/quotes": specialRule, - "@stylistic/rest-spread-spacing": "off", - "@stylistic/semi": "off", - "@stylistic/semi-spacing": "off", - "@stylistic/semi-style": "off", - "@stylistic/space-before-blocks": "off", - "@stylistic/space-before-function-paren": "off", - "@stylistic/space-in-parens": "off", - "@stylistic/space-infix-ops": "off", - "@stylistic/space-unary-ops": "off", - "@stylistic/switch-colon-spacing": "off", - "@stylistic/template-curly-spacing": "off", - "@stylistic/template-tag-spacing": "off", - "@stylistic/ts/block-spacing": "off", - "@stylistic/ts/brace-style": "off", - "@stylistic/ts/comma-dangle": "off", - "@stylistic/ts/comma-spacing": "off", - "@stylistic/ts/func-call-spacing": "off", - "@stylistic/ts/function-call-spacing": "off", - "@stylistic/ts/indent": "off", - "@stylistic/ts/key-spacing": "off", - "@stylistic/ts/keyword-spacing": "off", - "@stylistic/ts/lines-around-comment": specialRule, - "@stylistic/ts/member-delimiter-style": "off", - "@stylistic/ts/no-extra-parens": "off", - "@stylistic/ts/no-extra-semi": "off", - "@stylistic/ts/object-curly-spacing": "off", - "@stylistic/ts/quotes": specialRule, - "@stylistic/ts/semi": "off", - "@stylistic/ts/space-before-blocks": "off", - "@stylistic/ts/space-before-function-paren": "off", - "@stylistic/ts/space-infix-ops": "off", - "@stylistic/ts/type-annotation-spacing": "off", - "@stylistic/type-annotation-spacing": "off", - "@stylistic/type-generic-spacing": "off", - "@stylistic/type-named-tuple-spacing": "off", - "@stylistic/wrap-iife": "off", - "@stylistic/wrap-regex": "off", - "@stylistic/yield-star-spacing": "off", - } - : {}, + "@stylistic/array-bracket-newline": "off", + "@stylistic/array-bracket-spacing": "off", + "@stylistic/array-element-newline": "off", + "@stylistic/arrow-parens": "off", + "@stylistic/arrow-spacing": "off", + "@stylistic/block-spacing": "off", + "@stylistic/brace-style": "off", + "@stylistic/comma-dangle": "off", + "@stylistic/comma-spacing": "off", + "@stylistic/comma-style": "off", + "@stylistic/computed-property-spacing": "off", + "@stylistic/dot-location": "off", + "@stylistic/eol-last": "off", + "@stylistic/func-call-spacing": "off", + "@stylistic/function-call-argument-newline": "off", + "@stylistic/function-call-spacing": "off", + "@stylistic/function-paren-newline": "off", + "@stylistic/generator-star-spacing": "off", + "@stylistic/implicit-arrow-linebreak": "off", + "@stylistic/indent": "off", + "@stylistic/indent-binary-ops": "off", + "@stylistic/js/array-bracket-newline": "off", + "@stylistic/js/array-bracket-spacing": "off", + "@stylistic/js/array-element-newline": "off", + "@stylistic/js/arrow-parens": "off", + "@stylistic/js/arrow-spacing": "off", + "@stylistic/js/block-spacing": "off", + "@stylistic/js/brace-style": "off", + "@stylistic/js/comma-dangle": "off", + "@stylistic/js/comma-spacing": "off", + "@stylistic/js/comma-style": "off", + "@stylistic/js/computed-property-spacing": "off", + "@stylistic/js/dot-location": "off", + "@stylistic/js/eol-last": "off", + "@stylistic/js/func-call-spacing": "off", + "@stylistic/js/function-call-argument-newline": "off", + "@stylistic/js/function-call-spacing": "off", + "@stylistic/js/function-paren-newline": "off", + "@stylistic/js/generator-star-spacing": "off", + "@stylistic/js/implicit-arrow-linebreak": "off", + "@stylistic/js/indent": "off", + "@stylistic/js/jsx-quotes": "off", + "@stylistic/js/key-spacing": "off", + "@stylistic/js/keyword-spacing": "off", + "@stylistic/js/linebreak-style": "off", + "@stylistic/js/lines-around-comment": specialRule, + "@stylistic/js/max-len": specialRule, + "@stylistic/js/max-statements-per-line": "off", + "@stylistic/js/multiline-ternary": "off", + "@stylistic/js/new-parens": "off", + "@stylistic/js/newline-per-chained-call": "off", + "@stylistic/js/no-confusing-arrow": specialRule, + "@stylistic/js/no-extra-parens": "off", + "@stylistic/js/no-extra-semi": "off", + "@stylistic/js/no-floating-decimal": "off", + "@stylistic/js/no-mixed-operators": specialRule, + "@stylistic/js/no-mixed-spaces-and-tabs": "off", + "@stylistic/js/no-multi-spaces": "off", + "@stylistic/js/no-multiple-empty-lines": "off", + "@stylistic/js/no-tabs": specialRule, + "@stylistic/js/no-trailing-spaces": "off", + "@stylistic/js/no-whitespace-before-property": "off", + "@stylistic/js/nonblock-statement-body-position": "off", + "@stylistic/js/object-curly-newline": "off", + "@stylistic/js/object-curly-spacing": "off", + "@stylistic/js/object-property-newline": "off", + "@stylistic/js/one-var-declaration-per-line": "off", + "@stylistic/js/operator-linebreak": "off", + "@stylistic/js/padded-blocks": "off", + "@stylistic/js/quote-props": "off", + "@stylistic/js/quotes": specialRule, + "@stylistic/js/rest-spread-spacing": "off", + "@stylistic/js/semi": "off", + "@stylistic/js/semi-spacing": "off", + "@stylistic/js/semi-style": "off", + "@stylistic/js/space-before-blocks": "off", + "@stylistic/js/space-before-function-paren": "off", + "@stylistic/js/space-in-parens": "off", + "@stylistic/js/space-infix-ops": "off", + "@stylistic/js/space-unary-ops": "off", + "@stylistic/js/switch-colon-spacing": "off", + "@stylistic/js/template-curly-spacing": "off", + "@stylistic/js/template-tag-spacing": "off", + "@stylistic/js/wrap-iife": "off", + "@stylistic/js/wrap-regex": "off", + "@stylistic/js/yield-star-spacing": "off", + "@stylistic/jsx-child-element-spacing": "off", + "@stylistic/jsx-closing-bracket-location": "off", + "@stylistic/jsx-closing-tag-location": "off", + "@stylistic/jsx-curly-newline": "off", + "@stylistic/jsx-curly-spacing": "off", + "@stylistic/jsx-equals-spacing": "off", + "@stylistic/jsx-first-prop-new-line": "off", + "@stylistic/jsx-indent": "off", + "@stylistic/jsx-indent-props": "off", + "@stylistic/jsx-max-props-per-line": "off", + "@stylistic/jsx-newline": "off", + "@stylistic/jsx-one-expression-per-line": "off", + "@stylistic/jsx-props-no-multi-spaces": "off", + "@stylistic/jsx-quotes": "off", + "@stylistic/jsx-tag-spacing": "off", + "@stylistic/jsx-wrap-multilines": "off", + "@stylistic/jsx/jsx-child-element-spacing": "off", + "@stylistic/jsx/jsx-closing-bracket-location": "off", + "@stylistic/jsx/jsx-closing-tag-location": "off", + "@stylistic/jsx/jsx-curly-newline": "off", + "@stylistic/jsx/jsx-curly-spacing": "off", + "@stylistic/jsx/jsx-equals-spacing": "off", + "@stylistic/jsx/jsx-first-prop-new-line": "off", + "@stylistic/jsx/jsx-indent": "off", + "@stylistic/jsx/jsx-indent-props": "off", + "@stylistic/jsx/jsx-max-props-per-line": "off", + "@stylistic/key-spacing": "off", + "@stylistic/keyword-spacing": "off", + "@stylistic/linebreak-style": "off", + "@stylistic/lines-around-comment": specialRule, + "@stylistic/max-len": specialRule, + "@stylistic/max-statements-per-line": "off", + "@stylistic/member-delimiter-style": "off", + "@stylistic/multiline-ternary": "off", + "@stylistic/new-parens": "off", + "@stylistic/newline-per-chained-call": "off", + "@stylistic/no-confusing-arrow": specialRule, + "@stylistic/no-extra-parens": "off", + "@stylistic/no-extra-semi": "off", + "@stylistic/no-floating-decimal": "off", + "@stylistic/no-mixed-operators": specialRule, + "@stylistic/no-mixed-spaces-and-tabs": "off", + "@stylistic/no-multi-spaces": "off", + "@stylistic/no-multiple-empty-lines": "off", + "@stylistic/no-tabs": specialRule, + "@stylistic/no-trailing-spaces": "off", + "@stylistic/no-whitespace-before-property": "off", + "@stylistic/nonblock-statement-body-position": "off", + "@stylistic/object-curly-newline": "off", + "@stylistic/object-curly-spacing": "off", + "@stylistic/object-property-newline": "off", + "@stylistic/one-var-declaration-per-line": "off", + "@stylistic/operator-linebreak": "off", + "@stylistic/padded-blocks": "off", + "@stylistic/quote-props": "off", + "@stylistic/quotes": specialRule, + "@stylistic/rest-spread-spacing": "off", + "@stylistic/semi": "off", + "@stylistic/semi-spacing": "off", + "@stylistic/semi-style": "off", + "@stylistic/space-before-blocks": "off", + "@stylistic/space-before-function-paren": "off", + "@stylistic/space-in-parens": "off", + "@stylistic/space-infix-ops": "off", + "@stylistic/space-unary-ops": "off", + "@stylistic/switch-colon-spacing": "off", + "@stylistic/template-curly-spacing": "off", + "@stylistic/template-tag-spacing": "off", + "@stylistic/ts/block-spacing": "off", + "@stylistic/ts/brace-style": "off", + "@stylistic/ts/comma-dangle": "off", + "@stylistic/ts/comma-spacing": "off", + "@stylistic/ts/func-call-spacing": "off", + "@stylistic/ts/function-call-spacing": "off", + "@stylistic/ts/indent": "off", + "@stylistic/ts/key-spacing": "off", + "@stylistic/ts/keyword-spacing": "off", + "@stylistic/ts/lines-around-comment": specialRule, + "@stylistic/ts/member-delimiter-style": "off", + "@stylistic/ts/no-extra-parens": "off", + "@stylistic/ts/no-extra-semi": "off", + "@stylistic/ts/object-curly-spacing": "off", + "@stylistic/ts/quotes": specialRule, + "@stylistic/ts/semi": "off", + "@stylistic/ts/space-before-blocks": "off", + "@stylistic/ts/space-before-function-paren": "off", + "@stylistic/ts/space-infix-ops": "off", + "@stylistic/ts/type-annotation-spacing": "off", + "@stylistic/type-annotation-spacing": "off", + "@stylistic/type-generic-spacing": "off", + "@stylistic/type-named-tuple-spacing": "off", + "@stylistic/wrap-iife": "off", + "@stylistic/wrap-regex": "off", + "@stylistic/yield-star-spacing": "off", + } + : {}), }, }, ]; diff --git a/packages/eslint-config/src/config/plugins/testing-library.ts b/packages/eslint-config/src/config/plugins/testing-library.ts index cdb80c49b..111d174d8 100644 --- a/packages/eslint-config/src/config/plugins/testing-library.ts +++ b/packages/eslint-config/src/config/plugins/testing-library.ts @@ -19,7 +19,7 @@ export default createConfig( toml: pluginToml, }, rules: { - ...stylistic ? { "@stylistic/spaced-comment": "off" } : {}, + ...(stylistic ? { "@stylistic/spaced-comment": "off" } : {}), "toml/comma-style": "error", "toml/keys-order": "error", @@ -32,21 +32,21 @@ export default createConfig( "toml/vue-custom-block/no-parsing-error": "error", - ...stylistic + ...(stylistic ? { - "toml/array-bracket-newline": "error", - "toml/array-bracket-spacing": "error", - "toml/array-element-newline": "error", - "toml/indent": ["error", indent === "tab" ? 2 : indent], - "toml/inline-table-curly-spacing": "error", - "toml/key-spacing": "error", - "toml/padding-line-between-pairs": "error", - "toml/padding-line-between-tables": "error", - "toml/quoted-keys": "error", - "toml/spaced-comment": "error", - "toml/table-bracket-spacing": "error", - } - : {}, + "toml/array-bracket-newline": "error", + "toml/array-bracket-spacing": "error", + "toml/array-element-newline": "error", + "toml/indent": ["error", indent === "tab" ? 2 : indent], + "toml/inline-table-curly-spacing": "error", + "toml/key-spacing": "error", + "toml/padding-line-between-pairs": "error", + "toml/padding-line-between-tables": "error", + "toml/quoted-keys": "error", + "toml/spaced-comment": "error", + "toml/table-bracket-spacing": "error", + } + : {}), ...overrides, }, diff --git a/packages/eslint-config/src/config/plugins/typescript.ts b/packages/eslint-config/src/config/plugins/typescript.ts index 6d3a85913..7b6fbeed1 100644 --- a/packages/eslint-config/src/config/plugins/typescript.ts +++ b/packages/eslint-config/src/config/plugins/typescript.ts @@ -1,43 +1,45 @@ +import type { Linter } from "eslint"; + import type { OptionsComponentExtensions, OptionsFiles, OptionsHasPrettier, + OptionsIsInEditor, OptionsOverrides, OptionsStylistic, OptionsTypeScriptParserOptions, OptionsTypeScriptWithTypes, - OptionsIsInEditor, TypedFlatConfigItem, } from "../../types"; import { createConfig, getFilesGlobs } from "../../utils/create-config"; import interopDefault from "../../utils/interop-default"; import { bestPracticesRules } from "../best-practices"; -import { es6Rules as es6RulesFn } from "../es6"; +import { es6Rules as es6RulesFunction } from "../es6"; import { styleRules } from "../style"; import { variablesRules } from "../variables"; export default createConfig< OptionsComponentExtensions & - OptionsFiles & - OptionsHasPrettier & - OptionsOverrides & - OptionsStylistic & - OptionsTypeScriptParserOptions & - OptionsTypeScriptWithTypes & - OptionsIsInEditor + OptionsFiles & + OptionsHasPrettier & + OptionsIsInEditor & + OptionsOverrides & + OptionsStylistic & + OptionsTypeScriptParserOptions & + OptionsTypeScriptWithTypes >("ts", async (config, oFiles) => { const { componentExts: componentExtensions = [], files = oFiles, + isInEditor = false, overrides, overridesTypeAware, parserOptions, prettier, stylistic = true, - isInEditor = false } = config; - const es6Rules = es6RulesFn(isInEditor); + const es6Rules = es6RulesFunction(isInEditor); const [pluginTs, parserTs, tseslint, noForOfArrayPlugin] = await Promise.all([ interopDefault(import("@typescript-eslint/eslint-plugin")), @@ -53,22 +55,22 @@ export default createConfig< const makeParser = (typeAware: boolean, pFiles: string[], ignores?: string[]): TypedFlatConfigItem => { return { - files: [...pFiles, ...componentExtensions.map(extension => `**/*.${extension}`)], - ...ignores ? { ignores } : {}, + files: [...pFiles, ...componentExtensions.map((extension) => `**/*.${extension}`)], + ...(ignores ? { ignores } : {}), languageOptions: { parser: parserTs, parserOptions: { - extraFileExtensions: componentExtensions.map(extension => `.${extension}`), + extraFileExtensions: componentExtensions.map((extension) => `.${extension}`), sourceType: "module", - ...typeAware + ...(typeAware ? { - projectService: { - allowDefaultProject: ["./*.js"], - defaultProject: tsconfigPath, - }, - tsconfigRootDir: process.cwd(), - } - : {}, + projectService: { + allowDefaultProject: ["./*.js"], + defaultProject: tsconfigPath, + }, + tsconfigRootDir: process.cwd(), + } + : {}), // eslint-disable-next-line @typescript-eslint/no-explicit-any ...(parserOptions as any), }, @@ -87,7 +89,7 @@ export default createConfig< }, }, // assign type-aware parser for type-aware files and type-unaware parser for the rest - ...isTypeAware ? [makeParser(false, files), makeParser(true, filesTypeAware, ignoresTypeAware)] : [makeParser(false, files)], + ...(isTypeAware ? [makeParser(false, files), makeParser(true, filesTypeAware, ignoresTypeAware)] : [makeParser(false, files)]), ...(tseslint.configs.strict as TypedFlatConfigItem[]), ]; @@ -95,7 +97,7 @@ export default createConfig< rules.push( ...(tseslint.configs.strictTypeCheckedOnly as TypedFlatConfigItem[]), { - files: [...filesTypeAware, ...componentExtensions.map(extension => `**/*.${extension}`)], + files: [...filesTypeAware, ...componentExtensions.map((extension) => `**/*.${extension}`)], name: "anolilab/typescript/rules-type-aware", rules: { // Disallow type assertions that do not change the type of expression. @@ -168,9 +170,16 @@ export default createConfig< }, ], - // Enforce specifying generic type arguments on constructor name of a constructor call. - // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/consistent-generic-constructors.md - "@typescript-eslint/consistent-generic-constructors": "error", + "@typescript-eslint/ban-ts-comment": [ + "error", + { + minimumDescriptionLength: 3, + "ts-check": false, + "ts-expect-error": "allow-with-description", + "ts-ignore": "allow-with-description", + "ts-nocheck": true, + }, + ], // @TODO: Fix this rule // Some built-in types have aliases, while some types are considered dangerous or harmful. @@ -189,13 +198,20 @@ export default createConfig< // }, // ], + // Enforce specifying generic type arguments on constructor name of a constructor call. + // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/consistent-generic-constructors.md + "@typescript-eslint/consistent-generic-constructors": "error", + // Enforce consistent usage of type imports. // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/consistent-type-imports.md - "@typescript-eslint/consistent-type-imports": ["error", { - disallowTypeAnnotations: false, - fixStyle: "separate-type-imports", - prefer: "type-imports", - }], + "@typescript-eslint/consistent-type-imports": [ + "error", + { + disallowTypeAnnotations: false, + fixStyle: "separate-type-imports", + prefer: "type-imports", + }, + ], // Require explicit accessibility modifiers on class properties and methods. // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/explicit-member-accessibility.md @@ -255,7 +271,7 @@ export default createConfig< // Replace 'no-array-constructor' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-array-constructor.md - "@typescript-eslint/no-array-constructor": styleRules["no-array-constructor"] ? (Array.isArray(styleRules["no-array-constructor"]) ? styleRules["no-array-constructor"][0] : styleRules["no-array-constructor"]) : "off", + "@typescript-eslint/no-array-constructor": styleRules["no-array-constructor"] as Linter.RuleEntry<[]>, // Disallow non-null assertion in locations that may be confusing. // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/no-confusing-non-null-assertion.md @@ -263,7 +279,7 @@ export default createConfig< // Replace 'no-dupe-class-members' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-dupe-class-members.md - "@typescript-eslint/no-dupe-class-members": es6Rules["no-dupe-class-members"] ? (Array.isArray(es6Rules["no-dupe-class-members"]) ? es6Rules["no-dupe-class-members"][0] : es6Rules["no-dupe-class-members"]) : "off", + "@typescript-eslint/no-dupe-class-members": es6Rules["no-dupe-class-members"] as Linter.RuleEntry<[]>, // Disallow duplicate enum member values. // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/no-duplicate-enum-values.md @@ -275,7 +291,7 @@ export default createConfig< // Replace 'no-empty-function' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-empty-function.md - "@typescript-eslint/no-empty-function": bestPracticesRules["no-empty-function"] ? (Array.isArray(bestPracticesRules["no-empty-function"]) ? bestPracticesRules["no-empty-function"][0] : bestPracticesRules["no-empty-function"]) : "off", + "@typescript-eslint/no-empty-function": bestPracticesRules["no-empty-function"] as Linter.RuleEntry<[]>, // Disallow extra non-null assertions. // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/no-extra-non-null-assertion.md @@ -290,11 +306,11 @@ export default createConfig< // Replace 'no-loop-func' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-loop-func.md - "@typescript-eslint/no-loop-func": bestPracticesRules["no-loop-func"] ? (Array.isArray(bestPracticesRules["no-loop-func"]) ? bestPracticesRules["no-loop-func"][0] : bestPracticesRules["no-loop-func"]) : "off", + "@typescript-eslint/no-loop-func": bestPracticesRules["no-loop-func"] as Linter.RuleEntry<[]>, // Replace 'no-magic-numbers' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-magic-numbers.md - "@typescript-eslint/no-magic-numbers": bestPracticesRules["no-magic-numbers"] ? (Array.isArray(bestPracticesRules["no-magic-numbers"]) ? bestPracticesRules["no-magic-numbers"][0] : bestPracticesRules["no-magic-numbers"]) : "off", + "@typescript-eslint/no-magic-numbers": bestPracticesRules["no-magic-numbers"] as Linter.RuleEntry<[]>, // Enforce valid definition of new and constructor. // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/no-misused-new.md @@ -318,7 +334,7 @@ export default createConfig< // Replace 'no-redeclare' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-redeclare.md - "@typescript-eslint/no-redeclare": bestPracticesRules["no-redeclare"] ? (Array.isArray(bestPracticesRules["no-redeclare"]) ? bestPracticesRules["no-redeclare"][0] : bestPracticesRules["no-redeclare"]) : "off", + "@typescript-eslint/no-redeclare": bestPracticesRules["no-redeclare"] as Linter.RuleEntry<[]>, // Disallow invocation of require(). // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/no-require-imports.md @@ -326,7 +342,7 @@ export default createConfig< // Replace 'no-shadow' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-shadow.md - "@typescript-eslint/no-shadow": variablesRules["no-shadow"] ? (Array.isArray(variablesRules["no-shadow"]) ? variablesRules["no-shadow"][0] : variablesRules["no-shadow"]) : "off", + "@typescript-eslint/no-shadow": variablesRules["no-shadow"] as Linter.RuleEntry<[]>, // Disallow aliasing this. // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/no-this-alias.md @@ -342,19 +358,19 @@ export default createConfig< // Replace 'no-unused-expressions' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-unused-expressions.md - "@typescript-eslint/no-unused-expressions": bestPracticesRules["no-unused-expressions"] ? (Array.isArray(bestPracticesRules["no-unused-expressions"]) ? bestPracticesRules["no-unused-expressions"][0] : bestPracticesRules["no-unused-expressions"]) : "off", + "@typescript-eslint/no-unused-expressions": bestPracticesRules["no-unused-expressions"] as Linter.RuleEntry<[]>, // Replace 'no-unused-vars' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-unused-vars.md - "@typescript-eslint/no-unused-vars": variablesRules["no-unused-vars"] ? (Array.isArray(variablesRules["no-unused-vars"]) ? variablesRules["no-unused-vars"][0] : variablesRules["no-unused-vars"]) : "off", + "@typescript-eslint/no-unused-vars": variablesRules["no-unused-vars"] as Linter.RuleEntry<[]>, // Replace 'no-use-before-define' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-use-before-define.md - "@typescript-eslint/no-use-before-define": variablesRules["no-use-before-define"] ? (Array.isArray(variablesRules["no-use-before-define"]) ? variablesRules["no-use-before-define"][0] : variablesRules["no-use-before-define"]) : "off", + "@typescript-eslint/no-use-before-define": variablesRules["no-use-before-define"] as Linter.RuleEntry<[]>, // Replace 'no-useless-constructor' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-useless-constructor.md - "@typescript-eslint/no-useless-constructor": es6Rules["no-useless-constructor"] ? (Array.isArray(es6Rules["no-useless-constructor"]) ? es6Rules["no-useless-constructor"][0] : es6Rules["no-useless-constructor"]) : "off", + "@typescript-eslint/no-useless-constructor": es6Rules["no-useless-constructor"] as Linter.RuleEntry<[]>, // Disallow empty exports that don't change anything in a module file. // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/no-useless-empty-export.md @@ -374,20 +390,18 @@ export default createConfig< // Disabled to use faster alternatives. "@typescript-eslint/prefer-string-starts-ends-with": "off", - // Enforce using @ts-expect-error over @ts-ignore. // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/prefer-ts-expect-error.md // DEPRECATED: in favor of ban-ts-comment "@typescript-eslint/prefer-ts-expect-error": "off", - "@typescript-eslint/ban-ts-comment": ["error", { "ts-expect-error": "allow-with-description", "ts-ignore": "allow-with-description", "ts-nocheck": true, "ts-check": false, minimumDescriptionLength: 3 }], // Replace 'no-return-await' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/return-await.md - "@typescript-eslint/return-await": bestPracticesRules["no-return-await"] ? (Array.isArray(bestPracticesRules["no-return-await"]) ? bestPracticesRules["no-return-await"][0] : bestPracticesRules["no-return-await"]) : "off", + "@typescript-eslint/return-await": bestPracticesRules["no-return-await"] as Linter.RuleEntry<[]>, // Replace 'semi' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/semi.md - "@typescript-eslint/semi": styleRules["semi"] ? (Array.isArray(styleRules["semi"]) ? styleRules["semi"][0] : styleRules["semi"]) : "off", + "@typescript-eslint/semi": styleRules["semi"] as Linter.RuleEntry<[]>, // Enforce constituents of a type union/intersection to be sorted alphabetically. // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/sort-type-constituents.md @@ -395,38 +409,38 @@ export default createConfig< // Replace 'space-before-function-paren' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/space-before-function-paren.md - "@typescript-eslint/space-before-function-paren": styleRules["space-before-function-paren"] ? (Array.isArray(styleRules["space-before-function-paren"]) ? styleRules["space-before-function-paren"][0] : styleRules["space-before-function-paren"]) : "off", + "@typescript-eslint/space-before-function-paren": styleRules["space-before-function-paren"] as Linter.RuleEntry<[]>, // Replace 'space-infix-ops' rule with '@typescript-eslint' version // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/space-infix-ops.md - "@typescript-eslint/space-infix-ops": styleRules["space-infix-ops"] ? (Array.isArray(styleRules["space-infix-ops"]) ? styleRules["space-infix-ops"][0] : styleRules["space-infix-ops"]) : "off", + "@typescript-eslint/space-infix-ops": styleRules["space-infix-ops"] as Linter.RuleEntry<[]>, ...overrides, // Disable rules that are handled by prettier - ...prettier + ...(prettier ? { - "@typescript-eslint/block-spacing": "off", - "@typescript-eslint/brace-style": "off", - "@typescript-eslint/comma-dangle": "off", - "@typescript-eslint/comma-spacing": "off", - "@typescript-eslint/func-call-spacing": "off", - "@typescript-eslint/indent": "off", - "@typescript-eslint/key-spacing": "off", - "@typescript-eslint/keyword-spacing": "off", - "@typescript-eslint/lines-around-comment": 0, - "@typescript-eslint/member-delimiter-style": "off", - "@typescript-eslint/no-extra-parens": "off", - "@typescript-eslint/no-extra-semi": "off", - "@typescript-eslint/object-curly-spacing": "off", - "@typescript-eslint/quotes": 0, - "@typescript-eslint/semi": "off", - "@typescript-eslint/space-before-blocks": "off", - "@typescript-eslint/space-before-function-paren": "off", - "@typescript-eslint/space-infix-ops": "off", - "@typescript-eslint/type-annotation-spacing": "off", - } - : {}, + "@typescript-eslint/block-spacing": "off", + "@typescript-eslint/brace-style": "off", + "@typescript-eslint/comma-dangle": "off", + "@typescript-eslint/comma-spacing": "off", + "@typescript-eslint/func-call-spacing": "off", + "@typescript-eslint/indent": "off", + "@typescript-eslint/key-spacing": "off", + "@typescript-eslint/keyword-spacing": "off", + "@typescript-eslint/lines-around-comment": 0, + "@typescript-eslint/member-delimiter-style": "off", + "@typescript-eslint/no-extra-parens": "off", + "@typescript-eslint/no-extra-semi": "off", + "@typescript-eslint/object-curly-spacing": "off", + "@typescript-eslint/quotes": 0, + "@typescript-eslint/semi": "off", + "@typescript-eslint/space-before-blocks": "off", + "@typescript-eslint/space-before-function-paren": "off", + "@typescript-eslint/space-infix-ops": "off", + "@typescript-eslint/type-annotation-spacing": "off", + } + : {}), }, }); diff --git a/packages/eslint-config/src/config/plugins/unicorn.ts b/packages/eslint-config/src/config/plugins/unicorn.ts index 8bae748da..1e2336ff1 100644 --- a/packages/eslint-config/src/config/plugins/unicorn.ts +++ b/packages/eslint-config/src/config/plugins/unicorn.ts @@ -1,23 +1,11 @@ import globals from "globals"; -import type { - OptionsFiles, - OptionsHasPrettier, - OptionsOverrides, - OptionsPackageJson, - OptionsStylistic, -} from "../../types"; +import type { OptionsFiles, OptionsHasPrettier, OptionsOverrides, OptionsPackageJson, OptionsStylistic } from "../../types"; import { createConfig } from "../../utils/create-config"; import interopDefault from "../../utils/interop-default"; export default createConfig("all", async (config, oFiles) => { - const { - files = oFiles, - overrides, - packageJson, - prettier, - stylistic = true, - } = config; + const { files = oFiles, overrides, packageJson, prettier, stylistic = true } = config; const { indent = 4 } = typeof stylistic === "boolean" ? {} : stylistic; @@ -74,16 +62,16 @@ export default createConfig => }, rules: { "unocss/order": "warn", - ...attributify + ...(attributify ? { - "unocss/order-attributify": "warn", - } - : {}, - ...strict + "unocss/order-attributify": "warn", + } + : {}), + ...(strict ? { - "unocss/blocklist": "error", - } - : {}, + "unocss/blocklist": "error", + } + : {}), }, }, ]; diff --git a/packages/eslint-config/src/config/plugins/vitest.ts b/packages/eslint-config/src/config/plugins/vitest.ts index 3c883791b..b7744a850 100644 --- a/packages/eslint-config/src/config/plugins/vitest.ts +++ b/packages/eslint-config/src/config/plugins/vitest.ts @@ -1,10 +1,4 @@ -import type { - OptionsFiles, - OptionsHasPrettier, - OptionsIsInEditor, - OptionsOverrides, - OptionsTypeScriptWithTypes, -} from "../../types"; +import type { OptionsFiles, OptionsHasPrettier, OptionsIsInEditor, OptionsOverrides, OptionsTypeScriptWithTypes } from "../../types"; import { createConfig } from "../../utils/create-config"; import interopDefault from "../../utils/interop-default"; import vitestGlobals from "../../utils/vitest-globals"; @@ -16,13 +10,7 @@ let pluginTest: any; export default createConfig( "vitest", async (config, oFiles) => { - const { - files = oFiles, - isInEditor = false, - overrides, - prettier, - tsconfigPath, - } = config; + const { files = oFiles, isInEditor = false, overrides, prettier, tsconfigPath } = config; const [vitestPlugin, noOnlyTestsPlugin] = await Promise.all([ interopDefault(import("@vitest/eslint-plugin")), @@ -48,16 +36,16 @@ export default createConfig("yaml", async (options, oFiles) => { - const { - files = oFiles, - overrides = {}, - prettier, - stylistic = true, - } = options; + const { files = oFiles, overrides = {}, prettier, stylistic = true } = options; const { indent = 4, quotes = "double" } = typeof stylistic === "boolean" ? {} : stylistic; @@ -41,57 +31,57 @@ export default createConfig = { // https://eslint.org/docs/rules/max-len "max-len": [ "error", - 160, + 180, 2, { ignoreComments: false, @@ -336,7 +336,7 @@ export const styleRules: Partial = { }, { message: "Use `.toString()` instead of template literal if you want to convert a value to string.", - selector: "TemplateLiteral[quasis.0.value.raw=\"\"][quasis.1.tail=true][quasis.1.value.raw=\"\"]", + selector: 'TemplateLiteral[quasis.0.value.raw=""][quasis.1.tail=true][quasis.1.value.raw=""]', }, ], @@ -517,77 +517,77 @@ export default createConfig("all", async (con ...styleRules, "quote-props": "off", - ...prettier + ...(prettier ? { - // The rest are rules that you never need to enable when using Prettier. - "array-bracket-newline": "off", - "array-bracket-spacing": "off", - "array-element-newline": "off", - "arrow-parens": "off", - "arrow-spacing": "off", - "block-spacing": "off", - "brace-style": "off", - "comma-dangle": "off", - - "comma-spacing": "off", - "comma-style": "off", - "computed-property-spacing": "off", - // script can distinguish them. - curly: 0, - "dot-location": "off", - "eol-last": "off", - "func-call-spacing": "off", - "function-call-argument-newline": "off", - "function-paren-newline": "off", - "generator-star-spacing": "off", - "implicit-arrow-linebreak": "off", - indent: "off", - "jsx-quotes": "off", - "key-spacing": "off", - "keyword-spacing": "off", - "linebreak-style": "off", - "lines-around-comment": 0, - "max-len": 0, - "max-statements-per-line": "off", - "multiline-ternary": "off", - "new-parens": "off", - "newline-per-chained-call": "off", - "no-confusing-arrow": 0, - "no-extra-parens": "off", - "no-extra-semi": "off", - "no-floating-decimal": "off", - "no-mixed-operators": 0, - "no-mixed-spaces-and-tabs": "off", - "no-multi-spaces": "off", - "no-multiple-empty-lines": "off", - "no-tabs": 0, - "no-trailing-spaces": "off", - "no-unexpected-multiline": 0, - "no-whitespace-before-property": "off", - "nonblock-statement-body-position": "off", - "object-curly-newline": "off", - "object-curly-spacing": "off", - "object-property-newline": "off", - "one-var-declaration-per-line": "off", - "operator-linebreak": "off", - "padded-blocks": "off", - quotes: 0, - "rest-spread-spacing": "off", - semi: "off", - "semi-spacing": "off", - "semi-style": "off", - "space-before-blocks": "off", - "space-before-function-paren": "off", - "space-in-parens": "off", - "space-unary-ops": "off", - "switch-colon-spacing": "off", - "template-curly-spacing": "off", - "template-tag-spacing": "off", - "wrap-iife": "off", - "wrap-regex": "off", - "yield-star-spacing": "off", - } - : {}, + // The rest are rules that you never need to enable when using Prettier. + "array-bracket-newline": "off", + "array-bracket-spacing": "off", + "array-element-newline": "off", + "arrow-parens": "off", + "arrow-spacing": "off", + "block-spacing": "off", + "brace-style": "off", + "comma-dangle": "off", + + "comma-spacing": "off", + "comma-style": "off", + "computed-property-spacing": "off", + // script can distinguish them. + curly: 0, + "dot-location": "off", + "eol-last": "off", + "func-call-spacing": "off", + "function-call-argument-newline": "off", + "function-paren-newline": "off", + "generator-star-spacing": "off", + "implicit-arrow-linebreak": "off", + indent: "off", + "jsx-quotes": "off", + "key-spacing": "off", + "keyword-spacing": "off", + "linebreak-style": "off", + "lines-around-comment": 0, + "max-len": 0, + "max-statements-per-line": "off", + "multiline-ternary": "off", + "new-parens": "off", + "newline-per-chained-call": "off", + "no-confusing-arrow": 0, + "no-extra-parens": "off", + "no-extra-semi": "off", + "no-floating-decimal": "off", + "no-mixed-operators": 0, + "no-mixed-spaces-and-tabs": "off", + "no-multi-spaces": "off", + "no-multiple-empty-lines": "off", + "no-tabs": 0, + "no-trailing-spaces": "off", + "no-unexpected-multiline": 0, + "no-whitespace-before-property": "off", + "nonblock-statement-body-position": "off", + "object-curly-newline": "off", + "object-curly-spacing": "off", + "object-property-newline": "off", + "one-var-declaration-per-line": "off", + "operator-linebreak": "off", + "padded-blocks": "off", + quotes: 0, + "rest-spread-spacing": "off", + semi: "off", + "semi-spacing": "off", + "semi-style": "off", + "space-before-blocks": "off", + "space-before-function-paren": "off", + "space-in-parens": "off", + "space-unary-ops": "off", + "switch-colon-spacing": "off", + "template-curly-spacing": "off", + "template-tag-spacing": "off", + "wrap-iife": "off", + "wrap-regex": "off", + "yield-star-spacing": "off", + } + : {}), }, }, { diff --git a/packages/eslint-config/src/index.ts b/packages/eslint-config/src/index.ts index f4cec85ff..240e5062f 100644 --- a/packages/eslint-config/src/index.ts +++ b/packages/eslint-config/src/index.ts @@ -49,15 +49,7 @@ import zod from "./config/plugins/zod"; import style from "./config/style"; import variables from "./config/variables"; import type { RuleOptions } from "./typegen"; -import type { - Awaitable, - ConfigNames, - OptionsConfig, - OptionsFiles, - OptionsOverrides, - StylisticConfig, - TypedFlatConfigItem, -} from "./types"; +import type { Awaitable, ConfigNames, OptionsConfig, OptionsFiles, OptionsOverrides, StylisticConfig, TypedFlatConfigItem } from "./types"; import { getFilesGlobs } from "./utils/create-config"; import interopDefault from "./utils/interop-default"; import isInEditorEnvironment from "./utils/is-in-editor-environment"; @@ -77,7 +69,7 @@ export const getOverrides = (options: OptionsConf return { // eslint-disable-next-line @typescript-eslint/no-explicit-any ...(options.overrides as any)?.[key], - ..."overrides" in sub ? sub.overrides : {}, + ...("overrides" in sub ? sub.overrides : {}), }; }; @@ -112,7 +104,7 @@ export const createConfig = async ( ): Promise> => { if ("files" in options) { throw new Error( - "[@anolilab/eslint-config] The first argument should not contain the \"files\" property as the options are supposed to be global. Place it in the second or later config instead.", + '[@anolilab/eslint-config] The first argument should not contain the "files" property as the options are supposed to be global. Place it in the second or later config instead.', ); } @@ -529,7 +521,8 @@ export const createConfig = async ( await ensurePackages(packageJson, packages, "devDependencies", { confirm: { - message: (list: string[]) => `@anolilab/eslint-config requires the following ${list.length === 1 ? "package" : "packages"} to be installed: \n\n"${list.join("\"\n\"")}"\n\nfor the ESLint configurations to work correctly. Do you want to install ${packages.length === 1 ? "it" : "them"} now?`, + message: (list: string[]) => + `@anolilab/eslint-config requires the following ${list.length === 1 ? "package" : "packages"} to be installed: \n\n"${list.join('"\n"')}"\n\nfor the ESLint configurations to work correctly. Do you want to install ${packages.length === 1 ? "it" : "them"} now?`, }, }); } @@ -562,7 +555,7 @@ export const createConfig = async ( if (enableGitignore) { if (typeof enableGitignore === "boolean") { configs.push( - interopDefault(import("eslint-config-flat-gitignore")).then(r => [ + interopDefault(import("eslint-config-flat-gitignore")).then((r) => [ r({ name: "anolilab/gitignore", strict: false, @@ -571,7 +564,7 @@ export const createConfig = async ( ); } else { configs.push( - interopDefault(import("eslint-config-flat-gitignore")).then(r => [ + interopDefault(import("eslint-config-flat-gitignore")).then((r) => [ r({ name: "anolilab/gitignore", ...enableGitignore, @@ -912,7 +905,7 @@ export const createConfig = async ( svg: isPrettierPluginXmlInScope, xml: isPrettierPluginXmlInScope, - ...typeof options.formatters === "object" ? options.formatters : {}, + ...(typeof options.formatters === "object" ? options.formatters : {}), }, typeof stylisticOptions === "object" ? stylisticOptions : {}, ), diff --git a/packages/eslint-config/src/typegen.d.ts b/packages/eslint-config/src/typegen.d.ts index 8789925cd..a7fa48635 100644 --- a/packages/eslint-config/src/typegen.d.ts +++ b/packages/eslint-config/src/typegen.d.ts @@ -3,16191 +3,25104 @@ import type { Linter } from 'eslint' export interface RuleOptions { - /** - * Enforce linebreaks after opening and before closing array brackets - * @see https://eslint.style/rules/js/array-bracket-newline - */ - '@stylistic/array-bracket-newline'?: Linter.RuleEntry - /** - * Enforce consistent spacing inside array brackets - * @see https://eslint.style/rules/js/array-bracket-spacing - */ - '@stylistic/array-bracket-spacing'?: Linter.RuleEntry - /** - * Enforce line breaks after each array element - * @see https://eslint.style/rules/js/array-element-newline - */ - '@stylistic/array-element-newline'?: Linter.RuleEntry - /** - * Require parentheses around arrow function arguments - * @see https://eslint.style/rules/js/arrow-parens - */ - '@stylistic/arrow-parens'?: Linter.RuleEntry - /** - * Enforce consistent spacing before and after the arrow in arrow functions - * @see https://eslint.style/rules/js/arrow-spacing - */ - '@stylistic/arrow-spacing'?: Linter.RuleEntry - /** - * Disallow or enforce spaces inside of blocks after opening block and before closing block - * @see https://eslint.style/rules/ts/block-spacing - */ - '@stylistic/block-spacing'?: Linter.RuleEntry - /** - * Enforce consistent brace style for blocks - * @see https://eslint.style/rules/ts/brace-style - */ - '@stylistic/brace-style'?: Linter.RuleEntry - /** - * Require or disallow trailing commas - * @see https://eslint.style/rules/ts/comma-dangle - */ - '@stylistic/comma-dangle'?: Linter.RuleEntry - /** - * Enforce consistent spacing before and after commas - * @see https://eslint.style/rules/ts/comma-spacing - */ - '@stylistic/comma-spacing'?: Linter.RuleEntry - /** - * Enforce consistent comma style - * @see https://eslint.style/rules/js/comma-style - */ - '@stylistic/comma-style'?: Linter.RuleEntry - /** - * Enforce consistent spacing inside computed property brackets - * @see https://eslint.style/rules/js/computed-property-spacing - */ - '@stylistic/computed-property-spacing'?: Linter.RuleEntry - /** - * Enforce consistent line breaks after opening and before closing braces - * @see https://eslint.style/rules/plus/curly-newline - */ - '@stylistic/curly-newline'?: Linter.RuleEntry - /** - * Enforce consistent newlines before and after dots - * @see https://eslint.style/rules/js/dot-location - */ - '@stylistic/dot-location'?: Linter.RuleEntry - /** - * Require or disallow newline at the end of files - * @see https://eslint.style/rules/js/eol-last - */ - '@stylistic/eol-last'?: Linter.RuleEntry - /** - * Require or disallow spacing between function identifiers and their invocations - * @see https://eslint.style/rules/ts/function-call-spacing - */ - '@stylistic/func-call-spacing'?: Linter.RuleEntry - /** - * Enforce line breaks between arguments of a function call - * @see https://eslint.style/rules/js/function-call-argument-newline - */ - '@stylistic/function-call-argument-newline'?: Linter.RuleEntry - /** - * Require or disallow spacing between function identifiers and their invocations - * @see https://eslint.style/rules/ts/function-call-spacing - */ - '@stylistic/function-call-spacing'?: Linter.RuleEntry - /** - * Enforce consistent line breaks inside function parentheses - * @see https://eslint.style/rules/js/function-paren-newline - */ - '@stylistic/function-paren-newline'?: Linter.RuleEntry - /** - * Enforce consistent spacing around `*` operators in generator functions - * @see https://eslint.style/rules/js/generator-star-spacing - */ - '@stylistic/generator-star-spacing'?: Linter.RuleEntry - /** - * Enforce the location of arrow function bodies - * @see https://eslint.style/rules/js/implicit-arrow-linebreak - */ - '@stylistic/implicit-arrow-linebreak'?: Linter.RuleEntry - /** - * Enforce consistent indentation - * @see https://eslint.style/rules/ts/indent - */ - '@stylistic/indent'?: Linter.RuleEntry - /** - * Indentation for binary operators - * @see https://eslint.style/rules/plus/indent-binary-ops - */ - '@stylistic/indent-binary-ops'?: Linter.RuleEntry - /** - * Enforce or disallow spaces inside of curly braces in JSX attributes and expressions - * @see https://eslint.style/rules/jsx/jsx-child-element-spacing - */ - '@stylistic/jsx-child-element-spacing'?: Linter.RuleEntry<[]> - /** - * Enforce closing bracket location in JSX - * @see https://eslint.style/rules/jsx/jsx-closing-bracket-location - */ - '@stylistic/jsx-closing-bracket-location'?: Linter.RuleEntry - /** - * Enforce closing tag location for multiline JSX - * @see https://eslint.style/rules/jsx/jsx-closing-tag-location - */ - '@stylistic/jsx-closing-tag-location'?: Linter.RuleEntry - /** - * Disallow unnecessary JSX expressions when literals alone are sufficient or enforce JSX expressions on literals in JSX children or attributes - * @see https://eslint.style/rules/jsx/jsx-curly-brace-presence - */ - '@stylistic/jsx-curly-brace-presence'?: Linter.RuleEntry - /** - * Enforce consistent linebreaks in curly braces in JSX attributes and expressions - * @see https://eslint.style/rules/jsx/jsx-curly-newline - */ - '@stylistic/jsx-curly-newline'?: Linter.RuleEntry - /** - * Enforce or disallow spaces inside of curly braces in JSX attributes and expressions - * @see https://eslint.style/rules/jsx/jsx-curly-spacing - */ - '@stylistic/jsx-curly-spacing'?: Linter.RuleEntry - /** - * Enforce or disallow spaces around equal signs in JSX attributes - * @see https://eslint.style/rules/jsx/jsx-equals-spacing - */ - '@stylistic/jsx-equals-spacing'?: Linter.RuleEntry - /** - * Enforce proper position of the first property in JSX - * @see https://eslint.style/rules/jsx/jsx-first-prop-new-line - */ - '@stylistic/jsx-first-prop-new-line'?: Linter.RuleEntry - /** - * Enforce line breaks before and after JSX elements when they are used as arguments to a function. - * @see https://eslint.style/rules/jsx/jsx-function-call-newline - */ - '@stylistic/jsx-function-call-newline'?: Linter.RuleEntry - /** - * Enforce JSX indentation. Deprecated, use `indent` rule instead. - * @see https://eslint.style/rules/jsx/jsx-indent - * @deprecated - */ - '@stylistic/jsx-indent'?: Linter.RuleEntry - /** - * Enforce props indentation in JSX - * @see https://eslint.style/rules/jsx/jsx-indent-props - */ - '@stylistic/jsx-indent-props'?: Linter.RuleEntry - /** - * Enforce maximum of props on a single line in JSX - * @see https://eslint.style/rules/jsx/jsx-max-props-per-line - */ - '@stylistic/jsx-max-props-per-line'?: Linter.RuleEntry - /** - * Require or prevent a new line after jsx elements and expressions. - * @see https://eslint.style/rules/jsx/jsx-newline - */ - '@stylistic/jsx-newline'?: Linter.RuleEntry - /** - * Require one JSX element per line - * @see https://eslint.style/rules/jsx/jsx-one-expression-per-line - */ - '@stylistic/jsx-one-expression-per-line'?: Linter.RuleEntry - /** - * Enforce PascalCase for user-defined JSX components - * @see https://eslint.style/rules/jsx/jsx-pascal-case - */ - '@stylistic/jsx-pascal-case'?: Linter.RuleEntry - /** - * Disallow multiple spaces between inline JSX props - * @see https://eslint.style/rules/jsx/jsx-props-no-multi-spaces - */ - '@stylistic/jsx-props-no-multi-spaces'?: Linter.RuleEntry<[]> - /** - * Enforce the consistent use of either double or single quotes in JSX attributes - * @see https://eslint.style/rules/js/jsx-quotes - */ - '@stylistic/jsx-quotes'?: Linter.RuleEntry - /** - * Disallow extra closing tags for components without children - * @see https://eslint.style/rules/jsx/jsx-self-closing-comp - */ - '@stylistic/jsx-self-closing-comp'?: Linter.RuleEntry - /** - * Enforce props alphabetical sorting - * @see https://eslint.style/rules/jsx/jsx-sort-props - */ - '@stylistic/jsx-sort-props'?: Linter.RuleEntry - /** - * Enforce whitespace in and around the JSX opening and closing brackets - * @see https://eslint.style/rules/jsx/jsx-tag-spacing - */ - '@stylistic/jsx-tag-spacing'?: Linter.RuleEntry - /** - * Disallow missing parentheses around multiline JSX - * @see https://eslint.style/rules/jsx/jsx-wrap-multilines - */ - '@stylistic/jsx-wrap-multilines'?: Linter.RuleEntry - /** - * Enforce consistent spacing between property names and type annotations in types and interfaces - * @see https://eslint.style/rules/ts/key-spacing - */ - '@stylistic/key-spacing'?: Linter.RuleEntry - /** - * Enforce consistent spacing before and after keywords - * @see https://eslint.style/rules/ts/keyword-spacing - */ - '@stylistic/keyword-spacing'?: Linter.RuleEntry - /** - * Enforce position of line comments - * @see https://eslint.style/rules/js/line-comment-position - */ - '@stylistic/line-comment-position'?: Linter.RuleEntry - /** - * Enforce consistent linebreak style - * @see https://eslint.style/rules/js/linebreak-style - */ - '@stylistic/linebreak-style'?: Linter.RuleEntry - /** - * Require empty lines around comments - * @see https://eslint.style/rules/ts/lines-around-comment - */ - '@stylistic/lines-around-comment'?: Linter.RuleEntry - /** - * Require or disallow an empty line between class members - * @see https://eslint.style/rules/ts/lines-between-class-members - */ - '@stylistic/lines-between-class-members'?: Linter.RuleEntry - /** - * Enforce a maximum line length - * @see https://eslint.style/rules/js/max-len - */ - '@stylistic/max-len'?: Linter.RuleEntry - /** - * Enforce a maximum number of statements allowed per line - * @see https://eslint.style/rules/js/max-statements-per-line - */ - '@stylistic/max-statements-per-line'?: Linter.RuleEntry - /** - * Require a specific member delimiter style for interfaces and type literals - * @see https://eslint.style/rules/ts/member-delimiter-style - */ - '@stylistic/member-delimiter-style'?: Linter.RuleEntry - /** - * Enforce a particular style for multiline comments - * @see https://eslint.style/rules/js/multiline-comment-style - */ - '@stylistic/multiline-comment-style'?: Linter.RuleEntry - /** - * Enforce newlines between operands of ternary expressions - * @see https://eslint.style/rules/js/multiline-ternary - */ - '@stylistic/multiline-ternary'?: Linter.RuleEntry - /** - * Enforce or disallow parentheses when invoking a constructor with no arguments - * @see https://eslint.style/rules/js/new-parens - */ - '@stylistic/new-parens'?: Linter.RuleEntry - /** - * Require a newline after each call in a method chain - * @see https://eslint.style/rules/js/newline-per-chained-call - */ - '@stylistic/newline-per-chained-call'?: Linter.RuleEntry - /** - * Disallow arrow functions where they could be confused with comparisons - * @see https://eslint.style/rules/js/no-confusing-arrow - */ - '@stylistic/no-confusing-arrow'?: Linter.RuleEntry - /** - * Disallow unnecessary parentheses - * @see https://eslint.style/rules/ts/no-extra-parens - */ - '@stylistic/no-extra-parens'?: Linter.RuleEntry - /** - * Disallow unnecessary semicolons - * @see https://eslint.style/rules/ts/no-extra-semi - */ - '@stylistic/no-extra-semi'?: Linter.RuleEntry<[]> - /** - * Disallow leading or trailing decimal points in numeric literals - * @see https://eslint.style/rules/js/no-floating-decimal - */ - '@stylistic/no-floating-decimal'?: Linter.RuleEntry<[]> - /** - * Disallow mixed binary operators - * @see https://eslint.style/rules/js/no-mixed-operators - */ - '@stylistic/no-mixed-operators'?: Linter.RuleEntry - /** - * Disallow mixed spaces and tabs for indentation - * @see https://eslint.style/rules/js/no-mixed-spaces-and-tabs - */ - '@stylistic/no-mixed-spaces-and-tabs'?: Linter.RuleEntry - /** - * Disallow multiple spaces - * @see https://eslint.style/rules/js/no-multi-spaces - */ - '@stylistic/no-multi-spaces'?: Linter.RuleEntry - /** - * Disallow multiple empty lines - * @see https://eslint.style/rules/js/no-multiple-empty-lines - */ - '@stylistic/no-multiple-empty-lines'?: Linter.RuleEntry - /** - * Disallow all tabs - * @see https://eslint.style/rules/js/no-tabs - */ - '@stylistic/no-tabs'?: Linter.RuleEntry - /** - * Disallow trailing whitespace at the end of lines - * @see https://eslint.style/rules/js/no-trailing-spaces - */ - '@stylistic/no-trailing-spaces'?: Linter.RuleEntry - /** - * Disallow whitespace before properties - * @see https://eslint.style/rules/js/no-whitespace-before-property - */ - '@stylistic/no-whitespace-before-property'?: Linter.RuleEntry<[]> - /** - * Enforce the location of single-line statements - * @see https://eslint.style/rules/js/nonblock-statement-body-position - */ - '@stylistic/nonblock-statement-body-position'?: Linter.RuleEntry - /** - * Enforce consistent line breaks after opening and before closing braces - * @see https://eslint.style/rules/ts/object-curly-newline - */ - '@stylistic/object-curly-newline'?: Linter.RuleEntry - /** - * Enforce consistent spacing inside braces - * @see https://eslint.style/rules/ts/object-curly-spacing - */ - '@stylistic/object-curly-spacing'?: Linter.RuleEntry - /** - * Enforce placing object properties on separate lines - * @see https://eslint.style/rules/ts/object-property-newline - */ - '@stylistic/object-property-newline'?: Linter.RuleEntry - /** - * Require or disallow newlines around variable declarations - * @see https://eslint.style/rules/js/one-var-declaration-per-line - */ - '@stylistic/one-var-declaration-per-line'?: Linter.RuleEntry - /** - * Enforce consistent linebreak style for operators - * @see https://eslint.style/rules/js/operator-linebreak - */ - '@stylistic/operator-linebreak'?: Linter.RuleEntry - /** - * Require or disallow padding within blocks - * @see https://eslint.style/rules/js/padded-blocks - */ - '@stylistic/padded-blocks'?: Linter.RuleEntry - /** - * Require or disallow padding lines between statements - * @see https://eslint.style/rules/ts/padding-line-between-statements - */ - '@stylistic/padding-line-between-statements'?: Linter.RuleEntry - /** - * Require quotes around object literal, type literal, interfaces and enums property names - * @see https://eslint.style/rules/ts/quote-props - */ - '@stylistic/quote-props'?: Linter.RuleEntry - /** - * Enforce the consistent use of either backticks, double, or single quotes - * @see https://eslint.style/rules/ts/quotes - */ - '@stylistic/quotes'?: Linter.RuleEntry - /** - * Enforce spacing between rest and spread operators and their expressions - * @see https://eslint.style/rules/js/rest-spread-spacing - */ - '@stylistic/rest-spread-spacing'?: Linter.RuleEntry - /** - * Require or disallow semicolons instead of ASI - * @see https://eslint.style/rules/ts/semi - */ - '@stylistic/semi'?: Linter.RuleEntry - /** - * Enforce consistent spacing before and after semicolons - * @see https://eslint.style/rules/ts/semi-spacing - */ - '@stylistic/semi-spacing'?: Linter.RuleEntry - /** - * Enforce location of semicolons - * @see https://eslint.style/rules/js/semi-style - */ - '@stylistic/semi-style'?: Linter.RuleEntry - /** - * Enforce consistent spacing before blocks - * @see https://eslint.style/rules/ts/space-before-blocks - */ - '@stylistic/space-before-blocks'?: Linter.RuleEntry - /** - * Enforce consistent spacing before function parenthesis - * @see https://eslint.style/rules/ts/space-before-function-paren - */ - '@stylistic/space-before-function-paren'?: Linter.RuleEntry - /** - * Enforce consistent spacing inside parentheses - * @see https://eslint.style/rules/js/space-in-parens - */ - '@stylistic/space-in-parens'?: Linter.RuleEntry - /** - * Require spacing around infix operators - * @see https://eslint.style/rules/ts/space-infix-ops - */ - '@stylistic/space-infix-ops'?: Linter.RuleEntry - /** - * Enforce consistent spacing before or after unary operators - * @see https://eslint.style/rules/js/space-unary-ops - */ - '@stylistic/space-unary-ops'?: Linter.RuleEntry - /** - * Enforce consistent spacing after the `//` or `/*` in a comment - * @see https://eslint.style/rules/js/spaced-comment - */ - '@stylistic/spaced-comment'?: Linter.RuleEntry - /** - * Enforce spacing around colons of switch statements - * @see https://eslint.style/rules/js/switch-colon-spacing - */ - '@stylistic/switch-colon-spacing'?: Linter.RuleEntry - /** - * Require or disallow spacing around embedded expressions of template strings - * @see https://eslint.style/rules/js/template-curly-spacing - */ - '@stylistic/template-curly-spacing'?: Linter.RuleEntry - /** - * Require or disallow spacing between template tags and their literals - * @see https://eslint.style/rules/js/template-tag-spacing - */ - '@stylistic/template-tag-spacing'?: Linter.RuleEntry - /** - * Require consistent spacing around type annotations - * @see https://eslint.style/rules/ts/type-annotation-spacing - */ - '@stylistic/type-annotation-spacing'?: Linter.RuleEntry - /** - * Enforces consistent spacing inside TypeScript type generics - * @see https://eslint.style/rules/plus/type-generic-spacing - */ - '@stylistic/type-generic-spacing'?: Linter.RuleEntry<[]> - /** - * Expect space before the type declaration in the named tuple - * @see https://eslint.style/rules/plus/type-named-tuple-spacing - */ - '@stylistic/type-named-tuple-spacing'?: Linter.RuleEntry<[]> - /** - * Require parentheses around immediate `function` invocations - * @see https://eslint.style/rules/js/wrap-iife - */ - '@stylistic/wrap-iife'?: Linter.RuleEntry - /** - * Require parenthesis around regex literals - * @see https://eslint.style/rules/js/wrap-regex - */ - '@stylistic/wrap-regex'?: Linter.RuleEntry<[]> - /** - * Require or disallow spacing around the `*` in `yield*` expressions - * @see https://eslint.style/rules/js/yield-star-spacing - */ - '@stylistic/yield-star-spacing'?: Linter.RuleEntry - /** - * Exhaustive deps rule for useQuery - * @see https://tanstack.com/query/latest/docs/eslint/exhaustive-deps - */ - '@tanstack/query/exhaustive-deps'?: Linter.RuleEntry<[]> - /** - * Ensure correct order of inference sensitive properties for infinite queries - * @see https://tanstack.com/query/latest/docs/eslint/infinite-query-property-order - */ - '@tanstack/query/infinite-query-property-order'?: Linter.RuleEntry<[]> - /** - * Disallows rest destructuring in queries - * @see https://tanstack.com/query/latest/docs/eslint/no-rest-destructuring - */ - '@tanstack/query/no-rest-destructuring'?: Linter.RuleEntry<[]> - /** - * Disallow putting the result of query hooks directly in a React hook dependency array - * @see https://tanstack.com/query/latest/docs/eslint/no-unstable-deps - */ - '@tanstack/query/no-unstable-deps'?: Linter.RuleEntry<[]> - /** - * Ensures queryFn returns a non-undefined value - * @see https://tanstack.com/query/latest/docs/eslint/no-void-query-fn - */ - '@tanstack/query/no-void-query-fn'?: Linter.RuleEntry<[]> - /** - * Makes sure that QueryClient is stable - * @see https://tanstack.com/query/latest/docs/eslint/stable-query-client - */ - '@tanstack/query/stable-query-client'?: Linter.RuleEntry<[]> - /** - * Ensure correct order of inference sensitive properties for createRoute functions - * @see https://tanstack.com/router/latest/docs/eslint/create-route-property-order - */ - '@tanstack/router/create-route-property-order'?: Linter.RuleEntry<[]> - /** - * Require that function overload signatures be consecutive - * @see https://typescript-eslint.io/rules/adjacent-overload-signatures - */ - '@typescript-eslint/adjacent-overload-signatures'?: Linter.RuleEntry<[]> - /** - * Require consistently using either `T[]` or `Array` for arrays - * @see https://typescript-eslint.io/rules/array-type - */ - '@typescript-eslint/array-type'?: Linter.RuleEntry - /** - * Disallow awaiting a value that is not a Thenable - * @see https://typescript-eslint.io/rules/await-thenable - */ - '@typescript-eslint/await-thenable'?: Linter.RuleEntry<[]> - /** - * Disallow `@ts-` comments or require descriptions after directives - * @see https://typescript-eslint.io/rules/ban-ts-comment - */ - '@typescript-eslint/ban-ts-comment'?: Linter.RuleEntry - /** - * Disallow `// tslint:` comments - * @see https://typescript-eslint.io/rules/ban-tslint-comment - */ - '@typescript-eslint/ban-tslint-comment'?: Linter.RuleEntry<[]> - /** - * Enforce that literals on classes are exposed in a consistent style - * @see https://typescript-eslint.io/rules/class-literal-property-style - */ - '@typescript-eslint/class-literal-property-style'?: Linter.RuleEntry - /** - * Enforce that class methods utilize `this` - * @see https://typescript-eslint.io/rules/class-methods-use-this - */ - '@typescript-eslint/class-methods-use-this'?: Linter.RuleEntry - /** - * Enforce specifying generic type arguments on type annotation or constructor name of a constructor call - * @see https://typescript-eslint.io/rules/consistent-generic-constructors - */ - '@typescript-eslint/consistent-generic-constructors'?: Linter.RuleEntry - /** - * Require or disallow the `Record` type - * @see https://typescript-eslint.io/rules/consistent-indexed-object-style - */ - '@typescript-eslint/consistent-indexed-object-style'?: Linter.RuleEntry - /** - * Require `return` statements to either always or never specify values - * @see https://typescript-eslint.io/rules/consistent-return - */ - '@typescript-eslint/consistent-return'?: Linter.RuleEntry - /** - * Enforce consistent usage of type assertions - * @see https://typescript-eslint.io/rules/consistent-type-assertions - */ - '@typescript-eslint/consistent-type-assertions'?: Linter.RuleEntry - /** - * Enforce type definitions to consistently use either `interface` or `type` - * @see https://typescript-eslint.io/rules/consistent-type-definitions - */ - '@typescript-eslint/consistent-type-definitions'?: Linter.RuleEntry - /** - * Enforce consistent usage of type exports - * @see https://typescript-eslint.io/rules/consistent-type-exports - */ - '@typescript-eslint/consistent-type-exports'?: Linter.RuleEntry - /** - * Enforce consistent usage of type imports - * @see https://typescript-eslint.io/rules/consistent-type-imports - */ - '@typescript-eslint/consistent-type-imports'?: Linter.RuleEntry - /** - * Enforce default parameters to be last - * @see https://typescript-eslint.io/rules/default-param-last - */ - '@typescript-eslint/default-param-last'?: Linter.RuleEntry<[]> - /** - * Enforce dot notation whenever possible - * @see https://typescript-eslint.io/rules/dot-notation - */ - '@typescript-eslint/dot-notation'?: Linter.RuleEntry - /** - * Require explicit return types on functions and class methods - * @see https://typescript-eslint.io/rules/explicit-function-return-type - */ - '@typescript-eslint/explicit-function-return-type'?: Linter.RuleEntry - /** - * Require explicit accessibility modifiers on class properties and methods - * @see https://typescript-eslint.io/rules/explicit-member-accessibility - */ - '@typescript-eslint/explicit-member-accessibility'?: Linter.RuleEntry - /** - * Require explicit return and argument types on exported functions' and classes' public class methods - * @see https://typescript-eslint.io/rules/explicit-module-boundary-types - */ - '@typescript-eslint/explicit-module-boundary-types'?: Linter.RuleEntry - /** - * Require or disallow initialization in variable declarations - * @see https://typescript-eslint.io/rules/init-declarations - */ - '@typescript-eslint/init-declarations'?: Linter.RuleEntry - /** - * Enforce a maximum number of parameters in function definitions - * @see https://typescript-eslint.io/rules/max-params - */ - '@typescript-eslint/max-params'?: Linter.RuleEntry - /** - * Require a consistent member declaration order - * @see https://typescript-eslint.io/rules/member-ordering - */ - '@typescript-eslint/member-ordering'?: Linter.RuleEntry - /** - * Enforce using a particular method signature syntax - * @see https://typescript-eslint.io/rules/method-signature-style - */ - '@typescript-eslint/method-signature-style'?: Linter.RuleEntry - /** - * Enforce naming conventions for everything across a codebase - * @see https://typescript-eslint.io/rules/naming-convention - */ - '@typescript-eslint/naming-convention'?: Linter.RuleEntry - /** - * Disallow generic `Array` constructors - * @see https://typescript-eslint.io/rules/no-array-constructor - */ - '@typescript-eslint/no-array-constructor'?: Linter.RuleEntry<[]> - /** - * Disallow using the `delete` operator on array values - * @see https://typescript-eslint.io/rules/no-array-delete - */ - '@typescript-eslint/no-array-delete'?: Linter.RuleEntry<[]> - /** - * Require `.toString()` and `.toLocaleString()` to only be called on objects which provide useful information when stringified - * @see https://typescript-eslint.io/rules/no-base-to-string - */ - '@typescript-eslint/no-base-to-string'?: Linter.RuleEntry - /** - * Disallow non-null assertion in locations that may be confusing - * @see https://typescript-eslint.io/rules/no-confusing-non-null-assertion - */ - '@typescript-eslint/no-confusing-non-null-assertion'?: Linter.RuleEntry<[]> - /** - * Require expressions of type void to appear in statement position - * @see https://typescript-eslint.io/rules/no-confusing-void-expression - */ - '@typescript-eslint/no-confusing-void-expression'?: Linter.RuleEntry - /** - * Disallow using code marked as `@deprecated` - * @see https://typescript-eslint.io/rules/no-deprecated - */ - '@typescript-eslint/no-deprecated'?: Linter.RuleEntry - /** - * Disallow duplicate class members - * @see https://typescript-eslint.io/rules/no-dupe-class-members - */ - '@typescript-eslint/no-dupe-class-members'?: Linter.RuleEntry<[]> - /** - * Disallow duplicate enum member values - * @see https://typescript-eslint.io/rules/no-duplicate-enum-values - */ - '@typescript-eslint/no-duplicate-enum-values'?: Linter.RuleEntry<[]> - /** - * Disallow duplicate constituents of union or intersection types - * @see https://typescript-eslint.io/rules/no-duplicate-type-constituents - */ - '@typescript-eslint/no-duplicate-type-constituents'?: Linter.RuleEntry - /** - * Disallow using the `delete` operator on computed key expressions - * @see https://typescript-eslint.io/rules/no-dynamic-delete - */ - '@typescript-eslint/no-dynamic-delete'?: Linter.RuleEntry<[]> - /** - * Disallow empty functions - * @see https://typescript-eslint.io/rules/no-empty-function - */ - '@typescript-eslint/no-empty-function'?: Linter.RuleEntry - /** - * Disallow the declaration of empty interfaces - * @see https://typescript-eslint.io/rules/no-empty-interface - * @deprecated - */ - '@typescript-eslint/no-empty-interface'?: Linter.RuleEntry - /** - * Disallow accidentally using the "empty object" type - * @see https://typescript-eslint.io/rules/no-empty-object-type - */ - '@typescript-eslint/no-empty-object-type'?: Linter.RuleEntry - /** - * Disallow the `any` type - * @see https://typescript-eslint.io/rules/no-explicit-any - */ - '@typescript-eslint/no-explicit-any'?: Linter.RuleEntry - /** - * Disallow extra non-null assertions - * @see https://typescript-eslint.io/rules/no-extra-non-null-assertion - */ - '@typescript-eslint/no-extra-non-null-assertion'?: Linter.RuleEntry<[]> - /** - * Disallow classes used as namespaces - * @see https://typescript-eslint.io/rules/no-extraneous-class - */ - '@typescript-eslint/no-extraneous-class'?: Linter.RuleEntry - /** - * Require Promise-like statements to be handled appropriately - * @see https://typescript-eslint.io/rules/no-floating-promises - */ - '@typescript-eslint/no-floating-promises'?: Linter.RuleEntry - /** - * Disallow iterating over an array with a for-in loop - * @see https://typescript-eslint.io/rules/no-for-in-array - */ - '@typescript-eslint/no-for-in-array'?: Linter.RuleEntry<[]> - /** - * Disallow the use of `eval()`-like functions - * @see https://typescript-eslint.io/rules/no-implied-eval - */ - '@typescript-eslint/no-implied-eval'?: Linter.RuleEntry<[]> - /** - * Enforce the use of top-level import type qualifier when an import only has specifiers with inline type qualifiers - * @see https://typescript-eslint.io/rules/no-import-type-side-effects - */ - '@typescript-eslint/no-import-type-side-effects'?: Linter.RuleEntry<[]> - /** - * Disallow explicit type declarations for variables or parameters initialized to a number, string, or boolean - * @see https://typescript-eslint.io/rules/no-inferrable-types - */ - '@typescript-eslint/no-inferrable-types'?: Linter.RuleEntry - /** - * Disallow `this` keywords outside of classes or class-like objects - * @see https://typescript-eslint.io/rules/no-invalid-this - */ - '@typescript-eslint/no-invalid-this'?: Linter.RuleEntry - /** - * Disallow `void` type outside of generic or return types - * @see https://typescript-eslint.io/rules/no-invalid-void-type - */ - '@typescript-eslint/no-invalid-void-type'?: Linter.RuleEntry - /** - * Disallow function declarations that contain unsafe references inside loop statements - * @see https://typescript-eslint.io/rules/no-loop-func - */ - '@typescript-eslint/no-loop-func'?: Linter.RuleEntry<[]> - /** - * Disallow literal numbers that lose precision - * @see https://typescript-eslint.io/rules/no-loss-of-precision - * @deprecated - */ - '@typescript-eslint/no-loss-of-precision'?: Linter.RuleEntry<[]> - /** - * Disallow magic numbers - * @see https://typescript-eslint.io/rules/no-magic-numbers - */ - '@typescript-eslint/no-magic-numbers'?: Linter.RuleEntry - /** - * Disallow the `void` operator except when used to discard a value - * @see https://typescript-eslint.io/rules/no-meaningless-void-operator - */ - '@typescript-eslint/no-meaningless-void-operator'?: Linter.RuleEntry - /** - * Enforce valid definition of `new` and `constructor` - * @see https://typescript-eslint.io/rules/no-misused-new - */ - '@typescript-eslint/no-misused-new'?: Linter.RuleEntry<[]> - /** - * Disallow Promises in places not designed to handle them - * @see https://typescript-eslint.io/rules/no-misused-promises - */ - '@typescript-eslint/no-misused-promises'?: Linter.RuleEntry - /** - * Disallow using the spread operator when it might cause unexpected behavior - * @see https://typescript-eslint.io/rules/no-misused-spread - */ - '@typescript-eslint/no-misused-spread'?: Linter.RuleEntry - /** - * Disallow enums from having both number and string members - * @see https://typescript-eslint.io/rules/no-mixed-enums - */ - '@typescript-eslint/no-mixed-enums'?: Linter.RuleEntry<[]> - /** - * Disallow TypeScript namespaces - * @see https://typescript-eslint.io/rules/no-namespace - */ - '@typescript-eslint/no-namespace'?: Linter.RuleEntry - /** - * Disallow non-null assertions in the left operand of a nullish coalescing operator - * @see https://typescript-eslint.io/rules/no-non-null-asserted-nullish-coalescing - */ - '@typescript-eslint/no-non-null-asserted-nullish-coalescing'?: Linter.RuleEntry<[]> - /** - * Disallow non-null assertions after an optional chain expression - * @see https://typescript-eslint.io/rules/no-non-null-asserted-optional-chain - */ - '@typescript-eslint/no-non-null-asserted-optional-chain'?: Linter.RuleEntry<[]> - /** - * Disallow non-null assertions using the `!` postfix operator - * @see https://typescript-eslint.io/rules/no-non-null-assertion - */ - '@typescript-eslint/no-non-null-assertion'?: Linter.RuleEntry<[]> - /** - * Disallow variable redeclaration - * @see https://typescript-eslint.io/rules/no-redeclare - */ - '@typescript-eslint/no-redeclare'?: Linter.RuleEntry - /** - * Disallow members of unions and intersections that do nothing or override type information - * @see https://typescript-eslint.io/rules/no-redundant-type-constituents - */ - '@typescript-eslint/no-redundant-type-constituents'?: Linter.RuleEntry<[]> - /** - * Disallow invocation of `require()` - * @see https://typescript-eslint.io/rules/no-require-imports - */ - '@typescript-eslint/no-require-imports'?: Linter.RuleEntry - /** - * Disallow specified modules when loaded by `import` - * @see https://typescript-eslint.io/rules/no-restricted-imports - */ - '@typescript-eslint/no-restricted-imports'?: Linter.RuleEntry - /** - * Disallow certain types - * @see https://typescript-eslint.io/rules/no-restricted-types - */ - '@typescript-eslint/no-restricted-types'?: Linter.RuleEntry - /** - * Disallow variable declarations from shadowing variables declared in the outer scope - * @see https://typescript-eslint.io/rules/no-shadow - */ - '@typescript-eslint/no-shadow'?: Linter.RuleEntry - /** - * Disallow aliasing `this` - * @see https://typescript-eslint.io/rules/no-this-alias - */ - '@typescript-eslint/no-this-alias'?: Linter.RuleEntry - /** - * Disallow type aliases - * @see https://typescript-eslint.io/rules/no-type-alias - * @deprecated - */ - '@typescript-eslint/no-type-alias'?: Linter.RuleEntry - /** - * Disallow unnecessary equality comparisons against boolean literals - * @see https://typescript-eslint.io/rules/no-unnecessary-boolean-literal-compare - */ - '@typescript-eslint/no-unnecessary-boolean-literal-compare'?: Linter.RuleEntry - /** - * Disallow conditionals where the type is always truthy or always falsy - * @see https://typescript-eslint.io/rules/no-unnecessary-condition - */ - '@typescript-eslint/no-unnecessary-condition'?: Linter.RuleEntry - /** - * Disallow unnecessary assignment of constructor property parameter - * @see https://typescript-eslint.io/rules/no-unnecessary-parameter-property-assignment - */ - '@typescript-eslint/no-unnecessary-parameter-property-assignment'?: Linter.RuleEntry<[]> - /** - * Disallow unnecessary namespace qualifiers - * @see https://typescript-eslint.io/rules/no-unnecessary-qualifier - */ - '@typescript-eslint/no-unnecessary-qualifier'?: Linter.RuleEntry<[]> - /** - * Disallow unnecessary template expressions - * @see https://typescript-eslint.io/rules/no-unnecessary-template-expression - */ - '@typescript-eslint/no-unnecessary-template-expression'?: Linter.RuleEntry<[]> - /** - * Disallow type arguments that are equal to the default - * @see https://typescript-eslint.io/rules/no-unnecessary-type-arguments - */ - '@typescript-eslint/no-unnecessary-type-arguments'?: Linter.RuleEntry<[]> - /** - * Disallow type assertions that do not change the type of an expression - * @see https://typescript-eslint.io/rules/no-unnecessary-type-assertion - */ - '@typescript-eslint/no-unnecessary-type-assertion'?: Linter.RuleEntry - /** - * Disallow unnecessary constraints on generic types - * @see https://typescript-eslint.io/rules/no-unnecessary-type-constraint - */ - '@typescript-eslint/no-unnecessary-type-constraint'?: Linter.RuleEntry<[]> - /** - * Disallow conversion idioms when they do not change the type or value of the expression - * @see https://typescript-eslint.io/rules/no-unnecessary-type-conversion - */ - '@typescript-eslint/no-unnecessary-type-conversion'?: Linter.RuleEntry<[]> - /** - * Disallow type parameters that aren't used multiple times - * @see https://typescript-eslint.io/rules/no-unnecessary-type-parameters - */ - '@typescript-eslint/no-unnecessary-type-parameters'?: Linter.RuleEntry<[]> - /** - * Disallow calling a function with a value with type `any` - * @see https://typescript-eslint.io/rules/no-unsafe-argument - */ - '@typescript-eslint/no-unsafe-argument'?: Linter.RuleEntry<[]> - /** - * Disallow assigning a value with type `any` to variables and properties - * @see https://typescript-eslint.io/rules/no-unsafe-assignment - */ - '@typescript-eslint/no-unsafe-assignment'?: Linter.RuleEntry<[]> - /** - * Disallow calling a value with type `any` - * @see https://typescript-eslint.io/rules/no-unsafe-call - */ - '@typescript-eslint/no-unsafe-call'?: Linter.RuleEntry<[]> - /** - * Disallow unsafe declaration merging - * @see https://typescript-eslint.io/rules/no-unsafe-declaration-merging - */ - '@typescript-eslint/no-unsafe-declaration-merging'?: Linter.RuleEntry<[]> - /** - * Disallow comparing an enum value with a non-enum value - * @see https://typescript-eslint.io/rules/no-unsafe-enum-comparison - */ - '@typescript-eslint/no-unsafe-enum-comparison'?: Linter.RuleEntry<[]> - /** - * Disallow using the unsafe built-in Function type - * @see https://typescript-eslint.io/rules/no-unsafe-function-type - */ - '@typescript-eslint/no-unsafe-function-type'?: Linter.RuleEntry<[]> - /** - * Disallow member access on a value with type `any` - * @see https://typescript-eslint.io/rules/no-unsafe-member-access - */ - '@typescript-eslint/no-unsafe-member-access'?: Linter.RuleEntry<[]> - /** - * Disallow returning a value with type `any` from a function - * @see https://typescript-eslint.io/rules/no-unsafe-return - */ - '@typescript-eslint/no-unsafe-return'?: Linter.RuleEntry<[]> - /** - * Disallow type assertions that narrow a type - * @see https://typescript-eslint.io/rules/no-unsafe-type-assertion - */ - '@typescript-eslint/no-unsafe-type-assertion'?: Linter.RuleEntry<[]> - /** - * Require unary negation to take a number - * @see https://typescript-eslint.io/rules/no-unsafe-unary-minus - */ - '@typescript-eslint/no-unsafe-unary-minus'?: Linter.RuleEntry<[]> - /** - * Disallow unused expressions - * @see https://typescript-eslint.io/rules/no-unused-expressions - */ - '@typescript-eslint/no-unused-expressions'?: Linter.RuleEntry - /** - * Disallow unused variables - * @see https://typescript-eslint.io/rules/no-unused-vars - */ - '@typescript-eslint/no-unused-vars'?: Linter.RuleEntry - /** - * Disallow the use of variables before they are defined - * @see https://typescript-eslint.io/rules/no-use-before-define - */ - '@typescript-eslint/no-use-before-define'?: Linter.RuleEntry - /** - * Disallow unnecessary constructors - * @see https://typescript-eslint.io/rules/no-useless-constructor - */ - '@typescript-eslint/no-useless-constructor'?: Linter.RuleEntry<[]> - /** - * Disallow empty exports that don't change anything in a module file - * @see https://typescript-eslint.io/rules/no-useless-empty-export - */ - '@typescript-eslint/no-useless-empty-export'?: Linter.RuleEntry<[]> - /** - * Disallow `require` statements except in import statements - * @see https://typescript-eslint.io/rules/no-var-requires - * @deprecated - */ - '@typescript-eslint/no-var-requires'?: Linter.RuleEntry - /** - * Disallow using confusing built-in primitive class wrappers - * @see https://typescript-eslint.io/rules/no-wrapper-object-types - */ - '@typescript-eslint/no-wrapper-object-types'?: Linter.RuleEntry<[]> - /** - * Enforce non-null assertions over explicit type assertions - * @see https://typescript-eslint.io/rules/non-nullable-type-assertion-style - */ - '@typescript-eslint/non-nullable-type-assertion-style'?: Linter.RuleEntry<[]> - /** - * Disallow throwing non-`Error` values as exceptions - * @see https://typescript-eslint.io/rules/only-throw-error - */ - '@typescript-eslint/only-throw-error'?: Linter.RuleEntry - /** - * Require or disallow parameter properties in class constructors - * @see https://typescript-eslint.io/rules/parameter-properties - */ - '@typescript-eslint/parameter-properties'?: Linter.RuleEntry - /** - * Enforce the use of `as const` over literal type - * @see https://typescript-eslint.io/rules/prefer-as-const - */ - '@typescript-eslint/prefer-as-const'?: Linter.RuleEntry<[]> - /** - * Require destructuring from arrays and/or objects - * @see https://typescript-eslint.io/rules/prefer-destructuring - */ - '@typescript-eslint/prefer-destructuring'?: Linter.RuleEntry - /** - * Require each enum member value to be explicitly initialized - * @see https://typescript-eslint.io/rules/prefer-enum-initializers - */ - '@typescript-eslint/prefer-enum-initializers'?: Linter.RuleEntry<[]> - /** - * Enforce the use of Array.prototype.find() over Array.prototype.filter() followed by [0] when looking for a single result - * @see https://typescript-eslint.io/rules/prefer-find - */ - '@typescript-eslint/prefer-find'?: Linter.RuleEntry<[]> - /** - * Enforce the use of `for-of` loop over the standard `for` loop where possible - * @see https://typescript-eslint.io/rules/prefer-for-of - */ - '@typescript-eslint/prefer-for-of'?: Linter.RuleEntry<[]> - /** - * Enforce using function types instead of interfaces with call signatures - * @see https://typescript-eslint.io/rules/prefer-function-type - */ - '@typescript-eslint/prefer-function-type'?: Linter.RuleEntry<[]> - /** - * Enforce `includes` method over `indexOf` method - * @see https://typescript-eslint.io/rules/prefer-includes - */ - '@typescript-eslint/prefer-includes'?: Linter.RuleEntry<[]> - /** - * Require all enum members to be literal values - * @see https://typescript-eslint.io/rules/prefer-literal-enum-member - */ - '@typescript-eslint/prefer-literal-enum-member'?: Linter.RuleEntry - /** - * Require using `namespace` keyword over `module` keyword to declare custom TypeScript modules - * @see https://typescript-eslint.io/rules/prefer-namespace-keyword - */ - '@typescript-eslint/prefer-namespace-keyword'?: Linter.RuleEntry<[]> - /** - * Enforce using the nullish coalescing operator instead of logical assignments or chaining - * @see https://typescript-eslint.io/rules/prefer-nullish-coalescing - */ - '@typescript-eslint/prefer-nullish-coalescing'?: Linter.RuleEntry - /** - * Enforce using concise optional chain expressions instead of chained logical ands, negated logical ors, or empty objects - * @see https://typescript-eslint.io/rules/prefer-optional-chain - */ - '@typescript-eslint/prefer-optional-chain'?: Linter.RuleEntry - /** - * Require using Error objects as Promise rejection reasons - * @see https://typescript-eslint.io/rules/prefer-promise-reject-errors - */ - '@typescript-eslint/prefer-promise-reject-errors'?: Linter.RuleEntry - /** - * Require private members to be marked as `readonly` if they're never modified outside of the constructor - * @see https://typescript-eslint.io/rules/prefer-readonly - */ - '@typescript-eslint/prefer-readonly'?: Linter.RuleEntry - /** - * Require function parameters to be typed as `readonly` to prevent accidental mutation of inputs - * @see https://typescript-eslint.io/rules/prefer-readonly-parameter-types - */ - '@typescript-eslint/prefer-readonly-parameter-types'?: Linter.RuleEntry - /** - * Enforce using type parameter when calling `Array#reduce` instead of using a type assertion - * @see https://typescript-eslint.io/rules/prefer-reduce-type-parameter - */ - '@typescript-eslint/prefer-reduce-type-parameter'?: Linter.RuleEntry<[]> - /** - * Enforce `RegExp#exec` over `String#match` if no global flag is provided - * @see https://typescript-eslint.io/rules/prefer-regexp-exec - */ - '@typescript-eslint/prefer-regexp-exec'?: Linter.RuleEntry<[]> - /** - * Enforce that `this` is used when only `this` type is returned - * @see https://typescript-eslint.io/rules/prefer-return-this-type - */ - '@typescript-eslint/prefer-return-this-type'?: Linter.RuleEntry<[]> - /** - * Enforce using `String#startsWith` and `String#endsWith` over other equivalent methods of checking substrings - * @see https://typescript-eslint.io/rules/prefer-string-starts-ends-with - */ - '@typescript-eslint/prefer-string-starts-ends-with'?: Linter.RuleEntry - /** - * Enforce using `@ts-expect-error` over `@ts-ignore` - * @see https://typescript-eslint.io/rules/prefer-ts-expect-error - * @deprecated - */ - '@typescript-eslint/prefer-ts-expect-error'?: Linter.RuleEntry<[]> - /** - * Require any function or method that returns a Promise to be marked async - * @see https://typescript-eslint.io/rules/promise-function-async - */ - '@typescript-eslint/promise-function-async'?: Linter.RuleEntry - /** - * Enforce that `get()` types should be assignable to their equivalent `set()` type - * @see https://typescript-eslint.io/rules/related-getter-setter-pairs - */ - '@typescript-eslint/related-getter-setter-pairs'?: Linter.RuleEntry<[]> - /** - * Require `Array#sort` and `Array#toSorted` calls to always provide a `compareFunction` - * @see https://typescript-eslint.io/rules/require-array-sort-compare - */ - '@typescript-eslint/require-array-sort-compare'?: Linter.RuleEntry - /** - * Disallow async functions which do not return promises and have no `await` expression - * @see https://typescript-eslint.io/rules/require-await - */ - '@typescript-eslint/require-await'?: Linter.RuleEntry<[]> - /** - * Require both operands of addition to be the same type and be `bigint`, `number`, or `string` - * @see https://typescript-eslint.io/rules/restrict-plus-operands - */ - '@typescript-eslint/restrict-plus-operands'?: Linter.RuleEntry - /** - * Enforce template literal expressions to be of `string` type - * @see https://typescript-eslint.io/rules/restrict-template-expressions - */ - '@typescript-eslint/restrict-template-expressions'?: Linter.RuleEntry - /** - * Enforce consistent awaiting of returned promises - * @see https://typescript-eslint.io/rules/return-await - */ - '@typescript-eslint/return-await'?: Linter.RuleEntry - /** - * Enforce constituents of a type union/intersection to be sorted alphabetically - * @see https://typescript-eslint.io/rules/sort-type-constituents - * @deprecated - */ - '@typescript-eslint/sort-type-constituents'?: Linter.RuleEntry - /** - * Disallow certain types in boolean expressions - * @see https://typescript-eslint.io/rules/strict-boolean-expressions - */ - '@typescript-eslint/strict-boolean-expressions'?: Linter.RuleEntry - /** - * Require switch-case statements to be exhaustive - * @see https://typescript-eslint.io/rules/switch-exhaustiveness-check - */ - '@typescript-eslint/switch-exhaustiveness-check'?: Linter.RuleEntry - /** - * Disallow certain triple slash directives in favor of ES6-style import declarations - * @see https://typescript-eslint.io/rules/triple-slash-reference - */ - '@typescript-eslint/triple-slash-reference'?: Linter.RuleEntry - /** - * Require type annotations in certain places - * @see https://typescript-eslint.io/rules/typedef - */ - '@typescript-eslint/typedef'?: Linter.RuleEntry - /** - * Enforce unbound methods are called with their expected scope - * @see https://typescript-eslint.io/rules/unbound-method - */ - '@typescript-eslint/unbound-method'?: Linter.RuleEntry - /** - * Disallow two overloads that could be unified into one with a union or an optional/rest parameter - * @see https://typescript-eslint.io/rules/unified-signatures - */ - '@typescript-eslint/unified-signatures'?: Linter.RuleEntry - /** - * Enforce typing arguments in Promise rejection callbacks as `unknown` - * @see https://typescript-eslint.io/rules/use-unknown-in-catch-callback-variable - */ - '@typescript-eslint/use-unknown-in-catch-callback-variable'?: Linter.RuleEntry<[]> - /** - * Having line breaks styles to object, array and named imports - * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/consistent-chaining.md - */ - 'antfu/consistent-chaining'?: Linter.RuleEntry - /** - * Having line breaks styles to object, array and named imports - * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/consistent-list-newline.md - */ - 'antfu/consistent-list-newline'?: Linter.RuleEntry - /** - * Enforce Anthony's style of curly bracket - * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/curly.md - */ - 'antfu/curly'?: Linter.RuleEntry<[]> - /** - * Newline after if - * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/if-newline.md - */ - 'antfu/if-newline'?: Linter.RuleEntry<[]> - /** - * Fix duplication in imports - * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/import-dedupe.md - */ - 'antfu/import-dedupe'?: Linter.RuleEntry<[]> - /** - * Enforce consistent indentation in `unindent` template tag - * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/indent-unindent.md - */ - 'antfu/indent-unindent'?: Linter.RuleEntry - /** - * Prevent importing modules in `dist` folder - * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/no-import-dist.test.ts - */ - 'antfu/no-import-dist'?: Linter.RuleEntry<[]> - /** - * Prevent importing modules in `node_modules` folder by relative or absolute path - * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/no-import-node-modules-by-path.test.ts - */ - 'antfu/no-import-node-modules-by-path'?: Linter.RuleEntry<[]> - /** - * Prevent using top-level await - * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/no-top-level-await.test.ts - */ - 'antfu/no-top-level-await'?: Linter.RuleEntry<[]> - /** - * Do not use `exports =` - * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/no-ts-export-equal.test.ts - */ - 'antfu/no-ts-export-equal'?: Linter.RuleEntry<[]> - /** - * Enforce top-level functions to be declared with function keyword - * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/top-level-function.md - */ - 'antfu/top-level-function'?: Linter.RuleEntry<[]> - /** - * apply `jsx-a11y/alt-text` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/alt-text/ - */ - 'astro/jsx-a11y/alt-text'?: Linter.RuleEntry - /** - * apply `jsx-a11y/anchor-ambiguous-text` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/anchor-ambiguous-text/ - */ - 'astro/jsx-a11y/anchor-ambiguous-text'?: Linter.RuleEntry - /** - * apply `jsx-a11y/anchor-has-content` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/anchor-has-content/ - */ - 'astro/jsx-a11y/anchor-has-content'?: Linter.RuleEntry - /** - * apply `jsx-a11y/anchor-is-valid` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/anchor-is-valid/ - */ - 'astro/jsx-a11y/anchor-is-valid'?: Linter.RuleEntry - /** - * apply `jsx-a11y/aria-activedescendant-has-tabindex` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/aria-activedescendant-has-tabindex/ - */ - 'astro/jsx-a11y/aria-activedescendant-has-tabindex'?: Linter.RuleEntry - /** - * apply `jsx-a11y/aria-props` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/aria-props/ - */ - 'astro/jsx-a11y/aria-props'?: Linter.RuleEntry - /** - * apply `jsx-a11y/aria-proptypes` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/aria-proptypes/ - */ - 'astro/jsx-a11y/aria-proptypes'?: Linter.RuleEntry - /** - * apply `jsx-a11y/aria-role` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/aria-role/ - */ - 'astro/jsx-a11y/aria-role'?: Linter.RuleEntry - /** - * apply `jsx-a11y/aria-unsupported-elements` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/aria-unsupported-elements/ - */ - 'astro/jsx-a11y/aria-unsupported-elements'?: Linter.RuleEntry - /** - * apply `jsx-a11y/autocomplete-valid` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/autocomplete-valid/ - */ - 'astro/jsx-a11y/autocomplete-valid'?: Linter.RuleEntry - /** - * apply `jsx-a11y/click-events-have-key-events` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/click-events-have-key-events/ - */ - 'astro/jsx-a11y/click-events-have-key-events'?: Linter.RuleEntry - /** - * apply `jsx-a11y/control-has-associated-label` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/control-has-associated-label/ - */ - 'astro/jsx-a11y/control-has-associated-label'?: Linter.RuleEntry - /** - * apply `jsx-a11y/heading-has-content` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/heading-has-content/ - */ - 'astro/jsx-a11y/heading-has-content'?: Linter.RuleEntry - /** - * apply `jsx-a11y/html-has-lang` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/html-has-lang/ - */ - 'astro/jsx-a11y/html-has-lang'?: Linter.RuleEntry - /** - * apply `jsx-a11y/iframe-has-title` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/iframe-has-title/ - */ - 'astro/jsx-a11y/iframe-has-title'?: Linter.RuleEntry - /** - * apply `jsx-a11y/img-redundant-alt` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/img-redundant-alt/ - */ - 'astro/jsx-a11y/img-redundant-alt'?: Linter.RuleEntry - /** - * apply `jsx-a11y/interactive-supports-focus` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/interactive-supports-focus/ - */ - 'astro/jsx-a11y/interactive-supports-focus'?: Linter.RuleEntry - /** - * apply `jsx-a11y/label-has-associated-control` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/label-has-associated-control/ - */ - 'astro/jsx-a11y/label-has-associated-control'?: Linter.RuleEntry - /** - * apply `jsx-a11y/lang` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/lang/ - */ - 'astro/jsx-a11y/lang'?: Linter.RuleEntry - /** - * apply `jsx-a11y/media-has-caption` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/media-has-caption/ - */ - 'astro/jsx-a11y/media-has-caption'?: Linter.RuleEntry - /** - * apply `jsx-a11y/mouse-events-have-key-events` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/mouse-events-have-key-events/ - */ - 'astro/jsx-a11y/mouse-events-have-key-events'?: Linter.RuleEntry - /** - * apply `jsx-a11y/no-access-key` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-access-key/ - */ - 'astro/jsx-a11y/no-access-key'?: Linter.RuleEntry - /** - * apply `jsx-a11y/no-aria-hidden-on-focusable` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-aria-hidden-on-focusable/ - */ - 'astro/jsx-a11y/no-aria-hidden-on-focusable'?: Linter.RuleEntry - /** - * apply `jsx-a11y/no-autofocus` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-autofocus/ - */ - 'astro/jsx-a11y/no-autofocus'?: Linter.RuleEntry - /** - * apply `jsx-a11y/no-distracting-elements` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-distracting-elements/ - */ - 'astro/jsx-a11y/no-distracting-elements'?: Linter.RuleEntry - /** - * apply `jsx-a11y/no-interactive-element-to-noninteractive-role` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-interactive-element-to-noninteractive-role/ - */ - 'astro/jsx-a11y/no-interactive-element-to-noninteractive-role'?: Linter.RuleEntry - /** - * apply `jsx-a11y/no-noninteractive-element-interactions` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-noninteractive-element-interactions/ - */ - 'astro/jsx-a11y/no-noninteractive-element-interactions'?: Linter.RuleEntry - /** - * apply `jsx-a11y/no-noninteractive-element-to-interactive-role` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-noninteractive-element-to-interactive-role/ - */ - 'astro/jsx-a11y/no-noninteractive-element-to-interactive-role'?: Linter.RuleEntry - /** - * apply `jsx-a11y/no-noninteractive-tabindex` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-noninteractive-tabindex/ - */ - 'astro/jsx-a11y/no-noninteractive-tabindex'?: Linter.RuleEntry - /** - * apply `jsx-a11y/no-redundant-roles` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-redundant-roles/ - */ - 'astro/jsx-a11y/no-redundant-roles'?: Linter.RuleEntry - /** - * apply `jsx-a11y/no-static-element-interactions` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-static-element-interactions/ - */ - 'astro/jsx-a11y/no-static-element-interactions'?: Linter.RuleEntry - /** - * apply `jsx-a11y/prefer-tag-over-role` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/prefer-tag-over-role/ - */ - 'astro/jsx-a11y/prefer-tag-over-role'?: Linter.RuleEntry - /** - * apply `jsx-a11y/role-has-required-aria-props` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/role-has-required-aria-props/ - */ - 'astro/jsx-a11y/role-has-required-aria-props'?: Linter.RuleEntry - /** - * apply `jsx-a11y/role-supports-aria-props` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/role-supports-aria-props/ - */ - 'astro/jsx-a11y/role-supports-aria-props'?: Linter.RuleEntry - /** - * apply `jsx-a11y/scope` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/scope/ - */ - 'astro/jsx-a11y/scope'?: Linter.RuleEntry - /** - * apply `jsx-a11y/tabindex-no-positive` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/tabindex-no-positive/ - */ - 'astro/jsx-a11y/tabindex-no-positive'?: Linter.RuleEntry - /** - * the client:only directive is missing the correct component's framework value - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/missing-client-only-directive-value/ - */ - 'astro/missing-client-only-directive-value'?: Linter.RuleEntry<[]> - /** - * disallow conflicting set directives and child contents - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-conflict-set-directives/ - */ - 'astro/no-conflict-set-directives'?: Linter.RuleEntry<[]> - /** - * disallow using deprecated `Astro.canonicalURL` - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-deprecated-astro-canonicalurl/ - */ - 'astro/no-deprecated-astro-canonicalurl'?: Linter.RuleEntry<[]> - /** - * disallow using deprecated `Astro.fetchContent()` - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-deprecated-astro-fetchcontent/ - */ - 'astro/no-deprecated-astro-fetchcontent'?: Linter.RuleEntry<[]> - /** - * disallow using deprecated `Astro.resolve()` - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-deprecated-astro-resolve/ - */ - 'astro/no-deprecated-astro-resolve'?: Linter.RuleEntry<[]> - /** - * disallow using deprecated `getEntryBySlug()` - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-deprecated-getentrybyslug/ - */ - 'astro/no-deprecated-getentrybyslug'?: Linter.RuleEntry<[]> - /** - * disallow value export - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-exports-from-components/ - */ - 'astro/no-exports-from-components'?: Linter.RuleEntry<[]> - /** - * disallow use of `set:html` to prevent XSS attack - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-set-html-directive/ - */ - 'astro/no-set-html-directive'?: Linter.RuleEntry<[]> - /** - * disallow use of `set:text` - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-set-text-directive/ - */ - 'astro/no-set-text-directive'?: Linter.RuleEntry<[]> - /** - * disallow selectors defined in `style` tag that don't use in HTML - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-unused-css-selector/ - */ - 'astro/no-unused-css-selector'?: Linter.RuleEntry<[]> - /** - * disallow unused `define:vars={...}` in `style` tag - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-unused-define-vars-in-style/ - */ - 'astro/no-unused-define-vars-in-style'?: Linter.RuleEntry<[]> - /** - * require `class:list` directives instead of `class` with expressions - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/prefer-class-list-directive/ - */ - 'astro/prefer-class-list-directive'?: Linter.RuleEntry<[]> - /** - * require use object instead of ternary expression in `class:list` - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/prefer-object-class-list/ - */ - 'astro/prefer-object-class-list'?: Linter.RuleEntry<[]> - /** - * require use split array elements in `class:list` - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/prefer-split-class-list/ - */ - 'astro/prefer-split-class-list'?: Linter.RuleEntry - /** - * Require or disallow semicolons instead of ASI - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/semi/ - */ - 'astro/semi'?: Linter.RuleEntry - /** - * enforce sorting of attributes - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/sort-attributes/ - */ - 'astro/sort-attributes'?: Linter.RuleEntry - /** - * disallow warnings when compiling. - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/valid-compile/ - */ - 'astro/valid-compile'?: Linter.RuleEntry<[]> - /** - * Ensure cross-browser API compatibility - * @see https://github.com/amilajack/eslint-plugin-compat/blob/master/docs/rules/compat.md - */ - 'compat/compat'?: Linter.RuleEntry - /** - * require a `eslint-enable` comment for every `eslint-disable` comment - * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/disable-enable-pair.html - */ - 'eslint-comments/disable-enable-pair'?: Linter.RuleEntry - /** - * disallow a `eslint-enable` comment for multiple `eslint-disable` comments - * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/no-aggregating-enable.html - */ - 'eslint-comments/no-aggregating-enable'?: Linter.RuleEntry<[]> - /** - * disallow duplicate `eslint-disable` comments - * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/no-duplicate-disable.html - */ - 'eslint-comments/no-duplicate-disable'?: Linter.RuleEntry<[]> - /** - * disallow `eslint-disable` comments about specific rules - * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/no-restricted-disable.html - */ - 'eslint-comments/no-restricted-disable'?: Linter.RuleEntry - /** - * disallow `eslint-disable` comments without rule names - * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/no-unlimited-disable.html - */ - 'eslint-comments/no-unlimited-disable'?: Linter.RuleEntry<[]> - /** - * disallow unused `eslint-disable` comments - * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/no-unused-disable.html - */ - 'eslint-comments/no-unused-disable'?: Linter.RuleEntry<[]> - /** - * disallow unused `eslint-enable` comments - * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/no-unused-enable.html - */ - 'eslint-comments/no-unused-enable'?: Linter.RuleEntry<[]> - /** - * disallow ESLint directive-comments - * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/no-use.html - */ - 'eslint-comments/no-use'?: Linter.RuleEntry - /** - * require include descriptions in ESLint directive-comments - * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/require-description.html - */ - 'eslint-comments/require-description'?: Linter.RuleEntry - /** - * Use dprint to format code - */ - 'format/dprint'?: Linter.RuleEntry - /** - * Use Prettier to format code - */ - 'format/prettier'?: Linter.RuleEntry - /** - * Enforce or ban the use of inline type-only markers for named imports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/consistent-type-specifier-style.md - */ - 'import/consistent-type-specifier-style'?: Linter.RuleEntry - /** - * Ensure a default export is present, given a default import. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/default.md - */ - 'import/default'?: Linter.RuleEntry<[]> - /** - * Enforce a leading comment with the webpackChunkName for dynamic imports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/dynamic-import-chunkname.md - */ - 'import/dynamic-import-chunkname'?: Linter.RuleEntry - /** - * Forbid any invalid exports, i.e. re-export of the same name. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/export.md - */ - 'import/export'?: Linter.RuleEntry<[]> - /** - * Ensure all exports appear after other statements. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/exports-last.md - */ - 'import/exports-last'?: Linter.RuleEntry<[]> - /** - * Ensure consistent use of file extension within the import path. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/extensions.md - */ - 'import/extensions'?: Linter.RuleEntry - /** - * Ensure all imports appear before other statements. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/first.md - */ - 'import/first'?: Linter.RuleEntry - /** - * Prefer named exports to be grouped together in a single export declaration. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/group-exports.md - */ - 'import/group-exports'?: Linter.RuleEntry<[]> - /** - * Replaced by `import-x/first`. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/imports-first.md - * @deprecated - */ - 'import/imports-first'?: Linter.RuleEntry - /** - * Enforce the maximum number of dependencies a module can have. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/max-dependencies.md - */ - 'import/max-dependencies'?: Linter.RuleEntry - /** - * Ensure named imports correspond to a named export in the remote file. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/named.md - */ - 'import/named'?: Linter.RuleEntry - /** - * Ensure imported namespaces contain dereferenced properties as they are dereferenced. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/namespace.md - */ - 'import/namespace'?: Linter.RuleEntry - /** - * Enforce a newline after import statements. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/newline-after-import.md - */ - 'import/newline-after-import'?: Linter.RuleEntry - /** - * Forbid import of modules using absolute paths. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-absolute-path.md - */ - 'import/no-absolute-path'?: Linter.RuleEntry - /** - * Forbid AMD `require` and `define` calls. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-amd.md - */ - 'import/no-amd'?: Linter.RuleEntry<[]> - /** - * Forbid anonymous values as default exports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-anonymous-default-export.md - */ - 'import/no-anonymous-default-export'?: Linter.RuleEntry - /** - * Forbid CommonJS `require` calls and `module.exports` or `exports.*`. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-commonjs.md - */ - 'import/no-commonjs'?: Linter.RuleEntry - /** - * Forbid a module from importing a module with a dependency path back to itself. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-cycle.md - */ - 'import/no-cycle'?: Linter.RuleEntry - /** - * Forbid default exports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-default-export.md - */ - 'import/no-default-export'?: Linter.RuleEntry<[]> - /** - * Forbid imported names marked with `@deprecated` documentation tag. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-deprecated.md - */ - 'import/no-deprecated'?: Linter.RuleEntry<[]> - /** - * Forbid repeated import of the same module in multiple places. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-duplicates.md - */ - 'import/no-duplicates'?: Linter.RuleEntry - /** - * Forbid `require()` calls with expressions. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-dynamic-require.md - */ - 'import/no-dynamic-require'?: Linter.RuleEntry - /** - * Forbid empty named import blocks. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-empty-named-blocks.md - */ - 'import/no-empty-named-blocks'?: Linter.RuleEntry<[]> - /** - * Forbid the use of extraneous packages. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-extraneous-dependencies.md - */ - 'import/no-extraneous-dependencies'?: Linter.RuleEntry - /** - * Forbid import statements with CommonJS module.exports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-import-module-exports.md - */ - 'import/no-import-module-exports'?: Linter.RuleEntry - /** - * Forbid importing the submodules of other modules. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-internal-modules.md - */ - 'import/no-internal-modules'?: Linter.RuleEntry - /** - * Forbid the use of mutable exports with `var` or `let`. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-mutable-exports.md - */ - 'import/no-mutable-exports'?: Linter.RuleEntry<[]> - /** - * Forbid use of exported name as identifier of default export. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-named-as-default.md - */ - 'import/no-named-as-default'?: Linter.RuleEntry<[]> - /** - * Forbid use of exported name as property of default export. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-named-as-default-member.md - */ - 'import/no-named-as-default-member'?: Linter.RuleEntry<[]> - /** - * Forbid named default exports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-named-default.md - */ - 'import/no-named-default'?: Linter.RuleEntry<[]> - /** - * Forbid named exports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-named-export.md - */ - 'import/no-named-export'?: Linter.RuleEntry<[]> - /** - * Forbid namespace (a.k.a. "wildcard" `*`) imports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-namespace.md - */ - 'import/no-namespace'?: Linter.RuleEntry - /** - * Forbid Node.js builtin modules. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-nodejs-modules.md - */ - 'import/no-nodejs-modules'?: Linter.RuleEntry - /** - * Forbid importing packages through relative paths. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-relative-packages.md - */ - 'import/no-relative-packages'?: Linter.RuleEntry - /** - * Forbid importing modules from parent directories. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-relative-parent-imports.md - */ - 'import/no-relative-parent-imports'?: Linter.RuleEntry - /** - * Forbid importing a default export by a different name. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-rename-default.md - */ - 'import/no-rename-default'?: Linter.RuleEntry - /** - * Enforce which files can be imported in a given folder. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-restricted-paths.md - */ - 'import/no-restricted-paths'?: Linter.RuleEntry - /** - * Forbid a module from importing itself. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-self-import.md - */ - 'import/no-self-import'?: Linter.RuleEntry<[]> - /** - * Forbid unassigned imports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-unassigned-import.md - */ - 'import/no-unassigned-import'?: Linter.RuleEntry - /** - * Ensure imports point to a file/module that can be resolved. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-unresolved.md - */ - 'import/no-unresolved'?: Linter.RuleEntry - /** - * Forbid modules without exports, or exports without matching import in another module. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-unused-modules.md - */ - 'import/no-unused-modules'?: Linter.RuleEntry - /** - * Forbid unnecessary path segments in import and require statements. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-useless-path-segments.md - */ - 'import/no-useless-path-segments'?: Linter.RuleEntry - /** - * Forbid webpack loader syntax in imports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-webpack-loader-syntax.md - */ - 'import/no-webpack-loader-syntax'?: Linter.RuleEntry<[]> - /** - * Enforce a convention in module import order. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/order.md - */ - 'import/order'?: Linter.RuleEntry - /** - * Prefer a default export if module exports a single name or multiple names. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/prefer-default-export.md - */ - 'import/prefer-default-export'?: Linter.RuleEntry - /** - * Forbid potentially ambiguous parse goal (`script` vs. `module`). - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/unambiguous.md - */ - 'import/unambiguous'?: Linter.RuleEntry<[]> - /** - * Checks that `@access` tags have a valid value. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-access.md#repos-sticky-header - */ - 'jsdoc/check-access'?: Linter.RuleEntry<[]> - /** - * Reports invalid alignment of JSDoc block asterisks. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-alignment.md#repos-sticky-header - */ - 'jsdoc/check-alignment'?: Linter.RuleEntry<[]> - /** - * Ensures that (JavaScript) examples within JSDoc adhere to ESLint rules. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-examples.md#repos-sticky-header - */ - 'jsdoc/check-examples'?: Linter.RuleEntry - /** - * Reports invalid padding inside JSDoc blocks. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-indentation.md#repos-sticky-header - */ - 'jsdoc/check-indentation'?: Linter.RuleEntry - /** - * Reports invalid alignment of JSDoc block lines. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-line-alignment.md#repos-sticky-header - */ - 'jsdoc/check-line-alignment'?: Linter.RuleEntry - /** - * Ensures that parameter names in JSDoc match those in the function declaration. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-param-names.md#repos-sticky-header - */ - 'jsdoc/check-param-names'?: Linter.RuleEntry - /** - * Ensures that property names in JSDoc are not duplicated on the same block and that nested properties have defined roots. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-property-names.md#repos-sticky-header - */ - 'jsdoc/check-property-names'?: Linter.RuleEntry - /** - * Reports against syntax not valid for the mode (e.g., Google Closure Compiler in non-Closure mode). - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-syntax.md#repos-sticky-header - */ - 'jsdoc/check-syntax'?: Linter.RuleEntry<[]> - /** - * Reports invalid block tag names. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-tag-names.md#repos-sticky-header - */ - 'jsdoc/check-tag-names'?: Linter.RuleEntry - /** - * Checks that any `@template` names are actually used in the connected `@typedef` or type alias. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-template-names.md#repos-sticky-header - */ - 'jsdoc/check-template-names'?: Linter.RuleEntry<[]> - /** - * Reports invalid types. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-types.md#repos-sticky-header - */ - 'jsdoc/check-types'?: Linter.RuleEntry - /** - * This rule checks the values for a handful of tags: `@version`, `@since`, `@license` and `@author`. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-values.md#repos-sticky-header - */ - 'jsdoc/check-values'?: Linter.RuleEntry - /** - * Converts non-JSDoc comments preceding or following nodes into JSDoc ones - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/convert-to-jsdoc-comments.md#repos-sticky-header - */ - 'jsdoc/convert-to-jsdoc-comments'?: Linter.RuleEntry - /** - * Expects specific tags to be empty of any content. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/empty-tags.md#repos-sticky-header - */ - 'jsdoc/empty-tags'?: Linter.RuleEntry - /** - * Reports an issue with any non-constructor function using `@implements`. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/implements-on-classes.md#repos-sticky-header - */ - 'jsdoc/implements-on-classes'?: Linter.RuleEntry - /** - * Reports if JSDoc `import()` statements point to a package which is not listed in `dependencies` or `devDependencies` - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/imports-as-dependencies.md#repos-sticky-header - */ - 'jsdoc/imports-as-dependencies'?: Linter.RuleEntry<[]> - /** - * This rule reports doc comments that only restate their attached name. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/informative-docs.md#repos-sticky-header - */ - 'jsdoc/informative-docs'?: Linter.RuleEntry - /** - * Enforces minimum number of newlines before JSDoc comment blocks - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/lines-before-block.md#repos-sticky-header - */ - 'jsdoc/lines-before-block'?: Linter.RuleEntry - /** - * Enforces a regular expression pattern on descriptions. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/match-description.md#repos-sticky-header - */ - 'jsdoc/match-description'?: Linter.RuleEntry - /** - * Reports the name portion of a JSDoc tag if matching or not matching a given regular expression. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/match-name.md#repos-sticky-header - */ - 'jsdoc/match-name'?: Linter.RuleEntry - /** - * Controls how and whether jsdoc blocks can be expressed as single or multiple line blocks. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/multiline-blocks.md#repos-sticky-header - */ - 'jsdoc/multiline-blocks'?: Linter.RuleEntry - /** - * This rule checks for multi-line-style comments which fail to meet the criteria of a jsdoc block. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-bad-blocks.md#repos-sticky-header - */ - 'jsdoc/no-bad-blocks'?: Linter.RuleEntry - /** - * Detects and removes extra lines of a blank block description - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-blank-block-descriptions.md#repos-sticky-header - */ - 'jsdoc/no-blank-block-descriptions'?: Linter.RuleEntry<[]> - /** - * Removes empty blocks with nothing but possibly line breaks - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-blank-blocks.md#repos-sticky-header - */ - 'jsdoc/no-blank-blocks'?: Linter.RuleEntry - /** - * This rule reports defaults being used on the relevant portion of `@param` or `@default`. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-defaults.md#repos-sticky-header - */ - 'jsdoc/no-defaults'?: Linter.RuleEntry - /** - * Reports when certain comment structures are always expected. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-missing-syntax.md#repos-sticky-header - */ - 'jsdoc/no-missing-syntax'?: Linter.RuleEntry - /** - * Prevents use of multiple asterisks at the beginning of lines. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-multi-asterisks.md#repos-sticky-header - */ - 'jsdoc/no-multi-asterisks'?: Linter.RuleEntry - /** - * Reports when certain comment structures are present. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-restricted-syntax.md#repos-sticky-header - */ - 'jsdoc/no-restricted-syntax'?: Linter.RuleEntry - /** - * This rule reports types being used on `@param` or `@returns`. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-types.md#repos-sticky-header - */ - 'jsdoc/no-types'?: Linter.RuleEntry - /** - * Checks that types in jsdoc comments are defined. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-undefined-types.md#repos-sticky-header - */ - 'jsdoc/no-undefined-types'?: Linter.RuleEntry - /** - * Requires that each JSDoc line starts with an `*`. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-asterisk-prefix.md#repos-sticky-header - */ - 'jsdoc/require-asterisk-prefix'?: Linter.RuleEntry - /** - * Requires that all functions have a description. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-description.md#repos-sticky-header - */ - 'jsdoc/require-description'?: Linter.RuleEntry - /** - * Requires that block description, explicit `@description`, and `@param`/`@returns` tag descriptions are written in complete sentences. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-description-complete-sentence.md#repos-sticky-header - */ - 'jsdoc/require-description-complete-sentence'?: Linter.RuleEntry - /** - * Requires that all functions have examples. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-example.md#repos-sticky-header - */ - 'jsdoc/require-example'?: Linter.RuleEntry - /** - * Checks that all files have one `@file`, `@fileoverview`, or `@overview` tag at the beginning of the file. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-file-overview.md#repos-sticky-header - */ - 'jsdoc/require-file-overview'?: Linter.RuleEntry - /** - * Requires a hyphen before the `@param` description. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-hyphen-before-param-description.md#repos-sticky-header - */ - 'jsdoc/require-hyphen-before-param-description'?: Linter.RuleEntry - /** - * Require JSDoc comments - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-jsdoc.md#repos-sticky-header - */ - 'jsdoc/require-jsdoc'?: Linter.RuleEntry - /** - * Requires that all function parameters are documented. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param.md#repos-sticky-header - */ - 'jsdoc/require-param'?: Linter.RuleEntry - /** - * Requires that each `@param` tag has a `description` value. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-description.md#repos-sticky-header - */ - 'jsdoc/require-param-description'?: Linter.RuleEntry - /** - * Requires that all function parameters have names. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-name.md#repos-sticky-header - */ - 'jsdoc/require-param-name'?: Linter.RuleEntry - /** - * Requires that each `@param` tag has a `type` value. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-type.md#repos-sticky-header - */ - 'jsdoc/require-param-type'?: Linter.RuleEntry - /** - * Requires that all `@typedef` and `@namespace` tags have `@property` when their type is a plain `object`, `Object`, or `PlainObject`. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property.md#repos-sticky-header - */ - 'jsdoc/require-property'?: Linter.RuleEntry<[]> - /** - * Requires that each `@property` tag has a `description` value. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property-description.md#repos-sticky-header - */ - 'jsdoc/require-property-description'?: Linter.RuleEntry<[]> - /** - * Requires that all function `@property` tags have names. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property-name.md#repos-sticky-header - */ - 'jsdoc/require-property-name'?: Linter.RuleEntry<[]> - /** - * Requires that each `@property` tag has a `type` value. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property-type.md#repos-sticky-header - */ - 'jsdoc/require-property-type'?: Linter.RuleEntry<[]> - /** - * Requires that returns are documented. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns.md#repos-sticky-header - */ - 'jsdoc/require-returns'?: Linter.RuleEntry - /** - * Requires a return statement in function body if a `@returns` tag is specified in jsdoc comment. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns-check.md#repos-sticky-header - */ - 'jsdoc/require-returns-check'?: Linter.RuleEntry - /** - * Requires that the `@returns` tag has a `description` value. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns-description.md#repos-sticky-header - */ - 'jsdoc/require-returns-description'?: Linter.RuleEntry - /** - * Requires that `@returns` tag has `type` value. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns-type.md#repos-sticky-header - */ - 'jsdoc/require-returns-type'?: Linter.RuleEntry - /** - * Requires template tags for each generic type parameter - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-template.md#repos-sticky-header - */ - 'jsdoc/require-template'?: Linter.RuleEntry - /** - * Requires that throw statements are documented. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-throws.md#repos-sticky-header - */ - 'jsdoc/require-throws'?: Linter.RuleEntry - /** - * Requires yields are documented. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields.md#repos-sticky-header - */ - 'jsdoc/require-yields'?: Linter.RuleEntry - /** - * Requires a yield statement in function body if a `@yields` tag is specified in jsdoc comment. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields-check.md#repos-sticky-header - */ - 'jsdoc/require-yields-check'?: Linter.RuleEntry - /** - * Sorts tags by a specified sequence according to tag name. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/sort-tags.md#repos-sticky-header - */ - 'jsdoc/sort-tags'?: Linter.RuleEntry - /** - * Enforces lines (or no lines) between tags. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/tag-lines.md#repos-sticky-header - */ - 'jsdoc/tag-lines'?: Linter.RuleEntry - /** - * Auto-escape certain characters that are input within block and tag descriptions. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/text-escaping.md#repos-sticky-header - */ - 'jsdoc/text-escaping'?: Linter.RuleEntry - /** - * Requires all types to be valid JSDoc or Closure compiler types without syntax errors. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/valid-types.md#repos-sticky-header - */ - 'jsdoc/valid-types'?: Linter.RuleEntry - /** - * enforce line breaks after opening and before closing array brackets - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/array-bracket-newline.html - */ - 'jsonc/array-bracket-newline'?: Linter.RuleEntry - /** - * disallow or enforce spaces inside of brackets - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/array-bracket-spacing.html - */ - 'jsonc/array-bracket-spacing'?: Linter.RuleEntry - /** - * enforce line breaks between array elements - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/array-element-newline.html - */ - 'jsonc/array-element-newline'?: Linter.RuleEntry - /** - * apply jsonc rules similar to your configured ESLint core rules - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/auto.html - */ - 'jsonc/auto'?: Linter.RuleEntry<[]> - /** - * require or disallow trailing commas - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/comma-dangle.html - */ - 'jsonc/comma-dangle'?: Linter.RuleEntry - /** - * enforce consistent comma style - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/comma-style.html - */ - 'jsonc/comma-style'?: Linter.RuleEntry - /** - * enforce consistent indentation - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/indent.html - */ - 'jsonc/indent'?: Linter.RuleEntry - /** - * enforce naming convention to property key names - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/key-name-casing.html - */ - 'jsonc/key-name-casing'?: Linter.RuleEntry - /** - * enforce consistent spacing between keys and values in object literal properties - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/key-spacing.html - */ - 'jsonc/key-spacing'?: Linter.RuleEntry - /** - * disallow BigInt literals - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-bigint-literals.html - */ - 'jsonc/no-bigint-literals'?: Linter.RuleEntry<[]> - /** - * disallow binary expression - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-binary-expression.html - */ - 'jsonc/no-binary-expression'?: Linter.RuleEntry<[]> - /** - * disallow binary numeric literals - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-binary-numeric-literals.html - */ - 'jsonc/no-binary-numeric-literals'?: Linter.RuleEntry<[]> - /** - * disallow comments - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-comments.html - */ - 'jsonc/no-comments'?: Linter.RuleEntry<[]> - /** - * disallow duplicate keys in object literals - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-dupe-keys.html - */ - 'jsonc/no-dupe-keys'?: Linter.RuleEntry<[]> - /** - * disallow escape sequences in identifiers. - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-escape-sequence-in-identifier.html - */ - 'jsonc/no-escape-sequence-in-identifier'?: Linter.RuleEntry<[]> - /** - * disallow leading or trailing decimal points in numeric literals - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-floating-decimal.html - */ - 'jsonc/no-floating-decimal'?: Linter.RuleEntry<[]> - /** - * disallow hexadecimal numeric literals - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-hexadecimal-numeric-literals.html - */ - 'jsonc/no-hexadecimal-numeric-literals'?: Linter.RuleEntry<[]> - /** - * disallow Infinity - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-infinity.html - */ - 'jsonc/no-infinity'?: Linter.RuleEntry<[]> - /** - * disallow irregular whitespace - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-irregular-whitespace.html - */ - 'jsonc/no-irregular-whitespace'?: Linter.RuleEntry - /** - * disallow multiline strings - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-multi-str.html - */ - 'jsonc/no-multi-str'?: Linter.RuleEntry<[]> - /** - * disallow NaN - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-nan.html - */ - 'jsonc/no-nan'?: Linter.RuleEntry<[]> - /** - * disallow number property keys - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-number-props.html - */ - 'jsonc/no-number-props'?: Linter.RuleEntry<[]> - /** - * disallow numeric separators - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-numeric-separators.html - */ - 'jsonc/no-numeric-separators'?: Linter.RuleEntry<[]> - /** - * disallow legacy octal literals - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-octal.html - */ - 'jsonc/no-octal'?: Linter.RuleEntry<[]> - /** - * disallow octal escape sequences in string literals - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-octal-escape.html - */ - 'jsonc/no-octal-escape'?: Linter.RuleEntry<[]> - /** - * disallow octal numeric literals - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-octal-numeric-literals.html - */ - 'jsonc/no-octal-numeric-literals'?: Linter.RuleEntry<[]> - /** - * disallow parentheses around the expression - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-parenthesized.html - */ - 'jsonc/no-parenthesized'?: Linter.RuleEntry<[]> - /** - * disallow plus sign - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-plus-sign.html - */ - 'jsonc/no-plus-sign'?: Linter.RuleEntry<[]> - /** - * disallow RegExp literals - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-regexp-literals.html - */ - 'jsonc/no-regexp-literals'?: Linter.RuleEntry<[]> - /** - * disallow sparse arrays - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-sparse-arrays.html - */ - 'jsonc/no-sparse-arrays'?: Linter.RuleEntry<[]> - /** - * disallow template literals - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-template-literals.html - */ - 'jsonc/no-template-literals'?: Linter.RuleEntry<[]> - /** - * disallow `undefined` - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-undefined-value.html - */ - 'jsonc/no-undefined-value'?: Linter.RuleEntry<[]> - /** - * disallow Unicode code point escape sequences. - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-unicode-codepoint-escapes.html - */ - 'jsonc/no-unicode-codepoint-escapes'?: Linter.RuleEntry<[]> - /** - * disallow unnecessary escape usage - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-useless-escape.html - */ - 'jsonc/no-useless-escape'?: Linter.RuleEntry - /** - * enforce consistent line breaks inside braces - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/object-curly-newline.html - */ - 'jsonc/object-curly-newline'?: Linter.RuleEntry - /** - * enforce consistent spacing inside braces - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/object-curly-spacing.html - */ - 'jsonc/object-curly-spacing'?: Linter.RuleEntry - /** - * enforce placing object properties on separate lines - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/object-property-newline.html - */ - 'jsonc/object-property-newline'?: Linter.RuleEntry - /** - * require quotes around object literal property names - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/quote-props.html - */ - 'jsonc/quote-props'?: Linter.RuleEntry - /** - * enforce use of double or single quotes - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/quotes.html - */ - 'jsonc/quotes'?: Linter.RuleEntry - /** - * require array values to be sorted - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/sort-array-values.html - */ - 'jsonc/sort-array-values'?: Linter.RuleEntry - /** - * require object keys to be sorted - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/sort-keys.html - */ - 'jsonc/sort-keys'?: Linter.RuleEntry - /** - * disallow spaces after unary operators - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/space-unary-ops.html - */ - 'jsonc/space-unary-ops'?: Linter.RuleEntry - /** - * disallow invalid number for JSON - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/valid-json-number.html - */ - 'jsonc/valid-json-number'?: Linter.RuleEntry<[]> - /** - * disallow parsing errors in Vue custom blocks - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/vue-custom-block/no-parsing-error.html - */ - 'jsonc/vue-custom-block/no-parsing-error'?: Linter.RuleEntry<[]> - /** - * Enforce emojis are wrapped in `` and provide screen reader access. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/accessible-emoji.md - * @deprecated - */ - 'jsx-a11y/accessible-emoji'?: Linter.RuleEntry - /** - * Enforce all elements that require alternative text have meaningful information to relay back to end user. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/alt-text.md - */ - 'jsx-a11y/alt-text'?: Linter.RuleEntry - /** - * Enforce `` text to not exactly match "click here", "here", "link", or "a link". - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-ambiguous-text.md - */ - 'jsx-a11y/anchor-ambiguous-text'?: Linter.RuleEntry - /** - * Enforce all anchors to contain accessible content. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-has-content.md - */ - 'jsx-a11y/anchor-has-content'?: Linter.RuleEntry - /** - * Enforce all anchors are valid, navigable elements. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-is-valid.md - */ - 'jsx-a11y/anchor-is-valid'?: Linter.RuleEntry - /** - * Enforce elements with aria-activedescendant are tabbable. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-activedescendant-has-tabindex.md - */ - 'jsx-a11y/aria-activedescendant-has-tabindex'?: Linter.RuleEntry - /** - * Enforce all `aria-*` props are valid. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-props.md - */ - 'jsx-a11y/aria-props'?: Linter.RuleEntry - /** - * Enforce ARIA state and property values are valid. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-proptypes.md - */ - 'jsx-a11y/aria-proptypes'?: Linter.RuleEntry - /** - * Enforce that elements with ARIA roles must use a valid, non-abstract ARIA role. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-role.md - */ - 'jsx-a11y/aria-role'?: Linter.RuleEntry - /** - * Enforce that elements that do not support ARIA roles, states, and properties do not have those attributes. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-unsupported-elements.md - */ - 'jsx-a11y/aria-unsupported-elements'?: Linter.RuleEntry - /** - * Enforce that autocomplete attributes are used correctly. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/autocomplete-valid.md - */ - 'jsx-a11y/autocomplete-valid'?: Linter.RuleEntry - /** - * Enforce a clickable non-interactive element has at least one keyboard event listener. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/click-events-have-key-events.md - */ - 'jsx-a11y/click-events-have-key-events'?: Linter.RuleEntry - /** - * Enforce that a control (an interactive element) has a text label. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/control-has-associated-label.md - */ - 'jsx-a11y/control-has-associated-label'?: Linter.RuleEntry - /** - * Enforce heading (`h1`, `h2`, etc) elements contain accessible content. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/heading-has-content.md - */ - 'jsx-a11y/heading-has-content'?: Linter.RuleEntry - /** - * Enforce `` element has `lang` prop. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/html-has-lang.md - */ - 'jsx-a11y/html-has-lang'?: Linter.RuleEntry - /** - * Enforce iframe elements have a title attribute. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/iframe-has-title.md - */ - 'jsx-a11y/iframe-has-title'?: Linter.RuleEntry - /** - * Enforce `` alt prop does not contain the word "image", "picture", or "photo". - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/img-redundant-alt.md - */ - 'jsx-a11y/img-redundant-alt'?: Linter.RuleEntry - /** - * Enforce that elements with interactive handlers like `onClick` must be focusable. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/interactive-supports-focus.md - */ - 'jsx-a11y/interactive-supports-focus'?: Linter.RuleEntry - /** - * Enforce that a `label` tag has a text label and an associated control. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/label-has-associated-control.md - */ - 'jsx-a11y/label-has-associated-control'?: Linter.RuleEntry - /** - * Enforce that `
` elements. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/scope.md - */ - 'jsx-a11y/scope'?: Linter.RuleEntry - /** - * Enforce `tabIndex` value is not greater than zero. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/tabindex-no-positive.md - */ - 'jsx-a11y/tabindex-no-positive'?: Linter.RuleEntry - /** - * Require languages for fenced code blocks - * @see https://github.com/eslint/markdown/blob/main/docs/rules/fenced-code-language.md - */ - 'markdown/fenced-code-language'?: Linter.RuleEntry - /** - * Enforce heading levels increment by one - * @see https://github.com/eslint/markdown/blob/main/docs/rules/heading-increment.md - */ - 'markdown/heading-increment'?: Linter.RuleEntry<[]> - /** - * Disallow duplicate headings in the same document - * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-duplicate-headings.md - */ - 'markdown/no-duplicate-headings'?: Linter.RuleEntry<[]> - /** - * Disallow empty links - * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-empty-links.md - */ - 'markdown/no-empty-links'?: Linter.RuleEntry<[]> - /** - * Disallow HTML tags - * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-html.md - */ - 'markdown/no-html'?: Linter.RuleEntry - /** - * Disallow invalid label references - * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-invalid-label-refs.md - */ - 'markdown/no-invalid-label-refs'?: Linter.RuleEntry<[]> - /** - * Disallow missing label references - * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-missing-label-refs.md - */ - 'markdown/no-missing-label-refs'?: Linter.RuleEntry<[]> - /** - * require `return` statements after callbacks - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/callback-return.md - */ - 'n/callback-return'?: Linter.RuleEntry - /** - * enforce either `module.exports` or `exports` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/exports-style.md - */ - 'n/exports-style'?: Linter.RuleEntry - /** - * enforce the style of file extensions in `import` declarations - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/file-extension-in-import.md - */ - 'n/file-extension-in-import'?: Linter.RuleEntry - /** - * require `require()` calls to be placed at top-level module scope - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/global-require.md - */ - 'n/global-require'?: Linter.RuleEntry<[]> - /** - * require error handling in callbacks - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/handle-callback-err.md - */ - 'n/handle-callback-err'?: Linter.RuleEntry - /** - * require correct usage of hashbang - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/hashbang.md - */ - 'n/hashbang'?: Linter.RuleEntry - /** - * enforce Node.js-style error-first callback pattern is followed - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-callback-literal.md - */ - 'n/no-callback-literal'?: Linter.RuleEntry<[]> - /** - * disallow deprecated APIs - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-deprecated-api.md - */ - 'n/no-deprecated-api'?: Linter.RuleEntry - /** - * disallow the assignment to `exports` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-exports-assign.md - */ - 'n/no-exports-assign'?: Linter.RuleEntry<[]> - /** - * disallow `import` declarations which import extraneous modules - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-extraneous-import.md - */ - 'n/no-extraneous-import'?: Linter.RuleEntry - /** - * disallow `require()` expressions which import extraneous modules - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-extraneous-require.md - */ - 'n/no-extraneous-require'?: Linter.RuleEntry - /** - * disallow third-party modules which are hiding core modules - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-hide-core-modules.md - * @deprecated - */ - 'n/no-hide-core-modules'?: Linter.RuleEntry - /** - * disallow `import` declarations which import non-existence modules - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-missing-import.md - */ - 'n/no-missing-import'?: Linter.RuleEntry - /** - * disallow `require()` expressions which import non-existence modules - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-missing-require.md - */ - 'n/no-missing-require'?: Linter.RuleEntry - /** - * disallow `require` calls to be mixed with regular variable declarations - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-mixed-requires.md - */ - 'n/no-mixed-requires'?: Linter.RuleEntry - /** - * disallow `new` operators with calls to `require` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-new-require.md - */ - 'n/no-new-require'?: Linter.RuleEntry<[]> - /** - * disallow string concatenation with `__dirname` and `__filename` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-path-concat.md - */ - 'n/no-path-concat'?: Linter.RuleEntry<[]> - /** - * disallow the use of `process.env` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-process-env.md - */ - 'n/no-process-env'?: Linter.RuleEntry - /** - * disallow the use of `process.exit()` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-process-exit.md - */ - 'n/no-process-exit'?: Linter.RuleEntry<[]> - /** - * disallow specified modules when loaded by `import` declarations - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-restricted-import.md - */ - 'n/no-restricted-import'?: Linter.RuleEntry - /** - * disallow specified modules when loaded by `require` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-restricted-require.md - */ - 'n/no-restricted-require'?: Linter.RuleEntry - /** - * disallow synchronous methods - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-sync.md - */ - 'n/no-sync'?: Linter.RuleEntry - /** - * disallow `bin` files that npm ignores - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-unpublished-bin.md - */ - 'n/no-unpublished-bin'?: Linter.RuleEntry - /** - * disallow `import` declarations which import private modules - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-unpublished-import.md - */ - 'n/no-unpublished-import'?: Linter.RuleEntry - /** - * disallow `require()` expressions which import private modules - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-unpublished-require.md - */ - 'n/no-unpublished-require'?: Linter.RuleEntry - /** - * disallow unsupported ECMAScript built-ins on the specified version - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-unsupported-features/es-builtins.md - */ - 'n/no-unsupported-features/es-builtins'?: Linter.RuleEntry - /** - * disallow unsupported ECMAScript syntax on the specified version - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-unsupported-features/es-syntax.md - */ - 'n/no-unsupported-features/es-syntax'?: Linter.RuleEntry - /** - * disallow unsupported Node.js built-in APIs on the specified version - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-unsupported-features/node-builtins.md - */ - 'n/no-unsupported-features/node-builtins'?: Linter.RuleEntry - /** - * enforce either `Buffer` or `require("buffer").Buffer` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-global/buffer.md - */ - 'n/prefer-global/buffer'?: Linter.RuleEntry - /** - * enforce either `console` or `require("console")` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-global/console.md - */ - 'n/prefer-global/console'?: Linter.RuleEntry - /** - * enforce either `process` or `require("process")` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-global/process.md - */ - 'n/prefer-global/process'?: Linter.RuleEntry - /** - * enforce either `TextDecoder` or `require("util").TextDecoder` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-global/text-decoder.md - */ - 'n/prefer-global/text-decoder'?: Linter.RuleEntry - /** - * enforce either `TextEncoder` or `require("util").TextEncoder` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-global/text-encoder.md - */ - 'n/prefer-global/text-encoder'?: Linter.RuleEntry - /** - * enforce either `URL` or `require("url").URL` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-global/url.md - */ - 'n/prefer-global/url'?: Linter.RuleEntry - /** - * enforce either `URLSearchParams` or `require("url").URLSearchParams` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-global/url-search-params.md - */ - 'n/prefer-global/url-search-params'?: Linter.RuleEntry - /** - * enforce using the `node:` protocol when importing Node.js builtin modules. - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-node-protocol.md - */ - 'n/prefer-node-protocol'?: Linter.RuleEntry - /** - * enforce `require("dns").promises` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-promises/dns.md - */ - 'n/prefer-promises/dns'?: Linter.RuleEntry<[]> - /** - * enforce `require("fs").promises` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-promises/fs.md - */ - 'n/prefer-promises/fs'?: Linter.RuleEntry<[]> - /** - * require that `process.exit()` expressions use the same code path as `throw` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/process-exit-as-throw.md - */ - 'n/process-exit-as-throw'?: Linter.RuleEntry<[]> - /** - * require correct usage of hashbang - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/hashbang.md - * @deprecated - */ - 'n/shebang'?: Linter.RuleEntry - /** - * Do not use for...of loop with array, use for loop instead, because for loop is faster than for...of loop - * @see https://www.npmjs.com/package/eslint-plugin-not-for-of-array - */ - 'no-for-of-array/no-for-of-array'?: Linter.RuleEntry<[]> - /** - * An eslint rule that does pattern matching against an entire file - */ - 'no-secrets/no-pattern-match'?: Linter.RuleEntry<[]> - /** - * An eslint rule that looks for possible leftover secrets in code - */ - 'no-secrets/no-secrets'?: Linter.RuleEntry<[]> - /** - * ESLint rule to disallow unsanitized method calls - * @see https://github.com/mozilla/eslint-plugin-no-unsanitized/tree/master/docs/rules/method.md - */ - 'no-unsanitized/method'?: Linter.RuleEntry - /** - * ESLint rule to disallow unsanitized property assignment - * @see https://github.com/mozilla/eslint-plugin-no-unsanitized/tree/master/docs/rules/property.md - */ - 'no-unsanitized/property'?: Linter.RuleEntry - /** - * Enforce sorted arrays before include method. - * @see https://perfectionist.dev/rules/sort-array-includes - */ - 'perfectionist/sort-array-includes'?: Linter.RuleEntry - /** - * Enforce sorted classes. - * @see https://perfectionist.dev/rules/sort-classes - */ - 'perfectionist/sort-classes'?: Linter.RuleEntry - /** - * Enforce sorted decorators. - * @see https://perfectionist.dev/rules/sort-decorators - */ - 'perfectionist/sort-decorators'?: Linter.RuleEntry - /** - * Enforce sorted TypeScript enums. - * @see https://perfectionist.dev/rules/sort-enums - */ - 'perfectionist/sort-enums'?: Linter.RuleEntry - /** - * Enforce sorted exports. - * @see https://perfectionist.dev/rules/sort-exports - */ - 'perfectionist/sort-exports'?: Linter.RuleEntry - /** - * Enforce sorted heritage clauses. - * @see https://perfectionist.dev/rules/sort-heritage-clauses - */ - 'perfectionist/sort-heritage-clauses'?: Linter.RuleEntry - /** - * Enforce sorted imports. - * @see https://perfectionist.dev/rules/sort-imports - */ - 'perfectionist/sort-imports'?: Linter.RuleEntry - /** - * Enforce sorted interface properties. - * @see https://perfectionist.dev/rules/sort-interfaces - */ - 'perfectionist/sort-interfaces'?: Linter.RuleEntry - /** - * Enforce sorted intersection types. - * @see https://perfectionist.dev/rules/sort-intersection-types - */ - 'perfectionist/sort-intersection-types'?: Linter.RuleEntry - /** - * Enforce sorted JSX props. - * @see https://perfectionist.dev/rules/sort-jsx-props - */ - 'perfectionist/sort-jsx-props'?: Linter.RuleEntry - /** - * Enforce sorted Map elements. - * @see https://perfectionist.dev/rules/sort-maps - */ - 'perfectionist/sort-maps'?: Linter.RuleEntry - /** - * Enforce sorted modules. - * @see https://perfectionist.dev/rules/sort-modules - */ - 'perfectionist/sort-modules'?: Linter.RuleEntry - /** - * Enforce sorted named exports. - * @see https://perfectionist.dev/rules/sort-named-exports - */ - 'perfectionist/sort-named-exports'?: Linter.RuleEntry - /** - * Enforce sorted named imports. - * @see https://perfectionist.dev/rules/sort-named-imports - */ - 'perfectionist/sort-named-imports'?: Linter.RuleEntry - /** - * Enforce sorted object types. - * @see https://perfectionist.dev/rules/sort-object-types - */ - 'perfectionist/sort-object-types'?: Linter.RuleEntry - /** - * Enforce sorted objects. - * @see https://perfectionist.dev/rules/sort-objects - */ - 'perfectionist/sort-objects'?: Linter.RuleEntry - /** - * Enforce sorted sets. - * @see https://perfectionist.dev/rules/sort-sets - */ - 'perfectionist/sort-sets'?: Linter.RuleEntry - /** - * Enforce sorted switch cases. - * @see https://perfectionist.dev/rules/sort-switch-case - */ - 'perfectionist/sort-switch-case'?: Linter.RuleEntry - /** - * Enforce sorted union types. - * @see https://perfectionist.dev/rules/sort-union-types - */ - 'perfectionist/sort-union-types'?: Linter.RuleEntry - /** - * Enforce sorted variable declarations. - * @see https://perfectionist.dev/rules/sort-variable-declarations - */ - 'perfectionist/sort-variable-declarations'?: Linter.RuleEntry - /** - * Enforce assertion to be made in a test body - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/expect-expect.md - */ - 'playwright/expect-expect'?: Linter.RuleEntry - /** - * Enforces a maximum depth to nested describe calls - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/max-nested-describe.md - */ - 'playwright/max-nested-describe'?: Linter.RuleEntry - /** - * Identify false positives when async Playwright APIs are not properly awaited. - */ - 'playwright/missing-playwright-await'?: Linter.RuleEntry - /** - * Disallow conditional logic in tests - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-conditional-in-test.md - */ - 'playwright/no-conditional-in-test'?: Linter.RuleEntry<[]> - /** - * The use of ElementHandle is discouraged, use Locator instead - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-element-handle.md - */ - 'playwright/no-element-handle'?: Linter.RuleEntry<[]> - /** - * The use of `page.$eval` and `page.$$eval` are discouraged, use `locator.evaluate` or `locator.evaluateAll` instead - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-eval.md - */ - 'playwright/no-eval'?: Linter.RuleEntry<[]> - /** - * Prevent usage of `.only()` focus test annotation - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-focused-test.md - */ - 'playwright/no-focused-test'?: Linter.RuleEntry<[]> - /** - * Prevent usage of `{ force: true }` option. - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-force-option.md - */ - 'playwright/no-force-option'?: Linter.RuleEntry<[]> - /** - * Disallow nested `test.step()` methods - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-nested-step.md - */ - 'playwright/no-nested-step'?: Linter.RuleEntry<[]> - /** - * Prevent usage of the networkidle option - */ - 'playwright/no-networkidle'?: Linter.RuleEntry<[]> - /** - * Disallow usage of nth methods - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-nth-methods.md - */ - 'playwright/no-nth-methods'?: Linter.RuleEntry<[]> - /** - * Prevent usage of page.pause() - */ - 'playwright/no-page-pause'?: Linter.RuleEntry<[]> - /** - * Disallows the usage of raw locators - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-raw-locators.md - */ - 'playwright/no-raw-locators'?: Linter.RuleEntry<[]> - /** - * Disallow specific matchers & modifiers - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-restricted-matchers.md - */ - 'playwright/no-restricted-matchers'?: Linter.RuleEntry - /** - * Prevent usage of the `.skip()` skip test annotation. - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-skipped-test.md - */ - 'playwright/no-skipped-test'?: Linter.RuleEntry - /** - * Disallow unnecessary awaits for Playwright methods - */ - 'playwright/no-useless-await'?: Linter.RuleEntry<[]> - /** - * Disallow usage of 'not' matchers when a more specific matcher exists - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-useless-not.md - */ - 'playwright/no-useless-not'?: Linter.RuleEntry<[]> - /** - * Prevent usage of page.waitForTimeout() - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-wait-for-timeout.md - */ - 'playwright/no-wait-for-timeout'?: Linter.RuleEntry<[]> - /** - * Enforce lowercase test names - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-lowercase-title.md - */ - 'playwright/prefer-lowercase-title'?: Linter.RuleEntry - /** - * Suggest using `toStrictEqual()` - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-strict-equal.md - */ - 'playwright/prefer-strict-equal'?: Linter.RuleEntry<[]> - /** - * Suggest using `toBe()` for primitive literals - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-to-be.md - */ - 'playwright/prefer-to-be'?: Linter.RuleEntry<[]> - /** - * Suggest using toContain() - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-to-contain.md - */ - 'playwright/prefer-to-contain'?: Linter.RuleEntry<[]> - /** - * Suggest using `toHaveCount()` - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-to-have-count.md - */ - 'playwright/prefer-to-have-count'?: Linter.RuleEntry<[]> - /** - * Suggest using `toHaveLength()` - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-to-have-length.md - */ - 'playwright/prefer-to-have-length'?: Linter.RuleEntry<[]> - /** - * Prefer web first assertions - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-web-first-assertions.md - */ - 'playwright/prefer-web-first-assertions'?: Linter.RuleEntry<[]> - /** - * Require all assertions to use `expect.soft` - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/require-soft-assertions.md - */ - 'playwright/require-soft-assertions'?: Linter.RuleEntry<[]> - /** - * Require test cases and hooks to be inside a `test.describe` block - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/require-top-level-describe.md - */ - 'playwright/require-top-level-describe'?: Linter.RuleEntry - /** - * Enforce valid `expect()` usage - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/valid-expect.md - */ - 'playwright/valid-expect'?: Linter.RuleEntry - /** - * Require returning inside each `then()` to create readable and reusable Promise chains. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/always-return.md - */ - 'promise/always-return'?: Linter.RuleEntry - /** - * Disallow creating `new` promises outside of utility libs (use [util.promisify][] instead). - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/avoid-new.md - */ - 'promise/avoid-new'?: Linter.RuleEntry<[]> - /** - * Enforce the use of `catch()` on un-returned promises. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/catch-or-return.md - */ - 'promise/catch-or-return'?: Linter.RuleEntry - /** - * Disallow calling `cb()` inside of a `then()` (use [util.callbackify][] instead). - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-callback-in-promise.md - */ - 'promise/no-callback-in-promise'?: Linter.RuleEntry - /** - * Disallow creating new promises with paths that resolve multiple times. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-multiple-resolved.md - */ - 'promise/no-multiple-resolved'?: Linter.RuleEntry<[]> - /** - * Require creating a `Promise` constructor before using it in an ES5 environment. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-native.md - */ - 'promise/no-native'?: Linter.RuleEntry<[]> - /** - * Disallow nested `then()` or `catch()` statements. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-nesting.md - */ - 'promise/no-nesting'?: Linter.RuleEntry<[]> - /** - * Disallow calling `new` on a Promise static method. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-new-statics.md - */ - 'promise/no-new-statics'?: Linter.RuleEntry<[]> - /** - * Disallow using promises inside of callbacks. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-promise-in-callback.md - */ - 'promise/no-promise-in-callback'?: Linter.RuleEntry<[]> - /** - * Disallow return statements in `finally()`. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-return-in-finally.md - */ - 'promise/no-return-in-finally'?: Linter.RuleEntry<[]> - /** - * Disallow wrapping values in `Promise.resolve` or `Promise.reject` when not needed. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-return-wrap.md - */ - 'promise/no-return-wrap'?: Linter.RuleEntry - /** - * Enforce consistent param names and ordering when creating new promises. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/param-names.md - */ - 'promise/param-names'?: Linter.RuleEntry - /** - * Prefer `async`/`await` to the callback pattern. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/prefer-await-to-callbacks.md - */ - 'promise/prefer-await-to-callbacks'?: Linter.RuleEntry<[]> - /** - * Prefer `await` to `then()`/`catch()`/`finally()` for reading Promise values. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/prefer-await-to-then.md - */ - 'promise/prefer-await-to-then'?: Linter.RuleEntry - /** - * Prefer `catch` to `then(a, b)`/`then(null, b)` for handling errors. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/prefer-catch.md - */ - 'promise/prefer-catch'?: Linter.RuleEntry<[]> - /** - * Disallow use of non-standard Promise static methods. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/spec-only.md - */ - 'promise/spec-only'?: Linter.RuleEntry - /** - * Enforces the proper number of arguments are passed to Promise functions. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/valid-params.md - */ - 'promise/valid-params'?: Linter.RuleEntry - /** - * Disallow `children` in void DOM elements. - * @see https://eslint-react.xyz/docs/rules/dom-no-void-elements-with-children - */ - 'react-dom/no-children-in-void-dom-elements'?: Linter.RuleEntry<[]> - /** - * Disallow `dangerouslySetInnerHTML`. - * @see https://eslint-react.xyz/docs/rules/dom-no-dangerously-set-innerhtml - */ - 'react-dom/no-dangerously-set-innerhtml'?: Linter.RuleEntry<[]> - /** - * Disallow `dangerouslySetInnerHTML` and `children` at the same time. - * @see https://eslint-react.xyz/docs/rules/dom-no-dangerously-set-innerhtml-with-children - */ - 'react-dom/no-dangerously-set-innerhtml-with-children'?: Linter.RuleEntry<[]> - /** - * Disallow `findDOMNode`. - * @see https://eslint-react.xyz/docs/rules/dom-no-find-dom-node - */ - 'react-dom/no-find-dom-node'?: Linter.RuleEntry<[]> - /** - * Disallow `flushSync`. - * @see https://eslint-react.xyz/docs/rules/dom-no-flush-sync - */ - 'react-dom/no-flush-sync'?: Linter.RuleEntry<[]> - /** - * Replaces usages of `ReactDom.hydrate()` with `hydrateRoot()`. - * @see https://eslint-react.xyz/docs/rules/dom-no-hydrate - */ - 'react-dom/no-hydrate'?: Linter.RuleEntry<[]> - /** - * Enforces explicit `type` attribute for `button` elements. - * @see https://eslint-react.xyz/docs/rules/dom-no-missing-button-type - */ - 'react-dom/no-missing-button-type'?: Linter.RuleEntry<[]> - /** - * Enforces explicit `sandbox` attribute for `iframe` elements. - * @see https://eslint-react.xyz/docs/rules/dom-no-missing-iframe-sandbox - */ - 'react-dom/no-missing-iframe-sandbox'?: Linter.RuleEntry<[]> - /** - * Enforces the absence of a `namespace` in React elements. - * @see https://eslint-react.xyz/docs/rules/dom-no-namespace - */ - 'react-dom/no-namespace'?: Linter.RuleEntry<[]> - /** - * Replaces usages of `ReactDom.render()` with `createRoot(node).render()`. - * @see https://eslint-react.xyz/docs/rules/dom-no-render - */ - 'react-dom/no-render'?: Linter.RuleEntry<[]> - /** - * Disallow the return value of `ReactDOM.render`. - * @see https://eslint-react.xyz/docs/rules/dom-no-render-return-value - */ - 'react-dom/no-render-return-value'?: Linter.RuleEntry<[]> - /** - * Disallow `javascript:` URLs as attribute values. - * @see https://eslint-react.xyz/docs/rules/dom-no-script-url - */ - 'react-dom/no-script-url'?: Linter.RuleEntry<[]> - /** - * Disallow unknown `DOM` property. - * @see https://eslint-react.xyz/docs/rules/dom-no-unknown-property - */ - 'react-dom/no-unknown-property'?: Linter.RuleEntry - /** - * Enforces `sandbox` attribute for `iframe` elements is not set to unsafe combinations. - * @see https://eslint-react.xyz/docs/rules/dom-no-unsafe-iframe-sandbox - */ - 'react-dom/no-unsafe-iframe-sandbox'?: Linter.RuleEntry<[]> - /** - * Disallow `target="_blank"` without `rel="noreferrer noopener"`. - * @see https://eslint-react.xyz/docs/rules/dom-no-unsafe-target-blank - */ - 'react-dom/no-unsafe-target-blank'?: Linter.RuleEntry<[]> - /** - * Replaces usages of `useFormState` with `useActionState`. - * @see https://eslint-react.xyz/docs/rules/dom-no-use-form-state - */ - 'react-dom/no-use-form-state'?: Linter.RuleEntry<[]> - /** - * Disallow `children` in void DOM elements. - * @see https://eslint-react.xyz/docs/rules/dom-no-void-elements-with-children - */ - 'react-dom/no-void-elements-with-children'?: Linter.RuleEntry<[]> - /** - * Enforces that a function with the `use` prefix should use at least one Hook inside of it. - * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-prefix - */ - 'react-hooks-extra/ensure-custom-hooks-using-other-hooks'?: Linter.RuleEntry<[]> - /** - * Disallow unnecessary usage of `useCallback`. - * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-callback - */ - 'react-hooks-extra/ensure-use-callback-has-non-empty-deps'?: Linter.RuleEntry<[]> - /** - * Disallow unnecessary usage of `useMemo`. - * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-memo - */ - 'react-hooks-extra/ensure-use-memo-has-non-empty-deps'?: Linter.RuleEntry<[]> - /** - * Disallow direct calls to the `set` function of `useState` in `useEffect`. - * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-direct-set-state-in-use-effect - */ - 'react-hooks-extra/no-direct-set-state-in-use-effect'?: Linter.RuleEntry<[]> - /** - * Disallow direct calls to the `set` function of `useState` in `useLayoutEffect`. - * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-direct-set-state-in-use-layout-effect - */ - 'react-hooks-extra/no-direct-set-state-in-use-layout-effect'?: Linter.RuleEntry<[]> - /** - * Enforces that a function with the `use` prefix should use at least one Hook inside of it. - * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-prefix - */ - 'react-hooks-extra/no-redundant-custom-hook'?: Linter.RuleEntry<[]> - /** - * Disallow unnecessary usage of `useCallback`. - * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-callback - */ - 'react-hooks-extra/no-unnecessary-use-callback'?: Linter.RuleEntry<[]> - /** - * Disallow unnecessary usage of `useMemo`. - * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-memo - */ - 'react-hooks-extra/no-unnecessary-use-memo'?: Linter.RuleEntry<[]> - /** - * Enforces that a function with the `use` prefix should use at least one Hook inside of it. - * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-prefix - */ - 'react-hooks-extra/no-unnecessary-use-prefix'?: Linter.RuleEntry<[]> - /** - * Enforces that a function with the `use` prefix should use at least one Hook inside of it. - * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-prefix - */ - 'react-hooks-extra/no-useless-custom-hooks'?: Linter.RuleEntry<[]> - /** - * Enforces function calls made inside `useState` to be wrapped in an `initializer function`. - * @see https://eslint-react.xyz/docs/rules/hooks-extra-prefer-use-state-lazy-initialization - */ - 'react-hooks-extra/prefer-use-state-lazy-initialization'?: Linter.RuleEntry<[]> - /** - * verifies the list of dependencies for Hooks like useEffect and similar - * @see https://github.com/facebook/react/issues/14920 - */ - 'react-hooks/exhaustive-deps'?: Linter.RuleEntry - /** - * enforces the Rules of Hooks - * @see https://reactjs.org/docs/hooks-rules.html - */ - 'react-hooks/rules-of-hooks'?: Linter.RuleEntry<[]> - /** - * Enforces naming conventions for components. - * @see https://eslint-react.xyz/docs/rules/naming-convention-component-name - */ - 'react-naming-convention/component-name'?: Linter.RuleEntry - /** - * Enforces context name to be a valid component name with the suffix `Context`. - * @see https://eslint-react.xyz/docs/rules/naming-convention-context-name - */ - 'react-naming-convention/context-name'?: Linter.RuleEntry<[]> - /** - * Enforces consistent file naming conventions. - * @see https://eslint-react.xyz/docs/rules/naming-convention-filename - */ - 'react-naming-convention/filename'?: Linter.RuleEntry - /** - * Enforces consistent file naming conventions. - * @see https://eslint-react.xyz/docs/rules/naming-convention-filename-extension - */ - 'react-naming-convention/filename-extension'?: Linter.RuleEntry - /** - * Enforces destructuring and symmetric naming of `useState` hook value and setter. - * @see https://eslint-react.xyz/docs/rules/naming-convention-use-state - */ - 'react-naming-convention/use-state'?: Linter.RuleEntry<[]> - 'react-refresh/only-export-components'?: Linter.RuleEntry - /** - * Prevents leaked `addEventListener` in a component or custom Hook. - * @see https://eslint-react.xyz/docs/rules/web-api-no-leaked-event-listener - */ - 'react-web-api/no-leaked-event-listener'?: Linter.RuleEntry<[]> - /** - * Prevents leaked `setInterval` in a component or custom Hook. - * @see https://eslint-react.xyz/docs/rules/web-api-no-leaked-interval - */ - 'react-web-api/no-leaked-interval'?: Linter.RuleEntry<[]> - /** - * Prevents leaked `ResizeObserver` in a component or custom Hook. - * @see https://eslint-react.xyz/docs/rules/web-api-no-leaked-resize-observer - */ - 'react-web-api/no-leaked-resize-observer'?: Linter.RuleEntry<[]> - /** - * Prevents leaked `setTimeout` in a component or custom Hook. - * @see https://eslint-react.xyz/docs/rules/web-api-no-leaked-timeout - */ - 'react-web-api/no-leaked-timeout'?: Linter.RuleEntry<[]> - /** - * Enforces explicit boolean values for boolean attributes. - * @see https://eslint-react.xyz/docs/rules/avoid-shorthand-boolean - */ - 'react-x/avoid-shorthand-boolean'?: Linter.RuleEntry<[]> - /** - * Enforces explicit `` components instead of the shorthand `<>` or `` syntax. - * @see https://eslint-react.xyz/docs/rules/avoid-shorthand-fragment - */ - 'react-x/avoid-shorthand-fragment'?: Linter.RuleEntry<[]> - /** - * Disallow useless `forwardRef` calls on components that don't use `ref`s. - * @see https://eslint-react.xyz/docs/rules/no-useless-forward-ref - */ - 'react-x/ensure-forward-ref-using-ref'?: Linter.RuleEntry<[]> - /** - * Enforces that the 'key' attribute is placed before the spread attribute in JSX elements. - * @see https://eslint-react.xyz/docs/rules/jsx-key-before-spread - */ - 'react-x/jsx-key-before-spread'?: Linter.RuleEntry<[]> - /** - * Disallow duplicate props in JSX elements. - * @see https://eslint-react.xyz/docs/rules/jsx-no-duplicate-props - */ - 'react-x/jsx-no-duplicate-props'?: Linter.RuleEntry<[]> - /** - * Disallow undefined variables in JSX. - * @see https://eslint-react.xyz/docs/rules/jsx-no-undef - */ - 'react-x/jsx-no-undef'?: Linter.RuleEntry<[]> - /** - * Marks React variables as used when JSX is used. - * @see https://eslint-react.xyz/docs/rules/jsx-uses-react - */ - 'react-x/jsx-uses-react'?: Linter.RuleEntry<[]> - /** - * Marks variables used in JSX elements as used. - * @see https://eslint-react.xyz/docs/rules/jsx-uses-vars - */ - 'react-x/jsx-uses-vars'?: Linter.RuleEntry<[]> - /** - * Disallow accessing `this.state` inside `setState` calls. - * @see https://eslint-react.xyz/docs/rules/no-access-state-in-setstate - */ - 'react-x/no-access-state-in-setstate'?: Linter.RuleEntry<[]> - /** - * Disallow an item's index in the array as its key. - * @see https://eslint-react.xyz/docs/rules/no-array-index-key - */ - 'react-x/no-array-index-key'?: Linter.RuleEntry<[]> - /** - * Disallow `Children.count`. - * @see https://eslint-react.xyz/docs/rules/no-children-count - */ - 'react-x/no-children-count'?: Linter.RuleEntry<[]> - /** - * Disallow 'Children.forEach'. - * @see https://eslint-react.xyz/docs/rules/no-children-for-each - */ - 'react-x/no-children-for-each'?: Linter.RuleEntry<[]> - /** - * Disallow `Children.map`. - * @see https://eslint-react.xyz/docs/rules/no-children-map - */ - 'react-x/no-children-map'?: Linter.RuleEntry<[]> - /** - * Disallow `Children.only`. - * @see https://eslint-react.xyz/docs/rules/no-children-only - */ - 'react-x/no-children-only'?: Linter.RuleEntry<[]> - /** - * Disallow passing `children` as a prop. - * @see https://eslint-react.xyz/docs/rules/no-children-prop - */ - 'react-x/no-children-prop'?: Linter.RuleEntry<[]> - /** - * Disallow `Children.toArray`. - * @see https://eslint-react.xyz/docs/rules/no-children-to-array - */ - 'react-x/no-children-to-array'?: Linter.RuleEntry<[]> - /** - * Disallow class components except for error boundaries. - * @see https://eslint-react.xyz/docs/rules/no-class-component - */ - 'react-x/no-class-component'?: Linter.RuleEntry<[]> - /** - * Disallow `cloneElement`. - * @see https://eslint-react.xyz/docs/rules/no-clone-element - */ - 'react-x/no-clone-element'?: Linter.RuleEntry<[]> - /** - * Prevents comments from being inserted as text nodes. - * @see https://eslint-react.xyz/docs/rules/no-comment-textnodes - */ - 'react-x/no-comment-textnodes'?: Linter.RuleEntry<[]> - /** - * Disallow complex conditional rendering in JSX expressions. - * @see https://eslint-react.xyz/docs/rules/no-complex-conditional-rendering - */ - 'react-x/no-complex-conditional-rendering'?: Linter.RuleEntry<[]> - /** - * Disallow complex conditional rendering in JSX expressions. - * @see https://eslint-react.xyz/docs/rules/no-complex-conditional-rendering - */ - 'react-x/no-complicated-conditional-rendering'?: Linter.RuleEntry<[]> - /** - * Replace usages of `componentWillMount` with `UNSAFE_componentWillMount`. - * @see https://eslint-react.xyz/docs/rules/no-component-will-mount - */ - 'react-x/no-component-will-mount'?: Linter.RuleEntry<[]> - /** - * Replace usages of `componentWillReceiveProps` with `UNSAFE_componentWillReceiveProps`. - * @see https://eslint-react.xyz/docs/rules/no-component-will-receive-props - */ - 'react-x/no-component-will-receive-props'?: Linter.RuleEntry<[]> - /** - * Replace usages of `componentWillUpdate` with `UNSAFE_componentWillUpdate`. - * @see https://eslint-react.xyz/docs/rules/no-component-will-update - */ - 'react-x/no-component-will-update'?: Linter.RuleEntry<[]> - /** - * Replace usages of `` with ``. - * @see https://eslint-react.xyz/docs/rules/no-context-provider - */ - 'react-x/no-context-provider'?: Linter.RuleEntry<[]> - /** - * Disallow `createRef` in function components. - * @see https://eslint-react.xyz/docs/rules/no-create-ref - */ - 'react-x/no-create-ref'?: Linter.RuleEntry<[]> - /** - * Disallow `defaultProps` property in favor of ES6 default parameters. - * @see https://eslint-react.xyz/docs/rules/no-default-props - */ - 'react-x/no-default-props'?: Linter.RuleEntry<[]> - /** - * Disallow direct mutation of `this.state`. - * @see https://eslint-react.xyz/docs/rules/no-direct-mutation-state - */ - 'react-x/no-direct-mutation-state'?: Linter.RuleEntry<[]> - /** - * Disallow duplicate props in JSX elements. - * @see https://eslint-react.xyz/docs/rules/jsx-no-duplicate-props - */ - 'react-x/no-duplicate-jsx-props'?: Linter.RuleEntry<[]> - /** - * Disallow duplicate `key` on elements in the same array or a list of `children`. - * @see https://eslint-react.xyz/docs/rules/no-duplicate-key - */ - 'react-x/no-duplicate-key'?: Linter.RuleEntry<[]> - /** - * Replaces usages of `forwardRef` with passing `ref` as a prop. - * @see https://eslint-react.xyz/docs/rules/no-forward-ref - */ - 'react-x/no-forward-ref'?: Linter.RuleEntry<[]> - /** - * Prevents `key` from not being explicitly specified (e.g. spreading `key` from objects). - * @see https://eslint-react.xyz/docs/rules/no-implicit-key - */ - 'react-x/no-implicit-key'?: Linter.RuleEntry<[]> - /** - * Prevents problematic leaked values from being rendered. - * @see https://eslint-react.xyz/docs/rules/no-leaked-conditional-rendering - */ - 'react-x/no-leaked-conditional-rendering'?: Linter.RuleEntry<[]> - /** - * Enforces that all components have a `displayName` which can be used in devtools. - * @see https://eslint-react.xyz/docs/rules/no-missing-component-display-name - */ - 'react-x/no-missing-component-display-name'?: Linter.RuleEntry<[]> - /** - * Enforces that all contexts have a `displayName` which can be used in devtools. - * @see https://eslint-react.xyz/docs/rules/no-missing-context-display-name - */ - 'react-x/no-missing-context-display-name'?: Linter.RuleEntry<[]> - /** - * Disallow missing `key` on items in list rendering. - * @see https://eslint-react.xyz/docs/rules/no-missing-key - */ - 'react-x/no-missing-key'?: Linter.RuleEntry<[]> - /** - * Prevents incorrect usage of `captureOwnerStack`. - * @see https://eslint-react.xyz/docs/rules/no-misused-capture-owner-stack - */ - 'react-x/no-misused-capture-owner-stack'?: Linter.RuleEntry<[]> - /** - * Disallow nesting component definitions inside other components. - * @see https://eslint-react.xyz/docs/rules/no-nested-component-definitions - */ - 'react-x/no-nested-component-definitions'?: Linter.RuleEntry<[]> - /** - * Disallow nesting component definitions inside other components. - * @see https://eslint-react.xyz/docs/rules/no-nested-component-definitions - */ - 'react-x/no-nested-components'?: Linter.RuleEntry<[]> - /** - * Disallow nesting lazy component declarations inside other components. - * @see https://eslint-react.xyz/docs/rules/no-nested-component-definitions - */ - 'react-x/no-nested-lazy-component-declarations'?: Linter.RuleEntry<[]> - /** - * Disallow `propTypes` in favor of TypeScript or another type-checking solution. - * @see https://eslint-react.xyz/docs/rules/no-prop-types - */ - 'react-x/no-prop-types'?: Linter.RuleEntry<[]> - /** - * Disallow `shouldComponentUpdate` when extending `React.PureComponent`. - * @see https://eslint-react.xyz/docs/rules/no-redundant-should-component-update - */ - 'react-x/no-redundant-should-component-update'?: Linter.RuleEntry<[]> - /** - * Disallow calling `this.setState` in `componentDidMount` outside of functions, such as callbacks. - * @see https://eslint-react.xyz/docs/rules/no-set-state-in-component-did-mount - */ - 'react-x/no-set-state-in-component-did-mount'?: Linter.RuleEntry<[]> - /** - * Disallow calling `this.setState` in `componentDidUpdate` outside of functions, such as callbacks. - * @see https://eslint-react.xyz/docs/rules/no-set-state-in-component-did-update - */ - 'react-x/no-set-state-in-component-did-update'?: Linter.RuleEntry<[]> - /** - * Disallows calling `this.setState` in `componentWillUpdate` outside of functions, such as callbacks. - * @see https://eslint-react.xyz/docs/rules/no-set-state-in-component-will-update - */ - 'react-x/no-set-state-in-component-will-update'?: Linter.RuleEntry<[]> - /** - * Replaces string refs with callback refs. - * @see https://eslint-react.xyz/docs/rules/no-string-refs - */ - 'react-x/no-string-refs'?: Linter.RuleEntry<[]> - /** - * Warns the usage of `UNSAFE_componentWillMount` in class components. - * @see https://eslint-react.xyz/docs/rules/no-unsafe-component-will-mount - */ - 'react-x/no-unsafe-component-will-mount'?: Linter.RuleEntry<[]> - /** - * Warns the usage of `UNSAFE_componentWillReceiveProps` in class components. - * @see https://eslint-react.xyz/docs/rules/no-unsafe-component-will-receive-props - */ - 'react-x/no-unsafe-component-will-receive-props'?: Linter.RuleEntry<[]> - /** - * Warns the usage of `UNSAFE_componentWillUpdate` in class components. - * @see https://eslint-react.xyz/docs/rules/no-unsafe-component-will-update - */ - 'react-x/no-unsafe-component-will-update'?: Linter.RuleEntry<[]> - /** - * Prevents non-stable values (i.e. object literals) from being used as a value for `Context.Provider`. - * @see https://eslint-react.xyz/docs/rules/no-unstable-context-value - */ - 'react-x/no-unstable-context-value'?: Linter.RuleEntry<[]> - /** - * Prevents using referential-type values as default props in object destructuring. - * @see https://eslint-react.xyz/docs/rules/no-unstable-default-props - */ - 'react-x/no-unstable-default-props'?: Linter.RuleEntry<[]> - /** - * Warns unused class component methods and properties. - * @see https://eslint-react.xyz/docs/rules/no-unused-class-component-members - */ - 'react-x/no-unused-class-component-members'?: Linter.RuleEntry<[]> - /** - * Warns unused class component state. - * @see https://eslint-react.xyz/docs/rules/no-unused-state - */ - 'react-x/no-unused-state'?: Linter.RuleEntry<[]> - /** - * Replaces usages of `useContext` with `use`. - * @see https://eslint-react.xyz/docs/rules/no-use-context - */ - 'react-x/no-use-context'?: Linter.RuleEntry<[]> - /** - * Disallow useless `forwardRef` calls on components that don't use `ref`s. - * @see https://eslint-react.xyz/docs/rules/no-useless-forward-ref - */ - 'react-x/no-useless-forward-ref'?: Linter.RuleEntry<[]> - /** - * Disallow useless fragment elements. - * @see https://eslint-react.xyz/docs/rules/no-useless-fragment - */ - 'react-x/no-useless-fragment'?: Linter.RuleEntry - /** - * Enforces destructuring assignment for component props and context. - * @see https://eslint-react.xyz/docs/rules/prefer-destructuring-assignment - */ - 'react-x/prefer-destructuring-assignment'?: Linter.RuleEntry<[]> - /** - * Enforces React is imported via a namespace import. - * @see https://eslint-react.xyz/docs/rules/prefer-react-namespace-import - */ - 'react-x/prefer-react-namespace-import'?: Linter.RuleEntry<[]> - /** - * Enforces read-only props in components. - * @see https://eslint-react.xyz/docs/rules/prefer-read-only-props - */ - 'react-x/prefer-read-only-props'?: Linter.RuleEntry<[]> - /** - * Enforces shorthand syntax for boolean attributes. - * @see https://eslint-react.xyz/docs/rules/prefer-shorthand-boolean - */ - 'react-x/prefer-shorthand-boolean'?: Linter.RuleEntry<[]> - /** - * Enforces shorthand syntax for fragments. - * @see https://eslint-react.xyz/docs/rules/prefer-shorthand-fragment - */ - 'react-x/prefer-shorthand-fragment'?: Linter.RuleEntry<[]> - /** - * Marks variables used in JSX elements as used. - * @see https://eslint-react.xyz/docs/rules/jsx-uses-vars - */ - 'react-x/use-jsx-vars'?: Linter.RuleEntry<[]> - /** - * Enforces consistent naming for boolean props - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/boolean-prop-naming.md - */ - 'react/boolean-prop-naming'?: Linter.RuleEntry - /** - * Disallow usage of `button` elements without an explicit `type` attribute - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/button-has-type.md - */ - 'react/button-has-type'?: Linter.RuleEntry - /** - * Enforce using `onChange` or `readonly` attribute when `checked` is used - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/checked-requires-onchange-or-readonly.md - */ - 'react/checked-requires-onchange-or-readonly'?: Linter.RuleEntry - /** - * Enforce all defaultProps have a corresponding non-required PropType - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/default-props-match-prop-types.md - */ - 'react/default-props-match-prop-types'?: Linter.RuleEntry - /** - * Enforce consistent usage of destructuring assignment of props, state, and context - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/destructuring-assignment.md - */ - 'react/destructuring-assignment'?: Linter.RuleEntry - /** - * Disallow missing displayName in a React component definition - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/display-name.md - */ - 'react/display-name'?: Linter.RuleEntry - /** - * Disallow certain props on components - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-component-props.md - */ - 'react/forbid-component-props'?: Linter.RuleEntry - /** - * Disallow certain props on DOM Nodes - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-dom-props.md - */ - 'react/forbid-dom-props'?: Linter.RuleEntry - /** - * Disallow certain elements - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-elements.md - */ - 'react/forbid-elements'?: Linter.RuleEntry - /** - * Disallow using another component's propTypes - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-foreign-prop-types.md - */ - 'react/forbid-foreign-prop-types'?: Linter.RuleEntry - /** - * Disallow certain propTypes - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-prop-types.md - */ - 'react/forbid-prop-types'?: Linter.RuleEntry - /** - * Require all forwardRef components include a ref parameter - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forward-ref-uses-ref.md - */ - 'react/forward-ref-uses-ref'?: Linter.RuleEntry<[]> - /** - * Enforce a specific function type for function components - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/function-component-definition.md - */ - 'react/function-component-definition'?: Linter.RuleEntry - /** - * Ensure destructuring and symmetric naming of useState hook value and setter variables - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/hook-use-state.md - */ - 'react/hook-use-state'?: Linter.RuleEntry - /** - * Enforce sandbox attribute on iframe elements - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/iframe-missing-sandbox.md - */ - 'react/iframe-missing-sandbox'?: Linter.RuleEntry<[]> - /** - * Enforce boolean attributes notation in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-boolean-value.md - */ - 'react/jsx-boolean-value'?: Linter.RuleEntry - /** - * Enforce or disallow spaces inside of curly braces in JSX attributes and expressions - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-child-element-spacing.md - */ - 'react/jsx-child-element-spacing'?: Linter.RuleEntry<[]> - /** - * Enforce closing bracket location in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-closing-bracket-location.md - */ - 'react/jsx-closing-bracket-location'?: Linter.RuleEntry - /** - * Enforce closing tag location for multiline JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-closing-tag-location.md - */ - 'react/jsx-closing-tag-location'?: Linter.RuleEntry - /** - * Disallow unnecessary JSX expressions when literals alone are sufficient or enforce JSX expressions on literals in JSX children or attributes - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-curly-brace-presence.md - */ - 'react/jsx-curly-brace-presence'?: Linter.RuleEntry - /** - * Enforce consistent linebreaks in curly braces in JSX attributes and expressions - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-curly-newline.md - */ - 'react/jsx-curly-newline'?: Linter.RuleEntry - /** - * Enforce or disallow spaces inside of curly braces in JSX attributes and expressions - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-curly-spacing.md - */ - 'react/jsx-curly-spacing'?: Linter.RuleEntry - /** - * Enforce or disallow spaces around equal signs in JSX attributes - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-equals-spacing.md - */ - 'react/jsx-equals-spacing'?: Linter.RuleEntry - /** - * Disallow file extensions that may contain JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-filename-extension.md - */ - 'react/jsx-filename-extension'?: Linter.RuleEntry - /** - * Enforce proper position of the first property in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-first-prop-new-line.md - */ - 'react/jsx-first-prop-new-line'?: Linter.RuleEntry - /** - * Enforce shorthand or standard form for React fragments - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-fragments.md - */ - 'react/jsx-fragments'?: Linter.RuleEntry - /** - * Enforce event handler naming conventions in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-handler-names.md - */ - 'react/jsx-handler-names'?: Linter.RuleEntry - /** - * Enforce JSX indentation - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-indent.md - */ - 'react/jsx-indent'?: Linter.RuleEntry - /** - * Enforce props indentation in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-indent-props.md - */ - 'react/jsx-indent-props'?: Linter.RuleEntry - /** - * Disallow missing `key` props in iterators/collection literals - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-key.md - */ - 'react/jsx-key'?: Linter.RuleEntry - /** - * Enforce JSX maximum depth - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-max-depth.md - */ - 'react/jsx-max-depth'?: Linter.RuleEntry - /** - * Enforce maximum of props on a single line in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-max-props-per-line.md - */ - 'react/jsx-max-props-per-line'?: Linter.RuleEntry - /** - * Require or prevent a new line after jsx elements and expressions. - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-newline.md - */ - 'react/jsx-newline'?: Linter.RuleEntry - /** - * Disallow `.bind()` or arrow functions in JSX props - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-bind.md - */ - 'react/jsx-no-bind'?: Linter.RuleEntry - /** - * Disallow comments from being inserted as text nodes - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-comment-textnodes.md - */ - 'react/jsx-no-comment-textnodes'?: Linter.RuleEntry<[]> - /** - * Disallows JSX context provider values from taking values that will cause needless rerenders - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-constructed-context-values.md - */ - 'react/jsx-no-constructed-context-values'?: Linter.RuleEntry<[]> - /** - * Disallow duplicate properties in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-duplicate-props.md - */ - 'react/jsx-no-duplicate-props'?: Linter.RuleEntry - /** - * Disallow problematic leaked values from being rendered - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-leaked-render.md - */ - 'react/jsx-no-leaked-render'?: Linter.RuleEntry - /** - * Disallow usage of string literals in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-literals.md - */ - 'react/jsx-no-literals'?: Linter.RuleEntry - /** - * Disallow usage of `javascript:` URLs - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-script-url.md - */ - 'react/jsx-no-script-url'?: Linter.RuleEntry - /** - * Disallow `target="_blank"` attribute without `rel="noreferrer"` - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-target-blank.md - */ - 'react/jsx-no-target-blank'?: Linter.RuleEntry - /** - * Disallow undeclared variables in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-undef.md - */ - 'react/jsx-no-undef'?: Linter.RuleEntry - /** - * Disallow unnecessary fragments - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-useless-fragment.md - */ - 'react/jsx-no-useless-fragment'?: Linter.RuleEntry - /** - * Require one JSX element per line - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-one-expression-per-line.md - */ - 'react/jsx-one-expression-per-line'?: Linter.RuleEntry - /** - * Enforce PascalCase for user-defined JSX components - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-pascal-case.md - */ - 'react/jsx-pascal-case'?: Linter.RuleEntry - /** - * Disallow multiple spaces between inline JSX props - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-props-no-multi-spaces.md - */ - 'react/jsx-props-no-multi-spaces'?: Linter.RuleEntry<[]> - /** - * Disallow JSX prop spreading the same identifier multiple times - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-props-no-spread-multi.md - */ - 'react/jsx-props-no-spread-multi'?: Linter.RuleEntry<[]> - /** - * Disallow JSX prop spreading - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-props-no-spreading.md - */ - 'react/jsx-props-no-spreading'?: Linter.RuleEntry - /** - * Enforce defaultProps declarations alphabetical sorting - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-sort-default-props.md - * @deprecated - */ - 'react/jsx-sort-default-props'?: Linter.RuleEntry - /** - * Enforce props alphabetical sorting - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-sort-props.md - */ - 'react/jsx-sort-props'?: Linter.RuleEntry - /** - * Enforce spacing before closing bracket in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-space-before-closing.md - * @deprecated - */ - 'react/jsx-space-before-closing'?: Linter.RuleEntry - /** - * Enforce whitespace in and around the JSX opening and closing brackets - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-tag-spacing.md - */ - 'react/jsx-tag-spacing'?: Linter.RuleEntry - /** - * Disallow React to be incorrectly marked as unused - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-uses-react.md - */ - 'react/jsx-uses-react'?: Linter.RuleEntry<[]> - /** - * Disallow variables used in JSX to be incorrectly marked as unused - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-uses-vars.md - */ - 'react/jsx-uses-vars'?: Linter.RuleEntry<[]> - /** - * Disallow missing parentheses around multiline JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-wrap-multilines.md - */ - 'react/jsx-wrap-multilines'?: Linter.RuleEntry - /** - * Disallow when this.state is accessed within setState - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-access-state-in-setstate.md - */ - 'react/no-access-state-in-setstate'?: Linter.RuleEntry<[]> - /** - * Disallow adjacent inline elements not separated by whitespace. - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-adjacent-inline-elements.md - */ - 'react/no-adjacent-inline-elements'?: Linter.RuleEntry<[]> - /** - * Disallow usage of Array index in keys - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-array-index-key.md - */ - 'react/no-array-index-key'?: Linter.RuleEntry<[]> - /** - * Lifecycle methods should be methods on the prototype, not class fields - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-arrow-function-lifecycle.md - */ - 'react/no-arrow-function-lifecycle'?: Linter.RuleEntry<[]> - /** - * Disallow passing of children as props - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-children-prop.md - */ - 'react/no-children-prop'?: Linter.RuleEntry - /** - * Disallow usage of dangerous JSX properties - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-danger.md - */ - 'react/no-danger'?: Linter.RuleEntry - /** - * Disallow when a DOM element is using both children and dangerouslySetInnerHTML - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-danger-with-children.md - */ - 'react/no-danger-with-children'?: Linter.RuleEntry<[]> - /** - * Disallow usage of deprecated methods - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-deprecated.md - */ - 'react/no-deprecated'?: Linter.RuleEntry<[]> - /** - * Disallow usage of setState in componentDidMount - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-did-mount-set-state.md - */ - 'react/no-did-mount-set-state'?: Linter.RuleEntry - /** - * Disallow usage of setState in componentDidUpdate - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-did-update-set-state.md - */ - 'react/no-did-update-set-state'?: Linter.RuleEntry - /** - * Disallow direct mutation of this.state - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-direct-mutation-state.md - */ - 'react/no-direct-mutation-state'?: Linter.RuleEntry<[]> - /** - * Disallow usage of findDOMNode - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-find-dom-node.md - */ - 'react/no-find-dom-node'?: Linter.RuleEntry<[]> - /** - * Disallow usage of invalid attributes - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-invalid-html-attribute.md - */ - 'react/no-invalid-html-attribute'?: Linter.RuleEntry - /** - * Disallow usage of isMounted - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-is-mounted.md - */ - 'react/no-is-mounted'?: Linter.RuleEntry<[]> - /** - * Disallow multiple component definition per file - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-multi-comp.md - */ - 'react/no-multi-comp'?: Linter.RuleEntry - /** - * Enforce that namespaces are not used in React elements - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-namespace.md - */ - 'react/no-namespace'?: Linter.RuleEntry<[]> - /** - * Disallow usage of referential-type variables as default param in functional component - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-object-type-as-default-prop.md - */ - 'react/no-object-type-as-default-prop'?: Linter.RuleEntry<[]> - /** - * Disallow usage of shouldComponentUpdate when extending React.PureComponent - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-redundant-should-component-update.md - */ - 'react/no-redundant-should-component-update'?: Linter.RuleEntry<[]> - /** - * Disallow usage of the return value of ReactDOM.render - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-render-return-value.md - */ - 'react/no-render-return-value'?: Linter.RuleEntry<[]> - /** - * Disallow usage of setState - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-set-state.md - */ - 'react/no-set-state'?: Linter.RuleEntry<[]> - /** - * Disallow using string references - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-string-refs.md - */ - 'react/no-string-refs'?: Linter.RuleEntry - /** - * Disallow `this` from being used in stateless functional components - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-this-in-sfc.md - */ - 'react/no-this-in-sfc'?: Linter.RuleEntry<[]> - /** - * Disallow common typos - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-typos.md - */ - 'react/no-typos'?: Linter.RuleEntry<[]> - /** - * Disallow unescaped HTML entities from appearing in markup - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unescaped-entities.md - */ - 'react/no-unescaped-entities'?: Linter.RuleEntry - /** - * Disallow usage of unknown DOM property - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unknown-property.md - */ - 'react/no-unknown-property'?: Linter.RuleEntry - /** - * Disallow usage of unsafe lifecycle methods - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unsafe.md - */ - 'react/no-unsafe'?: Linter.RuleEntry - /** - * Disallow creating unstable components inside components - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unstable-nested-components.md - */ - 'react/no-unstable-nested-components'?: Linter.RuleEntry - /** - * Disallow declaring unused methods of component class - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unused-class-component-methods.md - */ - 'react/no-unused-class-component-methods'?: Linter.RuleEntry<[]> - /** - * Disallow definitions of unused propTypes - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unused-prop-types.md - */ - 'react/no-unused-prop-types'?: Linter.RuleEntry - /** - * Disallow definitions of unused state - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unused-state.md - */ - 'react/no-unused-state'?: Linter.RuleEntry<[]> - /** - * Disallow usage of setState in componentWillUpdate - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-will-update-set-state.md - */ - 'react/no-will-update-set-state'?: Linter.RuleEntry - /** - * Enforce ES5 or ES6 class for React Components - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-es6-class.md - */ - 'react/prefer-es6-class'?: Linter.RuleEntry - /** - * Prefer exact proptype definitions - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-exact-props.md - */ - 'react/prefer-exact-props'?: Linter.RuleEntry<[]> - /** - * Enforce that props are read-only - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-read-only-props.md - */ - 'react/prefer-read-only-props'?: Linter.RuleEntry<[]> - /** - * Enforce stateless components to be written as a pure function - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-stateless-function.md - */ - 'react/prefer-stateless-function'?: Linter.RuleEntry - /** - * Disallow missing props validation in a React component definition - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prop-types.md - */ - 'react/prop-types'?: Linter.RuleEntry - /** - * Disallow missing React when using JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/react-in-jsx-scope.md - */ - 'react/react-in-jsx-scope'?: Linter.RuleEntry<[]> - /** - * Enforce a defaultProps definition for every prop that is not a required prop - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/require-default-props.md - */ - 'react/require-default-props'?: Linter.RuleEntry - /** - * Enforce React components to have a shouldComponentUpdate method - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/require-optimization.md - */ - 'react/require-optimization'?: Linter.RuleEntry - /** - * Enforce ES5 or ES6 class for returning value in render function - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/require-render-return.md - */ - 'react/require-render-return'?: Linter.RuleEntry<[]> - /** - * Disallow extra closing tags for components without children - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/self-closing-comp.md - */ - 'react/self-closing-comp'?: Linter.RuleEntry - /** - * Enforce component methods order - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/sort-comp.md - */ - 'react/sort-comp'?: Linter.RuleEntry - /** - * Enforce defaultProps declarations alphabetical sorting - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/sort-default-props.md - */ - 'react/sort-default-props'?: Linter.RuleEntry - /** - * Enforce propTypes declarations alphabetical sorting - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/sort-prop-types.md - */ - 'react/sort-prop-types'?: Linter.RuleEntry - /** - * Enforce class component state initialization style - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/state-in-constructor.md - */ - 'react/state-in-constructor'?: Linter.RuleEntry - /** - * Enforces where React component static properties should be positioned. - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/static-property-placement.md - */ - 'react/static-property-placement'?: Linter.RuleEntry - /** - * Enforce style prop value is an object - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/style-prop-object.md - */ - 'react/style-prop-object'?: Linter.RuleEntry - /** - * Disallow void DOM elements (e.g. ``, `
`) from receiving children - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/void-dom-elements-no-children.md - */ - 'react/void-dom-elements-no-children'?: Linter.RuleEntry<[]> - /** - * disallow confusing quantifiers - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/confusing-quantifier.html - */ - 'regexp/confusing-quantifier'?: Linter.RuleEntry<[]> - /** - * enforce consistent escaping of control characters - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/control-character-escape.html - */ - 'regexp/control-character-escape'?: Linter.RuleEntry<[]> - /** - * enforce single grapheme in string literal - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/grapheme-string-literal.html - */ - 'regexp/grapheme-string-literal'?: Linter.RuleEntry<[]> - /** - * enforce consistent usage of hexadecimal escape - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/hexadecimal-escape.html - */ - 'regexp/hexadecimal-escape'?: Linter.RuleEntry - /** - * enforce into your favorite case - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/letter-case.html - */ - 'regexp/letter-case'?: Linter.RuleEntry - /** - * enforce match any character style - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/match-any.html - */ - 'regexp/match-any'?: Linter.RuleEntry - /** - * enforce use of escapes on negation - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/negation.html - */ - 'regexp/negation'?: Linter.RuleEntry<[]> - /** - * disallow elements that contradict assertions - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-contradiction-with-assertion.html - */ - 'regexp/no-contradiction-with-assertion'?: Linter.RuleEntry<[]> - /** - * disallow control characters - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-control-character.html - */ - 'regexp/no-control-character'?: Linter.RuleEntry<[]> - /** - * disallow duplicate characters in the RegExp character class - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-dupe-characters-character-class.html - */ - 'regexp/no-dupe-characters-character-class'?: Linter.RuleEntry<[]> - /** - * disallow duplicate disjunctions - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-dupe-disjunctions.html - */ - 'regexp/no-dupe-disjunctions'?: Linter.RuleEntry - /** - * disallow alternatives without elements - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-alternative.html - */ - 'regexp/no-empty-alternative'?: Linter.RuleEntry<[]> - /** - * disallow capturing group that captures empty. - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-capturing-group.html - */ - 'regexp/no-empty-capturing-group'?: Linter.RuleEntry<[]> - /** - * disallow character classes that match no characters - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-character-class.html - */ - 'regexp/no-empty-character-class'?: Linter.RuleEntry<[]> - /** - * disallow empty group - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-group.html - */ - 'regexp/no-empty-group'?: Linter.RuleEntry<[]> - /** - * disallow empty lookahead assertion or empty lookbehind assertion - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-lookarounds-assertion.html - */ - 'regexp/no-empty-lookarounds-assertion'?: Linter.RuleEntry<[]> - /** - * disallow empty string literals in character classes - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-string-literal.html - */ - 'regexp/no-empty-string-literal'?: Linter.RuleEntry<[]> - /** - * disallow escape backspace (`[\b]`) - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-escape-backspace.html - */ - 'regexp/no-escape-backspace'?: Linter.RuleEntry<[]> - /** - * disallow unnecessary nested lookaround assertions - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-extra-lookaround-assertions.html - */ - 'regexp/no-extra-lookaround-assertions'?: Linter.RuleEntry<[]> - /** - * disallow invalid regular expression strings in `RegExp` constructors - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-invalid-regexp.html - */ - 'regexp/no-invalid-regexp'?: Linter.RuleEntry<[]> - /** - * disallow invisible raw character - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-invisible-character.html - */ - 'regexp/no-invisible-character'?: Linter.RuleEntry<[]> - /** - * disallow lazy quantifiers at the end of an expression - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-lazy-ends.html - */ - 'regexp/no-lazy-ends'?: Linter.RuleEntry - /** - * disallow legacy RegExp features - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-legacy-features.html - */ - 'regexp/no-legacy-features'?: Linter.RuleEntry - /** - * disallow capturing groups that do not behave as one would expect - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-misleading-capturing-group.html - */ - 'regexp/no-misleading-capturing-group'?: Linter.RuleEntry - /** - * disallow multi-code-point characters in character classes and quantifiers - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-misleading-unicode-character.html - */ - 'regexp/no-misleading-unicode-character'?: Linter.RuleEntry - /** - * disallow missing `g` flag in patterns used in `String#matchAll` and `String#replaceAll` - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-missing-g-flag.html - */ - 'regexp/no-missing-g-flag'?: Linter.RuleEntry - /** - * disallow non-standard flags - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-non-standard-flag.html - */ - 'regexp/no-non-standard-flag'?: Linter.RuleEntry<[]> - /** - * disallow obscure character ranges - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-obscure-range.html - */ - 'regexp/no-obscure-range'?: Linter.RuleEntry - /** - * disallow octal escape sequence - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-octal.html - */ - 'regexp/no-octal'?: Linter.RuleEntry<[]> - /** - * disallow optional assertions - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-optional-assertion.html - */ - 'regexp/no-optional-assertion'?: Linter.RuleEntry<[]> - /** - * disallow backreferences that reference a group that might not be matched - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-potentially-useless-backreference.html - */ - 'regexp/no-potentially-useless-backreference'?: Linter.RuleEntry<[]> - /** - * disallow standalone backslashes (`\`) - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-standalone-backslash.html - */ - 'regexp/no-standalone-backslash'?: Linter.RuleEntry<[]> - /** - * disallow exponential and polynomial backtracking - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-super-linear-backtracking.html - */ - 'regexp/no-super-linear-backtracking'?: Linter.RuleEntry - /** - * disallow quantifiers that cause quadratic moves - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-super-linear-move.html - */ - 'regexp/no-super-linear-move'?: Linter.RuleEntry - /** - * disallow trivially nested assertions - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-trivially-nested-assertion.html - */ - 'regexp/no-trivially-nested-assertion'?: Linter.RuleEntry<[]> - /** - * disallow nested quantifiers that can be rewritten as one quantifier - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-trivially-nested-quantifier.html - */ - 'regexp/no-trivially-nested-quantifier'?: Linter.RuleEntry<[]> - /** - * disallow unused capturing group - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-unused-capturing-group.html - */ - 'regexp/no-unused-capturing-group'?: Linter.RuleEntry - /** - * disallow assertions that are known to always accept (or reject) - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-assertions.html - */ - 'regexp/no-useless-assertions'?: Linter.RuleEntry<[]> - /** - * disallow useless backreferences in regular expressions - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-backreference.html - */ - 'regexp/no-useless-backreference'?: Linter.RuleEntry<[]> - /** - * disallow character class with one character - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-character-class.html - */ - 'regexp/no-useless-character-class'?: Linter.RuleEntry - /** - * disallow useless `$` replacements in replacement string - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-dollar-replacements.html - */ - 'regexp/no-useless-dollar-replacements'?: Linter.RuleEntry<[]> - /** - * disallow unnecessary escape characters in RegExp - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-escape.html - */ - 'regexp/no-useless-escape'?: Linter.RuleEntry<[]> - /** - * disallow unnecessary regex flags - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-flag.html - */ - 'regexp/no-useless-flag'?: Linter.RuleEntry - /** - * disallow unnecessarily non-greedy quantifiers - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-lazy.html - */ - 'regexp/no-useless-lazy'?: Linter.RuleEntry<[]> - /** - * disallow unnecessary non-capturing group - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-non-capturing-group.html - */ - 'regexp/no-useless-non-capturing-group'?: Linter.RuleEntry - /** - * disallow quantifiers that can be removed - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-quantifier.html - */ - 'regexp/no-useless-quantifier'?: Linter.RuleEntry<[]> - /** - * disallow unnecessary character ranges - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-range.html - */ - 'regexp/no-useless-range'?: Linter.RuleEntry<[]> - /** - * disallow unnecessary elements in expression character classes - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-set-operand.html - */ - 'regexp/no-useless-set-operand'?: Linter.RuleEntry<[]> - /** - * disallow string disjunction of single characters in `\q{...}` - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-string-literal.html - */ - 'regexp/no-useless-string-literal'?: Linter.RuleEntry<[]> - /** - * disallow unnecessary `{n,m}` quantifier - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-two-nums-quantifier.html - */ - 'regexp/no-useless-two-nums-quantifier'?: Linter.RuleEntry<[]> - /** - * disallow quantifiers with a maximum of zero - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-zero-quantifier.html - */ - 'regexp/no-zero-quantifier'?: Linter.RuleEntry<[]> - /** - * disallow the alternatives of lookarounds that end with a non-constant quantifier - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/optimal-lookaround-quantifier.html - */ - 'regexp/optimal-lookaround-quantifier'?: Linter.RuleEntry<[]> - /** - * require optimal quantifiers for concatenated quantifiers - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/optimal-quantifier-concatenation.html - */ - 'regexp/optimal-quantifier-concatenation'?: Linter.RuleEntry - /** - * enforce using character class - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-character-class.html - */ - 'regexp/prefer-character-class'?: Linter.RuleEntry - /** - * enforce using `\d` - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-d.html - */ - 'regexp/prefer-d'?: Linter.RuleEntry - /** - * enforces escape of replacement `$` character (`$$`). - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-escape-replacement-dollar-char.html - */ - 'regexp/prefer-escape-replacement-dollar-char'?: Linter.RuleEntry<[]> - /** - * prefer lookarounds over capturing group that do not replace - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-lookaround.html - */ - 'regexp/prefer-lookaround'?: Linter.RuleEntry - /** - * enforce using named backreferences - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-named-backreference.html - */ - 'regexp/prefer-named-backreference'?: Linter.RuleEntry<[]> - /** - * enforce using named capture groups - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-named-capture-group.html - */ - 'regexp/prefer-named-capture-group'?: Linter.RuleEntry<[]> - /** - * enforce using named replacement - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-named-replacement.html - */ - 'regexp/prefer-named-replacement'?: Linter.RuleEntry - /** - * enforce using `+` quantifier - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-plus-quantifier.html - */ - 'regexp/prefer-plus-quantifier'?: Linter.RuleEntry<[]> - /** - * prefer predefined assertion over equivalent lookarounds - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-predefined-assertion.html - */ - 'regexp/prefer-predefined-assertion'?: Linter.RuleEntry<[]> - /** - * enforce using quantifier - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-quantifier.html - */ - 'regexp/prefer-quantifier'?: Linter.RuleEntry<[]> - /** - * enforce using `?` quantifier - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-question-quantifier.html - */ - 'regexp/prefer-question-quantifier'?: Linter.RuleEntry<[]> - /** - * enforce using character class range - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-range.html - */ - 'regexp/prefer-range'?: Linter.RuleEntry - /** - * enforce that `RegExp#exec` is used instead of `String#match` if no global flag is provided - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-regexp-exec.html - */ - 'regexp/prefer-regexp-exec'?: Linter.RuleEntry<[]> - /** - * enforce that `RegExp#test` is used instead of `String#match` and `RegExp#exec` - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-regexp-test.html - */ - 'regexp/prefer-regexp-test'?: Linter.RuleEntry<[]> - /** - * enforce using result array `groups` - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-result-array-groups.html - */ - 'regexp/prefer-result-array-groups'?: Linter.RuleEntry - /** - * prefer character class set operations instead of lookarounds - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-set-operation.html - */ - 'regexp/prefer-set-operation'?: Linter.RuleEntry<[]> - /** - * enforce using `*` quantifier - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-star-quantifier.html - */ - 'regexp/prefer-star-quantifier'?: Linter.RuleEntry<[]> - /** - * enforce use of unicode codepoint escapes - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-unicode-codepoint-escapes.html - */ - 'regexp/prefer-unicode-codepoint-escapes'?: Linter.RuleEntry<[]> - /** - * enforce using `\w` - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-w.html - */ - 'regexp/prefer-w'?: Linter.RuleEntry<[]> - /** - * enforce the use of the `u` flag - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/require-unicode-regexp.html - */ - 'regexp/require-unicode-regexp'?: Linter.RuleEntry<[]> - /** - * enforce the use of the `v` flag - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/require-unicode-sets-regexp.html - */ - 'regexp/require-unicode-sets-regexp'?: Linter.RuleEntry<[]> - /** - * require simplify set operations - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/simplify-set-operations.html - */ - 'regexp/simplify-set-operations'?: Linter.RuleEntry<[]> - /** - * sort alternatives if order doesn't matter - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/sort-alternatives.html - */ - 'regexp/sort-alternatives'?: Linter.RuleEntry<[]> - /** - * enforces elements order in character class - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/sort-character-class-elements.html - */ - 'regexp/sort-character-class-elements'?: Linter.RuleEntry - /** - * require regex flags to be sorted - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/sort-flags.html - */ - 'regexp/sort-flags'?: Linter.RuleEntry<[]> - /** - * disallow not strictly valid regular expressions - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/strict.html - */ - 'regexp/strict'?: Linter.RuleEntry<[]> - /** - * enforce consistent usage of unicode escape or unicode codepoint escape - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/unicode-escape.html - */ - 'regexp/unicode-escape'?: Linter.RuleEntry - /** - * enforce consistent naming of unicode properties - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/unicode-property.html - */ - 'regexp/unicode-property'?: Linter.RuleEntry - /** - * use the `i` flag if it simplifies the pattern - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/use-ignore-case.html - */ - 'regexp/use-ignore-case'?: Linter.RuleEntry<[]> - /** - * Automatically sort exports. - * @see https://github.com/lydell/eslint-plugin-simple-import-sort#sort-order - */ - 'simple-import-sort/exports'?: Linter.RuleEntry<[]> - /** - * Automatically sort imports. - * @see https://github.com/lydell/eslint-plugin-simple-import-sort#sort-order - */ - 'simple-import-sort/imports'?: Linter.RuleEntry - /** - * Alternatives in regular expressions should be grouped when used with anchors - * @see https://sonarsource.github.io/rspec/#/rspec/S5850/javascript - */ - 'sonarjs/anchor-precedence'?: Linter.RuleEntry<[]> - /** - * Arguments to built-in functions should match documented types - * @see https://sonarsource.github.io/rspec/#/rspec/S3782/javascript - */ - 'sonarjs/argument-type'?: Linter.RuleEntry<[]> - /** - * Parameters should be passed in the correct order - * @see https://sonarsource.github.io/rspec/#/rspec/S2234/javascript - */ - 'sonarjs/arguments-order'?: Linter.RuleEntry - /** - * "arguments" should not be accessed directly - * @see https://sonarsource.github.io/rspec/#/rspec/S3513/javascript - */ - 'sonarjs/arguments-usage'?: Linter.RuleEntry - /** - * Callbacks of array methods should have return statements - * @see https://sonarsource.github.io/rspec/#/rspec/S3796/javascript - */ - 'sonarjs/array-callback-without-return'?: Linter.RuleEntry<[]> - /** - * Array constructors should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S1528/javascript - */ - 'sonarjs/array-constructor'?: Linter.RuleEntry<[]> - /** - * Braces and parentheses should be used consistently with arrow functions - * @see https://sonarsource.github.io/rspec/#/rspec/S3524/javascript - */ - 'sonarjs/arrow-function-convention'?: Linter.RuleEntry - /** - * Tests should include assertions - * @see https://sonarsource.github.io/rspec/#/rspec/S2699/javascript - */ - 'sonarjs/assertions-in-tests'?: Linter.RuleEntry<[]> - /** - * Creating public APIs is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6333/javascript - */ - 'sonarjs/aws-apigateway-public-api'?: Linter.RuleEntry<[]> - /** - * Allowing public network access to cloud resources is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6329/javascript - */ - 'sonarjs/aws-ec2-rds-dms-public'?: Linter.RuleEntry<[]> - /** - * Using unencrypted EBS volumes is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6275/javascript - */ - 'sonarjs/aws-ec2-unencrypted-ebs-volume'?: Linter.RuleEntry<[]> - /** - * Using unencrypted EFS file systems is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6332/javascript - */ - 'sonarjs/aws-efs-unencrypted'?: Linter.RuleEntry<[]> - /** - * Policies granting all privileges are security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6302/javascript - */ - 'sonarjs/aws-iam-all-privileges'?: Linter.RuleEntry - /** - * Policies granting access to all resources of an account are security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6304/javascript - */ - 'sonarjs/aws-iam-all-resources-accessible'?: Linter.RuleEntry - /** - * AWS IAM policies should limit the scope of permissions given - * @see https://sonarsource.github.io/rspec/#/rspec/S6317/javascript - */ - 'sonarjs/aws-iam-privilege-escalation'?: Linter.RuleEntry - /** - * Policies authorizing public access to resources are security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6270/javascript - */ - 'sonarjs/aws-iam-public-access'?: Linter.RuleEntry - /** - * Using unencrypted Elasticsearch domains is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6308/javascript - */ - 'sonarjs/aws-opensearchservice-domain'?: Linter.RuleEntry<[]> - /** - * Using unencrypted RDS DB resources is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6303/javascript - */ - 'sonarjs/aws-rds-unencrypted-databases'?: Linter.RuleEntry<[]> - /** - * Administration services access should be restricted to specific IP addresses - * @see https://sonarsource.github.io/rspec/#/rspec/S6321/javascript - */ - 'sonarjs/aws-restricted-ip-admin-access'?: Linter.RuleEntry<[]> - /** - * Granting access to S3 buckets to all or authenticated users is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6265/javascript - */ - 'sonarjs/aws-s3-bucket-granted-access'?: Linter.RuleEntry - /** - * Authorizing HTTP communications with S3 buckets is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6249/javascript - */ - 'sonarjs/aws-s3-bucket-insecure-http'?: Linter.RuleEntry<[]> - /** - * Allowing public ACLs or policies on a S3 bucket is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6281/javascript - */ - 'sonarjs/aws-s3-bucket-public-access'?: Linter.RuleEntry - /** - * Disabling server-side encryption of S3 buckets is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6245/javascript - * @deprecated - */ - 'sonarjs/aws-s3-bucket-server-encryption'?: Linter.RuleEntry - /** - * Disabling versioning of S3 buckets is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6252/javascript - */ - 'sonarjs/aws-s3-bucket-versioning'?: Linter.RuleEntry - /** - * Using unencrypted SageMaker notebook instances is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6319/javascript - */ - 'sonarjs/aws-sagemaker-unencrypted-notebook'?: Linter.RuleEntry<[]> - /** - * Using unencrypted SNS topics is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6327/javascript - */ - 'sonarjs/aws-sns-unencrypted-topics'?: Linter.RuleEntry<[]> - /** - * Using unencrypted SQS queues is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6330/javascript - */ - 'sonarjs/aws-sqs-unencrypted-queue'?: Linter.RuleEntry<[]> - /** - * Bitwise operators should not be used in boolean contexts - * @see https://sonarsource.github.io/rspec/#/rspec/S1529/javascript - */ - 'sonarjs/bitwise-operators'?: Linter.RuleEntry<[]> - /** - * Variables should be used in the blocks where they are declared - * @see https://sonarsource.github.io/rspec/#/rspec/S2392/javascript - */ - 'sonarjs/block-scoped-var'?: Linter.RuleEntry - /** - * Optional boolean parameters should have default value - * @see https://sonarsource.github.io/rspec/#/rspec/S4798/javascript - */ - 'sonarjs/bool-param-default'?: Linter.RuleEntry<[]> - /** - * Function call arguments should not start on new lines - * @see https://sonarsource.github.io/rspec/#/rspec/S1472/javascript - */ - 'sonarjs/call-argument-line'?: Linter.RuleEntry<[]> - /** - * Disabling Certificate Transparency monitoring is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5742/javascript - * @deprecated - */ - 'sonarjs/certificate-transparency'?: Linter.RuleEntry - /** - * Chai assertions should have only one reason to succeed - * @see https://sonarsource.github.io/rspec/#/rspec/S6092/javascript - */ - 'sonarjs/chai-determinate-assertion'?: Linter.RuleEntry<[]> - /** - * Class names should comply with a naming convention - * @see https://sonarsource.github.io/rspec/#/rspec/S101/javascript - */ - 'sonarjs/class-name'?: Linter.RuleEntry - /** - * Class methods should be used instead of "prototype" assignments - * @see https://sonarsource.github.io/rspec/#/rspec/S3525/javascript - */ - 'sonarjs/class-prototype'?: Linter.RuleEntry<[]> - /** - * Dynamically executing code is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S1523/javascript - */ - 'sonarjs/code-eval'?: Linter.RuleEntry<[]> - /** - * Cognitive Complexity of functions should not be too high - * @see https://sonarsource.github.io/rspec/#/rspec/S3776/javascript - */ - 'sonarjs/cognitive-complexity'?: Linter.RuleEntry - /** - * Comma and logical OR operators should not be used in switch cases - * @see https://sonarsource.github.io/rspec/#/rspec/S3616/javascript - */ - 'sonarjs/comma-or-logical-or-case'?: Linter.RuleEntry<[]> - /** - * Track comments matching a regular expression - * @see https://sonarsource.github.io/rspec/#/rspec/S124/javascript - */ - 'sonarjs/comment-regex'?: Linter.RuleEntry - /** - * Regular expression quantifiers and character classes should be used concisely - * @see https://sonarsource.github.io/rspec/#/rspec/S6353/javascript - */ - 'sonarjs/concise-regex'?: Linter.RuleEntry<[]> - /** - * A conditionally executed single line should be denoted by indentation - * @see https://sonarsource.github.io/rspec/#/rspec/S3973/javascript - * @deprecated - */ - 'sonarjs/conditional-indentation'?: Linter.RuleEntry - /** - * Allowing confidential information to be logged is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5757/javascript - */ - 'sonarjs/confidential-information-logging'?: Linter.RuleEntry - /** - * Objects should not be created to be dropped immediately without being used - * @see https://sonarsource.github.io/rspec/#/rspec/S1848/javascript - */ - 'sonarjs/constructor-for-side-effects'?: Linter.RuleEntry<[]> - /** - * Allowing requests with excessive content length is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5693/javascript - */ - 'sonarjs/content-length'?: Linter.RuleEntry - /** - * Disabling content security policy fetch directives is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5728/javascript - */ - 'sonarjs/content-security-policy'?: Linter.RuleEntry - /** - * Creating cookies without the "HttpOnly" flag is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S3330/javascript - */ - 'sonarjs/cookie-no-httponly'?: Linter.RuleEntry - /** - * Writing cookies is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S2255/javascript - * @deprecated - */ - 'sonarjs/cookies'?: Linter.RuleEntry<[]> - /** - * Having a permissive Cross-Origin Resource Sharing policy is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5122/javascript - */ - 'sonarjs/cors'?: Linter.RuleEntry - /** - * Disabling CSRF protections is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4502/javascript - */ - 'sonarjs/csrf'?: Linter.RuleEntry - /** - * Cyclomatic Complexity of functions should not be too high - * @see https://sonarsource.github.io/rspec/#/rspec/S1541/javascript - */ - 'sonarjs/cyclomatic-complexity'?: Linter.RuleEntry - /** - * Variables and functions should not be declared in the global scope - * @see https://sonarsource.github.io/rspec/#/rspec/S3798/javascript - */ - 'sonarjs/declarations-in-global-scope'?: Linter.RuleEntry<[]> - /** - * Deprecated APIs should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S1874/javascript - */ - 'sonarjs/deprecation'?: Linter.RuleEntry<[]> - /** - * Destructuring syntax should be used for assignments - * @see https://sonarsource.github.io/rspec/#/rspec/S3514/javascript - */ - 'sonarjs/destructuring-assignment-syntax'?: Linter.RuleEntry - /** - * Strict equality operators should not be used with dissimilar types - * @see https://sonarsource.github.io/rspec/#/rspec/S3403/javascript - */ - 'sonarjs/different-types-comparison'?: Linter.RuleEntry - /** - * Disabling auto-escaping in template engines is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5247/javascript - */ - 'sonarjs/disabled-auto-escaping'?: Linter.RuleEntry - /** - * Using remote artifacts without integrity checks is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5725/javascript - */ - 'sonarjs/disabled-resource-integrity'?: Linter.RuleEntry<[]> - /** - * Disabling Mocha timeouts should be explicit - * @see https://sonarsource.github.io/rspec/#/rspec/S6080/javascript - */ - 'sonarjs/disabled-timeout'?: Linter.RuleEntry<[]> - /** - * Allowing browsers to perform DNS prefetching is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5743/javascript - * @deprecated - */ - 'sonarjs/dns-prefetching'?: Linter.RuleEntry - /** - * Character classes in regular expressions should not contain the same character twice - * @see https://sonarsource.github.io/rspec/#/rspec/S5869/javascript - */ - 'sonarjs/duplicates-in-character-class'?: Linter.RuleEntry - /** - * "if ... else if" constructs should end with "else" clauses - * @see https://sonarsource.github.io/rspec/#/rspec/S126/javascript - */ - 'sonarjs/elseif-without-else'?: Linter.RuleEntry<[]> - /** - * Repeated patterns in regular expressions should not match the empty string - * @see https://sonarsource.github.io/rspec/#/rspec/S5842/javascript - */ - 'sonarjs/empty-string-repetition'?: Linter.RuleEntry<[]> - /** - * Encrypting data is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4787/javascript - * @deprecated - */ - 'sonarjs/encryption'?: Linter.RuleEntry<[]> - /** - * Encryption algorithms should be used with secure mode and padding scheme - * @see https://sonarsource.github.io/rspec/#/rspec/S5542/javascript - */ - 'sonarjs/encryption-secure-mode'?: Linter.RuleEntry<[]> - /** - * Trailing commas should be used - * @see https://sonarsource.github.io/rspec/#/rspec/S3723/javascript - * @deprecated - */ - 'sonarjs/enforce-trailing-comma'?: Linter.RuleEntry - /** - * Replacement strings should reference existing regular expression groups - * @see https://sonarsource.github.io/rspec/#/rspec/S6328/javascript - */ - 'sonarjs/existing-groups'?: Linter.RuleEntry<[]> - /** - * Expressions should not be too complex - * @see https://sonarsource.github.io/rspec/#/rspec/S1067/javascript - */ - 'sonarjs/expression-complexity'?: Linter.RuleEntry - /** - * Track lack of copyright and license headers - * @see https://sonarsource.github.io/rspec/#/rspec/S1451/javascript - */ - 'sonarjs/file-header'?: Linter.RuleEntry - /** - * Default export names and file names should match - * @see https://sonarsource.github.io/rspec/#/rspec/S3317/javascript - */ - 'sonarjs/file-name-differ-from-class'?: Linter.RuleEntry<[]> - /** - * Setting loose POSIX file permissions is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S2612/javascript - */ - 'sonarjs/file-permissions'?: Linter.RuleEntry<[]> - /** - * File uploads should be restricted - * @see https://sonarsource.github.io/rspec/#/rspec/S2598/javascript - */ - 'sonarjs/file-uploads'?: Linter.RuleEntry - /** - * Track uses of "FIXME" tags - * @see https://sonarsource.github.io/rspec/#/rspec/S1134/javascript - */ - 'sonarjs/fixme-tag'?: Linter.RuleEntry<[]> - /** - * "for...in" loops should filter properties before acting on them - * @see https://sonarsource.github.io/rspec/#/rspec/S1535/javascript - */ - 'sonarjs/for-in'?: Linter.RuleEntry<[]> - /** - * A "for" loop update clause should move the counter in the right direction - * @see https://sonarsource.github.io/rspec/#/rspec/S2251/javascript - */ - 'sonarjs/for-loop-increment-sign'?: Linter.RuleEntry - /** - * Disabling content security policy frame-ancestors directive is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5732/javascript - */ - 'sonarjs/frame-ancestors'?: Linter.RuleEntry - /** - * Functions should not be defined inside loops - * @see https://sonarsource.github.io/rspec/#/rspec/S1515/javascript - */ - 'sonarjs/function-inside-loop'?: Linter.RuleEntry - /** - * Function and method names should comply with a naming convention - * @see https://sonarsource.github.io/rspec/#/rspec/S100/javascript - */ - 'sonarjs/function-name'?: Linter.RuleEntry - /** - * Functions should always return the same type - * @see https://sonarsource.github.io/rspec/#/rspec/S3800/javascript - */ - 'sonarjs/function-return-type'?: Linter.RuleEntry - /** - * Future reserved words should not be used as identifiers - * @see https://sonarsource.github.io/rspec/#/rspec/S1527/javascript - */ - 'sonarjs/future-reserved-words'?: Linter.RuleEntry<[]> - /** - * Generators should explicitly "yield" a value - * @see https://sonarsource.github.io/rspec/#/rspec/S3531/javascript - */ - 'sonarjs/generator-without-yield'?: Linter.RuleEntry<[]> - /** - * Using weak hashing algorithms is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4790/javascript - */ - 'sonarjs/hashing'?: Linter.RuleEntry<[]> - /** - * Statically serving hidden files is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5691/javascript - */ - 'sonarjs/hidden-files'?: Linter.RuleEntry<[]> - /** - * "in" should not be used with primitive types - * @see https://sonarsource.github.io/rspec/#/rspec/S3785/javascript - */ - 'sonarjs/in-operator-type-error'?: Linter.RuleEntry - /** - * Functions should be called consistently with or without "new" - * @see https://sonarsource.github.io/rspec/#/rspec/S3686/javascript - */ - 'sonarjs/inconsistent-function-call'?: Linter.RuleEntry - /** - * "indexOf" checks should not be for positive numbers - * @see https://sonarsource.github.io/rspec/#/rspec/S2692/javascript - */ - 'sonarjs/index-of-compare-to-positive-number'?: Linter.RuleEntry<[]> - /** - * Creating cookies without the "secure" flag is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S2092/javascript - */ - 'sonarjs/insecure-cookie'?: Linter.RuleEntry - /** - * JWT should be signed and verified with strong cipher algorithms - * @see https://sonarsource.github.io/rspec/#/rspec/S5659/javascript - */ - 'sonarjs/insecure-jwt-token'?: Linter.RuleEntry - /** - * Assertion arguments should be passed in the correct order - * @see https://sonarsource.github.io/rspec/#/rspec/S3415/javascript - */ - 'sonarjs/inverted-assertion-arguments'?: Linter.RuleEntry - /** - * React components should not render non-boolean condition values - * @see https://sonarsource.github.io/rspec/#/rspec/S6439/javascript - */ - 'sonarjs/jsx-no-leaked-render'?: Linter.RuleEntry<[]> - /** - * Only "while", "do", "for" and "switch" statements should be labelled - * @see https://sonarsource.github.io/rspec/#/rspec/S1439/javascript - */ - 'sonarjs/label-position'?: Linter.RuleEntry<[]> - /** - * Authorizing an opened window to access back to the originating window is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5148/javascript - */ - 'sonarjs/link-with-target-blank'?: Linter.RuleEntry<[]> - /** - * Files should not have too many lines of code - * @see https://sonarsource.github.io/rspec/#/rspec/S104/javascript - */ - 'sonarjs/max-lines'?: Linter.RuleEntry - /** - * Functions should not have too many lines of code - * @see https://sonarsource.github.io/rspec/#/rspec/S138/javascript - */ - 'sonarjs/max-lines-per-function'?: Linter.RuleEntry - /** - * "switch" statements should not have too many "case" clauses - * @see https://sonarsource.github.io/rspec/#/rspec/S1479/javascript - */ - 'sonarjs/max-switch-cases'?: Linter.RuleEntry - /** - * Union types should not have too many elements - * @see https://sonarsource.github.io/rspec/#/rspec/S4622/javascript - */ - 'sonarjs/max-union-size'?: Linter.RuleEntry - /** - * "for" loop increment clauses should modify the loops' counters - * @see https://sonarsource.github.io/rspec/#/rspec/S1994/javascript - */ - 'sonarjs/misplaced-loop-counter'?: Linter.RuleEntry<[]> - /** - * Control flow statements "if", "for", "while", "switch" and "try" should not be nested too deeply - * @see https://sonarsource.github.io/rspec/#/rspec/S134/javascript - */ - 'sonarjs/nested-control-flow'?: Linter.RuleEntry - /** - * "new" should only be used with functions and classes - * @see https://sonarsource.github.io/rspec/#/rspec/S2999/javascript - */ - 'sonarjs/new-operator-misuse'?: Linter.RuleEntry - /** - * All branches in a conditional structure should not have exactly the same implementation - * @see https://sonarsource.github.io/rspec/#/rspec/S3923/javascript - */ - 'sonarjs/no-all-duplicated-branches'?: Linter.RuleEntry<[]> - /** - * "Array.prototype.sort()" and "Array.prototype.toSorted()" should use a compare function - * @see https://sonarsource.github.io/rspec/#/rspec/S2871/javascript - */ - 'sonarjs/no-alphabetical-sort'?: Linter.RuleEntry<[]> - /** - * Disabling Angular built-in sanitization is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6268/javascript - */ - 'sonarjs/no-angular-bypass-sanitization'?: Linter.RuleEntry<[]> - /** - * "delete" should not be used on arrays - * @see https://sonarsource.github.io/rspec/#/rspec/S2870/javascript - */ - 'sonarjs/no-array-delete'?: Linter.RuleEntry<[]> - /** - * Array indexes should be numeric - * @see https://sonarsource.github.io/rspec/#/rspec/S3579/javascript - */ - 'sonarjs/no-associative-arrays'?: Linter.RuleEntry<[]> - /** - * Constructors should not contain asynchronous operations - * @see https://sonarsource.github.io/rspec/#/rspec/S7059/javascript - */ - 'sonarjs/no-async-constructor'?: Linter.RuleEntry<[]> - /** - * Built-in objects should not be overridden - * @see https://sonarsource.github.io/rspec/#/rspec/S2424/javascript - */ - 'sonarjs/no-built-in-override'?: Linter.RuleEntry<[]> - /** - * "switch" statements should not contain non-case labels - * @see https://sonarsource.github.io/rspec/#/rspec/S1219/javascript - */ - 'sonarjs/no-case-label-in-switch'?: Linter.RuleEntry<[]> - /** - * Using clear-text protocols is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5332/javascript - */ - 'sonarjs/no-clear-text-protocols'?: Linter.RuleEntry<[]> - /** - * Tests should not execute any code after "done()" is called - * @see https://sonarsource.github.io/rspec/#/rspec/S6079/javascript - */ - 'sonarjs/no-code-after-done'?: Linter.RuleEntry - /** - * Mergeable "if" statements should be combined - * @see https://sonarsource.github.io/rspec/#/rspec/S1066/javascript - */ - 'sonarjs/no-collapsible-if'?: Linter.RuleEntry - /** - * Collection size and array length comparisons should make sense - * @see https://sonarsource.github.io/rspec/#/rspec/S3981/javascript - */ - 'sonarjs/no-collection-size-mischeck'?: Linter.RuleEntry<[]> - /** - * Sections of code should not be commented out - * @see https://sonarsource.github.io/rspec/#/rspec/S125/javascript - */ - 'sonarjs/no-commented-code'?: Linter.RuleEntry<[]> - /** - * Regular expressions should not contain control characters - * @see https://sonarsource.github.io/rspec/#/rspec/S6324/javascript - */ - 'sonarjs/no-control-regex'?: Linter.RuleEntry<[]> - /** - * Unused assignments should be removed - * @see https://sonarsource.github.io/rspec/#/rspec/S1854/javascript - */ - 'sonarjs/no-dead-store'?: Linter.RuleEntry<[]> - /** - * "delete" should be used only with object properties - * @see https://sonarsource.github.io/rspec/#/rspec/S3001/javascript - */ - 'sonarjs/no-delete-var'?: Linter.RuleEntry<[]> - /** - * Union and intersection types should not include duplicated constituents - * @see https://sonarsource.github.io/rspec/#/rspec/S4621/javascript - */ - 'sonarjs/no-duplicate-in-composite'?: Linter.RuleEntry - /** - * String literals should not be duplicated - * @see https://sonarsource.github.io/rspec/#/rspec/S1192/javascript - */ - 'sonarjs/no-duplicate-string'?: Linter.RuleEntry - /** - * Two branches in a conditional structure should not have exactly the same implementation - * @see https://sonarsource.github.io/rspec/#/rspec/S1871/javascript - */ - 'sonarjs/no-duplicated-branches'?: Linter.RuleEntry - /** - * Collection elements should not be replaced unconditionally - * @see https://sonarsource.github.io/rspec/#/rspec/S4143/javascript - */ - 'sonarjs/no-element-overwrite'?: Linter.RuleEntry - /** - * Reluctant quantifiers in regular expressions should be followed by an expression that can't match the empty string - * @see https://sonarsource.github.io/rspec/#/rspec/S6019/javascript - */ - 'sonarjs/no-empty-after-reluctant'?: Linter.RuleEntry<[]> - /** - * Alternation in regular expressions should not contain empty alternatives - * @see https://sonarsource.github.io/rspec/#/rspec/S6323/javascript - */ - 'sonarjs/no-empty-alternatives'?: Linter.RuleEntry<[]> - /** - * Empty character classes should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S2639/javascript - */ - 'sonarjs/no-empty-character-class'?: Linter.RuleEntry<[]> - /** - * Empty collections should not be accessed or iterated - * @see https://sonarsource.github.io/rspec/#/rspec/S4158/javascript - */ - 'sonarjs/no-empty-collection'?: Linter.RuleEntry<[]> - /** - * Regular expressions should not contain empty groups - * @see https://sonarsource.github.io/rspec/#/rspec/S6331/javascript - */ - 'sonarjs/no-empty-group'?: Linter.RuleEntry<[]> - /** - * Test files should contain at least one test case - * @see https://sonarsource.github.io/rspec/#/rspec/S2187/javascript - */ - 'sonarjs/no-empty-test-file'?: Linter.RuleEntry<[]> - /** - * Equality operators should not be used in "for" loop termination conditions - * @see https://sonarsource.github.io/rspec/#/rspec/S888/javascript - */ - 'sonarjs/no-equals-in-for-termination'?: Linter.RuleEntry<[]> - /** - * Exclusive tests should not be commited to version control - * @see https://sonarsource.github.io/rspec/#/rspec/S6426/javascript - */ - 'sonarjs/no-exclusive-tests'?: Linter.RuleEntry<[]> - /** - * Function calls should not pass extra arguments - * @see https://sonarsource.github.io/rspec/#/rspec/S930/javascript - */ - 'sonarjs/no-extra-arguments'?: Linter.RuleEntry - /** - * Switch cases should end with an unconditional "break" statement - * @see https://sonarsource.github.io/rspec/#/rspec/S128/javascript - */ - 'sonarjs/no-fallthrough'?: Linter.RuleEntry<[]> - /** - * "for in" should not be used with iterables - * @see https://sonarsource.github.io/rspec/#/rspec/S4139/javascript - */ - 'sonarjs/no-for-in-iterable'?: Linter.RuleEntry<[]> - /** - * Function declarations should not be made within blocks - * @see https://sonarsource.github.io/rspec/#/rspec/S1530/javascript - */ - 'sonarjs/no-function-declaration-in-block'?: Linter.RuleEntry<[]> - /** - * The global "this" object should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S2990/javascript - */ - 'sonarjs/no-global-this'?: Linter.RuleEntry<[]> - /** - * Special identifiers should not be bound or assigned - * @see https://sonarsource.github.io/rspec/#/rspec/S2137/javascript - */ - 'sonarjs/no-globals-shadowing'?: Linter.RuleEntry<[]> - /** - * Boolean expressions should not be gratuitous - * @see https://sonarsource.github.io/rspec/#/rspec/S2589/javascript - */ - 'sonarjs/no-gratuitous-expressions'?: Linter.RuleEntry - /** - * Using hardcoded IP addresses is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S1313/javascript - */ - 'sonarjs/no-hardcoded-ip'?: Linter.RuleEntry<[]> - /** - * Hard-coded passwords are security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S2068/javascript - */ - 'sonarjs/no-hardcoded-passwords'?: Linter.RuleEntry - /** - * Hard-coded secrets are security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6418/javascript - */ - 'sonarjs/no-hardcoded-secrets'?: Linter.RuleEntry - /** - * React's useState hook should not be used directly in the render function or body of a component - * @see https://sonarsource.github.io/rspec/#/rspec/S6442/javascript - */ - 'sonarjs/no-hook-setter-in-body'?: Linter.RuleEntry<[]> - /** - * "if/else if" chains and "switch" cases should not have the same condition - * @see https://sonarsource.github.io/rspec/#/rspec/S1862/javascript - */ - 'sonarjs/no-identical-conditions'?: Linter.RuleEntry - /** - * Identical expressions should not be used on both sides of a binary operator - * @see https://sonarsource.github.io/rspec/#/rspec/S1764/javascript - */ - 'sonarjs/no-identical-expressions'?: Linter.RuleEntry - /** - * Functions should not have identical implementations - * @see https://sonarsource.github.io/rspec/#/rspec/S4144/javascript - */ - 'sonarjs/no-identical-functions'?: Linter.RuleEntry - /** - * Exceptions should not be ignored - * @see https://sonarsource.github.io/rspec/#/rspec/S2486/javascript - */ - 'sonarjs/no-ignored-exceptions'?: Linter.RuleEntry<[]> - /** - * Return values from functions without side effects should not be ignored - * @see https://sonarsource.github.io/rspec/#/rspec/S2201/javascript - */ - 'sonarjs/no-ignored-return'?: Linter.RuleEntry<[]> - /** - * Dependencies should be explicit - * @see https://sonarsource.github.io/rspec/#/rspec/S4328/javascript - */ - 'sonarjs/no-implicit-dependencies'?: Linter.RuleEntry - /** - * Variables should be declared explicitly - * @see https://sonarsource.github.io/rspec/#/rspec/S2703/javascript - */ - 'sonarjs/no-implicit-global'?: Linter.RuleEntry<[]> - /** - * "in" should not be used on arrays - * @see https://sonarsource.github.io/rspec/#/rspec/S4619/javascript - */ - 'sonarjs/no-in-misuse'?: Linter.RuleEntry<[]> - /** - * Assertions should be complete - * @see https://sonarsource.github.io/rspec/#/rspec/S2970/javascript - */ - 'sonarjs/no-incomplete-assertions'?: Linter.RuleEntry<[]> - /** - * Functions should use "return" consistently - * @see https://sonarsource.github.io/rspec/#/rspec/S3801/javascript - */ - 'sonarjs/no-inconsistent-returns'?: Linter.RuleEntry - /** - * Strings and non-strings should not be added - * @see https://sonarsource.github.io/rspec/#/rspec/S3402/javascript - */ - 'sonarjs/no-incorrect-string-concat'?: Linter.RuleEntry - /** - * Users should not use internal APIs - * @see https://sonarsource.github.io/rspec/#/rspec/S6627/javascript - */ - 'sonarjs/no-internal-api-use'?: Linter.RuleEntry<[]> - /** - * Using intrusive permissions is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5604/javascript - */ - 'sonarjs/no-intrusive-permissions'?: Linter.RuleEntry - /** - * "await" should only be used with promises - * @see https://sonarsource.github.io/rspec/#/rspec/S4123/javascript - */ - 'sonarjs/no-invalid-await'?: Linter.RuleEntry<[]> - /** - * Regular expressions should be syntactically valid - * @see https://sonarsource.github.io/rspec/#/rspec/S5856/javascript - */ - 'sonarjs/no-invalid-regexp'?: Linter.RuleEntry<[]> - /** - * Function returns should not be invariant - * @see https://sonarsource.github.io/rspec/#/rspec/S3516/javascript - */ - 'sonarjs/no-invariant-returns'?: Linter.RuleEntry - /** - * Boolean checks should not be inverted - * @see https://sonarsource.github.io/rspec/#/rspec/S1940/javascript - */ - 'sonarjs/no-inverted-boolean-check'?: Linter.RuleEntry<[]> - /** - * Forwarding client IP address is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5759/javascript - */ - 'sonarjs/no-ip-forward'?: Linter.RuleEntry - /** - * Labels should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S1119/javascript - */ - 'sonarjs/no-labels'?: Linter.RuleEntry<[]> - /** - * Literals should not be used as functions - * @see https://sonarsource.github.io/rspec/#/rspec/S6958/javascript - */ - 'sonarjs/no-literal-call'?: Linter.RuleEntry<[]> - /** - * Allowing browsers to sniff MIME types is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5734/javascript - */ - 'sonarjs/no-mime-sniff'?: Linter.RuleEntry - /** - * Array-mutating methods should not be used misleadingly - * @see https://sonarsource.github.io/rspec/#/rspec/S4043/javascript - */ - 'sonarjs/no-misleading-array-reverse'?: Linter.RuleEntry<[]> - /** - * Unicode Grapheme Clusters should be avoided inside regex character classes - * @see https://sonarsource.github.io/rspec/#/rspec/S5868/javascript - */ - 'sonarjs/no-misleading-character-class'?: Linter.RuleEntry<[]> - /** - * Allowing mixed-content is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5730/javascript - */ - 'sonarjs/no-mixed-content'?: Linter.RuleEntry - /** - * Assignments should not be made from within sub-expressions - * @see https://sonarsource.github.io/rspec/#/rspec/S1121/javascript - */ - 'sonarjs/no-nested-assignment'?: Linter.RuleEntry<[]> - /** - * Ternary operators should not be nested - * @see https://sonarsource.github.io/rspec/#/rspec/S3358/javascript - */ - 'sonarjs/no-nested-conditional'?: Linter.RuleEntry<[]> - /** - * Functions should not be nested too deeply - * @see https://sonarsource.github.io/rspec/#/rspec/S2004/javascript - */ - 'sonarjs/no-nested-functions'?: Linter.RuleEntry - /** - * Increment (++) and decrement (--) operators should not be used in a method call or mixed with other operators in an expression - * @see https://sonarsource.github.io/rspec/#/rspec/S881/javascript - */ - 'sonarjs/no-nested-incdec'?: Linter.RuleEntry<[]> - /** - * "switch" statements should not be nested - * @see https://sonarsource.github.io/rspec/#/rspec/S1821/javascript - */ - 'sonarjs/no-nested-switch'?: Linter.RuleEntry<[]> - /** - * Template literals should not be nested - * @see https://sonarsource.github.io/rspec/#/rspec/S4624/javascript - */ - 'sonarjs/no-nested-template-literals'?: Linter.RuleEntry<[]> - /** - * Loops with at most one iteration should be refactored - * @see https://sonarsource.github.io/rspec/#/rspec/S1751/javascript - */ - 'sonarjs/no-one-iteration-loop'?: Linter.RuleEntry<[]> - /** - * Searching OS commands in PATH is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4036/javascript - */ - 'sonarjs/no-os-command-from-path'?: Linter.RuleEntry<[]> - /** - * Initial values of parameters, caught exceptions, and loop variables should not be ignored - * @see https://sonarsource.github.io/rspec/#/rspec/S1226/javascript - */ - 'sonarjs/no-parameter-reassignment'?: Linter.RuleEntry<[]> - /** - * Wrapper objects should not be used for primitive types - * @see https://sonarsource.github.io/rspec/#/rspec/S1533/javascript - */ - 'sonarjs/no-primitive-wrappers'?: Linter.RuleEntry<[]> - /** - * Assignments should not be redundant - * @see https://sonarsource.github.io/rspec/#/rspec/S4165/javascript - */ - 'sonarjs/no-redundant-assignments'?: Linter.RuleEntry<[]> - /** - * Boolean literals should not be used in comparisons - * @see https://sonarsource.github.io/rspec/#/rspec/S1125/javascript - */ - 'sonarjs/no-redundant-boolean'?: Linter.RuleEntry<[]> - /** - * Jump statements should not be redundant - * @see https://sonarsource.github.io/rspec/#/rspec/S3626/javascript - */ - 'sonarjs/no-redundant-jump'?: Linter.RuleEntry<[]> - /** - * Optional property declarations should not use both '?' and 'undefined' syntax - * @see https://sonarsource.github.io/rspec/#/rspec/S4782/javascript - */ - 'sonarjs/no-redundant-optional'?: Linter.RuleEntry - /** - * Redundant pairs of parentheses should be removed - * @see https://sonarsource.github.io/rspec/#/rspec/S1110/javascript - * @deprecated - */ - 'sonarjs/no-redundant-parentheses'?: Linter.RuleEntry - /** - * Variables should be defined before being used - * @see https://sonarsource.github.io/rspec/#/rspec/S3827/javascript - */ - 'sonarjs/no-reference-error'?: Linter.RuleEntry - /** - * Disabling strict HTTP no-referrer policy is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5736/javascript - */ - 'sonarjs/no-referrer-policy'?: Linter.RuleEntry - /** - * Regular expressions should not contain multiple spaces - * @see https://sonarsource.github.io/rspec/#/rspec/S6326/javascript - */ - 'sonarjs/no-regex-spaces'?: Linter.RuleEntry<[]> - /** - * "import" should be used to include external code - * @see https://sonarsource.github.io/rspec/#/rspec/S3533/javascript - */ - 'sonarjs/no-require-or-define'?: Linter.RuleEntry<[]> - /** - * Primitive return types should be used - * @see https://sonarsource.github.io/rspec/#/rspec/S4324/javascript - */ - 'sonarjs/no-return-type-any'?: Linter.RuleEntry<[]> - /** - * Assertions should not be given twice the same argument - * @see https://sonarsource.github.io/rspec/#/rspec/S5863/javascript - */ - 'sonarjs/no-same-argument-assert'?: Linter.RuleEntry - /** - * Conditionals should start on new lines - * @see https://sonarsource.github.io/rspec/#/rspec/S3972/javascript - */ - 'sonarjs/no-same-line-conditional'?: Linter.RuleEntry - /** - * Methods should not contain selector parameters - * @see https://sonarsource.github.io/rspec/#/rspec/S2301/javascript - */ - 'sonarjs/no-selector-parameter'?: Linter.RuleEntry - /** - * Tests should not be skipped without providing a reason - * @see https://sonarsource.github.io/rspec/#/rspec/S1607/javascript - */ - 'sonarjs/no-skipped-tests'?: Linter.RuleEntry<[]> - /** - * "if" statements should be preferred over "switch" when simpler - * @see https://sonarsource.github.io/rspec/#/rspec/S1301/javascript - */ - 'sonarjs/no-small-switch'?: Linter.RuleEntry<[]> - /** - * Track uses of "NOSONAR" comments - * @see https://sonarsource.github.io/rspec/#/rspec/S1291/javascript - */ - 'sonarjs/no-sonar-comments'?: Linter.RuleEntry<[]> - /** - * Tabulation characters should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S105/javascript - * @deprecated - */ - 'sonarjs/no-tab'?: Linter.RuleEntry<[]> - /** - * HTML "" should not be used for layout purposes - * @see https://sonarsource.github.io/rspec/#/rspec/S5257/javascript - */ - 'sonarjs/no-table-as-layout'?: Linter.RuleEntry<[]> - /** - * Promise rejections should not be caught by "try" blocks - * @see https://sonarsource.github.io/rspec/#/rspec/S4822/javascript - */ - 'sonarjs/no-try-promise'?: Linter.RuleEntry - /** - * "undefined" should not be passed as the value of optional parameters - * @see https://sonarsource.github.io/rspec/#/rspec/S4623/javascript - */ - 'sonarjs/no-undefined-argument'?: Linter.RuleEntry<[]> - /** - * "undefined" should not be assigned - * @see https://sonarsource.github.io/rspec/#/rspec/S2138/javascript - */ - 'sonarjs/no-undefined-assignment'?: Linter.RuleEntry<[]> - /** - * Multiline blocks should be enclosed in curly braces - * @see https://sonarsource.github.io/rspec/#/rspec/S2681/javascript - */ - 'sonarjs/no-unenclosed-multiline-block'?: Linter.RuleEntry<[]> - /** - * JSX list components keys should match up between renders - * @see https://sonarsource.github.io/rspec/#/rspec/S6486/javascript - */ - 'sonarjs/no-uniq-key'?: Linter.RuleEntry<[]> - /** - * Expanding archive files without controlling resource consumption is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5042/javascript - */ - 'sonarjs/no-unsafe-unzip'?: Linter.RuleEntry<[]> - /** - * Errors should not be created without being thrown - * @see https://sonarsource.github.io/rspec/#/rspec/S3984/javascript - */ - 'sonarjs/no-unthrown-error'?: Linter.RuleEntry<[]> - /** - * Collection contents should be used - * @see https://sonarsource.github.io/rspec/#/rspec/S4030/javascript - */ - 'sonarjs/no-unused-collection'?: Linter.RuleEntry<[]> - /** - * Unused function parameters should be removed - * @see https://sonarsource.github.io/rspec/#/rspec/S1172/javascript - */ - 'sonarjs/no-unused-function-argument'?: Linter.RuleEntry<[]> - /** - * Unused local variables and functions should be removed - * @see https://sonarsource.github.io/rspec/#/rspec/S1481/javascript - */ - 'sonarjs/no-unused-vars'?: Linter.RuleEntry<[]> - /** - * The return value of void functions should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S3699/javascript - */ - 'sonarjs/no-use-of-empty-return-value'?: Linter.RuleEntry<[]> - /** - * "catch" clauses should do more than rethrow - * @see https://sonarsource.github.io/rspec/#/rspec/S2737/javascript - */ - 'sonarjs/no-useless-catch'?: Linter.RuleEntry<[]> - /** - * Values should not be uselessly incremented - * @see https://sonarsource.github.io/rspec/#/rspec/S2123/javascript - */ - 'sonarjs/no-useless-increment'?: Linter.RuleEntry<[]> - /** - * Type intersections should use meaningful types - * @see https://sonarsource.github.io/rspec/#/rspec/S4335/javascript - */ - 'sonarjs/no-useless-intersection'?: Linter.RuleEntry<[]> - /** - * React state setter function should not be called with its matching state variable - * @see https://sonarsource.github.io/rspec/#/rspec/S6443/javascript - */ - 'sonarjs/no-useless-react-setstate'?: Linter.RuleEntry<[]> - /** - * Variables declared with "var" should be declared before they are used - * @see https://sonarsource.github.io/rspec/#/rspec/S1526/javascript - */ - 'sonarjs/no-variable-usage-before-declaration'?: Linter.RuleEntry - /** - * Disabling Vue.js built-in escaping is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6299/javascript - * @deprecated - */ - 'sonarjs/no-vue-bypass-sanitization'?: Linter.RuleEntry<[]> - /** - * Cipher algorithms should be robust - * @see https://sonarsource.github.io/rspec/#/rspec/S5547/javascript - */ - 'sonarjs/no-weak-cipher'?: Linter.RuleEntry<[]> - /** - * Cryptographic keys should be robust - * @see https://sonarsource.github.io/rspec/#/rspec/S4426/javascript - */ - 'sonarjs/no-weak-keys'?: Linter.RuleEntry<[]> - /** - * Wildcard imports should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S2208/javascript - */ - 'sonarjs/no-wildcard-import'?: Linter.RuleEntry<[]> - /** - * Non-existent operators '=+', '=-' and '=!' should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S2757/javascript - */ - 'sonarjs/non-existent-operator'?: Linter.RuleEntry<[]> - /** - * Arithmetic operators should only have numbers as operands - * @see https://sonarsource.github.io/rspec/#/rspec/S3760/javascript - */ - 'sonarjs/non-number-in-arithmetic-expression'?: Linter.RuleEntry - /** - * Properties of variables with "null" or "undefined" values should not be accessed - * @see https://sonarsource.github.io/rspec/#/rspec/S2259/javascript - */ - 'sonarjs/null-dereference'?: Linter.RuleEntry<[]> - /** - * "" tags should provide an alternative content - * @see https://sonarsource.github.io/rspec/#/rspec/S5264/javascript - */ - 'sonarjs/object-alt-content'?: Linter.RuleEntry<[]> - /** - * Arithmetic operations should not result in "NaN" - * @see https://sonarsource.github.io/rspec/#/rspec/S3757/javascript - */ - 'sonarjs/operation-returning-nan'?: Linter.RuleEntry<[]> - /** - * Using shell interpreter when executing OS commands is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4721/javascript - */ - 'sonarjs/os-command'?: Linter.RuleEntry<[]> - /** - * Origins should be verified during cross-origin communications - * @see https://sonarsource.github.io/rspec/#/rspec/S2819/javascript - */ - 'sonarjs/post-message'?: Linter.RuleEntry<[]> - /** - * "default" clauses should be last - * @see https://sonarsource.github.io/rspec/#/rspec/S4524/javascript - */ - 'sonarjs/prefer-default-last'?: Linter.RuleEntry<[]> - /** - * Local variables should not be declared and then immediately returned or thrown - * @see https://sonarsource.github.io/rspec/#/rspec/S1488/javascript - */ - 'sonarjs/prefer-immediate-return'?: Linter.RuleEntry<[]> - /** - * Object literal syntax should be used - * @see https://sonarsource.github.io/rspec/#/rspec/S2428/javascript - */ - 'sonarjs/prefer-object-literal'?: Linter.RuleEntry<[]> - /** - * Shorthand promises should be used - * @see https://sonarsource.github.io/rspec/#/rspec/S4634/javascript - */ - 'sonarjs/prefer-promise-shorthand'?: Linter.RuleEntry<[]> - /** - * React props should be read-only - * @see https://sonarsource.github.io/rspec/#/rspec/S6759/javascript - */ - 'sonarjs/prefer-read-only-props'?: Linter.RuleEntry<[]> - /** - * "RegExp.exec()" should be preferred over "String.match()" - * @see https://sonarsource.github.io/rspec/#/rspec/S6594/javascript - */ - 'sonarjs/prefer-regexp-exec'?: Linter.RuleEntry<[]> - /** - * Return of boolean expressions should not be wrapped into an "if-then-else" statement - * @see https://sonarsource.github.io/rspec/#/rspec/S1126/javascript - */ - 'sonarjs/prefer-single-boolean-return'?: Linter.RuleEntry<[]> - /** - * Type predicates should be used - * @see https://sonarsource.github.io/rspec/#/rspec/S4322/javascript - */ - 'sonarjs/prefer-type-guard'?: Linter.RuleEntry<[]> - /** - * A "while" loop should be used instead of a "for" loop - * @see https://sonarsource.github.io/rspec/#/rspec/S1264/javascript - */ - 'sonarjs/prefer-while'?: Linter.RuleEntry<[]> - /** - * Using command line arguments is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4823/javascript - * @deprecated - */ - 'sonarjs/process-argv'?: Linter.RuleEntry<[]> - /** - * Delivering code in production with debug features activated is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4507/javascript - */ - 'sonarjs/production-debug'?: Linter.RuleEntry<[]> - /** - * Using pseudorandom number generators (PRNGs) is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S2245/javascript - */ - 'sonarjs/pseudo-random'?: Linter.RuleEntry<[]> - /** - * Public "static" fields should be read-only - * @see https://sonarsource.github.io/rspec/#/rspec/S1444/javascript - */ - 'sonarjs/public-static-readonly'?: Linter.RuleEntry<[]> - /** - * Using publicly writable directories is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5443/javascript - */ - 'sonarjs/publicly-writable-directories'?: Linter.RuleEntry<[]> - /** - * "Array.reduce()" calls should include an initial value - * @see https://sonarsource.github.io/rspec/#/rspec/S6959/javascript - */ - 'sonarjs/reduce-initial-value'?: Linter.RuleEntry<[]> - /** - * Redundant type aliases should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S6564/javascript - */ - 'sonarjs/redundant-type-aliases'?: Linter.RuleEntry<[]> - /** - * Regular expressions should not be too complicated - * @see https://sonarsource.github.io/rspec/#/rspec/S5843/javascript - */ - 'sonarjs/regex-complexity'?: Linter.RuleEntry - /** - * Using regular expressions is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4784/javascript - * @deprecated - */ - 'sonarjs/regular-expr'?: Linter.RuleEntry<[]> - /** - * A new session should be created during user authentication - * @see https://sonarsource.github.io/rspec/#/rspec/S5876/javascript - */ - 'sonarjs/session-regeneration'?: Linter.RuleEntry<[]> - /** - * Shorthand object properties should be grouped at the beginning or end of an object declaration - * @see https://sonarsource.github.io/rspec/#/rspec/S3499/javascript - */ - 'sonarjs/shorthand-property-grouping'?: Linter.RuleEntry - /** - * Character classes in regular expressions should not contain only one character - * @see https://sonarsource.github.io/rspec/#/rspec/S6397/javascript - */ - 'sonarjs/single-char-in-character-classes'?: Linter.RuleEntry<[]> - /** - * Single-character alternations in regular expressions should be replaced with character classes - * @see https://sonarsource.github.io/rspec/#/rspec/S6035/javascript - */ - 'sonarjs/single-character-alternation'?: Linter.RuleEntry<[]> - /** - * Using slow regular expressions is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5852/javascript - */ - 'sonarjs/slow-regex'?: Linter.RuleEntry<[]> - /** - * Using Sockets is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4818/javascript - * @deprecated - */ - 'sonarjs/sockets'?: Linter.RuleEntry<[]> - /** - * Formatting SQL queries is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S2077/javascript - */ - 'sonarjs/sql-queries'?: Linter.RuleEntry<[]> - /** - * Tests should be stable - * @see https://sonarsource.github.io/rspec/#/rspec/S5973/javascript - */ - 'sonarjs/stable-tests'?: Linter.RuleEntry<[]> - /** - * Reading the Standard Input is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4829/javascript - * @deprecated - */ - 'sonarjs/standard-input'?: Linter.RuleEntry<[]> - /** - * Regular expressions with the global flag should be used with caution - * @see https://sonarsource.github.io/rspec/#/rspec/S6351/javascript - */ - 'sonarjs/stateful-regex'?: Linter.RuleEntry - /** - * Disabling Strict-Transport-Security policy is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5739/javascript - */ - 'sonarjs/strict-transport-security'?: Linter.RuleEntry - /** - * Comparison operators should not be used with strings - * @see https://sonarsource.github.io/rspec/#/rspec/S3003/javascript - */ - 'sonarjs/strings-comparison'?: Linter.RuleEntry - /** - * "super()" should be invoked appropriately - * @see https://sonarsource.github.io/rspec/#/rspec/S3854/javascript - */ - 'sonarjs/super-invocation'?: Linter.RuleEntry<[]> - /** - * Tables should have headers - * @see https://sonarsource.github.io/rspec/#/rspec/S5256/javascript - */ - 'sonarjs/table-header'?: Linter.RuleEntry<[]> - /** - * Table cells should reference their headers - * @see https://sonarsource.github.io/rspec/#/rspec/S5260/javascript - */ - 'sonarjs/table-header-reference'?: Linter.RuleEntry<[]> - /** - * Tests should check which exception is thrown - * @see https://sonarsource.github.io/rspec/#/rspec/S5958/javascript - */ - 'sonarjs/test-check-exception'?: Linter.RuleEntry<[]> - /** - * Track uses of "TODO" tags - * @see https://sonarsource.github.io/rspec/#/rspec/S1135/javascript - */ - 'sonarjs/todo-tag'?: Linter.RuleEntry<[]> - /** - * Loops should not contain more than a single "break" or "continue" statement - * @see https://sonarsource.github.io/rspec/#/rspec/S135/javascript - */ - 'sonarjs/too-many-break-or-continue-in-loop'?: Linter.RuleEntry - /** - * Regular expressions using Unicode character classes or property escapes should enable the unicode flag - * @see https://sonarsource.github.io/rspec/#/rspec/S5867/javascript - */ - 'sonarjs/unicode-aware-regex'?: Linter.RuleEntry - /** - * Unnecessary imports should be removed - * @see https://sonarsource.github.io/rspec/#/rspec/S1128/javascript - */ - 'sonarjs/unused-import'?: Linter.RuleEntry<[]> - /** - * Names of regular expressions named groups should be used - * @see https://sonarsource.github.io/rspec/#/rspec/S5860/javascript - */ - 'sonarjs/unused-named-groups'?: Linter.RuleEntry - /** - * Server certificates should be verified during SSL/TLS connections - * @see https://sonarsource.github.io/rspec/#/rspec/S4830/javascript - */ - 'sonarjs/unverified-certificate'?: Linter.RuleEntry - /** - * Server hostnames should be verified during SSL/TLS connections - * @see https://sonarsource.github.io/rspec/#/rspec/S5527/javascript - */ - 'sonarjs/unverified-hostname'?: Linter.RuleEntry - /** - * "const" variables should not be reassigned - * @see https://sonarsource.github.io/rspec/#/rspec/S3500/javascript - */ - 'sonarjs/updated-const-var'?: Linter.RuleEntry - /** - * Loop counters should not be assigned within the loop body - * @see https://sonarsource.github.io/rspec/#/rspec/S2310/javascript - */ - 'sonarjs/updated-loop-counter'?: Linter.RuleEntry - /** - * Type aliases should be used - * @see https://sonarsource.github.io/rspec/#/rspec/S4323/javascript - */ - 'sonarjs/use-type-alias'?: Linter.RuleEntry - /** - * Results of operations on strings should not be ignored - * @see https://sonarsource.github.io/rspec/#/rspec/S1154/javascript - * @deprecated - */ - 'sonarjs/useless-string-operation'?: Linter.RuleEntry<[]> - /** - * Values not convertible to numbers should not be used in numeric comparisons - * @see https://sonarsource.github.io/rspec/#/rspec/S3758/javascript - */ - 'sonarjs/values-not-convertible-to-numbers'?: Linter.RuleEntry<[]> - /** - * Variable, property and parameter names should comply with a naming convention - * @see https://sonarsource.github.io/rspec/#/rspec/S117/javascript - */ - 'sonarjs/variable-name'?: Linter.RuleEntry - /** - * "void" should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S3735/javascript - */ - 'sonarjs/void-use'?: Linter.RuleEntry<[]> - /** - * Weak SSL/TLS protocols should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S4423/javascript - */ - 'sonarjs/weak-ssl'?: Linter.RuleEntry<[]> - /** - * Web SQL databases should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S2817/javascript - * @deprecated - */ - 'sonarjs/web-sql-database'?: Linter.RuleEntry<[]> - /** - * Disclosing fingerprints from web application technologies is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5689/javascript - */ - 'sonarjs/x-powered-by'?: Linter.RuleEntry<[]> - /** - * XML parsers should not be vulnerable to XXE attacks - * @see https://sonarsource.github.io/rspec/#/rspec/S2755/javascript - */ - 'sonarjs/xml-parser-xxe'?: Linter.RuleEntry - /** - * Executing XPath expressions is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4817/javascript - * @deprecated - */ - 'sonarjs/xpath'?: Linter.RuleEntry<[]> - /** - * Interactions should be awaited - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/await-interactions.md - */ - 'storybook/await-interactions'?: Linter.RuleEntry<[]> - /** - * Pass a context when invoking play function of another story - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/context-in-play-function.md - */ - 'storybook/context-in-play-function'?: Linter.RuleEntry<[]> - /** - * The component property should be set - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/csf-component.md - */ - 'storybook/csf-component'?: Linter.RuleEntry<[]> - /** - * Story files should have a default export - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/default-exports.md - */ - 'storybook/default-exports'?: Linter.RuleEntry<[]> - /** - * Deprecated hierarchy separator in title property - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/hierarchy-separator.md - */ - 'storybook/hierarchy-separator'?: Linter.RuleEntry<[]> - /** - * Meta should only have inline properties - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/meta-inline-properties.md - */ - 'storybook/meta-inline-properties'?: Linter.RuleEntry - /** - * Meta should use `satisfies Meta` - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/meta-satisfies-type.md - */ - 'storybook/meta-satisfies-type'?: Linter.RuleEntry<[]> - /** - * A story should not have a redundant name property - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-redundant-story-name.md - */ - 'storybook/no-redundant-story-name'?: Linter.RuleEntry<[]> - /** - * storiesOf is deprecated and should not be used - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-stories-of.md - */ - 'storybook/no-stories-of'?: Linter.RuleEntry<[]> - /** - * Do not define a title in meta - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-title-property-in-meta.md - */ - 'storybook/no-title-property-in-meta'?: Linter.RuleEntry<[]> - /** - * This rule identifies storybook addons that are invalid because they are either not installed or contain a typo in their name. - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-uninstalled-addons.md - */ - 'storybook/no-uninstalled-addons'?: Linter.RuleEntry - /** - * Stories should use PascalCase - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/prefer-pascal-case.md - */ - 'storybook/prefer-pascal-case'?: Linter.RuleEntry<[]> - /** - * A story file must contain at least one story export - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/story-exports.md - */ - 'storybook/story-exports'?: Linter.RuleEntry<[]> - /** - * Use expect from `@storybook/test`, `storybook/test` or `@storybook/jest` - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/use-storybook-expect.md - */ - 'storybook/use-storybook-expect'?: Linter.RuleEntry<[]> - /** - * Do not use testing-library directly on stories - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/use-storybook-testing-library.md - */ - 'storybook/use-storybook-testing-library'?: Linter.RuleEntry<[]> - /** - * Enforce a consistent and logical order of the Tailwind CSS classnames - * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/classnames-order.md - */ - 'tailwindcss/classnames-order'?: Linter.RuleEntry - /** - * Warns about dash prefixed classnames using arbitrary values - * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/enforces-negative-arbitrary-values.md - */ - 'tailwindcss/enforces-negative-arbitrary-values'?: Linter.RuleEntry - /** - * Enforces the usage of shorthand Tailwind CSS classnames - * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/enforces-shorthand.md - */ - 'tailwindcss/enforces-shorthand'?: Linter.RuleEntry - /** - * Detect obsolete classnames when upgrading to Tailwind CSS v3 - * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/migration-from-tailwind-2.md - */ - 'tailwindcss/migration-from-tailwind-2'?: Linter.RuleEntry - /** - * Forbid using arbitrary values in classnames - * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/no-arbitrary-value.md - */ - 'tailwindcss/no-arbitrary-value'?: Linter.RuleEntry - /** - * Avoid contradicting Tailwind CSS classnames (e.g. "w-3 w-5") - * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/no-contradicting-classname.md - */ - 'tailwindcss/no-contradicting-classname'?: Linter.RuleEntry - /** - * Detect classnames which do not belong to Tailwind CSS - * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/no-custom-classname.md - */ - 'tailwindcss/no-custom-classname'?: Linter.RuleEntry - /** - * Forbid using arbitrary values in classnames when an equivalent preset exists - * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/no-unnecessary-arbitrary-value.md - */ - 'tailwindcss/no-unnecessary-arbitrary-value'?: Linter.RuleEntry - /** - * Enforce promises from async event methods are handled - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/await-async-events.md - */ - 'testing-library/await-async-events'?: Linter.RuleEntry - /** - * Enforce promises from async queries to be handled - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/await-async-queries.md - */ - 'testing-library/await-async-queries'?: Linter.RuleEntry<[]> - /** - * Enforce promises from async utils to be awaited properly - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/await-async-utils.md - */ - 'testing-library/await-async-utils'?: Linter.RuleEntry<[]> - /** - * Ensures consistent usage of `data-testid` - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/consistent-data-testid.md - */ - 'testing-library/consistent-data-testid'?: Linter.RuleEntry - /** - * Disallow unnecessary `await` for sync events - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-await-sync-events.md - */ - 'testing-library/no-await-sync-events'?: Linter.RuleEntry - /** - * Disallow unnecessary `await` for sync queries - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-await-sync-queries.md - */ - 'testing-library/no-await-sync-queries'?: Linter.RuleEntry<[]> - /** - * Disallow the use of `container` methods - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-container.md - */ - 'testing-library/no-container'?: Linter.RuleEntry<[]> - /** - * Disallow the use of debugging utilities like `debug` - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-debugging-utils.md - */ - 'testing-library/no-debugging-utils'?: Linter.RuleEntry - /** - * Disallow importing from DOM Testing Library - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-dom-import.md - */ - 'testing-library/no-dom-import'?: Linter.RuleEntry - /** - * Disallow the use of the global RegExp flag (/g) in queries - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-global-regexp-flag-in-query.md - */ - 'testing-library/no-global-regexp-flag-in-query'?: Linter.RuleEntry<[]> - /** - * Disallow the use of `cleanup` - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-manual-cleanup.md - */ - 'testing-library/no-manual-cleanup'?: Linter.RuleEntry<[]> - /** - * Disallow direct Node access - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-node-access.md - */ - 'testing-library/no-node-access'?: Linter.RuleEntry - /** - * Disallow the use of promises passed to a `fireEvent` method - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-promise-in-fire-event.md - */ - 'testing-library/no-promise-in-fire-event'?: Linter.RuleEntry<[]> - /** - * Disallow the use of `render` in testing frameworks setup functions - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-render-in-lifecycle.md - */ - 'testing-library/no-render-in-lifecycle'?: Linter.RuleEntry - /** - * Ensure no `data-testid` queries are used - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-test-id-queries.md - */ - 'testing-library/no-test-id-queries'?: Linter.RuleEntry<[]> - /** - * Disallow wrapping Testing Library utils or empty callbacks in `act` - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-unnecessary-act.md - */ - 'testing-library/no-unnecessary-act'?: Linter.RuleEntry - /** - * Disallow the use of multiple `expect` calls inside `waitFor` - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-wait-for-multiple-assertions.md - */ - 'testing-library/no-wait-for-multiple-assertions'?: Linter.RuleEntry<[]> - /** - * Disallow the use of side effects in `waitFor` - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-wait-for-side-effects.md - */ - 'testing-library/no-wait-for-side-effects'?: Linter.RuleEntry<[]> - /** - * Ensures no snapshot is generated inside of a `waitFor` call - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-wait-for-snapshot.md - */ - 'testing-library/no-wait-for-snapshot'?: Linter.RuleEntry<[]> - /** - * Suggest using explicit assertions rather than standalone queries - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-explicit-assert.md - */ - 'testing-library/prefer-explicit-assert'?: Linter.RuleEntry - /** - * Suggest using `find(All)By*` query instead of `waitFor` + `get(All)By*` to wait for elements - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-find-by.md - */ - 'testing-library/prefer-find-by'?: Linter.RuleEntry<[]> - /** - * Suggest using implicit assertions for getBy* & findBy* queries - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-implicit-assert.md - */ - 'testing-library/prefer-implicit-assert'?: Linter.RuleEntry<[]> - /** - * Ensure appropriate `get*`/`query*` queries are used with their respective matchers - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-presence-queries.md - */ - 'testing-library/prefer-presence-queries'?: Linter.RuleEntry - /** - * Suggest using `queryBy*` queries when waiting for disappearance - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-query-by-disappearance.md - */ - 'testing-library/prefer-query-by-disappearance'?: Linter.RuleEntry<[]> - /** - * Ensure the configured `get*`/`query*` query is used with the corresponding matchers - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-query-matchers.md - */ - 'testing-library/prefer-query-matchers'?: Linter.RuleEntry - /** - * Suggest using `screen` while querying - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-screen-queries.md - */ - 'testing-library/prefer-screen-queries'?: Linter.RuleEntry<[]> - /** - * Suggest using `userEvent` over `fireEvent` for simulating user interactions - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-user-event.md - */ - 'testing-library/prefer-user-event'?: Linter.RuleEntry - /** - * Enforce a valid naming for return value from `render` - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/render-result-naming-convention.md - */ - 'testing-library/render-result-naming-convention'?: Linter.RuleEntry<[]> - /** - * enforce linebreaks after opening and before closing array brackets - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/array-bracket-newline.html - */ - 'toml/array-bracket-newline'?: Linter.RuleEntry - /** - * enforce consistent spacing inside array brackets - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/array-bracket-spacing.html - */ - 'toml/array-bracket-spacing'?: Linter.RuleEntry - /** - * enforce line breaks between array elements - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/array-element-newline.html - */ - 'toml/array-element-newline'?: Linter.RuleEntry - /** - * enforce consistent comma style in array - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/comma-style.html - */ - 'toml/comma-style'?: Linter.RuleEntry - /** - * enforce consistent indentation - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/indent.html - */ - 'toml/indent'?: Linter.RuleEntry - /** - * enforce consistent spacing inside braces - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/inline-table-curly-spacing.html - */ - 'toml/inline-table-curly-spacing'?: Linter.RuleEntry - /** - * enforce consistent spacing between keys and values in key/value pairs - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/key-spacing.html - */ - 'toml/key-spacing'?: Linter.RuleEntry - /** - * disallow defining pair keys out-of-order - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/keys-order.html - */ - 'toml/keys-order'?: Linter.RuleEntry<[]> - /** - * disallow mixed data types in array - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/no-mixed-type-in-array.html - */ - 'toml/no-mixed-type-in-array'?: Linter.RuleEntry - /** - * disallow hexadecimal, octal and binary integer - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/no-non-decimal-integer.html - */ - 'toml/no-non-decimal-integer'?: Linter.RuleEntry - /** - * disallow spacing around infix operators - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/no-space-dots.html - */ - 'toml/no-space-dots'?: Linter.RuleEntry<[]> - /** - * disallow number separators that to not enhance readability. - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/no-unreadable-number-separator.html - */ - 'toml/no-unreadable-number-separator'?: Linter.RuleEntry<[]> - /** - * require or disallow padding lines between pairs - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/padding-line-between-pairs.html - */ - 'toml/padding-line-between-pairs'?: Linter.RuleEntry<[]> - /** - * require or disallow padding lines between tables - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/padding-line-between-tables.html - */ - 'toml/padding-line-between-tables'?: Linter.RuleEntry<[]> - /** - * disallow precision of fractional seconds greater than the specified value. - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/precision-of-fractional-seconds.html - */ - 'toml/precision-of-fractional-seconds'?: Linter.RuleEntry - /** - * disallow precision of integer greater than the specified value. - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/precision-of-integer.html - */ - 'toml/precision-of-integer'?: Linter.RuleEntry - /** - * require or disallow quotes around keys - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/quoted-keys.html - */ - 'toml/quoted-keys'?: Linter.RuleEntry - /** - * require spacing around equals sign - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/space-eq-sign.html - * @deprecated - */ - 'toml/space-eq-sign'?: Linter.RuleEntry<[]> - /** - * enforce consistent spacing after the `#` in a comment - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/spaced-comment.html - */ - 'toml/spaced-comment'?: Linter.RuleEntry - /** - * enforce consistent spacing inside table brackets - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/table-bracket-spacing.html - */ - 'toml/table-bracket-spacing'?: Linter.RuleEntry - /** - * disallow defining tables out-of-order - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/tables-order.html - */ - 'toml/tables-order'?: Linter.RuleEntry<[]> - /** - * disallow parsing errors in Vue custom blocks - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/vue-custom-block/no-parsing-error.html - */ - 'toml/vue-custom-block/no-parsing-error'?: Linter.RuleEntry<[]> - /** - * Validates that TypeScript documentation comments conform to the TSDoc standard - * @see https://tsdoc.org/pages/packages/eslint-plugin-tsdoc - */ - 'tsdoc/syntax'?: Linter.RuleEntry<[]> - /** - * Improve regexes by making them shorter, consistent, and safer. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/better-regex.md - */ - 'unicorn/better-regex'?: Linter.RuleEntry - /** - * Enforce a specific parameter name in catch clauses. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/catch-error-name.md - */ - 'unicorn/catch-error-name'?: Linter.RuleEntry - /** - * Enforce consistent assertion style with `node:assert`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/consistent-assert.md - */ - 'unicorn/consistent-assert'?: Linter.RuleEntry<[]> - /** - * Prefer passing `Date` directly to the constructor when cloning. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/consistent-date-clone.md - */ - 'unicorn/consistent-date-clone'?: Linter.RuleEntry<[]> - /** - * Use destructured variables over properties. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/consistent-destructuring.md - */ - 'unicorn/consistent-destructuring'?: Linter.RuleEntry<[]> - /** - * Prefer consistent types when spreading a ternary in an array literal. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/consistent-empty-array-spread.md - */ - 'unicorn/consistent-empty-array-spread'?: Linter.RuleEntry<[]> - /** - * Enforce consistent style for element existence checks with `indexOf()`, `lastIndexOf()`, `findIndex()`, and `findLastIndex()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/consistent-existence-index-check.md - */ - 'unicorn/consistent-existence-index-check'?: Linter.RuleEntry<[]> - /** - * Move function definitions to the highest possible scope. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/consistent-function-scoping.md - */ - 'unicorn/consistent-function-scoping'?: Linter.RuleEntry - /** - * Enforce correct `Error` subclassing. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/custom-error-definition.md - */ - 'unicorn/custom-error-definition'?: Linter.RuleEntry<[]> - /** - * Enforce no spaces between braces. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/empty-brace-spaces.md - */ - 'unicorn/empty-brace-spaces'?: Linter.RuleEntry<[]> - /** - * Enforce passing a `message` value when creating a built-in error. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/error-message.md - */ - 'unicorn/error-message'?: Linter.RuleEntry<[]> - /** - * Require escape sequences to use uppercase or lowercase values. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/escape-case.md - */ - 'unicorn/escape-case'?: Linter.RuleEntry - /** - * Add expiration conditions to TODO comments. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/expiring-todo-comments.md - */ - 'unicorn/expiring-todo-comments'?: Linter.RuleEntry - /** - * Enforce explicitly comparing the `length` or `size` property of a value. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/explicit-length-check.md - */ - 'unicorn/explicit-length-check'?: Linter.RuleEntry - /** - * Enforce a case style for filenames. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/filename-case.md - */ - 'unicorn/filename-case'?: Linter.RuleEntry - /** - * Enforce specific import styles per module. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/import-style.md - */ - 'unicorn/import-style'?: Linter.RuleEntry - /** - * Enforce the use of `new` for all builtins, except `String`, `Number`, `Boolean`, `Symbol` and `BigInt`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/new-for-builtins.md - */ - 'unicorn/new-for-builtins'?: Linter.RuleEntry<[]> - /** - * Enforce specifying rules to disable in `eslint-disable` comments. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-abusive-eslint-disable.md - */ - 'unicorn/no-abusive-eslint-disable'?: Linter.RuleEntry<[]> - /** - * Disallow recursive access to `this` within getters and setters. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-accessor-recursion.md - */ - 'unicorn/no-accessor-recursion'?: Linter.RuleEntry<[]> - /** - * Disallow anonymous functions and classes as the default export. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-anonymous-default-export.md - */ - 'unicorn/no-anonymous-default-export'?: Linter.RuleEntry<[]> - /** - * Prevent passing a function reference directly to iterator methods. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-array-callback-reference.md - */ - 'unicorn/no-array-callback-reference'?: Linter.RuleEntry<[]> - /** - * Prefer `for…of` over the `forEach` method. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-array-for-each.md - */ - 'unicorn/no-array-for-each'?: Linter.RuleEntry<[]> - /** - * Disallow using the `this` argument in array methods. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-array-method-this-argument.md - */ - 'unicorn/no-array-method-this-argument'?: Linter.RuleEntry<[]> - /** - * Replaced by `unicorn/prefer-single-call` which covers more cases. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/deprecated-rules.md#no-array-push-push - * @deprecated - */ - 'unicorn/no-array-push-push'?: Linter.RuleEntry<[]> - /** - * Disallow `Array#reduce()` and `Array#reduceRight()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-array-reduce.md - */ - 'unicorn/no-array-reduce'?: Linter.RuleEntry - /** - * Disallow member access from await expression. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-await-expression-member.md - */ - 'unicorn/no-await-expression-member'?: Linter.RuleEntry<[]> - /** - * Disallow using `await` in `Promise` method parameters. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-await-in-promise-methods.md - */ - 'unicorn/no-await-in-promise-methods'?: Linter.RuleEntry<[]> - /** - * Do not use leading/trailing space between `console.log` parameters. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-console-spaces.md - */ - 'unicorn/no-console-spaces'?: Linter.RuleEntry<[]> - /** - * Do not use `document.cookie` directly. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-document-cookie.md - */ - 'unicorn/no-document-cookie'?: Linter.RuleEntry<[]> - /** - * Disallow empty files. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-empty-file.md - */ - 'unicorn/no-empty-file'?: Linter.RuleEntry<[]> - /** - * Do not use a `for` loop that can be replaced with a `for-of` loop. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-for-loop.md - */ - 'unicorn/no-for-loop'?: Linter.RuleEntry<[]> - /** - * Enforce the use of Unicode escapes instead of hexadecimal escapes. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-hex-escape.md - */ - 'unicorn/no-hex-escape'?: Linter.RuleEntry<[]> - /** - * Replaced by `unicorn/no-instanceof-builtins` which covers more cases. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/deprecated-rules.md#no-instanceof-array - * @deprecated - */ - 'unicorn/no-instanceof-array'?: Linter.RuleEntry<[]> - /** - * Disallow `instanceof` with built-in objects - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-instanceof-builtins.md - */ - 'unicorn/no-instanceof-builtins'?: Linter.RuleEntry - /** - * Disallow invalid options in `fetch()` and `new Request()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-invalid-fetch-options.md - */ - 'unicorn/no-invalid-fetch-options'?: Linter.RuleEntry<[]> - /** - * Prevent calling `EventTarget#removeEventListener()` with the result of an expression. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-invalid-remove-event-listener.md - */ - 'unicorn/no-invalid-remove-event-listener'?: Linter.RuleEntry<[]> - /** - * Disallow identifiers starting with `new` or `class`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-keyword-prefix.md - */ - 'unicorn/no-keyword-prefix'?: Linter.RuleEntry - /** - * Replaced by `unicorn/no-unnecessary-slice-end` which covers more cases. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/deprecated-rules.md#no-length-as-slice-end - * @deprecated - */ - 'unicorn/no-length-as-slice-end'?: Linter.RuleEntry<[]> - /** - * Disallow `if` statements as the only statement in `if` blocks without `else`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-lonely-if.md - */ - 'unicorn/no-lonely-if'?: Linter.RuleEntry<[]> - /** - * Disallow a magic number as the `depth` argument in `Array#flat(…).` - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-magic-array-flat-depth.md - */ - 'unicorn/no-magic-array-flat-depth'?: Linter.RuleEntry<[]> - /** - * Disallow named usage of default import and export. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-named-default.md - */ - 'unicorn/no-named-default'?: Linter.RuleEntry<[]> - /** - * Disallow negated conditions. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-negated-condition.md - */ - 'unicorn/no-negated-condition'?: Linter.RuleEntry<[]> - /** - * Disallow negated expression in equality check. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-negation-in-equality-check.md - */ - 'unicorn/no-negation-in-equality-check'?: Linter.RuleEntry<[]> - /** - * Disallow nested ternary expressions. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-nested-ternary.md - */ - 'unicorn/no-nested-ternary'?: Linter.RuleEntry<[]> - /** - * Disallow `new Array()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-new-array.md - */ - 'unicorn/no-new-array'?: Linter.RuleEntry<[]> - /** - * Enforce the use of `Buffer.from()` and `Buffer.alloc()` instead of the deprecated `new Buffer()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-new-buffer.md - */ - 'unicorn/no-new-buffer'?: Linter.RuleEntry<[]> - /** - * Disallow the use of the `null` literal. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-null.md - */ - 'unicorn/no-null'?: Linter.RuleEntry - /** - * Disallow the use of objects as default parameters. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-object-as-default-parameter.md - */ - 'unicorn/no-object-as-default-parameter'?: Linter.RuleEntry<[]> - /** - * Disallow `process.exit()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-process-exit.md - */ - 'unicorn/no-process-exit'?: Linter.RuleEntry<[]> - /** - * Disallow passing single-element arrays to `Promise` methods. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-single-promise-in-promise-methods.md - */ - 'unicorn/no-single-promise-in-promise-methods'?: Linter.RuleEntry<[]> - /** - * Disallow classes that only have static members. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-static-only-class.md - */ - 'unicorn/no-static-only-class'?: Linter.RuleEntry<[]> - /** - * Disallow `then` property. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-thenable.md - */ - 'unicorn/no-thenable'?: Linter.RuleEntry<[]> - /** - * Disallow assigning `this` to a variable. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-this-assignment.md - */ - 'unicorn/no-this-assignment'?: Linter.RuleEntry<[]> - /** - * Disallow comparing `undefined` using `typeof`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-typeof-undefined.md - */ - 'unicorn/no-typeof-undefined'?: Linter.RuleEntry - /** - * Disallow using `1` as the `depth` argument of `Array#flat()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unnecessary-array-flat-depth.md - */ - 'unicorn/no-unnecessary-array-flat-depth'?: Linter.RuleEntry<[]> - /** - * Disallow using `.length` or `Infinity` as the `deleteCount` or `skipCount` argument of `Array#{splice,toSpliced}()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unnecessary-array-splice-count.md - */ - 'unicorn/no-unnecessary-array-splice-count'?: Linter.RuleEntry<[]> - /** - * Disallow awaiting non-promise values. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unnecessary-await.md - */ - 'unicorn/no-unnecessary-await'?: Linter.RuleEntry<[]> - /** - * Enforce the use of built-in methods instead of unnecessary polyfills. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unnecessary-polyfills.md - */ - 'unicorn/no-unnecessary-polyfills'?: Linter.RuleEntry - /** - * Disallow using `.length` or `Infinity` as the `end` argument of `{Array,String,TypedArray}#slice()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unnecessary-slice-end.md - */ - 'unicorn/no-unnecessary-slice-end'?: Linter.RuleEntry<[]> - /** - * Disallow unreadable array destructuring. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unreadable-array-destructuring.md - */ - 'unicorn/no-unreadable-array-destructuring'?: Linter.RuleEntry<[]> - /** - * Disallow unreadable IIFEs. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unreadable-iife.md - */ - 'unicorn/no-unreadable-iife'?: Linter.RuleEntry<[]> - /** - * Disallow unused object properties. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unused-properties.md - */ - 'unicorn/no-unused-properties'?: Linter.RuleEntry<[]> - /** - * Disallow useless fallback when spreading in object literals. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-useless-fallback-in-spread.md - */ - 'unicorn/no-useless-fallback-in-spread'?: Linter.RuleEntry<[]> - /** - * Disallow useless array length check. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-useless-length-check.md - */ - 'unicorn/no-useless-length-check'?: Linter.RuleEntry<[]> - /** - * Disallow returning/yielding `Promise.resolve/reject()` in async functions or promise callbacks - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-useless-promise-resolve-reject.md - */ - 'unicorn/no-useless-promise-resolve-reject'?: Linter.RuleEntry<[]> - /** - * Disallow unnecessary spread. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-useless-spread.md - */ - 'unicorn/no-useless-spread'?: Linter.RuleEntry<[]> - /** - * Disallow useless case in switch statements. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-useless-switch-case.md - */ - 'unicorn/no-useless-switch-case'?: Linter.RuleEntry<[]> - /** - * Disallow useless `undefined`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-useless-undefined.md - */ - 'unicorn/no-useless-undefined'?: Linter.RuleEntry - /** - * Disallow number literals with zero fractions or dangling dots. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-zero-fractions.md - */ - 'unicorn/no-zero-fractions'?: Linter.RuleEntry<[]> - /** - * Enforce proper case for numeric literals. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/number-literal-case.md - */ - 'unicorn/number-literal-case'?: Linter.RuleEntry - /** - * Enforce the style of numeric separators by correctly grouping digits. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/numeric-separators-style.md - */ - 'unicorn/numeric-separators-style'?: Linter.RuleEntry - /** - * Prefer `.addEventListener()` and `.removeEventListener()` over `on`-functions. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-add-event-listener.md - */ - 'unicorn/prefer-add-event-listener'?: Linter.RuleEntry - /** - * Prefer `.find(…)` and `.findLast(…)` over the first or last element from `.filter(…)`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-array-find.md - */ - 'unicorn/prefer-array-find'?: Linter.RuleEntry - /** - * Prefer `Array#flat()` over legacy techniques to flatten arrays. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-array-flat.md - */ - 'unicorn/prefer-array-flat'?: Linter.RuleEntry - /** - * Prefer `.flatMap(…)` over `.map(…).flat()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-array-flat-map.md - */ - 'unicorn/prefer-array-flat-map'?: Linter.RuleEntry<[]> - /** - * Prefer `Array#{indexOf,lastIndexOf}()` over `Array#{findIndex,findLastIndex}()` when looking for the index of an item. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-array-index-of.md - */ - 'unicorn/prefer-array-index-of'?: Linter.RuleEntry<[]> - /** - * Prefer `.some(…)` over `.filter(…).length` check and `.{find,findLast,findIndex,findLastIndex}(…)`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-array-some.md - */ - 'unicorn/prefer-array-some'?: Linter.RuleEntry<[]> - /** - * Prefer `.at()` method for index access and `String#charAt()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-at.md - */ - 'unicorn/prefer-at'?: Linter.RuleEntry - /** - * Prefer `Blob#arrayBuffer()` over `FileReader#readAsArrayBuffer(…)` and `Blob#text()` over `FileReader#readAsText(…)`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-blob-reading-methods.md - */ - 'unicorn/prefer-blob-reading-methods'?: Linter.RuleEntry<[]> - /** - * Prefer `String#codePointAt(…)` over `String#charCodeAt(…)` and `String.fromCodePoint(…)` over `String.fromCharCode(…)`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-code-point.md - */ - 'unicorn/prefer-code-point'?: Linter.RuleEntry<[]> - /** - * Prefer `Date.now()` to get the number of milliseconds since the Unix Epoch. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-date-now.md - */ - 'unicorn/prefer-date-now'?: Linter.RuleEntry<[]> - /** - * Prefer default parameters over reassignment. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-default-parameters.md - */ - 'unicorn/prefer-default-parameters'?: Linter.RuleEntry<[]> - /** - * Prefer `Node#append()` over `Node#appendChild()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-dom-node-append.md - */ - 'unicorn/prefer-dom-node-append'?: Linter.RuleEntry<[]> - /** - * Prefer using `.dataset` on DOM elements over calling attribute methods. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-dom-node-dataset.md - */ - 'unicorn/prefer-dom-node-dataset'?: Linter.RuleEntry<[]> - /** - * Prefer `childNode.remove()` over `parentNode.removeChild(childNode)`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-dom-node-remove.md - */ - 'unicorn/prefer-dom-node-remove'?: Linter.RuleEntry<[]> - /** - * Prefer `.textContent` over `.innerText`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-dom-node-text-content.md - */ - 'unicorn/prefer-dom-node-text-content'?: Linter.RuleEntry<[]> - /** - * Prefer `EventTarget` over `EventEmitter`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-event-target.md - */ - 'unicorn/prefer-event-target'?: Linter.RuleEntry<[]> - /** - * Prefer `export…from` when re-exporting. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-export-from.md - */ - 'unicorn/prefer-export-from'?: Linter.RuleEntry - /** - * Prefer `globalThis` over `window`, `self`, and `global`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-global-this.md - */ - 'unicorn/prefer-global-this'?: Linter.RuleEntry<[]> - /** - * Prefer `import.meta.{dirname,filename}` over legacy techniques for getting file paths. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-import-meta-properties.md - */ - 'unicorn/prefer-import-meta-properties'?: Linter.RuleEntry<[]> - /** - * Prefer `.includes()` over `.indexOf()`, `.lastIndexOf()`, and `Array#some()` when checking for existence or non-existence. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-includes.md - */ - 'unicorn/prefer-includes'?: Linter.RuleEntry<[]> - /** - * Prefer reading a JSON file as a buffer. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-json-parse-buffer.md - */ - 'unicorn/prefer-json-parse-buffer'?: Linter.RuleEntry<[]> - /** - * Prefer `KeyboardEvent#key` over `KeyboardEvent#keyCode`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-keyboard-event-key.md - */ - 'unicorn/prefer-keyboard-event-key'?: Linter.RuleEntry<[]> - /** - * Prefer using a logical operator over a ternary. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-logical-operator-over-ternary.md - */ - 'unicorn/prefer-logical-operator-over-ternary'?: Linter.RuleEntry<[]> - /** - * Prefer `Math.min()` and `Math.max()` over ternaries for simple comparisons. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-math-min-max.md - */ - 'unicorn/prefer-math-min-max'?: Linter.RuleEntry<[]> - /** - * Enforce the use of `Math.trunc` instead of bitwise operators. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-math-trunc.md - */ - 'unicorn/prefer-math-trunc'?: Linter.RuleEntry<[]> - /** - * Prefer `.before()` over `.insertBefore()`, `.replaceWith()` over `.replaceChild()`, prefer one of `.before()`, `.after()`, `.append()` or `.prepend()` over `insertAdjacentText()` and `insertAdjacentElement()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-modern-dom-apis.md - */ - 'unicorn/prefer-modern-dom-apis'?: Linter.RuleEntry<[]> - /** - * Prefer modern `Math` APIs over legacy patterns. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-modern-math-apis.md - */ - 'unicorn/prefer-modern-math-apis'?: Linter.RuleEntry<[]> - /** - * Prefer JavaScript modules (ESM) over CommonJS. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-module.md - */ - 'unicorn/prefer-module'?: Linter.RuleEntry<[]> - /** - * Prefer using `String`, `Number`, `BigInt`, `Boolean`, and `Symbol` directly. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-native-coercion-functions.md - */ - 'unicorn/prefer-native-coercion-functions'?: Linter.RuleEntry<[]> - /** - * Prefer negative index over `.length - index` when possible. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-negative-index.md - */ - 'unicorn/prefer-negative-index'?: Linter.RuleEntry<[]> - /** - * Prefer using the `node:` protocol when importing Node.js builtin modules. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-node-protocol.md - */ - 'unicorn/prefer-node-protocol'?: Linter.RuleEntry<[]> - /** - * Prefer `Number` static properties over global ones. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-number-properties.md - */ - 'unicorn/prefer-number-properties'?: Linter.RuleEntry - /** - * Prefer using `Object.fromEntries(…)` to transform a list of key-value pairs into an object. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-object-from-entries.md - */ - 'unicorn/prefer-object-from-entries'?: Linter.RuleEntry - /** - * Prefer omitting the `catch` binding parameter. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-optional-catch-binding.md - */ - 'unicorn/prefer-optional-catch-binding'?: Linter.RuleEntry<[]> - /** - * Prefer borrowing methods from the prototype instead of the instance. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-prototype-methods.md - */ - 'unicorn/prefer-prototype-methods'?: Linter.RuleEntry<[]> - /** - * Prefer `.querySelector()` over `.getElementById()`, `.querySelectorAll()` over `.getElementsByClassName()` and `.getElementsByTagName()` and `.getElementsByName()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-query-selector.md - */ - 'unicorn/prefer-query-selector'?: Linter.RuleEntry<[]> - /** - * Prefer `Reflect.apply()` over `Function#apply()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-reflect-apply.md - */ - 'unicorn/prefer-reflect-apply'?: Linter.RuleEntry<[]> - /** - * Prefer `RegExp#test()` over `String#match()` and `RegExp#exec()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-regexp-test.md - */ - 'unicorn/prefer-regexp-test'?: Linter.RuleEntry<[]> - /** - * Prefer `Set#has()` over `Array#includes()` when checking for existence or non-existence. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-set-has.md - */ - 'unicorn/prefer-set-has'?: Linter.RuleEntry<[]> - /** - * Prefer using `Set#size` instead of `Array#length`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-set-size.md - */ - 'unicorn/prefer-set-size'?: Linter.RuleEntry<[]> - /** - * Enforce combining multiple `Array#push()`, `Element#classList.{add,remove}()`, and `importScripts()` into one call. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-single-call.md - */ - 'unicorn/prefer-single-call'?: Linter.RuleEntry - /** - * Prefer the spread operator over `Array.from(…)`, `Array#concat(…)`, `Array#{slice,toSpliced}()` and `String#split('')`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-spread.md - */ - 'unicorn/prefer-spread'?: Linter.RuleEntry<[]> - /** - * Prefer using the `String.raw` tag to avoid escaping `\`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-string-raw.md - */ - 'unicorn/prefer-string-raw'?: Linter.RuleEntry<[]> - /** - * Prefer `String#replaceAll()` over regex searches with the global flag. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-string-replace-all.md - */ - 'unicorn/prefer-string-replace-all'?: Linter.RuleEntry<[]> - /** - * Prefer `String#slice()` over `String#substr()` and `String#substring()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-string-slice.md - */ - 'unicorn/prefer-string-slice'?: Linter.RuleEntry<[]> - /** - * Prefer `String#startsWith()` & `String#endsWith()` over `RegExp#test()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-string-starts-ends-with.md - */ - 'unicorn/prefer-string-starts-ends-with'?: Linter.RuleEntry<[]> - /** - * Prefer `String#trimStart()` / `String#trimEnd()` over `String#trimLeft()` / `String#trimRight()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-string-trim-start-end.md - */ - 'unicorn/prefer-string-trim-start-end'?: Linter.RuleEntry<[]> - /** - * Prefer using `structuredClone` to create a deep clone. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-structured-clone.md - */ - 'unicorn/prefer-structured-clone'?: Linter.RuleEntry - /** - * Prefer `switch` over multiple `else-if`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-switch.md - */ - 'unicorn/prefer-switch'?: Linter.RuleEntry - /** - * Prefer ternary expressions over simple `if-else` statements. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-ternary.md - */ - 'unicorn/prefer-ternary'?: Linter.RuleEntry - /** - * Prefer top-level await over top-level promises and async function calls. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-top-level-await.md - */ - 'unicorn/prefer-top-level-await'?: Linter.RuleEntry<[]> - /** - * Enforce throwing `TypeError` in type checking conditions. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-type-error.md - */ - 'unicorn/prefer-type-error'?: Linter.RuleEntry<[]> - /** - * Prevent abbreviations. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prevent-abbreviations.md - */ - 'unicorn/prevent-abbreviations'?: Linter.RuleEntry - /** - * Enforce consistent relative URL style. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/relative-url-style.md - */ - 'unicorn/relative-url-style'?: Linter.RuleEntry - /** - * Enforce using the separator argument with `Array#join()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/require-array-join-separator.md - */ - 'unicorn/require-array-join-separator'?: Linter.RuleEntry<[]> - /** - * Enforce using the digits argument with `Number#toFixed()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/require-number-to-fixed-digits-argument.md - */ - 'unicorn/require-number-to-fixed-digits-argument'?: Linter.RuleEntry<[]> - /** - * Enforce using the `targetOrigin` argument with `window.postMessage()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/require-post-message-target-origin.md - */ - 'unicorn/require-post-message-target-origin'?: Linter.RuleEntry<[]> - /** - * Enforce better string content. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/string-content.md - */ - 'unicorn/string-content'?: Linter.RuleEntry - /** - * Enforce consistent brace style for `case` clauses. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/switch-case-braces.md - */ - 'unicorn/switch-case-braces'?: Linter.RuleEntry - /** - * Fix whitespace-insensitive template indentation. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/template-indent.md - */ - 'unicorn/template-indent'?: Linter.RuleEntry - /** - * Enforce consistent case for text encoding identifiers. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/text-encoding-identifier-case.md - */ - 'unicorn/text-encoding-identifier-case'?: Linter.RuleEntry<[]> - /** - * Require `new` when creating an error. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/throw-new-error.md - */ - 'unicorn/throw-new-error'?: Linter.RuleEntry<[]> - /** - * Utilities in UnoCSS blocklist - * @see https://unocss.dev/integrations/eslint#rules - */ - 'unocss/blocklist'?: Linter.RuleEntry<[]> - /** - * Enforce class compilation - * @see https://unocss.dev/integrations/eslint#rules - */ - 'unocss/enforce-class-compile'?: Linter.RuleEntry - /** - * Order of UnoCSS utilities in class attribute - * @see https://unocss.dev/integrations/eslint#rules - */ - 'unocss/order'?: Linter.RuleEntry<[]> - /** - * Order of UnoCSS attributes - * @see https://unocss.dev/integrations/eslint#rules - */ - 'unocss/order-attributify'?: Linter.RuleEntry<[]> - 'validate-jsx-nesting/no-invalid-jsx-nesting'?: Linter.RuleEntry<[]> - /** - * require .spec test file pattern - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/consistent-test-filename.md - */ - 'vitest/consistent-test-filename'?: Linter.RuleEntry - /** - * enforce using test or it but not both - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/consistent-test-it.md - */ - 'vitest/consistent-test-it'?: Linter.RuleEntry - /** - * enforce having expectation in test body - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/expect-expect.md - */ - 'vitest/expect-expect'?: Linter.RuleEntry - /** - * enforce a maximum number of expect per test - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/max-expects.md - */ - 'vitest/max-expects'?: Linter.RuleEntry - /** - * require describe block to be less than set max value or default value - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/max-nested-describe.md - */ - 'vitest/max-nested-describe'?: Linter.RuleEntry - /** - * disallow alias methods - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-alias-methods.md - */ - 'vitest/no-alias-methods'?: Linter.RuleEntry<[]> - /** - * disallow commented out tests - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-commented-out-tests.md - */ - 'vitest/no-commented-out-tests'?: Linter.RuleEntry<[]> - /** - * disallow conditional expects - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-expect.md - */ - 'vitest/no-conditional-expect'?: Linter.RuleEntry<[]> - /** - * disallow conditional tests - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-in-test.md - */ - 'vitest/no-conditional-in-test'?: Linter.RuleEntry<[]> - /** - * disallow conditional tests - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-tests.md - */ - 'vitest/no-conditional-tests'?: Linter.RuleEntry<[]> - /** - * disallow disabled tests - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-disabled-tests.md - */ - 'vitest/no-disabled-tests'?: Linter.RuleEntry<[]> - /** - * disallow using a callback in asynchronous tests and hooks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-done-callback.md - * @deprecated - */ - 'vitest/no-done-callback'?: Linter.RuleEntry<[]> - /** - * disallow duplicate hooks and teardown hooks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-duplicate-hooks.md - */ - 'vitest/no-duplicate-hooks'?: Linter.RuleEntry<[]> - /** - * disallow focused tests - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-focused-tests.md - */ - 'vitest/no-focused-tests'?: Linter.RuleEntry - /** - * disallow setup and teardown hooks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-hooks.md - */ - 'vitest/no-hooks'?: Linter.RuleEntry - /** - * disallow identical titles - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-identical-title.md - */ - 'vitest/no-identical-title'?: Linter.RuleEntry<[]> - /** - * disallow importing `node:test` - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-import-node-test.md - */ - 'vitest/no-import-node-test'?: Linter.RuleEntry<[]> - /** - * disallow string interpolation in snapshots - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-interpolation-in-snapshots.md - */ - 'vitest/no-interpolation-in-snapshots'?: Linter.RuleEntry<[]> - /** - * disallow large snapshots - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-large-snapshots.md - */ - 'vitest/no-large-snapshots'?: Linter.RuleEntry - /** - * disallow importing from __mocks__ directory - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-mocks-import.md - */ - 'vitest/no-mocks-import'?: Linter.RuleEntry<[]> - /** - * disallow .only blocks in tests - * @see https://github.com/levibuzolic/eslint-plugin-no-only-tests - */ - 'vitest/no-only-tests'?: Linter.RuleEntry - /** - * disallow the use of certain matchers - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-restricted-matchers.md - */ - 'vitest/no-restricted-matchers'?: Linter.RuleEntry - /** - * disallow specific `vi.` methods - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-restricted-vi-methods.md - */ - 'vitest/no-restricted-vi-methods'?: Linter.RuleEntry - /** - * disallow using `expect` outside of `it` or `test` blocks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-standalone-expect.md - */ - 'vitest/no-standalone-expect'?: Linter.RuleEntry - /** - * Disallow using the `f` and `x` prefixes in favour of `.only` and `.skip` - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-test-prefixes.md - */ - 'vitest/no-test-prefixes'?: Linter.RuleEntry<[]> - /** - * disallow return statements in tests - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-test-return-statement.md - */ - 'vitest/no-test-return-statement'?: Linter.RuleEntry<[]> - /** - * Enforce padding around `afterAll` blocks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-after-all-blocks.md - */ - 'vitest/padding-around-after-all-blocks'?: Linter.RuleEntry<[]> - /** - * Enforce padding around `afterEach` blocks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-after-each-blocks.md - */ - 'vitest/padding-around-after-each-blocks'?: Linter.RuleEntry<[]> - /** - * Enforce padding around vitest functions - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-all.md - */ - 'vitest/padding-around-all'?: Linter.RuleEntry<[]> - /** - * Enforce padding around `beforeAll` blocks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-before-all-blocks.md - */ - 'vitest/padding-around-before-all-blocks'?: Linter.RuleEntry<[]> - /** - * Enforce padding around `beforeEach` blocks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-before-each-blocks.md - */ - 'vitest/padding-around-before-each-blocks'?: Linter.RuleEntry<[]> - /** - * Enforce padding around `describe` blocks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-describe-blocks.md - */ - 'vitest/padding-around-describe-blocks'?: Linter.RuleEntry<[]> - /** - * Enforce padding around `expect` groups - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-expect-groups.md - */ - 'vitest/padding-around-expect-groups'?: Linter.RuleEntry<[]> - /** - * Enforce padding around `test` blocks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-test-blocks.md - */ - 'vitest/padding-around-test-blocks'?: Linter.RuleEntry<[]> - /** - * enforce using `toBeCalledWith()` or `toHaveBeenCalledWith()` - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-called-with.md - */ - 'vitest/prefer-called-with'?: Linter.RuleEntry<[]> - /** - * enforce using the built-in comparison matchers - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-comparison-matcher.md - */ - 'vitest/prefer-comparison-matcher'?: Linter.RuleEntry<[]> - /** - * enforce using a function as a describe title over an equivalent string - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-describe-function-title.md - */ - 'vitest/prefer-describe-function-title'?: Linter.RuleEntry<[]> - /** - * enforce using `each` rather than manual loops - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-each.md - */ - 'vitest/prefer-each'?: Linter.RuleEntry<[]> - /** - * enforce using the built-in quality matchers - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-equality-matcher.md - */ - 'vitest/prefer-equality-matcher'?: Linter.RuleEntry<[]> - /** - * enforce using expect assertions instead of callbacks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-expect-assertions.md - */ - 'vitest/prefer-expect-assertions'?: Linter.RuleEntry - /** - * enforce using `expect().resolves` over `expect(await ...)` syntax - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-expect-resolves.md - */ - 'vitest/prefer-expect-resolves'?: Linter.RuleEntry<[]> - /** - * enforce having hooks in consistent order - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-hooks-in-order.md - */ - 'vitest/prefer-hooks-in-order'?: Linter.RuleEntry<[]> - /** - * enforce having hooks before any test cases - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-hooks-on-top.md - */ - 'vitest/prefer-hooks-on-top'?: Linter.RuleEntry<[]> - /** - * enforce lowercase titles - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-lowercase-title.md - */ - 'vitest/prefer-lowercase-title'?: Linter.RuleEntry - /** - * enforce mock resolved/rejected shorthands for promises - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-mock-promise-shorthand.md - */ - 'vitest/prefer-mock-promise-shorthand'?: Linter.RuleEntry<[]> - /** - * enforce including a hint with external snapshots - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-snapshot-hint.md - */ - 'vitest/prefer-snapshot-hint'?: Linter.RuleEntry - /** - * enforce using `vi.spyOn` - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-spy-on.md - */ - 'vitest/prefer-spy-on'?: Linter.RuleEntry<[]> - /** - * enforce using `toBe(true)` and `toBe(false)` over matchers that coerce types to boolean - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-strict-boolean-matchers.md - */ - 'vitest/prefer-strict-boolean-matchers'?: Linter.RuleEntry<[]> - /** - * enforce strict equal over equal - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-strict-equal.md - */ - 'vitest/prefer-strict-equal'?: Linter.RuleEntry<[]> - /** - * enforce using toBe() - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be.md - */ - 'vitest/prefer-to-be'?: Linter.RuleEntry<[]> - /** - * enforce using toBeFalsy() - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-falsy.md - */ - 'vitest/prefer-to-be-falsy'?: Linter.RuleEntry<[]> - /** - * enforce using toBeObject() - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-object.md - */ - 'vitest/prefer-to-be-object'?: Linter.RuleEntry<[]> - /** - * enforce using `toBeTruthy` - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-truthy.md - */ - 'vitest/prefer-to-be-truthy'?: Linter.RuleEntry<[]> - /** - * enforce using toContain() - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-contain.md - */ - 'vitest/prefer-to-contain'?: Linter.RuleEntry<[]> - /** - * enforce using toHaveLength() - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-have-length.md - */ - 'vitest/prefer-to-have-length'?: Linter.RuleEntry<[]> - /** - * enforce using `test.todo` - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-todo.md - */ - 'vitest/prefer-todo'?: Linter.RuleEntry<[]> - /** - * require `vi.mocked()` over `fn as Mock` - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-vi-mocked.md - */ - 'vitest/prefer-vi-mocked'?: Linter.RuleEntry<[]> - /** - * require setup and teardown to be within a hook - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-hook.md - */ - 'vitest/require-hook'?: Linter.RuleEntry - /** - * require local Test Context for concurrent snapshot tests - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-local-test-context-for-concurrent-snapshots.md - */ - 'vitest/require-local-test-context-for-concurrent-snapshots'?: Linter.RuleEntry<[]> - /** - * enforce using type parameters with vitest mock functions - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-mock-type-parameters.md - */ - 'vitest/require-mock-type-parameters'?: Linter.RuleEntry - /** - * require toThrow() to be called with an error message - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-to-throw-message.md - */ - 'vitest/require-to-throw-message'?: Linter.RuleEntry<[]> - /** - * enforce that all tests are in a top-level describe - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-top-level-describe.md - */ - 'vitest/require-top-level-describe'?: Linter.RuleEntry - /** - * enforce valid describe callback - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-describe-callback.md - */ - 'vitest/valid-describe-callback'?: Linter.RuleEntry<[]> - /** - * enforce valid `expect()` usage - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-expect.md - */ - 'vitest/valid-expect'?: Linter.RuleEntry - /** - * require promises that have expectations in their chain to be valid - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-expect-in-promise.md - */ - 'vitest/valid-expect-in-promise'?: Linter.RuleEntry<[]> - /** - * enforce valid titles - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-title.md - */ - 'vitest/valid-title'?: Linter.RuleEntry - /** - * require or disallow block style mappings. - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/block-mapping.html - */ - 'yaml/block-mapping'?: Linter.RuleEntry - /** - * enforce consistent line breaks after `:` indicator - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/block-mapping-colon-indicator-newline.html - */ - 'yaml/block-mapping-colon-indicator-newline'?: Linter.RuleEntry - /** - * enforce consistent line breaks after `?` indicator - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/block-mapping-question-indicator-newline.html - */ - 'yaml/block-mapping-question-indicator-newline'?: Linter.RuleEntry - /** - * require or disallow block style sequences. - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/block-sequence.html - */ - 'yaml/block-sequence'?: Linter.RuleEntry - /** - * enforce consistent line breaks after `-` indicator - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/block-sequence-hyphen-indicator-newline.html - */ - 'yaml/block-sequence-hyphen-indicator-newline'?: Linter.RuleEntry - /** - * enforce YAML file extension - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/file-extension.html - */ - 'yaml/file-extension'?: Linter.RuleEntry - /** - * enforce consistent line breaks inside braces - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/flow-mapping-curly-newline.html - */ - 'yaml/flow-mapping-curly-newline'?: Linter.RuleEntry - /** - * enforce consistent spacing inside braces - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/flow-mapping-curly-spacing.html - */ - 'yaml/flow-mapping-curly-spacing'?: Linter.RuleEntry - /** - * enforce linebreaks after opening and before closing flow sequence brackets - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/flow-sequence-bracket-newline.html - */ - 'yaml/flow-sequence-bracket-newline'?: Linter.RuleEntry - /** - * enforce consistent spacing inside flow sequence brackets - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/flow-sequence-bracket-spacing.html - */ - 'yaml/flow-sequence-bracket-spacing'?: Linter.RuleEntry - /** - * enforce consistent indentation - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/indent.html - */ - 'yaml/indent'?: Linter.RuleEntry - /** - * enforce naming convention to key names - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/key-name-casing.html - */ - 'yaml/key-name-casing'?: Linter.RuleEntry - /** - * enforce consistent spacing between keys and values in mapping pairs - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/key-spacing.html - */ - 'yaml/key-spacing'?: Linter.RuleEntry - /** - * disallow empty document - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-empty-document.html - */ - 'yaml/no-empty-document'?: Linter.RuleEntry<[]> - /** - * disallow empty mapping keys - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-empty-key.html - */ - 'yaml/no-empty-key'?: Linter.RuleEntry<[]> - /** - * disallow empty mapping values - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-empty-mapping-value.html - */ - 'yaml/no-empty-mapping-value'?: Linter.RuleEntry<[]> - /** - * disallow empty sequence entries - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-empty-sequence-entry.html - */ - 'yaml/no-empty-sequence-entry'?: Linter.RuleEntry<[]> - /** - * disallow irregular whitespace - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-irregular-whitespace.html - */ - 'yaml/no-irregular-whitespace'?: Linter.RuleEntry - /** - * disallow multiple empty lines - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-multiple-empty-lines.html - */ - 'yaml/no-multiple-empty-lines'?: Linter.RuleEntry - /** - * disallow tabs for indentation. - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-tab-indent.html - */ - 'yaml/no-tab-indent'?: Linter.RuleEntry<[]> - /** - * disallow trailing zeros for floats - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-trailing-zeros.html - */ - 'yaml/no-trailing-zeros'?: Linter.RuleEntry<[]> - /** - * require or disallow plain style scalar. - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/plain-scalar.html - */ - 'yaml/plain-scalar'?: Linter.RuleEntry - /** - * enforce the consistent use of either double, or single quotes - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/quotes.html - */ - 'yaml/quotes'?: Linter.RuleEntry - /** - * disallow mapping keys other than strings - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/require-string-key.html - */ - 'yaml/require-string-key'?: Linter.RuleEntry<[]> - /** - * require mapping keys to be sorted - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/sort-keys.html - */ - 'yaml/sort-keys'?: Linter.RuleEntry - /** - * require sequence values to be sorted - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/sort-sequence-values.html - */ - 'yaml/sort-sequence-values'?: Linter.RuleEntry - /** - * enforce consistent spacing after the `#` in a comment - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/spaced-comment.html - */ - 'yaml/spaced-comment'?: Linter.RuleEntry - /** - * disallow parsing errors in Vue custom blocks - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/vue-custom-block/no-parsing-error.html - */ - 'yaml/vue-custom-block/no-parsing-error'?: Linter.RuleEntry<[]> - /** - * Prefers `z.enum` over a union of literals. - * @see https://github.com/gajus/eslint-plugin-zod#eslint-plugin-zod-rules-prefer-enum - */ - 'zod/prefer-enum'?: Linter.RuleEntry - /** - * Requires that objects are initialized with .strict(). - * @see https://github.com/gajus/eslint-plugin-zod#eslint-plugin-zod-rules-require-strict - */ - 'zod/require-strict'?: Linter.RuleEntry + /** + * Enforce linebreaks after opening and before closing array brackets + * @see https://eslint.style/rules/js/array-bracket-newline + */ + "@stylistic/array-bracket-newline"?: Linter.RuleEntry; + /** + * Enforce consistent spacing inside array brackets + * @see https://eslint.style/rules/js/array-bracket-spacing + */ + "@stylistic/array-bracket-spacing"?: Linter.RuleEntry; + /** + * Enforce line breaks after each array element + * @see https://eslint.style/rules/js/array-element-newline + */ + "@stylistic/array-element-newline"?: Linter.RuleEntry; + /** + * Require parentheses around arrow function arguments + * @see https://eslint.style/rules/js/arrow-parens + */ + "@stylistic/arrow-parens"?: Linter.RuleEntry; + /** + * Enforce consistent spacing before and after the arrow in arrow functions + * @see https://eslint.style/rules/js/arrow-spacing + */ + "@stylistic/arrow-spacing"?: Linter.RuleEntry; + /** + * Disallow or enforce spaces inside of blocks after opening block and before closing block + * @see https://eslint.style/rules/ts/block-spacing + */ + "@stylistic/block-spacing"?: Linter.RuleEntry; + /** + * Enforce consistent brace style for blocks + * @see https://eslint.style/rules/ts/brace-style + */ + "@stylistic/brace-style"?: Linter.RuleEntry; + /** + * Require or disallow trailing commas + * @see https://eslint.style/rules/ts/comma-dangle + */ + "@stylistic/comma-dangle"?: Linter.RuleEntry; + /** + * Enforce consistent spacing before and after commas + * @see https://eslint.style/rules/ts/comma-spacing + */ + "@stylistic/comma-spacing"?: Linter.RuleEntry; + /** + * Enforce consistent comma style + * @see https://eslint.style/rules/js/comma-style + */ + "@stylistic/comma-style"?: Linter.RuleEntry; + /** + * Enforce consistent spacing inside computed property brackets + * @see https://eslint.style/rules/js/computed-property-spacing + */ + "@stylistic/computed-property-spacing"?: Linter.RuleEntry; + /** + * Enforce consistent line breaks after opening and before closing braces + * @see https://eslint.style/rules/plus/curly-newline + */ + "@stylistic/curly-newline"?: Linter.RuleEntry; + /** + * Enforce consistent newlines before and after dots + * @see https://eslint.style/rules/js/dot-location + */ + "@stylistic/dot-location"?: Linter.RuleEntry; + /** + * Require or disallow newline at the end of files + * @see https://eslint.style/rules/js/eol-last + */ + "@stylistic/eol-last"?: Linter.RuleEntry; + /** + * Require or disallow spacing between function identifiers and their invocations + * @see https://eslint.style/rules/ts/function-call-spacing + */ + "@stylistic/func-call-spacing"?: Linter.RuleEntry; + /** + * Enforce line breaks between arguments of a function call + * @see https://eslint.style/rules/js/function-call-argument-newline + */ + "@stylistic/function-call-argument-newline"?: Linter.RuleEntry; + /** + * Require or disallow spacing between function identifiers and their invocations + * @see https://eslint.style/rules/ts/function-call-spacing + */ + "@stylistic/function-call-spacing"?: Linter.RuleEntry; + /** + * Enforce consistent line breaks inside function parentheses + * @see https://eslint.style/rules/js/function-paren-newline + */ + "@stylistic/function-paren-newline"?: Linter.RuleEntry; + /** + * Enforce consistent spacing around `*` operators in generator functions + * @see https://eslint.style/rules/js/generator-star-spacing + */ + "@stylistic/generator-star-spacing"?: Linter.RuleEntry; + /** + * Enforce the location of arrow function bodies + * @see https://eslint.style/rules/js/implicit-arrow-linebreak + */ + "@stylistic/implicit-arrow-linebreak"?: Linter.RuleEntry; + /** + * Enforce consistent indentation + * @see https://eslint.style/rules/ts/indent + */ + "@stylistic/indent"?: Linter.RuleEntry; + /** + * Indentation for binary operators + * @see https://eslint.style/rules/plus/indent-binary-ops + */ + "@stylistic/indent-binary-ops"?: Linter.RuleEntry; + /** + * Enforce or disallow spaces inside of curly braces in JSX attributes and expressions + * @see https://eslint.style/rules/jsx/jsx-child-element-spacing + */ + "@stylistic/jsx-child-element-spacing"?: Linter.RuleEntry<[]>; + /** + * Enforce closing bracket location in JSX + * @see https://eslint.style/rules/jsx/jsx-closing-bracket-location + */ + "@stylistic/jsx-closing-bracket-location"?: Linter.RuleEntry; + /** + * Enforce closing tag location for multiline JSX + * @see https://eslint.style/rules/jsx/jsx-closing-tag-location + */ + "@stylistic/jsx-closing-tag-location"?: Linter.RuleEntry; + /** + * Disallow unnecessary JSX expressions when literals alone are sufficient or enforce JSX expressions on literals in JSX children or attributes + * @see https://eslint.style/rules/jsx/jsx-curly-brace-presence + */ + "@stylistic/jsx-curly-brace-presence"?: Linter.RuleEntry; + /** + * Enforce consistent linebreaks in curly braces in JSX attributes and expressions + * @see https://eslint.style/rules/jsx/jsx-curly-newline + */ + "@stylistic/jsx-curly-newline"?: Linter.RuleEntry; + /** + * Enforce or disallow spaces inside of curly braces in JSX attributes and expressions + * @see https://eslint.style/rules/jsx/jsx-curly-spacing + */ + "@stylistic/jsx-curly-spacing"?: Linter.RuleEntry; + /** + * Enforce or disallow spaces around equal signs in JSX attributes + * @see https://eslint.style/rules/jsx/jsx-equals-spacing + */ + "@stylistic/jsx-equals-spacing"?: Linter.RuleEntry; + /** + * Enforce proper position of the first property in JSX + * @see https://eslint.style/rules/jsx/jsx-first-prop-new-line + */ + "@stylistic/jsx-first-prop-new-line"?: Linter.RuleEntry; + /** + * Enforce line breaks before and after JSX elements when they are used as arguments to a function. + * @see https://eslint.style/rules/jsx/jsx-function-call-newline + */ + "@stylistic/jsx-function-call-newline"?: Linter.RuleEntry; + /** + * Enforce JSX indentation. Deprecated, use `indent` rule instead. + * @see https://eslint.style/rules/jsx/jsx-indent + * @deprecated + */ + "@stylistic/jsx-indent"?: Linter.RuleEntry; + /** + * Enforce props indentation in JSX + * @see https://eslint.style/rules/jsx/jsx-indent-props + */ + "@stylistic/jsx-indent-props"?: Linter.RuleEntry; + /** + * Enforce maximum of props on a single line in JSX + * @see https://eslint.style/rules/jsx/jsx-max-props-per-line + */ + "@stylistic/jsx-max-props-per-line"?: Linter.RuleEntry; + /** + * Require or prevent a new line after jsx elements and expressions. + * @see https://eslint.style/rules/jsx/jsx-newline + */ + "@stylistic/jsx-newline"?: Linter.RuleEntry; + /** + * Require one JSX element per line + * @see https://eslint.style/rules/jsx/jsx-one-expression-per-line + */ + "@stylistic/jsx-one-expression-per-line"?: Linter.RuleEntry; + /** + * Enforce PascalCase for user-defined JSX components + * @see https://eslint.style/rules/jsx/jsx-pascal-case + */ + "@stylistic/jsx-pascal-case"?: Linter.RuleEntry; + /** + * Disallow multiple spaces between inline JSX props + * @see https://eslint.style/rules/jsx/jsx-props-no-multi-spaces + */ + "@stylistic/jsx-props-no-multi-spaces"?: Linter.RuleEntry<[]>; + /** + * Enforce the consistent use of either double or single quotes in JSX attributes + * @see https://eslint.style/rules/js/jsx-quotes + */ + "@stylistic/jsx-quotes"?: Linter.RuleEntry; + /** + * Disallow extra closing tags for components without children + * @see https://eslint.style/rules/jsx/jsx-self-closing-comp + */ + "@stylistic/jsx-self-closing-comp"?: Linter.RuleEntry; + /** + * Enforce props alphabetical sorting + * @see https://eslint.style/rules/jsx/jsx-sort-props + */ + "@stylistic/jsx-sort-props"?: Linter.RuleEntry; + /** + * Enforce whitespace in and around the JSX opening and closing brackets + * @see https://eslint.style/rules/jsx/jsx-tag-spacing + */ + "@stylistic/jsx-tag-spacing"?: Linter.RuleEntry; + /** + * Disallow missing parentheses around multiline JSX + * @see https://eslint.style/rules/jsx/jsx-wrap-multilines + */ + "@stylistic/jsx-wrap-multilines"?: Linter.RuleEntry; + /** + * Enforce consistent spacing between property names and type annotations in types and interfaces + * @see https://eslint.style/rules/ts/key-spacing + */ + "@stylistic/key-spacing"?: Linter.RuleEntry; + /** + * Enforce consistent spacing before and after keywords + * @see https://eslint.style/rules/ts/keyword-spacing + */ + "@stylistic/keyword-spacing"?: Linter.RuleEntry; + /** + * Enforce position of line comments + * @see https://eslint.style/rules/js/line-comment-position + */ + "@stylistic/line-comment-position"?: Linter.RuleEntry; + /** + * Enforce consistent linebreak style + * @see https://eslint.style/rules/js/linebreak-style + */ + "@stylistic/linebreak-style"?: Linter.RuleEntry; + /** + * Require empty lines around comments + * @see https://eslint.style/rules/ts/lines-around-comment + */ + "@stylistic/lines-around-comment"?: Linter.RuleEntry; + /** + * Require or disallow an empty line between class members + * @see https://eslint.style/rules/ts/lines-between-class-members + */ + "@stylistic/lines-between-class-members"?: Linter.RuleEntry; + /** + * Enforce a maximum line length + * @see https://eslint.style/rules/js/max-len + */ + "@stylistic/max-len"?: Linter.RuleEntry; + /** + * Enforce a maximum number of statements allowed per line + * @see https://eslint.style/rules/js/max-statements-per-line + */ + "@stylistic/max-statements-per-line"?: Linter.RuleEntry; + /** + * Require a specific member delimiter style for interfaces and type literals + * @see https://eslint.style/rules/ts/member-delimiter-style + */ + "@stylistic/member-delimiter-style"?: Linter.RuleEntry; + /** + * Enforce a particular style for multiline comments + * @see https://eslint.style/rules/js/multiline-comment-style + */ + "@stylistic/multiline-comment-style"?: Linter.RuleEntry; + /** + * Enforce newlines between operands of ternary expressions + * @see https://eslint.style/rules/js/multiline-ternary + */ + "@stylistic/multiline-ternary"?: Linter.RuleEntry; + /** + * Enforce or disallow parentheses when invoking a constructor with no arguments + * @see https://eslint.style/rules/js/new-parens + */ + "@stylistic/new-parens"?: Linter.RuleEntry; + /** + * Require a newline after each call in a method chain + * @see https://eslint.style/rules/js/newline-per-chained-call + */ + "@stylistic/newline-per-chained-call"?: Linter.RuleEntry; + /** + * Disallow arrow functions where they could be confused with comparisons + * @see https://eslint.style/rules/js/no-confusing-arrow + */ + "@stylistic/no-confusing-arrow"?: Linter.RuleEntry; + /** + * Disallow unnecessary parentheses + * @see https://eslint.style/rules/ts/no-extra-parens + */ + "@stylistic/no-extra-parens"?: Linter.RuleEntry; + /** + * Disallow unnecessary semicolons + * @see https://eslint.style/rules/ts/no-extra-semi + */ + "@stylistic/no-extra-semi"?: Linter.RuleEntry<[]>; + /** + * Disallow leading or trailing decimal points in numeric literals + * @see https://eslint.style/rules/js/no-floating-decimal + */ + "@stylistic/no-floating-decimal"?: Linter.RuleEntry<[]>; + /** + * Disallow mixed binary operators + * @see https://eslint.style/rules/js/no-mixed-operators + */ + "@stylistic/no-mixed-operators"?: Linter.RuleEntry; + /** + * Disallow mixed spaces and tabs for indentation + * @see https://eslint.style/rules/js/no-mixed-spaces-and-tabs + */ + "@stylistic/no-mixed-spaces-and-tabs"?: Linter.RuleEntry; + /** + * Disallow multiple spaces + * @see https://eslint.style/rules/js/no-multi-spaces + */ + "@stylistic/no-multi-spaces"?: Linter.RuleEntry; + /** + * Disallow multiple empty lines + * @see https://eslint.style/rules/js/no-multiple-empty-lines + */ + "@stylistic/no-multiple-empty-lines"?: Linter.RuleEntry; + /** + * Disallow all tabs + * @see https://eslint.style/rules/js/no-tabs + */ + "@stylistic/no-tabs"?: Linter.RuleEntry; + /** + * Disallow trailing whitespace at the end of lines + * @see https://eslint.style/rules/js/no-trailing-spaces + */ + "@stylistic/no-trailing-spaces"?: Linter.RuleEntry; + /** + * Disallow whitespace before properties + * @see https://eslint.style/rules/js/no-whitespace-before-property + */ + "@stylistic/no-whitespace-before-property"?: Linter.RuleEntry<[]>; + /** + * Enforce the location of single-line statements + * @see https://eslint.style/rules/js/nonblock-statement-body-position + */ + "@stylistic/nonblock-statement-body-position"?: Linter.RuleEntry; + /** + * Enforce consistent line breaks after opening and before closing braces + * @see https://eslint.style/rules/ts/object-curly-newline + */ + "@stylistic/object-curly-newline"?: Linter.RuleEntry; + /** + * Enforce consistent spacing inside braces + * @see https://eslint.style/rules/ts/object-curly-spacing + */ + "@stylistic/object-curly-spacing"?: Linter.RuleEntry; + /** + * Enforce placing object properties on separate lines + * @see https://eslint.style/rules/ts/object-property-newline + */ + "@stylistic/object-property-newline"?: Linter.RuleEntry; + /** + * Require or disallow newlines around variable declarations + * @see https://eslint.style/rules/js/one-var-declaration-per-line + */ + "@stylistic/one-var-declaration-per-line"?: Linter.RuleEntry; + /** + * Enforce consistent linebreak style for operators + * @see https://eslint.style/rules/js/operator-linebreak + */ + "@stylistic/operator-linebreak"?: Linter.RuleEntry; + /** + * Require or disallow padding within blocks + * @see https://eslint.style/rules/js/padded-blocks + */ + "@stylistic/padded-blocks"?: Linter.RuleEntry; + /** + * Require or disallow padding lines between statements + * @see https://eslint.style/rules/ts/padding-line-between-statements + */ + "@stylistic/padding-line-between-statements"?: Linter.RuleEntry; + /** + * Require quotes around object literal, type literal, interfaces and enums property names + * @see https://eslint.style/rules/ts/quote-props + */ + "@stylistic/quote-props"?: Linter.RuleEntry; + /** + * Enforce the consistent use of either backticks, double, or single quotes + * @see https://eslint.style/rules/ts/quotes + */ + "@stylistic/quotes"?: Linter.RuleEntry; + /** + * Enforce spacing between rest and spread operators and their expressions + * @see https://eslint.style/rules/js/rest-spread-spacing + */ + "@stylistic/rest-spread-spacing"?: Linter.RuleEntry; + /** + * Require or disallow semicolons instead of ASI + * @see https://eslint.style/rules/ts/semi + */ + "@stylistic/semi"?: Linter.RuleEntry; + /** + * Enforce consistent spacing before and after semicolons + * @see https://eslint.style/rules/ts/semi-spacing + */ + "@stylistic/semi-spacing"?: Linter.RuleEntry; + /** + * Enforce location of semicolons + * @see https://eslint.style/rules/js/semi-style + */ + "@stylistic/semi-style"?: Linter.RuleEntry; + /** + * Enforce consistent spacing before blocks + * @see https://eslint.style/rules/ts/space-before-blocks + */ + "@stylistic/space-before-blocks"?: Linter.RuleEntry; + /** + * Enforce consistent spacing before function parenthesis + * @see https://eslint.style/rules/ts/space-before-function-paren + */ + "@stylistic/space-before-function-paren"?: Linter.RuleEntry; + /** + * Enforce consistent spacing inside parentheses + * @see https://eslint.style/rules/js/space-in-parens + */ + "@stylistic/space-in-parens"?: Linter.RuleEntry; + /** + * Require spacing around infix operators + * @see https://eslint.style/rules/ts/space-infix-ops + */ + "@stylistic/space-infix-ops"?: Linter.RuleEntry; + /** + * Enforce consistent spacing before or after unary operators + * @see https://eslint.style/rules/js/space-unary-ops + */ + "@stylistic/space-unary-ops"?: Linter.RuleEntry; + /** + * Enforce consistent spacing after the `//` or `/*` in a comment + * @see https://eslint.style/rules/js/spaced-comment + */ + "@stylistic/spaced-comment"?: Linter.RuleEntry; + /** + * Enforce spacing around colons of switch statements + * @see https://eslint.style/rules/js/switch-colon-spacing + */ + "@stylistic/switch-colon-spacing"?: Linter.RuleEntry; + /** + * Require or disallow spacing around embedded expressions of template strings + * @see https://eslint.style/rules/js/template-curly-spacing + */ + "@stylistic/template-curly-spacing"?: Linter.RuleEntry; + /** + * Require or disallow spacing between template tags and their literals + * @see https://eslint.style/rules/js/template-tag-spacing + */ + "@stylistic/template-tag-spacing"?: Linter.RuleEntry; + /** + * Require consistent spacing around type annotations + * @see https://eslint.style/rules/ts/type-annotation-spacing + */ + "@stylistic/type-annotation-spacing"?: Linter.RuleEntry; + /** + * Enforces consistent spacing inside TypeScript type generics + * @see https://eslint.style/rules/plus/type-generic-spacing + */ + "@stylistic/type-generic-spacing"?: Linter.RuleEntry<[]>; + /** + * Expect space before the type declaration in the named tuple + * @see https://eslint.style/rules/plus/type-named-tuple-spacing + */ + "@stylistic/type-named-tuple-spacing"?: Linter.RuleEntry<[]>; + /** + * Require parentheses around immediate `function` invocations + * @see https://eslint.style/rules/js/wrap-iife + */ + "@stylistic/wrap-iife"?: Linter.RuleEntry; + /** + * Require parenthesis around regex literals + * @see https://eslint.style/rules/js/wrap-regex + */ + "@stylistic/wrap-regex"?: Linter.RuleEntry<[]>; + /** + * Require or disallow spacing around the `*` in `yield*` expressions + * @see https://eslint.style/rules/js/yield-star-spacing + */ + "@stylistic/yield-star-spacing"?: Linter.RuleEntry; + /** + * Exhaustive deps rule for useQuery + * @see https://tanstack.com/query/latest/docs/eslint/exhaustive-deps + */ + "@tanstack/query/exhaustive-deps"?: Linter.RuleEntry<[]>; + /** + * Ensure correct order of inference sensitive properties for infinite queries + * @see https://tanstack.com/query/latest/docs/eslint/infinite-query-property-order + */ + "@tanstack/query/infinite-query-property-order"?: Linter.RuleEntry<[]>; + /** + * Disallows rest destructuring in queries + * @see https://tanstack.com/query/latest/docs/eslint/no-rest-destructuring + */ + "@tanstack/query/no-rest-destructuring"?: Linter.RuleEntry<[]>; + /** + * Disallow putting the result of query hooks directly in a React hook dependency array + * @see https://tanstack.com/query/latest/docs/eslint/no-unstable-deps + */ + "@tanstack/query/no-unstable-deps"?: Linter.RuleEntry<[]>; + /** + * Ensures queryFn returns a non-undefined value + * @see https://tanstack.com/query/latest/docs/eslint/no-void-query-fn + */ + "@tanstack/query/no-void-query-fn"?: Linter.RuleEntry<[]>; + /** + * Makes sure that QueryClient is stable + * @see https://tanstack.com/query/latest/docs/eslint/stable-query-client + */ + "@tanstack/query/stable-query-client"?: Linter.RuleEntry<[]>; + /** + * Ensure correct order of inference sensitive properties for createRoute functions + * @see https://tanstack.com/router/latest/docs/eslint/create-route-property-order + */ + "@tanstack/router/create-route-property-order"?: Linter.RuleEntry<[]>; + /** + * Require that function overload signatures be consecutive + * @see https://typescript-eslint.io/rules/adjacent-overload-signatures + */ + "@typescript-eslint/adjacent-overload-signatures"?: Linter.RuleEntry<[]>; + /** + * Require consistently using either `T[]` or `Array` for arrays + * @see https://typescript-eslint.io/rules/array-type + */ + "@typescript-eslint/array-type"?: Linter.RuleEntry; + /** + * Disallow awaiting a value that is not a Thenable + * @see https://typescript-eslint.io/rules/await-thenable + */ + "@typescript-eslint/await-thenable"?: Linter.RuleEntry<[]>; + /** + * Disallow `@ts-` comments or require descriptions after directives + * @see https://typescript-eslint.io/rules/ban-ts-comment + */ + "@typescript-eslint/ban-ts-comment"?: Linter.RuleEntry; + /** + * Disallow `// tslint:` comments + * @see https://typescript-eslint.io/rules/ban-tslint-comment + */ + "@typescript-eslint/ban-tslint-comment"?: Linter.RuleEntry<[]>; + /** + * Enforce that literals on classes are exposed in a consistent style + * @see https://typescript-eslint.io/rules/class-literal-property-style + */ + "@typescript-eslint/class-literal-property-style"?: Linter.RuleEntry; + /** + * Enforce that class methods utilize `this` + * @see https://typescript-eslint.io/rules/class-methods-use-this + */ + "@typescript-eslint/class-methods-use-this"?: Linter.RuleEntry; + /** + * Enforce specifying generic type arguments on type annotation or constructor name of a constructor call + * @see https://typescript-eslint.io/rules/consistent-generic-constructors + */ + "@typescript-eslint/consistent-generic-constructors"?: Linter.RuleEntry; + /** + * Require or disallow the `Record` type + * @see https://typescript-eslint.io/rules/consistent-indexed-object-style + */ + "@typescript-eslint/consistent-indexed-object-style"?: Linter.RuleEntry; + /** + * Require `return` statements to either always or never specify values + * @see https://typescript-eslint.io/rules/consistent-return + */ + "@typescript-eslint/consistent-return"?: Linter.RuleEntry; + /** + * Enforce consistent usage of type assertions + * @see https://typescript-eslint.io/rules/consistent-type-assertions + */ + "@typescript-eslint/consistent-type-assertions"?: Linter.RuleEntry; + /** + * Enforce type definitions to consistently use either `interface` or `type` + * @see https://typescript-eslint.io/rules/consistent-type-definitions + */ + "@typescript-eslint/consistent-type-definitions"?: Linter.RuleEntry; + /** + * Enforce consistent usage of type exports + * @see https://typescript-eslint.io/rules/consistent-type-exports + */ + "@typescript-eslint/consistent-type-exports"?: Linter.RuleEntry; + /** + * Enforce consistent usage of type imports + * @see https://typescript-eslint.io/rules/consistent-type-imports + */ + "@typescript-eslint/consistent-type-imports"?: Linter.RuleEntry; + /** + * Enforce default parameters to be last + * @see https://typescript-eslint.io/rules/default-param-last + */ + "@typescript-eslint/default-param-last"?: Linter.RuleEntry<[]>; + /** + * Enforce dot notation whenever possible + * @see https://typescript-eslint.io/rules/dot-notation + */ + "@typescript-eslint/dot-notation"?: Linter.RuleEntry; + /** + * Require explicit return types on functions and class methods + * @see https://typescript-eslint.io/rules/explicit-function-return-type + */ + "@typescript-eslint/explicit-function-return-type"?: Linter.RuleEntry; + /** + * Require explicit accessibility modifiers on class properties and methods + * @see https://typescript-eslint.io/rules/explicit-member-accessibility + */ + "@typescript-eslint/explicit-member-accessibility"?: Linter.RuleEntry; + /** + * Require explicit return and argument types on exported functions' and classes' public class methods + * @see https://typescript-eslint.io/rules/explicit-module-boundary-types + */ + "@typescript-eslint/explicit-module-boundary-types"?: Linter.RuleEntry; + /** + * Require or disallow initialization in variable declarations + * @see https://typescript-eslint.io/rules/init-declarations + */ + "@typescript-eslint/init-declarations"?: Linter.RuleEntry; + /** + * Enforce a maximum number of parameters in function definitions + * @see https://typescript-eslint.io/rules/max-params + */ + "@typescript-eslint/max-params"?: Linter.RuleEntry; + /** + * Require a consistent member declaration order + * @see https://typescript-eslint.io/rules/member-ordering + */ + "@typescript-eslint/member-ordering"?: Linter.RuleEntry; + /** + * Enforce using a particular method signature syntax + * @see https://typescript-eslint.io/rules/method-signature-style + */ + "@typescript-eslint/method-signature-style"?: Linter.RuleEntry; + /** + * Enforce naming conventions for everything across a codebase + * @see https://typescript-eslint.io/rules/naming-convention + */ + "@typescript-eslint/naming-convention"?: Linter.RuleEntry; + /** + * Disallow generic `Array` constructors + * @see https://typescript-eslint.io/rules/no-array-constructor + */ + "@typescript-eslint/no-array-constructor"?: Linter.RuleEntry<[]>; + /** + * Disallow using the `delete` operator on array values + * @see https://typescript-eslint.io/rules/no-array-delete + */ + "@typescript-eslint/no-array-delete"?: Linter.RuleEntry<[]>; + /** + * Require `.toString()` and `.toLocaleString()` to only be called on objects which provide useful information when stringified + * @see https://typescript-eslint.io/rules/no-base-to-string + */ + "@typescript-eslint/no-base-to-string"?: Linter.RuleEntry; + /** + * Disallow non-null assertion in locations that may be confusing + * @see https://typescript-eslint.io/rules/no-confusing-non-null-assertion + */ + "@typescript-eslint/no-confusing-non-null-assertion"?: Linter.RuleEntry<[]>; + /** + * Require expressions of type void to appear in statement position + * @see https://typescript-eslint.io/rules/no-confusing-void-expression + */ + "@typescript-eslint/no-confusing-void-expression"?: Linter.RuleEntry; + /** + * Disallow using code marked as `@deprecated` + * @see https://typescript-eslint.io/rules/no-deprecated + */ + "@typescript-eslint/no-deprecated"?: Linter.RuleEntry; + /** + * Disallow duplicate class members + * @see https://typescript-eslint.io/rules/no-dupe-class-members + */ + "@typescript-eslint/no-dupe-class-members"?: Linter.RuleEntry<[]>; + /** + * Disallow duplicate enum member values + * @see https://typescript-eslint.io/rules/no-duplicate-enum-values + */ + "@typescript-eslint/no-duplicate-enum-values"?: Linter.RuleEntry<[]>; + /** + * Disallow duplicate constituents of union or intersection types + * @see https://typescript-eslint.io/rules/no-duplicate-type-constituents + */ + "@typescript-eslint/no-duplicate-type-constituents"?: Linter.RuleEntry; + /** + * Disallow using the `delete` operator on computed key expressions + * @see https://typescript-eslint.io/rules/no-dynamic-delete + */ + "@typescript-eslint/no-dynamic-delete"?: Linter.RuleEntry<[]>; + /** + * Disallow empty functions + * @see https://typescript-eslint.io/rules/no-empty-function + */ + "@typescript-eslint/no-empty-function"?: Linter.RuleEntry; + /** + * Disallow the declaration of empty interfaces + * @see https://typescript-eslint.io/rules/no-empty-interface + * @deprecated + */ + "@typescript-eslint/no-empty-interface"?: Linter.RuleEntry; + /** + * Disallow accidentally using the "empty object" type + * @see https://typescript-eslint.io/rules/no-empty-object-type + */ + "@typescript-eslint/no-empty-object-type"?: Linter.RuleEntry; + /** + * Disallow the `any` type + * @see https://typescript-eslint.io/rules/no-explicit-any + */ + "@typescript-eslint/no-explicit-any"?: Linter.RuleEntry; + /** + * Disallow extra non-null assertions + * @see https://typescript-eslint.io/rules/no-extra-non-null-assertion + */ + "@typescript-eslint/no-extra-non-null-assertion"?: Linter.RuleEntry<[]>; + /** + * Disallow classes used as namespaces + * @see https://typescript-eslint.io/rules/no-extraneous-class + */ + "@typescript-eslint/no-extraneous-class"?: Linter.RuleEntry; + /** + * Require Promise-like statements to be handled appropriately + * @see https://typescript-eslint.io/rules/no-floating-promises + */ + "@typescript-eslint/no-floating-promises"?: Linter.RuleEntry; + /** + * Disallow iterating over an array with a for-in loop + * @see https://typescript-eslint.io/rules/no-for-in-array + */ + "@typescript-eslint/no-for-in-array"?: Linter.RuleEntry<[]>; + /** + * Disallow the use of `eval()`-like functions + * @see https://typescript-eslint.io/rules/no-implied-eval + */ + "@typescript-eslint/no-implied-eval"?: Linter.RuleEntry<[]>; + /** + * Enforce the use of top-level import type qualifier when an import only has specifiers with inline type qualifiers + * @see https://typescript-eslint.io/rules/no-import-type-side-effects + */ + "@typescript-eslint/no-import-type-side-effects"?: Linter.RuleEntry<[]>; + /** + * Disallow explicit type declarations for variables or parameters initialized to a number, string, or boolean + * @see https://typescript-eslint.io/rules/no-inferrable-types + */ + "@typescript-eslint/no-inferrable-types"?: Linter.RuleEntry; + /** + * Disallow `this` keywords outside of classes or class-like objects + * @see https://typescript-eslint.io/rules/no-invalid-this + */ + "@typescript-eslint/no-invalid-this"?: Linter.RuleEntry; + /** + * Disallow `void` type outside of generic or return types + * @see https://typescript-eslint.io/rules/no-invalid-void-type + */ + "@typescript-eslint/no-invalid-void-type"?: Linter.RuleEntry; + /** + * Disallow function declarations that contain unsafe references inside loop statements + * @see https://typescript-eslint.io/rules/no-loop-func + */ + "@typescript-eslint/no-loop-func"?: Linter.RuleEntry<[]>; + /** + * Disallow literal numbers that lose precision + * @see https://typescript-eslint.io/rules/no-loss-of-precision + * @deprecated + */ + "@typescript-eslint/no-loss-of-precision"?: Linter.RuleEntry<[]>; + /** + * Disallow magic numbers + * @see https://typescript-eslint.io/rules/no-magic-numbers + */ + "@typescript-eslint/no-magic-numbers"?: Linter.RuleEntry; + /** + * Disallow the `void` operator except when used to discard a value + * @see https://typescript-eslint.io/rules/no-meaningless-void-operator + */ + "@typescript-eslint/no-meaningless-void-operator"?: Linter.RuleEntry; + /** + * Enforce valid definition of `new` and `constructor` + * @see https://typescript-eslint.io/rules/no-misused-new + */ + "@typescript-eslint/no-misused-new"?: Linter.RuleEntry<[]>; + /** + * Disallow Promises in places not designed to handle them + * @see https://typescript-eslint.io/rules/no-misused-promises + */ + "@typescript-eslint/no-misused-promises"?: Linter.RuleEntry; + /** + * Disallow using the spread operator when it might cause unexpected behavior + * @see https://typescript-eslint.io/rules/no-misused-spread + */ + "@typescript-eslint/no-misused-spread"?: Linter.RuleEntry; + /** + * Disallow enums from having both number and string members + * @see https://typescript-eslint.io/rules/no-mixed-enums + */ + "@typescript-eslint/no-mixed-enums"?: Linter.RuleEntry<[]>; + /** + * Disallow TypeScript namespaces + * @see https://typescript-eslint.io/rules/no-namespace + */ + "@typescript-eslint/no-namespace"?: Linter.RuleEntry; + /** + * Disallow non-null assertions in the left operand of a nullish coalescing operator + * @see https://typescript-eslint.io/rules/no-non-null-asserted-nullish-coalescing + */ + "@typescript-eslint/no-non-null-asserted-nullish-coalescing"?: Linter.RuleEntry<[]>; + /** + * Disallow non-null assertions after an optional chain expression + * @see https://typescript-eslint.io/rules/no-non-null-asserted-optional-chain + */ + "@typescript-eslint/no-non-null-asserted-optional-chain"?: Linter.RuleEntry<[]>; + /** + * Disallow non-null assertions using the `!` postfix operator + * @see https://typescript-eslint.io/rules/no-non-null-assertion + */ + "@typescript-eslint/no-non-null-assertion"?: Linter.RuleEntry<[]>; + /** + * Disallow variable redeclaration + * @see https://typescript-eslint.io/rules/no-redeclare + */ + "@typescript-eslint/no-redeclare"?: Linter.RuleEntry; + /** + * Disallow members of unions and intersections that do nothing or override type information + * @see https://typescript-eslint.io/rules/no-redundant-type-constituents + */ + "@typescript-eslint/no-redundant-type-constituents"?: Linter.RuleEntry<[]>; + /** + * Disallow invocation of `require()` + * @see https://typescript-eslint.io/rules/no-require-imports + */ + "@typescript-eslint/no-require-imports"?: Linter.RuleEntry; + /** + * Disallow specified modules when loaded by `import` + * @see https://typescript-eslint.io/rules/no-restricted-imports + */ + "@typescript-eslint/no-restricted-imports"?: Linter.RuleEntry; + /** + * Disallow certain types + * @see https://typescript-eslint.io/rules/no-restricted-types + */ + "@typescript-eslint/no-restricted-types"?: Linter.RuleEntry; + /** + * Disallow variable declarations from shadowing variables declared in the outer scope + * @see https://typescript-eslint.io/rules/no-shadow + */ + "@typescript-eslint/no-shadow"?: Linter.RuleEntry; + /** + * Disallow aliasing `this` + * @see https://typescript-eslint.io/rules/no-this-alias + */ + "@typescript-eslint/no-this-alias"?: Linter.RuleEntry; + /** + * Disallow type aliases + * @see https://typescript-eslint.io/rules/no-type-alias + * @deprecated + */ + "@typescript-eslint/no-type-alias"?: Linter.RuleEntry; + /** + * Disallow unnecessary equality comparisons against boolean literals + * @see https://typescript-eslint.io/rules/no-unnecessary-boolean-literal-compare + */ + "@typescript-eslint/no-unnecessary-boolean-literal-compare"?: Linter.RuleEntry; + /** + * Disallow conditionals where the type is always truthy or always falsy + * @see https://typescript-eslint.io/rules/no-unnecessary-condition + */ + "@typescript-eslint/no-unnecessary-condition"?: Linter.RuleEntry; + /** + * Disallow unnecessary assignment of constructor property parameter + * @see https://typescript-eslint.io/rules/no-unnecessary-parameter-property-assignment + */ + "@typescript-eslint/no-unnecessary-parameter-property-assignment"?: Linter.RuleEntry<[]>; + /** + * Disallow unnecessary namespace qualifiers + * @see https://typescript-eslint.io/rules/no-unnecessary-qualifier + */ + "@typescript-eslint/no-unnecessary-qualifier"?: Linter.RuleEntry<[]>; + /** + * Disallow unnecessary template expressions + * @see https://typescript-eslint.io/rules/no-unnecessary-template-expression + */ + "@typescript-eslint/no-unnecessary-template-expression"?: Linter.RuleEntry<[]>; + /** + * Disallow type arguments that are equal to the default + * @see https://typescript-eslint.io/rules/no-unnecessary-type-arguments + */ + "@typescript-eslint/no-unnecessary-type-arguments"?: Linter.RuleEntry<[]>; + /** + * Disallow type assertions that do not change the type of an expression + * @see https://typescript-eslint.io/rules/no-unnecessary-type-assertion + */ + "@typescript-eslint/no-unnecessary-type-assertion"?: Linter.RuleEntry; + /** + * Disallow unnecessary constraints on generic types + * @see https://typescript-eslint.io/rules/no-unnecessary-type-constraint + */ + "@typescript-eslint/no-unnecessary-type-constraint"?: Linter.RuleEntry<[]>; + /** + * Disallow conversion idioms when they do not change the type or value of the expression + * @see https://typescript-eslint.io/rules/no-unnecessary-type-conversion + */ + "@typescript-eslint/no-unnecessary-type-conversion"?: Linter.RuleEntry<[]>; + /** + * Disallow type parameters that aren't used multiple times + * @see https://typescript-eslint.io/rules/no-unnecessary-type-parameters + */ + "@typescript-eslint/no-unnecessary-type-parameters"?: Linter.RuleEntry<[]>; + /** + * Disallow calling a function with a value with type `any` + * @see https://typescript-eslint.io/rules/no-unsafe-argument + */ + "@typescript-eslint/no-unsafe-argument"?: Linter.RuleEntry<[]>; + /** + * Disallow assigning a value with type `any` to variables and properties + * @see https://typescript-eslint.io/rules/no-unsafe-assignment + */ + "@typescript-eslint/no-unsafe-assignment"?: Linter.RuleEntry<[]>; + /** + * Disallow calling a value with type `any` + * @see https://typescript-eslint.io/rules/no-unsafe-call + */ + "@typescript-eslint/no-unsafe-call"?: Linter.RuleEntry<[]>; + /** + * Disallow unsafe declaration merging + * @see https://typescript-eslint.io/rules/no-unsafe-declaration-merging + */ + "@typescript-eslint/no-unsafe-declaration-merging"?: Linter.RuleEntry<[]>; + /** + * Disallow comparing an enum value with a non-enum value + * @see https://typescript-eslint.io/rules/no-unsafe-enum-comparison + */ + "@typescript-eslint/no-unsafe-enum-comparison"?: Linter.RuleEntry<[]>; + /** + * Disallow using the unsafe built-in Function type + * @see https://typescript-eslint.io/rules/no-unsafe-function-type + */ + "@typescript-eslint/no-unsafe-function-type"?: Linter.RuleEntry<[]>; + /** + * Disallow member access on a value with type `any` + * @see https://typescript-eslint.io/rules/no-unsafe-member-access + */ + "@typescript-eslint/no-unsafe-member-access"?: Linter.RuleEntry<[]>; + /** + * Disallow returning a value with type `any` from a function + * @see https://typescript-eslint.io/rules/no-unsafe-return + */ + "@typescript-eslint/no-unsafe-return"?: Linter.RuleEntry<[]>; + /** + * Disallow type assertions that narrow a type + * @see https://typescript-eslint.io/rules/no-unsafe-type-assertion + */ + "@typescript-eslint/no-unsafe-type-assertion"?: Linter.RuleEntry<[]>; + /** + * Require unary negation to take a number + * @see https://typescript-eslint.io/rules/no-unsafe-unary-minus + */ + "@typescript-eslint/no-unsafe-unary-minus"?: Linter.RuleEntry<[]>; + /** + * Disallow unused expressions + * @see https://typescript-eslint.io/rules/no-unused-expressions + */ + "@typescript-eslint/no-unused-expressions"?: Linter.RuleEntry; + /** + * Disallow unused variables + * @see https://typescript-eslint.io/rules/no-unused-vars + */ + "@typescript-eslint/no-unused-vars"?: Linter.RuleEntry; + /** + * Disallow the use of variables before they are defined + * @see https://typescript-eslint.io/rules/no-use-before-define + */ + "@typescript-eslint/no-use-before-define"?: Linter.RuleEntry; + /** + * Disallow unnecessary constructors + * @see https://typescript-eslint.io/rules/no-useless-constructor + */ + "@typescript-eslint/no-useless-constructor"?: Linter.RuleEntry<[]>; + /** + * Disallow empty exports that don't change anything in a module file + * @see https://typescript-eslint.io/rules/no-useless-empty-export + */ + "@typescript-eslint/no-useless-empty-export"?: Linter.RuleEntry<[]>; + /** + * Disallow `require` statements except in import statements + * @see https://typescript-eslint.io/rules/no-var-requires + * @deprecated + */ + "@typescript-eslint/no-var-requires"?: Linter.RuleEntry; + /** + * Disallow using confusing built-in primitive class wrappers + * @see https://typescript-eslint.io/rules/no-wrapper-object-types + */ + "@typescript-eslint/no-wrapper-object-types"?: Linter.RuleEntry<[]>; + /** + * Enforce non-null assertions over explicit type assertions + * @see https://typescript-eslint.io/rules/non-nullable-type-assertion-style + */ + "@typescript-eslint/non-nullable-type-assertion-style"?: Linter.RuleEntry<[]>; + /** + * Disallow throwing non-`Error` values as exceptions + * @see https://typescript-eslint.io/rules/only-throw-error + */ + "@typescript-eslint/only-throw-error"?: Linter.RuleEntry; + /** + * Require or disallow parameter properties in class constructors + * @see https://typescript-eslint.io/rules/parameter-properties + */ + "@typescript-eslint/parameter-properties"?: Linter.RuleEntry; + /** + * Enforce the use of `as const` over literal type + * @see https://typescript-eslint.io/rules/prefer-as-const + */ + "@typescript-eslint/prefer-as-const"?: Linter.RuleEntry<[]>; + /** + * Require destructuring from arrays and/or objects + * @see https://typescript-eslint.io/rules/prefer-destructuring + */ + "@typescript-eslint/prefer-destructuring"?: Linter.RuleEntry; + /** + * Require each enum member value to be explicitly initialized + * @see https://typescript-eslint.io/rules/prefer-enum-initializers + */ + "@typescript-eslint/prefer-enum-initializers"?: Linter.RuleEntry<[]>; + /** + * Enforce the use of Array.prototype.find() over Array.prototype.filter() followed by [0] when looking for a single result + * @see https://typescript-eslint.io/rules/prefer-find + */ + "@typescript-eslint/prefer-find"?: Linter.RuleEntry<[]>; + /** + * Enforce the use of `for-of` loop over the standard `for` loop where possible + * @see https://typescript-eslint.io/rules/prefer-for-of + */ + "@typescript-eslint/prefer-for-of"?: Linter.RuleEntry<[]>; + /** + * Enforce using function types instead of interfaces with call signatures + * @see https://typescript-eslint.io/rules/prefer-function-type + */ + "@typescript-eslint/prefer-function-type"?: Linter.RuleEntry<[]>; + /** + * Enforce `includes` method over `indexOf` method + * @see https://typescript-eslint.io/rules/prefer-includes + */ + "@typescript-eslint/prefer-includes"?: Linter.RuleEntry<[]>; + /** + * Require all enum members to be literal values + * @see https://typescript-eslint.io/rules/prefer-literal-enum-member + */ + "@typescript-eslint/prefer-literal-enum-member"?: Linter.RuleEntry; + /** + * Require using `namespace` keyword over `module` keyword to declare custom TypeScript modules + * @see https://typescript-eslint.io/rules/prefer-namespace-keyword + */ + "@typescript-eslint/prefer-namespace-keyword"?: Linter.RuleEntry<[]>; + /** + * Enforce using the nullish coalescing operator instead of logical assignments or chaining + * @see https://typescript-eslint.io/rules/prefer-nullish-coalescing + */ + "@typescript-eslint/prefer-nullish-coalescing"?: Linter.RuleEntry; + /** + * Enforce using concise optional chain expressions instead of chained logical ands, negated logical ors, or empty objects + * @see https://typescript-eslint.io/rules/prefer-optional-chain + */ + "@typescript-eslint/prefer-optional-chain"?: Linter.RuleEntry; + /** + * Require using Error objects as Promise rejection reasons + * @see https://typescript-eslint.io/rules/prefer-promise-reject-errors + */ + "@typescript-eslint/prefer-promise-reject-errors"?: Linter.RuleEntry; + /** + * Require private members to be marked as `readonly` if they're never modified outside of the constructor + * @see https://typescript-eslint.io/rules/prefer-readonly + */ + "@typescript-eslint/prefer-readonly"?: Linter.RuleEntry; + /** + * Require function parameters to be typed as `readonly` to prevent accidental mutation of inputs + * @see https://typescript-eslint.io/rules/prefer-readonly-parameter-types + */ + "@typescript-eslint/prefer-readonly-parameter-types"?: Linter.RuleEntry; + /** + * Enforce using type parameter when calling `Array#reduce` instead of using a type assertion + * @see https://typescript-eslint.io/rules/prefer-reduce-type-parameter + */ + "@typescript-eslint/prefer-reduce-type-parameter"?: Linter.RuleEntry<[]>; + /** + * Enforce `RegExp#exec` over `String#match` if no global flag is provided + * @see https://typescript-eslint.io/rules/prefer-regexp-exec + */ + "@typescript-eslint/prefer-regexp-exec"?: Linter.RuleEntry<[]>; + /** + * Enforce that `this` is used when only `this` type is returned + * @see https://typescript-eslint.io/rules/prefer-return-this-type + */ + "@typescript-eslint/prefer-return-this-type"?: Linter.RuleEntry<[]>; + /** + * Enforce using `String#startsWith` and `String#endsWith` over other equivalent methods of checking substrings + * @see https://typescript-eslint.io/rules/prefer-string-starts-ends-with + */ + "@typescript-eslint/prefer-string-starts-ends-with"?: Linter.RuleEntry; + /** + * Enforce using `@ts-expect-error` over `@ts-ignore` + * @see https://typescript-eslint.io/rules/prefer-ts-expect-error + * @deprecated + */ + "@typescript-eslint/prefer-ts-expect-error"?: Linter.RuleEntry<[]>; + /** + * Require any function or method that returns a Promise to be marked async + * @see https://typescript-eslint.io/rules/promise-function-async + */ + "@typescript-eslint/promise-function-async"?: Linter.RuleEntry; + /** + * Enforce that `get()` types should be assignable to their equivalent `set()` type + * @see https://typescript-eslint.io/rules/related-getter-setter-pairs + */ + "@typescript-eslint/related-getter-setter-pairs"?: Linter.RuleEntry<[]>; + /** + * Require `Array#sort` and `Array#toSorted` calls to always provide a `compareFunction` + * @see https://typescript-eslint.io/rules/require-array-sort-compare + */ + "@typescript-eslint/require-array-sort-compare"?: Linter.RuleEntry; + /** + * Disallow async functions which do not return promises and have no `await` expression + * @see https://typescript-eslint.io/rules/require-await + */ + "@typescript-eslint/require-await"?: Linter.RuleEntry<[]>; + /** + * Require both operands of addition to be the same type and be `bigint`, `number`, or `string` + * @see https://typescript-eslint.io/rules/restrict-plus-operands + */ + "@typescript-eslint/restrict-plus-operands"?: Linter.RuleEntry; + /** + * Enforce template literal expressions to be of `string` type + * @see https://typescript-eslint.io/rules/restrict-template-expressions + */ + "@typescript-eslint/restrict-template-expressions"?: Linter.RuleEntry; + /** + * Enforce consistent awaiting of returned promises + * @see https://typescript-eslint.io/rules/return-await + */ + "@typescript-eslint/return-await"?: Linter.RuleEntry; + /** + * Enforce constituents of a type union/intersection to be sorted alphabetically + * @see https://typescript-eslint.io/rules/sort-type-constituents + * @deprecated + */ + "@typescript-eslint/sort-type-constituents"?: Linter.RuleEntry; + /** + * Disallow certain types in boolean expressions + * @see https://typescript-eslint.io/rules/strict-boolean-expressions + */ + "@typescript-eslint/strict-boolean-expressions"?: Linter.RuleEntry; + /** + * Require switch-case statements to be exhaustive + * @see https://typescript-eslint.io/rules/switch-exhaustiveness-check + */ + "@typescript-eslint/switch-exhaustiveness-check"?: Linter.RuleEntry; + /** + * Disallow certain triple slash directives in favor of ES6-style import declarations + * @see https://typescript-eslint.io/rules/triple-slash-reference + */ + "@typescript-eslint/triple-slash-reference"?: Linter.RuleEntry; + /** + * Require type annotations in certain places + * @see https://typescript-eslint.io/rules/typedef + */ + "@typescript-eslint/typedef"?: Linter.RuleEntry; + /** + * Enforce unbound methods are called with their expected scope + * @see https://typescript-eslint.io/rules/unbound-method + */ + "@typescript-eslint/unbound-method"?: Linter.RuleEntry; + /** + * Disallow two overloads that could be unified into one with a union or an optional/rest parameter + * @see https://typescript-eslint.io/rules/unified-signatures + */ + "@typescript-eslint/unified-signatures"?: Linter.RuleEntry; + /** + * Enforce typing arguments in Promise rejection callbacks as `unknown` + * @see https://typescript-eslint.io/rules/use-unknown-in-catch-callback-variable + */ + "@typescript-eslint/use-unknown-in-catch-callback-variable"?: Linter.RuleEntry<[]>; + /** + * Having line breaks styles to object, array and named imports + * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/consistent-chaining.md + */ + "antfu/consistent-chaining"?: Linter.RuleEntry; + /** + * Having line breaks styles to object, array and named imports + * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/consistent-list-newline.md + */ + "antfu/consistent-list-newline"?: Linter.RuleEntry; + /** + * Enforce Anthony's style of curly bracket + * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/curly.md + */ + "antfu/curly"?: Linter.RuleEntry<[]>; + /** + * Newline after if + * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/if-newline.md + */ + "antfu/if-newline"?: Linter.RuleEntry<[]>; + /** + * Fix duplication in imports + * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/import-dedupe.md + */ + "antfu/import-dedupe"?: Linter.RuleEntry<[]>; + /** + * Enforce consistent indentation in `unindent` template tag + * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/indent-unindent.md + */ + "antfu/indent-unindent"?: Linter.RuleEntry; + /** + * Prevent importing modules in `dist` folder + * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/no-import-dist.test.ts + */ + "antfu/no-import-dist"?: Linter.RuleEntry<[]>; + /** + * Prevent importing modules in `node_modules` folder by relative or absolute path + * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/no-import-node-modules-by-path.test.ts + */ + "antfu/no-import-node-modules-by-path"?: Linter.RuleEntry<[]>; + /** + * Prevent using top-level await + * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/no-top-level-await.test.ts + */ + "antfu/no-top-level-await"?: Linter.RuleEntry<[]>; + /** + * Do not use `exports =` + * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/no-ts-export-equal.test.ts + */ + "antfu/no-ts-export-equal"?: Linter.RuleEntry<[]>; + /** + * Enforce top-level functions to be declared with function keyword + * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/top-level-function.md + */ + "antfu/top-level-function"?: Linter.RuleEntry<[]>; + /** + * apply `jsx-a11y/alt-text` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/alt-text/ + */ + "astro/jsx-a11y/alt-text"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/anchor-ambiguous-text` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/anchor-ambiguous-text/ + */ + "astro/jsx-a11y/anchor-ambiguous-text"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/anchor-has-content` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/anchor-has-content/ + */ + "astro/jsx-a11y/anchor-has-content"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/anchor-is-valid` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/anchor-is-valid/ + */ + "astro/jsx-a11y/anchor-is-valid"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/aria-activedescendant-has-tabindex` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/aria-activedescendant-has-tabindex/ + */ + "astro/jsx-a11y/aria-activedescendant-has-tabindex"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/aria-props` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/aria-props/ + */ + "astro/jsx-a11y/aria-props"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/aria-proptypes` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/aria-proptypes/ + */ + "astro/jsx-a11y/aria-proptypes"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/aria-role` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/aria-role/ + */ + "astro/jsx-a11y/aria-role"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/aria-unsupported-elements` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/aria-unsupported-elements/ + */ + "astro/jsx-a11y/aria-unsupported-elements"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/autocomplete-valid` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/autocomplete-valid/ + */ + "astro/jsx-a11y/autocomplete-valid"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/click-events-have-key-events` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/click-events-have-key-events/ + */ + "astro/jsx-a11y/click-events-have-key-events"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/control-has-associated-label` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/control-has-associated-label/ + */ + "astro/jsx-a11y/control-has-associated-label"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/heading-has-content` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/heading-has-content/ + */ + "astro/jsx-a11y/heading-has-content"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/html-has-lang` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/html-has-lang/ + */ + "astro/jsx-a11y/html-has-lang"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/iframe-has-title` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/iframe-has-title/ + */ + "astro/jsx-a11y/iframe-has-title"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/img-redundant-alt` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/img-redundant-alt/ + */ + "astro/jsx-a11y/img-redundant-alt"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/interactive-supports-focus` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/interactive-supports-focus/ + */ + "astro/jsx-a11y/interactive-supports-focus"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/label-has-associated-control` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/label-has-associated-control/ + */ + "astro/jsx-a11y/label-has-associated-control"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/lang` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/lang/ + */ + "astro/jsx-a11y/lang"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/media-has-caption` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/media-has-caption/ + */ + "astro/jsx-a11y/media-has-caption"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/mouse-events-have-key-events` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/mouse-events-have-key-events/ + */ + "astro/jsx-a11y/mouse-events-have-key-events"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/no-access-key` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-access-key/ + */ + "astro/jsx-a11y/no-access-key"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/no-aria-hidden-on-focusable` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-aria-hidden-on-focusable/ + */ + "astro/jsx-a11y/no-aria-hidden-on-focusable"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/no-autofocus` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-autofocus/ + */ + "astro/jsx-a11y/no-autofocus"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/no-distracting-elements` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-distracting-elements/ + */ + "astro/jsx-a11y/no-distracting-elements"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/no-interactive-element-to-noninteractive-role` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-interactive-element-to-noninteractive-role/ + */ + "astro/jsx-a11y/no-interactive-element-to-noninteractive-role"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/no-noninteractive-element-interactions` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-noninteractive-element-interactions/ + */ + "astro/jsx-a11y/no-noninteractive-element-interactions"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/no-noninteractive-element-to-interactive-role` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-noninteractive-element-to-interactive-role/ + */ + "astro/jsx-a11y/no-noninteractive-element-to-interactive-role"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/no-noninteractive-tabindex` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-noninteractive-tabindex/ + */ + "astro/jsx-a11y/no-noninteractive-tabindex"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/no-redundant-roles` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-redundant-roles/ + */ + "astro/jsx-a11y/no-redundant-roles"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/no-static-element-interactions` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-static-element-interactions/ + */ + "astro/jsx-a11y/no-static-element-interactions"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/prefer-tag-over-role` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/prefer-tag-over-role/ + */ + "astro/jsx-a11y/prefer-tag-over-role"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/role-has-required-aria-props` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/role-has-required-aria-props/ + */ + "astro/jsx-a11y/role-has-required-aria-props"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/role-supports-aria-props` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/role-supports-aria-props/ + */ + "astro/jsx-a11y/role-supports-aria-props"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/scope` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/scope/ + */ + "astro/jsx-a11y/scope"?: Linter.RuleEntry; + /** + * apply `jsx-a11y/tabindex-no-positive` rule to Astro components + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/tabindex-no-positive/ + */ + "astro/jsx-a11y/tabindex-no-positive"?: Linter.RuleEntry; + /** + * the client:only directive is missing the correct component's framework value + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/missing-client-only-directive-value/ + */ + "astro/missing-client-only-directive-value"?: Linter.RuleEntry<[]>; + /** + * disallow conflicting set directives and child contents + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-conflict-set-directives/ + */ + "astro/no-conflict-set-directives"?: Linter.RuleEntry<[]>; + /** + * disallow using deprecated `Astro.canonicalURL` + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-deprecated-astro-canonicalurl/ + */ + "astro/no-deprecated-astro-canonicalurl"?: Linter.RuleEntry<[]>; + /** + * disallow using deprecated `Astro.fetchContent()` + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-deprecated-astro-fetchcontent/ + */ + "astro/no-deprecated-astro-fetchcontent"?: Linter.RuleEntry<[]>; + /** + * disallow using deprecated `Astro.resolve()` + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-deprecated-astro-resolve/ + */ + "astro/no-deprecated-astro-resolve"?: Linter.RuleEntry<[]>; + /** + * disallow using deprecated `getEntryBySlug()` + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-deprecated-getentrybyslug/ + */ + "astro/no-deprecated-getentrybyslug"?: Linter.RuleEntry<[]>; + /** + * disallow value export + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-exports-from-components/ + */ + "astro/no-exports-from-components"?: Linter.RuleEntry<[]>; + /** + * disallow use of `set:html` to prevent XSS attack + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-set-html-directive/ + */ + "astro/no-set-html-directive"?: Linter.RuleEntry<[]>; + /** + * disallow use of `set:text` + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-set-text-directive/ + */ + "astro/no-set-text-directive"?: Linter.RuleEntry<[]>; + /** + * disallow selectors defined in `style` tag that don't use in HTML + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-unused-css-selector/ + */ + "astro/no-unused-css-selector"?: Linter.RuleEntry<[]>; + /** + * disallow unused `define:vars={...}` in `style` tag + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-unused-define-vars-in-style/ + */ + "astro/no-unused-define-vars-in-style"?: Linter.RuleEntry<[]>; + /** + * require `class:list` directives instead of `class` with expressions + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/prefer-class-list-directive/ + */ + "astro/prefer-class-list-directive"?: Linter.RuleEntry<[]>; + /** + * require use object instead of ternary expression in `class:list` + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/prefer-object-class-list/ + */ + "astro/prefer-object-class-list"?: Linter.RuleEntry<[]>; + /** + * require use split array elements in `class:list` + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/prefer-split-class-list/ + */ + "astro/prefer-split-class-list"?: Linter.RuleEntry; + /** + * Require or disallow semicolons instead of ASI + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/semi/ + */ + "astro/semi"?: Linter.RuleEntry; + /** + * enforce sorting of attributes + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/sort-attributes/ + */ + "astro/sort-attributes"?: Linter.RuleEntry; + /** + * disallow warnings when compiling. + * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/valid-compile/ + */ + "astro/valid-compile"?: Linter.RuleEntry<[]>; + /** + * Ensure cross-browser API compatibility + * @see https://github.com/amilajack/eslint-plugin-compat/blob/master/docs/rules/compat.md + */ + "compat/compat"?: Linter.RuleEntry; + /** + * require a `eslint-enable` comment for every `eslint-disable` comment + * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/disable-enable-pair.html + */ + "eslint-comments/disable-enable-pair"?: Linter.RuleEntry; + /** + * disallow a `eslint-enable` comment for multiple `eslint-disable` comments + * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/no-aggregating-enable.html + */ + "eslint-comments/no-aggregating-enable"?: Linter.RuleEntry<[]>; + /** + * disallow duplicate `eslint-disable` comments + * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/no-duplicate-disable.html + */ + "eslint-comments/no-duplicate-disable"?: Linter.RuleEntry<[]>; + /** + * disallow `eslint-disable` comments about specific rules + * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/no-restricted-disable.html + */ + "eslint-comments/no-restricted-disable"?: Linter.RuleEntry; + /** + * disallow `eslint-disable` comments without rule names + * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/no-unlimited-disable.html + */ + "eslint-comments/no-unlimited-disable"?: Linter.RuleEntry<[]>; + /** + * disallow unused `eslint-disable` comments + * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/no-unused-disable.html + */ + "eslint-comments/no-unused-disable"?: Linter.RuleEntry<[]>; + /** + * disallow unused `eslint-enable` comments + * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/no-unused-enable.html + */ + "eslint-comments/no-unused-enable"?: Linter.RuleEntry<[]>; + /** + * disallow ESLint directive-comments + * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/no-use.html + */ + "eslint-comments/no-use"?: Linter.RuleEntry; + /** + * require include descriptions in ESLint directive-comments + * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/require-description.html + */ + "eslint-comments/require-description"?: Linter.RuleEntry; + /** + * Use dprint to format code + */ + "format/dprint"?: Linter.RuleEntry; + /** + * Use Prettier to format code + */ + "format/prettier"?: Linter.RuleEntry; + /** + * Enforce or ban the use of inline type-only markers for named imports. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/consistent-type-specifier-style.md + */ + "import/consistent-type-specifier-style"?: Linter.RuleEntry; + /** + * Ensure a default export is present, given a default import. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/default.md + */ + "import/default"?: Linter.RuleEntry<[]>; + /** + * Enforce a leading comment with the webpackChunkName for dynamic imports. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/dynamic-import-chunkname.md + */ + "import/dynamic-import-chunkname"?: Linter.RuleEntry; + /** + * Forbid any invalid exports, i.e. re-export of the same name. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/export.md + */ + "import/export"?: Linter.RuleEntry<[]>; + /** + * Ensure all exports appear after other statements. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/exports-last.md + */ + "import/exports-last"?: Linter.RuleEntry<[]>; + /** + * Ensure consistent use of file extension within the import path. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/extensions.md + */ + "import/extensions"?: Linter.RuleEntry; + /** + * Ensure all imports appear before other statements. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/first.md + */ + "import/first"?: Linter.RuleEntry; + /** + * Prefer named exports to be grouped together in a single export declaration. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/group-exports.md + */ + "import/group-exports"?: Linter.RuleEntry<[]>; + /** + * Replaced by `import-x/first`. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/imports-first.md + * @deprecated + */ + "import/imports-first"?: Linter.RuleEntry; + /** + * Enforce the maximum number of dependencies a module can have. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/max-dependencies.md + */ + "import/max-dependencies"?: Linter.RuleEntry; + /** + * Ensure named imports correspond to a named export in the remote file. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/named.md + */ + "import/named"?: Linter.RuleEntry; + /** + * Ensure imported namespaces contain dereferenced properties as they are dereferenced. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/namespace.md + */ + "import/namespace"?: Linter.RuleEntry; + /** + * Enforce a newline after import statements. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/newline-after-import.md + */ + "import/newline-after-import"?: Linter.RuleEntry; + /** + * Forbid import of modules using absolute paths. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-absolute-path.md + */ + "import/no-absolute-path"?: Linter.RuleEntry; + /** + * Forbid AMD `require` and `define` calls. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-amd.md + */ + "import/no-amd"?: Linter.RuleEntry<[]>; + /** + * Forbid anonymous values as default exports. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-anonymous-default-export.md + */ + "import/no-anonymous-default-export"?: Linter.RuleEntry; + /** + * Forbid CommonJS `require` calls and `module.exports` or `exports.*`. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-commonjs.md + */ + "import/no-commonjs"?: Linter.RuleEntry; + /** + * Forbid a module from importing a module with a dependency path back to itself. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-cycle.md + */ + "import/no-cycle"?: Linter.RuleEntry; + /** + * Forbid default exports. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-default-export.md + */ + "import/no-default-export"?: Linter.RuleEntry<[]>; + /** + * Forbid imported names marked with `@deprecated` documentation tag. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-deprecated.md + */ + "import/no-deprecated"?: Linter.RuleEntry<[]>; + /** + * Forbid repeated import of the same module in multiple places. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-duplicates.md + */ + "import/no-duplicates"?: Linter.RuleEntry; + /** + * Forbid `require()` calls with expressions. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-dynamic-require.md + */ + "import/no-dynamic-require"?: Linter.RuleEntry; + /** + * Forbid empty named import blocks. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-empty-named-blocks.md + */ + "import/no-empty-named-blocks"?: Linter.RuleEntry<[]>; + /** + * Forbid the use of extraneous packages. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-extraneous-dependencies.md + */ + "import/no-extraneous-dependencies"?: Linter.RuleEntry; + /** + * Forbid import statements with CommonJS module.exports. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-import-module-exports.md + */ + "import/no-import-module-exports"?: Linter.RuleEntry; + /** + * Forbid importing the submodules of other modules. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-internal-modules.md + */ + "import/no-internal-modules"?: Linter.RuleEntry; + /** + * Forbid the use of mutable exports with `var` or `let`. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-mutable-exports.md + */ + "import/no-mutable-exports"?: Linter.RuleEntry<[]>; + /** + * Forbid use of exported name as identifier of default export. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-named-as-default.md + */ + "import/no-named-as-default"?: Linter.RuleEntry<[]>; + /** + * Forbid use of exported name as property of default export. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-named-as-default-member.md + */ + "import/no-named-as-default-member"?: Linter.RuleEntry<[]>; + /** + * Forbid named default exports. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-named-default.md + */ + "import/no-named-default"?: Linter.RuleEntry<[]>; + /** + * Forbid named exports. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-named-export.md + */ + "import/no-named-export"?: Linter.RuleEntry<[]>; + /** + * Forbid namespace (a.k.a. "wildcard" `*`) imports. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-namespace.md + */ + "import/no-namespace"?: Linter.RuleEntry; + /** + * Forbid Node.js builtin modules. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-nodejs-modules.md + */ + "import/no-nodejs-modules"?: Linter.RuleEntry; + /** + * Forbid importing packages through relative paths. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-relative-packages.md + */ + "import/no-relative-packages"?: Linter.RuleEntry; + /** + * Forbid importing modules from parent directories. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-relative-parent-imports.md + */ + "import/no-relative-parent-imports"?: Linter.RuleEntry; + /** + * Forbid importing a default export by a different name. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-rename-default.md + */ + "import/no-rename-default"?: Linter.RuleEntry; + /** + * Enforce which files can be imported in a given folder. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-restricted-paths.md + */ + "import/no-restricted-paths"?: Linter.RuleEntry; + /** + * Forbid a module from importing itself. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-self-import.md + */ + "import/no-self-import"?: Linter.RuleEntry<[]>; + /** + * Forbid unassigned imports. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-unassigned-import.md + */ + "import/no-unassigned-import"?: Linter.RuleEntry; + /** + * Ensure imports point to a file/module that can be resolved. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-unresolved.md + */ + "import/no-unresolved"?: Linter.RuleEntry; + /** + * Forbid modules without exports, or exports without matching import in another module. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-unused-modules.md + */ + "import/no-unused-modules"?: Linter.RuleEntry; + /** + * Forbid unnecessary path segments in import and require statements. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-useless-path-segments.md + */ + "import/no-useless-path-segments"?: Linter.RuleEntry; + /** + * Forbid webpack loader syntax in imports. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-webpack-loader-syntax.md + */ + "import/no-webpack-loader-syntax"?: Linter.RuleEntry<[]>; + /** + * Enforce a convention in module import order. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/order.md + */ + "import/order"?: Linter.RuleEntry; + /** + * Prefer a default export if module exports a single name or multiple names. + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/prefer-default-export.md + */ + "import/prefer-default-export"?: Linter.RuleEntry; + /** + * Forbid potentially ambiguous parse goal (`script` vs. `module`). + * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/unambiguous.md + */ + "import/unambiguous"?: Linter.RuleEntry<[]>; + /** + * Checks that `@access` tags have a valid value. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-access.md#repos-sticky-header + */ + "jsdoc/check-access"?: Linter.RuleEntry<[]>; + /** + * Reports invalid alignment of JSDoc block asterisks. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-alignment.md#repos-sticky-header + */ + "jsdoc/check-alignment"?: Linter.RuleEntry<[]>; + /** + * Ensures that (JavaScript) examples within JSDoc adhere to ESLint rules. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-examples.md#repos-sticky-header + */ + "jsdoc/check-examples"?: Linter.RuleEntry; + /** + * Reports invalid padding inside JSDoc blocks. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-indentation.md#repos-sticky-header + */ + "jsdoc/check-indentation"?: Linter.RuleEntry; + /** + * Reports invalid alignment of JSDoc block lines. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-line-alignment.md#repos-sticky-header + */ + "jsdoc/check-line-alignment"?: Linter.RuleEntry; + /** + * Ensures that parameter names in JSDoc match those in the function declaration. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-param-names.md#repos-sticky-header + */ + "jsdoc/check-param-names"?: Linter.RuleEntry; + /** + * Ensures that property names in JSDoc are not duplicated on the same block and that nested properties have defined roots. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-property-names.md#repos-sticky-header + */ + "jsdoc/check-property-names"?: Linter.RuleEntry; + /** + * Reports against syntax not valid for the mode (e.g., Google Closure Compiler in non-Closure mode). + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-syntax.md#repos-sticky-header + */ + "jsdoc/check-syntax"?: Linter.RuleEntry<[]>; + /** + * Reports invalid block tag names. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-tag-names.md#repos-sticky-header + */ + "jsdoc/check-tag-names"?: Linter.RuleEntry; + /** + * Checks that any `@template` names are actually used in the connected `@typedef` or type alias. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-template-names.md#repos-sticky-header + */ + "jsdoc/check-template-names"?: Linter.RuleEntry<[]>; + /** + * Reports invalid types. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-types.md#repos-sticky-header + */ + "jsdoc/check-types"?: Linter.RuleEntry; + /** + * This rule checks the values for a handful of tags: `@version`, `@since`, `@license` and `@author`. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-values.md#repos-sticky-header + */ + "jsdoc/check-values"?: Linter.RuleEntry; + /** + * Converts non-JSDoc comments preceding or following nodes into JSDoc ones + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/convert-to-jsdoc-comments.md#repos-sticky-header + */ + "jsdoc/convert-to-jsdoc-comments"?: Linter.RuleEntry; + /** + * Expects specific tags to be empty of any content. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/empty-tags.md#repos-sticky-header + */ + "jsdoc/empty-tags"?: Linter.RuleEntry; + /** + * Reports an issue with any non-constructor function using `@implements`. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/implements-on-classes.md#repos-sticky-header + */ + "jsdoc/implements-on-classes"?: Linter.RuleEntry; + /** + * Reports if JSDoc `import()` statements point to a package which is not listed in `dependencies` or `devDependencies` + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/imports-as-dependencies.md#repos-sticky-header + */ + "jsdoc/imports-as-dependencies"?: Linter.RuleEntry<[]>; + /** + * This rule reports doc comments that only restate their attached name. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/informative-docs.md#repos-sticky-header + */ + "jsdoc/informative-docs"?: Linter.RuleEntry; + /** + * Enforces minimum number of newlines before JSDoc comment blocks + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/lines-before-block.md#repos-sticky-header + */ + "jsdoc/lines-before-block"?: Linter.RuleEntry; + /** + * Enforces a regular expression pattern on descriptions. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/match-description.md#repos-sticky-header + */ + "jsdoc/match-description"?: Linter.RuleEntry; + /** + * Reports the name portion of a JSDoc tag if matching or not matching a given regular expression. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/match-name.md#repos-sticky-header + */ + "jsdoc/match-name"?: Linter.RuleEntry; + /** + * Controls how and whether jsdoc blocks can be expressed as single or multiple line blocks. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/multiline-blocks.md#repos-sticky-header + */ + "jsdoc/multiline-blocks"?: Linter.RuleEntry; + /** + * This rule checks for multi-line-style comments which fail to meet the criteria of a jsdoc block. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-bad-blocks.md#repos-sticky-header + */ + "jsdoc/no-bad-blocks"?: Linter.RuleEntry; + /** + * Detects and removes extra lines of a blank block description + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-blank-block-descriptions.md#repos-sticky-header + */ + "jsdoc/no-blank-block-descriptions"?: Linter.RuleEntry<[]>; + /** + * Removes empty blocks with nothing but possibly line breaks + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-blank-blocks.md#repos-sticky-header + */ + "jsdoc/no-blank-blocks"?: Linter.RuleEntry; + /** + * This rule reports defaults being used on the relevant portion of `@param` or `@default`. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-defaults.md#repos-sticky-header + */ + "jsdoc/no-defaults"?: Linter.RuleEntry; + /** + * Reports when certain comment structures are always expected. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-missing-syntax.md#repos-sticky-header + */ + "jsdoc/no-missing-syntax"?: Linter.RuleEntry; + /** + * Prevents use of multiple asterisks at the beginning of lines. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-multi-asterisks.md#repos-sticky-header + */ + "jsdoc/no-multi-asterisks"?: Linter.RuleEntry; + /** + * Reports when certain comment structures are present. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-restricted-syntax.md#repos-sticky-header + */ + "jsdoc/no-restricted-syntax"?: Linter.RuleEntry; + /** + * This rule reports types being used on `@param` or `@returns`. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-types.md#repos-sticky-header + */ + "jsdoc/no-types"?: Linter.RuleEntry; + /** + * Checks that types in jsdoc comments are defined. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-undefined-types.md#repos-sticky-header + */ + "jsdoc/no-undefined-types"?: Linter.RuleEntry; + /** + * Requires that each JSDoc line starts with an `*`. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-asterisk-prefix.md#repos-sticky-header + */ + "jsdoc/require-asterisk-prefix"?: Linter.RuleEntry; + /** + * Requires that all functions have a description. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-description.md#repos-sticky-header + */ + "jsdoc/require-description"?: Linter.RuleEntry; + /** + * Requires that block description, explicit `@description`, and `@param`/`@returns` tag descriptions are written in complete sentences. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-description-complete-sentence.md#repos-sticky-header + */ + "jsdoc/require-description-complete-sentence"?: Linter.RuleEntry; + /** + * Requires that all functions have examples. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-example.md#repos-sticky-header + */ + "jsdoc/require-example"?: Linter.RuleEntry; + /** + * Checks that all files have one `@file`, `@fileoverview`, or `@overview` tag at the beginning of the file. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-file-overview.md#repos-sticky-header + */ + "jsdoc/require-file-overview"?: Linter.RuleEntry; + /** + * Requires a hyphen before the `@param` description. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-hyphen-before-param-description.md#repos-sticky-header + */ + "jsdoc/require-hyphen-before-param-description"?: Linter.RuleEntry; + /** + * Require JSDoc comments + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-jsdoc.md#repos-sticky-header + */ + "jsdoc/require-jsdoc"?: Linter.RuleEntry; + /** + * Requires that all function parameters are documented. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param.md#repos-sticky-header + */ + "jsdoc/require-param"?: Linter.RuleEntry; + /** + * Requires that each `@param` tag has a `description` value. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-description.md#repos-sticky-header + */ + "jsdoc/require-param-description"?: Linter.RuleEntry; + /** + * Requires that all function parameters have names. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-name.md#repos-sticky-header + */ + "jsdoc/require-param-name"?: Linter.RuleEntry; + /** + * Requires that each `@param` tag has a `type` value. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-type.md#repos-sticky-header + */ + "jsdoc/require-param-type"?: Linter.RuleEntry; + /** + * Requires that all `@typedef` and `@namespace` tags have `@property` when their type is a plain `object`, `Object`, or `PlainObject`. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property.md#repos-sticky-header + */ + "jsdoc/require-property"?: Linter.RuleEntry<[]>; + /** + * Requires that each `@property` tag has a `description` value. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property-description.md#repos-sticky-header + */ + "jsdoc/require-property-description"?: Linter.RuleEntry<[]>; + /** + * Requires that all function `@property` tags have names. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property-name.md#repos-sticky-header + */ + "jsdoc/require-property-name"?: Linter.RuleEntry<[]>; + /** + * Requires that each `@property` tag has a `type` value. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property-type.md#repos-sticky-header + */ + "jsdoc/require-property-type"?: Linter.RuleEntry<[]>; + /** + * Requires that returns are documented. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns.md#repos-sticky-header + */ + "jsdoc/require-returns"?: Linter.RuleEntry; + /** + * Requires a return statement in function body if a `@returns` tag is specified in jsdoc comment. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns-check.md#repos-sticky-header + */ + "jsdoc/require-returns-check"?: Linter.RuleEntry; + /** + * Requires that the `@returns` tag has a `description` value. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns-description.md#repos-sticky-header + */ + "jsdoc/require-returns-description"?: Linter.RuleEntry; + /** + * Requires that `@returns` tag has `type` value. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns-type.md#repos-sticky-header + */ + "jsdoc/require-returns-type"?: Linter.RuleEntry; + /** + * Requires template tags for each generic type parameter + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-template.md#repos-sticky-header + */ + "jsdoc/require-template"?: Linter.RuleEntry; + /** + * Requires that throw statements are documented. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-throws.md#repos-sticky-header + */ + "jsdoc/require-throws"?: Linter.RuleEntry; + /** + * Requires yields are documented. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields.md#repos-sticky-header + */ + "jsdoc/require-yields"?: Linter.RuleEntry; + /** + * Requires a yield statement in function body if a `@yields` tag is specified in jsdoc comment. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields-check.md#repos-sticky-header + */ + "jsdoc/require-yields-check"?: Linter.RuleEntry; + /** + * Sorts tags by a specified sequence according to tag name. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/sort-tags.md#repos-sticky-header + */ + "jsdoc/sort-tags"?: Linter.RuleEntry; + /** + * Enforces lines (or no lines) between tags. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/tag-lines.md#repos-sticky-header + */ + "jsdoc/tag-lines"?: Linter.RuleEntry; + /** + * Auto-escape certain characters that are input within block and tag descriptions. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/text-escaping.md#repos-sticky-header + */ + "jsdoc/text-escaping"?: Linter.RuleEntry; + /** + * Requires all types to be valid JSDoc or Closure compiler types without syntax errors. + * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/valid-types.md#repos-sticky-header + */ + "jsdoc/valid-types"?: Linter.RuleEntry; + /** + * enforce line breaks after opening and before closing array brackets + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/array-bracket-newline.html + */ + "jsonc/array-bracket-newline"?: Linter.RuleEntry; + /** + * disallow or enforce spaces inside of brackets + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/array-bracket-spacing.html + */ + "jsonc/array-bracket-spacing"?: Linter.RuleEntry; + /** + * enforce line breaks between array elements + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/array-element-newline.html + */ + "jsonc/array-element-newline"?: Linter.RuleEntry; + /** + * apply jsonc rules similar to your configured ESLint core rules + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/auto.html + */ + "jsonc/auto"?: Linter.RuleEntry<[]>; + /** + * require or disallow trailing commas + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/comma-dangle.html + */ + "jsonc/comma-dangle"?: Linter.RuleEntry; + /** + * enforce consistent comma style + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/comma-style.html + */ + "jsonc/comma-style"?: Linter.RuleEntry; + /** + * enforce consistent indentation + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/indent.html + */ + "jsonc/indent"?: Linter.RuleEntry; + /** + * enforce naming convention to property key names + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/key-name-casing.html + */ + "jsonc/key-name-casing"?: Linter.RuleEntry; + /** + * enforce consistent spacing between keys and values in object literal properties + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/key-spacing.html + */ + "jsonc/key-spacing"?: Linter.RuleEntry; + /** + * disallow BigInt literals + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-bigint-literals.html + */ + "jsonc/no-bigint-literals"?: Linter.RuleEntry<[]>; + /** + * disallow binary expression + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-binary-expression.html + */ + "jsonc/no-binary-expression"?: Linter.RuleEntry<[]>; + /** + * disallow binary numeric literals + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-binary-numeric-literals.html + */ + "jsonc/no-binary-numeric-literals"?: Linter.RuleEntry<[]>; + /** + * disallow comments + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-comments.html + */ + "jsonc/no-comments"?: Linter.RuleEntry<[]>; + /** + * disallow duplicate keys in object literals + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-dupe-keys.html + */ + "jsonc/no-dupe-keys"?: Linter.RuleEntry<[]>; + /** + * disallow escape sequences in identifiers. + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-escape-sequence-in-identifier.html + */ + "jsonc/no-escape-sequence-in-identifier"?: Linter.RuleEntry<[]>; + /** + * disallow leading or trailing decimal points in numeric literals + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-floating-decimal.html + */ + "jsonc/no-floating-decimal"?: Linter.RuleEntry<[]>; + /** + * disallow hexadecimal numeric literals + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-hexadecimal-numeric-literals.html + */ + "jsonc/no-hexadecimal-numeric-literals"?: Linter.RuleEntry<[]>; + /** + * disallow Infinity + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-infinity.html + */ + "jsonc/no-infinity"?: Linter.RuleEntry<[]>; + /** + * disallow irregular whitespace + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-irregular-whitespace.html + */ + "jsonc/no-irregular-whitespace"?: Linter.RuleEntry; + /** + * disallow multiline strings + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-multi-str.html + */ + "jsonc/no-multi-str"?: Linter.RuleEntry<[]>; + /** + * disallow NaN + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-nan.html + */ + "jsonc/no-nan"?: Linter.RuleEntry<[]>; + /** + * disallow number property keys + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-number-props.html + */ + "jsonc/no-number-props"?: Linter.RuleEntry<[]>; + /** + * disallow numeric separators + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-numeric-separators.html + */ + "jsonc/no-numeric-separators"?: Linter.RuleEntry<[]>; + /** + * disallow legacy octal literals + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-octal.html + */ + "jsonc/no-octal"?: Linter.RuleEntry<[]>; + /** + * disallow octal escape sequences in string literals + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-octal-escape.html + */ + "jsonc/no-octal-escape"?: Linter.RuleEntry<[]>; + /** + * disallow octal numeric literals + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-octal-numeric-literals.html + */ + "jsonc/no-octal-numeric-literals"?: Linter.RuleEntry<[]>; + /** + * disallow parentheses around the expression + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-parenthesized.html + */ + "jsonc/no-parenthesized"?: Linter.RuleEntry<[]>; + /** + * disallow plus sign + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-plus-sign.html + */ + "jsonc/no-plus-sign"?: Linter.RuleEntry<[]>; + /** + * disallow RegExp literals + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-regexp-literals.html + */ + "jsonc/no-regexp-literals"?: Linter.RuleEntry<[]>; + /** + * disallow sparse arrays + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-sparse-arrays.html + */ + "jsonc/no-sparse-arrays"?: Linter.RuleEntry<[]>; + /** + * disallow template literals + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-template-literals.html + */ + "jsonc/no-template-literals"?: Linter.RuleEntry<[]>; + /** + * disallow `undefined` + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-undefined-value.html + */ + "jsonc/no-undefined-value"?: Linter.RuleEntry<[]>; + /** + * disallow Unicode code point escape sequences. + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-unicode-codepoint-escapes.html + */ + "jsonc/no-unicode-codepoint-escapes"?: Linter.RuleEntry<[]>; + /** + * disallow unnecessary escape usage + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-useless-escape.html + */ + "jsonc/no-useless-escape"?: Linter.RuleEntry; + /** + * enforce consistent line breaks inside braces + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/object-curly-newline.html + */ + "jsonc/object-curly-newline"?: Linter.RuleEntry; + /** + * enforce consistent spacing inside braces + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/object-curly-spacing.html + */ + "jsonc/object-curly-spacing"?: Linter.RuleEntry; + /** + * enforce placing object properties on separate lines + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/object-property-newline.html + */ + "jsonc/object-property-newline"?: Linter.RuleEntry; + /** + * require quotes around object literal property names + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/quote-props.html + */ + "jsonc/quote-props"?: Linter.RuleEntry; + /** + * enforce use of double or single quotes + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/quotes.html + */ + "jsonc/quotes"?: Linter.RuleEntry; + /** + * require array values to be sorted + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/sort-array-values.html + */ + "jsonc/sort-array-values"?: Linter.RuleEntry; + /** + * require object keys to be sorted + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/sort-keys.html + */ + "jsonc/sort-keys"?: Linter.RuleEntry; + /** + * disallow spaces after unary operators + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/space-unary-ops.html + */ + "jsonc/space-unary-ops"?: Linter.RuleEntry; + /** + * disallow invalid number for JSON + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/valid-json-number.html + */ + "jsonc/valid-json-number"?: Linter.RuleEntry<[]>; + /** + * disallow parsing errors in Vue custom blocks + * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/vue-custom-block/no-parsing-error.html + */ + "jsonc/vue-custom-block/no-parsing-error"?: Linter.RuleEntry<[]>; + /** + * Enforce emojis are wrapped in `` and provide screen reader access. + * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/accessible-emoji.md + * @deprecated + */ + "jsx-a11y/accessible-emoji"?: Linter.RuleEntry; + /** + * Enforce all elements that require alternative text have meaningful information to relay back to end user. + * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/alt-text.md + */ + "jsx-a11y/alt-text"?: Linter.RuleEntry; + /** + * Enforce `` text to not exactly match "click here", "here", "link", or "a link". + * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-ambiguous-text.md + */ + "jsx-a11y/anchor-ambiguous-text"?: Linter.RuleEntry; + /** + * Enforce all anchors to contain accessible content. + * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-has-content.md + */ + "jsx-a11y/anchor-has-content"?: Linter.RuleEntry; + /** + * Enforce all anchors are valid, navigable elements. + * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-is-valid.md + */ + "jsx-a11y/anchor-is-valid"?: Linter.RuleEntry; + /** + * Enforce elements with aria-activedescendant are tabbable. + * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-activedescendant-has-tabindex.md + */ + "jsx-a11y/aria-activedescendant-has-tabindex"?: Linter.RuleEntry; + /** + * Enforce all `aria-*` props are valid. + * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-props.md + */ + "jsx-a11y/aria-props"?: Linter.RuleEntry; + /** + * Enforce ARIA state and property values are valid. + * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-proptypes.md + */ + "jsx-a11y/aria-proptypes"?: Linter.RuleEntry; + /** + * Enforce that elements with ARIA roles must use a valid, non-abstract ARIA role. + * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-role.md + */ + "jsx-a11y/aria-role"?: Linter.RuleEntry; + /** + * Enforce that elements that do not support ARIA roles, states, and properties do not have those attributes. + * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-unsupported-elements.md + */ + "jsx-a11y/aria-unsupported-elements"?: Linter.RuleEntry; + /** + * Enforce that autocomplete attributes are used correctly. + * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/autocomplete-valid.md + */ + "jsx-a11y/autocomplete-valid"?: Linter.RuleEntry; + /** + * Enforce a clickable non-interactive element has at least one keyboard event listener. + * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/click-events-have-key-events.md + */ + "jsx-a11y/click-events-have-key-events"?: Linter.RuleEntry; + /** + * Enforce that a control (an interactive element) has a text label. + * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/control-has-associated-label.md + */ + "jsx-a11y/control-has-associated-label"?: Linter.RuleEntry; + /** + * Enforce heading (`h1`, `h2`, etc) elements contain accessible content. + * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/heading-has-content.md + */ + "jsx-a11y/heading-has-content"?: Linter.RuleEntry; + /** + * Enforce `` element has `lang` prop. + * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/html-has-lang.md + */ + "jsx-a11y/html-has-lang"?: Linter.RuleEntry; + /** + * Enforce iframe elements have a title attribute. + * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/iframe-has-title.md + */ + "jsx-a11y/iframe-has-title"?: Linter.RuleEntry; + /** + * Enforce `` alt prop does not contain the word "image", "picture", or "photo". + * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/img-redundant-alt.md + */ + "jsx-a11y/img-redundant-alt"?: Linter.RuleEntry; + /** + * Enforce that elements with interactive handlers like `onClick` must be focusable. + * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/interactive-supports-focus.md + */ + "jsx-a11y/interactive-supports-focus"?: Linter.RuleEntry; + /** + * Enforce that a `label` tag has a text label and an associated control. + * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/label-has-associated-control.md + */ + "jsx-a11y/label-has-associated-control"?: Linter.RuleEntry; + /** + * Enforce that `
` elements. + * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/scope.md + */ + "jsx-a11y/scope"?: Linter.RuleEntry; + /** + * Enforce `tabIndex` value is not greater than zero. + * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/tabindex-no-positive.md + */ + "jsx-a11y/tabindex-no-positive"?: Linter.RuleEntry; + /** + * Require languages for fenced code blocks + * @see https://github.com/eslint/markdown/blob/main/docs/rules/fenced-code-language.md + */ + "markdown/fenced-code-language"?: Linter.RuleEntry; + /** + * Enforce heading levels increment by one + * @see https://github.com/eslint/markdown/blob/main/docs/rules/heading-increment.md + */ + "markdown/heading-increment"?: Linter.RuleEntry<[]>; + /** + * Disallow duplicate headings in the same document + * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-duplicate-headings.md + */ + "markdown/no-duplicate-headings"?: Linter.RuleEntry<[]>; + /** + * Disallow empty links + * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-empty-links.md + */ + "markdown/no-empty-links"?: Linter.RuleEntry<[]>; + /** + * Disallow HTML tags + * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-html.md + */ + "markdown/no-html"?: Linter.RuleEntry; + /** + * Disallow invalid label references + * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-invalid-label-refs.md + */ + "markdown/no-invalid-label-refs"?: Linter.RuleEntry<[]>; + /** + * Disallow missing label references + * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-missing-label-refs.md + */ + "markdown/no-missing-label-refs"?: Linter.RuleEntry<[]>; + /** + * require `return` statements after callbacks + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/callback-return.md + */ + "n/callback-return"?: Linter.RuleEntry; + /** + * enforce either `module.exports` or `exports` + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/exports-style.md + */ + "n/exports-style"?: Linter.RuleEntry; + /** + * enforce the style of file extensions in `import` declarations + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/file-extension-in-import.md + */ + "n/file-extension-in-import"?: Linter.RuleEntry; + /** + * require `require()` calls to be placed at top-level module scope + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/global-require.md + */ + "n/global-require"?: Linter.RuleEntry<[]>; + /** + * require error handling in callbacks + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/handle-callback-err.md + */ + "n/handle-callback-err"?: Linter.RuleEntry; + /** + * require correct usage of hashbang + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/hashbang.md + */ + "n/hashbang"?: Linter.RuleEntry; + /** + * enforce Node.js-style error-first callback pattern is followed + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-callback-literal.md + */ + "n/no-callback-literal"?: Linter.RuleEntry<[]>; + /** + * disallow deprecated APIs + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-deprecated-api.md + */ + "n/no-deprecated-api"?: Linter.RuleEntry; + /** + * disallow the assignment to `exports` + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-exports-assign.md + */ + "n/no-exports-assign"?: Linter.RuleEntry<[]>; + /** + * disallow `import` declarations which import extraneous modules + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-extraneous-import.md + */ + "n/no-extraneous-import"?: Linter.RuleEntry; + /** + * disallow `require()` expressions which import extraneous modules + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-extraneous-require.md + */ + "n/no-extraneous-require"?: Linter.RuleEntry; + /** + * disallow third-party modules which are hiding core modules + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-hide-core-modules.md + * @deprecated + */ + "n/no-hide-core-modules"?: Linter.RuleEntry; + /** + * disallow `import` declarations which import non-existence modules + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-missing-import.md + */ + "n/no-missing-import"?: Linter.RuleEntry; + /** + * disallow `require()` expressions which import non-existence modules + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-missing-require.md + */ + "n/no-missing-require"?: Linter.RuleEntry; + /** + * disallow `require` calls to be mixed with regular variable declarations + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-mixed-requires.md + */ + "n/no-mixed-requires"?: Linter.RuleEntry; + /** + * disallow `new` operators with calls to `require` + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-new-require.md + */ + "n/no-new-require"?: Linter.RuleEntry<[]>; + /** + * disallow string concatenation with `__dirname` and `__filename` + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-path-concat.md + */ + "n/no-path-concat"?: Linter.RuleEntry<[]>; + /** + * disallow the use of `process.env` + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-process-env.md + */ + "n/no-process-env"?: Linter.RuleEntry; + /** + * disallow the use of `process.exit()` + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-process-exit.md + */ + "n/no-process-exit"?: Linter.RuleEntry<[]>; + /** + * disallow specified modules when loaded by `import` declarations + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-restricted-import.md + */ + "n/no-restricted-import"?: Linter.RuleEntry; + /** + * disallow specified modules when loaded by `require` + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-restricted-require.md + */ + "n/no-restricted-require"?: Linter.RuleEntry; + /** + * disallow synchronous methods + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-sync.md + */ + "n/no-sync"?: Linter.RuleEntry; + /** + * disallow `bin` files that npm ignores + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-unpublished-bin.md + */ + "n/no-unpublished-bin"?: Linter.RuleEntry; + /** + * disallow `import` declarations which import private modules + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-unpublished-import.md + */ + "n/no-unpublished-import"?: Linter.RuleEntry; + /** + * disallow `require()` expressions which import private modules + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-unpublished-require.md + */ + "n/no-unpublished-require"?: Linter.RuleEntry; + /** + * disallow unsupported ECMAScript built-ins on the specified version + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-unsupported-features/es-builtins.md + */ + "n/no-unsupported-features/es-builtins"?: Linter.RuleEntry; + /** + * disallow unsupported ECMAScript syntax on the specified version + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-unsupported-features/es-syntax.md + */ + "n/no-unsupported-features/es-syntax"?: Linter.RuleEntry; + /** + * disallow unsupported Node.js built-in APIs on the specified version + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-unsupported-features/node-builtins.md + */ + "n/no-unsupported-features/node-builtins"?: Linter.RuleEntry; + /** + * enforce either `Buffer` or `require("buffer").Buffer` + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-global/buffer.md + */ + "n/prefer-global/buffer"?: Linter.RuleEntry; + /** + * enforce either `console` or `require("console")` + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-global/console.md + */ + "n/prefer-global/console"?: Linter.RuleEntry; + /** + * enforce either `process` or `require("process")` + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-global/process.md + */ + "n/prefer-global/process"?: Linter.RuleEntry; + /** + * enforce either `TextDecoder` or `require("util").TextDecoder` + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-global/text-decoder.md + */ + "n/prefer-global/text-decoder"?: Linter.RuleEntry; + /** + * enforce either `TextEncoder` or `require("util").TextEncoder` + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-global/text-encoder.md + */ + "n/prefer-global/text-encoder"?: Linter.RuleEntry; + /** + * enforce either `URL` or `require("url").URL` + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-global/url.md + */ + "n/prefer-global/url"?: Linter.RuleEntry; + /** + * enforce either `URLSearchParams` or `require("url").URLSearchParams` + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-global/url-search-params.md + */ + "n/prefer-global/url-search-params"?: Linter.RuleEntry; + /** + * enforce using the `node:` protocol when importing Node.js builtin modules. + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-node-protocol.md + */ + "n/prefer-node-protocol"?: Linter.RuleEntry; + /** + * enforce `require("dns").promises` + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-promises/dns.md + */ + "n/prefer-promises/dns"?: Linter.RuleEntry<[]>; + /** + * enforce `require("fs").promises` + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-promises/fs.md + */ + "n/prefer-promises/fs"?: Linter.RuleEntry<[]>; + /** + * require that `process.exit()` expressions use the same code path as `throw` + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/process-exit-as-throw.md + */ + "n/process-exit-as-throw"?: Linter.RuleEntry<[]>; + /** + * require correct usage of hashbang + * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/hashbang.md + * @deprecated + */ + "n/shebang"?: Linter.RuleEntry; + /** + * Do not use for...of loop with array, use for loop instead, because for loop is faster than for...of loop + * @see https://www.npmjs.com/package/eslint-plugin-not-for-of-array + */ + "no-for-of-array/no-for-of-array"?: Linter.RuleEntry<[]>; + /** + * An eslint rule that does pattern matching against an entire file + */ + "no-secrets/no-pattern-match"?: Linter.RuleEntry<[]>; + /** + * An eslint rule that looks for possible leftover secrets in code + */ + "no-secrets/no-secrets"?: Linter.RuleEntry<[]>; + /** + * ESLint rule to disallow unsanitized method calls + * @see https://github.com/mozilla/eslint-plugin-no-unsanitized/tree/master/docs/rules/method.md + */ + "no-unsanitized/method"?: Linter.RuleEntry; + /** + * ESLint rule to disallow unsanitized property assignment + * @see https://github.com/mozilla/eslint-plugin-no-unsanitized/tree/master/docs/rules/property.md + */ + "no-unsanitized/property"?: Linter.RuleEntry; + /** + * Enforce sorted arrays before include method. + * @see https://perfectionist.dev/rules/sort-array-includes + */ + "perfectionist/sort-array-includes"?: Linter.RuleEntry; + /** + * Enforce sorted classes. + * @see https://perfectionist.dev/rules/sort-classes + */ + "perfectionist/sort-classes"?: Linter.RuleEntry; + /** + * Enforce sorted decorators. + * @see https://perfectionist.dev/rules/sort-decorators + */ + "perfectionist/sort-decorators"?: Linter.RuleEntry; + /** + * Enforce sorted TypeScript enums. + * @see https://perfectionist.dev/rules/sort-enums + */ + "perfectionist/sort-enums"?: Linter.RuleEntry; + /** + * Enforce sorted exports. + * @see https://perfectionist.dev/rules/sort-exports + */ + "perfectionist/sort-exports"?: Linter.RuleEntry; + /** + * Enforce sorted heritage clauses. + * @see https://perfectionist.dev/rules/sort-heritage-clauses + */ + "perfectionist/sort-heritage-clauses"?: Linter.RuleEntry; + /** + * Enforce sorted imports. + * @see https://perfectionist.dev/rules/sort-imports + */ + "perfectionist/sort-imports"?: Linter.RuleEntry; + /** + * Enforce sorted interface properties. + * @see https://perfectionist.dev/rules/sort-interfaces + */ + "perfectionist/sort-interfaces"?: Linter.RuleEntry; + /** + * Enforce sorted intersection types. + * @see https://perfectionist.dev/rules/sort-intersection-types + */ + "perfectionist/sort-intersection-types"?: Linter.RuleEntry; + /** + * Enforce sorted JSX props. + * @see https://perfectionist.dev/rules/sort-jsx-props + */ + "perfectionist/sort-jsx-props"?: Linter.RuleEntry; + /** + * Enforce sorted Map elements. + * @see https://perfectionist.dev/rules/sort-maps + */ + "perfectionist/sort-maps"?: Linter.RuleEntry; + /** + * Enforce sorted modules. + * @see https://perfectionist.dev/rules/sort-modules + */ + "perfectionist/sort-modules"?: Linter.RuleEntry; + /** + * Enforce sorted named exports. + * @see https://perfectionist.dev/rules/sort-named-exports + */ + "perfectionist/sort-named-exports"?: Linter.RuleEntry; + /** + * Enforce sorted named imports. + * @see https://perfectionist.dev/rules/sort-named-imports + */ + "perfectionist/sort-named-imports"?: Linter.RuleEntry; + /** + * Enforce sorted object types. + * @see https://perfectionist.dev/rules/sort-object-types + */ + "perfectionist/sort-object-types"?: Linter.RuleEntry; + /** + * Enforce sorted objects. + * @see https://perfectionist.dev/rules/sort-objects + */ + "perfectionist/sort-objects"?: Linter.RuleEntry; + /** + * Enforce sorted sets. + * @see https://perfectionist.dev/rules/sort-sets + */ + "perfectionist/sort-sets"?: Linter.RuleEntry; + /** + * Enforce sorted switch cases. + * @see https://perfectionist.dev/rules/sort-switch-case + */ + "perfectionist/sort-switch-case"?: Linter.RuleEntry; + /** + * Enforce sorted union types. + * @see https://perfectionist.dev/rules/sort-union-types + */ + "perfectionist/sort-union-types"?: Linter.RuleEntry; + /** + * Enforce sorted variable declarations. + * @see https://perfectionist.dev/rules/sort-variable-declarations + */ + "perfectionist/sort-variable-declarations"?: Linter.RuleEntry; + /** + * Enforce assertion to be made in a test body + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/expect-expect.md + */ + "playwright/expect-expect"?: Linter.RuleEntry; + /** + * Enforces a maximum depth to nested describe calls + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/max-nested-describe.md + */ + "playwright/max-nested-describe"?: Linter.RuleEntry; + /** + * Identify false positives when async Playwright APIs are not properly awaited. + */ + "playwright/missing-playwright-await"?: Linter.RuleEntry; + /** + * Disallow conditional logic in tests + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-conditional-in-test.md + */ + "playwright/no-conditional-in-test"?: Linter.RuleEntry<[]>; + /** + * The use of ElementHandle is discouraged, use Locator instead + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-element-handle.md + */ + "playwright/no-element-handle"?: Linter.RuleEntry<[]>; + /** + * The use of `page.$eval` and `page.$$eval` are discouraged, use `locator.evaluate` or `locator.evaluateAll` instead + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-eval.md + */ + "playwright/no-eval"?: Linter.RuleEntry<[]>; + /** + * Prevent usage of `.only()` focus test annotation + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-focused-test.md + */ + "playwright/no-focused-test"?: Linter.RuleEntry<[]>; + /** + * Prevent usage of `{ force: true }` option. + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-force-option.md + */ + "playwright/no-force-option"?: Linter.RuleEntry<[]>; + /** + * Disallow nested `test.step()` methods + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-nested-step.md + */ + "playwright/no-nested-step"?: Linter.RuleEntry<[]>; + /** + * Prevent usage of the networkidle option + */ + "playwright/no-networkidle"?: Linter.RuleEntry<[]>; + /** + * Disallow usage of nth methods + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-nth-methods.md + */ + "playwright/no-nth-methods"?: Linter.RuleEntry<[]>; + /** + * Prevent usage of page.pause() + */ + "playwright/no-page-pause"?: Linter.RuleEntry<[]>; + /** + * Disallows the usage of raw locators + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-raw-locators.md + */ + "playwright/no-raw-locators"?: Linter.RuleEntry<[]>; + /** + * Disallow specific matchers & modifiers + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-restricted-matchers.md + */ + "playwright/no-restricted-matchers"?: Linter.RuleEntry; + /** + * Prevent usage of the `.skip()` skip test annotation. + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-skipped-test.md + */ + "playwright/no-skipped-test"?: Linter.RuleEntry; + /** + * Disallow unnecessary awaits for Playwright methods + */ + "playwright/no-useless-await"?: Linter.RuleEntry<[]>; + /** + * Disallow usage of 'not' matchers when a more specific matcher exists + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-useless-not.md + */ + "playwright/no-useless-not"?: Linter.RuleEntry<[]>; + /** + * Prevent usage of page.waitForTimeout() + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-wait-for-timeout.md + */ + "playwright/no-wait-for-timeout"?: Linter.RuleEntry<[]>; + /** + * Enforce lowercase test names + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-lowercase-title.md + */ + "playwright/prefer-lowercase-title"?: Linter.RuleEntry; + /** + * Suggest using `toStrictEqual()` + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-strict-equal.md + */ + "playwright/prefer-strict-equal"?: Linter.RuleEntry<[]>; + /** + * Suggest using `toBe()` for primitive literals + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-to-be.md + */ + "playwright/prefer-to-be"?: Linter.RuleEntry<[]>; + /** + * Suggest using toContain() + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-to-contain.md + */ + "playwright/prefer-to-contain"?: Linter.RuleEntry<[]>; + /** + * Suggest using `toHaveCount()` + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-to-have-count.md + */ + "playwright/prefer-to-have-count"?: Linter.RuleEntry<[]>; + /** + * Suggest using `toHaveLength()` + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-to-have-length.md + */ + "playwright/prefer-to-have-length"?: Linter.RuleEntry<[]>; + /** + * Prefer web first assertions + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-web-first-assertions.md + */ + "playwright/prefer-web-first-assertions"?: Linter.RuleEntry<[]>; + /** + * Require all assertions to use `expect.soft` + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/require-soft-assertions.md + */ + "playwright/require-soft-assertions"?: Linter.RuleEntry<[]>; + /** + * Require test cases and hooks to be inside a `test.describe` block + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/require-top-level-describe.md + */ + "playwright/require-top-level-describe"?: Linter.RuleEntry; + /** + * Enforce valid `expect()` usage + * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/valid-expect.md + */ + "playwright/valid-expect"?: Linter.RuleEntry; + /** + * Require returning inside each `then()` to create readable and reusable Promise chains. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/always-return.md + */ + "promise/always-return"?: Linter.RuleEntry; + /** + * Disallow creating `new` promises outside of utility libs (use [util.promisify][] instead). + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/avoid-new.md + */ + "promise/avoid-new"?: Linter.RuleEntry<[]>; + /** + * Enforce the use of `catch()` on un-returned promises. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/catch-or-return.md + */ + "promise/catch-or-return"?: Linter.RuleEntry; + /** + * Disallow calling `cb()` inside of a `then()` (use [util.callbackify][] instead). + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-callback-in-promise.md + */ + "promise/no-callback-in-promise"?: Linter.RuleEntry; + /** + * Disallow creating new promises with paths that resolve multiple times. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-multiple-resolved.md + */ + "promise/no-multiple-resolved"?: Linter.RuleEntry<[]>; + /** + * Require creating a `Promise` constructor before using it in an ES5 environment. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-native.md + */ + "promise/no-native"?: Linter.RuleEntry<[]>; + /** + * Disallow nested `then()` or `catch()` statements. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-nesting.md + */ + "promise/no-nesting"?: Linter.RuleEntry<[]>; + /** + * Disallow calling `new` on a Promise static method. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-new-statics.md + */ + "promise/no-new-statics"?: Linter.RuleEntry<[]>; + /** + * Disallow using promises inside of callbacks. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-promise-in-callback.md + */ + "promise/no-promise-in-callback"?: Linter.RuleEntry<[]>; + /** + * Disallow return statements in `finally()`. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-return-in-finally.md + */ + "promise/no-return-in-finally"?: Linter.RuleEntry<[]>; + /** + * Disallow wrapping values in `Promise.resolve` or `Promise.reject` when not needed. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-return-wrap.md + */ + "promise/no-return-wrap"?: Linter.RuleEntry; + /** + * Enforce consistent param names and ordering when creating new promises. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/param-names.md + */ + "promise/param-names"?: Linter.RuleEntry; + /** + * Prefer `async`/`await` to the callback pattern. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/prefer-await-to-callbacks.md + */ + "promise/prefer-await-to-callbacks"?: Linter.RuleEntry<[]>; + /** + * Prefer `await` to `then()`/`catch()`/`finally()` for reading Promise values. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/prefer-await-to-then.md + */ + "promise/prefer-await-to-then"?: Linter.RuleEntry; + /** + * Prefer `catch` to `then(a, b)`/`then(null, b)` for handling errors. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/prefer-catch.md + */ + "promise/prefer-catch"?: Linter.RuleEntry<[]>; + /** + * Disallow use of non-standard Promise static methods. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/spec-only.md + */ + "promise/spec-only"?: Linter.RuleEntry; + /** + * Enforces the proper number of arguments are passed to Promise functions. + * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/valid-params.md + */ + "promise/valid-params"?: Linter.RuleEntry; + /** + * Disallow `children` in void DOM elements. + * @see https://eslint-react.xyz/docs/rules/dom-no-void-elements-with-children + */ + "react-dom/no-children-in-void-dom-elements"?: Linter.RuleEntry<[]>; + /** + * Disallow `dangerouslySetInnerHTML`. + * @see https://eslint-react.xyz/docs/rules/dom-no-dangerously-set-innerhtml + */ + "react-dom/no-dangerously-set-innerhtml"?: Linter.RuleEntry<[]>; + /** + * Disallow `dangerouslySetInnerHTML` and `children` at the same time. + * @see https://eslint-react.xyz/docs/rules/dom-no-dangerously-set-innerhtml-with-children + */ + "react-dom/no-dangerously-set-innerhtml-with-children"?: Linter.RuleEntry<[]>; + /** + * Disallow `findDOMNode`. + * @see https://eslint-react.xyz/docs/rules/dom-no-find-dom-node + */ + "react-dom/no-find-dom-node"?: Linter.RuleEntry<[]>; + /** + * Disallow `flushSync`. + * @see https://eslint-react.xyz/docs/rules/dom-no-flush-sync + */ + "react-dom/no-flush-sync"?: Linter.RuleEntry<[]>; + /** + * Replaces usages of `ReactDom.hydrate()` with `hydrateRoot()`. + * @see https://eslint-react.xyz/docs/rules/dom-no-hydrate + */ + "react-dom/no-hydrate"?: Linter.RuleEntry<[]>; + /** + * Enforces explicit `type` attribute for `button` elements. + * @see https://eslint-react.xyz/docs/rules/dom-no-missing-button-type + */ + "react-dom/no-missing-button-type"?: Linter.RuleEntry<[]>; + /** + * Enforces explicit `sandbox` attribute for `iframe` elements. + * @see https://eslint-react.xyz/docs/rules/dom-no-missing-iframe-sandbox + */ + "react-dom/no-missing-iframe-sandbox"?: Linter.RuleEntry<[]>; + /** + * Enforces the absence of a `namespace` in React elements. + * @see https://eslint-react.xyz/docs/rules/dom-no-namespace + */ + "react-dom/no-namespace"?: Linter.RuleEntry<[]>; + /** + * Replaces usages of `ReactDom.render()` with `createRoot(node).render()`. + * @see https://eslint-react.xyz/docs/rules/dom-no-render + */ + "react-dom/no-render"?: Linter.RuleEntry<[]>; + /** + * Disallow the return value of `ReactDOM.render`. + * @see https://eslint-react.xyz/docs/rules/dom-no-render-return-value + */ + "react-dom/no-render-return-value"?: Linter.RuleEntry<[]>; + /** + * Disallow `javascript:` URLs as attribute values. + * @see https://eslint-react.xyz/docs/rules/dom-no-script-url + */ + "react-dom/no-script-url"?: Linter.RuleEntry<[]>; + /** + * Disallow unknown `DOM` property. + * @see https://eslint-react.xyz/docs/rules/dom-no-unknown-property + */ + "react-dom/no-unknown-property"?: Linter.RuleEntry; + /** + * Enforces `sandbox` attribute for `iframe` elements is not set to unsafe combinations. + * @see https://eslint-react.xyz/docs/rules/dom-no-unsafe-iframe-sandbox + */ + "react-dom/no-unsafe-iframe-sandbox"?: Linter.RuleEntry<[]>; + /** + * Disallow `target="_blank"` without `rel="noreferrer noopener"`. + * @see https://eslint-react.xyz/docs/rules/dom-no-unsafe-target-blank + */ + "react-dom/no-unsafe-target-blank"?: Linter.RuleEntry<[]>; + /** + * Replaces usages of `useFormState` with `useActionState`. + * @see https://eslint-react.xyz/docs/rules/dom-no-use-form-state + */ + "react-dom/no-use-form-state"?: Linter.RuleEntry<[]>; + /** + * Disallow `children` in void DOM elements. + * @see https://eslint-react.xyz/docs/rules/dom-no-void-elements-with-children + */ + "react-dom/no-void-elements-with-children"?: Linter.RuleEntry<[]>; + /** + * Enforces that a function with the `use` prefix should use at least one Hook inside of it. + * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-prefix + */ + "react-hooks-extra/ensure-custom-hooks-using-other-hooks"?: Linter.RuleEntry<[]>; + /** + * Disallow unnecessary usage of `useCallback`. + * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-callback + */ + "react-hooks-extra/ensure-use-callback-has-non-empty-deps"?: Linter.RuleEntry<[]>; + /** + * Disallow unnecessary usage of `useMemo`. + * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-memo + */ + "react-hooks-extra/ensure-use-memo-has-non-empty-deps"?: Linter.RuleEntry<[]>; + /** + * Disallow direct calls to the `set` function of `useState` in `useEffect`. + * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-direct-set-state-in-use-effect + */ + "react-hooks-extra/no-direct-set-state-in-use-effect"?: Linter.RuleEntry<[]>; + /** + * Disallow direct calls to the `set` function of `useState` in `useLayoutEffect`. + * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-direct-set-state-in-use-layout-effect + */ + "react-hooks-extra/no-direct-set-state-in-use-layout-effect"?: Linter.RuleEntry<[]>; + /** + * Enforces that a function with the `use` prefix should use at least one Hook inside of it. + * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-prefix + */ + "react-hooks-extra/no-redundant-custom-hook"?: Linter.RuleEntry<[]>; + /** + * Disallow unnecessary usage of `useCallback`. + * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-callback + */ + "react-hooks-extra/no-unnecessary-use-callback"?: Linter.RuleEntry<[]>; + /** + * Disallow unnecessary usage of `useMemo`. + * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-memo + */ + "react-hooks-extra/no-unnecessary-use-memo"?: Linter.RuleEntry<[]>; + /** + * Enforces that a function with the `use` prefix should use at least one Hook inside of it. + * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-prefix + */ + "react-hooks-extra/no-unnecessary-use-prefix"?: Linter.RuleEntry<[]>; + /** + * Enforces that a function with the `use` prefix should use at least one Hook inside of it. + * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-prefix + */ + "react-hooks-extra/no-useless-custom-hooks"?: Linter.RuleEntry<[]>; + /** + * Enforces function calls made inside `useState` to be wrapped in an `initializer function`. + * @see https://eslint-react.xyz/docs/rules/hooks-extra-prefer-use-state-lazy-initialization + */ + "react-hooks-extra/prefer-use-state-lazy-initialization"?: Linter.RuleEntry<[]>; + /** + * verifies the list of dependencies for Hooks like useEffect and similar + * @see https://github.com/facebook/react/issues/14920 + */ + "react-hooks/exhaustive-deps"?: Linter.RuleEntry; + /** + * enforces the Rules of Hooks + * @see https://reactjs.org/docs/hooks-rules.html + */ + "react-hooks/rules-of-hooks"?: Linter.RuleEntry<[]>; + /** + * Enforces naming conventions for components. + * @see https://eslint-react.xyz/docs/rules/naming-convention-component-name + */ + "react-naming-convention/component-name"?: Linter.RuleEntry; + /** + * Enforces context name to be a valid component name with the suffix `Context`. + * @see https://eslint-react.xyz/docs/rules/naming-convention-context-name + */ + "react-naming-convention/context-name"?: Linter.RuleEntry<[]>; + /** + * Enforces consistent file naming conventions. + * @see https://eslint-react.xyz/docs/rules/naming-convention-filename + */ + "react-naming-convention/filename"?: Linter.RuleEntry; + /** + * Enforces consistent file naming conventions. + * @see https://eslint-react.xyz/docs/rules/naming-convention-filename-extension + */ + "react-naming-convention/filename-extension"?: Linter.RuleEntry; + /** + * Enforces destructuring and symmetric naming of `useState` hook value and setter. + * @see https://eslint-react.xyz/docs/rules/naming-convention-use-state + */ + "react-naming-convention/use-state"?: Linter.RuleEntry<[]>; + "react-refresh/only-export-components"?: Linter.RuleEntry; + /** + * Prevents leaked `addEventListener` in a component or custom Hook. + * @see https://eslint-react.xyz/docs/rules/web-api-no-leaked-event-listener + */ + "react-web-api/no-leaked-event-listener"?: Linter.RuleEntry<[]>; + /** + * Prevents leaked `setInterval` in a component or custom Hook. + * @see https://eslint-react.xyz/docs/rules/web-api-no-leaked-interval + */ + "react-web-api/no-leaked-interval"?: Linter.RuleEntry<[]>; + /** + * Prevents leaked `ResizeObserver` in a component or custom Hook. + * @see https://eslint-react.xyz/docs/rules/web-api-no-leaked-resize-observer + */ + "react-web-api/no-leaked-resize-observer"?: Linter.RuleEntry<[]>; + /** + * Prevents leaked `setTimeout` in a component or custom Hook. + * @see https://eslint-react.xyz/docs/rules/web-api-no-leaked-timeout + */ + "react-web-api/no-leaked-timeout"?: Linter.RuleEntry<[]>; + /** + * Enforces explicit boolean values for boolean attributes. + * @see https://eslint-react.xyz/docs/rules/avoid-shorthand-boolean + */ + "react-x/avoid-shorthand-boolean"?: Linter.RuleEntry<[]>; + /** + * Enforces explicit `` components instead of the shorthand `<>` or `` syntax. + * @see https://eslint-react.xyz/docs/rules/avoid-shorthand-fragment + */ + "react-x/avoid-shorthand-fragment"?: Linter.RuleEntry<[]>; + /** + * Disallow useless `forwardRef` calls on components that don't use `ref`s. + * @see https://eslint-react.xyz/docs/rules/no-useless-forward-ref + */ + "react-x/ensure-forward-ref-using-ref"?: Linter.RuleEntry<[]>; + /** + * Enforces that the 'key' attribute is placed before the spread attribute in JSX elements. + * @see https://eslint-react.xyz/docs/rules/jsx-key-before-spread + */ + "react-x/jsx-key-before-spread"?: Linter.RuleEntry<[]>; + /** + * Disallow duplicate props in JSX elements. + * @see https://eslint-react.xyz/docs/rules/jsx-no-duplicate-props + */ + "react-x/jsx-no-duplicate-props"?: Linter.RuleEntry<[]>; + /** + * Disallow undefined variables in JSX. + * @see https://eslint-react.xyz/docs/rules/jsx-no-undef + */ + "react-x/jsx-no-undef"?: Linter.RuleEntry<[]>; + /** + * Marks React variables as used when JSX is used. + * @see https://eslint-react.xyz/docs/rules/jsx-uses-react + */ + "react-x/jsx-uses-react"?: Linter.RuleEntry<[]>; + /** + * Marks variables used in JSX elements as used. + * @see https://eslint-react.xyz/docs/rules/jsx-uses-vars + */ + "react-x/jsx-uses-vars"?: Linter.RuleEntry<[]>; + /** + * Disallow accessing `this.state` inside `setState` calls. + * @see https://eslint-react.xyz/docs/rules/no-access-state-in-setstate + */ + "react-x/no-access-state-in-setstate"?: Linter.RuleEntry<[]>; + /** + * Disallow an item's index in the array as its key. + * @see https://eslint-react.xyz/docs/rules/no-array-index-key + */ + "react-x/no-array-index-key"?: Linter.RuleEntry<[]>; + /** + * Disallow `Children.count`. + * @see https://eslint-react.xyz/docs/rules/no-children-count + */ + "react-x/no-children-count"?: Linter.RuleEntry<[]>; + /** + * Disallow 'Children.forEach'. + * @see https://eslint-react.xyz/docs/rules/no-children-for-each + */ + "react-x/no-children-for-each"?: Linter.RuleEntry<[]>; + /** + * Disallow `Children.map`. + * @see https://eslint-react.xyz/docs/rules/no-children-map + */ + "react-x/no-children-map"?: Linter.RuleEntry<[]>; + /** + * Disallow `Children.only`. + * @see https://eslint-react.xyz/docs/rules/no-children-only + */ + "react-x/no-children-only"?: Linter.RuleEntry<[]>; + /** + * Disallow passing `children` as a prop. + * @see https://eslint-react.xyz/docs/rules/no-children-prop + */ + "react-x/no-children-prop"?: Linter.RuleEntry<[]>; + /** + * Disallow `Children.toArray`. + * @see https://eslint-react.xyz/docs/rules/no-children-to-array + */ + "react-x/no-children-to-array"?: Linter.RuleEntry<[]>; + /** + * Disallow class components except for error boundaries. + * @see https://eslint-react.xyz/docs/rules/no-class-component + */ + "react-x/no-class-component"?: Linter.RuleEntry<[]>; + /** + * Disallow `cloneElement`. + * @see https://eslint-react.xyz/docs/rules/no-clone-element + */ + "react-x/no-clone-element"?: Linter.RuleEntry<[]>; + /** + * Prevents comments from being inserted as text nodes. + * @see https://eslint-react.xyz/docs/rules/no-comment-textnodes + */ + "react-x/no-comment-textnodes"?: Linter.RuleEntry<[]>; + /** + * Disallow complex conditional rendering in JSX expressions. + * @see https://eslint-react.xyz/docs/rules/no-complex-conditional-rendering + */ + "react-x/no-complex-conditional-rendering"?: Linter.RuleEntry<[]>; + /** + * Disallow complex conditional rendering in JSX expressions. + * @see https://eslint-react.xyz/docs/rules/no-complex-conditional-rendering + */ + "react-x/no-complicated-conditional-rendering"?: Linter.RuleEntry<[]>; + /** + * Replace usages of `componentWillMount` with `UNSAFE_componentWillMount`. + * @see https://eslint-react.xyz/docs/rules/no-component-will-mount + */ + "react-x/no-component-will-mount"?: Linter.RuleEntry<[]>; + /** + * Replace usages of `componentWillReceiveProps` with `UNSAFE_componentWillReceiveProps`. + * @see https://eslint-react.xyz/docs/rules/no-component-will-receive-props + */ + "react-x/no-component-will-receive-props"?: Linter.RuleEntry<[]>; + /** + * Replace usages of `componentWillUpdate` with `UNSAFE_componentWillUpdate`. + * @see https://eslint-react.xyz/docs/rules/no-component-will-update + */ + "react-x/no-component-will-update"?: Linter.RuleEntry<[]>; + /** + * Replace usages of `` with ``. + * @see https://eslint-react.xyz/docs/rules/no-context-provider + */ + "react-x/no-context-provider"?: Linter.RuleEntry<[]>; + /** + * Disallow `createRef` in function components. + * @see https://eslint-react.xyz/docs/rules/no-create-ref + */ + "react-x/no-create-ref"?: Linter.RuleEntry<[]>; + /** + * Disallow `defaultProps` property in favor of ES6 default parameters. + * @see https://eslint-react.xyz/docs/rules/no-default-props + */ + "react-x/no-default-props"?: Linter.RuleEntry<[]>; + /** + * Disallow direct mutation of `this.state`. + * @see https://eslint-react.xyz/docs/rules/no-direct-mutation-state + */ + "react-x/no-direct-mutation-state"?: Linter.RuleEntry<[]>; + /** + * Disallow duplicate props in JSX elements. + * @see https://eslint-react.xyz/docs/rules/jsx-no-duplicate-props + */ + "react-x/no-duplicate-jsx-props"?: Linter.RuleEntry<[]>; + /** + * Disallow duplicate `key` on elements in the same array or a list of `children`. + * @see https://eslint-react.xyz/docs/rules/no-duplicate-key + */ + "react-x/no-duplicate-key"?: Linter.RuleEntry<[]>; + /** + * Replaces usages of `forwardRef` with passing `ref` as a prop. + * @see https://eslint-react.xyz/docs/rules/no-forward-ref + */ + "react-x/no-forward-ref"?: Linter.RuleEntry<[]>; + /** + * Prevents `key` from not being explicitly specified (e.g. spreading `key` from objects). + * @see https://eslint-react.xyz/docs/rules/no-implicit-key + */ + "react-x/no-implicit-key"?: Linter.RuleEntry<[]>; + /** + * Prevents problematic leaked values from being rendered. + * @see https://eslint-react.xyz/docs/rules/no-leaked-conditional-rendering + */ + "react-x/no-leaked-conditional-rendering"?: Linter.RuleEntry<[]>; + /** + * Enforces that all components have a `displayName` which can be used in devtools. + * @see https://eslint-react.xyz/docs/rules/no-missing-component-display-name + */ + "react-x/no-missing-component-display-name"?: Linter.RuleEntry<[]>; + /** + * Enforces that all contexts have a `displayName` which can be used in devtools. + * @see https://eslint-react.xyz/docs/rules/no-missing-context-display-name + */ + "react-x/no-missing-context-display-name"?: Linter.RuleEntry<[]>; + /** + * Disallow missing `key` on items in list rendering. + * @see https://eslint-react.xyz/docs/rules/no-missing-key + */ + "react-x/no-missing-key"?: Linter.RuleEntry<[]>; + /** + * Prevents incorrect usage of `captureOwnerStack`. + * @see https://eslint-react.xyz/docs/rules/no-misused-capture-owner-stack + */ + "react-x/no-misused-capture-owner-stack"?: Linter.RuleEntry<[]>; + /** + * Disallow nesting component definitions inside other components. + * @see https://eslint-react.xyz/docs/rules/no-nested-component-definitions + */ + "react-x/no-nested-component-definitions"?: Linter.RuleEntry<[]>; + /** + * Disallow nesting component definitions inside other components. + * @see https://eslint-react.xyz/docs/rules/no-nested-component-definitions + */ + "react-x/no-nested-components"?: Linter.RuleEntry<[]>; + /** + * Disallow nesting lazy component declarations inside other components. + * @see https://eslint-react.xyz/docs/rules/no-nested-component-definitions + */ + "react-x/no-nested-lazy-component-declarations"?: Linter.RuleEntry<[]>; + /** + * Disallow `propTypes` in favor of TypeScript or another type-checking solution. + * @see https://eslint-react.xyz/docs/rules/no-prop-types + */ + "react-x/no-prop-types"?: Linter.RuleEntry<[]>; + /** + * Disallow `shouldComponentUpdate` when extending `React.PureComponent`. + * @see https://eslint-react.xyz/docs/rules/no-redundant-should-component-update + */ + "react-x/no-redundant-should-component-update"?: Linter.RuleEntry<[]>; + /** + * Disallow calling `this.setState` in `componentDidMount` outside of functions, such as callbacks. + * @see https://eslint-react.xyz/docs/rules/no-set-state-in-component-did-mount + */ + "react-x/no-set-state-in-component-did-mount"?: Linter.RuleEntry<[]>; + /** + * Disallow calling `this.setState` in `componentDidUpdate` outside of functions, such as callbacks. + * @see https://eslint-react.xyz/docs/rules/no-set-state-in-component-did-update + */ + "react-x/no-set-state-in-component-did-update"?: Linter.RuleEntry<[]>; + /** + * Disallows calling `this.setState` in `componentWillUpdate` outside of functions, such as callbacks. + * @see https://eslint-react.xyz/docs/rules/no-set-state-in-component-will-update + */ + "react-x/no-set-state-in-component-will-update"?: Linter.RuleEntry<[]>; + /** + * Replaces string refs with callback refs. + * @see https://eslint-react.xyz/docs/rules/no-string-refs + */ + "react-x/no-string-refs"?: Linter.RuleEntry<[]>; + /** + * Warns the usage of `UNSAFE_componentWillMount` in class components. + * @see https://eslint-react.xyz/docs/rules/no-unsafe-component-will-mount + */ + "react-x/no-unsafe-component-will-mount"?: Linter.RuleEntry<[]>; + /** + * Warns the usage of `UNSAFE_componentWillReceiveProps` in class components. + * @see https://eslint-react.xyz/docs/rules/no-unsafe-component-will-receive-props + */ + "react-x/no-unsafe-component-will-receive-props"?: Linter.RuleEntry<[]>; + /** + * Warns the usage of `UNSAFE_componentWillUpdate` in class components. + * @see https://eslint-react.xyz/docs/rules/no-unsafe-component-will-update + */ + "react-x/no-unsafe-component-will-update"?: Linter.RuleEntry<[]>; + /** + * Prevents non-stable values (i.e. object literals) from being used as a value for `Context.Provider`. + * @see https://eslint-react.xyz/docs/rules/no-unstable-context-value + */ + "react-x/no-unstable-context-value"?: Linter.RuleEntry<[]>; + /** + * Prevents using referential-type values as default props in object destructuring. + * @see https://eslint-react.xyz/docs/rules/no-unstable-default-props + */ + "react-x/no-unstable-default-props"?: Linter.RuleEntry<[]>; + /** + * Warns unused class component methods and properties. + * @see https://eslint-react.xyz/docs/rules/no-unused-class-component-members + */ + "react-x/no-unused-class-component-members"?: Linter.RuleEntry<[]>; + /** + * Warns unused class component state. + * @see https://eslint-react.xyz/docs/rules/no-unused-state + */ + "react-x/no-unused-state"?: Linter.RuleEntry<[]>; + /** + * Replaces usages of `useContext` with `use`. + * @see https://eslint-react.xyz/docs/rules/no-use-context + */ + "react-x/no-use-context"?: Linter.RuleEntry<[]>; + /** + * Disallow useless `forwardRef` calls on components that don't use `ref`s. + * @see https://eslint-react.xyz/docs/rules/no-useless-forward-ref + */ + "react-x/no-useless-forward-ref"?: Linter.RuleEntry<[]>; + /** + * Disallow useless fragment elements. + * @see https://eslint-react.xyz/docs/rules/no-useless-fragment + */ + "react-x/no-useless-fragment"?: Linter.RuleEntry; + /** + * Enforces destructuring assignment for component props and context. + * @see https://eslint-react.xyz/docs/rules/prefer-destructuring-assignment + */ + "react-x/prefer-destructuring-assignment"?: Linter.RuleEntry<[]>; + /** + * Enforces React is imported via a namespace import. + * @see https://eslint-react.xyz/docs/rules/prefer-react-namespace-import + */ + "react-x/prefer-react-namespace-import"?: Linter.RuleEntry<[]>; + /** + * Enforces read-only props in components. + * @see https://eslint-react.xyz/docs/rules/prefer-read-only-props + */ + "react-x/prefer-read-only-props"?: Linter.RuleEntry<[]>; + /** + * Enforces shorthand syntax for boolean attributes. + * @see https://eslint-react.xyz/docs/rules/prefer-shorthand-boolean + */ + "react-x/prefer-shorthand-boolean"?: Linter.RuleEntry<[]>; + /** + * Enforces shorthand syntax for fragments. + * @see https://eslint-react.xyz/docs/rules/prefer-shorthand-fragment + */ + "react-x/prefer-shorthand-fragment"?: Linter.RuleEntry<[]>; + /** + * Marks variables used in JSX elements as used. + * @see https://eslint-react.xyz/docs/rules/jsx-uses-vars + */ + "react-x/use-jsx-vars"?: Linter.RuleEntry<[]>; + /** + * Enforces consistent naming for boolean props + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/boolean-prop-naming.md + */ + "react/boolean-prop-naming"?: Linter.RuleEntry; + /** + * Disallow usage of `button` elements without an explicit `type` attribute + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/button-has-type.md + */ + "react/button-has-type"?: Linter.RuleEntry; + /** + * Enforce using `onChange` or `readonly` attribute when `checked` is used + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/checked-requires-onchange-or-readonly.md + */ + "react/checked-requires-onchange-or-readonly"?: Linter.RuleEntry; + /** + * Enforce all defaultProps have a corresponding non-required PropType + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/default-props-match-prop-types.md + */ + "react/default-props-match-prop-types"?: Linter.RuleEntry; + /** + * Enforce consistent usage of destructuring assignment of props, state, and context + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/destructuring-assignment.md + */ + "react/destructuring-assignment"?: Linter.RuleEntry; + /** + * Disallow missing displayName in a React component definition + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/display-name.md + */ + "react/display-name"?: Linter.RuleEntry; + /** + * Disallow certain props on components + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-component-props.md + */ + "react/forbid-component-props"?: Linter.RuleEntry; + /** + * Disallow certain props on DOM Nodes + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-dom-props.md + */ + "react/forbid-dom-props"?: Linter.RuleEntry; + /** + * Disallow certain elements + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-elements.md + */ + "react/forbid-elements"?: Linter.RuleEntry; + /** + * Disallow using another component's propTypes + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-foreign-prop-types.md + */ + "react/forbid-foreign-prop-types"?: Linter.RuleEntry; + /** + * Disallow certain propTypes + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-prop-types.md + */ + "react/forbid-prop-types"?: Linter.RuleEntry; + /** + * Require all forwardRef components include a ref parameter + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forward-ref-uses-ref.md + */ + "react/forward-ref-uses-ref"?: Linter.RuleEntry<[]>; + /** + * Enforce a specific function type for function components + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/function-component-definition.md + */ + "react/function-component-definition"?: Linter.RuleEntry; + /** + * Ensure destructuring and symmetric naming of useState hook value and setter variables + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/hook-use-state.md + */ + "react/hook-use-state"?: Linter.RuleEntry; + /** + * Enforce sandbox attribute on iframe elements + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/iframe-missing-sandbox.md + */ + "react/iframe-missing-sandbox"?: Linter.RuleEntry<[]>; + /** + * Enforce boolean attributes notation in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-boolean-value.md + */ + "react/jsx-boolean-value"?: Linter.RuleEntry; + /** + * Enforce or disallow spaces inside of curly braces in JSX attributes and expressions + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-child-element-spacing.md + */ + "react/jsx-child-element-spacing"?: Linter.RuleEntry<[]>; + /** + * Enforce closing bracket location in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-closing-bracket-location.md + */ + "react/jsx-closing-bracket-location"?: Linter.RuleEntry; + /** + * Enforce closing tag location for multiline JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-closing-tag-location.md + */ + "react/jsx-closing-tag-location"?: Linter.RuleEntry; + /** + * Disallow unnecessary JSX expressions when literals alone are sufficient or enforce JSX expressions on literals in JSX children or attributes + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-curly-brace-presence.md + */ + "react/jsx-curly-brace-presence"?: Linter.RuleEntry; + /** + * Enforce consistent linebreaks in curly braces in JSX attributes and expressions + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-curly-newline.md + */ + "react/jsx-curly-newline"?: Linter.RuleEntry; + /** + * Enforce or disallow spaces inside of curly braces in JSX attributes and expressions + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-curly-spacing.md + */ + "react/jsx-curly-spacing"?: Linter.RuleEntry; + /** + * Enforce or disallow spaces around equal signs in JSX attributes + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-equals-spacing.md + */ + "react/jsx-equals-spacing"?: Linter.RuleEntry; + /** + * Disallow file extensions that may contain JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-filename-extension.md + */ + "react/jsx-filename-extension"?: Linter.RuleEntry; + /** + * Enforce proper position of the first property in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-first-prop-new-line.md + */ + "react/jsx-first-prop-new-line"?: Linter.RuleEntry; + /** + * Enforce shorthand or standard form for React fragments + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-fragments.md + */ + "react/jsx-fragments"?: Linter.RuleEntry; + /** + * Enforce event handler naming conventions in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-handler-names.md + */ + "react/jsx-handler-names"?: Linter.RuleEntry; + /** + * Enforce JSX indentation + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-indent.md + */ + "react/jsx-indent"?: Linter.RuleEntry; + /** + * Enforce props indentation in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-indent-props.md + */ + "react/jsx-indent-props"?: Linter.RuleEntry; + /** + * Disallow missing `key` props in iterators/collection literals + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-key.md + */ + "react/jsx-key"?: Linter.RuleEntry; + /** + * Enforce JSX maximum depth + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-max-depth.md + */ + "react/jsx-max-depth"?: Linter.RuleEntry; + /** + * Enforce maximum of props on a single line in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-max-props-per-line.md + */ + "react/jsx-max-props-per-line"?: Linter.RuleEntry; + /** + * Require or prevent a new line after jsx elements and expressions. + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-newline.md + */ + "react/jsx-newline"?: Linter.RuleEntry; + /** + * Disallow `.bind()` or arrow functions in JSX props + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-bind.md + */ + "react/jsx-no-bind"?: Linter.RuleEntry; + /** + * Disallow comments from being inserted as text nodes + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-comment-textnodes.md + */ + "react/jsx-no-comment-textnodes"?: Linter.RuleEntry<[]>; + /** + * Disallows JSX context provider values from taking values that will cause needless rerenders + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-constructed-context-values.md + */ + "react/jsx-no-constructed-context-values"?: Linter.RuleEntry<[]>; + /** + * Disallow duplicate properties in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-duplicate-props.md + */ + "react/jsx-no-duplicate-props"?: Linter.RuleEntry; + /** + * Disallow problematic leaked values from being rendered + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-leaked-render.md + */ + "react/jsx-no-leaked-render"?: Linter.RuleEntry; + /** + * Disallow usage of string literals in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-literals.md + */ + "react/jsx-no-literals"?: Linter.RuleEntry; + /** + * Disallow usage of `javascript:` URLs + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-script-url.md + */ + "react/jsx-no-script-url"?: Linter.RuleEntry; + /** + * Disallow `target="_blank"` attribute without `rel="noreferrer"` + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-target-blank.md + */ + "react/jsx-no-target-blank"?: Linter.RuleEntry; + /** + * Disallow undeclared variables in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-undef.md + */ + "react/jsx-no-undef"?: Linter.RuleEntry; + /** + * Disallow unnecessary fragments + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-useless-fragment.md + */ + "react/jsx-no-useless-fragment"?: Linter.RuleEntry; + /** + * Require one JSX element per line + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-one-expression-per-line.md + */ + "react/jsx-one-expression-per-line"?: Linter.RuleEntry; + /** + * Enforce PascalCase for user-defined JSX components + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-pascal-case.md + */ + "react/jsx-pascal-case"?: Linter.RuleEntry; + /** + * Disallow multiple spaces between inline JSX props + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-props-no-multi-spaces.md + */ + "react/jsx-props-no-multi-spaces"?: Linter.RuleEntry<[]>; + /** + * Disallow JSX prop spreading the same identifier multiple times + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-props-no-spread-multi.md + */ + "react/jsx-props-no-spread-multi"?: Linter.RuleEntry<[]>; + /** + * Disallow JSX prop spreading + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-props-no-spreading.md + */ + "react/jsx-props-no-spreading"?: Linter.RuleEntry; + /** + * Enforce defaultProps declarations alphabetical sorting + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-sort-default-props.md + * @deprecated + */ + "react/jsx-sort-default-props"?: Linter.RuleEntry; + /** + * Enforce props alphabetical sorting + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-sort-props.md + */ + "react/jsx-sort-props"?: Linter.RuleEntry; + /** + * Enforce spacing before closing bracket in JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-space-before-closing.md + * @deprecated + */ + "react/jsx-space-before-closing"?: Linter.RuleEntry; + /** + * Enforce whitespace in and around the JSX opening and closing brackets + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-tag-spacing.md + */ + "react/jsx-tag-spacing"?: Linter.RuleEntry; + /** + * Disallow React to be incorrectly marked as unused + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-uses-react.md + */ + "react/jsx-uses-react"?: Linter.RuleEntry<[]>; + /** + * Disallow variables used in JSX to be incorrectly marked as unused + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-uses-vars.md + */ + "react/jsx-uses-vars"?: Linter.RuleEntry<[]>; + /** + * Disallow missing parentheses around multiline JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-wrap-multilines.md + */ + "react/jsx-wrap-multilines"?: Linter.RuleEntry; + /** + * Disallow when this.state is accessed within setState + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-access-state-in-setstate.md + */ + "react/no-access-state-in-setstate"?: Linter.RuleEntry<[]>; + /** + * Disallow adjacent inline elements not separated by whitespace. + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-adjacent-inline-elements.md + */ + "react/no-adjacent-inline-elements"?: Linter.RuleEntry<[]>; + /** + * Disallow usage of Array index in keys + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-array-index-key.md + */ + "react/no-array-index-key"?: Linter.RuleEntry<[]>; + /** + * Lifecycle methods should be methods on the prototype, not class fields + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-arrow-function-lifecycle.md + */ + "react/no-arrow-function-lifecycle"?: Linter.RuleEntry<[]>; + /** + * Disallow passing of children as props + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-children-prop.md + */ + "react/no-children-prop"?: Linter.RuleEntry; + /** + * Disallow usage of dangerous JSX properties + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-danger.md + */ + "react/no-danger"?: Linter.RuleEntry; + /** + * Disallow when a DOM element is using both children and dangerouslySetInnerHTML + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-danger-with-children.md + */ + "react/no-danger-with-children"?: Linter.RuleEntry<[]>; + /** + * Disallow usage of deprecated methods + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-deprecated.md + */ + "react/no-deprecated"?: Linter.RuleEntry<[]>; + /** + * Disallow usage of setState in componentDidMount + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-did-mount-set-state.md + */ + "react/no-did-mount-set-state"?: Linter.RuleEntry; + /** + * Disallow usage of setState in componentDidUpdate + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-did-update-set-state.md + */ + "react/no-did-update-set-state"?: Linter.RuleEntry; + /** + * Disallow direct mutation of this.state + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-direct-mutation-state.md + */ + "react/no-direct-mutation-state"?: Linter.RuleEntry<[]>; + /** + * Disallow usage of findDOMNode + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-find-dom-node.md + */ + "react/no-find-dom-node"?: Linter.RuleEntry<[]>; + /** + * Disallow usage of invalid attributes + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-invalid-html-attribute.md + */ + "react/no-invalid-html-attribute"?: Linter.RuleEntry; + /** + * Disallow usage of isMounted + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-is-mounted.md + */ + "react/no-is-mounted"?: Linter.RuleEntry<[]>; + /** + * Disallow multiple component definition per file + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-multi-comp.md + */ + "react/no-multi-comp"?: Linter.RuleEntry; + /** + * Enforce that namespaces are not used in React elements + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-namespace.md + */ + "react/no-namespace"?: Linter.RuleEntry<[]>; + /** + * Disallow usage of referential-type variables as default param in functional component + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-object-type-as-default-prop.md + */ + "react/no-object-type-as-default-prop"?: Linter.RuleEntry<[]>; + /** + * Disallow usage of shouldComponentUpdate when extending React.PureComponent + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-redundant-should-component-update.md + */ + "react/no-redundant-should-component-update"?: Linter.RuleEntry<[]>; + /** + * Disallow usage of the return value of ReactDOM.render + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-render-return-value.md + */ + "react/no-render-return-value"?: Linter.RuleEntry<[]>; + /** + * Disallow usage of setState + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-set-state.md + */ + "react/no-set-state"?: Linter.RuleEntry<[]>; + /** + * Disallow using string references + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-string-refs.md + */ + "react/no-string-refs"?: Linter.RuleEntry; + /** + * Disallow `this` from being used in stateless functional components + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-this-in-sfc.md + */ + "react/no-this-in-sfc"?: Linter.RuleEntry<[]>; + /** + * Disallow common typos + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-typos.md + */ + "react/no-typos"?: Linter.RuleEntry<[]>; + /** + * Disallow unescaped HTML entities from appearing in markup + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unescaped-entities.md + */ + "react/no-unescaped-entities"?: Linter.RuleEntry; + /** + * Disallow usage of unknown DOM property + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unknown-property.md + */ + "react/no-unknown-property"?: Linter.RuleEntry; + /** + * Disallow usage of unsafe lifecycle methods + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unsafe.md + */ + "react/no-unsafe"?: Linter.RuleEntry; + /** + * Disallow creating unstable components inside components + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unstable-nested-components.md + */ + "react/no-unstable-nested-components"?: Linter.RuleEntry; + /** + * Disallow declaring unused methods of component class + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unused-class-component-methods.md + */ + "react/no-unused-class-component-methods"?: Linter.RuleEntry<[]>; + /** + * Disallow definitions of unused propTypes + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unused-prop-types.md + */ + "react/no-unused-prop-types"?: Linter.RuleEntry; + /** + * Disallow definitions of unused state + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unused-state.md + */ + "react/no-unused-state"?: Linter.RuleEntry<[]>; + /** + * Disallow usage of setState in componentWillUpdate + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-will-update-set-state.md + */ + "react/no-will-update-set-state"?: Linter.RuleEntry; + /** + * Enforce ES5 or ES6 class for React Components + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-es6-class.md + */ + "react/prefer-es6-class"?: Linter.RuleEntry; + /** + * Prefer exact proptype definitions + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-exact-props.md + */ + "react/prefer-exact-props"?: Linter.RuleEntry<[]>; + /** + * Enforce that props are read-only + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-read-only-props.md + */ + "react/prefer-read-only-props"?: Linter.RuleEntry<[]>; + /** + * Enforce stateless components to be written as a pure function + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-stateless-function.md + */ + "react/prefer-stateless-function"?: Linter.RuleEntry; + /** + * Disallow missing props validation in a React component definition + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prop-types.md + */ + "react/prop-types"?: Linter.RuleEntry; + /** + * Disallow missing React when using JSX + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/react-in-jsx-scope.md + */ + "react/react-in-jsx-scope"?: Linter.RuleEntry<[]>; + /** + * Enforce a defaultProps definition for every prop that is not a required prop + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/require-default-props.md + */ + "react/require-default-props"?: Linter.RuleEntry; + /** + * Enforce React components to have a shouldComponentUpdate method + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/require-optimization.md + */ + "react/require-optimization"?: Linter.RuleEntry; + /** + * Enforce ES5 or ES6 class for returning value in render function + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/require-render-return.md + */ + "react/require-render-return"?: Linter.RuleEntry<[]>; + /** + * Disallow extra closing tags for components without children + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/self-closing-comp.md + */ + "react/self-closing-comp"?: Linter.RuleEntry; + /** + * Enforce component methods order + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/sort-comp.md + */ + "react/sort-comp"?: Linter.RuleEntry; + /** + * Enforce defaultProps declarations alphabetical sorting + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/sort-default-props.md + */ + "react/sort-default-props"?: Linter.RuleEntry; + /** + * Enforce propTypes declarations alphabetical sorting + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/sort-prop-types.md + */ + "react/sort-prop-types"?: Linter.RuleEntry; + /** + * Enforce class component state initialization style + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/state-in-constructor.md + */ + "react/state-in-constructor"?: Linter.RuleEntry; + /** + * Enforces where React component static properties should be positioned. + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/static-property-placement.md + */ + "react/static-property-placement"?: Linter.RuleEntry; + /** + * Enforce style prop value is an object + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/style-prop-object.md + */ + "react/style-prop-object"?: Linter.RuleEntry; + /** + * Disallow void DOM elements (e.g. ``, `
`) from receiving children + * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/void-dom-elements-no-children.md + */ + "react/void-dom-elements-no-children"?: Linter.RuleEntry<[]>; + /** + * disallow confusing quantifiers + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/confusing-quantifier.html + */ + "regexp/confusing-quantifier"?: Linter.RuleEntry<[]>; + /** + * enforce consistent escaping of control characters + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/control-character-escape.html + */ + "regexp/control-character-escape"?: Linter.RuleEntry<[]>; + /** + * enforce single grapheme in string literal + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/grapheme-string-literal.html + */ + "regexp/grapheme-string-literal"?: Linter.RuleEntry<[]>; + /** + * enforce consistent usage of hexadecimal escape + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/hexadecimal-escape.html + */ + "regexp/hexadecimal-escape"?: Linter.RuleEntry; + /** + * enforce into your favorite case + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/letter-case.html + */ + "regexp/letter-case"?: Linter.RuleEntry; + /** + * enforce match any character style + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/match-any.html + */ + "regexp/match-any"?: Linter.RuleEntry; + /** + * enforce use of escapes on negation + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/negation.html + */ + "regexp/negation"?: Linter.RuleEntry<[]>; + /** + * disallow elements that contradict assertions + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-contradiction-with-assertion.html + */ + "regexp/no-contradiction-with-assertion"?: Linter.RuleEntry<[]>; + /** + * disallow control characters + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-control-character.html + */ + "regexp/no-control-character"?: Linter.RuleEntry<[]>; + /** + * disallow duplicate characters in the RegExp character class + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-dupe-characters-character-class.html + */ + "regexp/no-dupe-characters-character-class"?: Linter.RuleEntry<[]>; + /** + * disallow duplicate disjunctions + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-dupe-disjunctions.html + */ + "regexp/no-dupe-disjunctions"?: Linter.RuleEntry; + /** + * disallow alternatives without elements + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-alternative.html + */ + "regexp/no-empty-alternative"?: Linter.RuleEntry<[]>; + /** + * disallow capturing group that captures empty. + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-capturing-group.html + */ + "regexp/no-empty-capturing-group"?: Linter.RuleEntry<[]>; + /** + * disallow character classes that match no characters + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-character-class.html + */ + "regexp/no-empty-character-class"?: Linter.RuleEntry<[]>; + /** + * disallow empty group + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-group.html + */ + "regexp/no-empty-group"?: Linter.RuleEntry<[]>; + /** + * disallow empty lookahead assertion or empty lookbehind assertion + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-lookarounds-assertion.html + */ + "regexp/no-empty-lookarounds-assertion"?: Linter.RuleEntry<[]>; + /** + * disallow empty string literals in character classes + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-string-literal.html + */ + "regexp/no-empty-string-literal"?: Linter.RuleEntry<[]>; + /** + * disallow escape backspace (`[\b]`) + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-escape-backspace.html + */ + "regexp/no-escape-backspace"?: Linter.RuleEntry<[]>; + /** + * disallow unnecessary nested lookaround assertions + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-extra-lookaround-assertions.html + */ + "regexp/no-extra-lookaround-assertions"?: Linter.RuleEntry<[]>; + /** + * disallow invalid regular expression strings in `RegExp` constructors + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-invalid-regexp.html + */ + "regexp/no-invalid-regexp"?: Linter.RuleEntry<[]>; + /** + * disallow invisible raw character + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-invisible-character.html + */ + "regexp/no-invisible-character"?: Linter.RuleEntry<[]>; + /** + * disallow lazy quantifiers at the end of an expression + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-lazy-ends.html + */ + "regexp/no-lazy-ends"?: Linter.RuleEntry; + /** + * disallow legacy RegExp features + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-legacy-features.html + */ + "regexp/no-legacy-features"?: Linter.RuleEntry; + /** + * disallow capturing groups that do not behave as one would expect + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-misleading-capturing-group.html + */ + "regexp/no-misleading-capturing-group"?: Linter.RuleEntry; + /** + * disallow multi-code-point characters in character classes and quantifiers + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-misleading-unicode-character.html + */ + "regexp/no-misleading-unicode-character"?: Linter.RuleEntry; + /** + * disallow missing `g` flag in patterns used in `String#matchAll` and `String#replaceAll` + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-missing-g-flag.html + */ + "regexp/no-missing-g-flag"?: Linter.RuleEntry; + /** + * disallow non-standard flags + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-non-standard-flag.html + */ + "regexp/no-non-standard-flag"?: Linter.RuleEntry<[]>; + /** + * disallow obscure character ranges + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-obscure-range.html + */ + "regexp/no-obscure-range"?: Linter.RuleEntry; + /** + * disallow octal escape sequence + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-octal.html + */ + "regexp/no-octal"?: Linter.RuleEntry<[]>; + /** + * disallow optional assertions + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-optional-assertion.html + */ + "regexp/no-optional-assertion"?: Linter.RuleEntry<[]>; + /** + * disallow backreferences that reference a group that might not be matched + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-potentially-useless-backreference.html + */ + "regexp/no-potentially-useless-backreference"?: Linter.RuleEntry<[]>; + /** + * disallow standalone backslashes (`\`) + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-standalone-backslash.html + */ + "regexp/no-standalone-backslash"?: Linter.RuleEntry<[]>; + /** + * disallow exponential and polynomial backtracking + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-super-linear-backtracking.html + */ + "regexp/no-super-linear-backtracking"?: Linter.RuleEntry; + /** + * disallow quantifiers that cause quadratic moves + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-super-linear-move.html + */ + "regexp/no-super-linear-move"?: Linter.RuleEntry; + /** + * disallow trivially nested assertions + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-trivially-nested-assertion.html + */ + "regexp/no-trivially-nested-assertion"?: Linter.RuleEntry<[]>; + /** + * disallow nested quantifiers that can be rewritten as one quantifier + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-trivially-nested-quantifier.html + */ + "regexp/no-trivially-nested-quantifier"?: Linter.RuleEntry<[]>; + /** + * disallow unused capturing group + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-unused-capturing-group.html + */ + "regexp/no-unused-capturing-group"?: Linter.RuleEntry; + /** + * disallow assertions that are known to always accept (or reject) + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-assertions.html + */ + "regexp/no-useless-assertions"?: Linter.RuleEntry<[]>; + /** + * disallow useless backreferences in regular expressions + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-backreference.html + */ + "regexp/no-useless-backreference"?: Linter.RuleEntry<[]>; + /** + * disallow character class with one character + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-character-class.html + */ + "regexp/no-useless-character-class"?: Linter.RuleEntry; + /** + * disallow useless `$` replacements in replacement string + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-dollar-replacements.html + */ + "regexp/no-useless-dollar-replacements"?: Linter.RuleEntry<[]>; + /** + * disallow unnecessary escape characters in RegExp + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-escape.html + */ + "regexp/no-useless-escape"?: Linter.RuleEntry<[]>; + /** + * disallow unnecessary regex flags + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-flag.html + */ + "regexp/no-useless-flag"?: Linter.RuleEntry; + /** + * disallow unnecessarily non-greedy quantifiers + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-lazy.html + */ + "regexp/no-useless-lazy"?: Linter.RuleEntry<[]>; + /** + * disallow unnecessary non-capturing group + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-non-capturing-group.html + */ + "regexp/no-useless-non-capturing-group"?: Linter.RuleEntry; + /** + * disallow quantifiers that can be removed + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-quantifier.html + */ + "regexp/no-useless-quantifier"?: Linter.RuleEntry<[]>; + /** + * disallow unnecessary character ranges + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-range.html + */ + "regexp/no-useless-range"?: Linter.RuleEntry<[]>; + /** + * disallow unnecessary elements in expression character classes + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-set-operand.html + */ + "regexp/no-useless-set-operand"?: Linter.RuleEntry<[]>; + /** + * disallow string disjunction of single characters in `\q{...}` + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-string-literal.html + */ + "regexp/no-useless-string-literal"?: Linter.RuleEntry<[]>; + /** + * disallow unnecessary `{n,m}` quantifier + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-two-nums-quantifier.html + */ + "regexp/no-useless-two-nums-quantifier"?: Linter.RuleEntry<[]>; + /** + * disallow quantifiers with a maximum of zero + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-zero-quantifier.html + */ + "regexp/no-zero-quantifier"?: Linter.RuleEntry<[]>; + /** + * disallow the alternatives of lookarounds that end with a non-constant quantifier + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/optimal-lookaround-quantifier.html + */ + "regexp/optimal-lookaround-quantifier"?: Linter.RuleEntry<[]>; + /** + * require optimal quantifiers for concatenated quantifiers + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/optimal-quantifier-concatenation.html + */ + "regexp/optimal-quantifier-concatenation"?: Linter.RuleEntry; + /** + * enforce using character class + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-character-class.html + */ + "regexp/prefer-character-class"?: Linter.RuleEntry; + /** + * enforce using `\d` + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-d.html + */ + "regexp/prefer-d"?: Linter.RuleEntry; + /** + * enforces escape of replacement `$` character (`$$`). + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-escape-replacement-dollar-char.html + */ + "regexp/prefer-escape-replacement-dollar-char"?: Linter.RuleEntry<[]>; + /** + * prefer lookarounds over capturing group that do not replace + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-lookaround.html + */ + "regexp/prefer-lookaround"?: Linter.RuleEntry; + /** + * enforce using named backreferences + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-named-backreference.html + */ + "regexp/prefer-named-backreference"?: Linter.RuleEntry<[]>; + /** + * enforce using named capture groups + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-named-capture-group.html + */ + "regexp/prefer-named-capture-group"?: Linter.RuleEntry<[]>; + /** + * enforce using named replacement + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-named-replacement.html + */ + "regexp/prefer-named-replacement"?: Linter.RuleEntry; + /** + * enforce using `+` quantifier + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-plus-quantifier.html + */ + "regexp/prefer-plus-quantifier"?: Linter.RuleEntry<[]>; + /** + * prefer predefined assertion over equivalent lookarounds + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-predefined-assertion.html + */ + "regexp/prefer-predefined-assertion"?: Linter.RuleEntry<[]>; + /** + * enforce using quantifier + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-quantifier.html + */ + "regexp/prefer-quantifier"?: Linter.RuleEntry<[]>; + /** + * enforce using `?` quantifier + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-question-quantifier.html + */ + "regexp/prefer-question-quantifier"?: Linter.RuleEntry<[]>; + /** + * enforce using character class range + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-range.html + */ + "regexp/prefer-range"?: Linter.RuleEntry; + /** + * enforce that `RegExp#exec` is used instead of `String#match` if no global flag is provided + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-regexp-exec.html + */ + "regexp/prefer-regexp-exec"?: Linter.RuleEntry<[]>; + /** + * enforce that `RegExp#test` is used instead of `String#match` and `RegExp#exec` + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-regexp-test.html + */ + "regexp/prefer-regexp-test"?: Linter.RuleEntry<[]>; + /** + * enforce using result array `groups` + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-result-array-groups.html + */ + "regexp/prefer-result-array-groups"?: Linter.RuleEntry; + /** + * prefer character class set operations instead of lookarounds + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-set-operation.html + */ + "regexp/prefer-set-operation"?: Linter.RuleEntry<[]>; + /** + * enforce using `*` quantifier + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-star-quantifier.html + */ + "regexp/prefer-star-quantifier"?: Linter.RuleEntry<[]>; + /** + * enforce use of unicode codepoint escapes + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-unicode-codepoint-escapes.html + */ + "regexp/prefer-unicode-codepoint-escapes"?: Linter.RuleEntry<[]>; + /** + * enforce using `\w` + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-w.html + */ + "regexp/prefer-w"?: Linter.RuleEntry<[]>; + /** + * enforce the use of the `u` flag + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/require-unicode-regexp.html + */ + "regexp/require-unicode-regexp"?: Linter.RuleEntry<[]>; + /** + * enforce the use of the `v` flag + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/require-unicode-sets-regexp.html + */ + "regexp/require-unicode-sets-regexp"?: Linter.RuleEntry<[]>; + /** + * require simplify set operations + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/simplify-set-operations.html + */ + "regexp/simplify-set-operations"?: Linter.RuleEntry<[]>; + /** + * sort alternatives if order doesn't matter + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/sort-alternatives.html + */ + "regexp/sort-alternatives"?: Linter.RuleEntry<[]>; + /** + * enforces elements order in character class + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/sort-character-class-elements.html + */ + "regexp/sort-character-class-elements"?: Linter.RuleEntry; + /** + * require regex flags to be sorted + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/sort-flags.html + */ + "regexp/sort-flags"?: Linter.RuleEntry<[]>; + /** + * disallow not strictly valid regular expressions + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/strict.html + */ + "regexp/strict"?: Linter.RuleEntry<[]>; + /** + * enforce consistent usage of unicode escape or unicode codepoint escape + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/unicode-escape.html + */ + "regexp/unicode-escape"?: Linter.RuleEntry; + /** + * enforce consistent naming of unicode properties + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/unicode-property.html + */ + "regexp/unicode-property"?: Linter.RuleEntry; + /** + * use the `i` flag if it simplifies the pattern + * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/use-ignore-case.html + */ + "regexp/use-ignore-case"?: Linter.RuleEntry<[]>; + /** + * Automatically sort exports. + * @see https://github.com/lydell/eslint-plugin-simple-import-sort#sort-order + */ + "simple-import-sort/exports"?: Linter.RuleEntry<[]>; + /** + * Automatically sort imports. + * @see https://github.com/lydell/eslint-plugin-simple-import-sort#sort-order + */ + "simple-import-sort/imports"?: Linter.RuleEntry; + /** + * Alternatives in regular expressions should be grouped when used with anchors + * @see https://sonarsource.github.io/rspec/#/rspec/S5850/javascript + */ + "sonarjs/anchor-precedence"?: Linter.RuleEntry<[]>; + /** + * Arguments to built-in functions should match documented types + * @see https://sonarsource.github.io/rspec/#/rspec/S3782/javascript + */ + "sonarjs/argument-type"?: Linter.RuleEntry<[]>; + /** + * Parameters should be passed in the correct order + * @see https://sonarsource.github.io/rspec/#/rspec/S2234/javascript + */ + "sonarjs/arguments-order"?: Linter.RuleEntry; + /** + * "arguments" should not be accessed directly + * @see https://sonarsource.github.io/rspec/#/rspec/S3513/javascript + */ + "sonarjs/arguments-usage"?: Linter.RuleEntry; + /** + * Callbacks of array methods should have return statements + * @see https://sonarsource.github.io/rspec/#/rspec/S3796/javascript + */ + "sonarjs/array-callback-without-return"?: Linter.RuleEntry<[]>; + /** + * Array constructors should not be used + * @see https://sonarsource.github.io/rspec/#/rspec/S1528/javascript + */ + "sonarjs/array-constructor"?: Linter.RuleEntry<[]>; + /** + * Braces and parentheses should be used consistently with arrow functions + * @see https://sonarsource.github.io/rspec/#/rspec/S3524/javascript + */ + "sonarjs/arrow-function-convention"?: Linter.RuleEntry; + /** + * Tests should include assertions + * @see https://sonarsource.github.io/rspec/#/rspec/S2699/javascript + */ + "sonarjs/assertions-in-tests"?: Linter.RuleEntry<[]>; + /** + * Creating public APIs is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6333/javascript + */ + "sonarjs/aws-apigateway-public-api"?: Linter.RuleEntry<[]>; + /** + * Allowing public network access to cloud resources is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6329/javascript + */ + "sonarjs/aws-ec2-rds-dms-public"?: Linter.RuleEntry<[]>; + /** + * Using unencrypted EBS volumes is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6275/javascript + */ + "sonarjs/aws-ec2-unencrypted-ebs-volume"?: Linter.RuleEntry<[]>; + /** + * Using unencrypted EFS file systems is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6332/javascript + */ + "sonarjs/aws-efs-unencrypted"?: Linter.RuleEntry<[]>; + /** + * Policies granting all privileges are security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6302/javascript + */ + "sonarjs/aws-iam-all-privileges"?: Linter.RuleEntry; + /** + * Policies granting access to all resources of an account are security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6304/javascript + */ + "sonarjs/aws-iam-all-resources-accessible"?: Linter.RuleEntry; + /** + * AWS IAM policies should limit the scope of permissions given + * @see https://sonarsource.github.io/rspec/#/rspec/S6317/javascript + */ + "sonarjs/aws-iam-privilege-escalation"?: Linter.RuleEntry; + /** + * Policies authorizing public access to resources are security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6270/javascript + */ + "sonarjs/aws-iam-public-access"?: Linter.RuleEntry; + /** + * Using unencrypted Elasticsearch domains is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6308/javascript + */ + "sonarjs/aws-opensearchservice-domain"?: Linter.RuleEntry<[]>; + /** + * Using unencrypted RDS DB resources is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6303/javascript + */ + "sonarjs/aws-rds-unencrypted-databases"?: Linter.RuleEntry<[]>; + /** + * Administration services access should be restricted to specific IP addresses + * @see https://sonarsource.github.io/rspec/#/rspec/S6321/javascript + */ + "sonarjs/aws-restricted-ip-admin-access"?: Linter.RuleEntry<[]>; + /** + * Granting access to S3 buckets to all or authenticated users is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6265/javascript + */ + "sonarjs/aws-s3-bucket-granted-access"?: Linter.RuleEntry; + /** + * Authorizing HTTP communications with S3 buckets is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6249/javascript + */ + "sonarjs/aws-s3-bucket-insecure-http"?: Linter.RuleEntry<[]>; + /** + * Allowing public ACLs or policies on a S3 bucket is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6281/javascript + */ + "sonarjs/aws-s3-bucket-public-access"?: Linter.RuleEntry; + /** + * Disabling server-side encryption of S3 buckets is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6245/javascript + * @deprecated + */ + "sonarjs/aws-s3-bucket-server-encryption"?: Linter.RuleEntry; + /** + * Disabling versioning of S3 buckets is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6252/javascript + */ + "sonarjs/aws-s3-bucket-versioning"?: Linter.RuleEntry; + /** + * Using unencrypted SageMaker notebook instances is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6319/javascript + */ + "sonarjs/aws-sagemaker-unencrypted-notebook"?: Linter.RuleEntry<[]>; + /** + * Using unencrypted SNS topics is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6327/javascript + */ + "sonarjs/aws-sns-unencrypted-topics"?: Linter.RuleEntry<[]>; + /** + * Using unencrypted SQS queues is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6330/javascript + */ + "sonarjs/aws-sqs-unencrypted-queue"?: Linter.RuleEntry<[]>; + /** + * Bitwise operators should not be used in boolean contexts + * @see https://sonarsource.github.io/rspec/#/rspec/S1529/javascript + */ + "sonarjs/bitwise-operators"?: Linter.RuleEntry<[]>; + /** + * Variables should be used in the blocks where they are declared + * @see https://sonarsource.github.io/rspec/#/rspec/S2392/javascript + */ + "sonarjs/block-scoped-var"?: Linter.RuleEntry; + /** + * Optional boolean parameters should have default value + * @see https://sonarsource.github.io/rspec/#/rspec/S4798/javascript + */ + "sonarjs/bool-param-default"?: Linter.RuleEntry<[]>; + /** + * Function call arguments should not start on new lines + * @see https://sonarsource.github.io/rspec/#/rspec/S1472/javascript + */ + "sonarjs/call-argument-line"?: Linter.RuleEntry<[]>; + /** + * Disabling Certificate Transparency monitoring is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5742/javascript + * @deprecated + */ + "sonarjs/certificate-transparency"?: Linter.RuleEntry; + /** + * Chai assertions should have only one reason to succeed + * @see https://sonarsource.github.io/rspec/#/rspec/S6092/javascript + */ + "sonarjs/chai-determinate-assertion"?: Linter.RuleEntry<[]>; + /** + * Class names should comply with a naming convention + * @see https://sonarsource.github.io/rspec/#/rspec/S101/javascript + */ + "sonarjs/class-name"?: Linter.RuleEntry; + /** + * Class methods should be used instead of "prototype" assignments + * @see https://sonarsource.github.io/rspec/#/rspec/S3525/javascript + */ + "sonarjs/class-prototype"?: Linter.RuleEntry<[]>; + /** + * Dynamically executing code is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S1523/javascript + */ + "sonarjs/code-eval"?: Linter.RuleEntry<[]>; + /** + * Cognitive Complexity of functions should not be too high + * @see https://sonarsource.github.io/rspec/#/rspec/S3776/javascript + */ + "sonarjs/cognitive-complexity"?: Linter.RuleEntry; + /** + * Comma and logical OR operators should not be used in switch cases + * @see https://sonarsource.github.io/rspec/#/rspec/S3616/javascript + */ + "sonarjs/comma-or-logical-or-case"?: Linter.RuleEntry<[]>; + /** + * Track comments matching a regular expression + * @see https://sonarsource.github.io/rspec/#/rspec/S124/javascript + */ + "sonarjs/comment-regex"?: Linter.RuleEntry; + /** + * Regular expression quantifiers and character classes should be used concisely + * @see https://sonarsource.github.io/rspec/#/rspec/S6353/javascript + */ + "sonarjs/concise-regex"?: Linter.RuleEntry<[]>; + /** + * A conditionally executed single line should be denoted by indentation + * @see https://sonarsource.github.io/rspec/#/rspec/S3973/javascript + * @deprecated + */ + "sonarjs/conditional-indentation"?: Linter.RuleEntry; + /** + * Allowing confidential information to be logged is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5757/javascript + */ + "sonarjs/confidential-information-logging"?: Linter.RuleEntry; + /** + * Objects should not be created to be dropped immediately without being used + * @see https://sonarsource.github.io/rspec/#/rspec/S1848/javascript + */ + "sonarjs/constructor-for-side-effects"?: Linter.RuleEntry<[]>; + /** + * Allowing requests with excessive content length is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5693/javascript + */ + "sonarjs/content-length"?: Linter.RuleEntry; + /** + * Disabling content security policy fetch directives is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5728/javascript + */ + "sonarjs/content-security-policy"?: Linter.RuleEntry; + /** + * Creating cookies without the "HttpOnly" flag is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S3330/javascript + */ + "sonarjs/cookie-no-httponly"?: Linter.RuleEntry; + /** + * Writing cookies is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S2255/javascript + * @deprecated + */ + "sonarjs/cookies"?: Linter.RuleEntry<[]>; + /** + * Having a permissive Cross-Origin Resource Sharing policy is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5122/javascript + */ + "sonarjs/cors"?: Linter.RuleEntry; + /** + * Disabling CSRF protections is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S4502/javascript + */ + "sonarjs/csrf"?: Linter.RuleEntry; + /** + * Cyclomatic Complexity of functions should not be too high + * @see https://sonarsource.github.io/rspec/#/rspec/S1541/javascript + */ + "sonarjs/cyclomatic-complexity"?: Linter.RuleEntry; + /** + * Variables and functions should not be declared in the global scope + * @see https://sonarsource.github.io/rspec/#/rspec/S3798/javascript + */ + "sonarjs/declarations-in-global-scope"?: Linter.RuleEntry<[]>; + /** + * Deprecated APIs should not be used + * @see https://sonarsource.github.io/rspec/#/rspec/S1874/javascript + */ + "sonarjs/deprecation"?: Linter.RuleEntry<[]>; + /** + * Destructuring syntax should be used for assignments + * @see https://sonarsource.github.io/rspec/#/rspec/S3514/javascript + */ + "sonarjs/destructuring-assignment-syntax"?: Linter.RuleEntry; + /** + * Strict equality operators should not be used with dissimilar types + * @see https://sonarsource.github.io/rspec/#/rspec/S3403/javascript + */ + "sonarjs/different-types-comparison"?: Linter.RuleEntry; + /** + * Disabling auto-escaping in template engines is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5247/javascript + */ + "sonarjs/disabled-auto-escaping"?: Linter.RuleEntry; + /** + * Using remote artifacts without integrity checks is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5725/javascript + */ + "sonarjs/disabled-resource-integrity"?: Linter.RuleEntry<[]>; + /** + * Disabling Mocha timeouts should be explicit + * @see https://sonarsource.github.io/rspec/#/rspec/S6080/javascript + */ + "sonarjs/disabled-timeout"?: Linter.RuleEntry<[]>; + /** + * Allowing browsers to perform DNS prefetching is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5743/javascript + * @deprecated + */ + "sonarjs/dns-prefetching"?: Linter.RuleEntry; + /** + * Character classes in regular expressions should not contain the same character twice + * @see https://sonarsource.github.io/rspec/#/rspec/S5869/javascript + */ + "sonarjs/duplicates-in-character-class"?: Linter.RuleEntry; + /** + * "if ... else if" constructs should end with "else" clauses + * @see https://sonarsource.github.io/rspec/#/rspec/S126/javascript + */ + "sonarjs/elseif-without-else"?: Linter.RuleEntry<[]>; + /** + * Repeated patterns in regular expressions should not match the empty string + * @see https://sonarsource.github.io/rspec/#/rspec/S5842/javascript + */ + "sonarjs/empty-string-repetition"?: Linter.RuleEntry<[]>; + /** + * Encrypting data is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S4787/javascript + * @deprecated + */ + "sonarjs/encryption"?: Linter.RuleEntry<[]>; + /** + * Encryption algorithms should be used with secure mode and padding scheme + * @see https://sonarsource.github.io/rspec/#/rspec/S5542/javascript + */ + "sonarjs/encryption-secure-mode"?: Linter.RuleEntry<[]>; + /** + * Trailing commas should be used + * @see https://sonarsource.github.io/rspec/#/rspec/S3723/javascript + * @deprecated + */ + "sonarjs/enforce-trailing-comma"?: Linter.RuleEntry; + /** + * Replacement strings should reference existing regular expression groups + * @see https://sonarsource.github.io/rspec/#/rspec/S6328/javascript + */ + "sonarjs/existing-groups"?: Linter.RuleEntry<[]>; + /** + * Expressions should not be too complex + * @see https://sonarsource.github.io/rspec/#/rspec/S1067/javascript + */ + "sonarjs/expression-complexity"?: Linter.RuleEntry; + /** + * Track lack of copyright and license headers + * @see https://sonarsource.github.io/rspec/#/rspec/S1451/javascript + */ + "sonarjs/file-header"?: Linter.RuleEntry; + /** + * Default export names and file names should match + * @see https://sonarsource.github.io/rspec/#/rspec/S3317/javascript + */ + "sonarjs/file-name-differ-from-class"?: Linter.RuleEntry<[]>; + /** + * Setting loose POSIX file permissions is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S2612/javascript + */ + "sonarjs/file-permissions"?: Linter.RuleEntry<[]>; + /** + * File uploads should be restricted + * @see https://sonarsource.github.io/rspec/#/rspec/S2598/javascript + */ + "sonarjs/file-uploads"?: Linter.RuleEntry; + /** + * Track uses of "FIXME" tags + * @see https://sonarsource.github.io/rspec/#/rspec/S1134/javascript + */ + "sonarjs/fixme-tag"?: Linter.RuleEntry<[]>; + /** + * "for...in" loops should filter properties before acting on them + * @see https://sonarsource.github.io/rspec/#/rspec/S1535/javascript + */ + "sonarjs/for-in"?: Linter.RuleEntry<[]>; + /** + * A "for" loop update clause should move the counter in the right direction + * @see https://sonarsource.github.io/rspec/#/rspec/S2251/javascript + */ + "sonarjs/for-loop-increment-sign"?: Linter.RuleEntry; + /** + * Disabling content security policy frame-ancestors directive is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5732/javascript + */ + "sonarjs/frame-ancestors"?: Linter.RuleEntry; + /** + * Functions should not be defined inside loops + * @see https://sonarsource.github.io/rspec/#/rspec/S1515/javascript + */ + "sonarjs/function-inside-loop"?: Linter.RuleEntry; + /** + * Function and method names should comply with a naming convention + * @see https://sonarsource.github.io/rspec/#/rspec/S100/javascript + */ + "sonarjs/function-name"?: Linter.RuleEntry; + /** + * Functions should always return the same type + * @see https://sonarsource.github.io/rspec/#/rspec/S3800/javascript + */ + "sonarjs/function-return-type"?: Linter.RuleEntry; + /** + * Future reserved words should not be used as identifiers + * @see https://sonarsource.github.io/rspec/#/rspec/S1527/javascript + */ + "sonarjs/future-reserved-words"?: Linter.RuleEntry<[]>; + /** + * Generators should explicitly "yield" a value + * @see https://sonarsource.github.io/rspec/#/rspec/S3531/javascript + */ + "sonarjs/generator-without-yield"?: Linter.RuleEntry<[]>; + /** + * Using weak hashing algorithms is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S4790/javascript + */ + "sonarjs/hashing"?: Linter.RuleEntry<[]>; + /** + * Statically serving hidden files is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5691/javascript + */ + "sonarjs/hidden-files"?: Linter.RuleEntry<[]>; + /** + * "in" should not be used with primitive types + * @see https://sonarsource.github.io/rspec/#/rspec/S3785/javascript + */ + "sonarjs/in-operator-type-error"?: Linter.RuleEntry; + /** + * Functions should be called consistently with or without "new" + * @see https://sonarsource.github.io/rspec/#/rspec/S3686/javascript + */ + "sonarjs/inconsistent-function-call"?: Linter.RuleEntry; + /** + * "indexOf" checks should not be for positive numbers + * @see https://sonarsource.github.io/rspec/#/rspec/S2692/javascript + */ + "sonarjs/index-of-compare-to-positive-number"?: Linter.RuleEntry<[]>; + /** + * Creating cookies without the "secure" flag is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S2092/javascript + */ + "sonarjs/insecure-cookie"?: Linter.RuleEntry; + /** + * JWT should be signed and verified with strong cipher algorithms + * @see https://sonarsource.github.io/rspec/#/rspec/S5659/javascript + */ + "sonarjs/insecure-jwt-token"?: Linter.RuleEntry; + /** + * Assertion arguments should be passed in the correct order + * @see https://sonarsource.github.io/rspec/#/rspec/S3415/javascript + */ + "sonarjs/inverted-assertion-arguments"?: Linter.RuleEntry; + /** + * React components should not render non-boolean condition values + * @see https://sonarsource.github.io/rspec/#/rspec/S6439/javascript + */ + "sonarjs/jsx-no-leaked-render"?: Linter.RuleEntry<[]>; + /** + * Only "while", "do", "for" and "switch" statements should be labelled + * @see https://sonarsource.github.io/rspec/#/rspec/S1439/javascript + */ + "sonarjs/label-position"?: Linter.RuleEntry<[]>; + /** + * Authorizing an opened window to access back to the originating window is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5148/javascript + */ + "sonarjs/link-with-target-blank"?: Linter.RuleEntry<[]>; + /** + * Files should not have too many lines of code + * @see https://sonarsource.github.io/rspec/#/rspec/S104/javascript + */ + "sonarjs/max-lines"?: Linter.RuleEntry; + /** + * Functions should not have too many lines of code + * @see https://sonarsource.github.io/rspec/#/rspec/S138/javascript + */ + "sonarjs/max-lines-per-function"?: Linter.RuleEntry; + /** + * "switch" statements should not have too many "case" clauses + * @see https://sonarsource.github.io/rspec/#/rspec/S1479/javascript + */ + "sonarjs/max-switch-cases"?: Linter.RuleEntry; + /** + * Union types should not have too many elements + * @see https://sonarsource.github.io/rspec/#/rspec/S4622/javascript + */ + "sonarjs/max-union-size"?: Linter.RuleEntry; + /** + * "for" loop increment clauses should modify the loops' counters + * @see https://sonarsource.github.io/rspec/#/rspec/S1994/javascript + */ + "sonarjs/misplaced-loop-counter"?: Linter.RuleEntry<[]>; + /** + * Control flow statements "if", "for", "while", "switch" and "try" should not be nested too deeply + * @see https://sonarsource.github.io/rspec/#/rspec/S134/javascript + */ + "sonarjs/nested-control-flow"?: Linter.RuleEntry; + /** + * "new" should only be used with functions and classes + * @see https://sonarsource.github.io/rspec/#/rspec/S2999/javascript + */ + "sonarjs/new-operator-misuse"?: Linter.RuleEntry; + /** + * All branches in a conditional structure should not have exactly the same implementation + * @see https://sonarsource.github.io/rspec/#/rspec/S3923/javascript + */ + "sonarjs/no-all-duplicated-branches"?: Linter.RuleEntry<[]>; + /** + * "Array.prototype.sort()" and "Array.prototype.toSorted()" should use a compare function + * @see https://sonarsource.github.io/rspec/#/rspec/S2871/javascript + */ + "sonarjs/no-alphabetical-sort"?: Linter.RuleEntry<[]>; + /** + * Disabling Angular built-in sanitization is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6268/javascript + */ + "sonarjs/no-angular-bypass-sanitization"?: Linter.RuleEntry<[]>; + /** + * "delete" should not be used on arrays + * @see https://sonarsource.github.io/rspec/#/rspec/S2870/javascript + */ + "sonarjs/no-array-delete"?: Linter.RuleEntry<[]>; + /** + * Array indexes should be numeric + * @see https://sonarsource.github.io/rspec/#/rspec/S3579/javascript + */ + "sonarjs/no-associative-arrays"?: Linter.RuleEntry<[]>; + /** + * Constructors should not contain asynchronous operations + * @see https://sonarsource.github.io/rspec/#/rspec/S7059/javascript + */ + "sonarjs/no-async-constructor"?: Linter.RuleEntry<[]>; + /** + * Built-in objects should not be overridden + * @see https://sonarsource.github.io/rspec/#/rspec/S2424/javascript + */ + "sonarjs/no-built-in-override"?: Linter.RuleEntry<[]>; + /** + * "switch" statements should not contain non-case labels + * @see https://sonarsource.github.io/rspec/#/rspec/S1219/javascript + */ + "sonarjs/no-case-label-in-switch"?: Linter.RuleEntry<[]>; + /** + * Using clear-text protocols is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5332/javascript + */ + "sonarjs/no-clear-text-protocols"?: Linter.RuleEntry<[]>; + /** + * Tests should not execute any code after "done()" is called + * @see https://sonarsource.github.io/rspec/#/rspec/S6079/javascript + */ + "sonarjs/no-code-after-done"?: Linter.RuleEntry; + /** + * Mergeable "if" statements should be combined + * @see https://sonarsource.github.io/rspec/#/rspec/S1066/javascript + */ + "sonarjs/no-collapsible-if"?: Linter.RuleEntry; + /** + * Collection size and array length comparisons should make sense + * @see https://sonarsource.github.io/rspec/#/rspec/S3981/javascript + */ + "sonarjs/no-collection-size-mischeck"?: Linter.RuleEntry<[]>; + /** + * Sections of code should not be commented out + * @see https://sonarsource.github.io/rspec/#/rspec/S125/javascript + */ + "sonarjs/no-commented-code"?: Linter.RuleEntry<[]>; + /** + * Regular expressions should not contain control characters + * @see https://sonarsource.github.io/rspec/#/rspec/S6324/javascript + */ + "sonarjs/no-control-regex"?: Linter.RuleEntry<[]>; + /** + * Unused assignments should be removed + * @see https://sonarsource.github.io/rspec/#/rspec/S1854/javascript + */ + "sonarjs/no-dead-store"?: Linter.RuleEntry<[]>; + /** + * "delete" should be used only with object properties + * @see https://sonarsource.github.io/rspec/#/rspec/S3001/javascript + */ + "sonarjs/no-delete-var"?: Linter.RuleEntry<[]>; + /** + * Union and intersection types should not include duplicated constituents + * @see https://sonarsource.github.io/rspec/#/rspec/S4621/javascript + */ + "sonarjs/no-duplicate-in-composite"?: Linter.RuleEntry; + /** + * String literals should not be duplicated + * @see https://sonarsource.github.io/rspec/#/rspec/S1192/javascript + */ + "sonarjs/no-duplicate-string"?: Linter.RuleEntry; + /** + * Two branches in a conditional structure should not have exactly the same implementation + * @see https://sonarsource.github.io/rspec/#/rspec/S1871/javascript + */ + "sonarjs/no-duplicated-branches"?: Linter.RuleEntry; + /** + * Collection elements should not be replaced unconditionally + * @see https://sonarsource.github.io/rspec/#/rspec/S4143/javascript + */ + "sonarjs/no-element-overwrite"?: Linter.RuleEntry; + /** + * Reluctant quantifiers in regular expressions should be followed by an expression that can't match the empty string + * @see https://sonarsource.github.io/rspec/#/rspec/S6019/javascript + */ + "sonarjs/no-empty-after-reluctant"?: Linter.RuleEntry<[]>; + /** + * Alternation in regular expressions should not contain empty alternatives + * @see https://sonarsource.github.io/rspec/#/rspec/S6323/javascript + */ + "sonarjs/no-empty-alternatives"?: Linter.RuleEntry<[]>; + /** + * Empty character classes should not be used + * @see https://sonarsource.github.io/rspec/#/rspec/S2639/javascript + */ + "sonarjs/no-empty-character-class"?: Linter.RuleEntry<[]>; + /** + * Empty collections should not be accessed or iterated + * @see https://sonarsource.github.io/rspec/#/rspec/S4158/javascript + */ + "sonarjs/no-empty-collection"?: Linter.RuleEntry<[]>; + /** + * Regular expressions should not contain empty groups + * @see https://sonarsource.github.io/rspec/#/rspec/S6331/javascript + */ + "sonarjs/no-empty-group"?: Linter.RuleEntry<[]>; + /** + * Test files should contain at least one test case + * @see https://sonarsource.github.io/rspec/#/rspec/S2187/javascript + */ + "sonarjs/no-empty-test-file"?: Linter.RuleEntry<[]>; + /** + * Equality operators should not be used in "for" loop termination conditions + * @see https://sonarsource.github.io/rspec/#/rspec/S888/javascript + */ + "sonarjs/no-equals-in-for-termination"?: Linter.RuleEntry<[]>; + /** + * Exclusive tests should not be commited to version control + * @see https://sonarsource.github.io/rspec/#/rspec/S6426/javascript + */ + "sonarjs/no-exclusive-tests"?: Linter.RuleEntry<[]>; + /** + * Function calls should not pass extra arguments + * @see https://sonarsource.github.io/rspec/#/rspec/S930/javascript + */ + "sonarjs/no-extra-arguments"?: Linter.RuleEntry; + /** + * Switch cases should end with an unconditional "break" statement + * @see https://sonarsource.github.io/rspec/#/rspec/S128/javascript + */ + "sonarjs/no-fallthrough"?: Linter.RuleEntry<[]>; + /** + * "for in" should not be used with iterables + * @see https://sonarsource.github.io/rspec/#/rspec/S4139/javascript + */ + "sonarjs/no-for-in-iterable"?: Linter.RuleEntry<[]>; + /** + * Function declarations should not be made within blocks + * @see https://sonarsource.github.io/rspec/#/rspec/S1530/javascript + */ + "sonarjs/no-function-declaration-in-block"?: Linter.RuleEntry<[]>; + /** + * The global "this" object should not be used + * @see https://sonarsource.github.io/rspec/#/rspec/S2990/javascript + */ + "sonarjs/no-global-this"?: Linter.RuleEntry<[]>; + /** + * Special identifiers should not be bound or assigned + * @see https://sonarsource.github.io/rspec/#/rspec/S2137/javascript + */ + "sonarjs/no-globals-shadowing"?: Linter.RuleEntry<[]>; + /** + * Boolean expressions should not be gratuitous + * @see https://sonarsource.github.io/rspec/#/rspec/S2589/javascript + */ + "sonarjs/no-gratuitous-expressions"?: Linter.RuleEntry; + /** + * Using hardcoded IP addresses is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S1313/javascript + */ + "sonarjs/no-hardcoded-ip"?: Linter.RuleEntry<[]>; + /** + * Hard-coded passwords are security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S2068/javascript + */ + "sonarjs/no-hardcoded-passwords"?: Linter.RuleEntry; + /** + * Hard-coded secrets are security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6418/javascript + */ + "sonarjs/no-hardcoded-secrets"?: Linter.RuleEntry; + /** + * React's useState hook should not be used directly in the render function or body of a component + * @see https://sonarsource.github.io/rspec/#/rspec/S6442/javascript + */ + "sonarjs/no-hook-setter-in-body"?: Linter.RuleEntry<[]>; + /** + * "if/else if" chains and "switch" cases should not have the same condition + * @see https://sonarsource.github.io/rspec/#/rspec/S1862/javascript + */ + "sonarjs/no-identical-conditions"?: Linter.RuleEntry; + /** + * Identical expressions should not be used on both sides of a binary operator + * @see https://sonarsource.github.io/rspec/#/rspec/S1764/javascript + */ + "sonarjs/no-identical-expressions"?: Linter.RuleEntry; + /** + * Functions should not have identical implementations + * @see https://sonarsource.github.io/rspec/#/rspec/S4144/javascript + */ + "sonarjs/no-identical-functions"?: Linter.RuleEntry; + /** + * Exceptions should not be ignored + * @see https://sonarsource.github.io/rspec/#/rspec/S2486/javascript + */ + "sonarjs/no-ignored-exceptions"?: Linter.RuleEntry<[]>; + /** + * Return values from functions without side effects should not be ignored + * @see https://sonarsource.github.io/rspec/#/rspec/S2201/javascript + */ + "sonarjs/no-ignored-return"?: Linter.RuleEntry<[]>; + /** + * Dependencies should be explicit + * @see https://sonarsource.github.io/rspec/#/rspec/S4328/javascript + */ + "sonarjs/no-implicit-dependencies"?: Linter.RuleEntry; + /** + * Variables should be declared explicitly + * @see https://sonarsource.github.io/rspec/#/rspec/S2703/javascript + */ + "sonarjs/no-implicit-global"?: Linter.RuleEntry<[]>; + /** + * "in" should not be used on arrays + * @see https://sonarsource.github.io/rspec/#/rspec/S4619/javascript + */ + "sonarjs/no-in-misuse"?: Linter.RuleEntry<[]>; + /** + * Assertions should be complete + * @see https://sonarsource.github.io/rspec/#/rspec/S2970/javascript + */ + "sonarjs/no-incomplete-assertions"?: Linter.RuleEntry<[]>; + /** + * Functions should use "return" consistently + * @see https://sonarsource.github.io/rspec/#/rspec/S3801/javascript + */ + "sonarjs/no-inconsistent-returns"?: Linter.RuleEntry; + /** + * Strings and non-strings should not be added + * @see https://sonarsource.github.io/rspec/#/rspec/S3402/javascript + */ + "sonarjs/no-incorrect-string-concat"?: Linter.RuleEntry; + /** + * Users should not use internal APIs + * @see https://sonarsource.github.io/rspec/#/rspec/S6627/javascript + */ + "sonarjs/no-internal-api-use"?: Linter.RuleEntry<[]>; + /** + * Using intrusive permissions is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5604/javascript + */ + "sonarjs/no-intrusive-permissions"?: Linter.RuleEntry; + /** + * "await" should only be used with promises + * @see https://sonarsource.github.io/rspec/#/rspec/S4123/javascript + */ + "sonarjs/no-invalid-await"?: Linter.RuleEntry<[]>; + /** + * Regular expressions should be syntactically valid + * @see https://sonarsource.github.io/rspec/#/rspec/S5856/javascript + */ + "sonarjs/no-invalid-regexp"?: Linter.RuleEntry<[]>; + /** + * Function returns should not be invariant + * @see https://sonarsource.github.io/rspec/#/rspec/S3516/javascript + */ + "sonarjs/no-invariant-returns"?: Linter.RuleEntry; + /** + * Boolean checks should not be inverted + * @see https://sonarsource.github.io/rspec/#/rspec/S1940/javascript + */ + "sonarjs/no-inverted-boolean-check"?: Linter.RuleEntry<[]>; + /** + * Forwarding client IP address is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5759/javascript + */ + "sonarjs/no-ip-forward"?: Linter.RuleEntry; + /** + * Labels should not be used + * @see https://sonarsource.github.io/rspec/#/rspec/S1119/javascript + */ + "sonarjs/no-labels"?: Linter.RuleEntry<[]>; + /** + * Literals should not be used as functions + * @see https://sonarsource.github.io/rspec/#/rspec/S6958/javascript + */ + "sonarjs/no-literal-call"?: Linter.RuleEntry<[]>; + /** + * Allowing browsers to sniff MIME types is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5734/javascript + */ + "sonarjs/no-mime-sniff"?: Linter.RuleEntry; + /** + * Array-mutating methods should not be used misleadingly + * @see https://sonarsource.github.io/rspec/#/rspec/S4043/javascript + */ + "sonarjs/no-misleading-array-reverse"?: Linter.RuleEntry<[]>; + /** + * Unicode Grapheme Clusters should be avoided inside regex character classes + * @see https://sonarsource.github.io/rspec/#/rspec/S5868/javascript + */ + "sonarjs/no-misleading-character-class"?: Linter.RuleEntry<[]>; + /** + * Allowing mixed-content is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5730/javascript + */ + "sonarjs/no-mixed-content"?: Linter.RuleEntry; + /** + * Assignments should not be made from within sub-expressions + * @see https://sonarsource.github.io/rspec/#/rspec/S1121/javascript + */ + "sonarjs/no-nested-assignment"?: Linter.RuleEntry<[]>; + /** + * Ternary operators should not be nested + * @see https://sonarsource.github.io/rspec/#/rspec/S3358/javascript + */ + "sonarjs/no-nested-conditional"?: Linter.RuleEntry<[]>; + /** + * Functions should not be nested too deeply + * @see https://sonarsource.github.io/rspec/#/rspec/S2004/javascript + */ + "sonarjs/no-nested-functions"?: Linter.RuleEntry; + /** + * Increment (++) and decrement (--) operators should not be used in a method call or mixed with other operators in an expression + * @see https://sonarsource.github.io/rspec/#/rspec/S881/javascript + */ + "sonarjs/no-nested-incdec"?: Linter.RuleEntry<[]>; + /** + * "switch" statements should not be nested + * @see https://sonarsource.github.io/rspec/#/rspec/S1821/javascript + */ + "sonarjs/no-nested-switch"?: Linter.RuleEntry<[]>; + /** + * Template literals should not be nested + * @see https://sonarsource.github.io/rspec/#/rspec/S4624/javascript + */ + "sonarjs/no-nested-template-literals"?: Linter.RuleEntry<[]>; + /** + * Loops with at most one iteration should be refactored + * @see https://sonarsource.github.io/rspec/#/rspec/S1751/javascript + */ + "sonarjs/no-one-iteration-loop"?: Linter.RuleEntry<[]>; + /** + * Searching OS commands in PATH is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S4036/javascript + */ + "sonarjs/no-os-command-from-path"?: Linter.RuleEntry<[]>; + /** + * Initial values of parameters, caught exceptions, and loop variables should not be ignored + * @see https://sonarsource.github.io/rspec/#/rspec/S1226/javascript + */ + "sonarjs/no-parameter-reassignment"?: Linter.RuleEntry<[]>; + /** + * Wrapper objects should not be used for primitive types + * @see https://sonarsource.github.io/rspec/#/rspec/S1533/javascript + */ + "sonarjs/no-primitive-wrappers"?: Linter.RuleEntry<[]>; + /** + * Assignments should not be redundant + * @see https://sonarsource.github.io/rspec/#/rspec/S4165/javascript + */ + "sonarjs/no-redundant-assignments"?: Linter.RuleEntry<[]>; + /** + * Boolean literals should not be used in comparisons + * @see https://sonarsource.github.io/rspec/#/rspec/S1125/javascript + */ + "sonarjs/no-redundant-boolean"?: Linter.RuleEntry<[]>; + /** + * Jump statements should not be redundant + * @see https://sonarsource.github.io/rspec/#/rspec/S3626/javascript + */ + "sonarjs/no-redundant-jump"?: Linter.RuleEntry<[]>; + /** + * Optional property declarations should not use both '?' and 'undefined' syntax + * @see https://sonarsource.github.io/rspec/#/rspec/S4782/javascript + */ + "sonarjs/no-redundant-optional"?: Linter.RuleEntry; + /** + * Redundant pairs of parentheses should be removed + * @see https://sonarsource.github.io/rspec/#/rspec/S1110/javascript + * @deprecated + */ + "sonarjs/no-redundant-parentheses"?: Linter.RuleEntry; + /** + * Variables should be defined before being used + * @see https://sonarsource.github.io/rspec/#/rspec/S3827/javascript + */ + "sonarjs/no-reference-error"?: Linter.RuleEntry; + /** + * Disabling strict HTTP no-referrer policy is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5736/javascript + */ + "sonarjs/no-referrer-policy"?: Linter.RuleEntry; + /** + * Regular expressions should not contain multiple spaces + * @see https://sonarsource.github.io/rspec/#/rspec/S6326/javascript + */ + "sonarjs/no-regex-spaces"?: Linter.RuleEntry<[]>; + /** + * "import" should be used to include external code + * @see https://sonarsource.github.io/rspec/#/rspec/S3533/javascript + */ + "sonarjs/no-require-or-define"?: Linter.RuleEntry<[]>; + /** + * Primitive return types should be used + * @see https://sonarsource.github.io/rspec/#/rspec/S4324/javascript + */ + "sonarjs/no-return-type-any"?: Linter.RuleEntry<[]>; + /** + * Assertions should not be given twice the same argument + * @see https://sonarsource.github.io/rspec/#/rspec/S5863/javascript + */ + "sonarjs/no-same-argument-assert"?: Linter.RuleEntry; + /** + * Conditionals should start on new lines + * @see https://sonarsource.github.io/rspec/#/rspec/S3972/javascript + */ + "sonarjs/no-same-line-conditional"?: Linter.RuleEntry; + /** + * Methods should not contain selector parameters + * @see https://sonarsource.github.io/rspec/#/rspec/S2301/javascript + */ + "sonarjs/no-selector-parameter"?: Linter.RuleEntry; + /** + * Tests should not be skipped without providing a reason + * @see https://sonarsource.github.io/rspec/#/rspec/S1607/javascript + */ + "sonarjs/no-skipped-tests"?: Linter.RuleEntry<[]>; + /** + * "if" statements should be preferred over "switch" when simpler + * @see https://sonarsource.github.io/rspec/#/rspec/S1301/javascript + */ + "sonarjs/no-small-switch"?: Linter.RuleEntry<[]>; + /** + * Track uses of "NOSONAR" comments + * @see https://sonarsource.github.io/rspec/#/rspec/S1291/javascript + */ + "sonarjs/no-sonar-comments"?: Linter.RuleEntry<[]>; + /** + * Tabulation characters should not be used + * @see https://sonarsource.github.io/rspec/#/rspec/S105/javascript + * @deprecated + */ + "sonarjs/no-tab"?: Linter.RuleEntry<[]>; + /** + * HTML "" should not be used for layout purposes + * @see https://sonarsource.github.io/rspec/#/rspec/S5257/javascript + */ + "sonarjs/no-table-as-layout"?: Linter.RuleEntry<[]>; + /** + * Promise rejections should not be caught by "try" blocks + * @see https://sonarsource.github.io/rspec/#/rspec/S4822/javascript + */ + "sonarjs/no-try-promise"?: Linter.RuleEntry; + /** + * "undefined" should not be passed as the value of optional parameters + * @see https://sonarsource.github.io/rspec/#/rspec/S4623/javascript + */ + "sonarjs/no-undefined-argument"?: Linter.RuleEntry<[]>; + /** + * "undefined" should not be assigned + * @see https://sonarsource.github.io/rspec/#/rspec/S2138/javascript + */ + "sonarjs/no-undefined-assignment"?: Linter.RuleEntry<[]>; + /** + * Multiline blocks should be enclosed in curly braces + * @see https://sonarsource.github.io/rspec/#/rspec/S2681/javascript + */ + "sonarjs/no-unenclosed-multiline-block"?: Linter.RuleEntry<[]>; + /** + * JSX list components keys should match up between renders + * @see https://sonarsource.github.io/rspec/#/rspec/S6486/javascript + */ + "sonarjs/no-uniq-key"?: Linter.RuleEntry<[]>; + /** + * Expanding archive files without controlling resource consumption is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5042/javascript + */ + "sonarjs/no-unsafe-unzip"?: Linter.RuleEntry<[]>; + /** + * Errors should not be created without being thrown + * @see https://sonarsource.github.io/rspec/#/rspec/S3984/javascript + */ + "sonarjs/no-unthrown-error"?: Linter.RuleEntry<[]>; + /** + * Collection contents should be used + * @see https://sonarsource.github.io/rspec/#/rspec/S4030/javascript + */ + "sonarjs/no-unused-collection"?: Linter.RuleEntry<[]>; + /** + * Unused function parameters should be removed + * @see https://sonarsource.github.io/rspec/#/rspec/S1172/javascript + */ + "sonarjs/no-unused-function-argument"?: Linter.RuleEntry<[]>; + /** + * Unused local variables and functions should be removed + * @see https://sonarsource.github.io/rspec/#/rspec/S1481/javascript + */ + "sonarjs/no-unused-vars"?: Linter.RuleEntry<[]>; + /** + * The return value of void functions should not be used + * @see https://sonarsource.github.io/rspec/#/rspec/S3699/javascript + */ + "sonarjs/no-use-of-empty-return-value"?: Linter.RuleEntry<[]>; + /** + * "catch" clauses should do more than rethrow + * @see https://sonarsource.github.io/rspec/#/rspec/S2737/javascript + */ + "sonarjs/no-useless-catch"?: Linter.RuleEntry<[]>; + /** + * Values should not be uselessly incremented + * @see https://sonarsource.github.io/rspec/#/rspec/S2123/javascript + */ + "sonarjs/no-useless-increment"?: Linter.RuleEntry<[]>; + /** + * Type intersections should use meaningful types + * @see https://sonarsource.github.io/rspec/#/rspec/S4335/javascript + */ + "sonarjs/no-useless-intersection"?: Linter.RuleEntry<[]>; + /** + * React state setter function should not be called with its matching state variable + * @see https://sonarsource.github.io/rspec/#/rspec/S6443/javascript + */ + "sonarjs/no-useless-react-setstate"?: Linter.RuleEntry<[]>; + /** + * Variables declared with "var" should be declared before they are used + * @see https://sonarsource.github.io/rspec/#/rspec/S1526/javascript + */ + "sonarjs/no-variable-usage-before-declaration"?: Linter.RuleEntry; + /** + * Disabling Vue.js built-in escaping is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S6299/javascript + * @deprecated + */ + "sonarjs/no-vue-bypass-sanitization"?: Linter.RuleEntry<[]>; + /** + * Cipher algorithms should be robust + * @see https://sonarsource.github.io/rspec/#/rspec/S5547/javascript + */ + "sonarjs/no-weak-cipher"?: Linter.RuleEntry<[]>; + /** + * Cryptographic keys should be robust + * @see https://sonarsource.github.io/rspec/#/rspec/S4426/javascript + */ + "sonarjs/no-weak-keys"?: Linter.RuleEntry<[]>; + /** + * Wildcard imports should not be used + * @see https://sonarsource.github.io/rspec/#/rspec/S2208/javascript + */ + "sonarjs/no-wildcard-import"?: Linter.RuleEntry<[]>; + /** + * Non-existent operators '=+', '=-' and '=!' should not be used + * @see https://sonarsource.github.io/rspec/#/rspec/S2757/javascript + */ + "sonarjs/non-existent-operator"?: Linter.RuleEntry<[]>; + /** + * Arithmetic operators should only have numbers as operands + * @see https://sonarsource.github.io/rspec/#/rspec/S3760/javascript + */ + "sonarjs/non-number-in-arithmetic-expression"?: Linter.RuleEntry; + /** + * Properties of variables with "null" or "undefined" values should not be accessed + * @see https://sonarsource.github.io/rspec/#/rspec/S2259/javascript + */ + "sonarjs/null-dereference"?: Linter.RuleEntry<[]>; + /** + * "" tags should provide an alternative content + * @see https://sonarsource.github.io/rspec/#/rspec/S5264/javascript + */ + "sonarjs/object-alt-content"?: Linter.RuleEntry<[]>; + /** + * Arithmetic operations should not result in "NaN" + * @see https://sonarsource.github.io/rspec/#/rspec/S3757/javascript + */ + "sonarjs/operation-returning-nan"?: Linter.RuleEntry<[]>; + /** + * Using shell interpreter when executing OS commands is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S4721/javascript + */ + "sonarjs/os-command"?: Linter.RuleEntry<[]>; + /** + * Origins should be verified during cross-origin communications + * @see https://sonarsource.github.io/rspec/#/rspec/S2819/javascript + */ + "sonarjs/post-message"?: Linter.RuleEntry<[]>; + /** + * "default" clauses should be last + * @see https://sonarsource.github.io/rspec/#/rspec/S4524/javascript + */ + "sonarjs/prefer-default-last"?: Linter.RuleEntry<[]>; + /** + * Local variables should not be declared and then immediately returned or thrown + * @see https://sonarsource.github.io/rspec/#/rspec/S1488/javascript + */ + "sonarjs/prefer-immediate-return"?: Linter.RuleEntry<[]>; + /** + * Object literal syntax should be used + * @see https://sonarsource.github.io/rspec/#/rspec/S2428/javascript + */ + "sonarjs/prefer-object-literal"?: Linter.RuleEntry<[]>; + /** + * Shorthand promises should be used + * @see https://sonarsource.github.io/rspec/#/rspec/S4634/javascript + */ + "sonarjs/prefer-promise-shorthand"?: Linter.RuleEntry<[]>; + /** + * React props should be read-only + * @see https://sonarsource.github.io/rspec/#/rspec/S6759/javascript + */ + "sonarjs/prefer-read-only-props"?: Linter.RuleEntry<[]>; + /** + * "RegExp.exec()" should be preferred over "String.match()" + * @see https://sonarsource.github.io/rspec/#/rspec/S6594/javascript + */ + "sonarjs/prefer-regexp-exec"?: Linter.RuleEntry<[]>; + /** + * Return of boolean expressions should not be wrapped into an "if-then-else" statement + * @see https://sonarsource.github.io/rspec/#/rspec/S1126/javascript + */ + "sonarjs/prefer-single-boolean-return"?: Linter.RuleEntry<[]>; + /** + * Type predicates should be used + * @see https://sonarsource.github.io/rspec/#/rspec/S4322/javascript + */ + "sonarjs/prefer-type-guard"?: Linter.RuleEntry<[]>; + /** + * A "while" loop should be used instead of a "for" loop + * @see https://sonarsource.github.io/rspec/#/rspec/S1264/javascript + */ + "sonarjs/prefer-while"?: Linter.RuleEntry<[]>; + /** + * Using command line arguments is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S4823/javascript + * @deprecated + */ + "sonarjs/process-argv"?: Linter.RuleEntry<[]>; + /** + * Delivering code in production with debug features activated is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S4507/javascript + */ + "sonarjs/production-debug"?: Linter.RuleEntry<[]>; + /** + * Using pseudorandom number generators (PRNGs) is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S2245/javascript + */ + "sonarjs/pseudo-random"?: Linter.RuleEntry<[]>; + /** + * Public "static" fields should be read-only + * @see https://sonarsource.github.io/rspec/#/rspec/S1444/javascript + */ + "sonarjs/public-static-readonly"?: Linter.RuleEntry<[]>; + /** + * Using publicly writable directories is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5443/javascript + */ + "sonarjs/publicly-writable-directories"?: Linter.RuleEntry<[]>; + /** + * "Array.reduce()" calls should include an initial value + * @see https://sonarsource.github.io/rspec/#/rspec/S6959/javascript + */ + "sonarjs/reduce-initial-value"?: Linter.RuleEntry<[]>; + /** + * Redundant type aliases should not be used + * @see https://sonarsource.github.io/rspec/#/rspec/S6564/javascript + */ + "sonarjs/redundant-type-aliases"?: Linter.RuleEntry<[]>; + /** + * Regular expressions should not be too complicated + * @see https://sonarsource.github.io/rspec/#/rspec/S5843/javascript + */ + "sonarjs/regex-complexity"?: Linter.RuleEntry; + /** + * Using regular expressions is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S4784/javascript + * @deprecated + */ + "sonarjs/regular-expr"?: Linter.RuleEntry<[]>; + /** + * A new session should be created during user authentication + * @see https://sonarsource.github.io/rspec/#/rspec/S5876/javascript + */ + "sonarjs/session-regeneration"?: Linter.RuleEntry<[]>; + /** + * Shorthand object properties should be grouped at the beginning or end of an object declaration + * @see https://sonarsource.github.io/rspec/#/rspec/S3499/javascript + */ + "sonarjs/shorthand-property-grouping"?: Linter.RuleEntry; + /** + * Character classes in regular expressions should not contain only one character + * @see https://sonarsource.github.io/rspec/#/rspec/S6397/javascript + */ + "sonarjs/single-char-in-character-classes"?: Linter.RuleEntry<[]>; + /** + * Single-character alternations in regular expressions should be replaced with character classes + * @see https://sonarsource.github.io/rspec/#/rspec/S6035/javascript + */ + "sonarjs/single-character-alternation"?: Linter.RuleEntry<[]>; + /** + * Using slow regular expressions is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5852/javascript + */ + "sonarjs/slow-regex"?: Linter.RuleEntry<[]>; + /** + * Using Sockets is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S4818/javascript + * @deprecated + */ + "sonarjs/sockets"?: Linter.RuleEntry<[]>; + /** + * Formatting SQL queries is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S2077/javascript + */ + "sonarjs/sql-queries"?: Linter.RuleEntry<[]>; + /** + * Tests should be stable + * @see https://sonarsource.github.io/rspec/#/rspec/S5973/javascript + */ + "sonarjs/stable-tests"?: Linter.RuleEntry<[]>; + /** + * Reading the Standard Input is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S4829/javascript + * @deprecated + */ + "sonarjs/standard-input"?: Linter.RuleEntry<[]>; + /** + * Regular expressions with the global flag should be used with caution + * @see https://sonarsource.github.io/rspec/#/rspec/S6351/javascript + */ + "sonarjs/stateful-regex"?: Linter.RuleEntry; + /** + * Disabling Strict-Transport-Security policy is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5739/javascript + */ + "sonarjs/strict-transport-security"?: Linter.RuleEntry; + /** + * Comparison operators should not be used with strings + * @see https://sonarsource.github.io/rspec/#/rspec/S3003/javascript + */ + "sonarjs/strings-comparison"?: Linter.RuleEntry; + /** + * "super()" should be invoked appropriately + * @see https://sonarsource.github.io/rspec/#/rspec/S3854/javascript + */ + "sonarjs/super-invocation"?: Linter.RuleEntry<[]>; + /** + * Tables should have headers + * @see https://sonarsource.github.io/rspec/#/rspec/S5256/javascript + */ + "sonarjs/table-header"?: Linter.RuleEntry<[]>; + /** + * Table cells should reference their headers + * @see https://sonarsource.github.io/rspec/#/rspec/S5260/javascript + */ + "sonarjs/table-header-reference"?: Linter.RuleEntry<[]>; + /** + * Tests should check which exception is thrown + * @see https://sonarsource.github.io/rspec/#/rspec/S5958/javascript + */ + "sonarjs/test-check-exception"?: Linter.RuleEntry<[]>; + /** + * Track uses of "TODO" tags + * @see https://sonarsource.github.io/rspec/#/rspec/S1135/javascript + */ + "sonarjs/todo-tag"?: Linter.RuleEntry<[]>; + /** + * Loops should not contain more than a single "break" or "continue" statement + * @see https://sonarsource.github.io/rspec/#/rspec/S135/javascript + */ + "sonarjs/too-many-break-or-continue-in-loop"?: Linter.RuleEntry; + /** + * Regular expressions using Unicode character classes or property escapes should enable the unicode flag + * @see https://sonarsource.github.io/rspec/#/rspec/S5867/javascript + */ + "sonarjs/unicode-aware-regex"?: Linter.RuleEntry; + /** + * Unnecessary imports should be removed + * @see https://sonarsource.github.io/rspec/#/rspec/S1128/javascript + */ + "sonarjs/unused-import"?: Linter.RuleEntry<[]>; + /** + * Names of regular expressions named groups should be used + * @see https://sonarsource.github.io/rspec/#/rspec/S5860/javascript + */ + "sonarjs/unused-named-groups"?: Linter.RuleEntry; + /** + * Server certificates should be verified during SSL/TLS connections + * @see https://sonarsource.github.io/rspec/#/rspec/S4830/javascript + */ + "sonarjs/unverified-certificate"?: Linter.RuleEntry; + /** + * Server hostnames should be verified during SSL/TLS connections + * @see https://sonarsource.github.io/rspec/#/rspec/S5527/javascript + */ + "sonarjs/unverified-hostname"?: Linter.RuleEntry; + /** + * "const" variables should not be reassigned + * @see https://sonarsource.github.io/rspec/#/rspec/S3500/javascript + */ + "sonarjs/updated-const-var"?: Linter.RuleEntry; + /** + * Loop counters should not be assigned within the loop body + * @see https://sonarsource.github.io/rspec/#/rspec/S2310/javascript + */ + "sonarjs/updated-loop-counter"?: Linter.RuleEntry; + /** + * Type aliases should be used + * @see https://sonarsource.github.io/rspec/#/rspec/S4323/javascript + */ + "sonarjs/use-type-alias"?: Linter.RuleEntry; + /** + * Results of operations on strings should not be ignored + * @see https://sonarsource.github.io/rspec/#/rspec/S1154/javascript + * @deprecated + */ + "sonarjs/useless-string-operation"?: Linter.RuleEntry<[]>; + /** + * Values not convertible to numbers should not be used in numeric comparisons + * @see https://sonarsource.github.io/rspec/#/rspec/S3758/javascript + */ + "sonarjs/values-not-convertible-to-numbers"?: Linter.RuleEntry<[]>; + /** + * Variable, property and parameter names should comply with a naming convention + * @see https://sonarsource.github.io/rspec/#/rspec/S117/javascript + */ + "sonarjs/variable-name"?: Linter.RuleEntry; + /** + * "void" should not be used + * @see https://sonarsource.github.io/rspec/#/rspec/S3735/javascript + */ + "sonarjs/void-use"?: Linter.RuleEntry<[]>; + /** + * Weak SSL/TLS protocols should not be used + * @see https://sonarsource.github.io/rspec/#/rspec/S4423/javascript + */ + "sonarjs/weak-ssl"?: Linter.RuleEntry<[]>; + /** + * Web SQL databases should not be used + * @see https://sonarsource.github.io/rspec/#/rspec/S2817/javascript + * @deprecated + */ + "sonarjs/web-sql-database"?: Linter.RuleEntry<[]>; + /** + * Disclosing fingerprints from web application technologies is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S5689/javascript + */ + "sonarjs/x-powered-by"?: Linter.RuleEntry<[]>; + /** + * XML parsers should not be vulnerable to XXE attacks + * @see https://sonarsource.github.io/rspec/#/rspec/S2755/javascript + */ + "sonarjs/xml-parser-xxe"?: Linter.RuleEntry; + /** + * Executing XPath expressions is security-sensitive + * @see https://sonarsource.github.io/rspec/#/rspec/S4817/javascript + * @deprecated + */ + "sonarjs/xpath"?: Linter.RuleEntry<[]>; + /** + * Interactions should be awaited + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/await-interactions.md + */ + "storybook/await-interactions"?: Linter.RuleEntry<[]>; + /** + * Pass a context when invoking play function of another story + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/context-in-play-function.md + */ + "storybook/context-in-play-function"?: Linter.RuleEntry<[]>; + /** + * The component property should be set + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/csf-component.md + */ + "storybook/csf-component"?: Linter.RuleEntry<[]>; + /** + * Story files should have a default export + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/default-exports.md + */ + "storybook/default-exports"?: Linter.RuleEntry<[]>; + /** + * Deprecated hierarchy separator in title property + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/hierarchy-separator.md + */ + "storybook/hierarchy-separator"?: Linter.RuleEntry<[]>; + /** + * Meta should only have inline properties + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/meta-inline-properties.md + */ + "storybook/meta-inline-properties"?: Linter.RuleEntry; + /** + * Meta should use `satisfies Meta` + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/meta-satisfies-type.md + */ + "storybook/meta-satisfies-type"?: Linter.RuleEntry<[]>; + /** + * A story should not have a redundant name property + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-redundant-story-name.md + */ + "storybook/no-redundant-story-name"?: Linter.RuleEntry<[]>; + /** + * storiesOf is deprecated and should not be used + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-stories-of.md + */ + "storybook/no-stories-of"?: Linter.RuleEntry<[]>; + /** + * Do not define a title in meta + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-title-property-in-meta.md + */ + "storybook/no-title-property-in-meta"?: Linter.RuleEntry<[]>; + /** + * This rule identifies storybook addons that are invalid because they are either not installed or contain a typo in their name. + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-uninstalled-addons.md + */ + "storybook/no-uninstalled-addons"?: Linter.RuleEntry; + /** + * Stories should use PascalCase + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/prefer-pascal-case.md + */ + "storybook/prefer-pascal-case"?: Linter.RuleEntry<[]>; + /** + * A story file must contain at least one story export + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/story-exports.md + */ + "storybook/story-exports"?: Linter.RuleEntry<[]>; + /** + * Use expect from `@storybook/test`, `storybook/test` or `@storybook/jest` + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/use-storybook-expect.md + */ + "storybook/use-storybook-expect"?: Linter.RuleEntry<[]>; + /** + * Do not use testing-library directly on stories + * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/use-storybook-testing-library.md + */ + "storybook/use-storybook-testing-library"?: Linter.RuleEntry<[]>; + /** + * Enforce a consistent and logical order of the Tailwind CSS classnames + * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/classnames-order.md + */ + "tailwindcss/classnames-order"?: Linter.RuleEntry; + /** + * Warns about dash prefixed classnames using arbitrary values + * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/enforces-negative-arbitrary-values.md + */ + "tailwindcss/enforces-negative-arbitrary-values"?: Linter.RuleEntry; + /** + * Enforces the usage of shorthand Tailwind CSS classnames + * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/enforces-shorthand.md + */ + "tailwindcss/enforces-shorthand"?: Linter.RuleEntry; + /** + * Detect obsolete classnames when upgrading to Tailwind CSS v3 + * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/migration-from-tailwind-2.md + */ + "tailwindcss/migration-from-tailwind-2"?: Linter.RuleEntry; + /** + * Forbid using arbitrary values in classnames + * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/no-arbitrary-value.md + */ + "tailwindcss/no-arbitrary-value"?: Linter.RuleEntry; + /** + * Avoid contradicting Tailwind CSS classnames (e.g. "w-3 w-5") + * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/no-contradicting-classname.md + */ + "tailwindcss/no-contradicting-classname"?: Linter.RuleEntry; + /** + * Detect classnames which do not belong to Tailwind CSS + * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/no-custom-classname.md + */ + "tailwindcss/no-custom-classname"?: Linter.RuleEntry; + /** + * Forbid using arbitrary values in classnames when an equivalent preset exists + * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/no-unnecessary-arbitrary-value.md + */ + "tailwindcss/no-unnecessary-arbitrary-value"?: Linter.RuleEntry; + /** + * Enforce promises from async event methods are handled + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/await-async-events.md + */ + "testing-library/await-async-events"?: Linter.RuleEntry; + /** + * Enforce promises from async queries to be handled + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/await-async-queries.md + */ + "testing-library/await-async-queries"?: Linter.RuleEntry<[]>; + /** + * Enforce promises from async utils to be awaited properly + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/await-async-utils.md + */ + "testing-library/await-async-utils"?: Linter.RuleEntry<[]>; + /** + * Ensures consistent usage of `data-testid` + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/consistent-data-testid.md + */ + "testing-library/consistent-data-testid"?: Linter.RuleEntry; + /** + * Disallow unnecessary `await` for sync events + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-await-sync-events.md + */ + "testing-library/no-await-sync-events"?: Linter.RuleEntry; + /** + * Disallow unnecessary `await` for sync queries + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-await-sync-queries.md + */ + "testing-library/no-await-sync-queries"?: Linter.RuleEntry<[]>; + /** + * Disallow the use of `container` methods + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-container.md + */ + "testing-library/no-container"?: Linter.RuleEntry<[]>; + /** + * Disallow the use of debugging utilities like `debug` + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-debugging-utils.md + */ + "testing-library/no-debugging-utils"?: Linter.RuleEntry; + /** + * Disallow importing from DOM Testing Library + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-dom-import.md + */ + "testing-library/no-dom-import"?: Linter.RuleEntry; + /** + * Disallow the use of the global RegExp flag (/g) in queries + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-global-regexp-flag-in-query.md + */ + "testing-library/no-global-regexp-flag-in-query"?: Linter.RuleEntry<[]>; + /** + * Disallow the use of `cleanup` + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-manual-cleanup.md + */ + "testing-library/no-manual-cleanup"?: Linter.RuleEntry<[]>; + /** + * Disallow direct Node access + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-node-access.md + */ + "testing-library/no-node-access"?: Linter.RuleEntry; + /** + * Disallow the use of promises passed to a `fireEvent` method + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-promise-in-fire-event.md + */ + "testing-library/no-promise-in-fire-event"?: Linter.RuleEntry<[]>; + /** + * Disallow the use of `render` in testing frameworks setup functions + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-render-in-lifecycle.md + */ + "testing-library/no-render-in-lifecycle"?: Linter.RuleEntry; + /** + * Ensure no `data-testid` queries are used + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-test-id-queries.md + */ + "testing-library/no-test-id-queries"?: Linter.RuleEntry<[]>; + /** + * Disallow wrapping Testing Library utils or empty callbacks in `act` + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-unnecessary-act.md + */ + "testing-library/no-unnecessary-act"?: Linter.RuleEntry; + /** + * Disallow the use of multiple `expect` calls inside `waitFor` + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-wait-for-multiple-assertions.md + */ + "testing-library/no-wait-for-multiple-assertions"?: Linter.RuleEntry<[]>; + /** + * Disallow the use of side effects in `waitFor` + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-wait-for-side-effects.md + */ + "testing-library/no-wait-for-side-effects"?: Linter.RuleEntry<[]>; + /** + * Ensures no snapshot is generated inside of a `waitFor` call + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-wait-for-snapshot.md + */ + "testing-library/no-wait-for-snapshot"?: Linter.RuleEntry<[]>; + /** + * Suggest using explicit assertions rather than standalone queries + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-explicit-assert.md + */ + "testing-library/prefer-explicit-assert"?: Linter.RuleEntry; + /** + * Suggest using `find(All)By*` query instead of `waitFor` + `get(All)By*` to wait for elements + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-find-by.md + */ + "testing-library/prefer-find-by"?: Linter.RuleEntry<[]>; + /** + * Suggest using implicit assertions for getBy* & findBy* queries + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-implicit-assert.md + */ + "testing-library/prefer-implicit-assert"?: Linter.RuleEntry<[]>; + /** + * Ensure appropriate `get*`/`query*` queries are used with their respective matchers + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-presence-queries.md + */ + "testing-library/prefer-presence-queries"?: Linter.RuleEntry; + /** + * Suggest using `queryBy*` queries when waiting for disappearance + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-query-by-disappearance.md + */ + "testing-library/prefer-query-by-disappearance"?: Linter.RuleEntry<[]>; + /** + * Ensure the configured `get*`/`query*` query is used with the corresponding matchers + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-query-matchers.md + */ + "testing-library/prefer-query-matchers"?: Linter.RuleEntry; + /** + * Suggest using `screen` while querying + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-screen-queries.md + */ + "testing-library/prefer-screen-queries"?: Linter.RuleEntry<[]>; + /** + * Suggest using `userEvent` over `fireEvent` for simulating user interactions + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-user-event.md + */ + "testing-library/prefer-user-event"?: Linter.RuleEntry; + /** + * Enforce a valid naming for return value from `render` + * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/render-result-naming-convention.md + */ + "testing-library/render-result-naming-convention"?: Linter.RuleEntry<[]>; + /** + * enforce linebreaks after opening and before closing array brackets + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/array-bracket-newline.html + */ + "toml/array-bracket-newline"?: Linter.RuleEntry; + /** + * enforce consistent spacing inside array brackets + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/array-bracket-spacing.html + */ + "toml/array-bracket-spacing"?: Linter.RuleEntry; + /** + * enforce line breaks between array elements + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/array-element-newline.html + */ + "toml/array-element-newline"?: Linter.RuleEntry; + /** + * enforce consistent comma style in array + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/comma-style.html + */ + "toml/comma-style"?: Linter.RuleEntry; + /** + * enforce consistent indentation + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/indent.html + */ + "toml/indent"?: Linter.RuleEntry; + /** + * enforce consistent spacing inside braces + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/inline-table-curly-spacing.html + */ + "toml/inline-table-curly-spacing"?: Linter.RuleEntry; + /** + * enforce consistent spacing between keys and values in key/value pairs + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/key-spacing.html + */ + "toml/key-spacing"?: Linter.RuleEntry; + /** + * disallow defining pair keys out-of-order + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/keys-order.html + */ + "toml/keys-order"?: Linter.RuleEntry<[]>; + /** + * disallow mixed data types in array + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/no-mixed-type-in-array.html + */ + "toml/no-mixed-type-in-array"?: Linter.RuleEntry; + /** + * disallow hexadecimal, octal and binary integer + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/no-non-decimal-integer.html + */ + "toml/no-non-decimal-integer"?: Linter.RuleEntry; + /** + * disallow spacing around infix operators + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/no-space-dots.html + */ + "toml/no-space-dots"?: Linter.RuleEntry<[]>; + /** + * disallow number separators that to not enhance readability. + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/no-unreadable-number-separator.html + */ + "toml/no-unreadable-number-separator"?: Linter.RuleEntry<[]>; + /** + * require or disallow padding lines between pairs + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/padding-line-between-pairs.html + */ + "toml/padding-line-between-pairs"?: Linter.RuleEntry<[]>; + /** + * require or disallow padding lines between tables + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/padding-line-between-tables.html + */ + "toml/padding-line-between-tables"?: Linter.RuleEntry<[]>; + /** + * disallow precision of fractional seconds greater than the specified value. + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/precision-of-fractional-seconds.html + */ + "toml/precision-of-fractional-seconds"?: Linter.RuleEntry; + /** + * disallow precision of integer greater than the specified value. + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/precision-of-integer.html + */ + "toml/precision-of-integer"?: Linter.RuleEntry; + /** + * require or disallow quotes around keys + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/quoted-keys.html + */ + "toml/quoted-keys"?: Linter.RuleEntry; + /** + * require spacing around equals sign + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/space-eq-sign.html + * @deprecated + */ + "toml/space-eq-sign"?: Linter.RuleEntry<[]>; + /** + * enforce consistent spacing after the `#` in a comment + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/spaced-comment.html + */ + "toml/spaced-comment"?: Linter.RuleEntry; + /** + * enforce consistent spacing inside table brackets + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/table-bracket-spacing.html + */ + "toml/table-bracket-spacing"?: Linter.RuleEntry; + /** + * disallow defining tables out-of-order + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/tables-order.html + */ + "toml/tables-order"?: Linter.RuleEntry<[]>; + /** + * disallow parsing errors in Vue custom blocks + * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/vue-custom-block/no-parsing-error.html + */ + "toml/vue-custom-block/no-parsing-error"?: Linter.RuleEntry<[]>; + /** + * Validates that TypeScript documentation comments conform to the TSDoc standard + * @see https://tsdoc.org/pages/packages/eslint-plugin-tsdoc + */ + "tsdoc/syntax"?: Linter.RuleEntry<[]>; + /** + * Improve regexes by making them shorter, consistent, and safer. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/better-regex.md + */ + "unicorn/better-regex"?: Linter.RuleEntry; + /** + * Enforce a specific parameter name in catch clauses. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/catch-error-name.md + */ + "unicorn/catch-error-name"?: Linter.RuleEntry; + /** + * Enforce consistent assertion style with `node:assert`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/consistent-assert.md + */ + "unicorn/consistent-assert"?: Linter.RuleEntry<[]>; + /** + * Prefer passing `Date` directly to the constructor when cloning. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/consistent-date-clone.md + */ + "unicorn/consistent-date-clone"?: Linter.RuleEntry<[]>; + /** + * Use destructured variables over properties. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/consistent-destructuring.md + */ + "unicorn/consistent-destructuring"?: Linter.RuleEntry<[]>; + /** + * Prefer consistent types when spreading a ternary in an array literal. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/consistent-empty-array-spread.md + */ + "unicorn/consistent-empty-array-spread"?: Linter.RuleEntry<[]>; + /** + * Enforce consistent style for element existence checks with `indexOf()`, `lastIndexOf()`, `findIndex()`, and `findLastIndex()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/consistent-existence-index-check.md + */ + "unicorn/consistent-existence-index-check"?: Linter.RuleEntry<[]>; + /** + * Move function definitions to the highest possible scope. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/consistent-function-scoping.md + */ + "unicorn/consistent-function-scoping"?: Linter.RuleEntry; + /** + * Enforce correct `Error` subclassing. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/custom-error-definition.md + */ + "unicorn/custom-error-definition"?: Linter.RuleEntry<[]>; + /** + * Enforce no spaces between braces. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/empty-brace-spaces.md + */ + "unicorn/empty-brace-spaces"?: Linter.RuleEntry<[]>; + /** + * Enforce passing a `message` value when creating a built-in error. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/error-message.md + */ + "unicorn/error-message"?: Linter.RuleEntry<[]>; + /** + * Require escape sequences to use uppercase or lowercase values. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/escape-case.md + */ + "unicorn/escape-case"?: Linter.RuleEntry; + /** + * Add expiration conditions to TODO comments. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/expiring-todo-comments.md + */ + "unicorn/expiring-todo-comments"?: Linter.RuleEntry; + /** + * Enforce explicitly comparing the `length` or `size` property of a value. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/explicit-length-check.md + */ + "unicorn/explicit-length-check"?: Linter.RuleEntry; + /** + * Enforce a case style for filenames. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/filename-case.md + */ + "unicorn/filename-case"?: Linter.RuleEntry; + /** + * Enforce specific import styles per module. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/import-style.md + */ + "unicorn/import-style"?: Linter.RuleEntry; + /** + * Enforce the use of `new` for all builtins, except `String`, `Number`, `Boolean`, `Symbol` and `BigInt`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/new-for-builtins.md + */ + "unicorn/new-for-builtins"?: Linter.RuleEntry<[]>; + /** + * Enforce specifying rules to disable in `eslint-disable` comments. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-abusive-eslint-disable.md + */ + "unicorn/no-abusive-eslint-disable"?: Linter.RuleEntry<[]>; + /** + * Disallow recursive access to `this` within getters and setters. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-accessor-recursion.md + */ + "unicorn/no-accessor-recursion"?: Linter.RuleEntry<[]>; + /** + * Disallow anonymous functions and classes as the default export. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-anonymous-default-export.md + */ + "unicorn/no-anonymous-default-export"?: Linter.RuleEntry<[]>; + /** + * Prevent passing a function reference directly to iterator methods. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-array-callback-reference.md + */ + "unicorn/no-array-callback-reference"?: Linter.RuleEntry<[]>; + /** + * Prefer `for…of` over the `forEach` method. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-array-for-each.md + */ + "unicorn/no-array-for-each"?: Linter.RuleEntry<[]>; + /** + * Disallow using the `this` argument in array methods. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-array-method-this-argument.md + */ + "unicorn/no-array-method-this-argument"?: Linter.RuleEntry<[]>; + /** + * Replaced by `unicorn/prefer-single-call` which covers more cases. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/deprecated-rules.md#no-array-push-push + * @deprecated + */ + "unicorn/no-array-push-push"?: Linter.RuleEntry<[]>; + /** + * Disallow `Array#reduce()` and `Array#reduceRight()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-array-reduce.md + */ + "unicorn/no-array-reduce"?: Linter.RuleEntry; + /** + * Disallow member access from await expression. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-await-expression-member.md + */ + "unicorn/no-await-expression-member"?: Linter.RuleEntry<[]>; + /** + * Disallow using `await` in `Promise` method parameters. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-await-in-promise-methods.md + */ + "unicorn/no-await-in-promise-methods"?: Linter.RuleEntry<[]>; + /** + * Do not use leading/trailing space between `console.log` parameters. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-console-spaces.md + */ + "unicorn/no-console-spaces"?: Linter.RuleEntry<[]>; + /** + * Do not use `document.cookie` directly. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-document-cookie.md + */ + "unicorn/no-document-cookie"?: Linter.RuleEntry<[]>; + /** + * Disallow empty files. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-empty-file.md + */ + "unicorn/no-empty-file"?: Linter.RuleEntry<[]>; + /** + * Do not use a `for` loop that can be replaced with a `for-of` loop. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-for-loop.md + */ + "unicorn/no-for-loop"?: Linter.RuleEntry<[]>; + /** + * Enforce the use of Unicode escapes instead of hexadecimal escapes. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-hex-escape.md + */ + "unicorn/no-hex-escape"?: Linter.RuleEntry<[]>; + /** + * Replaced by `unicorn/no-instanceof-builtins` which covers more cases. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/deprecated-rules.md#no-instanceof-array + * @deprecated + */ + "unicorn/no-instanceof-array"?: Linter.RuleEntry<[]>; + /** + * Disallow `instanceof` with built-in objects + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-instanceof-builtins.md + */ + "unicorn/no-instanceof-builtins"?: Linter.RuleEntry; + /** + * Disallow invalid options in `fetch()` and `new Request()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-invalid-fetch-options.md + */ + "unicorn/no-invalid-fetch-options"?: Linter.RuleEntry<[]>; + /** + * Prevent calling `EventTarget#removeEventListener()` with the result of an expression. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-invalid-remove-event-listener.md + */ + "unicorn/no-invalid-remove-event-listener"?: Linter.RuleEntry<[]>; + /** + * Disallow identifiers starting with `new` or `class`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-keyword-prefix.md + */ + "unicorn/no-keyword-prefix"?: Linter.RuleEntry; + /** + * Replaced by `unicorn/no-unnecessary-slice-end` which covers more cases. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/deprecated-rules.md#no-length-as-slice-end + * @deprecated + */ + "unicorn/no-length-as-slice-end"?: Linter.RuleEntry<[]>; + /** + * Disallow `if` statements as the only statement in `if` blocks without `else`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-lonely-if.md + */ + "unicorn/no-lonely-if"?: Linter.RuleEntry<[]>; + /** + * Disallow a magic number as the `depth` argument in `Array#flat(…).` + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-magic-array-flat-depth.md + */ + "unicorn/no-magic-array-flat-depth"?: Linter.RuleEntry<[]>; + /** + * Disallow named usage of default import and export. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-named-default.md + */ + "unicorn/no-named-default"?: Linter.RuleEntry<[]>; + /** + * Disallow negated conditions. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-negated-condition.md + */ + "unicorn/no-negated-condition"?: Linter.RuleEntry<[]>; + /** + * Disallow negated expression in equality check. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-negation-in-equality-check.md + */ + "unicorn/no-negation-in-equality-check"?: Linter.RuleEntry<[]>; + /** + * Disallow nested ternary expressions. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-nested-ternary.md + */ + "unicorn/no-nested-ternary"?: Linter.RuleEntry<[]>; + /** + * Disallow `new Array()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-new-array.md + */ + "unicorn/no-new-array"?: Linter.RuleEntry<[]>; + /** + * Enforce the use of `Buffer.from()` and `Buffer.alloc()` instead of the deprecated `new Buffer()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-new-buffer.md + */ + "unicorn/no-new-buffer"?: Linter.RuleEntry<[]>; + /** + * Disallow the use of the `null` literal. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-null.md + */ + "unicorn/no-null"?: Linter.RuleEntry; + /** + * Disallow the use of objects as default parameters. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-object-as-default-parameter.md + */ + "unicorn/no-object-as-default-parameter"?: Linter.RuleEntry<[]>; + /** + * Disallow `process.exit()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-process-exit.md + */ + "unicorn/no-process-exit"?: Linter.RuleEntry<[]>; + /** + * Disallow passing single-element arrays to `Promise` methods. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-single-promise-in-promise-methods.md + */ + "unicorn/no-single-promise-in-promise-methods"?: Linter.RuleEntry<[]>; + /** + * Disallow classes that only have static members. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-static-only-class.md + */ + "unicorn/no-static-only-class"?: Linter.RuleEntry<[]>; + /** + * Disallow `then` property. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-thenable.md + */ + "unicorn/no-thenable"?: Linter.RuleEntry<[]>; + /** + * Disallow assigning `this` to a variable. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-this-assignment.md + */ + "unicorn/no-this-assignment"?: Linter.RuleEntry<[]>; + /** + * Disallow comparing `undefined` using `typeof`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-typeof-undefined.md + */ + "unicorn/no-typeof-undefined"?: Linter.RuleEntry; + /** + * Disallow using `1` as the `depth` argument of `Array#flat()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unnecessary-array-flat-depth.md + */ + "unicorn/no-unnecessary-array-flat-depth"?: Linter.RuleEntry<[]>; + /** + * Disallow using `.length` or `Infinity` as the `deleteCount` or `skipCount` argument of `Array#{splice,toSpliced}()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unnecessary-array-splice-count.md + */ + "unicorn/no-unnecessary-array-splice-count"?: Linter.RuleEntry<[]>; + /** + * Disallow awaiting non-promise values. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unnecessary-await.md + */ + "unicorn/no-unnecessary-await"?: Linter.RuleEntry<[]>; + /** + * Enforce the use of built-in methods instead of unnecessary polyfills. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unnecessary-polyfills.md + */ + "unicorn/no-unnecessary-polyfills"?: Linter.RuleEntry; + /** + * Disallow using `.length` or `Infinity` as the `end` argument of `{Array,String,TypedArray}#slice()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unnecessary-slice-end.md + */ + "unicorn/no-unnecessary-slice-end"?: Linter.RuleEntry<[]>; + /** + * Disallow unreadable array destructuring. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unreadable-array-destructuring.md + */ + "unicorn/no-unreadable-array-destructuring"?: Linter.RuleEntry<[]>; + /** + * Disallow unreadable IIFEs. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unreadable-iife.md + */ + "unicorn/no-unreadable-iife"?: Linter.RuleEntry<[]>; + /** + * Disallow unused object properties. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unused-properties.md + */ + "unicorn/no-unused-properties"?: Linter.RuleEntry<[]>; + /** + * Disallow useless fallback when spreading in object literals. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-useless-fallback-in-spread.md + */ + "unicorn/no-useless-fallback-in-spread"?: Linter.RuleEntry<[]>; + /** + * Disallow useless array length check. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-useless-length-check.md + */ + "unicorn/no-useless-length-check"?: Linter.RuleEntry<[]>; + /** + * Disallow returning/yielding `Promise.resolve/reject()` in async functions or promise callbacks + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-useless-promise-resolve-reject.md + */ + "unicorn/no-useless-promise-resolve-reject"?: Linter.RuleEntry<[]>; + /** + * Disallow unnecessary spread. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-useless-spread.md + */ + "unicorn/no-useless-spread"?: Linter.RuleEntry<[]>; + /** + * Disallow useless case in switch statements. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-useless-switch-case.md + */ + "unicorn/no-useless-switch-case"?: Linter.RuleEntry<[]>; + /** + * Disallow useless `undefined`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-useless-undefined.md + */ + "unicorn/no-useless-undefined"?: Linter.RuleEntry; + /** + * Disallow number literals with zero fractions or dangling dots. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-zero-fractions.md + */ + "unicorn/no-zero-fractions"?: Linter.RuleEntry<[]>; + /** + * Enforce proper case for numeric literals. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/number-literal-case.md + */ + "unicorn/number-literal-case"?: Linter.RuleEntry; + /** + * Enforce the style of numeric separators by correctly grouping digits. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/numeric-separators-style.md + */ + "unicorn/numeric-separators-style"?: Linter.RuleEntry; + /** + * Prefer `.addEventListener()` and `.removeEventListener()` over `on`-functions. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-add-event-listener.md + */ + "unicorn/prefer-add-event-listener"?: Linter.RuleEntry; + /** + * Prefer `.find(…)` and `.findLast(…)` over the first or last element from `.filter(…)`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-array-find.md + */ + "unicorn/prefer-array-find"?: Linter.RuleEntry; + /** + * Prefer `Array#flat()` over legacy techniques to flatten arrays. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-array-flat.md + */ + "unicorn/prefer-array-flat"?: Linter.RuleEntry; + /** + * Prefer `.flatMap(…)` over `.map(…).flat()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-array-flat-map.md + */ + "unicorn/prefer-array-flat-map"?: Linter.RuleEntry<[]>; + /** + * Prefer `Array#{indexOf,lastIndexOf}()` over `Array#{findIndex,findLastIndex}()` when looking for the index of an item. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-array-index-of.md + */ + "unicorn/prefer-array-index-of"?: Linter.RuleEntry<[]>; + /** + * Prefer `.some(…)` over `.filter(…).length` check and `.{find,findLast,findIndex,findLastIndex}(…)`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-array-some.md + */ + "unicorn/prefer-array-some"?: Linter.RuleEntry<[]>; + /** + * Prefer `.at()` method for index access and `String#charAt()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-at.md + */ + "unicorn/prefer-at"?: Linter.RuleEntry; + /** + * Prefer `Blob#arrayBuffer()` over `FileReader#readAsArrayBuffer(…)` and `Blob#text()` over `FileReader#readAsText(…)`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-blob-reading-methods.md + */ + "unicorn/prefer-blob-reading-methods"?: Linter.RuleEntry<[]>; + /** + * Prefer `String#codePointAt(…)` over `String#charCodeAt(…)` and `String.fromCodePoint(…)` over `String.fromCharCode(…)`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-code-point.md + */ + "unicorn/prefer-code-point"?: Linter.RuleEntry<[]>; + /** + * Prefer `Date.now()` to get the number of milliseconds since the Unix Epoch. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-date-now.md + */ + "unicorn/prefer-date-now"?: Linter.RuleEntry<[]>; + /** + * Prefer default parameters over reassignment. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-default-parameters.md + */ + "unicorn/prefer-default-parameters"?: Linter.RuleEntry<[]>; + /** + * Prefer `Node#append()` over `Node#appendChild()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-dom-node-append.md + */ + "unicorn/prefer-dom-node-append"?: Linter.RuleEntry<[]>; + /** + * Prefer using `.dataset` on DOM elements over calling attribute methods. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-dom-node-dataset.md + */ + "unicorn/prefer-dom-node-dataset"?: Linter.RuleEntry<[]>; + /** + * Prefer `childNode.remove()` over `parentNode.removeChild(childNode)`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-dom-node-remove.md + */ + "unicorn/prefer-dom-node-remove"?: Linter.RuleEntry<[]>; + /** + * Prefer `.textContent` over `.innerText`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-dom-node-text-content.md + */ + "unicorn/prefer-dom-node-text-content"?: Linter.RuleEntry<[]>; + /** + * Prefer `EventTarget` over `EventEmitter`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-event-target.md + */ + "unicorn/prefer-event-target"?: Linter.RuleEntry<[]>; + /** + * Prefer `export…from` when re-exporting. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-export-from.md + */ + "unicorn/prefer-export-from"?: Linter.RuleEntry; + /** + * Prefer `globalThis` over `window`, `self`, and `global`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-global-this.md + */ + "unicorn/prefer-global-this"?: Linter.RuleEntry<[]>; + /** + * Prefer `import.meta.{dirname,filename}` over legacy techniques for getting file paths. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-import-meta-properties.md + */ + "unicorn/prefer-import-meta-properties"?: Linter.RuleEntry<[]>; + /** + * Prefer `.includes()` over `.indexOf()`, `.lastIndexOf()`, and `Array#some()` when checking for existence or non-existence. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-includes.md + */ + "unicorn/prefer-includes"?: Linter.RuleEntry<[]>; + /** + * Prefer reading a JSON file as a buffer. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-json-parse-buffer.md + */ + "unicorn/prefer-json-parse-buffer"?: Linter.RuleEntry<[]>; + /** + * Prefer `KeyboardEvent#key` over `KeyboardEvent#keyCode`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-keyboard-event-key.md + */ + "unicorn/prefer-keyboard-event-key"?: Linter.RuleEntry<[]>; + /** + * Prefer using a logical operator over a ternary. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-logical-operator-over-ternary.md + */ + "unicorn/prefer-logical-operator-over-ternary"?: Linter.RuleEntry<[]>; + /** + * Prefer `Math.min()` and `Math.max()` over ternaries for simple comparisons. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-math-min-max.md + */ + "unicorn/prefer-math-min-max"?: Linter.RuleEntry<[]>; + /** + * Enforce the use of `Math.trunc` instead of bitwise operators. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-math-trunc.md + */ + "unicorn/prefer-math-trunc"?: Linter.RuleEntry<[]>; + /** + * Prefer `.before()` over `.insertBefore()`, `.replaceWith()` over `.replaceChild()`, prefer one of `.before()`, `.after()`, `.append()` or `.prepend()` over `insertAdjacentText()` and `insertAdjacentElement()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-modern-dom-apis.md + */ + "unicorn/prefer-modern-dom-apis"?: Linter.RuleEntry<[]>; + /** + * Prefer modern `Math` APIs over legacy patterns. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-modern-math-apis.md + */ + "unicorn/prefer-modern-math-apis"?: Linter.RuleEntry<[]>; + /** + * Prefer JavaScript modules (ESM) over CommonJS. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-module.md + */ + "unicorn/prefer-module"?: Linter.RuleEntry<[]>; + /** + * Prefer using `String`, `Number`, `BigInt`, `Boolean`, and `Symbol` directly. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-native-coercion-functions.md + */ + "unicorn/prefer-native-coercion-functions"?: Linter.RuleEntry<[]>; + /** + * Prefer negative index over `.length - index` when possible. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-negative-index.md + */ + "unicorn/prefer-negative-index"?: Linter.RuleEntry<[]>; + /** + * Prefer using the `node:` protocol when importing Node.js builtin modules. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-node-protocol.md + */ + "unicorn/prefer-node-protocol"?: Linter.RuleEntry<[]>; + /** + * Prefer `Number` static properties over global ones. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-number-properties.md + */ + "unicorn/prefer-number-properties"?: Linter.RuleEntry; + /** + * Prefer using `Object.fromEntries(…)` to transform a list of key-value pairs into an object. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-object-from-entries.md + */ + "unicorn/prefer-object-from-entries"?: Linter.RuleEntry; + /** + * Prefer omitting the `catch` binding parameter. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-optional-catch-binding.md + */ + "unicorn/prefer-optional-catch-binding"?: Linter.RuleEntry<[]>; + /** + * Prefer borrowing methods from the prototype instead of the instance. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-prototype-methods.md + */ + "unicorn/prefer-prototype-methods"?: Linter.RuleEntry<[]>; + /** + * Prefer `.querySelector()` over `.getElementById()`, `.querySelectorAll()` over `.getElementsByClassName()` and `.getElementsByTagName()` and `.getElementsByName()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-query-selector.md + */ + "unicorn/prefer-query-selector"?: Linter.RuleEntry<[]>; + /** + * Prefer `Reflect.apply()` over `Function#apply()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-reflect-apply.md + */ + "unicorn/prefer-reflect-apply"?: Linter.RuleEntry<[]>; + /** + * Prefer `RegExp#test()` over `String#match()` and `RegExp#exec()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-regexp-test.md + */ + "unicorn/prefer-regexp-test"?: Linter.RuleEntry<[]>; + /** + * Prefer `Set#has()` over `Array#includes()` when checking for existence or non-existence. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-set-has.md + */ + "unicorn/prefer-set-has"?: Linter.RuleEntry<[]>; + /** + * Prefer using `Set#size` instead of `Array#length`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-set-size.md + */ + "unicorn/prefer-set-size"?: Linter.RuleEntry<[]>; + /** + * Enforce combining multiple `Array#push()`, `Element#classList.{add,remove}()`, and `importScripts()` into one call. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-single-call.md + */ + "unicorn/prefer-single-call"?: Linter.RuleEntry; + /** + * Prefer the spread operator over `Array.from(…)`, `Array#concat(…)`, `Array#{slice,toSpliced}()` and `String#split('')`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-spread.md + */ + "unicorn/prefer-spread"?: Linter.RuleEntry<[]>; + /** + * Prefer using the `String.raw` tag to avoid escaping `\`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-string-raw.md + */ + "unicorn/prefer-string-raw"?: Linter.RuleEntry<[]>; + /** + * Prefer `String#replaceAll()` over regex searches with the global flag. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-string-replace-all.md + */ + "unicorn/prefer-string-replace-all"?: Linter.RuleEntry<[]>; + /** + * Prefer `String#slice()` over `String#substr()` and `String#substring()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-string-slice.md + */ + "unicorn/prefer-string-slice"?: Linter.RuleEntry<[]>; + /** + * Prefer `String#startsWith()` & `String#endsWith()` over `RegExp#test()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-string-starts-ends-with.md + */ + "unicorn/prefer-string-starts-ends-with"?: Linter.RuleEntry<[]>; + /** + * Prefer `String#trimStart()` / `String#trimEnd()` over `String#trimLeft()` / `String#trimRight()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-string-trim-start-end.md + */ + "unicorn/prefer-string-trim-start-end"?: Linter.RuleEntry<[]>; + /** + * Prefer using `structuredClone` to create a deep clone. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-structured-clone.md + */ + "unicorn/prefer-structured-clone"?: Linter.RuleEntry; + /** + * Prefer `switch` over multiple `else-if`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-switch.md + */ + "unicorn/prefer-switch"?: Linter.RuleEntry; + /** + * Prefer ternary expressions over simple `if-else` statements. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-ternary.md + */ + "unicorn/prefer-ternary"?: Linter.RuleEntry; + /** + * Prefer top-level await over top-level promises and async function calls. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-top-level-await.md + */ + "unicorn/prefer-top-level-await"?: Linter.RuleEntry<[]>; + /** + * Enforce throwing `TypeError` in type checking conditions. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-type-error.md + */ + "unicorn/prefer-type-error"?: Linter.RuleEntry<[]>; + /** + * Prevent abbreviations. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prevent-abbreviations.md + */ + "unicorn/prevent-abbreviations"?: Linter.RuleEntry; + /** + * Enforce consistent relative URL style. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/relative-url-style.md + */ + "unicorn/relative-url-style"?: Linter.RuleEntry; + /** + * Enforce using the separator argument with `Array#join()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/require-array-join-separator.md + */ + "unicorn/require-array-join-separator"?: Linter.RuleEntry<[]>; + /** + * Enforce using the digits argument with `Number#toFixed()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/require-number-to-fixed-digits-argument.md + */ + "unicorn/require-number-to-fixed-digits-argument"?: Linter.RuleEntry<[]>; + /** + * Enforce using the `targetOrigin` argument with `window.postMessage()`. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/require-post-message-target-origin.md + */ + "unicorn/require-post-message-target-origin"?: Linter.RuleEntry<[]>; + /** + * Enforce better string content. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/string-content.md + */ + "unicorn/string-content"?: Linter.RuleEntry; + /** + * Enforce consistent brace style for `case` clauses. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/switch-case-braces.md + */ + "unicorn/switch-case-braces"?: Linter.RuleEntry; + /** + * Fix whitespace-insensitive template indentation. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/template-indent.md + */ + "unicorn/template-indent"?: Linter.RuleEntry; + /** + * Enforce consistent case for text encoding identifiers. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/text-encoding-identifier-case.md + */ + "unicorn/text-encoding-identifier-case"?: Linter.RuleEntry<[]>; + /** + * Require `new` when creating an error. + * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/throw-new-error.md + */ + "unicorn/throw-new-error"?: Linter.RuleEntry<[]>; + /** + * Utilities in UnoCSS blocklist + * @see https://unocss.dev/integrations/eslint#rules + */ + "unocss/blocklist"?: Linter.RuleEntry<[]>; + /** + * Enforce class compilation + * @see https://unocss.dev/integrations/eslint#rules + */ + "unocss/enforce-class-compile"?: Linter.RuleEntry; + /** + * Order of UnoCSS utilities in class attribute + * @see https://unocss.dev/integrations/eslint#rules + */ + "unocss/order"?: Linter.RuleEntry<[]>; + /** + * Order of UnoCSS attributes + * @see https://unocss.dev/integrations/eslint#rules + */ + "unocss/order-attributify"?: Linter.RuleEntry<[]>; + "validate-jsx-nesting/no-invalid-jsx-nesting"?: Linter.RuleEntry<[]>; + /** + * require .spec test file pattern + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/consistent-test-filename.md + */ + "vitest/consistent-test-filename"?: Linter.RuleEntry; + /** + * enforce using test or it but not both + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/consistent-test-it.md + */ + "vitest/consistent-test-it"?: Linter.RuleEntry; + /** + * enforce having expectation in test body + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/expect-expect.md + */ + "vitest/expect-expect"?: Linter.RuleEntry; + /** + * enforce a maximum number of expect per test + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/max-expects.md + */ + "vitest/max-expects"?: Linter.RuleEntry; + /** + * require describe block to be less than set max value or default value + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/max-nested-describe.md + */ + "vitest/max-nested-describe"?: Linter.RuleEntry; + /** + * disallow alias methods + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-alias-methods.md + */ + "vitest/no-alias-methods"?: Linter.RuleEntry<[]>; + /** + * disallow commented out tests + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-commented-out-tests.md + */ + "vitest/no-commented-out-tests"?: Linter.RuleEntry<[]>; + /** + * disallow conditional expects + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-expect.md + */ + "vitest/no-conditional-expect"?: Linter.RuleEntry<[]>; + /** + * disallow conditional tests + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-in-test.md + */ + "vitest/no-conditional-in-test"?: Linter.RuleEntry<[]>; + /** + * disallow conditional tests + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-tests.md + */ + "vitest/no-conditional-tests"?: Linter.RuleEntry<[]>; + /** + * disallow disabled tests + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-disabled-tests.md + */ + "vitest/no-disabled-tests"?: Linter.RuleEntry<[]>; + /** + * disallow using a callback in asynchronous tests and hooks + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-done-callback.md + * @deprecated + */ + "vitest/no-done-callback"?: Linter.RuleEntry<[]>; + /** + * disallow duplicate hooks and teardown hooks + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-duplicate-hooks.md + */ + "vitest/no-duplicate-hooks"?: Linter.RuleEntry<[]>; + /** + * disallow focused tests + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-focused-tests.md + */ + "vitest/no-focused-tests"?: Linter.RuleEntry; + /** + * disallow setup and teardown hooks + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-hooks.md + */ + "vitest/no-hooks"?: Linter.RuleEntry; + /** + * disallow identical titles + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-identical-title.md + */ + "vitest/no-identical-title"?: Linter.RuleEntry<[]>; + /** + * disallow importing `node:test` + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-import-node-test.md + */ + "vitest/no-import-node-test"?: Linter.RuleEntry<[]>; + /** + * disallow string interpolation in snapshots + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-interpolation-in-snapshots.md + */ + "vitest/no-interpolation-in-snapshots"?: Linter.RuleEntry<[]>; + /** + * disallow large snapshots + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-large-snapshots.md + */ + "vitest/no-large-snapshots"?: Linter.RuleEntry; + /** + * disallow importing from __mocks__ directory + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-mocks-import.md + */ + "vitest/no-mocks-import"?: Linter.RuleEntry<[]>; + /** + * disallow .only blocks in tests + * @see https://github.com/levibuzolic/eslint-plugin-no-only-tests + */ + "vitest/no-only-tests"?: Linter.RuleEntry; + /** + * disallow the use of certain matchers + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-restricted-matchers.md + */ + "vitest/no-restricted-matchers"?: Linter.RuleEntry; + /** + * disallow specific `vi.` methods + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-restricted-vi-methods.md + */ + "vitest/no-restricted-vi-methods"?: Linter.RuleEntry; + /** + * disallow using `expect` outside of `it` or `test` blocks + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-standalone-expect.md + */ + "vitest/no-standalone-expect"?: Linter.RuleEntry; + /** + * Disallow using the `f` and `x` prefixes in favour of `.only` and `.skip` + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-test-prefixes.md + */ + "vitest/no-test-prefixes"?: Linter.RuleEntry<[]>; + /** + * disallow return statements in tests + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-test-return-statement.md + */ + "vitest/no-test-return-statement"?: Linter.RuleEntry<[]>; + /** + * Enforce padding around `afterAll` blocks + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-after-all-blocks.md + */ + "vitest/padding-around-after-all-blocks"?: Linter.RuleEntry<[]>; + /** + * Enforce padding around `afterEach` blocks + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-after-each-blocks.md + */ + "vitest/padding-around-after-each-blocks"?: Linter.RuleEntry<[]>; + /** + * Enforce padding around vitest functions + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-all.md + */ + "vitest/padding-around-all"?: Linter.RuleEntry<[]>; + /** + * Enforce padding around `beforeAll` blocks + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-before-all-blocks.md + */ + "vitest/padding-around-before-all-blocks"?: Linter.RuleEntry<[]>; + /** + * Enforce padding around `beforeEach` blocks + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-before-each-blocks.md + */ + "vitest/padding-around-before-each-blocks"?: Linter.RuleEntry<[]>; + /** + * Enforce padding around `describe` blocks + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-describe-blocks.md + */ + "vitest/padding-around-describe-blocks"?: Linter.RuleEntry<[]>; + /** + * Enforce padding around `expect` groups + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-expect-groups.md + */ + "vitest/padding-around-expect-groups"?: Linter.RuleEntry<[]>; + /** + * Enforce padding around `test` blocks + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-test-blocks.md + */ + "vitest/padding-around-test-blocks"?: Linter.RuleEntry<[]>; + /** + * enforce using `toBeCalledWith()` or `toHaveBeenCalledWith()` + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-called-with.md + */ + "vitest/prefer-called-with"?: Linter.RuleEntry<[]>; + /** + * enforce using the built-in comparison matchers + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-comparison-matcher.md + */ + "vitest/prefer-comparison-matcher"?: Linter.RuleEntry<[]>; + /** + * enforce using a function as a describe title over an equivalent string + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-describe-function-title.md + */ + "vitest/prefer-describe-function-title"?: Linter.RuleEntry<[]>; + /** + * enforce using `each` rather than manual loops + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-each.md + */ + "vitest/prefer-each"?: Linter.RuleEntry<[]>; + /** + * enforce using the built-in quality matchers + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-equality-matcher.md + */ + "vitest/prefer-equality-matcher"?: Linter.RuleEntry<[]>; + /** + * enforce using expect assertions instead of callbacks + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-expect-assertions.md + */ + "vitest/prefer-expect-assertions"?: Linter.RuleEntry; + /** + * enforce using `expect().resolves` over `expect(await ...)` syntax + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-expect-resolves.md + */ + "vitest/prefer-expect-resolves"?: Linter.RuleEntry<[]>; + /** + * enforce having hooks in consistent order + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-hooks-in-order.md + */ + "vitest/prefer-hooks-in-order"?: Linter.RuleEntry<[]>; + /** + * enforce having hooks before any test cases + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-hooks-on-top.md + */ + "vitest/prefer-hooks-on-top"?: Linter.RuleEntry<[]>; + /** + * enforce lowercase titles + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-lowercase-title.md + */ + "vitest/prefer-lowercase-title"?: Linter.RuleEntry; + /** + * enforce mock resolved/rejected shorthands for promises + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-mock-promise-shorthand.md + */ + "vitest/prefer-mock-promise-shorthand"?: Linter.RuleEntry<[]>; + /** + * enforce including a hint with external snapshots + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-snapshot-hint.md + */ + "vitest/prefer-snapshot-hint"?: Linter.RuleEntry; + /** + * enforce using `vi.spyOn` + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-spy-on.md + */ + "vitest/prefer-spy-on"?: Linter.RuleEntry<[]>; + /** + * enforce using `toBe(true)` and `toBe(false)` over matchers that coerce types to boolean + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-strict-boolean-matchers.md + */ + "vitest/prefer-strict-boolean-matchers"?: Linter.RuleEntry<[]>; + /** + * enforce strict equal over equal + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-strict-equal.md + */ + "vitest/prefer-strict-equal"?: Linter.RuleEntry<[]>; + /** + * enforce using toBe() + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be.md + */ + "vitest/prefer-to-be"?: Linter.RuleEntry<[]>; + /** + * enforce using toBeFalsy() + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-falsy.md + */ + "vitest/prefer-to-be-falsy"?: Linter.RuleEntry<[]>; + /** + * enforce using toBeObject() + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-object.md + */ + "vitest/prefer-to-be-object"?: Linter.RuleEntry<[]>; + /** + * enforce using `toBeTruthy` + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-truthy.md + */ + "vitest/prefer-to-be-truthy"?: Linter.RuleEntry<[]>; + /** + * enforce using toContain() + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-contain.md + */ + "vitest/prefer-to-contain"?: Linter.RuleEntry<[]>; + /** + * enforce using toHaveLength() + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-have-length.md + */ + "vitest/prefer-to-have-length"?: Linter.RuleEntry<[]>; + /** + * enforce using `test.todo` + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-todo.md + */ + "vitest/prefer-todo"?: Linter.RuleEntry<[]>; + /** + * require `vi.mocked()` over `fn as Mock` + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-vi-mocked.md + */ + "vitest/prefer-vi-mocked"?: Linter.RuleEntry<[]>; + /** + * require setup and teardown to be within a hook + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-hook.md + */ + "vitest/require-hook"?: Linter.RuleEntry; + /** + * require local Test Context for concurrent snapshot tests + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-local-test-context-for-concurrent-snapshots.md + */ + "vitest/require-local-test-context-for-concurrent-snapshots"?: Linter.RuleEntry<[]>; + /** + * enforce using type parameters with vitest mock functions + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-mock-type-parameters.md + */ + "vitest/require-mock-type-parameters"?: Linter.RuleEntry; + /** + * require toThrow() to be called with an error message + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-to-throw-message.md + */ + "vitest/require-to-throw-message"?: Linter.RuleEntry<[]>; + /** + * enforce that all tests are in a top-level describe + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-top-level-describe.md + */ + "vitest/require-top-level-describe"?: Linter.RuleEntry; + /** + * enforce valid describe callback + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-describe-callback.md + */ + "vitest/valid-describe-callback"?: Linter.RuleEntry<[]>; + /** + * enforce valid `expect()` usage + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-expect.md + */ + "vitest/valid-expect"?: Linter.RuleEntry; + /** + * require promises that have expectations in their chain to be valid + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-expect-in-promise.md + */ + "vitest/valid-expect-in-promise"?: Linter.RuleEntry<[]>; + /** + * enforce valid titles + * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-title.md + */ + "vitest/valid-title"?: Linter.RuleEntry; + /** + * require or disallow block style mappings. + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/block-mapping.html + */ + "yaml/block-mapping"?: Linter.RuleEntry; + /** + * enforce consistent line breaks after `:` indicator + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/block-mapping-colon-indicator-newline.html + */ + "yaml/block-mapping-colon-indicator-newline"?: Linter.RuleEntry; + /** + * enforce consistent line breaks after `?` indicator + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/block-mapping-question-indicator-newline.html + */ + "yaml/block-mapping-question-indicator-newline"?: Linter.RuleEntry; + /** + * require or disallow block style sequences. + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/block-sequence.html + */ + "yaml/block-sequence"?: Linter.RuleEntry; + /** + * enforce consistent line breaks after `-` indicator + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/block-sequence-hyphen-indicator-newline.html + */ + "yaml/block-sequence-hyphen-indicator-newline"?: Linter.RuleEntry; + /** + * enforce YAML file extension + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/file-extension.html + */ + "yaml/file-extension"?: Linter.RuleEntry; + /** + * enforce consistent line breaks inside braces + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/flow-mapping-curly-newline.html + */ + "yaml/flow-mapping-curly-newline"?: Linter.RuleEntry; + /** + * enforce consistent spacing inside braces + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/flow-mapping-curly-spacing.html + */ + "yaml/flow-mapping-curly-spacing"?: Linter.RuleEntry; + /** + * enforce linebreaks after opening and before closing flow sequence brackets + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/flow-sequence-bracket-newline.html + */ + "yaml/flow-sequence-bracket-newline"?: Linter.RuleEntry; + /** + * enforce consistent spacing inside flow sequence brackets + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/flow-sequence-bracket-spacing.html + */ + "yaml/flow-sequence-bracket-spacing"?: Linter.RuleEntry; + /** + * enforce consistent indentation + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/indent.html + */ + "yaml/indent"?: Linter.RuleEntry; + /** + * enforce naming convention to key names + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/key-name-casing.html + */ + "yaml/key-name-casing"?: Linter.RuleEntry; + /** + * enforce consistent spacing between keys and values in mapping pairs + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/key-spacing.html + */ + "yaml/key-spacing"?: Linter.RuleEntry; + /** + * disallow empty document + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-empty-document.html + */ + "yaml/no-empty-document"?: Linter.RuleEntry<[]>; + /** + * disallow empty mapping keys + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-empty-key.html + */ + "yaml/no-empty-key"?: Linter.RuleEntry<[]>; + /** + * disallow empty mapping values + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-empty-mapping-value.html + */ + "yaml/no-empty-mapping-value"?: Linter.RuleEntry<[]>; + /** + * disallow empty sequence entries + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-empty-sequence-entry.html + */ + "yaml/no-empty-sequence-entry"?: Linter.RuleEntry<[]>; + /** + * disallow irregular whitespace + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-irregular-whitespace.html + */ + "yaml/no-irregular-whitespace"?: Linter.RuleEntry; + /** + * disallow multiple empty lines + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-multiple-empty-lines.html + */ + "yaml/no-multiple-empty-lines"?: Linter.RuleEntry; + /** + * disallow tabs for indentation. + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-tab-indent.html + */ + "yaml/no-tab-indent"?: Linter.RuleEntry<[]>; + /** + * disallow trailing zeros for floats + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-trailing-zeros.html + */ + "yaml/no-trailing-zeros"?: Linter.RuleEntry<[]>; + /** + * require or disallow plain style scalar. + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/plain-scalar.html + */ + "yaml/plain-scalar"?: Linter.RuleEntry; + /** + * enforce the consistent use of either double, or single quotes + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/quotes.html + */ + "yaml/quotes"?: Linter.RuleEntry; + /** + * disallow mapping keys other than strings + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/require-string-key.html + */ + "yaml/require-string-key"?: Linter.RuleEntry<[]>; + /** + * require mapping keys to be sorted + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/sort-keys.html + */ + "yaml/sort-keys"?: Linter.RuleEntry; + /** + * require sequence values to be sorted + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/sort-sequence-values.html + */ + "yaml/sort-sequence-values"?: Linter.RuleEntry; + /** + * enforce consistent spacing after the `#` in a comment + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/spaced-comment.html + */ + "yaml/spaced-comment"?: Linter.RuleEntry; + /** + * disallow parsing errors in Vue custom blocks + * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/vue-custom-block/no-parsing-error.html + */ + "yaml/vue-custom-block/no-parsing-error"?: Linter.RuleEntry<[]>; + /** + * Prefers `z.enum` over a union of literals. + * @see https://github.com/gajus/eslint-plugin-zod#eslint-plugin-zod-rules-prefer-enum + */ + "zod/prefer-enum"?: Linter.RuleEntry; + /** + * Requires that objects are initialized with .strict(). + * @see https://github.com/gajus/eslint-plugin-zod#eslint-plugin-zod-rules-require-strict + */ + "zod/require-strict"?: Linter.RuleEntry; } /* ======= Declarations ======= */ // ----- @stylistic/array-bracket-newline ----- -type StylisticArrayBracketNewline = []|[(("always" | "never" | "consistent") | { - multiline?: boolean - minItems?: (number | null) -})] +type StylisticArrayBracketNewline = + | [] + | [ + | ("always" | "never" | "consistent") + | { + multiline?: boolean; + minItems?: number | null; + }, + ]; // ----- @stylistic/array-bracket-spacing ----- -type StylisticArrayBracketSpacing = []|[("always" | "never")]|[("always" | "never"), { - singleValue?: boolean - objectsInArrays?: boolean - arraysInArrays?: boolean -}] +type StylisticArrayBracketSpacing = + | [] + | ["always" | "never"] + | [ + "always" | "never", + { + singleValue?: boolean; + objectsInArrays?: boolean; + arraysInArrays?: boolean; + }, + ]; // ----- @stylistic/array-element-newline ----- -type StylisticArrayElementNewline = []|[(_StylisticArrayElementNewlineBasicConfig | { - ArrayExpression?: _StylisticArrayElementNewlineBasicConfig - ArrayPattern?: _StylisticArrayElementNewlineBasicConfig -})] -type _StylisticArrayElementNewlineBasicConfig = (("always" | "never" | "consistent") | { - consistent?: boolean - multiline?: boolean - minItems?: (number | null) -}) +type StylisticArrayElementNewline = + | [] + | [ + | _StylisticArrayElementNewlineBasicConfig + | { + ArrayExpression?: _StylisticArrayElementNewlineBasicConfig; + ArrayPattern?: _StylisticArrayElementNewlineBasicConfig; + }, + ]; +type _StylisticArrayElementNewlineBasicConfig = + | ("always" | "never" | "consistent") + | { + consistent?: boolean; + multiline?: boolean; + minItems?: number | null; + }; // ----- @stylistic/arrow-parens ----- -type StylisticArrowParens = []|[("always" | "as-needed")]|[("always" | "as-needed"), { - requireForBlockBody?: boolean -}] +type StylisticArrowParens = + | [] + | ["always" | "as-needed"] + | [ + "always" | "as-needed", + { + requireForBlockBody?: boolean; + }, + ]; // ----- @stylistic/arrow-spacing ----- -type StylisticArrowSpacing = []|[{ - before?: boolean - after?: boolean -}] +type StylisticArrowSpacing = + | [] + | [ + { + before?: boolean; + after?: boolean; + }, + ]; // ----- @stylistic/block-spacing ----- -type StylisticBlockSpacing = []|[("always" | "never")] +type StylisticBlockSpacing = [] | ["always" | "never"]; // ----- @stylistic/brace-style ----- -type StylisticBraceStyle = []|[("1tbs" | "stroustrup" | "allman")]|[("1tbs" | "stroustrup" | "allman"), { - allowSingleLine?: boolean -}] +type StylisticBraceStyle = + | [] + | ["1tbs" | "stroustrup" | "allman"] + | [ + "1tbs" | "stroustrup" | "allman", + { + allowSingleLine?: boolean; + }, + ]; // ----- @stylistic/comma-dangle ----- -type StylisticCommaDangle = []|[(_StylisticCommaDangleValue | { - arrays?: _StylisticCommaDangleValueWithIgnore - objects?: _StylisticCommaDangleValueWithIgnore - imports?: _StylisticCommaDangleValueWithIgnore - exports?: _StylisticCommaDangleValueWithIgnore - functions?: _StylisticCommaDangleValueWithIgnore - importAttributes?: _StylisticCommaDangleValueWithIgnore - dynamicImports?: _StylisticCommaDangleValueWithIgnore - enums?: _StylisticCommaDangleValueWithIgnore - generics?: _StylisticCommaDangleValueWithIgnore - tuples?: _StylisticCommaDangleValueWithIgnore -})] -type _StylisticCommaDangleValue = ("always-multiline" | "always" | "never" | "only-multiline") -type _StylisticCommaDangleValueWithIgnore = ("always-multiline" | "always" | "never" | "only-multiline" | "ignore") +type StylisticCommaDangle = + | [] + | [ + | _StylisticCommaDangleValue + | { + arrays?: _StylisticCommaDangleValueWithIgnore; + objects?: _StylisticCommaDangleValueWithIgnore; + imports?: _StylisticCommaDangleValueWithIgnore; + exports?: _StylisticCommaDangleValueWithIgnore; + functions?: _StylisticCommaDangleValueWithIgnore; + importAttributes?: _StylisticCommaDangleValueWithIgnore; + dynamicImports?: _StylisticCommaDangleValueWithIgnore; + enums?: _StylisticCommaDangleValueWithIgnore; + generics?: _StylisticCommaDangleValueWithIgnore; + tuples?: _StylisticCommaDangleValueWithIgnore; + }, + ]; +type _StylisticCommaDangleValue = "always-multiline" | "always" | "never" | "only-multiline"; +type _StylisticCommaDangleValueWithIgnore = "always-multiline" | "always" | "never" | "only-multiline" | "ignore"; // ----- @stylistic/comma-spacing ----- -type StylisticCommaSpacing = []|[{ - before?: boolean - after?: boolean -}] +type StylisticCommaSpacing = + | [] + | [ + { + before?: boolean; + after?: boolean; + }, + ]; // ----- @stylistic/comma-style ----- -type StylisticCommaStyle = []|[("first" | "last")]|[("first" | "last"), { - exceptions?: { - [k: string]: boolean | undefined - } -}] +type StylisticCommaStyle = + | [] + | ["first" | "last"] + | [ + "first" | "last", + { + exceptions?: { + [k: string]: boolean | undefined; + }; + }, + ]; // ----- @stylistic/computed-property-spacing ----- -type StylisticComputedPropertySpacing = []|[("always" | "never")]|[("always" | "never"), { - enforceForClassMembers?: boolean -}] +type StylisticComputedPropertySpacing = + | [] + | ["always" | "never"] + | [ + "always" | "never", + { + enforceForClassMembers?: boolean; + }, + ]; // ----- @stylistic/curly-newline ----- -type StylisticCurlyNewline = []|[(("always" | "never") | { - IfStatementConsequent?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - IfStatementAlternative?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - DoWhileStatement?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - ForInStatement?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - ForOfStatement?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - ForStatement?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - WhileStatement?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - SwitchStatement?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - SwitchCase?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - TryStatementBlock?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - TryStatementHandler?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - TryStatementFinalizer?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - BlockStatement?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - ArrowFunctionExpression?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - FunctionDeclaration?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - FunctionExpression?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - Property?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - ClassBody?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - StaticBlock?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - WithStatement?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - TSEnumBody?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - TSInterfaceBody?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - TSModuleBlock?: (("always" | "never") | { - multiline?: boolean - minElements?: number - consistent?: boolean - }) - multiline?: boolean - minElements?: number - consistent?: boolean -})] +type StylisticCurlyNewline = + | [] + | [ + | ("always" | "never") + | { + IfStatementConsequent?: + | ("always" | "never") + | { + multiline?: boolean; + minElements?: number; + consistent?: boolean; + }; + IfStatementAlternative?: + | ("always" | "never") + | { + multiline?: boolean; + minElements?: number; + consistent?: boolean; + }; + DoWhileStatement?: + | ("always" | "never") + | { + multiline?: boolean; + minElements?: number; + consistent?: boolean; + }; + ForInStatement?: + | ("always" | "never") + | { + multiline?: boolean; + minElements?: number; + consistent?: boolean; + }; + ForOfStatement?: + | ("always" | "never") + | { + multiline?: boolean; + minElements?: number; + consistent?: boolean; + }; + ForStatement?: + | ("always" | "never") + | { + multiline?: boolean; + minElements?: number; + consistent?: boolean; + }; + WhileStatement?: + | ("always" | "never") + | { + multiline?: boolean; + minElements?: number; + consistent?: boolean; + }; + SwitchStatement?: + | ("always" | "never") + | { + multiline?: boolean; + minElements?: number; + consistent?: boolean; + }; + SwitchCase?: + | ("always" | "never") + | { + multiline?: boolean; + minElements?: number; + consistent?: boolean; + }; + TryStatementBlock?: + | ("always" | "never") + | { + multiline?: boolean; + minElements?: number; + consistent?: boolean; + }; + TryStatementHandler?: + | ("always" | "never") + | { + multiline?: boolean; + minElements?: number; + consistent?: boolean; + }; + TryStatementFinalizer?: + | ("always" | "never") + | { + multiline?: boolean; + minElements?: number; + consistent?: boolean; + }; + BlockStatement?: + | ("always" | "never") + | { + multiline?: boolean; + minElements?: number; + consistent?: boolean; + }; + ArrowFunctionExpression?: + | ("always" | "never") + | { + multiline?: boolean; + minElements?: number; + consistent?: boolean; + }; + FunctionDeclaration?: + | ("always" | "never") + | { + multiline?: boolean; + minElements?: number; + consistent?: boolean; + }; + FunctionExpression?: + | ("always" | "never") + | { + multiline?: boolean; + minElements?: number; + consistent?: boolean; + }; + Property?: + | ("always" | "never") + | { + multiline?: boolean; + minElements?: number; + consistent?: boolean; + }; + ClassBody?: + | ("always" | "never") + | { + multiline?: boolean; + minElements?: number; + consistent?: boolean; + }; + StaticBlock?: + | ("always" | "never") + | { + multiline?: boolean; + minElements?: number; + consistent?: boolean; + }; + WithStatement?: + | ("always" | "never") + | { + multiline?: boolean; + minElements?: number; + consistent?: boolean; + }; + TSEnumBody?: + | ("always" | "never") + | { + multiline?: boolean; + minElements?: number; + consistent?: boolean; + }; + TSInterfaceBody?: + | ("always" | "never") + | { + multiline?: boolean; + minElements?: number; + consistent?: boolean; + }; + TSModuleBlock?: + | ("always" | "never") + | { + multiline?: boolean; + minElements?: number; + consistent?: boolean; + }; + multiline?: boolean; + minElements?: number; + consistent?: boolean; + }, + ]; // ----- @stylistic/dot-location ----- -type StylisticDotLocation = []|[("object" | "property")] +type StylisticDotLocation = [] | ["object" | "property"]; // ----- @stylistic/eol-last ----- -type StylisticEolLast = []|[("always" | "never" | "unix" | "windows")] +type StylisticEolLast = [] | ["always" | "never" | "unix" | "windows"]; // ----- @stylistic/func-call-spacing ----- -type StylisticFuncCallSpacing = ([]|["never"] | []|["always"]|["always", { - allowNewlines?: boolean - optionalChain?: { - before?: boolean - after?: boolean - } -}]) +type StylisticFuncCallSpacing = + | [] + | ["never"] + | [] + | ["always"] + | [ + "always", + { + allowNewlines?: boolean; + optionalChain?: { + before?: boolean; + after?: boolean; + }; + }, + ]; // ----- @stylistic/function-call-argument-newline ----- -type StylisticFunctionCallArgumentNewline = []|[("always" | "never" | "consistent")] +type StylisticFunctionCallArgumentNewline = [] | ["always" | "never" | "consistent"]; // ----- @stylistic/function-call-spacing ----- -type StylisticFunctionCallSpacing = ([]|["never"] | []|["always"]|["always", { - allowNewlines?: boolean - optionalChain?: { - before?: boolean - after?: boolean - } -}]) +type StylisticFunctionCallSpacing = + | [] + | ["never"] + | [] + | ["always"] + | [ + "always", + { + allowNewlines?: boolean; + optionalChain?: { + before?: boolean; + after?: boolean; + }; + }, + ]; // ----- @stylistic/function-paren-newline ----- -type StylisticFunctionParenNewline = []|[(("always" | "never" | "consistent" | "multiline" | "multiline-arguments") | { - minItems?: number -})] +type StylisticFunctionParenNewline = + | [] + | [ + | ("always" | "never" | "consistent" | "multiline" | "multiline-arguments") + | { + minItems?: number; + }, + ]; // ----- @stylistic/generator-star-spacing ----- -type StylisticGeneratorStarSpacing = []|[(("before" | "after" | "both" | "neither") | { - before?: boolean - after?: boolean - named?: (("before" | "after" | "both" | "neither") | { - before?: boolean - after?: boolean - }) - anonymous?: (("before" | "after" | "both" | "neither") | { - before?: boolean - after?: boolean - }) - method?: (("before" | "after" | "both" | "neither") | { - before?: boolean - after?: boolean - }) -})] +type StylisticGeneratorStarSpacing = + | [] + | [ + | ("before" | "after" | "both" | "neither") + | { + before?: boolean; + after?: boolean; + named?: + | ("before" | "after" | "both" | "neither") + | { + before?: boolean; + after?: boolean; + }; + anonymous?: + | ("before" | "after" | "both" | "neither") + | { + before?: boolean; + after?: boolean; + }; + method?: + | ("before" | "after" | "both" | "neither") + | { + before?: boolean; + after?: boolean; + }; + }, + ]; // ----- @stylistic/implicit-arrow-linebreak ----- -type StylisticImplicitArrowLinebreak = []|[("beside" | "below")] +type StylisticImplicitArrowLinebreak = [] | ["beside" | "below"]; // ----- @stylistic/indent ----- -type StylisticIndent = []|[("tab" | number)]|[("tab" | number), { - SwitchCase?: number - VariableDeclarator?: ((number | ("first" | "off")) | { - var?: (number | ("first" | "off")) - let?: (number | ("first" | "off")) - const?: (number | ("first" | "off")) - }) - outerIIFEBody?: (number | "off") - MemberExpression?: (number | "off") - FunctionDeclaration?: { - parameters?: (number | ("first" | "off")) - body?: number - } - FunctionExpression?: { - parameters?: (number | ("first" | "off")) - body?: number - } - StaticBlock?: { - body?: number - } - CallExpression?: { - arguments?: (number | ("first" | "off")) - } - ArrayExpression?: (number | ("first" | "off")) - ObjectExpression?: (number | ("first" | "off")) - ImportDeclaration?: (number | ("first" | "off")) - flatTernaryExpressions?: boolean - offsetTernaryExpressions?: boolean - offsetTernaryExpressionsOffsetCallExpressions?: boolean - ignoredNodes?: string[] - ignoreComments?: boolean - tabLength?: number -}] +type StylisticIndent = + | [] + | ["tab" | number] + | [ + "tab" | number, + { + SwitchCase?: number; + VariableDeclarator?: + | (number | ("first" | "off")) + | { + var?: number | ("first" | "off"); + let?: number | ("first" | "off"); + const?: number | ("first" | "off"); + }; + outerIIFEBody?: number | "off"; + MemberExpression?: number | "off"; + FunctionDeclaration?: { + parameters?: number | ("first" | "off"); + body?: number; + }; + FunctionExpression?: { + parameters?: number | ("first" | "off"); + body?: number; + }; + StaticBlock?: { + body?: number; + }; + CallExpression?: { + arguments?: number | ("first" | "off"); + }; + ArrayExpression?: number | ("first" | "off"); + ObjectExpression?: number | ("first" | "off"); + ImportDeclaration?: number | ("first" | "off"); + flatTernaryExpressions?: boolean; + offsetTernaryExpressions?: boolean; + offsetTernaryExpressionsOffsetCallExpressions?: boolean; + ignoredNodes?: string[]; + ignoreComments?: boolean; + tabLength?: number; + }, + ]; // ----- @stylistic/indent-binary-ops ----- -type StylisticIndentBinaryOps = []|[(number | "tab")] +type StylisticIndentBinaryOps = [] | [number | "tab"]; // ----- @stylistic/jsx-closing-bracket-location ----- -type StylisticJsxClosingBracketLocation = []|[(("after-props" | "props-aligned" | "tag-aligned" | "line-aligned") | { - location?: ("after-props" | "props-aligned" | "tag-aligned" | "line-aligned") -} | { - nonEmpty?: (("after-props" | "props-aligned" | "tag-aligned" | "line-aligned") | false) - selfClosing?: (("after-props" | "props-aligned" | "tag-aligned" | "line-aligned") | false) -})] +type StylisticJsxClosingBracketLocation = + | [] + | [ + | ("after-props" | "props-aligned" | "tag-aligned" | "line-aligned") + | { + location?: "after-props" | "props-aligned" | "tag-aligned" | "line-aligned"; + } + | { + nonEmpty?: ("after-props" | "props-aligned" | "tag-aligned" | "line-aligned") | false; + selfClosing?: ("after-props" | "props-aligned" | "tag-aligned" | "line-aligned") | false; + }, + ]; // ----- @stylistic/jsx-closing-tag-location ----- -type StylisticJsxClosingTagLocation = []|[("tag-aligned" | "line-aligned")] +type StylisticJsxClosingTagLocation = [] | ["tag-aligned" | "line-aligned"]; // ----- @stylistic/jsx-curly-brace-presence ----- -type StylisticJsxCurlyBracePresence = []|[({ - props?: ("always" | "never" | "ignore") - children?: ("always" | "never" | "ignore") - propElementValues?: ("always" | "never" | "ignore") -} | ("always" | "never" | "ignore"))] +type StylisticJsxCurlyBracePresence = + | [] + | [ + | { + props?: "always" | "never" | "ignore"; + children?: "always" | "never" | "ignore"; + propElementValues?: "always" | "never" | "ignore"; + } + | ("always" | "never" | "ignore"), + ]; // ----- @stylistic/jsx-curly-newline ----- -type StylisticJsxCurlyNewline = []|[(("consistent" | "never") | { - singleline?: ("consistent" | "require" | "forbid") - multiline?: ("consistent" | "require" | "forbid") -})] +type StylisticJsxCurlyNewline = + | [] + | [ + | ("consistent" | "never") + | { + singleline?: "consistent" | "require" | "forbid"; + multiline?: "consistent" | "require" | "forbid"; + }, + ]; // ----- @stylistic/jsx-curly-spacing ----- -type StylisticJsxCurlySpacing = []|[((_StylisticJsxCurlySpacing_BasicConfig & { - attributes?: _StylisticJsxCurlySpacingBasicConfigOrBoolean - children?: _StylisticJsxCurlySpacingBasicConfigOrBoolean - [k: string]: unknown | undefined -}) | ("always" | "never"))]|[((_StylisticJsxCurlySpacing_BasicConfig & { - attributes?: _StylisticJsxCurlySpacingBasicConfigOrBoolean - children?: _StylisticJsxCurlySpacingBasicConfigOrBoolean - [k: string]: unknown | undefined -}) | ("always" | "never")), { - allowMultiline?: boolean - spacing?: { - objectLiterals?: ("always" | "never") - [k: string]: unknown | undefined - } -}] -type _StylisticJsxCurlySpacingBasicConfigOrBoolean = (_StylisticJsxCurlySpacing_BasicConfig | boolean) +type StylisticJsxCurlySpacing = + | [] + | [ + | (_StylisticJsxCurlySpacing_BasicConfig & { + attributes?: _StylisticJsxCurlySpacingBasicConfigOrBoolean; + children?: _StylisticJsxCurlySpacingBasicConfigOrBoolean; + [k: string]: unknown | undefined; + }) + | ("always" | "never"), + ] + | [ + ( + | (_StylisticJsxCurlySpacing_BasicConfig & { + attributes?: _StylisticJsxCurlySpacingBasicConfigOrBoolean; + children?: _StylisticJsxCurlySpacingBasicConfigOrBoolean; + [k: string]: unknown | undefined; + }) + | ("always" | "never") + ), + { + allowMultiline?: boolean; + spacing?: { + objectLiterals?: "always" | "never"; + [k: string]: unknown | undefined; + }; + }, + ]; +type _StylisticJsxCurlySpacingBasicConfigOrBoolean = _StylisticJsxCurlySpacing_BasicConfig | boolean; interface _StylisticJsxCurlySpacing_BasicConfig { - when?: ("always" | "never") - allowMultiline?: boolean - spacing?: { - objectLiterals?: ("always" | "never") - [k: string]: unknown | undefined - } - [k: string]: unknown | undefined + when?: "always" | "never"; + allowMultiline?: boolean; + spacing?: { + objectLiterals?: "always" | "never"; + [k: string]: unknown | undefined; + }; + [k: string]: unknown | undefined; } // ----- @stylistic/jsx-equals-spacing ----- -type StylisticJsxEqualsSpacing = []|[("always" | "never")] +type StylisticJsxEqualsSpacing = [] | ["always" | "never"]; // ----- @stylistic/jsx-first-prop-new-line ----- -type StylisticJsxFirstPropNewLine = []|[("always" | "never" | "multiline" | "multiline-multiprop" | "multiprop")] +type StylisticJsxFirstPropNewLine = [] | ["always" | "never" | "multiline" | "multiline-multiprop" | "multiprop"]; // ----- @stylistic/jsx-function-call-newline ----- -type StylisticJsxFunctionCallNewline = []|[("always" | "multiline")] +type StylisticJsxFunctionCallNewline = [] | ["always" | "multiline"]; // ----- @stylistic/jsx-indent ----- -type StylisticJsxIndent = []|[("tab" | number)]|[("tab" | number), { - checkAttributes?: boolean - indentLogicalExpressions?: boolean -}] +type StylisticJsxIndent = + | [] + | ["tab" | number] + | [ + "tab" | number, + { + checkAttributes?: boolean; + indentLogicalExpressions?: boolean; + }, + ]; // ----- @stylistic/jsx-indent-props ----- -type StylisticJsxIndentProps = []|[(("tab" | "first") | number | { - indentMode?: (("tab" | "first") | number) - ignoreTernaryOperator?: boolean - [k: string]: unknown | undefined -})] +type StylisticJsxIndentProps = + | [] + | [ + | ("tab" | "first") + | number + | { + indentMode?: ("tab" | "first") | number; + ignoreTernaryOperator?: boolean; + [k: string]: unknown | undefined; + }, + ]; // ----- @stylistic/jsx-max-props-per-line ----- -type StylisticJsxMaxPropsPerLine = []|[({ - maximum?: { - single?: number - multi?: number - [k: string]: unknown | undefined - } -} | { - maximum?: number - when?: ("always" | "multiline") -})] +type StylisticJsxMaxPropsPerLine = + | [] + | [ + | { + maximum?: { + single?: number; + multi?: number; + [k: string]: unknown | undefined; + }; + } + | { + maximum?: number; + when?: "always" | "multiline"; + }, + ]; // ----- @stylistic/jsx-newline ----- -type StylisticJsxNewline = []|[{ - prevent?: boolean - allowMultilines?: boolean -}] +type StylisticJsxNewline = + | [] + | [ + { + prevent?: boolean; + allowMultilines?: boolean; + }, + ]; // ----- @stylistic/jsx-one-expression-per-line ----- -type StylisticJsxOneExpressionPerLine = []|[{ - allow?: ("none" | "literal" | "single-child" | "single-line" | "non-jsx") -}] +type StylisticJsxOneExpressionPerLine = + | [] + | [ + { + allow?: "none" | "literal" | "single-child" | "single-line" | "non-jsx"; + }, + ]; // ----- @stylistic/jsx-pascal-case ----- -type StylisticJsxPascalCase = []|[{ - allowAllCaps?: boolean - allowLeadingUnderscore?: boolean - allowNamespace?: boolean - ignore?: string[] -}] +type StylisticJsxPascalCase = + | [] + | [ + { + allowAllCaps?: boolean; + allowLeadingUnderscore?: boolean; + allowNamespace?: boolean; + ignore?: string[]; + }, + ]; // ----- @stylistic/jsx-quotes ----- -type StylisticJsxQuotes = []|[("prefer-single" | "prefer-double")] +type StylisticJsxQuotes = [] | ["prefer-single" | "prefer-double"]; // ----- @stylistic/jsx-self-closing-comp ----- -type StylisticJsxSelfClosingComp = []|[{ - component?: boolean - html?: boolean -}] +type StylisticJsxSelfClosingComp = + | [] + | [ + { + component?: boolean; + html?: boolean; + }, + ]; // ----- @stylistic/jsx-sort-props ----- -type StylisticJsxSortProps = []|[{ - callbacksLast?: boolean - shorthandFirst?: boolean - shorthandLast?: boolean - multiline?: ("ignore" | "first" | "last") - ignoreCase?: boolean - noSortAlphabetically?: boolean - reservedFirst?: (unknown[] | boolean) - locale?: string -}] +type StylisticJsxSortProps = + | [] + | [ + { + callbacksLast?: boolean; + shorthandFirst?: boolean; + shorthandLast?: boolean; + multiline?: "ignore" | "first" | "last"; + ignoreCase?: boolean; + noSortAlphabetically?: boolean; + reservedFirst?: unknown[] | boolean; + locale?: string; + }, + ]; // ----- @stylistic/jsx-tag-spacing ----- -type StylisticJsxTagSpacing = []|[{ - closingSlash?: ("always" | "never" | "allow") - beforeSelfClosing?: ("always" | "proportional-always" | "never" | "allow") - afterOpening?: ("always" | "allow-multiline" | "never" | "allow") - beforeClosing?: ("always" | "proportional-always" | "never" | "allow") -}] +type StylisticJsxTagSpacing = + | [] + | [ + { + closingSlash?: "always" | "never" | "allow"; + beforeSelfClosing?: "always" | "proportional-always" | "never" | "allow"; + afterOpening?: "always" | "allow-multiline" | "never" | "allow"; + beforeClosing?: "always" | "proportional-always" | "never" | "allow"; + }, + ]; // ----- @stylistic/jsx-wrap-multilines ----- -type StylisticJsxWrapMultilines = []|[{ - declaration?: ((true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line")) - assignment?: ((true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line")) - return?: ((true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line")) - arrow?: ((true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line")) - condition?: ((true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line")) - logical?: ((true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line")) - prop?: ((true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line")) - propertyValue?: ((true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line")) -}] +type StylisticJsxWrapMultilines = + | [] + | [ + { + declaration?: (true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line"); + assignment?: (true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line"); + return?: (true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line"); + arrow?: (true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line"); + condition?: (true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line"); + logical?: (true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line"); + prop?: (true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line"); + propertyValue?: (true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line"); + }, + ]; // ----- @stylistic/key-spacing ----- -type StylisticKeySpacing = []|[({ - align?: (("colon" | "value") | { - mode?: ("strict" | "minimum") - on?: ("colon" | "value") - beforeColon?: boolean - afterColon?: boolean - }) - mode?: ("strict" | "minimum") - beforeColon?: boolean - afterColon?: boolean - ignoredNodes?: ("ObjectExpression" | "ObjectPattern" | "ImportDeclaration" | "ExportNamedDeclaration" | "ExportAllDeclaration" | "TSTypeLiteral" | "TSInterfaceBody" | "ClassBody")[] -} | { - singleLine?: { - mode?: ("strict" | "minimum") - beforeColon?: boolean - afterColon?: boolean - } - multiLine?: { - align?: (("colon" | "value") | { - mode?: ("strict" | "minimum") - on?: ("colon" | "value") - beforeColon?: boolean - afterColon?: boolean - }) - mode?: ("strict" | "minimum") - beforeColon?: boolean - afterColon?: boolean - } -} | { - singleLine?: { - mode?: ("strict" | "minimum") - beforeColon?: boolean - afterColon?: boolean - } - multiLine?: { - mode?: ("strict" | "minimum") - beforeColon?: boolean - afterColon?: boolean - } - align?: { - mode?: ("strict" | "minimum") - on?: ("colon" | "value") - beforeColon?: boolean - afterColon?: boolean - } -})] +type StylisticKeySpacing = + | [] + | [ + | { + align?: + | ("colon" | "value") + | { + mode?: "strict" | "minimum"; + on?: "colon" | "value"; + beforeColon?: boolean; + afterColon?: boolean; + }; + mode?: "strict" | "minimum"; + beforeColon?: boolean; + afterColon?: boolean; + ignoredNodes?: ( + | "ObjectExpression" + | "ObjectPattern" + | "ImportDeclaration" + | "ExportNamedDeclaration" + | "ExportAllDeclaration" + | "TSTypeLiteral" + | "TSInterfaceBody" + | "ClassBody" + )[]; + } + | { + singleLine?: { + mode?: "strict" | "minimum"; + beforeColon?: boolean; + afterColon?: boolean; + }; + multiLine?: { + align?: + | ("colon" | "value") + | { + mode?: "strict" | "minimum"; + on?: "colon" | "value"; + beforeColon?: boolean; + afterColon?: boolean; + }; + mode?: "strict" | "minimum"; + beforeColon?: boolean; + afterColon?: boolean; + }; + } + | { + singleLine?: { + mode?: "strict" | "minimum"; + beforeColon?: boolean; + afterColon?: boolean; + }; + multiLine?: { + mode?: "strict" | "minimum"; + beforeColon?: boolean; + afterColon?: boolean; + }; + align?: { + mode?: "strict" | "minimum"; + on?: "colon" | "value"; + beforeColon?: boolean; + afterColon?: boolean; + }; + }, + ]; // ----- @stylistic/keyword-spacing ----- -type StylisticKeywordSpacing = []|[{ - before?: boolean - after?: boolean - overrides?: { - abstract?: { - before?: boolean - after?: boolean - } - as?: { - before?: boolean - after?: boolean - } - async?: { - before?: boolean - after?: boolean - } - await?: { - before?: boolean - after?: boolean - } - boolean?: { - before?: boolean - after?: boolean - } - break?: { - before?: boolean - after?: boolean - } - byte?: { - before?: boolean - after?: boolean - } - case?: { - before?: boolean - after?: boolean - } - catch?: { - before?: boolean - after?: boolean - } - char?: { - before?: boolean - after?: boolean - } - class?: { - before?: boolean - after?: boolean - } - const?: { - before?: boolean - after?: boolean - } - continue?: { - before?: boolean - after?: boolean - } - debugger?: { - before?: boolean - after?: boolean - } - default?: { - before?: boolean - after?: boolean - } - delete?: { - before?: boolean - after?: boolean - } - do?: { - before?: boolean - after?: boolean - } - double?: { - before?: boolean - after?: boolean - } - else?: { - before?: boolean - after?: boolean - } - enum?: { - before?: boolean - after?: boolean - } - export?: { - before?: boolean - after?: boolean - } - extends?: { - before?: boolean - after?: boolean - } - false?: { - before?: boolean - after?: boolean - } - final?: { - before?: boolean - after?: boolean - } - finally?: { - before?: boolean - after?: boolean - } - float?: { - before?: boolean - after?: boolean - } - for?: { - before?: boolean - after?: boolean - } - from?: { - before?: boolean - after?: boolean - } - function?: { - before?: boolean - after?: boolean - } - get?: { - before?: boolean - after?: boolean - } - goto?: { - before?: boolean - after?: boolean - } - if?: { - before?: boolean - after?: boolean - } - implements?: { - before?: boolean - after?: boolean - } - import?: { - before?: boolean - after?: boolean - } - in?: { - before?: boolean - after?: boolean - } - instanceof?: { - before?: boolean - after?: boolean - } - int?: { - before?: boolean - after?: boolean - } - interface?: { - before?: boolean - after?: boolean - } - let?: { - before?: boolean - after?: boolean - } - long?: { - before?: boolean - after?: boolean - } - native?: { - before?: boolean - after?: boolean - } - new?: { - before?: boolean - after?: boolean - } - null?: { - before?: boolean - after?: boolean - } - of?: { - before?: boolean - after?: boolean - } - package?: { - before?: boolean - after?: boolean - } - private?: { - before?: boolean - after?: boolean - } - protected?: { - before?: boolean - after?: boolean - } - public?: { - before?: boolean - after?: boolean - } - return?: { - before?: boolean - after?: boolean - } - satisfies?: { - before?: boolean - after?: boolean - } - set?: { - before?: boolean - after?: boolean - } - short?: { - before?: boolean - after?: boolean - } - static?: { - before?: boolean - after?: boolean - } - super?: { - before?: boolean - after?: boolean - } - switch?: { - before?: boolean - after?: boolean - } - synchronized?: { - before?: boolean - after?: boolean - } - this?: { - before?: boolean - after?: boolean - } - throw?: { - before?: boolean - after?: boolean - } - throws?: { - before?: boolean - after?: boolean - } - transient?: { - before?: boolean - after?: boolean - } - true?: { - before?: boolean - after?: boolean - } - try?: { - before?: boolean - after?: boolean - } - typeof?: { - before?: boolean - after?: boolean - } - var?: { - before?: boolean - after?: boolean - } - void?: { - before?: boolean - after?: boolean - } - volatile?: { - before?: boolean - after?: boolean - } - while?: { - before?: boolean - after?: boolean - } - with?: { - before?: boolean - after?: boolean - } - yield?: { - before?: boolean - after?: boolean - } - type?: { - before?: boolean - after?: boolean - } - } -}] +type StylisticKeywordSpacing = + | [] + | [ + { + before?: boolean; + after?: boolean; + overrides?: { + abstract?: { + before?: boolean; + after?: boolean; + }; + as?: { + before?: boolean; + after?: boolean; + }; + async?: { + before?: boolean; + after?: boolean; + }; + await?: { + before?: boolean; + after?: boolean; + }; + boolean?: { + before?: boolean; + after?: boolean; + }; + break?: { + before?: boolean; + after?: boolean; + }; + byte?: { + before?: boolean; + after?: boolean; + }; + case?: { + before?: boolean; + after?: boolean; + }; + catch?: { + before?: boolean; + after?: boolean; + }; + char?: { + before?: boolean; + after?: boolean; + }; + class?: { + before?: boolean; + after?: boolean; + }; + const?: { + before?: boolean; + after?: boolean; + }; + continue?: { + before?: boolean; + after?: boolean; + }; + debugger?: { + before?: boolean; + after?: boolean; + }; + default?: { + before?: boolean; + after?: boolean; + }; + delete?: { + before?: boolean; + after?: boolean; + }; + do?: { + before?: boolean; + after?: boolean; + }; + double?: { + before?: boolean; + after?: boolean; + }; + else?: { + before?: boolean; + after?: boolean; + }; + enum?: { + before?: boolean; + after?: boolean; + }; + export?: { + before?: boolean; + after?: boolean; + }; + extends?: { + before?: boolean; + after?: boolean; + }; + false?: { + before?: boolean; + after?: boolean; + }; + final?: { + before?: boolean; + after?: boolean; + }; + finally?: { + before?: boolean; + after?: boolean; + }; + float?: { + before?: boolean; + after?: boolean; + }; + for?: { + before?: boolean; + after?: boolean; + }; + from?: { + before?: boolean; + after?: boolean; + }; + function?: { + before?: boolean; + after?: boolean; + }; + get?: { + before?: boolean; + after?: boolean; + }; + goto?: { + before?: boolean; + after?: boolean; + }; + if?: { + before?: boolean; + after?: boolean; + }; + implements?: { + before?: boolean; + after?: boolean; + }; + import?: { + before?: boolean; + after?: boolean; + }; + in?: { + before?: boolean; + after?: boolean; + }; + instanceof?: { + before?: boolean; + after?: boolean; + }; + int?: { + before?: boolean; + after?: boolean; + }; + interface?: { + before?: boolean; + after?: boolean; + }; + let?: { + before?: boolean; + after?: boolean; + }; + long?: { + before?: boolean; + after?: boolean; + }; + native?: { + before?: boolean; + after?: boolean; + }; + new?: { + before?: boolean; + after?: boolean; + }; + null?: { + before?: boolean; + after?: boolean; + }; + of?: { + before?: boolean; + after?: boolean; + }; + package?: { + before?: boolean; + after?: boolean; + }; + private?: { + before?: boolean; + after?: boolean; + }; + protected?: { + before?: boolean; + after?: boolean; + }; + public?: { + before?: boolean; + after?: boolean; + }; + return?: { + before?: boolean; + after?: boolean; + }; + satisfies?: { + before?: boolean; + after?: boolean; + }; + set?: { + before?: boolean; + after?: boolean; + }; + short?: { + before?: boolean; + after?: boolean; + }; + static?: { + before?: boolean; + after?: boolean; + }; + super?: { + before?: boolean; + after?: boolean; + }; + switch?: { + before?: boolean; + after?: boolean; + }; + synchronized?: { + before?: boolean; + after?: boolean; + }; + this?: { + before?: boolean; + after?: boolean; + }; + throw?: { + before?: boolean; + after?: boolean; + }; + throws?: { + before?: boolean; + after?: boolean; + }; + transient?: { + before?: boolean; + after?: boolean; + }; + true?: { + before?: boolean; + after?: boolean; + }; + try?: { + before?: boolean; + after?: boolean; + }; + typeof?: { + before?: boolean; + after?: boolean; + }; + var?: { + before?: boolean; + after?: boolean; + }; + void?: { + before?: boolean; + after?: boolean; + }; + volatile?: { + before?: boolean; + after?: boolean; + }; + while?: { + before?: boolean; + after?: boolean; + }; + with?: { + before?: boolean; + after?: boolean; + }; + yield?: { + before?: boolean; + after?: boolean; + }; + type?: { + before?: boolean; + after?: boolean; + }; + }; + }, + ]; // ----- @stylistic/line-comment-position ----- -type StylisticLineCommentPosition = []|[(("above" | "beside") | { - position?: ("above" | "beside") - ignorePattern?: string - applyDefaultPatterns?: boolean - applyDefaultIgnorePatterns?: boolean -})] +type StylisticLineCommentPosition = + | [] + | [ + | ("above" | "beside") + | { + position?: "above" | "beside"; + ignorePattern?: string; + applyDefaultPatterns?: boolean; + applyDefaultIgnorePatterns?: boolean; + }, + ]; // ----- @stylistic/linebreak-style ----- -type StylisticLinebreakStyle = []|[("unix" | "windows")] +type StylisticLinebreakStyle = [] | ["unix" | "windows"]; // ----- @stylistic/lines-around-comment ----- -type StylisticLinesAroundComment = []|[{ - beforeBlockComment?: boolean - afterBlockComment?: boolean - beforeLineComment?: boolean - afterLineComment?: boolean - allowBlockStart?: boolean - allowBlockEnd?: boolean - allowClassStart?: boolean - allowClassEnd?: boolean - allowObjectStart?: boolean - allowObjectEnd?: boolean - allowArrayStart?: boolean - allowArrayEnd?: boolean - allowInterfaceStart?: boolean - allowInterfaceEnd?: boolean - allowTypeStart?: boolean - allowTypeEnd?: boolean - allowEnumStart?: boolean - allowEnumEnd?: boolean - allowModuleStart?: boolean - allowModuleEnd?: boolean - ignorePattern?: string - applyDefaultIgnorePatterns?: boolean - afterHashbangComment?: boolean -}] +type StylisticLinesAroundComment = + | [] + | [ + { + beforeBlockComment?: boolean; + afterBlockComment?: boolean; + beforeLineComment?: boolean; + afterLineComment?: boolean; + allowBlockStart?: boolean; + allowBlockEnd?: boolean; + allowClassStart?: boolean; + allowClassEnd?: boolean; + allowObjectStart?: boolean; + allowObjectEnd?: boolean; + allowArrayStart?: boolean; + allowArrayEnd?: boolean; + allowInterfaceStart?: boolean; + allowInterfaceEnd?: boolean; + allowTypeStart?: boolean; + allowTypeEnd?: boolean; + allowEnumStart?: boolean; + allowEnumEnd?: boolean; + allowModuleStart?: boolean; + allowModuleEnd?: boolean; + ignorePattern?: string; + applyDefaultIgnorePatterns?: boolean; + afterHashbangComment?: boolean; + }, + ]; // ----- @stylistic/lines-between-class-members ----- -type StylisticLinesBetweenClassMembers = []|[({ - - enforce: [{ - blankLine: ("always" | "never") - prev: ("method" | "field" | "*") - next: ("method" | "field" | "*") - }, ...({ - blankLine: ("always" | "never") - prev: ("method" | "field" | "*") - next: ("method" | "field" | "*") - })[]] -} | ("always" | "never"))]|[({ - - enforce: [{ - blankLine: ("always" | "never") - prev: ("method" | "field" | "*") - next: ("method" | "field" | "*") - }, ...({ - blankLine: ("always" | "never") - prev: ("method" | "field" | "*") - next: ("method" | "field" | "*") - })[]] -} | ("always" | "never")), { - exceptAfterSingleLine?: boolean - exceptAfterOverload?: boolean -}] +type StylisticLinesBetweenClassMembers = + | [] + | [ + | { + enforce: [ + { + blankLine: "always" | "never"; + prev: "method" | "field" | "*"; + next: "method" | "field" | "*"; + }, + ...{ + blankLine: "always" | "never"; + prev: "method" | "field" | "*"; + next: "method" | "field" | "*"; + }[], + ]; + } + | ("always" | "never"), + ] + | [ + ( + | { + enforce: [ + { + blankLine: "always" | "never"; + prev: "method" | "field" | "*"; + next: "method" | "field" | "*"; + }, + ...{ + blankLine: "always" | "never"; + prev: "method" | "field" | "*"; + next: "method" | "field" | "*"; + }[], + ]; + } + | ("always" | "never") + ), + { + exceptAfterSingleLine?: boolean; + exceptAfterOverload?: boolean; + }, + ]; // ----- @stylistic/max-len ----- -type StylisticMaxLen = []|[({ - code?: number - comments?: number - tabWidth?: number - ignorePattern?: string - ignoreComments?: boolean - ignoreStrings?: boolean - ignoreUrls?: boolean - ignoreTemplateLiterals?: boolean - ignoreRegExpLiterals?: boolean - ignoreTrailingComments?: boolean -} | number)]|[({ - code?: number - comments?: number - tabWidth?: number - ignorePattern?: string - ignoreComments?: boolean - ignoreStrings?: boolean - ignoreUrls?: boolean - ignoreTemplateLiterals?: boolean - ignoreRegExpLiterals?: boolean - ignoreTrailingComments?: boolean -} | number), ({ - code?: number - comments?: number - tabWidth?: number - ignorePattern?: string - ignoreComments?: boolean - ignoreStrings?: boolean - ignoreUrls?: boolean - ignoreTemplateLiterals?: boolean - ignoreRegExpLiterals?: boolean - ignoreTrailingComments?: boolean -} | number)]|[({ - code?: number - comments?: number - tabWidth?: number - ignorePattern?: string - ignoreComments?: boolean - ignoreStrings?: boolean - ignoreUrls?: boolean - ignoreTemplateLiterals?: boolean - ignoreRegExpLiterals?: boolean - ignoreTrailingComments?: boolean -} | number), ({ - code?: number - comments?: number - tabWidth?: number - ignorePattern?: string - ignoreComments?: boolean - ignoreStrings?: boolean - ignoreUrls?: boolean - ignoreTemplateLiterals?: boolean - ignoreRegExpLiterals?: boolean - ignoreTrailingComments?: boolean -} | number), { - code?: number - comments?: number - tabWidth?: number - ignorePattern?: string - ignoreComments?: boolean - ignoreStrings?: boolean - ignoreUrls?: boolean - ignoreTemplateLiterals?: boolean - ignoreRegExpLiterals?: boolean - ignoreTrailingComments?: boolean -}] +type StylisticMaxLen = + | [] + | [ + | { + code?: number; + comments?: number; + tabWidth?: number; + ignorePattern?: string; + ignoreComments?: boolean; + ignoreStrings?: boolean; + ignoreUrls?: boolean; + ignoreTemplateLiterals?: boolean; + ignoreRegExpLiterals?: boolean; + ignoreTrailingComments?: boolean; + } + | number, + ] + | [ + ( + | { + code?: number; + comments?: number; + tabWidth?: number; + ignorePattern?: string; + ignoreComments?: boolean; + ignoreStrings?: boolean; + ignoreUrls?: boolean; + ignoreTemplateLiterals?: boolean; + ignoreRegExpLiterals?: boolean; + ignoreTrailingComments?: boolean; + } + | number + ), + ( + | { + code?: number; + comments?: number; + tabWidth?: number; + ignorePattern?: string; + ignoreComments?: boolean; + ignoreStrings?: boolean; + ignoreUrls?: boolean; + ignoreTemplateLiterals?: boolean; + ignoreRegExpLiterals?: boolean; + ignoreTrailingComments?: boolean; + } + | number + ), + ] + | [ + ( + | { + code?: number; + comments?: number; + tabWidth?: number; + ignorePattern?: string; + ignoreComments?: boolean; + ignoreStrings?: boolean; + ignoreUrls?: boolean; + ignoreTemplateLiterals?: boolean; + ignoreRegExpLiterals?: boolean; + ignoreTrailingComments?: boolean; + } + | number + ), + ( + | { + code?: number; + comments?: number; + tabWidth?: number; + ignorePattern?: string; + ignoreComments?: boolean; + ignoreStrings?: boolean; + ignoreUrls?: boolean; + ignoreTemplateLiterals?: boolean; + ignoreRegExpLiterals?: boolean; + ignoreTrailingComments?: boolean; + } + | number + ), + { + code?: number; + comments?: number; + tabWidth?: number; + ignorePattern?: string; + ignoreComments?: boolean; + ignoreStrings?: boolean; + ignoreUrls?: boolean; + ignoreTemplateLiterals?: boolean; + ignoreRegExpLiterals?: boolean; + ignoreTrailingComments?: boolean; + }, + ]; // ----- @stylistic/max-statements-per-line ----- -type StylisticMaxStatementsPerLine = []|[{ - max?: number - ignoredNodes?: ("BreakStatement" | "ClassDeclaration" | "ContinueStatement" | "DebuggerStatement" | "DoWhileStatement" | "ExpressionStatement" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "IfStatement" | "ImportDeclaration" | "LabeledStatement" | "ReturnStatement" | "SwitchStatement" | "ThrowStatement" | "TryStatement" | "VariableDeclaration" | "WhileStatement" | "WithStatement" | "ExportNamedDeclaration" | "ExportDefaultDeclaration" | "ExportAllDeclaration")[] -}] +type StylisticMaxStatementsPerLine = + | [] + | [ + { + max?: number; + ignoredNodes?: ( + | "BreakStatement" + | "ClassDeclaration" + | "ContinueStatement" + | "DebuggerStatement" + | "DoWhileStatement" + | "ExpressionStatement" + | "ForInStatement" + | "ForOfStatement" + | "ForStatement" + | "FunctionDeclaration" + | "IfStatement" + | "ImportDeclaration" + | "LabeledStatement" + | "ReturnStatement" + | "SwitchStatement" + | "ThrowStatement" + | "TryStatement" + | "VariableDeclaration" + | "WhileStatement" + | "WithStatement" + | "ExportNamedDeclaration" + | "ExportDefaultDeclaration" + | "ExportAllDeclaration" + )[]; + }, + ]; // ----- @stylistic/member-delimiter-style ----- -type StylisticMemberDelimiterStyle = []|[{ - multiline?: { - delimiter?: ("none" | "semi" | "comma") - requireLast?: boolean - } - singleline?: { - delimiter?: ("semi" | "comma") - requireLast?: boolean - } - overrides?: { - interface?: _StylisticMemberDelimiterStyle_DelimiterConfig - typeLiteral?: _StylisticMemberDelimiterStyle_DelimiterConfig - } - multilineDetection?: ("brackets" | "last-member") -}] +type StylisticMemberDelimiterStyle = + | [] + | [ + { + multiline?: { + delimiter?: "none" | "semi" | "comma"; + requireLast?: boolean; + }; + singleline?: { + delimiter?: "semi" | "comma"; + requireLast?: boolean; + }; + overrides?: { + interface?: _StylisticMemberDelimiterStyle_DelimiterConfig; + typeLiteral?: _StylisticMemberDelimiterStyle_DelimiterConfig; + }; + multilineDetection?: "brackets" | "last-member"; + }, + ]; interface _StylisticMemberDelimiterStyle_DelimiterConfig { - multiline?: { - delimiter?: ("none" | "semi" | "comma") - requireLast?: boolean - } - singleline?: { - delimiter?: ("semi" | "comma") - requireLast?: boolean - } + multiline?: { + delimiter?: "none" | "semi" | "comma"; + requireLast?: boolean; + }; + singleline?: { + delimiter?: "semi" | "comma"; + requireLast?: boolean; + }; } // ----- @stylistic/multiline-comment-style ----- -type StylisticMultilineCommentStyle = ([]|[("starred-block" | "bare-block")] | []|["separate-lines"]|["separate-lines", { - checkJSDoc?: boolean -}]) +type StylisticMultilineCommentStyle = + | [] + | ["starred-block" | "bare-block"] + | [] + | ["separate-lines"] + | [ + "separate-lines", + { + checkJSDoc?: boolean; + }, + ]; // ----- @stylistic/multiline-ternary ----- -type StylisticMultilineTernary = []|[("always" | "always-multiline" | "never")]|[("always" | "always-multiline" | "never"), { - ignoreJSX?: boolean - [k: string]: unknown | undefined -}] +type StylisticMultilineTernary = + | [] + | ["always" | "always-multiline" | "never"] + | [ + "always" | "always-multiline" | "never", + { + ignoreJSX?: boolean; + [k: string]: unknown | undefined; + }, + ]; // ----- @stylistic/new-parens ----- -type StylisticNewParens = []|[("always" | "never")] +type StylisticNewParens = [] | ["always" | "never"]; // ----- @stylistic/newline-per-chained-call ----- -type StylisticNewlinePerChainedCall = []|[{ - ignoreChainWithDepth?: number -}] +type StylisticNewlinePerChainedCall = + | [] + | [ + { + ignoreChainWithDepth?: number; + }, + ]; // ----- @stylistic/no-confusing-arrow ----- -type StylisticNoConfusingArrow = []|[{ - allowParens?: boolean - onlyOneSimpleParam?: boolean -}] +type StylisticNoConfusingArrow = + | [] + | [ + { + allowParens?: boolean; + onlyOneSimpleParam?: boolean; + }, + ]; // ----- @stylistic/no-extra-parens ----- -type StylisticNoExtraParens = ([]|["functions"] | []|["all"]|["all", { - conditionalAssign?: boolean - ternaryOperandBinaryExpressions?: boolean - nestedBinaryExpressions?: boolean - returnAssign?: boolean - ignoreJSX?: ("none" | "all" | "single-line" | "multi-line") - enforceForArrowConditionals?: boolean - enforceForSequenceExpressions?: boolean - enforceForNewInMemberExpressions?: boolean - enforceForFunctionPrototypeMethods?: boolean - allowParensAfterCommentPattern?: string - nestedConditionalExpressions?: boolean -}]) +type StylisticNoExtraParens = + | [] + | ["functions"] + | [] + | ["all"] + | [ + "all", + { + conditionalAssign?: boolean; + ternaryOperandBinaryExpressions?: boolean; + nestedBinaryExpressions?: boolean; + returnAssign?: boolean; + ignoreJSX?: "none" | "all" | "single-line" | "multi-line"; + enforceForArrowConditionals?: boolean; + enforceForSequenceExpressions?: boolean; + enforceForNewInMemberExpressions?: boolean; + enforceForFunctionPrototypeMethods?: boolean; + allowParensAfterCommentPattern?: string; + nestedConditionalExpressions?: boolean; + }, + ]; // ----- @stylistic/no-mixed-operators ----- -type StylisticNoMixedOperators = []|[{ - groups?: [("+" | "-" | "*" | "/" | "%" | "**" | "&" | "|" | "^" | "~" | "<<" | ">>" | ">>>" | "==" | "!=" | "===" | "!==" | ">" | ">=" | "<" | "<=" | "&&" | "||" | "in" | "instanceof" | "?:" | "??"), ("+" | "-" | "*" | "/" | "%" | "**" | "&" | "|" | "^" | "~" | "<<" | ">>" | ">>>" | "==" | "!=" | "===" | "!==" | ">" | ">=" | "<" | "<=" | "&&" | "||" | "in" | "instanceof" | "?:" | "??"), ...(("+" | "-" | "*" | "/" | "%" | "**" | "&" | "|" | "^" | "~" | "<<" | ">>" | ">>>" | "==" | "!=" | "===" | "!==" | ">" | ">=" | "<" | "<=" | "&&" | "||" | "in" | "instanceof" | "?:" | "??"))[]][] - allowSamePrecedence?: boolean -}] +type StylisticNoMixedOperators = + | [] + | [ + { + groups?: [ + ( + | "+" + | "-" + | "*" + | "/" + | "%" + | "**" + | "&" + | "|" + | "^" + | "~" + | "<<" + | ">>" + | ">>>" + | "==" + | "!=" + | "===" + | "!==" + | ">" + | ">=" + | "<" + | "<=" + | "&&" + | "||" + | "in" + | "instanceof" + | "?:" + | "??" + ), + ( + | "+" + | "-" + | "*" + | "/" + | "%" + | "**" + | "&" + | "|" + | "^" + | "~" + | "<<" + | ">>" + | ">>>" + | "==" + | "!=" + | "===" + | "!==" + | ">" + | ">=" + | "<" + | "<=" + | "&&" + | "||" + | "in" + | "instanceof" + | "?:" + | "??" + ), + ...( + | "+" + | "-" + | "*" + | "/" + | "%" + | "**" + | "&" + | "|" + | "^" + | "~" + | "<<" + | ">>" + | ">>>" + | "==" + | "!=" + | "===" + | "!==" + | ">" + | ">=" + | "<" + | "<=" + | "&&" + | "||" + | "in" + | "instanceof" + | "?:" + | "??" + )[], + ][]; + allowSamePrecedence?: boolean; + }, + ]; // ----- @stylistic/no-mixed-spaces-and-tabs ----- -type StylisticNoMixedSpacesAndTabs = []|[("smart-tabs" | boolean)] +type StylisticNoMixedSpacesAndTabs = [] | ["smart-tabs" | boolean]; // ----- @stylistic/no-multi-spaces ----- -type StylisticNoMultiSpaces = []|[{ - exceptions?: { - [k: string]: boolean - } - ignoreEOLComments?: boolean - includeTabs?: boolean -}] +type StylisticNoMultiSpaces = + | [] + | [ + { + exceptions?: { + [k: string]: boolean; + }; + ignoreEOLComments?: boolean; + includeTabs?: boolean; + }, + ]; // ----- @stylistic/no-multiple-empty-lines ----- -type StylisticNoMultipleEmptyLines = []|[{ - max: number - maxEOF?: number - maxBOF?: number -}] +type StylisticNoMultipleEmptyLines = + | [] + | [ + { + max: number; + maxEOF?: number; + maxBOF?: number; + }, + ]; // ----- @stylistic/no-tabs ----- -type StylisticNoTabs = []|[{ - allowIndentationTabs?: boolean -}] +type StylisticNoTabs = + | [] + | [ + { + allowIndentationTabs?: boolean; + }, + ]; // ----- @stylistic/no-trailing-spaces ----- -type StylisticNoTrailingSpaces = []|[{ - skipBlankLines?: boolean - ignoreComments?: boolean -}] +type StylisticNoTrailingSpaces = + | [] + | [ + { + skipBlankLines?: boolean; + ignoreComments?: boolean; + }, + ]; // ----- @stylistic/nonblock-statement-body-position ----- -type StylisticNonblockStatementBodyPosition = []|[("beside" | "below" | "any")]|[("beside" | "below" | "any"), { - overrides?: { - if?: ("beside" | "below" | "any") - else?: ("beside" | "below" | "any") - while?: ("beside" | "below" | "any") - do?: ("beside" | "below" | "any") - for?: ("beside" | "below" | "any") - } -}] +type StylisticNonblockStatementBodyPosition = + | [] + | ["beside" | "below" | "any"] + | [ + "beside" | "below" | "any", + { + overrides?: { + if?: "beside" | "below" | "any"; + else?: "beside" | "below" | "any"; + while?: "beside" | "below" | "any"; + do?: "beside" | "below" | "any"; + for?: "beside" | "below" | "any"; + }; + }, + ]; // ----- @stylistic/object-curly-newline ----- -type StylisticObjectCurlyNewline = []|[((("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean -}) | { - ObjectExpression?: (("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean - }) - ObjectPattern?: (("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean - }) - ImportDeclaration?: (("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean - }) - ExportDeclaration?: (("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean - }) - TSTypeLiteral?: (("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean - }) - TSInterfaceBody?: (("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean - }) -})] +type StylisticObjectCurlyNewline = + | [] + | [ + | ( + | ("always" | "never") + | { + multiline?: boolean; + minProperties?: number; + consistent?: boolean; + } + ) + | { + ObjectExpression?: + | ("always" | "never") + | { + multiline?: boolean; + minProperties?: number; + consistent?: boolean; + }; + ObjectPattern?: + | ("always" | "never") + | { + multiline?: boolean; + minProperties?: number; + consistent?: boolean; + }; + ImportDeclaration?: + | ("always" | "never") + | { + multiline?: boolean; + minProperties?: number; + consistent?: boolean; + }; + ExportDeclaration?: + | ("always" | "never") + | { + multiline?: boolean; + minProperties?: number; + consistent?: boolean; + }; + TSTypeLiteral?: + | ("always" | "never") + | { + multiline?: boolean; + minProperties?: number; + consistent?: boolean; + }; + TSInterfaceBody?: + | ("always" | "never") + | { + multiline?: boolean; + minProperties?: number; + consistent?: boolean; + }; + }, + ]; // ----- @stylistic/object-curly-spacing ----- -type StylisticObjectCurlySpacing = []|[("always" | "never")]|[("always" | "never"), { - arraysInObjects?: boolean - objectsInObjects?: boolean -}] +type StylisticObjectCurlySpacing = + | [] + | ["always" | "never"] + | [ + "always" | "never", + { + arraysInObjects?: boolean; + objectsInObjects?: boolean; + }, + ]; // ----- @stylistic/object-property-newline ----- -type StylisticObjectPropertyNewline = []|[{ - allowAllPropertiesOnSameLine?: boolean - allowMultiplePropertiesPerLine?: boolean -}] +type StylisticObjectPropertyNewline = + | [] + | [ + { + allowAllPropertiesOnSameLine?: boolean; + allowMultiplePropertiesPerLine?: boolean; + }, + ]; // ----- @stylistic/one-var-declaration-per-line ----- -type StylisticOneVarDeclarationPerLine = []|[("always" | "initializations")] +type StylisticOneVarDeclarationPerLine = [] | ["always" | "initializations"]; // ----- @stylistic/operator-linebreak ----- -type StylisticOperatorLinebreak = []|[(("after" | "before" | "none") | null)]|[(("after" | "before" | "none") | null), { - overrides?: { - [k: string]: ("after" | "before" | "none" | "ignore") | undefined - } -}] +type StylisticOperatorLinebreak = + | [] + | [("after" | "before" | "none") | null] + | [ + ("after" | "before" | "none") | null, + { + overrides?: { + [k: string]: ("after" | "before" | "none" | "ignore") | undefined; + }; + }, + ]; // ----- @stylistic/padded-blocks ----- -type StylisticPaddedBlocks = []|[(("always" | "never" | "start" | "end") | { - blocks?: ("always" | "never" | "start" | "end") - switches?: ("always" | "never" | "start" | "end") - classes?: ("always" | "never" | "start" | "end") -})]|[(("always" | "never" | "start" | "end") | { - blocks?: ("always" | "never" | "start" | "end") - switches?: ("always" | "never" | "start" | "end") - classes?: ("always" | "never" | "start" | "end") -}), { - allowSingleLineBlocks?: boolean -}] +type StylisticPaddedBlocks = + | [] + | [ + | ("always" | "never" | "start" | "end") + | { + blocks?: "always" | "never" | "start" | "end"; + switches?: "always" | "never" | "start" | "end"; + classes?: "always" | "never" | "start" | "end"; + }, + ] + | [ + ( + | ("always" | "never" | "start" | "end") + | { + blocks?: "always" | "never" | "start" | "end"; + switches?: "always" | "never" | "start" | "end"; + classes?: "always" | "never" | "start" | "end"; + } + ), + { + allowSingleLineBlocks?: boolean; + }, + ]; // ----- @stylistic/padding-line-between-statements ----- -type _StylisticPaddingLineBetweenStatementsPaddingType = ("any" | "never" | "always") -type _StylisticPaddingLineBetweenStatementsStatementType = (("*" | "block-like" | "exports" | "require" | "directive" | "expression" | "iife" | "multiline-block-like" | "multiline-expression" | "multiline-const" | "multiline-export" | "multiline-let" | "multiline-var" | "singleline-const" | "singleline-export" | "singleline-let" | "singleline-var" | "block" | "empty" | "function" | "ts-method" | "break" | "case" | "class" | "const" | "continue" | "debugger" | "default" | "do" | "export" | "for" | "if" | "import" | "let" | "return" | "switch" | "throw" | "try" | "var" | "while" | "with" | "cjs-export" | "cjs-import" | "enum" | "interface" | "type" | "function-overload") | [("*" | "block-like" | "exports" | "require" | "directive" | "expression" | "iife" | "multiline-block-like" | "multiline-expression" | "multiline-const" | "multiline-export" | "multiline-let" | "multiline-var" | "singleline-const" | "singleline-export" | "singleline-let" | "singleline-var" | "block" | "empty" | "function" | "ts-method" | "break" | "case" | "class" | "const" | "continue" | "debugger" | "default" | "do" | "export" | "for" | "if" | "import" | "let" | "return" | "switch" | "throw" | "try" | "var" | "while" | "with" | "cjs-export" | "cjs-import" | "enum" | "interface" | "type" | "function-overload"), ...(("*" | "block-like" | "exports" | "require" | "directive" | "expression" | "iife" | "multiline-block-like" | "multiline-expression" | "multiline-const" | "multiline-export" | "multiline-let" | "multiline-var" | "singleline-const" | "singleline-export" | "singleline-let" | "singleline-var" | "block" | "empty" | "function" | "ts-method" | "break" | "case" | "class" | "const" | "continue" | "debugger" | "default" | "do" | "export" | "for" | "if" | "import" | "let" | "return" | "switch" | "throw" | "try" | "var" | "while" | "with" | "cjs-export" | "cjs-import" | "enum" | "interface" | "type" | "function-overload"))[]]) +type _StylisticPaddingLineBetweenStatementsPaddingType = "any" | "never" | "always"; +type _StylisticPaddingLineBetweenStatementsStatementType = + | ( + | "*" + | "block-like" + | "exports" + | "require" + | "directive" + | "expression" + | "iife" + | "multiline-block-like" + | "multiline-expression" + | "multiline-const" + | "multiline-export" + | "multiline-let" + | "multiline-var" + | "singleline-const" + | "singleline-export" + | "singleline-let" + | "singleline-var" + | "block" + | "empty" + | "function" + | "ts-method" + | "break" + | "case" + | "class" + | "const" + | "continue" + | "debugger" + | "default" + | "do" + | "export" + | "for" + | "if" + | "import" + | "let" + | "return" + | "switch" + | "throw" + | "try" + | "var" + | "while" + | "with" + | "cjs-export" + | "cjs-import" + | "enum" + | "interface" + | "type" + | "function-overload" + ) + | [ + ( + | "*" + | "block-like" + | "exports" + | "require" + | "directive" + | "expression" + | "iife" + | "multiline-block-like" + | "multiline-expression" + | "multiline-const" + | "multiline-export" + | "multiline-let" + | "multiline-var" + | "singleline-const" + | "singleline-export" + | "singleline-let" + | "singleline-var" + | "block" + | "empty" + | "function" + | "ts-method" + | "break" + | "case" + | "class" + | "const" + | "continue" + | "debugger" + | "default" + | "do" + | "export" + | "for" + | "if" + | "import" + | "let" + | "return" + | "switch" + | "throw" + | "try" + | "var" + | "while" + | "with" + | "cjs-export" + | "cjs-import" + | "enum" + | "interface" + | "type" + | "function-overload" + ), + ...( + | "*" + | "block-like" + | "exports" + | "require" + | "directive" + | "expression" + | "iife" + | "multiline-block-like" + | "multiline-expression" + | "multiline-const" + | "multiline-export" + | "multiline-let" + | "multiline-var" + | "singleline-const" + | "singleline-export" + | "singleline-let" + | "singleline-var" + | "block" + | "empty" + | "function" + | "ts-method" + | "break" + | "case" + | "class" + | "const" + | "continue" + | "debugger" + | "default" + | "do" + | "export" + | "for" + | "if" + | "import" + | "let" + | "return" + | "switch" + | "throw" + | "try" + | "var" + | "while" + | "with" + | "cjs-export" + | "cjs-import" + | "enum" + | "interface" + | "type" + | "function-overload" + )[], + ]; type StylisticPaddingLineBetweenStatements = { - blankLine: _StylisticPaddingLineBetweenStatementsPaddingType - prev: _StylisticPaddingLineBetweenStatementsStatementType - next: _StylisticPaddingLineBetweenStatementsStatementType -}[] + blankLine: _StylisticPaddingLineBetweenStatementsPaddingType; + prev: _StylisticPaddingLineBetweenStatementsStatementType; + next: _StylisticPaddingLineBetweenStatementsStatementType; +}[]; // ----- @stylistic/quote-props ----- -type StylisticQuoteProps = ([]|[("always" | "as-needed" | "consistent" | "consistent-as-needed")] | []|[("always" | "as-needed" | "consistent" | "consistent-as-needed")]|[("always" | "as-needed" | "consistent" | "consistent-as-needed"), { - keywords?: boolean - unnecessary?: boolean - numbers?: boolean -}]) +type StylisticQuoteProps = + | [] + | ["always" | "as-needed" | "consistent" | "consistent-as-needed"] + | [] + | ["always" | "as-needed" | "consistent" | "consistent-as-needed"] + | [ + "always" | "as-needed" | "consistent" | "consistent-as-needed", + { + keywords?: boolean; + unnecessary?: boolean; + numbers?: boolean; + }, + ]; // ----- @stylistic/quotes ----- -type StylisticQuotes = []|[("single" | "double" | "backtick")]|[("single" | "double" | "backtick"), ("avoid-escape" | { - avoidEscape?: boolean - allowTemplateLiterals?: (boolean | ("never" | "avoidEscape" | "always")) - ignoreStringLiterals?: boolean -})] +type StylisticQuotes = + | [] + | ["single" | "double" | "backtick"] + | [ + "single" | "double" | "backtick", + ( + | "avoid-escape" + | { + avoidEscape?: boolean; + allowTemplateLiterals?: boolean | ("never" | "avoidEscape" | "always"); + ignoreStringLiterals?: boolean; + } + ), + ]; // ----- @stylistic/rest-spread-spacing ----- -type StylisticRestSpreadSpacing = []|[("always" | "never")] +type StylisticRestSpreadSpacing = [] | ["always" | "never"]; // ----- @stylistic/semi ----- -type StylisticSemi = ([]|["never"]|["never", { - beforeStatementContinuationChars?: ("always" | "any" | "never") -}] | []|["always"]|["always", { - omitLastInOneLineBlock?: boolean - omitLastInOneLineClassBody?: boolean -}]) +type StylisticSemi = + | [] + | ["never"] + | [ + "never", + { + beforeStatementContinuationChars?: "always" | "any" | "never"; + }, + ] + | [] + | ["always"] + | [ + "always", + { + omitLastInOneLineBlock?: boolean; + omitLastInOneLineClassBody?: boolean; + }, + ]; // ----- @stylistic/semi-spacing ----- -type StylisticSemiSpacing = []|[{ - before?: boolean - after?: boolean -}] +type StylisticSemiSpacing = + | [] + | [ + { + before?: boolean; + after?: boolean; + }, + ]; // ----- @stylistic/semi-style ----- -type StylisticSemiStyle = []|[("last" | "first")] +type StylisticSemiStyle = [] | ["last" | "first"]; // ----- @stylistic/space-before-blocks ----- -type StylisticSpaceBeforeBlocks = []|[(("always" | "never") | { - keywords?: ("always" | "never" | "off") - functions?: ("always" | "never" | "off") - classes?: ("always" | "never" | "off") -})] +type StylisticSpaceBeforeBlocks = + | [] + | [ + | ("always" | "never") + | { + keywords?: "always" | "never" | "off"; + functions?: "always" | "never" | "off"; + classes?: "always" | "never" | "off"; + }, + ]; // ----- @stylistic/space-before-function-paren ----- -type StylisticSpaceBeforeFunctionParen = []|[(("always" | "never") | { - anonymous?: ("always" | "never" | "ignore") - named?: ("always" | "never" | "ignore") - asyncArrow?: ("always" | "never" | "ignore") -})] +type StylisticSpaceBeforeFunctionParen = + | [] + | [ + | ("always" | "never") + | { + anonymous?: "always" | "never" | "ignore"; + named?: "always" | "never" | "ignore"; + asyncArrow?: "always" | "never" | "ignore"; + }, + ]; // ----- @stylistic/space-in-parens ----- -type StylisticSpaceInParens = []|[("always" | "never")]|[("always" | "never"), { - exceptions?: ("{}" | "[]" | "()" | "empty")[] -}] +type StylisticSpaceInParens = + | [] + | ["always" | "never"] + | [ + "always" | "never", + { + exceptions?: ("{}" | "[]" | "()" | "empty")[]; + }, + ]; // ----- @stylistic/space-infix-ops ----- -type StylisticSpaceInfixOps = []|[{ - int32Hint?: boolean - ignoreTypes?: boolean -}] +type StylisticSpaceInfixOps = + | [] + | [ + { + int32Hint?: boolean; + ignoreTypes?: boolean; + }, + ]; // ----- @stylistic/space-unary-ops ----- -type StylisticSpaceUnaryOps = []|[{ - words?: boolean - nonwords?: boolean - overrides?: { - [k: string]: boolean | undefined - } -}] +type StylisticSpaceUnaryOps = + | [] + | [ + { + words?: boolean; + nonwords?: boolean; + overrides?: { + [k: string]: boolean | undefined; + }; + }, + ]; // ----- @stylistic/spaced-comment ----- -type StylisticSpacedComment = []|[("always" | "never")]|[("always" | "never"), { - exceptions?: string[] - markers?: string[] - line?: { - exceptions?: string[] - markers?: string[] - } - block?: { - exceptions?: string[] - markers?: string[] - balanced?: boolean - } -}] +type StylisticSpacedComment = + | [] + | ["always" | "never"] + | [ + "always" | "never", + { + exceptions?: string[]; + markers?: string[]; + line?: { + exceptions?: string[]; + markers?: string[]; + }; + block?: { + exceptions?: string[]; + markers?: string[]; + balanced?: boolean; + }; + }, + ]; // ----- @stylistic/switch-colon-spacing ----- -type StylisticSwitchColonSpacing = []|[{ - before?: boolean - after?: boolean -}] +type StylisticSwitchColonSpacing = + | [] + | [ + { + before?: boolean; + after?: boolean; + }, + ]; // ----- @stylistic/template-curly-spacing ----- -type StylisticTemplateCurlySpacing = []|[("always" | "never")] +type StylisticTemplateCurlySpacing = [] | ["always" | "never"]; // ----- @stylistic/template-tag-spacing ----- -type StylisticTemplateTagSpacing = []|[("always" | "never")] +type StylisticTemplateTagSpacing = [] | ["always" | "never"]; // ----- @stylistic/type-annotation-spacing ----- -type StylisticTypeAnnotationSpacing = []|[{ - before?: boolean - after?: boolean - overrides?: { - colon?: _StylisticTypeAnnotationSpacing_SpacingConfig - arrow?: _StylisticTypeAnnotationSpacing_SpacingConfig - variable?: _StylisticTypeAnnotationSpacing_SpacingConfig - parameter?: _StylisticTypeAnnotationSpacing_SpacingConfig - property?: _StylisticTypeAnnotationSpacing_SpacingConfig - returnType?: _StylisticTypeAnnotationSpacing_SpacingConfig - } -}] +type StylisticTypeAnnotationSpacing = + | [] + | [ + { + before?: boolean; + after?: boolean; + overrides?: { + colon?: _StylisticTypeAnnotationSpacing_SpacingConfig; + arrow?: _StylisticTypeAnnotationSpacing_SpacingConfig; + variable?: _StylisticTypeAnnotationSpacing_SpacingConfig; + parameter?: _StylisticTypeAnnotationSpacing_SpacingConfig; + property?: _StylisticTypeAnnotationSpacing_SpacingConfig; + returnType?: _StylisticTypeAnnotationSpacing_SpacingConfig; + }; + }, + ]; interface _StylisticTypeAnnotationSpacing_SpacingConfig { - before?: boolean - after?: boolean + before?: boolean; + after?: boolean; } // ----- @stylistic/wrap-iife ----- -type StylisticWrapIife = []|[("outside" | "inside" | "any")]|[("outside" | "inside" | "any"), { - functionPrototypeMethods?: boolean -}] +type StylisticWrapIife = + | [] + | ["outside" | "inside" | "any"] + | [ + "outside" | "inside" | "any", + { + functionPrototypeMethods?: boolean; + }, + ]; // ----- @stylistic/yield-star-spacing ----- -type StylisticYieldStarSpacing = []|[(("before" | "after" | "both" | "neither") | { - before?: boolean - after?: boolean -})] +type StylisticYieldStarSpacing = + | [] + | [ + | ("before" | "after" | "both" | "neither") + | { + before?: boolean; + after?: boolean; + }, + ]; // ----- @typescript-eslint/array-type ----- -type TypescriptEslintArrayType = []|[{ - - default?: ("array" | "generic" | "array-simple") - - readonly?: ("array" | "generic" | "array-simple") -}] +type TypescriptEslintArrayType = + | [] + | [ + { + default?: "array" | "generic" | "array-simple"; + + readonly?: "array" | "generic" | "array-simple"; + }, + ]; // ----- @typescript-eslint/ban-ts-comment ----- -type TypescriptEslintBanTsComment = []|[{ - - minimumDescriptionLength?: number - "ts-check"?: (boolean | "allow-with-description" | { - descriptionFormat?: string - }) - "ts-expect-error"?: (boolean | "allow-with-description" | { - descriptionFormat?: string - }) - "ts-ignore"?: (boolean | "allow-with-description" | { - descriptionFormat?: string - }) - "ts-nocheck"?: (boolean | "allow-with-description" | { - descriptionFormat?: string - }) -}] +type TypescriptEslintBanTsComment = + | [] + | [ + { + minimumDescriptionLength?: number; + "ts-check"?: + | boolean + | "allow-with-description" + | { + descriptionFormat?: string; + }; + "ts-expect-error"?: + | boolean + | "allow-with-description" + | { + descriptionFormat?: string; + }; + "ts-ignore"?: + | boolean + | "allow-with-description" + | { + descriptionFormat?: string; + }; + "ts-nocheck"?: + | boolean + | "allow-with-description" + | { + descriptionFormat?: string; + }; + }, + ]; // ----- @typescript-eslint/class-literal-property-style ----- -type TypescriptEslintClassLiteralPropertyStyle = []|[("fields" | "getters")] +type TypescriptEslintClassLiteralPropertyStyle = [] | ["fields" | "getters"]; // ----- @typescript-eslint/class-methods-use-this ----- -type TypescriptEslintClassMethodsUseThis = []|[{ - - enforceForClassFields?: boolean - - exceptMethods?: string[] - - ignoreClassesThatImplementAnInterface?: (boolean | "public-fields") - - ignoreOverrideMethods?: boolean -}] +type TypescriptEslintClassMethodsUseThis = + | [] + | [ + { + enforceForClassFields?: boolean; + + exceptMethods?: string[]; + + ignoreClassesThatImplementAnInterface?: boolean | "public-fields"; + + ignoreOverrideMethods?: boolean; + }, + ]; // ----- @typescript-eslint/consistent-generic-constructors ----- -type TypescriptEslintConsistentGenericConstructors = []|[("type-annotation" | "constructor")] +type TypescriptEslintConsistentGenericConstructors = [] | ["type-annotation" | "constructor"]; // ----- @typescript-eslint/consistent-indexed-object-style ----- -type TypescriptEslintConsistentIndexedObjectStyle = []|[("record" | "index-signature")] +type TypescriptEslintConsistentIndexedObjectStyle = [] | ["record" | "index-signature"]; // ----- @typescript-eslint/consistent-return ----- -type TypescriptEslintConsistentReturn = []|[{ - treatUndefinedAsUnspecified?: boolean -}] +type TypescriptEslintConsistentReturn = + | [] + | [ + { + treatUndefinedAsUnspecified?: boolean; + }, + ]; // ----- @typescript-eslint/consistent-type-assertions ----- -type TypescriptEslintConsistentTypeAssertions = []|[({ - - assertionStyle: "never" -} | { - - arrayLiteralTypeAssertions?: ("allow" | "allow-as-parameter" | "never") - - assertionStyle?: ("as" | "angle-bracket") - - objectLiteralTypeAssertions?: ("allow" | "allow-as-parameter" | "never") -})] +type TypescriptEslintConsistentTypeAssertions = + | [] + | [ + | { + assertionStyle: "never"; + } + | { + arrayLiteralTypeAssertions?: "allow" | "allow-as-parameter" | "never"; + + assertionStyle?: "as" | "angle-bracket"; + + objectLiteralTypeAssertions?: "allow" | "allow-as-parameter" | "never"; + }, + ]; // ----- @typescript-eslint/consistent-type-definitions ----- -type TypescriptEslintConsistentTypeDefinitions = []|[("interface" | "type")] +type TypescriptEslintConsistentTypeDefinitions = [] | ["interface" | "type"]; // ----- @typescript-eslint/consistent-type-exports ----- -type TypescriptEslintConsistentTypeExports = []|[{ - - fixMixedExportsWithInlineTypeSpecifier?: boolean -}] +type TypescriptEslintConsistentTypeExports = + | [] + | [ + { + fixMixedExportsWithInlineTypeSpecifier?: boolean; + }, + ]; // ----- @typescript-eslint/consistent-type-imports ----- -type TypescriptEslintConsistentTypeImports = []|[{ - - disallowTypeAnnotations?: boolean - - fixStyle?: ("separate-type-imports" | "inline-type-imports") - - prefer?: ("type-imports" | "no-type-imports") -}] +type TypescriptEslintConsistentTypeImports = + | [] + | [ + { + disallowTypeAnnotations?: boolean; + + fixStyle?: "separate-type-imports" | "inline-type-imports"; + + prefer?: "type-imports" | "no-type-imports"; + }, + ]; // ----- @typescript-eslint/dot-notation ----- -type TypescriptEslintDotNotation = []|[{ - - allowIndexSignaturePropertyAccess?: boolean - - allowKeywords?: boolean - - allowPattern?: string - - allowPrivateClassPropertyAccess?: boolean - - allowProtectedClassPropertyAccess?: boolean -}] +type TypescriptEslintDotNotation = + | [] + | [ + { + allowIndexSignaturePropertyAccess?: boolean; + + allowKeywords?: boolean; + + allowPattern?: string; + + allowPrivateClassPropertyAccess?: boolean; + + allowProtectedClassPropertyAccess?: boolean; + }, + ]; // ----- @typescript-eslint/explicit-function-return-type ----- -type TypescriptEslintExplicitFunctionReturnType = []|[{ - - allowConciseArrowFunctionExpressionsStartingWithVoid?: boolean - - allowDirectConstAssertionInArrowFunctions?: boolean - - allowedNames?: string[] - - allowExpressions?: boolean - - allowFunctionsWithoutTypeParameters?: boolean - - allowHigherOrderFunctions?: boolean - - allowIIFEs?: boolean - - allowTypedFunctionExpressions?: boolean -}] +type TypescriptEslintExplicitFunctionReturnType = + | [] + | [ + { + allowConciseArrowFunctionExpressionsStartingWithVoid?: boolean; + + allowDirectConstAssertionInArrowFunctions?: boolean; + + allowedNames?: string[]; + + allowExpressions?: boolean; + + allowFunctionsWithoutTypeParameters?: boolean; + + allowHigherOrderFunctions?: boolean; + + allowIIFEs?: boolean; + + allowTypedFunctionExpressions?: boolean; + }, + ]; // ----- @typescript-eslint/explicit-member-accessibility ----- -type TypescriptEslintExplicitMemberAccessibility = []|[{ - - accessibility?: ("explicit" | "no-public" | "off") - - ignoredMethodNames?: string[] - - overrides?: { - accessors?: ("explicit" | "no-public" | "off") - constructors?: ("explicit" | "no-public" | "off") - methods?: ("explicit" | "no-public" | "off") - parameterProperties?: ("explicit" | "no-public" | "off") - properties?: ("explicit" | "no-public" | "off") - } -}] +type TypescriptEslintExplicitMemberAccessibility = + | [] + | [ + { + accessibility?: "explicit" | "no-public" | "off"; + + ignoredMethodNames?: string[]; + + overrides?: { + accessors?: "explicit" | "no-public" | "off"; + constructors?: "explicit" | "no-public" | "off"; + methods?: "explicit" | "no-public" | "off"; + parameterProperties?: "explicit" | "no-public" | "off"; + properties?: "explicit" | "no-public" | "off"; + }; + }, + ]; // ----- @typescript-eslint/explicit-module-boundary-types ----- -type TypescriptEslintExplicitModuleBoundaryTypes = []|[{ - - allowArgumentsExplicitlyTypedAsAny?: boolean - - allowDirectConstAssertionInArrowFunctions?: boolean - - allowedNames?: string[] - - allowHigherOrderFunctions?: boolean - - allowOverloadFunctions?: boolean - - allowTypedFunctionExpressions?: boolean -}] +type TypescriptEslintExplicitModuleBoundaryTypes = + | [] + | [ + { + allowArgumentsExplicitlyTypedAsAny?: boolean; + + allowDirectConstAssertionInArrowFunctions?: boolean; + + allowedNames?: string[]; + + allowHigherOrderFunctions?: boolean; + + allowOverloadFunctions?: boolean; + + allowTypedFunctionExpressions?: boolean; + }, + ]; // ----- @typescript-eslint/init-declarations ----- -type TypescriptEslintInitDeclarations = ([]|["always"] | []|["never"]|["never", { - ignoreForLoopInit?: boolean -}]) +type TypescriptEslintInitDeclarations = + | [] + | ["always"] + | [] + | ["never"] + | [ + "never", + { + ignoreForLoopInit?: boolean; + }, + ]; // ----- @typescript-eslint/max-params ----- -type TypescriptEslintMaxParams = []|[{ - - countVoidThis?: boolean - - max?: number - - maximum?: number -}] +type TypescriptEslintMaxParams = + | [] + | [ + { + countVoidThis?: boolean; + + max?: number; + + maximum?: number; + }, + ]; // ----- @typescript-eslint/member-ordering ----- -type TypescriptEslintMemberOrdering = []|[{ - classes?: ("never" | (("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization") | ("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization")[])[] | { - memberTypes?: ((("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization") | ("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization")[])[] | "never") - optionalityOrder?: ("optional-first" | "required-first") - order?: ("alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive") - }) - classExpressions?: ("never" | (("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization") | ("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization")[])[] | { - memberTypes?: ((("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization") | ("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization")[])[] | "never") - optionalityOrder?: ("optional-first" | "required-first") - order?: ("alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive") - }) - default?: ("never" | (("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization") | ("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization")[])[] | { - memberTypes?: ((("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization") | ("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization")[])[] | "never") - optionalityOrder?: ("optional-first" | "required-first") - order?: ("alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive") - }) - interfaces?: ("never" | (("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor") | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor")[])[] | { - memberTypes?: ((("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor") | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor")[])[] | "never") - optionalityOrder?: ("optional-first" | "required-first") - order?: ("alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive") - }) - typeLiterals?: ("never" | (("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor") | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor")[])[] | { - memberTypes?: ((("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor") | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor")[])[] | "never") - optionalityOrder?: ("optional-first" | "required-first") - order?: ("alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive") - }) -}] +type TypescriptEslintMemberOrdering = + | [] + | [ + { + classes?: + | "never" + | ( + | ( + | "readonly-signature" + | "signature" + | "readonly-field" + | "public-readonly-field" + | "public-decorated-readonly-field" + | "decorated-readonly-field" + | "static-readonly-field" + | "public-static-readonly-field" + | "instance-readonly-field" + | "public-instance-readonly-field" + | "abstract-readonly-field" + | "public-abstract-readonly-field" + | "protected-readonly-field" + | "protected-decorated-readonly-field" + | "protected-static-readonly-field" + | "protected-instance-readonly-field" + | "protected-abstract-readonly-field" + | "private-readonly-field" + | "private-decorated-readonly-field" + | "private-static-readonly-field" + | "private-instance-readonly-field" + | "#private-readonly-field" + | "#private-static-readonly-field" + | "#private-instance-readonly-field" + | "field" + | "public-field" + | "public-decorated-field" + | "decorated-field" + | "static-field" + | "public-static-field" + | "instance-field" + | "public-instance-field" + | "abstract-field" + | "public-abstract-field" + | "protected-field" + | "protected-decorated-field" + | "protected-static-field" + | "protected-instance-field" + | "protected-abstract-field" + | "private-field" + | "private-decorated-field" + | "private-static-field" + | "private-instance-field" + | "#private-field" + | "#private-static-field" + | "#private-instance-field" + | "method" + | "public-method" + | "public-decorated-method" + | "decorated-method" + | "static-method" + | "public-static-method" + | "instance-method" + | "public-instance-method" + | "abstract-method" + | "public-abstract-method" + | "protected-method" + | "protected-decorated-method" + | "protected-static-method" + | "protected-instance-method" + | "protected-abstract-method" + | "private-method" + | "private-decorated-method" + | "private-static-method" + | "private-instance-method" + | "#private-method" + | "#private-static-method" + | "#private-instance-method" + | "call-signature" + | "constructor" + | "public-constructor" + | "protected-constructor" + | "private-constructor" + | "accessor" + | "public-accessor" + | "public-decorated-accessor" + | "decorated-accessor" + | "static-accessor" + | "public-static-accessor" + | "instance-accessor" + | "public-instance-accessor" + | "abstract-accessor" + | "public-abstract-accessor" + | "protected-accessor" + | "protected-decorated-accessor" + | "protected-static-accessor" + | "protected-instance-accessor" + | "protected-abstract-accessor" + | "private-accessor" + | "private-decorated-accessor" + | "private-static-accessor" + | "private-instance-accessor" + | "#private-accessor" + | "#private-static-accessor" + | "#private-instance-accessor" + | "get" + | "public-get" + | "public-decorated-get" + | "decorated-get" + | "static-get" + | "public-static-get" + | "instance-get" + | "public-instance-get" + | "abstract-get" + | "public-abstract-get" + | "protected-get" + | "protected-decorated-get" + | "protected-static-get" + | "protected-instance-get" + | "protected-abstract-get" + | "private-get" + | "private-decorated-get" + | "private-static-get" + | "private-instance-get" + | "#private-get" + | "#private-static-get" + | "#private-instance-get" + | "set" + | "public-set" + | "public-decorated-set" + | "decorated-set" + | "static-set" + | "public-static-set" + | "instance-set" + | "public-instance-set" + | "abstract-set" + | "public-abstract-set" + | "protected-set" + | "protected-decorated-set" + | "protected-static-set" + | "protected-instance-set" + | "protected-abstract-set" + | "private-set" + | "private-decorated-set" + | "private-static-set" + | "private-instance-set" + | "#private-set" + | "#private-static-set" + | "#private-instance-set" + | "static-initialization" + | "static-static-initialization" + | "public-static-static-initialization" + | "instance-static-initialization" + | "public-instance-static-initialization" + | "abstract-static-initialization" + | "public-abstract-static-initialization" + | "protected-static-static-initialization" + | "protected-instance-static-initialization" + | "protected-abstract-static-initialization" + | "private-static-static-initialization" + | "private-instance-static-initialization" + | "#private-static-static-initialization" + | "#private-instance-static-initialization" + ) + | ( + | "readonly-signature" + | "signature" + | "readonly-field" + | "public-readonly-field" + | "public-decorated-readonly-field" + | "decorated-readonly-field" + | "static-readonly-field" + | "public-static-readonly-field" + | "instance-readonly-field" + | "public-instance-readonly-field" + | "abstract-readonly-field" + | "public-abstract-readonly-field" + | "protected-readonly-field" + | "protected-decorated-readonly-field" + | "protected-static-readonly-field" + | "protected-instance-readonly-field" + | "protected-abstract-readonly-field" + | "private-readonly-field" + | "private-decorated-readonly-field" + | "private-static-readonly-field" + | "private-instance-readonly-field" + | "#private-readonly-field" + | "#private-static-readonly-field" + | "#private-instance-readonly-field" + | "field" + | "public-field" + | "public-decorated-field" + | "decorated-field" + | "static-field" + | "public-static-field" + | "instance-field" + | "public-instance-field" + | "abstract-field" + | "public-abstract-field" + | "protected-field" + | "protected-decorated-field" + | "protected-static-field" + | "protected-instance-field" + | "protected-abstract-field" + | "private-field" + | "private-decorated-field" + | "private-static-field" + | "private-instance-field" + | "#private-field" + | "#private-static-field" + | "#private-instance-field" + | "method" + | "public-method" + | "public-decorated-method" + | "decorated-method" + | "static-method" + | "public-static-method" + | "instance-method" + | "public-instance-method" + | "abstract-method" + | "public-abstract-method" + | "protected-method" + | "protected-decorated-method" + | "protected-static-method" + | "protected-instance-method" + | "protected-abstract-method" + | "private-method" + | "private-decorated-method" + | "private-static-method" + | "private-instance-method" + | "#private-method" + | "#private-static-method" + | "#private-instance-method" + | "call-signature" + | "constructor" + | "public-constructor" + | "protected-constructor" + | "private-constructor" + | "accessor" + | "public-accessor" + | "public-decorated-accessor" + | "decorated-accessor" + | "static-accessor" + | "public-static-accessor" + | "instance-accessor" + | "public-instance-accessor" + | "abstract-accessor" + | "public-abstract-accessor" + | "protected-accessor" + | "protected-decorated-accessor" + | "protected-static-accessor" + | "protected-instance-accessor" + | "protected-abstract-accessor" + | "private-accessor" + | "private-decorated-accessor" + | "private-static-accessor" + | "private-instance-accessor" + | "#private-accessor" + | "#private-static-accessor" + | "#private-instance-accessor" + | "get" + | "public-get" + | "public-decorated-get" + | "decorated-get" + | "static-get" + | "public-static-get" + | "instance-get" + | "public-instance-get" + | "abstract-get" + | "public-abstract-get" + | "protected-get" + | "protected-decorated-get" + | "protected-static-get" + | "protected-instance-get" + | "protected-abstract-get" + | "private-get" + | "private-decorated-get" + | "private-static-get" + | "private-instance-get" + | "#private-get" + | "#private-static-get" + | "#private-instance-get" + | "set" + | "public-set" + | "public-decorated-set" + | "decorated-set" + | "static-set" + | "public-static-set" + | "instance-set" + | "public-instance-set" + | "abstract-set" + | "public-abstract-set" + | "protected-set" + | "protected-decorated-set" + | "protected-static-set" + | "protected-instance-set" + | "protected-abstract-set" + | "private-set" + | "private-decorated-set" + | "private-static-set" + | "private-instance-set" + | "#private-set" + | "#private-static-set" + | "#private-instance-set" + | "static-initialization" + | "static-static-initialization" + | "public-static-static-initialization" + | "instance-static-initialization" + | "public-instance-static-initialization" + | "abstract-static-initialization" + | "public-abstract-static-initialization" + | "protected-static-static-initialization" + | "protected-instance-static-initialization" + | "protected-abstract-static-initialization" + | "private-static-static-initialization" + | "private-instance-static-initialization" + | "#private-static-static-initialization" + | "#private-instance-static-initialization" + )[] + )[] + | { + memberTypes?: + | ( + | ( + | "readonly-signature" + | "signature" + | "readonly-field" + | "public-readonly-field" + | "public-decorated-readonly-field" + | "decorated-readonly-field" + | "static-readonly-field" + | "public-static-readonly-field" + | "instance-readonly-field" + | "public-instance-readonly-field" + | "abstract-readonly-field" + | "public-abstract-readonly-field" + | "protected-readonly-field" + | "protected-decorated-readonly-field" + | "protected-static-readonly-field" + | "protected-instance-readonly-field" + | "protected-abstract-readonly-field" + | "private-readonly-field" + | "private-decorated-readonly-field" + | "private-static-readonly-field" + | "private-instance-readonly-field" + | "#private-readonly-field" + | "#private-static-readonly-field" + | "#private-instance-readonly-field" + | "field" + | "public-field" + | "public-decorated-field" + | "decorated-field" + | "static-field" + | "public-static-field" + | "instance-field" + | "public-instance-field" + | "abstract-field" + | "public-abstract-field" + | "protected-field" + | "protected-decorated-field" + | "protected-static-field" + | "protected-instance-field" + | "protected-abstract-field" + | "private-field" + | "private-decorated-field" + | "private-static-field" + | "private-instance-field" + | "#private-field" + | "#private-static-field" + | "#private-instance-field" + | "method" + | "public-method" + | "public-decorated-method" + | "decorated-method" + | "static-method" + | "public-static-method" + | "instance-method" + | "public-instance-method" + | "abstract-method" + | "public-abstract-method" + | "protected-method" + | "protected-decorated-method" + | "protected-static-method" + | "protected-instance-method" + | "protected-abstract-method" + | "private-method" + | "private-decorated-method" + | "private-static-method" + | "private-instance-method" + | "#private-method" + | "#private-static-method" + | "#private-instance-method" + | "call-signature" + | "constructor" + | "public-constructor" + | "protected-constructor" + | "private-constructor" + | "accessor" + | "public-accessor" + | "public-decorated-accessor" + | "decorated-accessor" + | "static-accessor" + | "public-static-accessor" + | "instance-accessor" + | "public-instance-accessor" + | "abstract-accessor" + | "public-abstract-accessor" + | "protected-accessor" + | "protected-decorated-accessor" + | "protected-static-accessor" + | "protected-instance-accessor" + | "protected-abstract-accessor" + | "private-accessor" + | "private-decorated-accessor" + | "private-static-accessor" + | "private-instance-accessor" + | "#private-accessor" + | "#private-static-accessor" + | "#private-instance-accessor" + | "get" + | "public-get" + | "public-decorated-get" + | "decorated-get" + | "static-get" + | "public-static-get" + | "instance-get" + | "public-instance-get" + | "abstract-get" + | "public-abstract-get" + | "protected-get" + | "protected-decorated-get" + | "protected-static-get" + | "protected-instance-get" + | "protected-abstract-get" + | "private-get" + | "private-decorated-get" + | "private-static-get" + | "private-instance-get" + | "#private-get" + | "#private-static-get" + | "#private-instance-get" + | "set" + | "public-set" + | "public-decorated-set" + | "decorated-set" + | "static-set" + | "public-static-set" + | "instance-set" + | "public-instance-set" + | "abstract-set" + | "public-abstract-set" + | "protected-set" + | "protected-decorated-set" + | "protected-static-set" + | "protected-instance-set" + | "protected-abstract-set" + | "private-set" + | "private-decorated-set" + | "private-static-set" + | "private-instance-set" + | "#private-set" + | "#private-static-set" + | "#private-instance-set" + | "static-initialization" + | "static-static-initialization" + | "public-static-static-initialization" + | "instance-static-initialization" + | "public-instance-static-initialization" + | "abstract-static-initialization" + | "public-abstract-static-initialization" + | "protected-static-static-initialization" + | "protected-instance-static-initialization" + | "protected-abstract-static-initialization" + | "private-static-static-initialization" + | "private-instance-static-initialization" + | "#private-static-static-initialization" + | "#private-instance-static-initialization" + ) + | ( + | "readonly-signature" + | "signature" + | "readonly-field" + | "public-readonly-field" + | "public-decorated-readonly-field" + | "decorated-readonly-field" + | "static-readonly-field" + | "public-static-readonly-field" + | "instance-readonly-field" + | "public-instance-readonly-field" + | "abstract-readonly-field" + | "public-abstract-readonly-field" + | "protected-readonly-field" + | "protected-decorated-readonly-field" + | "protected-static-readonly-field" + | "protected-instance-readonly-field" + | "protected-abstract-readonly-field" + | "private-readonly-field" + | "private-decorated-readonly-field" + | "private-static-readonly-field" + | "private-instance-readonly-field" + | "#private-readonly-field" + | "#private-static-readonly-field" + | "#private-instance-readonly-field" + | "field" + | "public-field" + | "public-decorated-field" + | "decorated-field" + | "static-field" + | "public-static-field" + | "instance-field" + | "public-instance-field" + | "abstract-field" + | "public-abstract-field" + | "protected-field" + | "protected-decorated-field" + | "protected-static-field" + | "protected-instance-field" + | "protected-abstract-field" + | "private-field" + | "private-decorated-field" + | "private-static-field" + | "private-instance-field" + | "#private-field" + | "#private-static-field" + | "#private-instance-field" + | "method" + | "public-method" + | "public-decorated-method" + | "decorated-method" + | "static-method" + | "public-static-method" + | "instance-method" + | "public-instance-method" + | "abstract-method" + | "public-abstract-method" + | "protected-method" + | "protected-decorated-method" + | "protected-static-method" + | "protected-instance-method" + | "protected-abstract-method" + | "private-method" + | "private-decorated-method" + | "private-static-method" + | "private-instance-method" + | "#private-method" + | "#private-static-method" + | "#private-instance-method" + | "call-signature" + | "constructor" + | "public-constructor" + | "protected-constructor" + | "private-constructor" + | "accessor" + | "public-accessor" + | "public-decorated-accessor" + | "decorated-accessor" + | "static-accessor" + | "public-static-accessor" + | "instance-accessor" + | "public-instance-accessor" + | "abstract-accessor" + | "public-abstract-accessor" + | "protected-accessor" + | "protected-decorated-accessor" + | "protected-static-accessor" + | "protected-instance-accessor" + | "protected-abstract-accessor" + | "private-accessor" + | "private-decorated-accessor" + | "private-static-accessor" + | "private-instance-accessor" + | "#private-accessor" + | "#private-static-accessor" + | "#private-instance-accessor" + | "get" + | "public-get" + | "public-decorated-get" + | "decorated-get" + | "static-get" + | "public-static-get" + | "instance-get" + | "public-instance-get" + | "abstract-get" + | "public-abstract-get" + | "protected-get" + | "protected-decorated-get" + | "protected-static-get" + | "protected-instance-get" + | "protected-abstract-get" + | "private-get" + | "private-decorated-get" + | "private-static-get" + | "private-instance-get" + | "#private-get" + | "#private-static-get" + | "#private-instance-get" + | "set" + | "public-set" + | "public-decorated-set" + | "decorated-set" + | "static-set" + | "public-static-set" + | "instance-set" + | "public-instance-set" + | "abstract-set" + | "public-abstract-set" + | "protected-set" + | "protected-decorated-set" + | "protected-static-set" + | "protected-instance-set" + | "protected-abstract-set" + | "private-set" + | "private-decorated-set" + | "private-static-set" + | "private-instance-set" + | "#private-set" + | "#private-static-set" + | "#private-instance-set" + | "static-initialization" + | "static-static-initialization" + | "public-static-static-initialization" + | "instance-static-initialization" + | "public-instance-static-initialization" + | "abstract-static-initialization" + | "public-abstract-static-initialization" + | "protected-static-static-initialization" + | "protected-instance-static-initialization" + | "protected-abstract-static-initialization" + | "private-static-static-initialization" + | "private-instance-static-initialization" + | "#private-static-static-initialization" + | "#private-instance-static-initialization" + )[] + )[] + | "never"; + optionalityOrder?: "optional-first" | "required-first"; + order?: "alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive"; + }; + classExpressions?: + | "never" + | ( + | ( + | "readonly-signature" + | "signature" + | "readonly-field" + | "public-readonly-field" + | "public-decorated-readonly-field" + | "decorated-readonly-field" + | "static-readonly-field" + | "public-static-readonly-field" + | "instance-readonly-field" + | "public-instance-readonly-field" + | "abstract-readonly-field" + | "public-abstract-readonly-field" + | "protected-readonly-field" + | "protected-decorated-readonly-field" + | "protected-static-readonly-field" + | "protected-instance-readonly-field" + | "protected-abstract-readonly-field" + | "private-readonly-field" + | "private-decorated-readonly-field" + | "private-static-readonly-field" + | "private-instance-readonly-field" + | "#private-readonly-field" + | "#private-static-readonly-field" + | "#private-instance-readonly-field" + | "field" + | "public-field" + | "public-decorated-field" + | "decorated-field" + | "static-field" + | "public-static-field" + | "instance-field" + | "public-instance-field" + | "abstract-field" + | "public-abstract-field" + | "protected-field" + | "protected-decorated-field" + | "protected-static-field" + | "protected-instance-field" + | "protected-abstract-field" + | "private-field" + | "private-decorated-field" + | "private-static-field" + | "private-instance-field" + | "#private-field" + | "#private-static-field" + | "#private-instance-field" + | "method" + | "public-method" + | "public-decorated-method" + | "decorated-method" + | "static-method" + | "public-static-method" + | "instance-method" + | "public-instance-method" + | "abstract-method" + | "public-abstract-method" + | "protected-method" + | "protected-decorated-method" + | "protected-static-method" + | "protected-instance-method" + | "protected-abstract-method" + | "private-method" + | "private-decorated-method" + | "private-static-method" + | "private-instance-method" + | "#private-method" + | "#private-static-method" + | "#private-instance-method" + | "call-signature" + | "constructor" + | "public-constructor" + | "protected-constructor" + | "private-constructor" + | "accessor" + | "public-accessor" + | "public-decorated-accessor" + | "decorated-accessor" + | "static-accessor" + | "public-static-accessor" + | "instance-accessor" + | "public-instance-accessor" + | "abstract-accessor" + | "public-abstract-accessor" + | "protected-accessor" + | "protected-decorated-accessor" + | "protected-static-accessor" + | "protected-instance-accessor" + | "protected-abstract-accessor" + | "private-accessor" + | "private-decorated-accessor" + | "private-static-accessor" + | "private-instance-accessor" + | "#private-accessor" + | "#private-static-accessor" + | "#private-instance-accessor" + | "get" + | "public-get" + | "public-decorated-get" + | "decorated-get" + | "static-get" + | "public-static-get" + | "instance-get" + | "public-instance-get" + | "abstract-get" + | "public-abstract-get" + | "protected-get" + | "protected-decorated-get" + | "protected-static-get" + | "protected-instance-get" + | "protected-abstract-get" + | "private-get" + | "private-decorated-get" + | "private-static-get" + | "private-instance-get" + | "#private-get" + | "#private-static-get" + | "#private-instance-get" + | "set" + | "public-set" + | "public-decorated-set" + | "decorated-set" + | "static-set" + | "public-static-set" + | "instance-set" + | "public-instance-set" + | "abstract-set" + | "public-abstract-set" + | "protected-set" + | "protected-decorated-set" + | "protected-static-set" + | "protected-instance-set" + | "protected-abstract-set" + | "private-set" + | "private-decorated-set" + | "private-static-set" + | "private-instance-set" + | "#private-set" + | "#private-static-set" + | "#private-instance-set" + | "static-initialization" + | "static-static-initialization" + | "public-static-static-initialization" + | "instance-static-initialization" + | "public-instance-static-initialization" + | "abstract-static-initialization" + | "public-abstract-static-initialization" + | "protected-static-static-initialization" + | "protected-instance-static-initialization" + | "protected-abstract-static-initialization" + | "private-static-static-initialization" + | "private-instance-static-initialization" + | "#private-static-static-initialization" + | "#private-instance-static-initialization" + ) + | ( + | "readonly-signature" + | "signature" + | "readonly-field" + | "public-readonly-field" + | "public-decorated-readonly-field" + | "decorated-readonly-field" + | "static-readonly-field" + | "public-static-readonly-field" + | "instance-readonly-field" + | "public-instance-readonly-field" + | "abstract-readonly-field" + | "public-abstract-readonly-field" + | "protected-readonly-field" + | "protected-decorated-readonly-field" + | "protected-static-readonly-field" + | "protected-instance-readonly-field" + | "protected-abstract-readonly-field" + | "private-readonly-field" + | "private-decorated-readonly-field" + | "private-static-readonly-field" + | "private-instance-readonly-field" + | "#private-readonly-field" + | "#private-static-readonly-field" + | "#private-instance-readonly-field" + | "field" + | "public-field" + | "public-decorated-field" + | "decorated-field" + | "static-field" + | "public-static-field" + | "instance-field" + | "public-instance-field" + | "abstract-field" + | "public-abstract-field" + | "protected-field" + | "protected-decorated-field" + | "protected-static-field" + | "protected-instance-field" + | "protected-abstract-field" + | "private-field" + | "private-decorated-field" + | "private-static-field" + | "private-instance-field" + | "#private-field" + | "#private-static-field" + | "#private-instance-field" + | "method" + | "public-method" + | "public-decorated-method" + | "decorated-method" + | "static-method" + | "public-static-method" + | "instance-method" + | "public-instance-method" + | "abstract-method" + | "public-abstract-method" + | "protected-method" + | "protected-decorated-method" + | "protected-static-method" + | "protected-instance-method" + | "protected-abstract-method" + | "private-method" + | "private-decorated-method" + | "private-static-method" + | "private-instance-method" + | "#private-method" + | "#private-static-method" + | "#private-instance-method" + | "call-signature" + | "constructor" + | "public-constructor" + | "protected-constructor" + | "private-constructor" + | "accessor" + | "public-accessor" + | "public-decorated-accessor" + | "decorated-accessor" + | "static-accessor" + | "public-static-accessor" + | "instance-accessor" + | "public-instance-accessor" + | "abstract-accessor" + | "public-abstract-accessor" + | "protected-accessor" + | "protected-decorated-accessor" + | "protected-static-accessor" + | "protected-instance-accessor" + | "protected-abstract-accessor" + | "private-accessor" + | "private-decorated-accessor" + | "private-static-accessor" + | "private-instance-accessor" + | "#private-accessor" + | "#private-static-accessor" + | "#private-instance-accessor" + | "get" + | "public-get" + | "public-decorated-get" + | "decorated-get" + | "static-get" + | "public-static-get" + | "instance-get" + | "public-instance-get" + | "abstract-get" + | "public-abstract-get" + | "protected-get" + | "protected-decorated-get" + | "protected-static-get" + | "protected-instance-get" + | "protected-abstract-get" + | "private-get" + | "private-decorated-get" + | "private-static-get" + | "private-instance-get" + | "#private-get" + | "#private-static-get" + | "#private-instance-get" + | "set" + | "public-set" + | "public-decorated-set" + | "decorated-set" + | "static-set" + | "public-static-set" + | "instance-set" + | "public-instance-set" + | "abstract-set" + | "public-abstract-set" + | "protected-set" + | "protected-decorated-set" + | "protected-static-set" + | "protected-instance-set" + | "protected-abstract-set" + | "private-set" + | "private-decorated-set" + | "private-static-set" + | "private-instance-set" + | "#private-set" + | "#private-static-set" + | "#private-instance-set" + | "static-initialization" + | "static-static-initialization" + | "public-static-static-initialization" + | "instance-static-initialization" + | "public-instance-static-initialization" + | "abstract-static-initialization" + | "public-abstract-static-initialization" + | "protected-static-static-initialization" + | "protected-instance-static-initialization" + | "protected-abstract-static-initialization" + | "private-static-static-initialization" + | "private-instance-static-initialization" + | "#private-static-static-initialization" + | "#private-instance-static-initialization" + )[] + )[] + | { + memberTypes?: + | ( + | ( + | "readonly-signature" + | "signature" + | "readonly-field" + | "public-readonly-field" + | "public-decorated-readonly-field" + | "decorated-readonly-field" + | "static-readonly-field" + | "public-static-readonly-field" + | "instance-readonly-field" + | "public-instance-readonly-field" + | "abstract-readonly-field" + | "public-abstract-readonly-field" + | "protected-readonly-field" + | "protected-decorated-readonly-field" + | "protected-static-readonly-field" + | "protected-instance-readonly-field" + | "protected-abstract-readonly-field" + | "private-readonly-field" + | "private-decorated-readonly-field" + | "private-static-readonly-field" + | "private-instance-readonly-field" + | "#private-readonly-field" + | "#private-static-readonly-field" + | "#private-instance-readonly-field" + | "field" + | "public-field" + | "public-decorated-field" + | "decorated-field" + | "static-field" + | "public-static-field" + | "instance-field" + | "public-instance-field" + | "abstract-field" + | "public-abstract-field" + | "protected-field" + | "protected-decorated-field" + | "protected-static-field" + | "protected-instance-field" + | "protected-abstract-field" + | "private-field" + | "private-decorated-field" + | "private-static-field" + | "private-instance-field" + | "#private-field" + | "#private-static-field" + | "#private-instance-field" + | "method" + | "public-method" + | "public-decorated-method" + | "decorated-method" + | "static-method" + | "public-static-method" + | "instance-method" + | "public-instance-method" + | "abstract-method" + | "public-abstract-method" + | "protected-method" + | "protected-decorated-method" + | "protected-static-method" + | "protected-instance-method" + | "protected-abstract-method" + | "private-method" + | "private-decorated-method" + | "private-static-method" + | "private-instance-method" + | "#private-method" + | "#private-static-method" + | "#private-instance-method" + | "call-signature" + | "constructor" + | "public-constructor" + | "protected-constructor" + | "private-constructor" + | "accessor" + | "public-accessor" + | "public-decorated-accessor" + | "decorated-accessor" + | "static-accessor" + | "public-static-accessor" + | "instance-accessor" + | "public-instance-accessor" + | "abstract-accessor" + | "public-abstract-accessor" + | "protected-accessor" + | "protected-decorated-accessor" + | "protected-static-accessor" + | "protected-instance-accessor" + | "protected-abstract-accessor" + | "private-accessor" + | "private-decorated-accessor" + | "private-static-accessor" + | "private-instance-accessor" + | "#private-accessor" + | "#private-static-accessor" + | "#private-instance-accessor" + | "get" + | "public-get" + | "public-decorated-get" + | "decorated-get" + | "static-get" + | "public-static-get" + | "instance-get" + | "public-instance-get" + | "abstract-get" + | "public-abstract-get" + | "protected-get" + | "protected-decorated-get" + | "protected-static-get" + | "protected-instance-get" + | "protected-abstract-get" + | "private-get" + | "private-decorated-get" + | "private-static-get" + | "private-instance-get" + | "#private-get" + | "#private-static-get" + | "#private-instance-get" + | "set" + | "public-set" + | "public-decorated-set" + | "decorated-set" + | "static-set" + | "public-static-set" + | "instance-set" + | "public-instance-set" + | "abstract-set" + | "public-abstract-set" + | "protected-set" + | "protected-decorated-set" + | "protected-static-set" + | "protected-instance-set" + | "protected-abstract-set" + | "private-set" + | "private-decorated-set" + | "private-static-set" + | "private-instance-set" + | "#private-set" + | "#private-static-set" + | "#private-instance-set" + | "static-initialization" + | "static-static-initialization" + | "public-static-static-initialization" + | "instance-static-initialization" + | "public-instance-static-initialization" + | "abstract-static-initialization" + | "public-abstract-static-initialization" + | "protected-static-static-initialization" + | "protected-instance-static-initialization" + | "protected-abstract-static-initialization" + | "private-static-static-initialization" + | "private-instance-static-initialization" + | "#private-static-static-initialization" + | "#private-instance-static-initialization" + ) + | ( + | "readonly-signature" + | "signature" + | "readonly-field" + | "public-readonly-field" + | "public-decorated-readonly-field" + | "decorated-readonly-field" + | "static-readonly-field" + | "public-static-readonly-field" + | "instance-readonly-field" + | "public-instance-readonly-field" + | "abstract-readonly-field" + | "public-abstract-readonly-field" + | "protected-readonly-field" + | "protected-decorated-readonly-field" + | "protected-static-readonly-field" + | "protected-instance-readonly-field" + | "protected-abstract-readonly-field" + | "private-readonly-field" + | "private-decorated-readonly-field" + | "private-static-readonly-field" + | "private-instance-readonly-field" + | "#private-readonly-field" + | "#private-static-readonly-field" + | "#private-instance-readonly-field" + | "field" + | "public-field" + | "public-decorated-field" + | "decorated-field" + | "static-field" + | "public-static-field" + | "instance-field" + | "public-instance-field" + | "abstract-field" + | "public-abstract-field" + | "protected-field" + | "protected-decorated-field" + | "protected-static-field" + | "protected-instance-field" + | "protected-abstract-field" + | "private-field" + | "private-decorated-field" + | "private-static-field" + | "private-instance-field" + | "#private-field" + | "#private-static-field" + | "#private-instance-field" + | "method" + | "public-method" + | "public-decorated-method" + | "decorated-method" + | "static-method" + | "public-static-method" + | "instance-method" + | "public-instance-method" + | "abstract-method" + | "public-abstract-method" + | "protected-method" + | "protected-decorated-method" + | "protected-static-method" + | "protected-instance-method" + | "protected-abstract-method" + | "private-method" + | "private-decorated-method" + | "private-static-method" + | "private-instance-method" + | "#private-method" + | "#private-static-method" + | "#private-instance-method" + | "call-signature" + | "constructor" + | "public-constructor" + | "protected-constructor" + | "private-constructor" + | "accessor" + | "public-accessor" + | "public-decorated-accessor" + | "decorated-accessor" + | "static-accessor" + | "public-static-accessor" + | "instance-accessor" + | "public-instance-accessor" + | "abstract-accessor" + | "public-abstract-accessor" + | "protected-accessor" + | "protected-decorated-accessor" + | "protected-static-accessor" + | "protected-instance-accessor" + | "protected-abstract-accessor" + | "private-accessor" + | "private-decorated-accessor" + | "private-static-accessor" + | "private-instance-accessor" + | "#private-accessor" + | "#private-static-accessor" + | "#private-instance-accessor" + | "get" + | "public-get" + | "public-decorated-get" + | "decorated-get" + | "static-get" + | "public-static-get" + | "instance-get" + | "public-instance-get" + | "abstract-get" + | "public-abstract-get" + | "protected-get" + | "protected-decorated-get" + | "protected-static-get" + | "protected-instance-get" + | "protected-abstract-get" + | "private-get" + | "private-decorated-get" + | "private-static-get" + | "private-instance-get" + | "#private-get" + | "#private-static-get" + | "#private-instance-get" + | "set" + | "public-set" + | "public-decorated-set" + | "decorated-set" + | "static-set" + | "public-static-set" + | "instance-set" + | "public-instance-set" + | "abstract-set" + | "public-abstract-set" + | "protected-set" + | "protected-decorated-set" + | "protected-static-set" + | "protected-instance-set" + | "protected-abstract-set" + | "private-set" + | "private-decorated-set" + | "private-static-set" + | "private-instance-set" + | "#private-set" + | "#private-static-set" + | "#private-instance-set" + | "static-initialization" + | "static-static-initialization" + | "public-static-static-initialization" + | "instance-static-initialization" + | "public-instance-static-initialization" + | "abstract-static-initialization" + | "public-abstract-static-initialization" + | "protected-static-static-initialization" + | "protected-instance-static-initialization" + | "protected-abstract-static-initialization" + | "private-static-static-initialization" + | "private-instance-static-initialization" + | "#private-static-static-initialization" + | "#private-instance-static-initialization" + )[] + )[] + | "never"; + optionalityOrder?: "optional-first" | "required-first"; + order?: "alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive"; + }; + default?: + | "never" + | ( + | ( + | "readonly-signature" + | "signature" + | "readonly-field" + | "public-readonly-field" + | "public-decorated-readonly-field" + | "decorated-readonly-field" + | "static-readonly-field" + | "public-static-readonly-field" + | "instance-readonly-field" + | "public-instance-readonly-field" + | "abstract-readonly-field" + | "public-abstract-readonly-field" + | "protected-readonly-field" + | "protected-decorated-readonly-field" + | "protected-static-readonly-field" + | "protected-instance-readonly-field" + | "protected-abstract-readonly-field" + | "private-readonly-field" + | "private-decorated-readonly-field" + | "private-static-readonly-field" + | "private-instance-readonly-field" + | "#private-readonly-field" + | "#private-static-readonly-field" + | "#private-instance-readonly-field" + | "field" + | "public-field" + | "public-decorated-field" + | "decorated-field" + | "static-field" + | "public-static-field" + | "instance-field" + | "public-instance-field" + | "abstract-field" + | "public-abstract-field" + | "protected-field" + | "protected-decorated-field" + | "protected-static-field" + | "protected-instance-field" + | "protected-abstract-field" + | "private-field" + | "private-decorated-field" + | "private-static-field" + | "private-instance-field" + | "#private-field" + | "#private-static-field" + | "#private-instance-field" + | "method" + | "public-method" + | "public-decorated-method" + | "decorated-method" + | "static-method" + | "public-static-method" + | "instance-method" + | "public-instance-method" + | "abstract-method" + | "public-abstract-method" + | "protected-method" + | "protected-decorated-method" + | "protected-static-method" + | "protected-instance-method" + | "protected-abstract-method" + | "private-method" + | "private-decorated-method" + | "private-static-method" + | "private-instance-method" + | "#private-method" + | "#private-static-method" + | "#private-instance-method" + | "call-signature" + | "constructor" + | "public-constructor" + | "protected-constructor" + | "private-constructor" + | "accessor" + | "public-accessor" + | "public-decorated-accessor" + | "decorated-accessor" + | "static-accessor" + | "public-static-accessor" + | "instance-accessor" + | "public-instance-accessor" + | "abstract-accessor" + | "public-abstract-accessor" + | "protected-accessor" + | "protected-decorated-accessor" + | "protected-static-accessor" + | "protected-instance-accessor" + | "protected-abstract-accessor" + | "private-accessor" + | "private-decorated-accessor" + | "private-static-accessor" + | "private-instance-accessor" + | "#private-accessor" + | "#private-static-accessor" + | "#private-instance-accessor" + | "get" + | "public-get" + | "public-decorated-get" + | "decorated-get" + | "static-get" + | "public-static-get" + | "instance-get" + | "public-instance-get" + | "abstract-get" + | "public-abstract-get" + | "protected-get" + | "protected-decorated-get" + | "protected-static-get" + | "protected-instance-get" + | "protected-abstract-get" + | "private-get" + | "private-decorated-get" + | "private-static-get" + | "private-instance-get" + | "#private-get" + | "#private-static-get" + | "#private-instance-get" + | "set" + | "public-set" + | "public-decorated-set" + | "decorated-set" + | "static-set" + | "public-static-set" + | "instance-set" + | "public-instance-set" + | "abstract-set" + | "public-abstract-set" + | "protected-set" + | "protected-decorated-set" + | "protected-static-set" + | "protected-instance-set" + | "protected-abstract-set" + | "private-set" + | "private-decorated-set" + | "private-static-set" + | "private-instance-set" + | "#private-set" + | "#private-static-set" + | "#private-instance-set" + | "static-initialization" + | "static-static-initialization" + | "public-static-static-initialization" + | "instance-static-initialization" + | "public-instance-static-initialization" + | "abstract-static-initialization" + | "public-abstract-static-initialization" + | "protected-static-static-initialization" + | "protected-instance-static-initialization" + | "protected-abstract-static-initialization" + | "private-static-static-initialization" + | "private-instance-static-initialization" + | "#private-static-static-initialization" + | "#private-instance-static-initialization" + ) + | ( + | "readonly-signature" + | "signature" + | "readonly-field" + | "public-readonly-field" + | "public-decorated-readonly-field" + | "decorated-readonly-field" + | "static-readonly-field" + | "public-static-readonly-field" + | "instance-readonly-field" + | "public-instance-readonly-field" + | "abstract-readonly-field" + | "public-abstract-readonly-field" + | "protected-readonly-field" + | "protected-decorated-readonly-field" + | "protected-static-readonly-field" + | "protected-instance-readonly-field" + | "protected-abstract-readonly-field" + | "private-readonly-field" + | "private-decorated-readonly-field" + | "private-static-readonly-field" + | "private-instance-readonly-field" + | "#private-readonly-field" + | "#private-static-readonly-field" + | "#private-instance-readonly-field" + | "field" + | "public-field" + | "public-decorated-field" + | "decorated-field" + | "static-field" + | "public-static-field" + | "instance-field" + | "public-instance-field" + | "abstract-field" + | "public-abstract-field" + | "protected-field" + | "protected-decorated-field" + | "protected-static-field" + | "protected-instance-field" + | "protected-abstract-field" + | "private-field" + | "private-decorated-field" + | "private-static-field" + | "private-instance-field" + | "#private-field" + | "#private-static-field" + | "#private-instance-field" + | "method" + | "public-method" + | "public-decorated-method" + | "decorated-method" + | "static-method" + | "public-static-method" + | "instance-method" + | "public-instance-method" + | "abstract-method" + | "public-abstract-method" + | "protected-method" + | "protected-decorated-method" + | "protected-static-method" + | "protected-instance-method" + | "protected-abstract-method" + | "private-method" + | "private-decorated-method" + | "private-static-method" + | "private-instance-method" + | "#private-method" + | "#private-static-method" + | "#private-instance-method" + | "call-signature" + | "constructor" + | "public-constructor" + | "protected-constructor" + | "private-constructor" + | "accessor" + | "public-accessor" + | "public-decorated-accessor" + | "decorated-accessor" + | "static-accessor" + | "public-static-accessor" + | "instance-accessor" + | "public-instance-accessor" + | "abstract-accessor" + | "public-abstract-accessor" + | "protected-accessor" + | "protected-decorated-accessor" + | "protected-static-accessor" + | "protected-instance-accessor" + | "protected-abstract-accessor" + | "private-accessor" + | "private-decorated-accessor" + | "private-static-accessor" + | "private-instance-accessor" + | "#private-accessor" + | "#private-static-accessor" + | "#private-instance-accessor" + | "get" + | "public-get" + | "public-decorated-get" + | "decorated-get" + | "static-get" + | "public-static-get" + | "instance-get" + | "public-instance-get" + | "abstract-get" + | "public-abstract-get" + | "protected-get" + | "protected-decorated-get" + | "protected-static-get" + | "protected-instance-get" + | "protected-abstract-get" + | "private-get" + | "private-decorated-get" + | "private-static-get" + | "private-instance-get" + | "#private-get" + | "#private-static-get" + | "#private-instance-get" + | "set" + | "public-set" + | "public-decorated-set" + | "decorated-set" + | "static-set" + | "public-static-set" + | "instance-set" + | "public-instance-set" + | "abstract-set" + | "public-abstract-set" + | "protected-set" + | "protected-decorated-set" + | "protected-static-set" + | "protected-instance-set" + | "protected-abstract-set" + | "private-set" + | "private-decorated-set" + | "private-static-set" + | "private-instance-set" + | "#private-set" + | "#private-static-set" + | "#private-instance-set" + | "static-initialization" + | "static-static-initialization" + | "public-static-static-initialization" + | "instance-static-initialization" + | "public-instance-static-initialization" + | "abstract-static-initialization" + | "public-abstract-static-initialization" + | "protected-static-static-initialization" + | "protected-instance-static-initialization" + | "protected-abstract-static-initialization" + | "private-static-static-initialization" + | "private-instance-static-initialization" + | "#private-static-static-initialization" + | "#private-instance-static-initialization" + )[] + )[] + | { + memberTypes?: + | ( + | ( + | "readonly-signature" + | "signature" + | "readonly-field" + | "public-readonly-field" + | "public-decorated-readonly-field" + | "decorated-readonly-field" + | "static-readonly-field" + | "public-static-readonly-field" + | "instance-readonly-field" + | "public-instance-readonly-field" + | "abstract-readonly-field" + | "public-abstract-readonly-field" + | "protected-readonly-field" + | "protected-decorated-readonly-field" + | "protected-static-readonly-field" + | "protected-instance-readonly-field" + | "protected-abstract-readonly-field" + | "private-readonly-field" + | "private-decorated-readonly-field" + | "private-static-readonly-field" + | "private-instance-readonly-field" + | "#private-readonly-field" + | "#private-static-readonly-field" + | "#private-instance-readonly-field" + | "field" + | "public-field" + | "public-decorated-field" + | "decorated-field" + | "static-field" + | "public-static-field" + | "instance-field" + | "public-instance-field" + | "abstract-field" + | "public-abstract-field" + | "protected-field" + | "protected-decorated-field" + | "protected-static-field" + | "protected-instance-field" + | "protected-abstract-field" + | "private-field" + | "private-decorated-field" + | "private-static-field" + | "private-instance-field" + | "#private-field" + | "#private-static-field" + | "#private-instance-field" + | "method" + | "public-method" + | "public-decorated-method" + | "decorated-method" + | "static-method" + | "public-static-method" + | "instance-method" + | "public-instance-method" + | "abstract-method" + | "public-abstract-method" + | "protected-method" + | "protected-decorated-method" + | "protected-static-method" + | "protected-instance-method" + | "protected-abstract-method" + | "private-method" + | "private-decorated-method" + | "private-static-method" + | "private-instance-method" + | "#private-method" + | "#private-static-method" + | "#private-instance-method" + | "call-signature" + | "constructor" + | "public-constructor" + | "protected-constructor" + | "private-constructor" + | "accessor" + | "public-accessor" + | "public-decorated-accessor" + | "decorated-accessor" + | "static-accessor" + | "public-static-accessor" + | "instance-accessor" + | "public-instance-accessor" + | "abstract-accessor" + | "public-abstract-accessor" + | "protected-accessor" + | "protected-decorated-accessor" + | "protected-static-accessor" + | "protected-instance-accessor" + | "protected-abstract-accessor" + | "private-accessor" + | "private-decorated-accessor" + | "private-static-accessor" + | "private-instance-accessor" + | "#private-accessor" + | "#private-static-accessor" + | "#private-instance-accessor" + | "get" + | "public-get" + | "public-decorated-get" + | "decorated-get" + | "static-get" + | "public-static-get" + | "instance-get" + | "public-instance-get" + | "abstract-get" + | "public-abstract-get" + | "protected-get" + | "protected-decorated-get" + | "protected-static-get" + | "protected-instance-get" + | "protected-abstract-get" + | "private-get" + | "private-decorated-get" + | "private-static-get" + | "private-instance-get" + | "#private-get" + | "#private-static-get" + | "#private-instance-get" + | "set" + | "public-set" + | "public-decorated-set" + | "decorated-set" + | "static-set" + | "public-static-set" + | "instance-set" + | "public-instance-set" + | "abstract-set" + | "public-abstract-set" + | "protected-set" + | "protected-decorated-set" + | "protected-static-set" + | "protected-instance-set" + | "protected-abstract-set" + | "private-set" + | "private-decorated-set" + | "private-static-set" + | "private-instance-set" + | "#private-set" + | "#private-static-set" + | "#private-instance-set" + | "static-initialization" + | "static-static-initialization" + | "public-static-static-initialization" + | "instance-static-initialization" + | "public-instance-static-initialization" + | "abstract-static-initialization" + | "public-abstract-static-initialization" + | "protected-static-static-initialization" + | "protected-instance-static-initialization" + | "protected-abstract-static-initialization" + | "private-static-static-initialization" + | "private-instance-static-initialization" + | "#private-static-static-initialization" + | "#private-instance-static-initialization" + ) + | ( + | "readonly-signature" + | "signature" + | "readonly-field" + | "public-readonly-field" + | "public-decorated-readonly-field" + | "decorated-readonly-field" + | "static-readonly-field" + | "public-static-readonly-field" + | "instance-readonly-field" + | "public-instance-readonly-field" + | "abstract-readonly-field" + | "public-abstract-readonly-field" + | "protected-readonly-field" + | "protected-decorated-readonly-field" + | "protected-static-readonly-field" + | "protected-instance-readonly-field" + | "protected-abstract-readonly-field" + | "private-readonly-field" + | "private-decorated-readonly-field" + | "private-static-readonly-field" + | "private-instance-readonly-field" + | "#private-readonly-field" + | "#private-static-readonly-field" + | "#private-instance-readonly-field" + | "field" + | "public-field" + | "public-decorated-field" + | "decorated-field" + | "static-field" + | "public-static-field" + | "instance-field" + | "public-instance-field" + | "abstract-field" + | "public-abstract-field" + | "protected-field" + | "protected-decorated-field" + | "protected-static-field" + | "protected-instance-field" + | "protected-abstract-field" + | "private-field" + | "private-decorated-field" + | "private-static-field" + | "private-instance-field" + | "#private-field" + | "#private-static-field" + | "#private-instance-field" + | "method" + | "public-method" + | "public-decorated-method" + | "decorated-method" + | "static-method" + | "public-static-method" + | "instance-method" + | "public-instance-method" + | "abstract-method" + | "public-abstract-method" + | "protected-method" + | "protected-decorated-method" + | "protected-static-method" + | "protected-instance-method" + | "protected-abstract-method" + | "private-method" + | "private-decorated-method" + | "private-static-method" + | "private-instance-method" + | "#private-method" + | "#private-static-method" + | "#private-instance-method" + | "call-signature" + | "constructor" + | "public-constructor" + | "protected-constructor" + | "private-constructor" + | "accessor" + | "public-accessor" + | "public-decorated-accessor" + | "decorated-accessor" + | "static-accessor" + | "public-static-accessor" + | "instance-accessor" + | "public-instance-accessor" + | "abstract-accessor" + | "public-abstract-accessor" + | "protected-accessor" + | "protected-decorated-accessor" + | "protected-static-accessor" + | "protected-instance-accessor" + | "protected-abstract-accessor" + | "private-accessor" + | "private-decorated-accessor" + | "private-static-accessor" + | "private-instance-accessor" + | "#private-accessor" + | "#private-static-accessor" + | "#private-instance-accessor" + | "get" + | "public-get" + | "public-decorated-get" + | "decorated-get" + | "static-get" + | "public-static-get" + | "instance-get" + | "public-instance-get" + | "abstract-get" + | "public-abstract-get" + | "protected-get" + | "protected-decorated-get" + | "protected-static-get" + | "protected-instance-get" + | "protected-abstract-get" + | "private-get" + | "private-decorated-get" + | "private-static-get" + | "private-instance-get" + | "#private-get" + | "#private-static-get" + | "#private-instance-get" + | "set" + | "public-set" + | "public-decorated-set" + | "decorated-set" + | "static-set" + | "public-static-set" + | "instance-set" + | "public-instance-set" + | "abstract-set" + | "public-abstract-set" + | "protected-set" + | "protected-decorated-set" + | "protected-static-set" + | "protected-instance-set" + | "protected-abstract-set" + | "private-set" + | "private-decorated-set" + | "private-static-set" + | "private-instance-set" + | "#private-set" + | "#private-static-set" + | "#private-instance-set" + | "static-initialization" + | "static-static-initialization" + | "public-static-static-initialization" + | "instance-static-initialization" + | "public-instance-static-initialization" + | "abstract-static-initialization" + | "public-abstract-static-initialization" + | "protected-static-static-initialization" + | "protected-instance-static-initialization" + | "protected-abstract-static-initialization" + | "private-static-static-initialization" + | "private-instance-static-initialization" + | "#private-static-static-initialization" + | "#private-instance-static-initialization" + )[] + )[] + | "never"; + optionalityOrder?: "optional-first" | "required-first"; + order?: "alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive"; + }; + interfaces?: + | "never" + | ( + | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor") + | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor")[] + )[] + | { + memberTypes?: + | ( + | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor") + | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor")[] + )[] + | "never"; + optionalityOrder?: "optional-first" | "required-first"; + order?: "alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive"; + }; + typeLiterals?: + | "never" + | ( + | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor") + | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor")[] + )[] + | { + memberTypes?: + | ( + | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor") + | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor")[] + )[] + | "never"; + optionalityOrder?: "optional-first" | "required-first"; + order?: "alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive"; + }; + }, + ]; // ----- @typescript-eslint/method-signature-style ----- -type TypescriptEslintMethodSignatureStyle = []|[("property" | "method")] +type TypescriptEslintMethodSignatureStyle = [] | ["property" | "method"]; // ----- @typescript-eslint/naming-convention ----- -type _TypescriptEslintNamingConventionFormatOptionsConfig = (_TypescriptEslintNamingConventionPredefinedFormats[] | null) -type _TypescriptEslintNamingConventionPredefinedFormats = ("camelCase" | "strictCamelCase" | "PascalCase" | "StrictPascalCase" | "snake_case" | "UPPER_CASE") -type _TypescriptEslintNamingConventionUnderscoreOptions = ("forbid" | "allow" | "require" | "requireDouble" | "allowDouble" | "allowSingleOrDouble") -type _TypescriptEslintNamingConvention_PrefixSuffixConfig = string[] -type _TypescriptEslintNamingConventionTypeModifiers = ("boolean" | "string" | "number" | "function" | "array") -type TypescriptEslintNamingConvention = ({ - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - modifiers?: ("const" | "readonly" | "static" | "public" | "protected" | "private" | "#private" | "abstract" | "destructured" | "global" | "exported" | "unused" | "requiresQuotes" | "override" | "async" | "default" | "namespace")[] - selector: ("default" | "variableLike" | "memberLike" | "typeLike" | "method" | "property" | "accessor" | "variable" | "function" | "parameter" | "parameterProperty" | "classicAccessor" | "enumMember" | "classMethod" | "objectLiteralMethod" | "typeMethod" | "classProperty" | "objectLiteralProperty" | "typeProperty" | "autoAccessor" | "class" | "interface" | "typeAlias" | "enum" | "typeParameter" | "import")[] - types?: _TypescriptEslintNamingConventionTypeModifiers[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "default" - modifiers?: ("const" | "readonly" | "static" | "public" | "protected" | "private" | "#private" | "abstract" | "destructured" | "global" | "exported" | "unused" | "requiresQuotes" | "override" | "async" | "default" | "namespace")[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "variableLike" - modifiers?: ("unused" | "async")[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "variable" - modifiers?: ("const" | "destructured" | "exported" | "global" | "unused" | "async")[] - types?: _TypescriptEslintNamingConventionTypeModifiers[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "function" - modifiers?: ("exported" | "global" | "unused" | "async")[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "parameter" - modifiers?: ("destructured" | "unused")[] - types?: _TypescriptEslintNamingConventionTypeModifiers[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "memberLike" - modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "readonly" | "requiresQuotes" | "static" | "override" | "async")[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "classProperty" - modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "readonly" | "requiresQuotes" | "static" | "override")[] - types?: _TypescriptEslintNamingConventionTypeModifiers[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "objectLiteralProperty" - modifiers?: ("public" | "requiresQuotes")[] - types?: _TypescriptEslintNamingConventionTypeModifiers[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "typeProperty" - modifiers?: ("public" | "readonly" | "requiresQuotes")[] - types?: _TypescriptEslintNamingConventionTypeModifiers[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "parameterProperty" - modifiers?: ("private" | "protected" | "public" | "readonly")[] - types?: _TypescriptEslintNamingConventionTypeModifiers[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "property" - modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "readonly" | "requiresQuotes" | "static" | "override" | "async")[] - types?: _TypescriptEslintNamingConventionTypeModifiers[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "classMethod" - modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "requiresQuotes" | "static" | "override" | "async")[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "objectLiteralMethod" - modifiers?: ("public" | "requiresQuotes" | "async")[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "typeMethod" - modifiers?: ("public" | "requiresQuotes")[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "method" - modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "requiresQuotes" | "static" | "override" | "async")[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "classicAccessor" - modifiers?: ("abstract" | "private" | "protected" | "public" | "requiresQuotes" | "static" | "override")[] - types?: _TypescriptEslintNamingConventionTypeModifiers[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "autoAccessor" - modifiers?: ("abstract" | "private" | "protected" | "public" | "requiresQuotes" | "static" | "override")[] - types?: _TypescriptEslintNamingConventionTypeModifiers[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "accessor" - modifiers?: ("abstract" | "private" | "protected" | "public" | "requiresQuotes" | "static" | "override")[] - types?: _TypescriptEslintNamingConventionTypeModifiers[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "enumMember" - modifiers?: ("requiresQuotes")[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "typeLike" - modifiers?: ("abstract" | "exported" | "unused")[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "class" - modifiers?: ("abstract" | "exported" | "unused")[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "interface" - modifiers?: ("exported" | "unused")[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "typeAlias" - modifiers?: ("exported" | "unused")[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "enum" - modifiers?: ("exported" | "unused")[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "typeParameter" - modifiers?: ("unused")[] -} | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig - failureMessage?: string - format: _TypescriptEslintNamingConventionFormatOptionsConfig - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions - filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig) - selector: "import" - modifiers?: ("default" | "namespace")[] -})[] +type _TypescriptEslintNamingConventionFormatOptionsConfig = _TypescriptEslintNamingConventionPredefinedFormats[] | null; +type _TypescriptEslintNamingConventionPredefinedFormats = "camelCase" | "strictCamelCase" | "PascalCase" | "StrictPascalCase" | "snake_case" | "UPPER_CASE"; +type _TypescriptEslintNamingConventionUnderscoreOptions = "forbid" | "allow" | "require" | "requireDouble" | "allowDouble" | "allowSingleOrDouble"; +type _TypescriptEslintNamingConvention_PrefixSuffixConfig = string[]; +type _TypescriptEslintNamingConventionTypeModifiers = "boolean" | "string" | "number" | "function" | "array"; +type TypescriptEslintNamingConvention = ( + | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; + failureMessage?: string; + format: _TypescriptEslintNamingConventionFormatOptionsConfig; + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; + modifiers?: ( + | "const" + | "readonly" + | "static" + | "public" + | "protected" + | "private" + | "#private" + | "abstract" + | "destructured" + | "global" + | "exported" + | "unused" + | "requiresQuotes" + | "override" + | "async" + | "default" + | "namespace" + )[]; + selector: ( + | "default" + | "variableLike" + | "memberLike" + | "typeLike" + | "method" + | "property" + | "accessor" + | "variable" + | "function" + | "parameter" + | "parameterProperty" + | "classicAccessor" + | "enumMember" + | "classMethod" + | "objectLiteralMethod" + | "typeMethod" + | "classProperty" + | "objectLiteralProperty" + | "typeProperty" + | "autoAccessor" + | "class" + | "interface" + | "typeAlias" + | "enum" + | "typeParameter" + | "import" + )[]; + types?: _TypescriptEslintNamingConventionTypeModifiers[]; + } + | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; + failureMessage?: string; + format: _TypescriptEslintNamingConventionFormatOptionsConfig; + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; + selector: "default"; + modifiers?: ( + | "const" + | "readonly" + | "static" + | "public" + | "protected" + | "private" + | "#private" + | "abstract" + | "destructured" + | "global" + | "exported" + | "unused" + | "requiresQuotes" + | "override" + | "async" + | "default" + | "namespace" + )[]; + } + | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; + failureMessage?: string; + format: _TypescriptEslintNamingConventionFormatOptionsConfig; + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; + selector: "variableLike"; + modifiers?: ("unused" | "async")[]; + } + | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; + failureMessage?: string; + format: _TypescriptEslintNamingConventionFormatOptionsConfig; + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; + selector: "variable"; + modifiers?: ("const" | "destructured" | "exported" | "global" | "unused" | "async")[]; + types?: _TypescriptEslintNamingConventionTypeModifiers[]; + } + | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; + failureMessage?: string; + format: _TypescriptEslintNamingConventionFormatOptionsConfig; + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; + selector: "function"; + modifiers?: ("exported" | "global" | "unused" | "async")[]; + } + | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; + failureMessage?: string; + format: _TypescriptEslintNamingConventionFormatOptionsConfig; + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; + selector: "parameter"; + modifiers?: ("destructured" | "unused")[]; + types?: _TypescriptEslintNamingConventionTypeModifiers[]; + } + | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; + failureMessage?: string; + format: _TypescriptEslintNamingConventionFormatOptionsConfig; + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; + selector: "memberLike"; + modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "readonly" | "requiresQuotes" | "static" | "override" | "async")[]; + } + | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; + failureMessage?: string; + format: _TypescriptEslintNamingConventionFormatOptionsConfig; + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; + selector: "classProperty"; + modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "readonly" | "requiresQuotes" | "static" | "override")[]; + types?: _TypescriptEslintNamingConventionTypeModifiers[]; + } + | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; + failureMessage?: string; + format: _TypescriptEslintNamingConventionFormatOptionsConfig; + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; + selector: "objectLiteralProperty"; + modifiers?: ("public" | "requiresQuotes")[]; + types?: _TypescriptEslintNamingConventionTypeModifiers[]; + } + | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; + failureMessage?: string; + format: _TypescriptEslintNamingConventionFormatOptionsConfig; + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; + selector: "typeProperty"; + modifiers?: ("public" | "readonly" | "requiresQuotes")[]; + types?: _TypescriptEslintNamingConventionTypeModifiers[]; + } + | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; + failureMessage?: string; + format: _TypescriptEslintNamingConventionFormatOptionsConfig; + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; + selector: "parameterProperty"; + modifiers?: ("private" | "protected" | "public" | "readonly")[]; + types?: _TypescriptEslintNamingConventionTypeModifiers[]; + } + | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; + failureMessage?: string; + format: _TypescriptEslintNamingConventionFormatOptionsConfig; + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; + selector: "property"; + modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "readonly" | "requiresQuotes" | "static" | "override" | "async")[]; + types?: _TypescriptEslintNamingConventionTypeModifiers[]; + } + | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; + failureMessage?: string; + format: _TypescriptEslintNamingConventionFormatOptionsConfig; + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; + selector: "classMethod"; + modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "requiresQuotes" | "static" | "override" | "async")[]; + } + | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; + failureMessage?: string; + format: _TypescriptEslintNamingConventionFormatOptionsConfig; + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; + selector: "objectLiteralMethod"; + modifiers?: ("public" | "requiresQuotes" | "async")[]; + } + | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; + failureMessage?: string; + format: _TypescriptEslintNamingConventionFormatOptionsConfig; + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; + selector: "typeMethod"; + modifiers?: ("public" | "requiresQuotes")[]; + } + | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; + failureMessage?: string; + format: _TypescriptEslintNamingConventionFormatOptionsConfig; + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; + selector: "method"; + modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "requiresQuotes" | "static" | "override" | "async")[]; + } + | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; + failureMessage?: string; + format: _TypescriptEslintNamingConventionFormatOptionsConfig; + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; + selector: "classicAccessor"; + modifiers?: ("abstract" | "private" | "protected" | "public" | "requiresQuotes" | "static" | "override")[]; + types?: _TypescriptEslintNamingConventionTypeModifiers[]; + } + | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; + failureMessage?: string; + format: _TypescriptEslintNamingConventionFormatOptionsConfig; + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; + selector: "autoAccessor"; + modifiers?: ("abstract" | "private" | "protected" | "public" | "requiresQuotes" | "static" | "override")[]; + types?: _TypescriptEslintNamingConventionTypeModifiers[]; + } + | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; + failureMessage?: string; + format: _TypescriptEslintNamingConventionFormatOptionsConfig; + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; + selector: "accessor"; + modifiers?: ("abstract" | "private" | "protected" | "public" | "requiresQuotes" | "static" | "override")[]; + types?: _TypescriptEslintNamingConventionTypeModifiers[]; + } + | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; + failureMessage?: string; + format: _TypescriptEslintNamingConventionFormatOptionsConfig; + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; + selector: "enumMember"; + modifiers?: "requiresQuotes"[]; + } + | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; + failureMessage?: string; + format: _TypescriptEslintNamingConventionFormatOptionsConfig; + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; + selector: "typeLike"; + modifiers?: ("abstract" | "exported" | "unused")[]; + } + | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; + failureMessage?: string; + format: _TypescriptEslintNamingConventionFormatOptionsConfig; + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; + selector: "class"; + modifiers?: ("abstract" | "exported" | "unused")[]; + } + | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; + failureMessage?: string; + format: _TypescriptEslintNamingConventionFormatOptionsConfig; + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; + selector: "interface"; + modifiers?: ("exported" | "unused")[]; + } + | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; + failureMessage?: string; + format: _TypescriptEslintNamingConventionFormatOptionsConfig; + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; + selector: "typeAlias"; + modifiers?: ("exported" | "unused")[]; + } + | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; + failureMessage?: string; + format: _TypescriptEslintNamingConventionFormatOptionsConfig; + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; + selector: "enum"; + modifiers?: ("exported" | "unused")[]; + } + | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; + failureMessage?: string; + format: _TypescriptEslintNamingConventionFormatOptionsConfig; + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; + selector: "typeParameter"; + modifiers?: "unused"[]; + } + | { + custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; + failureMessage?: string; + format: _TypescriptEslintNamingConventionFormatOptionsConfig; + leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; + trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; + filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; + selector: "import"; + modifiers?: ("default" | "namespace")[]; + } +)[]; interface _TypescriptEslintNamingConvention_MatchRegexConfig { - match: boolean - regex: string + match: boolean; + regex: string; } // ----- @typescript-eslint/no-base-to-string ----- -type TypescriptEslintNoBaseToString = []|[{ - - ignoredTypeNames?: string[] -}] +type TypescriptEslintNoBaseToString = + | [] + | [ + { + ignoredTypeNames?: string[]; + }, + ]; // ----- @typescript-eslint/no-confusing-void-expression ----- -type TypescriptEslintNoConfusingVoidExpression = []|[{ - - ignoreArrowShorthand?: boolean - - ignoreVoidOperator?: boolean - - ignoreVoidReturningFunctions?: boolean -}] +type TypescriptEslintNoConfusingVoidExpression = + | [] + | [ + { + ignoreArrowShorthand?: boolean; + + ignoreVoidOperator?: boolean; + + ignoreVoidReturningFunctions?: boolean; + }, + ]; // ----- @typescript-eslint/no-deprecated ----- -type TypescriptEslintNoDeprecated = []|[{ - - allow?: (string | { - from: "file" - name: (string | [string, ...(string)[]]) - path?: string - } | { - from: "lib" - name: (string | [string, ...(string)[]]) - } | { - from: "package" - name: (string | [string, ...(string)[]]) - package: string - })[] -}] +type TypescriptEslintNoDeprecated = + | [] + | [ + { + allow?: ( + | string + | { + from: "file"; + name: string | [string, ...string[]]; + path?: string; + } + | { + from: "lib"; + name: string | [string, ...string[]]; + } + | { + from: "package"; + name: string | [string, ...string[]]; + package: string; + } + )[]; + }, + ]; // ----- @typescript-eslint/no-duplicate-type-constituents ----- -type TypescriptEslintNoDuplicateTypeConstituents = []|[{ - - ignoreIntersections?: boolean - - ignoreUnions?: boolean -}] +type TypescriptEslintNoDuplicateTypeConstituents = + | [] + | [ + { + ignoreIntersections?: boolean; + + ignoreUnions?: boolean; + }, + ]; // ----- @typescript-eslint/no-empty-function ----- -type TypescriptEslintNoEmptyFunction = []|[{ - - allow?: ("functions" | "arrowFunctions" | "generatorFunctions" | "methods" | "generatorMethods" | "getters" | "setters" | "constructors" | "private-constructors" | "protected-constructors" | "asyncFunctions" | "asyncMethods" | "decoratedFunctions" | "overrideMethods")[] -}] +type TypescriptEslintNoEmptyFunction = + | [] + | [ + { + allow?: ( + | "functions" + | "arrowFunctions" + | "generatorFunctions" + | "methods" + | "generatorMethods" + | "getters" + | "setters" + | "constructors" + | "private-constructors" + | "protected-constructors" + | "asyncFunctions" + | "asyncMethods" + | "decoratedFunctions" + | "overrideMethods" + )[]; + }, + ]; // ----- @typescript-eslint/no-empty-interface ----- -type TypescriptEslintNoEmptyInterface = []|[{ - - allowSingleExtends?: boolean -}] +type TypescriptEslintNoEmptyInterface = + | [] + | [ + { + allowSingleExtends?: boolean; + }, + ]; // ----- @typescript-eslint/no-empty-object-type ----- -type TypescriptEslintNoEmptyObjectType = []|[{ - - allowInterfaces?: ("always" | "never" | "with-single-extends") - - allowObjectTypes?: ("always" | "never") - - allowWithName?: string -}] +type TypescriptEslintNoEmptyObjectType = + | [] + | [ + { + allowInterfaces?: "always" | "never" | "with-single-extends"; + + allowObjectTypes?: "always" | "never"; + + allowWithName?: string; + }, + ]; // ----- @typescript-eslint/no-explicit-any ----- -type TypescriptEslintNoExplicitAny = []|[{ - - fixToUnknown?: boolean - - ignoreRestArgs?: boolean -}] +type TypescriptEslintNoExplicitAny = + | [] + | [ + { + fixToUnknown?: boolean; + + ignoreRestArgs?: boolean; + }, + ]; // ----- @typescript-eslint/no-extraneous-class ----- -type TypescriptEslintNoExtraneousClass = []|[{ - - allowConstructorOnly?: boolean - - allowEmpty?: boolean - - allowStaticOnly?: boolean - - allowWithDecorator?: boolean -}] +type TypescriptEslintNoExtraneousClass = + | [] + | [ + { + allowConstructorOnly?: boolean; + + allowEmpty?: boolean; + + allowStaticOnly?: boolean; + + allowWithDecorator?: boolean; + }, + ]; // ----- @typescript-eslint/no-floating-promises ----- -type TypescriptEslintNoFloatingPromises = []|[{ - - allowForKnownSafeCalls?: (string | { - from: "file" - name: (string | [string, ...(string)[]]) - path?: string - } | { - from: "lib" - name: (string | [string, ...(string)[]]) - } | { - from: "package" - name: (string | [string, ...(string)[]]) - package: string - })[] - - allowForKnownSafePromises?: (string | { - from: "file" - name: (string | [string, ...(string)[]]) - path?: string - } | { - from: "lib" - name: (string | [string, ...(string)[]]) - } | { - from: "package" - name: (string | [string, ...(string)[]]) - package: string - })[] - - checkThenables?: boolean - - ignoreIIFE?: boolean - - ignoreVoid?: boolean -}] +type TypescriptEslintNoFloatingPromises = + | [] + | [ + { + allowForKnownSafeCalls?: ( + | string + | { + from: "file"; + name: string | [string, ...string[]]; + path?: string; + } + | { + from: "lib"; + name: string | [string, ...string[]]; + } + | { + from: "package"; + name: string | [string, ...string[]]; + package: string; + } + )[]; + + allowForKnownSafePromises?: ( + | string + | { + from: "file"; + name: string | [string, ...string[]]; + path?: string; + } + | { + from: "lib"; + name: string | [string, ...string[]]; + } + | { + from: "package"; + name: string | [string, ...string[]]; + package: string; + } + )[]; + + checkThenables?: boolean; + + ignoreIIFE?: boolean; + + ignoreVoid?: boolean; + }, + ]; // ----- @typescript-eslint/no-inferrable-types ----- -type TypescriptEslintNoInferrableTypes = []|[{ - - ignoreParameters?: boolean - - ignoreProperties?: boolean -}] +type TypescriptEslintNoInferrableTypes = + | [] + | [ + { + ignoreParameters?: boolean; + + ignoreProperties?: boolean; + }, + ]; // ----- @typescript-eslint/no-invalid-this ----- -type TypescriptEslintNoInvalidThis = []|[{ - capIsConstructor?: boolean -}] +type TypescriptEslintNoInvalidThis = + | [] + | [ + { + capIsConstructor?: boolean; + }, + ]; // ----- @typescript-eslint/no-invalid-void-type ----- -type TypescriptEslintNoInvalidVoidType = []|[{ - - allowAsThisParameter?: boolean - - allowInGenericTypeArguments?: (boolean | [string, ...(string)[]]) -}] +type TypescriptEslintNoInvalidVoidType = + | [] + | [ + { + allowAsThisParameter?: boolean; + + allowInGenericTypeArguments?: boolean | [string, ...string[]]; + }, + ]; // ----- @typescript-eslint/no-magic-numbers ----- -type TypescriptEslintNoMagicNumbers = []|[{ - detectObjects?: boolean - enforceConst?: boolean - ignore?: (number | string)[] - ignoreArrayIndexes?: boolean - ignoreDefaultValues?: boolean - ignoreClassFieldInitialValues?: boolean - - ignoreEnums?: boolean - - ignoreNumericLiteralTypes?: boolean - - ignoreReadonlyClassProperties?: boolean - - ignoreTypeIndexes?: boolean -}] +type TypescriptEslintNoMagicNumbers = + | [] + | [ + { + detectObjects?: boolean; + enforceConst?: boolean; + ignore?: (number | string)[]; + ignoreArrayIndexes?: boolean; + ignoreDefaultValues?: boolean; + ignoreClassFieldInitialValues?: boolean; + + ignoreEnums?: boolean; + + ignoreNumericLiteralTypes?: boolean; + + ignoreReadonlyClassProperties?: boolean; + + ignoreTypeIndexes?: boolean; + }, + ]; // ----- @typescript-eslint/no-meaningless-void-operator ----- -type TypescriptEslintNoMeaninglessVoidOperator = []|[{ - - checkNever?: boolean -}] +type TypescriptEslintNoMeaninglessVoidOperator = + | [] + | [ + { + checkNever?: boolean; + }, + ]; // ----- @typescript-eslint/no-misused-promises ----- -type TypescriptEslintNoMisusedPromises = []|[{ - - checksConditionals?: boolean - - checksSpreads?: boolean - - checksVoidReturn?: (boolean | { - - arguments?: boolean - - attributes?: boolean - - inheritedMethods?: boolean - - properties?: boolean - - returns?: boolean - - variables?: boolean - }) -}] +type TypescriptEslintNoMisusedPromises = + | [] + | [ + { + checksConditionals?: boolean; + + checksSpreads?: boolean; + + checksVoidReturn?: + | boolean + | { + arguments?: boolean; + + attributes?: boolean; + + inheritedMethods?: boolean; + + properties?: boolean; + + returns?: boolean; + + variables?: boolean; + }; + }, + ]; // ----- @typescript-eslint/no-misused-spread ----- -type TypescriptEslintNoMisusedSpread = []|[{ - - allow?: (string | { - from: "file" - name: (string | [string, ...(string)[]]) - path?: string - } | { - from: "lib" - name: (string | [string, ...(string)[]]) - } | { - from: "package" - name: (string | [string, ...(string)[]]) - package: string - })[] -}] +type TypescriptEslintNoMisusedSpread = + | [] + | [ + { + allow?: ( + | string + | { + from: "file"; + name: string | [string, ...string[]]; + path?: string; + } + | { + from: "lib"; + name: string | [string, ...string[]]; + } + | { + from: "package"; + name: string | [string, ...string[]]; + package: string; + } + )[]; + }, + ]; // ----- @typescript-eslint/no-namespace ----- -type TypescriptEslintNoNamespace = []|[{ - - allowDeclarations?: boolean - - allowDefinitionFiles?: boolean -}] +type TypescriptEslintNoNamespace = + | [] + | [ + { + allowDeclarations?: boolean; + + allowDefinitionFiles?: boolean; + }, + ]; // ----- @typescript-eslint/no-redeclare ----- -type TypescriptEslintNoRedeclare = []|[{ - - builtinGlobals?: boolean - - ignoreDeclarationMerge?: boolean -}] +type TypescriptEslintNoRedeclare = + | [] + | [ + { + builtinGlobals?: boolean; + + ignoreDeclarationMerge?: boolean; + }, + ]; // ----- @typescript-eslint/no-require-imports ----- -type TypescriptEslintNoRequireImports = []|[{ - - allow?: string[] - - allowAsImport?: boolean -}] +type TypescriptEslintNoRequireImports = + | [] + | [ + { + allow?: string[]; + + allowAsImport?: boolean; + }, + ]; // ----- @typescript-eslint/no-restricted-imports ----- -type TypescriptEslintNoRestrictedImports = ((string | { - name: string - message?: string - importNames?: string[] - allowImportNames?: string[] - - allowTypeImports?: boolean -})[] | []|[{ - paths?: (string | { - name: string - message?: string - importNames?: string[] - allowImportNames?: string[] - - allowTypeImports?: boolean - })[] - patterns?: (string[] | { - - importNames?: [string, ...(string)[]] - - allowImportNames?: [string, ...(string)[]] - - group?: [string, ...(string)[]] - regex?: string - importNamePattern?: string - allowImportNamePattern?: string - message?: string - caseSensitive?: boolean - - allowTypeImports?: boolean - }[]) -}]) +type TypescriptEslintNoRestrictedImports = + | ( + | string + | { + name: string; + message?: string; + importNames?: string[]; + allowImportNames?: string[]; + + allowTypeImports?: boolean; + } + )[] + | [] + | [ + { + paths?: ( + | string + | { + name: string; + message?: string; + importNames?: string[]; + allowImportNames?: string[]; + + allowTypeImports?: boolean; + } + )[]; + patterns?: + | string[] + | { + importNames?: [string, ...string[]]; + + allowImportNames?: [string, ...string[]]; + + group?: [string, ...string[]]; + regex?: string; + importNamePattern?: string; + allowImportNamePattern?: string; + message?: string; + caseSensitive?: boolean; + + allowTypeImports?: boolean; + }[]; + }, + ]; // ----- @typescript-eslint/no-restricted-types ----- -type TypescriptEslintNoRestrictedTypes = []|[{ - - types?: { - [k: string]: (true | string | { - - fixWith?: string - - message?: string - - suggest?: string[] - }) | undefined - } -}] +type TypescriptEslintNoRestrictedTypes = + | [] + | [ + { + types?: { + [k: string]: + | ( + | true + | string + | { + fixWith?: string; + + message?: string; + + suggest?: string[]; + } + ) + | undefined; + }; + }, + ]; // ----- @typescript-eslint/no-shadow ----- -type TypescriptEslintNoShadow = []|[{ - - allow?: string[] - - builtinGlobals?: boolean - - hoist?: ("all" | "functions" | "functions-and-types" | "never" | "types") - - ignoreFunctionTypeParameterNameValueShadow?: boolean - - ignoreOnInitialization?: boolean - - ignoreTypeValueShadow?: boolean -}] +type TypescriptEslintNoShadow = + | [] + | [ + { + allow?: string[]; + + builtinGlobals?: boolean; + + hoist?: "all" | "functions" | "functions-and-types" | "never" | "types"; + + ignoreFunctionTypeParameterNameValueShadow?: boolean; + + ignoreOnInitialization?: boolean; + + ignoreTypeValueShadow?: boolean; + }, + ]; // ----- @typescript-eslint/no-this-alias ----- -type TypescriptEslintNoThisAlias = []|[{ - - allowDestructuring?: boolean - - allowedNames?: string[] -}] +type TypescriptEslintNoThisAlias = + | [] + | [ + { + allowDestructuring?: boolean; + + allowedNames?: string[]; + }, + ]; // ----- @typescript-eslint/no-type-alias ----- -type TypescriptEslintNoTypeAlias = []|[{ - - allowAliases?: ("always" | "never" | "in-unions" | "in-intersections" | "in-unions-and-intersections") - - allowCallbacks?: ("always" | "never") - - allowConditionalTypes?: ("always" | "never") - - allowConstructors?: ("always" | "never") - - allowGenerics?: ("always" | "never") - - allowLiterals?: ("always" | "never" | "in-unions" | "in-intersections" | "in-unions-and-intersections") - - allowMappedTypes?: ("always" | "never" | "in-unions" | "in-intersections" | "in-unions-and-intersections") - - allowTupleTypes?: ("always" | "never" | "in-unions" | "in-intersections" | "in-unions-and-intersections") -}] +type TypescriptEslintNoTypeAlias = + | [] + | [ + { + allowAliases?: "always" | "never" | "in-unions" | "in-intersections" | "in-unions-and-intersections"; + + allowCallbacks?: "always" | "never"; + + allowConditionalTypes?: "always" | "never"; + + allowConstructors?: "always" | "never"; + + allowGenerics?: "always" | "never"; + + allowLiterals?: "always" | "never" | "in-unions" | "in-intersections" | "in-unions-and-intersections"; + + allowMappedTypes?: "always" | "never" | "in-unions" | "in-intersections" | "in-unions-and-intersections"; + + allowTupleTypes?: "always" | "never" | "in-unions" | "in-intersections" | "in-unions-and-intersections"; + }, + ]; // ----- @typescript-eslint/no-unnecessary-boolean-literal-compare ----- -type TypescriptEslintNoUnnecessaryBooleanLiteralCompare = []|[{ - - allowComparingNullableBooleansToFalse?: boolean - - allowComparingNullableBooleansToTrue?: boolean - - allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean -}] +type TypescriptEslintNoUnnecessaryBooleanLiteralCompare = + | [] + | [ + { + allowComparingNullableBooleansToFalse?: boolean; + + allowComparingNullableBooleansToTrue?: boolean; + + allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean; + }, + ]; // ----- @typescript-eslint/no-unnecessary-condition ----- -type TypescriptEslintNoUnnecessaryCondition = []|[{ - - allowConstantLoopConditions?: (boolean | ("always" | "never" | "only-allowed-literals")) - - allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean - - checkTypePredicates?: boolean -}] +type TypescriptEslintNoUnnecessaryCondition = + | [] + | [ + { + allowConstantLoopConditions?: boolean | ("always" | "never" | "only-allowed-literals"); + + allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean; + + checkTypePredicates?: boolean; + }, + ]; // ----- @typescript-eslint/no-unnecessary-type-assertion ----- -type TypescriptEslintNoUnnecessaryTypeAssertion = []|[{ - - checkLiteralConstAssertions?: boolean - - typesToIgnore?: string[] -}] +type TypescriptEslintNoUnnecessaryTypeAssertion = + | [] + | [ + { + checkLiteralConstAssertions?: boolean; + + typesToIgnore?: string[]; + }, + ]; // ----- @typescript-eslint/no-unused-expressions ----- -type TypescriptEslintNoUnusedExpressions = []|[{ - allowShortCircuit?: boolean - allowTernary?: boolean - allowTaggedTemplates?: boolean - enforceForJSX?: boolean - ignoreDirectives?: boolean -}] +type TypescriptEslintNoUnusedExpressions = + | [] + | [ + { + allowShortCircuit?: boolean; + allowTernary?: boolean; + allowTaggedTemplates?: boolean; + enforceForJSX?: boolean; + ignoreDirectives?: boolean; + }, + ]; // ----- @typescript-eslint/no-unused-vars ----- -type TypescriptEslintNoUnusedVars = []|[(("all" | "local") | { - - args?: ("all" | "after-used" | "none") - - argsIgnorePattern?: string - - caughtErrors?: ("all" | "none") - - caughtErrorsIgnorePattern?: string - - destructuredArrayIgnorePattern?: string - - ignoreClassWithStaticInitBlock?: boolean - - ignoreRestSiblings?: boolean - - reportUsedIgnorePattern?: boolean - - vars?: ("all" | "local") - - varsIgnorePattern?: string -})] +type TypescriptEslintNoUnusedVars = + | [] + | [ + | ("all" | "local") + | { + args?: "all" | "after-used" | "none"; + + argsIgnorePattern?: string; + + caughtErrors?: "all" | "none"; + + caughtErrorsIgnorePattern?: string; + + destructuredArrayIgnorePattern?: string; + + ignoreClassWithStaticInitBlock?: boolean; + + ignoreRestSiblings?: boolean; + + reportUsedIgnorePattern?: boolean; + + vars?: "all" | "local"; + + varsIgnorePattern?: string; + }, + ]; // ----- @typescript-eslint/no-use-before-define ----- -type TypescriptEslintNoUseBeforeDefine = []|[("nofunc" | { - - allowNamedExports?: boolean - - classes?: boolean - - enums?: boolean - - functions?: boolean - - ignoreTypeReferences?: boolean - - typedefs?: boolean - - variables?: boolean -})] +type TypescriptEslintNoUseBeforeDefine = + | [] + | [ + | "nofunc" + | { + allowNamedExports?: boolean; + + classes?: boolean; + + enums?: boolean; + + functions?: boolean; + + ignoreTypeReferences?: boolean; + + typedefs?: boolean; + + variables?: boolean; + }, + ]; // ----- @typescript-eslint/no-var-requires ----- -type TypescriptEslintNoVarRequires = []|[{ - - allow?: string[] -}] +type TypescriptEslintNoVarRequires = + | [] + | [ + { + allow?: string[]; + }, + ]; // ----- @typescript-eslint/only-throw-error ----- -type TypescriptEslintOnlyThrowError = []|[{ - - allow?: (string | { - from: "file" - name: (string | [string, ...(string)[]]) - path?: string - } | { - from: "lib" - name: (string | [string, ...(string)[]]) - } | { - from: "package" - name: (string | [string, ...(string)[]]) - package: string - })[] - - allowRethrowing?: boolean - - allowThrowingAny?: boolean - - allowThrowingUnknown?: boolean -}] +type TypescriptEslintOnlyThrowError = + | [] + | [ + { + allow?: ( + | string + | { + from: "file"; + name: string | [string, ...string[]]; + path?: string; + } + | { + from: "lib"; + name: string | [string, ...string[]]; + } + | { + from: "package"; + name: string | [string, ...string[]]; + package: string; + } + )[]; + + allowRethrowing?: boolean; + + allowThrowingAny?: boolean; + + allowThrowingUnknown?: boolean; + }, + ]; // ----- @typescript-eslint/parameter-properties ----- -type TypescriptEslintParameterProperties = []|[{ - - allow?: ("readonly" | "private" | "protected" | "public" | "private readonly" | "protected readonly" | "public readonly")[] - - prefer?: ("class-property" | "parameter-property") -}] +type TypescriptEslintParameterProperties = + | [] + | [ + { + allow?: ("readonly" | "private" | "protected" | "public" | "private readonly" | "protected readonly" | "public readonly")[]; + + prefer?: "class-property" | "parameter-property"; + }, + ]; // ----- @typescript-eslint/prefer-destructuring ----- -type TypescriptEslintPreferDestructuring = []|[({ - AssignmentExpression?: { - array?: boolean - object?: boolean - } - VariableDeclarator?: { - array?: boolean - object?: boolean - } -} | { - array?: boolean - object?: boolean -})]|[({ - AssignmentExpression?: { - array?: boolean - object?: boolean - } - VariableDeclarator?: { - array?: boolean - object?: boolean - } -} | { - array?: boolean - object?: boolean -}), { - - enforceForDeclarationWithTypeAnnotation?: boolean - - enforceForRenamedProperties?: boolean - [k: string]: unknown | undefined -}] +type TypescriptEslintPreferDestructuring = + | [] + | [ + | { + AssignmentExpression?: { + array?: boolean; + object?: boolean; + }; + VariableDeclarator?: { + array?: boolean; + object?: boolean; + }; + } + | { + array?: boolean; + object?: boolean; + }, + ] + | [ + ( + | { + AssignmentExpression?: { + array?: boolean; + object?: boolean; + }; + VariableDeclarator?: { + array?: boolean; + object?: boolean; + }; + } + | { + array?: boolean; + object?: boolean; + } + ), + { + enforceForDeclarationWithTypeAnnotation?: boolean; + + enforceForRenamedProperties?: boolean; + [k: string]: unknown | undefined; + }, + ]; // ----- @typescript-eslint/prefer-literal-enum-member ----- -type TypescriptEslintPreferLiteralEnumMember = []|[{ - - allowBitwiseExpressions?: boolean -}] +type TypescriptEslintPreferLiteralEnumMember = + | [] + | [ + { + allowBitwiseExpressions?: boolean; + }, + ]; // ----- @typescript-eslint/prefer-nullish-coalescing ----- -type TypescriptEslintPreferNullishCoalescing = []|[{ - - allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean - - ignoreBooleanCoercion?: boolean - - ignoreConditionalTests?: boolean - - ignoreIfStatements?: boolean - - ignoreMixedLogicalExpressions?: boolean - - ignorePrimitives?: ({ - - bigint?: boolean - - boolean?: boolean - - number?: boolean - - string?: boolean - [k: string]: unknown | undefined - } | true) - - ignoreTernaryTests?: boolean -}] +type TypescriptEslintPreferNullishCoalescing = + | [] + | [ + { + allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean; + + ignoreBooleanCoercion?: boolean; + + ignoreConditionalTests?: boolean; + + ignoreIfStatements?: boolean; + + ignoreMixedLogicalExpressions?: boolean; + + ignorePrimitives?: + | { + bigint?: boolean; + + boolean?: boolean; + + number?: boolean; + + string?: boolean; + [k: string]: unknown | undefined; + } + | true; + + ignoreTernaryTests?: boolean; + }, + ]; // ----- @typescript-eslint/prefer-optional-chain ----- -type TypescriptEslintPreferOptionalChain = []|[{ - - allowPotentiallyUnsafeFixesThatModifyTheReturnTypeIKnowWhatImDoing?: boolean - - checkAny?: boolean - - checkBigInt?: boolean - - checkBoolean?: boolean - - checkNumber?: boolean - - checkString?: boolean - - checkUnknown?: boolean - - requireNullish?: boolean -}] +type TypescriptEslintPreferOptionalChain = + | [] + | [ + { + allowPotentiallyUnsafeFixesThatModifyTheReturnTypeIKnowWhatImDoing?: boolean; + + checkAny?: boolean; + + checkBigInt?: boolean; + + checkBoolean?: boolean; + + checkNumber?: boolean; + + checkString?: boolean; + + checkUnknown?: boolean; + + requireNullish?: boolean; + }, + ]; // ----- @typescript-eslint/prefer-promise-reject-errors ----- -type TypescriptEslintPreferPromiseRejectErrors = []|[{ - - allowEmptyReject?: boolean - - allowThrowingAny?: boolean - - allowThrowingUnknown?: boolean -}] +type TypescriptEslintPreferPromiseRejectErrors = + | [] + | [ + { + allowEmptyReject?: boolean; + + allowThrowingAny?: boolean; + + allowThrowingUnknown?: boolean; + }, + ]; // ----- @typescript-eslint/prefer-readonly ----- -type TypescriptEslintPreferReadonly = []|[{ - - onlyInlineLambdas?: boolean -}] +type TypescriptEslintPreferReadonly = + | [] + | [ + { + onlyInlineLambdas?: boolean; + }, + ]; // ----- @typescript-eslint/prefer-readonly-parameter-types ----- -type TypescriptEslintPreferReadonlyParameterTypes = []|[{ - - allow?: (string | { - from: "file" - name: (string | [string, ...(string)[]]) - path?: string - } | { - from: "lib" - name: (string | [string, ...(string)[]]) - } | { - from: "package" - name: (string | [string, ...(string)[]]) - package: string - })[] - - checkParameterProperties?: boolean - - ignoreInferredTypes?: boolean - - treatMethodsAsReadonly?: boolean -}] +type TypescriptEslintPreferReadonlyParameterTypes = + | [] + | [ + { + allow?: ( + | string + | { + from: "file"; + name: string | [string, ...string[]]; + path?: string; + } + | { + from: "lib"; + name: string | [string, ...string[]]; + } + | { + from: "package"; + name: string | [string, ...string[]]; + package: string; + } + )[]; + + checkParameterProperties?: boolean; + + ignoreInferredTypes?: boolean; + + treatMethodsAsReadonly?: boolean; + }, + ]; // ----- @typescript-eslint/prefer-string-starts-ends-with ----- -type TypescriptEslintPreferStringStartsEndsWith = []|[{ - - allowSingleElementEquality?: ("always" | "never") -}] +type TypescriptEslintPreferStringStartsEndsWith = + | [] + | [ + { + allowSingleElementEquality?: "always" | "never"; + }, + ]; // ----- @typescript-eslint/promise-function-async ----- -type TypescriptEslintPromiseFunctionAsync = []|[{ - - allowAny?: boolean - - allowedPromiseNames?: string[] - - checkArrowFunctions?: boolean - - checkFunctionDeclarations?: boolean - - checkFunctionExpressions?: boolean - - checkMethodDeclarations?: boolean -}] +type TypescriptEslintPromiseFunctionAsync = + | [] + | [ + { + allowAny?: boolean; + + allowedPromiseNames?: string[]; + + checkArrowFunctions?: boolean; + + checkFunctionDeclarations?: boolean; + + checkFunctionExpressions?: boolean; + + checkMethodDeclarations?: boolean; + }, + ]; // ----- @typescript-eslint/require-array-sort-compare ----- -type TypescriptEslintRequireArraySortCompare = []|[{ - - ignoreStringArrays?: boolean -}] +type TypescriptEslintRequireArraySortCompare = + | [] + | [ + { + ignoreStringArrays?: boolean; + }, + ]; // ----- @typescript-eslint/restrict-plus-operands ----- -type TypescriptEslintRestrictPlusOperands = []|[{ - - allowAny?: boolean - - allowBoolean?: boolean - - allowNullish?: boolean - - allowNumberAndString?: boolean - - allowRegExp?: boolean - - skipCompoundAssignments?: boolean -}] +type TypescriptEslintRestrictPlusOperands = + | [] + | [ + { + allowAny?: boolean; + + allowBoolean?: boolean; + + allowNullish?: boolean; + + allowNumberAndString?: boolean; + + allowRegExp?: boolean; + + skipCompoundAssignments?: boolean; + }, + ]; // ----- @typescript-eslint/restrict-template-expressions ----- -type TypescriptEslintRestrictTemplateExpressions = []|[{ - - allowAny?: boolean - - allowArray?: boolean - - allowBoolean?: boolean - - allowNullish?: boolean - - allowNumber?: boolean - - allowRegExp?: boolean - - allowNever?: boolean - - allow?: (string | { - from: "file" - name: (string | [string, ...(string)[]]) - path?: string - } | { - from: "lib" - name: (string | [string, ...(string)[]]) - } | { - from: "package" - name: (string | [string, ...(string)[]]) - package: string - })[] -}] +type TypescriptEslintRestrictTemplateExpressions = + | [] + | [ + { + allowAny?: boolean; + + allowArray?: boolean; + + allowBoolean?: boolean; + + allowNullish?: boolean; + + allowNumber?: boolean; + + allowRegExp?: boolean; + + allowNever?: boolean; + + allow?: ( + | string + | { + from: "file"; + name: string | [string, ...string[]]; + path?: string; + } + | { + from: "lib"; + name: string | [string, ...string[]]; + } + | { + from: "package"; + name: string | [string, ...string[]]; + package: string; + } + )[]; + }, + ]; // ----- @typescript-eslint/return-await ----- -type TypescriptEslintReturnAwait = []|[(("always" | "error-handling-correctness-only" | "in-try-catch" | "never") & string)] +type TypescriptEslintReturnAwait = [] | [("always" | "error-handling-correctness-only" | "in-try-catch" | "never") & string]; // ----- @typescript-eslint/sort-type-constituents ----- -type TypescriptEslintSortTypeConstituents = []|[{ - - caseSensitive?: boolean - - checkIntersections?: boolean - - checkUnions?: boolean - - groupOrder?: ("conditional" | "function" | "import" | "intersection" | "keyword" | "nullish" | "literal" | "named" | "object" | "operator" | "tuple" | "union")[] -}] +type TypescriptEslintSortTypeConstituents = + | [] + | [ + { + caseSensitive?: boolean; + + checkIntersections?: boolean; + + checkUnions?: boolean; + + groupOrder?: ( + | "conditional" + | "function" + | "import" + | "intersection" + | "keyword" + | "nullish" + | "literal" + | "named" + | "object" + | "operator" + | "tuple" + | "union" + )[]; + }, + ]; // ----- @typescript-eslint/strict-boolean-expressions ----- -type TypescriptEslintStrictBooleanExpressions = []|[{ - - allowAny?: boolean - - allowNullableBoolean?: boolean - - allowNullableEnum?: boolean - - allowNullableNumber?: boolean - - allowNullableObject?: boolean - - allowNullableString?: boolean - - allowNumber?: boolean - - allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean - - allowString?: boolean -}] +type TypescriptEslintStrictBooleanExpressions = + | [] + | [ + { + allowAny?: boolean; + + allowNullableBoolean?: boolean; + + allowNullableEnum?: boolean; + + allowNullableNumber?: boolean; + + allowNullableObject?: boolean; + + allowNullableString?: boolean; + + allowNumber?: boolean; + + allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean; + + allowString?: boolean; + }, + ]; // ----- @typescript-eslint/switch-exhaustiveness-check ----- -type TypescriptEslintSwitchExhaustivenessCheck = []|[{ - - allowDefaultCaseForExhaustiveSwitch?: boolean - - considerDefaultExhaustiveForUnions?: boolean - - defaultCaseCommentPattern?: string - - requireDefaultForNonUnion?: boolean -}] +type TypescriptEslintSwitchExhaustivenessCheck = + | [] + | [ + { + allowDefaultCaseForExhaustiveSwitch?: boolean; + + considerDefaultExhaustiveForUnions?: boolean; + + defaultCaseCommentPattern?: string; + + requireDefaultForNonUnion?: boolean; + }, + ]; // ----- @typescript-eslint/triple-slash-reference ----- -type TypescriptEslintTripleSlashReference = []|[{ - - lib?: ("always" | "never") - - path?: ("always" | "never") - - types?: ("always" | "never" | "prefer-import") -}] +type TypescriptEslintTripleSlashReference = + | [] + | [ + { + lib?: "always" | "never"; + + path?: "always" | "never"; + + types?: "always" | "never" | "prefer-import"; + }, + ]; // ----- @typescript-eslint/typedef ----- -type TypescriptEslintTypedef = []|[{ - - arrayDestructuring?: boolean - - arrowParameter?: boolean - - memberVariableDeclaration?: boolean - - objectDestructuring?: boolean - - parameter?: boolean - - propertyDeclaration?: boolean - - variableDeclaration?: boolean - - variableDeclarationIgnoreFunction?: boolean -}] +type TypescriptEslintTypedef = + | [] + | [ + { + arrayDestructuring?: boolean; + + arrowParameter?: boolean; + + memberVariableDeclaration?: boolean; + + objectDestructuring?: boolean; + + parameter?: boolean; + + propertyDeclaration?: boolean; + + variableDeclaration?: boolean; + + variableDeclarationIgnoreFunction?: boolean; + }, + ]; // ----- @typescript-eslint/unbound-method ----- -type TypescriptEslintUnboundMethod = []|[{ - - ignoreStatic?: boolean -}] +type TypescriptEslintUnboundMethod = + | [] + | [ + { + ignoreStatic?: boolean; + }, + ]; // ----- @typescript-eslint/unified-signatures ----- -type TypescriptEslintUnifiedSignatures = []|[{ - - ignoreDifferentlyNamedParameters?: boolean - - ignoreOverloadsWithDifferentJSDoc?: boolean -}] +type TypescriptEslintUnifiedSignatures = + | [] + | [ + { + ignoreDifferentlyNamedParameters?: boolean; + + ignoreOverloadsWithDifferentJSDoc?: boolean; + }, + ]; // ----- antfu/consistent-chaining ----- -type AntfuConsistentChaining = []|[{ - - allowLeadingPropertyAccess?: boolean -}] +type AntfuConsistentChaining = + | [] + | [ + { + allowLeadingPropertyAccess?: boolean; + }, + ]; // ----- antfu/consistent-list-newline ----- -type AntfuConsistentListNewline = []|[{ - ArrayExpression?: boolean - ArrayPattern?: boolean - ArrowFunctionExpression?: boolean - CallExpression?: boolean - ExportNamedDeclaration?: boolean - FunctionDeclaration?: boolean - FunctionExpression?: boolean - ImportDeclaration?: boolean - JSONArrayExpression?: boolean - JSONObjectExpression?: boolean - JSXOpeningElement?: boolean - NewExpression?: boolean - ObjectExpression?: boolean - ObjectPattern?: boolean - TSFunctionType?: boolean - TSInterfaceDeclaration?: boolean - TSTupleType?: boolean - TSTypeLiteral?: boolean - TSTypeParameterDeclaration?: boolean - TSTypeParameterInstantiation?: boolean -}] +type AntfuConsistentListNewline = + | [] + | [ + { + ArrayExpression?: boolean; + ArrayPattern?: boolean; + ArrowFunctionExpression?: boolean; + CallExpression?: boolean; + ExportNamedDeclaration?: boolean; + FunctionDeclaration?: boolean; + FunctionExpression?: boolean; + ImportDeclaration?: boolean; + JSONArrayExpression?: boolean; + JSONObjectExpression?: boolean; + JSXOpeningElement?: boolean; + NewExpression?: boolean; + ObjectExpression?: boolean; + ObjectPattern?: boolean; + TSFunctionType?: boolean; + TSInterfaceDeclaration?: boolean; + TSTupleType?: boolean; + TSTypeLiteral?: boolean; + TSTypeParameterDeclaration?: boolean; + TSTypeParameterInstantiation?: boolean; + }, + ]; // ----- antfu/indent-unindent ----- -type AntfuIndentUnindent = []|[{ - indent?: number - tags?: string[] -}] +type AntfuIndentUnindent = + | [] + | [ + { + indent?: number; + tags?: string[]; + }, + ]; // ----- astro/jsx-a11y/alt-text ----- -type AstroJsxA11YAltText = []|[{ - elements?: string[] - img?: string[] - object?: string[] - area?: string[] - "input[type=\"image\"]"?: string[] - [k: string]: unknown | undefined -}] +type AstroJsxA11YAltText = + | [] + | [ + { + elements?: string[]; + img?: string[]; + object?: string[]; + area?: string[]; + 'input[type="image"]'?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/anchor-ambiguous-text ----- -type AstroJsxA11YAnchorAmbiguousText = []|[{ - words?: string[] - [k: string]: unknown | undefined -}] +type AstroJsxA11YAnchorAmbiguousText = + | [] + | [ + { + words?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/anchor-has-content ----- -type AstroJsxA11YAnchorHasContent = []|[{ - components?: string[] - [k: string]: unknown | undefined -}] +type AstroJsxA11YAnchorHasContent = + | [] + | [ + { + components?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/anchor-is-valid ----- -type AstroJsxA11YAnchorIsValid = []|[{ - components?: string[] - specialLink?: string[] - - aspects?: [("noHref" | "invalidHref" | "preferButton"), ...(("noHref" | "invalidHref" | "preferButton"))[]] - [k: string]: unknown | undefined -}] +type AstroJsxA11YAnchorIsValid = + | [] + | [ + { + components?: string[]; + specialLink?: string[]; + + aspects?: ["noHref" | "invalidHref" | "preferButton", ...("noHref" | "invalidHref" | "preferButton")[]]; + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/aria-activedescendant-has-tabindex ----- -type AstroJsxA11YAriaActivedescendantHasTabindex = []|[{ - [k: string]: unknown | undefined -}] +type AstroJsxA11YAriaActivedescendantHasTabindex = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/aria-props ----- -type AstroJsxA11YAriaProps = []|[{ - [k: string]: unknown | undefined -}] +type AstroJsxA11YAriaProps = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/aria-proptypes ----- -type AstroJsxA11YAriaProptypes = []|[{ - [k: string]: unknown | undefined -}] +type AstroJsxA11YAriaProptypes = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/aria-role ----- -type AstroJsxA11YAriaRole = []|[{ - allowedInvalidRoles?: string[] - ignoreNonDOM?: boolean - [k: string]: unknown | undefined -}] +type AstroJsxA11YAriaRole = + | [] + | [ + { + allowedInvalidRoles?: string[]; + ignoreNonDOM?: boolean; + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/aria-unsupported-elements ----- -type AstroJsxA11YAriaUnsupportedElements = []|[{ - [k: string]: unknown | undefined -}] +type AstroJsxA11YAriaUnsupportedElements = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/autocomplete-valid ----- -type AstroJsxA11YAutocompleteValid = []|[{ - inputComponents?: string[] - [k: string]: unknown | undefined -}] +type AstroJsxA11YAutocompleteValid = + | [] + | [ + { + inputComponents?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/click-events-have-key-events ----- -type AstroJsxA11YClickEventsHaveKeyEvents = []|[{ - [k: string]: unknown | undefined -}] +type AstroJsxA11YClickEventsHaveKeyEvents = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/control-has-associated-label ----- -type AstroJsxA11YControlHasAssociatedLabel = []|[{ - labelAttributes?: string[] - controlComponents?: string[] - ignoreElements?: string[] - ignoreRoles?: string[] - - depth?: number - [k: string]: unknown | undefined -}] +type AstroJsxA11YControlHasAssociatedLabel = + | [] + | [ + { + labelAttributes?: string[]; + controlComponents?: string[]; + ignoreElements?: string[]; + ignoreRoles?: string[]; + + depth?: number; + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/heading-has-content ----- -type AstroJsxA11YHeadingHasContent = []|[{ - components?: string[] - [k: string]: unknown | undefined -}] +type AstroJsxA11YHeadingHasContent = + | [] + | [ + { + components?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/html-has-lang ----- -type AstroJsxA11YHtmlHasLang = []|[{ - [k: string]: unknown | undefined -}] +type AstroJsxA11YHtmlHasLang = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/iframe-has-title ----- -type AstroJsxA11YIframeHasTitle = []|[{ - [k: string]: unknown | undefined -}] +type AstroJsxA11YIframeHasTitle = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/img-redundant-alt ----- -type AstroJsxA11YImgRedundantAlt = []|[{ - components?: string[] - words?: string[] - [k: string]: unknown | undefined -}] +type AstroJsxA11YImgRedundantAlt = + | [] + | [ + { + components?: string[]; + words?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/interactive-supports-focus ----- -type AstroJsxA11YInteractiveSupportsFocus = []|[{ - - tabbable?: ("button" | "checkbox" | "columnheader" | "combobox" | "grid" | "gridcell" | "link" | "listbox" | "menu" | "menubar" | "menuitem" | "menuitemcheckbox" | "menuitemradio" | "option" | "progressbar" | "radio" | "radiogroup" | "row" | "rowheader" | "scrollbar" | "searchbox" | "slider" | "spinbutton" | "switch" | "tab" | "tablist" | "textbox" | "tree" | "treegrid" | "treeitem" | "doc-backlink" | "doc-biblioref" | "doc-glossref" | "doc-noteref")[] - [k: string]: unknown | undefined -}] +type AstroJsxA11YInteractiveSupportsFocus = + | [] + | [ + { + tabbable?: ( + | "button" + | "checkbox" + | "columnheader" + | "combobox" + | "grid" + | "gridcell" + | "link" + | "listbox" + | "menu" + | "menubar" + | "menuitem" + | "menuitemcheckbox" + | "menuitemradio" + | "option" + | "progressbar" + | "radio" + | "radiogroup" + | "row" + | "rowheader" + | "scrollbar" + | "searchbox" + | "slider" + | "spinbutton" + | "switch" + | "tab" + | "tablist" + | "textbox" + | "tree" + | "treegrid" + | "treeitem" + | "doc-backlink" + | "doc-biblioref" + | "doc-glossref" + | "doc-noteref" + )[]; + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/label-has-associated-control ----- -type AstroJsxA11YLabelHasAssociatedControl = []|[{ - labelComponents?: string[] - labelAttributes?: string[] - controlComponents?: string[] - - assert?: ("htmlFor" | "nesting" | "both" | "either") - - depth?: number - [k: string]: unknown | undefined -}] +type AstroJsxA11YLabelHasAssociatedControl = + | [] + | [ + { + labelComponents?: string[]; + labelAttributes?: string[]; + controlComponents?: string[]; + + assert?: "htmlFor" | "nesting" | "both" | "either"; + + depth?: number; + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/lang ----- -type AstroJsxA11YLang = []|[{ - [k: string]: unknown | undefined -}] +type AstroJsxA11YLang = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/media-has-caption ----- -type AstroJsxA11YMediaHasCaption = []|[{ - audio?: string[] - video?: string[] - track?: string[] - [k: string]: unknown | undefined -}] +type AstroJsxA11YMediaHasCaption = + | [] + | [ + { + audio?: string[]; + video?: string[]; + track?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/mouse-events-have-key-events ----- -type AstroJsxA11YMouseEventsHaveKeyEvents = []|[{ - - hoverInHandlers?: string[] - - hoverOutHandlers?: string[] - [k: string]: unknown | undefined -}] +type AstroJsxA11YMouseEventsHaveKeyEvents = + | [] + | [ + { + hoverInHandlers?: string[]; + + hoverOutHandlers?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/no-access-key ----- -type AstroJsxA11YNoAccessKey = []|[{ - [k: string]: unknown | undefined -}] +type AstroJsxA11YNoAccessKey = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/no-aria-hidden-on-focusable ----- -type AstroJsxA11YNoAriaHiddenOnFocusable = []|[{ - [k: string]: unknown | undefined -}] +type AstroJsxA11YNoAriaHiddenOnFocusable = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/no-autofocus ----- -type AstroJsxA11YNoAutofocus = []|[{ - ignoreNonDOM?: boolean - [k: string]: unknown | undefined -}] +type AstroJsxA11YNoAutofocus = + | [] + | [ + { + ignoreNonDOM?: boolean; + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/no-distracting-elements ----- -type AstroJsxA11YNoDistractingElements = []|[{ - - elements?: ("marquee" | "blink")[] - [k: string]: unknown | undefined -}] +type AstroJsxA11YNoDistractingElements = + | [] + | [ + { + elements?: ("marquee" | "blink")[]; + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/no-interactive-element-to-noninteractive-role ----- -type AstroJsxA11YNoInteractiveElementToNoninteractiveRole = []|[{ - [k: string]: string[] | undefined -}] +type AstroJsxA11YNoInteractiveElementToNoninteractiveRole = + | [] + | [ + { + [k: string]: string[] | undefined; + }, + ]; // ----- astro/jsx-a11y/no-noninteractive-element-interactions ----- -type AstroJsxA11YNoNoninteractiveElementInteractions = []|[{ - handlers?: string[] - [k: string]: unknown | undefined -}] +type AstroJsxA11YNoNoninteractiveElementInteractions = + | [] + | [ + { + handlers?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/no-noninteractive-element-to-interactive-role ----- -type AstroJsxA11YNoNoninteractiveElementToInteractiveRole = []|[{ - [k: string]: string[] | undefined -}] +type AstroJsxA11YNoNoninteractiveElementToInteractiveRole = + | [] + | [ + { + [k: string]: string[] | undefined; + }, + ]; // ----- astro/jsx-a11y/no-noninteractive-tabindex ----- -type AstroJsxA11YNoNoninteractiveTabindex = []|[{ - - roles?: string[] - - tags?: string[] - [k: string]: unknown | undefined -}] +type AstroJsxA11YNoNoninteractiveTabindex = + | [] + | [ + { + roles?: string[]; + + tags?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/no-redundant-roles ----- -type AstroJsxA11YNoRedundantRoles = []|[{ - [k: string]: string[] | undefined -}] +type AstroJsxA11YNoRedundantRoles = + | [] + | [ + { + [k: string]: string[] | undefined; + }, + ]; // ----- astro/jsx-a11y/no-static-element-interactions ----- -type AstroJsxA11YNoStaticElementInteractions = []|[{ - handlers?: string[] - [k: string]: unknown | undefined -}] +type AstroJsxA11YNoStaticElementInteractions = + | [] + | [ + { + handlers?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/prefer-tag-over-role ----- -type AstroJsxA11YPreferTagOverRole = []|[{ - [k: string]: unknown | undefined -}] +type AstroJsxA11YPreferTagOverRole = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/role-has-required-aria-props ----- -type AstroJsxA11YRoleHasRequiredAriaProps = []|[{ - [k: string]: unknown | undefined -}] +type AstroJsxA11YRoleHasRequiredAriaProps = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/role-supports-aria-props ----- -type AstroJsxA11YRoleSupportsAriaProps = []|[{ - [k: string]: unknown | undefined -}] +type AstroJsxA11YRoleSupportsAriaProps = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/scope ----- -type AstroJsxA11YScope = []|[{ - [k: string]: unknown | undefined -}] +type AstroJsxA11YScope = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- astro/jsx-a11y/tabindex-no-positive ----- -type AstroJsxA11YTabindexNoPositive = []|[{ - [k: string]: unknown | undefined -}] +type AstroJsxA11YTabindexNoPositive = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- astro/prefer-split-class-list ----- -type AstroPreferSplitClassList = []|[{ - splitLiteral?: boolean -}] +type AstroPreferSplitClassList = + | [] + | [ + { + splitLiteral?: boolean; + }, + ]; // ----- astro/semi ----- -type AstroSemi = ([]|["never"]|["never", { - beforeStatementContinuationChars?: ("always" | "any" | "never") -}] | []|["always"]|["always", { - omitLastInOneLineBlock?: boolean - omitLastInOneLineClassBody?: boolean -}]) +type AstroSemi = + | [] + | ["never"] + | [ + "never", + { + beforeStatementContinuationChars?: "always" | "any" | "never"; + }, + ] + | [] + | ["always"] + | [ + "always", + { + omitLastInOneLineBlock?: boolean; + omitLastInOneLineClassBody?: boolean; + }, + ]; // ----- astro/sort-attributes ----- -type AstroSortAttributes = []|[{ - type?: ("alphabetical" | "line-length") - ignoreCase?: boolean - order?: ("asc" | "desc") -}] +type AstroSortAttributes = + | [] + | [ + { + type?: "alphabetical" | "line-length"; + ignoreCase?: boolean; + order?: "asc" | "desc"; + }, + ]; // ----- compat/compat ----- -type CompatCompat = []|[string] +type CompatCompat = [] | [string]; // ----- eslint-comments/disable-enable-pair ----- -type EslintCommentsDisableEnablePair = []|[{ - allowWholeFile?: boolean -}] +type EslintCommentsDisableEnablePair = + | [] + | [ + { + allowWholeFile?: boolean; + }, + ]; // ----- eslint-comments/no-restricted-disable ----- -type EslintCommentsNoRestrictedDisable = string[] +type EslintCommentsNoRestrictedDisable = string[]; // ----- eslint-comments/no-use ----- -type EslintCommentsNoUse = []|[{ - allow?: ("eslint" | "eslint-disable" | "eslint-disable-line" | "eslint-disable-next-line" | "eslint-enable" | "eslint-env" | "exported" | "global" | "globals")[] -}] +type EslintCommentsNoUse = + | [] + | [ + { + allow?: ( + | "eslint" + | "eslint-disable" + | "eslint-disable-line" + | "eslint-disable-next-line" + | "eslint-enable" + | "eslint-env" + | "exported" + | "global" + | "globals" + )[]; + }, + ]; // ----- eslint-comments/require-description ----- -type EslintCommentsRequireDescription = []|[{ - ignore?: ("eslint" | "eslint-disable" | "eslint-disable-line" | "eslint-disable-next-line" | "eslint-enable" | "eslint-env" | "exported" | "global" | "globals")[] -}] +type EslintCommentsRequireDescription = + | [] + | [ + { + ignore?: ( + | "eslint" + | "eslint-disable" + | "eslint-disable-line" + | "eslint-disable-next-line" + | "eslint-enable" + | "eslint-env" + | "exported" + | "global" + | "globals" + )[]; + }, + ]; // ----- format/dprint ----- -type FormatDprint = []|[{ - language?: string - languageOptions?: { - [k: string]: unknown | undefined - } - [k: string]: unknown | undefined -}] +type FormatDprint = + | [] + | [ + { + language?: string; + languageOptions?: { + [k: string]: unknown | undefined; + }; + [k: string]: unknown | undefined; + }, + ]; // ----- format/prettier ----- -type FormatPrettier = []|[{ - parser?: string - [k: string]: unknown | undefined -}] +type FormatPrettier = + | [] + | [ + { + parser?: string; + [k: string]: unknown | undefined; + }, + ]; // ----- import/consistent-type-specifier-style ----- -type ImportConsistentTypeSpecifierStyle = []|[("prefer-top-level" | "prefer-inline")] +type ImportConsistentTypeSpecifierStyle = [] | ["prefer-top-level" | "prefer-inline"]; // ----- import/dynamic-import-chunkname ----- -type ImportDynamicImportChunkname = []|[{ - importFunctions?: string[] - allowEmpty?: boolean - webpackChunknameFormat?: string - [k: string]: unknown | undefined -}] +type ImportDynamicImportChunkname = + | [] + | [ + { + importFunctions?: string[]; + allowEmpty?: boolean; + webpackChunknameFormat?: string; + [k: string]: unknown | undefined; + }, + ]; // ----- import/extensions ----- -type ImportExtensions = ([]|[("always" | "ignorePackages" | "never")] | []|[("always" | "ignorePackages" | "never")]|[("always" | "ignorePackages" | "never"), { - pattern?: { - [k: string]: ("always" | "ignorePackages" | "never") - } - ignorePackages?: boolean - checkTypeImports?: boolean - pathGroupOverrides?: { - pattern: string - patternOptions?: { - [k: string]: unknown | undefined - } - action: ("enforce" | "ignore") - }[] - fix?: boolean - [k: string]: unknown | undefined -}] | []|[{ - pattern?: { - [k: string]: ("always" | "ignorePackages" | "never") - } - ignorePackages?: boolean - checkTypeImports?: boolean - pathGroupOverrides?: { - pattern: string - patternOptions?: { - [k: string]: unknown | undefined - } - action: ("enforce" | "ignore") - }[] - fix?: boolean - [k: string]: unknown | undefined -}] | []|[("always" | "ignorePackages" | "never")]|[("always" | "ignorePackages" | "never"), { - [k: string]: ("always" | "ignorePackages" | "never") -}] | []|[{ - [k: string]: ("always" | "ignorePackages" | "never") -}]) +type ImportExtensions = + | [] + | ["always" | "ignorePackages" | "never"] + | [] + | ["always" | "ignorePackages" | "never"] + | [ + "always" | "ignorePackages" | "never", + { + pattern?: { + [k: string]: "always" | "ignorePackages" | "never"; + }; + ignorePackages?: boolean; + checkTypeImports?: boolean; + pathGroupOverrides?: { + pattern: string; + patternOptions?: { + [k: string]: unknown | undefined; + }; + action: "enforce" | "ignore"; + }[]; + fix?: boolean; + [k: string]: unknown | undefined; + }, + ] + | [] + | [ + { + pattern?: { + [k: string]: "always" | "ignorePackages" | "never"; + }; + ignorePackages?: boolean; + checkTypeImports?: boolean; + pathGroupOverrides?: { + pattern: string; + patternOptions?: { + [k: string]: unknown | undefined; + }; + action: "enforce" | "ignore"; + }[]; + fix?: boolean; + [k: string]: unknown | undefined; + }, + ] + | [] + | ["always" | "ignorePackages" | "never"] + | [ + "always" | "ignorePackages" | "never", + { + [k: string]: "always" | "ignorePackages" | "never"; + }, + ] + | [] + | [ + { + [k: string]: "always" | "ignorePackages" | "never"; + }, + ]; // ----- import/first ----- -type ImportFirst = []|[("absolute-first" | "disable-absolute-first")] +type ImportFirst = [] | ["absolute-first" | "disable-absolute-first"]; // ----- import/imports-first ----- -type ImportImportsFirst = []|[("absolute-first" | "disable-absolute-first")] +type ImportImportsFirst = [] | ["absolute-first" | "disable-absolute-first"]; // ----- import/max-dependencies ----- -type ImportMaxDependencies = []|[{ - max?: number - ignoreTypeImports?: boolean -}] +type ImportMaxDependencies = + | [] + | [ + { + max?: number; + ignoreTypeImports?: boolean; + }, + ]; // ----- import/named ----- -type ImportNamed = []|[{ - commonjs?: boolean -}] +type ImportNamed = + | [] + | [ + { + commonjs?: boolean; + }, + ]; // ----- import/namespace ----- -type ImportNamespace = []|[{ - - allowComputed?: boolean -}] +type ImportNamespace = + | [] + | [ + { + allowComputed?: boolean; + }, + ]; // ----- import/newline-after-import ----- -type ImportNewlineAfterImport = []|[{ - count?: number - exactCount?: boolean - considerComments?: boolean -}] +type ImportNewlineAfterImport = + | [] + | [ + { + count?: number; + exactCount?: boolean; + considerComments?: boolean; + }, + ]; // ----- import/no-absolute-path ----- -type ImportNoAbsolutePath = []|[{ - commonjs?: boolean - amd?: boolean - esmodule?: boolean - - ignore?: [string, ...(string)[]] -}] +type ImportNoAbsolutePath = + | [] + | [ + { + commonjs?: boolean; + amd?: boolean; + esmodule?: boolean; + + ignore?: [string, ...string[]]; + }, + ]; // ----- import/no-anonymous-default-export ----- -type ImportNoAnonymousDefaultExport = []|[{ - - allowArray?: boolean - - allowArrowFunction?: boolean - - allowCallExpression?: boolean - - allowAnonymousClass?: boolean - - allowAnonymousFunction?: boolean - - allowLiteral?: boolean - - allowObject?: boolean - - allowNew?: boolean -}] +type ImportNoAnonymousDefaultExport = + | [] + | [ + { + allowArray?: boolean; + + allowArrowFunction?: boolean; + + allowCallExpression?: boolean; + + allowAnonymousClass?: boolean; + + allowAnonymousFunction?: boolean; + + allowLiteral?: boolean; + + allowObject?: boolean; + + allowNew?: boolean; + }, + ]; // ----- import/no-commonjs ----- -type ImportNoCommonjs = ([]|["allow-primitive-modules"] | []|[{ - allowPrimitiveModules?: boolean - allowRequire?: boolean - allowConditionalRequire?: boolean -}]) +type ImportNoCommonjs = + | [] + | ["allow-primitive-modules"] + | [] + | [ + { + allowPrimitiveModules?: boolean; + allowRequire?: boolean; + allowConditionalRequire?: boolean; + }, + ]; // ----- import/no-cycle ----- -type ImportNoCycle = []|[{ - commonjs?: boolean - amd?: boolean - esmodule?: boolean - - ignore?: [string, ...(string)[]] - maxDepth?: (number | "∞") - - ignoreExternal?: boolean - - allowUnsafeDynamicCyclicDependency?: boolean -}] +type ImportNoCycle = + | [] + | [ + { + commonjs?: boolean; + amd?: boolean; + esmodule?: boolean; + + ignore?: [string, ...string[]]; + maxDepth?: number | "∞"; + + ignoreExternal?: boolean; + + allowUnsafeDynamicCyclicDependency?: boolean; + }, + ]; // ----- import/no-duplicates ----- -type ImportNoDuplicates = []|[{ - considerQueryString?: boolean - "prefer-inline"?: boolean -}] +type ImportNoDuplicates = + | [] + | [ + { + considerQueryString?: boolean; + "prefer-inline"?: boolean; + }, + ]; // ----- import/no-dynamic-require ----- -type ImportNoDynamicRequire = []|[{ - esmodule?: boolean -}] +type ImportNoDynamicRequire = + | [] + | [ + { + esmodule?: boolean; + }, + ]; // ----- import/no-extraneous-dependencies ----- -type ImportNoExtraneousDependencies = []|[{ - devDependencies?: (boolean | unknown[]) - optionalDependencies?: (boolean | unknown[]) - peerDependencies?: (boolean | unknown[]) - bundledDependencies?: (boolean | unknown[]) - packageDir?: (string | unknown[]) - includeInternal?: boolean - includeTypes?: boolean - whitelist?: unknown[] -}] +type ImportNoExtraneousDependencies = + | [] + | [ + { + devDependencies?: boolean | unknown[]; + optionalDependencies?: boolean | unknown[]; + peerDependencies?: boolean | unknown[]; + bundledDependencies?: boolean | unknown[]; + packageDir?: string | unknown[]; + includeInternal?: boolean; + includeTypes?: boolean; + whitelist?: unknown[]; + }, + ]; // ----- import/no-import-module-exports ----- -type ImportNoImportModuleExports = []|[{ - exceptions?: unknown[] -}] +type ImportNoImportModuleExports = + | [] + | [ + { + exceptions?: unknown[]; + }, + ]; // ----- import/no-internal-modules ----- -type ImportNoInternalModules = []|[({ - allow?: string[] -} | { - forbid?: string[] -})] +type ImportNoInternalModules = + | [] + | [ + | { + allow?: string[]; + } + | { + forbid?: string[]; + }, + ]; // ----- import/no-namespace ----- -type ImportNoNamespace = []|[{ - ignore?: string[] - [k: string]: unknown | undefined -}] +type ImportNoNamespace = + | [] + | [ + { + ignore?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- import/no-nodejs-modules ----- -type ImportNoNodejsModules = []|[{ - allow?: string[] -}] +type ImportNoNodejsModules = + | [] + | [ + { + allow?: string[]; + }, + ]; // ----- import/no-relative-packages ----- -type ImportNoRelativePackages = []|[{ - commonjs?: boolean - amd?: boolean - esmodule?: boolean - - ignore?: [string, ...(string)[]] -}] +type ImportNoRelativePackages = + | [] + | [ + { + commonjs?: boolean; + amd?: boolean; + esmodule?: boolean; + + ignore?: [string, ...string[]]; + }, + ]; // ----- import/no-relative-parent-imports ----- -type ImportNoRelativeParentImports = []|[{ - commonjs?: boolean - amd?: boolean - esmodule?: boolean - - ignore?: [string, ...(string)[]] -}] +type ImportNoRelativeParentImports = + | [] + | [ + { + commonjs?: boolean; + amd?: boolean; + esmodule?: boolean; + + ignore?: [string, ...string[]]; + }, + ]; // ----- import/no-rename-default ----- -type ImportNoRenameDefault = []|[{ - commonjs?: boolean - preventRenamingBindings?: boolean -}] +type ImportNoRenameDefault = + | [] + | [ + { + commonjs?: boolean; + preventRenamingBindings?: boolean; + }, + ]; // ----- import/no-restricted-paths ----- -type ImportNoRestrictedPaths = []|[{ - - zones?: [{ - target?: (string | [string, ...(string)[]]) - from?: (string | [string, ...(string)[]]) - except?: string[] - message?: string - }, ...({ - target?: (string | [string, ...(string)[]]) - from?: (string | [string, ...(string)[]]) - except?: string[] - message?: string - })[]] - basePath?: string -}] +type ImportNoRestrictedPaths = + | [] + | [ + { + zones?: [ + { + target?: string | [string, ...string[]]; + from?: string | [string, ...string[]]; + except?: string[]; + message?: string; + }, + ...{ + target?: string | [string, ...string[]]; + from?: string | [string, ...string[]]; + except?: string[]; + message?: string; + }[], + ]; + basePath?: string; + }, + ]; // ----- import/no-unassigned-import ----- -type ImportNoUnassignedImport = []|[{ - devDependencies?: (boolean | unknown[]) - optionalDependencies?: (boolean | unknown[]) - peerDependencies?: (boolean | unknown[]) - allow?: string[] -}] +type ImportNoUnassignedImport = + | [] + | [ + { + devDependencies?: boolean | unknown[]; + optionalDependencies?: boolean | unknown[]; + peerDependencies?: boolean | unknown[]; + allow?: string[]; + }, + ]; // ----- import/no-unresolved ----- -type ImportNoUnresolved = []|[{ - commonjs?: boolean - amd?: boolean - esmodule?: boolean - - ignore?: [string, ...(string)[]] - caseSensitive?: boolean - caseSensitiveStrict?: boolean -}] +type ImportNoUnresolved = + | [] + | [ + { + commonjs?: boolean; + amd?: boolean; + esmodule?: boolean; + + ignore?: [string, ...string[]]; + caseSensitive?: boolean; + caseSensitiveStrict?: boolean; + }, + ]; // ----- import/no-unused-modules ----- -type ImportNoUnusedModules = []|[({ - unusedExports: true - - src?: [unknown, ...(unknown)[]] - [k: string]: unknown | undefined -} | { - missingExports: true - [k: string]: unknown | undefined -})] +type ImportNoUnusedModules = + | [] + | [ + | { + unusedExports: true; + + src?: [unknown, ...unknown[]]; + [k: string]: unknown | undefined; + } + | { + missingExports: true; + [k: string]: unknown | undefined; + }, + ]; // ----- import/no-useless-path-segments ----- -type ImportNoUselessPathSegments = []|[{ - commonjs?: boolean - noUselessIndex?: boolean -}] +type ImportNoUselessPathSegments = + | [] + | [ + { + commonjs?: boolean; + noUselessIndex?: boolean; + }, + ]; // ----- import/order ----- -type ImportOrder = []|[{ - groups?: unknown[] - pathGroupsExcludedImportTypes?: unknown[] - distinctGroup?: boolean - pathGroups?: { - pattern: string - patternOptions?: { - [k: string]: unknown | undefined - } - group: ("builtin" | "external" | "internal" | "unknown" | "parent" | "sibling" | "index" | "object" | "type") - position?: ("after" | "before") - }[] - "newlines-between"?: ("ignore" | "always" | "always-and-inside-groups" | "never") - "newlines-between-types"?: ("ignore" | "always" | "always-and-inside-groups" | "never") - consolidateIslands?: ("inside-groups" | "never") - sortTypesGroup?: boolean - named?: (boolean | { - enabled?: boolean - import?: boolean - export?: boolean - require?: boolean - cjsExports?: boolean - types?: ("mixed" | "types-first" | "types-last") - }) - alphabetize?: { - caseInsensitive?: boolean - order?: ("ignore" | "asc" | "desc") - orderImportKind?: ("ignore" | "asc" | "desc") - } - warnOnUnassignedImports?: boolean -}] +type ImportOrder = + | [] + | [ + { + groups?: unknown[]; + pathGroupsExcludedImportTypes?: unknown[]; + distinctGroup?: boolean; + pathGroups?: { + pattern: string; + patternOptions?: { + [k: string]: unknown | undefined; + }; + group: "builtin" | "external" | "internal" | "unknown" | "parent" | "sibling" | "index" | "object" | "type"; + position?: "after" | "before"; + }[]; + "newlines-between"?: "ignore" | "always" | "always-and-inside-groups" | "never"; + "newlines-between-types"?: "ignore" | "always" | "always-and-inside-groups" | "never"; + consolidateIslands?: "inside-groups" | "never"; + sortTypesGroup?: boolean; + named?: + | boolean + | { + enabled?: boolean; + import?: boolean; + export?: boolean; + require?: boolean; + cjsExports?: boolean; + types?: "mixed" | "types-first" | "types-last"; + }; + alphabetize?: { + caseInsensitive?: boolean; + order?: "ignore" | "asc" | "desc"; + orderImportKind?: "ignore" | "asc" | "desc"; + }; + warnOnUnassignedImports?: boolean; + }, + ]; // ----- import/prefer-default-export ----- -type ImportPreferDefaultExport = []|[{ - target?: ("single" | "any") -}] +type ImportPreferDefaultExport = + | [] + | [ + { + target?: "single" | "any"; + }, + ]; // ----- jsdoc/check-examples ----- -type JsdocCheckExamples = []|[{ - allowInlineConfig?: boolean - baseConfig?: { - [k: string]: unknown | undefined - } - captionRequired?: boolean - checkDefaults?: boolean - checkEslintrc?: boolean - checkParams?: boolean - checkProperties?: boolean - configFile?: string - exampleCodeRegex?: string - matchingFileName?: string - matchingFileNameDefaults?: string - matchingFileNameParams?: string - matchingFileNameProperties?: string - noDefaultExampleRules?: boolean - paddedIndent?: number - rejectExampleCodeRegex?: string - reportUnusedDisableDirectives?: boolean -}] +type JsdocCheckExamples = + | [] + | [ + { + allowInlineConfig?: boolean; + baseConfig?: { + [k: string]: unknown | undefined; + }; + captionRequired?: boolean; + checkDefaults?: boolean; + checkEslintrc?: boolean; + checkParams?: boolean; + checkProperties?: boolean; + configFile?: string; + exampleCodeRegex?: string; + matchingFileName?: string; + matchingFileNameDefaults?: string; + matchingFileNameParams?: string; + matchingFileNameProperties?: string; + noDefaultExampleRules?: boolean; + paddedIndent?: number; + rejectExampleCodeRegex?: string; + reportUnusedDisableDirectives?: boolean; + }, + ]; // ----- jsdoc/check-indentation ----- -type JsdocCheckIndentation = []|[{ - excludeTags?: string[] -}] +type JsdocCheckIndentation = + | [] + | [ + { + excludeTags?: string[]; + }, + ]; // ----- jsdoc/check-line-alignment ----- -type JsdocCheckLineAlignment = []|[("always" | "never" | "any")]|[("always" | "never" | "any"), { - customSpacings?: { - postDelimiter?: number - postHyphen?: number - postName?: number - postTag?: number - postType?: number - } - preserveMainDescriptionPostDelimiter?: boolean - tags?: string[] - wrapIndent?: string - disableWrapIndent?: boolean -}] +type JsdocCheckLineAlignment = + | [] + | ["always" | "never" | "any"] + | [ + "always" | "never" | "any", + { + customSpacings?: { + postDelimiter?: number; + postHyphen?: number; + postName?: number; + postTag?: number; + postType?: number; + }; + preserveMainDescriptionPostDelimiter?: boolean; + tags?: string[]; + wrapIndent?: string; + disableWrapIndent?: boolean; + }, + ]; // ----- jsdoc/check-param-names ----- -type JsdocCheckParamNames = []|[{ - allowExtraTrailingParamDocs?: boolean - checkDestructured?: boolean - checkRestProperty?: boolean - checkTypesPattern?: string - disableExtraPropertyReporting?: boolean - disableMissingParamChecks?: boolean - enableFixer?: boolean - useDefaultObjectProperties?: boolean -}] +type JsdocCheckParamNames = + | [] + | [ + { + allowExtraTrailingParamDocs?: boolean; + checkDestructured?: boolean; + checkRestProperty?: boolean; + checkTypesPattern?: string; + disableExtraPropertyReporting?: boolean; + disableMissingParamChecks?: boolean; + enableFixer?: boolean; + useDefaultObjectProperties?: boolean; + }, + ]; // ----- jsdoc/check-property-names ----- -type JsdocCheckPropertyNames = []|[{ - enableFixer?: boolean -}] +type JsdocCheckPropertyNames = + | [] + | [ + { + enableFixer?: boolean; + }, + ]; // ----- jsdoc/check-tag-names ----- -type JsdocCheckTagNames = []|[{ - definedTags?: string[] - enableFixer?: boolean - jsxTags?: boolean - typed?: boolean -}] +type JsdocCheckTagNames = + | [] + | [ + { + definedTags?: string[]; + enableFixer?: boolean; + jsxTags?: boolean; + typed?: boolean; + }, + ]; // ----- jsdoc/check-types ----- -type JsdocCheckTypes = []|[{ - exemptTagContexts?: { - tag?: string - types?: (boolean | string[]) - }[] - noDefaults?: boolean - unifyParentAndChildTypeChecks?: boolean -}] +type JsdocCheckTypes = + | [] + | [ + { + exemptTagContexts?: { + tag?: string; + types?: boolean | string[]; + }[]; + noDefaults?: boolean; + unifyParentAndChildTypeChecks?: boolean; + }, + ]; // ----- jsdoc/check-values ----- -type JsdocCheckValues = []|[{ - allowedAuthors?: string[] - allowedLicenses?: (string[] | boolean) - licensePattern?: string - numericOnlyVariation?: boolean -}] +type JsdocCheckValues = + | [] + | [ + { + allowedAuthors?: string[]; + allowedLicenses?: string[] | boolean; + licensePattern?: string; + numericOnlyVariation?: boolean; + }, + ]; // ----- jsdoc/convert-to-jsdoc-comments ----- -type JsdocConvertToJsdocComments = []|[{ - allowedPrefixes?: string[] - contexts?: (string | { - context?: string - inlineCommentBlock?: boolean - })[] - contextsAfter?: (string | { - context?: string - inlineCommentBlock?: boolean - })[] - contextsBeforeAndAfter?: (string | { - context?: string - inlineCommentBlock?: boolean - })[] - enableFixer?: boolean - enforceJsdocLineStyle?: ("multi" | "single") - lineOrBlockStyle?: ("block" | "line" | "both") -}] +type JsdocConvertToJsdocComments = + | [] + | [ + { + allowedPrefixes?: string[]; + contexts?: ( + | string + | { + context?: string; + inlineCommentBlock?: boolean; + } + )[]; + contextsAfter?: ( + | string + | { + context?: string; + inlineCommentBlock?: boolean; + } + )[]; + contextsBeforeAndAfter?: ( + | string + | { + context?: string; + inlineCommentBlock?: boolean; + } + )[]; + enableFixer?: boolean; + enforceJsdocLineStyle?: "multi" | "single"; + lineOrBlockStyle?: "block" | "line" | "both"; + }, + ]; // ----- jsdoc/empty-tags ----- -type JsdocEmptyTags = []|[{ - tags?: string[] -}] +type JsdocEmptyTags = + | [] + | [ + { + tags?: string[]; + }, + ]; // ----- jsdoc/implements-on-classes ----- -type JsdocImplementsOnClasses = []|[{ - contexts?: (string | { - comment?: string - context?: string - })[] -}] +type JsdocImplementsOnClasses = + | [] + | [ + { + contexts?: ( + | string + | { + comment?: string; + context?: string; + } + )[]; + }, + ]; // ----- jsdoc/informative-docs ----- -type JsdocInformativeDocs = []|[{ - aliases?: { - [k: string]: string[] - } - excludedTags?: string[] - uselessWords?: string[] -}] +type JsdocInformativeDocs = + | [] + | [ + { + aliases?: { + [k: string]: string[]; + }; + excludedTags?: string[]; + uselessWords?: string[]; + }, + ]; // ----- jsdoc/lines-before-block ----- -type JsdocLinesBeforeBlock = []|[{ - checkBlockStarts?: boolean - excludedTags?: string[] - ignoreSameLine?: boolean - lines?: number -}] +type JsdocLinesBeforeBlock = + | [] + | [ + { + checkBlockStarts?: boolean; + excludedTags?: string[]; + ignoreSameLine?: boolean; + lines?: number; + }, + ]; // ----- jsdoc/match-description ----- -type JsdocMatchDescription = []|[{ - contexts?: (string | { - comment?: string - context?: string - })[] - mainDescription?: (string | boolean | { - match?: (string | boolean) - message?: string - }) - matchDescription?: string - message?: string - nonemptyTags?: boolean - tags?: { - [k: string]: (string | true | { - match?: (string | true) - message?: string - }) - } -}] +type JsdocMatchDescription = + | [] + | [ + { + contexts?: ( + | string + | { + comment?: string; + context?: string; + } + )[]; + mainDescription?: + | string + | boolean + | { + match?: string | boolean; + message?: string; + }; + matchDescription?: string; + message?: string; + nonemptyTags?: boolean; + tags?: { + [k: string]: + | string + | true + | { + match?: string | true; + message?: string; + }; + }; + }, + ]; // ----- jsdoc/match-name ----- -type JsdocMatchName = []|[{ - match: { - allowName?: string - comment?: string - context?: string - disallowName?: string - message?: string - tags?: string[] - [k: string]: unknown | undefined - }[] -}] +type JsdocMatchName = + | [] + | [ + { + match: { + allowName?: string; + comment?: string; + context?: string; + disallowName?: string; + message?: string; + tags?: string[]; + [k: string]: unknown | undefined; + }[]; + }, + ]; // ----- jsdoc/multiline-blocks ----- -type JsdocMultilineBlocks = []|[{ - allowMultipleTags?: boolean - minimumLengthForMultiline?: number - multilineTags?: ("*" | string[]) - noFinalLineText?: boolean - noMultilineBlocks?: boolean - noSingleLineBlocks?: boolean - noZeroLineText?: boolean - singleLineTags?: string[] -}] +type JsdocMultilineBlocks = + | [] + | [ + { + allowMultipleTags?: boolean; + minimumLengthForMultiline?: number; + multilineTags?: "*" | string[]; + noFinalLineText?: boolean; + noMultilineBlocks?: boolean; + noSingleLineBlocks?: boolean; + noZeroLineText?: boolean; + singleLineTags?: string[]; + }, + ]; // ----- jsdoc/no-bad-blocks ----- -type JsdocNoBadBlocks = []|[{ - ignore?: string[] - preventAllMultiAsteriskBlocks?: boolean -}] +type JsdocNoBadBlocks = + | [] + | [ + { + ignore?: string[]; + preventAllMultiAsteriskBlocks?: boolean; + }, + ]; // ----- jsdoc/no-blank-blocks ----- -type JsdocNoBlankBlocks = []|[{ - enableFixer?: boolean -}] +type JsdocNoBlankBlocks = + | [] + | [ + { + enableFixer?: boolean; + }, + ]; // ----- jsdoc/no-defaults ----- -type JsdocNoDefaults = []|[{ - contexts?: (string | { - comment?: string - context?: string - })[] - noOptionalParamNames?: boolean -}] +type JsdocNoDefaults = + | [] + | [ + { + contexts?: ( + | string + | { + comment?: string; + context?: string; + } + )[]; + noOptionalParamNames?: boolean; + }, + ]; // ----- jsdoc/no-missing-syntax ----- -type JsdocNoMissingSyntax = []|[{ - contexts?: (string | { - comment?: string - context?: string - message?: string - minimum?: number - })[] -}] +type JsdocNoMissingSyntax = + | [] + | [ + { + contexts?: ( + | string + | { + comment?: string; + context?: string; + message?: string; + minimum?: number; + } + )[]; + }, + ]; // ----- jsdoc/no-multi-asterisks ----- -type JsdocNoMultiAsterisks = []|[{ - allowWhitespace?: boolean - preventAtEnd?: boolean - preventAtMiddleLines?: boolean -}] +type JsdocNoMultiAsterisks = + | [] + | [ + { + allowWhitespace?: boolean; + preventAtEnd?: boolean; + preventAtMiddleLines?: boolean; + }, + ]; // ----- jsdoc/no-restricted-syntax ----- -type JsdocNoRestrictedSyntax = []|[{ - contexts: (string | { - comment?: string - context?: string - message?: string - })[] -}] +type JsdocNoRestrictedSyntax = + | [] + | [ + { + contexts: ( + | string + | { + comment?: string; + context?: string; + message?: string; + } + )[]; + }, + ]; // ----- jsdoc/no-types ----- -type JsdocNoTypes = []|[{ - contexts?: (string | { - comment?: string - context?: string - })[] -}] +type JsdocNoTypes = + | [] + | [ + { + contexts?: ( + | string + | { + comment?: string; + context?: string; + } + )[]; + }, + ]; // ----- jsdoc/no-undefined-types ----- -type JsdocNoUndefinedTypes = []|[{ - definedTypes?: string[] - disableReporting?: boolean - markVariablesAsUsed?: boolean -}] +type JsdocNoUndefinedTypes = + | [] + | [ + { + definedTypes?: string[]; + disableReporting?: boolean; + markVariablesAsUsed?: boolean; + }, + ]; // ----- jsdoc/require-asterisk-prefix ----- -type JsdocRequireAsteriskPrefix = []|[("always" | "never" | "any")]|[("always" | "never" | "any"), { - tags?: { - always?: string[] - any?: string[] - never?: string[] - [k: string]: unknown | undefined - } -}] +type JsdocRequireAsteriskPrefix = + | [] + | ["always" | "never" | "any"] + | [ + "always" | "never" | "any", + { + tags?: { + always?: string[]; + any?: string[]; + never?: string[]; + [k: string]: unknown | undefined; + }; + }, + ]; // ----- jsdoc/require-description ----- -type JsdocRequireDescription = []|[{ - checkConstructors?: boolean - checkGetters?: boolean - checkSetters?: boolean - contexts?: (string | { - comment?: string - context?: string - })[] - descriptionStyle?: ("body" | "tag" | "any") - exemptedBy?: string[] -}] +type JsdocRequireDescription = + | [] + | [ + { + checkConstructors?: boolean; + checkGetters?: boolean; + checkSetters?: boolean; + contexts?: ( + | string + | { + comment?: string; + context?: string; + } + )[]; + descriptionStyle?: "body" | "tag" | "any"; + exemptedBy?: string[]; + }, + ]; // ----- jsdoc/require-description-complete-sentence ----- -type JsdocRequireDescriptionCompleteSentence = []|[{ - abbreviations?: string[] - newlineBeforeCapsAssumesBadSentenceEnd?: boolean - tags?: string[] -}] +type JsdocRequireDescriptionCompleteSentence = + | [] + | [ + { + abbreviations?: string[]; + newlineBeforeCapsAssumesBadSentenceEnd?: boolean; + tags?: string[]; + }, + ]; // ----- jsdoc/require-example ----- -type JsdocRequireExample = []|[{ - checkConstructors?: boolean - checkGetters?: boolean - checkSetters?: boolean - contexts?: (string | { - comment?: string - context?: string - })[] - enableFixer?: boolean - exemptedBy?: string[] - exemptNoArguments?: boolean -}] +type JsdocRequireExample = + | [] + | [ + { + checkConstructors?: boolean; + checkGetters?: boolean; + checkSetters?: boolean; + contexts?: ( + | string + | { + comment?: string; + context?: string; + } + )[]; + enableFixer?: boolean; + exemptedBy?: string[]; + exemptNoArguments?: boolean; + }, + ]; // ----- jsdoc/require-file-overview ----- -type JsdocRequireFileOverview = []|[{ - tags?: { - [k: string]: { - initialCommentsOnly?: boolean - mustExist?: boolean - preventDuplicates?: boolean - } - } -}] +type JsdocRequireFileOverview = + | [] + | [ + { + tags?: { + [k: string]: { + initialCommentsOnly?: boolean; + mustExist?: boolean; + preventDuplicates?: boolean; + }; + }; + }, + ]; // ----- jsdoc/require-hyphen-before-param-description ----- -type JsdocRequireHyphenBeforeParamDescription = []|[("always" | "never")]|[("always" | "never"), { - tags?: ({ - [k: string]: ("always" | "never") - } | "any") -}] +type JsdocRequireHyphenBeforeParamDescription = + | [] + | ["always" | "never"] + | [ + "always" | "never", + { + tags?: + | { + [k: string]: "always" | "never"; + } + | "any"; + }, + ]; // ----- jsdoc/require-jsdoc ----- -type JsdocRequireJsdoc = []|[{ - checkConstructors?: boolean - checkGetters?: (boolean | "no-setter") - checkSetters?: (boolean | "no-getter") - contexts?: (string | { - context?: string - inlineCommentBlock?: boolean - minLineCount?: number - })[] - enableFixer?: boolean - exemptEmptyConstructors?: boolean - exemptEmptyFunctions?: boolean - fixerMessage?: string - minLineCount?: number - publicOnly?: (boolean | { - ancestorsOnly?: boolean - cjs?: boolean - esm?: boolean - window?: boolean - }) - require?: { - ArrowFunctionExpression?: boolean - ClassDeclaration?: boolean - ClassExpression?: boolean - FunctionDeclaration?: boolean - FunctionExpression?: boolean - MethodDefinition?: boolean - } -}] +type JsdocRequireJsdoc = + | [] + | [ + { + checkConstructors?: boolean; + checkGetters?: boolean | "no-setter"; + checkSetters?: boolean | "no-getter"; + contexts?: ( + | string + | { + context?: string; + inlineCommentBlock?: boolean; + minLineCount?: number; + } + )[]; + enableFixer?: boolean; + exemptEmptyConstructors?: boolean; + exemptEmptyFunctions?: boolean; + fixerMessage?: string; + minLineCount?: number; + publicOnly?: + | boolean + | { + ancestorsOnly?: boolean; + cjs?: boolean; + esm?: boolean; + window?: boolean; + }; + require?: { + ArrowFunctionExpression?: boolean; + ClassDeclaration?: boolean; + ClassExpression?: boolean; + FunctionDeclaration?: boolean; + FunctionExpression?: boolean; + MethodDefinition?: boolean; + }; + }, + ]; // ----- jsdoc/require-param ----- -type JsdocRequireParam = []|[{ - autoIncrementBase?: number - checkConstructors?: boolean - checkDestructured?: boolean - checkDestructuredRoots?: boolean - checkGetters?: boolean - checkRestProperty?: boolean - checkSetters?: boolean - checkTypesPattern?: string - contexts?: (string | { - comment?: string - context?: string - })[] - enableFixer?: boolean - enableRestElementFixer?: boolean - enableRootFixer?: boolean - exemptedBy?: string[] - ignoreWhenAllParamsMissing?: boolean - unnamedRootBase?: string[] - useDefaultObjectProperties?: boolean -}] +type JsdocRequireParam = + | [] + | [ + { + autoIncrementBase?: number; + checkConstructors?: boolean; + checkDestructured?: boolean; + checkDestructuredRoots?: boolean; + checkGetters?: boolean; + checkRestProperty?: boolean; + checkSetters?: boolean; + checkTypesPattern?: string; + contexts?: ( + | string + | { + comment?: string; + context?: string; + } + )[]; + enableFixer?: boolean; + enableRestElementFixer?: boolean; + enableRootFixer?: boolean; + exemptedBy?: string[]; + ignoreWhenAllParamsMissing?: boolean; + unnamedRootBase?: string[]; + useDefaultObjectProperties?: boolean; + }, + ]; // ----- jsdoc/require-param-description ----- -type JsdocRequireParamDescription = []|[{ - contexts?: (string | { - comment?: string - context?: string - })[] - defaultDestructuredRootDescription?: string - setDefaultDestructuredRootDescription?: boolean -}] +type JsdocRequireParamDescription = + | [] + | [ + { + contexts?: ( + | string + | { + comment?: string; + context?: string; + } + )[]; + defaultDestructuredRootDescription?: string; + setDefaultDestructuredRootDescription?: boolean; + }, + ]; // ----- jsdoc/require-param-name ----- -type JsdocRequireParamName = []|[{ - contexts?: (string | { - comment?: string - context?: string - })[] -}] +type JsdocRequireParamName = + | [] + | [ + { + contexts?: ( + | string + | { + comment?: string; + context?: string; + } + )[]; + }, + ]; // ----- jsdoc/require-param-type ----- -type JsdocRequireParamType = []|[{ - contexts?: (string | { - comment?: string - context?: string - })[] - defaultDestructuredRootType?: string - setDefaultDestructuredRootType?: boolean -}] +type JsdocRequireParamType = + | [] + | [ + { + contexts?: ( + | string + | { + comment?: string; + context?: string; + } + )[]; + defaultDestructuredRootType?: string; + setDefaultDestructuredRootType?: boolean; + }, + ]; // ----- jsdoc/require-returns ----- -type JsdocRequireReturns = []|[{ - checkConstructors?: boolean - checkGetters?: boolean - contexts?: (string | { - comment?: string - context?: string - forceRequireReturn?: boolean - })[] - enableFixer?: boolean - exemptedBy?: string[] - forceRequireReturn?: boolean - forceReturnsWithAsync?: boolean - publicOnly?: (boolean | { - ancestorsOnly?: boolean - cjs?: boolean - esm?: boolean - window?: boolean - }) -}] +type JsdocRequireReturns = + | [] + | [ + { + checkConstructors?: boolean; + checkGetters?: boolean; + contexts?: ( + | string + | { + comment?: string; + context?: string; + forceRequireReturn?: boolean; + } + )[]; + enableFixer?: boolean; + exemptedBy?: string[]; + forceRequireReturn?: boolean; + forceReturnsWithAsync?: boolean; + publicOnly?: + | boolean + | { + ancestorsOnly?: boolean; + cjs?: boolean; + esm?: boolean; + window?: boolean; + }; + }, + ]; // ----- jsdoc/require-returns-check ----- -type JsdocRequireReturnsCheck = []|[{ - exemptAsync?: boolean - exemptGenerators?: boolean - reportMissingReturnForUndefinedTypes?: boolean -}] +type JsdocRequireReturnsCheck = + | [] + | [ + { + exemptAsync?: boolean; + exemptGenerators?: boolean; + reportMissingReturnForUndefinedTypes?: boolean; + }, + ]; // ----- jsdoc/require-returns-description ----- -type JsdocRequireReturnsDescription = []|[{ - contexts?: (string | { - comment?: string - context?: string - })[] -}] +type JsdocRequireReturnsDescription = + | [] + | [ + { + contexts?: ( + | string + | { + comment?: string; + context?: string; + } + )[]; + }, + ]; // ----- jsdoc/require-returns-type ----- -type JsdocRequireReturnsType = []|[{ - contexts?: (string | { - comment?: string - context?: string - })[] -}] +type JsdocRequireReturnsType = + | [] + | [ + { + contexts?: ( + | string + | { + comment?: string; + context?: string; + } + )[]; + }, + ]; // ----- jsdoc/require-template ----- -type JsdocRequireTemplate = []|[{ - requireSeparateTemplates?: boolean -}] +type JsdocRequireTemplate = + | [] + | [ + { + requireSeparateTemplates?: boolean; + }, + ]; // ----- jsdoc/require-throws ----- -type JsdocRequireThrows = []|[{ - contexts?: (string | { - comment?: string - context?: string - })[] - exemptedBy?: string[] -}] +type JsdocRequireThrows = + | [] + | [ + { + contexts?: ( + | string + | { + comment?: string; + context?: string; + } + )[]; + exemptedBy?: string[]; + }, + ]; // ----- jsdoc/require-yields ----- -type JsdocRequireYields = []|[{ - contexts?: (string | { - comment?: string - context?: string - })[] - exemptedBy?: string[] - forceRequireNext?: boolean - forceRequireYields?: boolean - next?: boolean - nextWithGeneratorTag?: boolean - withGeneratorTag?: boolean -}] +type JsdocRequireYields = + | [] + | [ + { + contexts?: ( + | string + | { + comment?: string; + context?: string; + } + )[]; + exemptedBy?: string[]; + forceRequireNext?: boolean; + forceRequireYields?: boolean; + next?: boolean; + nextWithGeneratorTag?: boolean; + withGeneratorTag?: boolean; + }, + ]; // ----- jsdoc/require-yields-check ----- -type JsdocRequireYieldsCheck = []|[{ - checkGeneratorsOnly?: boolean - contexts?: (string | { - comment?: string - context?: string - })[] - exemptedBy?: string[] - next?: boolean -}] +type JsdocRequireYieldsCheck = + | [] + | [ + { + checkGeneratorsOnly?: boolean; + contexts?: ( + | string + | { + comment?: string; + context?: string; + } + )[]; + exemptedBy?: string[]; + next?: boolean; + }, + ]; // ----- jsdoc/sort-tags ----- -type JsdocSortTags = []|[{ - alphabetizeExtras?: boolean - linesBetween?: number - reportIntraTagGroupSpacing?: boolean - reportTagGroupSpacing?: boolean - tagSequence?: { - tags?: string[] - [k: string]: unknown | undefined - }[] -}] +type JsdocSortTags = + | [] + | [ + { + alphabetizeExtras?: boolean; + linesBetween?: number; + reportIntraTagGroupSpacing?: boolean; + reportTagGroupSpacing?: boolean; + tagSequence?: { + tags?: string[]; + [k: string]: unknown | undefined; + }[]; + }, + ]; // ----- jsdoc/tag-lines ----- -type JsdocTagLines = []|[("always" | "any" | "never")]|[("always" | "any" | "never"), { - applyToEndTag?: boolean - count?: number - endLines?: (number | null) - startLines?: (number | null) - tags?: { - [k: string]: { - count?: number - lines?: ("always" | "never" | "any") - } - } -}] +type JsdocTagLines = + | [] + | ["always" | "any" | "never"] + | [ + "always" | "any" | "never", + { + applyToEndTag?: boolean; + count?: number; + endLines?: number | null; + startLines?: number | null; + tags?: { + [k: string]: { + count?: number; + lines?: "always" | "never" | "any"; + }; + }; + }, + ]; // ----- jsdoc/text-escaping ----- -type JsdocTextEscaping = []|[{ - escapeHTML?: boolean - escapeMarkdown?: boolean -}] +type JsdocTextEscaping = + | [] + | [ + { + escapeHTML?: boolean; + escapeMarkdown?: boolean; + }, + ]; // ----- jsdoc/valid-types ----- -type JsdocValidTypes = []|[{ - allowEmptyNamepaths?: boolean -}] +type JsdocValidTypes = + | [] + | [ + { + allowEmptyNamepaths?: boolean; + }, + ]; // ----- jsonc/array-bracket-newline ----- -type JsoncArrayBracketNewline = []|[(("always" | "never" | "consistent") | { - multiline?: boolean - minItems?: (number | null) -})] +type JsoncArrayBracketNewline = + | [] + | [ + | ("always" | "never" | "consistent") + | { + multiline?: boolean; + minItems?: number | null; + }, + ]; // ----- jsonc/array-bracket-spacing ----- -type JsoncArrayBracketSpacing = []|[("always" | "never")]|[("always" | "never"), { - singleValue?: boolean - objectsInArrays?: boolean - arraysInArrays?: boolean -}] +type JsoncArrayBracketSpacing = + | [] + | ["always" | "never"] + | [ + "always" | "never", + { + singleValue?: boolean; + objectsInArrays?: boolean; + arraysInArrays?: boolean; + }, + ]; // ----- jsonc/array-element-newline ----- -type JsoncArrayElementNewline = []|[(_JsoncArrayElementNewlineBasicConfig | { - ArrayExpression?: _JsoncArrayElementNewlineBasicConfig - JSONArrayExpression?: _JsoncArrayElementNewlineBasicConfig - ArrayPattern?: _JsoncArrayElementNewlineBasicConfig -})] -type _JsoncArrayElementNewlineBasicConfig = (("always" | "never" | "consistent") | { - multiline?: boolean - minItems?: (number | null) -}) +type JsoncArrayElementNewline = + | [] + | [ + | _JsoncArrayElementNewlineBasicConfig + | { + ArrayExpression?: _JsoncArrayElementNewlineBasicConfig; + JSONArrayExpression?: _JsoncArrayElementNewlineBasicConfig; + ArrayPattern?: _JsoncArrayElementNewlineBasicConfig; + }, + ]; +type _JsoncArrayElementNewlineBasicConfig = + | ("always" | "never" | "consistent") + | { + multiline?: boolean; + minItems?: number | null; + }; // ----- jsonc/comma-dangle ----- -type JsoncCommaDangle = []|[(_JsoncCommaDangleValue | { - arrays?: _JsoncCommaDangleValueWithIgnore - objects?: _JsoncCommaDangleValueWithIgnore - imports?: _JsoncCommaDangleValueWithIgnore - exports?: _JsoncCommaDangleValueWithIgnore - functions?: _JsoncCommaDangleValueWithIgnore -})] -type _JsoncCommaDangleValue = ("always-multiline" | "always" | "never" | "only-multiline") -type _JsoncCommaDangleValueWithIgnore = ("always-multiline" | "always" | "ignore" | "never" | "only-multiline") +type JsoncCommaDangle = + | [] + | [ + | _JsoncCommaDangleValue + | { + arrays?: _JsoncCommaDangleValueWithIgnore; + objects?: _JsoncCommaDangleValueWithIgnore; + imports?: _JsoncCommaDangleValueWithIgnore; + exports?: _JsoncCommaDangleValueWithIgnore; + functions?: _JsoncCommaDangleValueWithIgnore; + }, + ]; +type _JsoncCommaDangleValue = "always-multiline" | "always" | "never" | "only-multiline"; +type _JsoncCommaDangleValueWithIgnore = "always-multiline" | "always" | "ignore" | "never" | "only-multiline"; // ----- jsonc/comma-style ----- -type JsoncCommaStyle = []|[("first" | "last")]|[("first" | "last"), { - exceptions?: { - [k: string]: boolean | undefined - } -}] +type JsoncCommaStyle = + | [] + | ["first" | "last"] + | [ + "first" | "last", + { + exceptions?: { + [k: string]: boolean | undefined; + }; + }, + ]; // ----- jsonc/indent ----- -type JsoncIndent = []|[("tab" | number)]|[("tab" | number), { - SwitchCase?: number - VariableDeclarator?: ((number | ("first" | "off")) | { - var?: (number | ("first" | "off")) - let?: (number | ("first" | "off")) - const?: (number | ("first" | "off")) - }) - outerIIFEBody?: (number | "off") - MemberExpression?: (number | "off") - FunctionDeclaration?: { - parameters?: (number | ("first" | "off")) - body?: number - } - FunctionExpression?: { - parameters?: (number | ("first" | "off")) - body?: number - } - StaticBlock?: { - body?: number - } - CallExpression?: { - arguments?: (number | ("first" | "off")) - } - ArrayExpression?: (number | ("first" | "off")) - ObjectExpression?: (number | ("first" | "off")) - ImportDeclaration?: (number | ("first" | "off")) - flatTernaryExpressions?: boolean - offsetTernaryExpressions?: boolean - ignoredNodes?: string[] - ignoreComments?: boolean -}] +type JsoncIndent = + | [] + | ["tab" | number] + | [ + "tab" | number, + { + SwitchCase?: number; + VariableDeclarator?: + | (number | ("first" | "off")) + | { + var?: number | ("first" | "off"); + let?: number | ("first" | "off"); + const?: number | ("first" | "off"); + }; + outerIIFEBody?: number | "off"; + MemberExpression?: number | "off"; + FunctionDeclaration?: { + parameters?: number | ("first" | "off"); + body?: number; + }; + FunctionExpression?: { + parameters?: number | ("first" | "off"); + body?: number; + }; + StaticBlock?: { + body?: number; + }; + CallExpression?: { + arguments?: number | ("first" | "off"); + }; + ArrayExpression?: number | ("first" | "off"); + ObjectExpression?: number | ("first" | "off"); + ImportDeclaration?: number | ("first" | "off"); + flatTernaryExpressions?: boolean; + offsetTernaryExpressions?: boolean; + ignoredNodes?: string[]; + ignoreComments?: boolean; + }, + ]; // ----- jsonc/key-name-casing ----- -type JsoncKeyNameCasing = []|[{ - camelCase?: boolean - PascalCase?: boolean - SCREAMING_SNAKE_CASE?: boolean - "kebab-case"?: boolean - snake_case?: boolean - ignores?: string[] -}] +type JsoncKeyNameCasing = + | [] + | [ + { + camelCase?: boolean; + PascalCase?: boolean; + SCREAMING_SNAKE_CASE?: boolean; + "kebab-case"?: boolean; + snake_case?: boolean; + ignores?: string[]; + }, + ]; // ----- jsonc/key-spacing ----- -type JsoncKeySpacing = []|[({ - align?: (("colon" | "value") | { - mode?: ("strict" | "minimum") - on?: ("colon" | "value") - beforeColon?: boolean - afterColon?: boolean - }) - mode?: ("strict" | "minimum") - beforeColon?: boolean - afterColon?: boolean -} | { - singleLine?: { - mode?: ("strict" | "minimum") - beforeColon?: boolean - afterColon?: boolean - } - multiLine?: { - align?: (("colon" | "value") | { - mode?: ("strict" | "minimum") - on?: ("colon" | "value") - beforeColon?: boolean - afterColon?: boolean - }) - mode?: ("strict" | "minimum") - beforeColon?: boolean - afterColon?: boolean - } -} | { - singleLine?: { - mode?: ("strict" | "minimum") - beforeColon?: boolean - afterColon?: boolean - } - multiLine?: { - mode?: ("strict" | "minimum") - beforeColon?: boolean - afterColon?: boolean - } - align?: { - mode?: ("strict" | "minimum") - on?: ("colon" | "value") - beforeColon?: boolean - afterColon?: boolean - } -})] +type JsoncKeySpacing = + | [] + | [ + | { + align?: + | ("colon" | "value") + | { + mode?: "strict" | "minimum"; + on?: "colon" | "value"; + beforeColon?: boolean; + afterColon?: boolean; + }; + mode?: "strict" | "minimum"; + beforeColon?: boolean; + afterColon?: boolean; + } + | { + singleLine?: { + mode?: "strict" | "minimum"; + beforeColon?: boolean; + afterColon?: boolean; + }; + multiLine?: { + align?: + | ("colon" | "value") + | { + mode?: "strict" | "minimum"; + on?: "colon" | "value"; + beforeColon?: boolean; + afterColon?: boolean; + }; + mode?: "strict" | "minimum"; + beforeColon?: boolean; + afterColon?: boolean; + }; + } + | { + singleLine?: { + mode?: "strict" | "minimum"; + beforeColon?: boolean; + afterColon?: boolean; + }; + multiLine?: { + mode?: "strict" | "minimum"; + beforeColon?: boolean; + afterColon?: boolean; + }; + align?: { + mode?: "strict" | "minimum"; + on?: "colon" | "value"; + beforeColon?: boolean; + afterColon?: boolean; + }; + }, + ]; // ----- jsonc/no-irregular-whitespace ----- -type JsoncNoIrregularWhitespace = []|[{ - skipComments?: boolean - skipStrings?: boolean - skipTemplates?: boolean - skipRegExps?: boolean - skipJSXText?: boolean -}] +type JsoncNoIrregularWhitespace = + | [] + | [ + { + skipComments?: boolean; + skipStrings?: boolean; + skipTemplates?: boolean; + skipRegExps?: boolean; + skipJSXText?: boolean; + }, + ]; // ----- jsonc/no-useless-escape ----- -type JsoncNoUselessEscape = []|[{ - allowRegexCharacters?: string[] -}] +type JsoncNoUselessEscape = + | [] + | [ + { + allowRegexCharacters?: string[]; + }, + ]; // ----- jsonc/object-curly-newline ----- -type JsoncObjectCurlyNewline = []|[((("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean -}) | { - ObjectExpression?: (("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean - }) - ObjectPattern?: (("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean - }) - ImportDeclaration?: (("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean - }) - ExportDeclaration?: (("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean - }) -})] +type JsoncObjectCurlyNewline = + | [] + | [ + | ( + | ("always" | "never") + | { + multiline?: boolean; + minProperties?: number; + consistent?: boolean; + } + ) + | { + ObjectExpression?: + | ("always" | "never") + | { + multiline?: boolean; + minProperties?: number; + consistent?: boolean; + }; + ObjectPattern?: + | ("always" | "never") + | { + multiline?: boolean; + minProperties?: number; + consistent?: boolean; + }; + ImportDeclaration?: + | ("always" | "never") + | { + multiline?: boolean; + minProperties?: number; + consistent?: boolean; + }; + ExportDeclaration?: + | ("always" | "never") + | { + multiline?: boolean; + minProperties?: number; + consistent?: boolean; + }; + }, + ]; // ----- jsonc/object-curly-spacing ----- -type JsoncObjectCurlySpacing = []|[("always" | "never")]|[("always" | "never"), { - arraysInObjects?: boolean - objectsInObjects?: boolean -}] +type JsoncObjectCurlySpacing = + | [] + | ["always" | "never"] + | [ + "always" | "never", + { + arraysInObjects?: boolean; + objectsInObjects?: boolean; + }, + ]; // ----- jsonc/object-property-newline ----- -type JsoncObjectPropertyNewline = []|[{ - allowAllPropertiesOnSameLine?: boolean - allowMultiplePropertiesPerLine?: boolean -}] +type JsoncObjectPropertyNewline = + | [] + | [ + { + allowAllPropertiesOnSameLine?: boolean; + allowMultiplePropertiesPerLine?: boolean; + }, + ]; // ----- jsonc/quote-props ----- -type JsoncQuoteProps = ([]|[("always" | "as-needed" | "consistent" | "consistent-as-needed")] | []|[("always" | "as-needed" | "consistent" | "consistent-as-needed")]|[("always" | "as-needed" | "consistent" | "consistent-as-needed"), { - keywords?: boolean - unnecessary?: boolean - numbers?: boolean -}]) +type JsoncQuoteProps = + | [] + | ["always" | "as-needed" | "consistent" | "consistent-as-needed"] + | [] + | ["always" | "as-needed" | "consistent" | "consistent-as-needed"] + | [ + "always" | "as-needed" | "consistent" | "consistent-as-needed", + { + keywords?: boolean; + unnecessary?: boolean; + numbers?: boolean; + }, + ]; // ----- jsonc/quotes ----- -type JsoncQuotes = []|[("single" | "double" | "backtick")]|[("single" | "double" | "backtick"), ("avoid-escape" | { - avoidEscape?: boolean - allowTemplateLiterals?: boolean -})] +type JsoncQuotes = + | [] + | ["single" | "double" | "backtick"] + | [ + "single" | "double" | "backtick", + ( + | "avoid-escape" + | { + avoidEscape?: boolean; + allowTemplateLiterals?: boolean; + } + ), + ]; // ----- jsonc/sort-array-values ----- -type JsoncSortArrayValues = [{ - pathPattern: string - order: ((string | { - valuePattern?: string - order?: { - type?: ("asc" | "desc") - caseSensitive?: boolean - natural?: boolean - } - })[] | { - type?: ("asc" | "desc") - caseSensitive?: boolean - natural?: boolean - }) - minValues?: number -}, ...({ - pathPattern: string - order: ((string | { - valuePattern?: string - order?: { - type?: ("asc" | "desc") - caseSensitive?: boolean - natural?: boolean - } - })[] | { - type?: ("asc" | "desc") - caseSensitive?: boolean - natural?: boolean - }) - minValues?: number -})[]] +type JsoncSortArrayValues = [ + { + pathPattern: string; + order: + | ( + | string + | { + valuePattern?: string; + order?: { + type?: "asc" | "desc"; + caseSensitive?: boolean; + natural?: boolean; + }; + } + )[] + | { + type?: "asc" | "desc"; + caseSensitive?: boolean; + natural?: boolean; + }; + minValues?: number; + }, + ...{ + pathPattern: string; + order: + | ( + | string + | { + valuePattern?: string; + order?: { + type?: "asc" | "desc"; + caseSensitive?: boolean; + natural?: boolean; + }; + } + )[] + | { + type?: "asc" | "desc"; + caseSensitive?: boolean; + natural?: boolean; + }; + minValues?: number; + }[], +]; // ----- jsonc/sort-keys ----- -type JsoncSortKeys = ([{ - pathPattern: string - hasProperties?: string[] - order: ((string | { - keyPattern?: string - order?: { - type?: ("asc" | "desc") - caseSensitive?: boolean - natural?: boolean - } - })[] | { - type?: ("asc" | "desc") - caseSensitive?: boolean - natural?: boolean - }) - minKeys?: number - allowLineSeparatedGroups?: boolean -}, ...({ - pathPattern: string - hasProperties?: string[] - order: ((string | { - keyPattern?: string - order?: { - type?: ("asc" | "desc") - caseSensitive?: boolean - natural?: boolean - } - })[] | { - type?: ("asc" | "desc") - caseSensitive?: boolean - natural?: boolean - }) - minKeys?: number - allowLineSeparatedGroups?: boolean -})[]] | []|[("asc" | "desc")]|[("asc" | "desc"), { - caseSensitive?: boolean - natural?: boolean - minKeys?: number - allowLineSeparatedGroups?: boolean -}]) +type JsoncSortKeys = + | [ + { + pathPattern: string; + hasProperties?: string[]; + order: + | ( + | string + | { + keyPattern?: string; + order?: { + type?: "asc" | "desc"; + caseSensitive?: boolean; + natural?: boolean; + }; + } + )[] + | { + type?: "asc" | "desc"; + caseSensitive?: boolean; + natural?: boolean; + }; + minKeys?: number; + allowLineSeparatedGroups?: boolean; + }, + ...{ + pathPattern: string; + hasProperties?: string[]; + order: + | ( + | string + | { + keyPattern?: string; + order?: { + type?: "asc" | "desc"; + caseSensitive?: boolean; + natural?: boolean; + }; + } + )[] + | { + type?: "asc" | "desc"; + caseSensitive?: boolean; + natural?: boolean; + }; + minKeys?: number; + allowLineSeparatedGroups?: boolean; + }[], + ] + | [] + | ["asc" | "desc"] + | [ + "asc" | "desc", + { + caseSensitive?: boolean; + natural?: boolean; + minKeys?: number; + allowLineSeparatedGroups?: boolean; + }, + ]; // ----- jsonc/space-unary-ops ----- -type JsoncSpaceUnaryOps = []|[{ - words?: boolean - nonwords?: boolean - overrides?: { - [k: string]: boolean | undefined - } -}] +type JsoncSpaceUnaryOps = + | [] + | [ + { + words?: boolean; + nonwords?: boolean; + overrides?: { + [k: string]: boolean | undefined; + }; + }, + ]; // ----- jsx-a11y/accessible-emoji ----- -type JsxA11YAccessibleEmoji = []|[{ - [k: string]: unknown | undefined -}] +type JsxA11YAccessibleEmoji = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/alt-text ----- -type JsxA11YAltText = []|[{ - elements?: string[] - img?: string[] - object?: string[] - area?: string[] - "input[type=\"image\"]"?: string[] - [k: string]: unknown | undefined -}] +type JsxA11YAltText = + | [] + | [ + { + elements?: string[]; + img?: string[]; + object?: string[]; + area?: string[]; + 'input[type="image"]'?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/anchor-ambiguous-text ----- -type JsxA11YAnchorAmbiguousText = []|[{ - words?: string[] - [k: string]: unknown | undefined -}] +type JsxA11YAnchorAmbiguousText = + | [] + | [ + { + words?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/anchor-has-content ----- -type JsxA11YAnchorHasContent = []|[{ - components?: string[] - [k: string]: unknown | undefined -}] +type JsxA11YAnchorHasContent = + | [] + | [ + { + components?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/anchor-is-valid ----- -type JsxA11YAnchorIsValid = []|[{ - components?: string[] - specialLink?: string[] - - aspects?: [("noHref" | "invalidHref" | "preferButton"), ...(("noHref" | "invalidHref" | "preferButton"))[]] - [k: string]: unknown | undefined -}] +type JsxA11YAnchorIsValid = + | [] + | [ + { + components?: string[]; + specialLink?: string[]; + + aspects?: ["noHref" | "invalidHref" | "preferButton", ...("noHref" | "invalidHref" | "preferButton")[]]; + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/aria-activedescendant-has-tabindex ----- -type JsxA11YAriaActivedescendantHasTabindex = []|[{ - [k: string]: unknown | undefined -}] +type JsxA11YAriaActivedescendantHasTabindex = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/aria-props ----- -type JsxA11YAriaProps = []|[{ - [k: string]: unknown | undefined -}] +type JsxA11YAriaProps = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/aria-proptypes ----- -type JsxA11YAriaProptypes = []|[{ - [k: string]: unknown | undefined -}] +type JsxA11YAriaProptypes = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/aria-role ----- -type JsxA11YAriaRole = []|[{ - allowedInvalidRoles?: string[] - ignoreNonDOM?: boolean - [k: string]: unknown | undefined -}] +type JsxA11YAriaRole = + | [] + | [ + { + allowedInvalidRoles?: string[]; + ignoreNonDOM?: boolean; + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/aria-unsupported-elements ----- -type JsxA11YAriaUnsupportedElements = []|[{ - [k: string]: unknown | undefined -}] +type JsxA11YAriaUnsupportedElements = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/autocomplete-valid ----- -type JsxA11YAutocompleteValid = []|[{ - inputComponents?: string[] - [k: string]: unknown | undefined -}] +type JsxA11YAutocompleteValid = + | [] + | [ + { + inputComponents?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/click-events-have-key-events ----- -type JsxA11YClickEventsHaveKeyEvents = []|[{ - [k: string]: unknown | undefined -}] +type JsxA11YClickEventsHaveKeyEvents = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/control-has-associated-label ----- -type JsxA11YControlHasAssociatedLabel = []|[{ - labelAttributes?: string[] - controlComponents?: string[] - ignoreElements?: string[] - ignoreRoles?: string[] - - depth?: number - [k: string]: unknown | undefined -}] +type JsxA11YControlHasAssociatedLabel = + | [] + | [ + { + labelAttributes?: string[]; + controlComponents?: string[]; + ignoreElements?: string[]; + ignoreRoles?: string[]; + + depth?: number; + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/heading-has-content ----- -type JsxA11YHeadingHasContent = []|[{ - components?: string[] - [k: string]: unknown | undefined -}] +type JsxA11YHeadingHasContent = + | [] + | [ + { + components?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/html-has-lang ----- -type JsxA11YHtmlHasLang = []|[{ - [k: string]: unknown | undefined -}] +type JsxA11YHtmlHasLang = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/iframe-has-title ----- -type JsxA11YIframeHasTitle = []|[{ - [k: string]: unknown | undefined -}] +type JsxA11YIframeHasTitle = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/img-redundant-alt ----- -type JsxA11YImgRedundantAlt = []|[{ - components?: string[] - words?: string[] - [k: string]: unknown | undefined -}] +type JsxA11YImgRedundantAlt = + | [] + | [ + { + components?: string[]; + words?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/interactive-supports-focus ----- -type JsxA11YInteractiveSupportsFocus = []|[{ - - tabbable?: ("button" | "checkbox" | "columnheader" | "combobox" | "grid" | "gridcell" | "link" | "listbox" | "menu" | "menubar" | "menuitem" | "menuitemcheckbox" | "menuitemradio" | "option" | "progressbar" | "radio" | "radiogroup" | "row" | "rowheader" | "scrollbar" | "searchbox" | "slider" | "spinbutton" | "switch" | "tab" | "tablist" | "textbox" | "tree" | "treegrid" | "treeitem" | "doc-backlink" | "doc-biblioref" | "doc-glossref" | "doc-noteref")[] - [k: string]: unknown | undefined -}] +type JsxA11YInteractiveSupportsFocus = + | [] + | [ + { + tabbable?: ( + | "button" + | "checkbox" + | "columnheader" + | "combobox" + | "grid" + | "gridcell" + | "link" + | "listbox" + | "menu" + | "menubar" + | "menuitem" + | "menuitemcheckbox" + | "menuitemradio" + | "option" + | "progressbar" + | "radio" + | "radiogroup" + | "row" + | "rowheader" + | "scrollbar" + | "searchbox" + | "slider" + | "spinbutton" + | "switch" + | "tab" + | "tablist" + | "textbox" + | "tree" + | "treegrid" + | "treeitem" + | "doc-backlink" + | "doc-biblioref" + | "doc-glossref" + | "doc-noteref" + )[]; + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/label-has-associated-control ----- -type JsxA11YLabelHasAssociatedControl = []|[{ - labelComponents?: string[] - labelAttributes?: string[] - controlComponents?: string[] - - assert?: ("htmlFor" | "nesting" | "both" | "either") - - depth?: number - [k: string]: unknown | undefined -}] +type JsxA11YLabelHasAssociatedControl = + | [] + | [ + { + labelComponents?: string[]; + labelAttributes?: string[]; + controlComponents?: string[]; + + assert?: "htmlFor" | "nesting" | "both" | "either"; + + depth?: number; + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/label-has-for ----- -type JsxA11YLabelHasFor = []|[{ - components?: string[] - required?: (("nesting" | "id") | { - - some: ("nesting" | "id")[] - [k: string]: unknown | undefined - } | { - - every: ("nesting" | "id")[] - [k: string]: unknown | undefined - }) - allowChildren?: boolean - [k: string]: unknown | undefined -}] +type JsxA11YLabelHasFor = + | [] + | [ + { + components?: string[]; + required?: + | ("nesting" | "id") + | { + some: ("nesting" | "id")[]; + [k: string]: unknown | undefined; + } + | { + every: ("nesting" | "id")[]; + [k: string]: unknown | undefined; + }; + allowChildren?: boolean; + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/lang ----- -type JsxA11YLang = []|[{ - [k: string]: unknown | undefined -}] +type JsxA11YLang = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/media-has-caption ----- -type JsxA11YMediaHasCaption = []|[{ - audio?: string[] - video?: string[] - track?: string[] - [k: string]: unknown | undefined -}] +type JsxA11YMediaHasCaption = + | [] + | [ + { + audio?: string[]; + video?: string[]; + track?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/mouse-events-have-key-events ----- -type JsxA11YMouseEventsHaveKeyEvents = []|[{ - - hoverInHandlers?: string[] - - hoverOutHandlers?: string[] - [k: string]: unknown | undefined -}] +type JsxA11YMouseEventsHaveKeyEvents = + | [] + | [ + { + hoverInHandlers?: string[]; + + hoverOutHandlers?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/no-access-key ----- -type JsxA11YNoAccessKey = []|[{ - [k: string]: unknown | undefined -}] +type JsxA11YNoAccessKey = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/no-aria-hidden-on-focusable ----- -type JsxA11YNoAriaHiddenOnFocusable = []|[{ - [k: string]: unknown | undefined -}] +type JsxA11YNoAriaHiddenOnFocusable = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/no-autofocus ----- -type JsxA11YNoAutofocus = []|[{ - ignoreNonDOM?: boolean - [k: string]: unknown | undefined -}] +type JsxA11YNoAutofocus = + | [] + | [ + { + ignoreNonDOM?: boolean; + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/no-distracting-elements ----- -type JsxA11YNoDistractingElements = []|[{ - - elements?: ("marquee" | "blink")[] - [k: string]: unknown | undefined -}] +type JsxA11YNoDistractingElements = + | [] + | [ + { + elements?: ("marquee" | "blink")[]; + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/no-interactive-element-to-noninteractive-role ----- -type JsxA11YNoInteractiveElementToNoninteractiveRole = []|[{ - [k: string]: string[] | undefined -}] +type JsxA11YNoInteractiveElementToNoninteractiveRole = + | [] + | [ + { + [k: string]: string[] | undefined; + }, + ]; // ----- jsx-a11y/no-noninteractive-element-interactions ----- -type JsxA11YNoNoninteractiveElementInteractions = []|[{ - handlers?: string[] - [k: string]: unknown | undefined -}] +type JsxA11YNoNoninteractiveElementInteractions = + | [] + | [ + { + handlers?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/no-noninteractive-element-to-interactive-role ----- -type JsxA11YNoNoninteractiveElementToInteractiveRole = []|[{ - [k: string]: string[] | undefined -}] +type JsxA11YNoNoninteractiveElementToInteractiveRole = + | [] + | [ + { + [k: string]: string[] | undefined; + }, + ]; // ----- jsx-a11y/no-noninteractive-tabindex ----- -type JsxA11YNoNoninteractiveTabindex = []|[{ - - roles?: string[] - - tags?: string[] - [k: string]: unknown | undefined -}] +type JsxA11YNoNoninteractiveTabindex = + | [] + | [ + { + roles?: string[]; + + tags?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/no-onchange ----- -type JsxA11YNoOnchange = []|[{ - [k: string]: unknown | undefined -}] +type JsxA11YNoOnchange = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/no-redundant-roles ----- -type JsxA11YNoRedundantRoles = []|[{ - [k: string]: string[] | undefined -}] +type JsxA11YNoRedundantRoles = + | [] + | [ + { + [k: string]: string[] | undefined; + }, + ]; // ----- jsx-a11y/no-static-element-interactions ----- -type JsxA11YNoStaticElementInteractions = []|[{ - handlers?: string[] - [k: string]: unknown | undefined -}] +type JsxA11YNoStaticElementInteractions = + | [] + | [ + { + handlers?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/prefer-tag-over-role ----- -type JsxA11YPreferTagOverRole = []|[{ - [k: string]: unknown | undefined -}] +type JsxA11YPreferTagOverRole = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/role-has-required-aria-props ----- -type JsxA11YRoleHasRequiredAriaProps = []|[{ - [k: string]: unknown | undefined -}] +type JsxA11YRoleHasRequiredAriaProps = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/role-supports-aria-props ----- -type JsxA11YRoleSupportsAriaProps = []|[{ - [k: string]: unknown | undefined -}] +type JsxA11YRoleSupportsAriaProps = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/scope ----- -type JsxA11YScope = []|[{ - [k: string]: unknown | undefined -}] +type JsxA11YScope = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- jsx-a11y/tabindex-no-positive ----- -type JsxA11YTabindexNoPositive = []|[{ - [k: string]: unknown | undefined -}] +type JsxA11YTabindexNoPositive = + | [] + | [ + { + [k: string]: unknown | undefined; + }, + ]; // ----- markdown/fenced-code-language ----- -type MarkdownFencedCodeLanguage = []|[{ - required?: string[] -}] +type MarkdownFencedCodeLanguage = + | [] + | [ + { + required?: string[]; + }, + ]; // ----- markdown/no-html ----- -type MarkdownNoHtml = []|[{ - allowed?: string[] -}] +type MarkdownNoHtml = + | [] + | [ + { + allowed?: string[]; + }, + ]; // ----- n/callback-return ----- -type NCallbackReturn = []|[string[]] +type NCallbackReturn = [] | [string[]]; // ----- n/exports-style ----- -type NExportsStyle = []|[("module.exports" | "exports")]|[("module.exports" | "exports"), { - allowBatchAssign?: boolean -}] +type NExportsStyle = + | [] + | ["module.exports" | "exports"] + | [ + "module.exports" | "exports", + { + allowBatchAssign?: boolean; + }, + ]; // ----- n/file-extension-in-import ----- -type NFileExtensionInImport = []|[("always" | "never")]|[("always" | "never"), { - [k: string]: ("always" | "never") | undefined -}] +type NFileExtensionInImport = + | [] + | ["always" | "never"] + | [ + "always" | "never", + { + [k: string]: ("always" | "never") | undefined; + }, + ]; // ----- n/handle-callback-err ----- -type NHandleCallbackErr = []|[string] +type NHandleCallbackErr = [] | [string]; // ----- n/hashbang ----- -type NHashbang = []|[{ - convertPath?: ({ - - [k: string]: [string, string] - } | [{ - - include: [string, ...(string)[]] - exclude?: string[] - - replace: [string, string] - }, ...({ - - include: [string, ...(string)[]] - exclude?: string[] - - replace: [string, string] - })[]]) - ignoreUnpublished?: boolean - additionalExecutables?: string[] - executableMap?: { - [k: string]: string - } -}] +type NHashbang = + | [] + | [ + { + convertPath?: + | { + [k: string]: [string, string]; + } + | [ + { + include: [string, ...string[]]; + exclude?: string[]; + + replace: [string, string]; + }, + ...{ + include: [string, ...string[]]; + exclude?: string[]; + + replace: [string, string]; + }[], + ]; + ignoreUnpublished?: boolean; + additionalExecutables?: string[]; + executableMap?: { + [k: string]: string; + }; + }, + ]; // ----- n/no-deprecated-api ----- -type NNoDeprecatedApi = []|[{ - version?: string - ignoreModuleItems?: ("_linklist" | "_stream_wrap" | "async_hooks.currentId" | "async_hooks.triggerId" | "buffer.Buffer()" | "new buffer.Buffer()" | "buffer.SlowBuffer" | "constants" | "crypto._toBuf" | "crypto.Credentials" | "crypto.DEFAULT_ENCODING" | "crypto.createCipher" | "crypto.createCredentials" | "crypto.createDecipher" | "crypto.fips" | "crypto.prng" | "crypto.pseudoRandomBytes" | "crypto.rng" | "domain" | "events.EventEmitter.listenerCount" | "events.listenerCount" | "freelist" | "fs.SyncWriteStream" | "fs.exists" | "fs.lchmod" | "fs.lchmodSync" | "http.createClient" | "module.Module.createRequireFromPath" | "module.Module.requireRepl" | "module.Module._debug" | "module.createRequireFromPath" | "module.requireRepl" | "module._debug" | "net._setSimultaneousAccepts" | "os.getNetworkInterfaces" | "os.tmpDir" | "path._makeLong" | "process.EventEmitter" | "process.assert" | "process.binding" | "process.env.NODE_REPL_HISTORY_FILE" | "process.report.triggerReport" | "punycode" | "readline.codePointAt" | "readline.getStringWidth" | "readline.isFullWidthCodePoint" | "readline.stripVTControlCharacters" | "repl.REPLServer" | "repl.Recoverable" | "repl.REPL_MODE_MAGIC" | "safe-buffer.Buffer()" | "new safe-buffer.Buffer()" | "safe-buffer.SlowBuffer" | "sys" | "timers.enroll" | "timers.unenroll" | "tls.CleartextStream" | "tls.CryptoStream" | "tls.SecurePair" | "tls.convertNPNProtocols" | "tls.createSecurePair" | "tls.parseCertString" | "tty.setRawMode" | "url.parse" | "url.resolve" | "util.debug" | "util.error" | "util.isArray" | "util.isBoolean" | "util.isBuffer" | "util.isDate" | "util.isError" | "util.isFunction" | "util.isNull" | "util.isNullOrUndefined" | "util.isNumber" | "util.isObject" | "util.isPrimitive" | "util.isRegExp" | "util.isString" | "util.isSymbol" | "util.isUndefined" | "util.log" | "util.print" | "util.pump" | "util.puts" | "util._extend" | "vm.runInDebugContext" | "zlib.BrotliCompress()" | "zlib.BrotliDecompress()" | "zlib.Deflate()" | "zlib.DeflateRaw()" | "zlib.Gunzip()" | "zlib.Gzip()" | "zlib.Inflate()" | "zlib.InflateRaw()" | "zlib.Unzip()")[] - ignoreGlobalItems?: ("Buffer()" | "new Buffer()" | "COUNTER_NET_SERVER_CONNECTION" | "COUNTER_NET_SERVER_CONNECTION_CLOSE" | "COUNTER_HTTP_SERVER_REQUEST" | "COUNTER_HTTP_SERVER_RESPONSE" | "COUNTER_HTTP_CLIENT_REQUEST" | "COUNTER_HTTP_CLIENT_RESPONSE" | "GLOBAL" | "Intl.v8BreakIterator" | "require.extensions" | "root" | "process.EventEmitter" | "process.assert" | "process.binding" | "process.env.NODE_REPL_HISTORY_FILE" | "process.report.triggerReport")[] - ignoreIndirectDependencies?: boolean -}] +type NNoDeprecatedApi = + | [] + | [ + { + version?: string; + ignoreModuleItems?: ( + | "_linklist" + | "_stream_wrap" + | "async_hooks.currentId" + | "async_hooks.triggerId" + | "buffer.Buffer()" + | "new buffer.Buffer()" + | "buffer.SlowBuffer" + | "constants" + | "crypto._toBuf" + | "crypto.Credentials" + | "crypto.DEFAULT_ENCODING" + | "crypto.createCipher" + | "crypto.createCredentials" + | "crypto.createDecipher" + | "crypto.fips" + | "crypto.prng" + | "crypto.pseudoRandomBytes" + | "crypto.rng" + | "domain" + | "events.EventEmitter.listenerCount" + | "events.listenerCount" + | "freelist" + | "fs.SyncWriteStream" + | "fs.exists" + | "fs.lchmod" + | "fs.lchmodSync" + | "http.createClient" + | "module.Module.createRequireFromPath" + | "module.Module.requireRepl" + | "module.Module._debug" + | "module.createRequireFromPath" + | "module.requireRepl" + | "module._debug" + | "net._setSimultaneousAccepts" + | "os.getNetworkInterfaces" + | "os.tmpDir" + | "path._makeLong" + | "process.EventEmitter" + | "process.assert" + | "process.binding" + | "process.env.NODE_REPL_HISTORY_FILE" + | "process.report.triggerReport" + | "punycode" + | "readline.codePointAt" + | "readline.getStringWidth" + | "readline.isFullWidthCodePoint" + | "readline.stripVTControlCharacters" + | "repl.REPLServer" + | "repl.Recoverable" + | "repl.REPL_MODE_MAGIC" + | "safe-buffer.Buffer()" + | "new safe-buffer.Buffer()" + | "safe-buffer.SlowBuffer" + | "sys" + | "timers.enroll" + | "timers.unenroll" + | "tls.CleartextStream" + | "tls.CryptoStream" + | "tls.SecurePair" + | "tls.convertNPNProtocols" + | "tls.createSecurePair" + | "tls.parseCertString" + | "tty.setRawMode" + | "url.parse" + | "url.resolve" + | "util.debug" + | "util.error" + | "util.isArray" + | "util.isBoolean" + | "util.isBuffer" + | "util.isDate" + | "util.isError" + | "util.isFunction" + | "util.isNull" + | "util.isNullOrUndefined" + | "util.isNumber" + | "util.isObject" + | "util.isPrimitive" + | "util.isRegExp" + | "util.isString" + | "util.isSymbol" + | "util.isUndefined" + | "util.log" + | "util.print" + | "util.pump" + | "util.puts" + | "util._extend" + | "vm.runInDebugContext" + | "zlib.BrotliCompress()" + | "zlib.BrotliDecompress()" + | "zlib.Deflate()" + | "zlib.DeflateRaw()" + | "zlib.Gunzip()" + | "zlib.Gzip()" + | "zlib.Inflate()" + | "zlib.InflateRaw()" + | "zlib.Unzip()" + )[]; + ignoreGlobalItems?: ( + | "Buffer()" + | "new Buffer()" + | "COUNTER_NET_SERVER_CONNECTION" + | "COUNTER_NET_SERVER_CONNECTION_CLOSE" + | "COUNTER_HTTP_SERVER_REQUEST" + | "COUNTER_HTTP_SERVER_RESPONSE" + | "COUNTER_HTTP_CLIENT_REQUEST" + | "COUNTER_HTTP_CLIENT_RESPONSE" + | "GLOBAL" + | "Intl.v8BreakIterator" + | "require.extensions" + | "root" + | "process.EventEmitter" + | "process.assert" + | "process.binding" + | "process.env.NODE_REPL_HISTORY_FILE" + | "process.report.triggerReport" + )[]; + ignoreIndirectDependencies?: boolean; + }, + ]; // ----- n/no-extraneous-import ----- -type NNoExtraneousImport = []|[{ - allowModules?: string[] - convertPath?: ({ - - [k: string]: [string, string] - } | [{ - - include: [string, ...(string)[]] - exclude?: string[] - - replace: [string, string] - }, ...({ - - include: [string, ...(string)[]] - exclude?: string[] - - replace: [string, string] - })[]]) - resolvePaths?: string[] - resolverConfig?: { - [k: string]: unknown | undefined - } -}] +type NNoExtraneousImport = + | [] + | [ + { + allowModules?: string[]; + convertPath?: + | { + [k: string]: [string, string]; + } + | [ + { + include: [string, ...string[]]; + exclude?: string[]; + + replace: [string, string]; + }, + ...{ + include: [string, ...string[]]; + exclude?: string[]; + + replace: [string, string]; + }[], + ]; + resolvePaths?: string[]; + resolverConfig?: { + [k: string]: unknown | undefined; + }; + }, + ]; // ----- n/no-extraneous-require ----- -type NNoExtraneousRequire = []|[{ - allowModules?: string[] - convertPath?: ({ - - [k: string]: [string, string] - } | [{ - - include: [string, ...(string)[]] - exclude?: string[] - - replace: [string, string] - }, ...({ - - include: [string, ...(string)[]] - exclude?: string[] - - replace: [string, string] - })[]]) - resolvePaths?: string[] - resolverConfig?: { - [k: string]: unknown | undefined - } - tryExtensions?: string[] -}] +type NNoExtraneousRequire = + | [] + | [ + { + allowModules?: string[]; + convertPath?: + | { + [k: string]: [string, string]; + } + | [ + { + include: [string, ...string[]]; + exclude?: string[]; + + replace: [string, string]; + }, + ...{ + include: [string, ...string[]]; + exclude?: string[]; + + replace: [string, string]; + }[], + ]; + resolvePaths?: string[]; + resolverConfig?: { + [k: string]: unknown | undefined; + }; + tryExtensions?: string[]; + }, + ]; // ----- n/no-hide-core-modules ----- -type NNoHideCoreModules = []|[{ - allow?: ("assert" | "buffer" | "child_process" | "cluster" | "console" | "constants" | "crypto" | "dgram" | "dns" | "events" | "fs" | "http" | "https" | "module" | "net" | "os" | "path" | "querystring" | "readline" | "repl" | "stream" | "string_decoder" | "timers" | "tls" | "tty" | "url" | "util" | "vm" | "zlib")[] - ignoreDirectDependencies?: boolean - ignoreIndirectDependencies?: boolean -}] +type NNoHideCoreModules = + | [] + | [ + { + allow?: ( + | "assert" + | "buffer" + | "child_process" + | "cluster" + | "console" + | "constants" + | "crypto" + | "dgram" + | "dns" + | "events" + | "fs" + | "http" + | "https" + | "module" + | "net" + | "os" + | "path" + | "querystring" + | "readline" + | "repl" + | "stream" + | "string_decoder" + | "timers" + | "tls" + | "tty" + | "url" + | "util" + | "vm" + | "zlib" + )[]; + ignoreDirectDependencies?: boolean; + ignoreIndirectDependencies?: boolean; + }, + ]; // ----- n/no-missing-import ----- -type NNoMissingImport = []|[{ - allowModules?: string[] - resolvePaths?: string[] - resolverConfig?: { - [k: string]: unknown | undefined - } - tryExtensions?: string[] - ignoreTypeImport?: boolean - tsconfigPath?: string - typescriptExtensionMap?: (unknown[][] | ("react" | "react-jsx" | "react-jsxdev" | "react-native" | "preserve")) -}] +type NNoMissingImport = + | [] + | [ + { + allowModules?: string[]; + resolvePaths?: string[]; + resolverConfig?: { + [k: string]: unknown | undefined; + }; + tryExtensions?: string[]; + ignoreTypeImport?: boolean; + tsconfigPath?: string; + typescriptExtensionMap?: unknown[][] | ("react" | "react-jsx" | "react-jsxdev" | "react-native" | "preserve"); + }, + ]; // ----- n/no-missing-require ----- -type NNoMissingRequire = []|[{ - allowModules?: string[] - tryExtensions?: string[] - resolvePaths?: string[] - resolverConfig?: { - [k: string]: unknown | undefined - } - typescriptExtensionMap?: (unknown[][] | ("react" | "react-jsx" | "react-jsxdev" | "react-native" | "preserve")) - tsconfigPath?: string -}] +type NNoMissingRequire = + | [] + | [ + { + allowModules?: string[]; + tryExtensions?: string[]; + resolvePaths?: string[]; + resolverConfig?: { + [k: string]: unknown | undefined; + }; + typescriptExtensionMap?: unknown[][] | ("react" | "react-jsx" | "react-jsxdev" | "react-native" | "preserve"); + tsconfigPath?: string; + }, + ]; // ----- n/no-mixed-requires ----- -type NNoMixedRequires = []|[(boolean | { - grouping?: boolean - allowCall?: boolean -})] +type NNoMixedRequires = + | [] + | [ + | boolean + | { + grouping?: boolean; + allowCall?: boolean; + }, + ]; // ----- n/no-process-env ----- -type NNoProcessEnv = []|[{ - allowedVariables?: string[] -}] +type NNoProcessEnv = + | [] + | [ + { + allowedVariables?: string[]; + }, + ]; // ----- n/no-restricted-import ----- -type NNoRestrictedImport = []|[(string | { - name: (string | string[]) - message?: string -})[]] +type NNoRestrictedImport = + | [] + | [ + ( + | string + | { + name: string | string[]; + message?: string; + } + )[], + ]; // ----- n/no-restricted-require ----- -type NNoRestrictedRequire = []|[(string | { - name: (string | string[]) - message?: string -})[]] +type NNoRestrictedRequire = + | [] + | [ + ( + | string + | { + name: string | string[]; + message?: string; + } + )[], + ]; // ----- n/no-sync ----- -type NNoSync = []|[{ - allowAtRootLevel?: boolean - ignores?: string[] -}] +type NNoSync = + | [] + | [ + { + allowAtRootLevel?: boolean; + ignores?: string[]; + }, + ]; // ----- n/no-unpublished-bin ----- -type NNoUnpublishedBin = []|[{ - convertPath?: ({ - - [k: string]: [string, string] - } | [{ - - include: [string, ...(string)[]] - exclude?: string[] - - replace: [string, string] - }, ...({ - - include: [string, ...(string)[]] - exclude?: string[] - - replace: [string, string] - })[]]) - [k: string]: unknown | undefined -}] +type NNoUnpublishedBin = + | [] + | [ + { + convertPath?: + | { + [k: string]: [string, string]; + } + | [ + { + include: [string, ...string[]]; + exclude?: string[]; + + replace: [string, string]; + }, + ...{ + include: [string, ...string[]]; + exclude?: string[]; + + replace: [string, string]; + }[], + ]; + [k: string]: unknown | undefined; + }, + ]; // ----- n/no-unpublished-import ----- -type NNoUnpublishedImport = []|[{ - allowModules?: string[] - convertPath?: ({ - - [k: string]: [string, string] - } | [{ - - include: [string, ...(string)[]] - exclude?: string[] - - replace: [string, string] - }, ...({ - - include: [string, ...(string)[]] - exclude?: string[] - - replace: [string, string] - })[]]) - resolvePaths?: string[] - resolverConfig?: { - [k: string]: unknown | undefined - } - tryExtensions?: string[] - ignoreTypeImport?: boolean - ignorePrivate?: boolean -}] +type NNoUnpublishedImport = + | [] + | [ + { + allowModules?: string[]; + convertPath?: + | { + [k: string]: [string, string]; + } + | [ + { + include: [string, ...string[]]; + exclude?: string[]; + + replace: [string, string]; + }, + ...{ + include: [string, ...string[]]; + exclude?: string[]; + + replace: [string, string]; + }[], + ]; + resolvePaths?: string[]; + resolverConfig?: { + [k: string]: unknown | undefined; + }; + tryExtensions?: string[]; + ignoreTypeImport?: boolean; + ignorePrivate?: boolean; + }, + ]; // ----- n/no-unpublished-require ----- -type NNoUnpublishedRequire = []|[{ - allowModules?: string[] - convertPath?: ({ - - [k: string]: [string, string] - } | [{ - - include: [string, ...(string)[]] - exclude?: string[] - - replace: [string, string] - }, ...({ - - include: [string, ...(string)[]] - exclude?: string[] - - replace: [string, string] - })[]]) - resolvePaths?: string[] - resolverConfig?: { - [k: string]: unknown | undefined - } - tryExtensions?: string[] - ignorePrivate?: boolean -}] +type NNoUnpublishedRequire = + | [] + | [ + { + allowModules?: string[]; + convertPath?: + | { + [k: string]: [string, string]; + } + | [ + { + include: [string, ...string[]]; + exclude?: string[]; + + replace: [string, string]; + }, + ...{ + include: [string, ...string[]]; + exclude?: string[]; + + replace: [string, string]; + }[], + ]; + resolvePaths?: string[]; + resolverConfig?: { + [k: string]: unknown | undefined; + }; + tryExtensions?: string[]; + ignorePrivate?: boolean; + }, + ]; // ----- n/no-unsupported-features/es-builtins ----- -type NNoUnsupportedFeaturesEsBuiltins = []|[{ - version?: string - ignores?: ("AggregateError" | "Array" | "Array.from" | "Array.isArray" | "Array.length" | "Array.of" | "Array.toLocaleString" | "ArrayBuffer" | "ArrayBuffer.isView" | "Atomics" | "Atomics.add" | "Atomics.and" | "Atomics.compareExchange" | "Atomics.exchange" | "Atomics.isLockFree" | "Atomics.load" | "Atomics.notify" | "Atomics.or" | "Atomics.store" | "Atomics.sub" | "Atomics.wait" | "Atomics.waitAsync" | "Atomics.xor" | "BigInt" | "BigInt.asIntN" | "BigInt.asUintN" | "BigInt64Array" | "BigInt64Array.BYTES_PER_ELEMENT" | "BigInt64Array.from" | "BigInt64Array.name" | "BigInt64Array.of" | "BigUint64Array" | "BigUint64Array.BYTES_PER_ELEMENT" | "BigUint64Array.from" | "BigUint64Array.name" | "BigUint64Array.of" | "Boolean" | "DataView" | "Date" | "Date.UTC" | "Date.now" | "Date.parse" | "Date.toLocaleDateString" | "Date.toLocaleString" | "Date.toLocaleTimeString" | "Error" | "Error.cause" | "EvalError" | "FinalizationRegistry" | "Float32Array" | "Float32Array.BYTES_PER_ELEMENT" | "Float32Array.from" | "Float32Array.name" | "Float32Array.of" | "Float64Array" | "Float64Array.BYTES_PER_ELEMENT" | "Float64Array.from" | "Float64Array.name" | "Float64Array.of" | "Function" | "Function.length" | "Function.name" | "Infinity" | "Int16Array" | "Int16Array.BYTES_PER_ELEMENT" | "Int16Array.from" | "Int16Array.name" | "Int16Array.of" | "Int32Array" | "Int32Array.BYTES_PER_ELEMENT" | "Int32Array.from" | "Int32Array.name" | "Int32Array.of" | "Int8Array" | "Int8Array.BYTES_PER_ELEMENT" | "Int8Array.from" | "Int8Array.name" | "Int8Array.of" | "Intl" | "Intl.Collator" | "Intl.DateTimeFormat" | "Intl.DisplayNames" | "Intl.ListFormat" | "Intl.Locale" | "Intl.NumberFormat" | "Intl.PluralRules" | "Intl.RelativeTimeFormat" | "Intl.Segmenter" | "Intl.Segments" | "Intl.getCanonicalLocales" | "Intl.supportedValuesOf" | "JSON" | "JSON.parse" | "JSON.stringify" | "Map" | "Map.groupBy" | "Math" | "Math.E" | "Math.LN10" | "Math.LN2" | "Math.LOG10E" | "Math.LOG2E" | "Math.PI" | "Math.SQRT1_2" | "Math.SQRT2" | "Math.abs" | "Math.acos" | "Math.acosh" | "Math.asin" | "Math.asinh" | "Math.atan" | "Math.atan2" | "Math.atanh" | "Math.cbrt" | "Math.ceil" | "Math.clz32" | "Math.cos" | "Math.cosh" | "Math.exp" | "Math.expm1" | "Math.floor" | "Math.fround" | "Math.hypot" | "Math.imul" | "Math.log" | "Math.log10" | "Math.log1p" | "Math.log2" | "Math.max" | "Math.min" | "Math.pow" | "Math.random" | "Math.round" | "Math.sign" | "Math.sin" | "Math.sinh" | "Math.sqrt" | "Math.tan" | "Math.tanh" | "Math.trunc" | "NaN" | "Number.EPSILON" | "Number.MAX_SAFE_INTEGER" | "Number.MAX_VALUE" | "Number.MIN_SAFE_INTEGER" | "Number.MIN_VALUE" | "Number.NEGATIVE_INFINITY" | "Number.NaN" | "Number.POSITIVE_INFINITY" | "Number.isFinite" | "Number.isInteger" | "Number.isNaN" | "Number.isSafeInteger" | "Number.parseFloat" | "Number.parseInt" | "Number.toLocaleString" | "Object.assign" | "Object.create" | "Object.defineGetter" | "Object.defineProperties" | "Object.defineProperty" | "Object.defineSetter" | "Object.entries" | "Object.freeze" | "Object.fromEntries" | "Object.getOwnPropertyDescriptor" | "Object.getOwnPropertyDescriptors" | "Object.getOwnPropertyNames" | "Object.getOwnPropertySymbols" | "Object.getPrototypeOf" | "Object.groupBy" | "Object.hasOwn" | "Object.is" | "Object.isExtensible" | "Object.isFrozen" | "Object.isSealed" | "Object.keys" | "Object.lookupGetter" | "Object.lookupSetter" | "Object.preventExtensions" | "Object.proto" | "Object.seal" | "Object.setPrototypeOf" | "Object.values" | "Promise" | "Promise.all" | "Promise.allSettled" | "Promise.any" | "Promise.race" | "Promise.reject" | "Promise.resolve" | "Proxy" | "Proxy.revocable" | "RangeError" | "ReferenceError" | "Reflect" | "Reflect.apply" | "Reflect.construct" | "Reflect.defineProperty" | "Reflect.deleteProperty" | "Reflect.get" | "Reflect.getOwnPropertyDescriptor" | "Reflect.getPrototypeOf" | "Reflect.has" | "Reflect.isExtensible" | "Reflect.ownKeys" | "Reflect.preventExtensions" | "Reflect.set" | "Reflect.setPrototypeOf" | "RegExp" | "RegExp.dotAll" | "RegExp.hasIndices" | "RegExp.input" | "RegExp.lastIndex" | "RegExp.lastMatch" | "RegExp.lastParen" | "RegExp.leftContext" | "RegExp.n" | "RegExp.rightContext" | "Set" | "SharedArrayBuffer" | "String" | "String.fromCharCode" | "String.fromCodePoint" | "String.length" | "String.localeCompare" | "String.raw" | "String.toLocaleLowerCase" | "String.toLocaleUpperCase" | "Symbol" | "Symbol.asyncIterator" | "Symbol.for" | "Symbol.hasInstance" | "Symbol.isConcatSpreadable" | "Symbol.iterator" | "Symbol.keyFor" | "Symbol.match" | "Symbol.matchAll" | "Symbol.replace" | "Symbol.search" | "Symbol.species" | "Symbol.split" | "Symbol.toPrimitive" | "Symbol.toStringTag" | "Symbol.unscopables" | "SyntaxError" | "TypeError" | "URIError" | "Uint16Array" | "Uint16Array.BYTES_PER_ELEMENT" | "Uint16Array.from" | "Uint16Array.name" | "Uint16Array.of" | "Uint32Array" | "Uint32Array.BYTES_PER_ELEMENT" | "Uint32Array.from" | "Uint32Array.name" | "Uint32Array.of" | "Uint8Array" | "Uint8Array.BYTES_PER_ELEMENT" | "Uint8Array.from" | "Uint8Array.name" | "Uint8Array.of" | "Uint8ClampedArray" | "Uint8ClampedArray.BYTES_PER_ELEMENT" | "Uint8ClampedArray.from" | "Uint8ClampedArray.name" | "Uint8ClampedArray.of" | "WeakMap" | "WeakRef" | "WeakSet" | "decodeURI" | "decodeURIComponent" | "encodeURI" | "encodeURIComponent" | "escape" | "eval" | "globalThis" | "isFinite" | "isNaN" | "parseFloat" | "parseInt" | "unescape")[] -}] +type NNoUnsupportedFeaturesEsBuiltins = + | [] + | [ + { + version?: string; + ignores?: ( + | "AggregateError" + | "Array" + | "Array.from" + | "Array.isArray" + | "Array.length" + | "Array.of" + | "Array.toLocaleString" + | "ArrayBuffer" + | "ArrayBuffer.isView" + | "Atomics" + | "Atomics.add" + | "Atomics.and" + | "Atomics.compareExchange" + | "Atomics.exchange" + | "Atomics.isLockFree" + | "Atomics.load" + | "Atomics.notify" + | "Atomics.or" + | "Atomics.store" + | "Atomics.sub" + | "Atomics.wait" + | "Atomics.waitAsync" + | "Atomics.xor" + | "BigInt" + | "BigInt.asIntN" + | "BigInt.asUintN" + | "BigInt64Array" + | "BigInt64Array.BYTES_PER_ELEMENT" + | "BigInt64Array.from" + | "BigInt64Array.name" + | "BigInt64Array.of" + | "BigUint64Array" + | "BigUint64Array.BYTES_PER_ELEMENT" + | "BigUint64Array.from" + | "BigUint64Array.name" + | "BigUint64Array.of" + | "Boolean" + | "DataView" + | "Date" + | "Date.UTC" + | "Date.now" + | "Date.parse" + | "Date.toLocaleDateString" + | "Date.toLocaleString" + | "Date.toLocaleTimeString" + | "Error" + | "Error.cause" + | "EvalError" + | "FinalizationRegistry" + | "Float32Array" + | "Float32Array.BYTES_PER_ELEMENT" + | "Float32Array.from" + | "Float32Array.name" + | "Float32Array.of" + | "Float64Array" + | "Float64Array.BYTES_PER_ELEMENT" + | "Float64Array.from" + | "Float64Array.name" + | "Float64Array.of" + | "Function" + | "Function.length" + | "Function.name" + | "Infinity" + | "Int16Array" + | "Int16Array.BYTES_PER_ELEMENT" + | "Int16Array.from" + | "Int16Array.name" + | "Int16Array.of" + | "Int32Array" + | "Int32Array.BYTES_PER_ELEMENT" + | "Int32Array.from" + | "Int32Array.name" + | "Int32Array.of" + | "Int8Array" + | "Int8Array.BYTES_PER_ELEMENT" + | "Int8Array.from" + | "Int8Array.name" + | "Int8Array.of" + | "Intl" + | "Intl.Collator" + | "Intl.DateTimeFormat" + | "Intl.DisplayNames" + | "Intl.ListFormat" + | "Intl.Locale" + | "Intl.NumberFormat" + | "Intl.PluralRules" + | "Intl.RelativeTimeFormat" + | "Intl.Segmenter" + | "Intl.Segments" + | "Intl.getCanonicalLocales" + | "Intl.supportedValuesOf" + | "JSON" + | "JSON.parse" + | "JSON.stringify" + | "Map" + | "Map.groupBy" + | "Math" + | "Math.E" + | "Math.LN10" + | "Math.LN2" + | "Math.LOG10E" + | "Math.LOG2E" + | "Math.PI" + | "Math.SQRT1_2" + | "Math.SQRT2" + | "Math.abs" + | "Math.acos" + | "Math.acosh" + | "Math.asin" + | "Math.asinh" + | "Math.atan" + | "Math.atan2" + | "Math.atanh" + | "Math.cbrt" + | "Math.ceil" + | "Math.clz32" + | "Math.cos" + | "Math.cosh" + | "Math.exp" + | "Math.expm1" + | "Math.floor" + | "Math.fround" + | "Math.hypot" + | "Math.imul" + | "Math.log" + | "Math.log10" + | "Math.log1p" + | "Math.log2" + | "Math.max" + | "Math.min" + | "Math.pow" + | "Math.random" + | "Math.round" + | "Math.sign" + | "Math.sin" + | "Math.sinh" + | "Math.sqrt" + | "Math.tan" + | "Math.tanh" + | "Math.trunc" + | "NaN" + | "Number.EPSILON" + | "Number.MAX_SAFE_INTEGER" + | "Number.MAX_VALUE" + | "Number.MIN_SAFE_INTEGER" + | "Number.MIN_VALUE" + | "Number.NEGATIVE_INFINITY" + | "Number.NaN" + | "Number.POSITIVE_INFINITY" + | "Number.isFinite" + | "Number.isInteger" + | "Number.isNaN" + | "Number.isSafeInteger" + | "Number.parseFloat" + | "Number.parseInt" + | "Number.toLocaleString" + | "Object.assign" + | "Object.create" + | "Object.defineGetter" + | "Object.defineProperties" + | "Object.defineProperty" + | "Object.defineSetter" + | "Object.entries" + | "Object.freeze" + | "Object.fromEntries" + | "Object.getOwnPropertyDescriptor" + | "Object.getOwnPropertyDescriptors" + | "Object.getOwnPropertyNames" + | "Object.getOwnPropertySymbols" + | "Object.getPrototypeOf" + | "Object.groupBy" + | "Object.hasOwn" + | "Object.is" + | "Object.isExtensible" + | "Object.isFrozen" + | "Object.isSealed" + | "Object.keys" + | "Object.lookupGetter" + | "Object.lookupSetter" + | "Object.preventExtensions" + | "Object.proto" + | "Object.seal" + | "Object.setPrototypeOf" + | "Object.values" + | "Promise" + | "Promise.all" + | "Promise.allSettled" + | "Promise.any" + | "Promise.race" + | "Promise.reject" + | "Promise.resolve" + | "Proxy" + | "Proxy.revocable" + | "RangeError" + | "ReferenceError" + | "Reflect" + | "Reflect.apply" + | "Reflect.construct" + | "Reflect.defineProperty" + | "Reflect.deleteProperty" + | "Reflect.get" + | "Reflect.getOwnPropertyDescriptor" + | "Reflect.getPrototypeOf" + | "Reflect.has" + | "Reflect.isExtensible" + | "Reflect.ownKeys" + | "Reflect.preventExtensions" + | "Reflect.set" + | "Reflect.setPrototypeOf" + | "RegExp" + | "RegExp.dotAll" + | "RegExp.hasIndices" + | "RegExp.input" + | "RegExp.lastIndex" + | "RegExp.lastMatch" + | "RegExp.lastParen" + | "RegExp.leftContext" + | "RegExp.n" + | "RegExp.rightContext" + | "Set" + | "SharedArrayBuffer" + | "String" + | "String.fromCharCode" + | "String.fromCodePoint" + | "String.length" + | "String.localeCompare" + | "String.raw" + | "String.toLocaleLowerCase" + | "String.toLocaleUpperCase" + | "Symbol" + | "Symbol.asyncIterator" + | "Symbol.for" + | "Symbol.hasInstance" + | "Symbol.isConcatSpreadable" + | "Symbol.iterator" + | "Symbol.keyFor" + | "Symbol.match" + | "Symbol.matchAll" + | "Symbol.replace" + | "Symbol.search" + | "Symbol.species" + | "Symbol.split" + | "Symbol.toPrimitive" + | "Symbol.toStringTag" + | "Symbol.unscopables" + | "SyntaxError" + | "TypeError" + | "URIError" + | "Uint16Array" + | "Uint16Array.BYTES_PER_ELEMENT" + | "Uint16Array.from" + | "Uint16Array.name" + | "Uint16Array.of" + | "Uint32Array" + | "Uint32Array.BYTES_PER_ELEMENT" + | "Uint32Array.from" + | "Uint32Array.name" + | "Uint32Array.of" + | "Uint8Array" + | "Uint8Array.BYTES_PER_ELEMENT" + | "Uint8Array.from" + | "Uint8Array.name" + | "Uint8Array.of" + | "Uint8ClampedArray" + | "Uint8ClampedArray.BYTES_PER_ELEMENT" + | "Uint8ClampedArray.from" + | "Uint8ClampedArray.name" + | "Uint8ClampedArray.of" + | "WeakMap" + | "WeakRef" + | "WeakSet" + | "decodeURI" + | "decodeURIComponent" + | "encodeURI" + | "encodeURIComponent" + | "escape" + | "eval" + | "globalThis" + | "isFinite" + | "isNaN" + | "parseFloat" + | "parseInt" + | "unescape" + )[]; + }, + ]; // ----- n/no-unsupported-features/es-syntax ----- -type NNoUnsupportedFeaturesEsSyntax = []|[{ - version?: string - ignores?: ("no-accessor-properties" | "accessor-properties" | "accessorProperties" | "no-arbitrary-module-namespace-names" | "arbitrary-module-namespace-names" | "arbitraryModuleNamespaceNames" | "no-array-from" | "array-from" | "arrayFrom" | "no-array-isarray" | "array-isarray" | "arrayIsarray" | "no-array-of" | "array-of" | "arrayOf" | "no-array-prototype-copywithin" | "array-prototype-copywithin" | "arrayPrototypeCopywithin" | "no-array-prototype-entries" | "array-prototype-entries" | "arrayPrototypeEntries" | "no-array-prototype-every" | "array-prototype-every" | "arrayPrototypeEvery" | "no-array-prototype-fill" | "array-prototype-fill" | "arrayPrototypeFill" | "no-array-prototype-filter" | "array-prototype-filter" | "arrayPrototypeFilter" | "no-array-prototype-find" | "array-prototype-find" | "arrayPrototypeFind" | "no-array-prototype-findindex" | "array-prototype-findindex" | "arrayPrototypeFindindex" | "no-array-prototype-findlast-findlastindex" | "array-prototype-findlast-findlastindex" | "arrayPrototypeFindlastFindlastindex" | "no-array-prototype-flat" | "array-prototype-flat" | "arrayPrototypeFlat" | "no-array-prototype-foreach" | "array-prototype-foreach" | "arrayPrototypeForeach" | "no-array-prototype-includes" | "array-prototype-includes" | "arrayPrototypeIncludes" | "no-array-prototype-indexof" | "array-prototype-indexof" | "arrayPrototypeIndexof" | "no-array-prototype-keys" | "array-prototype-keys" | "arrayPrototypeKeys" | "no-array-prototype-lastindexof" | "array-prototype-lastindexof" | "arrayPrototypeLastindexof" | "no-array-prototype-map" | "array-prototype-map" | "arrayPrototypeMap" | "no-array-prototype-reduce" | "array-prototype-reduce" | "arrayPrototypeReduce" | "no-array-prototype-reduceright" | "array-prototype-reduceright" | "arrayPrototypeReduceright" | "no-array-prototype-some" | "array-prototype-some" | "arrayPrototypeSome" | "no-array-prototype-toreversed" | "array-prototype-toreversed" | "arrayPrototypeToreversed" | "no-array-prototype-tosorted" | "array-prototype-tosorted" | "arrayPrototypeTosorted" | "no-array-prototype-tospliced" | "array-prototype-tospliced" | "arrayPrototypeTospliced" | "no-array-prototype-values" | "array-prototype-values" | "arrayPrototypeValues" | "no-array-prototype-with" | "array-prototype-with" | "arrayPrototypeWith" | "no-array-string-prototype-at" | "array-string-prototype-at" | "arrayStringPrototypeAt" | "no-arrow-functions" | "arrow-functions" | "arrowFunctions" | "no-async-functions" | "async-functions" | "asyncFunctions" | "no-async-iteration" | "async-iteration" | "asyncIteration" | "no-atomics-waitasync" | "atomics-waitasync" | "atomicsWaitasync" | "no-atomics" | "atomics" | "no-bigint" | "bigint" | "no-binary-numeric-literals" | "binary-numeric-literals" | "binaryNumericLiterals" | "no-block-scoped-functions" | "block-scoped-functions" | "blockScopedFunctions" | "no-block-scoped-variables" | "block-scoped-variables" | "blockScopedVariables" | "no-class-fields" | "class-fields" | "classFields" | "no-class-static-block" | "class-static-block" | "classStaticBlock" | "no-classes" | "classes" | "no-computed-properties" | "computed-properties" | "computedProperties" | "no-date-now" | "date-now" | "dateNow" | "no-date-prototype-getyear-setyear" | "date-prototype-getyear-setyear" | "datePrototypeGetyearSetyear" | "no-date-prototype-togmtstring" | "date-prototype-togmtstring" | "datePrototypeTogmtstring" | "no-default-parameters" | "default-parameters" | "defaultParameters" | "no-destructuring" | "destructuring" | "no-dynamic-import" | "dynamic-import" | "dynamicImport" | "no-error-cause" | "error-cause" | "errorCause" | "no-escape-unescape" | "escape-unescape" | "escapeUnescape" | "no-exponential-operators" | "exponential-operators" | "exponentialOperators" | "no-export-ns-from" | "export-ns-from" | "exportNsFrom" | "no-for-of-loops" | "for-of-loops" | "forOfLoops" | "no-function-declarations-in-if-statement-clauses-without-block" | "function-declarations-in-if-statement-clauses-without-block" | "functionDeclarationsInIfStatementClausesWithoutBlock" | "no-function-prototype-bind" | "function-prototype-bind" | "functionPrototypeBind" | "no-generators" | "generators" | "no-global-this" | "global-this" | "globalThis" | "no-hashbang" | "hashbang" | "no-import-meta" | "import-meta" | "importMeta" | "no-initializers-in-for-in" | "initializers-in-for-in" | "initializersInForIn" | "no-intl-datetimeformat-prototype-formatrange" | "intl-datetimeformat-prototype-formatrange" | "intlDatetimeformatPrototypeFormatrange" | "no-intl-datetimeformat-prototype-formattoparts" | "intl-datetimeformat-prototype-formattoparts" | "intlDatetimeformatPrototypeFormattoparts" | "no-intl-displaynames" | "intl-displaynames" | "intlDisplaynames" | "no-intl-getcanonicallocales" | "intl-getcanonicallocales" | "intlGetcanonicallocales" | "no-intl-listformat" | "intl-listformat" | "intlListformat" | "no-intl-locale" | "intl-locale" | "intlLocale" | "no-intl-numberformat-prototype-formatrange" | "intl-numberformat-prototype-formatrange" | "intlNumberformatPrototypeFormatrange" | "no-intl-numberformat-prototype-formatrangetoparts" | "intl-numberformat-prototype-formatrangetoparts" | "intlNumberformatPrototypeFormatrangetoparts" | "no-intl-numberformat-prototype-formattoparts" | "intl-numberformat-prototype-formattoparts" | "intlNumberformatPrototypeFormattoparts" | "no-intl-pluralrules-prototype-selectrange" | "intl-pluralrules-prototype-selectrange" | "intlPluralrulesPrototypeSelectrange" | "no-intl-pluralrules" | "intl-pluralrules" | "intlPluralrules" | "no-intl-relativetimeformat" | "intl-relativetimeformat" | "intlRelativetimeformat" | "no-intl-segmenter" | "intl-segmenter" | "intlSegmenter" | "no-intl-supportedvaluesof" | "intl-supportedvaluesof" | "intlSupportedvaluesof" | "no-json-superset" | "json-superset" | "jsonSuperset" | "no-json" | "json" | "no-keyword-properties" | "keyword-properties" | "keywordProperties" | "no-labelled-function-declarations" | "labelled-function-declarations" | "labelledFunctionDeclarations" | "no-legacy-object-prototype-accessor-methods" | "legacy-object-prototype-accessor-methods" | "legacyObjectPrototypeAccessorMethods" | "no-logical-assignment-operators" | "logical-assignment-operators" | "logicalAssignmentOperators" | "no-malformed-template-literals" | "malformed-template-literals" | "malformedTemplateLiterals" | "no-map" | "map" | "no-math-acosh" | "math-acosh" | "mathAcosh" | "no-math-asinh" | "math-asinh" | "mathAsinh" | "no-math-atanh" | "math-atanh" | "mathAtanh" | "no-math-cbrt" | "math-cbrt" | "mathCbrt" | "no-math-clz32" | "math-clz32" | "mathClz32" | "no-math-cosh" | "math-cosh" | "mathCosh" | "no-math-expm1" | "math-expm1" | "mathExpm1" | "no-math-fround" | "math-fround" | "mathFround" | "no-math-hypot" | "math-hypot" | "mathHypot" | "no-math-imul" | "math-imul" | "mathImul" | "no-math-log10" | "math-log10" | "mathLog10" | "no-math-log1p" | "math-log1p" | "mathLog1p" | "no-math-log2" | "math-log2" | "mathLog2" | "no-math-sign" | "math-sign" | "mathSign" | "no-math-sinh" | "math-sinh" | "mathSinh" | "no-math-tanh" | "math-tanh" | "mathTanh" | "no-math-trunc" | "math-trunc" | "mathTrunc" | "no-modules" | "modules" | "no-new-target" | "new-target" | "newTarget" | "new.target" | "no-nullish-coalescing-operators" | "nullish-coalescing-operators" | "nullishCoalescingOperators" | "no-number-epsilon" | "number-epsilon" | "numberEpsilon" | "no-number-isfinite" | "number-isfinite" | "numberIsfinite" | "no-number-isinteger" | "number-isinteger" | "numberIsinteger" | "no-number-isnan" | "number-isnan" | "numberIsnan" | "no-number-issafeinteger" | "number-issafeinteger" | "numberIssafeinteger" | "no-number-maxsafeinteger" | "number-maxsafeinteger" | "numberMaxsafeinteger" | "no-number-minsafeinteger" | "number-minsafeinteger" | "numberMinsafeinteger" | "no-number-parsefloat" | "number-parsefloat" | "numberParsefloat" | "no-number-parseint" | "number-parseint" | "numberParseint" | "no-numeric-separators" | "numeric-separators" | "numericSeparators" | "no-object-assign" | "object-assign" | "objectAssign" | "no-object-create" | "object-create" | "objectCreate" | "no-object-defineproperties" | "object-defineproperties" | "objectDefineproperties" | "no-object-defineproperty" | "object-defineproperty" | "objectDefineproperty" | "no-object-entries" | "object-entries" | "objectEntries" | "no-object-freeze" | "object-freeze" | "objectFreeze" | "no-object-fromentries" | "object-fromentries" | "objectFromentries" | "no-object-getownpropertydescriptor" | "object-getownpropertydescriptor" | "objectGetownpropertydescriptor" | "no-object-getownpropertydescriptors" | "object-getownpropertydescriptors" | "objectGetownpropertydescriptors" | "no-object-getownpropertynames" | "object-getownpropertynames" | "objectGetownpropertynames" | "no-object-getownpropertysymbols" | "object-getownpropertysymbols" | "objectGetownpropertysymbols" | "no-object-getprototypeof" | "object-getprototypeof" | "objectGetprototypeof" | "no-object-hasown" | "object-hasown" | "objectHasown" | "no-object-is" | "object-is" | "objectIs" | "no-object-isextensible" | "object-isextensible" | "objectIsextensible" | "no-object-isfrozen" | "object-isfrozen" | "objectIsfrozen" | "no-object-issealed" | "object-issealed" | "objectIssealed" | "no-object-keys" | "object-keys" | "objectKeys" | "no-object-map-groupby" | "object-map-groupby" | "objectMapGroupby" | "no-object-preventextensions" | "object-preventextensions" | "objectPreventextensions" | "no-object-seal" | "object-seal" | "objectSeal" | "no-object-setprototypeof" | "object-setprototypeof" | "objectSetprototypeof" | "no-object-super-properties" | "object-super-properties" | "objectSuperProperties" | "no-object-values" | "object-values" | "objectValues" | "no-octal-numeric-literals" | "octal-numeric-literals" | "octalNumericLiterals" | "no-optional-catch-binding" | "optional-catch-binding" | "optionalCatchBinding" | "no-optional-chaining" | "optional-chaining" | "optionalChaining" | "no-private-in" | "private-in" | "privateIn" | "no-promise-all-settled" | "promise-all-settled" | "promiseAllSettled" | "no-promise-any" | "promise-any" | "promiseAny" | "no-promise-prototype-finally" | "promise-prototype-finally" | "promisePrototypeFinally" | "no-promise-withresolvers" | "promise-withresolvers" | "promiseWithresolvers" | "no-promise" | "promise" | "no-property-shorthands" | "property-shorthands" | "propertyShorthands" | "no-proxy" | "proxy" | "no-reflect" | "reflect" | "no-regexp-d-flag" | "regexp-d-flag" | "regexpDFlag" | "no-regexp-lookbehind-assertions" | "regexp-lookbehind-assertions" | "regexpLookbehindAssertions" | "regexpLookbehind" | "no-regexp-named-capture-groups" | "regexp-named-capture-groups" | "regexpNamedCaptureGroups" | "no-regexp-prototype-compile" | "regexp-prototype-compile" | "regexpPrototypeCompile" | "no-regexp-prototype-flags" | "regexp-prototype-flags" | "regexpPrototypeFlags" | "no-regexp-s-flag" | "regexp-s-flag" | "regexpSFlag" | "regexpS" | "no-regexp-u-flag" | "regexp-u-flag" | "regexpUFlag" | "regexpU" | "no-regexp-unicode-property-escapes-2019" | "regexp-unicode-property-escapes-2019" | "regexpUnicodePropertyEscapes2019" | "no-regexp-unicode-property-escapes-2020" | "regexp-unicode-property-escapes-2020" | "regexpUnicodePropertyEscapes2020" | "no-regexp-unicode-property-escapes-2021" | "regexp-unicode-property-escapes-2021" | "regexpUnicodePropertyEscapes2021" | "no-regexp-unicode-property-escapes-2022" | "regexp-unicode-property-escapes-2022" | "regexpUnicodePropertyEscapes2022" | "no-regexp-unicode-property-escapes-2023" | "regexp-unicode-property-escapes-2023" | "regexpUnicodePropertyEscapes2023" | "no-regexp-unicode-property-escapes" | "regexp-unicode-property-escapes" | "regexpUnicodePropertyEscapes" | "regexpUnicodeProperties" | "no-regexp-v-flag" | "regexp-v-flag" | "regexpVFlag" | "no-regexp-y-flag" | "regexp-y-flag" | "regexpYFlag" | "regexpY" | "no-resizable-and-growable-arraybuffers" | "resizable-and-growable-arraybuffers" | "resizableAndGrowableArraybuffers" | "no-rest-parameters" | "rest-parameters" | "restParameters" | "no-rest-spread-properties" | "rest-spread-properties" | "restSpreadProperties" | "no-set" | "set" | "no-shadow-catch-param" | "shadow-catch-param" | "shadowCatchParam" | "no-shared-array-buffer" | "shared-array-buffer" | "sharedArrayBuffer" | "no-spread-elements" | "spread-elements" | "spreadElements" | "no-string-create-html-methods" | "string-create-html-methods" | "stringCreateHtmlMethods" | "no-string-fromcodepoint" | "string-fromcodepoint" | "stringFromcodepoint" | "no-string-prototype-codepointat" | "string-prototype-codepointat" | "stringPrototypeCodepointat" | "no-string-prototype-endswith" | "string-prototype-endswith" | "stringPrototypeEndswith" | "no-string-prototype-includes" | "string-prototype-includes" | "stringPrototypeIncludes" | "no-string-prototype-iswellformed-towellformed" | "string-prototype-iswellformed-towellformed" | "stringPrototypeIswellformedTowellformed" | "no-string-prototype-matchall" | "string-prototype-matchall" | "stringPrototypeMatchall" | "no-string-prototype-normalize" | "string-prototype-normalize" | "stringPrototypeNormalize" | "no-string-prototype-padstart-padend" | "string-prototype-padstart-padend" | "stringPrototypePadstartPadend" | "no-string-prototype-repeat" | "string-prototype-repeat" | "stringPrototypeRepeat" | "no-string-prototype-replaceall" | "string-prototype-replaceall" | "stringPrototypeReplaceall" | "no-string-prototype-startswith" | "string-prototype-startswith" | "stringPrototypeStartswith" | "no-string-prototype-substr" | "string-prototype-substr" | "stringPrototypeSubstr" | "no-string-prototype-trim" | "string-prototype-trim" | "stringPrototypeTrim" | "no-string-prototype-trimleft-trimright" | "string-prototype-trimleft-trimright" | "stringPrototypeTrimleftTrimright" | "no-string-prototype-trimstart-trimend" | "string-prototype-trimstart-trimend" | "stringPrototypeTrimstartTrimend" | "no-string-raw" | "string-raw" | "stringRaw" | "no-subclassing-builtins" | "subclassing-builtins" | "subclassingBuiltins" | "no-symbol-prototype-description" | "symbol-prototype-description" | "symbolPrototypeDescription" | "no-symbol" | "symbol" | "no-template-literals" | "template-literals" | "templateLiterals" | "no-top-level-await" | "top-level-await" | "topLevelAwait" | "no-trailing-commas" | "trailing-commas" | "trailingCommas" | "no-trailing-function-commas" | "trailing-function-commas" | "trailingFunctionCommas" | "trailingCommasInFunctions" | "no-typed-arrays" | "typed-arrays" | "typedArrays" | "no-unicode-codepoint-escapes" | "unicode-codepoint-escapes" | "unicodeCodepointEscapes" | "unicodeCodePointEscapes" | "no-weak-map" | "weak-map" | "weakMap" | "no-weak-set" | "weak-set" | "weakSet" | "no-weakrefs" | "weakrefs")[] -}] +type NNoUnsupportedFeaturesEsSyntax = + | [] + | [ + { + version?: string; + ignores?: ( + | "no-accessor-properties" + | "accessor-properties" + | "accessorProperties" + | "no-arbitrary-module-namespace-names" + | "arbitrary-module-namespace-names" + | "arbitraryModuleNamespaceNames" + | "no-array-from" + | "array-from" + | "arrayFrom" + | "no-array-isarray" + | "array-isarray" + | "arrayIsarray" + | "no-array-of" + | "array-of" + | "arrayOf" + | "no-array-prototype-copywithin" + | "array-prototype-copywithin" + | "arrayPrototypeCopywithin" + | "no-array-prototype-entries" + | "array-prototype-entries" + | "arrayPrototypeEntries" + | "no-array-prototype-every" + | "array-prototype-every" + | "arrayPrototypeEvery" + | "no-array-prototype-fill" + | "array-prototype-fill" + | "arrayPrototypeFill" + | "no-array-prototype-filter" + | "array-prototype-filter" + | "arrayPrototypeFilter" + | "no-array-prototype-find" + | "array-prototype-find" + | "arrayPrototypeFind" + | "no-array-prototype-findindex" + | "array-prototype-findindex" + | "arrayPrototypeFindindex" + | "no-array-prototype-findlast-findlastindex" + | "array-prototype-findlast-findlastindex" + | "arrayPrototypeFindlastFindlastindex" + | "no-array-prototype-flat" + | "array-prototype-flat" + | "arrayPrototypeFlat" + | "no-array-prototype-foreach" + | "array-prototype-foreach" + | "arrayPrototypeForeach" + | "no-array-prototype-includes" + | "array-prototype-includes" + | "arrayPrototypeIncludes" + | "no-array-prototype-indexof" + | "array-prototype-indexof" + | "arrayPrototypeIndexof" + | "no-array-prototype-keys" + | "array-prototype-keys" + | "arrayPrototypeKeys" + | "no-array-prototype-lastindexof" + | "array-prototype-lastindexof" + | "arrayPrototypeLastindexof" + | "no-array-prototype-map" + | "array-prototype-map" + | "arrayPrototypeMap" + | "no-array-prototype-reduce" + | "array-prototype-reduce" + | "arrayPrototypeReduce" + | "no-array-prototype-reduceright" + | "array-prototype-reduceright" + | "arrayPrototypeReduceright" + | "no-array-prototype-some" + | "array-prototype-some" + | "arrayPrototypeSome" + | "no-array-prototype-toreversed" + | "array-prototype-toreversed" + | "arrayPrototypeToreversed" + | "no-array-prototype-tosorted" + | "array-prototype-tosorted" + | "arrayPrototypeTosorted" + | "no-array-prototype-tospliced" + | "array-prototype-tospliced" + | "arrayPrototypeTospliced" + | "no-array-prototype-values" + | "array-prototype-values" + | "arrayPrototypeValues" + | "no-array-prototype-with" + | "array-prototype-with" + | "arrayPrototypeWith" + | "no-array-string-prototype-at" + | "array-string-prototype-at" + | "arrayStringPrototypeAt" + | "no-arrow-functions" + | "arrow-functions" + | "arrowFunctions" + | "no-async-functions" + | "async-functions" + | "asyncFunctions" + | "no-async-iteration" + | "async-iteration" + | "asyncIteration" + | "no-atomics-waitasync" + | "atomics-waitasync" + | "atomicsWaitasync" + | "no-atomics" + | "atomics" + | "no-bigint" + | "bigint" + | "no-binary-numeric-literals" + | "binary-numeric-literals" + | "binaryNumericLiterals" + | "no-block-scoped-functions" + | "block-scoped-functions" + | "blockScopedFunctions" + | "no-block-scoped-variables" + | "block-scoped-variables" + | "blockScopedVariables" + | "no-class-fields" + | "class-fields" + | "classFields" + | "no-class-static-block" + | "class-static-block" + | "classStaticBlock" + | "no-classes" + | "classes" + | "no-computed-properties" + | "computed-properties" + | "computedProperties" + | "no-date-now" + | "date-now" + | "dateNow" + | "no-date-prototype-getyear-setyear" + | "date-prototype-getyear-setyear" + | "datePrototypeGetyearSetyear" + | "no-date-prototype-togmtstring" + | "date-prototype-togmtstring" + | "datePrototypeTogmtstring" + | "no-default-parameters" + | "default-parameters" + | "defaultParameters" + | "no-destructuring" + | "destructuring" + | "no-dynamic-import" + | "dynamic-import" + | "dynamicImport" + | "no-error-cause" + | "error-cause" + | "errorCause" + | "no-escape-unescape" + | "escape-unescape" + | "escapeUnescape" + | "no-exponential-operators" + | "exponential-operators" + | "exponentialOperators" + | "no-export-ns-from" + | "export-ns-from" + | "exportNsFrom" + | "no-for-of-loops" + | "for-of-loops" + | "forOfLoops" + | "no-function-declarations-in-if-statement-clauses-without-block" + | "function-declarations-in-if-statement-clauses-without-block" + | "functionDeclarationsInIfStatementClausesWithoutBlock" + | "no-function-prototype-bind" + | "function-prototype-bind" + | "functionPrototypeBind" + | "no-generators" + | "generators" + | "no-global-this" + | "global-this" + | "globalThis" + | "no-hashbang" + | "hashbang" + | "no-import-meta" + | "import-meta" + | "importMeta" + | "no-initializers-in-for-in" + | "initializers-in-for-in" + | "initializersInForIn" + | "no-intl-datetimeformat-prototype-formatrange" + | "intl-datetimeformat-prototype-formatrange" + | "intlDatetimeformatPrototypeFormatrange" + | "no-intl-datetimeformat-prototype-formattoparts" + | "intl-datetimeformat-prototype-formattoparts" + | "intlDatetimeformatPrototypeFormattoparts" + | "no-intl-displaynames" + | "intl-displaynames" + | "intlDisplaynames" + | "no-intl-getcanonicallocales" + | "intl-getcanonicallocales" + | "intlGetcanonicallocales" + | "no-intl-listformat" + | "intl-listformat" + | "intlListformat" + | "no-intl-locale" + | "intl-locale" + | "intlLocale" + | "no-intl-numberformat-prototype-formatrange" + | "intl-numberformat-prototype-formatrange" + | "intlNumberformatPrototypeFormatrange" + | "no-intl-numberformat-prototype-formatrangetoparts" + | "intl-numberformat-prototype-formatrangetoparts" + | "intlNumberformatPrototypeFormatrangetoparts" + | "no-intl-numberformat-prototype-formattoparts" + | "intl-numberformat-prototype-formattoparts" + | "intlNumberformatPrototypeFormattoparts" + | "no-intl-pluralrules-prototype-selectrange" + | "intl-pluralrules-prototype-selectrange" + | "intlPluralrulesPrototypeSelectrange" + | "no-intl-pluralrules" + | "intl-pluralrules" + | "intlPluralrules" + | "no-intl-relativetimeformat" + | "intl-relativetimeformat" + | "intlRelativetimeformat" + | "no-intl-segmenter" + | "intl-segmenter" + | "intlSegmenter" + | "no-intl-supportedvaluesof" + | "intl-supportedvaluesof" + | "intlSupportedvaluesof" + | "no-json-superset" + | "json-superset" + | "jsonSuperset" + | "no-json" + | "json" + | "no-keyword-properties" + | "keyword-properties" + | "keywordProperties" + | "no-labelled-function-declarations" + | "labelled-function-declarations" + | "labelledFunctionDeclarations" + | "no-legacy-object-prototype-accessor-methods" + | "legacy-object-prototype-accessor-methods" + | "legacyObjectPrototypeAccessorMethods" + | "no-logical-assignment-operators" + | "logical-assignment-operators" + | "logicalAssignmentOperators" + | "no-malformed-template-literals" + | "malformed-template-literals" + | "malformedTemplateLiterals" + | "no-map" + | "map" + | "no-math-acosh" + | "math-acosh" + | "mathAcosh" + | "no-math-asinh" + | "math-asinh" + | "mathAsinh" + | "no-math-atanh" + | "math-atanh" + | "mathAtanh" + | "no-math-cbrt" + | "math-cbrt" + | "mathCbrt" + | "no-math-clz32" + | "math-clz32" + | "mathClz32" + | "no-math-cosh" + | "math-cosh" + | "mathCosh" + | "no-math-expm1" + | "math-expm1" + | "mathExpm1" + | "no-math-fround" + | "math-fround" + | "mathFround" + | "no-math-hypot" + | "math-hypot" + | "mathHypot" + | "no-math-imul" + | "math-imul" + | "mathImul" + | "no-math-log10" + | "math-log10" + | "mathLog10" + | "no-math-log1p" + | "math-log1p" + | "mathLog1p" + | "no-math-log2" + | "math-log2" + | "mathLog2" + | "no-math-sign" + | "math-sign" + | "mathSign" + | "no-math-sinh" + | "math-sinh" + | "mathSinh" + | "no-math-tanh" + | "math-tanh" + | "mathTanh" + | "no-math-trunc" + | "math-trunc" + | "mathTrunc" + | "no-modules" + | "modules" + | "no-new-target" + | "new-target" + | "newTarget" + | "new.target" + | "no-nullish-coalescing-operators" + | "nullish-coalescing-operators" + | "nullishCoalescingOperators" + | "no-number-epsilon" + | "number-epsilon" + | "numberEpsilon" + | "no-number-isfinite" + | "number-isfinite" + | "numberIsfinite" + | "no-number-isinteger" + | "number-isinteger" + | "numberIsinteger" + | "no-number-isnan" + | "number-isnan" + | "numberIsnan" + | "no-number-issafeinteger" + | "number-issafeinteger" + | "numberIssafeinteger" + | "no-number-maxsafeinteger" + | "number-maxsafeinteger" + | "numberMaxsafeinteger" + | "no-number-minsafeinteger" + | "number-minsafeinteger" + | "numberMinsafeinteger" + | "no-number-parsefloat" + | "number-parsefloat" + | "numberParsefloat" + | "no-number-parseint" + | "number-parseint" + | "numberParseint" + | "no-numeric-separators" + | "numeric-separators" + | "numericSeparators" + | "no-object-assign" + | "object-assign" + | "objectAssign" + | "no-object-create" + | "object-create" + | "objectCreate" + | "no-object-defineproperties" + | "object-defineproperties" + | "objectDefineproperties" + | "no-object-defineproperty" + | "object-defineproperty" + | "objectDefineproperty" + | "no-object-entries" + | "object-entries" + | "objectEntries" + | "no-object-freeze" + | "object-freeze" + | "objectFreeze" + | "no-object-fromentries" + | "object-fromentries" + | "objectFromentries" + | "no-object-getownpropertydescriptor" + | "object-getownpropertydescriptor" + | "objectGetownpropertydescriptor" + | "no-object-getownpropertydescriptors" + | "object-getownpropertydescriptors" + | "objectGetownpropertydescriptors" + | "no-object-getownpropertynames" + | "object-getownpropertynames" + | "objectGetownpropertynames" + | "no-object-getownpropertysymbols" + | "object-getownpropertysymbols" + | "objectGetownpropertysymbols" + | "no-object-getprototypeof" + | "object-getprototypeof" + | "objectGetprototypeof" + | "no-object-hasown" + | "object-hasown" + | "objectHasown" + | "no-object-is" + | "object-is" + | "objectIs" + | "no-object-isextensible" + | "object-isextensible" + | "objectIsextensible" + | "no-object-isfrozen" + | "object-isfrozen" + | "objectIsfrozen" + | "no-object-issealed" + | "object-issealed" + | "objectIssealed" + | "no-object-keys" + | "object-keys" + | "objectKeys" + | "no-object-map-groupby" + | "object-map-groupby" + | "objectMapGroupby" + | "no-object-preventextensions" + | "object-preventextensions" + | "objectPreventextensions" + | "no-object-seal" + | "object-seal" + | "objectSeal" + | "no-object-setprototypeof" + | "object-setprototypeof" + | "objectSetprototypeof" + | "no-object-super-properties" + | "object-super-properties" + | "objectSuperProperties" + | "no-object-values" + | "object-values" + | "objectValues" + | "no-octal-numeric-literals" + | "octal-numeric-literals" + | "octalNumericLiterals" + | "no-optional-catch-binding" + | "optional-catch-binding" + | "optionalCatchBinding" + | "no-optional-chaining" + | "optional-chaining" + | "optionalChaining" + | "no-private-in" + | "private-in" + | "privateIn" + | "no-promise-all-settled" + | "promise-all-settled" + | "promiseAllSettled" + | "no-promise-any" + | "promise-any" + | "promiseAny" + | "no-promise-prototype-finally" + | "promise-prototype-finally" + | "promisePrototypeFinally" + | "no-promise-withresolvers" + | "promise-withresolvers" + | "promiseWithresolvers" + | "no-promise" + | "promise" + | "no-property-shorthands" + | "property-shorthands" + | "propertyShorthands" + | "no-proxy" + | "proxy" + | "no-reflect" + | "reflect" + | "no-regexp-d-flag" + | "regexp-d-flag" + | "regexpDFlag" + | "no-regexp-lookbehind-assertions" + | "regexp-lookbehind-assertions" + | "regexpLookbehindAssertions" + | "regexpLookbehind" + | "no-regexp-named-capture-groups" + | "regexp-named-capture-groups" + | "regexpNamedCaptureGroups" + | "no-regexp-prototype-compile" + | "regexp-prototype-compile" + | "regexpPrototypeCompile" + | "no-regexp-prototype-flags" + | "regexp-prototype-flags" + | "regexpPrototypeFlags" + | "no-regexp-s-flag" + | "regexp-s-flag" + | "regexpSFlag" + | "regexpS" + | "no-regexp-u-flag" + | "regexp-u-flag" + | "regexpUFlag" + | "regexpU" + | "no-regexp-unicode-property-escapes-2019" + | "regexp-unicode-property-escapes-2019" + | "regexpUnicodePropertyEscapes2019" + | "no-regexp-unicode-property-escapes-2020" + | "regexp-unicode-property-escapes-2020" + | "regexpUnicodePropertyEscapes2020" + | "no-regexp-unicode-property-escapes-2021" + | "regexp-unicode-property-escapes-2021" + | "regexpUnicodePropertyEscapes2021" + | "no-regexp-unicode-property-escapes-2022" + | "regexp-unicode-property-escapes-2022" + | "regexpUnicodePropertyEscapes2022" + | "no-regexp-unicode-property-escapes-2023" + | "regexp-unicode-property-escapes-2023" + | "regexpUnicodePropertyEscapes2023" + | "no-regexp-unicode-property-escapes" + | "regexp-unicode-property-escapes" + | "regexpUnicodePropertyEscapes" + | "regexpUnicodeProperties" + | "no-regexp-v-flag" + | "regexp-v-flag" + | "regexpVFlag" + | "no-regexp-y-flag" + | "regexp-y-flag" + | "regexpYFlag" + | "regexpY" + | "no-resizable-and-growable-arraybuffers" + | "resizable-and-growable-arraybuffers" + | "resizableAndGrowableArraybuffers" + | "no-rest-parameters" + | "rest-parameters" + | "restParameters" + | "no-rest-spread-properties" + | "rest-spread-properties" + | "restSpreadProperties" + | "no-set" + | "set" + | "no-shadow-catch-param" + | "shadow-catch-param" + | "shadowCatchParam" + | "no-shared-array-buffer" + | "shared-array-buffer" + | "sharedArrayBuffer" + | "no-spread-elements" + | "spread-elements" + | "spreadElements" + | "no-string-create-html-methods" + | "string-create-html-methods" + | "stringCreateHtmlMethods" + | "no-string-fromcodepoint" + | "string-fromcodepoint" + | "stringFromcodepoint" + | "no-string-prototype-codepointat" + | "string-prototype-codepointat" + | "stringPrototypeCodepointat" + | "no-string-prototype-endswith" + | "string-prototype-endswith" + | "stringPrototypeEndswith" + | "no-string-prototype-includes" + | "string-prototype-includes" + | "stringPrototypeIncludes" + | "no-string-prototype-iswellformed-towellformed" + | "string-prototype-iswellformed-towellformed" + | "stringPrototypeIswellformedTowellformed" + | "no-string-prototype-matchall" + | "string-prototype-matchall" + | "stringPrototypeMatchall" + | "no-string-prototype-normalize" + | "string-prototype-normalize" + | "stringPrototypeNormalize" + | "no-string-prototype-padstart-padend" + | "string-prototype-padstart-padend" + | "stringPrototypePadstartPadend" + | "no-string-prototype-repeat" + | "string-prototype-repeat" + | "stringPrototypeRepeat" + | "no-string-prototype-replaceall" + | "string-prototype-replaceall" + | "stringPrototypeReplaceall" + | "no-string-prototype-startswith" + | "string-prototype-startswith" + | "stringPrototypeStartswith" + | "no-string-prototype-substr" + | "string-prototype-substr" + | "stringPrototypeSubstr" + | "no-string-prototype-trim" + | "string-prototype-trim" + | "stringPrototypeTrim" + | "no-string-prototype-trimleft-trimright" + | "string-prototype-trimleft-trimright" + | "stringPrototypeTrimleftTrimright" + | "no-string-prototype-trimstart-trimend" + | "string-prototype-trimstart-trimend" + | "stringPrototypeTrimstartTrimend" + | "no-string-raw" + | "string-raw" + | "stringRaw" + | "no-subclassing-builtins" + | "subclassing-builtins" + | "subclassingBuiltins" + | "no-symbol-prototype-description" + | "symbol-prototype-description" + | "symbolPrototypeDescription" + | "no-symbol" + | "symbol" + | "no-template-literals" + | "template-literals" + | "templateLiterals" + | "no-top-level-await" + | "top-level-await" + | "topLevelAwait" + | "no-trailing-commas" + | "trailing-commas" + | "trailingCommas" + | "no-trailing-function-commas" + | "trailing-function-commas" + | "trailingFunctionCommas" + | "trailingCommasInFunctions" + | "no-typed-arrays" + | "typed-arrays" + | "typedArrays" + | "no-unicode-codepoint-escapes" + | "unicode-codepoint-escapes" + | "unicodeCodepointEscapes" + | "unicodeCodePointEscapes" + | "no-weak-map" + | "weak-map" + | "weakMap" + | "no-weak-set" + | "weak-set" + | "weakSet" + | "no-weakrefs" + | "weakrefs" + )[]; + }, + ]; // ----- n/no-unsupported-features/node-builtins ----- -type NNoUnsupportedFeaturesNodeBuiltins = []|[{ - version?: string - allowExperimental?: boolean - ignores?: ("__filename" | "__dirname" | "require" | "require.cache" | "require.extensions" | "require.main" | "require.resolve" | "require.resolve.paths" | "module" | "module.children" | "module.exports" | "module.filename" | "module.id" | "module.isPreloading" | "module.loaded" | "module.parent" | "module.path" | "module.paths" | "module.require" | "exports" | "AbortController" | "AbortSignal" | "AbortSignal.abort" | "AbortSignal.timeout" | "AbortSignal.any" | "DOMException" | "FormData" | "Headers" | "MessageEvent" | "Navigator" | "Request" | "Response" | "WebAssembly" | "WebSocket" | "fetch" | "global" | "queueMicrotask" | "navigator" | "navigator.hardwareConcurrency" | "navigator.language" | "navigator.languages" | "navigator.platform" | "navigator.userAgent" | "structuredClone" | "localStorage" | "sessionStorage" | "Storage" | "Blob" | "new Buffer()" | "Buffer" | "Buffer.alloc" | "Buffer.allocUnsafe" | "Buffer.allocUnsafeSlow" | "Buffer.byteLength" | "Buffer.compare" | "Buffer.concat" | "Buffer.copyBytesFrom" | "Buffer.from" | "Buffer.isBuffer" | "Buffer.isEncoding" | "File" | "atob" | "btoa" | "console" | "console.profile" | "console.profileEnd" | "console.timeStamp" | "console.Console" | "console.assert" | "console.clear" | "console.count" | "console.countReset" | "console.debug" | "console.dir" | "console.dirxml" | "console.error" | "console.group" | "console.groupCollapsed" | "console.groupEnd" | "console.info" | "console.log" | "console.table" | "console.time" | "console.timeEnd" | "console.timeLog" | "console.trace" | "console.warn" | "crypto" | "crypto.subtle" | "crypto.subtle.decrypt" | "crypto.subtle.deriveBits" | "crypto.subtle.deriveKey" | "crypto.subtle.digest" | "crypto.subtle.encrypt" | "crypto.subtle.exportKey" | "crypto.subtle.generateKey" | "crypto.subtle.importKey" | "crypto.subtle.sign" | "crypto.subtle.unwrapKey" | "crypto.subtle.verify" | "crypto.subtle.wrapKey" | "crypto.getRandomValues" | "crypto.randomUUID" | "Crypto" | "CryptoKey" | "SubtleCrypto" | "CloseEvent" | "CustomEvent" | "Event" | "EventSource" | "EventTarget" | "PerformanceEntry" | "PerformanceMark" | "PerformanceMeasure" | "PerformanceObserver" | "PerformanceObserverEntryList" | "PerformanceResourceTiming" | "performance" | "performance.clearMarks" | "performance.clearMeasures" | "performance.clearResourceTimings" | "performance.eventLoopUtilization" | "performance.getEntries" | "performance.getEntriesByName" | "performance.getEntriesByType" | "performance.mark" | "performance.markResourceTiming" | "performance.measure" | "performance.nodeTiming" | "performance.nodeTiming.bootstrapComplete" | "performance.nodeTiming.environment" | "performance.nodeTiming.idleTime" | "performance.nodeTiming.loopExit" | "performance.nodeTiming.loopStart" | "performance.nodeTiming.nodeStart" | "performance.nodeTiming.uvMetricsInfo" | "performance.nodeTiming.v8Start" | "performance.now" | "performance.onresourcetimingbufferfull" | "performance.setResourceTimingBufferSize" | "performance.timeOrigin" | "performance.timerify" | "performance.toJSON" | "process" | "process.allowedNodeEnvironmentFlags" | "process.availableMemory" | "process.arch" | "process.argv" | "process.argv0" | "process.channel" | "process.config" | "process.connected" | "process.debugPort" | "process.env" | "process.execArgv" | "process.execPath" | "process.exitCode" | "process.features.cached_builtins" | "process.features.debug" | "process.features.inspector" | "process.features.ipv6" | "process.features.require_module" | "process.features.tls" | "process.features.tls_alpn" | "process.features.tls_ocsp" | "process.features.tls_sni" | "process.features.typescript" | "process.features.uv" | "process.finalization.register" | "process.finalization.registerBeforeExit" | "process.finalization.unregister" | "process.getBuiltinModule" | "process.mainModule" | "process.noDeprecation" | "process.permission" | "process.pid" | "process.platform" | "process.ppid" | "process.release" | "process.report" | "process.report.excludeEnv" | "process.sourceMapsEnabled" | "process.stdin" | "process.stdin.isRaw" | "process.stdin.isTTY" | "process.stdin.setRawMode" | "process.stdout" | "process.stdout.clearLine" | "process.stdout.clearScreenDown" | "process.stdout.columns" | "process.stdout.cursorTo" | "process.stdout.getColorDepth" | "process.stdout.getWindowSize" | "process.stdout.hasColors" | "process.stdout.isTTY" | "process.stdout.moveCursor" | "process.stdout.rows" | "process.stderr" | "process.stderr.clearLine" | "process.stderr.clearScreenDown" | "process.stderr.columns" | "process.stderr.cursorTo" | "process.stderr.getColorDepth" | "process.stderr.getWindowSize" | "process.stderr.hasColors" | "process.stderr.isTTY" | "process.stderr.moveCursor" | "process.stderr.rows" | "process.throwDeprecation" | "process.title" | "process.traceDeprecation" | "process.version" | "process.versions" | "process.abort" | "process.chdir" | "process.constrainedMemory" | "process.cpuUsage" | "process.cwd" | "process.disconnect" | "process.dlopen" | "process.emitWarning" | "process.exit" | "process.getActiveResourcesInfo" | "process.getegid" | "process.geteuid" | "process.getgid" | "process.getgroups" | "process.getuid" | "process.hasUncaughtExceptionCaptureCallback" | "process.hrtime" | "process.hrtime.bigint" | "process.initgroups" | "process.kill" | "process.loadEnvFile" | "process.memoryUsage" | "process.rss" | "process.nextTick" | "process.resourceUsage" | "process.send" | "process.setegid" | "process.seteuid" | "process.setgid" | "process.setgroups" | "process.setuid" | "process.setSourceMapsEnabled" | "process.setUncaughtExceptionCaptureCallback" | "process.umask" | "process.uptime" | "ReadableStream" | "ReadableStream.from" | "ReadableStreamDefaultReader" | "ReadableStreamBYOBReader" | "ReadableStreamDefaultController" | "ReadableByteStreamController" | "ReadableStreamBYOBRequest" | "WritableStream" | "WritableStreamDefaultWriter" | "WritableStreamDefaultController" | "TransformStream" | "TransformStreamDefaultController" | "ByteLengthQueuingStrategy" | "CountQueuingStrategy" | "TextEncoderStream" | "TextDecoderStream" | "CompressionStream" | "DecompressionStream" | "setInterval" | "clearInterval" | "setTimeout" | "clearTimeout" | "setImmediate" | "clearImmediate" | "URL" | "URL.canParse" | "URL.createObjectURL" | "URL.revokeObjectURL" | "URLSearchParams" | "TextDecoder" | "TextEncoder" | "BroadcastChannel" | "MessageChannel" | "MessagePort" | "assert" | "assert.assert" | "assert.deepEqual" | "assert.deepStrictEqual" | "assert.doesNotMatch" | "assert.doesNotReject" | "assert.doesNotThrow" | "assert.equal" | "assert.fail" | "assert.ifError" | "assert.match" | "assert.notDeepEqual" | "assert.notDeepStrictEqual" | "assert.notEqual" | "assert.notStrictEqual" | "assert.ok" | "assert.rejects" | "assert.strictEqual" | "assert.throws" | "assert.CallTracker" | "assert.strict" | "assert.strict.assert" | "assert.strict.deepEqual" | "assert.strict.deepStrictEqual" | "assert.strict.doesNotMatch" | "assert.strict.doesNotReject" | "assert.strict.doesNotThrow" | "assert.strict.equal" | "assert.strict.fail" | "assert.strict.ifError" | "assert.strict.match" | "assert.strict.notDeepEqual" | "assert.strict.notDeepStrictEqual" | "assert.strict.notEqual" | "assert.strict.notStrictEqual" | "assert.strict.ok" | "assert.strict.rejects" | "assert.strict.strictEqual" | "assert.strict.throws" | "assert.strict.CallTracker" | "assert/strict" | "assert/strict.assert" | "assert/strict.deepEqual" | "assert/strict.deepStrictEqual" | "assert/strict.doesNotMatch" | "assert/strict.doesNotReject" | "assert/strict.doesNotThrow" | "assert/strict.equal" | "assert/strict.fail" | "assert/strict.ifError" | "assert/strict.match" | "assert/strict.notDeepEqual" | "assert/strict.notDeepStrictEqual" | "assert/strict.notEqual" | "assert/strict.notStrictEqual" | "assert/strict.ok" | "assert/strict.rejects" | "assert/strict.strictEqual" | "assert/strict.throws" | "assert/strict.CallTracker" | "async_hooks" | "async_hooks.createHook" | "async_hooks.executionAsyncResource" | "async_hooks.executionAsyncId" | "async_hooks.triggerAsyncId" | "async_hooks.AsyncLocalStorage" | "async_hooks.AsyncLocalStorage.bind" | "async_hooks.AsyncLocalStorage.snapshot" | "async_hooks.AsyncResource" | "async_hooks.AsyncResource.bind" | "buffer" | "buffer.constants" | "buffer.INSPECT_MAX_BYTES" | "buffer.kMaxLength" | "buffer.kStringMaxLength" | "buffer.atob" | "buffer.btoa" | "buffer.isAscii" | "buffer.isUtf8" | "buffer.resolveObjectURL" | "buffer.transcode" | "buffer.SlowBuffer" | "buffer.Blob" | "new buffer.Buffer()" | "buffer.Buffer" | "buffer.Buffer.alloc" | "buffer.Buffer.allocUnsafe" | "buffer.Buffer.allocUnsafeSlow" | "buffer.Buffer.byteLength" | "buffer.Buffer.compare" | "buffer.Buffer.concat" | "buffer.Buffer.copyBytesFrom" | "buffer.Buffer.from" | "buffer.Buffer.isBuffer" | "buffer.Buffer.isEncoding" | "buffer.File" | "child_process" | "child_process.exec" | "child_process.execFile" | "child_process.fork" | "child_process.spawn" | "child_process.execFileSync" | "child_process.execSync" | "child_process.spawnSync" | "child_process.ChildProcess" | "cluster" | "cluster.isMaster" | "cluster.isPrimary" | "cluster.isWorker" | "cluster.schedulingPolicy" | "cluster.settings" | "cluster.worker" | "cluster.workers" | "cluster.disconnect" | "cluster.fork" | "cluster.setupMaster" | "cluster.setupPrimary" | "cluster.Worker" | "crypto.constants" | "crypto.fips" | "crypto.webcrypto" | "crypto.webcrypto.subtle" | "crypto.webcrypto.subtle.decrypt" | "crypto.webcrypto.subtle.deriveBits" | "crypto.webcrypto.subtle.deriveKey" | "crypto.webcrypto.subtle.digest" | "crypto.webcrypto.subtle.encrypt" | "crypto.webcrypto.subtle.exportKey" | "crypto.webcrypto.subtle.generateKey" | "crypto.webcrypto.subtle.importKey" | "crypto.webcrypto.subtle.sign" | "crypto.webcrypto.subtle.unwrapKey" | "crypto.webcrypto.subtle.verify" | "crypto.webcrypto.subtle.wrapKey" | "crypto.webcrypto.getRandomValues" | "crypto.webcrypto.randomUUID" | "crypto.checkPrime" | "crypto.checkPrimeSync" | "crypto.createCipher" | "crypto.createCipheriv" | "crypto.createDecipher" | "crypto.createDecipheriv" | "crypto.createDiffieHellman" | "crypto.createDiffieHellmanGroup" | "crypto.createECDH" | "crypto.createHash" | "crypto.createHmac" | "crypto.createPrivateKey" | "crypto.createPublicKey" | "crypto.createSecretKey" | "crypto.createSign" | "crypto.createVerify" | "crypto.diffieHellman" | "crypto.generateKey" | "crypto.generateKeyPair" | "crypto.generateKeyPairSync" | "crypto.generateKeySync" | "crypto.generatePrime" | "crypto.generatePrimeSync" | "crypto.getCipherInfo" | "crypto.getCiphers" | "crypto.getCurves" | "crypto.getDiffieHellman" | "crypto.getFips" | "crypto.getHashes" | "crypto.hash" | "crypto.hkdf" | "crypto.hkdfSync" | "crypto.pbkdf2" | "crypto.pbkdf2Sync" | "crypto.privateDecrypt" | "crypto.privateEncrypt" | "crypto.publicDecrypt" | "crypto.publicEncrypt" | "crypto.randomBytes" | "crypto.randomFillSync" | "crypto.randomFill" | "crypto.randomInt" | "crypto.scrypt" | "crypto.scryptSync" | "crypto.secureHeapUsed" | "crypto.setEngine" | "crypto.setFips" | "crypto.sign" | "crypto.timingSafeEqual" | "crypto.verify" | "crypto.Certificate" | "crypto.Certificate.exportChallenge" | "crypto.Certificate.exportPublicKey" | "crypto.Certificate.verifySpkac" | "crypto.Cipher" | "crypto.Decipher" | "crypto.DiffieHellman" | "crypto.DiffieHellmanGroup" | "crypto.ECDH" | "crypto.ECDH.convertKey" | "crypto.Hash()" | "new crypto.Hash()" | "crypto.Hash" | "crypto.Hmac()" | "new crypto.Hmac()" | "crypto.Hmac" | "crypto.KeyObject" | "crypto.KeyObject.from" | "crypto.Sign" | "crypto.Verify" | "crypto.X509Certificate" | "dgram" | "dgram.createSocket" | "dgram.Socket" | "diagnostics_channel" | "diagnostics_channel.hasSubscribers" | "diagnostics_channel.channel" | "diagnostics_channel.subscribe" | "diagnostics_channel.unsubscribe" | "diagnostics_channel.tracingChannel" | "diagnostics_channel.Channel" | "diagnostics_channel.TracingChannel" | "dns" | "dns.Resolver" | "dns.getServers" | "dns.lookup" | "dns.lookupService" | "dns.resolve" | "dns.resolve4" | "dns.resolve6" | "dns.resolveAny" | "dns.resolveCname" | "dns.resolveCaa" | "dns.resolveMx" | "dns.resolveNaptr" | "dns.resolveNs" | "dns.resolvePtr" | "dns.resolveSoa" | "dns.resolveSrv" | "dns.resolveTxt" | "dns.reverse" | "dns.setDefaultResultOrder" | "dns.getDefaultResultOrder" | "dns.setServers" | "dns.promises" | "dns.promises.Resolver" | "dns.promises.cancel" | "dns.promises.getServers" | "dns.promises.lookup" | "dns.promises.lookupService" | "dns.promises.resolve" | "dns.promises.resolve4" | "dns.promises.resolve6" | "dns.promises.resolveAny" | "dns.promises.resolveCaa" | "dns.promises.resolveCname" | "dns.promises.resolveMx" | "dns.promises.resolveNaptr" | "dns.promises.resolveNs" | "dns.promises.resolvePtr" | "dns.promises.resolveSoa" | "dns.promises.resolveSrv" | "dns.promises.resolveTxt" | "dns.promises.reverse" | "dns.promises.setDefaultResultOrder" | "dns.promises.getDefaultResultOrder" | "dns.promises.setServers" | "dns/promises" | "dns/promises.Resolver" | "dns/promises.cancel" | "dns/promises.getServers" | "dns/promises.lookup" | "dns/promises.lookupService" | "dns/promises.resolve" | "dns/promises.resolve4" | "dns/promises.resolve6" | "dns/promises.resolveAny" | "dns/promises.resolveCaa" | "dns/promises.resolveCname" | "dns/promises.resolveMx" | "dns/promises.resolveNaptr" | "dns/promises.resolveNs" | "dns/promises.resolvePtr" | "dns/promises.resolveSoa" | "dns/promises.resolveSrv" | "dns/promises.resolveTxt" | "dns/promises.reverse" | "dns/promises.setDefaultResultOrder" | "dns/promises.getDefaultResultOrder" | "dns/promises.setServers" | "domain" | "domain.create" | "domain.Domain" | "events" | "events.Event" | "events.EventTarget" | "events.CustomEvent" | "events.NodeEventTarget" | "events.EventEmitter" | "events.EventEmitter.defaultMaxListeners" | "events.EventEmitter.errorMonitor" | "events.EventEmitter.captureRejections" | "events.EventEmitter.captureRejectionSymbol" | "events.EventEmitter.getEventListeners" | "events.EventEmitter.getMaxListeners" | "events.EventEmitter.once" | "events.EventEmitter.listenerCount" | "events.EventEmitter.on" | "events.EventEmitter.setMaxListeners" | "events.EventEmitter.addAbortListener" | "events.EventEmitterAsyncResource" | "events.EventEmitterAsyncResource.defaultMaxListeners" | "events.EventEmitterAsyncResource.errorMonitor" | "events.EventEmitterAsyncResource.captureRejections" | "events.EventEmitterAsyncResource.captureRejectionSymbol" | "events.EventEmitterAsyncResource.getEventListeners" | "events.EventEmitterAsyncResource.getMaxListeners" | "events.EventEmitterAsyncResource.once" | "events.EventEmitterAsyncResource.listenerCount" | "events.EventEmitterAsyncResource.on" | "events.EventEmitterAsyncResource.setMaxListeners" | "events.EventEmitterAsyncResource.addAbortListener" | "events.defaultMaxListeners" | "events.errorMonitor" | "events.captureRejections" | "events.captureRejectionSymbol" | "events.getEventListeners" | "events.getMaxListeners" | "events.once" | "events.listenerCount" | "events.on" | "events.setMaxListeners" | "events.addAbortListener" | "fs" | "fs.promises" | "fs.promises.FileHandle" | "fs.promises.access" | "fs.promises.appendFile" | "fs.promises.chmod" | "fs.promises.chown" | "fs.promises.constants" | "fs.promises.copyFile" | "fs.promises.cp" | "fs.promises.glob" | "fs.promises.lchmod" | "fs.promises.lchown" | "fs.promises.link" | "fs.promises.lstat" | "fs.promises.lutimes" | "fs.promises.mkdir" | "fs.promises.mkdtemp" | "fs.promises.open" | "fs.promises.opendir" | "fs.promises.readFile" | "fs.promises.readdir" | "fs.promises.readlink" | "fs.promises.realpath" | "fs.promises.rename" | "fs.promises.rm" | "fs.promises.rmdir" | "fs.promises.stat" | "fs.promises.statfs" | "fs.promises.symlink" | "fs.promises.truncate" | "fs.promises.unlink" | "fs.promises.utimes" | "fs.promises.watch" | "fs.promises.writeFile" | "fs.access" | "fs.appendFile" | "fs.chmod" | "fs.chown" | "fs.close" | "fs.copyFile" | "fs.cp" | "fs.createReadStream" | "fs.createWriteStream" | "fs.exists" | "fs.fchmod" | "fs.fchown" | "fs.fdatasync" | "fs.fstat" | "fs.fsync" | "fs.ftruncate" | "fs.futimes" | "fs.glob" | "fs.lchmod" | "fs.lchown" | "fs.link" | "fs.lstat" | "fs.lutimes" | "fs.mkdir" | "fs.mkdtemp" | "fs.native" | "fs.open" | "fs.openAsBlob" | "fs.opendir" | "fs.read" | "fs.readdir" | "fs.readFile" | "fs.readlink" | "fs.readv" | "fs.realpath" | "fs.realpath.native" | "fs.rename" | "fs.rm" | "fs.rmdir" | "fs.stat" | "fs.statfs" | "fs.symlink" | "fs.truncate" | "fs.unlink" | "fs.unwatchFile" | "fs.utimes" | "fs.watch" | "fs.watchFile" | "fs.write" | "fs.writeFile" | "fs.writev" | "fs.accessSync" | "fs.appendFileSync" | "fs.chmodSync" | "fs.chownSync" | "fs.closeSync" | "fs.copyFileSync" | "fs.cpSync" | "fs.existsSync" | "fs.fchmodSync" | "fs.fchownSync" | "fs.fdatasyncSync" | "fs.fstatSync" | "fs.fsyncSync" | "fs.ftruncateSync" | "fs.futimesSync" | "fs.globSync" | "fs.lchmodSync" | "fs.lchownSync" | "fs.linkSync" | "fs.lstatSync" | "fs.lutimesSync" | "fs.mkdirSync" | "fs.mkdtempSync" | "fs.opendirSync" | "fs.openSync" | "fs.readdirSync" | "fs.readFileSync" | "fs.readlinkSync" | "fs.readSync" | "fs.readvSync" | "fs.realpathSync" | "fs.realpathSync.native" | "fs.renameSync" | "fs.rmdirSync" | "fs.rmSync" | "fs.statfsSync" | "fs.statSync" | "fs.symlinkSync" | "fs.truncateSync" | "fs.unlinkSync" | "fs.utimesSync" | "fs.writeFileSync" | "fs.writeSync" | "fs.writevSync" | "fs.constants" | "fs.Dir" | "fs.Dirent" | "fs.FSWatcher" | "fs.StatWatcher" | "fs.ReadStream" | "fs.Stats()" | "new fs.Stats()" | "fs.Stats" | "fs.StatFs" | "fs.WriteStream" | "fs.common_objects" | "fs/promises" | "fs/promises.FileHandle" | "fs/promises.access" | "fs/promises.appendFile" | "fs/promises.chmod" | "fs/promises.chown" | "fs/promises.constants" | "fs/promises.copyFile" | "fs/promises.cp" | "fs/promises.glob" | "fs/promises.lchmod" | "fs/promises.lchown" | "fs/promises.link" | "fs/promises.lstat" | "fs/promises.lutimes" | "fs/promises.mkdir" | "fs/promises.mkdtemp" | "fs/promises.open" | "fs/promises.opendir" | "fs/promises.readFile" | "fs/promises.readdir" | "fs/promises.readlink" | "fs/promises.realpath" | "fs/promises.rename" | "fs/promises.rm" | "fs/promises.rmdir" | "fs/promises.stat" | "fs/promises.statfs" | "fs/promises.symlink" | "fs/promises.truncate" | "fs/promises.unlink" | "fs/promises.utimes" | "fs/promises.watch" | "fs/promises.writeFile" | "http2" | "http2.constants" | "http2.sensitiveHeaders" | "http2.createServer" | "http2.createSecureServer" | "http2.connect" | "http2.getDefaultSettings" | "http2.getPackedSettings" | "http2.getUnpackedSettings" | "http2.performServerHandshake" | "http2.Http2Session" | "http2.ServerHttp2Session" | "http2.ClientHttp2Session" | "http2.Http2Stream" | "http2.ClientHttp2Stream" | "http2.ServerHttp2Stream" | "http2.Http2Server" | "http2.Http2SecureServer" | "http2.Http2ServerRequest" | "http2.Http2ServerResponse" | "http" | "http.METHODS" | "http.STATUS_CODES" | "http.globalAgent" | "http.maxHeaderSize" | "http.createServer" | "http.get" | "http.request" | "http.validateHeaderName" | "http.validateHeaderValue" | "http.setMaxIdleHTTPParsers" | "http.Agent" | "http.ClientRequest" | "http.Server" | "http.ServerResponse" | "http.IncomingMessage" | "http.OutgoingMessage" | "http.WebSocket" | "https" | "https.globalAgent" | "https.createServer" | "https.get" | "https.request" | "https.Agent" | "https.Server" | "inspector" | "inspector.Session" | "inspector.Network.loadingFailed" | "inspector.Network.loadingFinished" | "inspector.Network.requestWillBeSent" | "inspector.Network.responseReceived" | "inspector.console" | "inspector.close" | "inspector.open" | "inspector.url" | "inspector.waitForDebugger" | "inspector/promises" | "inspector/promises.Session" | "inspector/promises.Network.loadingFailed" | "inspector/promises.Network.loadingFinished" | "inspector/promises.Network.requestWillBeSent" | "inspector/promises.Network.responseReceived" | "inspector/promises.console" | "inspector/promises.close" | "inspector/promises.open" | "inspector/promises.url" | "inspector/promises.waitForDebugger" | "module.builtinModules" | "module.constants.compileCacheStatus" | "module.createRequire" | "module.createRequireFromPath" | "module.enableCompileCache" | "module.findPackageJSON" | "module.flushCompileCache" | "module.getCompileCacheDir" | "module.isBuiltin" | "module.register" | "module.stripTypeScriptTypes" | "module.syncBuiltinESMExports" | "module.findSourceMap" | "module.SourceMap" | "module.Module.builtinModules" | "module.Module.createRequire" | "module.Module.createRequireFromPath" | "module.Module.enableCompileCache" | "module.Module.findPackageJSON" | "module.Module.flushCompileCache" | "module.Module.getCompileCacheDir" | "module.Module.isBuiltin" | "module.Module.register" | "module.Module.stripTypeScriptTypes" | "module.Module.syncBuiltinESMExports" | "module.Module.findSourceMap" | "module.Module.SourceMap" | "net" | "net.connect" | "net.createConnection" | "net.createServer" | "net.getDefaultAutoSelectFamily" | "net.setDefaultAutoSelectFamily" | "net.getDefaultAutoSelectFamilyAttemptTimeout" | "net.setDefaultAutoSelectFamilyAttemptTimeout" | "net.isIP" | "net.isIPv4" | "net.isIPv6" | "net.BlockList" | "net.SocketAddress" | "net.Server" | "net.Socket" | "os" | "os.EOL" | "os.constants" | "os.constants.priority" | "os.devNull" | "os.availableParallelism" | "os.arch" | "os.cpus" | "os.endianness" | "os.freemem" | "os.getPriority" | "os.homedir" | "os.hostname" | "os.loadavg" | "os.machine" | "os.networkInterfaces" | "os.platform" | "os.release" | "os.setPriority" | "os.tmpdir" | "os.totalmem" | "os.type" | "os.uptime" | "os.userInfo" | "os.version" | "path" | "path.posix" | "path.posix.delimiter" | "path.posix.sep" | "path.posix.basename" | "path.posix.dirname" | "path.posix.extname" | "path.posix.format" | "path.posix.matchesGlob" | "path.posix.isAbsolute" | "path.posix.join" | "path.posix.normalize" | "path.posix.parse" | "path.posix.relative" | "path.posix.resolve" | "path.posix.toNamespacedPath" | "path.win32" | "path.win32.delimiter" | "path.win32.sep" | "path.win32.basename" | "path.win32.dirname" | "path.win32.extname" | "path.win32.format" | "path.win32.matchesGlob" | "path.win32.isAbsolute" | "path.win32.join" | "path.win32.normalize" | "path.win32.parse" | "path.win32.relative" | "path.win32.resolve" | "path.win32.toNamespacedPath" | "path.delimiter" | "path.sep" | "path.basename" | "path.dirname" | "path.extname" | "path.format" | "path.matchesGlob" | "path.isAbsolute" | "path.join" | "path.normalize" | "path.parse" | "path.relative" | "path.resolve" | "path.toNamespacedPath" | "path/posix" | "path/posix.delimiter" | "path/posix.sep" | "path/posix.basename" | "path/posix.dirname" | "path/posix.extname" | "path/posix.format" | "path/posix.matchesGlob" | "path/posix.isAbsolute" | "path/posix.join" | "path/posix.normalize" | "path/posix.parse" | "path/posix.relative" | "path/posix.resolve" | "path/posix.toNamespacedPath" | "path/win32" | "path/win32.delimiter" | "path/win32.sep" | "path/win32.basename" | "path/win32.dirname" | "path/win32.extname" | "path/win32.format" | "path/win32.matchesGlob" | "path/win32.isAbsolute" | "path/win32.join" | "path/win32.normalize" | "path/win32.parse" | "path/win32.relative" | "path/win32.resolve" | "path/win32.toNamespacedPath" | "perf_hooks" | "perf_hooks.performance" | "perf_hooks.performance.clearMarks" | "perf_hooks.performance.clearMeasures" | "perf_hooks.performance.clearResourceTimings" | "perf_hooks.performance.eventLoopUtilization" | "perf_hooks.performance.getEntries" | "perf_hooks.performance.getEntriesByName" | "perf_hooks.performance.getEntriesByType" | "perf_hooks.performance.mark" | "perf_hooks.performance.markResourceTiming" | "perf_hooks.performance.measure" | "perf_hooks.performance.nodeTiming" | "perf_hooks.performance.nodeTiming.bootstrapComplete" | "perf_hooks.performance.nodeTiming.environment" | "perf_hooks.performance.nodeTiming.idleTime" | "perf_hooks.performance.nodeTiming.loopExit" | "perf_hooks.performance.nodeTiming.loopStart" | "perf_hooks.performance.nodeTiming.nodeStart" | "perf_hooks.performance.nodeTiming.uvMetricsInfo" | "perf_hooks.performance.nodeTiming.v8Start" | "perf_hooks.performance.now" | "perf_hooks.performance.onresourcetimingbufferfull" | "perf_hooks.performance.setResourceTimingBufferSize" | "perf_hooks.performance.timeOrigin" | "perf_hooks.performance.timerify" | "perf_hooks.performance.toJSON" | "perf_hooks.createHistogram" | "perf_hooks.monitorEventLoopDelay" | "perf_hooks.PerformanceEntry" | "perf_hooks.PerformanceMark" | "perf_hooks.PerformanceMeasure" | "perf_hooks.PerformanceNodeEntry" | "perf_hooks.PerformanceNodeTiming" | "perf_hooks.PerformanceResourceTiming" | "perf_hooks.PerformanceObserver" | "perf_hooks.PerformanceObserverEntryList" | "perf_hooks.Histogram" | "perf_hooks.IntervalHistogram" | "perf_hooks.RecordableHistogram" | "punycode" | "punycode.ucs2" | "punycode.version" | "punycode.decode" | "punycode.encode" | "punycode.toASCII" | "punycode.toUnicode" | "querystring" | "querystring.decode" | "querystring.encode" | "querystring.escape" | "querystring.parse" | "querystring.stringify" | "querystring.unescape" | "readline" | "readline.promises" | "readline.promises.createInterface" | "readline.promises.Interface" | "readline.promises.Readline" | "readline.clearLine" | "readline.clearScreenDown" | "readline.createInterface" | "readline.cursorTo" | "readline.moveCursor" | "readline.Interface" | "readline.emitKeypressEvents" | "readline.InterfaceConstructor" | "readline/promises" | "readline/promises.createInterface" | "readline/promises.Interface" | "readline/promises.Readline" | "repl" | "repl.start" | "repl.writer" | "repl.REPLServer()" | "repl.REPLServer" | "repl.REPL_MODE_MAGIC" | "repl.REPL_MODE_SLOPPY" | "repl.REPL_MODE_STRICT" | "repl.Recoverable()" | "repl.Recoverable" | "repl.builtinModules" | "sea" | "sea.isSea" | "sea.getAsset" | "sea.getAssetAsBlob" | "sea.getRawAsset" | "sea.sea.isSea" | "sea.sea.getAsset" | "sea.sea.getAssetAsBlob" | "sea.sea.getRawAsset" | "stream" | "stream.promises" | "stream.promises.pipeline" | "stream.promises.finished" | "stream.finished" | "stream.pipeline" | "stream.compose" | "stream.duplexPair" | "stream.Readable" | "stream.Readable.from" | "stream.Readable.isDisturbed" | "stream.Readable.fromWeb" | "stream.Readable.toWeb" | "stream.Writable" | "stream.Writable.fromWeb" | "stream.Writable.toWeb" | "stream.Duplex" | "stream.Duplex.from" | "stream.Duplex.fromWeb" | "stream.Duplex.toWeb" | "stream.Transform" | "stream.isErrored" | "stream.isReadable" | "stream.addAbortSignal" | "stream.getDefaultHighWaterMark" | "stream.setDefaultHighWaterMark" | "stream/promises.pipeline" | "stream/promises.finished" | "stream/web" | "stream/web.ReadableStream" | "stream/web.ReadableStream.from" | "stream/web.ReadableStreamDefaultReader" | "stream/web.ReadableStreamBYOBReader" | "stream/web.ReadableStreamDefaultController" | "stream/web.ReadableByteStreamController" | "stream/web.ReadableStreamBYOBRequest" | "stream/web.WritableStream" | "stream/web.WritableStreamDefaultWriter" | "stream/web.WritableStreamDefaultController" | "stream/web.TransformStream" | "stream/web.TransformStreamDefaultController" | "stream/web.ByteLengthQueuingStrategy" | "stream/web.CountQueuingStrategy" | "stream/web.TextEncoderStream" | "stream/web.TextDecoderStream" | "stream/web.CompressionStream" | "stream/web.DecompressionStream" | "stream/consumers" | "stream/consumers.arrayBuffer" | "stream/consumers.blob" | "stream/consumers.buffer" | "stream/consumers.json" | "stream/consumers.text" | "string_decoder" | "string_decoder.StringDecoder" | "sqlite" | "sqlite.DatabaseSync" | "sqlite.StatementSync" | "sqlite.SQLITE_CHANGESET_OMIT" | "sqlite.SQLITE_CHANGESET_REPLACE" | "sqlite.SQLITE_CHANGESET_ABORT" | "test" | "test.after" | "test.afterEach" | "test.before" | "test.beforeEach" | "test.describe" | "test.describe.only" | "test.describe.skip" | "test.describe.todo" | "test.it" | "test.it.only" | "test.it.skip" | "test.it.todo" | "test.mock" | "test.mock.fn" | "test.mock.getter" | "test.mock.method" | "test.mock.module" | "test.mock.reset" | "test.mock.restoreAll" | "test.mock.setter" | "test.mock.timers" | "test.mock.timers.enable" | "test.mock.timers.reset" | "test.mock.timers.tick" | "test.only" | "test.run" | "test.snapshot" | "test.snapshot.setDefaultSnapshotSerializers" | "test.snapshot.setResolveSnapshotPath" | "test.skip" | "test.suite" | "test.test" | "test.test.only" | "test.test.skip" | "test.test.todo" | "test.todo" | "timers" | "timers.Immediate" | "timers.Timeout" | "timers.setImmediate" | "timers.clearImmediate" | "timers.setInterval" | "timers.clearInterval" | "timers.setTimeout" | "timers.clearTimeout" | "timers.promises" | "timers.promises.setTimeout" | "timers.promises.setImmediate" | "timers.promises.setInterval" | "timers.promises.scheduler.wait" | "timers.promises.scheduler.yield" | "timers/promises" | "timers/promises.setTimeout" | "timers/promises.setImmediate" | "timers/promises.setInterval" | "timers/promises.scheduler.wait" | "timers/promises.scheduler.yield" | "tls" | "tls.rootCertificates" | "tls.DEFAULT_ECDH_CURVE" | "tls.DEFAULT_MAX_VERSION" | "tls.DEFAULT_MIN_VERSION" | "tls.DEFAULT_CIPHERS" | "tls.checkServerIdentity" | "tls.connect" | "tls.createSecureContext" | "tls.createSecurePair" | "tls.createServer" | "tls.getCiphers" | "tls.SecureContext" | "tls.CryptoStream" | "tls.SecurePair" | "tls.Server" | "tls.TLSSocket" | "trace_events" | "trace_events.createTracing" | "trace_events.getEnabledCategories" | "tty" | "tty.isatty" | "tty.ReadStream" | "tty.WriteStream" | "url" | "url.domainToASCII" | "url.domainToUnicode" | "url.fileURLToPath" | "url.format" | "url.pathToFileURL" | "url.urlToHttpOptions" | "url.URL" | "url.URL.canParse" | "url.URL.createObjectURL" | "url.URL.revokeObjectURL" | "url.URLSearchParams" | "url.Url" | "util.promisify" | "util.promisify.custom" | "util.callbackify" | "util.debuglog" | "util.debug" | "util.deprecate" | "util.format" | "util.formatWithOptions" | "util.getCallSite" | "util.getCallSites" | "util.getSystemErrorName" | "util.getSystemErrorMap" | "util.getSystemErrorMessage" | "util.inherits" | "util.inspect" | "util.inspect.custom" | "util.inspect.defaultOptions" | "util.inspect.replDefaults" | "util.isDeepStrictEqual" | "util.parseArgs" | "util.parseEnv" | "util.stripVTControlCharacters" | "util.styleText" | "util.toUSVString" | "util.transferableAbortController" | "util.transferableAbortSignal" | "util.aborted" | "util.MIMEType" | "util.MIMEParams" | "util.TextDecoder" | "util.TextEncoder" | "util.types" | "util.types.isExternal" | "util.types.isDate" | "util.types.isArgumentsObject" | "util.types.isBigIntObject" | "util.types.isBooleanObject" | "util.types.isNumberObject" | "util.types.isStringObject" | "util.types.isSymbolObject" | "util.types.isNativeError" | "util.types.isRegExp" | "util.types.isAsyncFunction" | "util.types.isGeneratorFunction" | "util.types.isGeneratorObject" | "util.types.isPromise" | "util.types.isMap" | "util.types.isSet" | "util.types.isMapIterator" | "util.types.isSetIterator" | "util.types.isWeakMap" | "util.types.isWeakSet" | "util.types.isArrayBuffer" | "util.types.isDataView" | "util.types.isSharedArrayBuffer" | "util.types.isProxy" | "util.types.isModuleNamespaceObject" | "util.types.isAnyArrayBuffer" | "util.types.isBoxedPrimitive" | "util.types.isArrayBufferView" | "util.types.isTypedArray" | "util.types.isUint8Array" | "util.types.isUint8ClampedArray" | "util.types.isUint16Array" | "util.types.isUint32Array" | "util.types.isInt8Array" | "util.types.isInt16Array" | "util.types.isInt32Array" | "util.types.isFloat32Array" | "util.types.isFloat64Array" | "util.types.isBigInt64Array" | "util.types.isBigUint64Array" | "util.types.isKeyObject" | "util.types.isCryptoKey" | "util.types.isWebAssemblyCompiledModule" | "util._extend" | "util.isArray" | "util.isBoolean" | "util.isBuffer" | "util.isDate" | "util.isError" | "util.isFunction" | "util.isNull" | "util.isNullOrUndefined" | "util.isNumber" | "util.isObject" | "util.isPrimitive" | "util.isRegExp" | "util.isString" | "util.isSymbol" | "util.isUndefined" | "util.log" | "util" | "util/types" | "util/types.isExternal" | "util/types.isDate" | "util/types.isArgumentsObject" | "util/types.isBigIntObject" | "util/types.isBooleanObject" | "util/types.isNumberObject" | "util/types.isStringObject" | "util/types.isSymbolObject" | "util/types.isNativeError" | "util/types.isRegExp" | "util/types.isAsyncFunction" | "util/types.isGeneratorFunction" | "util/types.isGeneratorObject" | "util/types.isPromise" | "util/types.isMap" | "util/types.isSet" | "util/types.isMapIterator" | "util/types.isSetIterator" | "util/types.isWeakMap" | "util/types.isWeakSet" | "util/types.isArrayBuffer" | "util/types.isDataView" | "util/types.isSharedArrayBuffer" | "util/types.isProxy" | "util/types.isModuleNamespaceObject" | "util/types.isAnyArrayBuffer" | "util/types.isBoxedPrimitive" | "util/types.isArrayBufferView" | "util/types.isTypedArray" | "util/types.isUint8Array" | "util/types.isUint8ClampedArray" | "util/types.isUint16Array" | "util/types.isUint32Array" | "util/types.isInt8Array" | "util/types.isInt16Array" | "util/types.isInt32Array" | "util/types.isFloat32Array" | "util/types.isFloat64Array" | "util/types.isBigInt64Array" | "util/types.isBigUint64Array" | "util/types.isKeyObject" | "util/types.isCryptoKey" | "util/types.isWebAssemblyCompiledModule" | "v8" | "v8.serialize" | "v8.deserialize" | "v8.Serializer" | "v8.Deserializer" | "v8.DefaultSerializer" | "v8.DefaultDeserializer" | "v8.promiseHooks" | "v8.promiseHooks.onInit" | "v8.promiseHooks.onSettled" | "v8.promiseHooks.onBefore" | "v8.promiseHooks.onAfter" | "v8.promiseHooks.createHook" | "v8.startupSnapshot" | "v8.startupSnapshot.addSerializeCallback" | "v8.startupSnapshot.addDeserializeCallback" | "v8.startupSnapshot.setDeserializeMainFunction" | "v8.startupSnapshot.isBuildingSnapshot" | "v8.cachedDataVersionTag" | "v8.getHeapCodeStatistics" | "v8.getHeapSnapshot" | "v8.getHeapSpaceStatistics" | "v8.getHeapStatistics" | "v8.queryObjects" | "v8.setFlagsFromString" | "v8.stopCoverage" | "v8.takeCoverage" | "v8.writeHeapSnapshot" | "v8.setHeapSnapshotNearHeapLimit" | "v8.GCProfiler" | "vm.constants" | "vm.compileFunction" | "vm.createContext" | "vm.isContext" | "vm.measureMemory" | "vm.runInContext" | "vm.runInNewContext" | "vm.runInThisContext" | "vm.Script" | "vm.Module" | "vm.SourceTextModule" | "vm.SyntheticModule" | "vm" | "wasi.WASI" | "wasi" | "worker_threads" | "worker_threads.isMainThread" | "worker_threads.parentPort" | "worker_threads.resourceLimits" | "worker_threads.SHARE_ENV" | "worker_threads.threadId" | "worker_threads.workerData" | "worker_threads.getEnvironmentData" | "worker_threads.markAsUncloneable" | "worker_threads.markAsUntransferable" | "worker_threads.isMarkedAsUntransferable" | "worker_threads.moveMessagePortToContext" | "worker_threads.postMessageToThread" | "worker_threads.receiveMessageOnPort" | "worker_threads.setEnvironmentData" | "worker_threads.BroadcastChannel" | "worker_threads.MessageChannel" | "worker_threads.MessagePort" | "worker_threads.Worker" | "zlib.constants" | "zlib.crc32" | "zlib.createBrotliCompress" | "zlib.createBrotliDecompress" | "zlib.createDeflate" | "zlib.createDeflateRaw" | "zlib.createGunzip" | "zlib.createGzip" | "zlib.createInflate" | "zlib.createInflateRaw" | "zlib.createUnzip" | "zlib.brotliCompress" | "zlib.brotliCompressSync" | "zlib.brotliDecompress" | "zlib.brotliDecompressSync" | "zlib.deflate" | "zlib.deflateSync" | "zlib.deflateRaw" | "zlib.deflateRawSync" | "zlib.gunzip" | "zlib.gunzipSync" | "zlib.gzip" | "zlib.gzipSync" | "zlib.inflate" | "zlib.inflateSync" | "zlib.inflateRaw" | "zlib.inflateRawSync" | "zlib.unzip" | "zlib.unzipSync" | "zlib.BrotliCompress()" | "zlib.BrotliCompress" | "zlib.BrotliDecompress()" | "zlib.BrotliDecompress" | "zlib.Deflate()" | "zlib.Deflate" | "zlib.DeflateRaw()" | "zlib.DeflateRaw" | "zlib.Gunzip()" | "zlib.Gunzip" | "zlib.Gzip()" | "zlib.Gzip" | "zlib.Inflate()" | "zlib.Inflate" | "zlib.InflateRaw()" | "zlib.InflateRaw" | "zlib.Unzip()" | "zlib.Unzip" | "zlib" | "import.meta.resolve" | "import.meta.dirname" | "import.meta.filename")[] -}] +type NNoUnsupportedFeaturesNodeBuiltins = + | [] + | [ + { + version?: string; + allowExperimental?: boolean; + ignores?: ( + | "__filename" + | "__dirname" + | "require" + | "require.cache" + | "require.extensions" + | "require.main" + | "require.resolve" + | "require.resolve.paths" + | "module" + | "module.children" + | "module.exports" + | "module.filename" + | "module.id" + | "module.isPreloading" + | "module.loaded" + | "module.parent" + | "module.path" + | "module.paths" + | "module.require" + | "exports" + | "AbortController" + | "AbortSignal" + | "AbortSignal.abort" + | "AbortSignal.timeout" + | "AbortSignal.any" + | "DOMException" + | "FormData" + | "Headers" + | "MessageEvent" + | "Navigator" + | "Request" + | "Response" + | "WebAssembly" + | "WebSocket" + | "fetch" + | "global" + | "queueMicrotask" + | "navigator" + | "navigator.hardwareConcurrency" + | "navigator.language" + | "navigator.languages" + | "navigator.platform" + | "navigator.userAgent" + | "structuredClone" + | "localStorage" + | "sessionStorage" + | "Storage" + | "Blob" + | "new Buffer()" + | "Buffer" + | "Buffer.alloc" + | "Buffer.allocUnsafe" + | "Buffer.allocUnsafeSlow" + | "Buffer.byteLength" + | "Buffer.compare" + | "Buffer.concat" + | "Buffer.copyBytesFrom" + | "Buffer.from" + | "Buffer.isBuffer" + | "Buffer.isEncoding" + | "File" + | "atob" + | "btoa" + | "console" + | "console.profile" + | "console.profileEnd" + | "console.timeStamp" + | "console.Console" + | "console.assert" + | "console.clear" + | "console.count" + | "console.countReset" + | "console.debug" + | "console.dir" + | "console.dirxml" + | "console.error" + | "console.group" + | "console.groupCollapsed" + | "console.groupEnd" + | "console.info" + | "console.log" + | "console.table" + | "console.time" + | "console.timeEnd" + | "console.timeLog" + | "console.trace" + | "console.warn" + | "crypto" + | "crypto.subtle" + | "crypto.subtle.decrypt" + | "crypto.subtle.deriveBits" + | "crypto.subtle.deriveKey" + | "crypto.subtle.digest" + | "crypto.subtle.encrypt" + | "crypto.subtle.exportKey" + | "crypto.subtle.generateKey" + | "crypto.subtle.importKey" + | "crypto.subtle.sign" + | "crypto.subtle.unwrapKey" + | "crypto.subtle.verify" + | "crypto.subtle.wrapKey" + | "crypto.getRandomValues" + | "crypto.randomUUID" + | "Crypto" + | "CryptoKey" + | "SubtleCrypto" + | "CloseEvent" + | "CustomEvent" + | "Event" + | "EventSource" + | "EventTarget" + | "PerformanceEntry" + | "PerformanceMark" + | "PerformanceMeasure" + | "PerformanceObserver" + | "PerformanceObserverEntryList" + | "PerformanceResourceTiming" + | "performance" + | "performance.clearMarks" + | "performance.clearMeasures" + | "performance.clearResourceTimings" + | "performance.eventLoopUtilization" + | "performance.getEntries" + | "performance.getEntriesByName" + | "performance.getEntriesByType" + | "performance.mark" + | "performance.markResourceTiming" + | "performance.measure" + | "performance.nodeTiming" + | "performance.nodeTiming.bootstrapComplete" + | "performance.nodeTiming.environment" + | "performance.nodeTiming.idleTime" + | "performance.nodeTiming.loopExit" + | "performance.nodeTiming.loopStart" + | "performance.nodeTiming.nodeStart" + | "performance.nodeTiming.uvMetricsInfo" + | "performance.nodeTiming.v8Start" + | "performance.now" + | "performance.onresourcetimingbufferfull" + | "performance.setResourceTimingBufferSize" + | "performance.timeOrigin" + | "performance.timerify" + | "performance.toJSON" + | "process" + | "process.allowedNodeEnvironmentFlags" + | "process.availableMemory" + | "process.arch" + | "process.argv" + | "process.argv0" + | "process.channel" + | "process.config" + | "process.connected" + | "process.debugPort" + | "process.env" + | "process.execArgv" + | "process.execPath" + | "process.exitCode" + | "process.features.cached_builtins" + | "process.features.debug" + | "process.features.inspector" + | "process.features.ipv6" + | "process.features.require_module" + | "process.features.tls" + | "process.features.tls_alpn" + | "process.features.tls_ocsp" + | "process.features.tls_sni" + | "process.features.typescript" + | "process.features.uv" + | "process.finalization.register" + | "process.finalization.registerBeforeExit" + | "process.finalization.unregister" + | "process.getBuiltinModule" + | "process.mainModule" + | "process.noDeprecation" + | "process.permission" + | "process.pid" + | "process.platform" + | "process.ppid" + | "process.release" + | "process.report" + | "process.report.excludeEnv" + | "process.sourceMapsEnabled" + | "process.stdin" + | "process.stdin.isRaw" + | "process.stdin.isTTY" + | "process.stdin.setRawMode" + | "process.stdout" + | "process.stdout.clearLine" + | "process.stdout.clearScreenDown" + | "process.stdout.columns" + | "process.stdout.cursorTo" + | "process.stdout.getColorDepth" + | "process.stdout.getWindowSize" + | "process.stdout.hasColors" + | "process.stdout.isTTY" + | "process.stdout.moveCursor" + | "process.stdout.rows" + | "process.stderr" + | "process.stderr.clearLine" + | "process.stderr.clearScreenDown" + | "process.stderr.columns" + | "process.stderr.cursorTo" + | "process.stderr.getColorDepth" + | "process.stderr.getWindowSize" + | "process.stderr.hasColors" + | "process.stderr.isTTY" + | "process.stderr.moveCursor" + | "process.stderr.rows" + | "process.throwDeprecation" + | "process.title" + | "process.traceDeprecation" + | "process.version" + | "process.versions" + | "process.abort" + | "process.chdir" + | "process.constrainedMemory" + | "process.cpuUsage" + | "process.cwd" + | "process.disconnect" + | "process.dlopen" + | "process.emitWarning" + | "process.exit" + | "process.getActiveResourcesInfo" + | "process.getegid" + | "process.geteuid" + | "process.getgid" + | "process.getgroups" + | "process.getuid" + | "process.hasUncaughtExceptionCaptureCallback" + | "process.hrtime" + | "process.hrtime.bigint" + | "process.initgroups" + | "process.kill" + | "process.loadEnvFile" + | "process.memoryUsage" + | "process.rss" + | "process.nextTick" + | "process.resourceUsage" + | "process.send" + | "process.setegid" + | "process.seteuid" + | "process.setgid" + | "process.setgroups" + | "process.setuid" + | "process.setSourceMapsEnabled" + | "process.setUncaughtExceptionCaptureCallback" + | "process.umask" + | "process.uptime" + | "ReadableStream" + | "ReadableStream.from" + | "ReadableStreamDefaultReader" + | "ReadableStreamBYOBReader" + | "ReadableStreamDefaultController" + | "ReadableByteStreamController" + | "ReadableStreamBYOBRequest" + | "WritableStream" + | "WritableStreamDefaultWriter" + | "WritableStreamDefaultController" + | "TransformStream" + | "TransformStreamDefaultController" + | "ByteLengthQueuingStrategy" + | "CountQueuingStrategy" + | "TextEncoderStream" + | "TextDecoderStream" + | "CompressionStream" + | "DecompressionStream" + | "setInterval" + | "clearInterval" + | "setTimeout" + | "clearTimeout" + | "setImmediate" + | "clearImmediate" + | "URL" + | "URL.canParse" + | "URL.createObjectURL" + | "URL.revokeObjectURL" + | "URLSearchParams" + | "TextDecoder" + | "TextEncoder" + | "BroadcastChannel" + | "MessageChannel" + | "MessagePort" + | "assert" + | "assert.assert" + | "assert.deepEqual" + | "assert.deepStrictEqual" + | "assert.doesNotMatch" + | "assert.doesNotReject" + | "assert.doesNotThrow" + | "assert.equal" + | "assert.fail" + | "assert.ifError" + | "assert.match" + | "assert.notDeepEqual" + | "assert.notDeepStrictEqual" + | "assert.notEqual" + | "assert.notStrictEqual" + | "assert.ok" + | "assert.rejects" + | "assert.strictEqual" + | "assert.throws" + | "assert.CallTracker" + | "assert.strict" + | "assert.strict.assert" + | "assert.strict.deepEqual" + | "assert.strict.deepStrictEqual" + | "assert.strict.doesNotMatch" + | "assert.strict.doesNotReject" + | "assert.strict.doesNotThrow" + | "assert.strict.equal" + | "assert.strict.fail" + | "assert.strict.ifError" + | "assert.strict.match" + | "assert.strict.notDeepEqual" + | "assert.strict.notDeepStrictEqual" + | "assert.strict.notEqual" + | "assert.strict.notStrictEqual" + | "assert.strict.ok" + | "assert.strict.rejects" + | "assert.strict.strictEqual" + | "assert.strict.throws" + | "assert.strict.CallTracker" + | "assert/strict" + | "assert/strict.assert" + | "assert/strict.deepEqual" + | "assert/strict.deepStrictEqual" + | "assert/strict.doesNotMatch" + | "assert/strict.doesNotReject" + | "assert/strict.doesNotThrow" + | "assert/strict.equal" + | "assert/strict.fail" + | "assert/strict.ifError" + | "assert/strict.match" + | "assert/strict.notDeepEqual" + | "assert/strict.notDeepStrictEqual" + | "assert/strict.notEqual" + | "assert/strict.notStrictEqual" + | "assert/strict.ok" + | "assert/strict.rejects" + | "assert/strict.strictEqual" + | "assert/strict.throws" + | "assert/strict.CallTracker" + | "async_hooks" + | "async_hooks.createHook" + | "async_hooks.executionAsyncResource" + | "async_hooks.executionAsyncId" + | "async_hooks.triggerAsyncId" + | "async_hooks.AsyncLocalStorage" + | "async_hooks.AsyncLocalStorage.bind" + | "async_hooks.AsyncLocalStorage.snapshot" + | "async_hooks.AsyncResource" + | "async_hooks.AsyncResource.bind" + | "buffer" + | "buffer.constants" + | "buffer.INSPECT_MAX_BYTES" + | "buffer.kMaxLength" + | "buffer.kStringMaxLength" + | "buffer.atob" + | "buffer.btoa" + | "buffer.isAscii" + | "buffer.isUtf8" + | "buffer.resolveObjectURL" + | "buffer.transcode" + | "buffer.SlowBuffer" + | "buffer.Blob" + | "new buffer.Buffer()" + | "buffer.Buffer" + | "buffer.Buffer.alloc" + | "buffer.Buffer.allocUnsafe" + | "buffer.Buffer.allocUnsafeSlow" + | "buffer.Buffer.byteLength" + | "buffer.Buffer.compare" + | "buffer.Buffer.concat" + | "buffer.Buffer.copyBytesFrom" + | "buffer.Buffer.from" + | "buffer.Buffer.isBuffer" + | "buffer.Buffer.isEncoding" + | "buffer.File" + | "child_process" + | "child_process.exec" + | "child_process.execFile" + | "child_process.fork" + | "child_process.spawn" + | "child_process.execFileSync" + | "child_process.execSync" + | "child_process.spawnSync" + | "child_process.ChildProcess" + | "cluster" + | "cluster.isMaster" + | "cluster.isPrimary" + | "cluster.isWorker" + | "cluster.schedulingPolicy" + | "cluster.settings" + | "cluster.worker" + | "cluster.workers" + | "cluster.disconnect" + | "cluster.fork" + | "cluster.setupMaster" + | "cluster.setupPrimary" + | "cluster.Worker" + | "crypto.constants" + | "crypto.fips" + | "crypto.webcrypto" + | "crypto.webcrypto.subtle" + | "crypto.webcrypto.subtle.decrypt" + | "crypto.webcrypto.subtle.deriveBits" + | "crypto.webcrypto.subtle.deriveKey" + | "crypto.webcrypto.subtle.digest" + | "crypto.webcrypto.subtle.encrypt" + | "crypto.webcrypto.subtle.exportKey" + | "crypto.webcrypto.subtle.generateKey" + | "crypto.webcrypto.subtle.importKey" + | "crypto.webcrypto.subtle.sign" + | "crypto.webcrypto.subtle.unwrapKey" + | "crypto.webcrypto.subtle.verify" + | "crypto.webcrypto.subtle.wrapKey" + | "crypto.webcrypto.getRandomValues" + | "crypto.webcrypto.randomUUID" + | "crypto.checkPrime" + | "crypto.checkPrimeSync" + | "crypto.createCipher" + | "crypto.createCipheriv" + | "crypto.createDecipher" + | "crypto.createDecipheriv" + | "crypto.createDiffieHellman" + | "crypto.createDiffieHellmanGroup" + | "crypto.createECDH" + | "crypto.createHash" + | "crypto.createHmac" + | "crypto.createPrivateKey" + | "crypto.createPublicKey" + | "crypto.createSecretKey" + | "crypto.createSign" + | "crypto.createVerify" + | "crypto.diffieHellman" + | "crypto.generateKey" + | "crypto.generateKeyPair" + | "crypto.generateKeyPairSync" + | "crypto.generateKeySync" + | "crypto.generatePrime" + | "crypto.generatePrimeSync" + | "crypto.getCipherInfo" + | "crypto.getCiphers" + | "crypto.getCurves" + | "crypto.getDiffieHellman" + | "crypto.getFips" + | "crypto.getHashes" + | "crypto.hash" + | "crypto.hkdf" + | "crypto.hkdfSync" + | "crypto.pbkdf2" + | "crypto.pbkdf2Sync" + | "crypto.privateDecrypt" + | "crypto.privateEncrypt" + | "crypto.publicDecrypt" + | "crypto.publicEncrypt" + | "crypto.randomBytes" + | "crypto.randomFillSync" + | "crypto.randomFill" + | "crypto.randomInt" + | "crypto.scrypt" + | "crypto.scryptSync" + | "crypto.secureHeapUsed" + | "crypto.setEngine" + | "crypto.setFips" + | "crypto.sign" + | "crypto.timingSafeEqual" + | "crypto.verify" + | "crypto.Certificate" + | "crypto.Certificate.exportChallenge" + | "crypto.Certificate.exportPublicKey" + | "crypto.Certificate.verifySpkac" + | "crypto.Cipher" + | "crypto.Decipher" + | "crypto.DiffieHellman" + | "crypto.DiffieHellmanGroup" + | "crypto.ECDH" + | "crypto.ECDH.convertKey" + | "crypto.Hash()" + | "new crypto.Hash()" + | "crypto.Hash" + | "crypto.Hmac()" + | "new crypto.Hmac()" + | "crypto.Hmac" + | "crypto.KeyObject" + | "crypto.KeyObject.from" + | "crypto.Sign" + | "crypto.Verify" + | "crypto.X509Certificate" + | "dgram" + | "dgram.createSocket" + | "dgram.Socket" + | "diagnostics_channel" + | "diagnostics_channel.hasSubscribers" + | "diagnostics_channel.channel" + | "diagnostics_channel.subscribe" + | "diagnostics_channel.unsubscribe" + | "diagnostics_channel.tracingChannel" + | "diagnostics_channel.Channel" + | "diagnostics_channel.TracingChannel" + | "dns" + | "dns.Resolver" + | "dns.getServers" + | "dns.lookup" + | "dns.lookupService" + | "dns.resolve" + | "dns.resolve4" + | "dns.resolve6" + | "dns.resolveAny" + | "dns.resolveCname" + | "dns.resolveCaa" + | "dns.resolveMx" + | "dns.resolveNaptr" + | "dns.resolveNs" + | "dns.resolvePtr" + | "dns.resolveSoa" + | "dns.resolveSrv" + | "dns.resolveTxt" + | "dns.reverse" + | "dns.setDefaultResultOrder" + | "dns.getDefaultResultOrder" + | "dns.setServers" + | "dns.promises" + | "dns.promises.Resolver" + | "dns.promises.cancel" + | "dns.promises.getServers" + | "dns.promises.lookup" + | "dns.promises.lookupService" + | "dns.promises.resolve" + | "dns.promises.resolve4" + | "dns.promises.resolve6" + | "dns.promises.resolveAny" + | "dns.promises.resolveCaa" + | "dns.promises.resolveCname" + | "dns.promises.resolveMx" + | "dns.promises.resolveNaptr" + | "dns.promises.resolveNs" + | "dns.promises.resolvePtr" + | "dns.promises.resolveSoa" + | "dns.promises.resolveSrv" + | "dns.promises.resolveTxt" + | "dns.promises.reverse" + | "dns.promises.setDefaultResultOrder" + | "dns.promises.getDefaultResultOrder" + | "dns.promises.setServers" + | "dns/promises" + | "dns/promises.Resolver" + | "dns/promises.cancel" + | "dns/promises.getServers" + | "dns/promises.lookup" + | "dns/promises.lookupService" + | "dns/promises.resolve" + | "dns/promises.resolve4" + | "dns/promises.resolve6" + | "dns/promises.resolveAny" + | "dns/promises.resolveCaa" + | "dns/promises.resolveCname" + | "dns/promises.resolveMx" + | "dns/promises.resolveNaptr" + | "dns/promises.resolveNs" + | "dns/promises.resolvePtr" + | "dns/promises.resolveSoa" + | "dns/promises.resolveSrv" + | "dns/promises.resolveTxt" + | "dns/promises.reverse" + | "dns/promises.setDefaultResultOrder" + | "dns/promises.getDefaultResultOrder" + | "dns/promises.setServers" + | "domain" + | "domain.create" + | "domain.Domain" + | "events" + | "events.Event" + | "events.EventTarget" + | "events.CustomEvent" + | "events.NodeEventTarget" + | "events.EventEmitter" + | "events.EventEmitter.defaultMaxListeners" + | "events.EventEmitter.errorMonitor" + | "events.EventEmitter.captureRejections" + | "events.EventEmitter.captureRejectionSymbol" + | "events.EventEmitter.getEventListeners" + | "events.EventEmitter.getMaxListeners" + | "events.EventEmitter.once" + | "events.EventEmitter.listenerCount" + | "events.EventEmitter.on" + | "events.EventEmitter.setMaxListeners" + | "events.EventEmitter.addAbortListener" + | "events.EventEmitterAsyncResource" + | "events.EventEmitterAsyncResource.defaultMaxListeners" + | "events.EventEmitterAsyncResource.errorMonitor" + | "events.EventEmitterAsyncResource.captureRejections" + | "events.EventEmitterAsyncResource.captureRejectionSymbol" + | "events.EventEmitterAsyncResource.getEventListeners" + | "events.EventEmitterAsyncResource.getMaxListeners" + | "events.EventEmitterAsyncResource.once" + | "events.EventEmitterAsyncResource.listenerCount" + | "events.EventEmitterAsyncResource.on" + | "events.EventEmitterAsyncResource.setMaxListeners" + | "events.EventEmitterAsyncResource.addAbortListener" + | "events.defaultMaxListeners" + | "events.errorMonitor" + | "events.captureRejections" + | "events.captureRejectionSymbol" + | "events.getEventListeners" + | "events.getMaxListeners" + | "events.once" + | "events.listenerCount" + | "events.on" + | "events.setMaxListeners" + | "events.addAbortListener" + | "fs" + | "fs.promises" + | "fs.promises.FileHandle" + | "fs.promises.access" + | "fs.promises.appendFile" + | "fs.promises.chmod" + | "fs.promises.chown" + | "fs.promises.constants" + | "fs.promises.copyFile" + | "fs.promises.cp" + | "fs.promises.glob" + | "fs.promises.lchmod" + | "fs.promises.lchown" + | "fs.promises.link" + | "fs.promises.lstat" + | "fs.promises.lutimes" + | "fs.promises.mkdir" + | "fs.promises.mkdtemp" + | "fs.promises.open" + | "fs.promises.opendir" + | "fs.promises.readFile" + | "fs.promises.readdir" + | "fs.promises.readlink" + | "fs.promises.realpath" + | "fs.promises.rename" + | "fs.promises.rm" + | "fs.promises.rmdir" + | "fs.promises.stat" + | "fs.promises.statfs" + | "fs.promises.symlink" + | "fs.promises.truncate" + | "fs.promises.unlink" + | "fs.promises.utimes" + | "fs.promises.watch" + | "fs.promises.writeFile" + | "fs.access" + | "fs.appendFile" + | "fs.chmod" + | "fs.chown" + | "fs.close" + | "fs.copyFile" + | "fs.cp" + | "fs.createReadStream" + | "fs.createWriteStream" + | "fs.exists" + | "fs.fchmod" + | "fs.fchown" + | "fs.fdatasync" + | "fs.fstat" + | "fs.fsync" + | "fs.ftruncate" + | "fs.futimes" + | "fs.glob" + | "fs.lchmod" + | "fs.lchown" + | "fs.link" + | "fs.lstat" + | "fs.lutimes" + | "fs.mkdir" + | "fs.mkdtemp" + | "fs.native" + | "fs.open" + | "fs.openAsBlob" + | "fs.opendir" + | "fs.read" + | "fs.readdir" + | "fs.readFile" + | "fs.readlink" + | "fs.readv" + | "fs.realpath" + | "fs.realpath.native" + | "fs.rename" + | "fs.rm" + | "fs.rmdir" + | "fs.stat" + | "fs.statfs" + | "fs.symlink" + | "fs.truncate" + | "fs.unlink" + | "fs.unwatchFile" + | "fs.utimes" + | "fs.watch" + | "fs.watchFile" + | "fs.write" + | "fs.writeFile" + | "fs.writev" + | "fs.accessSync" + | "fs.appendFileSync" + | "fs.chmodSync" + | "fs.chownSync" + | "fs.closeSync" + | "fs.copyFileSync" + | "fs.cpSync" + | "fs.existsSync" + | "fs.fchmodSync" + | "fs.fchownSync" + | "fs.fdatasyncSync" + | "fs.fstatSync" + | "fs.fsyncSync" + | "fs.ftruncateSync" + | "fs.futimesSync" + | "fs.globSync" + | "fs.lchmodSync" + | "fs.lchownSync" + | "fs.linkSync" + | "fs.lstatSync" + | "fs.lutimesSync" + | "fs.mkdirSync" + | "fs.mkdtempSync" + | "fs.opendirSync" + | "fs.openSync" + | "fs.readdirSync" + | "fs.readFileSync" + | "fs.readlinkSync" + | "fs.readSync" + | "fs.readvSync" + | "fs.realpathSync" + | "fs.realpathSync.native" + | "fs.renameSync" + | "fs.rmdirSync" + | "fs.rmSync" + | "fs.statfsSync" + | "fs.statSync" + | "fs.symlinkSync" + | "fs.truncateSync" + | "fs.unlinkSync" + | "fs.utimesSync" + | "fs.writeFileSync" + | "fs.writeSync" + | "fs.writevSync" + | "fs.constants" + | "fs.Dir" + | "fs.Dirent" + | "fs.FSWatcher" + | "fs.StatWatcher" + | "fs.ReadStream" + | "fs.Stats()" + | "new fs.Stats()" + | "fs.Stats" + | "fs.StatFs" + | "fs.WriteStream" + | "fs.common_objects" + | "fs/promises" + | "fs/promises.FileHandle" + | "fs/promises.access" + | "fs/promises.appendFile" + | "fs/promises.chmod" + | "fs/promises.chown" + | "fs/promises.constants" + | "fs/promises.copyFile" + | "fs/promises.cp" + | "fs/promises.glob" + | "fs/promises.lchmod" + | "fs/promises.lchown" + | "fs/promises.link" + | "fs/promises.lstat" + | "fs/promises.lutimes" + | "fs/promises.mkdir" + | "fs/promises.mkdtemp" + | "fs/promises.open" + | "fs/promises.opendir" + | "fs/promises.readFile" + | "fs/promises.readdir" + | "fs/promises.readlink" + | "fs/promises.realpath" + | "fs/promises.rename" + | "fs/promises.rm" + | "fs/promises.rmdir" + | "fs/promises.stat" + | "fs/promises.statfs" + | "fs/promises.symlink" + | "fs/promises.truncate" + | "fs/promises.unlink" + | "fs/promises.utimes" + | "fs/promises.watch" + | "fs/promises.writeFile" + | "http2" + | "http2.constants" + | "http2.sensitiveHeaders" + | "http2.createServer" + | "http2.createSecureServer" + | "http2.connect" + | "http2.getDefaultSettings" + | "http2.getPackedSettings" + | "http2.getUnpackedSettings" + | "http2.performServerHandshake" + | "http2.Http2Session" + | "http2.ServerHttp2Session" + | "http2.ClientHttp2Session" + | "http2.Http2Stream" + | "http2.ClientHttp2Stream" + | "http2.ServerHttp2Stream" + | "http2.Http2Server" + | "http2.Http2SecureServer" + | "http2.Http2ServerRequest" + | "http2.Http2ServerResponse" + | "http" + | "http.METHODS" + | "http.STATUS_CODES" + | "http.globalAgent" + | "http.maxHeaderSize" + | "http.createServer" + | "http.get" + | "http.request" + | "http.validateHeaderName" + | "http.validateHeaderValue" + | "http.setMaxIdleHTTPParsers" + | "http.Agent" + | "http.ClientRequest" + | "http.Server" + | "http.ServerResponse" + | "http.IncomingMessage" + | "http.OutgoingMessage" + | "http.WebSocket" + | "https" + | "https.globalAgent" + | "https.createServer" + | "https.get" + | "https.request" + | "https.Agent" + | "https.Server" + | "inspector" + | "inspector.Session" + | "inspector.Network.loadingFailed" + | "inspector.Network.loadingFinished" + | "inspector.Network.requestWillBeSent" + | "inspector.Network.responseReceived" + | "inspector.console" + | "inspector.close" + | "inspector.open" + | "inspector.url" + | "inspector.waitForDebugger" + | "inspector/promises" + | "inspector/promises.Session" + | "inspector/promises.Network.loadingFailed" + | "inspector/promises.Network.loadingFinished" + | "inspector/promises.Network.requestWillBeSent" + | "inspector/promises.Network.responseReceived" + | "inspector/promises.console" + | "inspector/promises.close" + | "inspector/promises.open" + | "inspector/promises.url" + | "inspector/promises.waitForDebugger" + | "module.builtinModules" + | "module.constants.compileCacheStatus" + | "module.createRequire" + | "module.createRequireFromPath" + | "module.enableCompileCache" + | "module.findPackageJSON" + | "module.flushCompileCache" + | "module.getCompileCacheDir" + | "module.isBuiltin" + | "module.register" + | "module.stripTypeScriptTypes" + | "module.syncBuiltinESMExports" + | "module.findSourceMap" + | "module.SourceMap" + | "module.Module.builtinModules" + | "module.Module.createRequire" + | "module.Module.createRequireFromPath" + | "module.Module.enableCompileCache" + | "module.Module.findPackageJSON" + | "module.Module.flushCompileCache" + | "module.Module.getCompileCacheDir" + | "module.Module.isBuiltin" + | "module.Module.register" + | "module.Module.stripTypeScriptTypes" + | "module.Module.syncBuiltinESMExports" + | "module.Module.findSourceMap" + | "module.Module.SourceMap" + | "net" + | "net.connect" + | "net.createConnection" + | "net.createServer" + | "net.getDefaultAutoSelectFamily" + | "net.setDefaultAutoSelectFamily" + | "net.getDefaultAutoSelectFamilyAttemptTimeout" + | "net.setDefaultAutoSelectFamilyAttemptTimeout" + | "net.isIP" + | "net.isIPv4" + | "net.isIPv6" + | "net.BlockList" + | "net.SocketAddress" + | "net.Server" + | "net.Socket" + | "os" + | "os.EOL" + | "os.constants" + | "os.constants.priority" + | "os.devNull" + | "os.availableParallelism" + | "os.arch" + | "os.cpus" + | "os.endianness" + | "os.freemem" + | "os.getPriority" + | "os.homedir" + | "os.hostname" + | "os.loadavg" + | "os.machine" + | "os.networkInterfaces" + | "os.platform" + | "os.release" + | "os.setPriority" + | "os.tmpdir" + | "os.totalmem" + | "os.type" + | "os.uptime" + | "os.userInfo" + | "os.version" + | "path" + | "path.posix" + | "path.posix.delimiter" + | "path.posix.sep" + | "path.posix.basename" + | "path.posix.dirname" + | "path.posix.extname" + | "path.posix.format" + | "path.posix.matchesGlob" + | "path.posix.isAbsolute" + | "path.posix.join" + | "path.posix.normalize" + | "path.posix.parse" + | "path.posix.relative" + | "path.posix.resolve" + | "path.posix.toNamespacedPath" + | "path.win32" + | "path.win32.delimiter" + | "path.win32.sep" + | "path.win32.basename" + | "path.win32.dirname" + | "path.win32.extname" + | "path.win32.format" + | "path.win32.matchesGlob" + | "path.win32.isAbsolute" + | "path.win32.join" + | "path.win32.normalize" + | "path.win32.parse" + | "path.win32.relative" + | "path.win32.resolve" + | "path.win32.toNamespacedPath" + | "path.delimiter" + | "path.sep" + | "path.basename" + | "path.dirname" + | "path.extname" + | "path.format" + | "path.matchesGlob" + | "path.isAbsolute" + | "path.join" + | "path.normalize" + | "path.parse" + | "path.relative" + | "path.resolve" + | "path.toNamespacedPath" + | "path/posix" + | "path/posix.delimiter" + | "path/posix.sep" + | "path/posix.basename" + | "path/posix.dirname" + | "path/posix.extname" + | "path/posix.format" + | "path/posix.matchesGlob" + | "path/posix.isAbsolute" + | "path/posix.join" + | "path/posix.normalize" + | "path/posix.parse" + | "path/posix.relative" + | "path/posix.resolve" + | "path/posix.toNamespacedPath" + | "path/win32" + | "path/win32.delimiter" + | "path/win32.sep" + | "path/win32.basename" + | "path/win32.dirname" + | "path/win32.extname" + | "path/win32.format" + | "path/win32.matchesGlob" + | "path/win32.isAbsolute" + | "path/win32.join" + | "path/win32.normalize" + | "path/win32.parse" + | "path/win32.relative" + | "path/win32.resolve" + | "path/win32.toNamespacedPath" + | "perf_hooks" + | "perf_hooks.performance" + | "perf_hooks.performance.clearMarks" + | "perf_hooks.performance.clearMeasures" + | "perf_hooks.performance.clearResourceTimings" + | "perf_hooks.performance.eventLoopUtilization" + | "perf_hooks.performance.getEntries" + | "perf_hooks.performance.getEntriesByName" + | "perf_hooks.performance.getEntriesByType" + | "perf_hooks.performance.mark" + | "perf_hooks.performance.markResourceTiming" + | "perf_hooks.performance.measure" + | "perf_hooks.performance.nodeTiming" + | "perf_hooks.performance.nodeTiming.bootstrapComplete" + | "perf_hooks.performance.nodeTiming.environment" + | "perf_hooks.performance.nodeTiming.idleTime" + | "perf_hooks.performance.nodeTiming.loopExit" + | "perf_hooks.performance.nodeTiming.loopStart" + | "perf_hooks.performance.nodeTiming.nodeStart" + | "perf_hooks.performance.nodeTiming.uvMetricsInfo" + | "perf_hooks.performance.nodeTiming.v8Start" + | "perf_hooks.performance.now" + | "perf_hooks.performance.onresourcetimingbufferfull" + | "perf_hooks.performance.setResourceTimingBufferSize" + | "perf_hooks.performance.timeOrigin" + | "perf_hooks.performance.timerify" + | "perf_hooks.performance.toJSON" + | "perf_hooks.createHistogram" + | "perf_hooks.monitorEventLoopDelay" + | "perf_hooks.PerformanceEntry" + | "perf_hooks.PerformanceMark" + | "perf_hooks.PerformanceMeasure" + | "perf_hooks.PerformanceNodeEntry" + | "perf_hooks.PerformanceNodeTiming" + | "perf_hooks.PerformanceResourceTiming" + | "perf_hooks.PerformanceObserver" + | "perf_hooks.PerformanceObserverEntryList" + | "perf_hooks.Histogram" + | "perf_hooks.IntervalHistogram" + | "perf_hooks.RecordableHistogram" + | "punycode" + | "punycode.ucs2" + | "punycode.version" + | "punycode.decode" + | "punycode.encode" + | "punycode.toASCII" + | "punycode.toUnicode" + | "querystring" + | "querystring.decode" + | "querystring.encode" + | "querystring.escape" + | "querystring.parse" + | "querystring.stringify" + | "querystring.unescape" + | "readline" + | "readline.promises" + | "readline.promises.createInterface" + | "readline.promises.Interface" + | "readline.promises.Readline" + | "readline.clearLine" + | "readline.clearScreenDown" + | "readline.createInterface" + | "readline.cursorTo" + | "readline.moveCursor" + | "readline.Interface" + | "readline.emitKeypressEvents" + | "readline.InterfaceConstructor" + | "readline/promises" + | "readline/promises.createInterface" + | "readline/promises.Interface" + | "readline/promises.Readline" + | "repl" + | "repl.start" + | "repl.writer" + | "repl.REPLServer()" + | "repl.REPLServer" + | "repl.REPL_MODE_MAGIC" + | "repl.REPL_MODE_SLOPPY" + | "repl.REPL_MODE_STRICT" + | "repl.Recoverable()" + | "repl.Recoverable" + | "repl.builtinModules" + | "sea" + | "sea.isSea" + | "sea.getAsset" + | "sea.getAssetAsBlob" + | "sea.getRawAsset" + | "sea.sea.isSea" + | "sea.sea.getAsset" + | "sea.sea.getAssetAsBlob" + | "sea.sea.getRawAsset" + | "stream" + | "stream.promises" + | "stream.promises.pipeline" + | "stream.promises.finished" + | "stream.finished" + | "stream.pipeline" + | "stream.compose" + | "stream.duplexPair" + | "stream.Readable" + | "stream.Readable.from" + | "stream.Readable.isDisturbed" + | "stream.Readable.fromWeb" + | "stream.Readable.toWeb" + | "stream.Writable" + | "stream.Writable.fromWeb" + | "stream.Writable.toWeb" + | "stream.Duplex" + | "stream.Duplex.from" + | "stream.Duplex.fromWeb" + | "stream.Duplex.toWeb" + | "stream.Transform" + | "stream.isErrored" + | "stream.isReadable" + | "stream.addAbortSignal" + | "stream.getDefaultHighWaterMark" + | "stream.setDefaultHighWaterMark" + | "stream/promises.pipeline" + | "stream/promises.finished" + | "stream/web" + | "stream/web.ReadableStream" + | "stream/web.ReadableStream.from" + | "stream/web.ReadableStreamDefaultReader" + | "stream/web.ReadableStreamBYOBReader" + | "stream/web.ReadableStreamDefaultController" + | "stream/web.ReadableByteStreamController" + | "stream/web.ReadableStreamBYOBRequest" + | "stream/web.WritableStream" + | "stream/web.WritableStreamDefaultWriter" + | "stream/web.WritableStreamDefaultController" + | "stream/web.TransformStream" + | "stream/web.TransformStreamDefaultController" + | "stream/web.ByteLengthQueuingStrategy" + | "stream/web.CountQueuingStrategy" + | "stream/web.TextEncoderStream" + | "stream/web.TextDecoderStream" + | "stream/web.CompressionStream" + | "stream/web.DecompressionStream" + | "stream/consumers" + | "stream/consumers.arrayBuffer" + | "stream/consumers.blob" + | "stream/consumers.buffer" + | "stream/consumers.json" + | "stream/consumers.text" + | "string_decoder" + | "string_decoder.StringDecoder" + | "sqlite" + | "sqlite.DatabaseSync" + | "sqlite.StatementSync" + | "sqlite.SQLITE_CHANGESET_OMIT" + | "sqlite.SQLITE_CHANGESET_REPLACE" + | "sqlite.SQLITE_CHANGESET_ABORT" + | "test" + | "test.after" + | "test.afterEach" + | "test.before" + | "test.beforeEach" + | "test.describe" + | "test.describe.only" + | "test.describe.skip" + | "test.describe.todo" + | "test.it" + | "test.it.only" + | "test.it.skip" + | "test.it.todo" + | "test.mock" + | "test.mock.fn" + | "test.mock.getter" + | "test.mock.method" + | "test.mock.module" + | "test.mock.reset" + | "test.mock.restoreAll" + | "test.mock.setter" + | "test.mock.timers" + | "test.mock.timers.enable" + | "test.mock.timers.reset" + | "test.mock.timers.tick" + | "test.only" + | "test.run" + | "test.snapshot" + | "test.snapshot.setDefaultSnapshotSerializers" + | "test.snapshot.setResolveSnapshotPath" + | "test.skip" + | "test.suite" + | "test.test" + | "test.test.only" + | "test.test.skip" + | "test.test.todo" + | "test.todo" + | "timers" + | "timers.Immediate" + | "timers.Timeout" + | "timers.setImmediate" + | "timers.clearImmediate" + | "timers.setInterval" + | "timers.clearInterval" + | "timers.setTimeout" + | "timers.clearTimeout" + | "timers.promises" + | "timers.promises.setTimeout" + | "timers.promises.setImmediate" + | "timers.promises.setInterval" + | "timers.promises.scheduler.wait" + | "timers.promises.scheduler.yield" + | "timers/promises" + | "timers/promises.setTimeout" + | "timers/promises.setImmediate" + | "timers/promises.setInterval" + | "timers/promises.scheduler.wait" + | "timers/promises.scheduler.yield" + | "tls" + | "tls.rootCertificates" + | "tls.DEFAULT_ECDH_CURVE" + | "tls.DEFAULT_MAX_VERSION" + | "tls.DEFAULT_MIN_VERSION" + | "tls.DEFAULT_CIPHERS" + | "tls.checkServerIdentity" + | "tls.connect" + | "tls.createSecureContext" + | "tls.createSecurePair" + | "tls.createServer" + | "tls.getCiphers" + | "tls.SecureContext" + | "tls.CryptoStream" + | "tls.SecurePair" + | "tls.Server" + | "tls.TLSSocket" + | "trace_events" + | "trace_events.createTracing" + | "trace_events.getEnabledCategories" + | "tty" + | "tty.isatty" + | "tty.ReadStream" + | "tty.WriteStream" + | "url" + | "url.domainToASCII" + | "url.domainToUnicode" + | "url.fileURLToPath" + | "url.format" + | "url.pathToFileURL" + | "url.urlToHttpOptions" + | "url.URL" + | "url.URL.canParse" + | "url.URL.createObjectURL" + | "url.URL.revokeObjectURL" + | "url.URLSearchParams" + | "url.Url" + | "util.promisify" + | "util.promisify.custom" + | "util.callbackify" + | "util.debuglog" + | "util.debug" + | "util.deprecate" + | "util.format" + | "util.formatWithOptions" + | "util.getCallSite" + | "util.getCallSites" + | "util.getSystemErrorName" + | "util.getSystemErrorMap" + | "util.getSystemErrorMessage" + | "util.inherits" + | "util.inspect" + | "util.inspect.custom" + | "util.inspect.defaultOptions" + | "util.inspect.replDefaults" + | "util.isDeepStrictEqual" + | "util.parseArgs" + | "util.parseEnv" + | "util.stripVTControlCharacters" + | "util.styleText" + | "util.toUSVString" + | "util.transferableAbortController" + | "util.transferableAbortSignal" + | "util.aborted" + | "util.MIMEType" + | "util.MIMEParams" + | "util.TextDecoder" + | "util.TextEncoder" + | "util.types" + | "util.types.isExternal" + | "util.types.isDate" + | "util.types.isArgumentsObject" + | "util.types.isBigIntObject" + | "util.types.isBooleanObject" + | "util.types.isNumberObject" + | "util.types.isStringObject" + | "util.types.isSymbolObject" + | "util.types.isNativeError" + | "util.types.isRegExp" + | "util.types.isAsyncFunction" + | "util.types.isGeneratorFunction" + | "util.types.isGeneratorObject" + | "util.types.isPromise" + | "util.types.isMap" + | "util.types.isSet" + | "util.types.isMapIterator" + | "util.types.isSetIterator" + | "util.types.isWeakMap" + | "util.types.isWeakSet" + | "util.types.isArrayBuffer" + | "util.types.isDataView" + | "util.types.isSharedArrayBuffer" + | "util.types.isProxy" + | "util.types.isModuleNamespaceObject" + | "util.types.isAnyArrayBuffer" + | "util.types.isBoxedPrimitive" + | "util.types.isArrayBufferView" + | "util.types.isTypedArray" + | "util.types.isUint8Array" + | "util.types.isUint8ClampedArray" + | "util.types.isUint16Array" + | "util.types.isUint32Array" + | "util.types.isInt8Array" + | "util.types.isInt16Array" + | "util.types.isInt32Array" + | "util.types.isFloat32Array" + | "util.types.isFloat64Array" + | "util.types.isBigInt64Array" + | "util.types.isBigUint64Array" + | "util.types.isKeyObject" + | "util.types.isCryptoKey" + | "util.types.isWebAssemblyCompiledModule" + | "util._extend" + | "util.isArray" + | "util.isBoolean" + | "util.isBuffer" + | "util.isDate" + | "util.isError" + | "util.isFunction" + | "util.isNull" + | "util.isNullOrUndefined" + | "util.isNumber" + | "util.isObject" + | "util.isPrimitive" + | "util.isRegExp" + | "util.isString" + | "util.isSymbol" + | "util.isUndefined" + | "util.log" + | "util" + | "util/types" + | "util/types.isExternal" + | "util/types.isDate" + | "util/types.isArgumentsObject" + | "util/types.isBigIntObject" + | "util/types.isBooleanObject" + | "util/types.isNumberObject" + | "util/types.isStringObject" + | "util/types.isSymbolObject" + | "util/types.isNativeError" + | "util/types.isRegExp" + | "util/types.isAsyncFunction" + | "util/types.isGeneratorFunction" + | "util/types.isGeneratorObject" + | "util/types.isPromise" + | "util/types.isMap" + | "util/types.isSet" + | "util/types.isMapIterator" + | "util/types.isSetIterator" + | "util/types.isWeakMap" + | "util/types.isWeakSet" + | "util/types.isArrayBuffer" + | "util/types.isDataView" + | "util/types.isSharedArrayBuffer" + | "util/types.isProxy" + | "util/types.isModuleNamespaceObject" + | "util/types.isAnyArrayBuffer" + | "util/types.isBoxedPrimitive" + | "util/types.isArrayBufferView" + | "util/types.isTypedArray" + | "util/types.isUint8Array" + | "util/types.isUint8ClampedArray" + | "util/types.isUint16Array" + | "util/types.isUint32Array" + | "util/types.isInt8Array" + | "util/types.isInt16Array" + | "util/types.isInt32Array" + | "util/types.isFloat32Array" + | "util/types.isFloat64Array" + | "util/types.isBigInt64Array" + | "util/types.isBigUint64Array" + | "util/types.isKeyObject" + | "util/types.isCryptoKey" + | "util/types.isWebAssemblyCompiledModule" + | "v8" + | "v8.serialize" + | "v8.deserialize" + | "v8.Serializer" + | "v8.Deserializer" + | "v8.DefaultSerializer" + | "v8.DefaultDeserializer" + | "v8.promiseHooks" + | "v8.promiseHooks.onInit" + | "v8.promiseHooks.onSettled" + | "v8.promiseHooks.onBefore" + | "v8.promiseHooks.onAfter" + | "v8.promiseHooks.createHook" + | "v8.startupSnapshot" + | "v8.startupSnapshot.addSerializeCallback" + | "v8.startupSnapshot.addDeserializeCallback" + | "v8.startupSnapshot.setDeserializeMainFunction" + | "v8.startupSnapshot.isBuildingSnapshot" + | "v8.cachedDataVersionTag" + | "v8.getHeapCodeStatistics" + | "v8.getHeapSnapshot" + | "v8.getHeapSpaceStatistics" + | "v8.getHeapStatistics" + | "v8.queryObjects" + | "v8.setFlagsFromString" + | "v8.stopCoverage" + | "v8.takeCoverage" + | "v8.writeHeapSnapshot" + | "v8.setHeapSnapshotNearHeapLimit" + | "v8.GCProfiler" + | "vm.constants" + | "vm.compileFunction" + | "vm.createContext" + | "vm.isContext" + | "vm.measureMemory" + | "vm.runInContext" + | "vm.runInNewContext" + | "vm.runInThisContext" + | "vm.Script" + | "vm.Module" + | "vm.SourceTextModule" + | "vm.SyntheticModule" + | "vm" + | "wasi.WASI" + | "wasi" + | "worker_threads" + | "worker_threads.isMainThread" + | "worker_threads.parentPort" + | "worker_threads.resourceLimits" + | "worker_threads.SHARE_ENV" + | "worker_threads.threadId" + | "worker_threads.workerData" + | "worker_threads.getEnvironmentData" + | "worker_threads.markAsUncloneable" + | "worker_threads.markAsUntransferable" + | "worker_threads.isMarkedAsUntransferable" + | "worker_threads.moveMessagePortToContext" + | "worker_threads.postMessageToThread" + | "worker_threads.receiveMessageOnPort" + | "worker_threads.setEnvironmentData" + | "worker_threads.BroadcastChannel" + | "worker_threads.MessageChannel" + | "worker_threads.MessagePort" + | "worker_threads.Worker" + | "zlib.constants" + | "zlib.crc32" + | "zlib.createBrotliCompress" + | "zlib.createBrotliDecompress" + | "zlib.createDeflate" + | "zlib.createDeflateRaw" + | "zlib.createGunzip" + | "zlib.createGzip" + | "zlib.createInflate" + | "zlib.createInflateRaw" + | "zlib.createUnzip" + | "zlib.brotliCompress" + | "zlib.brotliCompressSync" + | "zlib.brotliDecompress" + | "zlib.brotliDecompressSync" + | "zlib.deflate" + | "zlib.deflateSync" + | "zlib.deflateRaw" + | "zlib.deflateRawSync" + | "zlib.gunzip" + | "zlib.gunzipSync" + | "zlib.gzip" + | "zlib.gzipSync" + | "zlib.inflate" + | "zlib.inflateSync" + | "zlib.inflateRaw" + | "zlib.inflateRawSync" + | "zlib.unzip" + | "zlib.unzipSync" + | "zlib.BrotliCompress()" + | "zlib.BrotliCompress" + | "zlib.BrotliDecompress()" + | "zlib.BrotliDecompress" + | "zlib.Deflate()" + | "zlib.Deflate" + | "zlib.DeflateRaw()" + | "zlib.DeflateRaw" + | "zlib.Gunzip()" + | "zlib.Gunzip" + | "zlib.Gzip()" + | "zlib.Gzip" + | "zlib.Inflate()" + | "zlib.Inflate" + | "zlib.InflateRaw()" + | "zlib.InflateRaw" + | "zlib.Unzip()" + | "zlib.Unzip" + | "zlib" + | "import.meta.resolve" + | "import.meta.dirname" + | "import.meta.filename" + )[]; + }, + ]; // ----- n/prefer-global/buffer ----- -type NPreferGlobalBuffer = []|[("always" | "never")] +type NPreferGlobalBuffer = [] | ["always" | "never"]; // ----- n/prefer-global/console ----- -type NPreferGlobalConsole = []|[("always" | "never")] +type NPreferGlobalConsole = [] | ["always" | "never"]; // ----- n/prefer-global/process ----- -type NPreferGlobalProcess = []|[("always" | "never")] +type NPreferGlobalProcess = [] | ["always" | "never"]; // ----- n/prefer-global/text-decoder ----- -type NPreferGlobalTextDecoder = []|[("always" | "never")] +type NPreferGlobalTextDecoder = [] | ["always" | "never"]; // ----- n/prefer-global/text-encoder ----- -type NPreferGlobalTextEncoder = []|[("always" | "never")] +type NPreferGlobalTextEncoder = [] | ["always" | "never"]; // ----- n/prefer-global/url ----- -type NPreferGlobalUrl = []|[("always" | "never")] +type NPreferGlobalUrl = [] | ["always" | "never"]; // ----- n/prefer-global/url-search-params ----- -type NPreferGlobalUrlSearchParams = []|[("always" | "never")] +type NPreferGlobalUrlSearchParams = [] | ["always" | "never"]; // ----- n/prefer-node-protocol ----- -type NPreferNodeProtocol = []|[{ - version?: string -}] +type NPreferNodeProtocol = + | [] + | [ + { + version?: string; + }, + ]; // ----- n/shebang ----- -type NShebang = []|[{ - convertPath?: ({ - - [k: string]: [string, string] - } | [{ - - include: [string, ...(string)[]] - exclude?: string[] - - replace: [string, string] - }, ...({ - - include: [string, ...(string)[]] - exclude?: string[] - - replace: [string, string] - })[]]) - ignoreUnpublished?: boolean - additionalExecutables?: string[] - executableMap?: { - [k: string]: string - } -}] +type NShebang = + | [] + | [ + { + convertPath?: + | { + [k: string]: [string, string]; + } + | [ + { + include: [string, ...string[]]; + exclude?: string[]; + + replace: [string, string]; + }, + ...{ + include: [string, ...string[]]; + exclude?: string[]; + + replace: [string, string]; + }[], + ]; + ignoreUnpublished?: boolean; + additionalExecutables?: string[]; + executableMap?: { + [k: string]: string; + }; + }, + ]; // ----- no-unsanitized/method ----- -type NoUnsanitizedMethod = []|[{ - defaultDisable?: boolean - escape?: { - taggedTemplates?: []|[string] - methods?: []|[string] - [k: string]: unknown | undefined - } - objectMatches?: unknown[] - properties?: unknown[] - variableTracing?: boolean -}]|[{ - defaultDisable?: boolean - escape?: { - taggedTemplates?: []|[string] - methods?: []|[string] - [k: string]: unknown | undefined - } - objectMatches?: unknown[] - properties?: unknown[] - variableTracing?: boolean -}, { - [k: string]: unknown | undefined -}] +type NoUnsanitizedMethod = + | [] + | [ + { + defaultDisable?: boolean; + escape?: { + taggedTemplates?: [] | [string]; + methods?: [] | [string]; + [k: string]: unknown | undefined; + }; + objectMatches?: unknown[]; + properties?: unknown[]; + variableTracing?: boolean; + }, + ] + | [ + { + defaultDisable?: boolean; + escape?: { + taggedTemplates?: [] | [string]; + methods?: [] | [string]; + [k: string]: unknown | undefined; + }; + objectMatches?: unknown[]; + properties?: unknown[]; + variableTracing?: boolean; + }, + { + [k: string]: unknown | undefined; + }, + ]; // ----- no-unsanitized/property ----- -type NoUnsanitizedProperty = []|[{ - escape?: { - taggedTemplates?: []|[string] - methods?: []|[string] - [k: string]: unknown | undefined - } - variableTracing?: boolean -}]|[{ - escape?: { - taggedTemplates?: []|[string] - methods?: []|[string] - [k: string]: unknown | undefined - } - variableTracing?: boolean -}, { - [k: string]: unknown | undefined -}] +type NoUnsanitizedProperty = + | [] + | [ + { + escape?: { + taggedTemplates?: [] | [string]; + methods?: [] | [string]; + [k: string]: unknown | undefined; + }; + variableTracing?: boolean; + }, + ] + | [ + { + escape?: { + taggedTemplates?: [] | [string]; + methods?: [] | [string]; + [k: string]: unknown | undefined; + }; + variableTracing?: boolean; + }, + { + [k: string]: unknown | undefined; + }, + ]; // ----- perfectionist/sort-array-includes ----- type PerfectionistSortArrayIncludes = { - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - specialCharacters?: ("remove" | "trim" | "keep") - - ignoreCase?: boolean - - alphabet?: string - - locales?: (string | string[]) - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - groupKind?: ("mixed" | "literals-first" | "spreads-first") - - customGroups?: ({ - - newlinesInside?: ("always" | "never") - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - anyOf?: { - - selector?: ("literal" | "spread") - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - }[] - } | { - - newlinesInside?: ("always" | "never") - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - selector?: ("literal" | "spread") - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - })[] - - useConfigurationIf?: { - - allNamesMatchPattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - } - - partitionByComment?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) | { - - block?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - - line?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - }) - - partitionByNewLine?: boolean - - newlinesBetween?: ("ignore" | "always" | "never") - - groups?: (string | string[] | { - - newlinesBetween: ("ignore" | "always" | "never") - })[] -}[] + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + specialCharacters?: "remove" | "trim" | "keep"; + + ignoreCase?: boolean; + + alphabet?: string; + + locales?: string | string[]; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + groupKind?: "mixed" | "literals-first" | "spreads-first"; + + customGroups?: ( + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + anyOf?: { + selector?: "literal" | "spread"; + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + }[]; + } + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + selector?: "literal" | "spread"; + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + } + )[]; + + useConfigurationIf?: { + allNamesMatchPattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + }; + + partitionByComment?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ) + | { + block?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + + line?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + }; + + partitionByNewLine?: boolean; + + newlinesBetween?: "ignore" | "always" | "never"; + + groups?: ( + | string + | string[] + | { + newlinesBetween: "ignore" | "always" | "never"; + } + )[]; +}[]; // ----- perfectionist/sort-classes ----- -type PerfectionistSortClasses = []|[{ - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - specialCharacters?: ("remove" | "trim" | "keep") - - ignoreCase?: boolean - - alphabet?: string - - locales?: (string | string[]) - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - customGroups?: ({ - - newlinesInside?: ("always" | "never") - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - anyOf?: { - - modifiers?: ("async" | "protected" | "private" | "public" | "static" | "abstract" | "override" | "readonly" | "decorated" | "declare" | "optional")[] - - selector?: ("accessor-property" | "index-signature" | "constructor" | "static-block" | "get-method" | "set-method" | "function-property" | "property" | "method") - - decoratorNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - - elementValuePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - }[] - } | { - - newlinesInside?: ("always" | "never") - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - modifiers?: ("async" | "protected" | "private" | "public" | "static" | "abstract" | "override" | "readonly" | "decorated" | "declare" | "optional")[] - - selector?: ("accessor-property" | "index-signature" | "constructor" | "static-block" | "get-method" | "set-method" | "function-property" | "property" | "method") - - decoratorNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - - elementValuePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - })[] - - ignoreCallbackDependenciesPatterns?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - - partitionByComment?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) | { - - block?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - - line?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - }) - - partitionByNewLine?: boolean - - newlinesBetween?: ("ignore" | "always" | "never") - - groups?: (string | string[] | { - - newlinesBetween: ("ignore" | "always" | "never") - })[] -}] -// ----- perfectionist/sort-decorators ----- -type PerfectionistSortDecorators = []|[{ - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - specialCharacters?: ("remove" | "trim" | "keep") - - ignoreCase?: boolean - - alphabet?: string - - locales?: (string | string[]) - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - sortOnParameters?: boolean - - sortOnProperties?: boolean - - sortOnAccessors?: boolean - - sortOnMethods?: boolean - - sortOnClasses?: boolean - - partitionByComment?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) | { - - block?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - - line?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - }) - - customGroups?: { - [k: string]: (string | string[]) | undefined - } - - groups?: (string | string[] | { - - newlinesBetween: ("ignore" | "always" | "never") - })[] -}] -// ----- perfectionist/sort-enums ----- -type PerfectionistSortEnums = []|[{ - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - specialCharacters?: ("remove" | "trim" | "keep") - - ignoreCase?: boolean - - alphabet?: string - - locales?: (string | string[]) - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - customGroups?: ({ - [k: string]: (string | string[]) | undefined - } | ({ - - newlinesInside?: ("always" | "never") - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - anyOf?: { - - elementValuePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - }[] - } | { - - newlinesInside?: ("always" | "never") - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - elementValuePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - })[]) - - forceNumericSort?: boolean - - sortByValue?: boolean - - partitionByComment?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) | { - - block?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - - line?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - }) - - partitionByNewLine?: boolean - - newlinesBetween?: ("ignore" | "always" | "never") - - groups?: (string | string[] | { - - newlinesBetween: ("ignore" | "always" | "never") - })[] -}] -// ----- perfectionist/sort-exports ----- -type PerfectionistSortExports = { - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - specialCharacters?: ("remove" | "trim" | "keep") - - ignoreCase?: boolean - - alphabet?: string - - locales?: (string | string[]) - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - groupKind?: ("mixed" | "values-first" | "types-first") - - customGroups?: ({ - - newlinesInside?: ("always" | "never") - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - anyOf?: { - - modifiers?: ("value" | "type")[] - - selector?: "export" - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - }[] - } | { - - newlinesInside?: ("always" | "never") - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - modifiers?: ("value" | "type")[] - - selector?: "export" - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - })[] - - partitionByComment?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) | { - - block?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - - line?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - }) - - partitionByNewLine?: boolean - - newlinesBetween?: ("ignore" | "always" | "never") - - groups?: (string | string[] | { - - newlinesBetween: ("ignore" | "always" | "never") - })[] -}[] +type PerfectionistSortClasses = + | [] + | [ + { + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + specialCharacters?: "remove" | "trim" | "keep"; + + ignoreCase?: boolean; + + alphabet?: string; + + locales?: string | string[]; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + customGroups?: ( + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + anyOf?: { + modifiers?: ( + | "async" + | "protected" + | "private" + | "public" + | "static" + | "abstract" + | "override" + | "readonly" + | "decorated" + | "declare" + | "optional" + )[]; + + selector?: + | "accessor-property" + | "index-signature" + | "constructor" + | "static-block" + | "get-method" + | "set-method" + | "function-property" + | "property" + | "method"; + + decoratorNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + + elementValuePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + }[]; + } + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + modifiers?: ( + | "async" + | "protected" + | "private" + | "public" + | "static" + | "abstract" + | "override" + | "readonly" + | "decorated" + | "declare" + | "optional" + )[]; + + selector?: + | "accessor-property" + | "index-signature" + | "constructor" + | "static-block" + | "get-method" + | "set-method" + | "function-property" + | "property" + | "method"; + + decoratorNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + + elementValuePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + } + )[]; + + ignoreCallbackDependenciesPatterns?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + + partitionByComment?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ) + | { + block?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + + line?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + }; + + partitionByNewLine?: boolean; + + newlinesBetween?: "ignore" | "always" | "never"; + + groups?: ( + | string + | string[] + | { + newlinesBetween: "ignore" | "always" | "never"; + } + )[]; + }, + ]; +// ----- perfectionist/sort-decorators ----- +type PerfectionistSortDecorators = + | [] + | [ + { + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + specialCharacters?: "remove" | "trim" | "keep"; + + ignoreCase?: boolean; + + alphabet?: string; + + locales?: string | string[]; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + sortOnParameters?: boolean; + + sortOnProperties?: boolean; + + sortOnAccessors?: boolean; + + sortOnMethods?: boolean; + + sortOnClasses?: boolean; + + partitionByComment?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ) + | { + block?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + + line?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + }; + + customGroups?: { + [k: string]: (string | string[]) | undefined; + }; + + groups?: ( + | string + | string[] + | { + newlinesBetween: "ignore" | "always" | "never"; + } + )[]; + }, + ]; +// ----- perfectionist/sort-enums ----- +type PerfectionistSortEnums = + | [] + | [ + { + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + specialCharacters?: "remove" | "trim" | "keep"; + + ignoreCase?: boolean; + + alphabet?: string; + + locales?: string | string[]; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + customGroups?: + | { + [k: string]: (string | string[]) | undefined; + } + | ( + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + anyOf?: { + elementValuePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + }[]; + } + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + elementValuePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + } + )[]; + + forceNumericSort?: boolean; + + sortByValue?: boolean; + + partitionByComment?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ) + | { + block?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + + line?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + }; + + partitionByNewLine?: boolean; + + newlinesBetween?: "ignore" | "always" | "never"; + + groups?: ( + | string + | string[] + | { + newlinesBetween: "ignore" | "always" | "never"; + } + )[]; + }, + ]; +// ----- perfectionist/sort-exports ----- +type PerfectionistSortExports = { + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + specialCharacters?: "remove" | "trim" | "keep"; + + ignoreCase?: boolean; + + alphabet?: string; + + locales?: string | string[]; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + groupKind?: "mixed" | "values-first" | "types-first"; + + customGroups?: ( + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + anyOf?: { + modifiers?: ("value" | "type")[]; + + selector?: "export"; + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + }[]; + } + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + modifiers?: ("value" | "type")[]; + + selector?: "export"; + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + } + )[]; + + partitionByComment?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ) + | { + block?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + + line?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + }; + + partitionByNewLine?: boolean; + + newlinesBetween?: "ignore" | "always" | "never"; + + groups?: ( + | string + | string[] + | { + newlinesBetween: "ignore" | "always" | "never"; + } + )[]; +}[]; // ----- perfectionist/sort-heritage-clauses ----- -type PerfectionistSortHeritageClauses = []|[{ - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - specialCharacters?: ("remove" | "trim" | "keep") - - ignoreCase?: boolean - - alphabet?: string - - locales?: (string | string[]) - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - customGroups?: { - [k: string]: (string | string[]) | undefined - } - - groups?: (string | string[] | { - - newlinesBetween: ("ignore" | "always" | "never") - })[] -}] +type PerfectionistSortHeritageClauses = + | [] + | [ + { + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + specialCharacters?: "remove" | "trim" | "keep"; + + ignoreCase?: boolean; + + alphabet?: string; + + locales?: string | string[]; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + customGroups?: { + [k: string]: (string | string[]) | undefined; + }; + + groups?: ( + | string + | string[] + | { + newlinesBetween: "ignore" | "always" | "never"; + } + )[]; + }, + ]; // ----- perfectionist/sort-imports ----- type PerfectionistSortImports = { - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - specialCharacters?: ("remove" | "trim" | "keep") - - ignoreCase?: boolean - - alphabet?: string - - locales?: (string | string[]) - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - customGroups?: ({ - - value?: { - [k: string]: (string | string[]) | undefined - } - - type?: { - [k: string]: (string | string[]) | undefined - } - } | ({ - - newlinesInside?: ("always" | "never") - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - anyOf?: { - - modifiers?: ("default" | "named" | "require" | "side-effect" | "ts-equals" | "type" | "value" | "wildcard")[] - - selector?: ("side-effect-style" | "tsconfig-path" | "side-effect" | "external" | "internal" | "builtin" | "sibling" | "subpath" | "import" | "parent" | "index" | "style" | "type") - - elementValuePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - }[] - } | { - - newlinesInside?: ("always" | "never") - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - modifiers?: ("default" | "named" | "require" | "side-effect" | "ts-equals" | "type" | "value" | "wildcard")[] - - selector?: ("side-effect-style" | "tsconfig-path" | "side-effect" | "external" | "internal" | "builtin" | "sibling" | "subpath" | "import" | "parent" | "index" | "style" | "type") - - elementValuePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - })[]) - - maxLineLength?: number - - sortSideEffects?: boolean - - environment?: ("node" | "bun") - - tsconfigRootDir?: string - - partitionByComment?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) | { - - block?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - - line?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - }) - - partitionByNewLine?: boolean - - newlinesBetween?: ("ignore" | "always" | "never") - - internalPattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - - groups?: (string | string[] | { - - newlinesBetween: ("ignore" | "always" | "never") - })[] -}[] + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + specialCharacters?: "remove" | "trim" | "keep"; + + ignoreCase?: boolean; + + alphabet?: string; + + locales?: string | string[]; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + customGroups?: + | { + value?: { + [k: string]: (string | string[]) | undefined; + }; + + type?: { + [k: string]: (string | string[]) | undefined; + }; + } + | ( + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + anyOf?: { + modifiers?: ("default" | "named" | "require" | "side-effect" | "ts-equals" | "type" | "value" | "wildcard")[]; + + selector?: + | "side-effect-style" + | "tsconfig-path" + | "side-effect" + | "external" + | "internal" + | "builtin" + | "sibling" + | "subpath" + | "import" + | "parent" + | "index" + | "style" + | "type"; + + elementValuePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + }[]; + } + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + modifiers?: ("default" | "named" | "require" | "side-effect" | "ts-equals" | "type" | "value" | "wildcard")[]; + + selector?: + | "side-effect-style" + | "tsconfig-path" + | "side-effect" + | "external" + | "internal" + | "builtin" + | "sibling" + | "subpath" + | "import" + | "parent" + | "index" + | "style" + | "type"; + + elementValuePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + } + )[]; + + maxLineLength?: number; + + sortSideEffects?: boolean; + + environment?: "node" | "bun"; + + tsconfigRootDir?: string; + + partitionByComment?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ) + | { + block?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + + line?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + }; + + partitionByNewLine?: boolean; + + newlinesBetween?: "ignore" | "always" | "never"; + + internalPattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + + groups?: ( + | string + | string[] + | { + newlinesBetween: "ignore" | "always" | "never"; + } + )[]; +}[]; // ----- perfectionist/sort-interfaces ----- type PerfectionistSortInterfaces = { - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - sortBy?: ("name" | "value") - } - - specialCharacters?: ("remove" | "trim" | "keep") - - ignoreCase?: boolean - - alphabet?: string - - locales?: (string | string[]) - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - customGroups?: ({ - [k: string]: (string | string[]) | undefined - } | ({ - - newlinesInside?: ("always" | "never") - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - sortBy?: ("name" | "value") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - anyOf?: { - - modifiers?: ("optional" | "required" | "multiline")[] - - selector?: ("index-signature" | "member" | "method" | "multiline" | "property") - - elementValuePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - sortBy?: ("name" | "value") - }[] - } | { - - newlinesInside?: ("always" | "never") - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - sortBy?: ("name" | "value") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - modifiers?: ("optional" | "required" | "multiline")[] - - selector?: ("index-signature" | "member" | "method" | "multiline" | "property") - - elementValuePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - sortBy?: ("name" | "value") - })[]) - - groupKind?: ("mixed" | "required-first" | "optional-first") - - useConfigurationIf?: { - - allNamesMatchPattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - - declarationMatchesPattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - } - - partitionByComment?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) | { - - block?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - - line?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - }) - - partitionByNewLine?: boolean - - newlinesBetween?: ("ignore" | "always" | "never") - - ignorePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - sortBy?: ("name" | "value") - - groups?: (string | string[] | { - - newlinesBetween: ("ignore" | "always" | "never") - })[] -}[] + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + sortBy?: "name" | "value"; + }; + + specialCharacters?: "remove" | "trim" | "keep"; + + ignoreCase?: boolean; + + alphabet?: string; + + locales?: string | string[]; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + customGroups?: + | { + [k: string]: (string | string[]) | undefined; + } + | ( + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + sortBy?: "name" | "value"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + anyOf?: { + modifiers?: ("optional" | "required" | "multiline")[]; + + selector?: "index-signature" | "member" | "method" | "multiline" | "property"; + + elementValuePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + sortBy?: "name" | "value"; + }[]; + } + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + sortBy?: "name" | "value"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + modifiers?: ("optional" | "required" | "multiline")[]; + + selector?: "index-signature" | "member" | "method" | "multiline" | "property"; + + elementValuePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + sortBy?: "name" | "value"; + } + )[]; + + groupKind?: "mixed" | "required-first" | "optional-first"; + + useConfigurationIf?: { + allNamesMatchPattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + + declarationMatchesPattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + }; + + partitionByComment?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ) + | { + block?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + + line?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + }; + + partitionByNewLine?: boolean; + + newlinesBetween?: "ignore" | "always" | "never"; + + ignorePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + sortBy?: "name" | "value"; + + groups?: ( + | string + | string[] + | { + newlinesBetween: "ignore" | "always" | "never"; + } + )[]; +}[]; // ----- perfectionist/sort-intersection-types ----- type PerfectionistSortIntersectionTypes = { - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - specialCharacters?: ("remove" | "trim" | "keep") - - ignoreCase?: boolean - - alphabet?: string - - locales?: (string | string[]) - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - customGroups?: ({ - - newlinesInside?: ("always" | "never") - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - anyOf?: { - - selector?: ("intersection" | "conditional" | "function" | "operator" | "keyword" | "literal" | "nullish" | "import" | "object" | "named" | "tuple" | "union") - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - }[] - } | { - - newlinesInside?: ("always" | "never") - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - selector?: ("intersection" | "conditional" | "function" | "operator" | "keyword" | "literal" | "nullish" | "import" | "object" | "named" | "tuple" | "union") - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - })[] - - partitionByComment?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) | { - - block?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - - line?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - }) - - partitionByNewLine?: boolean - - newlinesBetween?: ("ignore" | "always" | "never") - - groups?: (string | string[] | { - - newlinesBetween: ("ignore" | "always" | "never") - })[] -}[] + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + specialCharacters?: "remove" | "trim" | "keep"; + + ignoreCase?: boolean; + + alphabet?: string; + + locales?: string | string[]; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + customGroups?: ( + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + anyOf?: { + selector?: + | "intersection" + | "conditional" + | "function" + | "operator" + | "keyword" + | "literal" + | "nullish" + | "import" + | "object" + | "named" + | "tuple" + | "union"; + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + }[]; + } + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + selector?: + | "intersection" + | "conditional" + | "function" + | "operator" + | "keyword" + | "literal" + | "nullish" + | "import" + | "object" + | "named" + | "tuple" + | "union"; + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + } + )[]; + + partitionByComment?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ) + | { + block?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + + line?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + }; + + partitionByNewLine?: boolean; + + newlinesBetween?: "ignore" | "always" | "never"; + + groups?: ( + | string + | string[] + | { + newlinesBetween: "ignore" | "always" | "never"; + } + )[]; +}[]; // ----- perfectionist/sort-jsx-props ----- type PerfectionistSortJsxProps = { - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - specialCharacters?: ("remove" | "trim" | "keep") - - ignoreCase?: boolean - - alphabet?: string - - locales?: (string | string[]) - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - customGroups?: ({ - [k: string]: (string | string[]) | undefined - } | ({ - - newlinesInside?: ("always" | "never") - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - anyOf?: { - - modifiers?: ("shorthand" | "multiline")[] - - selector?: ("multiline" | "prop" | "shorthand") - - elementValuePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - }[] - } | { - - newlinesInside?: ("always" | "never") - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - modifiers?: ("shorthand" | "multiline")[] - - selector?: ("multiline" | "prop" | "shorthand") - - elementValuePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - })[]) - - useConfigurationIf?: { - - allNamesMatchPattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - - tagMatchesPattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - } - - partitionByNewLine?: boolean - - newlinesBetween?: ("ignore" | "always" | "never") - - ignorePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - - groups?: (string | string[] | { - - newlinesBetween: ("ignore" | "always" | "never") - })[] -}[] + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + specialCharacters?: "remove" | "trim" | "keep"; + + ignoreCase?: boolean; + + alphabet?: string; + + locales?: string | string[]; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + customGroups?: + | { + [k: string]: (string | string[]) | undefined; + } + | ( + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + anyOf?: { + modifiers?: ("shorthand" | "multiline")[]; + + selector?: "multiline" | "prop" | "shorthand"; + + elementValuePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + }[]; + } + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + modifiers?: ("shorthand" | "multiline")[]; + + selector?: "multiline" | "prop" | "shorthand"; + + elementValuePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + } + )[]; + + useConfigurationIf?: { + allNamesMatchPattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + + tagMatchesPattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + }; + + partitionByNewLine?: boolean; + + newlinesBetween?: "ignore" | "always" | "never"; + + ignorePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + + groups?: ( + | string + | string[] + | { + newlinesBetween: "ignore" | "always" | "never"; + } + )[]; +}[]; // ----- perfectionist/sort-maps ----- type PerfectionistSortMaps = { - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - specialCharacters?: ("remove" | "trim" | "keep") - - ignoreCase?: boolean - - alphabet?: string - - locales?: (string | string[]) - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - customGroups?: ({ - - newlinesInside?: ("always" | "never") - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - anyOf?: { - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - }[] - } | { - - newlinesInside?: ("always" | "never") - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - })[] - - useConfigurationIf?: { - - allNamesMatchPattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - } - - partitionByComment?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) | { - - block?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - - line?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - }) - - partitionByNewLine?: boolean - - newlinesBetween?: ("ignore" | "always" | "never") - - groups?: (string | string[] | { - - newlinesBetween: ("ignore" | "always" | "never") - })[] -}[] + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + specialCharacters?: "remove" | "trim" | "keep"; + + ignoreCase?: boolean; + + alphabet?: string; + + locales?: string | string[]; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + customGroups?: ( + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + anyOf?: { + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + }[]; + } + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + } + )[]; + + useConfigurationIf?: { + allNamesMatchPattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + }; + + partitionByComment?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ) + | { + block?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + + line?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + }; + + partitionByNewLine?: boolean; + + newlinesBetween?: "ignore" | "always" | "never"; + + groups?: ( + | string + | string[] + | { + newlinesBetween: "ignore" | "always" | "never"; + } + )[]; +}[]; // ----- perfectionist/sort-modules ----- -type PerfectionistSortModules = []|[{ - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - specialCharacters?: ("remove" | "trim" | "keep") - - ignoreCase?: boolean - - alphabet?: string - - locales?: (string | string[]) - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - customGroups?: ({ - - newlinesInside?: ("always" | "never") - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - anyOf?: { - - modifiers?: ("async" | "declare" | "decorated" | "default" | "export")[] - - selector?: ("enum" | "function" | "interface" | "type" | "class") - - decoratorNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - }[] - } | { - - newlinesInside?: ("always" | "never") - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - modifiers?: ("async" | "declare" | "decorated" | "default" | "export")[] - - selector?: ("enum" | "function" | "interface" | "type" | "class") - - decoratorNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - })[] - - partitionByComment?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) | { - - block?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - - line?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - }) - - partitionByNewLine?: boolean - - newlinesBetween?: ("ignore" | "always" | "never") - - groups?: (string | string[] | { - - newlinesBetween: ("ignore" | "always" | "never") - })[] -}] +type PerfectionistSortModules = + | [] + | [ + { + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + specialCharacters?: "remove" | "trim" | "keep"; + + ignoreCase?: boolean; + + alphabet?: string; + + locales?: string | string[]; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + customGroups?: ( + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + anyOf?: { + modifiers?: ("async" | "declare" | "decorated" | "default" | "export")[]; + + selector?: "enum" | "function" | "interface" | "type" | "class"; + + decoratorNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + }[]; + } + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + modifiers?: ("async" | "declare" | "decorated" | "default" | "export")[]; + + selector?: "enum" | "function" | "interface" | "type" | "class"; + + decoratorNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + } + )[]; + + partitionByComment?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ) + | { + block?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + + line?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + }; + + partitionByNewLine?: boolean; + + newlinesBetween?: "ignore" | "always" | "never"; + + groups?: ( + | string + | string[] + | { + newlinesBetween: "ignore" | "always" | "never"; + } + )[]; + }, + ]; // ----- perfectionist/sort-named-exports ----- type PerfectionistSortNamedExports = { - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - specialCharacters?: ("remove" | "trim" | "keep") - - ignoreCase?: boolean - - alphabet?: string - - locales?: (string | string[]) - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - groupKind?: ("mixed" | "values-first" | "types-first") - - ignoreAlias?: boolean - - customGroups?: ({ - - newlinesInside?: ("always" | "never") - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - anyOf?: { - - modifiers?: ("value" | "type")[] - - selector?: "export" - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - }[] - } | { - - newlinesInside?: ("always" | "never") - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - modifiers?: ("value" | "type")[] - - selector?: "export" - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - })[] - - partitionByComment?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) | { - - block?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - - line?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - }) - - partitionByNewLine?: boolean - - newlinesBetween?: ("ignore" | "always" | "never") - - groups?: (string | string[] | { - - newlinesBetween: ("ignore" | "always" | "never") - })[] -}[] + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + specialCharacters?: "remove" | "trim" | "keep"; + + ignoreCase?: boolean; + + alphabet?: string; + + locales?: string | string[]; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + groupKind?: "mixed" | "values-first" | "types-first"; + + ignoreAlias?: boolean; + + customGroups?: ( + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + anyOf?: { + modifiers?: ("value" | "type")[]; + + selector?: "export"; + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + }[]; + } + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + modifiers?: ("value" | "type")[]; + + selector?: "export"; + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + } + )[]; + + partitionByComment?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ) + | { + block?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + + line?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + }; + + partitionByNewLine?: boolean; + + newlinesBetween?: "ignore" | "always" | "never"; + + groups?: ( + | string + | string[] + | { + newlinesBetween: "ignore" | "always" | "never"; + } + )[]; +}[]; // ----- perfectionist/sort-named-imports ----- type PerfectionistSortNamedImports = { - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - specialCharacters?: ("remove" | "trim" | "keep") - - ignoreCase?: boolean - - alphabet?: string - - locales?: (string | string[]) - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - groupKind?: ("mixed" | "values-first" | "types-first") - - ignoreAlias?: boolean - - customGroups?: ({ - - newlinesInside?: ("always" | "never") - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - anyOf?: { - - modifiers?: ("value" | "type")[] - - selector?: "import" - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - }[] - } | { - - newlinesInside?: ("always" | "never") - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - modifiers?: ("value" | "type")[] - - selector?: "import" - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - })[] - - partitionByComment?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) | { - - block?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - - line?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - }) - - partitionByNewLine?: boolean - - newlinesBetween?: ("ignore" | "always" | "never") - - groups?: (string | string[] | { - - newlinesBetween: ("ignore" | "always" | "never") - })[] -}[] + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + specialCharacters?: "remove" | "trim" | "keep"; + + ignoreCase?: boolean; + + alphabet?: string; + + locales?: string | string[]; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + groupKind?: "mixed" | "values-first" | "types-first"; + + ignoreAlias?: boolean; + + customGroups?: ( + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + anyOf?: { + modifiers?: ("value" | "type")[]; + + selector?: "import"; + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + }[]; + } + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + modifiers?: ("value" | "type")[]; + + selector?: "import"; + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + } + )[]; + + partitionByComment?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ) + | { + block?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + + line?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + }; + + partitionByNewLine?: boolean; + + newlinesBetween?: "ignore" | "always" | "never"; + + groups?: ( + | string + | string[] + | { + newlinesBetween: "ignore" | "always" | "never"; + } + )[]; +}[]; // ----- perfectionist/sort-object-types ----- type PerfectionistSortObjectTypes = { - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - sortBy?: ("name" | "value") - } - - specialCharacters?: ("remove" | "trim" | "keep") - - ignoreCase?: boolean - - alphabet?: string - - locales?: (string | string[]) - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - customGroups?: ({ - [k: string]: (string | string[]) | undefined - } | ({ - - newlinesInside?: ("always" | "never") - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - sortBy?: ("name" | "value") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - anyOf?: { - - modifiers?: ("optional" | "required" | "multiline")[] - - selector?: ("index-signature" | "member" | "method" | "multiline" | "property") - - elementValuePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - sortBy?: ("name" | "value") - }[] - } | { - - newlinesInside?: ("always" | "never") - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - sortBy?: ("name" | "value") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - modifiers?: ("optional" | "required" | "multiline")[] - - selector?: ("index-signature" | "member" | "method" | "multiline" | "property") - - elementValuePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - sortBy?: ("name" | "value") - })[]) - - groupKind?: ("mixed" | "required-first" | "optional-first") - - useConfigurationIf?: { - - allNamesMatchPattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - - declarationMatchesPattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - } - - partitionByComment?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) | { - - block?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - - line?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - }) - - partitionByNewLine?: boolean - - newlinesBetween?: ("ignore" | "always" | "never") - - ignorePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - sortBy?: ("name" | "value") - - groups?: (string | string[] | { - - newlinesBetween: ("ignore" | "always" | "never") - })[] -}[] + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + sortBy?: "name" | "value"; + }; + + specialCharacters?: "remove" | "trim" | "keep"; + + ignoreCase?: boolean; + + alphabet?: string; + + locales?: string | string[]; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + customGroups?: + | { + [k: string]: (string | string[]) | undefined; + } + | ( + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + sortBy?: "name" | "value"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + anyOf?: { + modifiers?: ("optional" | "required" | "multiline")[]; + + selector?: "index-signature" | "member" | "method" | "multiline" | "property"; + + elementValuePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + sortBy?: "name" | "value"; + }[]; + } + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + sortBy?: "name" | "value"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + modifiers?: ("optional" | "required" | "multiline")[]; + + selector?: "index-signature" | "member" | "method" | "multiline" | "property"; + + elementValuePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + sortBy?: "name" | "value"; + } + )[]; + + groupKind?: "mixed" | "required-first" | "optional-first"; + + useConfigurationIf?: { + allNamesMatchPattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + + declarationMatchesPattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + }; + + partitionByComment?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ) + | { + block?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + + line?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + }; + + partitionByNewLine?: boolean; + + newlinesBetween?: "ignore" | "always" | "never"; + + ignorePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + sortBy?: "name" | "value"; + + groups?: ( + | string + | string[] + | { + newlinesBetween: "ignore" | "always" | "never"; + } + )[]; +}[]; // ----- perfectionist/sort-objects ----- type PerfectionistSortObjects = { - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - specialCharacters?: ("remove" | "trim" | "keep") - - ignoreCase?: boolean - - alphabet?: string - - locales?: (string | string[]) - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - destructuredObjects?: (boolean | { - - groups?: boolean - }) - customGroups?: ({ - [k: string]: (string | string[]) | undefined - } | ({ - - newlinesInside?: ("always" | "never") - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - anyOf?: { - - modifiers?: ("optional" | "required" | "multiline")[] - - selector?: ("member" | "method" | "multiline" | "property") - - elementValuePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - }[] - } | { - - newlinesInside?: ("always" | "never") - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - modifiers?: ("optional" | "required" | "multiline")[] - - selector?: ("member" | "method" | "multiline" | "property") - - elementValuePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - })[]) - - useConfigurationIf?: { - - allNamesMatchPattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - - callingFunctionNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - } - - destructureOnly?: boolean - - objectDeclarations?: boolean - - styledComponents?: boolean - - partitionByComment?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) | { - - block?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - - line?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - }) - - partitionByNewLine?: boolean - - newlinesBetween?: ("ignore" | "always" | "never") - - ignorePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - - groups?: (string | string[] | { - - newlinesBetween: ("ignore" | "always" | "never") - })[] -}[] + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + specialCharacters?: "remove" | "trim" | "keep"; + + ignoreCase?: boolean; + + alphabet?: string; + + locales?: string | string[]; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + destructuredObjects?: + | boolean + | { + groups?: boolean; + }; + customGroups?: + | { + [k: string]: (string | string[]) | undefined; + } + | ( + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + anyOf?: { + modifiers?: ("optional" | "required" | "multiline")[]; + + selector?: "member" | "method" | "multiline" | "property"; + + elementValuePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + }[]; + } + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + modifiers?: ("optional" | "required" | "multiline")[]; + + selector?: "member" | "method" | "multiline" | "property"; + + elementValuePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + } + )[]; + + useConfigurationIf?: { + allNamesMatchPattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + + callingFunctionNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + }; + + destructureOnly?: boolean; + + objectDeclarations?: boolean; + + styledComponents?: boolean; + + partitionByComment?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ) + | { + block?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + + line?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + }; + + partitionByNewLine?: boolean; + + newlinesBetween?: "ignore" | "always" | "never"; + + ignorePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + + groups?: ( + | string + | string[] + | { + newlinesBetween: "ignore" | "always" | "never"; + } + )[]; +}[]; // ----- perfectionist/sort-sets ----- type PerfectionistSortSets = { - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - specialCharacters?: ("remove" | "trim" | "keep") - - ignoreCase?: boolean - - alphabet?: string - - locales?: (string | string[]) - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - groupKind?: ("mixed" | "literals-first" | "spreads-first") - - customGroups?: ({ - - newlinesInside?: ("always" | "never") - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - anyOf?: { - - selector?: ("literal" | "spread") - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - }[] - } | { - - newlinesInside?: ("always" | "never") - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - selector?: ("literal" | "spread") - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - })[] - - useConfigurationIf?: { - - allNamesMatchPattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - } - - partitionByComment?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) | { - - block?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - - line?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - }) - - partitionByNewLine?: boolean - - newlinesBetween?: ("ignore" | "always" | "never") - - groups?: (string | string[] | { - - newlinesBetween: ("ignore" | "always" | "never") - })[] -}[] + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + specialCharacters?: "remove" | "trim" | "keep"; + + ignoreCase?: boolean; + + alphabet?: string; + + locales?: string | string[]; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + groupKind?: "mixed" | "literals-first" | "spreads-first"; + + customGroups?: ( + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + anyOf?: { + selector?: "literal" | "spread"; + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + }[]; + } + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + selector?: "literal" | "spread"; + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + } + )[]; + + useConfigurationIf?: { + allNamesMatchPattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + }; + + partitionByComment?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ) + | { + block?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + + line?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + }; + + partitionByNewLine?: boolean; + + newlinesBetween?: "ignore" | "always" | "never"; + + groups?: ( + | string + | string[] + | { + newlinesBetween: "ignore" | "always" | "never"; + } + )[]; +}[]; // ----- perfectionist/sort-switch-case ----- -type PerfectionistSortSwitchCase = []|[{ - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - specialCharacters?: ("remove" | "trim" | "keep") - - ignoreCase?: boolean - - alphabet?: string - - locales?: (string | string[]) - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") -}] +type PerfectionistSortSwitchCase = + | [] + | [ + { + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + specialCharacters?: "remove" | "trim" | "keep"; + + ignoreCase?: boolean; + + alphabet?: string; + + locales?: string | string[]; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }, + ]; // ----- perfectionist/sort-union-types ----- type PerfectionistSortUnionTypes = { - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - specialCharacters?: ("remove" | "trim" | "keep") - - ignoreCase?: boolean - - alphabet?: string - - locales?: (string | string[]) - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - customGroups?: ({ - - newlinesInside?: ("always" | "never") - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - anyOf?: { - - selector?: ("intersection" | "conditional" | "function" | "operator" | "keyword" | "literal" | "nullish" | "import" | "object" | "named" | "tuple" | "union") - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - }[] - } | { - - newlinesInside?: ("always" | "never") - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - selector?: ("intersection" | "conditional" | "function" | "operator" | "keyword" | "literal" | "nullish" | "import" | "object" | "named" | "tuple" | "union") - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - })[] - - partitionByComment?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) | { - - block?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - - line?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - }) - - partitionByNewLine?: boolean - - newlinesBetween?: ("ignore" | "always" | "never") - - groups?: (string | string[] | { - - newlinesBetween: ("ignore" | "always" | "never") - })[] -}[] + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + specialCharacters?: "remove" | "trim" | "keep"; + + ignoreCase?: boolean; + + alphabet?: string; + + locales?: string | string[]; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + customGroups?: ( + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + anyOf?: { + selector?: + | "intersection" + | "conditional" + | "function" + | "operator" + | "keyword" + | "literal" + | "nullish" + | "import" + | "object" + | "named" + | "tuple" + | "union"; + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + }[]; + } + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + selector?: + | "intersection" + | "conditional" + | "function" + | "operator" + | "keyword" + | "literal" + | "nullish" + | "import" + | "object" + | "named" + | "tuple" + | "union"; + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + } + )[]; + + partitionByComment?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ) + | { + block?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + + line?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + }; + + partitionByNewLine?: boolean; + + newlinesBetween?: "ignore" | "always" | "never"; + + groups?: ( + | string + | string[] + | { + newlinesBetween: "ignore" | "always" | "never"; + } + )[]; +}[]; // ----- perfectionist/sort-variable-declarations ----- -type PerfectionistSortVariableDeclarations = []|[{ - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - specialCharacters?: ("remove" | "trim" | "keep") - - ignoreCase?: boolean - - alphabet?: string - - locales?: (string | string[]) - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - customGroups?: ({ - - newlinesInside?: ("always" | "never") - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - anyOf?: { - - selector?: ("initialized" | "uninitialized") - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - }[] - } | { - - newlinesInside?: ("always" | "never") - - fallbackSort?: { - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - } - - groupName: string - - order?: ("asc" | "desc") - - type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted") - - selector?: ("initialized" | "uninitialized") - - elementNamePattern?: (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) - })[] - - partitionByComment?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string)) | { - - block?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - - line?: (boolean | (({ - - pattern: string - - flags?: string - } | string)[] | ({ - - pattern: string - - flags?: string - } | string))) - }) - - partitionByNewLine?: boolean - - newlinesBetween?: ("ignore" | "always" | "never") - - groups?: (string | string[] | { - - newlinesBetween: ("ignore" | "always" | "never") - })[] -}] +type PerfectionistSortVariableDeclarations = + | [] + | [ + { + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + specialCharacters?: "remove" | "trim" | "keep"; + + ignoreCase?: boolean; + + alphabet?: string; + + locales?: string | string[]; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + customGroups?: ( + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + anyOf?: { + selector?: "initialized" | "uninitialized"; + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + }[]; + } + | { + newlinesInside?: "always" | "never"; + + fallbackSort?: { + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + }; + + groupName: string; + + order?: "asc" | "desc"; + + type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; + + selector?: "initialized" | "uninitialized"; + + elementNamePattern?: + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ); + } + )[]; + + partitionByComment?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ) + | { + block?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + + line?: + | boolean + | ( + | ( + | { + pattern: string; + + flags?: string; + } + | string + )[] + | ( + | { + pattern: string; + + flags?: string; + } + | string + ) + ); + }; + + partitionByNewLine?: boolean; + + newlinesBetween?: "ignore" | "always" | "never"; + + groups?: ( + | string + | string[] + | { + newlinesBetween: "ignore" | "always" | "never"; + } + )[]; + }, + ]; // ----- playwright/expect-expect ----- -type PlaywrightExpectExpect = []|[{ - additionalAssertFunctionNames?: []|[string] -}] +type PlaywrightExpectExpect = + | [] + | [ + { + additionalAssertFunctionNames?: [] | [string]; + }, + ]; // ----- playwright/max-nested-describe ----- -type PlaywrightMaxNestedDescribe = []|[{ - max?: number -}] +type PlaywrightMaxNestedDescribe = + | [] + | [ + { + max?: number; + }, + ]; // ----- playwright/missing-playwright-await ----- -type PlaywrightMissingPlaywrightAwait = []|[{ - customMatchers?: string[] -}] +type PlaywrightMissingPlaywrightAwait = + | [] + | [ + { + customMatchers?: string[]; + }, + ]; // ----- playwright/no-restricted-matchers ----- -type PlaywrightNoRestrictedMatchers = []|[{ - [k: string]: (string | null) | undefined -}] +type PlaywrightNoRestrictedMatchers = + | [] + | [ + { + [k: string]: (string | null) | undefined; + }, + ]; // ----- playwright/no-skipped-test ----- -type PlaywrightNoSkippedTest = []|[{ - allowConditional?: boolean -}] +type PlaywrightNoSkippedTest = + | [] + | [ + { + allowConditional?: boolean; + }, + ]; // ----- playwright/prefer-lowercase-title ----- -type PlaywrightPreferLowercaseTitle = []|[{ - allowedPrefixes?: string[] - ignore?: ("test.describe" | "test")[] - ignoreTopLevelDescribe?: boolean -}] +type PlaywrightPreferLowercaseTitle = + | [] + | [ + { + allowedPrefixes?: string[]; + ignore?: ("test.describe" | "test")[]; + ignoreTopLevelDescribe?: boolean; + }, + ]; // ----- playwright/require-top-level-describe ----- -type PlaywrightRequireTopLevelDescribe = []|[{ - maxTopLevelDescribes?: number -}] +type PlaywrightRequireTopLevelDescribe = + | [] + | [ + { + maxTopLevelDescribes?: number; + }, + ]; // ----- playwright/valid-expect ----- -type PlaywrightValidExpect = []|[{ - maxArgs?: number - minArgs?: number -}] +type PlaywrightValidExpect = + | [] + | [ + { + maxArgs?: number; + minArgs?: number; + }, + ]; // ----- promise/always-return ----- -type PromiseAlwaysReturn = []|[{ - ignoreLastCallback?: boolean - ignoreAssignmentVariable?: string[] -}] +type PromiseAlwaysReturn = + | [] + | [ + { + ignoreLastCallback?: boolean; + ignoreAssignmentVariable?: string[]; + }, + ]; // ----- promise/catch-or-return ----- -type PromiseCatchOrReturn = []|[{ - allowFinally?: boolean - allowThen?: boolean - allowThenStrict?: boolean - terminationMethod?: (string | string[]) -}] +type PromiseCatchOrReturn = + | [] + | [ + { + allowFinally?: boolean; + allowThen?: boolean; + allowThenStrict?: boolean; + terminationMethod?: string | string[]; + }, + ]; // ----- promise/no-callback-in-promise ----- -type PromiseNoCallbackInPromise = []|[{ - exceptions?: string[] - timeoutsErr?: boolean -}] +type PromiseNoCallbackInPromise = + | [] + | [ + { + exceptions?: string[]; + timeoutsErr?: boolean; + }, + ]; // ----- promise/no-return-wrap ----- -type PromiseNoReturnWrap = []|[{ - allowReject?: boolean -}] +type PromiseNoReturnWrap = + | [] + | [ + { + allowReject?: boolean; + }, + ]; // ----- promise/param-names ----- -type PromiseParamNames = []|[{ - resolvePattern?: string - rejectPattern?: string -}] +type PromiseParamNames = + | [] + | [ + { + resolvePattern?: string; + rejectPattern?: string; + }, + ]; // ----- promise/prefer-await-to-then ----- -type PromisePreferAwaitToThen = []|[{ - strict?: boolean - [k: string]: unknown | undefined -}] +type PromisePreferAwaitToThen = + | [] + | [ + { + strict?: boolean; + [k: string]: unknown | undefined; + }, + ]; // ----- promise/spec-only ----- -type PromiseSpecOnly = []|[{ - allowedMethods?: string[] -}] +type PromiseSpecOnly = + | [] + | [ + { + allowedMethods?: string[]; + }, + ]; // ----- promise/valid-params ----- -type PromiseValidParams = []|[{ - exclude?: string[] -}] +type PromiseValidParams = + | [] + | [ + { + exclude?: string[]; + }, + ]; // ----- react-dom/no-unknown-property ----- -type ReactDomNoUnknownProperty = []|[{ - ignore?: string[] - requireDataLowercase?: boolean -}] +type ReactDomNoUnknownProperty = + | [] + | [ + { + ignore?: string[]; + requireDataLowercase?: boolean; + }, + ]; // ----- react-hooks/exhaustive-deps ----- -type ReactHooksExhaustiveDeps = []|[{ - additionalHooks?: string - enableDangerousAutofixThisMayCauseInfiniteLoops?: boolean -}] +type ReactHooksExhaustiveDeps = + | [] + | [ + { + additionalHooks?: string; + enableDangerousAutofixThisMayCauseInfiniteLoops?: boolean; + }, + ]; // ----- react-naming-convention/component-name ----- -type ReactNamingConventionComponentName = []|[(("PascalCase" | "CONSTANT_CASE") | { - allowAllCaps?: boolean - allowLeadingUnderscore?: boolean - allowNamespace?: boolean - excepts?: string[] - rule?: ("PascalCase" | "CONSTANT_CASE") -})] +type ReactNamingConventionComponentName = + | [] + | [ + | ("PascalCase" | "CONSTANT_CASE") + | { + allowAllCaps?: boolean; + allowLeadingUnderscore?: boolean; + allowNamespace?: boolean; + excepts?: string[]; + rule?: "PascalCase" | "CONSTANT_CASE"; + }, + ]; // ----- react-naming-convention/filename ----- -type ReactNamingConventionFilename = []|[(("PascalCase" | "camelCase" | "kebab-case" | "snake_case") | { - excepts?: string[] - extensions?: string[] - rule?: ("PascalCase" | "camelCase" | "kebab-case" | "snake_case") -})] +type ReactNamingConventionFilename = + | [] + | [ + | ("PascalCase" | "camelCase" | "kebab-case" | "snake_case") + | { + excepts?: string[]; + extensions?: string[]; + rule?: "PascalCase" | "camelCase" | "kebab-case" | "snake_case"; + }, + ]; // ----- react-naming-convention/filename-extension ----- -type ReactNamingConventionFilenameExtension = []|[(("always" | "as-needed") | { - allow?: ("always" | "as-needed") - extensions?: string[] - ignoreFilesWithoutCode?: boolean -})] +type ReactNamingConventionFilenameExtension = + | [] + | [ + | ("always" | "as-needed") + | { + allow?: "always" | "as-needed"; + extensions?: string[]; + ignoreFilesWithoutCode?: boolean; + }, + ]; // ----- react-refresh/only-export-components ----- -type ReactRefreshOnlyExportComponents = []|[{ - allowExportNames?: string[] - allowConstantExport?: boolean - customHOCs?: string[] - checkJS?: boolean -}] +type ReactRefreshOnlyExportComponents = + | [] + | [ + { + allowExportNames?: string[]; + allowConstantExport?: boolean; + customHOCs?: string[]; + checkJS?: boolean; + }, + ]; // ----- react-x/no-useless-fragment ----- -type ReactXNoUselessFragment = []|[{ - - allowExpressions?: boolean -}] +type ReactXNoUselessFragment = + | [] + | [ + { + allowExpressions?: boolean; + }, + ]; // ----- react/boolean-prop-naming ----- -type ReactBooleanPropNaming = []|[{ - - propTypeNames?: [string, ...(string)[]] - rule?: string - message?: string - validateNested?: boolean -}] +type ReactBooleanPropNaming = + | [] + | [ + { + propTypeNames?: [string, ...string[]]; + rule?: string; + message?: string; + validateNested?: boolean; + }, + ]; // ----- react/button-has-type ----- -type ReactButtonHasType = []|[{ - button?: boolean - submit?: boolean - reset?: boolean -}] +type ReactButtonHasType = + | [] + | [ + { + button?: boolean; + submit?: boolean; + reset?: boolean; + }, + ]; // ----- react/checked-requires-onchange-or-readonly ----- -type ReactCheckedRequiresOnchangeOrReadonly = []|[{ - ignoreMissingProperties?: boolean - ignoreExclusiveCheckedAttribute?: boolean -}] +type ReactCheckedRequiresOnchangeOrReadonly = + | [] + | [ + { + ignoreMissingProperties?: boolean; + ignoreExclusiveCheckedAttribute?: boolean; + }, + ]; // ----- react/default-props-match-prop-types ----- -type ReactDefaultPropsMatchPropTypes = []|[{ - allowRequiredDefaults?: boolean -}] +type ReactDefaultPropsMatchPropTypes = + | [] + | [ + { + allowRequiredDefaults?: boolean; + }, + ]; // ----- react/destructuring-assignment ----- -type ReactDestructuringAssignment = []|[("always" | "never")]|[("always" | "never"), { - ignoreClassFields?: boolean - destructureInSignature?: ("always" | "ignore") -}] +type ReactDestructuringAssignment = + | [] + | ["always" | "never"] + | [ + "always" | "never", + { + ignoreClassFields?: boolean; + destructureInSignature?: "always" | "ignore"; + }, + ]; // ----- react/display-name ----- -type ReactDisplayName = []|[{ - ignoreTranspilerName?: boolean - checkContextObjects?: boolean -}] +type ReactDisplayName = + | [] + | [ + { + ignoreTranspilerName?: boolean; + checkContextObjects?: boolean; + }, + ]; // ----- react/forbid-component-props ----- -type ReactForbidComponentProps = []|[{ - forbid?: (string | { - propName?: string - allowedFor?: string[] - allowedForPatterns?: string[] - message?: string - } | ({ - [k: string]: unknown | undefined - } | { - [k: string]: unknown | undefined - }) | { - propNamePattern?: string - allowedFor?: string[] - allowedForPatterns?: string[] - message?: string - } | ({ - [k: string]: unknown | undefined - } | { - [k: string]: unknown | undefined - }))[] - [k: string]: unknown | undefined -}] +type ReactForbidComponentProps = + | [] + | [ + { + forbid?: ( + | string + | { + propName?: string; + allowedFor?: string[]; + allowedForPatterns?: string[]; + message?: string; + } + | ( + | { + [k: string]: unknown | undefined; + } + | { + [k: string]: unknown | undefined; + } + ) + | { + propNamePattern?: string; + allowedFor?: string[]; + allowedForPatterns?: string[]; + message?: string; + } + | ( + | { + [k: string]: unknown | undefined; + } + | { + [k: string]: unknown | undefined; + } + ) + )[]; + [k: string]: unknown | undefined; + }, + ]; // ----- react/forbid-dom-props ----- -type ReactForbidDomProps = []|[{ - forbid?: (string | { - propName?: string - disallowedFor?: string[] - message?: string - [k: string]: unknown | undefined - })[] -}] +type ReactForbidDomProps = + | [] + | [ + { + forbid?: ( + | string + | { + propName?: string; + disallowedFor?: string[]; + message?: string; + [k: string]: unknown | undefined; + } + )[]; + }, + ]; // ----- react/forbid-elements ----- -type ReactForbidElements = []|[{ - forbid?: (string | { - element: string - message?: string - })[] -}] +type ReactForbidElements = + | [] + | [ + { + forbid?: ( + | string + | { + element: string; + message?: string; + } + )[]; + }, + ]; // ----- react/forbid-foreign-prop-types ----- -type ReactForbidForeignPropTypes = []|[{ - allowInPropTypes?: boolean -}] +type ReactForbidForeignPropTypes = + | [] + | [ + { + allowInPropTypes?: boolean; + }, + ]; // ----- react/forbid-prop-types ----- -type ReactForbidPropTypes = []|[{ - forbid?: string[] - checkContextTypes?: boolean - checkChildContextTypes?: boolean - [k: string]: unknown | undefined -}] +type ReactForbidPropTypes = + | [] + | [ + { + forbid?: string[]; + checkContextTypes?: boolean; + checkChildContextTypes?: boolean; + [k: string]: unknown | undefined; + }, + ]; // ----- react/function-component-definition ----- -type ReactFunctionComponentDefinition = []|[{ - namedComponents?: (("function-declaration" | "arrow-function" | "function-expression") | ("function-declaration" | "arrow-function" | "function-expression")[]) - unnamedComponents?: (("arrow-function" | "function-expression") | ("arrow-function" | "function-expression")[]) - [k: string]: unknown | undefined -}] +type ReactFunctionComponentDefinition = + | [] + | [ + { + namedComponents?: + | ("function-declaration" | "arrow-function" | "function-expression") + | ("function-declaration" | "arrow-function" | "function-expression")[]; + unnamedComponents?: ("arrow-function" | "function-expression") | ("arrow-function" | "function-expression")[]; + [k: string]: unknown | undefined; + }, + ]; // ----- react/hook-use-state ----- -type ReactHookUseState = []|[{ - allowDestructuredState?: boolean -}] +type ReactHookUseState = + | [] + | [ + { + allowDestructuredState?: boolean; + }, + ]; // ----- react/jsx-boolean-value ----- -type ReactJsxBooleanValue = ([]|[("always" | "never")] | []|["always"]|["always", { - never?: string[] - assumeUndefinedIsFalse?: boolean -}] | []|["never"]|["never", { - always?: string[] - assumeUndefinedIsFalse?: boolean -}]) +type ReactJsxBooleanValue = + | [] + | ["always" | "never"] + | [] + | ["always"] + | [ + "always", + { + never?: string[]; + assumeUndefinedIsFalse?: boolean; + }, + ] + | [] + | ["never"] + | [ + "never", + { + always?: string[]; + assumeUndefinedIsFalse?: boolean; + }, + ]; // ----- react/jsx-closing-bracket-location ----- -type ReactJsxClosingBracketLocation = []|[(("after-props" | "props-aligned" | "tag-aligned" | "line-aligned") | { - location?: ("after-props" | "props-aligned" | "tag-aligned" | "line-aligned") -} | { - nonEmpty?: ("after-props" | "props-aligned" | "tag-aligned" | "line-aligned" | false) - selfClosing?: ("after-props" | "props-aligned" | "tag-aligned" | "line-aligned" | false) -})] +type ReactJsxClosingBracketLocation = + | [] + | [ + | ("after-props" | "props-aligned" | "tag-aligned" | "line-aligned") + | { + location?: "after-props" | "props-aligned" | "tag-aligned" | "line-aligned"; + } + | { + nonEmpty?: "after-props" | "props-aligned" | "tag-aligned" | "line-aligned" | false; + selfClosing?: "after-props" | "props-aligned" | "tag-aligned" | "line-aligned" | false; + }, + ]; // ----- react/jsx-closing-tag-location ----- -type ReactJsxClosingTagLocation = []|[(("tag-aligned" | "line-aligned") | { - location?: ("tag-aligned" | "line-aligned") -})] +type ReactJsxClosingTagLocation = + | [] + | [ + | ("tag-aligned" | "line-aligned") + | { + location?: "tag-aligned" | "line-aligned"; + }, + ]; // ----- react/jsx-curly-brace-presence ----- -type ReactJsxCurlyBracePresence = []|[({ - props?: ("always" | "never" | "ignore") - children?: ("always" | "never" | "ignore") - propElementValues?: ("always" | "never" | "ignore") -} | ("always" | "never" | "ignore"))] +type ReactJsxCurlyBracePresence = + | [] + | [ + | { + props?: "always" | "never" | "ignore"; + children?: "always" | "never" | "ignore"; + propElementValues?: "always" | "never" | "ignore"; + } + | ("always" | "never" | "ignore"), + ]; // ----- react/jsx-curly-newline ----- -type ReactJsxCurlyNewline = []|[(("consistent" | "never") | { - singleline?: ("consistent" | "require" | "forbid") - multiline?: ("consistent" | "require" | "forbid") -})] +type ReactJsxCurlyNewline = + | [] + | [ + | ("consistent" | "never") + | { + singleline?: "consistent" | "require" | "forbid"; + multiline?: "consistent" | "require" | "forbid"; + }, + ]; // ----- react/jsx-curly-spacing ----- -type ReactJsxCurlySpacing = []|[((_ReactJsxCurlySpacing_BasicConfig & { - attributes?: _ReactJsxCurlySpacingBasicConfigOrBoolean - children?: _ReactJsxCurlySpacingBasicConfigOrBoolean - [k: string]: unknown | undefined -}) | ("always" | "never"))]|[((_ReactJsxCurlySpacing_BasicConfig & { - attributes?: _ReactJsxCurlySpacingBasicConfigOrBoolean - children?: _ReactJsxCurlySpacingBasicConfigOrBoolean - [k: string]: unknown | undefined -}) | ("always" | "never")), { - allowMultiline?: boolean - spacing?: { - objectLiterals?: ("always" | "never") - [k: string]: unknown | undefined - } -}] -type _ReactJsxCurlySpacingBasicConfigOrBoolean = (_ReactJsxCurlySpacing_BasicConfig | boolean) +type ReactJsxCurlySpacing = + | [] + | [ + | (_ReactJsxCurlySpacing_BasicConfig & { + attributes?: _ReactJsxCurlySpacingBasicConfigOrBoolean; + children?: _ReactJsxCurlySpacingBasicConfigOrBoolean; + [k: string]: unknown | undefined; + }) + | ("always" | "never"), + ] + | [ + ( + | (_ReactJsxCurlySpacing_BasicConfig & { + attributes?: _ReactJsxCurlySpacingBasicConfigOrBoolean; + children?: _ReactJsxCurlySpacingBasicConfigOrBoolean; + [k: string]: unknown | undefined; + }) + | ("always" | "never") + ), + { + allowMultiline?: boolean; + spacing?: { + objectLiterals?: "always" | "never"; + [k: string]: unknown | undefined; + }; + }, + ]; +type _ReactJsxCurlySpacingBasicConfigOrBoolean = _ReactJsxCurlySpacing_BasicConfig | boolean; interface _ReactJsxCurlySpacing_BasicConfig { - when?: ("always" | "never") - allowMultiline?: boolean - spacing?: { - objectLiterals?: ("always" | "never") - [k: string]: unknown | undefined - } - [k: string]: unknown | undefined + when?: "always" | "never"; + allowMultiline?: boolean; + spacing?: { + objectLiterals?: "always" | "never"; + [k: string]: unknown | undefined; + }; + [k: string]: unknown | undefined; } // ----- react/jsx-equals-spacing ----- -type ReactJsxEqualsSpacing = []|[("always" | "never")] +type ReactJsxEqualsSpacing = [] | ["always" | "never"]; // ----- react/jsx-filename-extension ----- -type ReactJsxFilenameExtension = []|[{ - allow?: ("always" | "as-needed") - extensions?: string[] - ignoreFilesWithoutCode?: boolean -}] +type ReactJsxFilenameExtension = + | [] + | [ + { + allow?: "always" | "as-needed"; + extensions?: string[]; + ignoreFilesWithoutCode?: boolean; + }, + ]; // ----- react/jsx-first-prop-new-line ----- -type ReactJsxFirstPropNewLine = []|[("always" | "never" | "multiline" | "multiline-multiprop" | "multiprop")] +type ReactJsxFirstPropNewLine = [] | ["always" | "never" | "multiline" | "multiline-multiprop" | "multiprop"]; // ----- react/jsx-fragments ----- -type ReactJsxFragments = []|[("syntax" | "element")] +type ReactJsxFragments = [] | ["syntax" | "element"]; // ----- react/jsx-handler-names ----- -type ReactJsxHandlerNames = []|[({ - eventHandlerPrefix?: string - eventHandlerPropPrefix?: string - checkLocalVariables?: boolean - checkInlineFunction?: boolean - ignoreComponentNames?: string[] -} | { - eventHandlerPrefix?: string - eventHandlerPropPrefix?: false - checkLocalVariables?: boolean - checkInlineFunction?: boolean - ignoreComponentNames?: string[] -} | { - eventHandlerPrefix?: false - eventHandlerPropPrefix?: string - checkLocalVariables?: boolean - checkInlineFunction?: boolean - ignoreComponentNames?: string[] -} | { - checkLocalVariables?: boolean -} | { - checkInlineFunction?: boolean -} | { - ignoreComponentNames?: string[] - [k: string]: unknown | undefined -})] +type ReactJsxHandlerNames = + | [] + | [ + | { + eventHandlerPrefix?: string; + eventHandlerPropPrefix?: string; + checkLocalVariables?: boolean; + checkInlineFunction?: boolean; + ignoreComponentNames?: string[]; + } + | { + eventHandlerPrefix?: string; + eventHandlerPropPrefix?: false; + checkLocalVariables?: boolean; + checkInlineFunction?: boolean; + ignoreComponentNames?: string[]; + } + | { + eventHandlerPrefix?: false; + eventHandlerPropPrefix?: string; + checkLocalVariables?: boolean; + checkInlineFunction?: boolean; + ignoreComponentNames?: string[]; + } + | { + checkLocalVariables?: boolean; + } + | { + checkInlineFunction?: boolean; + } + | { + ignoreComponentNames?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- react/jsx-indent ----- -type ReactJsxIndent = []|[("tab" | number)]|[("tab" | number), { - checkAttributes?: boolean - indentLogicalExpressions?: boolean -}] +type ReactJsxIndent = + | [] + | ["tab" | number] + | [ + "tab" | number, + { + checkAttributes?: boolean; + indentLogicalExpressions?: boolean; + }, + ]; // ----- react/jsx-indent-props ----- -type ReactJsxIndentProps = []|[(("tab" | "first") | number | { - indentMode?: (("tab" | "first") | number) - ignoreTernaryOperator?: boolean - [k: string]: unknown | undefined -})] +type ReactJsxIndentProps = + | [] + | [ + | ("tab" | "first") + | number + | { + indentMode?: ("tab" | "first") | number; + ignoreTernaryOperator?: boolean; + [k: string]: unknown | undefined; + }, + ]; // ----- react/jsx-key ----- -type ReactJsxKey = []|[{ - checkFragmentShorthand?: boolean - checkKeyMustBeforeSpread?: boolean - warnOnDuplicates?: boolean -}] +type ReactJsxKey = + | [] + | [ + { + checkFragmentShorthand?: boolean; + checkKeyMustBeforeSpread?: boolean; + warnOnDuplicates?: boolean; + }, + ]; // ----- react/jsx-max-depth ----- -type ReactJsxMaxDepth = []|[{ - max?: number -}] +type ReactJsxMaxDepth = + | [] + | [ + { + max?: number; + }, + ]; // ----- react/jsx-max-props-per-line ----- -type ReactJsxMaxPropsPerLine = []|[({ - maximum?: { - single?: number - multi?: number - [k: string]: unknown | undefined - } -} | { - maximum?: number - when?: ("always" | "multiline") -})] +type ReactJsxMaxPropsPerLine = + | [] + | [ + | { + maximum?: { + single?: number; + multi?: number; + [k: string]: unknown | undefined; + }; + } + | { + maximum?: number; + when?: "always" | "multiline"; + }, + ]; // ----- react/jsx-newline ----- -type ReactJsxNewline = []|[{ - prevent?: boolean - allowMultilines?: boolean -}] +type ReactJsxNewline = + | [] + | [ + { + prevent?: boolean; + allowMultilines?: boolean; + }, + ]; // ----- react/jsx-no-bind ----- -type ReactJsxNoBind = []|[{ - allowArrowFunctions?: boolean - allowBind?: boolean - allowFunctions?: boolean - ignoreRefs?: boolean - ignoreDOMComponents?: boolean -}] +type ReactJsxNoBind = + | [] + | [ + { + allowArrowFunctions?: boolean; + allowBind?: boolean; + allowFunctions?: boolean; + ignoreRefs?: boolean; + ignoreDOMComponents?: boolean; + }, + ]; // ----- react/jsx-no-duplicate-props ----- -type ReactJsxNoDuplicateProps = []|[{ - ignoreCase?: boolean -}] +type ReactJsxNoDuplicateProps = + | [] + | [ + { + ignoreCase?: boolean; + }, + ]; // ----- react/jsx-no-leaked-render ----- -type ReactJsxNoLeakedRender = []|[{ - validStrategies?: ("ternary" | "coerce")[] -}] +type ReactJsxNoLeakedRender = + | [] + | [ + { + validStrategies?: ("ternary" | "coerce")[]; + }, + ]; // ----- react/jsx-no-literals ----- -type ReactJsxNoLiterals = []|[{ - elementOverrides?: { - [k: string]: { - applyToNestedElements?: boolean - noStrings?: boolean - allowedStrings?: string[] - ignoreProps?: boolean - noAttributeStrings?: boolean - [k: string]: unknown | undefined - } - } - noStrings?: boolean - allowedStrings?: string[] - ignoreProps?: boolean - noAttributeStrings?: boolean -}] +type ReactJsxNoLiterals = + | [] + | [ + { + elementOverrides?: { + [k: string]: { + applyToNestedElements?: boolean; + noStrings?: boolean; + allowedStrings?: string[]; + ignoreProps?: boolean; + noAttributeStrings?: boolean; + [k: string]: unknown | undefined; + }; + }; + noStrings?: boolean; + allowedStrings?: string[]; + ignoreProps?: boolean; + noAttributeStrings?: boolean; + }, + ]; // ----- react/jsx-no-script-url ----- -type ReactJsxNoScriptUrl = ([]|[{ - name: string - props: string[] -}[]]|[{ - name: string - props: string[] -}[], { - includeFromSettings?: boolean - [k: string]: unknown | undefined -}] | []|[{ - includeFromSettings?: boolean - [k: string]: unknown | undefined -}]) +type ReactJsxNoScriptUrl = + | [] + | [ + { + name: string; + props: string[]; + }[], + ] + | [ + { + name: string; + props: string[]; + }[], + { + includeFromSettings?: boolean; + [k: string]: unknown | undefined; + }, + ] + | [] + | [ + { + includeFromSettings?: boolean; + [k: string]: unknown | undefined; + }, + ]; // ----- react/jsx-no-target-blank ----- -type ReactJsxNoTargetBlank = []|[{ - allowReferrer?: boolean - enforceDynamicLinks?: ("always" | "never") - warnOnSpreadAttributes?: boolean - links?: boolean - forms?: boolean -}] +type ReactJsxNoTargetBlank = + | [] + | [ + { + allowReferrer?: boolean; + enforceDynamicLinks?: "always" | "never"; + warnOnSpreadAttributes?: boolean; + links?: boolean; + forms?: boolean; + }, + ]; // ----- react/jsx-no-undef ----- -type ReactJsxNoUndef = []|[{ - allowGlobals?: boolean -}] +type ReactJsxNoUndef = + | [] + | [ + { + allowGlobals?: boolean; + }, + ]; // ----- react/jsx-no-useless-fragment ----- -type ReactJsxNoUselessFragment = []|[{ - allowExpressions?: boolean - [k: string]: unknown | undefined -}] +type ReactJsxNoUselessFragment = + | [] + | [ + { + allowExpressions?: boolean; + [k: string]: unknown | undefined; + }, + ]; // ----- react/jsx-one-expression-per-line ----- -type ReactJsxOneExpressionPerLine = []|[{ - allow?: ("none" | "literal" | "single-child" | "non-jsx") -}] +type ReactJsxOneExpressionPerLine = + | [] + | [ + { + allow?: "none" | "literal" | "single-child" | "non-jsx"; + }, + ]; // ----- react/jsx-pascal-case ----- -type ReactJsxPascalCase = []|[{ - allowAllCaps?: boolean - allowLeadingUnderscore?: boolean - allowNamespace?: boolean - - ignore?: []|[string] -}] +type ReactJsxPascalCase = + | [] + | [ + { + allowAllCaps?: boolean; + allowLeadingUnderscore?: boolean; + allowNamespace?: boolean; + + ignore?: [] | [string]; + }, + ]; // ----- react/jsx-props-no-spreading ----- -type ReactJsxPropsNoSpreading = []|[({ - html?: ("enforce" | "ignore") - custom?: ("enforce" | "ignore") - explicitSpread?: ("enforce" | "ignore") - exceptions?: string[] - [k: string]: unknown | undefined -} & { - [k: string]: unknown | undefined -})] +type ReactJsxPropsNoSpreading = + | [] + | [ + { + html?: "enforce" | "ignore"; + custom?: "enforce" | "ignore"; + explicitSpread?: "enforce" | "ignore"; + exceptions?: string[]; + [k: string]: unknown | undefined; + } & { + [k: string]: unknown | undefined; + }, + ]; // ----- react/jsx-sort-default-props ----- -type ReactJsxSortDefaultProps = []|[{ - ignoreCase?: boolean -}] +type ReactJsxSortDefaultProps = + | [] + | [ + { + ignoreCase?: boolean; + }, + ]; // ----- react/jsx-sort-props ----- -type ReactJsxSortProps = []|[{ - callbacksLast?: boolean - shorthandFirst?: boolean - shorthandLast?: boolean - multiline?: ("ignore" | "first" | "last") - ignoreCase?: boolean - noSortAlphabetically?: boolean - reservedFirst?: (unknown[] | boolean) - locale?: string -}] +type ReactJsxSortProps = + | [] + | [ + { + callbacksLast?: boolean; + shorthandFirst?: boolean; + shorthandLast?: boolean; + multiline?: "ignore" | "first" | "last"; + ignoreCase?: boolean; + noSortAlphabetically?: boolean; + reservedFirst?: unknown[] | boolean; + locale?: string; + }, + ]; // ----- react/jsx-space-before-closing ----- -type ReactJsxSpaceBeforeClosing = []|[("always" | "never")] +type ReactJsxSpaceBeforeClosing = [] | ["always" | "never"]; // ----- react/jsx-tag-spacing ----- -type ReactJsxTagSpacing = []|[{ - closingSlash?: ("always" | "never" | "allow") - beforeSelfClosing?: ("always" | "proportional-always" | "never" | "allow") - afterOpening?: ("always" | "allow-multiline" | "never" | "allow") - beforeClosing?: ("always" | "proportional-always" | "never" | "allow") -}] +type ReactJsxTagSpacing = + | [] + | [ + { + closingSlash?: "always" | "never" | "allow"; + beforeSelfClosing?: "always" | "proportional-always" | "never" | "allow"; + afterOpening?: "always" | "allow-multiline" | "never" | "allow"; + beforeClosing?: "always" | "proportional-always" | "never" | "allow"; + }, + ]; // ----- react/jsx-wrap-multilines ----- -type ReactJsxWrapMultilines = []|[{ - declaration?: (true | false | "ignore" | "parens" | "parens-new-line" | "never") - assignment?: (true | false | "ignore" | "parens" | "parens-new-line" | "never") - return?: (true | false | "ignore" | "parens" | "parens-new-line" | "never") - arrow?: (true | false | "ignore" | "parens" | "parens-new-line" | "never") - condition?: (true | false | "ignore" | "parens" | "parens-new-line" | "never") - logical?: (true | false | "ignore" | "parens" | "parens-new-line" | "never") - prop?: (true | false | "ignore" | "parens" | "parens-new-line" | "never") -}] +type ReactJsxWrapMultilines = + | [] + | [ + { + declaration?: true | false | "ignore" | "parens" | "parens-new-line" | "never"; + assignment?: true | false | "ignore" | "parens" | "parens-new-line" | "never"; + return?: true | false | "ignore" | "parens" | "parens-new-line" | "never"; + arrow?: true | false | "ignore" | "parens" | "parens-new-line" | "never"; + condition?: true | false | "ignore" | "parens" | "parens-new-line" | "never"; + logical?: true | false | "ignore" | "parens" | "parens-new-line" | "never"; + prop?: true | false | "ignore" | "parens" | "parens-new-line" | "never"; + }, + ]; // ----- react/no-children-prop ----- -type ReactNoChildrenProp = []|[{ - allowFunctions?: boolean -}] +type ReactNoChildrenProp = + | [] + | [ + { + allowFunctions?: boolean; + }, + ]; // ----- react/no-danger ----- -type ReactNoDanger = []|[{ - - customComponentNames?: string[] - [k: string]: unknown | undefined -}] +type ReactNoDanger = + | [] + | [ + { + customComponentNames?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- react/no-did-mount-set-state ----- -type ReactNoDidMountSetState = []|["disallow-in-func"] +type ReactNoDidMountSetState = [] | ["disallow-in-func"]; // ----- react/no-did-update-set-state ----- -type ReactNoDidUpdateSetState = []|["disallow-in-func"] +type ReactNoDidUpdateSetState = [] | ["disallow-in-func"]; // ----- react/no-invalid-html-attribute ----- -type ReactNoInvalidHtmlAttribute = []|[("rel")[]] +type ReactNoInvalidHtmlAttribute = [] | ["rel"[]]; // ----- react/no-multi-comp ----- -type ReactNoMultiComp = []|[{ - ignoreStateless?: boolean -}] +type ReactNoMultiComp = + | [] + | [ + { + ignoreStateless?: boolean; + }, + ]; // ----- react/no-string-refs ----- -type ReactNoStringRefs = []|[{ - noTemplateLiterals?: boolean -}] +type ReactNoStringRefs = + | [] + | [ + { + noTemplateLiterals?: boolean; + }, + ]; // ----- react/no-unescaped-entities ----- -type ReactNoUnescapedEntities = []|[{ - forbid?: (string | { - char?: string - alternatives?: string[] - [k: string]: unknown | undefined - })[] -}] +type ReactNoUnescapedEntities = + | [] + | [ + { + forbid?: ( + | string + | { + char?: string; + alternatives?: string[]; + [k: string]: unknown | undefined; + } + )[]; + }, + ]; // ----- react/no-unknown-property ----- -type ReactNoUnknownProperty = []|[{ - ignore?: string[] - requireDataLowercase?: boolean -}] +type ReactNoUnknownProperty = + | [] + | [ + { + ignore?: string[]; + requireDataLowercase?: boolean; + }, + ]; // ----- react/no-unsafe ----- -type ReactNoUnsafe = []|[{ - checkAliases?: boolean -}] +type ReactNoUnsafe = + | [] + | [ + { + checkAliases?: boolean; + }, + ]; // ----- react/no-unstable-nested-components ----- -type ReactNoUnstableNestedComponents = []|[{ - customValidators?: string[] - allowAsProps?: boolean - propNamePattern?: string -}] +type ReactNoUnstableNestedComponents = + | [] + | [ + { + customValidators?: string[]; + allowAsProps?: boolean; + propNamePattern?: string; + }, + ]; // ----- react/no-unused-prop-types ----- -type ReactNoUnusedPropTypes = []|[{ - ignore?: string[] - customValidators?: string[] - skipShapeProps?: boolean -}] +type ReactNoUnusedPropTypes = + | [] + | [ + { + ignore?: string[]; + customValidators?: string[]; + skipShapeProps?: boolean; + }, + ]; // ----- react/no-will-update-set-state ----- -type ReactNoWillUpdateSetState = []|["disallow-in-func"] +type ReactNoWillUpdateSetState = [] | ["disallow-in-func"]; // ----- react/prefer-es6-class ----- -type ReactPreferEs6Class = []|[("always" | "never")] +type ReactPreferEs6Class = [] | ["always" | "never"]; // ----- react/prefer-stateless-function ----- -type ReactPreferStatelessFunction = []|[{ - ignorePureComponents?: boolean -}] +type ReactPreferStatelessFunction = + | [] + | [ + { + ignorePureComponents?: boolean; + }, + ]; // ----- react/prop-types ----- -type ReactPropTypes = []|[{ - ignore?: string[] - customValidators?: string[] - skipUndeclared?: boolean -}] +type ReactPropTypes = + | [] + | [ + { + ignore?: string[]; + customValidators?: string[]; + skipUndeclared?: boolean; + }, + ]; // ----- react/require-default-props ----- -type ReactRequireDefaultProps = []|[{ - forbidDefaultForRequired?: boolean - classes?: ("defaultProps" | "ignore") - functions?: ("defaultArguments" | "defaultProps" | "ignore") - ignoreFunctionalComponents?: boolean -}] +type ReactRequireDefaultProps = + | [] + | [ + { + forbidDefaultForRequired?: boolean; + classes?: "defaultProps" | "ignore"; + functions?: "defaultArguments" | "defaultProps" | "ignore"; + ignoreFunctionalComponents?: boolean; + }, + ]; // ----- react/require-optimization ----- -type ReactRequireOptimization = []|[{ - allowDecorators?: string[] -}] +type ReactRequireOptimization = + | [] + | [ + { + allowDecorators?: string[]; + }, + ]; // ----- react/self-closing-comp ----- -type ReactSelfClosingComp = []|[{ - component?: boolean - html?: boolean -}] +type ReactSelfClosingComp = + | [] + | [ + { + component?: boolean; + html?: boolean; + }, + ]; // ----- react/sort-comp ----- -type ReactSortComp = []|[{ - order?: string[] - groups?: { - [k: string]: string[] - } -}] +type ReactSortComp = + | [] + | [ + { + order?: string[]; + groups?: { + [k: string]: string[]; + }; + }, + ]; // ----- react/sort-default-props ----- -type ReactSortDefaultProps = []|[{ - ignoreCase?: boolean -}] +type ReactSortDefaultProps = + | [] + | [ + { + ignoreCase?: boolean; + }, + ]; // ----- react/sort-prop-types ----- -type ReactSortPropTypes = []|[{ - requiredFirst?: boolean - callbacksLast?: boolean - ignoreCase?: boolean - noSortAlphabetically?: boolean - sortShapeProp?: boolean - checkTypes?: boolean -}] +type ReactSortPropTypes = + | [] + | [ + { + requiredFirst?: boolean; + callbacksLast?: boolean; + ignoreCase?: boolean; + noSortAlphabetically?: boolean; + sortShapeProp?: boolean; + checkTypes?: boolean; + }, + ]; // ----- react/state-in-constructor ----- -type ReactStateInConstructor = []|[("always" | "never")] +type ReactStateInConstructor = [] | ["always" | "never"]; // ----- react/static-property-placement ----- -type ReactStaticPropertyPlacement = []|[("static public field" | "static getter" | "property assignment")]|[("static public field" | "static getter" | "property assignment"), { - propTypes?: ("static public field" | "static getter" | "property assignment") - defaultProps?: ("static public field" | "static getter" | "property assignment") - childContextTypes?: ("static public field" | "static getter" | "property assignment") - contextTypes?: ("static public field" | "static getter" | "property assignment") - contextType?: ("static public field" | "static getter" | "property assignment") - displayName?: ("static public field" | "static getter" | "property assignment") -}] +type ReactStaticPropertyPlacement = + | [] + | ["static public field" | "static getter" | "property assignment"] + | [ + "static public field" | "static getter" | "property assignment", + { + propTypes?: "static public field" | "static getter" | "property assignment"; + defaultProps?: "static public field" | "static getter" | "property assignment"; + childContextTypes?: "static public field" | "static getter" | "property assignment"; + contextTypes?: "static public field" | "static getter" | "property assignment"; + contextType?: "static public field" | "static getter" | "property assignment"; + displayName?: "static public field" | "static getter" | "property assignment"; + }, + ]; // ----- react/style-prop-object ----- -type ReactStylePropObject = []|[{ - allow?: string[] - [k: string]: unknown | undefined -}] +type ReactStylePropObject = + | [] + | [ + { + allow?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- regexp/hexadecimal-escape ----- -type RegexpHexadecimalEscape = []|[("always" | "never")] +type RegexpHexadecimalEscape = [] | ["always" | "never"]; // ----- regexp/letter-case ----- -type RegexpLetterCase = []|[{ - caseInsensitive?: ("lowercase" | "uppercase" | "ignore") - unicodeEscape?: ("lowercase" | "uppercase" | "ignore") - hexadecimalEscape?: ("lowercase" | "uppercase" | "ignore") - controlEscape?: ("lowercase" | "uppercase" | "ignore") -}] +type RegexpLetterCase = + | [] + | [ + { + caseInsensitive?: "lowercase" | "uppercase" | "ignore"; + unicodeEscape?: "lowercase" | "uppercase" | "ignore"; + hexadecimalEscape?: "lowercase" | "uppercase" | "ignore"; + controlEscape?: "lowercase" | "uppercase" | "ignore"; + }, + ]; // ----- regexp/match-any ----- -type RegexpMatchAny = []|[{ - - allows?: [("[\\s\\S]" | "[\\S\\s]" | "[^]" | "dotAll"), ...(("[\\s\\S]" | "[\\S\\s]" | "[^]" | "dotAll"))[]] -}] +type RegexpMatchAny = + | [] + | [ + { + allows?: ["[\\s\\S]" | "[\\S\\s]" | "[^]" | "dotAll", ...("[\\s\\S]" | "[\\S\\s]" | "[^]" | "dotAll")[]]; + }, + ]; // ----- regexp/no-dupe-disjunctions ----- -type RegexpNoDupeDisjunctions = []|[{ - report?: ("all" | "trivial" | "interesting") - reportExponentialBacktracking?: ("none" | "certain" | "potential") - reportUnreachable?: ("certain" | "potential") -}] +type RegexpNoDupeDisjunctions = + | [] + | [ + { + report?: "all" | "trivial" | "interesting"; + reportExponentialBacktracking?: "none" | "certain" | "potential"; + reportUnreachable?: "certain" | "potential"; + }, + ]; // ----- regexp/no-lazy-ends ----- -type RegexpNoLazyEnds = []|[{ - ignorePartial?: boolean -}] +type RegexpNoLazyEnds = + | [] + | [ + { + ignorePartial?: boolean; + }, + ]; // ----- regexp/no-legacy-features ----- -type RegexpNoLegacyFeatures = []|[{ - staticProperties?: ("input" | "$_" | "lastMatch" | "$&" | "lastParen" | "$+" | "leftContext" | "$`" | "rightContext" | "$'" | "$1" | "$2" | "$3" | "$4" | "$5" | "$6" | "$7" | "$8" | "$9")[] - prototypeMethods?: ("compile")[] -}] +type RegexpNoLegacyFeatures = + | [] + | [ + { + staticProperties?: ( + | "input" + | "$_" + | "lastMatch" + | "$&" + | "lastParen" + | "$+" + | "leftContext" + | "$`" + | "rightContext" + | "$'" + | "$1" + | "$2" + | "$3" + | "$4" + | "$5" + | "$6" + | "$7" + | "$8" + | "$9" + )[]; + prototypeMethods?: "compile"[]; + }, + ]; // ----- regexp/no-misleading-capturing-group ----- -type RegexpNoMisleadingCapturingGroup = []|[{ - reportBacktrackingEnds?: boolean -}] +type RegexpNoMisleadingCapturingGroup = + | [] + | [ + { + reportBacktrackingEnds?: boolean; + }, + ]; // ----- regexp/no-misleading-unicode-character ----- -type RegexpNoMisleadingUnicodeCharacter = []|[{ - fixable?: boolean -}] +type RegexpNoMisleadingUnicodeCharacter = + | [] + | [ + { + fixable?: boolean; + }, + ]; // ----- regexp/no-missing-g-flag ----- -type RegexpNoMissingGFlag = []|[{ - strictTypes?: boolean -}] +type RegexpNoMissingGFlag = + | [] + | [ + { + strictTypes?: boolean; + }, + ]; // ----- regexp/no-obscure-range ----- -type RegexpNoObscureRange = []|[{ - allowed?: (("all" | "alphanumeric") | [("all" | "alphanumeric")] | [("alphanumeric" | string), ...(("alphanumeric" | string))[]]) -}] +type RegexpNoObscureRange = + | [] + | [ + { + allowed?: ("all" | "alphanumeric") | ["all" | "alphanumeric"] | ["alphanumeric" | string, ...("alphanumeric" | string)[]]; + }, + ]; // ----- regexp/no-super-linear-backtracking ----- -type RegexpNoSuperLinearBacktracking = []|[{ - report?: ("certain" | "potential") -}] +type RegexpNoSuperLinearBacktracking = + | [] + | [ + { + report?: "certain" | "potential"; + }, + ]; // ----- regexp/no-super-linear-move ----- -type RegexpNoSuperLinearMove = []|[{ - report?: ("certain" | "potential") - ignoreSticky?: boolean - ignorePartial?: boolean -}] +type RegexpNoSuperLinearMove = + | [] + | [ + { + report?: "certain" | "potential"; + ignoreSticky?: boolean; + ignorePartial?: boolean; + }, + ]; // ----- regexp/no-unused-capturing-group ----- -type RegexpNoUnusedCapturingGroup = []|[{ - fixable?: boolean - allowNamed?: boolean -}] +type RegexpNoUnusedCapturingGroup = + | [] + | [ + { + fixable?: boolean; + allowNamed?: boolean; + }, + ]; // ----- regexp/no-useless-character-class ----- -type RegexpNoUselessCharacterClass = []|[{ - ignores?: string[] -}] +type RegexpNoUselessCharacterClass = + | [] + | [ + { + ignores?: string[]; + }, + ]; // ----- regexp/no-useless-flag ----- -type RegexpNoUselessFlag = []|[{ - ignore?: ("i" | "m" | "s" | "g" | "y")[] - strictTypes?: boolean -}] +type RegexpNoUselessFlag = + | [] + | [ + { + ignore?: ("i" | "m" | "s" | "g" | "y")[]; + strictTypes?: boolean; + }, + ]; // ----- regexp/no-useless-non-capturing-group ----- -type RegexpNoUselessNonCapturingGroup = []|[{ - allowTop?: (boolean | ("always" | "never" | "partial")) -}] +type RegexpNoUselessNonCapturingGroup = + | [] + | [ + { + allowTop?: boolean | ("always" | "never" | "partial"); + }, + ]; // ----- regexp/optimal-quantifier-concatenation ----- -type RegexpOptimalQuantifierConcatenation = []|[{ - capturingGroups?: ("ignore" | "report") -}] +type RegexpOptimalQuantifierConcatenation = + | [] + | [ + { + capturingGroups?: "ignore" | "report"; + }, + ]; // ----- regexp/prefer-character-class ----- -type RegexpPreferCharacterClass = []|[{ - minAlternatives?: number -}] +type RegexpPreferCharacterClass = + | [] + | [ + { + minAlternatives?: number; + }, + ]; // ----- regexp/prefer-d ----- -type RegexpPreferD = []|[{ - insideCharacterClass?: ("ignore" | "range" | "d") -}] +type RegexpPreferD = + | [] + | [ + { + insideCharacterClass?: "ignore" | "range" | "d"; + }, + ]; // ----- regexp/prefer-lookaround ----- -type RegexpPreferLookaround = []|[{ - lookbehind?: boolean - strictTypes?: boolean -}] +type RegexpPreferLookaround = + | [] + | [ + { + lookbehind?: boolean; + strictTypes?: boolean; + }, + ]; // ----- regexp/prefer-named-replacement ----- -type RegexpPreferNamedReplacement = []|[{ - strictTypes?: boolean -}] +type RegexpPreferNamedReplacement = + | [] + | [ + { + strictTypes?: boolean; + }, + ]; // ----- regexp/prefer-range ----- -type RegexpPreferRange = []|[{ - target?: (("all" | "alphanumeric") | [("all" | "alphanumeric")] | [("alphanumeric" | string), ...(("alphanumeric" | string))[]]) -}] +type RegexpPreferRange = + | [] + | [ + { + target?: ("all" | "alphanumeric") | ["all" | "alphanumeric"] | ["alphanumeric" | string, ...("alphanumeric" | string)[]]; + }, + ]; // ----- regexp/prefer-result-array-groups ----- -type RegexpPreferResultArrayGroups = []|[{ - strictTypes?: boolean -}] +type RegexpPreferResultArrayGroups = + | [] + | [ + { + strictTypes?: boolean; + }, + ]; // ----- regexp/sort-character-class-elements ----- -type RegexpSortCharacterClassElements = []|[{ - order?: ("\\s" | "\\w" | "\\d" | "\\p" | "*" | "\\q" | "[]")[] -}] +type RegexpSortCharacterClassElements = + | [] + | [ + { + order?: ("\\s" | "\\w" | "\\d" | "\\p" | "*" | "\\q" | "[]")[]; + }, + ]; // ----- regexp/unicode-escape ----- -type RegexpUnicodeEscape = []|[("unicodeCodePointEscape" | "unicodeEscape")] +type RegexpUnicodeEscape = [] | ["unicodeCodePointEscape" | "unicodeEscape"]; // ----- regexp/unicode-property ----- -type RegexpUnicodeProperty = []|[{ - generalCategory?: ("always" | "never" | "ignore") - key?: ("short" | "long" | "ignore") - property?: (("short" | "long" | "ignore") | { - binary?: ("short" | "long" | "ignore") - generalCategory?: ("short" | "long" | "ignore") - script?: ("short" | "long" | "ignore") - }) -}] +type RegexpUnicodeProperty = + | [] + | [ + { + generalCategory?: "always" | "never" | "ignore"; + key?: "short" | "long" | "ignore"; + property?: + | ("short" | "long" | "ignore") + | { + binary?: "short" | "long" | "ignore"; + generalCategory?: "short" | "long" | "ignore"; + script?: "short" | "long" | "ignore"; + }; + }, + ]; // ----- simple-import-sort/imports ----- -type SimpleImportSortImports = []|[{ - groups?: string[][] -}] +type SimpleImportSortImports = + | [] + | [ + { + groups?: string[][]; + }, + ]; // ----- sonarjs/arguments-order ----- -type SonarjsArgumentsOrder = []|[("sonar-runtime" | "metric")] +type SonarjsArgumentsOrder = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/arguments-usage ----- -type SonarjsArgumentsUsage = []|[("sonar-runtime" | "metric")] +type SonarjsArgumentsUsage = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/arrow-function-convention ----- -type SonarjsArrowFunctionConvention = []|[{ - requireParameterParentheses?: boolean - requireBodyBraces?: boolean -}] +type SonarjsArrowFunctionConvention = + | [] + | [ + { + requireParameterParentheses?: boolean; + requireBodyBraces?: boolean; + }, + ]; // ----- sonarjs/aws-iam-all-privileges ----- -type SonarjsAwsIamAllPrivileges = []|[("sonar-runtime" | "metric")] +type SonarjsAwsIamAllPrivileges = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/aws-iam-all-resources-accessible ----- -type SonarjsAwsIamAllResourcesAccessible = []|[("sonar-runtime" | "metric")] +type SonarjsAwsIamAllResourcesAccessible = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/aws-iam-privilege-escalation ----- -type SonarjsAwsIamPrivilegeEscalation = []|[("sonar-runtime" | "metric")] +type SonarjsAwsIamPrivilegeEscalation = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/aws-iam-public-access ----- -type SonarjsAwsIamPublicAccess = []|[("sonar-runtime" | "metric")] +type SonarjsAwsIamPublicAccess = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/aws-s3-bucket-granted-access ----- -type SonarjsAwsS3BucketGrantedAccess = []|[("sonar-runtime" | "metric")] +type SonarjsAwsS3BucketGrantedAccess = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/aws-s3-bucket-public-access ----- -type SonarjsAwsS3BucketPublicAccess = []|[("sonar-runtime" | "metric")] +type SonarjsAwsS3BucketPublicAccess = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/aws-s3-bucket-server-encryption ----- -type SonarjsAwsS3BucketServerEncryption = []|[("sonar-runtime" | "metric")] +type SonarjsAwsS3BucketServerEncryption = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/aws-s3-bucket-versioning ----- -type SonarjsAwsS3BucketVersioning = []|[("sonar-runtime" | "metric")] +type SonarjsAwsS3BucketVersioning = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/block-scoped-var ----- -type SonarjsBlockScopedVar = []|[("sonar-runtime" | "metric")] +type SonarjsBlockScopedVar = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/certificate-transparency ----- -type SonarjsCertificateTransparency = []|[("sonar-runtime" | "metric")] +type SonarjsCertificateTransparency = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/class-name ----- -type SonarjsClassName = []|[{ - format?: string -}] +type SonarjsClassName = + | [] + | [ + { + format?: string; + }, + ]; // ----- sonarjs/cognitive-complexity ----- -type SonarjsCognitiveComplexity = []|[(number | string)]|[(number | string), string] +type SonarjsCognitiveComplexity = [] | [number | string] | [number | string, string]; // ----- sonarjs/comment-regex ----- -type SonarjsCommentRegex = []|[{ - regularExpression?: string - message?: string - flags?: string -}] +type SonarjsCommentRegex = + | [] + | [ + { + regularExpression?: string; + message?: string; + flags?: string; + }, + ]; // ----- sonarjs/conditional-indentation ----- -type SonarjsConditionalIndentation = []|[("sonar-runtime" | "metric")] +type SonarjsConditionalIndentation = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/confidential-information-logging ----- -type SonarjsConfidentialInformationLogging = []|[("sonar-runtime" | "metric")] +type SonarjsConfidentialInformationLogging = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/content-length ----- -type SonarjsContentLength = []|[{ - fileUploadSizeLimit?: number - standardSizeLimit?: number -}] +type SonarjsContentLength = + | [] + | [ + { + fileUploadSizeLimit?: number; + standardSizeLimit?: number; + }, + ]; // ----- sonarjs/content-security-policy ----- -type SonarjsContentSecurityPolicy = []|[("sonar-runtime" | "metric")] +type SonarjsContentSecurityPolicy = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/cookie-no-httponly ----- -type SonarjsCookieNoHttponly = []|[("sonar-runtime" | "metric")] +type SonarjsCookieNoHttponly = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/cors ----- -type SonarjsCors = []|[("sonar-runtime" | "metric")] +type SonarjsCors = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/csrf ----- -type SonarjsCsrf = []|[("sonar-runtime" | "metric")] +type SonarjsCsrf = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/cyclomatic-complexity ----- -type SonarjsCyclomaticComplexity = []|[{ - threshold?: number -}]|[{ - threshold?: number -}, ("sonar-runtime" | "metric")] +type SonarjsCyclomaticComplexity = + | [] + | [ + { + threshold?: number; + }, + ] + | [ + { + threshold?: number; + }, + "sonar-runtime" | "metric", + ]; // ----- sonarjs/destructuring-assignment-syntax ----- -type SonarjsDestructuringAssignmentSyntax = []|[("sonar-runtime" | "metric")] +type SonarjsDestructuringAssignmentSyntax = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/different-types-comparison ----- -type SonarjsDifferentTypesComparison = []|[("sonar-runtime" | "metric")] +type SonarjsDifferentTypesComparison = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/disabled-auto-escaping ----- -type SonarjsDisabledAutoEscaping = []|[("sonar-runtime" | "metric")] +type SonarjsDisabledAutoEscaping = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/dns-prefetching ----- -type SonarjsDnsPrefetching = []|[("sonar-runtime" | "metric")] +type SonarjsDnsPrefetching = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/duplicates-in-character-class ----- -type SonarjsDuplicatesInCharacterClass = []|[("sonar-runtime" | "metric")] +type SonarjsDuplicatesInCharacterClass = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/enforce-trailing-comma ----- -type SonarjsEnforceTrailingComma = []|[(_SonarjsEnforceTrailingCommaValue | { - arrays?: _SonarjsEnforceTrailingCommaValueWithIgnore - objects?: _SonarjsEnforceTrailingCommaValueWithIgnore - imports?: _SonarjsEnforceTrailingCommaValueWithIgnore - exports?: _SonarjsEnforceTrailingCommaValueWithIgnore - functions?: _SonarjsEnforceTrailingCommaValueWithIgnore -})] -type _SonarjsEnforceTrailingCommaValue = ("always-multiline" | "always" | "never" | "only-multiline") -type _SonarjsEnforceTrailingCommaValueWithIgnore = ("always-multiline" | "always" | "ignore" | "never" | "only-multiline") +type SonarjsEnforceTrailingComma = + | [] + | [ + | _SonarjsEnforceTrailingCommaValue + | { + arrays?: _SonarjsEnforceTrailingCommaValueWithIgnore; + objects?: _SonarjsEnforceTrailingCommaValueWithIgnore; + imports?: _SonarjsEnforceTrailingCommaValueWithIgnore; + exports?: _SonarjsEnforceTrailingCommaValueWithIgnore; + functions?: _SonarjsEnforceTrailingCommaValueWithIgnore; + }, + ]; +type _SonarjsEnforceTrailingCommaValue = "always-multiline" | "always" | "never" | "only-multiline"; +type _SonarjsEnforceTrailingCommaValueWithIgnore = "always-multiline" | "always" | "ignore" | "never" | "only-multiline"; // ----- sonarjs/expression-complexity ----- -type SonarjsExpressionComplexity = []|[{ - max?: number -}]|[{ - max?: number -}, ("sonar-runtime" | "metric")] +type SonarjsExpressionComplexity = + | [] + | [ + { + max?: number; + }, + ] + | [ + { + max?: number; + }, + "sonar-runtime" | "metric", + ]; // ----- sonarjs/file-header ----- -type SonarjsFileHeader = []|[{ - headerFormat?: string - isRegularExpression?: boolean -}] +type SonarjsFileHeader = + | [] + | [ + { + headerFormat?: string; + isRegularExpression?: boolean; + }, + ]; // ----- sonarjs/file-uploads ----- -type SonarjsFileUploads = []|[("sonar-runtime" | "metric")] +type SonarjsFileUploads = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/for-loop-increment-sign ----- -type SonarjsForLoopIncrementSign = []|[("sonar-runtime" | "metric")] +type SonarjsForLoopIncrementSign = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/frame-ancestors ----- -type SonarjsFrameAncestors = []|[("sonar-runtime" | "metric")] +type SonarjsFrameAncestors = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/function-inside-loop ----- -type SonarjsFunctionInsideLoop = []|[("sonar-runtime" | "metric")] +type SonarjsFunctionInsideLoop = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/function-name ----- -type SonarjsFunctionName = []|[{ - format?: string -}] +type SonarjsFunctionName = + | [] + | [ + { + format?: string; + }, + ]; // ----- sonarjs/function-return-type ----- -type SonarjsFunctionReturnType = []|[("sonar-runtime" | "metric")] +type SonarjsFunctionReturnType = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/in-operator-type-error ----- -type SonarjsInOperatorTypeError = []|[("sonar-runtime" | "metric")] +type SonarjsInOperatorTypeError = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/inconsistent-function-call ----- -type SonarjsInconsistentFunctionCall = []|[("sonar-runtime" | "metric")] +type SonarjsInconsistentFunctionCall = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/insecure-cookie ----- -type SonarjsInsecureCookie = []|[("sonar-runtime" | "metric")] +type SonarjsInsecureCookie = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/insecure-jwt-token ----- -type SonarjsInsecureJwtToken = []|[("sonar-runtime" | "metric")] +type SonarjsInsecureJwtToken = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/inverted-assertion-arguments ----- -type SonarjsInvertedAssertionArguments = []|[("sonar-runtime" | "metric")] +type SonarjsInvertedAssertionArguments = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/max-lines ----- -type SonarjsMaxLines = []|[{ - maximum?: number -}] +type SonarjsMaxLines = + | [] + | [ + { + maximum?: number; + }, + ]; // ----- sonarjs/max-lines-per-function ----- -type SonarjsMaxLinesPerFunction = []|[{ - maximum?: number -}] +type SonarjsMaxLinesPerFunction = + | [] + | [ + { + maximum?: number; + }, + ]; // ----- sonarjs/max-switch-cases ----- -type SonarjsMaxSwitchCases = []|[number] +type SonarjsMaxSwitchCases = [] | [number]; // ----- sonarjs/max-union-size ----- -type SonarjsMaxUnionSize = []|[{ - threshold?: number -}] +type SonarjsMaxUnionSize = + | [] + | [ + { + threshold?: number; + }, + ]; // ----- sonarjs/nested-control-flow ----- -type SonarjsNestedControlFlow = []|[{ - maximumNestingLevel?: number -}]|[{ - maximumNestingLevel?: number -}, ("sonar-runtime" | "metric")] +type SonarjsNestedControlFlow = + | [] + | [ + { + maximumNestingLevel?: number; + }, + ] + | [ + { + maximumNestingLevel?: number; + }, + "sonar-runtime" | "metric", + ]; // ----- sonarjs/new-operator-misuse ----- -type SonarjsNewOperatorMisuse = []|[{ - considerJSDoc?: boolean -}]|[{ - considerJSDoc?: boolean -}, unknown] +type SonarjsNewOperatorMisuse = + | [] + | [ + { + considerJSDoc?: boolean; + }, + ] + | [ + { + considerJSDoc?: boolean; + }, + unknown, + ]; // ----- sonarjs/no-code-after-done ----- -type SonarjsNoCodeAfterDone = []|[("sonar-runtime" | "metric")] +type SonarjsNoCodeAfterDone = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/no-collapsible-if ----- -type SonarjsNoCollapsibleIf = []|[("sonar-runtime" | "metric")] +type SonarjsNoCollapsibleIf = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/no-duplicate-in-composite ----- -type SonarjsNoDuplicateInComposite = []|[("sonar-runtime" | "metric")] +type SonarjsNoDuplicateInComposite = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/no-duplicate-string ----- -type SonarjsNoDuplicateString = []|[{ - threshold?: number - ignoreStrings?: string -}]|[{ - threshold?: number - ignoreStrings?: string -}, ("sonar-runtime" | "metric")] +type SonarjsNoDuplicateString = + | [] + | [ + { + threshold?: number; + ignoreStrings?: string; + }, + ] + | [ + { + threshold?: number; + ignoreStrings?: string; + }, + "sonar-runtime" | "metric", + ]; // ----- sonarjs/no-duplicated-branches ----- -type SonarjsNoDuplicatedBranches = []|[("sonar-runtime" | "metric")] +type SonarjsNoDuplicatedBranches = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/no-element-overwrite ----- -type SonarjsNoElementOverwrite = []|[("sonar-runtime" | "metric")] +type SonarjsNoElementOverwrite = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/no-extra-arguments ----- -type SonarjsNoExtraArguments = []|[("sonar-runtime" | "metric")] +type SonarjsNoExtraArguments = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/no-gratuitous-expressions ----- -type SonarjsNoGratuitousExpressions = []|[("sonar-runtime" | "metric")] +type SonarjsNoGratuitousExpressions = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/no-hardcoded-passwords ----- -type SonarjsNoHardcodedPasswords = []|[{ - passwordWords?: string[] -}] +type SonarjsNoHardcodedPasswords = + | [] + | [ + { + passwordWords?: string[]; + }, + ]; // ----- sonarjs/no-hardcoded-secrets ----- -type SonarjsNoHardcodedSecrets = []|[{ - secretWords?: string - randomnessSensibility?: number -}] +type SonarjsNoHardcodedSecrets = + | [] + | [ + { + secretWords?: string; + randomnessSensibility?: number; + }, + ]; // ----- sonarjs/no-identical-conditions ----- -type SonarjsNoIdenticalConditions = []|[("sonar-runtime" | "metric")] +type SonarjsNoIdenticalConditions = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/no-identical-expressions ----- -type SonarjsNoIdenticalExpressions = []|[("sonar-runtime" | "metric")] +type SonarjsNoIdenticalExpressions = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/no-identical-functions ----- -type SonarjsNoIdenticalFunctions = []|[number]|[number, ("sonar-runtime" | "metric")] +type SonarjsNoIdenticalFunctions = [] | [number] | [number, "sonar-runtime" | "metric"]; // ----- sonarjs/no-implicit-dependencies ----- -type SonarjsNoImplicitDependencies = []|[{ - whitelist?: string[] -}] +type SonarjsNoImplicitDependencies = + | [] + | [ + { + whitelist?: string[]; + }, + ]; // ----- sonarjs/no-inconsistent-returns ----- -type SonarjsNoInconsistentReturns = []|[("sonar-runtime" | "metric")] +type SonarjsNoInconsistentReturns = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/no-incorrect-string-concat ----- -type SonarjsNoIncorrectStringConcat = []|[("sonar-runtime" | "metric")] +type SonarjsNoIncorrectStringConcat = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/no-intrusive-permissions ----- -type SonarjsNoIntrusivePermissions = []|[{ - permissions?: string[] -}] +type SonarjsNoIntrusivePermissions = + | [] + | [ + { + permissions?: string[]; + }, + ]; // ----- sonarjs/no-invariant-returns ----- -type SonarjsNoInvariantReturns = []|[("sonar-runtime" | "metric")] +type SonarjsNoInvariantReturns = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/no-ip-forward ----- -type SonarjsNoIpForward = []|[("sonar-runtime" | "metric")] +type SonarjsNoIpForward = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/no-mime-sniff ----- -type SonarjsNoMimeSniff = []|[("sonar-runtime" | "metric")] +type SonarjsNoMimeSniff = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/no-mixed-content ----- -type SonarjsNoMixedContent = []|[("sonar-runtime" | "metric")] +type SonarjsNoMixedContent = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/no-nested-functions ----- -type SonarjsNoNestedFunctions = []|[{ - threshold?: number -}]|[{ - threshold?: number -}, ("sonar-runtime" | "metric")] +type SonarjsNoNestedFunctions = + | [] + | [ + { + threshold?: number; + }, + ] + | [ + { + threshold?: number; + }, + "sonar-runtime" | "metric", + ]; // ----- sonarjs/no-redundant-optional ----- -type SonarjsNoRedundantOptional = []|[("sonar-runtime" | "metric")] +type SonarjsNoRedundantOptional = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/no-redundant-parentheses ----- -type SonarjsNoRedundantParentheses = []|[("sonar-runtime" | "metric")] +type SonarjsNoRedundantParentheses = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/no-reference-error ----- -type SonarjsNoReferenceError = []|[("sonar-runtime" | "metric")] +type SonarjsNoReferenceError = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/no-referrer-policy ----- -type SonarjsNoReferrerPolicy = []|[("sonar-runtime" | "metric")] +type SonarjsNoReferrerPolicy = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/no-same-argument-assert ----- -type SonarjsNoSameArgumentAssert = []|[("sonar-runtime" | "metric")] +type SonarjsNoSameArgumentAssert = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/no-same-line-conditional ----- -type SonarjsNoSameLineConditional = []|[("sonar-runtime" | "metric")] +type SonarjsNoSameLineConditional = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/no-selector-parameter ----- -type SonarjsNoSelectorParameter = []|[("sonar-runtime" | "metric")] +type SonarjsNoSelectorParameter = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/no-try-promise ----- -type SonarjsNoTryPromise = []|[("sonar-runtime" | "metric")] +type SonarjsNoTryPromise = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/no-variable-usage-before-declaration ----- -type SonarjsNoVariableUsageBeforeDeclaration = []|[("sonar-runtime" | "metric")] +type SonarjsNoVariableUsageBeforeDeclaration = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/non-number-in-arithmetic-expression ----- -type SonarjsNonNumberInArithmeticExpression = []|[("sonar-runtime" | "metric")] +type SonarjsNonNumberInArithmeticExpression = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/regex-complexity ----- -type SonarjsRegexComplexity = []|[{ - threshold?: number -}]|[{ - threshold?: number -}, ("sonar-runtime" | "metric")] +type SonarjsRegexComplexity = + | [] + | [ + { + threshold?: number; + }, + ] + | [ + { + threshold?: number; + }, + "sonar-runtime" | "metric", + ]; // ----- sonarjs/shorthand-property-grouping ----- -type SonarjsShorthandPropertyGrouping = []|[("sonar-runtime" | "metric")] +type SonarjsShorthandPropertyGrouping = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/stateful-regex ----- -type SonarjsStatefulRegex = []|[("sonar-runtime" | "metric")] +type SonarjsStatefulRegex = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/strict-transport-security ----- -type SonarjsStrictTransportSecurity = []|[("sonar-runtime" | "metric")] +type SonarjsStrictTransportSecurity = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/strings-comparison ----- -type SonarjsStringsComparison = []|[("sonar-runtime" | "metric")] +type SonarjsStringsComparison = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/too-many-break-or-continue-in-loop ----- -type SonarjsTooManyBreakOrContinueInLoop = []|[("sonar-runtime" | "metric")] +type SonarjsTooManyBreakOrContinueInLoop = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/unicode-aware-regex ----- -type SonarjsUnicodeAwareRegex = []|[("sonar-runtime" | "metric")] +type SonarjsUnicodeAwareRegex = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/unused-named-groups ----- -type SonarjsUnusedNamedGroups = []|[("sonar-runtime" | "metric")] +type SonarjsUnusedNamedGroups = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/unverified-certificate ----- -type SonarjsUnverifiedCertificate = []|[("sonar-runtime" | "metric")] +type SonarjsUnverifiedCertificate = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/unverified-hostname ----- -type SonarjsUnverifiedHostname = []|[("sonar-runtime" | "metric")] +type SonarjsUnverifiedHostname = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/updated-const-var ----- -type SonarjsUpdatedConstVar = []|[("sonar-runtime" | "metric")] +type SonarjsUpdatedConstVar = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/updated-loop-counter ----- -type SonarjsUpdatedLoopCounter = []|[("sonar-runtime" | "metric")] +type SonarjsUpdatedLoopCounter = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/use-type-alias ----- -type SonarjsUseTypeAlias = []|[("sonar-runtime" | "metric")] +type SonarjsUseTypeAlias = [] | ["sonar-runtime" | "metric"]; // ----- sonarjs/variable-name ----- -type SonarjsVariableName = []|[{ - format?: string -}] +type SonarjsVariableName = + | [] + | [ + { + format?: string; + }, + ]; // ----- sonarjs/xml-parser-xxe ----- -type SonarjsXmlParserXxe = []|[("sonar-runtime" | "metric")] +type SonarjsXmlParserXxe = [] | ["sonar-runtime" | "metric"]; // ----- storybook/meta-inline-properties ----- -type StorybookMetaInlineProperties = []|[{ - csfVersion?: number -}] +type StorybookMetaInlineProperties = + | [] + | [ + { + csfVersion?: number; + }, + ]; // ----- storybook/no-uninstalled-addons ----- -type StorybookNoUninstalledAddons = []|[{ - packageJsonLocation?: string - ignore?: string[] - [k: string]: unknown | undefined -}] +type StorybookNoUninstalledAddons = + | [] + | [ + { + packageJsonLocation?: string; + ignore?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- tailwindcss/classnames-order ----- -type TailwindcssClassnamesOrder = []|[{ - callees?: string[] - ignoredKeys?: string[] - config?: (string | { - [k: string]: unknown | undefined - }) - removeDuplicates?: boolean - tags?: string[] - [k: string]: unknown | undefined -}] +type TailwindcssClassnamesOrder = + | [] + | [ + { + callees?: string[]; + ignoredKeys?: string[]; + config?: + | string + | { + [k: string]: unknown | undefined; + }; + removeDuplicates?: boolean; + tags?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- tailwindcss/enforces-negative-arbitrary-values ----- -type TailwindcssEnforcesNegativeArbitraryValues = []|[{ - callees?: string[] - ignoredKeys?: string[] - config?: (string | { - [k: string]: unknown | undefined - }) - tags?: string[] - [k: string]: unknown | undefined -}] +type TailwindcssEnforcesNegativeArbitraryValues = + | [] + | [ + { + callees?: string[]; + ignoredKeys?: string[]; + config?: + | string + | { + [k: string]: unknown | undefined; + }; + tags?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- tailwindcss/enforces-shorthand ----- -type TailwindcssEnforcesShorthand = []|[{ - callees?: string[] - ignoredKeys?: string[] - config?: (string | { - [k: string]: unknown | undefined - }) - tags?: string[] - [k: string]: unknown | undefined -}] +type TailwindcssEnforcesShorthand = + | [] + | [ + { + callees?: string[]; + ignoredKeys?: string[]; + config?: + | string + | { + [k: string]: unknown | undefined; + }; + tags?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- tailwindcss/migration-from-tailwind-2 ----- -type TailwindcssMigrationFromTailwind2 = []|[{ - callees?: string[] - ignoredKeys?: string[] - config?: (string | { - [k: string]: unknown | undefined - }) - tags?: string[] - [k: string]: unknown | undefined -}] +type TailwindcssMigrationFromTailwind2 = + | [] + | [ + { + callees?: string[]; + ignoredKeys?: string[]; + config?: + | string + | { + [k: string]: unknown | undefined; + }; + tags?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- tailwindcss/no-arbitrary-value ----- -type TailwindcssNoArbitraryValue = []|[{ - callees?: string[] - ignoredKeys?: string[] - config?: (string | { - [k: string]: unknown | undefined - }) - tags?: string[] - [k: string]: unknown | undefined -}] +type TailwindcssNoArbitraryValue = + | [] + | [ + { + callees?: string[]; + ignoredKeys?: string[]; + config?: + | string + | { + [k: string]: unknown | undefined; + }; + tags?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- tailwindcss/no-contradicting-classname ----- -type TailwindcssNoContradictingClassname = []|[{ - callees?: string[] - ignoredKeys?: string[] - config?: (string | { - [k: string]: unknown | undefined - }) - tags?: string[] - [k: string]: unknown | undefined -}] +type TailwindcssNoContradictingClassname = + | [] + | [ + { + callees?: string[]; + ignoredKeys?: string[]; + config?: + | string + | { + [k: string]: unknown | undefined; + }; + tags?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- tailwindcss/no-custom-classname ----- -type TailwindcssNoCustomClassname = []|[{ - callees?: string[] - ignoredKeys?: string[] - config?: (string | { - [k: string]: unknown | undefined - }) - cssFiles?: string[] - cssFilesRefreshRate?: number - tags?: string[] - whitelist?: string[] - [k: string]: unknown | undefined -}] +type TailwindcssNoCustomClassname = + | [] + | [ + { + callees?: string[]; + ignoredKeys?: string[]; + config?: + | string + | { + [k: string]: unknown | undefined; + }; + cssFiles?: string[]; + cssFilesRefreshRate?: number; + tags?: string[]; + whitelist?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- tailwindcss/no-unnecessary-arbitrary-value ----- -type TailwindcssNoUnnecessaryArbitraryValue = []|[{ - callees?: string[] - ignoredKeys?: string[] - config?: (string | { - [k: string]: unknown | undefined - }) - tags?: string[] - [k: string]: unknown | undefined -}] +type TailwindcssNoUnnecessaryArbitraryValue = + | [] + | [ + { + callees?: string[]; + ignoredKeys?: string[]; + config?: + | string + | { + [k: string]: unknown | undefined; + }; + tags?: string[]; + [k: string]: unknown | undefined; + }, + ]; // ----- testing-library/await-async-events ----- -type TestingLibraryAwaitAsyncEvents = []|[{ - eventModule?: (("fireEvent" | "userEvent") | ("fireEvent" | "userEvent")[]) -}] +type TestingLibraryAwaitAsyncEvents = + | [] + | [ + { + eventModule?: ("fireEvent" | "userEvent") | ("fireEvent" | "userEvent")[]; + }, + ]; // ----- testing-library/consistent-data-testid ----- -type TestingLibraryConsistentDataTestid = []|[{ - testIdPattern: string - testIdAttribute?: (string | string[]) - customMessage?: string -}] +type TestingLibraryConsistentDataTestid = + | [] + | [ + { + testIdPattern: string; + testIdAttribute?: string | string[]; + customMessage?: string; + }, + ]; // ----- testing-library/no-await-sync-events ----- -type TestingLibraryNoAwaitSyncEvents = []|[{ - - eventModules?: [("fire-event" | "user-event"), ...(("fire-event" | "user-event"))[]] -}] +type TestingLibraryNoAwaitSyncEvents = + | [] + | [ + { + eventModules?: ["fire-event" | "user-event", ...("fire-event" | "user-event")[]]; + }, + ]; // ----- testing-library/no-debugging-utils ----- -type TestingLibraryNoDebuggingUtils = []|[{ - utilsToCheckFor?: { - prettyFormat?: boolean - logDOM?: boolean - logRoles?: boolean - prettyDOM?: boolean - logTestingPlaygroundURL?: boolean - debug?: boolean - } -}] +type TestingLibraryNoDebuggingUtils = + | [] + | [ + { + utilsToCheckFor?: { + prettyFormat?: boolean; + logDOM?: boolean; + logRoles?: boolean; + prettyDOM?: boolean; + logTestingPlaygroundURL?: boolean; + debug?: boolean; + }; + }, + ]; // ----- testing-library/no-dom-import ----- -type TestingLibraryNoDomImport = []|[string] +type TestingLibraryNoDomImport = [] | [string]; // ----- testing-library/no-node-access ----- -type TestingLibraryNoNodeAccess = []|[{ - allowContainerFirstChild?: boolean - [k: string]: unknown | undefined -}] +type TestingLibraryNoNodeAccess = + | [] + | [ + { + allowContainerFirstChild?: boolean; + [k: string]: unknown | undefined; + }, + ]; // ----- testing-library/no-render-in-lifecycle ----- -type TestingLibraryNoRenderInLifecycle = []|[{ - allowTestingFrameworkSetupHook?: ("beforeEach" | "beforeAll") - [k: string]: unknown | undefined -}] +type TestingLibraryNoRenderInLifecycle = + | [] + | [ + { + allowTestingFrameworkSetupHook?: "beforeEach" | "beforeAll"; + [k: string]: unknown | undefined; + }, + ]; // ----- testing-library/no-unnecessary-act ----- -type TestingLibraryNoUnnecessaryAct = []|[{ - isStrict?: boolean - [k: string]: unknown | undefined -}] +type TestingLibraryNoUnnecessaryAct = + | [] + | [ + { + isStrict?: boolean; + [k: string]: unknown | undefined; + }, + ]; // ----- testing-library/prefer-explicit-assert ----- -type TestingLibraryPreferExplicitAssert = []|[{ - assertion?: ("toBeOnTheScreen" | "toBeInTheDocument" | "toBeTruthy" | "toBeDefined") - includeFindQueries?: boolean -}] +type TestingLibraryPreferExplicitAssert = + | [] + | [ + { + assertion?: "toBeOnTheScreen" | "toBeInTheDocument" | "toBeTruthy" | "toBeDefined"; + includeFindQueries?: boolean; + }, + ]; // ----- testing-library/prefer-presence-queries ----- -type TestingLibraryPreferPresenceQueries = []|[{ - presence?: boolean - absence?: boolean -}] +type TestingLibraryPreferPresenceQueries = + | [] + | [ + { + presence?: boolean; + absence?: boolean; + }, + ]; // ----- testing-library/prefer-query-matchers ----- -type TestingLibraryPreferQueryMatchers = []|[{ - validEntries?: { - query?: ("get" | "query") - matcher?: string - [k: string]: unknown | undefined - }[] -}] +type TestingLibraryPreferQueryMatchers = + | [] + | [ + { + validEntries?: { + query?: "get" | "query"; + matcher?: string; + [k: string]: unknown | undefined; + }[]; + }, + ]; // ----- testing-library/prefer-user-event ----- -type TestingLibraryPreferUserEvent = []|[{ - allowedMethods?: unknown[] - [k: string]: unknown | undefined -}] +type TestingLibraryPreferUserEvent = + | [] + | [ + { + allowedMethods?: unknown[]; + [k: string]: unknown | undefined; + }, + ]; // ----- toml/array-bracket-newline ----- -type TomlArrayBracketNewline = []|[(("always" | "never" | "consistent") | { - multiline?: boolean - minItems?: (number | null) -})] +type TomlArrayBracketNewline = + | [] + | [ + | ("always" | "never" | "consistent") + | { + multiline?: boolean; + minItems?: number | null; + }, + ]; // ----- toml/array-bracket-spacing ----- -type TomlArrayBracketSpacing = []|[("always" | "never")]|[("always" | "never"), { - singleValue?: boolean - objectsInArrays?: boolean - arraysInArrays?: boolean -}] +type TomlArrayBracketSpacing = + | [] + | ["always" | "never"] + | [ + "always" | "never", + { + singleValue?: boolean; + objectsInArrays?: boolean; + arraysInArrays?: boolean; + }, + ]; // ----- toml/array-element-newline ----- -type TomlArrayElementNewline = []|[(_TomlArrayElementNewlineBasicConfig | { - ArrayExpression?: _TomlArrayElementNewlineBasicConfig - ArrayPattern?: _TomlArrayElementNewlineBasicConfig - TOMLArray?: _TomlArrayElementNewlineBasicConfig -})] -type _TomlArrayElementNewlineBasicConfig = (("always" | "never" | "consistent") | { - multiline?: boolean - minItems?: (number | null) -}) +type TomlArrayElementNewline = + | [] + | [ + | _TomlArrayElementNewlineBasicConfig + | { + ArrayExpression?: _TomlArrayElementNewlineBasicConfig; + ArrayPattern?: _TomlArrayElementNewlineBasicConfig; + TOMLArray?: _TomlArrayElementNewlineBasicConfig; + }, + ]; +type _TomlArrayElementNewlineBasicConfig = + | ("always" | "never" | "consistent") + | { + multiline?: boolean; + minItems?: number | null; + }; // ----- toml/comma-style ----- -type TomlCommaStyle = []|[("first" | "last")]|[("first" | "last"), { - exceptions?: { - [k: string]: boolean | undefined - } -}] +type TomlCommaStyle = + | [] + | ["first" | "last"] + | [ + "first" | "last", + { + exceptions?: { + [k: string]: boolean | undefined; + }; + }, + ]; // ----- toml/indent ----- -type TomlIndent = []|[("tab" | number)]|[("tab" | number), { - subTables?: number - keyValuePairs?: number -}] +type TomlIndent = + | [] + | ["tab" | number] + | [ + "tab" | number, + { + subTables?: number; + keyValuePairs?: number; + }, + ]; // ----- toml/inline-table-curly-spacing ----- -type TomlInlineTableCurlySpacing = []|[("always" | "never")]|[("always" | "never"), { - arraysInObjects?: boolean - objectsInObjects?: boolean -}] +type TomlInlineTableCurlySpacing = + | [] + | ["always" | "never"] + | [ + "always" | "never", + { + arraysInObjects?: boolean; + objectsInObjects?: boolean; + }, + ]; // ----- toml/key-spacing ----- -type TomlKeySpacing = []|[({ - align?: (("equal" | "value") | { - on?: ("equal" | "value") - mode?: ("strict" | "minimum") - beforeEqual?: boolean - afterEqual?: boolean - }) - mode?: ("strict" | "minimum") - beforeEqual?: boolean - afterEqual?: boolean -} | { - singleLine?: { - mode?: ("strict" | "minimum") - beforeEqual?: boolean - afterEqual?: boolean - } - multiLine?: { - align?: (("equal" | "value") | { - on?: ("equal" | "value") - mode?: ("strict" | "minimum") - beforeEqual?: boolean - afterEqual?: boolean - }) - mode?: ("strict" | "minimum") - beforeEqual?: boolean - afterEqual?: boolean - } -} | { - singleLine?: { - mode?: ("strict" | "minimum") - beforeEqual?: boolean - afterEqual?: boolean - } - multiLine?: { - mode?: ("strict" | "minimum") - beforeEqual?: boolean - afterEqual?: boolean - } - align?: { - on?: ("equal" | "value") - mode?: ("strict" | "minimum") - beforeEqual?: boolean - afterEqual?: boolean - } -})] +type TomlKeySpacing = + | [] + | [ + | { + align?: + | ("equal" | "value") + | { + on?: "equal" | "value"; + mode?: "strict" | "minimum"; + beforeEqual?: boolean; + afterEqual?: boolean; + }; + mode?: "strict" | "minimum"; + beforeEqual?: boolean; + afterEqual?: boolean; + } + | { + singleLine?: { + mode?: "strict" | "minimum"; + beforeEqual?: boolean; + afterEqual?: boolean; + }; + multiLine?: { + align?: + | ("equal" | "value") + | { + on?: "equal" | "value"; + mode?: "strict" | "minimum"; + beforeEqual?: boolean; + afterEqual?: boolean; + }; + mode?: "strict" | "minimum"; + beforeEqual?: boolean; + afterEqual?: boolean; + }; + } + | { + singleLine?: { + mode?: "strict" | "minimum"; + beforeEqual?: boolean; + afterEqual?: boolean; + }; + multiLine?: { + mode?: "strict" | "minimum"; + beforeEqual?: boolean; + afterEqual?: boolean; + }; + align?: { + on?: "equal" | "value"; + mode?: "strict" | "minimum"; + beforeEqual?: boolean; + afterEqual?: boolean; + }; + }, + ]; // ----- toml/no-mixed-type-in-array ----- -type TomlNoMixedTypeInArray = []|[{ - typeMap?: { - string?: string - boolean?: string - integer?: string - float?: string - offsetDateTime?: string - localDateTime?: string - localDate?: string - localTime?: string - array?: string - inlineTable?: string - } -}] +type TomlNoMixedTypeInArray = + | [] + | [ + { + typeMap?: { + string?: string; + boolean?: string; + integer?: string; + float?: string; + offsetDateTime?: string; + localDateTime?: string; + localDate?: string; + localTime?: string; + array?: string; + inlineTable?: string; + }; + }, + ]; // ----- toml/no-non-decimal-integer ----- -type TomlNoNonDecimalInteger = []|[{ - allowHexadecimal?: boolean - allowOctal?: boolean - allowBinary?: boolean -}] +type TomlNoNonDecimalInteger = + | [] + | [ + { + allowHexadecimal?: boolean; + allowOctal?: boolean; + allowBinary?: boolean; + }, + ]; // ----- toml/precision-of-fractional-seconds ----- -type TomlPrecisionOfFractionalSeconds = []|[{ - max?: number -}] +type TomlPrecisionOfFractionalSeconds = + | [] + | [ + { + max?: number; + }, + ]; // ----- toml/precision-of-integer ----- -type TomlPrecisionOfInteger = []|[{ - maxBit?: number -}] +type TomlPrecisionOfInteger = + | [] + | [ + { + maxBit?: number; + }, + ]; // ----- toml/quoted-keys ----- -type TomlQuotedKeys = []|[{ - prefer?: ("as-needed" | "always") - numbers?: boolean -}] +type TomlQuotedKeys = + | [] + | [ + { + prefer?: "as-needed" | "always"; + numbers?: boolean; + }, + ]; // ----- toml/spaced-comment ----- -type TomlSpacedComment = []|[("always" | "never")]|[("always" | "never"), { - exceptions?: string[] - markers?: string[] -}] +type TomlSpacedComment = + | [] + | ["always" | "never"] + | [ + "always" | "never", + { + exceptions?: string[]; + markers?: string[]; + }, + ]; // ----- toml/table-bracket-spacing ----- -type TomlTableBracketSpacing = []|[("always" | "never")] +type TomlTableBracketSpacing = [] | ["always" | "never"]; // ----- unicorn/better-regex ----- -type UnicornBetterRegex = []|[{ - sortCharacterClasses?: boolean -}] +type UnicornBetterRegex = + | [] + | [ + { + sortCharacterClasses?: boolean; + }, + ]; // ----- unicorn/catch-error-name ----- -type UnicornCatchErrorName = []|[{ - name?: string - ignore?: unknown[] -}] +type UnicornCatchErrorName = + | [] + | [ + { + name?: string; + ignore?: unknown[]; + }, + ]; // ----- unicorn/consistent-function-scoping ----- -type UnicornConsistentFunctionScoping = []|[{ - checkArrowFunctions?: boolean -}] +type UnicornConsistentFunctionScoping = + | [] + | [ + { + checkArrowFunctions?: boolean; + }, + ]; // ----- unicorn/escape-case ----- -type UnicornEscapeCase = []|[("uppercase" | "lowercase")] +type UnicornEscapeCase = [] | ["uppercase" | "lowercase"]; // ----- unicorn/expiring-todo-comments ----- -type UnicornExpiringTodoComments = []|[{ - terms?: string[] - ignore?: unknown[] - ignoreDatesOnPullRequests?: boolean - allowWarningComments?: boolean - date?: string -}] +type UnicornExpiringTodoComments = + | [] + | [ + { + terms?: string[]; + ignore?: unknown[]; + ignoreDatesOnPullRequests?: boolean; + allowWarningComments?: boolean; + date?: string; + }, + ]; // ----- unicorn/explicit-length-check ----- -type UnicornExplicitLengthCheck = []|[{ - "non-zero"?: ("greater-than" | "not-equal") -}] +type UnicornExplicitLengthCheck = + | [] + | [ + { + "non-zero"?: "greater-than" | "not-equal"; + }, + ]; // ----- unicorn/filename-case ----- -type UnicornFilenameCase = []|[({ - case?: ("camelCase" | "snakeCase" | "kebabCase" | "pascalCase") - ignore?: unknown[] - multipleFileExtensions?: boolean -} | { - cases?: { - camelCase?: boolean - snakeCase?: boolean - kebabCase?: boolean - pascalCase?: boolean - } - ignore?: unknown[] - multipleFileExtensions?: boolean -})] +type UnicornFilenameCase = + | [] + | [ + | { + case?: "camelCase" | "snakeCase" | "kebabCase" | "pascalCase"; + ignore?: unknown[]; + multipleFileExtensions?: boolean; + } + | { + cases?: { + camelCase?: boolean; + snakeCase?: boolean; + kebabCase?: boolean; + pascalCase?: boolean; + }; + ignore?: unknown[]; + multipleFileExtensions?: boolean; + }, + ]; // ----- unicorn/import-style ----- -type UnicornImportStyle = []|[{ - checkImport?: boolean - checkDynamicImport?: boolean - checkExportFrom?: boolean - checkRequire?: boolean - extendDefaultStyles?: boolean - styles?: _UnicornImportStyle_ModuleStyles -}] -type _UnicornImportStyleStyles = (false | _UnicornImportStyle_BooleanObject) | undefined +type UnicornImportStyle = + | [] + | [ + { + checkImport?: boolean; + checkDynamicImport?: boolean; + checkExportFrom?: boolean; + checkRequire?: boolean; + extendDefaultStyles?: boolean; + styles?: _UnicornImportStyle_ModuleStyles; + }, + ]; +type _UnicornImportStyleStyles = (false | _UnicornImportStyle_BooleanObject) | undefined; interface _UnicornImportStyle_ModuleStyles { - [k: string]: _UnicornImportStyleStyles | undefined + [k: string]: _UnicornImportStyleStyles | undefined; } interface _UnicornImportStyle_BooleanObject { - [k: string]: boolean | undefined + [k: string]: boolean | undefined; } // ----- unicorn/no-array-reduce ----- -type UnicornNoArrayReduce = []|[{ - allowSimpleOperations?: boolean -}] +type UnicornNoArrayReduce = + | [] + | [ + { + allowSimpleOperations?: boolean; + }, + ]; // ----- unicorn/no-instanceof-builtins ----- -type UnicornNoInstanceofBuiltins = []|[{ - useErrorIsError?: boolean - strategy?: ("loose" | "strict") - include?: string[] - exclude?: string[] -}] +type UnicornNoInstanceofBuiltins = + | [] + | [ + { + useErrorIsError?: boolean; + strategy?: "loose" | "strict"; + include?: string[]; + exclude?: string[]; + }, + ]; // ----- unicorn/no-keyword-prefix ----- -type UnicornNoKeywordPrefix = []|[{ - - disallowedPrefixes?: []|[string] - checkProperties?: boolean - onlyCamelCase?: boolean -}] +type UnicornNoKeywordPrefix = + | [] + | [ + { + disallowedPrefixes?: [] | [string]; + checkProperties?: boolean; + onlyCamelCase?: boolean; + }, + ]; // ----- unicorn/no-null ----- -type UnicornNoNull = []|[{ - checkStrictEquality?: boolean -}] +type UnicornNoNull = + | [] + | [ + { + checkStrictEquality?: boolean; + }, + ]; // ----- unicorn/no-typeof-undefined ----- -type UnicornNoTypeofUndefined = []|[{ - checkGlobalVariables?: boolean -}] +type UnicornNoTypeofUndefined = + | [] + | [ + { + checkGlobalVariables?: boolean; + }, + ]; // ----- unicorn/no-unnecessary-polyfills ----- -type UnicornNoUnnecessaryPolyfills = []|[{ - targets: (string | unknown[] | { - [k: string]: unknown | undefined - }) -}] +type UnicornNoUnnecessaryPolyfills = + | [] + | [ + { + targets: + | string + | unknown[] + | { + [k: string]: unknown | undefined; + }; + }, + ]; // ----- unicorn/no-useless-undefined ----- -type UnicornNoUselessUndefined = []|[{ - checkArguments?: boolean - checkArrowFunctionBody?: boolean -}] +type UnicornNoUselessUndefined = + | [] + | [ + { + checkArguments?: boolean; + checkArrowFunctionBody?: boolean; + }, + ]; // ----- unicorn/number-literal-case ----- -type UnicornNumberLiteralCase = []|[{ - hexadecimalValue?: ("uppercase" | "lowercase") -}] +type UnicornNumberLiteralCase = + | [] + | [ + { + hexadecimalValue?: "uppercase" | "lowercase"; + }, + ]; // ----- unicorn/numeric-separators-style ----- -type UnicornNumericSeparatorsStyle = []|[{ - binary?: { - onlyIfContainsSeparator?: boolean - minimumDigits?: number - groupLength?: number - } - octal?: { - onlyIfContainsSeparator?: boolean - minimumDigits?: number - groupLength?: number - } - hexadecimal?: { - onlyIfContainsSeparator?: boolean - minimumDigits?: number - groupLength?: number - } - number?: { - onlyIfContainsSeparator?: boolean - minimumDigits?: number - groupLength?: number - } - onlyIfContainsSeparator?: boolean -}] +type UnicornNumericSeparatorsStyle = + | [] + | [ + { + binary?: { + onlyIfContainsSeparator?: boolean; + minimumDigits?: number; + groupLength?: number; + }; + octal?: { + onlyIfContainsSeparator?: boolean; + minimumDigits?: number; + groupLength?: number; + }; + hexadecimal?: { + onlyIfContainsSeparator?: boolean; + minimumDigits?: number; + groupLength?: number; + }; + number?: { + onlyIfContainsSeparator?: boolean; + minimumDigits?: number; + groupLength?: number; + }; + onlyIfContainsSeparator?: boolean; + }, + ]; // ----- unicorn/prefer-add-event-listener ----- -type UnicornPreferAddEventListener = []|[{ - excludedPackages?: string[] -}] +type UnicornPreferAddEventListener = + | [] + | [ + { + excludedPackages?: string[]; + }, + ]; // ----- unicorn/prefer-array-find ----- -type UnicornPreferArrayFind = []|[{ - checkFromLast?: boolean -}] +type UnicornPreferArrayFind = + | [] + | [ + { + checkFromLast?: boolean; + }, + ]; // ----- unicorn/prefer-array-flat ----- -type UnicornPreferArrayFlat = []|[{ - functions?: unknown[] -}] +type UnicornPreferArrayFlat = + | [] + | [ + { + functions?: unknown[]; + }, + ]; // ----- unicorn/prefer-at ----- -type UnicornPreferAt = []|[{ - getLastElementFunctions?: unknown[] - checkAllIndexAccess?: boolean -}] +type UnicornPreferAt = + | [] + | [ + { + getLastElementFunctions?: unknown[]; + checkAllIndexAccess?: boolean; + }, + ]; // ----- unicorn/prefer-export-from ----- -type UnicornPreferExportFrom = []|[{ - ignoreUsedVariables?: boolean -}] +type UnicornPreferExportFrom = + | [] + | [ + { + ignoreUsedVariables?: boolean; + }, + ]; // ----- unicorn/prefer-number-properties ----- -type UnicornPreferNumberProperties = []|[{ - checkInfinity?: boolean - checkNaN?: boolean -}] +type UnicornPreferNumberProperties = + | [] + | [ + { + checkInfinity?: boolean; + checkNaN?: boolean; + }, + ]; // ----- unicorn/prefer-object-from-entries ----- -type UnicornPreferObjectFromEntries = []|[{ - functions?: unknown[] -}] +type UnicornPreferObjectFromEntries = + | [] + | [ + { + functions?: unknown[]; + }, + ]; // ----- unicorn/prefer-single-call ----- -type UnicornPreferSingleCall = []|[{ - ignore?: unknown[] -}] +type UnicornPreferSingleCall = + | [] + | [ + { + ignore?: unknown[]; + }, + ]; // ----- unicorn/prefer-structured-clone ----- -type UnicornPreferStructuredClone = []|[{ - functions?: unknown[] -}] +type UnicornPreferStructuredClone = + | [] + | [ + { + functions?: unknown[]; + }, + ]; // ----- unicorn/prefer-switch ----- -type UnicornPreferSwitch = []|[{ - minimumCases?: number - emptyDefaultCase?: ("no-default-comment" | "do-nothing-comment" | "no-default-case") -}] +type UnicornPreferSwitch = + | [] + | [ + { + minimumCases?: number; + emptyDefaultCase?: "no-default-comment" | "do-nothing-comment" | "no-default-case"; + }, + ]; // ----- unicorn/prefer-ternary ----- -type UnicornPreferTernary = []|[("always" | "only-single-line")] +type UnicornPreferTernary = [] | ["always" | "only-single-line"]; // ----- unicorn/prevent-abbreviations ----- -type UnicornPreventAbbreviations = []|[{ - checkProperties?: boolean - checkVariables?: boolean - checkDefaultAndNamespaceImports?: (boolean | string) - checkShorthandImports?: (boolean | string) - checkShorthandProperties?: boolean - checkFilenames?: boolean - extendDefaultReplacements?: boolean - replacements?: _UnicornPreventAbbreviations_Abbreviations - extendDefaultAllowList?: boolean - allowList?: _UnicornPreventAbbreviations_BooleanObject - ignore?: unknown[] -}] -type _UnicornPreventAbbreviationsReplacements = (false | _UnicornPreventAbbreviations_BooleanObject) | undefined +type UnicornPreventAbbreviations = + | [] + | [ + { + checkProperties?: boolean; + checkVariables?: boolean; + checkDefaultAndNamespaceImports?: boolean | string; + checkShorthandImports?: boolean | string; + checkShorthandProperties?: boolean; + checkFilenames?: boolean; + extendDefaultReplacements?: boolean; + replacements?: _UnicornPreventAbbreviations_Abbreviations; + extendDefaultAllowList?: boolean; + allowList?: _UnicornPreventAbbreviations_BooleanObject; + ignore?: unknown[]; + }, + ]; +type _UnicornPreventAbbreviationsReplacements = (false | _UnicornPreventAbbreviations_BooleanObject) | undefined; interface _UnicornPreventAbbreviations_Abbreviations { - [k: string]: _UnicornPreventAbbreviationsReplacements | undefined + [k: string]: _UnicornPreventAbbreviationsReplacements | undefined; } interface _UnicornPreventAbbreviations_BooleanObject { - [k: string]: boolean | undefined + [k: string]: boolean | undefined; } // ----- unicorn/relative-url-style ----- -type UnicornRelativeUrlStyle = []|[("never" | "always")] +type UnicornRelativeUrlStyle = [] | ["never" | "always"]; // ----- unicorn/string-content ----- -type UnicornStringContent = []|[{ - patterns?: { - [k: string]: (string | { - suggest: string - fix?: boolean - message?: string - }) | undefined - } -}] +type UnicornStringContent = + | [] + | [ + { + patterns?: { + [k: string]: + | ( + | string + | { + suggest: string; + fix?: boolean; + message?: string; + } + ) + | undefined; + }; + }, + ]; // ----- unicorn/switch-case-braces ----- -type UnicornSwitchCaseBraces = []|[("always" | "avoid")] +type UnicornSwitchCaseBraces = [] | ["always" | "avoid"]; // ----- unicorn/template-indent ----- -type UnicornTemplateIndent = []|[{ - indent?: (string | number) - tags?: string[] - functions?: string[] - selectors?: string[] - comments?: string[] -}] +type UnicornTemplateIndent = + | [] + | [ + { + indent?: string | number; + tags?: string[]; + functions?: string[]; + selectors?: string[]; + comments?: string[]; + }, + ]; // ----- unocss/enforce-class-compile ----- -type UnocssEnforceClassCompile = []|[{ - prefix?: string - enableFix?: boolean -}] +type UnocssEnforceClassCompile = + | [] + | [ + { + prefix?: string; + enableFix?: boolean; + }, + ]; // ----- vitest/consistent-test-filename ----- -type VitestConsistentTestFilename = []|[{ - pattern?: string - allTestPattern?: string -}] +type VitestConsistentTestFilename = + | [] + | [ + { + pattern?: string; + allTestPattern?: string; + }, + ]; // ----- vitest/consistent-test-it ----- -type VitestConsistentTestIt = []|[{ - fn?: ("test" | "it") - withinDescribe?: ("test" | "it") -}] +type VitestConsistentTestIt = + | [] + | [ + { + fn?: "test" | "it"; + withinDescribe?: "test" | "it"; + }, + ]; // ----- vitest/expect-expect ----- -type VitestExpectExpect = []|[{ - assertFunctionNames?: string[] - additionalTestBlockFunctions?: string[] -}] +type VitestExpectExpect = + | [] + | [ + { + assertFunctionNames?: string[]; + additionalTestBlockFunctions?: string[]; + }, + ]; // ----- vitest/max-expects ----- -type VitestMaxExpects = []|[{ - max?: number -}] +type VitestMaxExpects = + | [] + | [ + { + max?: number; + }, + ]; // ----- vitest/max-nested-describe ----- -type VitestMaxNestedDescribe = []|[{ - max?: number -}] +type VitestMaxNestedDescribe = + | [] + | [ + { + max?: number; + }, + ]; // ----- vitest/no-focused-tests ----- -type VitestNoFocusedTests = []|[{ - fixable?: boolean -}] +type VitestNoFocusedTests = + | [] + | [ + { + fixable?: boolean; + }, + ]; // ----- vitest/no-hooks ----- -type VitestNoHooks = []|[{ - allow?: unknown[] -}] +type VitestNoHooks = + | [] + | [ + { + allow?: unknown[]; + }, + ]; // ----- vitest/no-large-snapshots ----- -type VitestNoLargeSnapshots = []|[{ - maxSize?: number - inlineMaxSize?: number - allowedSnapshots?: { - [k: string]: unknown[] | undefined - } -}] +type VitestNoLargeSnapshots = + | [] + | [ + { + maxSize?: number; + inlineMaxSize?: number; + allowedSnapshots?: { + [k: string]: unknown[] | undefined; + }; + }, + ]; // ----- vitest/no-only-tests ----- -type VitestNoOnlyTests = []|[{ - block?: string[] - focus?: string[] - functions?: string[] - fix?: boolean -}] +type VitestNoOnlyTests = + | [] + | [ + { + block?: string[]; + focus?: string[]; + functions?: string[]; + fix?: boolean; + }, + ]; // ----- vitest/no-restricted-matchers ----- -type VitestNoRestrictedMatchers = []|[{ - [k: string]: (string | null) | undefined -}] +type VitestNoRestrictedMatchers = + | [] + | [ + { + [k: string]: (string | null) | undefined; + }, + ]; // ----- vitest/no-restricted-vi-methods ----- -type VitestNoRestrictedViMethods = []|[{ - [k: string]: (string | null) | undefined -}] +type VitestNoRestrictedViMethods = + | [] + | [ + { + [k: string]: (string | null) | undefined; + }, + ]; // ----- vitest/no-standalone-expect ----- -type VitestNoStandaloneExpect = []|[{ - additionalTestBlockFunctions?: string[] -}] +type VitestNoStandaloneExpect = + | [] + | [ + { + additionalTestBlockFunctions?: string[]; + }, + ]; // ----- vitest/prefer-expect-assertions ----- -type VitestPreferExpectAssertions = []|[{ - onlyFunctionsWithAsyncKeyword?: boolean - onlyFunctionsWithExpectInLoop?: boolean - onlyFunctionsWithExpectInCallback?: boolean -}] +type VitestPreferExpectAssertions = + | [] + | [ + { + onlyFunctionsWithAsyncKeyword?: boolean; + onlyFunctionsWithExpectInLoop?: boolean; + onlyFunctionsWithExpectInCallback?: boolean; + }, + ]; // ----- vitest/prefer-lowercase-title ----- -type VitestPreferLowercaseTitle = []|[{ - ignore?: ("describe" | "test" | "it")[] - allowedPrefixes?: string[] - ignoreTopLevelDescribe?: boolean - lowercaseFirstCharacterOnly?: boolean -}] +type VitestPreferLowercaseTitle = + | [] + | [ + { + ignore?: ("describe" | "test" | "it")[]; + allowedPrefixes?: string[]; + ignoreTopLevelDescribe?: boolean; + lowercaseFirstCharacterOnly?: boolean; + }, + ]; // ----- vitest/prefer-snapshot-hint ----- -type VitestPreferSnapshotHint = []|[("always" | "multi")] +type VitestPreferSnapshotHint = [] | ["always" | "multi"]; // ----- vitest/require-hook ----- -type VitestRequireHook = []|[{ - allowedFunctionCalls?: string[] -}] +type VitestRequireHook = + | [] + | [ + { + allowedFunctionCalls?: string[]; + }, + ]; // ----- vitest/require-mock-type-parameters ----- -type VitestRequireMockTypeParameters = []|[{ - checkImportFunctions?: boolean -}] +type VitestRequireMockTypeParameters = + | [] + | [ + { + checkImportFunctions?: boolean; + }, + ]; // ----- vitest/require-top-level-describe ----- -type VitestRequireTopLevelDescribe = []|[{ - maxNumberOfTopLevelDescribes?: number -}] +type VitestRequireTopLevelDescribe = + | [] + | [ + { + maxNumberOfTopLevelDescribes?: number; + }, + ]; // ----- vitest/valid-expect ----- -type VitestValidExpect = []|[{ - alwaysAwait?: boolean - asyncMatchers?: string[] - minArgs?: number - maxArgs?: number -}] +type VitestValidExpect = + | [] + | [ + { + alwaysAwait?: boolean; + asyncMatchers?: string[]; + minArgs?: number; + maxArgs?: number; + }, + ]; // ----- vitest/valid-title ----- -type VitestValidTitle = []|[{ - ignoreTypeOfDescribeName?: boolean - allowArguments?: boolean - disallowedWords?: string[] - [k: string]: (string | [string]|[string, string] | { - [k: string]: (string | [string]|[string, string]) | undefined - }) -}] +type VitestValidTitle = + | [] + | [ + { + ignoreTypeOfDescribeName?: boolean; + allowArguments?: boolean; + disallowedWords?: string[]; + [k: string]: + | string + | [string] + | [string, string] + | { + [k: string]: (string | [string] | [string, string]) | undefined; + }; + }, + ]; // ----- yaml/block-mapping ----- -type YamlBlockMapping = []|[(("always" | "never") | { - singleline?: ("always" | "never" | "ignore") - multiline?: ("always" | "never" | "ignore") -})] +type YamlBlockMapping = + | [] + | [ + | ("always" | "never") + | { + singleline?: "always" | "never" | "ignore"; + multiline?: "always" | "never" | "ignore"; + }, + ]; // ----- yaml/block-mapping-colon-indicator-newline ----- -type YamlBlockMappingColonIndicatorNewline = []|[("always" | "never")] +type YamlBlockMappingColonIndicatorNewline = [] | ["always" | "never"]; // ----- yaml/block-mapping-question-indicator-newline ----- -type YamlBlockMappingQuestionIndicatorNewline = []|[("always" | "never")] +type YamlBlockMappingQuestionIndicatorNewline = [] | ["always" | "never"]; // ----- yaml/block-sequence ----- -type YamlBlockSequence = []|[(("always" | "never") | { - singleline?: ("always" | "never" | "ignore") - multiline?: ("always" | "never" | "ignore") -})] +type YamlBlockSequence = + | [] + | [ + | ("always" | "never") + | { + singleline?: "always" | "never" | "ignore"; + multiline?: "always" | "never" | "ignore"; + }, + ]; // ----- yaml/block-sequence-hyphen-indicator-newline ----- -type YamlBlockSequenceHyphenIndicatorNewline = []|[("always" | "never")]|[("always" | "never"), { - nestedHyphen?: ("always" | "never") - blockMapping?: ("always" | "never") -}] +type YamlBlockSequenceHyphenIndicatorNewline = + | [] + | ["always" | "never"] + | [ + "always" | "never", + { + nestedHyphen?: "always" | "never"; + blockMapping?: "always" | "never"; + }, + ]; // ----- yaml/file-extension ----- -type YamlFileExtension = []|[{ - extension?: ("yaml" | "yml") - caseSensitive?: boolean -}] +type YamlFileExtension = + | [] + | [ + { + extension?: "yaml" | "yml"; + caseSensitive?: boolean; + }, + ]; // ----- yaml/flow-mapping-curly-newline ----- -type YamlFlowMappingCurlyNewline = []|[(("always" | "never") | { - multiline?: boolean - minProperties?: number - consistent?: boolean -})] +type YamlFlowMappingCurlyNewline = + | [] + | [ + | ("always" | "never") + | { + multiline?: boolean; + minProperties?: number; + consistent?: boolean; + }, + ]; // ----- yaml/flow-mapping-curly-spacing ----- -type YamlFlowMappingCurlySpacing = []|[("always" | "never")]|[("always" | "never"), { - arraysInObjects?: boolean - objectsInObjects?: boolean -}] +type YamlFlowMappingCurlySpacing = + | [] + | ["always" | "never"] + | [ + "always" | "never", + { + arraysInObjects?: boolean; + objectsInObjects?: boolean; + }, + ]; // ----- yaml/flow-sequence-bracket-newline ----- -type YamlFlowSequenceBracketNewline = []|[(("always" | "never" | "consistent") | { - multiline?: boolean - minItems?: (number | null) -})] +type YamlFlowSequenceBracketNewline = + | [] + | [ + | ("always" | "never" | "consistent") + | { + multiline?: boolean; + minItems?: number | null; + }, + ]; // ----- yaml/flow-sequence-bracket-spacing ----- -type YamlFlowSequenceBracketSpacing = []|[("always" | "never")]|[("always" | "never"), { - singleValue?: boolean - objectsInArrays?: boolean - arraysInArrays?: boolean -}] +type YamlFlowSequenceBracketSpacing = + | [] + | ["always" | "never"] + | [ + "always" | "never", + { + singleValue?: boolean; + objectsInArrays?: boolean; + arraysInArrays?: boolean; + }, + ]; // ----- yaml/indent ----- -type YamlIndent = []|[number]|[number, { - indentBlockSequences?: boolean - indicatorValueIndent?: number - alignMultilineFlowScalars?: boolean -}] +type YamlIndent = + | [] + | [number] + | [ + number, + { + indentBlockSequences?: boolean; + indicatorValueIndent?: number; + alignMultilineFlowScalars?: boolean; + }, + ]; // ----- yaml/key-name-casing ----- -type YamlKeyNameCasing = []|[{ - camelCase?: boolean - PascalCase?: boolean - SCREAMING_SNAKE_CASE?: boolean - "kebab-case"?: boolean - snake_case?: boolean - ignores?: string[] -}] +type YamlKeyNameCasing = + | [] + | [ + { + camelCase?: boolean; + PascalCase?: boolean; + SCREAMING_SNAKE_CASE?: boolean; + "kebab-case"?: boolean; + snake_case?: boolean; + ignores?: string[]; + }, + ]; // ----- yaml/key-spacing ----- -type YamlKeySpacing = []|[({ - align?: (("colon" | "value") | { - on?: ("colon" | "value") - mode?: ("strict" | "minimum") - beforeColon?: boolean - afterColon?: boolean - }) - mode?: ("strict" | "minimum") - beforeColon?: boolean - afterColon?: boolean -} | { - singleLine?: { - mode?: ("strict" | "minimum") - beforeColon?: boolean - afterColon?: boolean - } - multiLine?: { - align?: (("colon" | "value") | { - on?: ("colon" | "value") - mode?: ("strict" | "minimum") - beforeColon?: boolean - afterColon?: boolean - }) - mode?: ("strict" | "minimum") - beforeColon?: boolean - afterColon?: boolean - } -} | { - singleLine?: { - mode?: ("strict" | "minimum") - beforeColon?: boolean - afterColon?: boolean - } - multiLine?: { - mode?: ("strict" | "minimum") - beforeColon?: boolean - afterColon?: boolean - } - align?: { - on?: ("colon" | "value") - mode?: ("strict" | "minimum") - beforeColon?: boolean - afterColon?: boolean - } -})] +type YamlKeySpacing = + | [] + | [ + | { + align?: + | ("colon" | "value") + | { + on?: "colon" | "value"; + mode?: "strict" | "minimum"; + beforeColon?: boolean; + afterColon?: boolean; + }; + mode?: "strict" | "minimum"; + beforeColon?: boolean; + afterColon?: boolean; + } + | { + singleLine?: { + mode?: "strict" | "minimum"; + beforeColon?: boolean; + afterColon?: boolean; + }; + multiLine?: { + align?: + | ("colon" | "value") + | { + on?: "colon" | "value"; + mode?: "strict" | "minimum"; + beforeColon?: boolean; + afterColon?: boolean; + }; + mode?: "strict" | "minimum"; + beforeColon?: boolean; + afterColon?: boolean; + }; + } + | { + singleLine?: { + mode?: "strict" | "minimum"; + beforeColon?: boolean; + afterColon?: boolean; + }; + multiLine?: { + mode?: "strict" | "minimum"; + beforeColon?: boolean; + afterColon?: boolean; + }; + align?: { + on?: "colon" | "value"; + mode?: "strict" | "minimum"; + beforeColon?: boolean; + afterColon?: boolean; + }; + }, + ]; // ----- yaml/no-irregular-whitespace ----- -type YamlNoIrregularWhitespace = []|[{ - skipComments?: boolean - skipQuotedScalars?: boolean -}] +type YamlNoIrregularWhitespace = + | [] + | [ + { + skipComments?: boolean; + skipQuotedScalars?: boolean; + }, + ]; // ----- yaml/no-multiple-empty-lines ----- -type YamlNoMultipleEmptyLines = []|[{ - max: number - maxEOF?: number - maxBOF?: number -}] +type YamlNoMultipleEmptyLines = + | [] + | [ + { + max: number; + maxEOF?: number; + maxBOF?: number; + }, + ]; // ----- yaml/plain-scalar ----- -type YamlPlainScalar = []|[("always" | "never")]|[("always" | "never"), { - ignorePatterns?: string[] - overrides?: { - mappingKey?: ("always" | "never" | null) - } -}] +type YamlPlainScalar = + | [] + | ["always" | "never"] + | [ + "always" | "never", + { + ignorePatterns?: string[]; + overrides?: { + mappingKey?: "always" | "never" | null; + }; + }, + ]; // ----- yaml/quotes ----- -type YamlQuotes = []|[{ - prefer?: ("double" | "single") - avoidEscape?: boolean -}] +type YamlQuotes = + | [] + | [ + { + prefer?: "double" | "single"; + avoidEscape?: boolean; + }, + ]; // ----- yaml/sort-keys ----- -type YamlSortKeys = ([{ - pathPattern: string - hasProperties?: string[] - order: ((string | { - keyPattern?: string - order?: { - type?: ("asc" | "desc") - caseSensitive?: boolean - natural?: boolean - } - })[] | { - type?: ("asc" | "desc") - caseSensitive?: boolean - natural?: boolean - }) - minKeys?: number - allowLineSeparatedGroups?: boolean -}, ...({ - pathPattern: string - hasProperties?: string[] - order: ((string | { - keyPattern?: string - order?: { - type?: ("asc" | "desc") - caseSensitive?: boolean - natural?: boolean - } - })[] | { - type?: ("asc" | "desc") - caseSensitive?: boolean - natural?: boolean - }) - minKeys?: number - allowLineSeparatedGroups?: boolean -})[]] | []|[("asc" | "desc")]|[("asc" | "desc"), { - caseSensitive?: boolean - natural?: boolean - minKeys?: number - allowLineSeparatedGroups?: boolean -}]) +type YamlSortKeys = + | [ + { + pathPattern: string; + hasProperties?: string[]; + order: + | ( + | string + | { + keyPattern?: string; + order?: { + type?: "asc" | "desc"; + caseSensitive?: boolean; + natural?: boolean; + }; + } + )[] + | { + type?: "asc" | "desc"; + caseSensitive?: boolean; + natural?: boolean; + }; + minKeys?: number; + allowLineSeparatedGroups?: boolean; + }, + ...{ + pathPattern: string; + hasProperties?: string[]; + order: + | ( + | string + | { + keyPattern?: string; + order?: { + type?: "asc" | "desc"; + caseSensitive?: boolean; + natural?: boolean; + }; + } + )[] + | { + type?: "asc" | "desc"; + caseSensitive?: boolean; + natural?: boolean; + }; + minKeys?: number; + allowLineSeparatedGroups?: boolean; + }[], + ] + | [] + | ["asc" | "desc"] + | [ + "asc" | "desc", + { + caseSensitive?: boolean; + natural?: boolean; + minKeys?: number; + allowLineSeparatedGroups?: boolean; + }, + ]; // ----- yaml/sort-sequence-values ----- -type YamlSortSequenceValues = [{ - pathPattern: string - order: ((string | { - valuePattern?: string - order?: { - type?: ("asc" | "desc") - caseSensitive?: boolean - natural?: boolean - } - })[] | { - type?: ("asc" | "desc") - caseSensitive?: boolean - natural?: boolean - }) - minValues?: number -}, ...({ - pathPattern: string - order: ((string | { - valuePattern?: string - order?: { - type?: ("asc" | "desc") - caseSensitive?: boolean - natural?: boolean - } - })[] | { - type?: ("asc" | "desc") - caseSensitive?: boolean - natural?: boolean - }) - minValues?: number -})[]] +type YamlSortSequenceValues = [ + { + pathPattern: string; + order: + | ( + | string + | { + valuePattern?: string; + order?: { + type?: "asc" | "desc"; + caseSensitive?: boolean; + natural?: boolean; + }; + } + )[] + | { + type?: "asc" | "desc"; + caseSensitive?: boolean; + natural?: boolean; + }; + minValues?: number; + }, + ...{ + pathPattern: string; + order: + | ( + | string + | { + valuePattern?: string; + order?: { + type?: "asc" | "desc"; + caseSensitive?: boolean; + natural?: boolean; + }; + } + )[] + | { + type?: "asc" | "desc"; + caseSensitive?: boolean; + natural?: boolean; + }; + minValues?: number; + }[], +]; // ----- yaml/spaced-comment ----- -type YamlSpacedComment = []|[("always" | "never")]|[("always" | "never"), { - exceptions?: string[] - markers?: string[] -}] +type YamlSpacedComment = + | [] + | ["always" | "never"] + | [ + "always" | "never", + { + exceptions?: string[]; + markers?: string[]; + }, + ]; // ----- zod/prefer-enum ----- -type ZodPreferEnum = []|[{}] +type ZodPreferEnum = [] | [{}]; // ----- zod/require-strict ----- -type ZodRequireStrict = []|[{ - allowPassthrough?: boolean -}] +type ZodRequireStrict = + | [] + | [ + { + allowPassthrough?: boolean; + }, + ]; // Names of all the configs -export type ConfigNames = 'anolilab/antfu' | 'anolilab/astro/setup' | 'anolilab/astro/rules' | 'anolilab/best-practices/rules' | 'anolilab/best-practices/ts-rules' | 'compat/flat/recommended' | 'anolilab/errors/rules' | 'anolilab/errors/ts-rules' | 'anolilab/html/setup' | 'anolilab/no-secrets' | 'anolilab/no-unsanitized/setup' | 'anolilab/promise/rules' | 'anolilab/simple-import-sort' | 'anolilab/sonarjs/plugin' | 'anolilab/sonarjs/rules' | 'anolilab/sonarjs/js-and-ts-rules' | 'anolilab/sonarjs/js-rules' | 'storybook:recommended:setup' | 'storybook:recommended:stories-rules' | 'storybook:recommended:main-rules' | 'tailwindcss:base' | 'tailwindcss:rules' | 'anolilab/validate-jsx-nesting/setup' | 'anolilab/variables/rules' | 'anolilab/variables/ts-rules' | 'anolilab/style/rules' | 'anolilab/style/ts-rules' | 'anolilab/eslint-comments/rules' | 'anolilab/formatter/setup' | 'anolilab/imports/setup' | 'anolilab/imports/rules' | 'anolilab/imports/d.ts-rules' | 'anolilab/javascript/setup' | 'anolilab/jsx-a11y/setup' | 'anolilab/jsdoc/setup' | 'anolilab/jsdoc/js-rules' | 'anolilab/jsonc/json5-rules' | 'anolilab/jsonc/jsonc-rules' | 'anolilab/jsonc/json-rules' | 'anolilab/jsonc/package.json-rules' | 'anolilab/jsonc/tsconfig-json' | 'anolilab/markdown/setup' | 'anolilab/markdown/processor' | 'anolilab/markdown/parser' | 'anolilab/markdown/disables' | 'anolilab/perfectionist/setup' | 'anolilab/perfectionist/rules' | 'anolilab/perfectionist/typescript' | 'anolilab/perfectionist/postcss' | 'anolilab/react/setup' | 'anolilab/react/rules' | 'anolilab/react/jsx' | 'anolilab/react/tsx' | 'anolilab/react/storybook' | 'anolilab/node/setup' | 'anolilab/node/rules' | 'anolilab/stylistic/rules' | 'anolilab/vitest/setup' | 'anolilab/vitest/rules' | 'anolilab/toml' | 'anolilab/regexp/rules' | 'anolilab/typescript/setup' | 'anolilab/typescript/parser' | 'typescript-eslint/base' | 'typescript-eslint/eslint-recommended' | 'typescript-eslint/strict' | 'typescript-eslint/base' | 'typescript-eslint/eslint-recommended' | 'typescript-eslint/stylistic' | 'anolilab/typescript/rules' | 'anolilab/unicorn/plugin' | 'anolilab/unicorn/rules' | 'anolilab/unicorn/tsconfig-overrides' | 'anolilab/unicorn/ts-overrides' | 'anolilab/unocss' | 'anolilab/yaml' | 'anolilab/yaml/pnpm-workspace' +export type ConfigNames = + | "anolilab/antfu" + | "anolilab/astro/setup" + | "anolilab/astro/rules" + | "anolilab/best-practices/rules" + | "anolilab/best-practices/ts-rules" + | "compat/flat/recommended" + | "anolilab/errors/rules" + | "anolilab/errors/ts-rules" + | "anolilab/html/setup" + | "anolilab/no-secrets" + | "anolilab/no-unsanitized/setup" + | "anolilab/promise/rules" + | "anolilab/simple-import-sort" + | "anolilab/sonarjs/plugin" + | "anolilab/sonarjs/rules" + | "anolilab/sonarjs/js-and-ts-rules" + | "anolilab/sonarjs/js-rules" + | "storybook:recommended:setup" + | "storybook:recommended:stories-rules" + | "storybook:recommended:main-rules" + | "tailwindcss:base" + | "tailwindcss:rules" + | "anolilab/validate-jsx-nesting/setup" + | "anolilab/variables/rules" + | "anolilab/variables/ts-rules" + | "anolilab/style/rules" + | "anolilab/style/ts-rules" + | "anolilab/eslint-comments/rules" + | "anolilab/formatter/setup" + | "anolilab/imports/setup" + | "anolilab/imports/rules" + | "anolilab/imports/d.ts-rules" + | "anolilab/javascript/setup" + | "anolilab/jsx-a11y/setup" + | "anolilab/jsdoc/setup" + | "anolilab/jsdoc/js-rules" + | "anolilab/jsonc/json5-rules" + | "anolilab/jsonc/jsonc-rules" + | "anolilab/jsonc/json-rules" + | "anolilab/jsonc/package.json-rules" + | "anolilab/jsonc/tsconfig-json" + | "anolilab/markdown/setup" + | "anolilab/markdown/processor" + | "anolilab/markdown/parser" + | "anolilab/markdown/disables" + | "anolilab/perfectionist/setup" + | "anolilab/perfectionist/rules" + | "anolilab/perfectionist/typescript" + | "anolilab/perfectionist/postcss" + | "anolilab/react/setup" + | "anolilab/react/rules" + | "anolilab/react/jsx" + | "anolilab/react/tsx" + | "anolilab/react/storybook" + | "anolilab/node/setup" + | "anolilab/node/rules" + | "anolilab/stylistic/rules" + | "anolilab/vitest/setup" + | "anolilab/vitest/rules" + | "anolilab/toml" + | "anolilab/regexp/rules" + | "anolilab/typescript/setup" + | "anolilab/typescript/parser" + | "typescript-eslint/base" + | "typescript-eslint/eslint-recommended" + | "typescript-eslint/strict" + | "typescript-eslint/base" + | "typescript-eslint/eslint-recommended" + | "typescript-eslint/stylistic" + | "anolilab/typescript/rules" + | "anolilab/unicorn/plugin" + | "anolilab/unicorn/rules" + | "anolilab/unicorn/tsconfig-overrides" + | "anolilab/unicorn/ts-overrides" + | "anolilab/unocss" + | "anolilab/yaml" + | "anolilab/yaml/pnpm-workspace"; diff --git a/packages/eslint-config/src/types.ts b/packages/eslint-config/src/types.ts index 8bf27e451..f1597923e 100644 --- a/packages/eslint-config/src/types.ts +++ b/packages/eslint-config/src/types.ts @@ -438,8 +438,8 @@ export interface OptionsFormatters { slidev?: | boolean | { - files?: string[]; - }; + files?: string[]; + }; /** * Enable formatting support for SVG. diff --git a/packages/eslint-config/src/utils/create-config.ts b/packages/eslint-config/src/utils/create-config.ts index da6cd2540..2e59f341a 100644 --- a/packages/eslint-config/src/utils/create-config.ts +++ b/packages/eslint-config/src/utils/create-config.ts @@ -126,4 +126,7 @@ export const getFilesGlobs = (fileType: FileType): string[] => { } }; -export const createConfig = (type: FileType, rules: (options: O, files: string[]) => Promise[]>) => async (options: O): Promise => await rules(options, getFilesGlobs(type)); +export const createConfig = + (type: FileType, rules: (options: O, files: string[]) => Promise[]>) => + async (options: O): Promise => + await rules(options, getFilesGlobs(type)); diff --git a/packages/eslint-config/src/utils/vitest-globals.ts b/packages/eslint-config/src/utils/vitest-globals.ts index 1c463aeb9..a3353d045 100644 --- a/packages/eslint-config/src/utils/vitest-globals.ts +++ b/packages/eslint-config/src/utils/vitest-globals.ts @@ -1,22 +1,22 @@ /** * vitest version 3.1.4 */ -export default /** @type {const} */ ({ - "suite": true, - "test": true, - "chai": true, - "describe": true, - "it": true, - "expectTypeOf": true, - "assertType": true, - "expect": true, - "assert": true, - "vitest": true, - "vi": true, - "beforeAll": true, - "afterAll": true, - "beforeEach": true, - "afterEach": true, - "onTestFailed": true, - "onTestFinished": true -}); +export default /** @type {const} */ { + afterAll: true, + afterEach: true, + assert: true, + assertType: true, + beforeAll: true, + beforeEach: true, + chai: true, + describe: true, + expect: true, + expectTypeOf: true, + it: true, + onTestFailed: true, + onTestFinished: true, + suite: true, + test: true, + vi: true, + vitest: true, +}; From 331b564feb2f395dbfb13d97cf6d7f0938aab574 Mon Sep 17 00:00:00 2001 From: prisis Date: Fri, 23 May 2025 16:23:47 +0200 Subject: [PATCH 22/31] style: format and consistency improvements across ESLint configuration files - Reformatted import statements for better readability. - Adjusted various rule configurations to enhance clarity and maintainability. - Ensured consistent use of arrow function syntax in configuration files. - Improved message formatting in error handling and warnings. Signed-off-by: prisis --- .../eslint-config/__tests__/rules.test.ts | 10 +- packages/eslint-config/scripts/typegen.ts | 4 +- packages/eslint-config/src/config/es6.ts | 26 +- .../eslint-config/src/config/plugins/antfu.ts | 27 +- .../eslint-config/src/config/plugins/astro.ts | 21 +- .../src/config/plugins/formatters.ts | 14 +- .../eslint-config/src/config/plugins/html.ts | 30 +- .../src/config/plugins/imports.ts | 82 ++-- .../src/config/plugins/javascript.ts | 22 +- .../eslint-config/src/config/plugins/jsdoc.ts | 35 +- .../eslint-config/src/config/plugins/jsonc.ts | 361 +++++++++-------- .../src/config/plugins/jsx-a11y.ts | 4 +- .../src/config/plugins/markdown.ts | 2 +- .../eslint-config/src/config/plugins/node.ts | 12 +- .../src/config/plugins/perfectionist.ts | 2 +- .../eslint-config/src/config/plugins/react.ts | 106 ++--- .../src/config/plugins/regexp.ts | 7 +- .../src/config/plugins/stylistic.ts | 373 +++++++++--------- .../src/config/plugins/testing-library.ts | 2 +- .../eslint-config/src/config/plugins/toml.ts | 30 +- .../src/config/plugins/typescript.ts | 84 ++-- .../src/config/plugins/unicorn.ts | 32 +- .../src/config/plugins/unocss.ts | 16 +- .../src/config/plugins/vitest.ts | 56 +-- .../eslint-config/src/config/plugins/yml.ts | 44 ++- packages/eslint-config/src/config/style.ts | 142 +++---- packages/eslint-config/src/index.ts | 23 +- packages/eslint-config/src/types.ts | 4 +- .../eslint-config/src/utils/create-config.ts | 5 +- 29 files changed, 841 insertions(+), 735 deletions(-) diff --git a/packages/eslint-config/__tests__/rules.test.ts b/packages/eslint-config/__tests__/rules.test.ts index b1ee16635..badd5e20b 100644 --- a/packages/eslint-config/__tests__/rules.test.ts +++ b/packages/eslint-config/__tests__/rules.test.ts @@ -1,5 +1,13 @@ import { existsSync } from "node:fs"; -import { copyFile, lstat, mkdir, readdir, readFile, rm, writeFile } from "node:fs/promises"; +import { + copyFile, + lstat, + mkdir, + readdir, + readFile, + rm, + writeFile, +} from "node:fs/promises"; import { dirname, join } from "node:path"; import { fileURLToPath } from "node:url"; diff --git a/packages/eslint-config/scripts/typegen.ts b/packages/eslint-config/scripts/typegen.ts index 610bc746d..1aa035c5e 100644 --- a/packages/eslint-config/scripts/typegen.ts +++ b/packages/eslint-config/scripts/typegen.ts @@ -123,7 +123,7 @@ const configs = await combine( zod({}), ); -const configNames = configs.map((index) => index.name).filter(Boolean) as string[]; +const configNames = configs.map(index => index.name).filter(Boolean) as string[]; let dts = await flatConfigsToRulesDTS(configs, { includeAugmentation: false, @@ -131,7 +131,7 @@ let dts = await flatConfigsToRulesDTS(configs, { dts += ` // Names of all the configs -export type ConfigNames = ${configNames.map((index) => `'${index}'`).join(" | ")} +export type ConfigNames = ${configNames.map(index => `'${index}'`).join(" | ")} `; await fs.writeFile("src/typegen.d.ts", dts); diff --git a/packages/eslint-config/src/config/es6.ts b/packages/eslint-config/src/config/es6.ts index c1a2a2a47..d600470ec 100644 --- a/packages/eslint-config/src/config/es6.ts +++ b/packages/eslint-config/src/config/es6.ts @@ -119,7 +119,7 @@ export const es6Rules: (isInEditor: boolean) => Partial = (i name: "sys", }, { - message: 'Is legacy, npm version got deprecated, migrate to URLSearchParams as recommended or try "qs" as a package', + message: "Is legacy, npm version got deprecated, migrate to URLSearchParams as recommended or try \"qs\" as a package", name: "querystring", }, { @@ -131,7 +131,7 @@ export const es6Rules: (isInEditor: boolean) => Partial = (i name: "mkdirp", }, { - message: 'Please use "@faker-js/faker" as a replacement', + message: "Please use \"@faker-js/faker\" as a replacement", name: "faker", }, { @@ -151,23 +151,23 @@ export const es6Rules: (isInEditor: boolean) => Partial = (i name: "rimraf", }, { - message: 'just use "".padStart() and "".padEnd()', + message: "just use \"\".padStart() and \"\".padEnd()", name: "pad-left", }, { - message: 'just use "".padStart() and "".padEnd()', + message: "just use \"\".padStart() and \"\".padEnd()", name: "pad-right", }, { - message: 'just use "".padStart() and "".padEnd()', + message: "just use \"\".padStart() and \"\".padEnd()", name: "left-pad", }, { - message: 'just use "".padStart() and "".padEnd()', + message: "just use \"\".padStart() and \"\".padEnd()", name: "right-pad", }, { - message: 'just use "".padStart() and "".padEnd()', + message: "just use \"\".padStart() and \"\".padEnd()", name: "pad", }, { @@ -260,12 +260,12 @@ export const es6Rules: (isInEditor: boolean) => Partial = (i "prefer-const": isInEditor ? "off" : [ - "error", - { - destructuring: "any", - ignoreReadBeforeAssign: true, - }, - ], + "error", + { + destructuring: "any", + ignoreReadBeforeAssign: true, + }, + ], // Prefer destructuring from arrays and objects // https://eslint.org/docs/rules/prefer-destructuring diff --git a/packages/eslint-config/src/config/plugins/antfu.ts b/packages/eslint-config/src/config/plugins/antfu.ts index 90fd945c6..b66ed2a90 100644 --- a/packages/eslint-config/src/config/plugins/antfu.ts +++ b/packages/eslint-config/src/config/plugins/antfu.ts @@ -6,12 +6,17 @@ import interopDefault from "../../utils/interop-default"; export default createConfig< OptionsFiles & - OptionsOverrides & - OptionsPackageJson & { - lessOpinionated?: boolean; - } + OptionsOverrides & + OptionsPackageJson & { + lessOpinionated?: boolean; + } >("all", async (config, oFiles) => { - const { files = oFiles, lessOpinionated = false, overrides, packageJson } = config; + const { + files = oFiles, + lessOpinionated = false, + overrides, + packageJson, + } = config; const antfuPlugin = await interopDefault(import("eslint-plugin-antfu")); @@ -36,14 +41,14 @@ export default createConfig< "antfu/prefer-inline-type-import": "off", "antfu/top-level-function": "off", - ...(lessOpinionated + ...lessOpinionated ? { - curly: ["error", "all"], - } + curly: ["error", "all"], + } : { - "antfu/curly": "error", - "antfu/if-newline": "error", - }), + "antfu/curly": "error", + "antfu/if-newline": "error", + }, ...overrides, }, diff --git a/packages/eslint-config/src/config/plugins/astro.ts b/packages/eslint-config/src/config/plugins/astro.ts index 223558f9b..6836382ec 100644 --- a/packages/eslint-config/src/config/plugins/astro.ts +++ b/packages/eslint-config/src/config/plugins/astro.ts @@ -1,4 +1,9 @@ -import type { OptionsFiles, OptionsOverrides, OptionsStylistic, TypedFlatConfigItem } from "../../types"; +import type { + OptionsFiles, + OptionsOverrides, + OptionsStylistic, + TypedFlatConfigItem, +} from "../../types"; import { createConfig } from "../../utils/create-config"; import interopDefault from "../../utils/interop-default"; @@ -48,14 +53,14 @@ export default createConfig( "astro/semi": "off", "astro/valid-compile": "error", - ...(stylistic + ...stylistic ? { - "@stylistic/indent": "off", - "@stylistic/jsx-closing-tag-location": "off", - "@stylistic/jsx-one-expression-per-line": "off", - "@stylistic/no-multiple-empty-lines": "off", - } - : {}), + "@stylistic/indent": "off", + "@stylistic/jsx-closing-tag-location": "off", + "@stylistic/jsx-one-expression-per-line": "off", + "@stylistic/no-multiple-empty-lines": "off", + } + : {}, ...overrides, }, diff --git a/packages/eslint-config/src/config/plugins/formatters.ts b/packages/eslint-config/src/config/plugins/formatters.ts index ac21fc6e8..9d53e1edd 100644 --- a/packages/eslint-config/src/config/plugins/formatters.ts +++ b/packages/eslint-config/src/config/plugins/formatters.ts @@ -9,7 +9,7 @@ const mergePrettierOptions = (options: VendoredPrettierOptions, overrides: Vendo return { ...options, ...overrides, - plugins: [...(overrides.plugins || []), ...(options.plugins || [])], + plugins: [...overrides.plugins || [], ...options.plugins || []], }; }; @@ -197,13 +197,13 @@ const formatters = async (options: OptionsFormatters, stylistic: StylisticConfig "error", formater === "prettier" ? mergePrettierOptions(prettierOptions, { - embeddedLanguageFormatting: "off", - parser: "markdown", - }) + embeddedLanguageFormatting: "off", + parser: "markdown", + }) : { - ...dprintOptions, - language: "markdown", - }, + ...dprintOptions, + language: "markdown", + }, ], }, }); diff --git a/packages/eslint-config/src/config/plugins/html.ts b/packages/eslint-config/src/config/plugins/html.ts index 3016e1b5c..2c122b7ac 100644 --- a/packages/eslint-config/src/config/plugins/html.ts +++ b/packages/eslint-config/src/config/plugins/html.ts @@ -1,9 +1,19 @@ -import type { OptionsFiles, OptionsHasPrettier, OptionsOverrides, OptionsStylistic } from "../../types"; +import type { + OptionsFiles, + OptionsHasPrettier, + OptionsOverrides, + OptionsStylistic, +} from "../../types"; import { createConfig } from "../../utils/create-config"; import interopDefault from "../../utils/interop-default"; export default createConfig("html", async (config, oFiles) => { - const { files = oFiles, overrides, prettier, stylistic = true } = config; + const { + files = oFiles, + overrides, + prettier, + stylistic = true, + } = config; const { indent = 4 } = typeof stylistic === "boolean" ? {} : stylistic; @@ -22,14 +32,14 @@ export default createConfig( "all", async (config, oFiles) => { - const { files = oFiles, overrides, packageJson, stylistic, tsconfigPath } = config; + const { + files = oFiles, + overrides, + packageJson, + stylistic, + tsconfigPath, + } = config; const importPlugin = await interopDefault(import("eslint-plugin-import-x")); @@ -66,21 +72,21 @@ export default createConfig extension.replace("**/*", "")), + "import/extensions": [...getFilesGlobs("js_and_ts"), ...getFilesGlobs("jsx_and_tsx")].map(extension => extension.replace("**/*", "")), // Resolve type definition packages "import/external-module-folders": ["node_modules", "node_modules/@types"], // Apply special parsing for TypeScript files "import/parsers": { - "@typescript-eslint/parser": getFilesGlobs("ts").map((extension) => extension.replace("**/*", "")), + "@typescript-eslint/parser": getFilesGlobs("ts").map(extension => extension.replace("**/*", "")), }, - ...(tsconfigPath + ...tsconfigPath ? { - // Append 'ts' extensions to 'import/resolver' setting - "import/resolver": { - node: true, - typescript: { - // always try to resolve types under `@types` directory even it doesn't contain any source code, like `@types/unist` - alwaysTryTypes: true, - project: tsconfigPath, - }, - }, - } + // Append 'ts' extensions to 'import/resolver' setting + "import/resolver": { + node: true, + typescript: { + // always try to resolve types under `@types` directory even it doesn't contain any source code, like `@types/unist` + alwaysTryTypes: true, + project: tsconfigPath, + }, + }, + } : { - "import/resolver": { - node: true, - // You will also need to install and configure the TypeScript resolver - // See also https://github.com/import-js/eslint-import-resolver-typescript#configuration - typescript: true, - }, - }), + "import/resolver": { + node: true, + // You will also need to install and configure the TypeScript resolver + // See also https://github.com/import-js/eslint-import-resolver-typescript#configuration + typescript: true, + }, + }, }, }); } diff --git a/packages/eslint-config/src/config/plugins/javascript.ts b/packages/eslint-config/src/config/plugins/javascript.ts index 3948358d1..e75d995d8 100644 --- a/packages/eslint-config/src/config/plugins/javascript.ts +++ b/packages/eslint-config/src/config/plugins/javascript.ts @@ -20,19 +20,19 @@ export default createConfig("js", async (config) => { document: "readonly", navigator: "readonly", window: "readonly", - ...(packageJson.type === "module" + ...packageJson.type === "module" ? { - __dirname: "off", - __filename: "off", - exports: "off", - require: "off", - } + __dirname: "off", + __filename: "off", + exports: "off", + require: "off", + } : { - __dirname: true, - __filename: true, - exports: true, - require: true, - }), + __dirname: true, + __filename: true, + exports: true, + require: true, + }, }, parserOptions: { ecmaFeatures: { diff --git a/packages/eslint-config/src/config/plugins/jsdoc.ts b/packages/eslint-config/src/config/plugins/jsdoc.ts index 717a4835e..281c769ed 100644 --- a/packages/eslint-config/src/config/plugins/jsdoc.ts +++ b/packages/eslint-config/src/config/plugins/jsdoc.ts @@ -1,11 +1,22 @@ import { hasPackageJsonAnyDependency } from "@visulima/package"; -import type { OptionsFiles, OptionsPackageJson, OptionsSilentConsoleLogs, OptionsStylistic, TypedFlatConfigItem } from "../../types"; +import type { + OptionsFiles, + OptionsPackageJson, + OptionsSilentConsoleLogs, + OptionsStylistic, + TypedFlatConfigItem, +} from "../../types"; import { createConfig, getFilesGlobs } from "../../utils/create-config"; import interopDefault from "../../utils/interop-default"; export default createConfig("js", async (config, oFiles) => { - const { files = oFiles, packageJson, silent, stylistic = true } = config; + const { + files = oFiles, + packageJson, + silent, + stylistic = true, + } = config; const jsdocPlugin = await interopDefault(import("eslint-plugin-jsdoc")); @@ -30,12 +41,12 @@ export default createConfig => { - const { overrides, packageJson, prettier, silent, stylistic = true } = config; + const { + overrides, + packageJson, + prettier, + silent, + stylistic = true, + } = config; const { indent = 4 } = typeof stylistic === "boolean" ? {} : stylistic; const jsoncPlugin = await interopDefault(import("eslint-plugin-jsonc")); @@ -44,170 +57,170 @@ const jsonc = async ( "jsonc/sort-array-values": hasSortPackageJson ? "off" : [ - "error", - { - order: { type: "asc" }, - pathPattern: "^files$", - }, - ], + "error", + { + order: { type: "asc" }, + pathPattern: "^files$", + }, + ], // When the package "sort-package-json" is installed, we disable the rule "jsonc/sort-keys" because, // the package "sort-package-json" is responsible for sorting the keys. "jsonc/sort-keys": hasSortPackageJson ? "off" : [ - "error", - { - order: [ - "$schema", - "name", - "displayName", - "version", - "private", - "description", - "categories", - "keywords", - "homepage", - "bugs", - "repository", - "funding", - "license", - "qna", - "author", - "maintainers", - "contributors", - "publisher", - "sideEffects", - "type", - "imports", - "exports", - "main", - "svelte", - "umd:main", - "jsdelivr", - "unpkg", - "module", - "source", - "jsnext:main", - "browser", - "react-native", - "types", - "typesVersions", - "typings", - "style", - "example", - "examplestyle", - "assets", - "bin", - "man", - "directories", - "files", - "workspaces", - "binary", - "scripts", - "betterScripts", - "contributes", - "activationEvents", - "husky", - "simple-git-hooks", - "pre-commit", - "commitlint", - "lint-staged", - "nano-staged", - "config", - "nodemonConfig", - "browserify", - "babel", - "browserslist", - "xo", - "prettier", - "eslintConfig", - "eslintIgnore", - "npmpackagejsonlint", - "release", - "remarkConfig", - "stylelint", - "ava", - "jest", - "mocha", - "nyc", - "tap", - "oclif", - "resolutions", - "dependencies", - "devDependencies", - "dependenciesMeta", - "peerDependencies", - "peerDependenciesMeta", - "optionalDependencies", - "bundledDependencies", - "bundleDependencies", - "extensionPack", - "extensionDependencies", - "flat", - "packageManager", - "engines", - "engineStrict", - "volta", - "languageName", - "os", - "cpu", - "preferGlobal", - "publishConfig", - "icon", - "badges", - "galleryBanner", - "preview", - "markdown", - "pnpm", - ], - pathPattern: "^$", - }, - { - order: { type: "asc" }, - pathPattern: "^(?:dev|peer|optional|bundled)?[Dd]ependencies(Meta)?$", - }, - { - order: { type: "asc" }, - pathPattern: "^(?:resolutions|overrides|pnpm.overrides)$", - }, - { - order: ["types", "import", "require", "default"], - pathPattern: "^exports.*$", - }, - { - order: [ - "applypatch-msg", - "pre-applypatch", - "post-applypatch", - "pre-commit", - "pre-merge-commit", - "prepare-commit-msg", - "commit-msg", - "post-commit", - "pre-rebase", - "post-checkout", - "post-merge", - "pre-push", - "pre-receive", - "update", - "post-receive", - "post-update", - "push-to-checkout", - "pre-auto-gc", - "post-rewrite", - "sendemail-validate", - "fsmonitor-watchman", - "p4-pre-submit", - "post-index-chang", - ], - pathPattern: "^(?:gitHooks|husky|simple-git-hooks)$", - }, - { - order: ["build", "preinstall", "install", "postinstall", "lint", { order: { type: "asc" } }], - pathPattern: "^scripts$", - }, - ], + "error", + { + order: [ + "$schema", + "name", + "displayName", + "version", + "private", + "description", + "categories", + "keywords", + "homepage", + "bugs", + "repository", + "funding", + "license", + "qna", + "author", + "maintainers", + "contributors", + "publisher", + "sideEffects", + "type", + "imports", + "exports", + "main", + "svelte", + "umd:main", + "jsdelivr", + "unpkg", + "module", + "source", + "jsnext:main", + "browser", + "react-native", + "types", + "typesVersions", + "typings", + "style", + "example", + "examplestyle", + "assets", + "bin", + "man", + "directories", + "files", + "workspaces", + "binary", + "scripts", + "betterScripts", + "contributes", + "activationEvents", + "husky", + "simple-git-hooks", + "pre-commit", + "commitlint", + "lint-staged", + "nano-staged", + "config", + "nodemonConfig", + "browserify", + "babel", + "browserslist", + "xo", + "prettier", + "eslintConfig", + "eslintIgnore", + "npmpackagejsonlint", + "release", + "remarkConfig", + "stylelint", + "ava", + "jest", + "mocha", + "nyc", + "tap", + "oclif", + "resolutions", + "dependencies", + "devDependencies", + "dependenciesMeta", + "peerDependencies", + "peerDependenciesMeta", + "optionalDependencies", + "bundledDependencies", + "bundleDependencies", + "extensionPack", + "extensionDependencies", + "flat", + "packageManager", + "engines", + "engineStrict", + "volta", + "languageName", + "os", + "cpu", + "preferGlobal", + "publishConfig", + "icon", + "badges", + "galleryBanner", + "preview", + "markdown", + "pnpm", + ], + pathPattern: "^$", + }, + { + order: { type: "asc" }, + pathPattern: "^(?:dev|peer|optional|bundled)?[Dd]ependencies(Meta)?$", + }, + { + order: { type: "asc" }, + pathPattern: "^(?:resolutions|overrides|pnpm.overrides)$", + }, + { + order: ["types", "import", "require", "default"], + pathPattern: "^exports.*$", + }, + { + order: [ + "applypatch-msg", + "pre-applypatch", + "post-applypatch", + "pre-commit", + "pre-merge-commit", + "prepare-commit-msg", + "commit-msg", + "post-commit", + "pre-rebase", + "post-checkout", + "post-merge", + "pre-push", + "pre-receive", + "update", + "post-receive", + "post-update", + "push-to-checkout", + "pre-auto-gc", + "post-rewrite", + "sendemail-validate", + "fsmonitor-watchman", + "p4-pre-submit", + "post-index-chang", + ], + pathPattern: "^(?:gitHooks|husky|simple-git-hooks)$", + }, + { + order: ["build", "preinstall", "install", "postinstall", "lint", { order: { type: "asc" } }], + pathPattern: "^scripts$", + }, + ], }, }, { @@ -327,24 +340,24 @@ const jsonc = async ( ], }, }, - ...(prettier ? jsoncPlugin.configs["flat/prettier"] : []), + ...prettier ? jsoncPlugin.configs["flat/prettier"] : [], { files: ["**/*.json", "**/*.jsonc", "**/*.json5"], rules: { - ...(stylistic + ...stylistic ? { - "jsonc/array-bracket-spacing": ["error", "never"], - "jsonc/comma-dangle": ["error", "never"], - "jsonc/comma-style": ["error", "last"], - "jsonc/indent": ["error", indent], - "jsonc/key-spacing": ["error", { afterColon: true, beforeColon: false }], - "jsonc/object-curly-newline": ["error", { consistent: true, multiline: true }], - "jsonc/object-curly-spacing": ["error", "always"], - "jsonc/object-property-newline": ["error", { allowMultiplePropertiesPerLine: true }], - "jsonc/quote-props": "error", - "jsonc/quotes": "error", - } - : {}), + "jsonc/array-bracket-spacing": ["error", "never"], + "jsonc/comma-dangle": ["error", "never"], + "jsonc/comma-style": ["error", "last"], + "jsonc/indent": ["error", indent], + "jsonc/key-spacing": ["error", { afterColon: true, beforeColon: false }], + "jsonc/object-curly-newline": ["error", { consistent: true, multiline: true }], + "jsonc/object-curly-spacing": ["error", "always"], + "jsonc/object-property-newline": ["error", { allowMultiplePropertiesPerLine: true }], + "jsonc/quote-props": "error", + "jsonc/quotes": "error", + } + : {}, ...overrides, }, diff --git a/packages/eslint-config/src/config/plugins/jsx-a11y.ts b/packages/eslint-config/src/config/plugins/jsx-a11y.ts index 7ba9a0283..00455dfb7 100644 --- a/packages/eslint-config/src/config/plugins/jsx-a11y.ts +++ b/packages/eslint-config/src/config/plugins/jsx-a11y.ts @@ -32,9 +32,9 @@ export default createConfig("jsx_and_tsx", asyn "error", { area: [], - elements: ["img", "object", "area", 'input[type="image"]'], + elements: ["img", "object", "area", "input[type=\"image\"]"], img: [], - 'input[type="image"]': [], + "input[type=\"image\"]": [], object: [], }, ], diff --git a/packages/eslint-config/src/config/plugins/markdown.ts b/packages/eslint-config/src/config/plugins/markdown.ts index a137be0f9..a37243781 100644 --- a/packages/eslint-config/src/config/plugins/markdown.ts +++ b/packages/eslint-config/src/config/plugins/markdown.ts @@ -35,7 +35,7 @@ export default createConfig `**/*.md/**/*.${extension}`)], + files: ["**/*.md/**/*.?([cm])[jt]s?(x)", ...componentExtensions.map(extension => `**/*.md/**/*.${extension}`)], languageOptions: { parserOptions: { ecmaFeatures: { diff --git a/packages/eslint-config/src/config/plugins/node.ts b/packages/eslint-config/src/config/plugins/node.ts index 0490b7bd8..497803111 100644 --- a/packages/eslint-config/src/config/plugins/node.ts +++ b/packages/eslint-config/src/config/plugins/node.ts @@ -88,13 +88,13 @@ export default createConfig("jsx_and_tsx", async (config, oFiles) => { const { @@ -216,24 +216,24 @@ export default createConfig< { allowConstantExport: isAllowConstantExport, allowExportNames: [ - ...(isUsingNext + ...isUsingNext ? [ - "dynamic", - "dynamicParams", - "revalidate", - "fetchCache", - "runtime", - "preferredRegion", - "maxDuration", - "config", - "generateStaticParams", - "metadata", - "generateMetadata", - "viewport", - "generateViewport", - ] - : []), - ...(isUsingRemix || isUsingReactRouter ? ["meta", "links", "headers", "loader", "action"] : []), + "dynamic", + "dynamicParams", + "revalidate", + "fetchCache", + "runtime", + "preferredRegion", + "maxDuration", + "config", + "generateStaticParams", + "metadata", + "generateMetadata", + "viewport", + "generateViewport", + ] + : [], + ...isUsingRemix || isUsingReactRouter ? ["meta", "links", "headers", "loader", "action"] : [], ], }, ], @@ -981,25 +981,25 @@ export default createConfig< // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/void-dom-elements-no-children.md "react/void-dom-elements-no-children": "error", - ...(prettier + ...prettier ? { - "react/jsx-child-element-spacing": "off", - "react/jsx-closing-bracket-location": "off", - "react/jsx-closing-tag-location": "off", - "react/jsx-curly-newline": "off", - "react/jsx-curly-spacing": "off", - "react/jsx-equals-spacing": "off", - "react/jsx-first-prop-new-line": "off", - "react/jsx-indent": "off", - "react/jsx-indent-props": "off", - "react/jsx-max-props-per-line": "off", - "react/jsx-newline": "off", - "react/jsx-one-expression-per-line": "off", - "react/jsx-props-no-multi-spaces": "off", - "react/jsx-tag-spacing": "off", - "react/jsx-wrap-multilines": "off", - } - : {}), + "react/jsx-child-element-spacing": "off", + "react/jsx-closing-bracket-location": "off", + "react/jsx-closing-tag-location": "off", + "react/jsx-curly-newline": "off", + "react/jsx-curly-spacing": "off", + "react/jsx-equals-spacing": "off", + "react/jsx-first-prop-new-line": "off", + "react/jsx-indent": "off", + "react/jsx-indent-props": "off", + "react/jsx-max-props-per-line": "off", + "react/jsx-newline": "off", + "react/jsx-one-expression-per-line": "off", + "react/jsx-props-no-multi-spaces": "off", + "react/jsx-tag-spacing": "off", + "react/jsx-wrap-multilines": "off", + } + : {}, // overrides ...overrides, @@ -1084,17 +1084,17 @@ export default createConfig< "react/jsx-props-no-spreading": "off", }, }, - ...(isTypeAware + ...isTypeAware ? [ - { - files: filesTypeAware, - ignores: ignoresTypeAware, - name: "anolilab/react/type-aware-rules", - rules: { - ...typeAwareRules, - }, - }, - ] - : []), + { + files: filesTypeAware, + ignores: ignoresTypeAware, + name: "anolilab/react/type-aware-rules", + rules: { + ...typeAwareRules, + }, + }, + ] + : [], ]; }); diff --git a/packages/eslint-config/src/config/plugins/regexp.ts b/packages/eslint-config/src/config/plugins/regexp.ts index c9bdc5818..81aaeeffb 100644 --- a/packages/eslint-config/src/config/plugins/regexp.ts +++ b/packages/eslint-config/src/config/plugins/regexp.ts @@ -1,6 +1,11 @@ import { configs } from "eslint-plugin-regexp"; -import type { OptionsFiles, OptionsOverrides, OptionsRegExp, TypedFlatConfigItem } from "../../types"; +import type { + OptionsFiles, + OptionsOverrides, + OptionsRegExp, + TypedFlatConfigItem, +} from "../../types"; import { createConfig } from "../../utils/create-config"; export default createConfig("all", async (config, oFiles) => { diff --git a/packages/eslint-config/src/config/plugins/stylistic.ts b/packages/eslint-config/src/config/plugins/stylistic.ts index 79c66ad00..f6a85032e 100644 --- a/packages/eslint-config/src/config/plugins/stylistic.ts +++ b/packages/eslint-config/src/config/plugins/stylistic.ts @@ -1,4 +1,9 @@ -import type { OptionsHasPrettier, OptionsOverrides, StylisticConfig, TypedFlatConfigItem } from "../../types"; +import type { + OptionsHasPrettier, + OptionsOverrides, + StylisticConfig, + TypedFlatConfigItem, +} from "../../types"; import interopDefault from "../../utils/interop-default"; const specialRule = 0; @@ -229,190 +234,190 @@ const stylistic = async (options: OptionsHasPrettier & OptionsOverrides & Stylis ...overrides, - ...(prettier + ...prettier ? { - "@stylistic/array-bracket-newline": "off", - "@stylistic/array-bracket-spacing": "off", - "@stylistic/array-element-newline": "off", - "@stylistic/arrow-parens": "off", - "@stylistic/arrow-spacing": "off", - "@stylistic/block-spacing": "off", - "@stylistic/brace-style": "off", - "@stylistic/comma-dangle": "off", - "@stylistic/comma-spacing": "off", - "@stylistic/comma-style": "off", - "@stylistic/computed-property-spacing": "off", - "@stylistic/dot-location": "off", - "@stylistic/eol-last": "off", - "@stylistic/func-call-spacing": "off", - "@stylistic/function-call-argument-newline": "off", - "@stylistic/function-call-spacing": "off", - "@stylistic/function-paren-newline": "off", - "@stylistic/generator-star-spacing": "off", - "@stylistic/implicit-arrow-linebreak": "off", - "@stylistic/indent": "off", - "@stylistic/indent-binary-ops": "off", - "@stylistic/js/array-bracket-newline": "off", - "@stylistic/js/array-bracket-spacing": "off", - "@stylistic/js/array-element-newline": "off", - "@stylistic/js/arrow-parens": "off", - "@stylistic/js/arrow-spacing": "off", - "@stylistic/js/block-spacing": "off", - "@stylistic/js/brace-style": "off", - "@stylistic/js/comma-dangle": "off", - "@stylistic/js/comma-spacing": "off", - "@stylistic/js/comma-style": "off", - "@stylistic/js/computed-property-spacing": "off", - "@stylistic/js/dot-location": "off", - "@stylistic/js/eol-last": "off", - "@stylistic/js/func-call-spacing": "off", - "@stylistic/js/function-call-argument-newline": "off", - "@stylistic/js/function-call-spacing": "off", - "@stylistic/js/function-paren-newline": "off", - "@stylistic/js/generator-star-spacing": "off", - "@stylistic/js/implicit-arrow-linebreak": "off", - "@stylistic/js/indent": "off", - "@stylistic/js/jsx-quotes": "off", - "@stylistic/js/key-spacing": "off", - "@stylistic/js/keyword-spacing": "off", - "@stylistic/js/linebreak-style": "off", - "@stylistic/js/lines-around-comment": specialRule, - "@stylistic/js/max-len": specialRule, - "@stylistic/js/max-statements-per-line": "off", - "@stylistic/js/multiline-ternary": "off", - "@stylistic/js/new-parens": "off", - "@stylistic/js/newline-per-chained-call": "off", - "@stylistic/js/no-confusing-arrow": specialRule, - "@stylistic/js/no-extra-parens": "off", - "@stylistic/js/no-extra-semi": "off", - "@stylistic/js/no-floating-decimal": "off", - "@stylistic/js/no-mixed-operators": specialRule, - "@stylistic/js/no-mixed-spaces-and-tabs": "off", - "@stylistic/js/no-multi-spaces": "off", - "@stylistic/js/no-multiple-empty-lines": "off", - "@stylistic/js/no-tabs": specialRule, - "@stylistic/js/no-trailing-spaces": "off", - "@stylistic/js/no-whitespace-before-property": "off", - "@stylistic/js/nonblock-statement-body-position": "off", - "@stylistic/js/object-curly-newline": "off", - "@stylistic/js/object-curly-spacing": "off", - "@stylistic/js/object-property-newline": "off", - "@stylistic/js/one-var-declaration-per-line": "off", - "@stylistic/js/operator-linebreak": "off", - "@stylistic/js/padded-blocks": "off", - "@stylistic/js/quote-props": "off", - "@stylistic/js/quotes": specialRule, - "@stylistic/js/rest-spread-spacing": "off", - "@stylistic/js/semi": "off", - "@stylistic/js/semi-spacing": "off", - "@stylistic/js/semi-style": "off", - "@stylistic/js/space-before-blocks": "off", - "@stylistic/js/space-before-function-paren": "off", - "@stylistic/js/space-in-parens": "off", - "@stylistic/js/space-infix-ops": "off", - "@stylistic/js/space-unary-ops": "off", - "@stylistic/js/switch-colon-spacing": "off", - "@stylistic/js/template-curly-spacing": "off", - "@stylistic/js/template-tag-spacing": "off", - "@stylistic/js/wrap-iife": "off", - "@stylistic/js/wrap-regex": "off", - "@stylistic/js/yield-star-spacing": "off", - "@stylistic/jsx-child-element-spacing": "off", - "@stylistic/jsx-closing-bracket-location": "off", - "@stylistic/jsx-closing-tag-location": "off", - "@stylistic/jsx-curly-newline": "off", - "@stylistic/jsx-curly-spacing": "off", - "@stylistic/jsx-equals-spacing": "off", - "@stylistic/jsx-first-prop-new-line": "off", - "@stylistic/jsx-indent": "off", - "@stylistic/jsx-indent-props": "off", - "@stylistic/jsx-max-props-per-line": "off", - "@stylistic/jsx-newline": "off", - "@stylistic/jsx-one-expression-per-line": "off", - "@stylistic/jsx-props-no-multi-spaces": "off", - "@stylistic/jsx-quotes": "off", - "@stylistic/jsx-tag-spacing": "off", - "@stylistic/jsx-wrap-multilines": "off", - "@stylistic/jsx/jsx-child-element-spacing": "off", - "@stylistic/jsx/jsx-closing-bracket-location": "off", - "@stylistic/jsx/jsx-closing-tag-location": "off", - "@stylistic/jsx/jsx-curly-newline": "off", - "@stylistic/jsx/jsx-curly-spacing": "off", - "@stylistic/jsx/jsx-equals-spacing": "off", - "@stylistic/jsx/jsx-first-prop-new-line": "off", - "@stylistic/jsx/jsx-indent": "off", - "@stylistic/jsx/jsx-indent-props": "off", - "@stylistic/jsx/jsx-max-props-per-line": "off", - "@stylistic/key-spacing": "off", - "@stylistic/keyword-spacing": "off", - "@stylistic/linebreak-style": "off", - "@stylistic/lines-around-comment": specialRule, - "@stylistic/max-len": specialRule, - "@stylistic/max-statements-per-line": "off", - "@stylistic/member-delimiter-style": "off", - "@stylistic/multiline-ternary": "off", - "@stylistic/new-parens": "off", - "@stylistic/newline-per-chained-call": "off", - "@stylistic/no-confusing-arrow": specialRule, - "@stylistic/no-extra-parens": "off", - "@stylistic/no-extra-semi": "off", - "@stylistic/no-floating-decimal": "off", - "@stylistic/no-mixed-operators": specialRule, - "@stylistic/no-mixed-spaces-and-tabs": "off", - "@stylistic/no-multi-spaces": "off", - "@stylistic/no-multiple-empty-lines": "off", - "@stylistic/no-tabs": specialRule, - "@stylistic/no-trailing-spaces": "off", - "@stylistic/no-whitespace-before-property": "off", - "@stylistic/nonblock-statement-body-position": "off", - "@stylistic/object-curly-newline": "off", - "@stylistic/object-curly-spacing": "off", - "@stylistic/object-property-newline": "off", - "@stylistic/one-var-declaration-per-line": "off", - "@stylistic/operator-linebreak": "off", - "@stylistic/padded-blocks": "off", - "@stylistic/quote-props": "off", - "@stylistic/quotes": specialRule, - "@stylistic/rest-spread-spacing": "off", - "@stylistic/semi": "off", - "@stylistic/semi-spacing": "off", - "@stylistic/semi-style": "off", - "@stylistic/space-before-blocks": "off", - "@stylistic/space-before-function-paren": "off", - "@stylistic/space-in-parens": "off", - "@stylistic/space-infix-ops": "off", - "@stylistic/space-unary-ops": "off", - "@stylistic/switch-colon-spacing": "off", - "@stylistic/template-curly-spacing": "off", - "@stylistic/template-tag-spacing": "off", - "@stylistic/ts/block-spacing": "off", - "@stylistic/ts/brace-style": "off", - "@stylistic/ts/comma-dangle": "off", - "@stylistic/ts/comma-spacing": "off", - "@stylistic/ts/func-call-spacing": "off", - "@stylistic/ts/function-call-spacing": "off", - "@stylistic/ts/indent": "off", - "@stylistic/ts/key-spacing": "off", - "@stylistic/ts/keyword-spacing": "off", - "@stylistic/ts/lines-around-comment": specialRule, - "@stylistic/ts/member-delimiter-style": "off", - "@stylistic/ts/no-extra-parens": "off", - "@stylistic/ts/no-extra-semi": "off", - "@stylistic/ts/object-curly-spacing": "off", - "@stylistic/ts/quotes": specialRule, - "@stylistic/ts/semi": "off", - "@stylistic/ts/space-before-blocks": "off", - "@stylistic/ts/space-before-function-paren": "off", - "@stylistic/ts/space-infix-ops": "off", - "@stylistic/ts/type-annotation-spacing": "off", - "@stylistic/type-annotation-spacing": "off", - "@stylistic/type-generic-spacing": "off", - "@stylistic/type-named-tuple-spacing": "off", - "@stylistic/wrap-iife": "off", - "@stylistic/wrap-regex": "off", - "@stylistic/yield-star-spacing": "off", - } - : {}), + "@stylistic/array-bracket-newline": "off", + "@stylistic/array-bracket-spacing": "off", + "@stylistic/array-element-newline": "off", + "@stylistic/arrow-parens": "off", + "@stylistic/arrow-spacing": "off", + "@stylistic/block-spacing": "off", + "@stylistic/brace-style": "off", + "@stylistic/comma-dangle": "off", + "@stylistic/comma-spacing": "off", + "@stylistic/comma-style": "off", + "@stylistic/computed-property-spacing": "off", + "@stylistic/dot-location": "off", + "@stylistic/eol-last": "off", + "@stylistic/func-call-spacing": "off", + "@stylistic/function-call-argument-newline": "off", + "@stylistic/function-call-spacing": "off", + "@stylistic/function-paren-newline": "off", + "@stylistic/generator-star-spacing": "off", + "@stylistic/implicit-arrow-linebreak": "off", + "@stylistic/indent": "off", + "@stylistic/indent-binary-ops": "off", + "@stylistic/js/array-bracket-newline": "off", + "@stylistic/js/array-bracket-spacing": "off", + "@stylistic/js/array-element-newline": "off", + "@stylistic/js/arrow-parens": "off", + "@stylistic/js/arrow-spacing": "off", + "@stylistic/js/block-spacing": "off", + "@stylistic/js/brace-style": "off", + "@stylistic/js/comma-dangle": "off", + "@stylistic/js/comma-spacing": "off", + "@stylistic/js/comma-style": "off", + "@stylistic/js/computed-property-spacing": "off", + "@stylistic/js/dot-location": "off", + "@stylistic/js/eol-last": "off", + "@stylistic/js/func-call-spacing": "off", + "@stylistic/js/function-call-argument-newline": "off", + "@stylistic/js/function-call-spacing": "off", + "@stylistic/js/function-paren-newline": "off", + "@stylistic/js/generator-star-spacing": "off", + "@stylistic/js/implicit-arrow-linebreak": "off", + "@stylistic/js/indent": "off", + "@stylistic/js/jsx-quotes": "off", + "@stylistic/js/key-spacing": "off", + "@stylistic/js/keyword-spacing": "off", + "@stylistic/js/linebreak-style": "off", + "@stylistic/js/lines-around-comment": specialRule, + "@stylistic/js/max-len": specialRule, + "@stylistic/js/max-statements-per-line": "off", + "@stylistic/js/multiline-ternary": "off", + "@stylistic/js/new-parens": "off", + "@stylistic/js/newline-per-chained-call": "off", + "@stylistic/js/no-confusing-arrow": specialRule, + "@stylistic/js/no-extra-parens": "off", + "@stylistic/js/no-extra-semi": "off", + "@stylistic/js/no-floating-decimal": "off", + "@stylistic/js/no-mixed-operators": specialRule, + "@stylistic/js/no-mixed-spaces-and-tabs": "off", + "@stylistic/js/no-multi-spaces": "off", + "@stylistic/js/no-multiple-empty-lines": "off", + "@stylistic/js/no-tabs": specialRule, + "@stylistic/js/no-trailing-spaces": "off", + "@stylistic/js/no-whitespace-before-property": "off", + "@stylistic/js/nonblock-statement-body-position": "off", + "@stylistic/js/object-curly-newline": "off", + "@stylistic/js/object-curly-spacing": "off", + "@stylistic/js/object-property-newline": "off", + "@stylistic/js/one-var-declaration-per-line": "off", + "@stylistic/js/operator-linebreak": "off", + "@stylistic/js/padded-blocks": "off", + "@stylistic/js/quote-props": "off", + "@stylistic/js/quotes": specialRule, + "@stylistic/js/rest-spread-spacing": "off", + "@stylistic/js/semi": "off", + "@stylistic/js/semi-spacing": "off", + "@stylistic/js/semi-style": "off", + "@stylistic/js/space-before-blocks": "off", + "@stylistic/js/space-before-function-paren": "off", + "@stylistic/js/space-in-parens": "off", + "@stylistic/js/space-infix-ops": "off", + "@stylistic/js/space-unary-ops": "off", + "@stylistic/js/switch-colon-spacing": "off", + "@stylistic/js/template-curly-spacing": "off", + "@stylistic/js/template-tag-spacing": "off", + "@stylistic/js/wrap-iife": "off", + "@stylistic/js/wrap-regex": "off", + "@stylistic/js/yield-star-spacing": "off", + "@stylistic/jsx-child-element-spacing": "off", + "@stylistic/jsx-closing-bracket-location": "off", + "@stylistic/jsx-closing-tag-location": "off", + "@stylistic/jsx-curly-newline": "off", + "@stylistic/jsx-curly-spacing": "off", + "@stylistic/jsx-equals-spacing": "off", + "@stylistic/jsx-first-prop-new-line": "off", + "@stylistic/jsx-indent": "off", + "@stylistic/jsx-indent-props": "off", + "@stylistic/jsx-max-props-per-line": "off", + "@stylistic/jsx-newline": "off", + "@stylistic/jsx-one-expression-per-line": "off", + "@stylistic/jsx-props-no-multi-spaces": "off", + "@stylistic/jsx-quotes": "off", + "@stylistic/jsx-tag-spacing": "off", + "@stylistic/jsx-wrap-multilines": "off", + "@stylistic/jsx/jsx-child-element-spacing": "off", + "@stylistic/jsx/jsx-closing-bracket-location": "off", + "@stylistic/jsx/jsx-closing-tag-location": "off", + "@stylistic/jsx/jsx-curly-newline": "off", + "@stylistic/jsx/jsx-curly-spacing": "off", + "@stylistic/jsx/jsx-equals-spacing": "off", + "@stylistic/jsx/jsx-first-prop-new-line": "off", + "@stylistic/jsx/jsx-indent": "off", + "@stylistic/jsx/jsx-indent-props": "off", + "@stylistic/jsx/jsx-max-props-per-line": "off", + "@stylistic/key-spacing": "off", + "@stylistic/keyword-spacing": "off", + "@stylistic/linebreak-style": "off", + "@stylistic/lines-around-comment": specialRule, + "@stylistic/max-len": specialRule, + "@stylistic/max-statements-per-line": "off", + "@stylistic/member-delimiter-style": "off", + "@stylistic/multiline-ternary": "off", + "@stylistic/new-parens": "off", + "@stylistic/newline-per-chained-call": "off", + "@stylistic/no-confusing-arrow": specialRule, + "@stylistic/no-extra-parens": "off", + "@stylistic/no-extra-semi": "off", + "@stylistic/no-floating-decimal": "off", + "@stylistic/no-mixed-operators": specialRule, + "@stylistic/no-mixed-spaces-and-tabs": "off", + "@stylistic/no-multi-spaces": "off", + "@stylistic/no-multiple-empty-lines": "off", + "@stylistic/no-tabs": specialRule, + "@stylistic/no-trailing-spaces": "off", + "@stylistic/no-whitespace-before-property": "off", + "@stylistic/nonblock-statement-body-position": "off", + "@stylistic/object-curly-newline": "off", + "@stylistic/object-curly-spacing": "off", + "@stylistic/object-property-newline": "off", + "@stylistic/one-var-declaration-per-line": "off", + "@stylistic/operator-linebreak": "off", + "@stylistic/padded-blocks": "off", + "@stylistic/quote-props": "off", + "@stylistic/quotes": specialRule, + "@stylistic/rest-spread-spacing": "off", + "@stylistic/semi": "off", + "@stylistic/semi-spacing": "off", + "@stylistic/semi-style": "off", + "@stylistic/space-before-blocks": "off", + "@stylistic/space-before-function-paren": "off", + "@stylistic/space-in-parens": "off", + "@stylistic/space-infix-ops": "off", + "@stylistic/space-unary-ops": "off", + "@stylistic/switch-colon-spacing": "off", + "@stylistic/template-curly-spacing": "off", + "@stylistic/template-tag-spacing": "off", + "@stylistic/ts/block-spacing": "off", + "@stylistic/ts/brace-style": "off", + "@stylistic/ts/comma-dangle": "off", + "@stylistic/ts/comma-spacing": "off", + "@stylistic/ts/func-call-spacing": "off", + "@stylistic/ts/function-call-spacing": "off", + "@stylistic/ts/indent": "off", + "@stylistic/ts/key-spacing": "off", + "@stylistic/ts/keyword-spacing": "off", + "@stylistic/ts/lines-around-comment": specialRule, + "@stylistic/ts/member-delimiter-style": "off", + "@stylistic/ts/no-extra-parens": "off", + "@stylistic/ts/no-extra-semi": "off", + "@stylistic/ts/object-curly-spacing": "off", + "@stylistic/ts/quotes": specialRule, + "@stylistic/ts/semi": "off", + "@stylistic/ts/space-before-blocks": "off", + "@stylistic/ts/space-before-function-paren": "off", + "@stylistic/ts/space-infix-ops": "off", + "@stylistic/ts/type-annotation-spacing": "off", + "@stylistic/type-annotation-spacing": "off", + "@stylistic/type-generic-spacing": "off", + "@stylistic/type-named-tuple-spacing": "off", + "@stylistic/wrap-iife": "off", + "@stylistic/wrap-regex": "off", + "@stylistic/yield-star-spacing": "off", + } + : {}, }, }, ]; diff --git a/packages/eslint-config/src/config/plugins/testing-library.ts b/packages/eslint-config/src/config/plugins/testing-library.ts index 111d174d8..cdb80c49b 100644 --- a/packages/eslint-config/src/config/plugins/testing-library.ts +++ b/packages/eslint-config/src/config/plugins/testing-library.ts @@ -19,7 +19,7 @@ export default createConfig( toml: pluginToml, }, rules: { - ...(stylistic ? { "@stylistic/spaced-comment": "off" } : {}), + ...stylistic ? { "@stylistic/spaced-comment": "off" } : {}, "toml/comma-style": "error", "toml/keys-order": "error", @@ -32,21 +32,21 @@ export default createConfig( "toml/vue-custom-block/no-parsing-error": "error", - ...(stylistic + ...stylistic ? { - "toml/array-bracket-newline": "error", - "toml/array-bracket-spacing": "error", - "toml/array-element-newline": "error", - "toml/indent": ["error", indent === "tab" ? 2 : indent], - "toml/inline-table-curly-spacing": "error", - "toml/key-spacing": "error", - "toml/padding-line-between-pairs": "error", - "toml/padding-line-between-tables": "error", - "toml/quoted-keys": "error", - "toml/spaced-comment": "error", - "toml/table-bracket-spacing": "error", - } - : {}), + "toml/array-bracket-newline": "error", + "toml/array-bracket-spacing": "error", + "toml/array-element-newline": "error", + "toml/indent": ["error", indent === "tab" ? 2 : indent], + "toml/inline-table-curly-spacing": "error", + "toml/key-spacing": "error", + "toml/padding-line-between-pairs": "error", + "toml/padding-line-between-tables": "error", + "toml/quoted-keys": "error", + "toml/spaced-comment": "error", + "toml/table-bracket-spacing": "error", + } + : {}, ...overrides, }, diff --git a/packages/eslint-config/src/config/plugins/typescript.ts b/packages/eslint-config/src/config/plugins/typescript.ts index 7b6fbeed1..b11dcf246 100644 --- a/packages/eslint-config/src/config/plugins/typescript.ts +++ b/packages/eslint-config/src/config/plugins/typescript.ts @@ -20,13 +20,13 @@ import { variablesRules } from "../variables"; export default createConfig< OptionsComponentExtensions & - OptionsFiles & - OptionsHasPrettier & - OptionsIsInEditor & - OptionsOverrides & - OptionsStylistic & - OptionsTypeScriptParserOptions & - OptionsTypeScriptWithTypes + OptionsFiles & + OptionsHasPrettier & + OptionsIsInEditor & + OptionsOverrides & + OptionsStylistic & + OptionsTypeScriptParserOptions & + OptionsTypeScriptWithTypes >("ts", async (config, oFiles) => { const { componentExts: componentExtensions = [], @@ -55,22 +55,22 @@ export default createConfig< const makeParser = (typeAware: boolean, pFiles: string[], ignores?: string[]): TypedFlatConfigItem => { return { - files: [...pFiles, ...componentExtensions.map((extension) => `**/*.${extension}`)], - ...(ignores ? { ignores } : {}), + files: [...pFiles, ...componentExtensions.map(extension => `**/*.${extension}`)], + ...ignores ? { ignores } : {}, languageOptions: { parser: parserTs, parserOptions: { - extraFileExtensions: componentExtensions.map((extension) => `.${extension}`), + extraFileExtensions: componentExtensions.map(extension => `.${extension}`), sourceType: "module", - ...(typeAware + ...typeAware ? { - projectService: { - allowDefaultProject: ["./*.js"], - defaultProject: tsconfigPath, - }, - tsconfigRootDir: process.cwd(), - } - : {}), + projectService: { + allowDefaultProject: ["./*.js"], + defaultProject: tsconfigPath, + }, + tsconfigRootDir: process.cwd(), + } + : {}, // eslint-disable-next-line @typescript-eslint/no-explicit-any ...(parserOptions as any), }, @@ -89,7 +89,7 @@ export default createConfig< }, }, // assign type-aware parser for type-aware files and type-unaware parser for the rest - ...(isTypeAware ? [makeParser(false, files), makeParser(true, filesTypeAware, ignoresTypeAware)] : [makeParser(false, files)]), + ...isTypeAware ? [makeParser(false, files), makeParser(true, filesTypeAware, ignoresTypeAware)] : [makeParser(false, files)], ...(tseslint.configs.strict as TypedFlatConfigItem[]), ]; @@ -97,7 +97,7 @@ export default createConfig< rules.push( ...(tseslint.configs.strictTypeCheckedOnly as TypedFlatConfigItem[]), { - files: [...filesTypeAware, ...componentExtensions.map((extension) => `**/*.${extension}`)], + files: [...filesTypeAware, ...componentExtensions.map(extension => `**/*.${extension}`)], name: "anolilab/typescript/rules-type-aware", rules: { // Disallow type assertions that do not change the type of expression. @@ -418,29 +418,29 @@ export default createConfig< ...overrides, // Disable rules that are handled by prettier - ...(prettier + ...prettier ? { - "@typescript-eslint/block-spacing": "off", - "@typescript-eslint/brace-style": "off", - "@typescript-eslint/comma-dangle": "off", - "@typescript-eslint/comma-spacing": "off", - "@typescript-eslint/func-call-spacing": "off", - "@typescript-eslint/indent": "off", - "@typescript-eslint/key-spacing": "off", - "@typescript-eslint/keyword-spacing": "off", - "@typescript-eslint/lines-around-comment": 0, - "@typescript-eslint/member-delimiter-style": "off", - "@typescript-eslint/no-extra-parens": "off", - "@typescript-eslint/no-extra-semi": "off", - "@typescript-eslint/object-curly-spacing": "off", - "@typescript-eslint/quotes": 0, - "@typescript-eslint/semi": "off", - "@typescript-eslint/space-before-blocks": "off", - "@typescript-eslint/space-before-function-paren": "off", - "@typescript-eslint/space-infix-ops": "off", - "@typescript-eslint/type-annotation-spacing": "off", - } - : {}), + "@typescript-eslint/block-spacing": "off", + "@typescript-eslint/brace-style": "off", + "@typescript-eslint/comma-dangle": "off", + "@typescript-eslint/comma-spacing": "off", + "@typescript-eslint/func-call-spacing": "off", + "@typescript-eslint/indent": "off", + "@typescript-eslint/key-spacing": "off", + "@typescript-eslint/keyword-spacing": "off", + "@typescript-eslint/lines-around-comment": 0, + "@typescript-eslint/member-delimiter-style": "off", + "@typescript-eslint/no-extra-parens": "off", + "@typescript-eslint/no-extra-semi": "off", + "@typescript-eslint/object-curly-spacing": "off", + "@typescript-eslint/quotes": 0, + "@typescript-eslint/semi": "off", + "@typescript-eslint/space-before-blocks": "off", + "@typescript-eslint/space-before-function-paren": "off", + "@typescript-eslint/space-infix-ops": "off", + "@typescript-eslint/type-annotation-spacing": "off", + } + : {}, }, }); diff --git a/packages/eslint-config/src/config/plugins/unicorn.ts b/packages/eslint-config/src/config/plugins/unicorn.ts index 1e2336ff1..8bae748da 100644 --- a/packages/eslint-config/src/config/plugins/unicorn.ts +++ b/packages/eslint-config/src/config/plugins/unicorn.ts @@ -1,11 +1,23 @@ import globals from "globals"; -import type { OptionsFiles, OptionsHasPrettier, OptionsOverrides, OptionsPackageJson, OptionsStylistic } from "../../types"; +import type { + OptionsFiles, + OptionsHasPrettier, + OptionsOverrides, + OptionsPackageJson, + OptionsStylistic, +} from "../../types"; import { createConfig } from "../../utils/create-config"; import interopDefault from "../../utils/interop-default"; export default createConfig("all", async (config, oFiles) => { - const { files = oFiles, overrides, packageJson, prettier, stylistic = true } = config; + const { + files = oFiles, + overrides, + packageJson, + prettier, + stylistic = true, + } = config; const { indent = 4 } = typeof stylistic === "boolean" ? {} : stylistic; @@ -62,16 +74,16 @@ export default createConfig => }, rules: { "unocss/order": "warn", - ...(attributify + ...attributify ? { - "unocss/order-attributify": "warn", - } - : {}), - ...(strict + "unocss/order-attributify": "warn", + } + : {}, + ...strict ? { - "unocss/blocklist": "error", - } - : {}), + "unocss/blocklist": "error", + } + : {}, }, }, ]; diff --git a/packages/eslint-config/src/config/plugins/vitest.ts b/packages/eslint-config/src/config/plugins/vitest.ts index b7744a850..3c883791b 100644 --- a/packages/eslint-config/src/config/plugins/vitest.ts +++ b/packages/eslint-config/src/config/plugins/vitest.ts @@ -1,4 +1,10 @@ -import type { OptionsFiles, OptionsHasPrettier, OptionsIsInEditor, OptionsOverrides, OptionsTypeScriptWithTypes } from "../../types"; +import type { + OptionsFiles, + OptionsHasPrettier, + OptionsIsInEditor, + OptionsOverrides, + OptionsTypeScriptWithTypes, +} from "../../types"; import { createConfig } from "../../utils/create-config"; import interopDefault from "../../utils/interop-default"; import vitestGlobals from "../../utils/vitest-globals"; @@ -10,7 +16,13 @@ let pluginTest: any; export default createConfig( "vitest", async (config, oFiles) => { - const { files = oFiles, isInEditor = false, overrides, prettier, tsconfigPath } = config; + const { + files = oFiles, + isInEditor = false, + overrides, + prettier, + tsconfigPath, + } = config; const [vitestPlugin, noOnlyTestsPlugin] = await Promise.all([ interopDefault(import("@vitest/eslint-plugin")), @@ -36,16 +48,16 @@ export default createConfig("yaml", async (options, oFiles) => { - const { files = oFiles, overrides = {}, prettier, stylistic = true } = options; + const { + files = oFiles, + overrides = {}, + prettier, + stylistic = true, + } = options; const { indent = 4, quotes = "double" } = typeof stylistic === "boolean" ? {} : stylistic; @@ -31,23 +41,23 @@ export default createConfig = { }, { message: "Use `.toString()` instead of template literal if you want to convert a value to string.", - selector: 'TemplateLiteral[quasis.0.value.raw=""][quasis.1.tail=true][quasis.1.value.raw=""]', + selector: "TemplateLiteral[quasis.0.value.raw=\"\"][quasis.1.tail=true][quasis.1.value.raw=\"\"]", }, ], @@ -517,77 +517,77 @@ export default createConfig("all", async (con ...styleRules, "quote-props": "off", - ...(prettier + ...prettier ? { - // The rest are rules that you never need to enable when using Prettier. - "array-bracket-newline": "off", - "array-bracket-spacing": "off", - "array-element-newline": "off", - "arrow-parens": "off", - "arrow-spacing": "off", - "block-spacing": "off", - "brace-style": "off", - "comma-dangle": "off", - - "comma-spacing": "off", - "comma-style": "off", - "computed-property-spacing": "off", - // script can distinguish them. - curly: 0, - "dot-location": "off", - "eol-last": "off", - "func-call-spacing": "off", - "function-call-argument-newline": "off", - "function-paren-newline": "off", - "generator-star-spacing": "off", - "implicit-arrow-linebreak": "off", - indent: "off", - "jsx-quotes": "off", - "key-spacing": "off", - "keyword-spacing": "off", - "linebreak-style": "off", - "lines-around-comment": 0, - "max-len": 0, - "max-statements-per-line": "off", - "multiline-ternary": "off", - "new-parens": "off", - "newline-per-chained-call": "off", - "no-confusing-arrow": 0, - "no-extra-parens": "off", - "no-extra-semi": "off", - "no-floating-decimal": "off", - "no-mixed-operators": 0, - "no-mixed-spaces-and-tabs": "off", - "no-multi-spaces": "off", - "no-multiple-empty-lines": "off", - "no-tabs": 0, - "no-trailing-spaces": "off", - "no-unexpected-multiline": 0, - "no-whitespace-before-property": "off", - "nonblock-statement-body-position": "off", - "object-curly-newline": "off", - "object-curly-spacing": "off", - "object-property-newline": "off", - "one-var-declaration-per-line": "off", - "operator-linebreak": "off", - "padded-blocks": "off", - quotes: 0, - "rest-spread-spacing": "off", - semi: "off", - "semi-spacing": "off", - "semi-style": "off", - "space-before-blocks": "off", - "space-before-function-paren": "off", - "space-in-parens": "off", - "space-unary-ops": "off", - "switch-colon-spacing": "off", - "template-curly-spacing": "off", - "template-tag-spacing": "off", - "wrap-iife": "off", - "wrap-regex": "off", - "yield-star-spacing": "off", - } - : {}), + // The rest are rules that you never need to enable when using Prettier. + "array-bracket-newline": "off", + "array-bracket-spacing": "off", + "array-element-newline": "off", + "arrow-parens": "off", + "arrow-spacing": "off", + "block-spacing": "off", + "brace-style": "off", + "comma-dangle": "off", + + "comma-spacing": "off", + "comma-style": "off", + "computed-property-spacing": "off", + // script can distinguish them. + curly: 0, + "dot-location": "off", + "eol-last": "off", + "func-call-spacing": "off", + "function-call-argument-newline": "off", + "function-paren-newline": "off", + "generator-star-spacing": "off", + "implicit-arrow-linebreak": "off", + indent: "off", + "jsx-quotes": "off", + "key-spacing": "off", + "keyword-spacing": "off", + "linebreak-style": "off", + "lines-around-comment": 0, + "max-len": 0, + "max-statements-per-line": "off", + "multiline-ternary": "off", + "new-parens": "off", + "newline-per-chained-call": "off", + "no-confusing-arrow": 0, + "no-extra-parens": "off", + "no-extra-semi": "off", + "no-floating-decimal": "off", + "no-mixed-operators": 0, + "no-mixed-spaces-and-tabs": "off", + "no-multi-spaces": "off", + "no-multiple-empty-lines": "off", + "no-tabs": 0, + "no-trailing-spaces": "off", + "no-unexpected-multiline": 0, + "no-whitespace-before-property": "off", + "nonblock-statement-body-position": "off", + "object-curly-newline": "off", + "object-curly-spacing": "off", + "object-property-newline": "off", + "one-var-declaration-per-line": "off", + "operator-linebreak": "off", + "padded-blocks": "off", + quotes: 0, + "rest-spread-spacing": "off", + semi: "off", + "semi-spacing": "off", + "semi-style": "off", + "space-before-blocks": "off", + "space-before-function-paren": "off", + "space-in-parens": "off", + "space-unary-ops": "off", + "switch-colon-spacing": "off", + "template-curly-spacing": "off", + "template-tag-spacing": "off", + "wrap-iife": "off", + "wrap-regex": "off", + "yield-star-spacing": "off", + } + : {}, }, }, { diff --git a/packages/eslint-config/src/index.ts b/packages/eslint-config/src/index.ts index 240e5062f..f4cec85ff 100644 --- a/packages/eslint-config/src/index.ts +++ b/packages/eslint-config/src/index.ts @@ -49,7 +49,15 @@ import zod from "./config/plugins/zod"; import style from "./config/style"; import variables from "./config/variables"; import type { RuleOptions } from "./typegen"; -import type { Awaitable, ConfigNames, OptionsConfig, OptionsFiles, OptionsOverrides, StylisticConfig, TypedFlatConfigItem } from "./types"; +import type { + Awaitable, + ConfigNames, + OptionsConfig, + OptionsFiles, + OptionsOverrides, + StylisticConfig, + TypedFlatConfigItem, +} from "./types"; import { getFilesGlobs } from "./utils/create-config"; import interopDefault from "./utils/interop-default"; import isInEditorEnvironment from "./utils/is-in-editor-environment"; @@ -69,7 +77,7 @@ export const getOverrides = (options: OptionsConf return { // eslint-disable-next-line @typescript-eslint/no-explicit-any ...(options.overrides as any)?.[key], - ...("overrides" in sub ? sub.overrides : {}), + ..."overrides" in sub ? sub.overrides : {}, }; }; @@ -104,7 +112,7 @@ export const createConfig = async ( ): Promise> => { if ("files" in options) { throw new Error( - '[@anolilab/eslint-config] The first argument should not contain the "files" property as the options are supposed to be global. Place it in the second or later config instead.', + "[@anolilab/eslint-config] The first argument should not contain the \"files\" property as the options are supposed to be global. Place it in the second or later config instead.", ); } @@ -521,8 +529,7 @@ export const createConfig = async ( await ensurePackages(packageJson, packages, "devDependencies", { confirm: { - message: (list: string[]) => - `@anolilab/eslint-config requires the following ${list.length === 1 ? "package" : "packages"} to be installed: \n\n"${list.join('"\n"')}"\n\nfor the ESLint configurations to work correctly. Do you want to install ${packages.length === 1 ? "it" : "them"} now?`, + message: (list: string[]) => `@anolilab/eslint-config requires the following ${list.length === 1 ? "package" : "packages"} to be installed: \n\n"${list.join("\"\n\"")}"\n\nfor the ESLint configurations to work correctly. Do you want to install ${packages.length === 1 ? "it" : "them"} now?`, }, }); } @@ -555,7 +562,7 @@ export const createConfig = async ( if (enableGitignore) { if (typeof enableGitignore === "boolean") { configs.push( - interopDefault(import("eslint-config-flat-gitignore")).then((r) => [ + interopDefault(import("eslint-config-flat-gitignore")).then(r => [ r({ name: "anolilab/gitignore", strict: false, @@ -564,7 +571,7 @@ export const createConfig = async ( ); } else { configs.push( - interopDefault(import("eslint-config-flat-gitignore")).then((r) => [ + interopDefault(import("eslint-config-flat-gitignore")).then(r => [ r({ name: "anolilab/gitignore", ...enableGitignore, @@ -905,7 +912,7 @@ export const createConfig = async ( svg: isPrettierPluginXmlInScope, xml: isPrettierPluginXmlInScope, - ...(typeof options.formatters === "object" ? options.formatters : {}), + ...typeof options.formatters === "object" ? options.formatters : {}, }, typeof stylisticOptions === "object" ? stylisticOptions : {}, ), diff --git a/packages/eslint-config/src/types.ts b/packages/eslint-config/src/types.ts index f1597923e..8bf27e451 100644 --- a/packages/eslint-config/src/types.ts +++ b/packages/eslint-config/src/types.ts @@ -438,8 +438,8 @@ export interface OptionsFormatters { slidev?: | boolean | { - files?: string[]; - }; + files?: string[]; + }; /** * Enable formatting support for SVG. diff --git a/packages/eslint-config/src/utils/create-config.ts b/packages/eslint-config/src/utils/create-config.ts index 2e59f341a..da6cd2540 100644 --- a/packages/eslint-config/src/utils/create-config.ts +++ b/packages/eslint-config/src/utils/create-config.ts @@ -126,7 +126,4 @@ export const getFilesGlobs = (fileType: FileType): string[] => { } }; -export const createConfig = - (type: FileType, rules: (options: O, files: string[]) => Promise[]>) => - async (options: O): Promise => - await rules(options, getFilesGlobs(type)); +export const createConfig = (type: FileType, rules: (options: O, files: string[]) => Promise[]>) => async (options: O): Promise => await rules(options, getFilesGlobs(type)); From 8d637b74cbe9dba637e15aa4e8991d63dacc2533 Mon Sep 17 00:00:00 2001 From: prisis Date: Fri, 23 May 2025 22:42:00 +0200 Subject: [PATCH 23/31] chore: remove Babel configuration and update workflow files - Deleted the Babel configuration file as it is no longer needed. - Added new scripts for linting and testing affected packages in package.json. - Updated GitHub workflow files to improve CI processes, including changes to cache clearing and issue commenting workflows. - Introduced a new script for publishing preview releases based on changed files. Signed-off-by: prisis --- .github/workflows/allo-allo.yaml | 17 +----------- .github/workflows/cache-clear.yml | 2 +- .github/workflows/comment-issue.yml | 2 +- .github/workflows/test.yml | 40 ++++++++++++++++++++--------- package.json | 3 +++ 5 files changed, 34 insertions(+), 30 deletions(-) diff --git a/.github/workflows/allo-allo.yaml b/.github/workflows/allo-allo.yaml index 0f4dfb9eb..a9ee6b239 100644 --- a/.github/workflows/allo-allo.yaml +++ b/.github/workflows/allo-allo.yaml @@ -16,19 +16,4 @@ jobs: uses: "anolilab/workflows/.github/workflows/allo-allo.yml@main" with: target-repo: "anolilab/javascript-style-guide" - issue-welcome: > - It looks like this is your first issue. Welcome! 👋 - One of the project maintainers will be with you as soon as possible. We - appreciate your patience. To safeguard the health of the project, please - take a moment to read our [code of conduct](https://github.com/anolilab/javascript-style-guide/blob/main/.github/CODE_OF_CONDUCT.md). - pr-welcome: > - It looks like this is your first pull request. 🎉 - Thank you for your contribution! One of the project maintainers will triage - and assign the pull request for review. We appreciate your patience. To - safeguard the health of the project, please take a moment to read our - [code of conduct](https://github.com/anolilab/javascript-style-guide/blob/main/.github/CODE_OF_CONDUCT.md). - pr-merged: > - Congratulations on your first merged pull request! 🎉 - Thank you for your contribution! - We appreciate your patience. - We look forward to your next contribution. + diff --git a/.github/workflows/cache-clear.yml b/.github/workflows/cache-clear.yml index cbac5f704..9a746c31c 100644 --- a/.github/workflows/cache-clear.yml +++ b/.github/workflows/cache-clear.yml @@ -7,6 +7,6 @@ on: # yamllint disable-line rule:truthy jobs: cleanup-branch-cache: - uses: "anolilab/workflows/.github/workflows/cleanup-branch-cache.yml@main" + uses: "anolilab/workflows/.github/workflows/cleanup-branch-cache.yaml@main" with: target-repo: "anolilab/javascript-style-guide" diff --git a/.github/workflows/comment-issue.yml b/.github/workflows/comment-issue.yml index ae28e3be2..7233c1882 100644 --- a/.github/workflows/comment-issue.yml +++ b/.github/workflows/comment-issue.yml @@ -47,7 +47,7 @@ jobs: We do this because: - There are plenty of frameworks/tools out there and we would like to ensure that every method can cover all or almost all of them. - - Every feature we add to Visulima has "costs" associated to it: + - Every feature we add to "javascript-style-guide" has "costs" associated to it: - initial costs: design, implementation, reviews, documentation - running costs: awareness of the feature itself, more complex module structure, increased bundle size, more work during refactors diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 524a6881b..a3c08a13f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -59,7 +59,7 @@ jobs: matrix: os: - "ubuntu-latest" - node_version: ["18", "20", "21", "22"] + node_version: ["22", "23", "24"] # On the other platforms, we only test the lts node version include: - os: "macos-latest" @@ -87,27 +87,43 @@ jobs: # Pulls all commits (needed for NX) fetch-depth: 0 + - name: "Derive appropriate SHAs for base and head for `nx affected` commands" + id: "setSHAs" + uses: "nrwl/nx-set-shas@76907e7e5d3cd17ddb5e2b123389f054bffcdd03" # v4 + + - name: "Setup resources and environment" id: "setup" uses: "anolilab/workflows/step/setup@main" with: node-version: "${{ matrix.node_version }}" install-bun: false + + # Temporary solution until Nx solve this https://github.com/nrwl/nx/issues/22259 + - name: "Get changed files" + id: "files" + uses: "tj-actions/changed-files@c65cd883420fd2eb864698a825fc4162dd94482c" # v44.5.7 + with: + files_ignore_from_source_file: ".github/ignore-files-for-nx-affected.yml" + base_sha: "${{ steps.setSHAs.outputs.base }}" + separator: "," - name: "Build" - run: "pnpm run build:packages" - - - name: "Run test for browserslist-config-anolilab" - run: "pnpm run test:coverage:browserslist-config-anolilab" - - - name: "Run test for stylelint-config" - run: "pnpm run test:coverage:stylelint-config" + shell: "bash" + run: | + files="${{ steps.files.outputs.all_changed_files }}"; + pnpm run build:affected:packages --files=${files//\\/\/} - - name: "Run stylelint config test" - run: "pnpm run test:stylelint" + - name: "Run tests" + shell: "bash" + run: | + files="${{ steps.files.outputs.all_changed_files }}"; - - name: "Run babel config test" - run: "pnpm run test:babel" + if [[ ${{ matrix.os }} == "ubuntu-latest" && ${{ matrix.node_version }} == 22 ]]; then + pnpm run test:affected:coverage --files=${files//\\/\/} + else + pnpm run test:affected --files=${files//\\/\/} + fi - name: "Prepare nx cache" shell: "bash" diff --git a/package.json b/package.json index 1d12dd9d9..6e4e6fe70 100644 --- a/package.json +++ b/package.json @@ -54,6 +54,9 @@ "packages/*" ], "scripts": { + "preinstall": "node verify-node-version.cjs", + "postinstall": "is-ci || husky || exit 0", + "lint": "pnpm run lint:prettier && pnpm run lint:eslint", "audit": "audit-ci --config ./audit-ci.jsonc", "build:affected:packages": "nx affected --target=build --exclude=*-bench,docs,storybook --nxBail", "build:affected:prod:packages": "nx affected --target=build:prod --exclude=*-bench,docs,storybook --nxBail", From 70d73fe1b1d0887330db0260c6d305712acb3223 Mon Sep 17 00:00:00 2001 From: prisis Date: Fri, 23 May 2025 22:50:16 +0200 Subject: [PATCH 24/31] chore: remove semantic.yml and add project names to configuration files - Deleted the semantic.yml file as it is no longer needed for the project. - Added "name" fields to various project.json files for better identification of configuration packages. Signed-off-by: prisis --- .github/semantic.yml | 18 ------------------ packages/eslint-config/project.json | 1 + 2 files changed, 1 insertion(+), 18 deletions(-) delete mode 100644 .github/semantic.yml diff --git a/.github/semantic.yml b/.github/semantic.yml deleted file mode 100644 index dc58211fc..000000000 --- a/.github/semantic.yml +++ /dev/null @@ -1,18 +0,0 @@ -# In order to let this correctly work, install https://github.com/apps/semantic-pull-requests - -titleOnly: true -types: - - "build" - - "chore" - - "ci" - - "deps" - - "docs" - - "feat" - - "fix" - - "perf" - - "refactor" - - "revert" - - "security" - - "style" - - "test" - - "translation" diff --git a/packages/eslint-config/project.json b/packages/eslint-config/project.json index 58a39ba7e..5ab52c637 100644 --- a/packages/eslint-config/project.json +++ b/packages/eslint-config/project.json @@ -1,4 +1,5 @@ { + "name": "eslint-config", "$schema": "../../node_modules/nx/schemas/project-schema.json", "sourceRoot": "packages/eslint-config/src", "projectType": "library", From 7d493e81d358de3c3eaf9318bf1693fc69b76206 Mon Sep 17 00:00:00 2001 From: prisis Date: Sat, 24 May 2025 06:40:27 +0200 Subject: [PATCH 25/31] chore: update package dependencies and scripts - Updated various package dependencies in package.json to their latest versions, including @anolilab/multi-semantic-release, @commitlint packages, eslint, and others. - Added a new script "sort-package-json" to help organize package.json files. - Updated pnpm-lock.yaml to reflect the changes in package versions and dependencies. Signed-off-by: prisis --- package.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/package.json b/package.json index 6e4e6fe70..1d12dd9d9 100644 --- a/package.json +++ b/package.json @@ -54,9 +54,6 @@ "packages/*" ], "scripts": { - "preinstall": "node verify-node-version.cjs", - "postinstall": "is-ci || husky || exit 0", - "lint": "pnpm run lint:prettier && pnpm run lint:eslint", "audit": "audit-ci --config ./audit-ci.jsonc", "build:affected:packages": "nx affected --target=build --exclude=*-bench,docs,storybook --nxBail", "build:affected:prod:packages": "nx affected --target=build:prod --exclude=*-bench,docs,storybook --nxBail", From 7be19afa8dfab27dd418823699031ec2162dc6dc Mon Sep 17 00:00:00 2001 From: prisis Date: Sat, 24 May 2025 07:53:15 +0200 Subject: [PATCH 26/31] chore: update ESLint config dependencies and improve error handling - Removed the unused dependency '@antfu/install-pkg' from package.json. - Updated various dependencies in pnpm-lock.yaml to their latest versions, including '@babel/template', '@babel/parser', and '@babel/code-frame'. - Enhanced error handling in create-config.ts to provide more informative error messages for unknown file types. Signed-off-by: prisis --- packages/eslint-config/package.json | 1 - packages/eslint-config/src/index.ts | 12 +++++++----- packages/eslint-config/src/utils/create-config.ts | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index f0fd992e6..b963d6e65 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -121,7 +121,6 @@ "test:watch": "vitest" }, "dependencies": { - "@antfu/install-pkg": "^1.1.0", "@eslint-community/eslint-plugin-eslint-comments": "^4.5.0", "@eslint/compat": "^1.2.9", "@eslint/js": "^9.27.0", diff --git a/packages/eslint-config/src/index.ts b/packages/eslint-config/src/index.ts index f4cec85ff..aaef04431 100644 --- a/packages/eslint-config/src/index.ts +++ b/packages/eslint-config/src/index.ts @@ -527,11 +527,13 @@ export const createConfig = async ( } } - await ensurePackages(packageJson, packages, "devDependencies", { - confirm: { - message: (list: string[]) => `@anolilab/eslint-config requires the following ${list.length === 1 ? "package" : "packages"} to be installed: \n\n"${list.join("\"\n\"")}"\n\nfor the ESLint configurations to work correctly. Do you want to install ${packages.length === 1 ? "it" : "them"} now?`, - }, - }); + if (packages.length > 0) { + await ensurePackages(packageJson, packages, "devDependencies", { + confirm: { + message: (list: string[]) => `@anolilab/eslint-config requires the following ${list.length === 1 ? "package" : "packages"} to be installed: \n\n"${list.join("\"\n\"")}"\n\nfor the ESLint configurations to work correctly. Do you want to install ${packages.length === 1 ? "it" : "them"} now?`, + }, + }); + } } let isInEditor = options.isInEditor; diff --git a/packages/eslint-config/src/utils/create-config.ts b/packages/eslint-config/src/utils/create-config.ts index da6cd2540..39948b2b5 100644 --- a/packages/eslint-config/src/utils/create-config.ts +++ b/packages/eslint-config/src/utils/create-config.ts @@ -121,7 +121,7 @@ export const getFilesGlobs = (fileType: FileType): string[] => { return ["**/*.yaml", "**/*.yml"]; } default: { - throw new Error("Unknown type"); + throw new Error(`Unknown file type: ${fileType}`); } } }; From fed692d61ed2c77e233556a9fc19d5f9eed6363c Mon Sep 17 00:00:00 2001 From: prisis Date: Sun, 25 May 2025 09:38:41 +0200 Subject: [PATCH 27/31] chore: update ESLint configuration and dependencies - Updated Node version in .nvmrc from 22 to 20.18. - Added .gitignore file for src/typegen.d.ts in the eslint-config package. - Adjusted ESLint configuration to use relative paths for ignored files. - Removed unused typegen.d.ts file from eslint-config package. - Refactored various ESLint rules for improved clarity and maintainability. Signed-off-by: prisis --- packages/eslint-config/.gitignore | 1 + .../eslint-config/__tests__/rules.test.ts | 1 - packages/eslint-config/eslint.config.js | 2 +- .../eslint-config/scripts/global-vitest.ts | 1 - packages/eslint-config/src/config/es6.ts | 586 +- packages/eslint-config/src/config/ignores.ts | 80 +- .../eslint-config/src/config/plugins/jsdoc.ts | 29 +- .../src/config/plugins/markdown.ts | 5 + .../eslint-config/src/config/plugins/react.ts | 2 +- .../src/config/plugins/typescript.ts | 3 +- packages/eslint-config/src/config/style.ts | 886 +- packages/eslint-config/src/index.ts | 35 +- packages/eslint-config/src/typegen.d.ts | 25106 ---------------- .../utils/is-in-git-hooks-or-lint-staged.ts | 4 +- .../eslint-config/src/utils/parser-plain.ts | 32 +- .../eslint-config/src/utils/vitest-globals.ts | 38 +- 16 files changed, 870 insertions(+), 25941 deletions(-) create mode 100644 packages/eslint-config/.gitignore delete mode 100644 packages/eslint-config/src/typegen.d.ts diff --git a/packages/eslint-config/.gitignore b/packages/eslint-config/.gitignore new file mode 100644 index 000000000..220f7c434 --- /dev/null +++ b/packages/eslint-config/.gitignore @@ -0,0 +1 @@ +src/typegen.d.ts \ No newline at end of file diff --git a/packages/eslint-config/__tests__/rules.test.ts b/packages/eslint-config/__tests__/rules.test.ts index badd5e20b..a735d7765 100644 --- a/packages/eslint-config/__tests__/rules.test.ts +++ b/packages/eslint-config/__tests__/rules.test.ts @@ -29,7 +29,6 @@ const copyFolderRecursive = async (from: string, to: string) => { recursive: true, }); - // eslint-disable-next-line no-restricted-syntax for (const element of files) { // eslint-disable-next-line unicorn/no-await-expression-member,no-await-in-loop await ((await lstat(join(from, element))).isFile() diff --git a/packages/eslint-config/eslint.config.js b/packages/eslint-config/eslint.config.js index 327e8770f..2db73d4ab 100644 --- a/packages/eslint-config/eslint.config.js +++ b/packages/eslint-config/eslint.config.js @@ -2,7 +2,7 @@ import { createConfig } from "./dist/index.mjs"; export default createConfig( { - ignores: ["eslint.config.js", "src/typegen.d.ts", "__fixtures__/**/*"], + ignores: ["./eslint.config.js", "./src/typegen.d.ts", "./__fixtures__/**/*"], react: false, playwright: false, storybook: false, diff --git a/packages/eslint-config/scripts/global-vitest.ts b/packages/eslint-config/scripts/global-vitest.ts index d601f3021..64faafbc6 100644 --- a/packages/eslint-config/scripts/global-vitest.ts +++ b/packages/eslint-config/scripts/global-vitest.ts @@ -37,7 +37,6 @@ const extract = (file: string) => { // eslint-disable-next-line @typescript-eslint/no-explicit-any ts.forEachChild(mNode, (vNode: any) => { if (ts.isVariableDeclarationList(vNode)) { - // eslint-disable-next-line no-restricted-syntax for (const declaration of vNode.declarations) { const name = ts.getNameOfDeclaration(declaration); diff --git a/packages/eslint-config/src/config/es6.ts b/packages/eslint-config/src/config/es6.ts index d600470ec..be0fae47a 100644 --- a/packages/eslint-config/src/config/es6.ts +++ b/packages/eslint-config/src/config/es6.ts @@ -3,341 +3,343 @@ import type { Linter } from "eslint"; import type { OptionsFiles, OptionsIsInEditor } from "../types"; import { createConfig, getFilesGlobs } from "../utils/create-config"; -export const es6Rules: (isInEditor: boolean) => Partial = (isInEditor: boolean) => ({ +export const es6Rules: (isInEditor: boolean) => Partial = (isInEditor: boolean) => { + return { // enforces no braces where they can be omitted // https://eslint.org/docs/rules/arrow-body-style - "arrow-body-style": [ - "error", - "as-needed", - { - requireReturnForObjectLiteral: true, - }, - ], + "arrow-body-style": [ + "error", + "as-needed", + { + requireReturnForObjectLiteral: true, + }, + ], - // require parens in arrow function arguments - // https://eslint.org/docs/rules/arrow-parens - "arrow-parens": ["error", "always"], + // require parens in arrow function arguments + // https://eslint.org/docs/rules/arrow-parens + "arrow-parens": ["error", "always"], - // require space before/after arrow function's arrow - // https://eslint.org/docs/rules/arrow-spacing - "arrow-spacing": ["error", { after: true, before: true }], + // require space before/after arrow function's arrow + // https://eslint.org/docs/rules/arrow-spacing + "arrow-spacing": ["error", { after: true, before: true }], - // verify super() callings in constructors - "constructor-super": "error", + // verify super() callings in constructors + "constructor-super": "error", - // enforce the spacing around the * in generator functions - // https://eslint.org/docs/rules/generator-star-spacing - "generator-star-spacing": ["error", { after: true, before: false }], + // enforce the spacing around the * in generator functions + // https://eslint.org/docs/rules/generator-star-spacing + "generator-star-spacing": ["error", { after: true, before: false }], - // disallow modifying variables of class declarations - // https://eslint.org/docs/rules/no-class-assign - "no-class-assign": "error", + // disallow modifying variables of class declarations + // https://eslint.org/docs/rules/no-class-assign + "no-class-assign": "error", - // disallow arrow functions where they could be confused with comparisons - // https://eslint.org/docs/rules/no-confusing-arrow - "no-confusing-arrow": [ - "error", - { - allowParens: true, - }, - ], + // disallow arrow functions where they could be confused with comparisons + // https://eslint.org/docs/rules/no-confusing-arrow + "no-confusing-arrow": [ + "error", + { + allowParens: true, + }, + ], - // disallow modifying variables that are declared using const - "no-const-assign": "error", + // disallow modifying variables that are declared using const + "no-const-assign": "error", - // disallow duplicate class members - // https://eslint.org/docs/rules/no-dupe-class-members - "no-dupe-class-members": "error", + // disallow duplicate class members + // https://eslint.org/docs/rules/no-dupe-class-members + "no-dupe-class-members": "error", - // disallow importing from the same path more than once - // https://eslint.org/docs/rules/no-duplicate-imports - // replaced by https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-duplicates.md - "no-duplicate-imports": "off", + // disallow importing from the same path more than once + // https://eslint.org/docs/rules/no-duplicate-imports + // replaced by https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-duplicates.md + "no-duplicate-imports": "off", - // disallow symbol constructor - // https://eslint.org/docs/rules/no-new-symbol - "no-new-symbol": "error", + // disallow symbol constructor + // https://eslint.org/docs/rules/no-new-symbol + "no-new-symbol": "error", - // Disallow specified names in exports - // https://eslint.org/docs/rules/no-restricted-exports - "no-restricted-exports": [ - "error", - { + // Disallow specified names in exports + // https://eslint.org/docs/rules/no-restricted-exports + "no-restricted-exports": [ + "error", + { // default export while still blocking other "default" exports. // The 'default' entry in restrictedNamedExports must also be removed. // See https://github.com/airbnb/javascript/issues/2500 and https://github.com/eslint/eslint/pull/16785 - restrictDefaultExports: { - defaultFrom: false, // permits `export { default } from 'foo';` declarations - direct: false, // permits `export default` declarations - named: true, // restricts `export { foo as default };` declarations - namedFrom: false, // permits `export { foo as default } from 'foo';` declarations - namespaceFrom: true, // restricts `export * as default from 'foo';` declarations + restrictDefaultExports: { + defaultFrom: false, // permits `export { default } from 'foo';` declarations + direct: false, // permits `export default` declarations + named: true, // restricts `export { foo as default };` declarations + namedFrom: false, // permits `export { foo as default } from 'foo';` declarations + namespaceFrom: true, // restricts `export * as default from 'foo';` declarations + }, + // this will cause tons of confusion when your module is dynamically `import()`ed + restrictedNamedExports: ["then"], }, - // this will cause tons of confusion when your module is dynamically `import()`ed - restrictedNamedExports: ["then"], - }, - ], - - // disallow specific imports - // https://eslint.org/docs/rules/no-restricted-imports - "no-restricted-imports": [ - "error", - { - paths: [ - { - message: "Lodash modularised (and lodash < 4.17.11) have CVE vulnerabilities. Please use tree-shakeable imports like lodash/xxx instead", - name: "lodash.isequal", - }, - { - message: "Lodash modularised (and lodash < 4.17.11) have CVE vulnerabilities. Please use tree-shakeable imports like lodash/xxx instead", - name: "lodash.uniqueId", - }, - { - message: "Lodash modularised (and lodash < 4.17.11) have CVE vulnerabilities. Please use tree-shakeable imports like lodash/xxx instead", - name: "lodash.mergewith", - }, - { - message: "Lodash modularised (and lodash < 4.17.11) have CVE vulnerabilities. Please use tree-shakeable imports like lodash/xxx instead", - name: "lodash.pick", - }, - { - name: "error", - }, - { - name: "domain", - }, - { - name: "freelist", - }, - { - name: "smalloc", - }, - { - name: "punycode", - }, - { - name: "sys", - }, - { - message: "Is legacy, npm version got deprecated, migrate to URLSearchParams as recommended or try \"qs\" as a package", - name: "querystring", - }, - { - message: "Please use one of the following instead: chalk, kleur, ansi-colors, @colors/colors", - name: "colors", - }, - { - message: "node v10.12 mkdir supports recursive option", - name: "mkdirp", - }, - { - message: "Please use \"@faker-js/faker\" as a replacement", - name: "faker", - }, - { - message: "Please use Object.assign or spread { ...obj }", - name: "xtend", - }, - { - message: "Please use Object.assign or spread { ...obj }", - name: "object-assign", - }, - { - message: "Please use Object.assign or spread { ...obj }", - name: "extend-shallow", - }, - { - message: "node supports recursive option now", - name: "rimraf", - }, - { - message: "just use \"\".padStart() and \"\".padEnd()", - name: "pad-left", - }, - { - message: "just use \"\".padStart() and \"\".padEnd()", - name: "pad-right", - }, - { - message: "just use \"\".padStart() and \"\".padEnd()", - name: "left-pad", - }, - { - message: "just use \"\".padStart() and \"\".padEnd()", - name: "right-pad", - }, - { - message: "just use \"\".padStart() and \"\".padEnd()", - name: "pad", - }, - { - name: "safe-buffer", - }, - { - name: "safer-buffer", - }, - { - message: "just use [].flat() or some other polyfill", - name: "array-flatten", - }, - { - message: "Been deprecated", - name: "request", - }, - { - message: "use async/await instead", - name: "co", - }, - { - message: "Please use TextDecoder instead", - name: "windows-1252", - }, - { - message: "Please use TextDecoder instead", - name: "string_decoder", - }, - { - message: "Please use array.prototype.flatMap instead", - name: "concat-map", - }, - { - name: "buffer-alloc", - }, - ], - // catch-all for any lodash modularized. - // The CVE is listed against the entire family for lodash < 4.17.11 - patterns: ["lodash.*"], - }, - ], + ], - // disallow to use this/super before super() calling in constructors. - // https://eslint.org/docs/rules/no-this-before-super - "no-this-before-super": "error", + // disallow specific imports + // https://eslint.org/docs/rules/no-restricted-imports + "no-restricted-imports": [ + "error", + { + paths: [ + { + message: "Lodash modularised (and lodash < 4.17.11) have CVE vulnerabilities. Please use tree-shakeable imports like lodash/xxx instead", + name: "lodash.isequal", + }, + { + message: "Lodash modularised (and lodash < 4.17.11) have CVE vulnerabilities. Please use tree-shakeable imports like lodash/xxx instead", + name: "lodash.uniqueId", + }, + { + message: "Lodash modularised (and lodash < 4.17.11) have CVE vulnerabilities. Please use tree-shakeable imports like lodash/xxx instead", + name: "lodash.mergewith", + }, + { + message: "Lodash modularised (and lodash < 4.17.11) have CVE vulnerabilities. Please use tree-shakeable imports like lodash/xxx instead", + name: "lodash.pick", + }, + { + name: "error", + }, + { + name: "domain", + }, + { + name: "freelist", + }, + { + name: "smalloc", + }, + { + name: "punycode", + }, + { + name: "sys", + }, + { + message: "Is legacy, npm version got deprecated, migrate to URLSearchParams as recommended or try \"qs\" as a package", + name: "querystring", + }, + { + message: "Please use one of the following instead: chalk, kleur, ansi-colors, @colors/colors", + name: "colors", + }, + { + message: "node v10.12 mkdir supports recursive option", + name: "mkdirp", + }, + { + message: "Please use \"@faker-js/faker\" as a replacement", + name: "faker", + }, + { + message: "Please use Object.assign or spread { ...obj }", + name: "xtend", + }, + { + message: "Please use Object.assign or spread { ...obj }", + name: "object-assign", + }, + { + message: "Please use Object.assign or spread { ...obj }", + name: "extend-shallow", + }, + { + message: "node supports recursive option now", + name: "rimraf", + }, + { + message: "just use \"\".padStart() and \"\".padEnd()", + name: "pad-left", + }, + { + message: "just use \"\".padStart() and \"\".padEnd()", + name: "pad-right", + }, + { + message: "just use \"\".padStart() and \"\".padEnd()", + name: "left-pad", + }, + { + message: "just use \"\".padStart() and \"\".padEnd()", + name: "right-pad", + }, + { + message: "just use \"\".padStart() and \"\".padEnd()", + name: "pad", + }, + { + name: "safe-buffer", + }, + { + name: "safer-buffer", + }, + { + message: "just use [].flat() or some other polyfill", + name: "array-flatten", + }, + { + message: "Been deprecated", + name: "request", + }, + { + message: "use async/await instead", + name: "co", + }, + { + message: "Please use TextDecoder instead", + name: "windows-1252", + }, + { + message: "Please use TextDecoder instead", + name: "string_decoder", + }, + { + message: "Please use array.prototype.flatMap instead", + name: "concat-map", + }, + { + name: "buffer-alloc", + }, + ], + // catch-all for any lodash modularized. + // The CVE is listed against the entire family for lodash < 4.17.11 + patterns: ["lodash.*"], + }, + ], - // disallow useless computed property keys - // https://eslint.org/docs/rules/no-useless-computed-key - "no-useless-computed-key": "error", + // disallow to use this/super before super() calling in constructors. + // https://eslint.org/docs/rules/no-this-before-super + "no-this-before-super": "error", - // disallow unnecessary constructor - // https://eslint.org/docs/rules/no-useless-constructor - "no-useless-constructor": "error", + // disallow useless computed property keys + // https://eslint.org/docs/rules/no-useless-computed-key + "no-useless-computed-key": "error", - // disallow renaming import, export, and destructured assignments to the same name - // https://eslint.org/docs/rules/no-useless-rename - "no-useless-rename": [ - "error", - { - ignoreDestructuring: false, - ignoreExport: false, - ignoreImport: false, - }, - ], + // disallow unnecessary constructor + // https://eslint.org/docs/rules/no-useless-constructor + "no-useless-constructor": "error", - // require let or const instead of var - "no-var": "error", + // disallow renaming import, export, and destructured assignments to the same name + // https://eslint.org/docs/rules/no-useless-rename + "no-useless-rename": [ + "error", + { + ignoreDestructuring: false, + ignoreExport: false, + ignoreImport: false, + }, + ], - // require method and property shorthand syntax for object literals - // https://eslint.org/docs/rules/object-shorthand - "object-shorthand": [ - "error", - "always", - { - avoidQuotes: true, - ignoreConstructors: false, - }, - ], + // require let or const instead of var + "no-var": "error", - // suggest using arrow functions as callbacks - "prefer-arrow-callback": [ - "error", - { - allowNamedFunctions: false, - allowUnboundThis: true, - }, - ], + // require method and property shorthand syntax for object literals + // https://eslint.org/docs/rules/object-shorthand + "object-shorthand": [ + "error", + "always", + { + avoidQuotes: true, + ignoreConstructors: false, + }, + ], - // suggest using of const declaration for variables that are never modified after declared - "prefer-const": isInEditor - ? "off" - : [ + // suggest using arrow functions as callbacks + "prefer-arrow-callback": [ "error", { - destructuring: "any", - ignoreReadBeforeAssign: true, + allowNamedFunctions: false, + allowUnboundThis: true, }, ], - // Prefer destructuring from arrays and objects - // https://eslint.org/docs/rules/prefer-destructuring - "prefer-destructuring": [ - "error", - { - AssignmentExpression: { - array: true, - object: false, + // suggest using of const declaration for variables that are never modified after declared + "prefer-const": isInEditor + ? "off" + : [ + "error", + { + destructuring: "any", + ignoreReadBeforeAssign: true, + }, + ], + + // Prefer destructuring from arrays and objects + // https://eslint.org/docs/rules/prefer-destructuring + "prefer-destructuring": [ + "error", + { + AssignmentExpression: { + array: true, + object: false, + }, + VariableDeclarator: { + array: false, + object: true, + }, }, - VariableDeclarator: { - array: false, - object: true, + { + enforceForRenamedProperties: false, }, - }, - { - enforceForRenamedProperties: false, - }, - ], + ], - // disallow parseInt() in favor of binary, octal, and hexadecimal literals - // https://eslint.org/docs/rules/prefer-numeric-literals - "prefer-numeric-literals": "error", + // disallow parseInt() in favor of binary, octal, and hexadecimal literals + // https://eslint.org/docs/rules/prefer-numeric-literals + "prefer-numeric-literals": "error", - // suggest using Reflect methods where applicable - // https://eslint.org/docs/rules/prefer-reflect - "prefer-reflect": "off", + // suggest using Reflect methods where applicable + // https://eslint.org/docs/rules/prefer-reflect + "prefer-reflect": "off", - // use rest parameters instead of arguments - // https://eslint.org/docs/rules/prefer-rest-params - "prefer-rest-params": "error", + // use rest parameters instead of arguments + // https://eslint.org/docs/rules/prefer-rest-params + "prefer-rest-params": "error", - // suggest using the spread operator instead of .apply() - // https://eslint.org/docs/rules/prefer-spread - "prefer-spread": "error", + // suggest using the spread operator instead of .apply() + // https://eslint.org/docs/rules/prefer-spread + "prefer-spread": "error", - // suggest using template literals instead of string concatenation - // https://eslint.org/docs/rules/prefer-template - "prefer-template": "error", + // suggest using template literals instead of string concatenation + // https://eslint.org/docs/rules/prefer-template + "prefer-template": "error", - // disallow generator functions that do not have yield - // https://eslint.org/docs/rules/require-yield - "require-yield": "error", + // disallow generator functions that do not have yield + // https://eslint.org/docs/rules/require-yield + "require-yield": "error", - // enforce spacing between object rest-spread - // https://eslint.org/docs/rules/rest-spread-spacing - "rest-spread-spacing": ["error", "never"], + // enforce spacing between object rest-spread + // https://eslint.org/docs/rules/rest-spread-spacing + "rest-spread-spacing": ["error", "never"], - // import sorting - // https://eslint.org/docs/rules/sort-imports - "sort-imports": [ - "off", - { - ignoreCase: false, - ignoreDeclarationSort: false, - ignoreMemberSort: false, - memberSyntaxSortOrder: ["none", "all", "multiple", "single"], - }, - ], + // import sorting + // https://eslint.org/docs/rules/sort-imports + "sort-imports": [ + "off", + { + ignoreCase: false, + ignoreDeclarationSort: false, + ignoreMemberSort: false, + memberSyntaxSortOrder: ["none", "all", "multiple", "single"], + }, + ], - // require a Symbol description - // https://eslint.org/docs/rules/symbol-description - "symbol-description": "error", + // require a Symbol description + // https://eslint.org/docs/rules/symbol-description + "symbol-description": "error", - // enforce usage of spacing in template strings - // https://eslint.org/docs/rules/template-curly-spacing - "template-curly-spacing": "error", + // enforce usage of spacing in template strings + // https://eslint.org/docs/rules/template-curly-spacing + "template-curly-spacing": "error", - // enforce spacing around the * in yield* expressions - // https://eslint.org/docs/rules/yield-star-spacing - "yield-star-spacing": ["error", "after"], -}); + // enforce spacing around the * in yield* expressions + // https://eslint.org/docs/rules/yield-star-spacing + "yield-star-spacing": ["error", "after"], + }; +}; export default createConfig("all", async (config, oFiles) => { const { files = oFiles, isInEditor = false } = config; diff --git a/packages/eslint-config/src/config/ignores.ts b/packages/eslint-config/src/config/ignores.ts index 7109d19da..06317a261 100644 --- a/packages/eslint-config/src/config/ignores.ts +++ b/packages/eslint-config/src/config/ignores.ts @@ -1,48 +1,46 @@ import type { TypedFlatConfigItem } from "../types"; -const ignores = async (userIgnores: string[] = []): Promise => { - return [ - { - ignores: [ - "**/node_modules", - "**/dist", - "**/package-lock.json", - "**/yarn.lock", - "**/pnpm-lock.yaml", - "**/bun.lockb", +const ignores = async (userIgnores: string[] = []): Promise => [ + { + ignores: [ + "**/node_modules", + "**/dist", + "**/package-lock.json", + "**/yarn.lock", + "**/pnpm-lock.yaml", + "**/bun.lockb", - "**/output", - "**/coverage", - "**/temp", - "**/.temp", - "**/tmp", - "**/.tmp", - "**/.history", - "**/.vitepress/cache", - "**/.nuxt", - "**/.next", - "**/.svelte-kit", - "**/.vercel", - "**/.changeset", - "**/.idea", - "**/.cache", - "**/.output", - "**/.vite-inspect", - "**/.yarn", - "**/vite.config.*.timestamp-*", + "**/output", + "**/coverage", + "**/temp", + "**/.temp", + "**/tmp", + "**/.tmp", + "**/.history", + "**/.vitepress/cache", + "**/.nuxt", + "**/.next", + "**/.svelte-kit", + "**/.vercel", + "**/.changeset", + "**/.idea", + "**/.cache", + "**/.output", + "**/.vite-inspect", + "**/.yarn", + "**/vite.config.*.timestamp-*", - "**/CHANGELOG*.md", - "**/*.min.*", - "**/LICENSE*", - "**/__snapshots__", - "**/auto-import?(s).d.ts", - "**/components.d.ts", + "**/CHANGELOG*.md", + "**/*.min.*", + "**/LICENSE*", + "**/__snapshots__", + "**/auto-import?(s).d.ts", + "**/components.d.ts", - ...userIgnores, - ], - name: "anolilab/ignores", - }, - ]; -}; + ...userIgnores, + ], + name: "anolilab/ignores", + }, +]; export default ignores; diff --git a/packages/eslint-config/src/config/plugins/jsdoc.ts b/packages/eslint-config/src/config/plugins/jsdoc.ts index 281c769ed..37aead5d7 100644 --- a/packages/eslint-config/src/config/plugins/jsdoc.ts +++ b/packages/eslint-config/src/config/plugins/jsdoc.ts @@ -2,25 +2,29 @@ import { hasPackageJsonAnyDependency } from "@visulima/package"; import type { OptionsFiles, + OptionsOverrides, OptionsPackageJson, OptionsSilentConsoleLogs, OptionsStylistic, + OptionsTypescript, TypedFlatConfigItem, } from "../../types"; import { createConfig, getFilesGlobs } from "../../utils/create-config"; import interopDefault from "../../utils/interop-default"; -export default createConfig("js", async (config, oFiles) => { +export default createConfig("js", async (config, oFiles) => { const { files = oFiles, + jsx = false, + overrides = {}, packageJson, silent, stylistic = true, + typescript, } = config; const jsdocPlugin = await interopDefault(import("eslint-plugin-jsdoc")); - const hasTypescript = hasPackageJsonAnyDependency(packageJson, ["typescript"]); const hasTsDocumentPlugin = hasPackageJsonAnyDependency(packageJson, ["eslint-plugin-tsdoc"]); if (hasTsDocumentPlugin && !silent) { @@ -28,6 +32,9 @@ export default createConfig = { +export const styleRules = (stylistic?: StylisticConfig | boolean): Partial => { + return { // enforce line breaks after opening and before closing array brackets // https://eslint.org/docs/rules/array-bracket-newline - "array-bracket-newline": "off", - - // enforce line breaks between array elements - // enforce spacing inside array brackets - "array-bracket-spacing": ["error", "never"], - - // https://eslint.org/docs/rules/array-element-newline - "array-element-newline": "off", - - // require camel case names - camelcase: ["error", { ignoreDestructuring: false, properties: "never" }], - - // enforce or disallow capitalization of the first letter of a comment - // https://eslint.org/docs/rules/capitalized-comments - "capitalized-comments": [ - "off", - "never", - { - block: { - ignoreConsecutiveComments: true, - ignoreInlineComments: true, - ignorePattern: ".*", + "array-bracket-newline": "off", + + // enforce line breaks between array elements + // enforce spacing inside array brackets + "array-bracket-spacing": ["error", "never"], + + // https://eslint.org/docs/rules/array-element-newline + "array-element-newline": "off", + + // require camel case names + camelcase: ["error", { ignoreDestructuring: false, properties: "never" }], + + // enforce or disallow capitalization of the first letter of a comment + // https://eslint.org/docs/rules/capitalized-comments + "capitalized-comments": [ + "off", + "never", + { + block: { + ignoreConsecutiveComments: true, + ignoreInlineComments: true, + ignorePattern: ".*", + }, + line: { + ignoreConsecutiveComments: true, + ignoreInlineComments: true, + ignorePattern: ".*", + }, }, - line: { - ignoreConsecutiveComments: true, - ignoreInlineComments: true, - ignorePattern: ".*", + ], + + // enforce one true comma style + "comma-style": [ + "error", + "last", + { + exceptions: { + ArrayExpression: false, + ArrayPattern: false, + ArrowFunctionExpression: false, + CallExpression: false, + FunctionDeclaration: false, + FunctionExpression: false, + ImportDeclaration: false, + NewExpression: false, + ObjectExpression: false, + ObjectPattern: false, + VariableDeclaration: false, + }, }, - }, - ], - - // enforce one true comma style - "comma-style": [ - "error", - "last", - { - exceptions: { - ArrayExpression: false, - ArrayPattern: false, - ArrowFunctionExpression: false, - CallExpression: false, - FunctionDeclaration: false, - FunctionExpression: false, - ImportDeclaration: false, - NewExpression: false, - ObjectExpression: false, - ObjectPattern: false, - VariableDeclaration: false, - }, - }, - ], - - // disallow padding inside computed properties - "computed-property-spacing": ["error", "never"], - - // enforces consistent naming when capturing the current execution context - "consistent-this": "off", - - // enforce that default parameters should come last - "default-param-last": ["error"], - - // enforce newline at the end of file, with no multiple empty lines - "eol-last": ["error", "always"], - - // enforce spacing between functions and their invocations - // https://eslint.org/docs/rules/func-name-matching - "func-name-matching": [ - "off", - "always", - { - considerPropertyDescriptor: true, - includeCommonJSModuleExports: false, - }, - ], - - // requires function names to match the name of the variable or property to which they are - // assigned - // https://eslint.org/docs/rules/func-names - "func-names": ["error", "as-needed"], - - // require function expressions to have a name - // https://eslint.org/docs/rules/func-style - "func-style": ["error", "expression"], - - // enforces use of function declarations or expressions - // https://eslint.org/docs/rules/function-call-argument-newline - "function-call-argument-newline": ["error", "consistent"], - - // enforce consistent line breaks inside function parentheses - // https://eslint.org/docs/rules/function-paren-newline - "function-paren-newline": ["error", "consistent"], - - // Blacklist certain identifiers to prevent them being used - // https://eslint.org/docs/rules/id-blacklist - "id-blacklist": "error", - - // disallow specified identifiers - // https://eslint.org/docs/rules/id-denylist - "id-denylist": "off", - - // this option enforces minimum and maximum identifier lengths - // (variable names, property names etc.) - "id-length": "off", - - // require identifiers to match the provided regular expression - "id-match": "off", - - // Enforce the location of arrow function bodies with implicit returns - // https://eslint.org/docs/rules/implicit-arrow-linebreak - "implicit-arrow-linebreak": ["error", "beside"], + ], - // specify whether double or single quotes should be used in JSX attributes - // https://eslint.org/docs/rules/jsx-quotes - "jsx-quotes": ["off", "prefer-double"], + // disallow padding inside computed properties + "computed-property-spacing": ["error", "never"], - // enforce position of line comments - // https://eslint.org/docs/rules/line-comment-position - "line-comment-position": "off", + // enforces consistent naming when capturing the current execution context + "consistent-this": "off", - // disallow mixed 'LF' and 'CRLF' as linebreaks - // https://eslint.org/docs/rules/linebreak-style - "linebreak-style": ["error", "unix"], + // enforce that default parameters should come last + "default-param-last": ["error"], - // https://eslint.org/docs/rules/lines-around-directive - "lines-around-directive": [ - "error", - { - after: "always", - before: "always", - }, - ], + // enforce newline at the end of file, with no multiple empty lines + "eol-last": ["error", "always"], - // specify the maximum depth that blocks can be nested - "max-depth": ["off", 4], - - // specify the maximum length of a line in your program - // https://eslint.org/docs/rules/max-len - "max-len": [ - "error", - 180, - 2, - { - ignoreComments: false, - ignoreRegExpLiterals: true, - ignoreStrings: true, - ignoreTemplateLiterals: true, - ignoreUrls: true, - }, - ], - - // specify the max number of lines in a file - // https://eslint.org/docs/rules/max-lines - "max-lines": [ - "off", - { - max: 300, - skipBlankLines: true, - skipComments: true, - }, - ], - - // enforce a maximum function length - // https://eslint.org/docs/rules/max-lines-per-function - "max-lines-per-function": [ - "off", - { - IIFEs: true, - max: 50, - skipBlankLines: true, - skipComments: true, - }, - ], + // enforce spacing between functions and their invocations + // https://eslint.org/docs/rules/func-name-matching + "func-name-matching": [ + "off", + "always", + { + considerPropertyDescriptor: true, + includeCommonJSModuleExports: false, + }, + ], + + // requires function names to match the name of the variable or property to which they are + // assigned + // https://eslint.org/docs/rules/func-names + "func-names": ["error", "as-needed"], + + // require function expressions to have a name + // https://eslint.org/docs/rules/func-style + "func-style": ["error", "expression"], + + // enforces use of function declarations or expressions + // https://eslint.org/docs/rules/function-call-argument-newline + "function-call-argument-newline": ["error", "consistent"], + + // enforce consistent line breaks inside function parentheses + // https://eslint.org/docs/rules/function-paren-newline + "function-paren-newline": ["error", "consistent"], + + // Blacklist certain identifiers to prevent them being used + // https://eslint.org/docs/rules/id-blacklist + "id-blacklist": "error", + + // disallow specified identifiers + // https://eslint.org/docs/rules/id-denylist + "id-denylist": "off", + + // this option enforces minimum and maximum identifier lengths + // (variable names, property names etc.) + "id-length": "off", + + // require identifiers to match the provided regular expression + "id-match": "off", + + // Enforce the location of arrow function bodies with implicit returns + // https://eslint.org/docs/rules/implicit-arrow-linebreak + "implicit-arrow-linebreak": ["error", "beside"], + + // specify whether double or single quotes should be used in JSX attributes + // https://eslint.org/docs/rules/jsx-quotes + "jsx-quotes": ["off", "prefer-double"], + + // enforce position of line comments + // https://eslint.org/docs/rules/line-comment-position + "line-comment-position": "off", + + // disallow mixed 'LF' and 'CRLF' as linebreaks + // https://eslint.org/docs/rules/linebreak-style + "linebreak-style": ["error", "unix"], + + // https://eslint.org/docs/rules/lines-around-directive + "lines-around-directive": [ + "error", + { + after: "always", + before: "always", + }, + ], + + // specify the maximum depth that blocks can be nested + "max-depth": ["off", 4], + + // specify the maximum length of a line in your program + // https://eslint.org/docs/rules/max-len + "max-len": [ + "error", + 180, + 2, + { + ignoreComments: false, + ignoreRegExpLiterals: true, + ignoreStrings: true, + ignoreTemplateLiterals: true, + ignoreUrls: true, + }, + ], + + // specify the max number of lines in a file + // https://eslint.org/docs/rules/max-lines + "max-lines": [ + "off", + { + max: 300, + skipBlankLines: true, + skipComments: true, + }, + ], + + // enforce a maximum function length + // https://eslint.org/docs/rules/max-lines-per-function + "max-lines-per-function": [ + "off", + { + IIFEs: true, + max: 50, + skipBlankLines: true, + skipComments: true, + }, + ], - // specify the maximum depth callbacks can be nested - "max-nested-callbacks": "off", + // specify the maximum depth callbacks can be nested + "max-nested-callbacks": "off", - // limits the number of parameters that can be used in the function declaration. - "max-params": ["off", 3], + // limits the number of parameters that can be used in the function declaration. + "max-params": ["off", 3], - // specify the maximum number of statement allowed in a function - "max-statements": ["off", 10], + // specify the maximum number of statement allowed in a function + "max-statements": ["off", 10], - // restrict the number of statements per line - // https://eslint.org/docs/rules/max-statements-per-line - "max-statements-per-line": ["off", { max: 1 }], + // restrict the number of statements per line + // https://eslint.org/docs/rules/max-statements-per-line + "max-statements-per-line": ["off", { max: 1 }], - // enforce a particular style for multiline comments - // https://eslint.org/docs/rules/multiline-comment-style - "multiline-comment-style": ["off", "starred-block"], + // enforce a particular style for multiline comments + // https://eslint.org/docs/rules/multiline-comment-style + "multiline-comment-style": ["off", "starred-block"], - // require multiline ternary - // https://eslint.org/docs/rules/multiline-ternary - "multiline-ternary": ["off", "never"], + // require multiline ternary + // https://eslint.org/docs/rules/multiline-ternary + "multiline-ternary": ["off", "never"], - // require a capital letter for constructors - "new-cap": [ - "error", - { - capIsNew: false, - capIsNewExceptions: ["Immutable.Map", "Immutable.Set", "Immutable.List"], - newIsCap: true, - newIsCapExceptions: [], - }, - ], + // require a capital letter for constructors + "new-cap": [ + "error", + { + capIsNew: false, + capIsNewExceptions: ["Immutable.Map", "Immutable.Set", "Immutable.List"], + newIsCap: true, + newIsCapExceptions: [], + }, + ], - // disallow the omission of parentheses when invoking a constructor with no arguments - // https://eslint.org/docs/rules/new-parens - "new-parens": "error", + // disallow the omission of parentheses when invoking a constructor with no arguments + // https://eslint.org/docs/rules/new-parens + "new-parens": "error", - // allow/disallow an empty newline after var statement - "newline-after-var": "off", + // allow/disallow an empty newline after var statement + "newline-after-var": "off", - // https://eslint.org/docs/rules/newline-before-return - "newline-before-return": "off", + // https://eslint.org/docs/rules/newline-before-return + "newline-before-return": "off", - // enforces new line after each method call in the chain to make it - // more readable and easy to maintain - // https://eslint.org/docs/rules/newline-per-chained-call - "newline-per-chained-call": ["error", { ignoreChainWithDepth: 4 }], + // enforces new line after each method call in the chain to make it + // more readable and easy to maintain + // https://eslint.org/docs/rules/newline-per-chained-call + "newline-per-chained-call": ["error", { ignoreChainWithDepth: 4 }], - // disallow use of the Array constructor - "no-array-constructor": "error", + // disallow use of the Array constructor + "no-array-constructor": "error", - // disallow use of bitwise operators - // https://eslint.org/docs/rules/no-bitwise - "no-bitwise": "error", + // disallow use of bitwise operators + // https://eslint.org/docs/rules/no-bitwise + "no-bitwise": "error", - // disallow use of the continue statement - // https://eslint.org/docs/rules/no-continue - "no-continue": "error", + // disallow use of the continue statement + // https://eslint.org/docs/rules/no-continue + "no-continue": "error", - // disallow comments inline after code - "no-inline-comments": "off", + // disallow comments inline after code + "no-inline-comments": "off", - // disallow if as the only statement in an else block - // https://eslint.org/docs/rules/no-lonely-if - "no-lonely-if": "error", + // disallow if as the only statement in an else block + // https://eslint.org/docs/rules/no-lonely-if + "no-lonely-if": "error", - // disallow un-paren'd mixes of different operators - // https://eslint.org/docs/rules/no-mixed-operators - "no-mixed-operators": [ - "error", - { + // disallow un-paren'd mixes of different operators + // https://eslint.org/docs/rules/no-mixed-operators + "no-mixed-operators": [ + "error", + { // the list of arithmetic groups disallows mixing `%` and `**` - allowSamePrecedence: false, - // with other arithmetic operators. - groups: [ - ["%", "**"], - ["%", "+"], - ["%", "-"], - ["%", "*"], - ["%", "/"], - ["/", "*"], - ["&", "|", "<<", ">>", ">>>"], - ["==", "!=", "===", "!=="], - ["&&", "||"], - ["in", "instanceof"], - ], - }, - ], + allowSamePrecedence: false, + // with other arithmetic operators. + groups: [ + ["%", "**"], + ["%", "+"], + ["%", "-"], + ["%", "*"], + ["%", "/"], + ["/", "*"], + ["&", "|", "<<", ">>", ">>>"], + ["==", "!=", "===", "!=="], + ["&&", "||"], + ["in", "instanceof"], + ], + }, + ], - // disallow mixed spaces and tabs for indentation - "no-mixed-spaces-and-tabs": "error", + // disallow mixed spaces and tabs for indentation + "no-mixed-spaces-and-tabs": "error", - // disallow use of chained assignment expressions - // https://eslint.org/docs/rules/no-multi-assign - "no-multi-assign": ["error"], + // disallow use of chained assignment expressions + // https://eslint.org/docs/rules/no-multi-assign + "no-multi-assign": ["error"], - // disallow multiple empty lines, only one newline at the end, and no new lines at the beginning - // https://eslint.org/docs/rules/no-multiple-empty-lines - "no-multiple-empty-lines": ["error", { max: 1, maxBOF: 0, maxEOF: 0 }], + // disallow multiple empty lines, only one newline at the end, and no new lines at the beginning + // https://eslint.org/docs/rules/no-multiple-empty-lines + "no-multiple-empty-lines": ["error", { max: 1, maxBOF: 0, maxEOF: 0 }], - // disallow negated conditions - // https://eslint.org/docs/rules/no-negated-condition - "no-negated-condition": "off", + // disallow negated conditions + // https://eslint.org/docs/rules/no-negated-condition + "no-negated-condition": "off", - // disallow nested ternary expressions - "no-nested-ternary": "error", + // disallow nested ternary expressions + "no-nested-ternary": "error", - // disallow use of the Object constructor - "no-new-object": "error", + // disallow use of the Object constructor + "no-new-object": "error", - // disallow use of unary operators, ++ and -- - // https://eslint.org/docs/rules/no-plusplus - "no-plusplus": "error", + // disallow use of unary operators, ++ and -- + // https://eslint.org/docs/rules/no-plusplus + "no-plusplus": "error", - // disallow certain syntax forms - // https://eslint.org/docs/rules/no-restricted-syntax - "no-restricted-syntax": [ - "error", - { - message: + // disallow certain syntax forms + // https://eslint.org/docs/rules/no-restricted-syntax + "no-restricted-syntax": [ + "error", + { + message: "for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array.", - selector: "ForInStatement", - }, - { - message: - "iterators/generators require regenerator-runtime, which is too heavyweight for this guide to allow them. Separately, loops should be avoided in favor of array iterations.", - selector: "ForOfStatement", - }, - { - message: "Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand.", - selector: "LabeledStatement", - }, - { - message: "`with` is disallowed in strict mode because it makes code impossible to predict and optimize.", - selector: "WithStatement", - }, - { - message: "`useMemo` with an empty dependency array can't provide a stable reference, use `useRef` instead.", - selector: "CallExpression[callee.name=useMemo][arguments.1.type=ArrayExpression][arguments.1.elements.length=0]", - }, - { - message: "Use `.key` instead of `.keyCode`", - selector: "MemberExpression > .property[type=Identifier][name=keyCode]", - }, - { - message: "Do not use full-width tilde. Use wave dash instead.", - // eslint-disable-next-line no-restricted-syntax - selector: ":matches(Literal[value=/~/],TemplateElement[value.raw=/~/])", - }, - { - message: "Use `.toString()` instead of template literal if you want to convert a value to string.", - selector: "TemplateLiteral[quasis.0.value.raw=\"\"][quasis.1.tail=true][quasis.1.value.raw=\"\"]", - }, - ], - - // disallow space between function identifier and application - // deprecated in favor of func-call-spacing - "no-spaced-func": "off", - - // disallow tab characters entirely - "no-tabs": "error", - - // disallow the use of ternary operators - "no-ternary": "off", - - // disallow trailing whitespace at the end of lines - "no-trailing-spaces": [ - "error", - { - ignoreComments: false, - skipBlankLines: false, - }, - ], - - // disallow dangling underscores in identifiers - // https://eslint.org/docs/rules/no-underscore-dangle - "no-underscore-dangle": ["error", noUnderscoreDangle], - - // disallow the use of Boolean literals in conditional expressions - // also, prefer `a || b` over `a ? a : b` - // https://eslint.org/docs/rules/no-unneeded-ternary - "no-unneeded-ternary": ["error", { defaultAssignment: false }], - - // disallow whitespace before properties - // https://eslint.org/docs/rules/no-whitespace-before-property - "no-whitespace-before-property": "error", - - // enforce the location of single-line statements - // https://eslint.org/docs/rules/nonblock-statement-body-position - "nonblock-statement-body-position": ["error", "beside", { overrides: {} }], - - // https://eslint.org/docs/rules/object-curly-newline - "object-curly-newline": [ - "error", - { - ExportDeclaration: { consistent: true, minProperties: 4, multiline: true }, - ImportDeclaration: { consistent: true, minProperties: 4, multiline: true }, - ObjectExpression: { consistent: true, minProperties: 4, multiline: true }, - ObjectPattern: { consistent: true, minProperties: 4, multiline: true }, - }, - ], - - // enforce line breaks between braces - // require padding inside curly braces - "object-curly-spacing": ["error", "always"], - - // enforce "same line" or "multiple line" on object properties. - // https://eslint.org/docs/rules/object-property-newline - "object-property-newline": [ - "error", - { - allowAllPropertiesOnSameLine: true, - }, - ], - - // allow just one var statement per function - "one-var": ["error", "never"], + selector: "ForInStatement", + }, + { + message: "Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand.", + selector: "LabeledStatement", + }, + { + message: "`with` is disallowed in strict mode because it makes code impossible to predict and optimize.", + selector: "WithStatement", + }, + { + message: "`useMemo` with an empty dependency array can't provide a stable reference, use `useRef` instead.", + selector: "CallExpression[callee.name=useMemo][arguments.1.type=ArrayExpression][arguments.1.elements.length=0]", + }, + { + message: "Use `.key` instead of `.keyCode`", + selector: "MemberExpression > .property[type=Identifier][name=keyCode]", + }, + { + message: "Do not use full-width tilde. Use wave dash instead.", + // eslint-disable-next-line no-restricted-syntax + selector: ":matches(Literal[value=/~/],TemplateElement[value.raw=/~/])", + }, + { + message: "Use `.toString()` instead of template literal if you want to convert a value to string.", + selector: "TemplateLiteral[quasis.0.value.raw=\"\"][quasis.1.tail=true][quasis.1.value.raw=\"\"]", + }, + ], - // require a newline around variable declaration - // https://eslint.org/docs/rules/one-var-declaration-per-line - "one-var-declaration-per-line": ["error", "always"], + // disallow space between function identifier and application + // deprecated in favor of func-call-spacing + "no-spaced-func": "off", - // require assignment operator shorthand where possible or prohibit it entirely - // https://eslint.org/docs/rules/operator-assignment - "operator-assignment": ["error", "always"], + // disallow tab characters entirelyp + "no-tabs": "error", - // Requires operator at the beginning of the line in multiline statements - // https://eslint.org/docs/rules/operator-linebreak - "operator-linebreak": ["error", "before", { overrides: { "=": "none" } }], + // disallow the use of ternary operators + "no-ternary": "off", - // disallow padding within blocks - "padded-blocks": [ - "error", - { - blocks: "never", - classes: "never", - switches: "never", - }, - { - allowSingleLineBlocks: true, - }, - ], - - // Require or disallow padding lines between statements - // https://eslint.org/docs/rules/padding-line-between-statements - "padding-line-between-statements": "off", + // disallow trailing whitespace at the end of lines + "no-trailing-spaces": [ + "error", + { + ignoreComments: true, + skipBlankLines: false, + }, + ], + + // disallow dangling underscores in identifiers + // https://eslint.org/docs/rules/no-underscore-dangle + "no-underscore-dangle": ["error", noUnderscoreDangle], + + // disallow the use of Boolean literals in conditional expressions + // also, prefer `a || b` over `a ? a : b` + // https://eslint.org/docs/rules/no-unneeded-ternary + "no-unneeded-ternary": ["error", { defaultAssignment: false }], + + // disallow whitespace before properties + // https://eslint.org/docs/rules/no-whitespace-before-property + "no-whitespace-before-property": "error", + + // enforce the location of single-line statements + // https://eslint.org/docs/rules/nonblock-statement-body-position + "nonblock-statement-body-position": ["error", "beside", { overrides: {} }], + + // https://eslint.org/docs/rules/object-curly-newline + "object-curly-newline": [ + "error", + { + ExportDeclaration: { consistent: true, minProperties: 4, multiline: true }, + ImportDeclaration: { consistent: true, minProperties: 4, multiline: true }, + ObjectExpression: { consistent: true, minProperties: 4, multiline: true }, + ObjectPattern: { consistent: true, minProperties: 4, multiline: true }, + }, + ], + + // enforce line breaks between braces + // require padding inside curly braces + "object-curly-spacing": ["error", "always"], + + // enforce "same line" or "multiple line" on object properties. + // https://eslint.org/docs/rules/object-property-newline + "object-property-newline": [ + "error", + { + allowAllPropertiesOnSameLine: true, + }, + ], + + // allow just one var statement per function + "one-var": ["error", "never"], + + // require a newline around variable declaration + // https://eslint.org/docs/rules/one-var-declaration-per-line + "one-var-declaration-per-line": ["error", "always"], + + // require assignment operator shorthand where possible or prohibit it entirely + // https://eslint.org/docs/rules/operator-assignment + "operator-assignment": ["error", "always"], + + // Requires operator at the beginning of the line in multiline statements + // https://eslint.org/docs/rules/operator-linebreak + "operator-linebreak": stylistic ? "off" : ["error", "before", { overrides: { "=": "none" } }], + + // disallow padding within blocks + "padded-blocks": [ + "error", + { + blocks: "never", + classes: "never", + switches: "never", + }, + { + allowSingleLineBlocks: true, + }, + ], - // Disallow the use of Math.pow in favor of the ** operator - // https://eslint.org/docs/rules/prefer-exponentiation-operator - "prefer-exponentiation-operator": "error", + // Require or disallow padding lines between statements + // https://eslint.org/docs/rules/padding-line-between-statements + "padding-line-between-statements": "off", - // Prefer use of an object spread over Object.assign - // https://eslint.org/docs/rules/prefer-object-spread - "prefer-object-spread": "error", + // Disallow the use of Math.pow in favor of the ** operator + // https://eslint.org/docs/rules/prefer-exponentiation-operator + "prefer-exponentiation-operator": "error", - // do not require jsdoc - // https://eslint.org/docs/rules/require-jsdoc - "require-jsdoc": "off", + // Prefer use of an object spread over Object.assign + // https://eslint.org/docs/rules/prefer-object-spread + "prefer-object-spread": "error", - // enforce spacing before and after semicolons - "semi-spacing": ["error", { after: true, before: false }], + // do not require jsdoc + // https://eslint.org/docs/rules/require-jsdoc + "require-jsdoc": "off", - // Enforce location of semicolons - // https://eslint.org/docs/rules/semi-style - "semi-style": ["error", "last"], + // enforce spacing before and after semicolons + "semi-spacing": ["error", { after: true, before: false }], - // requires object keys to be sorted - // Disabled because of perfectionist/sort-objects - "sort-keys": "off", + // Enforce location of semicolons + // https://eslint.org/docs/rules/semi-style + "semi-style": ["error", "last"], - // sort variables within the same declaration block - "sort-vars": "off", + // requires object keys to be sorted + // Disabled because of perfectionist/sort-objects + "sort-keys": "off", - // require or disallow spaces inside parentheses - "space-in-parens": ["error", "never"], + // sort variables within the same declaration block + "sort-vars": "off", - // Require or disallow spaces before/after unary operators - // https://eslint.org/docs/rules/space-unary-ops - "space-unary-ops": [ - "error", - { - nonwords: false, - overrides: {}, - words: true, - }, - ], + // require or disallow spaces inside parentheses + "space-in-parens": ["error", "never"], - // require or disallow a space immediately following the // or /* in a comment - // https://eslint.org/docs/rules/spaced-comment - "spaced-comment": [ - "error", - "always", - { - block: { - balanced: true, - exceptions: ["-", "+"], - markers: ["=", "!", ":", "::"], // space here to support sprockets directives and flow comment types + // Require or disallow spaces before/after unary operators + // https://eslint.org/docs/rules/space-unary-ops + "space-unary-ops": [ + "error", + { + nonwords: false, + overrides: {}, + words: true, }, - line: { - exceptions: ["-", "+", "*"], - markers: ["=", "!", "/"], // space here to support sprockets directives, slash for TS /// comments + ], + + // require or disallow a space immediately following the // or /* in a comment + // https://eslint.org/docs/rules/spaced-comment + "spaced-comment": [ + "error", + "always", + { + block: { + balanced: true, + exceptions: ["-", "+"], + markers: ["=", "!", ":", "::"], // space here to support sprockets directives and flow comment types + }, + line: { + exceptions: ["-", "+", "*"], + markers: ["=", "!", "/"], // space here to support sprockets directives, slash for TS /// comments + }, }, - }, - ], + ], - // Enforce spacing around colons of switch statements - // https://eslint.org/docs/rules/switch-colon-spacing - "switch-colon-spacing": ["error", { after: true, before: false }], + // Enforce spacing around colons of switch statements + // https://eslint.org/docs/rules/switch-colon-spacing + "switch-colon-spacing": ["error", { after: true, before: false }], - // Require or disallow spacing between template tags and their literals - // https://eslint.org/docs/rules/template-tag-spacing - "template-tag-spacing": ["error", "never"], + // Require or disallow spacing between template tags and their literals + // https://eslint.org/docs/rules/template-tag-spacing + "template-tag-spacing": ["error", "never"], - // require or disallow the Unicode Byte Order Mark - // https://eslint.org/docs/rules/unicode-bom - "unicode-bom": ["error", "never"], + // require or disallow the Unicode Byte Order Mark + // https://eslint.org/docs/rules/unicode-bom + "unicode-bom": ["error", "never"], - // require regex literals to be wrapped in parentheses - "wrap-regex": "off", + // require regex literals to be wrapped in parentheses + "wrap-regex": "off", + }; }; -export default createConfig("all", async (config, oFiles) => { - const { files = oFiles, prettier } = config; +export default createConfig("all", async (config, oFiles) => { + const { files = oFiles, prettier, stylistic } = config; return [ { files, name: "anolilab/style/rules", rules: { - ...styleRules, + ...styleRules(stylistic), "quote-props": "off", ...prettier diff --git a/packages/eslint-config/src/index.ts b/packages/eslint-config/src/index.ts index aaef04431..50fc2e8b8 100644 --- a/packages/eslint-config/src/index.ts +++ b/packages/eslint-config/src/index.ts @@ -7,6 +7,7 @@ import { FlatConfigComposer } from "eslint-flat-config-utils"; import bestPractices from "./config/best-practices"; import errors from "./config/errors"; +import es6 from "./config/es6"; import ignores from "./config/ignores"; import antfu from "./config/plugins/antfu"; import astro from "./config/plugins/astro"; @@ -66,11 +67,9 @@ const flatConfigProperties = ["name", "languageOptions", "linterOptions", "proce export type ResolvedOptions = T extends boolean ? never : NonNullable; -export const resolveSubOptions = (options: OptionsConfig, key: K): ResolvedOptions => { +export const resolveSubOptions = (options: OptionsConfig, key: K): ResolvedOptions => // eslint-disable-next-line @typescript-eslint/no-explicit-any - return typeof options[key] === "boolean" ? ({} as any) : options[key] || {}; -}; - + (typeof options[key] === "boolean" ? ({} as any) : options[key] || {}); export const getOverrides = (options: OptionsConfig, key: K): Partial => { const sub = resolveSubOptions(options, key); @@ -120,15 +119,16 @@ export const createConfig = async ( const packageJson = parsePackageJson(readFileSync(join(cwd, "package.json"), "utf8")); const enablePrettier = hasPackageJsonAnyDependency(packageJson, ["prettier"]); - const isCwdInScope = hasPackageJsonAnyDependency(packageJson, ["@anolilab/eslint-config"]); + const hasReact = hasPackageJsonAnyDependency(packageJson, ["react", "react-dom"]); + const { - astro: enableAstro = false, + astro: enableAstro = hasPackageJsonAnyDependency(packageJson, ["astro"]), componentExts: componentExtensions = [], gitignore: enableGitignore = true, html: enableHtml = false, - jsx: enableJsx = true, + jsx: enableJsx = hasPackageJsonAnyDependency(packageJson, ["eslint-plugin-jsx-a11y", "eslint-plugin-validate-jsx-nesting"]) || hasReact, lodash: enableLodash = hasPackageJsonAnyDependency(packageJson, [ "lodash", "underscore", @@ -435,9 +435,7 @@ export const createConfig = async ( "lodash.uniqueid", ]), playwright: enablePlaywright = hasPackageJsonAnyDependency(packageJson, ["playwright", "eslint-plugin-playwright"]), - react: enableReact = hasPackageJsonAnyDependency(packageJson, [ - "react", - "react-dom", + react: enableReact = hasReact || hasPackageJsonAnyDependency(packageJson, [ "eslint-plugin-react", "eslint-plugin-react-hooks", "eslint-plugin-react-refresh", @@ -536,7 +534,7 @@ export const createConfig = async ( } } - let isInEditor = options.isInEditor; + let { isInEditor } = options; if (isInEditor === undefined || isInEditor === false) { isInEditor = isInEditorEnvironment(); @@ -564,7 +562,7 @@ export const createConfig = async ( if (enableGitignore) { if (typeof enableGitignore === "boolean") { configs.push( - interopDefault(import("eslint-config-flat-gitignore")).then(r => [ + interopDefault(import("eslint-config-flat-gitignore")).then((r) => [ r({ name: "anolilab/gitignore", strict: false, @@ -573,7 +571,7 @@ export const createConfig = async ( ); } else { configs.push( - interopDefault(import("eslint-config-flat-gitignore")).then(r => [ + interopDefault(import("eslint-config-flat-gitignore")).then((r) => [ r({ name: "anolilab/gitignore", ...enableGitignore, @@ -594,7 +592,12 @@ export const createConfig = async ( }), bestPractices({}), errors({}), - style({}), + style({ + stylistic: stylisticOptions, + }), + es6({ + isInEditor, + }), variables({}), comments({ files: getFiles(options, "comments"), @@ -607,10 +610,12 @@ export const createConfig = async ( }), jsdoc({ files: getFiles(options, "jsdoc"), - // overrides: getFiles(options, "jsdoc"), + jsx: enableJsx, + overrides: getOverrides(options, "jsdoc"), packageJson, silent, stylistic: stylisticOptions, + typescript: enableTypeScript, }), imports({ cwd, diff --git a/packages/eslint-config/src/typegen.d.ts b/packages/eslint-config/src/typegen.d.ts deleted file mode 100644 index a7fa48635..000000000 --- a/packages/eslint-config/src/typegen.d.ts +++ /dev/null @@ -1,25106 +0,0 @@ -/* eslint-disable */ -/* prettier-ignore */ -import type { Linter } from 'eslint' - -export interface RuleOptions { - /** - * Enforce linebreaks after opening and before closing array brackets - * @see https://eslint.style/rules/js/array-bracket-newline - */ - "@stylistic/array-bracket-newline"?: Linter.RuleEntry; - /** - * Enforce consistent spacing inside array brackets - * @see https://eslint.style/rules/js/array-bracket-spacing - */ - "@stylistic/array-bracket-spacing"?: Linter.RuleEntry; - /** - * Enforce line breaks after each array element - * @see https://eslint.style/rules/js/array-element-newline - */ - "@stylistic/array-element-newline"?: Linter.RuleEntry; - /** - * Require parentheses around arrow function arguments - * @see https://eslint.style/rules/js/arrow-parens - */ - "@stylistic/arrow-parens"?: Linter.RuleEntry; - /** - * Enforce consistent spacing before and after the arrow in arrow functions - * @see https://eslint.style/rules/js/arrow-spacing - */ - "@stylistic/arrow-spacing"?: Linter.RuleEntry; - /** - * Disallow or enforce spaces inside of blocks after opening block and before closing block - * @see https://eslint.style/rules/ts/block-spacing - */ - "@stylistic/block-spacing"?: Linter.RuleEntry; - /** - * Enforce consistent brace style for blocks - * @see https://eslint.style/rules/ts/brace-style - */ - "@stylistic/brace-style"?: Linter.RuleEntry; - /** - * Require or disallow trailing commas - * @see https://eslint.style/rules/ts/comma-dangle - */ - "@stylistic/comma-dangle"?: Linter.RuleEntry; - /** - * Enforce consistent spacing before and after commas - * @see https://eslint.style/rules/ts/comma-spacing - */ - "@stylistic/comma-spacing"?: Linter.RuleEntry; - /** - * Enforce consistent comma style - * @see https://eslint.style/rules/js/comma-style - */ - "@stylistic/comma-style"?: Linter.RuleEntry; - /** - * Enforce consistent spacing inside computed property brackets - * @see https://eslint.style/rules/js/computed-property-spacing - */ - "@stylistic/computed-property-spacing"?: Linter.RuleEntry; - /** - * Enforce consistent line breaks after opening and before closing braces - * @see https://eslint.style/rules/plus/curly-newline - */ - "@stylistic/curly-newline"?: Linter.RuleEntry; - /** - * Enforce consistent newlines before and after dots - * @see https://eslint.style/rules/js/dot-location - */ - "@stylistic/dot-location"?: Linter.RuleEntry; - /** - * Require or disallow newline at the end of files - * @see https://eslint.style/rules/js/eol-last - */ - "@stylistic/eol-last"?: Linter.RuleEntry; - /** - * Require or disallow spacing between function identifiers and their invocations - * @see https://eslint.style/rules/ts/function-call-spacing - */ - "@stylistic/func-call-spacing"?: Linter.RuleEntry; - /** - * Enforce line breaks between arguments of a function call - * @see https://eslint.style/rules/js/function-call-argument-newline - */ - "@stylistic/function-call-argument-newline"?: Linter.RuleEntry; - /** - * Require or disallow spacing between function identifiers and their invocations - * @see https://eslint.style/rules/ts/function-call-spacing - */ - "@stylistic/function-call-spacing"?: Linter.RuleEntry; - /** - * Enforce consistent line breaks inside function parentheses - * @see https://eslint.style/rules/js/function-paren-newline - */ - "@stylistic/function-paren-newline"?: Linter.RuleEntry; - /** - * Enforce consistent spacing around `*` operators in generator functions - * @see https://eslint.style/rules/js/generator-star-spacing - */ - "@stylistic/generator-star-spacing"?: Linter.RuleEntry; - /** - * Enforce the location of arrow function bodies - * @see https://eslint.style/rules/js/implicit-arrow-linebreak - */ - "@stylistic/implicit-arrow-linebreak"?: Linter.RuleEntry; - /** - * Enforce consistent indentation - * @see https://eslint.style/rules/ts/indent - */ - "@stylistic/indent"?: Linter.RuleEntry; - /** - * Indentation for binary operators - * @see https://eslint.style/rules/plus/indent-binary-ops - */ - "@stylistic/indent-binary-ops"?: Linter.RuleEntry; - /** - * Enforce or disallow spaces inside of curly braces in JSX attributes and expressions - * @see https://eslint.style/rules/jsx/jsx-child-element-spacing - */ - "@stylistic/jsx-child-element-spacing"?: Linter.RuleEntry<[]>; - /** - * Enforce closing bracket location in JSX - * @see https://eslint.style/rules/jsx/jsx-closing-bracket-location - */ - "@stylistic/jsx-closing-bracket-location"?: Linter.RuleEntry; - /** - * Enforce closing tag location for multiline JSX - * @see https://eslint.style/rules/jsx/jsx-closing-tag-location - */ - "@stylistic/jsx-closing-tag-location"?: Linter.RuleEntry; - /** - * Disallow unnecessary JSX expressions when literals alone are sufficient or enforce JSX expressions on literals in JSX children or attributes - * @see https://eslint.style/rules/jsx/jsx-curly-brace-presence - */ - "@stylistic/jsx-curly-brace-presence"?: Linter.RuleEntry; - /** - * Enforce consistent linebreaks in curly braces in JSX attributes and expressions - * @see https://eslint.style/rules/jsx/jsx-curly-newline - */ - "@stylistic/jsx-curly-newline"?: Linter.RuleEntry; - /** - * Enforce or disallow spaces inside of curly braces in JSX attributes and expressions - * @see https://eslint.style/rules/jsx/jsx-curly-spacing - */ - "@stylistic/jsx-curly-spacing"?: Linter.RuleEntry; - /** - * Enforce or disallow spaces around equal signs in JSX attributes - * @see https://eslint.style/rules/jsx/jsx-equals-spacing - */ - "@stylistic/jsx-equals-spacing"?: Linter.RuleEntry; - /** - * Enforce proper position of the first property in JSX - * @see https://eslint.style/rules/jsx/jsx-first-prop-new-line - */ - "@stylistic/jsx-first-prop-new-line"?: Linter.RuleEntry; - /** - * Enforce line breaks before and after JSX elements when they are used as arguments to a function. - * @see https://eslint.style/rules/jsx/jsx-function-call-newline - */ - "@stylistic/jsx-function-call-newline"?: Linter.RuleEntry; - /** - * Enforce JSX indentation. Deprecated, use `indent` rule instead. - * @see https://eslint.style/rules/jsx/jsx-indent - * @deprecated - */ - "@stylistic/jsx-indent"?: Linter.RuleEntry; - /** - * Enforce props indentation in JSX - * @see https://eslint.style/rules/jsx/jsx-indent-props - */ - "@stylistic/jsx-indent-props"?: Linter.RuleEntry; - /** - * Enforce maximum of props on a single line in JSX - * @see https://eslint.style/rules/jsx/jsx-max-props-per-line - */ - "@stylistic/jsx-max-props-per-line"?: Linter.RuleEntry; - /** - * Require or prevent a new line after jsx elements and expressions. - * @see https://eslint.style/rules/jsx/jsx-newline - */ - "@stylistic/jsx-newline"?: Linter.RuleEntry; - /** - * Require one JSX element per line - * @see https://eslint.style/rules/jsx/jsx-one-expression-per-line - */ - "@stylistic/jsx-one-expression-per-line"?: Linter.RuleEntry; - /** - * Enforce PascalCase for user-defined JSX components - * @see https://eslint.style/rules/jsx/jsx-pascal-case - */ - "@stylistic/jsx-pascal-case"?: Linter.RuleEntry; - /** - * Disallow multiple spaces between inline JSX props - * @see https://eslint.style/rules/jsx/jsx-props-no-multi-spaces - */ - "@stylistic/jsx-props-no-multi-spaces"?: Linter.RuleEntry<[]>; - /** - * Enforce the consistent use of either double or single quotes in JSX attributes - * @see https://eslint.style/rules/js/jsx-quotes - */ - "@stylistic/jsx-quotes"?: Linter.RuleEntry; - /** - * Disallow extra closing tags for components without children - * @see https://eslint.style/rules/jsx/jsx-self-closing-comp - */ - "@stylistic/jsx-self-closing-comp"?: Linter.RuleEntry; - /** - * Enforce props alphabetical sorting - * @see https://eslint.style/rules/jsx/jsx-sort-props - */ - "@stylistic/jsx-sort-props"?: Linter.RuleEntry; - /** - * Enforce whitespace in and around the JSX opening and closing brackets - * @see https://eslint.style/rules/jsx/jsx-tag-spacing - */ - "@stylistic/jsx-tag-spacing"?: Linter.RuleEntry; - /** - * Disallow missing parentheses around multiline JSX - * @see https://eslint.style/rules/jsx/jsx-wrap-multilines - */ - "@stylistic/jsx-wrap-multilines"?: Linter.RuleEntry; - /** - * Enforce consistent spacing between property names and type annotations in types and interfaces - * @see https://eslint.style/rules/ts/key-spacing - */ - "@stylistic/key-spacing"?: Linter.RuleEntry; - /** - * Enforce consistent spacing before and after keywords - * @see https://eslint.style/rules/ts/keyword-spacing - */ - "@stylistic/keyword-spacing"?: Linter.RuleEntry; - /** - * Enforce position of line comments - * @see https://eslint.style/rules/js/line-comment-position - */ - "@stylistic/line-comment-position"?: Linter.RuleEntry; - /** - * Enforce consistent linebreak style - * @see https://eslint.style/rules/js/linebreak-style - */ - "@stylistic/linebreak-style"?: Linter.RuleEntry; - /** - * Require empty lines around comments - * @see https://eslint.style/rules/ts/lines-around-comment - */ - "@stylistic/lines-around-comment"?: Linter.RuleEntry; - /** - * Require or disallow an empty line between class members - * @see https://eslint.style/rules/ts/lines-between-class-members - */ - "@stylistic/lines-between-class-members"?: Linter.RuleEntry; - /** - * Enforce a maximum line length - * @see https://eslint.style/rules/js/max-len - */ - "@stylistic/max-len"?: Linter.RuleEntry; - /** - * Enforce a maximum number of statements allowed per line - * @see https://eslint.style/rules/js/max-statements-per-line - */ - "@stylistic/max-statements-per-line"?: Linter.RuleEntry; - /** - * Require a specific member delimiter style for interfaces and type literals - * @see https://eslint.style/rules/ts/member-delimiter-style - */ - "@stylistic/member-delimiter-style"?: Linter.RuleEntry; - /** - * Enforce a particular style for multiline comments - * @see https://eslint.style/rules/js/multiline-comment-style - */ - "@stylistic/multiline-comment-style"?: Linter.RuleEntry; - /** - * Enforce newlines between operands of ternary expressions - * @see https://eslint.style/rules/js/multiline-ternary - */ - "@stylistic/multiline-ternary"?: Linter.RuleEntry; - /** - * Enforce or disallow parentheses when invoking a constructor with no arguments - * @see https://eslint.style/rules/js/new-parens - */ - "@stylistic/new-parens"?: Linter.RuleEntry; - /** - * Require a newline after each call in a method chain - * @see https://eslint.style/rules/js/newline-per-chained-call - */ - "@stylistic/newline-per-chained-call"?: Linter.RuleEntry; - /** - * Disallow arrow functions where they could be confused with comparisons - * @see https://eslint.style/rules/js/no-confusing-arrow - */ - "@stylistic/no-confusing-arrow"?: Linter.RuleEntry; - /** - * Disallow unnecessary parentheses - * @see https://eslint.style/rules/ts/no-extra-parens - */ - "@stylistic/no-extra-parens"?: Linter.RuleEntry; - /** - * Disallow unnecessary semicolons - * @see https://eslint.style/rules/ts/no-extra-semi - */ - "@stylistic/no-extra-semi"?: Linter.RuleEntry<[]>; - /** - * Disallow leading or trailing decimal points in numeric literals - * @see https://eslint.style/rules/js/no-floating-decimal - */ - "@stylistic/no-floating-decimal"?: Linter.RuleEntry<[]>; - /** - * Disallow mixed binary operators - * @see https://eslint.style/rules/js/no-mixed-operators - */ - "@stylistic/no-mixed-operators"?: Linter.RuleEntry; - /** - * Disallow mixed spaces and tabs for indentation - * @see https://eslint.style/rules/js/no-mixed-spaces-and-tabs - */ - "@stylistic/no-mixed-spaces-and-tabs"?: Linter.RuleEntry; - /** - * Disallow multiple spaces - * @see https://eslint.style/rules/js/no-multi-spaces - */ - "@stylistic/no-multi-spaces"?: Linter.RuleEntry; - /** - * Disallow multiple empty lines - * @see https://eslint.style/rules/js/no-multiple-empty-lines - */ - "@stylistic/no-multiple-empty-lines"?: Linter.RuleEntry; - /** - * Disallow all tabs - * @see https://eslint.style/rules/js/no-tabs - */ - "@stylistic/no-tabs"?: Linter.RuleEntry; - /** - * Disallow trailing whitespace at the end of lines - * @see https://eslint.style/rules/js/no-trailing-spaces - */ - "@stylistic/no-trailing-spaces"?: Linter.RuleEntry; - /** - * Disallow whitespace before properties - * @see https://eslint.style/rules/js/no-whitespace-before-property - */ - "@stylistic/no-whitespace-before-property"?: Linter.RuleEntry<[]>; - /** - * Enforce the location of single-line statements - * @see https://eslint.style/rules/js/nonblock-statement-body-position - */ - "@stylistic/nonblock-statement-body-position"?: Linter.RuleEntry; - /** - * Enforce consistent line breaks after opening and before closing braces - * @see https://eslint.style/rules/ts/object-curly-newline - */ - "@stylistic/object-curly-newline"?: Linter.RuleEntry; - /** - * Enforce consistent spacing inside braces - * @see https://eslint.style/rules/ts/object-curly-spacing - */ - "@stylistic/object-curly-spacing"?: Linter.RuleEntry; - /** - * Enforce placing object properties on separate lines - * @see https://eslint.style/rules/ts/object-property-newline - */ - "@stylistic/object-property-newline"?: Linter.RuleEntry; - /** - * Require or disallow newlines around variable declarations - * @see https://eslint.style/rules/js/one-var-declaration-per-line - */ - "@stylistic/one-var-declaration-per-line"?: Linter.RuleEntry; - /** - * Enforce consistent linebreak style for operators - * @see https://eslint.style/rules/js/operator-linebreak - */ - "@stylistic/operator-linebreak"?: Linter.RuleEntry; - /** - * Require or disallow padding within blocks - * @see https://eslint.style/rules/js/padded-blocks - */ - "@stylistic/padded-blocks"?: Linter.RuleEntry; - /** - * Require or disallow padding lines between statements - * @see https://eslint.style/rules/ts/padding-line-between-statements - */ - "@stylistic/padding-line-between-statements"?: Linter.RuleEntry; - /** - * Require quotes around object literal, type literal, interfaces and enums property names - * @see https://eslint.style/rules/ts/quote-props - */ - "@stylistic/quote-props"?: Linter.RuleEntry; - /** - * Enforce the consistent use of either backticks, double, or single quotes - * @see https://eslint.style/rules/ts/quotes - */ - "@stylistic/quotes"?: Linter.RuleEntry; - /** - * Enforce spacing between rest and spread operators and their expressions - * @see https://eslint.style/rules/js/rest-spread-spacing - */ - "@stylistic/rest-spread-spacing"?: Linter.RuleEntry; - /** - * Require or disallow semicolons instead of ASI - * @see https://eslint.style/rules/ts/semi - */ - "@stylistic/semi"?: Linter.RuleEntry; - /** - * Enforce consistent spacing before and after semicolons - * @see https://eslint.style/rules/ts/semi-spacing - */ - "@stylistic/semi-spacing"?: Linter.RuleEntry; - /** - * Enforce location of semicolons - * @see https://eslint.style/rules/js/semi-style - */ - "@stylistic/semi-style"?: Linter.RuleEntry; - /** - * Enforce consistent spacing before blocks - * @see https://eslint.style/rules/ts/space-before-blocks - */ - "@stylistic/space-before-blocks"?: Linter.RuleEntry; - /** - * Enforce consistent spacing before function parenthesis - * @see https://eslint.style/rules/ts/space-before-function-paren - */ - "@stylistic/space-before-function-paren"?: Linter.RuleEntry; - /** - * Enforce consistent spacing inside parentheses - * @see https://eslint.style/rules/js/space-in-parens - */ - "@stylistic/space-in-parens"?: Linter.RuleEntry; - /** - * Require spacing around infix operators - * @see https://eslint.style/rules/ts/space-infix-ops - */ - "@stylistic/space-infix-ops"?: Linter.RuleEntry; - /** - * Enforce consistent spacing before or after unary operators - * @see https://eslint.style/rules/js/space-unary-ops - */ - "@stylistic/space-unary-ops"?: Linter.RuleEntry; - /** - * Enforce consistent spacing after the `//` or `/*` in a comment - * @see https://eslint.style/rules/js/spaced-comment - */ - "@stylistic/spaced-comment"?: Linter.RuleEntry; - /** - * Enforce spacing around colons of switch statements - * @see https://eslint.style/rules/js/switch-colon-spacing - */ - "@stylistic/switch-colon-spacing"?: Linter.RuleEntry; - /** - * Require or disallow spacing around embedded expressions of template strings - * @see https://eslint.style/rules/js/template-curly-spacing - */ - "@stylistic/template-curly-spacing"?: Linter.RuleEntry; - /** - * Require or disallow spacing between template tags and their literals - * @see https://eslint.style/rules/js/template-tag-spacing - */ - "@stylistic/template-tag-spacing"?: Linter.RuleEntry; - /** - * Require consistent spacing around type annotations - * @see https://eslint.style/rules/ts/type-annotation-spacing - */ - "@stylistic/type-annotation-spacing"?: Linter.RuleEntry; - /** - * Enforces consistent spacing inside TypeScript type generics - * @see https://eslint.style/rules/plus/type-generic-spacing - */ - "@stylistic/type-generic-spacing"?: Linter.RuleEntry<[]>; - /** - * Expect space before the type declaration in the named tuple - * @see https://eslint.style/rules/plus/type-named-tuple-spacing - */ - "@stylistic/type-named-tuple-spacing"?: Linter.RuleEntry<[]>; - /** - * Require parentheses around immediate `function` invocations - * @see https://eslint.style/rules/js/wrap-iife - */ - "@stylistic/wrap-iife"?: Linter.RuleEntry; - /** - * Require parenthesis around regex literals - * @see https://eslint.style/rules/js/wrap-regex - */ - "@stylistic/wrap-regex"?: Linter.RuleEntry<[]>; - /** - * Require or disallow spacing around the `*` in `yield*` expressions - * @see https://eslint.style/rules/js/yield-star-spacing - */ - "@stylistic/yield-star-spacing"?: Linter.RuleEntry; - /** - * Exhaustive deps rule for useQuery - * @see https://tanstack.com/query/latest/docs/eslint/exhaustive-deps - */ - "@tanstack/query/exhaustive-deps"?: Linter.RuleEntry<[]>; - /** - * Ensure correct order of inference sensitive properties for infinite queries - * @see https://tanstack.com/query/latest/docs/eslint/infinite-query-property-order - */ - "@tanstack/query/infinite-query-property-order"?: Linter.RuleEntry<[]>; - /** - * Disallows rest destructuring in queries - * @see https://tanstack.com/query/latest/docs/eslint/no-rest-destructuring - */ - "@tanstack/query/no-rest-destructuring"?: Linter.RuleEntry<[]>; - /** - * Disallow putting the result of query hooks directly in a React hook dependency array - * @see https://tanstack.com/query/latest/docs/eslint/no-unstable-deps - */ - "@tanstack/query/no-unstable-deps"?: Linter.RuleEntry<[]>; - /** - * Ensures queryFn returns a non-undefined value - * @see https://tanstack.com/query/latest/docs/eslint/no-void-query-fn - */ - "@tanstack/query/no-void-query-fn"?: Linter.RuleEntry<[]>; - /** - * Makes sure that QueryClient is stable - * @see https://tanstack.com/query/latest/docs/eslint/stable-query-client - */ - "@tanstack/query/stable-query-client"?: Linter.RuleEntry<[]>; - /** - * Ensure correct order of inference sensitive properties for createRoute functions - * @see https://tanstack.com/router/latest/docs/eslint/create-route-property-order - */ - "@tanstack/router/create-route-property-order"?: Linter.RuleEntry<[]>; - /** - * Require that function overload signatures be consecutive - * @see https://typescript-eslint.io/rules/adjacent-overload-signatures - */ - "@typescript-eslint/adjacent-overload-signatures"?: Linter.RuleEntry<[]>; - /** - * Require consistently using either `T[]` or `Array` for arrays - * @see https://typescript-eslint.io/rules/array-type - */ - "@typescript-eslint/array-type"?: Linter.RuleEntry; - /** - * Disallow awaiting a value that is not a Thenable - * @see https://typescript-eslint.io/rules/await-thenable - */ - "@typescript-eslint/await-thenable"?: Linter.RuleEntry<[]>; - /** - * Disallow `@ts-` comments or require descriptions after directives - * @see https://typescript-eslint.io/rules/ban-ts-comment - */ - "@typescript-eslint/ban-ts-comment"?: Linter.RuleEntry; - /** - * Disallow `// tslint:` comments - * @see https://typescript-eslint.io/rules/ban-tslint-comment - */ - "@typescript-eslint/ban-tslint-comment"?: Linter.RuleEntry<[]>; - /** - * Enforce that literals on classes are exposed in a consistent style - * @see https://typescript-eslint.io/rules/class-literal-property-style - */ - "@typescript-eslint/class-literal-property-style"?: Linter.RuleEntry; - /** - * Enforce that class methods utilize `this` - * @see https://typescript-eslint.io/rules/class-methods-use-this - */ - "@typescript-eslint/class-methods-use-this"?: Linter.RuleEntry; - /** - * Enforce specifying generic type arguments on type annotation or constructor name of a constructor call - * @see https://typescript-eslint.io/rules/consistent-generic-constructors - */ - "@typescript-eslint/consistent-generic-constructors"?: Linter.RuleEntry; - /** - * Require or disallow the `Record` type - * @see https://typescript-eslint.io/rules/consistent-indexed-object-style - */ - "@typescript-eslint/consistent-indexed-object-style"?: Linter.RuleEntry; - /** - * Require `return` statements to either always or never specify values - * @see https://typescript-eslint.io/rules/consistent-return - */ - "@typescript-eslint/consistent-return"?: Linter.RuleEntry; - /** - * Enforce consistent usage of type assertions - * @see https://typescript-eslint.io/rules/consistent-type-assertions - */ - "@typescript-eslint/consistent-type-assertions"?: Linter.RuleEntry; - /** - * Enforce type definitions to consistently use either `interface` or `type` - * @see https://typescript-eslint.io/rules/consistent-type-definitions - */ - "@typescript-eslint/consistent-type-definitions"?: Linter.RuleEntry; - /** - * Enforce consistent usage of type exports - * @see https://typescript-eslint.io/rules/consistent-type-exports - */ - "@typescript-eslint/consistent-type-exports"?: Linter.RuleEntry; - /** - * Enforce consistent usage of type imports - * @see https://typescript-eslint.io/rules/consistent-type-imports - */ - "@typescript-eslint/consistent-type-imports"?: Linter.RuleEntry; - /** - * Enforce default parameters to be last - * @see https://typescript-eslint.io/rules/default-param-last - */ - "@typescript-eslint/default-param-last"?: Linter.RuleEntry<[]>; - /** - * Enforce dot notation whenever possible - * @see https://typescript-eslint.io/rules/dot-notation - */ - "@typescript-eslint/dot-notation"?: Linter.RuleEntry; - /** - * Require explicit return types on functions and class methods - * @see https://typescript-eslint.io/rules/explicit-function-return-type - */ - "@typescript-eslint/explicit-function-return-type"?: Linter.RuleEntry; - /** - * Require explicit accessibility modifiers on class properties and methods - * @see https://typescript-eslint.io/rules/explicit-member-accessibility - */ - "@typescript-eslint/explicit-member-accessibility"?: Linter.RuleEntry; - /** - * Require explicit return and argument types on exported functions' and classes' public class methods - * @see https://typescript-eslint.io/rules/explicit-module-boundary-types - */ - "@typescript-eslint/explicit-module-boundary-types"?: Linter.RuleEntry; - /** - * Require or disallow initialization in variable declarations - * @see https://typescript-eslint.io/rules/init-declarations - */ - "@typescript-eslint/init-declarations"?: Linter.RuleEntry; - /** - * Enforce a maximum number of parameters in function definitions - * @see https://typescript-eslint.io/rules/max-params - */ - "@typescript-eslint/max-params"?: Linter.RuleEntry; - /** - * Require a consistent member declaration order - * @see https://typescript-eslint.io/rules/member-ordering - */ - "@typescript-eslint/member-ordering"?: Linter.RuleEntry; - /** - * Enforce using a particular method signature syntax - * @see https://typescript-eslint.io/rules/method-signature-style - */ - "@typescript-eslint/method-signature-style"?: Linter.RuleEntry; - /** - * Enforce naming conventions for everything across a codebase - * @see https://typescript-eslint.io/rules/naming-convention - */ - "@typescript-eslint/naming-convention"?: Linter.RuleEntry; - /** - * Disallow generic `Array` constructors - * @see https://typescript-eslint.io/rules/no-array-constructor - */ - "@typescript-eslint/no-array-constructor"?: Linter.RuleEntry<[]>; - /** - * Disallow using the `delete` operator on array values - * @see https://typescript-eslint.io/rules/no-array-delete - */ - "@typescript-eslint/no-array-delete"?: Linter.RuleEntry<[]>; - /** - * Require `.toString()` and `.toLocaleString()` to only be called on objects which provide useful information when stringified - * @see https://typescript-eslint.io/rules/no-base-to-string - */ - "@typescript-eslint/no-base-to-string"?: Linter.RuleEntry; - /** - * Disallow non-null assertion in locations that may be confusing - * @see https://typescript-eslint.io/rules/no-confusing-non-null-assertion - */ - "@typescript-eslint/no-confusing-non-null-assertion"?: Linter.RuleEntry<[]>; - /** - * Require expressions of type void to appear in statement position - * @see https://typescript-eslint.io/rules/no-confusing-void-expression - */ - "@typescript-eslint/no-confusing-void-expression"?: Linter.RuleEntry; - /** - * Disallow using code marked as `@deprecated` - * @see https://typescript-eslint.io/rules/no-deprecated - */ - "@typescript-eslint/no-deprecated"?: Linter.RuleEntry; - /** - * Disallow duplicate class members - * @see https://typescript-eslint.io/rules/no-dupe-class-members - */ - "@typescript-eslint/no-dupe-class-members"?: Linter.RuleEntry<[]>; - /** - * Disallow duplicate enum member values - * @see https://typescript-eslint.io/rules/no-duplicate-enum-values - */ - "@typescript-eslint/no-duplicate-enum-values"?: Linter.RuleEntry<[]>; - /** - * Disallow duplicate constituents of union or intersection types - * @see https://typescript-eslint.io/rules/no-duplicate-type-constituents - */ - "@typescript-eslint/no-duplicate-type-constituents"?: Linter.RuleEntry; - /** - * Disallow using the `delete` operator on computed key expressions - * @see https://typescript-eslint.io/rules/no-dynamic-delete - */ - "@typescript-eslint/no-dynamic-delete"?: Linter.RuleEntry<[]>; - /** - * Disallow empty functions - * @see https://typescript-eslint.io/rules/no-empty-function - */ - "@typescript-eslint/no-empty-function"?: Linter.RuleEntry; - /** - * Disallow the declaration of empty interfaces - * @see https://typescript-eslint.io/rules/no-empty-interface - * @deprecated - */ - "@typescript-eslint/no-empty-interface"?: Linter.RuleEntry; - /** - * Disallow accidentally using the "empty object" type - * @see https://typescript-eslint.io/rules/no-empty-object-type - */ - "@typescript-eslint/no-empty-object-type"?: Linter.RuleEntry; - /** - * Disallow the `any` type - * @see https://typescript-eslint.io/rules/no-explicit-any - */ - "@typescript-eslint/no-explicit-any"?: Linter.RuleEntry; - /** - * Disallow extra non-null assertions - * @see https://typescript-eslint.io/rules/no-extra-non-null-assertion - */ - "@typescript-eslint/no-extra-non-null-assertion"?: Linter.RuleEntry<[]>; - /** - * Disallow classes used as namespaces - * @see https://typescript-eslint.io/rules/no-extraneous-class - */ - "@typescript-eslint/no-extraneous-class"?: Linter.RuleEntry; - /** - * Require Promise-like statements to be handled appropriately - * @see https://typescript-eslint.io/rules/no-floating-promises - */ - "@typescript-eslint/no-floating-promises"?: Linter.RuleEntry; - /** - * Disallow iterating over an array with a for-in loop - * @see https://typescript-eslint.io/rules/no-for-in-array - */ - "@typescript-eslint/no-for-in-array"?: Linter.RuleEntry<[]>; - /** - * Disallow the use of `eval()`-like functions - * @see https://typescript-eslint.io/rules/no-implied-eval - */ - "@typescript-eslint/no-implied-eval"?: Linter.RuleEntry<[]>; - /** - * Enforce the use of top-level import type qualifier when an import only has specifiers with inline type qualifiers - * @see https://typescript-eslint.io/rules/no-import-type-side-effects - */ - "@typescript-eslint/no-import-type-side-effects"?: Linter.RuleEntry<[]>; - /** - * Disallow explicit type declarations for variables or parameters initialized to a number, string, or boolean - * @see https://typescript-eslint.io/rules/no-inferrable-types - */ - "@typescript-eslint/no-inferrable-types"?: Linter.RuleEntry; - /** - * Disallow `this` keywords outside of classes or class-like objects - * @see https://typescript-eslint.io/rules/no-invalid-this - */ - "@typescript-eslint/no-invalid-this"?: Linter.RuleEntry; - /** - * Disallow `void` type outside of generic or return types - * @see https://typescript-eslint.io/rules/no-invalid-void-type - */ - "@typescript-eslint/no-invalid-void-type"?: Linter.RuleEntry; - /** - * Disallow function declarations that contain unsafe references inside loop statements - * @see https://typescript-eslint.io/rules/no-loop-func - */ - "@typescript-eslint/no-loop-func"?: Linter.RuleEntry<[]>; - /** - * Disallow literal numbers that lose precision - * @see https://typescript-eslint.io/rules/no-loss-of-precision - * @deprecated - */ - "@typescript-eslint/no-loss-of-precision"?: Linter.RuleEntry<[]>; - /** - * Disallow magic numbers - * @see https://typescript-eslint.io/rules/no-magic-numbers - */ - "@typescript-eslint/no-magic-numbers"?: Linter.RuleEntry; - /** - * Disallow the `void` operator except when used to discard a value - * @see https://typescript-eslint.io/rules/no-meaningless-void-operator - */ - "@typescript-eslint/no-meaningless-void-operator"?: Linter.RuleEntry; - /** - * Enforce valid definition of `new` and `constructor` - * @see https://typescript-eslint.io/rules/no-misused-new - */ - "@typescript-eslint/no-misused-new"?: Linter.RuleEntry<[]>; - /** - * Disallow Promises in places not designed to handle them - * @see https://typescript-eslint.io/rules/no-misused-promises - */ - "@typescript-eslint/no-misused-promises"?: Linter.RuleEntry; - /** - * Disallow using the spread operator when it might cause unexpected behavior - * @see https://typescript-eslint.io/rules/no-misused-spread - */ - "@typescript-eslint/no-misused-spread"?: Linter.RuleEntry; - /** - * Disallow enums from having both number and string members - * @see https://typescript-eslint.io/rules/no-mixed-enums - */ - "@typescript-eslint/no-mixed-enums"?: Linter.RuleEntry<[]>; - /** - * Disallow TypeScript namespaces - * @see https://typescript-eslint.io/rules/no-namespace - */ - "@typescript-eslint/no-namespace"?: Linter.RuleEntry; - /** - * Disallow non-null assertions in the left operand of a nullish coalescing operator - * @see https://typescript-eslint.io/rules/no-non-null-asserted-nullish-coalescing - */ - "@typescript-eslint/no-non-null-asserted-nullish-coalescing"?: Linter.RuleEntry<[]>; - /** - * Disallow non-null assertions after an optional chain expression - * @see https://typescript-eslint.io/rules/no-non-null-asserted-optional-chain - */ - "@typescript-eslint/no-non-null-asserted-optional-chain"?: Linter.RuleEntry<[]>; - /** - * Disallow non-null assertions using the `!` postfix operator - * @see https://typescript-eslint.io/rules/no-non-null-assertion - */ - "@typescript-eslint/no-non-null-assertion"?: Linter.RuleEntry<[]>; - /** - * Disallow variable redeclaration - * @see https://typescript-eslint.io/rules/no-redeclare - */ - "@typescript-eslint/no-redeclare"?: Linter.RuleEntry; - /** - * Disallow members of unions and intersections that do nothing or override type information - * @see https://typescript-eslint.io/rules/no-redundant-type-constituents - */ - "@typescript-eslint/no-redundant-type-constituents"?: Linter.RuleEntry<[]>; - /** - * Disallow invocation of `require()` - * @see https://typescript-eslint.io/rules/no-require-imports - */ - "@typescript-eslint/no-require-imports"?: Linter.RuleEntry; - /** - * Disallow specified modules when loaded by `import` - * @see https://typescript-eslint.io/rules/no-restricted-imports - */ - "@typescript-eslint/no-restricted-imports"?: Linter.RuleEntry; - /** - * Disallow certain types - * @see https://typescript-eslint.io/rules/no-restricted-types - */ - "@typescript-eslint/no-restricted-types"?: Linter.RuleEntry; - /** - * Disallow variable declarations from shadowing variables declared in the outer scope - * @see https://typescript-eslint.io/rules/no-shadow - */ - "@typescript-eslint/no-shadow"?: Linter.RuleEntry; - /** - * Disallow aliasing `this` - * @see https://typescript-eslint.io/rules/no-this-alias - */ - "@typescript-eslint/no-this-alias"?: Linter.RuleEntry; - /** - * Disallow type aliases - * @see https://typescript-eslint.io/rules/no-type-alias - * @deprecated - */ - "@typescript-eslint/no-type-alias"?: Linter.RuleEntry; - /** - * Disallow unnecessary equality comparisons against boolean literals - * @see https://typescript-eslint.io/rules/no-unnecessary-boolean-literal-compare - */ - "@typescript-eslint/no-unnecessary-boolean-literal-compare"?: Linter.RuleEntry; - /** - * Disallow conditionals where the type is always truthy or always falsy - * @see https://typescript-eslint.io/rules/no-unnecessary-condition - */ - "@typescript-eslint/no-unnecessary-condition"?: Linter.RuleEntry; - /** - * Disallow unnecessary assignment of constructor property parameter - * @see https://typescript-eslint.io/rules/no-unnecessary-parameter-property-assignment - */ - "@typescript-eslint/no-unnecessary-parameter-property-assignment"?: Linter.RuleEntry<[]>; - /** - * Disallow unnecessary namespace qualifiers - * @see https://typescript-eslint.io/rules/no-unnecessary-qualifier - */ - "@typescript-eslint/no-unnecessary-qualifier"?: Linter.RuleEntry<[]>; - /** - * Disallow unnecessary template expressions - * @see https://typescript-eslint.io/rules/no-unnecessary-template-expression - */ - "@typescript-eslint/no-unnecessary-template-expression"?: Linter.RuleEntry<[]>; - /** - * Disallow type arguments that are equal to the default - * @see https://typescript-eslint.io/rules/no-unnecessary-type-arguments - */ - "@typescript-eslint/no-unnecessary-type-arguments"?: Linter.RuleEntry<[]>; - /** - * Disallow type assertions that do not change the type of an expression - * @see https://typescript-eslint.io/rules/no-unnecessary-type-assertion - */ - "@typescript-eslint/no-unnecessary-type-assertion"?: Linter.RuleEntry; - /** - * Disallow unnecessary constraints on generic types - * @see https://typescript-eslint.io/rules/no-unnecessary-type-constraint - */ - "@typescript-eslint/no-unnecessary-type-constraint"?: Linter.RuleEntry<[]>; - /** - * Disallow conversion idioms when they do not change the type or value of the expression - * @see https://typescript-eslint.io/rules/no-unnecessary-type-conversion - */ - "@typescript-eslint/no-unnecessary-type-conversion"?: Linter.RuleEntry<[]>; - /** - * Disallow type parameters that aren't used multiple times - * @see https://typescript-eslint.io/rules/no-unnecessary-type-parameters - */ - "@typescript-eslint/no-unnecessary-type-parameters"?: Linter.RuleEntry<[]>; - /** - * Disallow calling a function with a value with type `any` - * @see https://typescript-eslint.io/rules/no-unsafe-argument - */ - "@typescript-eslint/no-unsafe-argument"?: Linter.RuleEntry<[]>; - /** - * Disallow assigning a value with type `any` to variables and properties - * @see https://typescript-eslint.io/rules/no-unsafe-assignment - */ - "@typescript-eslint/no-unsafe-assignment"?: Linter.RuleEntry<[]>; - /** - * Disallow calling a value with type `any` - * @see https://typescript-eslint.io/rules/no-unsafe-call - */ - "@typescript-eslint/no-unsafe-call"?: Linter.RuleEntry<[]>; - /** - * Disallow unsafe declaration merging - * @see https://typescript-eslint.io/rules/no-unsafe-declaration-merging - */ - "@typescript-eslint/no-unsafe-declaration-merging"?: Linter.RuleEntry<[]>; - /** - * Disallow comparing an enum value with a non-enum value - * @see https://typescript-eslint.io/rules/no-unsafe-enum-comparison - */ - "@typescript-eslint/no-unsafe-enum-comparison"?: Linter.RuleEntry<[]>; - /** - * Disallow using the unsafe built-in Function type - * @see https://typescript-eslint.io/rules/no-unsafe-function-type - */ - "@typescript-eslint/no-unsafe-function-type"?: Linter.RuleEntry<[]>; - /** - * Disallow member access on a value with type `any` - * @see https://typescript-eslint.io/rules/no-unsafe-member-access - */ - "@typescript-eslint/no-unsafe-member-access"?: Linter.RuleEntry<[]>; - /** - * Disallow returning a value with type `any` from a function - * @see https://typescript-eslint.io/rules/no-unsafe-return - */ - "@typescript-eslint/no-unsafe-return"?: Linter.RuleEntry<[]>; - /** - * Disallow type assertions that narrow a type - * @see https://typescript-eslint.io/rules/no-unsafe-type-assertion - */ - "@typescript-eslint/no-unsafe-type-assertion"?: Linter.RuleEntry<[]>; - /** - * Require unary negation to take a number - * @see https://typescript-eslint.io/rules/no-unsafe-unary-minus - */ - "@typescript-eslint/no-unsafe-unary-minus"?: Linter.RuleEntry<[]>; - /** - * Disallow unused expressions - * @see https://typescript-eslint.io/rules/no-unused-expressions - */ - "@typescript-eslint/no-unused-expressions"?: Linter.RuleEntry; - /** - * Disallow unused variables - * @see https://typescript-eslint.io/rules/no-unused-vars - */ - "@typescript-eslint/no-unused-vars"?: Linter.RuleEntry; - /** - * Disallow the use of variables before they are defined - * @see https://typescript-eslint.io/rules/no-use-before-define - */ - "@typescript-eslint/no-use-before-define"?: Linter.RuleEntry; - /** - * Disallow unnecessary constructors - * @see https://typescript-eslint.io/rules/no-useless-constructor - */ - "@typescript-eslint/no-useless-constructor"?: Linter.RuleEntry<[]>; - /** - * Disallow empty exports that don't change anything in a module file - * @see https://typescript-eslint.io/rules/no-useless-empty-export - */ - "@typescript-eslint/no-useless-empty-export"?: Linter.RuleEntry<[]>; - /** - * Disallow `require` statements except in import statements - * @see https://typescript-eslint.io/rules/no-var-requires - * @deprecated - */ - "@typescript-eslint/no-var-requires"?: Linter.RuleEntry; - /** - * Disallow using confusing built-in primitive class wrappers - * @see https://typescript-eslint.io/rules/no-wrapper-object-types - */ - "@typescript-eslint/no-wrapper-object-types"?: Linter.RuleEntry<[]>; - /** - * Enforce non-null assertions over explicit type assertions - * @see https://typescript-eslint.io/rules/non-nullable-type-assertion-style - */ - "@typescript-eslint/non-nullable-type-assertion-style"?: Linter.RuleEntry<[]>; - /** - * Disallow throwing non-`Error` values as exceptions - * @see https://typescript-eslint.io/rules/only-throw-error - */ - "@typescript-eslint/only-throw-error"?: Linter.RuleEntry; - /** - * Require or disallow parameter properties in class constructors - * @see https://typescript-eslint.io/rules/parameter-properties - */ - "@typescript-eslint/parameter-properties"?: Linter.RuleEntry; - /** - * Enforce the use of `as const` over literal type - * @see https://typescript-eslint.io/rules/prefer-as-const - */ - "@typescript-eslint/prefer-as-const"?: Linter.RuleEntry<[]>; - /** - * Require destructuring from arrays and/or objects - * @see https://typescript-eslint.io/rules/prefer-destructuring - */ - "@typescript-eslint/prefer-destructuring"?: Linter.RuleEntry; - /** - * Require each enum member value to be explicitly initialized - * @see https://typescript-eslint.io/rules/prefer-enum-initializers - */ - "@typescript-eslint/prefer-enum-initializers"?: Linter.RuleEntry<[]>; - /** - * Enforce the use of Array.prototype.find() over Array.prototype.filter() followed by [0] when looking for a single result - * @see https://typescript-eslint.io/rules/prefer-find - */ - "@typescript-eslint/prefer-find"?: Linter.RuleEntry<[]>; - /** - * Enforce the use of `for-of` loop over the standard `for` loop where possible - * @see https://typescript-eslint.io/rules/prefer-for-of - */ - "@typescript-eslint/prefer-for-of"?: Linter.RuleEntry<[]>; - /** - * Enforce using function types instead of interfaces with call signatures - * @see https://typescript-eslint.io/rules/prefer-function-type - */ - "@typescript-eslint/prefer-function-type"?: Linter.RuleEntry<[]>; - /** - * Enforce `includes` method over `indexOf` method - * @see https://typescript-eslint.io/rules/prefer-includes - */ - "@typescript-eslint/prefer-includes"?: Linter.RuleEntry<[]>; - /** - * Require all enum members to be literal values - * @see https://typescript-eslint.io/rules/prefer-literal-enum-member - */ - "@typescript-eslint/prefer-literal-enum-member"?: Linter.RuleEntry; - /** - * Require using `namespace` keyword over `module` keyword to declare custom TypeScript modules - * @see https://typescript-eslint.io/rules/prefer-namespace-keyword - */ - "@typescript-eslint/prefer-namespace-keyword"?: Linter.RuleEntry<[]>; - /** - * Enforce using the nullish coalescing operator instead of logical assignments or chaining - * @see https://typescript-eslint.io/rules/prefer-nullish-coalescing - */ - "@typescript-eslint/prefer-nullish-coalescing"?: Linter.RuleEntry; - /** - * Enforce using concise optional chain expressions instead of chained logical ands, negated logical ors, or empty objects - * @see https://typescript-eslint.io/rules/prefer-optional-chain - */ - "@typescript-eslint/prefer-optional-chain"?: Linter.RuleEntry; - /** - * Require using Error objects as Promise rejection reasons - * @see https://typescript-eslint.io/rules/prefer-promise-reject-errors - */ - "@typescript-eslint/prefer-promise-reject-errors"?: Linter.RuleEntry; - /** - * Require private members to be marked as `readonly` if they're never modified outside of the constructor - * @see https://typescript-eslint.io/rules/prefer-readonly - */ - "@typescript-eslint/prefer-readonly"?: Linter.RuleEntry; - /** - * Require function parameters to be typed as `readonly` to prevent accidental mutation of inputs - * @see https://typescript-eslint.io/rules/prefer-readonly-parameter-types - */ - "@typescript-eslint/prefer-readonly-parameter-types"?: Linter.RuleEntry; - /** - * Enforce using type parameter when calling `Array#reduce` instead of using a type assertion - * @see https://typescript-eslint.io/rules/prefer-reduce-type-parameter - */ - "@typescript-eslint/prefer-reduce-type-parameter"?: Linter.RuleEntry<[]>; - /** - * Enforce `RegExp#exec` over `String#match` if no global flag is provided - * @see https://typescript-eslint.io/rules/prefer-regexp-exec - */ - "@typescript-eslint/prefer-regexp-exec"?: Linter.RuleEntry<[]>; - /** - * Enforce that `this` is used when only `this` type is returned - * @see https://typescript-eslint.io/rules/prefer-return-this-type - */ - "@typescript-eslint/prefer-return-this-type"?: Linter.RuleEntry<[]>; - /** - * Enforce using `String#startsWith` and `String#endsWith` over other equivalent methods of checking substrings - * @see https://typescript-eslint.io/rules/prefer-string-starts-ends-with - */ - "@typescript-eslint/prefer-string-starts-ends-with"?: Linter.RuleEntry; - /** - * Enforce using `@ts-expect-error` over `@ts-ignore` - * @see https://typescript-eslint.io/rules/prefer-ts-expect-error - * @deprecated - */ - "@typescript-eslint/prefer-ts-expect-error"?: Linter.RuleEntry<[]>; - /** - * Require any function or method that returns a Promise to be marked async - * @see https://typescript-eslint.io/rules/promise-function-async - */ - "@typescript-eslint/promise-function-async"?: Linter.RuleEntry; - /** - * Enforce that `get()` types should be assignable to their equivalent `set()` type - * @see https://typescript-eslint.io/rules/related-getter-setter-pairs - */ - "@typescript-eslint/related-getter-setter-pairs"?: Linter.RuleEntry<[]>; - /** - * Require `Array#sort` and `Array#toSorted` calls to always provide a `compareFunction` - * @see https://typescript-eslint.io/rules/require-array-sort-compare - */ - "@typescript-eslint/require-array-sort-compare"?: Linter.RuleEntry; - /** - * Disallow async functions which do not return promises and have no `await` expression - * @see https://typescript-eslint.io/rules/require-await - */ - "@typescript-eslint/require-await"?: Linter.RuleEntry<[]>; - /** - * Require both operands of addition to be the same type and be `bigint`, `number`, or `string` - * @see https://typescript-eslint.io/rules/restrict-plus-operands - */ - "@typescript-eslint/restrict-plus-operands"?: Linter.RuleEntry; - /** - * Enforce template literal expressions to be of `string` type - * @see https://typescript-eslint.io/rules/restrict-template-expressions - */ - "@typescript-eslint/restrict-template-expressions"?: Linter.RuleEntry; - /** - * Enforce consistent awaiting of returned promises - * @see https://typescript-eslint.io/rules/return-await - */ - "@typescript-eslint/return-await"?: Linter.RuleEntry; - /** - * Enforce constituents of a type union/intersection to be sorted alphabetically - * @see https://typescript-eslint.io/rules/sort-type-constituents - * @deprecated - */ - "@typescript-eslint/sort-type-constituents"?: Linter.RuleEntry; - /** - * Disallow certain types in boolean expressions - * @see https://typescript-eslint.io/rules/strict-boolean-expressions - */ - "@typescript-eslint/strict-boolean-expressions"?: Linter.RuleEntry; - /** - * Require switch-case statements to be exhaustive - * @see https://typescript-eslint.io/rules/switch-exhaustiveness-check - */ - "@typescript-eslint/switch-exhaustiveness-check"?: Linter.RuleEntry; - /** - * Disallow certain triple slash directives in favor of ES6-style import declarations - * @see https://typescript-eslint.io/rules/triple-slash-reference - */ - "@typescript-eslint/triple-slash-reference"?: Linter.RuleEntry; - /** - * Require type annotations in certain places - * @see https://typescript-eslint.io/rules/typedef - */ - "@typescript-eslint/typedef"?: Linter.RuleEntry; - /** - * Enforce unbound methods are called with their expected scope - * @see https://typescript-eslint.io/rules/unbound-method - */ - "@typescript-eslint/unbound-method"?: Linter.RuleEntry; - /** - * Disallow two overloads that could be unified into one with a union or an optional/rest parameter - * @see https://typescript-eslint.io/rules/unified-signatures - */ - "@typescript-eslint/unified-signatures"?: Linter.RuleEntry; - /** - * Enforce typing arguments in Promise rejection callbacks as `unknown` - * @see https://typescript-eslint.io/rules/use-unknown-in-catch-callback-variable - */ - "@typescript-eslint/use-unknown-in-catch-callback-variable"?: Linter.RuleEntry<[]>; - /** - * Having line breaks styles to object, array and named imports - * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/consistent-chaining.md - */ - "antfu/consistent-chaining"?: Linter.RuleEntry; - /** - * Having line breaks styles to object, array and named imports - * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/consistent-list-newline.md - */ - "antfu/consistent-list-newline"?: Linter.RuleEntry; - /** - * Enforce Anthony's style of curly bracket - * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/curly.md - */ - "antfu/curly"?: Linter.RuleEntry<[]>; - /** - * Newline after if - * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/if-newline.md - */ - "antfu/if-newline"?: Linter.RuleEntry<[]>; - /** - * Fix duplication in imports - * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/import-dedupe.md - */ - "antfu/import-dedupe"?: Linter.RuleEntry<[]>; - /** - * Enforce consistent indentation in `unindent` template tag - * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/indent-unindent.md - */ - "antfu/indent-unindent"?: Linter.RuleEntry; - /** - * Prevent importing modules in `dist` folder - * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/no-import-dist.test.ts - */ - "antfu/no-import-dist"?: Linter.RuleEntry<[]>; - /** - * Prevent importing modules in `node_modules` folder by relative or absolute path - * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/no-import-node-modules-by-path.test.ts - */ - "antfu/no-import-node-modules-by-path"?: Linter.RuleEntry<[]>; - /** - * Prevent using top-level await - * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/no-top-level-await.test.ts - */ - "antfu/no-top-level-await"?: Linter.RuleEntry<[]>; - /** - * Do not use `exports =` - * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/no-ts-export-equal.test.ts - */ - "antfu/no-ts-export-equal"?: Linter.RuleEntry<[]>; - /** - * Enforce top-level functions to be declared with function keyword - * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/top-level-function.md - */ - "antfu/top-level-function"?: Linter.RuleEntry<[]>; - /** - * apply `jsx-a11y/alt-text` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/alt-text/ - */ - "astro/jsx-a11y/alt-text"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/anchor-ambiguous-text` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/anchor-ambiguous-text/ - */ - "astro/jsx-a11y/anchor-ambiguous-text"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/anchor-has-content` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/anchor-has-content/ - */ - "astro/jsx-a11y/anchor-has-content"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/anchor-is-valid` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/anchor-is-valid/ - */ - "astro/jsx-a11y/anchor-is-valid"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/aria-activedescendant-has-tabindex` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/aria-activedescendant-has-tabindex/ - */ - "astro/jsx-a11y/aria-activedescendant-has-tabindex"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/aria-props` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/aria-props/ - */ - "astro/jsx-a11y/aria-props"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/aria-proptypes` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/aria-proptypes/ - */ - "astro/jsx-a11y/aria-proptypes"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/aria-role` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/aria-role/ - */ - "astro/jsx-a11y/aria-role"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/aria-unsupported-elements` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/aria-unsupported-elements/ - */ - "astro/jsx-a11y/aria-unsupported-elements"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/autocomplete-valid` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/autocomplete-valid/ - */ - "astro/jsx-a11y/autocomplete-valid"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/click-events-have-key-events` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/click-events-have-key-events/ - */ - "astro/jsx-a11y/click-events-have-key-events"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/control-has-associated-label` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/control-has-associated-label/ - */ - "astro/jsx-a11y/control-has-associated-label"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/heading-has-content` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/heading-has-content/ - */ - "astro/jsx-a11y/heading-has-content"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/html-has-lang` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/html-has-lang/ - */ - "astro/jsx-a11y/html-has-lang"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/iframe-has-title` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/iframe-has-title/ - */ - "astro/jsx-a11y/iframe-has-title"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/img-redundant-alt` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/img-redundant-alt/ - */ - "astro/jsx-a11y/img-redundant-alt"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/interactive-supports-focus` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/interactive-supports-focus/ - */ - "astro/jsx-a11y/interactive-supports-focus"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/label-has-associated-control` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/label-has-associated-control/ - */ - "astro/jsx-a11y/label-has-associated-control"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/lang` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/lang/ - */ - "astro/jsx-a11y/lang"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/media-has-caption` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/media-has-caption/ - */ - "astro/jsx-a11y/media-has-caption"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/mouse-events-have-key-events` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/mouse-events-have-key-events/ - */ - "astro/jsx-a11y/mouse-events-have-key-events"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/no-access-key` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-access-key/ - */ - "astro/jsx-a11y/no-access-key"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/no-aria-hidden-on-focusable` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-aria-hidden-on-focusable/ - */ - "astro/jsx-a11y/no-aria-hidden-on-focusable"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/no-autofocus` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-autofocus/ - */ - "astro/jsx-a11y/no-autofocus"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/no-distracting-elements` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-distracting-elements/ - */ - "astro/jsx-a11y/no-distracting-elements"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/no-interactive-element-to-noninteractive-role` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-interactive-element-to-noninteractive-role/ - */ - "astro/jsx-a11y/no-interactive-element-to-noninteractive-role"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/no-noninteractive-element-interactions` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-noninteractive-element-interactions/ - */ - "astro/jsx-a11y/no-noninteractive-element-interactions"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/no-noninteractive-element-to-interactive-role` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-noninteractive-element-to-interactive-role/ - */ - "astro/jsx-a11y/no-noninteractive-element-to-interactive-role"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/no-noninteractive-tabindex` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-noninteractive-tabindex/ - */ - "astro/jsx-a11y/no-noninteractive-tabindex"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/no-redundant-roles` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-redundant-roles/ - */ - "astro/jsx-a11y/no-redundant-roles"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/no-static-element-interactions` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-static-element-interactions/ - */ - "astro/jsx-a11y/no-static-element-interactions"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/prefer-tag-over-role` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/prefer-tag-over-role/ - */ - "astro/jsx-a11y/prefer-tag-over-role"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/role-has-required-aria-props` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/role-has-required-aria-props/ - */ - "astro/jsx-a11y/role-has-required-aria-props"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/role-supports-aria-props` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/role-supports-aria-props/ - */ - "astro/jsx-a11y/role-supports-aria-props"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/scope` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/scope/ - */ - "astro/jsx-a11y/scope"?: Linter.RuleEntry; - /** - * apply `jsx-a11y/tabindex-no-positive` rule to Astro components - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/tabindex-no-positive/ - */ - "astro/jsx-a11y/tabindex-no-positive"?: Linter.RuleEntry; - /** - * the client:only directive is missing the correct component's framework value - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/missing-client-only-directive-value/ - */ - "astro/missing-client-only-directive-value"?: Linter.RuleEntry<[]>; - /** - * disallow conflicting set directives and child contents - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-conflict-set-directives/ - */ - "astro/no-conflict-set-directives"?: Linter.RuleEntry<[]>; - /** - * disallow using deprecated `Astro.canonicalURL` - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-deprecated-astro-canonicalurl/ - */ - "astro/no-deprecated-astro-canonicalurl"?: Linter.RuleEntry<[]>; - /** - * disallow using deprecated `Astro.fetchContent()` - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-deprecated-astro-fetchcontent/ - */ - "astro/no-deprecated-astro-fetchcontent"?: Linter.RuleEntry<[]>; - /** - * disallow using deprecated `Astro.resolve()` - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-deprecated-astro-resolve/ - */ - "astro/no-deprecated-astro-resolve"?: Linter.RuleEntry<[]>; - /** - * disallow using deprecated `getEntryBySlug()` - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-deprecated-getentrybyslug/ - */ - "astro/no-deprecated-getentrybyslug"?: Linter.RuleEntry<[]>; - /** - * disallow value export - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-exports-from-components/ - */ - "astro/no-exports-from-components"?: Linter.RuleEntry<[]>; - /** - * disallow use of `set:html` to prevent XSS attack - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-set-html-directive/ - */ - "astro/no-set-html-directive"?: Linter.RuleEntry<[]>; - /** - * disallow use of `set:text` - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-set-text-directive/ - */ - "astro/no-set-text-directive"?: Linter.RuleEntry<[]>; - /** - * disallow selectors defined in `style` tag that don't use in HTML - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-unused-css-selector/ - */ - "astro/no-unused-css-selector"?: Linter.RuleEntry<[]>; - /** - * disallow unused `define:vars={...}` in `style` tag - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-unused-define-vars-in-style/ - */ - "astro/no-unused-define-vars-in-style"?: Linter.RuleEntry<[]>; - /** - * require `class:list` directives instead of `class` with expressions - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/prefer-class-list-directive/ - */ - "astro/prefer-class-list-directive"?: Linter.RuleEntry<[]>; - /** - * require use object instead of ternary expression in `class:list` - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/prefer-object-class-list/ - */ - "astro/prefer-object-class-list"?: Linter.RuleEntry<[]>; - /** - * require use split array elements in `class:list` - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/prefer-split-class-list/ - */ - "astro/prefer-split-class-list"?: Linter.RuleEntry; - /** - * Require or disallow semicolons instead of ASI - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/semi/ - */ - "astro/semi"?: Linter.RuleEntry; - /** - * enforce sorting of attributes - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/sort-attributes/ - */ - "astro/sort-attributes"?: Linter.RuleEntry; - /** - * disallow warnings when compiling. - * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/valid-compile/ - */ - "astro/valid-compile"?: Linter.RuleEntry<[]>; - /** - * Ensure cross-browser API compatibility - * @see https://github.com/amilajack/eslint-plugin-compat/blob/master/docs/rules/compat.md - */ - "compat/compat"?: Linter.RuleEntry; - /** - * require a `eslint-enable` comment for every `eslint-disable` comment - * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/disable-enable-pair.html - */ - "eslint-comments/disable-enable-pair"?: Linter.RuleEntry; - /** - * disallow a `eslint-enable` comment for multiple `eslint-disable` comments - * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/no-aggregating-enable.html - */ - "eslint-comments/no-aggregating-enable"?: Linter.RuleEntry<[]>; - /** - * disallow duplicate `eslint-disable` comments - * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/no-duplicate-disable.html - */ - "eslint-comments/no-duplicate-disable"?: Linter.RuleEntry<[]>; - /** - * disallow `eslint-disable` comments about specific rules - * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/no-restricted-disable.html - */ - "eslint-comments/no-restricted-disable"?: Linter.RuleEntry; - /** - * disallow `eslint-disable` comments without rule names - * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/no-unlimited-disable.html - */ - "eslint-comments/no-unlimited-disable"?: Linter.RuleEntry<[]>; - /** - * disallow unused `eslint-disable` comments - * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/no-unused-disable.html - */ - "eslint-comments/no-unused-disable"?: Linter.RuleEntry<[]>; - /** - * disallow unused `eslint-enable` comments - * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/no-unused-enable.html - */ - "eslint-comments/no-unused-enable"?: Linter.RuleEntry<[]>; - /** - * disallow ESLint directive-comments - * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/no-use.html - */ - "eslint-comments/no-use"?: Linter.RuleEntry; - /** - * require include descriptions in ESLint directive-comments - * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/require-description.html - */ - "eslint-comments/require-description"?: Linter.RuleEntry; - /** - * Use dprint to format code - */ - "format/dprint"?: Linter.RuleEntry; - /** - * Use Prettier to format code - */ - "format/prettier"?: Linter.RuleEntry; - /** - * Enforce or ban the use of inline type-only markers for named imports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/consistent-type-specifier-style.md - */ - "import/consistent-type-specifier-style"?: Linter.RuleEntry; - /** - * Ensure a default export is present, given a default import. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/default.md - */ - "import/default"?: Linter.RuleEntry<[]>; - /** - * Enforce a leading comment with the webpackChunkName for dynamic imports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/dynamic-import-chunkname.md - */ - "import/dynamic-import-chunkname"?: Linter.RuleEntry; - /** - * Forbid any invalid exports, i.e. re-export of the same name. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/export.md - */ - "import/export"?: Linter.RuleEntry<[]>; - /** - * Ensure all exports appear after other statements. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/exports-last.md - */ - "import/exports-last"?: Linter.RuleEntry<[]>; - /** - * Ensure consistent use of file extension within the import path. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/extensions.md - */ - "import/extensions"?: Linter.RuleEntry; - /** - * Ensure all imports appear before other statements. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/first.md - */ - "import/first"?: Linter.RuleEntry; - /** - * Prefer named exports to be grouped together in a single export declaration. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/group-exports.md - */ - "import/group-exports"?: Linter.RuleEntry<[]>; - /** - * Replaced by `import-x/first`. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/imports-first.md - * @deprecated - */ - "import/imports-first"?: Linter.RuleEntry; - /** - * Enforce the maximum number of dependencies a module can have. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/max-dependencies.md - */ - "import/max-dependencies"?: Linter.RuleEntry; - /** - * Ensure named imports correspond to a named export in the remote file. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/named.md - */ - "import/named"?: Linter.RuleEntry; - /** - * Ensure imported namespaces contain dereferenced properties as they are dereferenced. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/namespace.md - */ - "import/namespace"?: Linter.RuleEntry; - /** - * Enforce a newline after import statements. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/newline-after-import.md - */ - "import/newline-after-import"?: Linter.RuleEntry; - /** - * Forbid import of modules using absolute paths. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-absolute-path.md - */ - "import/no-absolute-path"?: Linter.RuleEntry; - /** - * Forbid AMD `require` and `define` calls. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-amd.md - */ - "import/no-amd"?: Linter.RuleEntry<[]>; - /** - * Forbid anonymous values as default exports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-anonymous-default-export.md - */ - "import/no-anonymous-default-export"?: Linter.RuleEntry; - /** - * Forbid CommonJS `require` calls and `module.exports` or `exports.*`. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-commonjs.md - */ - "import/no-commonjs"?: Linter.RuleEntry; - /** - * Forbid a module from importing a module with a dependency path back to itself. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-cycle.md - */ - "import/no-cycle"?: Linter.RuleEntry; - /** - * Forbid default exports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-default-export.md - */ - "import/no-default-export"?: Linter.RuleEntry<[]>; - /** - * Forbid imported names marked with `@deprecated` documentation tag. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-deprecated.md - */ - "import/no-deprecated"?: Linter.RuleEntry<[]>; - /** - * Forbid repeated import of the same module in multiple places. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-duplicates.md - */ - "import/no-duplicates"?: Linter.RuleEntry; - /** - * Forbid `require()` calls with expressions. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-dynamic-require.md - */ - "import/no-dynamic-require"?: Linter.RuleEntry; - /** - * Forbid empty named import blocks. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-empty-named-blocks.md - */ - "import/no-empty-named-blocks"?: Linter.RuleEntry<[]>; - /** - * Forbid the use of extraneous packages. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-extraneous-dependencies.md - */ - "import/no-extraneous-dependencies"?: Linter.RuleEntry; - /** - * Forbid import statements with CommonJS module.exports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-import-module-exports.md - */ - "import/no-import-module-exports"?: Linter.RuleEntry; - /** - * Forbid importing the submodules of other modules. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-internal-modules.md - */ - "import/no-internal-modules"?: Linter.RuleEntry; - /** - * Forbid the use of mutable exports with `var` or `let`. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-mutable-exports.md - */ - "import/no-mutable-exports"?: Linter.RuleEntry<[]>; - /** - * Forbid use of exported name as identifier of default export. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-named-as-default.md - */ - "import/no-named-as-default"?: Linter.RuleEntry<[]>; - /** - * Forbid use of exported name as property of default export. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-named-as-default-member.md - */ - "import/no-named-as-default-member"?: Linter.RuleEntry<[]>; - /** - * Forbid named default exports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-named-default.md - */ - "import/no-named-default"?: Linter.RuleEntry<[]>; - /** - * Forbid named exports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-named-export.md - */ - "import/no-named-export"?: Linter.RuleEntry<[]>; - /** - * Forbid namespace (a.k.a. "wildcard" `*`) imports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-namespace.md - */ - "import/no-namespace"?: Linter.RuleEntry; - /** - * Forbid Node.js builtin modules. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-nodejs-modules.md - */ - "import/no-nodejs-modules"?: Linter.RuleEntry; - /** - * Forbid importing packages through relative paths. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-relative-packages.md - */ - "import/no-relative-packages"?: Linter.RuleEntry; - /** - * Forbid importing modules from parent directories. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-relative-parent-imports.md - */ - "import/no-relative-parent-imports"?: Linter.RuleEntry; - /** - * Forbid importing a default export by a different name. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-rename-default.md - */ - "import/no-rename-default"?: Linter.RuleEntry; - /** - * Enforce which files can be imported in a given folder. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-restricted-paths.md - */ - "import/no-restricted-paths"?: Linter.RuleEntry; - /** - * Forbid a module from importing itself. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-self-import.md - */ - "import/no-self-import"?: Linter.RuleEntry<[]>; - /** - * Forbid unassigned imports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-unassigned-import.md - */ - "import/no-unassigned-import"?: Linter.RuleEntry; - /** - * Ensure imports point to a file/module that can be resolved. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-unresolved.md - */ - "import/no-unresolved"?: Linter.RuleEntry; - /** - * Forbid modules without exports, or exports without matching import in another module. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-unused-modules.md - */ - "import/no-unused-modules"?: Linter.RuleEntry; - /** - * Forbid unnecessary path segments in import and require statements. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-useless-path-segments.md - */ - "import/no-useless-path-segments"?: Linter.RuleEntry; - /** - * Forbid webpack loader syntax in imports. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/no-webpack-loader-syntax.md - */ - "import/no-webpack-loader-syntax"?: Linter.RuleEntry<[]>; - /** - * Enforce a convention in module import order. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/order.md - */ - "import/order"?: Linter.RuleEntry; - /** - * Prefer a default export if module exports a single name or multiple names. - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/prefer-default-export.md - */ - "import/prefer-default-export"?: Linter.RuleEntry; - /** - * Forbid potentially ambiguous parse goal (`script` vs. `module`). - * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.12.2/docs/rules/unambiguous.md - */ - "import/unambiguous"?: Linter.RuleEntry<[]>; - /** - * Checks that `@access` tags have a valid value. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-access.md#repos-sticky-header - */ - "jsdoc/check-access"?: Linter.RuleEntry<[]>; - /** - * Reports invalid alignment of JSDoc block asterisks. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-alignment.md#repos-sticky-header - */ - "jsdoc/check-alignment"?: Linter.RuleEntry<[]>; - /** - * Ensures that (JavaScript) examples within JSDoc adhere to ESLint rules. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-examples.md#repos-sticky-header - */ - "jsdoc/check-examples"?: Linter.RuleEntry; - /** - * Reports invalid padding inside JSDoc blocks. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-indentation.md#repos-sticky-header - */ - "jsdoc/check-indentation"?: Linter.RuleEntry; - /** - * Reports invalid alignment of JSDoc block lines. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-line-alignment.md#repos-sticky-header - */ - "jsdoc/check-line-alignment"?: Linter.RuleEntry; - /** - * Ensures that parameter names in JSDoc match those in the function declaration. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-param-names.md#repos-sticky-header - */ - "jsdoc/check-param-names"?: Linter.RuleEntry; - /** - * Ensures that property names in JSDoc are not duplicated on the same block and that nested properties have defined roots. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-property-names.md#repos-sticky-header - */ - "jsdoc/check-property-names"?: Linter.RuleEntry; - /** - * Reports against syntax not valid for the mode (e.g., Google Closure Compiler in non-Closure mode). - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-syntax.md#repos-sticky-header - */ - "jsdoc/check-syntax"?: Linter.RuleEntry<[]>; - /** - * Reports invalid block tag names. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-tag-names.md#repos-sticky-header - */ - "jsdoc/check-tag-names"?: Linter.RuleEntry; - /** - * Checks that any `@template` names are actually used in the connected `@typedef` or type alias. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-template-names.md#repos-sticky-header - */ - "jsdoc/check-template-names"?: Linter.RuleEntry<[]>; - /** - * Reports invalid types. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-types.md#repos-sticky-header - */ - "jsdoc/check-types"?: Linter.RuleEntry; - /** - * This rule checks the values for a handful of tags: `@version`, `@since`, `@license` and `@author`. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-values.md#repos-sticky-header - */ - "jsdoc/check-values"?: Linter.RuleEntry; - /** - * Converts non-JSDoc comments preceding or following nodes into JSDoc ones - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/convert-to-jsdoc-comments.md#repos-sticky-header - */ - "jsdoc/convert-to-jsdoc-comments"?: Linter.RuleEntry; - /** - * Expects specific tags to be empty of any content. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/empty-tags.md#repos-sticky-header - */ - "jsdoc/empty-tags"?: Linter.RuleEntry; - /** - * Reports an issue with any non-constructor function using `@implements`. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/implements-on-classes.md#repos-sticky-header - */ - "jsdoc/implements-on-classes"?: Linter.RuleEntry; - /** - * Reports if JSDoc `import()` statements point to a package which is not listed in `dependencies` or `devDependencies` - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/imports-as-dependencies.md#repos-sticky-header - */ - "jsdoc/imports-as-dependencies"?: Linter.RuleEntry<[]>; - /** - * This rule reports doc comments that only restate their attached name. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/informative-docs.md#repos-sticky-header - */ - "jsdoc/informative-docs"?: Linter.RuleEntry; - /** - * Enforces minimum number of newlines before JSDoc comment blocks - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/lines-before-block.md#repos-sticky-header - */ - "jsdoc/lines-before-block"?: Linter.RuleEntry; - /** - * Enforces a regular expression pattern on descriptions. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/match-description.md#repos-sticky-header - */ - "jsdoc/match-description"?: Linter.RuleEntry; - /** - * Reports the name portion of a JSDoc tag if matching or not matching a given regular expression. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/match-name.md#repos-sticky-header - */ - "jsdoc/match-name"?: Linter.RuleEntry; - /** - * Controls how and whether jsdoc blocks can be expressed as single or multiple line blocks. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/multiline-blocks.md#repos-sticky-header - */ - "jsdoc/multiline-blocks"?: Linter.RuleEntry; - /** - * This rule checks for multi-line-style comments which fail to meet the criteria of a jsdoc block. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-bad-blocks.md#repos-sticky-header - */ - "jsdoc/no-bad-blocks"?: Linter.RuleEntry; - /** - * Detects and removes extra lines of a blank block description - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-blank-block-descriptions.md#repos-sticky-header - */ - "jsdoc/no-blank-block-descriptions"?: Linter.RuleEntry<[]>; - /** - * Removes empty blocks with nothing but possibly line breaks - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-blank-blocks.md#repos-sticky-header - */ - "jsdoc/no-blank-blocks"?: Linter.RuleEntry; - /** - * This rule reports defaults being used on the relevant portion of `@param` or `@default`. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-defaults.md#repos-sticky-header - */ - "jsdoc/no-defaults"?: Linter.RuleEntry; - /** - * Reports when certain comment structures are always expected. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-missing-syntax.md#repos-sticky-header - */ - "jsdoc/no-missing-syntax"?: Linter.RuleEntry; - /** - * Prevents use of multiple asterisks at the beginning of lines. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-multi-asterisks.md#repos-sticky-header - */ - "jsdoc/no-multi-asterisks"?: Linter.RuleEntry; - /** - * Reports when certain comment structures are present. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-restricted-syntax.md#repos-sticky-header - */ - "jsdoc/no-restricted-syntax"?: Linter.RuleEntry; - /** - * This rule reports types being used on `@param` or `@returns`. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-types.md#repos-sticky-header - */ - "jsdoc/no-types"?: Linter.RuleEntry; - /** - * Checks that types in jsdoc comments are defined. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-undefined-types.md#repos-sticky-header - */ - "jsdoc/no-undefined-types"?: Linter.RuleEntry; - /** - * Requires that each JSDoc line starts with an `*`. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-asterisk-prefix.md#repos-sticky-header - */ - "jsdoc/require-asterisk-prefix"?: Linter.RuleEntry; - /** - * Requires that all functions have a description. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-description.md#repos-sticky-header - */ - "jsdoc/require-description"?: Linter.RuleEntry; - /** - * Requires that block description, explicit `@description`, and `@param`/`@returns` tag descriptions are written in complete sentences. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-description-complete-sentence.md#repos-sticky-header - */ - "jsdoc/require-description-complete-sentence"?: Linter.RuleEntry; - /** - * Requires that all functions have examples. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-example.md#repos-sticky-header - */ - "jsdoc/require-example"?: Linter.RuleEntry; - /** - * Checks that all files have one `@file`, `@fileoverview`, or `@overview` tag at the beginning of the file. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-file-overview.md#repos-sticky-header - */ - "jsdoc/require-file-overview"?: Linter.RuleEntry; - /** - * Requires a hyphen before the `@param` description. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-hyphen-before-param-description.md#repos-sticky-header - */ - "jsdoc/require-hyphen-before-param-description"?: Linter.RuleEntry; - /** - * Require JSDoc comments - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-jsdoc.md#repos-sticky-header - */ - "jsdoc/require-jsdoc"?: Linter.RuleEntry; - /** - * Requires that all function parameters are documented. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param.md#repos-sticky-header - */ - "jsdoc/require-param"?: Linter.RuleEntry; - /** - * Requires that each `@param` tag has a `description` value. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-description.md#repos-sticky-header - */ - "jsdoc/require-param-description"?: Linter.RuleEntry; - /** - * Requires that all function parameters have names. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-name.md#repos-sticky-header - */ - "jsdoc/require-param-name"?: Linter.RuleEntry; - /** - * Requires that each `@param` tag has a `type` value. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-type.md#repos-sticky-header - */ - "jsdoc/require-param-type"?: Linter.RuleEntry; - /** - * Requires that all `@typedef` and `@namespace` tags have `@property` when their type is a plain `object`, `Object`, or `PlainObject`. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property.md#repos-sticky-header - */ - "jsdoc/require-property"?: Linter.RuleEntry<[]>; - /** - * Requires that each `@property` tag has a `description` value. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property-description.md#repos-sticky-header - */ - "jsdoc/require-property-description"?: Linter.RuleEntry<[]>; - /** - * Requires that all function `@property` tags have names. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property-name.md#repos-sticky-header - */ - "jsdoc/require-property-name"?: Linter.RuleEntry<[]>; - /** - * Requires that each `@property` tag has a `type` value. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property-type.md#repos-sticky-header - */ - "jsdoc/require-property-type"?: Linter.RuleEntry<[]>; - /** - * Requires that returns are documented. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns.md#repos-sticky-header - */ - "jsdoc/require-returns"?: Linter.RuleEntry; - /** - * Requires a return statement in function body if a `@returns` tag is specified in jsdoc comment. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns-check.md#repos-sticky-header - */ - "jsdoc/require-returns-check"?: Linter.RuleEntry; - /** - * Requires that the `@returns` tag has a `description` value. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns-description.md#repos-sticky-header - */ - "jsdoc/require-returns-description"?: Linter.RuleEntry; - /** - * Requires that `@returns` tag has `type` value. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns-type.md#repos-sticky-header - */ - "jsdoc/require-returns-type"?: Linter.RuleEntry; - /** - * Requires template tags for each generic type parameter - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-template.md#repos-sticky-header - */ - "jsdoc/require-template"?: Linter.RuleEntry; - /** - * Requires that throw statements are documented. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-throws.md#repos-sticky-header - */ - "jsdoc/require-throws"?: Linter.RuleEntry; - /** - * Requires yields are documented. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields.md#repos-sticky-header - */ - "jsdoc/require-yields"?: Linter.RuleEntry; - /** - * Requires a yield statement in function body if a `@yields` tag is specified in jsdoc comment. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields-check.md#repos-sticky-header - */ - "jsdoc/require-yields-check"?: Linter.RuleEntry; - /** - * Sorts tags by a specified sequence according to tag name. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/sort-tags.md#repos-sticky-header - */ - "jsdoc/sort-tags"?: Linter.RuleEntry; - /** - * Enforces lines (or no lines) between tags. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/tag-lines.md#repos-sticky-header - */ - "jsdoc/tag-lines"?: Linter.RuleEntry; - /** - * Auto-escape certain characters that are input within block and tag descriptions. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/text-escaping.md#repos-sticky-header - */ - "jsdoc/text-escaping"?: Linter.RuleEntry; - /** - * Requires all types to be valid JSDoc or Closure compiler types without syntax errors. - * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/valid-types.md#repos-sticky-header - */ - "jsdoc/valid-types"?: Linter.RuleEntry; - /** - * enforce line breaks after opening and before closing array brackets - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/array-bracket-newline.html - */ - "jsonc/array-bracket-newline"?: Linter.RuleEntry; - /** - * disallow or enforce spaces inside of brackets - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/array-bracket-spacing.html - */ - "jsonc/array-bracket-spacing"?: Linter.RuleEntry; - /** - * enforce line breaks between array elements - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/array-element-newline.html - */ - "jsonc/array-element-newline"?: Linter.RuleEntry; - /** - * apply jsonc rules similar to your configured ESLint core rules - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/auto.html - */ - "jsonc/auto"?: Linter.RuleEntry<[]>; - /** - * require or disallow trailing commas - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/comma-dangle.html - */ - "jsonc/comma-dangle"?: Linter.RuleEntry; - /** - * enforce consistent comma style - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/comma-style.html - */ - "jsonc/comma-style"?: Linter.RuleEntry; - /** - * enforce consistent indentation - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/indent.html - */ - "jsonc/indent"?: Linter.RuleEntry; - /** - * enforce naming convention to property key names - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/key-name-casing.html - */ - "jsonc/key-name-casing"?: Linter.RuleEntry; - /** - * enforce consistent spacing between keys and values in object literal properties - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/key-spacing.html - */ - "jsonc/key-spacing"?: Linter.RuleEntry; - /** - * disallow BigInt literals - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-bigint-literals.html - */ - "jsonc/no-bigint-literals"?: Linter.RuleEntry<[]>; - /** - * disallow binary expression - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-binary-expression.html - */ - "jsonc/no-binary-expression"?: Linter.RuleEntry<[]>; - /** - * disallow binary numeric literals - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-binary-numeric-literals.html - */ - "jsonc/no-binary-numeric-literals"?: Linter.RuleEntry<[]>; - /** - * disallow comments - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-comments.html - */ - "jsonc/no-comments"?: Linter.RuleEntry<[]>; - /** - * disallow duplicate keys in object literals - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-dupe-keys.html - */ - "jsonc/no-dupe-keys"?: Linter.RuleEntry<[]>; - /** - * disallow escape sequences in identifiers. - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-escape-sequence-in-identifier.html - */ - "jsonc/no-escape-sequence-in-identifier"?: Linter.RuleEntry<[]>; - /** - * disallow leading or trailing decimal points in numeric literals - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-floating-decimal.html - */ - "jsonc/no-floating-decimal"?: Linter.RuleEntry<[]>; - /** - * disallow hexadecimal numeric literals - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-hexadecimal-numeric-literals.html - */ - "jsonc/no-hexadecimal-numeric-literals"?: Linter.RuleEntry<[]>; - /** - * disallow Infinity - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-infinity.html - */ - "jsonc/no-infinity"?: Linter.RuleEntry<[]>; - /** - * disallow irregular whitespace - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-irregular-whitespace.html - */ - "jsonc/no-irregular-whitespace"?: Linter.RuleEntry; - /** - * disallow multiline strings - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-multi-str.html - */ - "jsonc/no-multi-str"?: Linter.RuleEntry<[]>; - /** - * disallow NaN - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-nan.html - */ - "jsonc/no-nan"?: Linter.RuleEntry<[]>; - /** - * disallow number property keys - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-number-props.html - */ - "jsonc/no-number-props"?: Linter.RuleEntry<[]>; - /** - * disallow numeric separators - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-numeric-separators.html - */ - "jsonc/no-numeric-separators"?: Linter.RuleEntry<[]>; - /** - * disallow legacy octal literals - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-octal.html - */ - "jsonc/no-octal"?: Linter.RuleEntry<[]>; - /** - * disallow octal escape sequences in string literals - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-octal-escape.html - */ - "jsonc/no-octal-escape"?: Linter.RuleEntry<[]>; - /** - * disallow octal numeric literals - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-octal-numeric-literals.html - */ - "jsonc/no-octal-numeric-literals"?: Linter.RuleEntry<[]>; - /** - * disallow parentheses around the expression - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-parenthesized.html - */ - "jsonc/no-parenthesized"?: Linter.RuleEntry<[]>; - /** - * disallow plus sign - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-plus-sign.html - */ - "jsonc/no-plus-sign"?: Linter.RuleEntry<[]>; - /** - * disallow RegExp literals - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-regexp-literals.html - */ - "jsonc/no-regexp-literals"?: Linter.RuleEntry<[]>; - /** - * disallow sparse arrays - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-sparse-arrays.html - */ - "jsonc/no-sparse-arrays"?: Linter.RuleEntry<[]>; - /** - * disallow template literals - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-template-literals.html - */ - "jsonc/no-template-literals"?: Linter.RuleEntry<[]>; - /** - * disallow `undefined` - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-undefined-value.html - */ - "jsonc/no-undefined-value"?: Linter.RuleEntry<[]>; - /** - * disallow Unicode code point escape sequences. - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-unicode-codepoint-escapes.html - */ - "jsonc/no-unicode-codepoint-escapes"?: Linter.RuleEntry<[]>; - /** - * disallow unnecessary escape usage - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-useless-escape.html - */ - "jsonc/no-useless-escape"?: Linter.RuleEntry; - /** - * enforce consistent line breaks inside braces - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/object-curly-newline.html - */ - "jsonc/object-curly-newline"?: Linter.RuleEntry; - /** - * enforce consistent spacing inside braces - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/object-curly-spacing.html - */ - "jsonc/object-curly-spacing"?: Linter.RuleEntry; - /** - * enforce placing object properties on separate lines - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/object-property-newline.html - */ - "jsonc/object-property-newline"?: Linter.RuleEntry; - /** - * require quotes around object literal property names - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/quote-props.html - */ - "jsonc/quote-props"?: Linter.RuleEntry; - /** - * enforce use of double or single quotes - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/quotes.html - */ - "jsonc/quotes"?: Linter.RuleEntry; - /** - * require array values to be sorted - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/sort-array-values.html - */ - "jsonc/sort-array-values"?: Linter.RuleEntry; - /** - * require object keys to be sorted - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/sort-keys.html - */ - "jsonc/sort-keys"?: Linter.RuleEntry; - /** - * disallow spaces after unary operators - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/space-unary-ops.html - */ - "jsonc/space-unary-ops"?: Linter.RuleEntry; - /** - * disallow invalid number for JSON - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/valid-json-number.html - */ - "jsonc/valid-json-number"?: Linter.RuleEntry<[]>; - /** - * disallow parsing errors in Vue custom blocks - * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/vue-custom-block/no-parsing-error.html - */ - "jsonc/vue-custom-block/no-parsing-error"?: Linter.RuleEntry<[]>; - /** - * Enforce emojis are wrapped in `` and provide screen reader access. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/accessible-emoji.md - * @deprecated - */ - "jsx-a11y/accessible-emoji"?: Linter.RuleEntry; - /** - * Enforce all elements that require alternative text have meaningful information to relay back to end user. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/alt-text.md - */ - "jsx-a11y/alt-text"?: Linter.RuleEntry; - /** - * Enforce `` text to not exactly match "click here", "here", "link", or "a link". - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-ambiguous-text.md - */ - "jsx-a11y/anchor-ambiguous-text"?: Linter.RuleEntry; - /** - * Enforce all anchors to contain accessible content. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-has-content.md - */ - "jsx-a11y/anchor-has-content"?: Linter.RuleEntry; - /** - * Enforce all anchors are valid, navigable elements. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-is-valid.md - */ - "jsx-a11y/anchor-is-valid"?: Linter.RuleEntry; - /** - * Enforce elements with aria-activedescendant are tabbable. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-activedescendant-has-tabindex.md - */ - "jsx-a11y/aria-activedescendant-has-tabindex"?: Linter.RuleEntry; - /** - * Enforce all `aria-*` props are valid. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-props.md - */ - "jsx-a11y/aria-props"?: Linter.RuleEntry; - /** - * Enforce ARIA state and property values are valid. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-proptypes.md - */ - "jsx-a11y/aria-proptypes"?: Linter.RuleEntry; - /** - * Enforce that elements with ARIA roles must use a valid, non-abstract ARIA role. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-role.md - */ - "jsx-a11y/aria-role"?: Linter.RuleEntry; - /** - * Enforce that elements that do not support ARIA roles, states, and properties do not have those attributes. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-unsupported-elements.md - */ - "jsx-a11y/aria-unsupported-elements"?: Linter.RuleEntry; - /** - * Enforce that autocomplete attributes are used correctly. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/autocomplete-valid.md - */ - "jsx-a11y/autocomplete-valid"?: Linter.RuleEntry; - /** - * Enforce a clickable non-interactive element has at least one keyboard event listener. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/click-events-have-key-events.md - */ - "jsx-a11y/click-events-have-key-events"?: Linter.RuleEntry; - /** - * Enforce that a control (an interactive element) has a text label. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/control-has-associated-label.md - */ - "jsx-a11y/control-has-associated-label"?: Linter.RuleEntry; - /** - * Enforce heading (`h1`, `h2`, etc) elements contain accessible content. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/heading-has-content.md - */ - "jsx-a11y/heading-has-content"?: Linter.RuleEntry; - /** - * Enforce `` element has `lang` prop. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/html-has-lang.md - */ - "jsx-a11y/html-has-lang"?: Linter.RuleEntry; - /** - * Enforce iframe elements have a title attribute. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/iframe-has-title.md - */ - "jsx-a11y/iframe-has-title"?: Linter.RuleEntry; - /** - * Enforce `` alt prop does not contain the word "image", "picture", or "photo". - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/img-redundant-alt.md - */ - "jsx-a11y/img-redundant-alt"?: Linter.RuleEntry; - /** - * Enforce that elements with interactive handlers like `onClick` must be focusable. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/interactive-supports-focus.md - */ - "jsx-a11y/interactive-supports-focus"?: Linter.RuleEntry; - /** - * Enforce that a `label` tag has a text label and an associated control. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/label-has-associated-control.md - */ - "jsx-a11y/label-has-associated-control"?: Linter.RuleEntry; - /** - * Enforce that `
` elements. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/scope.md - */ - "jsx-a11y/scope"?: Linter.RuleEntry; - /** - * Enforce `tabIndex` value is not greater than zero. - * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/tabindex-no-positive.md - */ - "jsx-a11y/tabindex-no-positive"?: Linter.RuleEntry; - /** - * Require languages for fenced code blocks - * @see https://github.com/eslint/markdown/blob/main/docs/rules/fenced-code-language.md - */ - "markdown/fenced-code-language"?: Linter.RuleEntry; - /** - * Enforce heading levels increment by one - * @see https://github.com/eslint/markdown/blob/main/docs/rules/heading-increment.md - */ - "markdown/heading-increment"?: Linter.RuleEntry<[]>; - /** - * Disallow duplicate headings in the same document - * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-duplicate-headings.md - */ - "markdown/no-duplicate-headings"?: Linter.RuleEntry<[]>; - /** - * Disallow empty links - * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-empty-links.md - */ - "markdown/no-empty-links"?: Linter.RuleEntry<[]>; - /** - * Disallow HTML tags - * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-html.md - */ - "markdown/no-html"?: Linter.RuleEntry; - /** - * Disallow invalid label references - * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-invalid-label-refs.md - */ - "markdown/no-invalid-label-refs"?: Linter.RuleEntry<[]>; - /** - * Disallow missing label references - * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-missing-label-refs.md - */ - "markdown/no-missing-label-refs"?: Linter.RuleEntry<[]>; - /** - * require `return` statements after callbacks - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/callback-return.md - */ - "n/callback-return"?: Linter.RuleEntry; - /** - * enforce either `module.exports` or `exports` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/exports-style.md - */ - "n/exports-style"?: Linter.RuleEntry; - /** - * enforce the style of file extensions in `import` declarations - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/file-extension-in-import.md - */ - "n/file-extension-in-import"?: Linter.RuleEntry; - /** - * require `require()` calls to be placed at top-level module scope - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/global-require.md - */ - "n/global-require"?: Linter.RuleEntry<[]>; - /** - * require error handling in callbacks - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/handle-callback-err.md - */ - "n/handle-callback-err"?: Linter.RuleEntry; - /** - * require correct usage of hashbang - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/hashbang.md - */ - "n/hashbang"?: Linter.RuleEntry; - /** - * enforce Node.js-style error-first callback pattern is followed - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-callback-literal.md - */ - "n/no-callback-literal"?: Linter.RuleEntry<[]>; - /** - * disallow deprecated APIs - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-deprecated-api.md - */ - "n/no-deprecated-api"?: Linter.RuleEntry; - /** - * disallow the assignment to `exports` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-exports-assign.md - */ - "n/no-exports-assign"?: Linter.RuleEntry<[]>; - /** - * disallow `import` declarations which import extraneous modules - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-extraneous-import.md - */ - "n/no-extraneous-import"?: Linter.RuleEntry; - /** - * disallow `require()` expressions which import extraneous modules - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-extraneous-require.md - */ - "n/no-extraneous-require"?: Linter.RuleEntry; - /** - * disallow third-party modules which are hiding core modules - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-hide-core-modules.md - * @deprecated - */ - "n/no-hide-core-modules"?: Linter.RuleEntry; - /** - * disallow `import` declarations which import non-existence modules - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-missing-import.md - */ - "n/no-missing-import"?: Linter.RuleEntry; - /** - * disallow `require()` expressions which import non-existence modules - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-missing-require.md - */ - "n/no-missing-require"?: Linter.RuleEntry; - /** - * disallow `require` calls to be mixed with regular variable declarations - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-mixed-requires.md - */ - "n/no-mixed-requires"?: Linter.RuleEntry; - /** - * disallow `new` operators with calls to `require` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-new-require.md - */ - "n/no-new-require"?: Linter.RuleEntry<[]>; - /** - * disallow string concatenation with `__dirname` and `__filename` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-path-concat.md - */ - "n/no-path-concat"?: Linter.RuleEntry<[]>; - /** - * disallow the use of `process.env` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-process-env.md - */ - "n/no-process-env"?: Linter.RuleEntry; - /** - * disallow the use of `process.exit()` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-process-exit.md - */ - "n/no-process-exit"?: Linter.RuleEntry<[]>; - /** - * disallow specified modules when loaded by `import` declarations - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-restricted-import.md - */ - "n/no-restricted-import"?: Linter.RuleEntry; - /** - * disallow specified modules when loaded by `require` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-restricted-require.md - */ - "n/no-restricted-require"?: Linter.RuleEntry; - /** - * disallow synchronous methods - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-sync.md - */ - "n/no-sync"?: Linter.RuleEntry; - /** - * disallow `bin` files that npm ignores - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-unpublished-bin.md - */ - "n/no-unpublished-bin"?: Linter.RuleEntry; - /** - * disallow `import` declarations which import private modules - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-unpublished-import.md - */ - "n/no-unpublished-import"?: Linter.RuleEntry; - /** - * disallow `require()` expressions which import private modules - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-unpublished-require.md - */ - "n/no-unpublished-require"?: Linter.RuleEntry; - /** - * disallow unsupported ECMAScript built-ins on the specified version - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-unsupported-features/es-builtins.md - */ - "n/no-unsupported-features/es-builtins"?: Linter.RuleEntry; - /** - * disallow unsupported ECMAScript syntax on the specified version - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-unsupported-features/es-syntax.md - */ - "n/no-unsupported-features/es-syntax"?: Linter.RuleEntry; - /** - * disallow unsupported Node.js built-in APIs on the specified version - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-unsupported-features/node-builtins.md - */ - "n/no-unsupported-features/node-builtins"?: Linter.RuleEntry; - /** - * enforce either `Buffer` or `require("buffer").Buffer` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-global/buffer.md - */ - "n/prefer-global/buffer"?: Linter.RuleEntry; - /** - * enforce either `console` or `require("console")` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-global/console.md - */ - "n/prefer-global/console"?: Linter.RuleEntry; - /** - * enforce either `process` or `require("process")` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-global/process.md - */ - "n/prefer-global/process"?: Linter.RuleEntry; - /** - * enforce either `TextDecoder` or `require("util").TextDecoder` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-global/text-decoder.md - */ - "n/prefer-global/text-decoder"?: Linter.RuleEntry; - /** - * enforce either `TextEncoder` or `require("util").TextEncoder` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-global/text-encoder.md - */ - "n/prefer-global/text-encoder"?: Linter.RuleEntry; - /** - * enforce either `URL` or `require("url").URL` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-global/url.md - */ - "n/prefer-global/url"?: Linter.RuleEntry; - /** - * enforce either `URLSearchParams` or `require("url").URLSearchParams` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-global/url-search-params.md - */ - "n/prefer-global/url-search-params"?: Linter.RuleEntry; - /** - * enforce using the `node:` protocol when importing Node.js builtin modules. - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-node-protocol.md - */ - "n/prefer-node-protocol"?: Linter.RuleEntry; - /** - * enforce `require("dns").promises` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-promises/dns.md - */ - "n/prefer-promises/dns"?: Linter.RuleEntry<[]>; - /** - * enforce `require("fs").promises` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-promises/fs.md - */ - "n/prefer-promises/fs"?: Linter.RuleEntry<[]>; - /** - * require that `process.exit()` expressions use the same code path as `throw` - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/process-exit-as-throw.md - */ - "n/process-exit-as-throw"?: Linter.RuleEntry<[]>; - /** - * require correct usage of hashbang - * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/hashbang.md - * @deprecated - */ - "n/shebang"?: Linter.RuleEntry; - /** - * Do not use for...of loop with array, use for loop instead, because for loop is faster than for...of loop - * @see https://www.npmjs.com/package/eslint-plugin-not-for-of-array - */ - "no-for-of-array/no-for-of-array"?: Linter.RuleEntry<[]>; - /** - * An eslint rule that does pattern matching against an entire file - */ - "no-secrets/no-pattern-match"?: Linter.RuleEntry<[]>; - /** - * An eslint rule that looks for possible leftover secrets in code - */ - "no-secrets/no-secrets"?: Linter.RuleEntry<[]>; - /** - * ESLint rule to disallow unsanitized method calls - * @see https://github.com/mozilla/eslint-plugin-no-unsanitized/tree/master/docs/rules/method.md - */ - "no-unsanitized/method"?: Linter.RuleEntry; - /** - * ESLint rule to disallow unsanitized property assignment - * @see https://github.com/mozilla/eslint-plugin-no-unsanitized/tree/master/docs/rules/property.md - */ - "no-unsanitized/property"?: Linter.RuleEntry; - /** - * Enforce sorted arrays before include method. - * @see https://perfectionist.dev/rules/sort-array-includes - */ - "perfectionist/sort-array-includes"?: Linter.RuleEntry; - /** - * Enforce sorted classes. - * @see https://perfectionist.dev/rules/sort-classes - */ - "perfectionist/sort-classes"?: Linter.RuleEntry; - /** - * Enforce sorted decorators. - * @see https://perfectionist.dev/rules/sort-decorators - */ - "perfectionist/sort-decorators"?: Linter.RuleEntry; - /** - * Enforce sorted TypeScript enums. - * @see https://perfectionist.dev/rules/sort-enums - */ - "perfectionist/sort-enums"?: Linter.RuleEntry; - /** - * Enforce sorted exports. - * @see https://perfectionist.dev/rules/sort-exports - */ - "perfectionist/sort-exports"?: Linter.RuleEntry; - /** - * Enforce sorted heritage clauses. - * @see https://perfectionist.dev/rules/sort-heritage-clauses - */ - "perfectionist/sort-heritage-clauses"?: Linter.RuleEntry; - /** - * Enforce sorted imports. - * @see https://perfectionist.dev/rules/sort-imports - */ - "perfectionist/sort-imports"?: Linter.RuleEntry; - /** - * Enforce sorted interface properties. - * @see https://perfectionist.dev/rules/sort-interfaces - */ - "perfectionist/sort-interfaces"?: Linter.RuleEntry; - /** - * Enforce sorted intersection types. - * @see https://perfectionist.dev/rules/sort-intersection-types - */ - "perfectionist/sort-intersection-types"?: Linter.RuleEntry; - /** - * Enforce sorted JSX props. - * @see https://perfectionist.dev/rules/sort-jsx-props - */ - "perfectionist/sort-jsx-props"?: Linter.RuleEntry; - /** - * Enforce sorted Map elements. - * @see https://perfectionist.dev/rules/sort-maps - */ - "perfectionist/sort-maps"?: Linter.RuleEntry; - /** - * Enforce sorted modules. - * @see https://perfectionist.dev/rules/sort-modules - */ - "perfectionist/sort-modules"?: Linter.RuleEntry; - /** - * Enforce sorted named exports. - * @see https://perfectionist.dev/rules/sort-named-exports - */ - "perfectionist/sort-named-exports"?: Linter.RuleEntry; - /** - * Enforce sorted named imports. - * @see https://perfectionist.dev/rules/sort-named-imports - */ - "perfectionist/sort-named-imports"?: Linter.RuleEntry; - /** - * Enforce sorted object types. - * @see https://perfectionist.dev/rules/sort-object-types - */ - "perfectionist/sort-object-types"?: Linter.RuleEntry; - /** - * Enforce sorted objects. - * @see https://perfectionist.dev/rules/sort-objects - */ - "perfectionist/sort-objects"?: Linter.RuleEntry; - /** - * Enforce sorted sets. - * @see https://perfectionist.dev/rules/sort-sets - */ - "perfectionist/sort-sets"?: Linter.RuleEntry; - /** - * Enforce sorted switch cases. - * @see https://perfectionist.dev/rules/sort-switch-case - */ - "perfectionist/sort-switch-case"?: Linter.RuleEntry; - /** - * Enforce sorted union types. - * @see https://perfectionist.dev/rules/sort-union-types - */ - "perfectionist/sort-union-types"?: Linter.RuleEntry; - /** - * Enforce sorted variable declarations. - * @see https://perfectionist.dev/rules/sort-variable-declarations - */ - "perfectionist/sort-variable-declarations"?: Linter.RuleEntry; - /** - * Enforce assertion to be made in a test body - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/expect-expect.md - */ - "playwright/expect-expect"?: Linter.RuleEntry; - /** - * Enforces a maximum depth to nested describe calls - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/max-nested-describe.md - */ - "playwright/max-nested-describe"?: Linter.RuleEntry; - /** - * Identify false positives when async Playwright APIs are not properly awaited. - */ - "playwright/missing-playwright-await"?: Linter.RuleEntry; - /** - * Disallow conditional logic in tests - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-conditional-in-test.md - */ - "playwright/no-conditional-in-test"?: Linter.RuleEntry<[]>; - /** - * The use of ElementHandle is discouraged, use Locator instead - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-element-handle.md - */ - "playwright/no-element-handle"?: Linter.RuleEntry<[]>; - /** - * The use of `page.$eval` and `page.$$eval` are discouraged, use `locator.evaluate` or `locator.evaluateAll` instead - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-eval.md - */ - "playwright/no-eval"?: Linter.RuleEntry<[]>; - /** - * Prevent usage of `.only()` focus test annotation - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-focused-test.md - */ - "playwright/no-focused-test"?: Linter.RuleEntry<[]>; - /** - * Prevent usage of `{ force: true }` option. - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-force-option.md - */ - "playwright/no-force-option"?: Linter.RuleEntry<[]>; - /** - * Disallow nested `test.step()` methods - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-nested-step.md - */ - "playwright/no-nested-step"?: Linter.RuleEntry<[]>; - /** - * Prevent usage of the networkidle option - */ - "playwright/no-networkidle"?: Linter.RuleEntry<[]>; - /** - * Disallow usage of nth methods - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-nth-methods.md - */ - "playwright/no-nth-methods"?: Linter.RuleEntry<[]>; - /** - * Prevent usage of page.pause() - */ - "playwright/no-page-pause"?: Linter.RuleEntry<[]>; - /** - * Disallows the usage of raw locators - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-raw-locators.md - */ - "playwright/no-raw-locators"?: Linter.RuleEntry<[]>; - /** - * Disallow specific matchers & modifiers - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-restricted-matchers.md - */ - "playwright/no-restricted-matchers"?: Linter.RuleEntry; - /** - * Prevent usage of the `.skip()` skip test annotation. - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-skipped-test.md - */ - "playwright/no-skipped-test"?: Linter.RuleEntry; - /** - * Disallow unnecessary awaits for Playwright methods - */ - "playwright/no-useless-await"?: Linter.RuleEntry<[]>; - /** - * Disallow usage of 'not' matchers when a more specific matcher exists - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-useless-not.md - */ - "playwright/no-useless-not"?: Linter.RuleEntry<[]>; - /** - * Prevent usage of page.waitForTimeout() - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-wait-for-timeout.md - */ - "playwright/no-wait-for-timeout"?: Linter.RuleEntry<[]>; - /** - * Enforce lowercase test names - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-lowercase-title.md - */ - "playwright/prefer-lowercase-title"?: Linter.RuleEntry; - /** - * Suggest using `toStrictEqual()` - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-strict-equal.md - */ - "playwright/prefer-strict-equal"?: Linter.RuleEntry<[]>; - /** - * Suggest using `toBe()` for primitive literals - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-to-be.md - */ - "playwright/prefer-to-be"?: Linter.RuleEntry<[]>; - /** - * Suggest using toContain() - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-to-contain.md - */ - "playwright/prefer-to-contain"?: Linter.RuleEntry<[]>; - /** - * Suggest using `toHaveCount()` - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-to-have-count.md - */ - "playwright/prefer-to-have-count"?: Linter.RuleEntry<[]>; - /** - * Suggest using `toHaveLength()` - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-to-have-length.md - */ - "playwright/prefer-to-have-length"?: Linter.RuleEntry<[]>; - /** - * Prefer web first assertions - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/prefer-web-first-assertions.md - */ - "playwright/prefer-web-first-assertions"?: Linter.RuleEntry<[]>; - /** - * Require all assertions to use `expect.soft` - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/require-soft-assertions.md - */ - "playwright/require-soft-assertions"?: Linter.RuleEntry<[]>; - /** - * Require test cases and hooks to be inside a `test.describe` block - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/require-top-level-describe.md - */ - "playwright/require-top-level-describe"?: Linter.RuleEntry; - /** - * Enforce valid `expect()` usage - * @see https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/valid-expect.md - */ - "playwright/valid-expect"?: Linter.RuleEntry; - /** - * Require returning inside each `then()` to create readable and reusable Promise chains. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/always-return.md - */ - "promise/always-return"?: Linter.RuleEntry; - /** - * Disallow creating `new` promises outside of utility libs (use [util.promisify][] instead). - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/avoid-new.md - */ - "promise/avoid-new"?: Linter.RuleEntry<[]>; - /** - * Enforce the use of `catch()` on un-returned promises. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/catch-or-return.md - */ - "promise/catch-or-return"?: Linter.RuleEntry; - /** - * Disallow calling `cb()` inside of a `then()` (use [util.callbackify][] instead). - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-callback-in-promise.md - */ - "promise/no-callback-in-promise"?: Linter.RuleEntry; - /** - * Disallow creating new promises with paths that resolve multiple times. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-multiple-resolved.md - */ - "promise/no-multiple-resolved"?: Linter.RuleEntry<[]>; - /** - * Require creating a `Promise` constructor before using it in an ES5 environment. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-native.md - */ - "promise/no-native"?: Linter.RuleEntry<[]>; - /** - * Disallow nested `then()` or `catch()` statements. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-nesting.md - */ - "promise/no-nesting"?: Linter.RuleEntry<[]>; - /** - * Disallow calling `new` on a Promise static method. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-new-statics.md - */ - "promise/no-new-statics"?: Linter.RuleEntry<[]>; - /** - * Disallow using promises inside of callbacks. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-promise-in-callback.md - */ - "promise/no-promise-in-callback"?: Linter.RuleEntry<[]>; - /** - * Disallow return statements in `finally()`. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-return-in-finally.md - */ - "promise/no-return-in-finally"?: Linter.RuleEntry<[]>; - /** - * Disallow wrapping values in `Promise.resolve` or `Promise.reject` when not needed. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-return-wrap.md - */ - "promise/no-return-wrap"?: Linter.RuleEntry; - /** - * Enforce consistent param names and ordering when creating new promises. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/param-names.md - */ - "promise/param-names"?: Linter.RuleEntry; - /** - * Prefer `async`/`await` to the callback pattern. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/prefer-await-to-callbacks.md - */ - "promise/prefer-await-to-callbacks"?: Linter.RuleEntry<[]>; - /** - * Prefer `await` to `then()`/`catch()`/`finally()` for reading Promise values. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/prefer-await-to-then.md - */ - "promise/prefer-await-to-then"?: Linter.RuleEntry; - /** - * Prefer `catch` to `then(a, b)`/`then(null, b)` for handling errors. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/prefer-catch.md - */ - "promise/prefer-catch"?: Linter.RuleEntry<[]>; - /** - * Disallow use of non-standard Promise static methods. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/spec-only.md - */ - "promise/spec-only"?: Linter.RuleEntry; - /** - * Enforces the proper number of arguments are passed to Promise functions. - * @see https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/valid-params.md - */ - "promise/valid-params"?: Linter.RuleEntry; - /** - * Disallow `children` in void DOM elements. - * @see https://eslint-react.xyz/docs/rules/dom-no-void-elements-with-children - */ - "react-dom/no-children-in-void-dom-elements"?: Linter.RuleEntry<[]>; - /** - * Disallow `dangerouslySetInnerHTML`. - * @see https://eslint-react.xyz/docs/rules/dom-no-dangerously-set-innerhtml - */ - "react-dom/no-dangerously-set-innerhtml"?: Linter.RuleEntry<[]>; - /** - * Disallow `dangerouslySetInnerHTML` and `children` at the same time. - * @see https://eslint-react.xyz/docs/rules/dom-no-dangerously-set-innerhtml-with-children - */ - "react-dom/no-dangerously-set-innerhtml-with-children"?: Linter.RuleEntry<[]>; - /** - * Disallow `findDOMNode`. - * @see https://eslint-react.xyz/docs/rules/dom-no-find-dom-node - */ - "react-dom/no-find-dom-node"?: Linter.RuleEntry<[]>; - /** - * Disallow `flushSync`. - * @see https://eslint-react.xyz/docs/rules/dom-no-flush-sync - */ - "react-dom/no-flush-sync"?: Linter.RuleEntry<[]>; - /** - * Replaces usages of `ReactDom.hydrate()` with `hydrateRoot()`. - * @see https://eslint-react.xyz/docs/rules/dom-no-hydrate - */ - "react-dom/no-hydrate"?: Linter.RuleEntry<[]>; - /** - * Enforces explicit `type` attribute for `button` elements. - * @see https://eslint-react.xyz/docs/rules/dom-no-missing-button-type - */ - "react-dom/no-missing-button-type"?: Linter.RuleEntry<[]>; - /** - * Enforces explicit `sandbox` attribute for `iframe` elements. - * @see https://eslint-react.xyz/docs/rules/dom-no-missing-iframe-sandbox - */ - "react-dom/no-missing-iframe-sandbox"?: Linter.RuleEntry<[]>; - /** - * Enforces the absence of a `namespace` in React elements. - * @see https://eslint-react.xyz/docs/rules/dom-no-namespace - */ - "react-dom/no-namespace"?: Linter.RuleEntry<[]>; - /** - * Replaces usages of `ReactDom.render()` with `createRoot(node).render()`. - * @see https://eslint-react.xyz/docs/rules/dom-no-render - */ - "react-dom/no-render"?: Linter.RuleEntry<[]>; - /** - * Disallow the return value of `ReactDOM.render`. - * @see https://eslint-react.xyz/docs/rules/dom-no-render-return-value - */ - "react-dom/no-render-return-value"?: Linter.RuleEntry<[]>; - /** - * Disallow `javascript:` URLs as attribute values. - * @see https://eslint-react.xyz/docs/rules/dom-no-script-url - */ - "react-dom/no-script-url"?: Linter.RuleEntry<[]>; - /** - * Disallow unknown `DOM` property. - * @see https://eslint-react.xyz/docs/rules/dom-no-unknown-property - */ - "react-dom/no-unknown-property"?: Linter.RuleEntry; - /** - * Enforces `sandbox` attribute for `iframe` elements is not set to unsafe combinations. - * @see https://eslint-react.xyz/docs/rules/dom-no-unsafe-iframe-sandbox - */ - "react-dom/no-unsafe-iframe-sandbox"?: Linter.RuleEntry<[]>; - /** - * Disallow `target="_blank"` without `rel="noreferrer noopener"`. - * @see https://eslint-react.xyz/docs/rules/dom-no-unsafe-target-blank - */ - "react-dom/no-unsafe-target-blank"?: Linter.RuleEntry<[]>; - /** - * Replaces usages of `useFormState` with `useActionState`. - * @see https://eslint-react.xyz/docs/rules/dom-no-use-form-state - */ - "react-dom/no-use-form-state"?: Linter.RuleEntry<[]>; - /** - * Disallow `children` in void DOM elements. - * @see https://eslint-react.xyz/docs/rules/dom-no-void-elements-with-children - */ - "react-dom/no-void-elements-with-children"?: Linter.RuleEntry<[]>; - /** - * Enforces that a function with the `use` prefix should use at least one Hook inside of it. - * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-prefix - */ - "react-hooks-extra/ensure-custom-hooks-using-other-hooks"?: Linter.RuleEntry<[]>; - /** - * Disallow unnecessary usage of `useCallback`. - * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-callback - */ - "react-hooks-extra/ensure-use-callback-has-non-empty-deps"?: Linter.RuleEntry<[]>; - /** - * Disallow unnecessary usage of `useMemo`. - * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-memo - */ - "react-hooks-extra/ensure-use-memo-has-non-empty-deps"?: Linter.RuleEntry<[]>; - /** - * Disallow direct calls to the `set` function of `useState` in `useEffect`. - * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-direct-set-state-in-use-effect - */ - "react-hooks-extra/no-direct-set-state-in-use-effect"?: Linter.RuleEntry<[]>; - /** - * Disallow direct calls to the `set` function of `useState` in `useLayoutEffect`. - * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-direct-set-state-in-use-layout-effect - */ - "react-hooks-extra/no-direct-set-state-in-use-layout-effect"?: Linter.RuleEntry<[]>; - /** - * Enforces that a function with the `use` prefix should use at least one Hook inside of it. - * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-prefix - */ - "react-hooks-extra/no-redundant-custom-hook"?: Linter.RuleEntry<[]>; - /** - * Disallow unnecessary usage of `useCallback`. - * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-callback - */ - "react-hooks-extra/no-unnecessary-use-callback"?: Linter.RuleEntry<[]>; - /** - * Disallow unnecessary usage of `useMemo`. - * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-memo - */ - "react-hooks-extra/no-unnecessary-use-memo"?: Linter.RuleEntry<[]>; - /** - * Enforces that a function with the `use` prefix should use at least one Hook inside of it. - * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-prefix - */ - "react-hooks-extra/no-unnecessary-use-prefix"?: Linter.RuleEntry<[]>; - /** - * Enforces that a function with the `use` prefix should use at least one Hook inside of it. - * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-unnecessary-use-prefix - */ - "react-hooks-extra/no-useless-custom-hooks"?: Linter.RuleEntry<[]>; - /** - * Enforces function calls made inside `useState` to be wrapped in an `initializer function`. - * @see https://eslint-react.xyz/docs/rules/hooks-extra-prefer-use-state-lazy-initialization - */ - "react-hooks-extra/prefer-use-state-lazy-initialization"?: Linter.RuleEntry<[]>; - /** - * verifies the list of dependencies for Hooks like useEffect and similar - * @see https://github.com/facebook/react/issues/14920 - */ - "react-hooks/exhaustive-deps"?: Linter.RuleEntry; - /** - * enforces the Rules of Hooks - * @see https://reactjs.org/docs/hooks-rules.html - */ - "react-hooks/rules-of-hooks"?: Linter.RuleEntry<[]>; - /** - * Enforces naming conventions for components. - * @see https://eslint-react.xyz/docs/rules/naming-convention-component-name - */ - "react-naming-convention/component-name"?: Linter.RuleEntry; - /** - * Enforces context name to be a valid component name with the suffix `Context`. - * @see https://eslint-react.xyz/docs/rules/naming-convention-context-name - */ - "react-naming-convention/context-name"?: Linter.RuleEntry<[]>; - /** - * Enforces consistent file naming conventions. - * @see https://eslint-react.xyz/docs/rules/naming-convention-filename - */ - "react-naming-convention/filename"?: Linter.RuleEntry; - /** - * Enforces consistent file naming conventions. - * @see https://eslint-react.xyz/docs/rules/naming-convention-filename-extension - */ - "react-naming-convention/filename-extension"?: Linter.RuleEntry; - /** - * Enforces destructuring and symmetric naming of `useState` hook value and setter. - * @see https://eslint-react.xyz/docs/rules/naming-convention-use-state - */ - "react-naming-convention/use-state"?: Linter.RuleEntry<[]>; - "react-refresh/only-export-components"?: Linter.RuleEntry; - /** - * Prevents leaked `addEventListener` in a component or custom Hook. - * @see https://eslint-react.xyz/docs/rules/web-api-no-leaked-event-listener - */ - "react-web-api/no-leaked-event-listener"?: Linter.RuleEntry<[]>; - /** - * Prevents leaked `setInterval` in a component or custom Hook. - * @see https://eslint-react.xyz/docs/rules/web-api-no-leaked-interval - */ - "react-web-api/no-leaked-interval"?: Linter.RuleEntry<[]>; - /** - * Prevents leaked `ResizeObserver` in a component or custom Hook. - * @see https://eslint-react.xyz/docs/rules/web-api-no-leaked-resize-observer - */ - "react-web-api/no-leaked-resize-observer"?: Linter.RuleEntry<[]>; - /** - * Prevents leaked `setTimeout` in a component or custom Hook. - * @see https://eslint-react.xyz/docs/rules/web-api-no-leaked-timeout - */ - "react-web-api/no-leaked-timeout"?: Linter.RuleEntry<[]>; - /** - * Enforces explicit boolean values for boolean attributes. - * @see https://eslint-react.xyz/docs/rules/avoid-shorthand-boolean - */ - "react-x/avoid-shorthand-boolean"?: Linter.RuleEntry<[]>; - /** - * Enforces explicit `` components instead of the shorthand `<>` or `` syntax. - * @see https://eslint-react.xyz/docs/rules/avoid-shorthand-fragment - */ - "react-x/avoid-shorthand-fragment"?: Linter.RuleEntry<[]>; - /** - * Disallow useless `forwardRef` calls on components that don't use `ref`s. - * @see https://eslint-react.xyz/docs/rules/no-useless-forward-ref - */ - "react-x/ensure-forward-ref-using-ref"?: Linter.RuleEntry<[]>; - /** - * Enforces that the 'key' attribute is placed before the spread attribute in JSX elements. - * @see https://eslint-react.xyz/docs/rules/jsx-key-before-spread - */ - "react-x/jsx-key-before-spread"?: Linter.RuleEntry<[]>; - /** - * Disallow duplicate props in JSX elements. - * @see https://eslint-react.xyz/docs/rules/jsx-no-duplicate-props - */ - "react-x/jsx-no-duplicate-props"?: Linter.RuleEntry<[]>; - /** - * Disallow undefined variables in JSX. - * @see https://eslint-react.xyz/docs/rules/jsx-no-undef - */ - "react-x/jsx-no-undef"?: Linter.RuleEntry<[]>; - /** - * Marks React variables as used when JSX is used. - * @see https://eslint-react.xyz/docs/rules/jsx-uses-react - */ - "react-x/jsx-uses-react"?: Linter.RuleEntry<[]>; - /** - * Marks variables used in JSX elements as used. - * @see https://eslint-react.xyz/docs/rules/jsx-uses-vars - */ - "react-x/jsx-uses-vars"?: Linter.RuleEntry<[]>; - /** - * Disallow accessing `this.state` inside `setState` calls. - * @see https://eslint-react.xyz/docs/rules/no-access-state-in-setstate - */ - "react-x/no-access-state-in-setstate"?: Linter.RuleEntry<[]>; - /** - * Disallow an item's index in the array as its key. - * @see https://eslint-react.xyz/docs/rules/no-array-index-key - */ - "react-x/no-array-index-key"?: Linter.RuleEntry<[]>; - /** - * Disallow `Children.count`. - * @see https://eslint-react.xyz/docs/rules/no-children-count - */ - "react-x/no-children-count"?: Linter.RuleEntry<[]>; - /** - * Disallow 'Children.forEach'. - * @see https://eslint-react.xyz/docs/rules/no-children-for-each - */ - "react-x/no-children-for-each"?: Linter.RuleEntry<[]>; - /** - * Disallow `Children.map`. - * @see https://eslint-react.xyz/docs/rules/no-children-map - */ - "react-x/no-children-map"?: Linter.RuleEntry<[]>; - /** - * Disallow `Children.only`. - * @see https://eslint-react.xyz/docs/rules/no-children-only - */ - "react-x/no-children-only"?: Linter.RuleEntry<[]>; - /** - * Disallow passing `children` as a prop. - * @see https://eslint-react.xyz/docs/rules/no-children-prop - */ - "react-x/no-children-prop"?: Linter.RuleEntry<[]>; - /** - * Disallow `Children.toArray`. - * @see https://eslint-react.xyz/docs/rules/no-children-to-array - */ - "react-x/no-children-to-array"?: Linter.RuleEntry<[]>; - /** - * Disallow class components except for error boundaries. - * @see https://eslint-react.xyz/docs/rules/no-class-component - */ - "react-x/no-class-component"?: Linter.RuleEntry<[]>; - /** - * Disallow `cloneElement`. - * @see https://eslint-react.xyz/docs/rules/no-clone-element - */ - "react-x/no-clone-element"?: Linter.RuleEntry<[]>; - /** - * Prevents comments from being inserted as text nodes. - * @see https://eslint-react.xyz/docs/rules/no-comment-textnodes - */ - "react-x/no-comment-textnodes"?: Linter.RuleEntry<[]>; - /** - * Disallow complex conditional rendering in JSX expressions. - * @see https://eslint-react.xyz/docs/rules/no-complex-conditional-rendering - */ - "react-x/no-complex-conditional-rendering"?: Linter.RuleEntry<[]>; - /** - * Disallow complex conditional rendering in JSX expressions. - * @see https://eslint-react.xyz/docs/rules/no-complex-conditional-rendering - */ - "react-x/no-complicated-conditional-rendering"?: Linter.RuleEntry<[]>; - /** - * Replace usages of `componentWillMount` with `UNSAFE_componentWillMount`. - * @see https://eslint-react.xyz/docs/rules/no-component-will-mount - */ - "react-x/no-component-will-mount"?: Linter.RuleEntry<[]>; - /** - * Replace usages of `componentWillReceiveProps` with `UNSAFE_componentWillReceiveProps`. - * @see https://eslint-react.xyz/docs/rules/no-component-will-receive-props - */ - "react-x/no-component-will-receive-props"?: Linter.RuleEntry<[]>; - /** - * Replace usages of `componentWillUpdate` with `UNSAFE_componentWillUpdate`. - * @see https://eslint-react.xyz/docs/rules/no-component-will-update - */ - "react-x/no-component-will-update"?: Linter.RuleEntry<[]>; - /** - * Replace usages of `` with ``. - * @see https://eslint-react.xyz/docs/rules/no-context-provider - */ - "react-x/no-context-provider"?: Linter.RuleEntry<[]>; - /** - * Disallow `createRef` in function components. - * @see https://eslint-react.xyz/docs/rules/no-create-ref - */ - "react-x/no-create-ref"?: Linter.RuleEntry<[]>; - /** - * Disallow `defaultProps` property in favor of ES6 default parameters. - * @see https://eslint-react.xyz/docs/rules/no-default-props - */ - "react-x/no-default-props"?: Linter.RuleEntry<[]>; - /** - * Disallow direct mutation of `this.state`. - * @see https://eslint-react.xyz/docs/rules/no-direct-mutation-state - */ - "react-x/no-direct-mutation-state"?: Linter.RuleEntry<[]>; - /** - * Disallow duplicate props in JSX elements. - * @see https://eslint-react.xyz/docs/rules/jsx-no-duplicate-props - */ - "react-x/no-duplicate-jsx-props"?: Linter.RuleEntry<[]>; - /** - * Disallow duplicate `key` on elements in the same array or a list of `children`. - * @see https://eslint-react.xyz/docs/rules/no-duplicate-key - */ - "react-x/no-duplicate-key"?: Linter.RuleEntry<[]>; - /** - * Replaces usages of `forwardRef` with passing `ref` as a prop. - * @see https://eslint-react.xyz/docs/rules/no-forward-ref - */ - "react-x/no-forward-ref"?: Linter.RuleEntry<[]>; - /** - * Prevents `key` from not being explicitly specified (e.g. spreading `key` from objects). - * @see https://eslint-react.xyz/docs/rules/no-implicit-key - */ - "react-x/no-implicit-key"?: Linter.RuleEntry<[]>; - /** - * Prevents problematic leaked values from being rendered. - * @see https://eslint-react.xyz/docs/rules/no-leaked-conditional-rendering - */ - "react-x/no-leaked-conditional-rendering"?: Linter.RuleEntry<[]>; - /** - * Enforces that all components have a `displayName` which can be used in devtools. - * @see https://eslint-react.xyz/docs/rules/no-missing-component-display-name - */ - "react-x/no-missing-component-display-name"?: Linter.RuleEntry<[]>; - /** - * Enforces that all contexts have a `displayName` which can be used in devtools. - * @see https://eslint-react.xyz/docs/rules/no-missing-context-display-name - */ - "react-x/no-missing-context-display-name"?: Linter.RuleEntry<[]>; - /** - * Disallow missing `key` on items in list rendering. - * @see https://eslint-react.xyz/docs/rules/no-missing-key - */ - "react-x/no-missing-key"?: Linter.RuleEntry<[]>; - /** - * Prevents incorrect usage of `captureOwnerStack`. - * @see https://eslint-react.xyz/docs/rules/no-misused-capture-owner-stack - */ - "react-x/no-misused-capture-owner-stack"?: Linter.RuleEntry<[]>; - /** - * Disallow nesting component definitions inside other components. - * @see https://eslint-react.xyz/docs/rules/no-nested-component-definitions - */ - "react-x/no-nested-component-definitions"?: Linter.RuleEntry<[]>; - /** - * Disallow nesting component definitions inside other components. - * @see https://eslint-react.xyz/docs/rules/no-nested-component-definitions - */ - "react-x/no-nested-components"?: Linter.RuleEntry<[]>; - /** - * Disallow nesting lazy component declarations inside other components. - * @see https://eslint-react.xyz/docs/rules/no-nested-component-definitions - */ - "react-x/no-nested-lazy-component-declarations"?: Linter.RuleEntry<[]>; - /** - * Disallow `propTypes` in favor of TypeScript or another type-checking solution. - * @see https://eslint-react.xyz/docs/rules/no-prop-types - */ - "react-x/no-prop-types"?: Linter.RuleEntry<[]>; - /** - * Disallow `shouldComponentUpdate` when extending `React.PureComponent`. - * @see https://eslint-react.xyz/docs/rules/no-redundant-should-component-update - */ - "react-x/no-redundant-should-component-update"?: Linter.RuleEntry<[]>; - /** - * Disallow calling `this.setState` in `componentDidMount` outside of functions, such as callbacks. - * @see https://eslint-react.xyz/docs/rules/no-set-state-in-component-did-mount - */ - "react-x/no-set-state-in-component-did-mount"?: Linter.RuleEntry<[]>; - /** - * Disallow calling `this.setState` in `componentDidUpdate` outside of functions, such as callbacks. - * @see https://eslint-react.xyz/docs/rules/no-set-state-in-component-did-update - */ - "react-x/no-set-state-in-component-did-update"?: Linter.RuleEntry<[]>; - /** - * Disallows calling `this.setState` in `componentWillUpdate` outside of functions, such as callbacks. - * @see https://eslint-react.xyz/docs/rules/no-set-state-in-component-will-update - */ - "react-x/no-set-state-in-component-will-update"?: Linter.RuleEntry<[]>; - /** - * Replaces string refs with callback refs. - * @see https://eslint-react.xyz/docs/rules/no-string-refs - */ - "react-x/no-string-refs"?: Linter.RuleEntry<[]>; - /** - * Warns the usage of `UNSAFE_componentWillMount` in class components. - * @see https://eslint-react.xyz/docs/rules/no-unsafe-component-will-mount - */ - "react-x/no-unsafe-component-will-mount"?: Linter.RuleEntry<[]>; - /** - * Warns the usage of `UNSAFE_componentWillReceiveProps` in class components. - * @see https://eslint-react.xyz/docs/rules/no-unsafe-component-will-receive-props - */ - "react-x/no-unsafe-component-will-receive-props"?: Linter.RuleEntry<[]>; - /** - * Warns the usage of `UNSAFE_componentWillUpdate` in class components. - * @see https://eslint-react.xyz/docs/rules/no-unsafe-component-will-update - */ - "react-x/no-unsafe-component-will-update"?: Linter.RuleEntry<[]>; - /** - * Prevents non-stable values (i.e. object literals) from being used as a value for `Context.Provider`. - * @see https://eslint-react.xyz/docs/rules/no-unstable-context-value - */ - "react-x/no-unstable-context-value"?: Linter.RuleEntry<[]>; - /** - * Prevents using referential-type values as default props in object destructuring. - * @see https://eslint-react.xyz/docs/rules/no-unstable-default-props - */ - "react-x/no-unstable-default-props"?: Linter.RuleEntry<[]>; - /** - * Warns unused class component methods and properties. - * @see https://eslint-react.xyz/docs/rules/no-unused-class-component-members - */ - "react-x/no-unused-class-component-members"?: Linter.RuleEntry<[]>; - /** - * Warns unused class component state. - * @see https://eslint-react.xyz/docs/rules/no-unused-state - */ - "react-x/no-unused-state"?: Linter.RuleEntry<[]>; - /** - * Replaces usages of `useContext` with `use`. - * @see https://eslint-react.xyz/docs/rules/no-use-context - */ - "react-x/no-use-context"?: Linter.RuleEntry<[]>; - /** - * Disallow useless `forwardRef` calls on components that don't use `ref`s. - * @see https://eslint-react.xyz/docs/rules/no-useless-forward-ref - */ - "react-x/no-useless-forward-ref"?: Linter.RuleEntry<[]>; - /** - * Disallow useless fragment elements. - * @see https://eslint-react.xyz/docs/rules/no-useless-fragment - */ - "react-x/no-useless-fragment"?: Linter.RuleEntry; - /** - * Enforces destructuring assignment for component props and context. - * @see https://eslint-react.xyz/docs/rules/prefer-destructuring-assignment - */ - "react-x/prefer-destructuring-assignment"?: Linter.RuleEntry<[]>; - /** - * Enforces React is imported via a namespace import. - * @see https://eslint-react.xyz/docs/rules/prefer-react-namespace-import - */ - "react-x/prefer-react-namespace-import"?: Linter.RuleEntry<[]>; - /** - * Enforces read-only props in components. - * @see https://eslint-react.xyz/docs/rules/prefer-read-only-props - */ - "react-x/prefer-read-only-props"?: Linter.RuleEntry<[]>; - /** - * Enforces shorthand syntax for boolean attributes. - * @see https://eslint-react.xyz/docs/rules/prefer-shorthand-boolean - */ - "react-x/prefer-shorthand-boolean"?: Linter.RuleEntry<[]>; - /** - * Enforces shorthand syntax for fragments. - * @see https://eslint-react.xyz/docs/rules/prefer-shorthand-fragment - */ - "react-x/prefer-shorthand-fragment"?: Linter.RuleEntry<[]>; - /** - * Marks variables used in JSX elements as used. - * @see https://eslint-react.xyz/docs/rules/jsx-uses-vars - */ - "react-x/use-jsx-vars"?: Linter.RuleEntry<[]>; - /** - * Enforces consistent naming for boolean props - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/boolean-prop-naming.md - */ - "react/boolean-prop-naming"?: Linter.RuleEntry; - /** - * Disallow usage of `button` elements without an explicit `type` attribute - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/button-has-type.md - */ - "react/button-has-type"?: Linter.RuleEntry; - /** - * Enforce using `onChange` or `readonly` attribute when `checked` is used - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/checked-requires-onchange-or-readonly.md - */ - "react/checked-requires-onchange-or-readonly"?: Linter.RuleEntry; - /** - * Enforce all defaultProps have a corresponding non-required PropType - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/default-props-match-prop-types.md - */ - "react/default-props-match-prop-types"?: Linter.RuleEntry; - /** - * Enforce consistent usage of destructuring assignment of props, state, and context - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/destructuring-assignment.md - */ - "react/destructuring-assignment"?: Linter.RuleEntry; - /** - * Disallow missing displayName in a React component definition - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/display-name.md - */ - "react/display-name"?: Linter.RuleEntry; - /** - * Disallow certain props on components - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-component-props.md - */ - "react/forbid-component-props"?: Linter.RuleEntry; - /** - * Disallow certain props on DOM Nodes - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-dom-props.md - */ - "react/forbid-dom-props"?: Linter.RuleEntry; - /** - * Disallow certain elements - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-elements.md - */ - "react/forbid-elements"?: Linter.RuleEntry; - /** - * Disallow using another component's propTypes - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-foreign-prop-types.md - */ - "react/forbid-foreign-prop-types"?: Linter.RuleEntry; - /** - * Disallow certain propTypes - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-prop-types.md - */ - "react/forbid-prop-types"?: Linter.RuleEntry; - /** - * Require all forwardRef components include a ref parameter - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forward-ref-uses-ref.md - */ - "react/forward-ref-uses-ref"?: Linter.RuleEntry<[]>; - /** - * Enforce a specific function type for function components - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/function-component-definition.md - */ - "react/function-component-definition"?: Linter.RuleEntry; - /** - * Ensure destructuring and symmetric naming of useState hook value and setter variables - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/hook-use-state.md - */ - "react/hook-use-state"?: Linter.RuleEntry; - /** - * Enforce sandbox attribute on iframe elements - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/iframe-missing-sandbox.md - */ - "react/iframe-missing-sandbox"?: Linter.RuleEntry<[]>; - /** - * Enforce boolean attributes notation in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-boolean-value.md - */ - "react/jsx-boolean-value"?: Linter.RuleEntry; - /** - * Enforce or disallow spaces inside of curly braces in JSX attributes and expressions - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-child-element-spacing.md - */ - "react/jsx-child-element-spacing"?: Linter.RuleEntry<[]>; - /** - * Enforce closing bracket location in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-closing-bracket-location.md - */ - "react/jsx-closing-bracket-location"?: Linter.RuleEntry; - /** - * Enforce closing tag location for multiline JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-closing-tag-location.md - */ - "react/jsx-closing-tag-location"?: Linter.RuleEntry; - /** - * Disallow unnecessary JSX expressions when literals alone are sufficient or enforce JSX expressions on literals in JSX children or attributes - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-curly-brace-presence.md - */ - "react/jsx-curly-brace-presence"?: Linter.RuleEntry; - /** - * Enforce consistent linebreaks in curly braces in JSX attributes and expressions - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-curly-newline.md - */ - "react/jsx-curly-newline"?: Linter.RuleEntry; - /** - * Enforce or disallow spaces inside of curly braces in JSX attributes and expressions - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-curly-spacing.md - */ - "react/jsx-curly-spacing"?: Linter.RuleEntry; - /** - * Enforce or disallow spaces around equal signs in JSX attributes - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-equals-spacing.md - */ - "react/jsx-equals-spacing"?: Linter.RuleEntry; - /** - * Disallow file extensions that may contain JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-filename-extension.md - */ - "react/jsx-filename-extension"?: Linter.RuleEntry; - /** - * Enforce proper position of the first property in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-first-prop-new-line.md - */ - "react/jsx-first-prop-new-line"?: Linter.RuleEntry; - /** - * Enforce shorthand or standard form for React fragments - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-fragments.md - */ - "react/jsx-fragments"?: Linter.RuleEntry; - /** - * Enforce event handler naming conventions in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-handler-names.md - */ - "react/jsx-handler-names"?: Linter.RuleEntry; - /** - * Enforce JSX indentation - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-indent.md - */ - "react/jsx-indent"?: Linter.RuleEntry; - /** - * Enforce props indentation in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-indent-props.md - */ - "react/jsx-indent-props"?: Linter.RuleEntry; - /** - * Disallow missing `key` props in iterators/collection literals - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-key.md - */ - "react/jsx-key"?: Linter.RuleEntry; - /** - * Enforce JSX maximum depth - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-max-depth.md - */ - "react/jsx-max-depth"?: Linter.RuleEntry; - /** - * Enforce maximum of props on a single line in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-max-props-per-line.md - */ - "react/jsx-max-props-per-line"?: Linter.RuleEntry; - /** - * Require or prevent a new line after jsx elements and expressions. - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-newline.md - */ - "react/jsx-newline"?: Linter.RuleEntry; - /** - * Disallow `.bind()` or arrow functions in JSX props - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-bind.md - */ - "react/jsx-no-bind"?: Linter.RuleEntry; - /** - * Disallow comments from being inserted as text nodes - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-comment-textnodes.md - */ - "react/jsx-no-comment-textnodes"?: Linter.RuleEntry<[]>; - /** - * Disallows JSX context provider values from taking values that will cause needless rerenders - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-constructed-context-values.md - */ - "react/jsx-no-constructed-context-values"?: Linter.RuleEntry<[]>; - /** - * Disallow duplicate properties in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-duplicate-props.md - */ - "react/jsx-no-duplicate-props"?: Linter.RuleEntry; - /** - * Disallow problematic leaked values from being rendered - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-leaked-render.md - */ - "react/jsx-no-leaked-render"?: Linter.RuleEntry; - /** - * Disallow usage of string literals in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-literals.md - */ - "react/jsx-no-literals"?: Linter.RuleEntry; - /** - * Disallow usage of `javascript:` URLs - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-script-url.md - */ - "react/jsx-no-script-url"?: Linter.RuleEntry; - /** - * Disallow `target="_blank"` attribute without `rel="noreferrer"` - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-target-blank.md - */ - "react/jsx-no-target-blank"?: Linter.RuleEntry; - /** - * Disallow undeclared variables in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-undef.md - */ - "react/jsx-no-undef"?: Linter.RuleEntry; - /** - * Disallow unnecessary fragments - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-useless-fragment.md - */ - "react/jsx-no-useless-fragment"?: Linter.RuleEntry; - /** - * Require one JSX element per line - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-one-expression-per-line.md - */ - "react/jsx-one-expression-per-line"?: Linter.RuleEntry; - /** - * Enforce PascalCase for user-defined JSX components - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-pascal-case.md - */ - "react/jsx-pascal-case"?: Linter.RuleEntry; - /** - * Disallow multiple spaces between inline JSX props - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-props-no-multi-spaces.md - */ - "react/jsx-props-no-multi-spaces"?: Linter.RuleEntry<[]>; - /** - * Disallow JSX prop spreading the same identifier multiple times - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-props-no-spread-multi.md - */ - "react/jsx-props-no-spread-multi"?: Linter.RuleEntry<[]>; - /** - * Disallow JSX prop spreading - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-props-no-spreading.md - */ - "react/jsx-props-no-spreading"?: Linter.RuleEntry; - /** - * Enforce defaultProps declarations alphabetical sorting - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-sort-default-props.md - * @deprecated - */ - "react/jsx-sort-default-props"?: Linter.RuleEntry; - /** - * Enforce props alphabetical sorting - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-sort-props.md - */ - "react/jsx-sort-props"?: Linter.RuleEntry; - /** - * Enforce spacing before closing bracket in JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-space-before-closing.md - * @deprecated - */ - "react/jsx-space-before-closing"?: Linter.RuleEntry; - /** - * Enforce whitespace in and around the JSX opening and closing brackets - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-tag-spacing.md - */ - "react/jsx-tag-spacing"?: Linter.RuleEntry; - /** - * Disallow React to be incorrectly marked as unused - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-uses-react.md - */ - "react/jsx-uses-react"?: Linter.RuleEntry<[]>; - /** - * Disallow variables used in JSX to be incorrectly marked as unused - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-uses-vars.md - */ - "react/jsx-uses-vars"?: Linter.RuleEntry<[]>; - /** - * Disallow missing parentheses around multiline JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-wrap-multilines.md - */ - "react/jsx-wrap-multilines"?: Linter.RuleEntry; - /** - * Disallow when this.state is accessed within setState - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-access-state-in-setstate.md - */ - "react/no-access-state-in-setstate"?: Linter.RuleEntry<[]>; - /** - * Disallow adjacent inline elements not separated by whitespace. - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-adjacent-inline-elements.md - */ - "react/no-adjacent-inline-elements"?: Linter.RuleEntry<[]>; - /** - * Disallow usage of Array index in keys - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-array-index-key.md - */ - "react/no-array-index-key"?: Linter.RuleEntry<[]>; - /** - * Lifecycle methods should be methods on the prototype, not class fields - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-arrow-function-lifecycle.md - */ - "react/no-arrow-function-lifecycle"?: Linter.RuleEntry<[]>; - /** - * Disallow passing of children as props - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-children-prop.md - */ - "react/no-children-prop"?: Linter.RuleEntry; - /** - * Disallow usage of dangerous JSX properties - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-danger.md - */ - "react/no-danger"?: Linter.RuleEntry; - /** - * Disallow when a DOM element is using both children and dangerouslySetInnerHTML - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-danger-with-children.md - */ - "react/no-danger-with-children"?: Linter.RuleEntry<[]>; - /** - * Disallow usage of deprecated methods - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-deprecated.md - */ - "react/no-deprecated"?: Linter.RuleEntry<[]>; - /** - * Disallow usage of setState in componentDidMount - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-did-mount-set-state.md - */ - "react/no-did-mount-set-state"?: Linter.RuleEntry; - /** - * Disallow usage of setState in componentDidUpdate - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-did-update-set-state.md - */ - "react/no-did-update-set-state"?: Linter.RuleEntry; - /** - * Disallow direct mutation of this.state - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-direct-mutation-state.md - */ - "react/no-direct-mutation-state"?: Linter.RuleEntry<[]>; - /** - * Disallow usage of findDOMNode - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-find-dom-node.md - */ - "react/no-find-dom-node"?: Linter.RuleEntry<[]>; - /** - * Disallow usage of invalid attributes - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-invalid-html-attribute.md - */ - "react/no-invalid-html-attribute"?: Linter.RuleEntry; - /** - * Disallow usage of isMounted - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-is-mounted.md - */ - "react/no-is-mounted"?: Linter.RuleEntry<[]>; - /** - * Disallow multiple component definition per file - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-multi-comp.md - */ - "react/no-multi-comp"?: Linter.RuleEntry; - /** - * Enforce that namespaces are not used in React elements - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-namespace.md - */ - "react/no-namespace"?: Linter.RuleEntry<[]>; - /** - * Disallow usage of referential-type variables as default param in functional component - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-object-type-as-default-prop.md - */ - "react/no-object-type-as-default-prop"?: Linter.RuleEntry<[]>; - /** - * Disallow usage of shouldComponentUpdate when extending React.PureComponent - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-redundant-should-component-update.md - */ - "react/no-redundant-should-component-update"?: Linter.RuleEntry<[]>; - /** - * Disallow usage of the return value of ReactDOM.render - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-render-return-value.md - */ - "react/no-render-return-value"?: Linter.RuleEntry<[]>; - /** - * Disallow usage of setState - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-set-state.md - */ - "react/no-set-state"?: Linter.RuleEntry<[]>; - /** - * Disallow using string references - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-string-refs.md - */ - "react/no-string-refs"?: Linter.RuleEntry; - /** - * Disallow `this` from being used in stateless functional components - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-this-in-sfc.md - */ - "react/no-this-in-sfc"?: Linter.RuleEntry<[]>; - /** - * Disallow common typos - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-typos.md - */ - "react/no-typos"?: Linter.RuleEntry<[]>; - /** - * Disallow unescaped HTML entities from appearing in markup - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unescaped-entities.md - */ - "react/no-unescaped-entities"?: Linter.RuleEntry; - /** - * Disallow usage of unknown DOM property - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unknown-property.md - */ - "react/no-unknown-property"?: Linter.RuleEntry; - /** - * Disallow usage of unsafe lifecycle methods - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unsafe.md - */ - "react/no-unsafe"?: Linter.RuleEntry; - /** - * Disallow creating unstable components inside components - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unstable-nested-components.md - */ - "react/no-unstable-nested-components"?: Linter.RuleEntry; - /** - * Disallow declaring unused methods of component class - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unused-class-component-methods.md - */ - "react/no-unused-class-component-methods"?: Linter.RuleEntry<[]>; - /** - * Disallow definitions of unused propTypes - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unused-prop-types.md - */ - "react/no-unused-prop-types"?: Linter.RuleEntry; - /** - * Disallow definitions of unused state - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unused-state.md - */ - "react/no-unused-state"?: Linter.RuleEntry<[]>; - /** - * Disallow usage of setState in componentWillUpdate - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-will-update-set-state.md - */ - "react/no-will-update-set-state"?: Linter.RuleEntry; - /** - * Enforce ES5 or ES6 class for React Components - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-es6-class.md - */ - "react/prefer-es6-class"?: Linter.RuleEntry; - /** - * Prefer exact proptype definitions - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-exact-props.md - */ - "react/prefer-exact-props"?: Linter.RuleEntry<[]>; - /** - * Enforce that props are read-only - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-read-only-props.md - */ - "react/prefer-read-only-props"?: Linter.RuleEntry<[]>; - /** - * Enforce stateless components to be written as a pure function - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-stateless-function.md - */ - "react/prefer-stateless-function"?: Linter.RuleEntry; - /** - * Disallow missing props validation in a React component definition - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prop-types.md - */ - "react/prop-types"?: Linter.RuleEntry; - /** - * Disallow missing React when using JSX - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/react-in-jsx-scope.md - */ - "react/react-in-jsx-scope"?: Linter.RuleEntry<[]>; - /** - * Enforce a defaultProps definition for every prop that is not a required prop - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/require-default-props.md - */ - "react/require-default-props"?: Linter.RuleEntry; - /** - * Enforce React components to have a shouldComponentUpdate method - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/require-optimization.md - */ - "react/require-optimization"?: Linter.RuleEntry; - /** - * Enforce ES5 or ES6 class for returning value in render function - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/require-render-return.md - */ - "react/require-render-return"?: Linter.RuleEntry<[]>; - /** - * Disallow extra closing tags for components without children - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/self-closing-comp.md - */ - "react/self-closing-comp"?: Linter.RuleEntry; - /** - * Enforce component methods order - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/sort-comp.md - */ - "react/sort-comp"?: Linter.RuleEntry; - /** - * Enforce defaultProps declarations alphabetical sorting - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/sort-default-props.md - */ - "react/sort-default-props"?: Linter.RuleEntry; - /** - * Enforce propTypes declarations alphabetical sorting - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/sort-prop-types.md - */ - "react/sort-prop-types"?: Linter.RuleEntry; - /** - * Enforce class component state initialization style - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/state-in-constructor.md - */ - "react/state-in-constructor"?: Linter.RuleEntry; - /** - * Enforces where React component static properties should be positioned. - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/static-property-placement.md - */ - "react/static-property-placement"?: Linter.RuleEntry; - /** - * Enforce style prop value is an object - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/style-prop-object.md - */ - "react/style-prop-object"?: Linter.RuleEntry; - /** - * Disallow void DOM elements (e.g. ``, `
`) from receiving children - * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/void-dom-elements-no-children.md - */ - "react/void-dom-elements-no-children"?: Linter.RuleEntry<[]>; - /** - * disallow confusing quantifiers - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/confusing-quantifier.html - */ - "regexp/confusing-quantifier"?: Linter.RuleEntry<[]>; - /** - * enforce consistent escaping of control characters - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/control-character-escape.html - */ - "regexp/control-character-escape"?: Linter.RuleEntry<[]>; - /** - * enforce single grapheme in string literal - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/grapheme-string-literal.html - */ - "regexp/grapheme-string-literal"?: Linter.RuleEntry<[]>; - /** - * enforce consistent usage of hexadecimal escape - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/hexadecimal-escape.html - */ - "regexp/hexadecimal-escape"?: Linter.RuleEntry; - /** - * enforce into your favorite case - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/letter-case.html - */ - "regexp/letter-case"?: Linter.RuleEntry; - /** - * enforce match any character style - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/match-any.html - */ - "regexp/match-any"?: Linter.RuleEntry; - /** - * enforce use of escapes on negation - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/negation.html - */ - "regexp/negation"?: Linter.RuleEntry<[]>; - /** - * disallow elements that contradict assertions - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-contradiction-with-assertion.html - */ - "regexp/no-contradiction-with-assertion"?: Linter.RuleEntry<[]>; - /** - * disallow control characters - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-control-character.html - */ - "regexp/no-control-character"?: Linter.RuleEntry<[]>; - /** - * disallow duplicate characters in the RegExp character class - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-dupe-characters-character-class.html - */ - "regexp/no-dupe-characters-character-class"?: Linter.RuleEntry<[]>; - /** - * disallow duplicate disjunctions - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-dupe-disjunctions.html - */ - "regexp/no-dupe-disjunctions"?: Linter.RuleEntry; - /** - * disallow alternatives without elements - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-alternative.html - */ - "regexp/no-empty-alternative"?: Linter.RuleEntry<[]>; - /** - * disallow capturing group that captures empty. - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-capturing-group.html - */ - "regexp/no-empty-capturing-group"?: Linter.RuleEntry<[]>; - /** - * disallow character classes that match no characters - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-character-class.html - */ - "regexp/no-empty-character-class"?: Linter.RuleEntry<[]>; - /** - * disallow empty group - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-group.html - */ - "regexp/no-empty-group"?: Linter.RuleEntry<[]>; - /** - * disallow empty lookahead assertion or empty lookbehind assertion - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-lookarounds-assertion.html - */ - "regexp/no-empty-lookarounds-assertion"?: Linter.RuleEntry<[]>; - /** - * disallow empty string literals in character classes - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-string-literal.html - */ - "regexp/no-empty-string-literal"?: Linter.RuleEntry<[]>; - /** - * disallow escape backspace (`[\b]`) - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-escape-backspace.html - */ - "regexp/no-escape-backspace"?: Linter.RuleEntry<[]>; - /** - * disallow unnecessary nested lookaround assertions - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-extra-lookaround-assertions.html - */ - "regexp/no-extra-lookaround-assertions"?: Linter.RuleEntry<[]>; - /** - * disallow invalid regular expression strings in `RegExp` constructors - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-invalid-regexp.html - */ - "regexp/no-invalid-regexp"?: Linter.RuleEntry<[]>; - /** - * disallow invisible raw character - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-invisible-character.html - */ - "regexp/no-invisible-character"?: Linter.RuleEntry<[]>; - /** - * disallow lazy quantifiers at the end of an expression - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-lazy-ends.html - */ - "regexp/no-lazy-ends"?: Linter.RuleEntry; - /** - * disallow legacy RegExp features - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-legacy-features.html - */ - "regexp/no-legacy-features"?: Linter.RuleEntry; - /** - * disallow capturing groups that do not behave as one would expect - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-misleading-capturing-group.html - */ - "regexp/no-misleading-capturing-group"?: Linter.RuleEntry; - /** - * disallow multi-code-point characters in character classes and quantifiers - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-misleading-unicode-character.html - */ - "regexp/no-misleading-unicode-character"?: Linter.RuleEntry; - /** - * disallow missing `g` flag in patterns used in `String#matchAll` and `String#replaceAll` - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-missing-g-flag.html - */ - "regexp/no-missing-g-flag"?: Linter.RuleEntry; - /** - * disallow non-standard flags - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-non-standard-flag.html - */ - "regexp/no-non-standard-flag"?: Linter.RuleEntry<[]>; - /** - * disallow obscure character ranges - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-obscure-range.html - */ - "regexp/no-obscure-range"?: Linter.RuleEntry; - /** - * disallow octal escape sequence - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-octal.html - */ - "regexp/no-octal"?: Linter.RuleEntry<[]>; - /** - * disallow optional assertions - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-optional-assertion.html - */ - "regexp/no-optional-assertion"?: Linter.RuleEntry<[]>; - /** - * disallow backreferences that reference a group that might not be matched - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-potentially-useless-backreference.html - */ - "regexp/no-potentially-useless-backreference"?: Linter.RuleEntry<[]>; - /** - * disallow standalone backslashes (`\`) - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-standalone-backslash.html - */ - "regexp/no-standalone-backslash"?: Linter.RuleEntry<[]>; - /** - * disallow exponential and polynomial backtracking - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-super-linear-backtracking.html - */ - "regexp/no-super-linear-backtracking"?: Linter.RuleEntry; - /** - * disallow quantifiers that cause quadratic moves - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-super-linear-move.html - */ - "regexp/no-super-linear-move"?: Linter.RuleEntry; - /** - * disallow trivially nested assertions - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-trivially-nested-assertion.html - */ - "regexp/no-trivially-nested-assertion"?: Linter.RuleEntry<[]>; - /** - * disallow nested quantifiers that can be rewritten as one quantifier - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-trivially-nested-quantifier.html - */ - "regexp/no-trivially-nested-quantifier"?: Linter.RuleEntry<[]>; - /** - * disallow unused capturing group - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-unused-capturing-group.html - */ - "regexp/no-unused-capturing-group"?: Linter.RuleEntry; - /** - * disallow assertions that are known to always accept (or reject) - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-assertions.html - */ - "regexp/no-useless-assertions"?: Linter.RuleEntry<[]>; - /** - * disallow useless backreferences in regular expressions - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-backreference.html - */ - "regexp/no-useless-backreference"?: Linter.RuleEntry<[]>; - /** - * disallow character class with one character - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-character-class.html - */ - "regexp/no-useless-character-class"?: Linter.RuleEntry; - /** - * disallow useless `$` replacements in replacement string - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-dollar-replacements.html - */ - "regexp/no-useless-dollar-replacements"?: Linter.RuleEntry<[]>; - /** - * disallow unnecessary escape characters in RegExp - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-escape.html - */ - "regexp/no-useless-escape"?: Linter.RuleEntry<[]>; - /** - * disallow unnecessary regex flags - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-flag.html - */ - "regexp/no-useless-flag"?: Linter.RuleEntry; - /** - * disallow unnecessarily non-greedy quantifiers - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-lazy.html - */ - "regexp/no-useless-lazy"?: Linter.RuleEntry<[]>; - /** - * disallow unnecessary non-capturing group - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-non-capturing-group.html - */ - "regexp/no-useless-non-capturing-group"?: Linter.RuleEntry; - /** - * disallow quantifiers that can be removed - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-quantifier.html - */ - "regexp/no-useless-quantifier"?: Linter.RuleEntry<[]>; - /** - * disallow unnecessary character ranges - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-range.html - */ - "regexp/no-useless-range"?: Linter.RuleEntry<[]>; - /** - * disallow unnecessary elements in expression character classes - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-set-operand.html - */ - "regexp/no-useless-set-operand"?: Linter.RuleEntry<[]>; - /** - * disallow string disjunction of single characters in `\q{...}` - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-string-literal.html - */ - "regexp/no-useless-string-literal"?: Linter.RuleEntry<[]>; - /** - * disallow unnecessary `{n,m}` quantifier - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-two-nums-quantifier.html - */ - "regexp/no-useless-two-nums-quantifier"?: Linter.RuleEntry<[]>; - /** - * disallow quantifiers with a maximum of zero - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-zero-quantifier.html - */ - "regexp/no-zero-quantifier"?: Linter.RuleEntry<[]>; - /** - * disallow the alternatives of lookarounds that end with a non-constant quantifier - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/optimal-lookaround-quantifier.html - */ - "regexp/optimal-lookaround-quantifier"?: Linter.RuleEntry<[]>; - /** - * require optimal quantifiers for concatenated quantifiers - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/optimal-quantifier-concatenation.html - */ - "regexp/optimal-quantifier-concatenation"?: Linter.RuleEntry; - /** - * enforce using character class - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-character-class.html - */ - "regexp/prefer-character-class"?: Linter.RuleEntry; - /** - * enforce using `\d` - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-d.html - */ - "regexp/prefer-d"?: Linter.RuleEntry; - /** - * enforces escape of replacement `$` character (`$$`). - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-escape-replacement-dollar-char.html - */ - "regexp/prefer-escape-replacement-dollar-char"?: Linter.RuleEntry<[]>; - /** - * prefer lookarounds over capturing group that do not replace - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-lookaround.html - */ - "regexp/prefer-lookaround"?: Linter.RuleEntry; - /** - * enforce using named backreferences - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-named-backreference.html - */ - "regexp/prefer-named-backreference"?: Linter.RuleEntry<[]>; - /** - * enforce using named capture groups - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-named-capture-group.html - */ - "regexp/prefer-named-capture-group"?: Linter.RuleEntry<[]>; - /** - * enforce using named replacement - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-named-replacement.html - */ - "regexp/prefer-named-replacement"?: Linter.RuleEntry; - /** - * enforce using `+` quantifier - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-plus-quantifier.html - */ - "regexp/prefer-plus-quantifier"?: Linter.RuleEntry<[]>; - /** - * prefer predefined assertion over equivalent lookarounds - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-predefined-assertion.html - */ - "regexp/prefer-predefined-assertion"?: Linter.RuleEntry<[]>; - /** - * enforce using quantifier - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-quantifier.html - */ - "regexp/prefer-quantifier"?: Linter.RuleEntry<[]>; - /** - * enforce using `?` quantifier - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-question-quantifier.html - */ - "regexp/prefer-question-quantifier"?: Linter.RuleEntry<[]>; - /** - * enforce using character class range - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-range.html - */ - "regexp/prefer-range"?: Linter.RuleEntry; - /** - * enforce that `RegExp#exec` is used instead of `String#match` if no global flag is provided - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-regexp-exec.html - */ - "regexp/prefer-regexp-exec"?: Linter.RuleEntry<[]>; - /** - * enforce that `RegExp#test` is used instead of `String#match` and `RegExp#exec` - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-regexp-test.html - */ - "regexp/prefer-regexp-test"?: Linter.RuleEntry<[]>; - /** - * enforce using result array `groups` - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-result-array-groups.html - */ - "regexp/prefer-result-array-groups"?: Linter.RuleEntry; - /** - * prefer character class set operations instead of lookarounds - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-set-operation.html - */ - "regexp/prefer-set-operation"?: Linter.RuleEntry<[]>; - /** - * enforce using `*` quantifier - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-star-quantifier.html - */ - "regexp/prefer-star-quantifier"?: Linter.RuleEntry<[]>; - /** - * enforce use of unicode codepoint escapes - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-unicode-codepoint-escapes.html - */ - "regexp/prefer-unicode-codepoint-escapes"?: Linter.RuleEntry<[]>; - /** - * enforce using `\w` - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-w.html - */ - "regexp/prefer-w"?: Linter.RuleEntry<[]>; - /** - * enforce the use of the `u` flag - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/require-unicode-regexp.html - */ - "regexp/require-unicode-regexp"?: Linter.RuleEntry<[]>; - /** - * enforce the use of the `v` flag - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/require-unicode-sets-regexp.html - */ - "regexp/require-unicode-sets-regexp"?: Linter.RuleEntry<[]>; - /** - * require simplify set operations - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/simplify-set-operations.html - */ - "regexp/simplify-set-operations"?: Linter.RuleEntry<[]>; - /** - * sort alternatives if order doesn't matter - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/sort-alternatives.html - */ - "regexp/sort-alternatives"?: Linter.RuleEntry<[]>; - /** - * enforces elements order in character class - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/sort-character-class-elements.html - */ - "regexp/sort-character-class-elements"?: Linter.RuleEntry; - /** - * require regex flags to be sorted - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/sort-flags.html - */ - "regexp/sort-flags"?: Linter.RuleEntry<[]>; - /** - * disallow not strictly valid regular expressions - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/strict.html - */ - "regexp/strict"?: Linter.RuleEntry<[]>; - /** - * enforce consistent usage of unicode escape or unicode codepoint escape - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/unicode-escape.html - */ - "regexp/unicode-escape"?: Linter.RuleEntry; - /** - * enforce consistent naming of unicode properties - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/unicode-property.html - */ - "regexp/unicode-property"?: Linter.RuleEntry; - /** - * use the `i` flag if it simplifies the pattern - * @see https://ota-meshi.github.io/eslint-plugin-regexp/rules/use-ignore-case.html - */ - "regexp/use-ignore-case"?: Linter.RuleEntry<[]>; - /** - * Automatically sort exports. - * @see https://github.com/lydell/eslint-plugin-simple-import-sort#sort-order - */ - "simple-import-sort/exports"?: Linter.RuleEntry<[]>; - /** - * Automatically sort imports. - * @see https://github.com/lydell/eslint-plugin-simple-import-sort#sort-order - */ - "simple-import-sort/imports"?: Linter.RuleEntry; - /** - * Alternatives in regular expressions should be grouped when used with anchors - * @see https://sonarsource.github.io/rspec/#/rspec/S5850/javascript - */ - "sonarjs/anchor-precedence"?: Linter.RuleEntry<[]>; - /** - * Arguments to built-in functions should match documented types - * @see https://sonarsource.github.io/rspec/#/rspec/S3782/javascript - */ - "sonarjs/argument-type"?: Linter.RuleEntry<[]>; - /** - * Parameters should be passed in the correct order - * @see https://sonarsource.github.io/rspec/#/rspec/S2234/javascript - */ - "sonarjs/arguments-order"?: Linter.RuleEntry; - /** - * "arguments" should not be accessed directly - * @see https://sonarsource.github.io/rspec/#/rspec/S3513/javascript - */ - "sonarjs/arguments-usage"?: Linter.RuleEntry; - /** - * Callbacks of array methods should have return statements - * @see https://sonarsource.github.io/rspec/#/rspec/S3796/javascript - */ - "sonarjs/array-callback-without-return"?: Linter.RuleEntry<[]>; - /** - * Array constructors should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S1528/javascript - */ - "sonarjs/array-constructor"?: Linter.RuleEntry<[]>; - /** - * Braces and parentheses should be used consistently with arrow functions - * @see https://sonarsource.github.io/rspec/#/rspec/S3524/javascript - */ - "sonarjs/arrow-function-convention"?: Linter.RuleEntry; - /** - * Tests should include assertions - * @see https://sonarsource.github.io/rspec/#/rspec/S2699/javascript - */ - "sonarjs/assertions-in-tests"?: Linter.RuleEntry<[]>; - /** - * Creating public APIs is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6333/javascript - */ - "sonarjs/aws-apigateway-public-api"?: Linter.RuleEntry<[]>; - /** - * Allowing public network access to cloud resources is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6329/javascript - */ - "sonarjs/aws-ec2-rds-dms-public"?: Linter.RuleEntry<[]>; - /** - * Using unencrypted EBS volumes is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6275/javascript - */ - "sonarjs/aws-ec2-unencrypted-ebs-volume"?: Linter.RuleEntry<[]>; - /** - * Using unencrypted EFS file systems is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6332/javascript - */ - "sonarjs/aws-efs-unencrypted"?: Linter.RuleEntry<[]>; - /** - * Policies granting all privileges are security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6302/javascript - */ - "sonarjs/aws-iam-all-privileges"?: Linter.RuleEntry; - /** - * Policies granting access to all resources of an account are security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6304/javascript - */ - "sonarjs/aws-iam-all-resources-accessible"?: Linter.RuleEntry; - /** - * AWS IAM policies should limit the scope of permissions given - * @see https://sonarsource.github.io/rspec/#/rspec/S6317/javascript - */ - "sonarjs/aws-iam-privilege-escalation"?: Linter.RuleEntry; - /** - * Policies authorizing public access to resources are security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6270/javascript - */ - "sonarjs/aws-iam-public-access"?: Linter.RuleEntry; - /** - * Using unencrypted Elasticsearch domains is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6308/javascript - */ - "sonarjs/aws-opensearchservice-domain"?: Linter.RuleEntry<[]>; - /** - * Using unencrypted RDS DB resources is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6303/javascript - */ - "sonarjs/aws-rds-unencrypted-databases"?: Linter.RuleEntry<[]>; - /** - * Administration services access should be restricted to specific IP addresses - * @see https://sonarsource.github.io/rspec/#/rspec/S6321/javascript - */ - "sonarjs/aws-restricted-ip-admin-access"?: Linter.RuleEntry<[]>; - /** - * Granting access to S3 buckets to all or authenticated users is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6265/javascript - */ - "sonarjs/aws-s3-bucket-granted-access"?: Linter.RuleEntry; - /** - * Authorizing HTTP communications with S3 buckets is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6249/javascript - */ - "sonarjs/aws-s3-bucket-insecure-http"?: Linter.RuleEntry<[]>; - /** - * Allowing public ACLs or policies on a S3 bucket is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6281/javascript - */ - "sonarjs/aws-s3-bucket-public-access"?: Linter.RuleEntry; - /** - * Disabling server-side encryption of S3 buckets is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6245/javascript - * @deprecated - */ - "sonarjs/aws-s3-bucket-server-encryption"?: Linter.RuleEntry; - /** - * Disabling versioning of S3 buckets is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6252/javascript - */ - "sonarjs/aws-s3-bucket-versioning"?: Linter.RuleEntry; - /** - * Using unencrypted SageMaker notebook instances is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6319/javascript - */ - "sonarjs/aws-sagemaker-unencrypted-notebook"?: Linter.RuleEntry<[]>; - /** - * Using unencrypted SNS topics is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6327/javascript - */ - "sonarjs/aws-sns-unencrypted-topics"?: Linter.RuleEntry<[]>; - /** - * Using unencrypted SQS queues is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6330/javascript - */ - "sonarjs/aws-sqs-unencrypted-queue"?: Linter.RuleEntry<[]>; - /** - * Bitwise operators should not be used in boolean contexts - * @see https://sonarsource.github.io/rspec/#/rspec/S1529/javascript - */ - "sonarjs/bitwise-operators"?: Linter.RuleEntry<[]>; - /** - * Variables should be used in the blocks where they are declared - * @see https://sonarsource.github.io/rspec/#/rspec/S2392/javascript - */ - "sonarjs/block-scoped-var"?: Linter.RuleEntry; - /** - * Optional boolean parameters should have default value - * @see https://sonarsource.github.io/rspec/#/rspec/S4798/javascript - */ - "sonarjs/bool-param-default"?: Linter.RuleEntry<[]>; - /** - * Function call arguments should not start on new lines - * @see https://sonarsource.github.io/rspec/#/rspec/S1472/javascript - */ - "sonarjs/call-argument-line"?: Linter.RuleEntry<[]>; - /** - * Disabling Certificate Transparency monitoring is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5742/javascript - * @deprecated - */ - "sonarjs/certificate-transparency"?: Linter.RuleEntry; - /** - * Chai assertions should have only one reason to succeed - * @see https://sonarsource.github.io/rspec/#/rspec/S6092/javascript - */ - "sonarjs/chai-determinate-assertion"?: Linter.RuleEntry<[]>; - /** - * Class names should comply with a naming convention - * @see https://sonarsource.github.io/rspec/#/rspec/S101/javascript - */ - "sonarjs/class-name"?: Linter.RuleEntry; - /** - * Class methods should be used instead of "prototype" assignments - * @see https://sonarsource.github.io/rspec/#/rspec/S3525/javascript - */ - "sonarjs/class-prototype"?: Linter.RuleEntry<[]>; - /** - * Dynamically executing code is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S1523/javascript - */ - "sonarjs/code-eval"?: Linter.RuleEntry<[]>; - /** - * Cognitive Complexity of functions should not be too high - * @see https://sonarsource.github.io/rspec/#/rspec/S3776/javascript - */ - "sonarjs/cognitive-complexity"?: Linter.RuleEntry; - /** - * Comma and logical OR operators should not be used in switch cases - * @see https://sonarsource.github.io/rspec/#/rspec/S3616/javascript - */ - "sonarjs/comma-or-logical-or-case"?: Linter.RuleEntry<[]>; - /** - * Track comments matching a regular expression - * @see https://sonarsource.github.io/rspec/#/rspec/S124/javascript - */ - "sonarjs/comment-regex"?: Linter.RuleEntry; - /** - * Regular expression quantifiers and character classes should be used concisely - * @see https://sonarsource.github.io/rspec/#/rspec/S6353/javascript - */ - "sonarjs/concise-regex"?: Linter.RuleEntry<[]>; - /** - * A conditionally executed single line should be denoted by indentation - * @see https://sonarsource.github.io/rspec/#/rspec/S3973/javascript - * @deprecated - */ - "sonarjs/conditional-indentation"?: Linter.RuleEntry; - /** - * Allowing confidential information to be logged is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5757/javascript - */ - "sonarjs/confidential-information-logging"?: Linter.RuleEntry; - /** - * Objects should not be created to be dropped immediately without being used - * @see https://sonarsource.github.io/rspec/#/rspec/S1848/javascript - */ - "sonarjs/constructor-for-side-effects"?: Linter.RuleEntry<[]>; - /** - * Allowing requests with excessive content length is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5693/javascript - */ - "sonarjs/content-length"?: Linter.RuleEntry; - /** - * Disabling content security policy fetch directives is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5728/javascript - */ - "sonarjs/content-security-policy"?: Linter.RuleEntry; - /** - * Creating cookies without the "HttpOnly" flag is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S3330/javascript - */ - "sonarjs/cookie-no-httponly"?: Linter.RuleEntry; - /** - * Writing cookies is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S2255/javascript - * @deprecated - */ - "sonarjs/cookies"?: Linter.RuleEntry<[]>; - /** - * Having a permissive Cross-Origin Resource Sharing policy is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5122/javascript - */ - "sonarjs/cors"?: Linter.RuleEntry; - /** - * Disabling CSRF protections is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4502/javascript - */ - "sonarjs/csrf"?: Linter.RuleEntry; - /** - * Cyclomatic Complexity of functions should not be too high - * @see https://sonarsource.github.io/rspec/#/rspec/S1541/javascript - */ - "sonarjs/cyclomatic-complexity"?: Linter.RuleEntry; - /** - * Variables and functions should not be declared in the global scope - * @see https://sonarsource.github.io/rspec/#/rspec/S3798/javascript - */ - "sonarjs/declarations-in-global-scope"?: Linter.RuleEntry<[]>; - /** - * Deprecated APIs should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S1874/javascript - */ - "sonarjs/deprecation"?: Linter.RuleEntry<[]>; - /** - * Destructuring syntax should be used for assignments - * @see https://sonarsource.github.io/rspec/#/rspec/S3514/javascript - */ - "sonarjs/destructuring-assignment-syntax"?: Linter.RuleEntry; - /** - * Strict equality operators should not be used with dissimilar types - * @see https://sonarsource.github.io/rspec/#/rspec/S3403/javascript - */ - "sonarjs/different-types-comparison"?: Linter.RuleEntry; - /** - * Disabling auto-escaping in template engines is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5247/javascript - */ - "sonarjs/disabled-auto-escaping"?: Linter.RuleEntry; - /** - * Using remote artifacts without integrity checks is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5725/javascript - */ - "sonarjs/disabled-resource-integrity"?: Linter.RuleEntry<[]>; - /** - * Disabling Mocha timeouts should be explicit - * @see https://sonarsource.github.io/rspec/#/rspec/S6080/javascript - */ - "sonarjs/disabled-timeout"?: Linter.RuleEntry<[]>; - /** - * Allowing browsers to perform DNS prefetching is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5743/javascript - * @deprecated - */ - "sonarjs/dns-prefetching"?: Linter.RuleEntry; - /** - * Character classes in regular expressions should not contain the same character twice - * @see https://sonarsource.github.io/rspec/#/rspec/S5869/javascript - */ - "sonarjs/duplicates-in-character-class"?: Linter.RuleEntry; - /** - * "if ... else if" constructs should end with "else" clauses - * @see https://sonarsource.github.io/rspec/#/rspec/S126/javascript - */ - "sonarjs/elseif-without-else"?: Linter.RuleEntry<[]>; - /** - * Repeated patterns in regular expressions should not match the empty string - * @see https://sonarsource.github.io/rspec/#/rspec/S5842/javascript - */ - "sonarjs/empty-string-repetition"?: Linter.RuleEntry<[]>; - /** - * Encrypting data is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4787/javascript - * @deprecated - */ - "sonarjs/encryption"?: Linter.RuleEntry<[]>; - /** - * Encryption algorithms should be used with secure mode and padding scheme - * @see https://sonarsource.github.io/rspec/#/rspec/S5542/javascript - */ - "sonarjs/encryption-secure-mode"?: Linter.RuleEntry<[]>; - /** - * Trailing commas should be used - * @see https://sonarsource.github.io/rspec/#/rspec/S3723/javascript - * @deprecated - */ - "sonarjs/enforce-trailing-comma"?: Linter.RuleEntry; - /** - * Replacement strings should reference existing regular expression groups - * @see https://sonarsource.github.io/rspec/#/rspec/S6328/javascript - */ - "sonarjs/existing-groups"?: Linter.RuleEntry<[]>; - /** - * Expressions should not be too complex - * @see https://sonarsource.github.io/rspec/#/rspec/S1067/javascript - */ - "sonarjs/expression-complexity"?: Linter.RuleEntry; - /** - * Track lack of copyright and license headers - * @see https://sonarsource.github.io/rspec/#/rspec/S1451/javascript - */ - "sonarjs/file-header"?: Linter.RuleEntry; - /** - * Default export names and file names should match - * @see https://sonarsource.github.io/rspec/#/rspec/S3317/javascript - */ - "sonarjs/file-name-differ-from-class"?: Linter.RuleEntry<[]>; - /** - * Setting loose POSIX file permissions is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S2612/javascript - */ - "sonarjs/file-permissions"?: Linter.RuleEntry<[]>; - /** - * File uploads should be restricted - * @see https://sonarsource.github.io/rspec/#/rspec/S2598/javascript - */ - "sonarjs/file-uploads"?: Linter.RuleEntry; - /** - * Track uses of "FIXME" tags - * @see https://sonarsource.github.io/rspec/#/rspec/S1134/javascript - */ - "sonarjs/fixme-tag"?: Linter.RuleEntry<[]>; - /** - * "for...in" loops should filter properties before acting on them - * @see https://sonarsource.github.io/rspec/#/rspec/S1535/javascript - */ - "sonarjs/for-in"?: Linter.RuleEntry<[]>; - /** - * A "for" loop update clause should move the counter in the right direction - * @see https://sonarsource.github.io/rspec/#/rspec/S2251/javascript - */ - "sonarjs/for-loop-increment-sign"?: Linter.RuleEntry; - /** - * Disabling content security policy frame-ancestors directive is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5732/javascript - */ - "sonarjs/frame-ancestors"?: Linter.RuleEntry; - /** - * Functions should not be defined inside loops - * @see https://sonarsource.github.io/rspec/#/rspec/S1515/javascript - */ - "sonarjs/function-inside-loop"?: Linter.RuleEntry; - /** - * Function and method names should comply with a naming convention - * @see https://sonarsource.github.io/rspec/#/rspec/S100/javascript - */ - "sonarjs/function-name"?: Linter.RuleEntry; - /** - * Functions should always return the same type - * @see https://sonarsource.github.io/rspec/#/rspec/S3800/javascript - */ - "sonarjs/function-return-type"?: Linter.RuleEntry; - /** - * Future reserved words should not be used as identifiers - * @see https://sonarsource.github.io/rspec/#/rspec/S1527/javascript - */ - "sonarjs/future-reserved-words"?: Linter.RuleEntry<[]>; - /** - * Generators should explicitly "yield" a value - * @see https://sonarsource.github.io/rspec/#/rspec/S3531/javascript - */ - "sonarjs/generator-without-yield"?: Linter.RuleEntry<[]>; - /** - * Using weak hashing algorithms is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4790/javascript - */ - "sonarjs/hashing"?: Linter.RuleEntry<[]>; - /** - * Statically serving hidden files is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5691/javascript - */ - "sonarjs/hidden-files"?: Linter.RuleEntry<[]>; - /** - * "in" should not be used with primitive types - * @see https://sonarsource.github.io/rspec/#/rspec/S3785/javascript - */ - "sonarjs/in-operator-type-error"?: Linter.RuleEntry; - /** - * Functions should be called consistently with or without "new" - * @see https://sonarsource.github.io/rspec/#/rspec/S3686/javascript - */ - "sonarjs/inconsistent-function-call"?: Linter.RuleEntry; - /** - * "indexOf" checks should not be for positive numbers - * @see https://sonarsource.github.io/rspec/#/rspec/S2692/javascript - */ - "sonarjs/index-of-compare-to-positive-number"?: Linter.RuleEntry<[]>; - /** - * Creating cookies without the "secure" flag is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S2092/javascript - */ - "sonarjs/insecure-cookie"?: Linter.RuleEntry; - /** - * JWT should be signed and verified with strong cipher algorithms - * @see https://sonarsource.github.io/rspec/#/rspec/S5659/javascript - */ - "sonarjs/insecure-jwt-token"?: Linter.RuleEntry; - /** - * Assertion arguments should be passed in the correct order - * @see https://sonarsource.github.io/rspec/#/rspec/S3415/javascript - */ - "sonarjs/inverted-assertion-arguments"?: Linter.RuleEntry; - /** - * React components should not render non-boolean condition values - * @see https://sonarsource.github.io/rspec/#/rspec/S6439/javascript - */ - "sonarjs/jsx-no-leaked-render"?: Linter.RuleEntry<[]>; - /** - * Only "while", "do", "for" and "switch" statements should be labelled - * @see https://sonarsource.github.io/rspec/#/rspec/S1439/javascript - */ - "sonarjs/label-position"?: Linter.RuleEntry<[]>; - /** - * Authorizing an opened window to access back to the originating window is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5148/javascript - */ - "sonarjs/link-with-target-blank"?: Linter.RuleEntry<[]>; - /** - * Files should not have too many lines of code - * @see https://sonarsource.github.io/rspec/#/rspec/S104/javascript - */ - "sonarjs/max-lines"?: Linter.RuleEntry; - /** - * Functions should not have too many lines of code - * @see https://sonarsource.github.io/rspec/#/rspec/S138/javascript - */ - "sonarjs/max-lines-per-function"?: Linter.RuleEntry; - /** - * "switch" statements should not have too many "case" clauses - * @see https://sonarsource.github.io/rspec/#/rspec/S1479/javascript - */ - "sonarjs/max-switch-cases"?: Linter.RuleEntry; - /** - * Union types should not have too many elements - * @see https://sonarsource.github.io/rspec/#/rspec/S4622/javascript - */ - "sonarjs/max-union-size"?: Linter.RuleEntry; - /** - * "for" loop increment clauses should modify the loops' counters - * @see https://sonarsource.github.io/rspec/#/rspec/S1994/javascript - */ - "sonarjs/misplaced-loop-counter"?: Linter.RuleEntry<[]>; - /** - * Control flow statements "if", "for", "while", "switch" and "try" should not be nested too deeply - * @see https://sonarsource.github.io/rspec/#/rspec/S134/javascript - */ - "sonarjs/nested-control-flow"?: Linter.RuleEntry; - /** - * "new" should only be used with functions and classes - * @see https://sonarsource.github.io/rspec/#/rspec/S2999/javascript - */ - "sonarjs/new-operator-misuse"?: Linter.RuleEntry; - /** - * All branches in a conditional structure should not have exactly the same implementation - * @see https://sonarsource.github.io/rspec/#/rspec/S3923/javascript - */ - "sonarjs/no-all-duplicated-branches"?: Linter.RuleEntry<[]>; - /** - * "Array.prototype.sort()" and "Array.prototype.toSorted()" should use a compare function - * @see https://sonarsource.github.io/rspec/#/rspec/S2871/javascript - */ - "sonarjs/no-alphabetical-sort"?: Linter.RuleEntry<[]>; - /** - * Disabling Angular built-in sanitization is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6268/javascript - */ - "sonarjs/no-angular-bypass-sanitization"?: Linter.RuleEntry<[]>; - /** - * "delete" should not be used on arrays - * @see https://sonarsource.github.io/rspec/#/rspec/S2870/javascript - */ - "sonarjs/no-array-delete"?: Linter.RuleEntry<[]>; - /** - * Array indexes should be numeric - * @see https://sonarsource.github.io/rspec/#/rspec/S3579/javascript - */ - "sonarjs/no-associative-arrays"?: Linter.RuleEntry<[]>; - /** - * Constructors should not contain asynchronous operations - * @see https://sonarsource.github.io/rspec/#/rspec/S7059/javascript - */ - "sonarjs/no-async-constructor"?: Linter.RuleEntry<[]>; - /** - * Built-in objects should not be overridden - * @see https://sonarsource.github.io/rspec/#/rspec/S2424/javascript - */ - "sonarjs/no-built-in-override"?: Linter.RuleEntry<[]>; - /** - * "switch" statements should not contain non-case labels - * @see https://sonarsource.github.io/rspec/#/rspec/S1219/javascript - */ - "sonarjs/no-case-label-in-switch"?: Linter.RuleEntry<[]>; - /** - * Using clear-text protocols is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5332/javascript - */ - "sonarjs/no-clear-text-protocols"?: Linter.RuleEntry<[]>; - /** - * Tests should not execute any code after "done()" is called - * @see https://sonarsource.github.io/rspec/#/rspec/S6079/javascript - */ - "sonarjs/no-code-after-done"?: Linter.RuleEntry; - /** - * Mergeable "if" statements should be combined - * @see https://sonarsource.github.io/rspec/#/rspec/S1066/javascript - */ - "sonarjs/no-collapsible-if"?: Linter.RuleEntry; - /** - * Collection size and array length comparisons should make sense - * @see https://sonarsource.github.io/rspec/#/rspec/S3981/javascript - */ - "sonarjs/no-collection-size-mischeck"?: Linter.RuleEntry<[]>; - /** - * Sections of code should not be commented out - * @see https://sonarsource.github.io/rspec/#/rspec/S125/javascript - */ - "sonarjs/no-commented-code"?: Linter.RuleEntry<[]>; - /** - * Regular expressions should not contain control characters - * @see https://sonarsource.github.io/rspec/#/rspec/S6324/javascript - */ - "sonarjs/no-control-regex"?: Linter.RuleEntry<[]>; - /** - * Unused assignments should be removed - * @see https://sonarsource.github.io/rspec/#/rspec/S1854/javascript - */ - "sonarjs/no-dead-store"?: Linter.RuleEntry<[]>; - /** - * "delete" should be used only with object properties - * @see https://sonarsource.github.io/rspec/#/rspec/S3001/javascript - */ - "sonarjs/no-delete-var"?: Linter.RuleEntry<[]>; - /** - * Union and intersection types should not include duplicated constituents - * @see https://sonarsource.github.io/rspec/#/rspec/S4621/javascript - */ - "sonarjs/no-duplicate-in-composite"?: Linter.RuleEntry; - /** - * String literals should not be duplicated - * @see https://sonarsource.github.io/rspec/#/rspec/S1192/javascript - */ - "sonarjs/no-duplicate-string"?: Linter.RuleEntry; - /** - * Two branches in a conditional structure should not have exactly the same implementation - * @see https://sonarsource.github.io/rspec/#/rspec/S1871/javascript - */ - "sonarjs/no-duplicated-branches"?: Linter.RuleEntry; - /** - * Collection elements should not be replaced unconditionally - * @see https://sonarsource.github.io/rspec/#/rspec/S4143/javascript - */ - "sonarjs/no-element-overwrite"?: Linter.RuleEntry; - /** - * Reluctant quantifiers in regular expressions should be followed by an expression that can't match the empty string - * @see https://sonarsource.github.io/rspec/#/rspec/S6019/javascript - */ - "sonarjs/no-empty-after-reluctant"?: Linter.RuleEntry<[]>; - /** - * Alternation in regular expressions should not contain empty alternatives - * @see https://sonarsource.github.io/rspec/#/rspec/S6323/javascript - */ - "sonarjs/no-empty-alternatives"?: Linter.RuleEntry<[]>; - /** - * Empty character classes should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S2639/javascript - */ - "sonarjs/no-empty-character-class"?: Linter.RuleEntry<[]>; - /** - * Empty collections should not be accessed or iterated - * @see https://sonarsource.github.io/rspec/#/rspec/S4158/javascript - */ - "sonarjs/no-empty-collection"?: Linter.RuleEntry<[]>; - /** - * Regular expressions should not contain empty groups - * @see https://sonarsource.github.io/rspec/#/rspec/S6331/javascript - */ - "sonarjs/no-empty-group"?: Linter.RuleEntry<[]>; - /** - * Test files should contain at least one test case - * @see https://sonarsource.github.io/rspec/#/rspec/S2187/javascript - */ - "sonarjs/no-empty-test-file"?: Linter.RuleEntry<[]>; - /** - * Equality operators should not be used in "for" loop termination conditions - * @see https://sonarsource.github.io/rspec/#/rspec/S888/javascript - */ - "sonarjs/no-equals-in-for-termination"?: Linter.RuleEntry<[]>; - /** - * Exclusive tests should not be commited to version control - * @see https://sonarsource.github.io/rspec/#/rspec/S6426/javascript - */ - "sonarjs/no-exclusive-tests"?: Linter.RuleEntry<[]>; - /** - * Function calls should not pass extra arguments - * @see https://sonarsource.github.io/rspec/#/rspec/S930/javascript - */ - "sonarjs/no-extra-arguments"?: Linter.RuleEntry; - /** - * Switch cases should end with an unconditional "break" statement - * @see https://sonarsource.github.io/rspec/#/rspec/S128/javascript - */ - "sonarjs/no-fallthrough"?: Linter.RuleEntry<[]>; - /** - * "for in" should not be used with iterables - * @see https://sonarsource.github.io/rspec/#/rspec/S4139/javascript - */ - "sonarjs/no-for-in-iterable"?: Linter.RuleEntry<[]>; - /** - * Function declarations should not be made within blocks - * @see https://sonarsource.github.io/rspec/#/rspec/S1530/javascript - */ - "sonarjs/no-function-declaration-in-block"?: Linter.RuleEntry<[]>; - /** - * The global "this" object should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S2990/javascript - */ - "sonarjs/no-global-this"?: Linter.RuleEntry<[]>; - /** - * Special identifiers should not be bound or assigned - * @see https://sonarsource.github.io/rspec/#/rspec/S2137/javascript - */ - "sonarjs/no-globals-shadowing"?: Linter.RuleEntry<[]>; - /** - * Boolean expressions should not be gratuitous - * @see https://sonarsource.github.io/rspec/#/rspec/S2589/javascript - */ - "sonarjs/no-gratuitous-expressions"?: Linter.RuleEntry; - /** - * Using hardcoded IP addresses is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S1313/javascript - */ - "sonarjs/no-hardcoded-ip"?: Linter.RuleEntry<[]>; - /** - * Hard-coded passwords are security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S2068/javascript - */ - "sonarjs/no-hardcoded-passwords"?: Linter.RuleEntry; - /** - * Hard-coded secrets are security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6418/javascript - */ - "sonarjs/no-hardcoded-secrets"?: Linter.RuleEntry; - /** - * React's useState hook should not be used directly in the render function or body of a component - * @see https://sonarsource.github.io/rspec/#/rspec/S6442/javascript - */ - "sonarjs/no-hook-setter-in-body"?: Linter.RuleEntry<[]>; - /** - * "if/else if" chains and "switch" cases should not have the same condition - * @see https://sonarsource.github.io/rspec/#/rspec/S1862/javascript - */ - "sonarjs/no-identical-conditions"?: Linter.RuleEntry; - /** - * Identical expressions should not be used on both sides of a binary operator - * @see https://sonarsource.github.io/rspec/#/rspec/S1764/javascript - */ - "sonarjs/no-identical-expressions"?: Linter.RuleEntry; - /** - * Functions should not have identical implementations - * @see https://sonarsource.github.io/rspec/#/rspec/S4144/javascript - */ - "sonarjs/no-identical-functions"?: Linter.RuleEntry; - /** - * Exceptions should not be ignored - * @see https://sonarsource.github.io/rspec/#/rspec/S2486/javascript - */ - "sonarjs/no-ignored-exceptions"?: Linter.RuleEntry<[]>; - /** - * Return values from functions without side effects should not be ignored - * @see https://sonarsource.github.io/rspec/#/rspec/S2201/javascript - */ - "sonarjs/no-ignored-return"?: Linter.RuleEntry<[]>; - /** - * Dependencies should be explicit - * @see https://sonarsource.github.io/rspec/#/rspec/S4328/javascript - */ - "sonarjs/no-implicit-dependencies"?: Linter.RuleEntry; - /** - * Variables should be declared explicitly - * @see https://sonarsource.github.io/rspec/#/rspec/S2703/javascript - */ - "sonarjs/no-implicit-global"?: Linter.RuleEntry<[]>; - /** - * "in" should not be used on arrays - * @see https://sonarsource.github.io/rspec/#/rspec/S4619/javascript - */ - "sonarjs/no-in-misuse"?: Linter.RuleEntry<[]>; - /** - * Assertions should be complete - * @see https://sonarsource.github.io/rspec/#/rspec/S2970/javascript - */ - "sonarjs/no-incomplete-assertions"?: Linter.RuleEntry<[]>; - /** - * Functions should use "return" consistently - * @see https://sonarsource.github.io/rspec/#/rspec/S3801/javascript - */ - "sonarjs/no-inconsistent-returns"?: Linter.RuleEntry; - /** - * Strings and non-strings should not be added - * @see https://sonarsource.github.io/rspec/#/rspec/S3402/javascript - */ - "sonarjs/no-incorrect-string-concat"?: Linter.RuleEntry; - /** - * Users should not use internal APIs - * @see https://sonarsource.github.io/rspec/#/rspec/S6627/javascript - */ - "sonarjs/no-internal-api-use"?: Linter.RuleEntry<[]>; - /** - * Using intrusive permissions is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5604/javascript - */ - "sonarjs/no-intrusive-permissions"?: Linter.RuleEntry; - /** - * "await" should only be used with promises - * @see https://sonarsource.github.io/rspec/#/rspec/S4123/javascript - */ - "sonarjs/no-invalid-await"?: Linter.RuleEntry<[]>; - /** - * Regular expressions should be syntactically valid - * @see https://sonarsource.github.io/rspec/#/rspec/S5856/javascript - */ - "sonarjs/no-invalid-regexp"?: Linter.RuleEntry<[]>; - /** - * Function returns should not be invariant - * @see https://sonarsource.github.io/rspec/#/rspec/S3516/javascript - */ - "sonarjs/no-invariant-returns"?: Linter.RuleEntry; - /** - * Boolean checks should not be inverted - * @see https://sonarsource.github.io/rspec/#/rspec/S1940/javascript - */ - "sonarjs/no-inverted-boolean-check"?: Linter.RuleEntry<[]>; - /** - * Forwarding client IP address is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5759/javascript - */ - "sonarjs/no-ip-forward"?: Linter.RuleEntry; - /** - * Labels should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S1119/javascript - */ - "sonarjs/no-labels"?: Linter.RuleEntry<[]>; - /** - * Literals should not be used as functions - * @see https://sonarsource.github.io/rspec/#/rspec/S6958/javascript - */ - "sonarjs/no-literal-call"?: Linter.RuleEntry<[]>; - /** - * Allowing browsers to sniff MIME types is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5734/javascript - */ - "sonarjs/no-mime-sniff"?: Linter.RuleEntry; - /** - * Array-mutating methods should not be used misleadingly - * @see https://sonarsource.github.io/rspec/#/rspec/S4043/javascript - */ - "sonarjs/no-misleading-array-reverse"?: Linter.RuleEntry<[]>; - /** - * Unicode Grapheme Clusters should be avoided inside regex character classes - * @see https://sonarsource.github.io/rspec/#/rspec/S5868/javascript - */ - "sonarjs/no-misleading-character-class"?: Linter.RuleEntry<[]>; - /** - * Allowing mixed-content is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5730/javascript - */ - "sonarjs/no-mixed-content"?: Linter.RuleEntry; - /** - * Assignments should not be made from within sub-expressions - * @see https://sonarsource.github.io/rspec/#/rspec/S1121/javascript - */ - "sonarjs/no-nested-assignment"?: Linter.RuleEntry<[]>; - /** - * Ternary operators should not be nested - * @see https://sonarsource.github.io/rspec/#/rspec/S3358/javascript - */ - "sonarjs/no-nested-conditional"?: Linter.RuleEntry<[]>; - /** - * Functions should not be nested too deeply - * @see https://sonarsource.github.io/rspec/#/rspec/S2004/javascript - */ - "sonarjs/no-nested-functions"?: Linter.RuleEntry; - /** - * Increment (++) and decrement (--) operators should not be used in a method call or mixed with other operators in an expression - * @see https://sonarsource.github.io/rspec/#/rspec/S881/javascript - */ - "sonarjs/no-nested-incdec"?: Linter.RuleEntry<[]>; - /** - * "switch" statements should not be nested - * @see https://sonarsource.github.io/rspec/#/rspec/S1821/javascript - */ - "sonarjs/no-nested-switch"?: Linter.RuleEntry<[]>; - /** - * Template literals should not be nested - * @see https://sonarsource.github.io/rspec/#/rspec/S4624/javascript - */ - "sonarjs/no-nested-template-literals"?: Linter.RuleEntry<[]>; - /** - * Loops with at most one iteration should be refactored - * @see https://sonarsource.github.io/rspec/#/rspec/S1751/javascript - */ - "sonarjs/no-one-iteration-loop"?: Linter.RuleEntry<[]>; - /** - * Searching OS commands in PATH is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4036/javascript - */ - "sonarjs/no-os-command-from-path"?: Linter.RuleEntry<[]>; - /** - * Initial values of parameters, caught exceptions, and loop variables should not be ignored - * @see https://sonarsource.github.io/rspec/#/rspec/S1226/javascript - */ - "sonarjs/no-parameter-reassignment"?: Linter.RuleEntry<[]>; - /** - * Wrapper objects should not be used for primitive types - * @see https://sonarsource.github.io/rspec/#/rspec/S1533/javascript - */ - "sonarjs/no-primitive-wrappers"?: Linter.RuleEntry<[]>; - /** - * Assignments should not be redundant - * @see https://sonarsource.github.io/rspec/#/rspec/S4165/javascript - */ - "sonarjs/no-redundant-assignments"?: Linter.RuleEntry<[]>; - /** - * Boolean literals should not be used in comparisons - * @see https://sonarsource.github.io/rspec/#/rspec/S1125/javascript - */ - "sonarjs/no-redundant-boolean"?: Linter.RuleEntry<[]>; - /** - * Jump statements should not be redundant - * @see https://sonarsource.github.io/rspec/#/rspec/S3626/javascript - */ - "sonarjs/no-redundant-jump"?: Linter.RuleEntry<[]>; - /** - * Optional property declarations should not use both '?' and 'undefined' syntax - * @see https://sonarsource.github.io/rspec/#/rspec/S4782/javascript - */ - "sonarjs/no-redundant-optional"?: Linter.RuleEntry; - /** - * Redundant pairs of parentheses should be removed - * @see https://sonarsource.github.io/rspec/#/rspec/S1110/javascript - * @deprecated - */ - "sonarjs/no-redundant-parentheses"?: Linter.RuleEntry; - /** - * Variables should be defined before being used - * @see https://sonarsource.github.io/rspec/#/rspec/S3827/javascript - */ - "sonarjs/no-reference-error"?: Linter.RuleEntry; - /** - * Disabling strict HTTP no-referrer policy is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5736/javascript - */ - "sonarjs/no-referrer-policy"?: Linter.RuleEntry; - /** - * Regular expressions should not contain multiple spaces - * @see https://sonarsource.github.io/rspec/#/rspec/S6326/javascript - */ - "sonarjs/no-regex-spaces"?: Linter.RuleEntry<[]>; - /** - * "import" should be used to include external code - * @see https://sonarsource.github.io/rspec/#/rspec/S3533/javascript - */ - "sonarjs/no-require-or-define"?: Linter.RuleEntry<[]>; - /** - * Primitive return types should be used - * @see https://sonarsource.github.io/rspec/#/rspec/S4324/javascript - */ - "sonarjs/no-return-type-any"?: Linter.RuleEntry<[]>; - /** - * Assertions should not be given twice the same argument - * @see https://sonarsource.github.io/rspec/#/rspec/S5863/javascript - */ - "sonarjs/no-same-argument-assert"?: Linter.RuleEntry; - /** - * Conditionals should start on new lines - * @see https://sonarsource.github.io/rspec/#/rspec/S3972/javascript - */ - "sonarjs/no-same-line-conditional"?: Linter.RuleEntry; - /** - * Methods should not contain selector parameters - * @see https://sonarsource.github.io/rspec/#/rspec/S2301/javascript - */ - "sonarjs/no-selector-parameter"?: Linter.RuleEntry; - /** - * Tests should not be skipped without providing a reason - * @see https://sonarsource.github.io/rspec/#/rspec/S1607/javascript - */ - "sonarjs/no-skipped-tests"?: Linter.RuleEntry<[]>; - /** - * "if" statements should be preferred over "switch" when simpler - * @see https://sonarsource.github.io/rspec/#/rspec/S1301/javascript - */ - "sonarjs/no-small-switch"?: Linter.RuleEntry<[]>; - /** - * Track uses of "NOSONAR" comments - * @see https://sonarsource.github.io/rspec/#/rspec/S1291/javascript - */ - "sonarjs/no-sonar-comments"?: Linter.RuleEntry<[]>; - /** - * Tabulation characters should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S105/javascript - * @deprecated - */ - "sonarjs/no-tab"?: Linter.RuleEntry<[]>; - /** - * HTML "" should not be used for layout purposes - * @see https://sonarsource.github.io/rspec/#/rspec/S5257/javascript - */ - "sonarjs/no-table-as-layout"?: Linter.RuleEntry<[]>; - /** - * Promise rejections should not be caught by "try" blocks - * @see https://sonarsource.github.io/rspec/#/rspec/S4822/javascript - */ - "sonarjs/no-try-promise"?: Linter.RuleEntry; - /** - * "undefined" should not be passed as the value of optional parameters - * @see https://sonarsource.github.io/rspec/#/rspec/S4623/javascript - */ - "sonarjs/no-undefined-argument"?: Linter.RuleEntry<[]>; - /** - * "undefined" should not be assigned - * @see https://sonarsource.github.io/rspec/#/rspec/S2138/javascript - */ - "sonarjs/no-undefined-assignment"?: Linter.RuleEntry<[]>; - /** - * Multiline blocks should be enclosed in curly braces - * @see https://sonarsource.github.io/rspec/#/rspec/S2681/javascript - */ - "sonarjs/no-unenclosed-multiline-block"?: Linter.RuleEntry<[]>; - /** - * JSX list components keys should match up between renders - * @see https://sonarsource.github.io/rspec/#/rspec/S6486/javascript - */ - "sonarjs/no-uniq-key"?: Linter.RuleEntry<[]>; - /** - * Expanding archive files without controlling resource consumption is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5042/javascript - */ - "sonarjs/no-unsafe-unzip"?: Linter.RuleEntry<[]>; - /** - * Errors should not be created without being thrown - * @see https://sonarsource.github.io/rspec/#/rspec/S3984/javascript - */ - "sonarjs/no-unthrown-error"?: Linter.RuleEntry<[]>; - /** - * Collection contents should be used - * @see https://sonarsource.github.io/rspec/#/rspec/S4030/javascript - */ - "sonarjs/no-unused-collection"?: Linter.RuleEntry<[]>; - /** - * Unused function parameters should be removed - * @see https://sonarsource.github.io/rspec/#/rspec/S1172/javascript - */ - "sonarjs/no-unused-function-argument"?: Linter.RuleEntry<[]>; - /** - * Unused local variables and functions should be removed - * @see https://sonarsource.github.io/rspec/#/rspec/S1481/javascript - */ - "sonarjs/no-unused-vars"?: Linter.RuleEntry<[]>; - /** - * The return value of void functions should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S3699/javascript - */ - "sonarjs/no-use-of-empty-return-value"?: Linter.RuleEntry<[]>; - /** - * "catch" clauses should do more than rethrow - * @see https://sonarsource.github.io/rspec/#/rspec/S2737/javascript - */ - "sonarjs/no-useless-catch"?: Linter.RuleEntry<[]>; - /** - * Values should not be uselessly incremented - * @see https://sonarsource.github.io/rspec/#/rspec/S2123/javascript - */ - "sonarjs/no-useless-increment"?: Linter.RuleEntry<[]>; - /** - * Type intersections should use meaningful types - * @see https://sonarsource.github.io/rspec/#/rspec/S4335/javascript - */ - "sonarjs/no-useless-intersection"?: Linter.RuleEntry<[]>; - /** - * React state setter function should not be called with its matching state variable - * @see https://sonarsource.github.io/rspec/#/rspec/S6443/javascript - */ - "sonarjs/no-useless-react-setstate"?: Linter.RuleEntry<[]>; - /** - * Variables declared with "var" should be declared before they are used - * @see https://sonarsource.github.io/rspec/#/rspec/S1526/javascript - */ - "sonarjs/no-variable-usage-before-declaration"?: Linter.RuleEntry; - /** - * Disabling Vue.js built-in escaping is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S6299/javascript - * @deprecated - */ - "sonarjs/no-vue-bypass-sanitization"?: Linter.RuleEntry<[]>; - /** - * Cipher algorithms should be robust - * @see https://sonarsource.github.io/rspec/#/rspec/S5547/javascript - */ - "sonarjs/no-weak-cipher"?: Linter.RuleEntry<[]>; - /** - * Cryptographic keys should be robust - * @see https://sonarsource.github.io/rspec/#/rspec/S4426/javascript - */ - "sonarjs/no-weak-keys"?: Linter.RuleEntry<[]>; - /** - * Wildcard imports should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S2208/javascript - */ - "sonarjs/no-wildcard-import"?: Linter.RuleEntry<[]>; - /** - * Non-existent operators '=+', '=-' and '=!' should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S2757/javascript - */ - "sonarjs/non-existent-operator"?: Linter.RuleEntry<[]>; - /** - * Arithmetic operators should only have numbers as operands - * @see https://sonarsource.github.io/rspec/#/rspec/S3760/javascript - */ - "sonarjs/non-number-in-arithmetic-expression"?: Linter.RuleEntry; - /** - * Properties of variables with "null" or "undefined" values should not be accessed - * @see https://sonarsource.github.io/rspec/#/rspec/S2259/javascript - */ - "sonarjs/null-dereference"?: Linter.RuleEntry<[]>; - /** - * "" tags should provide an alternative content - * @see https://sonarsource.github.io/rspec/#/rspec/S5264/javascript - */ - "sonarjs/object-alt-content"?: Linter.RuleEntry<[]>; - /** - * Arithmetic operations should not result in "NaN" - * @see https://sonarsource.github.io/rspec/#/rspec/S3757/javascript - */ - "sonarjs/operation-returning-nan"?: Linter.RuleEntry<[]>; - /** - * Using shell interpreter when executing OS commands is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4721/javascript - */ - "sonarjs/os-command"?: Linter.RuleEntry<[]>; - /** - * Origins should be verified during cross-origin communications - * @see https://sonarsource.github.io/rspec/#/rspec/S2819/javascript - */ - "sonarjs/post-message"?: Linter.RuleEntry<[]>; - /** - * "default" clauses should be last - * @see https://sonarsource.github.io/rspec/#/rspec/S4524/javascript - */ - "sonarjs/prefer-default-last"?: Linter.RuleEntry<[]>; - /** - * Local variables should not be declared and then immediately returned or thrown - * @see https://sonarsource.github.io/rspec/#/rspec/S1488/javascript - */ - "sonarjs/prefer-immediate-return"?: Linter.RuleEntry<[]>; - /** - * Object literal syntax should be used - * @see https://sonarsource.github.io/rspec/#/rspec/S2428/javascript - */ - "sonarjs/prefer-object-literal"?: Linter.RuleEntry<[]>; - /** - * Shorthand promises should be used - * @see https://sonarsource.github.io/rspec/#/rspec/S4634/javascript - */ - "sonarjs/prefer-promise-shorthand"?: Linter.RuleEntry<[]>; - /** - * React props should be read-only - * @see https://sonarsource.github.io/rspec/#/rspec/S6759/javascript - */ - "sonarjs/prefer-read-only-props"?: Linter.RuleEntry<[]>; - /** - * "RegExp.exec()" should be preferred over "String.match()" - * @see https://sonarsource.github.io/rspec/#/rspec/S6594/javascript - */ - "sonarjs/prefer-regexp-exec"?: Linter.RuleEntry<[]>; - /** - * Return of boolean expressions should not be wrapped into an "if-then-else" statement - * @see https://sonarsource.github.io/rspec/#/rspec/S1126/javascript - */ - "sonarjs/prefer-single-boolean-return"?: Linter.RuleEntry<[]>; - /** - * Type predicates should be used - * @see https://sonarsource.github.io/rspec/#/rspec/S4322/javascript - */ - "sonarjs/prefer-type-guard"?: Linter.RuleEntry<[]>; - /** - * A "while" loop should be used instead of a "for" loop - * @see https://sonarsource.github.io/rspec/#/rspec/S1264/javascript - */ - "sonarjs/prefer-while"?: Linter.RuleEntry<[]>; - /** - * Using command line arguments is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4823/javascript - * @deprecated - */ - "sonarjs/process-argv"?: Linter.RuleEntry<[]>; - /** - * Delivering code in production with debug features activated is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4507/javascript - */ - "sonarjs/production-debug"?: Linter.RuleEntry<[]>; - /** - * Using pseudorandom number generators (PRNGs) is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S2245/javascript - */ - "sonarjs/pseudo-random"?: Linter.RuleEntry<[]>; - /** - * Public "static" fields should be read-only - * @see https://sonarsource.github.io/rspec/#/rspec/S1444/javascript - */ - "sonarjs/public-static-readonly"?: Linter.RuleEntry<[]>; - /** - * Using publicly writable directories is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5443/javascript - */ - "sonarjs/publicly-writable-directories"?: Linter.RuleEntry<[]>; - /** - * "Array.reduce()" calls should include an initial value - * @see https://sonarsource.github.io/rspec/#/rspec/S6959/javascript - */ - "sonarjs/reduce-initial-value"?: Linter.RuleEntry<[]>; - /** - * Redundant type aliases should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S6564/javascript - */ - "sonarjs/redundant-type-aliases"?: Linter.RuleEntry<[]>; - /** - * Regular expressions should not be too complicated - * @see https://sonarsource.github.io/rspec/#/rspec/S5843/javascript - */ - "sonarjs/regex-complexity"?: Linter.RuleEntry; - /** - * Using regular expressions is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4784/javascript - * @deprecated - */ - "sonarjs/regular-expr"?: Linter.RuleEntry<[]>; - /** - * A new session should be created during user authentication - * @see https://sonarsource.github.io/rspec/#/rspec/S5876/javascript - */ - "sonarjs/session-regeneration"?: Linter.RuleEntry<[]>; - /** - * Shorthand object properties should be grouped at the beginning or end of an object declaration - * @see https://sonarsource.github.io/rspec/#/rspec/S3499/javascript - */ - "sonarjs/shorthand-property-grouping"?: Linter.RuleEntry; - /** - * Character classes in regular expressions should not contain only one character - * @see https://sonarsource.github.io/rspec/#/rspec/S6397/javascript - */ - "sonarjs/single-char-in-character-classes"?: Linter.RuleEntry<[]>; - /** - * Single-character alternations in regular expressions should be replaced with character classes - * @see https://sonarsource.github.io/rspec/#/rspec/S6035/javascript - */ - "sonarjs/single-character-alternation"?: Linter.RuleEntry<[]>; - /** - * Using slow regular expressions is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5852/javascript - */ - "sonarjs/slow-regex"?: Linter.RuleEntry<[]>; - /** - * Using Sockets is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4818/javascript - * @deprecated - */ - "sonarjs/sockets"?: Linter.RuleEntry<[]>; - /** - * Formatting SQL queries is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S2077/javascript - */ - "sonarjs/sql-queries"?: Linter.RuleEntry<[]>; - /** - * Tests should be stable - * @see https://sonarsource.github.io/rspec/#/rspec/S5973/javascript - */ - "sonarjs/stable-tests"?: Linter.RuleEntry<[]>; - /** - * Reading the Standard Input is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4829/javascript - * @deprecated - */ - "sonarjs/standard-input"?: Linter.RuleEntry<[]>; - /** - * Regular expressions with the global flag should be used with caution - * @see https://sonarsource.github.io/rspec/#/rspec/S6351/javascript - */ - "sonarjs/stateful-regex"?: Linter.RuleEntry; - /** - * Disabling Strict-Transport-Security policy is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5739/javascript - */ - "sonarjs/strict-transport-security"?: Linter.RuleEntry; - /** - * Comparison operators should not be used with strings - * @see https://sonarsource.github.io/rspec/#/rspec/S3003/javascript - */ - "sonarjs/strings-comparison"?: Linter.RuleEntry; - /** - * "super()" should be invoked appropriately - * @see https://sonarsource.github.io/rspec/#/rspec/S3854/javascript - */ - "sonarjs/super-invocation"?: Linter.RuleEntry<[]>; - /** - * Tables should have headers - * @see https://sonarsource.github.io/rspec/#/rspec/S5256/javascript - */ - "sonarjs/table-header"?: Linter.RuleEntry<[]>; - /** - * Table cells should reference their headers - * @see https://sonarsource.github.io/rspec/#/rspec/S5260/javascript - */ - "sonarjs/table-header-reference"?: Linter.RuleEntry<[]>; - /** - * Tests should check which exception is thrown - * @see https://sonarsource.github.io/rspec/#/rspec/S5958/javascript - */ - "sonarjs/test-check-exception"?: Linter.RuleEntry<[]>; - /** - * Track uses of "TODO" tags - * @see https://sonarsource.github.io/rspec/#/rspec/S1135/javascript - */ - "sonarjs/todo-tag"?: Linter.RuleEntry<[]>; - /** - * Loops should not contain more than a single "break" or "continue" statement - * @see https://sonarsource.github.io/rspec/#/rspec/S135/javascript - */ - "sonarjs/too-many-break-or-continue-in-loop"?: Linter.RuleEntry; - /** - * Regular expressions using Unicode character classes or property escapes should enable the unicode flag - * @see https://sonarsource.github.io/rspec/#/rspec/S5867/javascript - */ - "sonarjs/unicode-aware-regex"?: Linter.RuleEntry; - /** - * Unnecessary imports should be removed - * @see https://sonarsource.github.io/rspec/#/rspec/S1128/javascript - */ - "sonarjs/unused-import"?: Linter.RuleEntry<[]>; - /** - * Names of regular expressions named groups should be used - * @see https://sonarsource.github.io/rspec/#/rspec/S5860/javascript - */ - "sonarjs/unused-named-groups"?: Linter.RuleEntry; - /** - * Server certificates should be verified during SSL/TLS connections - * @see https://sonarsource.github.io/rspec/#/rspec/S4830/javascript - */ - "sonarjs/unverified-certificate"?: Linter.RuleEntry; - /** - * Server hostnames should be verified during SSL/TLS connections - * @see https://sonarsource.github.io/rspec/#/rspec/S5527/javascript - */ - "sonarjs/unverified-hostname"?: Linter.RuleEntry; - /** - * "const" variables should not be reassigned - * @see https://sonarsource.github.io/rspec/#/rspec/S3500/javascript - */ - "sonarjs/updated-const-var"?: Linter.RuleEntry; - /** - * Loop counters should not be assigned within the loop body - * @see https://sonarsource.github.io/rspec/#/rspec/S2310/javascript - */ - "sonarjs/updated-loop-counter"?: Linter.RuleEntry; - /** - * Type aliases should be used - * @see https://sonarsource.github.io/rspec/#/rspec/S4323/javascript - */ - "sonarjs/use-type-alias"?: Linter.RuleEntry; - /** - * Results of operations on strings should not be ignored - * @see https://sonarsource.github.io/rspec/#/rspec/S1154/javascript - * @deprecated - */ - "sonarjs/useless-string-operation"?: Linter.RuleEntry<[]>; - /** - * Values not convertible to numbers should not be used in numeric comparisons - * @see https://sonarsource.github.io/rspec/#/rspec/S3758/javascript - */ - "sonarjs/values-not-convertible-to-numbers"?: Linter.RuleEntry<[]>; - /** - * Variable, property and parameter names should comply with a naming convention - * @see https://sonarsource.github.io/rspec/#/rspec/S117/javascript - */ - "sonarjs/variable-name"?: Linter.RuleEntry; - /** - * "void" should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S3735/javascript - */ - "sonarjs/void-use"?: Linter.RuleEntry<[]>; - /** - * Weak SSL/TLS protocols should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S4423/javascript - */ - "sonarjs/weak-ssl"?: Linter.RuleEntry<[]>; - /** - * Web SQL databases should not be used - * @see https://sonarsource.github.io/rspec/#/rspec/S2817/javascript - * @deprecated - */ - "sonarjs/web-sql-database"?: Linter.RuleEntry<[]>; - /** - * Disclosing fingerprints from web application technologies is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S5689/javascript - */ - "sonarjs/x-powered-by"?: Linter.RuleEntry<[]>; - /** - * XML parsers should not be vulnerable to XXE attacks - * @see https://sonarsource.github.io/rspec/#/rspec/S2755/javascript - */ - "sonarjs/xml-parser-xxe"?: Linter.RuleEntry; - /** - * Executing XPath expressions is security-sensitive - * @see https://sonarsource.github.io/rspec/#/rspec/S4817/javascript - * @deprecated - */ - "sonarjs/xpath"?: Linter.RuleEntry<[]>; - /** - * Interactions should be awaited - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/await-interactions.md - */ - "storybook/await-interactions"?: Linter.RuleEntry<[]>; - /** - * Pass a context when invoking play function of another story - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/context-in-play-function.md - */ - "storybook/context-in-play-function"?: Linter.RuleEntry<[]>; - /** - * The component property should be set - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/csf-component.md - */ - "storybook/csf-component"?: Linter.RuleEntry<[]>; - /** - * Story files should have a default export - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/default-exports.md - */ - "storybook/default-exports"?: Linter.RuleEntry<[]>; - /** - * Deprecated hierarchy separator in title property - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/hierarchy-separator.md - */ - "storybook/hierarchy-separator"?: Linter.RuleEntry<[]>; - /** - * Meta should only have inline properties - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/meta-inline-properties.md - */ - "storybook/meta-inline-properties"?: Linter.RuleEntry; - /** - * Meta should use `satisfies Meta` - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/meta-satisfies-type.md - */ - "storybook/meta-satisfies-type"?: Linter.RuleEntry<[]>; - /** - * A story should not have a redundant name property - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-redundant-story-name.md - */ - "storybook/no-redundant-story-name"?: Linter.RuleEntry<[]>; - /** - * storiesOf is deprecated and should not be used - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-stories-of.md - */ - "storybook/no-stories-of"?: Linter.RuleEntry<[]>; - /** - * Do not define a title in meta - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-title-property-in-meta.md - */ - "storybook/no-title-property-in-meta"?: Linter.RuleEntry<[]>; - /** - * This rule identifies storybook addons that are invalid because they are either not installed or contain a typo in their name. - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-uninstalled-addons.md - */ - "storybook/no-uninstalled-addons"?: Linter.RuleEntry; - /** - * Stories should use PascalCase - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/prefer-pascal-case.md - */ - "storybook/prefer-pascal-case"?: Linter.RuleEntry<[]>; - /** - * A story file must contain at least one story export - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/story-exports.md - */ - "storybook/story-exports"?: Linter.RuleEntry<[]>; - /** - * Use expect from `@storybook/test`, `storybook/test` or `@storybook/jest` - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/use-storybook-expect.md - */ - "storybook/use-storybook-expect"?: Linter.RuleEntry<[]>; - /** - * Do not use testing-library directly on stories - * @see https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/use-storybook-testing-library.md - */ - "storybook/use-storybook-testing-library"?: Linter.RuleEntry<[]>; - /** - * Enforce a consistent and logical order of the Tailwind CSS classnames - * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/classnames-order.md - */ - "tailwindcss/classnames-order"?: Linter.RuleEntry; - /** - * Warns about dash prefixed classnames using arbitrary values - * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/enforces-negative-arbitrary-values.md - */ - "tailwindcss/enforces-negative-arbitrary-values"?: Linter.RuleEntry; - /** - * Enforces the usage of shorthand Tailwind CSS classnames - * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/enforces-shorthand.md - */ - "tailwindcss/enforces-shorthand"?: Linter.RuleEntry; - /** - * Detect obsolete classnames when upgrading to Tailwind CSS v3 - * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/migration-from-tailwind-2.md - */ - "tailwindcss/migration-from-tailwind-2"?: Linter.RuleEntry; - /** - * Forbid using arbitrary values in classnames - * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/no-arbitrary-value.md - */ - "tailwindcss/no-arbitrary-value"?: Linter.RuleEntry; - /** - * Avoid contradicting Tailwind CSS classnames (e.g. "w-3 w-5") - * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/no-contradicting-classname.md - */ - "tailwindcss/no-contradicting-classname"?: Linter.RuleEntry; - /** - * Detect classnames which do not belong to Tailwind CSS - * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/no-custom-classname.md - */ - "tailwindcss/no-custom-classname"?: Linter.RuleEntry; - /** - * Forbid using arbitrary values in classnames when an equivalent preset exists - * @see https://github.com/francoismassart/eslint-plugin-tailwindcss/tree/master/docs/rules/no-unnecessary-arbitrary-value.md - */ - "tailwindcss/no-unnecessary-arbitrary-value"?: Linter.RuleEntry; - /** - * Enforce promises from async event methods are handled - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/await-async-events.md - */ - "testing-library/await-async-events"?: Linter.RuleEntry; - /** - * Enforce promises from async queries to be handled - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/await-async-queries.md - */ - "testing-library/await-async-queries"?: Linter.RuleEntry<[]>; - /** - * Enforce promises from async utils to be awaited properly - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/await-async-utils.md - */ - "testing-library/await-async-utils"?: Linter.RuleEntry<[]>; - /** - * Ensures consistent usage of `data-testid` - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/consistent-data-testid.md - */ - "testing-library/consistent-data-testid"?: Linter.RuleEntry; - /** - * Disallow unnecessary `await` for sync events - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-await-sync-events.md - */ - "testing-library/no-await-sync-events"?: Linter.RuleEntry; - /** - * Disallow unnecessary `await` for sync queries - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-await-sync-queries.md - */ - "testing-library/no-await-sync-queries"?: Linter.RuleEntry<[]>; - /** - * Disallow the use of `container` methods - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-container.md - */ - "testing-library/no-container"?: Linter.RuleEntry<[]>; - /** - * Disallow the use of debugging utilities like `debug` - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-debugging-utils.md - */ - "testing-library/no-debugging-utils"?: Linter.RuleEntry; - /** - * Disallow importing from DOM Testing Library - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-dom-import.md - */ - "testing-library/no-dom-import"?: Linter.RuleEntry; - /** - * Disallow the use of the global RegExp flag (/g) in queries - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-global-regexp-flag-in-query.md - */ - "testing-library/no-global-regexp-flag-in-query"?: Linter.RuleEntry<[]>; - /** - * Disallow the use of `cleanup` - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-manual-cleanup.md - */ - "testing-library/no-manual-cleanup"?: Linter.RuleEntry<[]>; - /** - * Disallow direct Node access - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-node-access.md - */ - "testing-library/no-node-access"?: Linter.RuleEntry; - /** - * Disallow the use of promises passed to a `fireEvent` method - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-promise-in-fire-event.md - */ - "testing-library/no-promise-in-fire-event"?: Linter.RuleEntry<[]>; - /** - * Disallow the use of `render` in testing frameworks setup functions - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-render-in-lifecycle.md - */ - "testing-library/no-render-in-lifecycle"?: Linter.RuleEntry; - /** - * Ensure no `data-testid` queries are used - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-test-id-queries.md - */ - "testing-library/no-test-id-queries"?: Linter.RuleEntry<[]>; - /** - * Disallow wrapping Testing Library utils or empty callbacks in `act` - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-unnecessary-act.md - */ - "testing-library/no-unnecessary-act"?: Linter.RuleEntry; - /** - * Disallow the use of multiple `expect` calls inside `waitFor` - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-wait-for-multiple-assertions.md - */ - "testing-library/no-wait-for-multiple-assertions"?: Linter.RuleEntry<[]>; - /** - * Disallow the use of side effects in `waitFor` - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-wait-for-side-effects.md - */ - "testing-library/no-wait-for-side-effects"?: Linter.RuleEntry<[]>; - /** - * Ensures no snapshot is generated inside of a `waitFor` call - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/no-wait-for-snapshot.md - */ - "testing-library/no-wait-for-snapshot"?: Linter.RuleEntry<[]>; - /** - * Suggest using explicit assertions rather than standalone queries - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-explicit-assert.md - */ - "testing-library/prefer-explicit-assert"?: Linter.RuleEntry; - /** - * Suggest using `find(All)By*` query instead of `waitFor` + `get(All)By*` to wait for elements - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-find-by.md - */ - "testing-library/prefer-find-by"?: Linter.RuleEntry<[]>; - /** - * Suggest using implicit assertions for getBy* & findBy* queries - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-implicit-assert.md - */ - "testing-library/prefer-implicit-assert"?: Linter.RuleEntry<[]>; - /** - * Ensure appropriate `get*`/`query*` queries are used with their respective matchers - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-presence-queries.md - */ - "testing-library/prefer-presence-queries"?: Linter.RuleEntry; - /** - * Suggest using `queryBy*` queries when waiting for disappearance - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-query-by-disappearance.md - */ - "testing-library/prefer-query-by-disappearance"?: Linter.RuleEntry<[]>; - /** - * Ensure the configured `get*`/`query*` query is used with the corresponding matchers - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-query-matchers.md - */ - "testing-library/prefer-query-matchers"?: Linter.RuleEntry; - /** - * Suggest using `screen` while querying - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-screen-queries.md - */ - "testing-library/prefer-screen-queries"?: Linter.RuleEntry<[]>; - /** - * Suggest using `userEvent` over `fireEvent` for simulating user interactions - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/prefer-user-event.md - */ - "testing-library/prefer-user-event"?: Linter.RuleEntry; - /** - * Enforce a valid naming for return value from `render` - * @see https://github.com/testing-library/eslint-plugin-testing-library/tree/main/docs/rules/render-result-naming-convention.md - */ - "testing-library/render-result-naming-convention"?: Linter.RuleEntry<[]>; - /** - * enforce linebreaks after opening and before closing array brackets - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/array-bracket-newline.html - */ - "toml/array-bracket-newline"?: Linter.RuleEntry; - /** - * enforce consistent spacing inside array brackets - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/array-bracket-spacing.html - */ - "toml/array-bracket-spacing"?: Linter.RuleEntry; - /** - * enforce line breaks between array elements - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/array-element-newline.html - */ - "toml/array-element-newline"?: Linter.RuleEntry; - /** - * enforce consistent comma style in array - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/comma-style.html - */ - "toml/comma-style"?: Linter.RuleEntry; - /** - * enforce consistent indentation - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/indent.html - */ - "toml/indent"?: Linter.RuleEntry; - /** - * enforce consistent spacing inside braces - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/inline-table-curly-spacing.html - */ - "toml/inline-table-curly-spacing"?: Linter.RuleEntry; - /** - * enforce consistent spacing between keys and values in key/value pairs - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/key-spacing.html - */ - "toml/key-spacing"?: Linter.RuleEntry; - /** - * disallow defining pair keys out-of-order - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/keys-order.html - */ - "toml/keys-order"?: Linter.RuleEntry<[]>; - /** - * disallow mixed data types in array - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/no-mixed-type-in-array.html - */ - "toml/no-mixed-type-in-array"?: Linter.RuleEntry; - /** - * disallow hexadecimal, octal and binary integer - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/no-non-decimal-integer.html - */ - "toml/no-non-decimal-integer"?: Linter.RuleEntry; - /** - * disallow spacing around infix operators - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/no-space-dots.html - */ - "toml/no-space-dots"?: Linter.RuleEntry<[]>; - /** - * disallow number separators that to not enhance readability. - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/no-unreadable-number-separator.html - */ - "toml/no-unreadable-number-separator"?: Linter.RuleEntry<[]>; - /** - * require or disallow padding lines between pairs - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/padding-line-between-pairs.html - */ - "toml/padding-line-between-pairs"?: Linter.RuleEntry<[]>; - /** - * require or disallow padding lines between tables - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/padding-line-between-tables.html - */ - "toml/padding-line-between-tables"?: Linter.RuleEntry<[]>; - /** - * disallow precision of fractional seconds greater than the specified value. - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/precision-of-fractional-seconds.html - */ - "toml/precision-of-fractional-seconds"?: Linter.RuleEntry; - /** - * disallow precision of integer greater than the specified value. - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/precision-of-integer.html - */ - "toml/precision-of-integer"?: Linter.RuleEntry; - /** - * require or disallow quotes around keys - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/quoted-keys.html - */ - "toml/quoted-keys"?: Linter.RuleEntry; - /** - * require spacing around equals sign - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/space-eq-sign.html - * @deprecated - */ - "toml/space-eq-sign"?: Linter.RuleEntry<[]>; - /** - * enforce consistent spacing after the `#` in a comment - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/spaced-comment.html - */ - "toml/spaced-comment"?: Linter.RuleEntry; - /** - * enforce consistent spacing inside table brackets - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/table-bracket-spacing.html - */ - "toml/table-bracket-spacing"?: Linter.RuleEntry; - /** - * disallow defining tables out-of-order - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/tables-order.html - */ - "toml/tables-order"?: Linter.RuleEntry<[]>; - /** - * disallow parsing errors in Vue custom blocks - * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/vue-custom-block/no-parsing-error.html - */ - "toml/vue-custom-block/no-parsing-error"?: Linter.RuleEntry<[]>; - /** - * Validates that TypeScript documentation comments conform to the TSDoc standard - * @see https://tsdoc.org/pages/packages/eslint-plugin-tsdoc - */ - "tsdoc/syntax"?: Linter.RuleEntry<[]>; - /** - * Improve regexes by making them shorter, consistent, and safer. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/better-regex.md - */ - "unicorn/better-regex"?: Linter.RuleEntry; - /** - * Enforce a specific parameter name in catch clauses. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/catch-error-name.md - */ - "unicorn/catch-error-name"?: Linter.RuleEntry; - /** - * Enforce consistent assertion style with `node:assert`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/consistent-assert.md - */ - "unicorn/consistent-assert"?: Linter.RuleEntry<[]>; - /** - * Prefer passing `Date` directly to the constructor when cloning. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/consistent-date-clone.md - */ - "unicorn/consistent-date-clone"?: Linter.RuleEntry<[]>; - /** - * Use destructured variables over properties. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/consistent-destructuring.md - */ - "unicorn/consistent-destructuring"?: Linter.RuleEntry<[]>; - /** - * Prefer consistent types when spreading a ternary in an array literal. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/consistent-empty-array-spread.md - */ - "unicorn/consistent-empty-array-spread"?: Linter.RuleEntry<[]>; - /** - * Enforce consistent style for element existence checks with `indexOf()`, `lastIndexOf()`, `findIndex()`, and `findLastIndex()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/consistent-existence-index-check.md - */ - "unicorn/consistent-existence-index-check"?: Linter.RuleEntry<[]>; - /** - * Move function definitions to the highest possible scope. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/consistent-function-scoping.md - */ - "unicorn/consistent-function-scoping"?: Linter.RuleEntry; - /** - * Enforce correct `Error` subclassing. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/custom-error-definition.md - */ - "unicorn/custom-error-definition"?: Linter.RuleEntry<[]>; - /** - * Enforce no spaces between braces. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/empty-brace-spaces.md - */ - "unicorn/empty-brace-spaces"?: Linter.RuleEntry<[]>; - /** - * Enforce passing a `message` value when creating a built-in error. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/error-message.md - */ - "unicorn/error-message"?: Linter.RuleEntry<[]>; - /** - * Require escape sequences to use uppercase or lowercase values. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/escape-case.md - */ - "unicorn/escape-case"?: Linter.RuleEntry; - /** - * Add expiration conditions to TODO comments. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/expiring-todo-comments.md - */ - "unicorn/expiring-todo-comments"?: Linter.RuleEntry; - /** - * Enforce explicitly comparing the `length` or `size` property of a value. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/explicit-length-check.md - */ - "unicorn/explicit-length-check"?: Linter.RuleEntry; - /** - * Enforce a case style for filenames. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/filename-case.md - */ - "unicorn/filename-case"?: Linter.RuleEntry; - /** - * Enforce specific import styles per module. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/import-style.md - */ - "unicorn/import-style"?: Linter.RuleEntry; - /** - * Enforce the use of `new` for all builtins, except `String`, `Number`, `Boolean`, `Symbol` and `BigInt`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/new-for-builtins.md - */ - "unicorn/new-for-builtins"?: Linter.RuleEntry<[]>; - /** - * Enforce specifying rules to disable in `eslint-disable` comments. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-abusive-eslint-disable.md - */ - "unicorn/no-abusive-eslint-disable"?: Linter.RuleEntry<[]>; - /** - * Disallow recursive access to `this` within getters and setters. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-accessor-recursion.md - */ - "unicorn/no-accessor-recursion"?: Linter.RuleEntry<[]>; - /** - * Disallow anonymous functions and classes as the default export. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-anonymous-default-export.md - */ - "unicorn/no-anonymous-default-export"?: Linter.RuleEntry<[]>; - /** - * Prevent passing a function reference directly to iterator methods. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-array-callback-reference.md - */ - "unicorn/no-array-callback-reference"?: Linter.RuleEntry<[]>; - /** - * Prefer `for…of` over the `forEach` method. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-array-for-each.md - */ - "unicorn/no-array-for-each"?: Linter.RuleEntry<[]>; - /** - * Disallow using the `this` argument in array methods. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-array-method-this-argument.md - */ - "unicorn/no-array-method-this-argument"?: Linter.RuleEntry<[]>; - /** - * Replaced by `unicorn/prefer-single-call` which covers more cases. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/deprecated-rules.md#no-array-push-push - * @deprecated - */ - "unicorn/no-array-push-push"?: Linter.RuleEntry<[]>; - /** - * Disallow `Array#reduce()` and `Array#reduceRight()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-array-reduce.md - */ - "unicorn/no-array-reduce"?: Linter.RuleEntry; - /** - * Disallow member access from await expression. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-await-expression-member.md - */ - "unicorn/no-await-expression-member"?: Linter.RuleEntry<[]>; - /** - * Disallow using `await` in `Promise` method parameters. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-await-in-promise-methods.md - */ - "unicorn/no-await-in-promise-methods"?: Linter.RuleEntry<[]>; - /** - * Do not use leading/trailing space between `console.log` parameters. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-console-spaces.md - */ - "unicorn/no-console-spaces"?: Linter.RuleEntry<[]>; - /** - * Do not use `document.cookie` directly. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-document-cookie.md - */ - "unicorn/no-document-cookie"?: Linter.RuleEntry<[]>; - /** - * Disallow empty files. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-empty-file.md - */ - "unicorn/no-empty-file"?: Linter.RuleEntry<[]>; - /** - * Do not use a `for` loop that can be replaced with a `for-of` loop. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-for-loop.md - */ - "unicorn/no-for-loop"?: Linter.RuleEntry<[]>; - /** - * Enforce the use of Unicode escapes instead of hexadecimal escapes. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-hex-escape.md - */ - "unicorn/no-hex-escape"?: Linter.RuleEntry<[]>; - /** - * Replaced by `unicorn/no-instanceof-builtins` which covers more cases. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/deprecated-rules.md#no-instanceof-array - * @deprecated - */ - "unicorn/no-instanceof-array"?: Linter.RuleEntry<[]>; - /** - * Disallow `instanceof` with built-in objects - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-instanceof-builtins.md - */ - "unicorn/no-instanceof-builtins"?: Linter.RuleEntry; - /** - * Disallow invalid options in `fetch()` and `new Request()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-invalid-fetch-options.md - */ - "unicorn/no-invalid-fetch-options"?: Linter.RuleEntry<[]>; - /** - * Prevent calling `EventTarget#removeEventListener()` with the result of an expression. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-invalid-remove-event-listener.md - */ - "unicorn/no-invalid-remove-event-listener"?: Linter.RuleEntry<[]>; - /** - * Disallow identifiers starting with `new` or `class`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-keyword-prefix.md - */ - "unicorn/no-keyword-prefix"?: Linter.RuleEntry; - /** - * Replaced by `unicorn/no-unnecessary-slice-end` which covers more cases. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/deprecated-rules.md#no-length-as-slice-end - * @deprecated - */ - "unicorn/no-length-as-slice-end"?: Linter.RuleEntry<[]>; - /** - * Disallow `if` statements as the only statement in `if` blocks without `else`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-lonely-if.md - */ - "unicorn/no-lonely-if"?: Linter.RuleEntry<[]>; - /** - * Disallow a magic number as the `depth` argument in `Array#flat(…).` - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-magic-array-flat-depth.md - */ - "unicorn/no-magic-array-flat-depth"?: Linter.RuleEntry<[]>; - /** - * Disallow named usage of default import and export. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-named-default.md - */ - "unicorn/no-named-default"?: Linter.RuleEntry<[]>; - /** - * Disallow negated conditions. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-negated-condition.md - */ - "unicorn/no-negated-condition"?: Linter.RuleEntry<[]>; - /** - * Disallow negated expression in equality check. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-negation-in-equality-check.md - */ - "unicorn/no-negation-in-equality-check"?: Linter.RuleEntry<[]>; - /** - * Disallow nested ternary expressions. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-nested-ternary.md - */ - "unicorn/no-nested-ternary"?: Linter.RuleEntry<[]>; - /** - * Disallow `new Array()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-new-array.md - */ - "unicorn/no-new-array"?: Linter.RuleEntry<[]>; - /** - * Enforce the use of `Buffer.from()` and `Buffer.alloc()` instead of the deprecated `new Buffer()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-new-buffer.md - */ - "unicorn/no-new-buffer"?: Linter.RuleEntry<[]>; - /** - * Disallow the use of the `null` literal. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-null.md - */ - "unicorn/no-null"?: Linter.RuleEntry; - /** - * Disallow the use of objects as default parameters. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-object-as-default-parameter.md - */ - "unicorn/no-object-as-default-parameter"?: Linter.RuleEntry<[]>; - /** - * Disallow `process.exit()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-process-exit.md - */ - "unicorn/no-process-exit"?: Linter.RuleEntry<[]>; - /** - * Disallow passing single-element arrays to `Promise` methods. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-single-promise-in-promise-methods.md - */ - "unicorn/no-single-promise-in-promise-methods"?: Linter.RuleEntry<[]>; - /** - * Disallow classes that only have static members. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-static-only-class.md - */ - "unicorn/no-static-only-class"?: Linter.RuleEntry<[]>; - /** - * Disallow `then` property. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-thenable.md - */ - "unicorn/no-thenable"?: Linter.RuleEntry<[]>; - /** - * Disallow assigning `this` to a variable. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-this-assignment.md - */ - "unicorn/no-this-assignment"?: Linter.RuleEntry<[]>; - /** - * Disallow comparing `undefined` using `typeof`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-typeof-undefined.md - */ - "unicorn/no-typeof-undefined"?: Linter.RuleEntry; - /** - * Disallow using `1` as the `depth` argument of `Array#flat()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unnecessary-array-flat-depth.md - */ - "unicorn/no-unnecessary-array-flat-depth"?: Linter.RuleEntry<[]>; - /** - * Disallow using `.length` or `Infinity` as the `deleteCount` or `skipCount` argument of `Array#{splice,toSpliced}()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unnecessary-array-splice-count.md - */ - "unicorn/no-unnecessary-array-splice-count"?: Linter.RuleEntry<[]>; - /** - * Disallow awaiting non-promise values. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unnecessary-await.md - */ - "unicorn/no-unnecessary-await"?: Linter.RuleEntry<[]>; - /** - * Enforce the use of built-in methods instead of unnecessary polyfills. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unnecessary-polyfills.md - */ - "unicorn/no-unnecessary-polyfills"?: Linter.RuleEntry; - /** - * Disallow using `.length` or `Infinity` as the `end` argument of `{Array,String,TypedArray}#slice()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unnecessary-slice-end.md - */ - "unicorn/no-unnecessary-slice-end"?: Linter.RuleEntry<[]>; - /** - * Disallow unreadable array destructuring. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unreadable-array-destructuring.md - */ - "unicorn/no-unreadable-array-destructuring"?: Linter.RuleEntry<[]>; - /** - * Disallow unreadable IIFEs. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unreadable-iife.md - */ - "unicorn/no-unreadable-iife"?: Linter.RuleEntry<[]>; - /** - * Disallow unused object properties. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-unused-properties.md - */ - "unicorn/no-unused-properties"?: Linter.RuleEntry<[]>; - /** - * Disallow useless fallback when spreading in object literals. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-useless-fallback-in-spread.md - */ - "unicorn/no-useless-fallback-in-spread"?: Linter.RuleEntry<[]>; - /** - * Disallow useless array length check. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-useless-length-check.md - */ - "unicorn/no-useless-length-check"?: Linter.RuleEntry<[]>; - /** - * Disallow returning/yielding `Promise.resolve/reject()` in async functions or promise callbacks - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-useless-promise-resolve-reject.md - */ - "unicorn/no-useless-promise-resolve-reject"?: Linter.RuleEntry<[]>; - /** - * Disallow unnecessary spread. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-useless-spread.md - */ - "unicorn/no-useless-spread"?: Linter.RuleEntry<[]>; - /** - * Disallow useless case in switch statements. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-useless-switch-case.md - */ - "unicorn/no-useless-switch-case"?: Linter.RuleEntry<[]>; - /** - * Disallow useless `undefined`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-useless-undefined.md - */ - "unicorn/no-useless-undefined"?: Linter.RuleEntry; - /** - * Disallow number literals with zero fractions or dangling dots. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/no-zero-fractions.md - */ - "unicorn/no-zero-fractions"?: Linter.RuleEntry<[]>; - /** - * Enforce proper case for numeric literals. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/number-literal-case.md - */ - "unicorn/number-literal-case"?: Linter.RuleEntry; - /** - * Enforce the style of numeric separators by correctly grouping digits. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/numeric-separators-style.md - */ - "unicorn/numeric-separators-style"?: Linter.RuleEntry; - /** - * Prefer `.addEventListener()` and `.removeEventListener()` over `on`-functions. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-add-event-listener.md - */ - "unicorn/prefer-add-event-listener"?: Linter.RuleEntry; - /** - * Prefer `.find(…)` and `.findLast(…)` over the first or last element from `.filter(…)`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-array-find.md - */ - "unicorn/prefer-array-find"?: Linter.RuleEntry; - /** - * Prefer `Array#flat()` over legacy techniques to flatten arrays. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-array-flat.md - */ - "unicorn/prefer-array-flat"?: Linter.RuleEntry; - /** - * Prefer `.flatMap(…)` over `.map(…).flat()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-array-flat-map.md - */ - "unicorn/prefer-array-flat-map"?: Linter.RuleEntry<[]>; - /** - * Prefer `Array#{indexOf,lastIndexOf}()` over `Array#{findIndex,findLastIndex}()` when looking for the index of an item. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-array-index-of.md - */ - "unicorn/prefer-array-index-of"?: Linter.RuleEntry<[]>; - /** - * Prefer `.some(…)` over `.filter(…).length` check and `.{find,findLast,findIndex,findLastIndex}(…)`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-array-some.md - */ - "unicorn/prefer-array-some"?: Linter.RuleEntry<[]>; - /** - * Prefer `.at()` method for index access and `String#charAt()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-at.md - */ - "unicorn/prefer-at"?: Linter.RuleEntry; - /** - * Prefer `Blob#arrayBuffer()` over `FileReader#readAsArrayBuffer(…)` and `Blob#text()` over `FileReader#readAsText(…)`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-blob-reading-methods.md - */ - "unicorn/prefer-blob-reading-methods"?: Linter.RuleEntry<[]>; - /** - * Prefer `String#codePointAt(…)` over `String#charCodeAt(…)` and `String.fromCodePoint(…)` over `String.fromCharCode(…)`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-code-point.md - */ - "unicorn/prefer-code-point"?: Linter.RuleEntry<[]>; - /** - * Prefer `Date.now()` to get the number of milliseconds since the Unix Epoch. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-date-now.md - */ - "unicorn/prefer-date-now"?: Linter.RuleEntry<[]>; - /** - * Prefer default parameters over reassignment. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-default-parameters.md - */ - "unicorn/prefer-default-parameters"?: Linter.RuleEntry<[]>; - /** - * Prefer `Node#append()` over `Node#appendChild()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-dom-node-append.md - */ - "unicorn/prefer-dom-node-append"?: Linter.RuleEntry<[]>; - /** - * Prefer using `.dataset` on DOM elements over calling attribute methods. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-dom-node-dataset.md - */ - "unicorn/prefer-dom-node-dataset"?: Linter.RuleEntry<[]>; - /** - * Prefer `childNode.remove()` over `parentNode.removeChild(childNode)`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-dom-node-remove.md - */ - "unicorn/prefer-dom-node-remove"?: Linter.RuleEntry<[]>; - /** - * Prefer `.textContent` over `.innerText`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-dom-node-text-content.md - */ - "unicorn/prefer-dom-node-text-content"?: Linter.RuleEntry<[]>; - /** - * Prefer `EventTarget` over `EventEmitter`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-event-target.md - */ - "unicorn/prefer-event-target"?: Linter.RuleEntry<[]>; - /** - * Prefer `export…from` when re-exporting. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-export-from.md - */ - "unicorn/prefer-export-from"?: Linter.RuleEntry; - /** - * Prefer `globalThis` over `window`, `self`, and `global`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-global-this.md - */ - "unicorn/prefer-global-this"?: Linter.RuleEntry<[]>; - /** - * Prefer `import.meta.{dirname,filename}` over legacy techniques for getting file paths. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-import-meta-properties.md - */ - "unicorn/prefer-import-meta-properties"?: Linter.RuleEntry<[]>; - /** - * Prefer `.includes()` over `.indexOf()`, `.lastIndexOf()`, and `Array#some()` when checking for existence or non-existence. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-includes.md - */ - "unicorn/prefer-includes"?: Linter.RuleEntry<[]>; - /** - * Prefer reading a JSON file as a buffer. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-json-parse-buffer.md - */ - "unicorn/prefer-json-parse-buffer"?: Linter.RuleEntry<[]>; - /** - * Prefer `KeyboardEvent#key` over `KeyboardEvent#keyCode`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-keyboard-event-key.md - */ - "unicorn/prefer-keyboard-event-key"?: Linter.RuleEntry<[]>; - /** - * Prefer using a logical operator over a ternary. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-logical-operator-over-ternary.md - */ - "unicorn/prefer-logical-operator-over-ternary"?: Linter.RuleEntry<[]>; - /** - * Prefer `Math.min()` and `Math.max()` over ternaries for simple comparisons. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-math-min-max.md - */ - "unicorn/prefer-math-min-max"?: Linter.RuleEntry<[]>; - /** - * Enforce the use of `Math.trunc` instead of bitwise operators. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-math-trunc.md - */ - "unicorn/prefer-math-trunc"?: Linter.RuleEntry<[]>; - /** - * Prefer `.before()` over `.insertBefore()`, `.replaceWith()` over `.replaceChild()`, prefer one of `.before()`, `.after()`, `.append()` or `.prepend()` over `insertAdjacentText()` and `insertAdjacentElement()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-modern-dom-apis.md - */ - "unicorn/prefer-modern-dom-apis"?: Linter.RuleEntry<[]>; - /** - * Prefer modern `Math` APIs over legacy patterns. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-modern-math-apis.md - */ - "unicorn/prefer-modern-math-apis"?: Linter.RuleEntry<[]>; - /** - * Prefer JavaScript modules (ESM) over CommonJS. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-module.md - */ - "unicorn/prefer-module"?: Linter.RuleEntry<[]>; - /** - * Prefer using `String`, `Number`, `BigInt`, `Boolean`, and `Symbol` directly. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-native-coercion-functions.md - */ - "unicorn/prefer-native-coercion-functions"?: Linter.RuleEntry<[]>; - /** - * Prefer negative index over `.length - index` when possible. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-negative-index.md - */ - "unicorn/prefer-negative-index"?: Linter.RuleEntry<[]>; - /** - * Prefer using the `node:` protocol when importing Node.js builtin modules. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-node-protocol.md - */ - "unicorn/prefer-node-protocol"?: Linter.RuleEntry<[]>; - /** - * Prefer `Number` static properties over global ones. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-number-properties.md - */ - "unicorn/prefer-number-properties"?: Linter.RuleEntry; - /** - * Prefer using `Object.fromEntries(…)` to transform a list of key-value pairs into an object. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-object-from-entries.md - */ - "unicorn/prefer-object-from-entries"?: Linter.RuleEntry; - /** - * Prefer omitting the `catch` binding parameter. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-optional-catch-binding.md - */ - "unicorn/prefer-optional-catch-binding"?: Linter.RuleEntry<[]>; - /** - * Prefer borrowing methods from the prototype instead of the instance. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-prototype-methods.md - */ - "unicorn/prefer-prototype-methods"?: Linter.RuleEntry<[]>; - /** - * Prefer `.querySelector()` over `.getElementById()`, `.querySelectorAll()` over `.getElementsByClassName()` and `.getElementsByTagName()` and `.getElementsByName()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-query-selector.md - */ - "unicorn/prefer-query-selector"?: Linter.RuleEntry<[]>; - /** - * Prefer `Reflect.apply()` over `Function#apply()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-reflect-apply.md - */ - "unicorn/prefer-reflect-apply"?: Linter.RuleEntry<[]>; - /** - * Prefer `RegExp#test()` over `String#match()` and `RegExp#exec()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-regexp-test.md - */ - "unicorn/prefer-regexp-test"?: Linter.RuleEntry<[]>; - /** - * Prefer `Set#has()` over `Array#includes()` when checking for existence or non-existence. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-set-has.md - */ - "unicorn/prefer-set-has"?: Linter.RuleEntry<[]>; - /** - * Prefer using `Set#size` instead of `Array#length`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-set-size.md - */ - "unicorn/prefer-set-size"?: Linter.RuleEntry<[]>; - /** - * Enforce combining multiple `Array#push()`, `Element#classList.{add,remove}()`, and `importScripts()` into one call. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-single-call.md - */ - "unicorn/prefer-single-call"?: Linter.RuleEntry; - /** - * Prefer the spread operator over `Array.from(…)`, `Array#concat(…)`, `Array#{slice,toSpliced}()` and `String#split('')`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-spread.md - */ - "unicorn/prefer-spread"?: Linter.RuleEntry<[]>; - /** - * Prefer using the `String.raw` tag to avoid escaping `\`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-string-raw.md - */ - "unicorn/prefer-string-raw"?: Linter.RuleEntry<[]>; - /** - * Prefer `String#replaceAll()` over regex searches with the global flag. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-string-replace-all.md - */ - "unicorn/prefer-string-replace-all"?: Linter.RuleEntry<[]>; - /** - * Prefer `String#slice()` over `String#substr()` and `String#substring()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-string-slice.md - */ - "unicorn/prefer-string-slice"?: Linter.RuleEntry<[]>; - /** - * Prefer `String#startsWith()` & `String#endsWith()` over `RegExp#test()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-string-starts-ends-with.md - */ - "unicorn/prefer-string-starts-ends-with"?: Linter.RuleEntry<[]>; - /** - * Prefer `String#trimStart()` / `String#trimEnd()` over `String#trimLeft()` / `String#trimRight()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-string-trim-start-end.md - */ - "unicorn/prefer-string-trim-start-end"?: Linter.RuleEntry<[]>; - /** - * Prefer using `structuredClone` to create a deep clone. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-structured-clone.md - */ - "unicorn/prefer-structured-clone"?: Linter.RuleEntry; - /** - * Prefer `switch` over multiple `else-if`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-switch.md - */ - "unicorn/prefer-switch"?: Linter.RuleEntry; - /** - * Prefer ternary expressions over simple `if-else` statements. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-ternary.md - */ - "unicorn/prefer-ternary"?: Linter.RuleEntry; - /** - * Prefer top-level await over top-level promises and async function calls. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-top-level-await.md - */ - "unicorn/prefer-top-level-await"?: Linter.RuleEntry<[]>; - /** - * Enforce throwing `TypeError` in type checking conditions. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prefer-type-error.md - */ - "unicorn/prefer-type-error"?: Linter.RuleEntry<[]>; - /** - * Prevent abbreviations. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/prevent-abbreviations.md - */ - "unicorn/prevent-abbreviations"?: Linter.RuleEntry; - /** - * Enforce consistent relative URL style. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/relative-url-style.md - */ - "unicorn/relative-url-style"?: Linter.RuleEntry; - /** - * Enforce using the separator argument with `Array#join()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/require-array-join-separator.md - */ - "unicorn/require-array-join-separator"?: Linter.RuleEntry<[]>; - /** - * Enforce using the digits argument with `Number#toFixed()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/require-number-to-fixed-digits-argument.md - */ - "unicorn/require-number-to-fixed-digits-argument"?: Linter.RuleEntry<[]>; - /** - * Enforce using the `targetOrigin` argument with `window.postMessage()`. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/require-post-message-target-origin.md - */ - "unicorn/require-post-message-target-origin"?: Linter.RuleEntry<[]>; - /** - * Enforce better string content. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/string-content.md - */ - "unicorn/string-content"?: Linter.RuleEntry; - /** - * Enforce consistent brace style for `case` clauses. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/switch-case-braces.md - */ - "unicorn/switch-case-braces"?: Linter.RuleEntry; - /** - * Fix whitespace-insensitive template indentation. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/template-indent.md - */ - "unicorn/template-indent"?: Linter.RuleEntry; - /** - * Enforce consistent case for text encoding identifiers. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/text-encoding-identifier-case.md - */ - "unicorn/text-encoding-identifier-case"?: Linter.RuleEntry<[]>; - /** - * Require `new` when creating an error. - * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v59.0.1/docs/rules/throw-new-error.md - */ - "unicorn/throw-new-error"?: Linter.RuleEntry<[]>; - /** - * Utilities in UnoCSS blocklist - * @see https://unocss.dev/integrations/eslint#rules - */ - "unocss/blocklist"?: Linter.RuleEntry<[]>; - /** - * Enforce class compilation - * @see https://unocss.dev/integrations/eslint#rules - */ - "unocss/enforce-class-compile"?: Linter.RuleEntry; - /** - * Order of UnoCSS utilities in class attribute - * @see https://unocss.dev/integrations/eslint#rules - */ - "unocss/order"?: Linter.RuleEntry<[]>; - /** - * Order of UnoCSS attributes - * @see https://unocss.dev/integrations/eslint#rules - */ - "unocss/order-attributify"?: Linter.RuleEntry<[]>; - "validate-jsx-nesting/no-invalid-jsx-nesting"?: Linter.RuleEntry<[]>; - /** - * require .spec test file pattern - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/consistent-test-filename.md - */ - "vitest/consistent-test-filename"?: Linter.RuleEntry; - /** - * enforce using test or it but not both - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/consistent-test-it.md - */ - "vitest/consistent-test-it"?: Linter.RuleEntry; - /** - * enforce having expectation in test body - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/expect-expect.md - */ - "vitest/expect-expect"?: Linter.RuleEntry; - /** - * enforce a maximum number of expect per test - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/max-expects.md - */ - "vitest/max-expects"?: Linter.RuleEntry; - /** - * require describe block to be less than set max value or default value - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/max-nested-describe.md - */ - "vitest/max-nested-describe"?: Linter.RuleEntry; - /** - * disallow alias methods - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-alias-methods.md - */ - "vitest/no-alias-methods"?: Linter.RuleEntry<[]>; - /** - * disallow commented out tests - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-commented-out-tests.md - */ - "vitest/no-commented-out-tests"?: Linter.RuleEntry<[]>; - /** - * disallow conditional expects - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-expect.md - */ - "vitest/no-conditional-expect"?: Linter.RuleEntry<[]>; - /** - * disallow conditional tests - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-in-test.md - */ - "vitest/no-conditional-in-test"?: Linter.RuleEntry<[]>; - /** - * disallow conditional tests - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-tests.md - */ - "vitest/no-conditional-tests"?: Linter.RuleEntry<[]>; - /** - * disallow disabled tests - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-disabled-tests.md - */ - "vitest/no-disabled-tests"?: Linter.RuleEntry<[]>; - /** - * disallow using a callback in asynchronous tests and hooks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-done-callback.md - * @deprecated - */ - "vitest/no-done-callback"?: Linter.RuleEntry<[]>; - /** - * disallow duplicate hooks and teardown hooks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-duplicate-hooks.md - */ - "vitest/no-duplicate-hooks"?: Linter.RuleEntry<[]>; - /** - * disallow focused tests - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-focused-tests.md - */ - "vitest/no-focused-tests"?: Linter.RuleEntry; - /** - * disallow setup and teardown hooks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-hooks.md - */ - "vitest/no-hooks"?: Linter.RuleEntry; - /** - * disallow identical titles - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-identical-title.md - */ - "vitest/no-identical-title"?: Linter.RuleEntry<[]>; - /** - * disallow importing `node:test` - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-import-node-test.md - */ - "vitest/no-import-node-test"?: Linter.RuleEntry<[]>; - /** - * disallow string interpolation in snapshots - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-interpolation-in-snapshots.md - */ - "vitest/no-interpolation-in-snapshots"?: Linter.RuleEntry<[]>; - /** - * disallow large snapshots - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-large-snapshots.md - */ - "vitest/no-large-snapshots"?: Linter.RuleEntry; - /** - * disallow importing from __mocks__ directory - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-mocks-import.md - */ - "vitest/no-mocks-import"?: Linter.RuleEntry<[]>; - /** - * disallow .only blocks in tests - * @see https://github.com/levibuzolic/eslint-plugin-no-only-tests - */ - "vitest/no-only-tests"?: Linter.RuleEntry; - /** - * disallow the use of certain matchers - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-restricted-matchers.md - */ - "vitest/no-restricted-matchers"?: Linter.RuleEntry; - /** - * disallow specific `vi.` methods - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-restricted-vi-methods.md - */ - "vitest/no-restricted-vi-methods"?: Linter.RuleEntry; - /** - * disallow using `expect` outside of `it` or `test` blocks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-standalone-expect.md - */ - "vitest/no-standalone-expect"?: Linter.RuleEntry; - /** - * Disallow using the `f` and `x` prefixes in favour of `.only` and `.skip` - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-test-prefixes.md - */ - "vitest/no-test-prefixes"?: Linter.RuleEntry<[]>; - /** - * disallow return statements in tests - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-test-return-statement.md - */ - "vitest/no-test-return-statement"?: Linter.RuleEntry<[]>; - /** - * Enforce padding around `afterAll` blocks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-after-all-blocks.md - */ - "vitest/padding-around-after-all-blocks"?: Linter.RuleEntry<[]>; - /** - * Enforce padding around `afterEach` blocks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-after-each-blocks.md - */ - "vitest/padding-around-after-each-blocks"?: Linter.RuleEntry<[]>; - /** - * Enforce padding around vitest functions - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-all.md - */ - "vitest/padding-around-all"?: Linter.RuleEntry<[]>; - /** - * Enforce padding around `beforeAll` blocks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-before-all-blocks.md - */ - "vitest/padding-around-before-all-blocks"?: Linter.RuleEntry<[]>; - /** - * Enforce padding around `beforeEach` blocks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-before-each-blocks.md - */ - "vitest/padding-around-before-each-blocks"?: Linter.RuleEntry<[]>; - /** - * Enforce padding around `describe` blocks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-describe-blocks.md - */ - "vitest/padding-around-describe-blocks"?: Linter.RuleEntry<[]>; - /** - * Enforce padding around `expect` groups - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-expect-groups.md - */ - "vitest/padding-around-expect-groups"?: Linter.RuleEntry<[]>; - /** - * Enforce padding around `test` blocks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-test-blocks.md - */ - "vitest/padding-around-test-blocks"?: Linter.RuleEntry<[]>; - /** - * enforce using `toBeCalledWith()` or `toHaveBeenCalledWith()` - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-called-with.md - */ - "vitest/prefer-called-with"?: Linter.RuleEntry<[]>; - /** - * enforce using the built-in comparison matchers - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-comparison-matcher.md - */ - "vitest/prefer-comparison-matcher"?: Linter.RuleEntry<[]>; - /** - * enforce using a function as a describe title over an equivalent string - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-describe-function-title.md - */ - "vitest/prefer-describe-function-title"?: Linter.RuleEntry<[]>; - /** - * enforce using `each` rather than manual loops - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-each.md - */ - "vitest/prefer-each"?: Linter.RuleEntry<[]>; - /** - * enforce using the built-in quality matchers - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-equality-matcher.md - */ - "vitest/prefer-equality-matcher"?: Linter.RuleEntry<[]>; - /** - * enforce using expect assertions instead of callbacks - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-expect-assertions.md - */ - "vitest/prefer-expect-assertions"?: Linter.RuleEntry; - /** - * enforce using `expect().resolves` over `expect(await ...)` syntax - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-expect-resolves.md - */ - "vitest/prefer-expect-resolves"?: Linter.RuleEntry<[]>; - /** - * enforce having hooks in consistent order - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-hooks-in-order.md - */ - "vitest/prefer-hooks-in-order"?: Linter.RuleEntry<[]>; - /** - * enforce having hooks before any test cases - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-hooks-on-top.md - */ - "vitest/prefer-hooks-on-top"?: Linter.RuleEntry<[]>; - /** - * enforce lowercase titles - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-lowercase-title.md - */ - "vitest/prefer-lowercase-title"?: Linter.RuleEntry; - /** - * enforce mock resolved/rejected shorthands for promises - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-mock-promise-shorthand.md - */ - "vitest/prefer-mock-promise-shorthand"?: Linter.RuleEntry<[]>; - /** - * enforce including a hint with external snapshots - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-snapshot-hint.md - */ - "vitest/prefer-snapshot-hint"?: Linter.RuleEntry; - /** - * enforce using `vi.spyOn` - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-spy-on.md - */ - "vitest/prefer-spy-on"?: Linter.RuleEntry<[]>; - /** - * enforce using `toBe(true)` and `toBe(false)` over matchers that coerce types to boolean - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-strict-boolean-matchers.md - */ - "vitest/prefer-strict-boolean-matchers"?: Linter.RuleEntry<[]>; - /** - * enforce strict equal over equal - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-strict-equal.md - */ - "vitest/prefer-strict-equal"?: Linter.RuleEntry<[]>; - /** - * enforce using toBe() - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be.md - */ - "vitest/prefer-to-be"?: Linter.RuleEntry<[]>; - /** - * enforce using toBeFalsy() - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-falsy.md - */ - "vitest/prefer-to-be-falsy"?: Linter.RuleEntry<[]>; - /** - * enforce using toBeObject() - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-object.md - */ - "vitest/prefer-to-be-object"?: Linter.RuleEntry<[]>; - /** - * enforce using `toBeTruthy` - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-truthy.md - */ - "vitest/prefer-to-be-truthy"?: Linter.RuleEntry<[]>; - /** - * enforce using toContain() - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-contain.md - */ - "vitest/prefer-to-contain"?: Linter.RuleEntry<[]>; - /** - * enforce using toHaveLength() - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-have-length.md - */ - "vitest/prefer-to-have-length"?: Linter.RuleEntry<[]>; - /** - * enforce using `test.todo` - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-todo.md - */ - "vitest/prefer-todo"?: Linter.RuleEntry<[]>; - /** - * require `vi.mocked()` over `fn as Mock` - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-vi-mocked.md - */ - "vitest/prefer-vi-mocked"?: Linter.RuleEntry<[]>; - /** - * require setup and teardown to be within a hook - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-hook.md - */ - "vitest/require-hook"?: Linter.RuleEntry; - /** - * require local Test Context for concurrent snapshot tests - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-local-test-context-for-concurrent-snapshots.md - */ - "vitest/require-local-test-context-for-concurrent-snapshots"?: Linter.RuleEntry<[]>; - /** - * enforce using type parameters with vitest mock functions - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-mock-type-parameters.md - */ - "vitest/require-mock-type-parameters"?: Linter.RuleEntry; - /** - * require toThrow() to be called with an error message - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-to-throw-message.md - */ - "vitest/require-to-throw-message"?: Linter.RuleEntry<[]>; - /** - * enforce that all tests are in a top-level describe - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-top-level-describe.md - */ - "vitest/require-top-level-describe"?: Linter.RuleEntry; - /** - * enforce valid describe callback - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-describe-callback.md - */ - "vitest/valid-describe-callback"?: Linter.RuleEntry<[]>; - /** - * enforce valid `expect()` usage - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-expect.md - */ - "vitest/valid-expect"?: Linter.RuleEntry; - /** - * require promises that have expectations in their chain to be valid - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-expect-in-promise.md - */ - "vitest/valid-expect-in-promise"?: Linter.RuleEntry<[]>; - /** - * enforce valid titles - * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-title.md - */ - "vitest/valid-title"?: Linter.RuleEntry; - /** - * require or disallow block style mappings. - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/block-mapping.html - */ - "yaml/block-mapping"?: Linter.RuleEntry; - /** - * enforce consistent line breaks after `:` indicator - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/block-mapping-colon-indicator-newline.html - */ - "yaml/block-mapping-colon-indicator-newline"?: Linter.RuleEntry; - /** - * enforce consistent line breaks after `?` indicator - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/block-mapping-question-indicator-newline.html - */ - "yaml/block-mapping-question-indicator-newline"?: Linter.RuleEntry; - /** - * require or disallow block style sequences. - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/block-sequence.html - */ - "yaml/block-sequence"?: Linter.RuleEntry; - /** - * enforce consistent line breaks after `-` indicator - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/block-sequence-hyphen-indicator-newline.html - */ - "yaml/block-sequence-hyphen-indicator-newline"?: Linter.RuleEntry; - /** - * enforce YAML file extension - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/file-extension.html - */ - "yaml/file-extension"?: Linter.RuleEntry; - /** - * enforce consistent line breaks inside braces - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/flow-mapping-curly-newline.html - */ - "yaml/flow-mapping-curly-newline"?: Linter.RuleEntry; - /** - * enforce consistent spacing inside braces - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/flow-mapping-curly-spacing.html - */ - "yaml/flow-mapping-curly-spacing"?: Linter.RuleEntry; - /** - * enforce linebreaks after opening and before closing flow sequence brackets - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/flow-sequence-bracket-newline.html - */ - "yaml/flow-sequence-bracket-newline"?: Linter.RuleEntry; - /** - * enforce consistent spacing inside flow sequence brackets - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/flow-sequence-bracket-spacing.html - */ - "yaml/flow-sequence-bracket-spacing"?: Linter.RuleEntry; - /** - * enforce consistent indentation - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/indent.html - */ - "yaml/indent"?: Linter.RuleEntry; - /** - * enforce naming convention to key names - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/key-name-casing.html - */ - "yaml/key-name-casing"?: Linter.RuleEntry; - /** - * enforce consistent spacing between keys and values in mapping pairs - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/key-spacing.html - */ - "yaml/key-spacing"?: Linter.RuleEntry; - /** - * disallow empty document - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-empty-document.html - */ - "yaml/no-empty-document"?: Linter.RuleEntry<[]>; - /** - * disallow empty mapping keys - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-empty-key.html - */ - "yaml/no-empty-key"?: Linter.RuleEntry<[]>; - /** - * disallow empty mapping values - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-empty-mapping-value.html - */ - "yaml/no-empty-mapping-value"?: Linter.RuleEntry<[]>; - /** - * disallow empty sequence entries - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-empty-sequence-entry.html - */ - "yaml/no-empty-sequence-entry"?: Linter.RuleEntry<[]>; - /** - * disallow irregular whitespace - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-irregular-whitespace.html - */ - "yaml/no-irregular-whitespace"?: Linter.RuleEntry; - /** - * disallow multiple empty lines - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-multiple-empty-lines.html - */ - "yaml/no-multiple-empty-lines"?: Linter.RuleEntry; - /** - * disallow tabs for indentation. - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-tab-indent.html - */ - "yaml/no-tab-indent"?: Linter.RuleEntry<[]>; - /** - * disallow trailing zeros for floats - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/no-trailing-zeros.html - */ - "yaml/no-trailing-zeros"?: Linter.RuleEntry<[]>; - /** - * require or disallow plain style scalar. - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/plain-scalar.html - */ - "yaml/plain-scalar"?: Linter.RuleEntry; - /** - * enforce the consistent use of either double, or single quotes - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/quotes.html - */ - "yaml/quotes"?: Linter.RuleEntry; - /** - * disallow mapping keys other than strings - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/require-string-key.html - */ - "yaml/require-string-key"?: Linter.RuleEntry<[]>; - /** - * require mapping keys to be sorted - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/sort-keys.html - */ - "yaml/sort-keys"?: Linter.RuleEntry; - /** - * require sequence values to be sorted - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/sort-sequence-values.html - */ - "yaml/sort-sequence-values"?: Linter.RuleEntry; - /** - * enforce consistent spacing after the `#` in a comment - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/spaced-comment.html - */ - "yaml/spaced-comment"?: Linter.RuleEntry; - /** - * disallow parsing errors in Vue custom blocks - * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/vue-custom-block/no-parsing-error.html - */ - "yaml/vue-custom-block/no-parsing-error"?: Linter.RuleEntry<[]>; - /** - * Prefers `z.enum` over a union of literals. - * @see https://github.com/gajus/eslint-plugin-zod#eslint-plugin-zod-rules-prefer-enum - */ - "zod/prefer-enum"?: Linter.RuleEntry; - /** - * Requires that objects are initialized with .strict(). - * @see https://github.com/gajus/eslint-plugin-zod#eslint-plugin-zod-rules-require-strict - */ - "zod/require-strict"?: Linter.RuleEntry; -} - -/* ======= Declarations ======= */ -// ----- @stylistic/array-bracket-newline ----- -type StylisticArrayBracketNewline = - | [] - | [ - | ("always" | "never" | "consistent") - | { - multiline?: boolean; - minItems?: number | null; - }, - ]; -// ----- @stylistic/array-bracket-spacing ----- -type StylisticArrayBracketSpacing = - | [] - | ["always" | "never"] - | [ - "always" | "never", - { - singleValue?: boolean; - objectsInArrays?: boolean; - arraysInArrays?: boolean; - }, - ]; -// ----- @stylistic/array-element-newline ----- -type StylisticArrayElementNewline = - | [] - | [ - | _StylisticArrayElementNewlineBasicConfig - | { - ArrayExpression?: _StylisticArrayElementNewlineBasicConfig; - ArrayPattern?: _StylisticArrayElementNewlineBasicConfig; - }, - ]; -type _StylisticArrayElementNewlineBasicConfig = - | ("always" | "never" | "consistent") - | { - consistent?: boolean; - multiline?: boolean; - minItems?: number | null; - }; -// ----- @stylistic/arrow-parens ----- -type StylisticArrowParens = - | [] - | ["always" | "as-needed"] - | [ - "always" | "as-needed", - { - requireForBlockBody?: boolean; - }, - ]; -// ----- @stylistic/arrow-spacing ----- -type StylisticArrowSpacing = - | [] - | [ - { - before?: boolean; - after?: boolean; - }, - ]; -// ----- @stylistic/block-spacing ----- -type StylisticBlockSpacing = [] | ["always" | "never"]; -// ----- @stylistic/brace-style ----- -type StylisticBraceStyle = - | [] - | ["1tbs" | "stroustrup" | "allman"] - | [ - "1tbs" | "stroustrup" | "allman", - { - allowSingleLine?: boolean; - }, - ]; -// ----- @stylistic/comma-dangle ----- -type StylisticCommaDangle = - | [] - | [ - | _StylisticCommaDangleValue - | { - arrays?: _StylisticCommaDangleValueWithIgnore; - objects?: _StylisticCommaDangleValueWithIgnore; - imports?: _StylisticCommaDangleValueWithIgnore; - exports?: _StylisticCommaDangleValueWithIgnore; - functions?: _StylisticCommaDangleValueWithIgnore; - importAttributes?: _StylisticCommaDangleValueWithIgnore; - dynamicImports?: _StylisticCommaDangleValueWithIgnore; - enums?: _StylisticCommaDangleValueWithIgnore; - generics?: _StylisticCommaDangleValueWithIgnore; - tuples?: _StylisticCommaDangleValueWithIgnore; - }, - ]; -type _StylisticCommaDangleValue = "always-multiline" | "always" | "never" | "only-multiline"; -type _StylisticCommaDangleValueWithIgnore = "always-multiline" | "always" | "never" | "only-multiline" | "ignore"; -// ----- @stylistic/comma-spacing ----- -type StylisticCommaSpacing = - | [] - | [ - { - before?: boolean; - after?: boolean; - }, - ]; -// ----- @stylistic/comma-style ----- -type StylisticCommaStyle = - | [] - | ["first" | "last"] - | [ - "first" | "last", - { - exceptions?: { - [k: string]: boolean | undefined; - }; - }, - ]; -// ----- @stylistic/computed-property-spacing ----- -type StylisticComputedPropertySpacing = - | [] - | ["always" | "never"] - | [ - "always" | "never", - { - enforceForClassMembers?: boolean; - }, - ]; -// ----- @stylistic/curly-newline ----- -type StylisticCurlyNewline = - | [] - | [ - | ("always" | "never") - | { - IfStatementConsequent?: - | ("always" | "never") - | { - multiline?: boolean; - minElements?: number; - consistent?: boolean; - }; - IfStatementAlternative?: - | ("always" | "never") - | { - multiline?: boolean; - minElements?: number; - consistent?: boolean; - }; - DoWhileStatement?: - | ("always" | "never") - | { - multiline?: boolean; - minElements?: number; - consistent?: boolean; - }; - ForInStatement?: - | ("always" | "never") - | { - multiline?: boolean; - minElements?: number; - consistent?: boolean; - }; - ForOfStatement?: - | ("always" | "never") - | { - multiline?: boolean; - minElements?: number; - consistent?: boolean; - }; - ForStatement?: - | ("always" | "never") - | { - multiline?: boolean; - minElements?: number; - consistent?: boolean; - }; - WhileStatement?: - | ("always" | "never") - | { - multiline?: boolean; - minElements?: number; - consistent?: boolean; - }; - SwitchStatement?: - | ("always" | "never") - | { - multiline?: boolean; - minElements?: number; - consistent?: boolean; - }; - SwitchCase?: - | ("always" | "never") - | { - multiline?: boolean; - minElements?: number; - consistent?: boolean; - }; - TryStatementBlock?: - | ("always" | "never") - | { - multiline?: boolean; - minElements?: number; - consistent?: boolean; - }; - TryStatementHandler?: - | ("always" | "never") - | { - multiline?: boolean; - minElements?: number; - consistent?: boolean; - }; - TryStatementFinalizer?: - | ("always" | "never") - | { - multiline?: boolean; - minElements?: number; - consistent?: boolean; - }; - BlockStatement?: - | ("always" | "never") - | { - multiline?: boolean; - minElements?: number; - consistent?: boolean; - }; - ArrowFunctionExpression?: - | ("always" | "never") - | { - multiline?: boolean; - minElements?: number; - consistent?: boolean; - }; - FunctionDeclaration?: - | ("always" | "never") - | { - multiline?: boolean; - minElements?: number; - consistent?: boolean; - }; - FunctionExpression?: - | ("always" | "never") - | { - multiline?: boolean; - minElements?: number; - consistent?: boolean; - }; - Property?: - | ("always" | "never") - | { - multiline?: boolean; - minElements?: number; - consistent?: boolean; - }; - ClassBody?: - | ("always" | "never") - | { - multiline?: boolean; - minElements?: number; - consistent?: boolean; - }; - StaticBlock?: - | ("always" | "never") - | { - multiline?: boolean; - minElements?: number; - consistent?: boolean; - }; - WithStatement?: - | ("always" | "never") - | { - multiline?: boolean; - minElements?: number; - consistent?: boolean; - }; - TSEnumBody?: - | ("always" | "never") - | { - multiline?: boolean; - minElements?: number; - consistent?: boolean; - }; - TSInterfaceBody?: - | ("always" | "never") - | { - multiline?: boolean; - minElements?: number; - consistent?: boolean; - }; - TSModuleBlock?: - | ("always" | "never") - | { - multiline?: boolean; - minElements?: number; - consistent?: boolean; - }; - multiline?: boolean; - minElements?: number; - consistent?: boolean; - }, - ]; -// ----- @stylistic/dot-location ----- -type StylisticDotLocation = [] | ["object" | "property"]; -// ----- @stylistic/eol-last ----- -type StylisticEolLast = [] | ["always" | "never" | "unix" | "windows"]; -// ----- @stylistic/func-call-spacing ----- -type StylisticFuncCallSpacing = - | [] - | ["never"] - | [] - | ["always"] - | [ - "always", - { - allowNewlines?: boolean; - optionalChain?: { - before?: boolean; - after?: boolean; - }; - }, - ]; -// ----- @stylistic/function-call-argument-newline ----- -type StylisticFunctionCallArgumentNewline = [] | ["always" | "never" | "consistent"]; -// ----- @stylistic/function-call-spacing ----- -type StylisticFunctionCallSpacing = - | [] - | ["never"] - | [] - | ["always"] - | [ - "always", - { - allowNewlines?: boolean; - optionalChain?: { - before?: boolean; - after?: boolean; - }; - }, - ]; -// ----- @stylistic/function-paren-newline ----- -type StylisticFunctionParenNewline = - | [] - | [ - | ("always" | "never" | "consistent" | "multiline" | "multiline-arguments") - | { - minItems?: number; - }, - ]; -// ----- @stylistic/generator-star-spacing ----- -type StylisticGeneratorStarSpacing = - | [] - | [ - | ("before" | "after" | "both" | "neither") - | { - before?: boolean; - after?: boolean; - named?: - | ("before" | "after" | "both" | "neither") - | { - before?: boolean; - after?: boolean; - }; - anonymous?: - | ("before" | "after" | "both" | "neither") - | { - before?: boolean; - after?: boolean; - }; - method?: - | ("before" | "after" | "both" | "neither") - | { - before?: boolean; - after?: boolean; - }; - }, - ]; -// ----- @stylistic/implicit-arrow-linebreak ----- -type StylisticImplicitArrowLinebreak = [] | ["beside" | "below"]; -// ----- @stylistic/indent ----- -type StylisticIndent = - | [] - | ["tab" | number] - | [ - "tab" | number, - { - SwitchCase?: number; - VariableDeclarator?: - | (number | ("first" | "off")) - | { - var?: number | ("first" | "off"); - let?: number | ("first" | "off"); - const?: number | ("first" | "off"); - }; - outerIIFEBody?: number | "off"; - MemberExpression?: number | "off"; - FunctionDeclaration?: { - parameters?: number | ("first" | "off"); - body?: number; - }; - FunctionExpression?: { - parameters?: number | ("first" | "off"); - body?: number; - }; - StaticBlock?: { - body?: number; - }; - CallExpression?: { - arguments?: number | ("first" | "off"); - }; - ArrayExpression?: number | ("first" | "off"); - ObjectExpression?: number | ("first" | "off"); - ImportDeclaration?: number | ("first" | "off"); - flatTernaryExpressions?: boolean; - offsetTernaryExpressions?: boolean; - offsetTernaryExpressionsOffsetCallExpressions?: boolean; - ignoredNodes?: string[]; - ignoreComments?: boolean; - tabLength?: number; - }, - ]; -// ----- @stylistic/indent-binary-ops ----- -type StylisticIndentBinaryOps = [] | [number | "tab"]; -// ----- @stylistic/jsx-closing-bracket-location ----- -type StylisticJsxClosingBracketLocation = - | [] - | [ - | ("after-props" | "props-aligned" | "tag-aligned" | "line-aligned") - | { - location?: "after-props" | "props-aligned" | "tag-aligned" | "line-aligned"; - } - | { - nonEmpty?: ("after-props" | "props-aligned" | "tag-aligned" | "line-aligned") | false; - selfClosing?: ("after-props" | "props-aligned" | "tag-aligned" | "line-aligned") | false; - }, - ]; -// ----- @stylistic/jsx-closing-tag-location ----- -type StylisticJsxClosingTagLocation = [] | ["tag-aligned" | "line-aligned"]; -// ----- @stylistic/jsx-curly-brace-presence ----- -type StylisticJsxCurlyBracePresence = - | [] - | [ - | { - props?: "always" | "never" | "ignore"; - children?: "always" | "never" | "ignore"; - propElementValues?: "always" | "never" | "ignore"; - } - | ("always" | "never" | "ignore"), - ]; -// ----- @stylistic/jsx-curly-newline ----- -type StylisticJsxCurlyNewline = - | [] - | [ - | ("consistent" | "never") - | { - singleline?: "consistent" | "require" | "forbid"; - multiline?: "consistent" | "require" | "forbid"; - }, - ]; -// ----- @stylistic/jsx-curly-spacing ----- -type StylisticJsxCurlySpacing = - | [] - | [ - | (_StylisticJsxCurlySpacing_BasicConfig & { - attributes?: _StylisticJsxCurlySpacingBasicConfigOrBoolean; - children?: _StylisticJsxCurlySpacingBasicConfigOrBoolean; - [k: string]: unknown | undefined; - }) - | ("always" | "never"), - ] - | [ - ( - | (_StylisticJsxCurlySpacing_BasicConfig & { - attributes?: _StylisticJsxCurlySpacingBasicConfigOrBoolean; - children?: _StylisticJsxCurlySpacingBasicConfigOrBoolean; - [k: string]: unknown | undefined; - }) - | ("always" | "never") - ), - { - allowMultiline?: boolean; - spacing?: { - objectLiterals?: "always" | "never"; - [k: string]: unknown | undefined; - }; - }, - ]; -type _StylisticJsxCurlySpacingBasicConfigOrBoolean = _StylisticJsxCurlySpacing_BasicConfig | boolean; -interface _StylisticJsxCurlySpacing_BasicConfig { - when?: "always" | "never"; - allowMultiline?: boolean; - spacing?: { - objectLiterals?: "always" | "never"; - [k: string]: unknown | undefined; - }; - [k: string]: unknown | undefined; -} -// ----- @stylistic/jsx-equals-spacing ----- -type StylisticJsxEqualsSpacing = [] | ["always" | "never"]; -// ----- @stylistic/jsx-first-prop-new-line ----- -type StylisticJsxFirstPropNewLine = [] | ["always" | "never" | "multiline" | "multiline-multiprop" | "multiprop"]; -// ----- @stylistic/jsx-function-call-newline ----- -type StylisticJsxFunctionCallNewline = [] | ["always" | "multiline"]; -// ----- @stylistic/jsx-indent ----- -type StylisticJsxIndent = - | [] - | ["tab" | number] - | [ - "tab" | number, - { - checkAttributes?: boolean; - indentLogicalExpressions?: boolean; - }, - ]; -// ----- @stylistic/jsx-indent-props ----- -type StylisticJsxIndentProps = - | [] - | [ - | ("tab" | "first") - | number - | { - indentMode?: ("tab" | "first") | number; - ignoreTernaryOperator?: boolean; - [k: string]: unknown | undefined; - }, - ]; -// ----- @stylistic/jsx-max-props-per-line ----- -type StylisticJsxMaxPropsPerLine = - | [] - | [ - | { - maximum?: { - single?: number; - multi?: number; - [k: string]: unknown | undefined; - }; - } - | { - maximum?: number; - when?: "always" | "multiline"; - }, - ]; -// ----- @stylistic/jsx-newline ----- -type StylisticJsxNewline = - | [] - | [ - { - prevent?: boolean; - allowMultilines?: boolean; - }, - ]; -// ----- @stylistic/jsx-one-expression-per-line ----- -type StylisticJsxOneExpressionPerLine = - | [] - | [ - { - allow?: "none" | "literal" | "single-child" | "single-line" | "non-jsx"; - }, - ]; -// ----- @stylistic/jsx-pascal-case ----- -type StylisticJsxPascalCase = - | [] - | [ - { - allowAllCaps?: boolean; - allowLeadingUnderscore?: boolean; - allowNamespace?: boolean; - ignore?: string[]; - }, - ]; -// ----- @stylistic/jsx-quotes ----- -type StylisticJsxQuotes = [] | ["prefer-single" | "prefer-double"]; -// ----- @stylistic/jsx-self-closing-comp ----- -type StylisticJsxSelfClosingComp = - | [] - | [ - { - component?: boolean; - html?: boolean; - }, - ]; -// ----- @stylistic/jsx-sort-props ----- -type StylisticJsxSortProps = - | [] - | [ - { - callbacksLast?: boolean; - shorthandFirst?: boolean; - shorthandLast?: boolean; - multiline?: "ignore" | "first" | "last"; - ignoreCase?: boolean; - noSortAlphabetically?: boolean; - reservedFirst?: unknown[] | boolean; - locale?: string; - }, - ]; -// ----- @stylistic/jsx-tag-spacing ----- -type StylisticJsxTagSpacing = - | [] - | [ - { - closingSlash?: "always" | "never" | "allow"; - beforeSelfClosing?: "always" | "proportional-always" | "never" | "allow"; - afterOpening?: "always" | "allow-multiline" | "never" | "allow"; - beforeClosing?: "always" | "proportional-always" | "never" | "allow"; - }, - ]; -// ----- @stylistic/jsx-wrap-multilines ----- -type StylisticJsxWrapMultilines = - | [] - | [ - { - declaration?: (true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line"); - assignment?: (true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line"); - return?: (true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line"); - arrow?: (true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line"); - condition?: (true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line"); - logical?: (true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line"); - prop?: (true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line"); - propertyValue?: (true | false | "ignore" | "parens" | "parens-new-line") | (true | false | "ignore" | "parens" | "parens-new-line"); - }, - ]; -// ----- @stylistic/key-spacing ----- -type StylisticKeySpacing = - | [] - | [ - | { - align?: - | ("colon" | "value") - | { - mode?: "strict" | "minimum"; - on?: "colon" | "value"; - beforeColon?: boolean; - afterColon?: boolean; - }; - mode?: "strict" | "minimum"; - beforeColon?: boolean; - afterColon?: boolean; - ignoredNodes?: ( - | "ObjectExpression" - | "ObjectPattern" - | "ImportDeclaration" - | "ExportNamedDeclaration" - | "ExportAllDeclaration" - | "TSTypeLiteral" - | "TSInterfaceBody" - | "ClassBody" - )[]; - } - | { - singleLine?: { - mode?: "strict" | "minimum"; - beforeColon?: boolean; - afterColon?: boolean; - }; - multiLine?: { - align?: - | ("colon" | "value") - | { - mode?: "strict" | "minimum"; - on?: "colon" | "value"; - beforeColon?: boolean; - afterColon?: boolean; - }; - mode?: "strict" | "minimum"; - beforeColon?: boolean; - afterColon?: boolean; - }; - } - | { - singleLine?: { - mode?: "strict" | "minimum"; - beforeColon?: boolean; - afterColon?: boolean; - }; - multiLine?: { - mode?: "strict" | "minimum"; - beforeColon?: boolean; - afterColon?: boolean; - }; - align?: { - mode?: "strict" | "minimum"; - on?: "colon" | "value"; - beforeColon?: boolean; - afterColon?: boolean; - }; - }, - ]; -// ----- @stylistic/keyword-spacing ----- -type StylisticKeywordSpacing = - | [] - | [ - { - before?: boolean; - after?: boolean; - overrides?: { - abstract?: { - before?: boolean; - after?: boolean; - }; - as?: { - before?: boolean; - after?: boolean; - }; - async?: { - before?: boolean; - after?: boolean; - }; - await?: { - before?: boolean; - after?: boolean; - }; - boolean?: { - before?: boolean; - after?: boolean; - }; - break?: { - before?: boolean; - after?: boolean; - }; - byte?: { - before?: boolean; - after?: boolean; - }; - case?: { - before?: boolean; - after?: boolean; - }; - catch?: { - before?: boolean; - after?: boolean; - }; - char?: { - before?: boolean; - after?: boolean; - }; - class?: { - before?: boolean; - after?: boolean; - }; - const?: { - before?: boolean; - after?: boolean; - }; - continue?: { - before?: boolean; - after?: boolean; - }; - debugger?: { - before?: boolean; - after?: boolean; - }; - default?: { - before?: boolean; - after?: boolean; - }; - delete?: { - before?: boolean; - after?: boolean; - }; - do?: { - before?: boolean; - after?: boolean; - }; - double?: { - before?: boolean; - after?: boolean; - }; - else?: { - before?: boolean; - after?: boolean; - }; - enum?: { - before?: boolean; - after?: boolean; - }; - export?: { - before?: boolean; - after?: boolean; - }; - extends?: { - before?: boolean; - after?: boolean; - }; - false?: { - before?: boolean; - after?: boolean; - }; - final?: { - before?: boolean; - after?: boolean; - }; - finally?: { - before?: boolean; - after?: boolean; - }; - float?: { - before?: boolean; - after?: boolean; - }; - for?: { - before?: boolean; - after?: boolean; - }; - from?: { - before?: boolean; - after?: boolean; - }; - function?: { - before?: boolean; - after?: boolean; - }; - get?: { - before?: boolean; - after?: boolean; - }; - goto?: { - before?: boolean; - after?: boolean; - }; - if?: { - before?: boolean; - after?: boolean; - }; - implements?: { - before?: boolean; - after?: boolean; - }; - import?: { - before?: boolean; - after?: boolean; - }; - in?: { - before?: boolean; - after?: boolean; - }; - instanceof?: { - before?: boolean; - after?: boolean; - }; - int?: { - before?: boolean; - after?: boolean; - }; - interface?: { - before?: boolean; - after?: boolean; - }; - let?: { - before?: boolean; - after?: boolean; - }; - long?: { - before?: boolean; - after?: boolean; - }; - native?: { - before?: boolean; - after?: boolean; - }; - new?: { - before?: boolean; - after?: boolean; - }; - null?: { - before?: boolean; - after?: boolean; - }; - of?: { - before?: boolean; - after?: boolean; - }; - package?: { - before?: boolean; - after?: boolean; - }; - private?: { - before?: boolean; - after?: boolean; - }; - protected?: { - before?: boolean; - after?: boolean; - }; - public?: { - before?: boolean; - after?: boolean; - }; - return?: { - before?: boolean; - after?: boolean; - }; - satisfies?: { - before?: boolean; - after?: boolean; - }; - set?: { - before?: boolean; - after?: boolean; - }; - short?: { - before?: boolean; - after?: boolean; - }; - static?: { - before?: boolean; - after?: boolean; - }; - super?: { - before?: boolean; - after?: boolean; - }; - switch?: { - before?: boolean; - after?: boolean; - }; - synchronized?: { - before?: boolean; - after?: boolean; - }; - this?: { - before?: boolean; - after?: boolean; - }; - throw?: { - before?: boolean; - after?: boolean; - }; - throws?: { - before?: boolean; - after?: boolean; - }; - transient?: { - before?: boolean; - after?: boolean; - }; - true?: { - before?: boolean; - after?: boolean; - }; - try?: { - before?: boolean; - after?: boolean; - }; - typeof?: { - before?: boolean; - after?: boolean; - }; - var?: { - before?: boolean; - after?: boolean; - }; - void?: { - before?: boolean; - after?: boolean; - }; - volatile?: { - before?: boolean; - after?: boolean; - }; - while?: { - before?: boolean; - after?: boolean; - }; - with?: { - before?: boolean; - after?: boolean; - }; - yield?: { - before?: boolean; - after?: boolean; - }; - type?: { - before?: boolean; - after?: boolean; - }; - }; - }, - ]; -// ----- @stylistic/line-comment-position ----- -type StylisticLineCommentPosition = - | [] - | [ - | ("above" | "beside") - | { - position?: "above" | "beside"; - ignorePattern?: string; - applyDefaultPatterns?: boolean; - applyDefaultIgnorePatterns?: boolean; - }, - ]; -// ----- @stylistic/linebreak-style ----- -type StylisticLinebreakStyle = [] | ["unix" | "windows"]; -// ----- @stylistic/lines-around-comment ----- -type StylisticLinesAroundComment = - | [] - | [ - { - beforeBlockComment?: boolean; - afterBlockComment?: boolean; - beforeLineComment?: boolean; - afterLineComment?: boolean; - allowBlockStart?: boolean; - allowBlockEnd?: boolean; - allowClassStart?: boolean; - allowClassEnd?: boolean; - allowObjectStart?: boolean; - allowObjectEnd?: boolean; - allowArrayStart?: boolean; - allowArrayEnd?: boolean; - allowInterfaceStart?: boolean; - allowInterfaceEnd?: boolean; - allowTypeStart?: boolean; - allowTypeEnd?: boolean; - allowEnumStart?: boolean; - allowEnumEnd?: boolean; - allowModuleStart?: boolean; - allowModuleEnd?: boolean; - ignorePattern?: string; - applyDefaultIgnorePatterns?: boolean; - afterHashbangComment?: boolean; - }, - ]; -// ----- @stylistic/lines-between-class-members ----- -type StylisticLinesBetweenClassMembers = - | [] - | [ - | { - enforce: [ - { - blankLine: "always" | "never"; - prev: "method" | "field" | "*"; - next: "method" | "field" | "*"; - }, - ...{ - blankLine: "always" | "never"; - prev: "method" | "field" | "*"; - next: "method" | "field" | "*"; - }[], - ]; - } - | ("always" | "never"), - ] - | [ - ( - | { - enforce: [ - { - blankLine: "always" | "never"; - prev: "method" | "field" | "*"; - next: "method" | "field" | "*"; - }, - ...{ - blankLine: "always" | "never"; - prev: "method" | "field" | "*"; - next: "method" | "field" | "*"; - }[], - ]; - } - | ("always" | "never") - ), - { - exceptAfterSingleLine?: boolean; - exceptAfterOverload?: boolean; - }, - ]; -// ----- @stylistic/max-len ----- -type StylisticMaxLen = - | [] - | [ - | { - code?: number; - comments?: number; - tabWidth?: number; - ignorePattern?: string; - ignoreComments?: boolean; - ignoreStrings?: boolean; - ignoreUrls?: boolean; - ignoreTemplateLiterals?: boolean; - ignoreRegExpLiterals?: boolean; - ignoreTrailingComments?: boolean; - } - | number, - ] - | [ - ( - | { - code?: number; - comments?: number; - tabWidth?: number; - ignorePattern?: string; - ignoreComments?: boolean; - ignoreStrings?: boolean; - ignoreUrls?: boolean; - ignoreTemplateLiterals?: boolean; - ignoreRegExpLiterals?: boolean; - ignoreTrailingComments?: boolean; - } - | number - ), - ( - | { - code?: number; - comments?: number; - tabWidth?: number; - ignorePattern?: string; - ignoreComments?: boolean; - ignoreStrings?: boolean; - ignoreUrls?: boolean; - ignoreTemplateLiterals?: boolean; - ignoreRegExpLiterals?: boolean; - ignoreTrailingComments?: boolean; - } - | number - ), - ] - | [ - ( - | { - code?: number; - comments?: number; - tabWidth?: number; - ignorePattern?: string; - ignoreComments?: boolean; - ignoreStrings?: boolean; - ignoreUrls?: boolean; - ignoreTemplateLiterals?: boolean; - ignoreRegExpLiterals?: boolean; - ignoreTrailingComments?: boolean; - } - | number - ), - ( - | { - code?: number; - comments?: number; - tabWidth?: number; - ignorePattern?: string; - ignoreComments?: boolean; - ignoreStrings?: boolean; - ignoreUrls?: boolean; - ignoreTemplateLiterals?: boolean; - ignoreRegExpLiterals?: boolean; - ignoreTrailingComments?: boolean; - } - | number - ), - { - code?: number; - comments?: number; - tabWidth?: number; - ignorePattern?: string; - ignoreComments?: boolean; - ignoreStrings?: boolean; - ignoreUrls?: boolean; - ignoreTemplateLiterals?: boolean; - ignoreRegExpLiterals?: boolean; - ignoreTrailingComments?: boolean; - }, - ]; -// ----- @stylistic/max-statements-per-line ----- -type StylisticMaxStatementsPerLine = - | [] - | [ - { - max?: number; - ignoredNodes?: ( - | "BreakStatement" - | "ClassDeclaration" - | "ContinueStatement" - | "DebuggerStatement" - | "DoWhileStatement" - | "ExpressionStatement" - | "ForInStatement" - | "ForOfStatement" - | "ForStatement" - | "FunctionDeclaration" - | "IfStatement" - | "ImportDeclaration" - | "LabeledStatement" - | "ReturnStatement" - | "SwitchStatement" - | "ThrowStatement" - | "TryStatement" - | "VariableDeclaration" - | "WhileStatement" - | "WithStatement" - | "ExportNamedDeclaration" - | "ExportDefaultDeclaration" - | "ExportAllDeclaration" - )[]; - }, - ]; -// ----- @stylistic/member-delimiter-style ----- -type StylisticMemberDelimiterStyle = - | [] - | [ - { - multiline?: { - delimiter?: "none" | "semi" | "comma"; - requireLast?: boolean; - }; - singleline?: { - delimiter?: "semi" | "comma"; - requireLast?: boolean; - }; - overrides?: { - interface?: _StylisticMemberDelimiterStyle_DelimiterConfig; - typeLiteral?: _StylisticMemberDelimiterStyle_DelimiterConfig; - }; - multilineDetection?: "brackets" | "last-member"; - }, - ]; -interface _StylisticMemberDelimiterStyle_DelimiterConfig { - multiline?: { - delimiter?: "none" | "semi" | "comma"; - requireLast?: boolean; - }; - singleline?: { - delimiter?: "semi" | "comma"; - requireLast?: boolean; - }; -} -// ----- @stylistic/multiline-comment-style ----- -type StylisticMultilineCommentStyle = - | [] - | ["starred-block" | "bare-block"] - | [] - | ["separate-lines"] - | [ - "separate-lines", - { - checkJSDoc?: boolean; - }, - ]; -// ----- @stylistic/multiline-ternary ----- -type StylisticMultilineTernary = - | [] - | ["always" | "always-multiline" | "never"] - | [ - "always" | "always-multiline" | "never", - { - ignoreJSX?: boolean; - [k: string]: unknown | undefined; - }, - ]; -// ----- @stylistic/new-parens ----- -type StylisticNewParens = [] | ["always" | "never"]; -// ----- @stylistic/newline-per-chained-call ----- -type StylisticNewlinePerChainedCall = - | [] - | [ - { - ignoreChainWithDepth?: number; - }, - ]; -// ----- @stylistic/no-confusing-arrow ----- -type StylisticNoConfusingArrow = - | [] - | [ - { - allowParens?: boolean; - onlyOneSimpleParam?: boolean; - }, - ]; -// ----- @stylistic/no-extra-parens ----- -type StylisticNoExtraParens = - | [] - | ["functions"] - | [] - | ["all"] - | [ - "all", - { - conditionalAssign?: boolean; - ternaryOperandBinaryExpressions?: boolean; - nestedBinaryExpressions?: boolean; - returnAssign?: boolean; - ignoreJSX?: "none" | "all" | "single-line" | "multi-line"; - enforceForArrowConditionals?: boolean; - enforceForSequenceExpressions?: boolean; - enforceForNewInMemberExpressions?: boolean; - enforceForFunctionPrototypeMethods?: boolean; - allowParensAfterCommentPattern?: string; - nestedConditionalExpressions?: boolean; - }, - ]; -// ----- @stylistic/no-mixed-operators ----- -type StylisticNoMixedOperators = - | [] - | [ - { - groups?: [ - ( - | "+" - | "-" - | "*" - | "/" - | "%" - | "**" - | "&" - | "|" - | "^" - | "~" - | "<<" - | ">>" - | ">>>" - | "==" - | "!=" - | "===" - | "!==" - | ">" - | ">=" - | "<" - | "<=" - | "&&" - | "||" - | "in" - | "instanceof" - | "?:" - | "??" - ), - ( - | "+" - | "-" - | "*" - | "/" - | "%" - | "**" - | "&" - | "|" - | "^" - | "~" - | "<<" - | ">>" - | ">>>" - | "==" - | "!=" - | "===" - | "!==" - | ">" - | ">=" - | "<" - | "<=" - | "&&" - | "||" - | "in" - | "instanceof" - | "?:" - | "??" - ), - ...( - | "+" - | "-" - | "*" - | "/" - | "%" - | "**" - | "&" - | "|" - | "^" - | "~" - | "<<" - | ">>" - | ">>>" - | "==" - | "!=" - | "===" - | "!==" - | ">" - | ">=" - | "<" - | "<=" - | "&&" - | "||" - | "in" - | "instanceof" - | "?:" - | "??" - )[], - ][]; - allowSamePrecedence?: boolean; - }, - ]; -// ----- @stylistic/no-mixed-spaces-and-tabs ----- -type StylisticNoMixedSpacesAndTabs = [] | ["smart-tabs" | boolean]; -// ----- @stylistic/no-multi-spaces ----- -type StylisticNoMultiSpaces = - | [] - | [ - { - exceptions?: { - [k: string]: boolean; - }; - ignoreEOLComments?: boolean; - includeTabs?: boolean; - }, - ]; -// ----- @stylistic/no-multiple-empty-lines ----- -type StylisticNoMultipleEmptyLines = - | [] - | [ - { - max: number; - maxEOF?: number; - maxBOF?: number; - }, - ]; -// ----- @stylistic/no-tabs ----- -type StylisticNoTabs = - | [] - | [ - { - allowIndentationTabs?: boolean; - }, - ]; -// ----- @stylistic/no-trailing-spaces ----- -type StylisticNoTrailingSpaces = - | [] - | [ - { - skipBlankLines?: boolean; - ignoreComments?: boolean; - }, - ]; -// ----- @stylistic/nonblock-statement-body-position ----- -type StylisticNonblockStatementBodyPosition = - | [] - | ["beside" | "below" | "any"] - | [ - "beside" | "below" | "any", - { - overrides?: { - if?: "beside" | "below" | "any"; - else?: "beside" | "below" | "any"; - while?: "beside" | "below" | "any"; - do?: "beside" | "below" | "any"; - for?: "beside" | "below" | "any"; - }; - }, - ]; -// ----- @stylistic/object-curly-newline ----- -type StylisticObjectCurlyNewline = - | [] - | [ - | ( - | ("always" | "never") - | { - multiline?: boolean; - minProperties?: number; - consistent?: boolean; - } - ) - | { - ObjectExpression?: - | ("always" | "never") - | { - multiline?: boolean; - minProperties?: number; - consistent?: boolean; - }; - ObjectPattern?: - | ("always" | "never") - | { - multiline?: boolean; - minProperties?: number; - consistent?: boolean; - }; - ImportDeclaration?: - | ("always" | "never") - | { - multiline?: boolean; - minProperties?: number; - consistent?: boolean; - }; - ExportDeclaration?: - | ("always" | "never") - | { - multiline?: boolean; - minProperties?: number; - consistent?: boolean; - }; - TSTypeLiteral?: - | ("always" | "never") - | { - multiline?: boolean; - minProperties?: number; - consistent?: boolean; - }; - TSInterfaceBody?: - | ("always" | "never") - | { - multiline?: boolean; - minProperties?: number; - consistent?: boolean; - }; - }, - ]; -// ----- @stylistic/object-curly-spacing ----- -type StylisticObjectCurlySpacing = - | [] - | ["always" | "never"] - | [ - "always" | "never", - { - arraysInObjects?: boolean; - objectsInObjects?: boolean; - }, - ]; -// ----- @stylistic/object-property-newline ----- -type StylisticObjectPropertyNewline = - | [] - | [ - { - allowAllPropertiesOnSameLine?: boolean; - allowMultiplePropertiesPerLine?: boolean; - }, - ]; -// ----- @stylistic/one-var-declaration-per-line ----- -type StylisticOneVarDeclarationPerLine = [] | ["always" | "initializations"]; -// ----- @stylistic/operator-linebreak ----- -type StylisticOperatorLinebreak = - | [] - | [("after" | "before" | "none") | null] - | [ - ("after" | "before" | "none") | null, - { - overrides?: { - [k: string]: ("after" | "before" | "none" | "ignore") | undefined; - }; - }, - ]; -// ----- @stylistic/padded-blocks ----- -type StylisticPaddedBlocks = - | [] - | [ - | ("always" | "never" | "start" | "end") - | { - blocks?: "always" | "never" | "start" | "end"; - switches?: "always" | "never" | "start" | "end"; - classes?: "always" | "never" | "start" | "end"; - }, - ] - | [ - ( - | ("always" | "never" | "start" | "end") - | { - blocks?: "always" | "never" | "start" | "end"; - switches?: "always" | "never" | "start" | "end"; - classes?: "always" | "never" | "start" | "end"; - } - ), - { - allowSingleLineBlocks?: boolean; - }, - ]; -// ----- @stylistic/padding-line-between-statements ----- -type _StylisticPaddingLineBetweenStatementsPaddingType = "any" | "never" | "always"; -type _StylisticPaddingLineBetweenStatementsStatementType = - | ( - | "*" - | "block-like" - | "exports" - | "require" - | "directive" - | "expression" - | "iife" - | "multiline-block-like" - | "multiline-expression" - | "multiline-const" - | "multiline-export" - | "multiline-let" - | "multiline-var" - | "singleline-const" - | "singleline-export" - | "singleline-let" - | "singleline-var" - | "block" - | "empty" - | "function" - | "ts-method" - | "break" - | "case" - | "class" - | "const" - | "continue" - | "debugger" - | "default" - | "do" - | "export" - | "for" - | "if" - | "import" - | "let" - | "return" - | "switch" - | "throw" - | "try" - | "var" - | "while" - | "with" - | "cjs-export" - | "cjs-import" - | "enum" - | "interface" - | "type" - | "function-overload" - ) - | [ - ( - | "*" - | "block-like" - | "exports" - | "require" - | "directive" - | "expression" - | "iife" - | "multiline-block-like" - | "multiline-expression" - | "multiline-const" - | "multiline-export" - | "multiline-let" - | "multiline-var" - | "singleline-const" - | "singleline-export" - | "singleline-let" - | "singleline-var" - | "block" - | "empty" - | "function" - | "ts-method" - | "break" - | "case" - | "class" - | "const" - | "continue" - | "debugger" - | "default" - | "do" - | "export" - | "for" - | "if" - | "import" - | "let" - | "return" - | "switch" - | "throw" - | "try" - | "var" - | "while" - | "with" - | "cjs-export" - | "cjs-import" - | "enum" - | "interface" - | "type" - | "function-overload" - ), - ...( - | "*" - | "block-like" - | "exports" - | "require" - | "directive" - | "expression" - | "iife" - | "multiline-block-like" - | "multiline-expression" - | "multiline-const" - | "multiline-export" - | "multiline-let" - | "multiline-var" - | "singleline-const" - | "singleline-export" - | "singleline-let" - | "singleline-var" - | "block" - | "empty" - | "function" - | "ts-method" - | "break" - | "case" - | "class" - | "const" - | "continue" - | "debugger" - | "default" - | "do" - | "export" - | "for" - | "if" - | "import" - | "let" - | "return" - | "switch" - | "throw" - | "try" - | "var" - | "while" - | "with" - | "cjs-export" - | "cjs-import" - | "enum" - | "interface" - | "type" - | "function-overload" - )[], - ]; -type StylisticPaddingLineBetweenStatements = { - blankLine: _StylisticPaddingLineBetweenStatementsPaddingType; - prev: _StylisticPaddingLineBetweenStatementsStatementType; - next: _StylisticPaddingLineBetweenStatementsStatementType; -}[]; -// ----- @stylistic/quote-props ----- -type StylisticQuoteProps = - | [] - | ["always" | "as-needed" | "consistent" | "consistent-as-needed"] - | [] - | ["always" | "as-needed" | "consistent" | "consistent-as-needed"] - | [ - "always" | "as-needed" | "consistent" | "consistent-as-needed", - { - keywords?: boolean; - unnecessary?: boolean; - numbers?: boolean; - }, - ]; -// ----- @stylistic/quotes ----- -type StylisticQuotes = - | [] - | ["single" | "double" | "backtick"] - | [ - "single" | "double" | "backtick", - ( - | "avoid-escape" - | { - avoidEscape?: boolean; - allowTemplateLiterals?: boolean | ("never" | "avoidEscape" | "always"); - ignoreStringLiterals?: boolean; - } - ), - ]; -// ----- @stylistic/rest-spread-spacing ----- -type StylisticRestSpreadSpacing = [] | ["always" | "never"]; -// ----- @stylistic/semi ----- -type StylisticSemi = - | [] - | ["never"] - | [ - "never", - { - beforeStatementContinuationChars?: "always" | "any" | "never"; - }, - ] - | [] - | ["always"] - | [ - "always", - { - omitLastInOneLineBlock?: boolean; - omitLastInOneLineClassBody?: boolean; - }, - ]; -// ----- @stylistic/semi-spacing ----- -type StylisticSemiSpacing = - | [] - | [ - { - before?: boolean; - after?: boolean; - }, - ]; -// ----- @stylistic/semi-style ----- -type StylisticSemiStyle = [] | ["last" | "first"]; -// ----- @stylistic/space-before-blocks ----- -type StylisticSpaceBeforeBlocks = - | [] - | [ - | ("always" | "never") - | { - keywords?: "always" | "never" | "off"; - functions?: "always" | "never" | "off"; - classes?: "always" | "never" | "off"; - }, - ]; -// ----- @stylistic/space-before-function-paren ----- -type StylisticSpaceBeforeFunctionParen = - | [] - | [ - | ("always" | "never") - | { - anonymous?: "always" | "never" | "ignore"; - named?: "always" | "never" | "ignore"; - asyncArrow?: "always" | "never" | "ignore"; - }, - ]; -// ----- @stylistic/space-in-parens ----- -type StylisticSpaceInParens = - | [] - | ["always" | "never"] - | [ - "always" | "never", - { - exceptions?: ("{}" | "[]" | "()" | "empty")[]; - }, - ]; -// ----- @stylistic/space-infix-ops ----- -type StylisticSpaceInfixOps = - | [] - | [ - { - int32Hint?: boolean; - ignoreTypes?: boolean; - }, - ]; -// ----- @stylistic/space-unary-ops ----- -type StylisticSpaceUnaryOps = - | [] - | [ - { - words?: boolean; - nonwords?: boolean; - overrides?: { - [k: string]: boolean | undefined; - }; - }, - ]; -// ----- @stylistic/spaced-comment ----- -type StylisticSpacedComment = - | [] - | ["always" | "never"] - | [ - "always" | "never", - { - exceptions?: string[]; - markers?: string[]; - line?: { - exceptions?: string[]; - markers?: string[]; - }; - block?: { - exceptions?: string[]; - markers?: string[]; - balanced?: boolean; - }; - }, - ]; -// ----- @stylistic/switch-colon-spacing ----- -type StylisticSwitchColonSpacing = - | [] - | [ - { - before?: boolean; - after?: boolean; - }, - ]; -// ----- @stylistic/template-curly-spacing ----- -type StylisticTemplateCurlySpacing = [] | ["always" | "never"]; -// ----- @stylistic/template-tag-spacing ----- -type StylisticTemplateTagSpacing = [] | ["always" | "never"]; -// ----- @stylistic/type-annotation-spacing ----- -type StylisticTypeAnnotationSpacing = - | [] - | [ - { - before?: boolean; - after?: boolean; - overrides?: { - colon?: _StylisticTypeAnnotationSpacing_SpacingConfig; - arrow?: _StylisticTypeAnnotationSpacing_SpacingConfig; - variable?: _StylisticTypeAnnotationSpacing_SpacingConfig; - parameter?: _StylisticTypeAnnotationSpacing_SpacingConfig; - property?: _StylisticTypeAnnotationSpacing_SpacingConfig; - returnType?: _StylisticTypeAnnotationSpacing_SpacingConfig; - }; - }, - ]; -interface _StylisticTypeAnnotationSpacing_SpacingConfig { - before?: boolean; - after?: boolean; -} -// ----- @stylistic/wrap-iife ----- -type StylisticWrapIife = - | [] - | ["outside" | "inside" | "any"] - | [ - "outside" | "inside" | "any", - { - functionPrototypeMethods?: boolean; - }, - ]; -// ----- @stylistic/yield-star-spacing ----- -type StylisticYieldStarSpacing = - | [] - | [ - | ("before" | "after" | "both" | "neither") - | { - before?: boolean; - after?: boolean; - }, - ]; -// ----- @typescript-eslint/array-type ----- -type TypescriptEslintArrayType = - | [] - | [ - { - default?: "array" | "generic" | "array-simple"; - - readonly?: "array" | "generic" | "array-simple"; - }, - ]; -// ----- @typescript-eslint/ban-ts-comment ----- -type TypescriptEslintBanTsComment = - | [] - | [ - { - minimumDescriptionLength?: number; - "ts-check"?: - | boolean - | "allow-with-description" - | { - descriptionFormat?: string; - }; - "ts-expect-error"?: - | boolean - | "allow-with-description" - | { - descriptionFormat?: string; - }; - "ts-ignore"?: - | boolean - | "allow-with-description" - | { - descriptionFormat?: string; - }; - "ts-nocheck"?: - | boolean - | "allow-with-description" - | { - descriptionFormat?: string; - }; - }, - ]; -// ----- @typescript-eslint/class-literal-property-style ----- -type TypescriptEslintClassLiteralPropertyStyle = [] | ["fields" | "getters"]; -// ----- @typescript-eslint/class-methods-use-this ----- -type TypescriptEslintClassMethodsUseThis = - | [] - | [ - { - enforceForClassFields?: boolean; - - exceptMethods?: string[]; - - ignoreClassesThatImplementAnInterface?: boolean | "public-fields"; - - ignoreOverrideMethods?: boolean; - }, - ]; -// ----- @typescript-eslint/consistent-generic-constructors ----- -type TypescriptEslintConsistentGenericConstructors = [] | ["type-annotation" | "constructor"]; -// ----- @typescript-eslint/consistent-indexed-object-style ----- -type TypescriptEslintConsistentIndexedObjectStyle = [] | ["record" | "index-signature"]; -// ----- @typescript-eslint/consistent-return ----- -type TypescriptEslintConsistentReturn = - | [] - | [ - { - treatUndefinedAsUnspecified?: boolean; - }, - ]; -// ----- @typescript-eslint/consistent-type-assertions ----- -type TypescriptEslintConsistentTypeAssertions = - | [] - | [ - | { - assertionStyle: "never"; - } - | { - arrayLiteralTypeAssertions?: "allow" | "allow-as-parameter" | "never"; - - assertionStyle?: "as" | "angle-bracket"; - - objectLiteralTypeAssertions?: "allow" | "allow-as-parameter" | "never"; - }, - ]; -// ----- @typescript-eslint/consistent-type-definitions ----- -type TypescriptEslintConsistentTypeDefinitions = [] | ["interface" | "type"]; -// ----- @typescript-eslint/consistent-type-exports ----- -type TypescriptEslintConsistentTypeExports = - | [] - | [ - { - fixMixedExportsWithInlineTypeSpecifier?: boolean; - }, - ]; -// ----- @typescript-eslint/consistent-type-imports ----- -type TypescriptEslintConsistentTypeImports = - | [] - | [ - { - disallowTypeAnnotations?: boolean; - - fixStyle?: "separate-type-imports" | "inline-type-imports"; - - prefer?: "type-imports" | "no-type-imports"; - }, - ]; -// ----- @typescript-eslint/dot-notation ----- -type TypescriptEslintDotNotation = - | [] - | [ - { - allowIndexSignaturePropertyAccess?: boolean; - - allowKeywords?: boolean; - - allowPattern?: string; - - allowPrivateClassPropertyAccess?: boolean; - - allowProtectedClassPropertyAccess?: boolean; - }, - ]; -// ----- @typescript-eslint/explicit-function-return-type ----- -type TypescriptEslintExplicitFunctionReturnType = - | [] - | [ - { - allowConciseArrowFunctionExpressionsStartingWithVoid?: boolean; - - allowDirectConstAssertionInArrowFunctions?: boolean; - - allowedNames?: string[]; - - allowExpressions?: boolean; - - allowFunctionsWithoutTypeParameters?: boolean; - - allowHigherOrderFunctions?: boolean; - - allowIIFEs?: boolean; - - allowTypedFunctionExpressions?: boolean; - }, - ]; -// ----- @typescript-eslint/explicit-member-accessibility ----- -type TypescriptEslintExplicitMemberAccessibility = - | [] - | [ - { - accessibility?: "explicit" | "no-public" | "off"; - - ignoredMethodNames?: string[]; - - overrides?: { - accessors?: "explicit" | "no-public" | "off"; - constructors?: "explicit" | "no-public" | "off"; - methods?: "explicit" | "no-public" | "off"; - parameterProperties?: "explicit" | "no-public" | "off"; - properties?: "explicit" | "no-public" | "off"; - }; - }, - ]; -// ----- @typescript-eslint/explicit-module-boundary-types ----- -type TypescriptEslintExplicitModuleBoundaryTypes = - | [] - | [ - { - allowArgumentsExplicitlyTypedAsAny?: boolean; - - allowDirectConstAssertionInArrowFunctions?: boolean; - - allowedNames?: string[]; - - allowHigherOrderFunctions?: boolean; - - allowOverloadFunctions?: boolean; - - allowTypedFunctionExpressions?: boolean; - }, - ]; -// ----- @typescript-eslint/init-declarations ----- -type TypescriptEslintInitDeclarations = - | [] - | ["always"] - | [] - | ["never"] - | [ - "never", - { - ignoreForLoopInit?: boolean; - }, - ]; -// ----- @typescript-eslint/max-params ----- -type TypescriptEslintMaxParams = - | [] - | [ - { - countVoidThis?: boolean; - - max?: number; - - maximum?: number; - }, - ]; -// ----- @typescript-eslint/member-ordering ----- -type TypescriptEslintMemberOrdering = - | [] - | [ - { - classes?: - | "never" - | ( - | ( - | "readonly-signature" - | "signature" - | "readonly-field" - | "public-readonly-field" - | "public-decorated-readonly-field" - | "decorated-readonly-field" - | "static-readonly-field" - | "public-static-readonly-field" - | "instance-readonly-field" - | "public-instance-readonly-field" - | "abstract-readonly-field" - | "public-abstract-readonly-field" - | "protected-readonly-field" - | "protected-decorated-readonly-field" - | "protected-static-readonly-field" - | "protected-instance-readonly-field" - | "protected-abstract-readonly-field" - | "private-readonly-field" - | "private-decorated-readonly-field" - | "private-static-readonly-field" - | "private-instance-readonly-field" - | "#private-readonly-field" - | "#private-static-readonly-field" - | "#private-instance-readonly-field" - | "field" - | "public-field" - | "public-decorated-field" - | "decorated-field" - | "static-field" - | "public-static-field" - | "instance-field" - | "public-instance-field" - | "abstract-field" - | "public-abstract-field" - | "protected-field" - | "protected-decorated-field" - | "protected-static-field" - | "protected-instance-field" - | "protected-abstract-field" - | "private-field" - | "private-decorated-field" - | "private-static-field" - | "private-instance-field" - | "#private-field" - | "#private-static-field" - | "#private-instance-field" - | "method" - | "public-method" - | "public-decorated-method" - | "decorated-method" - | "static-method" - | "public-static-method" - | "instance-method" - | "public-instance-method" - | "abstract-method" - | "public-abstract-method" - | "protected-method" - | "protected-decorated-method" - | "protected-static-method" - | "protected-instance-method" - | "protected-abstract-method" - | "private-method" - | "private-decorated-method" - | "private-static-method" - | "private-instance-method" - | "#private-method" - | "#private-static-method" - | "#private-instance-method" - | "call-signature" - | "constructor" - | "public-constructor" - | "protected-constructor" - | "private-constructor" - | "accessor" - | "public-accessor" - | "public-decorated-accessor" - | "decorated-accessor" - | "static-accessor" - | "public-static-accessor" - | "instance-accessor" - | "public-instance-accessor" - | "abstract-accessor" - | "public-abstract-accessor" - | "protected-accessor" - | "protected-decorated-accessor" - | "protected-static-accessor" - | "protected-instance-accessor" - | "protected-abstract-accessor" - | "private-accessor" - | "private-decorated-accessor" - | "private-static-accessor" - | "private-instance-accessor" - | "#private-accessor" - | "#private-static-accessor" - | "#private-instance-accessor" - | "get" - | "public-get" - | "public-decorated-get" - | "decorated-get" - | "static-get" - | "public-static-get" - | "instance-get" - | "public-instance-get" - | "abstract-get" - | "public-abstract-get" - | "protected-get" - | "protected-decorated-get" - | "protected-static-get" - | "protected-instance-get" - | "protected-abstract-get" - | "private-get" - | "private-decorated-get" - | "private-static-get" - | "private-instance-get" - | "#private-get" - | "#private-static-get" - | "#private-instance-get" - | "set" - | "public-set" - | "public-decorated-set" - | "decorated-set" - | "static-set" - | "public-static-set" - | "instance-set" - | "public-instance-set" - | "abstract-set" - | "public-abstract-set" - | "protected-set" - | "protected-decorated-set" - | "protected-static-set" - | "protected-instance-set" - | "protected-abstract-set" - | "private-set" - | "private-decorated-set" - | "private-static-set" - | "private-instance-set" - | "#private-set" - | "#private-static-set" - | "#private-instance-set" - | "static-initialization" - | "static-static-initialization" - | "public-static-static-initialization" - | "instance-static-initialization" - | "public-instance-static-initialization" - | "abstract-static-initialization" - | "public-abstract-static-initialization" - | "protected-static-static-initialization" - | "protected-instance-static-initialization" - | "protected-abstract-static-initialization" - | "private-static-static-initialization" - | "private-instance-static-initialization" - | "#private-static-static-initialization" - | "#private-instance-static-initialization" - ) - | ( - | "readonly-signature" - | "signature" - | "readonly-field" - | "public-readonly-field" - | "public-decorated-readonly-field" - | "decorated-readonly-field" - | "static-readonly-field" - | "public-static-readonly-field" - | "instance-readonly-field" - | "public-instance-readonly-field" - | "abstract-readonly-field" - | "public-abstract-readonly-field" - | "protected-readonly-field" - | "protected-decorated-readonly-field" - | "protected-static-readonly-field" - | "protected-instance-readonly-field" - | "protected-abstract-readonly-field" - | "private-readonly-field" - | "private-decorated-readonly-field" - | "private-static-readonly-field" - | "private-instance-readonly-field" - | "#private-readonly-field" - | "#private-static-readonly-field" - | "#private-instance-readonly-field" - | "field" - | "public-field" - | "public-decorated-field" - | "decorated-field" - | "static-field" - | "public-static-field" - | "instance-field" - | "public-instance-field" - | "abstract-field" - | "public-abstract-field" - | "protected-field" - | "protected-decorated-field" - | "protected-static-field" - | "protected-instance-field" - | "protected-abstract-field" - | "private-field" - | "private-decorated-field" - | "private-static-field" - | "private-instance-field" - | "#private-field" - | "#private-static-field" - | "#private-instance-field" - | "method" - | "public-method" - | "public-decorated-method" - | "decorated-method" - | "static-method" - | "public-static-method" - | "instance-method" - | "public-instance-method" - | "abstract-method" - | "public-abstract-method" - | "protected-method" - | "protected-decorated-method" - | "protected-static-method" - | "protected-instance-method" - | "protected-abstract-method" - | "private-method" - | "private-decorated-method" - | "private-static-method" - | "private-instance-method" - | "#private-method" - | "#private-static-method" - | "#private-instance-method" - | "call-signature" - | "constructor" - | "public-constructor" - | "protected-constructor" - | "private-constructor" - | "accessor" - | "public-accessor" - | "public-decorated-accessor" - | "decorated-accessor" - | "static-accessor" - | "public-static-accessor" - | "instance-accessor" - | "public-instance-accessor" - | "abstract-accessor" - | "public-abstract-accessor" - | "protected-accessor" - | "protected-decorated-accessor" - | "protected-static-accessor" - | "protected-instance-accessor" - | "protected-abstract-accessor" - | "private-accessor" - | "private-decorated-accessor" - | "private-static-accessor" - | "private-instance-accessor" - | "#private-accessor" - | "#private-static-accessor" - | "#private-instance-accessor" - | "get" - | "public-get" - | "public-decorated-get" - | "decorated-get" - | "static-get" - | "public-static-get" - | "instance-get" - | "public-instance-get" - | "abstract-get" - | "public-abstract-get" - | "protected-get" - | "protected-decorated-get" - | "protected-static-get" - | "protected-instance-get" - | "protected-abstract-get" - | "private-get" - | "private-decorated-get" - | "private-static-get" - | "private-instance-get" - | "#private-get" - | "#private-static-get" - | "#private-instance-get" - | "set" - | "public-set" - | "public-decorated-set" - | "decorated-set" - | "static-set" - | "public-static-set" - | "instance-set" - | "public-instance-set" - | "abstract-set" - | "public-abstract-set" - | "protected-set" - | "protected-decorated-set" - | "protected-static-set" - | "protected-instance-set" - | "protected-abstract-set" - | "private-set" - | "private-decorated-set" - | "private-static-set" - | "private-instance-set" - | "#private-set" - | "#private-static-set" - | "#private-instance-set" - | "static-initialization" - | "static-static-initialization" - | "public-static-static-initialization" - | "instance-static-initialization" - | "public-instance-static-initialization" - | "abstract-static-initialization" - | "public-abstract-static-initialization" - | "protected-static-static-initialization" - | "protected-instance-static-initialization" - | "protected-abstract-static-initialization" - | "private-static-static-initialization" - | "private-instance-static-initialization" - | "#private-static-static-initialization" - | "#private-instance-static-initialization" - )[] - )[] - | { - memberTypes?: - | ( - | ( - | "readonly-signature" - | "signature" - | "readonly-field" - | "public-readonly-field" - | "public-decorated-readonly-field" - | "decorated-readonly-field" - | "static-readonly-field" - | "public-static-readonly-field" - | "instance-readonly-field" - | "public-instance-readonly-field" - | "abstract-readonly-field" - | "public-abstract-readonly-field" - | "protected-readonly-field" - | "protected-decorated-readonly-field" - | "protected-static-readonly-field" - | "protected-instance-readonly-field" - | "protected-abstract-readonly-field" - | "private-readonly-field" - | "private-decorated-readonly-field" - | "private-static-readonly-field" - | "private-instance-readonly-field" - | "#private-readonly-field" - | "#private-static-readonly-field" - | "#private-instance-readonly-field" - | "field" - | "public-field" - | "public-decorated-field" - | "decorated-field" - | "static-field" - | "public-static-field" - | "instance-field" - | "public-instance-field" - | "abstract-field" - | "public-abstract-field" - | "protected-field" - | "protected-decorated-field" - | "protected-static-field" - | "protected-instance-field" - | "protected-abstract-field" - | "private-field" - | "private-decorated-field" - | "private-static-field" - | "private-instance-field" - | "#private-field" - | "#private-static-field" - | "#private-instance-field" - | "method" - | "public-method" - | "public-decorated-method" - | "decorated-method" - | "static-method" - | "public-static-method" - | "instance-method" - | "public-instance-method" - | "abstract-method" - | "public-abstract-method" - | "protected-method" - | "protected-decorated-method" - | "protected-static-method" - | "protected-instance-method" - | "protected-abstract-method" - | "private-method" - | "private-decorated-method" - | "private-static-method" - | "private-instance-method" - | "#private-method" - | "#private-static-method" - | "#private-instance-method" - | "call-signature" - | "constructor" - | "public-constructor" - | "protected-constructor" - | "private-constructor" - | "accessor" - | "public-accessor" - | "public-decorated-accessor" - | "decorated-accessor" - | "static-accessor" - | "public-static-accessor" - | "instance-accessor" - | "public-instance-accessor" - | "abstract-accessor" - | "public-abstract-accessor" - | "protected-accessor" - | "protected-decorated-accessor" - | "protected-static-accessor" - | "protected-instance-accessor" - | "protected-abstract-accessor" - | "private-accessor" - | "private-decorated-accessor" - | "private-static-accessor" - | "private-instance-accessor" - | "#private-accessor" - | "#private-static-accessor" - | "#private-instance-accessor" - | "get" - | "public-get" - | "public-decorated-get" - | "decorated-get" - | "static-get" - | "public-static-get" - | "instance-get" - | "public-instance-get" - | "abstract-get" - | "public-abstract-get" - | "protected-get" - | "protected-decorated-get" - | "protected-static-get" - | "protected-instance-get" - | "protected-abstract-get" - | "private-get" - | "private-decorated-get" - | "private-static-get" - | "private-instance-get" - | "#private-get" - | "#private-static-get" - | "#private-instance-get" - | "set" - | "public-set" - | "public-decorated-set" - | "decorated-set" - | "static-set" - | "public-static-set" - | "instance-set" - | "public-instance-set" - | "abstract-set" - | "public-abstract-set" - | "protected-set" - | "protected-decorated-set" - | "protected-static-set" - | "protected-instance-set" - | "protected-abstract-set" - | "private-set" - | "private-decorated-set" - | "private-static-set" - | "private-instance-set" - | "#private-set" - | "#private-static-set" - | "#private-instance-set" - | "static-initialization" - | "static-static-initialization" - | "public-static-static-initialization" - | "instance-static-initialization" - | "public-instance-static-initialization" - | "abstract-static-initialization" - | "public-abstract-static-initialization" - | "protected-static-static-initialization" - | "protected-instance-static-initialization" - | "protected-abstract-static-initialization" - | "private-static-static-initialization" - | "private-instance-static-initialization" - | "#private-static-static-initialization" - | "#private-instance-static-initialization" - ) - | ( - | "readonly-signature" - | "signature" - | "readonly-field" - | "public-readonly-field" - | "public-decorated-readonly-field" - | "decorated-readonly-field" - | "static-readonly-field" - | "public-static-readonly-field" - | "instance-readonly-field" - | "public-instance-readonly-field" - | "abstract-readonly-field" - | "public-abstract-readonly-field" - | "protected-readonly-field" - | "protected-decorated-readonly-field" - | "protected-static-readonly-field" - | "protected-instance-readonly-field" - | "protected-abstract-readonly-field" - | "private-readonly-field" - | "private-decorated-readonly-field" - | "private-static-readonly-field" - | "private-instance-readonly-field" - | "#private-readonly-field" - | "#private-static-readonly-field" - | "#private-instance-readonly-field" - | "field" - | "public-field" - | "public-decorated-field" - | "decorated-field" - | "static-field" - | "public-static-field" - | "instance-field" - | "public-instance-field" - | "abstract-field" - | "public-abstract-field" - | "protected-field" - | "protected-decorated-field" - | "protected-static-field" - | "protected-instance-field" - | "protected-abstract-field" - | "private-field" - | "private-decorated-field" - | "private-static-field" - | "private-instance-field" - | "#private-field" - | "#private-static-field" - | "#private-instance-field" - | "method" - | "public-method" - | "public-decorated-method" - | "decorated-method" - | "static-method" - | "public-static-method" - | "instance-method" - | "public-instance-method" - | "abstract-method" - | "public-abstract-method" - | "protected-method" - | "protected-decorated-method" - | "protected-static-method" - | "protected-instance-method" - | "protected-abstract-method" - | "private-method" - | "private-decorated-method" - | "private-static-method" - | "private-instance-method" - | "#private-method" - | "#private-static-method" - | "#private-instance-method" - | "call-signature" - | "constructor" - | "public-constructor" - | "protected-constructor" - | "private-constructor" - | "accessor" - | "public-accessor" - | "public-decorated-accessor" - | "decorated-accessor" - | "static-accessor" - | "public-static-accessor" - | "instance-accessor" - | "public-instance-accessor" - | "abstract-accessor" - | "public-abstract-accessor" - | "protected-accessor" - | "protected-decorated-accessor" - | "protected-static-accessor" - | "protected-instance-accessor" - | "protected-abstract-accessor" - | "private-accessor" - | "private-decorated-accessor" - | "private-static-accessor" - | "private-instance-accessor" - | "#private-accessor" - | "#private-static-accessor" - | "#private-instance-accessor" - | "get" - | "public-get" - | "public-decorated-get" - | "decorated-get" - | "static-get" - | "public-static-get" - | "instance-get" - | "public-instance-get" - | "abstract-get" - | "public-abstract-get" - | "protected-get" - | "protected-decorated-get" - | "protected-static-get" - | "protected-instance-get" - | "protected-abstract-get" - | "private-get" - | "private-decorated-get" - | "private-static-get" - | "private-instance-get" - | "#private-get" - | "#private-static-get" - | "#private-instance-get" - | "set" - | "public-set" - | "public-decorated-set" - | "decorated-set" - | "static-set" - | "public-static-set" - | "instance-set" - | "public-instance-set" - | "abstract-set" - | "public-abstract-set" - | "protected-set" - | "protected-decorated-set" - | "protected-static-set" - | "protected-instance-set" - | "protected-abstract-set" - | "private-set" - | "private-decorated-set" - | "private-static-set" - | "private-instance-set" - | "#private-set" - | "#private-static-set" - | "#private-instance-set" - | "static-initialization" - | "static-static-initialization" - | "public-static-static-initialization" - | "instance-static-initialization" - | "public-instance-static-initialization" - | "abstract-static-initialization" - | "public-abstract-static-initialization" - | "protected-static-static-initialization" - | "protected-instance-static-initialization" - | "protected-abstract-static-initialization" - | "private-static-static-initialization" - | "private-instance-static-initialization" - | "#private-static-static-initialization" - | "#private-instance-static-initialization" - )[] - )[] - | "never"; - optionalityOrder?: "optional-first" | "required-first"; - order?: "alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive"; - }; - classExpressions?: - | "never" - | ( - | ( - | "readonly-signature" - | "signature" - | "readonly-field" - | "public-readonly-field" - | "public-decorated-readonly-field" - | "decorated-readonly-field" - | "static-readonly-field" - | "public-static-readonly-field" - | "instance-readonly-field" - | "public-instance-readonly-field" - | "abstract-readonly-field" - | "public-abstract-readonly-field" - | "protected-readonly-field" - | "protected-decorated-readonly-field" - | "protected-static-readonly-field" - | "protected-instance-readonly-field" - | "protected-abstract-readonly-field" - | "private-readonly-field" - | "private-decorated-readonly-field" - | "private-static-readonly-field" - | "private-instance-readonly-field" - | "#private-readonly-field" - | "#private-static-readonly-field" - | "#private-instance-readonly-field" - | "field" - | "public-field" - | "public-decorated-field" - | "decorated-field" - | "static-field" - | "public-static-field" - | "instance-field" - | "public-instance-field" - | "abstract-field" - | "public-abstract-field" - | "protected-field" - | "protected-decorated-field" - | "protected-static-field" - | "protected-instance-field" - | "protected-abstract-field" - | "private-field" - | "private-decorated-field" - | "private-static-field" - | "private-instance-field" - | "#private-field" - | "#private-static-field" - | "#private-instance-field" - | "method" - | "public-method" - | "public-decorated-method" - | "decorated-method" - | "static-method" - | "public-static-method" - | "instance-method" - | "public-instance-method" - | "abstract-method" - | "public-abstract-method" - | "protected-method" - | "protected-decorated-method" - | "protected-static-method" - | "protected-instance-method" - | "protected-abstract-method" - | "private-method" - | "private-decorated-method" - | "private-static-method" - | "private-instance-method" - | "#private-method" - | "#private-static-method" - | "#private-instance-method" - | "call-signature" - | "constructor" - | "public-constructor" - | "protected-constructor" - | "private-constructor" - | "accessor" - | "public-accessor" - | "public-decorated-accessor" - | "decorated-accessor" - | "static-accessor" - | "public-static-accessor" - | "instance-accessor" - | "public-instance-accessor" - | "abstract-accessor" - | "public-abstract-accessor" - | "protected-accessor" - | "protected-decorated-accessor" - | "protected-static-accessor" - | "protected-instance-accessor" - | "protected-abstract-accessor" - | "private-accessor" - | "private-decorated-accessor" - | "private-static-accessor" - | "private-instance-accessor" - | "#private-accessor" - | "#private-static-accessor" - | "#private-instance-accessor" - | "get" - | "public-get" - | "public-decorated-get" - | "decorated-get" - | "static-get" - | "public-static-get" - | "instance-get" - | "public-instance-get" - | "abstract-get" - | "public-abstract-get" - | "protected-get" - | "protected-decorated-get" - | "protected-static-get" - | "protected-instance-get" - | "protected-abstract-get" - | "private-get" - | "private-decorated-get" - | "private-static-get" - | "private-instance-get" - | "#private-get" - | "#private-static-get" - | "#private-instance-get" - | "set" - | "public-set" - | "public-decorated-set" - | "decorated-set" - | "static-set" - | "public-static-set" - | "instance-set" - | "public-instance-set" - | "abstract-set" - | "public-abstract-set" - | "protected-set" - | "protected-decorated-set" - | "protected-static-set" - | "protected-instance-set" - | "protected-abstract-set" - | "private-set" - | "private-decorated-set" - | "private-static-set" - | "private-instance-set" - | "#private-set" - | "#private-static-set" - | "#private-instance-set" - | "static-initialization" - | "static-static-initialization" - | "public-static-static-initialization" - | "instance-static-initialization" - | "public-instance-static-initialization" - | "abstract-static-initialization" - | "public-abstract-static-initialization" - | "protected-static-static-initialization" - | "protected-instance-static-initialization" - | "protected-abstract-static-initialization" - | "private-static-static-initialization" - | "private-instance-static-initialization" - | "#private-static-static-initialization" - | "#private-instance-static-initialization" - ) - | ( - | "readonly-signature" - | "signature" - | "readonly-field" - | "public-readonly-field" - | "public-decorated-readonly-field" - | "decorated-readonly-field" - | "static-readonly-field" - | "public-static-readonly-field" - | "instance-readonly-field" - | "public-instance-readonly-field" - | "abstract-readonly-field" - | "public-abstract-readonly-field" - | "protected-readonly-field" - | "protected-decorated-readonly-field" - | "protected-static-readonly-field" - | "protected-instance-readonly-field" - | "protected-abstract-readonly-field" - | "private-readonly-field" - | "private-decorated-readonly-field" - | "private-static-readonly-field" - | "private-instance-readonly-field" - | "#private-readonly-field" - | "#private-static-readonly-field" - | "#private-instance-readonly-field" - | "field" - | "public-field" - | "public-decorated-field" - | "decorated-field" - | "static-field" - | "public-static-field" - | "instance-field" - | "public-instance-field" - | "abstract-field" - | "public-abstract-field" - | "protected-field" - | "protected-decorated-field" - | "protected-static-field" - | "protected-instance-field" - | "protected-abstract-field" - | "private-field" - | "private-decorated-field" - | "private-static-field" - | "private-instance-field" - | "#private-field" - | "#private-static-field" - | "#private-instance-field" - | "method" - | "public-method" - | "public-decorated-method" - | "decorated-method" - | "static-method" - | "public-static-method" - | "instance-method" - | "public-instance-method" - | "abstract-method" - | "public-abstract-method" - | "protected-method" - | "protected-decorated-method" - | "protected-static-method" - | "protected-instance-method" - | "protected-abstract-method" - | "private-method" - | "private-decorated-method" - | "private-static-method" - | "private-instance-method" - | "#private-method" - | "#private-static-method" - | "#private-instance-method" - | "call-signature" - | "constructor" - | "public-constructor" - | "protected-constructor" - | "private-constructor" - | "accessor" - | "public-accessor" - | "public-decorated-accessor" - | "decorated-accessor" - | "static-accessor" - | "public-static-accessor" - | "instance-accessor" - | "public-instance-accessor" - | "abstract-accessor" - | "public-abstract-accessor" - | "protected-accessor" - | "protected-decorated-accessor" - | "protected-static-accessor" - | "protected-instance-accessor" - | "protected-abstract-accessor" - | "private-accessor" - | "private-decorated-accessor" - | "private-static-accessor" - | "private-instance-accessor" - | "#private-accessor" - | "#private-static-accessor" - | "#private-instance-accessor" - | "get" - | "public-get" - | "public-decorated-get" - | "decorated-get" - | "static-get" - | "public-static-get" - | "instance-get" - | "public-instance-get" - | "abstract-get" - | "public-abstract-get" - | "protected-get" - | "protected-decorated-get" - | "protected-static-get" - | "protected-instance-get" - | "protected-abstract-get" - | "private-get" - | "private-decorated-get" - | "private-static-get" - | "private-instance-get" - | "#private-get" - | "#private-static-get" - | "#private-instance-get" - | "set" - | "public-set" - | "public-decorated-set" - | "decorated-set" - | "static-set" - | "public-static-set" - | "instance-set" - | "public-instance-set" - | "abstract-set" - | "public-abstract-set" - | "protected-set" - | "protected-decorated-set" - | "protected-static-set" - | "protected-instance-set" - | "protected-abstract-set" - | "private-set" - | "private-decorated-set" - | "private-static-set" - | "private-instance-set" - | "#private-set" - | "#private-static-set" - | "#private-instance-set" - | "static-initialization" - | "static-static-initialization" - | "public-static-static-initialization" - | "instance-static-initialization" - | "public-instance-static-initialization" - | "abstract-static-initialization" - | "public-abstract-static-initialization" - | "protected-static-static-initialization" - | "protected-instance-static-initialization" - | "protected-abstract-static-initialization" - | "private-static-static-initialization" - | "private-instance-static-initialization" - | "#private-static-static-initialization" - | "#private-instance-static-initialization" - )[] - )[] - | { - memberTypes?: - | ( - | ( - | "readonly-signature" - | "signature" - | "readonly-field" - | "public-readonly-field" - | "public-decorated-readonly-field" - | "decorated-readonly-field" - | "static-readonly-field" - | "public-static-readonly-field" - | "instance-readonly-field" - | "public-instance-readonly-field" - | "abstract-readonly-field" - | "public-abstract-readonly-field" - | "protected-readonly-field" - | "protected-decorated-readonly-field" - | "protected-static-readonly-field" - | "protected-instance-readonly-field" - | "protected-abstract-readonly-field" - | "private-readonly-field" - | "private-decorated-readonly-field" - | "private-static-readonly-field" - | "private-instance-readonly-field" - | "#private-readonly-field" - | "#private-static-readonly-field" - | "#private-instance-readonly-field" - | "field" - | "public-field" - | "public-decorated-field" - | "decorated-field" - | "static-field" - | "public-static-field" - | "instance-field" - | "public-instance-field" - | "abstract-field" - | "public-abstract-field" - | "protected-field" - | "protected-decorated-field" - | "protected-static-field" - | "protected-instance-field" - | "protected-abstract-field" - | "private-field" - | "private-decorated-field" - | "private-static-field" - | "private-instance-field" - | "#private-field" - | "#private-static-field" - | "#private-instance-field" - | "method" - | "public-method" - | "public-decorated-method" - | "decorated-method" - | "static-method" - | "public-static-method" - | "instance-method" - | "public-instance-method" - | "abstract-method" - | "public-abstract-method" - | "protected-method" - | "protected-decorated-method" - | "protected-static-method" - | "protected-instance-method" - | "protected-abstract-method" - | "private-method" - | "private-decorated-method" - | "private-static-method" - | "private-instance-method" - | "#private-method" - | "#private-static-method" - | "#private-instance-method" - | "call-signature" - | "constructor" - | "public-constructor" - | "protected-constructor" - | "private-constructor" - | "accessor" - | "public-accessor" - | "public-decorated-accessor" - | "decorated-accessor" - | "static-accessor" - | "public-static-accessor" - | "instance-accessor" - | "public-instance-accessor" - | "abstract-accessor" - | "public-abstract-accessor" - | "protected-accessor" - | "protected-decorated-accessor" - | "protected-static-accessor" - | "protected-instance-accessor" - | "protected-abstract-accessor" - | "private-accessor" - | "private-decorated-accessor" - | "private-static-accessor" - | "private-instance-accessor" - | "#private-accessor" - | "#private-static-accessor" - | "#private-instance-accessor" - | "get" - | "public-get" - | "public-decorated-get" - | "decorated-get" - | "static-get" - | "public-static-get" - | "instance-get" - | "public-instance-get" - | "abstract-get" - | "public-abstract-get" - | "protected-get" - | "protected-decorated-get" - | "protected-static-get" - | "protected-instance-get" - | "protected-abstract-get" - | "private-get" - | "private-decorated-get" - | "private-static-get" - | "private-instance-get" - | "#private-get" - | "#private-static-get" - | "#private-instance-get" - | "set" - | "public-set" - | "public-decorated-set" - | "decorated-set" - | "static-set" - | "public-static-set" - | "instance-set" - | "public-instance-set" - | "abstract-set" - | "public-abstract-set" - | "protected-set" - | "protected-decorated-set" - | "protected-static-set" - | "protected-instance-set" - | "protected-abstract-set" - | "private-set" - | "private-decorated-set" - | "private-static-set" - | "private-instance-set" - | "#private-set" - | "#private-static-set" - | "#private-instance-set" - | "static-initialization" - | "static-static-initialization" - | "public-static-static-initialization" - | "instance-static-initialization" - | "public-instance-static-initialization" - | "abstract-static-initialization" - | "public-abstract-static-initialization" - | "protected-static-static-initialization" - | "protected-instance-static-initialization" - | "protected-abstract-static-initialization" - | "private-static-static-initialization" - | "private-instance-static-initialization" - | "#private-static-static-initialization" - | "#private-instance-static-initialization" - ) - | ( - | "readonly-signature" - | "signature" - | "readonly-field" - | "public-readonly-field" - | "public-decorated-readonly-field" - | "decorated-readonly-field" - | "static-readonly-field" - | "public-static-readonly-field" - | "instance-readonly-field" - | "public-instance-readonly-field" - | "abstract-readonly-field" - | "public-abstract-readonly-field" - | "protected-readonly-field" - | "protected-decorated-readonly-field" - | "protected-static-readonly-field" - | "protected-instance-readonly-field" - | "protected-abstract-readonly-field" - | "private-readonly-field" - | "private-decorated-readonly-field" - | "private-static-readonly-field" - | "private-instance-readonly-field" - | "#private-readonly-field" - | "#private-static-readonly-field" - | "#private-instance-readonly-field" - | "field" - | "public-field" - | "public-decorated-field" - | "decorated-field" - | "static-field" - | "public-static-field" - | "instance-field" - | "public-instance-field" - | "abstract-field" - | "public-abstract-field" - | "protected-field" - | "protected-decorated-field" - | "protected-static-field" - | "protected-instance-field" - | "protected-abstract-field" - | "private-field" - | "private-decorated-field" - | "private-static-field" - | "private-instance-field" - | "#private-field" - | "#private-static-field" - | "#private-instance-field" - | "method" - | "public-method" - | "public-decorated-method" - | "decorated-method" - | "static-method" - | "public-static-method" - | "instance-method" - | "public-instance-method" - | "abstract-method" - | "public-abstract-method" - | "protected-method" - | "protected-decorated-method" - | "protected-static-method" - | "protected-instance-method" - | "protected-abstract-method" - | "private-method" - | "private-decorated-method" - | "private-static-method" - | "private-instance-method" - | "#private-method" - | "#private-static-method" - | "#private-instance-method" - | "call-signature" - | "constructor" - | "public-constructor" - | "protected-constructor" - | "private-constructor" - | "accessor" - | "public-accessor" - | "public-decorated-accessor" - | "decorated-accessor" - | "static-accessor" - | "public-static-accessor" - | "instance-accessor" - | "public-instance-accessor" - | "abstract-accessor" - | "public-abstract-accessor" - | "protected-accessor" - | "protected-decorated-accessor" - | "protected-static-accessor" - | "protected-instance-accessor" - | "protected-abstract-accessor" - | "private-accessor" - | "private-decorated-accessor" - | "private-static-accessor" - | "private-instance-accessor" - | "#private-accessor" - | "#private-static-accessor" - | "#private-instance-accessor" - | "get" - | "public-get" - | "public-decorated-get" - | "decorated-get" - | "static-get" - | "public-static-get" - | "instance-get" - | "public-instance-get" - | "abstract-get" - | "public-abstract-get" - | "protected-get" - | "protected-decorated-get" - | "protected-static-get" - | "protected-instance-get" - | "protected-abstract-get" - | "private-get" - | "private-decorated-get" - | "private-static-get" - | "private-instance-get" - | "#private-get" - | "#private-static-get" - | "#private-instance-get" - | "set" - | "public-set" - | "public-decorated-set" - | "decorated-set" - | "static-set" - | "public-static-set" - | "instance-set" - | "public-instance-set" - | "abstract-set" - | "public-abstract-set" - | "protected-set" - | "protected-decorated-set" - | "protected-static-set" - | "protected-instance-set" - | "protected-abstract-set" - | "private-set" - | "private-decorated-set" - | "private-static-set" - | "private-instance-set" - | "#private-set" - | "#private-static-set" - | "#private-instance-set" - | "static-initialization" - | "static-static-initialization" - | "public-static-static-initialization" - | "instance-static-initialization" - | "public-instance-static-initialization" - | "abstract-static-initialization" - | "public-abstract-static-initialization" - | "protected-static-static-initialization" - | "protected-instance-static-initialization" - | "protected-abstract-static-initialization" - | "private-static-static-initialization" - | "private-instance-static-initialization" - | "#private-static-static-initialization" - | "#private-instance-static-initialization" - )[] - )[] - | "never"; - optionalityOrder?: "optional-first" | "required-first"; - order?: "alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive"; - }; - default?: - | "never" - | ( - | ( - | "readonly-signature" - | "signature" - | "readonly-field" - | "public-readonly-field" - | "public-decorated-readonly-field" - | "decorated-readonly-field" - | "static-readonly-field" - | "public-static-readonly-field" - | "instance-readonly-field" - | "public-instance-readonly-field" - | "abstract-readonly-field" - | "public-abstract-readonly-field" - | "protected-readonly-field" - | "protected-decorated-readonly-field" - | "protected-static-readonly-field" - | "protected-instance-readonly-field" - | "protected-abstract-readonly-field" - | "private-readonly-field" - | "private-decorated-readonly-field" - | "private-static-readonly-field" - | "private-instance-readonly-field" - | "#private-readonly-field" - | "#private-static-readonly-field" - | "#private-instance-readonly-field" - | "field" - | "public-field" - | "public-decorated-field" - | "decorated-field" - | "static-field" - | "public-static-field" - | "instance-field" - | "public-instance-field" - | "abstract-field" - | "public-abstract-field" - | "protected-field" - | "protected-decorated-field" - | "protected-static-field" - | "protected-instance-field" - | "protected-abstract-field" - | "private-field" - | "private-decorated-field" - | "private-static-field" - | "private-instance-field" - | "#private-field" - | "#private-static-field" - | "#private-instance-field" - | "method" - | "public-method" - | "public-decorated-method" - | "decorated-method" - | "static-method" - | "public-static-method" - | "instance-method" - | "public-instance-method" - | "abstract-method" - | "public-abstract-method" - | "protected-method" - | "protected-decorated-method" - | "protected-static-method" - | "protected-instance-method" - | "protected-abstract-method" - | "private-method" - | "private-decorated-method" - | "private-static-method" - | "private-instance-method" - | "#private-method" - | "#private-static-method" - | "#private-instance-method" - | "call-signature" - | "constructor" - | "public-constructor" - | "protected-constructor" - | "private-constructor" - | "accessor" - | "public-accessor" - | "public-decorated-accessor" - | "decorated-accessor" - | "static-accessor" - | "public-static-accessor" - | "instance-accessor" - | "public-instance-accessor" - | "abstract-accessor" - | "public-abstract-accessor" - | "protected-accessor" - | "protected-decorated-accessor" - | "protected-static-accessor" - | "protected-instance-accessor" - | "protected-abstract-accessor" - | "private-accessor" - | "private-decorated-accessor" - | "private-static-accessor" - | "private-instance-accessor" - | "#private-accessor" - | "#private-static-accessor" - | "#private-instance-accessor" - | "get" - | "public-get" - | "public-decorated-get" - | "decorated-get" - | "static-get" - | "public-static-get" - | "instance-get" - | "public-instance-get" - | "abstract-get" - | "public-abstract-get" - | "protected-get" - | "protected-decorated-get" - | "protected-static-get" - | "protected-instance-get" - | "protected-abstract-get" - | "private-get" - | "private-decorated-get" - | "private-static-get" - | "private-instance-get" - | "#private-get" - | "#private-static-get" - | "#private-instance-get" - | "set" - | "public-set" - | "public-decorated-set" - | "decorated-set" - | "static-set" - | "public-static-set" - | "instance-set" - | "public-instance-set" - | "abstract-set" - | "public-abstract-set" - | "protected-set" - | "protected-decorated-set" - | "protected-static-set" - | "protected-instance-set" - | "protected-abstract-set" - | "private-set" - | "private-decorated-set" - | "private-static-set" - | "private-instance-set" - | "#private-set" - | "#private-static-set" - | "#private-instance-set" - | "static-initialization" - | "static-static-initialization" - | "public-static-static-initialization" - | "instance-static-initialization" - | "public-instance-static-initialization" - | "abstract-static-initialization" - | "public-abstract-static-initialization" - | "protected-static-static-initialization" - | "protected-instance-static-initialization" - | "protected-abstract-static-initialization" - | "private-static-static-initialization" - | "private-instance-static-initialization" - | "#private-static-static-initialization" - | "#private-instance-static-initialization" - ) - | ( - | "readonly-signature" - | "signature" - | "readonly-field" - | "public-readonly-field" - | "public-decorated-readonly-field" - | "decorated-readonly-field" - | "static-readonly-field" - | "public-static-readonly-field" - | "instance-readonly-field" - | "public-instance-readonly-field" - | "abstract-readonly-field" - | "public-abstract-readonly-field" - | "protected-readonly-field" - | "protected-decorated-readonly-field" - | "protected-static-readonly-field" - | "protected-instance-readonly-field" - | "protected-abstract-readonly-field" - | "private-readonly-field" - | "private-decorated-readonly-field" - | "private-static-readonly-field" - | "private-instance-readonly-field" - | "#private-readonly-field" - | "#private-static-readonly-field" - | "#private-instance-readonly-field" - | "field" - | "public-field" - | "public-decorated-field" - | "decorated-field" - | "static-field" - | "public-static-field" - | "instance-field" - | "public-instance-field" - | "abstract-field" - | "public-abstract-field" - | "protected-field" - | "protected-decorated-field" - | "protected-static-field" - | "protected-instance-field" - | "protected-abstract-field" - | "private-field" - | "private-decorated-field" - | "private-static-field" - | "private-instance-field" - | "#private-field" - | "#private-static-field" - | "#private-instance-field" - | "method" - | "public-method" - | "public-decorated-method" - | "decorated-method" - | "static-method" - | "public-static-method" - | "instance-method" - | "public-instance-method" - | "abstract-method" - | "public-abstract-method" - | "protected-method" - | "protected-decorated-method" - | "protected-static-method" - | "protected-instance-method" - | "protected-abstract-method" - | "private-method" - | "private-decorated-method" - | "private-static-method" - | "private-instance-method" - | "#private-method" - | "#private-static-method" - | "#private-instance-method" - | "call-signature" - | "constructor" - | "public-constructor" - | "protected-constructor" - | "private-constructor" - | "accessor" - | "public-accessor" - | "public-decorated-accessor" - | "decorated-accessor" - | "static-accessor" - | "public-static-accessor" - | "instance-accessor" - | "public-instance-accessor" - | "abstract-accessor" - | "public-abstract-accessor" - | "protected-accessor" - | "protected-decorated-accessor" - | "protected-static-accessor" - | "protected-instance-accessor" - | "protected-abstract-accessor" - | "private-accessor" - | "private-decorated-accessor" - | "private-static-accessor" - | "private-instance-accessor" - | "#private-accessor" - | "#private-static-accessor" - | "#private-instance-accessor" - | "get" - | "public-get" - | "public-decorated-get" - | "decorated-get" - | "static-get" - | "public-static-get" - | "instance-get" - | "public-instance-get" - | "abstract-get" - | "public-abstract-get" - | "protected-get" - | "protected-decorated-get" - | "protected-static-get" - | "protected-instance-get" - | "protected-abstract-get" - | "private-get" - | "private-decorated-get" - | "private-static-get" - | "private-instance-get" - | "#private-get" - | "#private-static-get" - | "#private-instance-get" - | "set" - | "public-set" - | "public-decorated-set" - | "decorated-set" - | "static-set" - | "public-static-set" - | "instance-set" - | "public-instance-set" - | "abstract-set" - | "public-abstract-set" - | "protected-set" - | "protected-decorated-set" - | "protected-static-set" - | "protected-instance-set" - | "protected-abstract-set" - | "private-set" - | "private-decorated-set" - | "private-static-set" - | "private-instance-set" - | "#private-set" - | "#private-static-set" - | "#private-instance-set" - | "static-initialization" - | "static-static-initialization" - | "public-static-static-initialization" - | "instance-static-initialization" - | "public-instance-static-initialization" - | "abstract-static-initialization" - | "public-abstract-static-initialization" - | "protected-static-static-initialization" - | "protected-instance-static-initialization" - | "protected-abstract-static-initialization" - | "private-static-static-initialization" - | "private-instance-static-initialization" - | "#private-static-static-initialization" - | "#private-instance-static-initialization" - )[] - )[] - | { - memberTypes?: - | ( - | ( - | "readonly-signature" - | "signature" - | "readonly-field" - | "public-readonly-field" - | "public-decorated-readonly-field" - | "decorated-readonly-field" - | "static-readonly-field" - | "public-static-readonly-field" - | "instance-readonly-field" - | "public-instance-readonly-field" - | "abstract-readonly-field" - | "public-abstract-readonly-field" - | "protected-readonly-field" - | "protected-decorated-readonly-field" - | "protected-static-readonly-field" - | "protected-instance-readonly-field" - | "protected-abstract-readonly-field" - | "private-readonly-field" - | "private-decorated-readonly-field" - | "private-static-readonly-field" - | "private-instance-readonly-field" - | "#private-readonly-field" - | "#private-static-readonly-field" - | "#private-instance-readonly-field" - | "field" - | "public-field" - | "public-decorated-field" - | "decorated-field" - | "static-field" - | "public-static-field" - | "instance-field" - | "public-instance-field" - | "abstract-field" - | "public-abstract-field" - | "protected-field" - | "protected-decorated-field" - | "protected-static-field" - | "protected-instance-field" - | "protected-abstract-field" - | "private-field" - | "private-decorated-field" - | "private-static-field" - | "private-instance-field" - | "#private-field" - | "#private-static-field" - | "#private-instance-field" - | "method" - | "public-method" - | "public-decorated-method" - | "decorated-method" - | "static-method" - | "public-static-method" - | "instance-method" - | "public-instance-method" - | "abstract-method" - | "public-abstract-method" - | "protected-method" - | "protected-decorated-method" - | "protected-static-method" - | "protected-instance-method" - | "protected-abstract-method" - | "private-method" - | "private-decorated-method" - | "private-static-method" - | "private-instance-method" - | "#private-method" - | "#private-static-method" - | "#private-instance-method" - | "call-signature" - | "constructor" - | "public-constructor" - | "protected-constructor" - | "private-constructor" - | "accessor" - | "public-accessor" - | "public-decorated-accessor" - | "decorated-accessor" - | "static-accessor" - | "public-static-accessor" - | "instance-accessor" - | "public-instance-accessor" - | "abstract-accessor" - | "public-abstract-accessor" - | "protected-accessor" - | "protected-decorated-accessor" - | "protected-static-accessor" - | "protected-instance-accessor" - | "protected-abstract-accessor" - | "private-accessor" - | "private-decorated-accessor" - | "private-static-accessor" - | "private-instance-accessor" - | "#private-accessor" - | "#private-static-accessor" - | "#private-instance-accessor" - | "get" - | "public-get" - | "public-decorated-get" - | "decorated-get" - | "static-get" - | "public-static-get" - | "instance-get" - | "public-instance-get" - | "abstract-get" - | "public-abstract-get" - | "protected-get" - | "protected-decorated-get" - | "protected-static-get" - | "protected-instance-get" - | "protected-abstract-get" - | "private-get" - | "private-decorated-get" - | "private-static-get" - | "private-instance-get" - | "#private-get" - | "#private-static-get" - | "#private-instance-get" - | "set" - | "public-set" - | "public-decorated-set" - | "decorated-set" - | "static-set" - | "public-static-set" - | "instance-set" - | "public-instance-set" - | "abstract-set" - | "public-abstract-set" - | "protected-set" - | "protected-decorated-set" - | "protected-static-set" - | "protected-instance-set" - | "protected-abstract-set" - | "private-set" - | "private-decorated-set" - | "private-static-set" - | "private-instance-set" - | "#private-set" - | "#private-static-set" - | "#private-instance-set" - | "static-initialization" - | "static-static-initialization" - | "public-static-static-initialization" - | "instance-static-initialization" - | "public-instance-static-initialization" - | "abstract-static-initialization" - | "public-abstract-static-initialization" - | "protected-static-static-initialization" - | "protected-instance-static-initialization" - | "protected-abstract-static-initialization" - | "private-static-static-initialization" - | "private-instance-static-initialization" - | "#private-static-static-initialization" - | "#private-instance-static-initialization" - ) - | ( - | "readonly-signature" - | "signature" - | "readonly-field" - | "public-readonly-field" - | "public-decorated-readonly-field" - | "decorated-readonly-field" - | "static-readonly-field" - | "public-static-readonly-field" - | "instance-readonly-field" - | "public-instance-readonly-field" - | "abstract-readonly-field" - | "public-abstract-readonly-field" - | "protected-readonly-field" - | "protected-decorated-readonly-field" - | "protected-static-readonly-field" - | "protected-instance-readonly-field" - | "protected-abstract-readonly-field" - | "private-readonly-field" - | "private-decorated-readonly-field" - | "private-static-readonly-field" - | "private-instance-readonly-field" - | "#private-readonly-field" - | "#private-static-readonly-field" - | "#private-instance-readonly-field" - | "field" - | "public-field" - | "public-decorated-field" - | "decorated-field" - | "static-field" - | "public-static-field" - | "instance-field" - | "public-instance-field" - | "abstract-field" - | "public-abstract-field" - | "protected-field" - | "protected-decorated-field" - | "protected-static-field" - | "protected-instance-field" - | "protected-abstract-field" - | "private-field" - | "private-decorated-field" - | "private-static-field" - | "private-instance-field" - | "#private-field" - | "#private-static-field" - | "#private-instance-field" - | "method" - | "public-method" - | "public-decorated-method" - | "decorated-method" - | "static-method" - | "public-static-method" - | "instance-method" - | "public-instance-method" - | "abstract-method" - | "public-abstract-method" - | "protected-method" - | "protected-decorated-method" - | "protected-static-method" - | "protected-instance-method" - | "protected-abstract-method" - | "private-method" - | "private-decorated-method" - | "private-static-method" - | "private-instance-method" - | "#private-method" - | "#private-static-method" - | "#private-instance-method" - | "call-signature" - | "constructor" - | "public-constructor" - | "protected-constructor" - | "private-constructor" - | "accessor" - | "public-accessor" - | "public-decorated-accessor" - | "decorated-accessor" - | "static-accessor" - | "public-static-accessor" - | "instance-accessor" - | "public-instance-accessor" - | "abstract-accessor" - | "public-abstract-accessor" - | "protected-accessor" - | "protected-decorated-accessor" - | "protected-static-accessor" - | "protected-instance-accessor" - | "protected-abstract-accessor" - | "private-accessor" - | "private-decorated-accessor" - | "private-static-accessor" - | "private-instance-accessor" - | "#private-accessor" - | "#private-static-accessor" - | "#private-instance-accessor" - | "get" - | "public-get" - | "public-decorated-get" - | "decorated-get" - | "static-get" - | "public-static-get" - | "instance-get" - | "public-instance-get" - | "abstract-get" - | "public-abstract-get" - | "protected-get" - | "protected-decorated-get" - | "protected-static-get" - | "protected-instance-get" - | "protected-abstract-get" - | "private-get" - | "private-decorated-get" - | "private-static-get" - | "private-instance-get" - | "#private-get" - | "#private-static-get" - | "#private-instance-get" - | "set" - | "public-set" - | "public-decorated-set" - | "decorated-set" - | "static-set" - | "public-static-set" - | "instance-set" - | "public-instance-set" - | "abstract-set" - | "public-abstract-set" - | "protected-set" - | "protected-decorated-set" - | "protected-static-set" - | "protected-instance-set" - | "protected-abstract-set" - | "private-set" - | "private-decorated-set" - | "private-static-set" - | "private-instance-set" - | "#private-set" - | "#private-static-set" - | "#private-instance-set" - | "static-initialization" - | "static-static-initialization" - | "public-static-static-initialization" - | "instance-static-initialization" - | "public-instance-static-initialization" - | "abstract-static-initialization" - | "public-abstract-static-initialization" - | "protected-static-static-initialization" - | "protected-instance-static-initialization" - | "protected-abstract-static-initialization" - | "private-static-static-initialization" - | "private-instance-static-initialization" - | "#private-static-static-initialization" - | "#private-instance-static-initialization" - )[] - )[] - | "never"; - optionalityOrder?: "optional-first" | "required-first"; - order?: "alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive"; - }; - interfaces?: - | "never" - | ( - | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor") - | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor")[] - )[] - | { - memberTypes?: - | ( - | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor") - | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor")[] - )[] - | "never"; - optionalityOrder?: "optional-first" | "required-first"; - order?: "alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive"; - }; - typeLiterals?: - | "never" - | ( - | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor") - | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor")[] - )[] - | { - memberTypes?: - | ( - | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor") - | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor")[] - )[] - | "never"; - optionalityOrder?: "optional-first" | "required-first"; - order?: "alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive"; - }; - }, - ]; -// ----- @typescript-eslint/method-signature-style ----- -type TypescriptEslintMethodSignatureStyle = [] | ["property" | "method"]; -// ----- @typescript-eslint/naming-convention ----- -type _TypescriptEslintNamingConventionFormatOptionsConfig = _TypescriptEslintNamingConventionPredefinedFormats[] | null; -type _TypescriptEslintNamingConventionPredefinedFormats = "camelCase" | "strictCamelCase" | "PascalCase" | "StrictPascalCase" | "snake_case" | "UPPER_CASE"; -type _TypescriptEslintNamingConventionUnderscoreOptions = "forbid" | "allow" | "require" | "requireDouble" | "allowDouble" | "allowSingleOrDouble"; -type _TypescriptEslintNamingConvention_PrefixSuffixConfig = string[]; -type _TypescriptEslintNamingConventionTypeModifiers = "boolean" | "string" | "number" | "function" | "array"; -type TypescriptEslintNamingConvention = ( - | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; - failureMessage?: string; - format: _TypescriptEslintNamingConventionFormatOptionsConfig; - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; - modifiers?: ( - | "const" - | "readonly" - | "static" - | "public" - | "protected" - | "private" - | "#private" - | "abstract" - | "destructured" - | "global" - | "exported" - | "unused" - | "requiresQuotes" - | "override" - | "async" - | "default" - | "namespace" - )[]; - selector: ( - | "default" - | "variableLike" - | "memberLike" - | "typeLike" - | "method" - | "property" - | "accessor" - | "variable" - | "function" - | "parameter" - | "parameterProperty" - | "classicAccessor" - | "enumMember" - | "classMethod" - | "objectLiteralMethod" - | "typeMethod" - | "classProperty" - | "objectLiteralProperty" - | "typeProperty" - | "autoAccessor" - | "class" - | "interface" - | "typeAlias" - | "enum" - | "typeParameter" - | "import" - )[]; - types?: _TypescriptEslintNamingConventionTypeModifiers[]; - } - | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; - failureMessage?: string; - format: _TypescriptEslintNamingConventionFormatOptionsConfig; - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; - selector: "default"; - modifiers?: ( - | "const" - | "readonly" - | "static" - | "public" - | "protected" - | "private" - | "#private" - | "abstract" - | "destructured" - | "global" - | "exported" - | "unused" - | "requiresQuotes" - | "override" - | "async" - | "default" - | "namespace" - )[]; - } - | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; - failureMessage?: string; - format: _TypescriptEslintNamingConventionFormatOptionsConfig; - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; - selector: "variableLike"; - modifiers?: ("unused" | "async")[]; - } - | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; - failureMessage?: string; - format: _TypescriptEslintNamingConventionFormatOptionsConfig; - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; - selector: "variable"; - modifiers?: ("const" | "destructured" | "exported" | "global" | "unused" | "async")[]; - types?: _TypescriptEslintNamingConventionTypeModifiers[]; - } - | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; - failureMessage?: string; - format: _TypescriptEslintNamingConventionFormatOptionsConfig; - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; - selector: "function"; - modifiers?: ("exported" | "global" | "unused" | "async")[]; - } - | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; - failureMessage?: string; - format: _TypescriptEslintNamingConventionFormatOptionsConfig; - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; - selector: "parameter"; - modifiers?: ("destructured" | "unused")[]; - types?: _TypescriptEslintNamingConventionTypeModifiers[]; - } - | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; - failureMessage?: string; - format: _TypescriptEslintNamingConventionFormatOptionsConfig; - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; - selector: "memberLike"; - modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "readonly" | "requiresQuotes" | "static" | "override" | "async")[]; - } - | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; - failureMessage?: string; - format: _TypescriptEslintNamingConventionFormatOptionsConfig; - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; - selector: "classProperty"; - modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "readonly" | "requiresQuotes" | "static" | "override")[]; - types?: _TypescriptEslintNamingConventionTypeModifiers[]; - } - | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; - failureMessage?: string; - format: _TypescriptEslintNamingConventionFormatOptionsConfig; - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; - selector: "objectLiteralProperty"; - modifiers?: ("public" | "requiresQuotes")[]; - types?: _TypescriptEslintNamingConventionTypeModifiers[]; - } - | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; - failureMessage?: string; - format: _TypescriptEslintNamingConventionFormatOptionsConfig; - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; - selector: "typeProperty"; - modifiers?: ("public" | "readonly" | "requiresQuotes")[]; - types?: _TypescriptEslintNamingConventionTypeModifiers[]; - } - | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; - failureMessage?: string; - format: _TypescriptEslintNamingConventionFormatOptionsConfig; - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; - selector: "parameterProperty"; - modifiers?: ("private" | "protected" | "public" | "readonly")[]; - types?: _TypescriptEslintNamingConventionTypeModifiers[]; - } - | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; - failureMessage?: string; - format: _TypescriptEslintNamingConventionFormatOptionsConfig; - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; - selector: "property"; - modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "readonly" | "requiresQuotes" | "static" | "override" | "async")[]; - types?: _TypescriptEslintNamingConventionTypeModifiers[]; - } - | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; - failureMessage?: string; - format: _TypescriptEslintNamingConventionFormatOptionsConfig; - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; - selector: "classMethod"; - modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "requiresQuotes" | "static" | "override" | "async")[]; - } - | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; - failureMessage?: string; - format: _TypescriptEslintNamingConventionFormatOptionsConfig; - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; - selector: "objectLiteralMethod"; - modifiers?: ("public" | "requiresQuotes" | "async")[]; - } - | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; - failureMessage?: string; - format: _TypescriptEslintNamingConventionFormatOptionsConfig; - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; - selector: "typeMethod"; - modifiers?: ("public" | "requiresQuotes")[]; - } - | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; - failureMessage?: string; - format: _TypescriptEslintNamingConventionFormatOptionsConfig; - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; - selector: "method"; - modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "requiresQuotes" | "static" | "override" | "async")[]; - } - | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; - failureMessage?: string; - format: _TypescriptEslintNamingConventionFormatOptionsConfig; - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; - selector: "classicAccessor"; - modifiers?: ("abstract" | "private" | "protected" | "public" | "requiresQuotes" | "static" | "override")[]; - types?: _TypescriptEslintNamingConventionTypeModifiers[]; - } - | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; - failureMessage?: string; - format: _TypescriptEslintNamingConventionFormatOptionsConfig; - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; - selector: "autoAccessor"; - modifiers?: ("abstract" | "private" | "protected" | "public" | "requiresQuotes" | "static" | "override")[]; - types?: _TypescriptEslintNamingConventionTypeModifiers[]; - } - | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; - failureMessage?: string; - format: _TypescriptEslintNamingConventionFormatOptionsConfig; - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; - selector: "accessor"; - modifiers?: ("abstract" | "private" | "protected" | "public" | "requiresQuotes" | "static" | "override")[]; - types?: _TypescriptEslintNamingConventionTypeModifiers[]; - } - | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; - failureMessage?: string; - format: _TypescriptEslintNamingConventionFormatOptionsConfig; - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; - selector: "enumMember"; - modifiers?: "requiresQuotes"[]; - } - | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; - failureMessage?: string; - format: _TypescriptEslintNamingConventionFormatOptionsConfig; - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; - selector: "typeLike"; - modifiers?: ("abstract" | "exported" | "unused")[]; - } - | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; - failureMessage?: string; - format: _TypescriptEslintNamingConventionFormatOptionsConfig; - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; - selector: "class"; - modifiers?: ("abstract" | "exported" | "unused")[]; - } - | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; - failureMessage?: string; - format: _TypescriptEslintNamingConventionFormatOptionsConfig; - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; - selector: "interface"; - modifiers?: ("exported" | "unused")[]; - } - | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; - failureMessage?: string; - format: _TypescriptEslintNamingConventionFormatOptionsConfig; - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; - selector: "typeAlias"; - modifiers?: ("exported" | "unused")[]; - } - | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; - failureMessage?: string; - format: _TypescriptEslintNamingConventionFormatOptionsConfig; - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; - selector: "enum"; - modifiers?: ("exported" | "unused")[]; - } - | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; - failureMessage?: string; - format: _TypescriptEslintNamingConventionFormatOptionsConfig; - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; - selector: "typeParameter"; - modifiers?: "unused"[]; - } - | { - custom?: _TypescriptEslintNamingConvention_MatchRegexConfig; - failureMessage?: string; - format: _TypescriptEslintNamingConventionFormatOptionsConfig; - leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig; - trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions; - filter?: string | _TypescriptEslintNamingConvention_MatchRegexConfig; - selector: "import"; - modifiers?: ("default" | "namespace")[]; - } -)[]; -interface _TypescriptEslintNamingConvention_MatchRegexConfig { - match: boolean; - regex: string; -} -// ----- @typescript-eslint/no-base-to-string ----- -type TypescriptEslintNoBaseToString = - | [] - | [ - { - ignoredTypeNames?: string[]; - }, - ]; -// ----- @typescript-eslint/no-confusing-void-expression ----- -type TypescriptEslintNoConfusingVoidExpression = - | [] - | [ - { - ignoreArrowShorthand?: boolean; - - ignoreVoidOperator?: boolean; - - ignoreVoidReturningFunctions?: boolean; - }, - ]; -// ----- @typescript-eslint/no-deprecated ----- -type TypescriptEslintNoDeprecated = - | [] - | [ - { - allow?: ( - | string - | { - from: "file"; - name: string | [string, ...string[]]; - path?: string; - } - | { - from: "lib"; - name: string | [string, ...string[]]; - } - | { - from: "package"; - name: string | [string, ...string[]]; - package: string; - } - )[]; - }, - ]; -// ----- @typescript-eslint/no-duplicate-type-constituents ----- -type TypescriptEslintNoDuplicateTypeConstituents = - | [] - | [ - { - ignoreIntersections?: boolean; - - ignoreUnions?: boolean; - }, - ]; -// ----- @typescript-eslint/no-empty-function ----- -type TypescriptEslintNoEmptyFunction = - | [] - | [ - { - allow?: ( - | "functions" - | "arrowFunctions" - | "generatorFunctions" - | "methods" - | "generatorMethods" - | "getters" - | "setters" - | "constructors" - | "private-constructors" - | "protected-constructors" - | "asyncFunctions" - | "asyncMethods" - | "decoratedFunctions" - | "overrideMethods" - )[]; - }, - ]; -// ----- @typescript-eslint/no-empty-interface ----- -type TypescriptEslintNoEmptyInterface = - | [] - | [ - { - allowSingleExtends?: boolean; - }, - ]; -// ----- @typescript-eslint/no-empty-object-type ----- -type TypescriptEslintNoEmptyObjectType = - | [] - | [ - { - allowInterfaces?: "always" | "never" | "with-single-extends"; - - allowObjectTypes?: "always" | "never"; - - allowWithName?: string; - }, - ]; -// ----- @typescript-eslint/no-explicit-any ----- -type TypescriptEslintNoExplicitAny = - | [] - | [ - { - fixToUnknown?: boolean; - - ignoreRestArgs?: boolean; - }, - ]; -// ----- @typescript-eslint/no-extraneous-class ----- -type TypescriptEslintNoExtraneousClass = - | [] - | [ - { - allowConstructorOnly?: boolean; - - allowEmpty?: boolean; - - allowStaticOnly?: boolean; - - allowWithDecorator?: boolean; - }, - ]; -// ----- @typescript-eslint/no-floating-promises ----- -type TypescriptEslintNoFloatingPromises = - | [] - | [ - { - allowForKnownSafeCalls?: ( - | string - | { - from: "file"; - name: string | [string, ...string[]]; - path?: string; - } - | { - from: "lib"; - name: string | [string, ...string[]]; - } - | { - from: "package"; - name: string | [string, ...string[]]; - package: string; - } - )[]; - - allowForKnownSafePromises?: ( - | string - | { - from: "file"; - name: string | [string, ...string[]]; - path?: string; - } - | { - from: "lib"; - name: string | [string, ...string[]]; - } - | { - from: "package"; - name: string | [string, ...string[]]; - package: string; - } - )[]; - - checkThenables?: boolean; - - ignoreIIFE?: boolean; - - ignoreVoid?: boolean; - }, - ]; -// ----- @typescript-eslint/no-inferrable-types ----- -type TypescriptEslintNoInferrableTypes = - | [] - | [ - { - ignoreParameters?: boolean; - - ignoreProperties?: boolean; - }, - ]; -// ----- @typescript-eslint/no-invalid-this ----- -type TypescriptEslintNoInvalidThis = - | [] - | [ - { - capIsConstructor?: boolean; - }, - ]; -// ----- @typescript-eslint/no-invalid-void-type ----- -type TypescriptEslintNoInvalidVoidType = - | [] - | [ - { - allowAsThisParameter?: boolean; - - allowInGenericTypeArguments?: boolean | [string, ...string[]]; - }, - ]; -// ----- @typescript-eslint/no-magic-numbers ----- -type TypescriptEslintNoMagicNumbers = - | [] - | [ - { - detectObjects?: boolean; - enforceConst?: boolean; - ignore?: (number | string)[]; - ignoreArrayIndexes?: boolean; - ignoreDefaultValues?: boolean; - ignoreClassFieldInitialValues?: boolean; - - ignoreEnums?: boolean; - - ignoreNumericLiteralTypes?: boolean; - - ignoreReadonlyClassProperties?: boolean; - - ignoreTypeIndexes?: boolean; - }, - ]; -// ----- @typescript-eslint/no-meaningless-void-operator ----- -type TypescriptEslintNoMeaninglessVoidOperator = - | [] - | [ - { - checkNever?: boolean; - }, - ]; -// ----- @typescript-eslint/no-misused-promises ----- -type TypescriptEslintNoMisusedPromises = - | [] - | [ - { - checksConditionals?: boolean; - - checksSpreads?: boolean; - - checksVoidReturn?: - | boolean - | { - arguments?: boolean; - - attributes?: boolean; - - inheritedMethods?: boolean; - - properties?: boolean; - - returns?: boolean; - - variables?: boolean; - }; - }, - ]; -// ----- @typescript-eslint/no-misused-spread ----- -type TypescriptEslintNoMisusedSpread = - | [] - | [ - { - allow?: ( - | string - | { - from: "file"; - name: string | [string, ...string[]]; - path?: string; - } - | { - from: "lib"; - name: string | [string, ...string[]]; - } - | { - from: "package"; - name: string | [string, ...string[]]; - package: string; - } - )[]; - }, - ]; -// ----- @typescript-eslint/no-namespace ----- -type TypescriptEslintNoNamespace = - | [] - | [ - { - allowDeclarations?: boolean; - - allowDefinitionFiles?: boolean; - }, - ]; -// ----- @typescript-eslint/no-redeclare ----- -type TypescriptEslintNoRedeclare = - | [] - | [ - { - builtinGlobals?: boolean; - - ignoreDeclarationMerge?: boolean; - }, - ]; -// ----- @typescript-eslint/no-require-imports ----- -type TypescriptEslintNoRequireImports = - | [] - | [ - { - allow?: string[]; - - allowAsImport?: boolean; - }, - ]; -// ----- @typescript-eslint/no-restricted-imports ----- -type TypescriptEslintNoRestrictedImports = - | ( - | string - | { - name: string; - message?: string; - importNames?: string[]; - allowImportNames?: string[]; - - allowTypeImports?: boolean; - } - )[] - | [] - | [ - { - paths?: ( - | string - | { - name: string; - message?: string; - importNames?: string[]; - allowImportNames?: string[]; - - allowTypeImports?: boolean; - } - )[]; - patterns?: - | string[] - | { - importNames?: [string, ...string[]]; - - allowImportNames?: [string, ...string[]]; - - group?: [string, ...string[]]; - regex?: string; - importNamePattern?: string; - allowImportNamePattern?: string; - message?: string; - caseSensitive?: boolean; - - allowTypeImports?: boolean; - }[]; - }, - ]; -// ----- @typescript-eslint/no-restricted-types ----- -type TypescriptEslintNoRestrictedTypes = - | [] - | [ - { - types?: { - [k: string]: - | ( - | true - | string - | { - fixWith?: string; - - message?: string; - - suggest?: string[]; - } - ) - | undefined; - }; - }, - ]; -// ----- @typescript-eslint/no-shadow ----- -type TypescriptEslintNoShadow = - | [] - | [ - { - allow?: string[]; - - builtinGlobals?: boolean; - - hoist?: "all" | "functions" | "functions-and-types" | "never" | "types"; - - ignoreFunctionTypeParameterNameValueShadow?: boolean; - - ignoreOnInitialization?: boolean; - - ignoreTypeValueShadow?: boolean; - }, - ]; -// ----- @typescript-eslint/no-this-alias ----- -type TypescriptEslintNoThisAlias = - | [] - | [ - { - allowDestructuring?: boolean; - - allowedNames?: string[]; - }, - ]; -// ----- @typescript-eslint/no-type-alias ----- -type TypescriptEslintNoTypeAlias = - | [] - | [ - { - allowAliases?: "always" | "never" | "in-unions" | "in-intersections" | "in-unions-and-intersections"; - - allowCallbacks?: "always" | "never"; - - allowConditionalTypes?: "always" | "never"; - - allowConstructors?: "always" | "never"; - - allowGenerics?: "always" | "never"; - - allowLiterals?: "always" | "never" | "in-unions" | "in-intersections" | "in-unions-and-intersections"; - - allowMappedTypes?: "always" | "never" | "in-unions" | "in-intersections" | "in-unions-and-intersections"; - - allowTupleTypes?: "always" | "never" | "in-unions" | "in-intersections" | "in-unions-and-intersections"; - }, - ]; -// ----- @typescript-eslint/no-unnecessary-boolean-literal-compare ----- -type TypescriptEslintNoUnnecessaryBooleanLiteralCompare = - | [] - | [ - { - allowComparingNullableBooleansToFalse?: boolean; - - allowComparingNullableBooleansToTrue?: boolean; - - allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean; - }, - ]; -// ----- @typescript-eslint/no-unnecessary-condition ----- -type TypescriptEslintNoUnnecessaryCondition = - | [] - | [ - { - allowConstantLoopConditions?: boolean | ("always" | "never" | "only-allowed-literals"); - - allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean; - - checkTypePredicates?: boolean; - }, - ]; -// ----- @typescript-eslint/no-unnecessary-type-assertion ----- -type TypescriptEslintNoUnnecessaryTypeAssertion = - | [] - | [ - { - checkLiteralConstAssertions?: boolean; - - typesToIgnore?: string[]; - }, - ]; -// ----- @typescript-eslint/no-unused-expressions ----- -type TypescriptEslintNoUnusedExpressions = - | [] - | [ - { - allowShortCircuit?: boolean; - allowTernary?: boolean; - allowTaggedTemplates?: boolean; - enforceForJSX?: boolean; - ignoreDirectives?: boolean; - }, - ]; -// ----- @typescript-eslint/no-unused-vars ----- -type TypescriptEslintNoUnusedVars = - | [] - | [ - | ("all" | "local") - | { - args?: "all" | "after-used" | "none"; - - argsIgnorePattern?: string; - - caughtErrors?: "all" | "none"; - - caughtErrorsIgnorePattern?: string; - - destructuredArrayIgnorePattern?: string; - - ignoreClassWithStaticInitBlock?: boolean; - - ignoreRestSiblings?: boolean; - - reportUsedIgnorePattern?: boolean; - - vars?: "all" | "local"; - - varsIgnorePattern?: string; - }, - ]; -// ----- @typescript-eslint/no-use-before-define ----- -type TypescriptEslintNoUseBeforeDefine = - | [] - | [ - | "nofunc" - | { - allowNamedExports?: boolean; - - classes?: boolean; - - enums?: boolean; - - functions?: boolean; - - ignoreTypeReferences?: boolean; - - typedefs?: boolean; - - variables?: boolean; - }, - ]; -// ----- @typescript-eslint/no-var-requires ----- -type TypescriptEslintNoVarRequires = - | [] - | [ - { - allow?: string[]; - }, - ]; -// ----- @typescript-eslint/only-throw-error ----- -type TypescriptEslintOnlyThrowError = - | [] - | [ - { - allow?: ( - | string - | { - from: "file"; - name: string | [string, ...string[]]; - path?: string; - } - | { - from: "lib"; - name: string | [string, ...string[]]; - } - | { - from: "package"; - name: string | [string, ...string[]]; - package: string; - } - )[]; - - allowRethrowing?: boolean; - - allowThrowingAny?: boolean; - - allowThrowingUnknown?: boolean; - }, - ]; -// ----- @typescript-eslint/parameter-properties ----- -type TypescriptEslintParameterProperties = - | [] - | [ - { - allow?: ("readonly" | "private" | "protected" | "public" | "private readonly" | "protected readonly" | "public readonly")[]; - - prefer?: "class-property" | "parameter-property"; - }, - ]; -// ----- @typescript-eslint/prefer-destructuring ----- -type TypescriptEslintPreferDestructuring = - | [] - | [ - | { - AssignmentExpression?: { - array?: boolean; - object?: boolean; - }; - VariableDeclarator?: { - array?: boolean; - object?: boolean; - }; - } - | { - array?: boolean; - object?: boolean; - }, - ] - | [ - ( - | { - AssignmentExpression?: { - array?: boolean; - object?: boolean; - }; - VariableDeclarator?: { - array?: boolean; - object?: boolean; - }; - } - | { - array?: boolean; - object?: boolean; - } - ), - { - enforceForDeclarationWithTypeAnnotation?: boolean; - - enforceForRenamedProperties?: boolean; - [k: string]: unknown | undefined; - }, - ]; -// ----- @typescript-eslint/prefer-literal-enum-member ----- -type TypescriptEslintPreferLiteralEnumMember = - | [] - | [ - { - allowBitwiseExpressions?: boolean; - }, - ]; -// ----- @typescript-eslint/prefer-nullish-coalescing ----- -type TypescriptEslintPreferNullishCoalescing = - | [] - | [ - { - allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean; - - ignoreBooleanCoercion?: boolean; - - ignoreConditionalTests?: boolean; - - ignoreIfStatements?: boolean; - - ignoreMixedLogicalExpressions?: boolean; - - ignorePrimitives?: - | { - bigint?: boolean; - - boolean?: boolean; - - number?: boolean; - - string?: boolean; - [k: string]: unknown | undefined; - } - | true; - - ignoreTernaryTests?: boolean; - }, - ]; -// ----- @typescript-eslint/prefer-optional-chain ----- -type TypescriptEslintPreferOptionalChain = - | [] - | [ - { - allowPotentiallyUnsafeFixesThatModifyTheReturnTypeIKnowWhatImDoing?: boolean; - - checkAny?: boolean; - - checkBigInt?: boolean; - - checkBoolean?: boolean; - - checkNumber?: boolean; - - checkString?: boolean; - - checkUnknown?: boolean; - - requireNullish?: boolean; - }, - ]; -// ----- @typescript-eslint/prefer-promise-reject-errors ----- -type TypescriptEslintPreferPromiseRejectErrors = - | [] - | [ - { - allowEmptyReject?: boolean; - - allowThrowingAny?: boolean; - - allowThrowingUnknown?: boolean; - }, - ]; -// ----- @typescript-eslint/prefer-readonly ----- -type TypescriptEslintPreferReadonly = - | [] - | [ - { - onlyInlineLambdas?: boolean; - }, - ]; -// ----- @typescript-eslint/prefer-readonly-parameter-types ----- -type TypescriptEslintPreferReadonlyParameterTypes = - | [] - | [ - { - allow?: ( - | string - | { - from: "file"; - name: string | [string, ...string[]]; - path?: string; - } - | { - from: "lib"; - name: string | [string, ...string[]]; - } - | { - from: "package"; - name: string | [string, ...string[]]; - package: string; - } - )[]; - - checkParameterProperties?: boolean; - - ignoreInferredTypes?: boolean; - - treatMethodsAsReadonly?: boolean; - }, - ]; -// ----- @typescript-eslint/prefer-string-starts-ends-with ----- -type TypescriptEslintPreferStringStartsEndsWith = - | [] - | [ - { - allowSingleElementEquality?: "always" | "never"; - }, - ]; -// ----- @typescript-eslint/promise-function-async ----- -type TypescriptEslintPromiseFunctionAsync = - | [] - | [ - { - allowAny?: boolean; - - allowedPromiseNames?: string[]; - - checkArrowFunctions?: boolean; - - checkFunctionDeclarations?: boolean; - - checkFunctionExpressions?: boolean; - - checkMethodDeclarations?: boolean; - }, - ]; -// ----- @typescript-eslint/require-array-sort-compare ----- -type TypescriptEslintRequireArraySortCompare = - | [] - | [ - { - ignoreStringArrays?: boolean; - }, - ]; -// ----- @typescript-eslint/restrict-plus-operands ----- -type TypescriptEslintRestrictPlusOperands = - | [] - | [ - { - allowAny?: boolean; - - allowBoolean?: boolean; - - allowNullish?: boolean; - - allowNumberAndString?: boolean; - - allowRegExp?: boolean; - - skipCompoundAssignments?: boolean; - }, - ]; -// ----- @typescript-eslint/restrict-template-expressions ----- -type TypescriptEslintRestrictTemplateExpressions = - | [] - | [ - { - allowAny?: boolean; - - allowArray?: boolean; - - allowBoolean?: boolean; - - allowNullish?: boolean; - - allowNumber?: boolean; - - allowRegExp?: boolean; - - allowNever?: boolean; - - allow?: ( - | string - | { - from: "file"; - name: string | [string, ...string[]]; - path?: string; - } - | { - from: "lib"; - name: string | [string, ...string[]]; - } - | { - from: "package"; - name: string | [string, ...string[]]; - package: string; - } - )[]; - }, - ]; -// ----- @typescript-eslint/return-await ----- -type TypescriptEslintReturnAwait = [] | [("always" | "error-handling-correctness-only" | "in-try-catch" | "never") & string]; -// ----- @typescript-eslint/sort-type-constituents ----- -type TypescriptEslintSortTypeConstituents = - | [] - | [ - { - caseSensitive?: boolean; - - checkIntersections?: boolean; - - checkUnions?: boolean; - - groupOrder?: ( - | "conditional" - | "function" - | "import" - | "intersection" - | "keyword" - | "nullish" - | "literal" - | "named" - | "object" - | "operator" - | "tuple" - | "union" - )[]; - }, - ]; -// ----- @typescript-eslint/strict-boolean-expressions ----- -type TypescriptEslintStrictBooleanExpressions = - | [] - | [ - { - allowAny?: boolean; - - allowNullableBoolean?: boolean; - - allowNullableEnum?: boolean; - - allowNullableNumber?: boolean; - - allowNullableObject?: boolean; - - allowNullableString?: boolean; - - allowNumber?: boolean; - - allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean; - - allowString?: boolean; - }, - ]; -// ----- @typescript-eslint/switch-exhaustiveness-check ----- -type TypescriptEslintSwitchExhaustivenessCheck = - | [] - | [ - { - allowDefaultCaseForExhaustiveSwitch?: boolean; - - considerDefaultExhaustiveForUnions?: boolean; - - defaultCaseCommentPattern?: string; - - requireDefaultForNonUnion?: boolean; - }, - ]; -// ----- @typescript-eslint/triple-slash-reference ----- -type TypescriptEslintTripleSlashReference = - | [] - | [ - { - lib?: "always" | "never"; - - path?: "always" | "never"; - - types?: "always" | "never" | "prefer-import"; - }, - ]; -// ----- @typescript-eslint/typedef ----- -type TypescriptEslintTypedef = - | [] - | [ - { - arrayDestructuring?: boolean; - - arrowParameter?: boolean; - - memberVariableDeclaration?: boolean; - - objectDestructuring?: boolean; - - parameter?: boolean; - - propertyDeclaration?: boolean; - - variableDeclaration?: boolean; - - variableDeclarationIgnoreFunction?: boolean; - }, - ]; -// ----- @typescript-eslint/unbound-method ----- -type TypescriptEslintUnboundMethod = - | [] - | [ - { - ignoreStatic?: boolean; - }, - ]; -// ----- @typescript-eslint/unified-signatures ----- -type TypescriptEslintUnifiedSignatures = - | [] - | [ - { - ignoreDifferentlyNamedParameters?: boolean; - - ignoreOverloadsWithDifferentJSDoc?: boolean; - }, - ]; -// ----- antfu/consistent-chaining ----- -type AntfuConsistentChaining = - | [] - | [ - { - allowLeadingPropertyAccess?: boolean; - }, - ]; -// ----- antfu/consistent-list-newline ----- -type AntfuConsistentListNewline = - | [] - | [ - { - ArrayExpression?: boolean; - ArrayPattern?: boolean; - ArrowFunctionExpression?: boolean; - CallExpression?: boolean; - ExportNamedDeclaration?: boolean; - FunctionDeclaration?: boolean; - FunctionExpression?: boolean; - ImportDeclaration?: boolean; - JSONArrayExpression?: boolean; - JSONObjectExpression?: boolean; - JSXOpeningElement?: boolean; - NewExpression?: boolean; - ObjectExpression?: boolean; - ObjectPattern?: boolean; - TSFunctionType?: boolean; - TSInterfaceDeclaration?: boolean; - TSTupleType?: boolean; - TSTypeLiteral?: boolean; - TSTypeParameterDeclaration?: boolean; - TSTypeParameterInstantiation?: boolean; - }, - ]; -// ----- antfu/indent-unindent ----- -type AntfuIndentUnindent = - | [] - | [ - { - indent?: number; - tags?: string[]; - }, - ]; -// ----- astro/jsx-a11y/alt-text ----- -type AstroJsxA11YAltText = - | [] - | [ - { - elements?: string[]; - img?: string[]; - object?: string[]; - area?: string[]; - 'input[type="image"]'?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/anchor-ambiguous-text ----- -type AstroJsxA11YAnchorAmbiguousText = - | [] - | [ - { - words?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/anchor-has-content ----- -type AstroJsxA11YAnchorHasContent = - | [] - | [ - { - components?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/anchor-is-valid ----- -type AstroJsxA11YAnchorIsValid = - | [] - | [ - { - components?: string[]; - specialLink?: string[]; - - aspects?: ["noHref" | "invalidHref" | "preferButton", ...("noHref" | "invalidHref" | "preferButton")[]]; - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/aria-activedescendant-has-tabindex ----- -type AstroJsxA11YAriaActivedescendantHasTabindex = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/aria-props ----- -type AstroJsxA11YAriaProps = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/aria-proptypes ----- -type AstroJsxA11YAriaProptypes = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/aria-role ----- -type AstroJsxA11YAriaRole = - | [] - | [ - { - allowedInvalidRoles?: string[]; - ignoreNonDOM?: boolean; - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/aria-unsupported-elements ----- -type AstroJsxA11YAriaUnsupportedElements = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/autocomplete-valid ----- -type AstroJsxA11YAutocompleteValid = - | [] - | [ - { - inputComponents?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/click-events-have-key-events ----- -type AstroJsxA11YClickEventsHaveKeyEvents = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/control-has-associated-label ----- -type AstroJsxA11YControlHasAssociatedLabel = - | [] - | [ - { - labelAttributes?: string[]; - controlComponents?: string[]; - ignoreElements?: string[]; - ignoreRoles?: string[]; - - depth?: number; - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/heading-has-content ----- -type AstroJsxA11YHeadingHasContent = - | [] - | [ - { - components?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/html-has-lang ----- -type AstroJsxA11YHtmlHasLang = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/iframe-has-title ----- -type AstroJsxA11YIframeHasTitle = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/img-redundant-alt ----- -type AstroJsxA11YImgRedundantAlt = - | [] - | [ - { - components?: string[]; - words?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/interactive-supports-focus ----- -type AstroJsxA11YInteractiveSupportsFocus = - | [] - | [ - { - tabbable?: ( - | "button" - | "checkbox" - | "columnheader" - | "combobox" - | "grid" - | "gridcell" - | "link" - | "listbox" - | "menu" - | "menubar" - | "menuitem" - | "menuitemcheckbox" - | "menuitemradio" - | "option" - | "progressbar" - | "radio" - | "radiogroup" - | "row" - | "rowheader" - | "scrollbar" - | "searchbox" - | "slider" - | "spinbutton" - | "switch" - | "tab" - | "tablist" - | "textbox" - | "tree" - | "treegrid" - | "treeitem" - | "doc-backlink" - | "doc-biblioref" - | "doc-glossref" - | "doc-noteref" - )[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/label-has-associated-control ----- -type AstroJsxA11YLabelHasAssociatedControl = - | [] - | [ - { - labelComponents?: string[]; - labelAttributes?: string[]; - controlComponents?: string[]; - - assert?: "htmlFor" | "nesting" | "both" | "either"; - - depth?: number; - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/lang ----- -type AstroJsxA11YLang = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/media-has-caption ----- -type AstroJsxA11YMediaHasCaption = - | [] - | [ - { - audio?: string[]; - video?: string[]; - track?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/mouse-events-have-key-events ----- -type AstroJsxA11YMouseEventsHaveKeyEvents = - | [] - | [ - { - hoverInHandlers?: string[]; - - hoverOutHandlers?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/no-access-key ----- -type AstroJsxA11YNoAccessKey = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/no-aria-hidden-on-focusable ----- -type AstroJsxA11YNoAriaHiddenOnFocusable = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/no-autofocus ----- -type AstroJsxA11YNoAutofocus = - | [] - | [ - { - ignoreNonDOM?: boolean; - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/no-distracting-elements ----- -type AstroJsxA11YNoDistractingElements = - | [] - | [ - { - elements?: ("marquee" | "blink")[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/no-interactive-element-to-noninteractive-role ----- -type AstroJsxA11YNoInteractiveElementToNoninteractiveRole = - | [] - | [ - { - [k: string]: string[] | undefined; - }, - ]; -// ----- astro/jsx-a11y/no-noninteractive-element-interactions ----- -type AstroJsxA11YNoNoninteractiveElementInteractions = - | [] - | [ - { - handlers?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/no-noninteractive-element-to-interactive-role ----- -type AstroJsxA11YNoNoninteractiveElementToInteractiveRole = - | [] - | [ - { - [k: string]: string[] | undefined; - }, - ]; -// ----- astro/jsx-a11y/no-noninteractive-tabindex ----- -type AstroJsxA11YNoNoninteractiveTabindex = - | [] - | [ - { - roles?: string[]; - - tags?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/no-redundant-roles ----- -type AstroJsxA11YNoRedundantRoles = - | [] - | [ - { - [k: string]: string[] | undefined; - }, - ]; -// ----- astro/jsx-a11y/no-static-element-interactions ----- -type AstroJsxA11YNoStaticElementInteractions = - | [] - | [ - { - handlers?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/prefer-tag-over-role ----- -type AstroJsxA11YPreferTagOverRole = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/role-has-required-aria-props ----- -type AstroJsxA11YRoleHasRequiredAriaProps = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/role-supports-aria-props ----- -type AstroJsxA11YRoleSupportsAriaProps = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/scope ----- -type AstroJsxA11YScope = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/jsx-a11y/tabindex-no-positive ----- -type AstroJsxA11YTabindexNoPositive = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- astro/prefer-split-class-list ----- -type AstroPreferSplitClassList = - | [] - | [ - { - splitLiteral?: boolean; - }, - ]; -// ----- astro/semi ----- -type AstroSemi = - | [] - | ["never"] - | [ - "never", - { - beforeStatementContinuationChars?: "always" | "any" | "never"; - }, - ] - | [] - | ["always"] - | [ - "always", - { - omitLastInOneLineBlock?: boolean; - omitLastInOneLineClassBody?: boolean; - }, - ]; -// ----- astro/sort-attributes ----- -type AstroSortAttributes = - | [] - | [ - { - type?: "alphabetical" | "line-length"; - ignoreCase?: boolean; - order?: "asc" | "desc"; - }, - ]; -// ----- compat/compat ----- -type CompatCompat = [] | [string]; -// ----- eslint-comments/disable-enable-pair ----- -type EslintCommentsDisableEnablePair = - | [] - | [ - { - allowWholeFile?: boolean; - }, - ]; -// ----- eslint-comments/no-restricted-disable ----- -type EslintCommentsNoRestrictedDisable = string[]; -// ----- eslint-comments/no-use ----- -type EslintCommentsNoUse = - | [] - | [ - { - allow?: ( - | "eslint" - | "eslint-disable" - | "eslint-disable-line" - | "eslint-disable-next-line" - | "eslint-enable" - | "eslint-env" - | "exported" - | "global" - | "globals" - )[]; - }, - ]; -// ----- eslint-comments/require-description ----- -type EslintCommentsRequireDescription = - | [] - | [ - { - ignore?: ( - | "eslint" - | "eslint-disable" - | "eslint-disable-line" - | "eslint-disable-next-line" - | "eslint-enable" - | "eslint-env" - | "exported" - | "global" - | "globals" - )[]; - }, - ]; -// ----- format/dprint ----- -type FormatDprint = - | [] - | [ - { - language?: string; - languageOptions?: { - [k: string]: unknown | undefined; - }; - [k: string]: unknown | undefined; - }, - ]; -// ----- format/prettier ----- -type FormatPrettier = - | [] - | [ - { - parser?: string; - [k: string]: unknown | undefined; - }, - ]; -// ----- import/consistent-type-specifier-style ----- -type ImportConsistentTypeSpecifierStyle = [] | ["prefer-top-level" | "prefer-inline"]; -// ----- import/dynamic-import-chunkname ----- -type ImportDynamicImportChunkname = - | [] - | [ - { - importFunctions?: string[]; - allowEmpty?: boolean; - webpackChunknameFormat?: string; - [k: string]: unknown | undefined; - }, - ]; -// ----- import/extensions ----- -type ImportExtensions = - | [] - | ["always" | "ignorePackages" | "never"] - | [] - | ["always" | "ignorePackages" | "never"] - | [ - "always" | "ignorePackages" | "never", - { - pattern?: { - [k: string]: "always" | "ignorePackages" | "never"; - }; - ignorePackages?: boolean; - checkTypeImports?: boolean; - pathGroupOverrides?: { - pattern: string; - patternOptions?: { - [k: string]: unknown | undefined; - }; - action: "enforce" | "ignore"; - }[]; - fix?: boolean; - [k: string]: unknown | undefined; - }, - ] - | [] - | [ - { - pattern?: { - [k: string]: "always" | "ignorePackages" | "never"; - }; - ignorePackages?: boolean; - checkTypeImports?: boolean; - pathGroupOverrides?: { - pattern: string; - patternOptions?: { - [k: string]: unknown | undefined; - }; - action: "enforce" | "ignore"; - }[]; - fix?: boolean; - [k: string]: unknown | undefined; - }, - ] - | [] - | ["always" | "ignorePackages" | "never"] - | [ - "always" | "ignorePackages" | "never", - { - [k: string]: "always" | "ignorePackages" | "never"; - }, - ] - | [] - | [ - { - [k: string]: "always" | "ignorePackages" | "never"; - }, - ]; -// ----- import/first ----- -type ImportFirst = [] | ["absolute-first" | "disable-absolute-first"]; -// ----- import/imports-first ----- -type ImportImportsFirst = [] | ["absolute-first" | "disable-absolute-first"]; -// ----- import/max-dependencies ----- -type ImportMaxDependencies = - | [] - | [ - { - max?: number; - ignoreTypeImports?: boolean; - }, - ]; -// ----- import/named ----- -type ImportNamed = - | [] - | [ - { - commonjs?: boolean; - }, - ]; -// ----- import/namespace ----- -type ImportNamespace = - | [] - | [ - { - allowComputed?: boolean; - }, - ]; -// ----- import/newline-after-import ----- -type ImportNewlineAfterImport = - | [] - | [ - { - count?: number; - exactCount?: boolean; - considerComments?: boolean; - }, - ]; -// ----- import/no-absolute-path ----- -type ImportNoAbsolutePath = - | [] - | [ - { - commonjs?: boolean; - amd?: boolean; - esmodule?: boolean; - - ignore?: [string, ...string[]]; - }, - ]; -// ----- import/no-anonymous-default-export ----- -type ImportNoAnonymousDefaultExport = - | [] - | [ - { - allowArray?: boolean; - - allowArrowFunction?: boolean; - - allowCallExpression?: boolean; - - allowAnonymousClass?: boolean; - - allowAnonymousFunction?: boolean; - - allowLiteral?: boolean; - - allowObject?: boolean; - - allowNew?: boolean; - }, - ]; -// ----- import/no-commonjs ----- -type ImportNoCommonjs = - | [] - | ["allow-primitive-modules"] - | [] - | [ - { - allowPrimitiveModules?: boolean; - allowRequire?: boolean; - allowConditionalRequire?: boolean; - }, - ]; -// ----- import/no-cycle ----- -type ImportNoCycle = - | [] - | [ - { - commonjs?: boolean; - amd?: boolean; - esmodule?: boolean; - - ignore?: [string, ...string[]]; - maxDepth?: number | "∞"; - - ignoreExternal?: boolean; - - allowUnsafeDynamicCyclicDependency?: boolean; - }, - ]; -// ----- import/no-duplicates ----- -type ImportNoDuplicates = - | [] - | [ - { - considerQueryString?: boolean; - "prefer-inline"?: boolean; - }, - ]; -// ----- import/no-dynamic-require ----- -type ImportNoDynamicRequire = - | [] - | [ - { - esmodule?: boolean; - }, - ]; -// ----- import/no-extraneous-dependencies ----- -type ImportNoExtraneousDependencies = - | [] - | [ - { - devDependencies?: boolean | unknown[]; - optionalDependencies?: boolean | unknown[]; - peerDependencies?: boolean | unknown[]; - bundledDependencies?: boolean | unknown[]; - packageDir?: string | unknown[]; - includeInternal?: boolean; - includeTypes?: boolean; - whitelist?: unknown[]; - }, - ]; -// ----- import/no-import-module-exports ----- -type ImportNoImportModuleExports = - | [] - | [ - { - exceptions?: unknown[]; - }, - ]; -// ----- import/no-internal-modules ----- -type ImportNoInternalModules = - | [] - | [ - | { - allow?: string[]; - } - | { - forbid?: string[]; - }, - ]; -// ----- import/no-namespace ----- -type ImportNoNamespace = - | [] - | [ - { - ignore?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- import/no-nodejs-modules ----- -type ImportNoNodejsModules = - | [] - | [ - { - allow?: string[]; - }, - ]; -// ----- import/no-relative-packages ----- -type ImportNoRelativePackages = - | [] - | [ - { - commonjs?: boolean; - amd?: boolean; - esmodule?: boolean; - - ignore?: [string, ...string[]]; - }, - ]; -// ----- import/no-relative-parent-imports ----- -type ImportNoRelativeParentImports = - | [] - | [ - { - commonjs?: boolean; - amd?: boolean; - esmodule?: boolean; - - ignore?: [string, ...string[]]; - }, - ]; -// ----- import/no-rename-default ----- -type ImportNoRenameDefault = - | [] - | [ - { - commonjs?: boolean; - preventRenamingBindings?: boolean; - }, - ]; -// ----- import/no-restricted-paths ----- -type ImportNoRestrictedPaths = - | [] - | [ - { - zones?: [ - { - target?: string | [string, ...string[]]; - from?: string | [string, ...string[]]; - except?: string[]; - message?: string; - }, - ...{ - target?: string | [string, ...string[]]; - from?: string | [string, ...string[]]; - except?: string[]; - message?: string; - }[], - ]; - basePath?: string; - }, - ]; -// ----- import/no-unassigned-import ----- -type ImportNoUnassignedImport = - | [] - | [ - { - devDependencies?: boolean | unknown[]; - optionalDependencies?: boolean | unknown[]; - peerDependencies?: boolean | unknown[]; - allow?: string[]; - }, - ]; -// ----- import/no-unresolved ----- -type ImportNoUnresolved = - | [] - | [ - { - commonjs?: boolean; - amd?: boolean; - esmodule?: boolean; - - ignore?: [string, ...string[]]; - caseSensitive?: boolean; - caseSensitiveStrict?: boolean; - }, - ]; -// ----- import/no-unused-modules ----- -type ImportNoUnusedModules = - | [] - | [ - | { - unusedExports: true; - - src?: [unknown, ...unknown[]]; - [k: string]: unknown | undefined; - } - | { - missingExports: true; - [k: string]: unknown | undefined; - }, - ]; -// ----- import/no-useless-path-segments ----- -type ImportNoUselessPathSegments = - | [] - | [ - { - commonjs?: boolean; - noUselessIndex?: boolean; - }, - ]; -// ----- import/order ----- -type ImportOrder = - | [] - | [ - { - groups?: unknown[]; - pathGroupsExcludedImportTypes?: unknown[]; - distinctGroup?: boolean; - pathGroups?: { - pattern: string; - patternOptions?: { - [k: string]: unknown | undefined; - }; - group: "builtin" | "external" | "internal" | "unknown" | "parent" | "sibling" | "index" | "object" | "type"; - position?: "after" | "before"; - }[]; - "newlines-between"?: "ignore" | "always" | "always-and-inside-groups" | "never"; - "newlines-between-types"?: "ignore" | "always" | "always-and-inside-groups" | "never"; - consolidateIslands?: "inside-groups" | "never"; - sortTypesGroup?: boolean; - named?: - | boolean - | { - enabled?: boolean; - import?: boolean; - export?: boolean; - require?: boolean; - cjsExports?: boolean; - types?: "mixed" | "types-first" | "types-last"; - }; - alphabetize?: { - caseInsensitive?: boolean; - order?: "ignore" | "asc" | "desc"; - orderImportKind?: "ignore" | "asc" | "desc"; - }; - warnOnUnassignedImports?: boolean; - }, - ]; -// ----- import/prefer-default-export ----- -type ImportPreferDefaultExport = - | [] - | [ - { - target?: "single" | "any"; - }, - ]; -// ----- jsdoc/check-examples ----- -type JsdocCheckExamples = - | [] - | [ - { - allowInlineConfig?: boolean; - baseConfig?: { - [k: string]: unknown | undefined; - }; - captionRequired?: boolean; - checkDefaults?: boolean; - checkEslintrc?: boolean; - checkParams?: boolean; - checkProperties?: boolean; - configFile?: string; - exampleCodeRegex?: string; - matchingFileName?: string; - matchingFileNameDefaults?: string; - matchingFileNameParams?: string; - matchingFileNameProperties?: string; - noDefaultExampleRules?: boolean; - paddedIndent?: number; - rejectExampleCodeRegex?: string; - reportUnusedDisableDirectives?: boolean; - }, - ]; -// ----- jsdoc/check-indentation ----- -type JsdocCheckIndentation = - | [] - | [ - { - excludeTags?: string[]; - }, - ]; -// ----- jsdoc/check-line-alignment ----- -type JsdocCheckLineAlignment = - | [] - | ["always" | "never" | "any"] - | [ - "always" | "never" | "any", - { - customSpacings?: { - postDelimiter?: number; - postHyphen?: number; - postName?: number; - postTag?: number; - postType?: number; - }; - preserveMainDescriptionPostDelimiter?: boolean; - tags?: string[]; - wrapIndent?: string; - disableWrapIndent?: boolean; - }, - ]; -// ----- jsdoc/check-param-names ----- -type JsdocCheckParamNames = - | [] - | [ - { - allowExtraTrailingParamDocs?: boolean; - checkDestructured?: boolean; - checkRestProperty?: boolean; - checkTypesPattern?: string; - disableExtraPropertyReporting?: boolean; - disableMissingParamChecks?: boolean; - enableFixer?: boolean; - useDefaultObjectProperties?: boolean; - }, - ]; -// ----- jsdoc/check-property-names ----- -type JsdocCheckPropertyNames = - | [] - | [ - { - enableFixer?: boolean; - }, - ]; -// ----- jsdoc/check-tag-names ----- -type JsdocCheckTagNames = - | [] - | [ - { - definedTags?: string[]; - enableFixer?: boolean; - jsxTags?: boolean; - typed?: boolean; - }, - ]; -// ----- jsdoc/check-types ----- -type JsdocCheckTypes = - | [] - | [ - { - exemptTagContexts?: { - tag?: string; - types?: boolean | string[]; - }[]; - noDefaults?: boolean; - unifyParentAndChildTypeChecks?: boolean; - }, - ]; -// ----- jsdoc/check-values ----- -type JsdocCheckValues = - | [] - | [ - { - allowedAuthors?: string[]; - allowedLicenses?: string[] | boolean; - licensePattern?: string; - numericOnlyVariation?: boolean; - }, - ]; -// ----- jsdoc/convert-to-jsdoc-comments ----- -type JsdocConvertToJsdocComments = - | [] - | [ - { - allowedPrefixes?: string[]; - contexts?: ( - | string - | { - context?: string; - inlineCommentBlock?: boolean; - } - )[]; - contextsAfter?: ( - | string - | { - context?: string; - inlineCommentBlock?: boolean; - } - )[]; - contextsBeforeAndAfter?: ( - | string - | { - context?: string; - inlineCommentBlock?: boolean; - } - )[]; - enableFixer?: boolean; - enforceJsdocLineStyle?: "multi" | "single"; - lineOrBlockStyle?: "block" | "line" | "both"; - }, - ]; -// ----- jsdoc/empty-tags ----- -type JsdocEmptyTags = - | [] - | [ - { - tags?: string[]; - }, - ]; -// ----- jsdoc/implements-on-classes ----- -type JsdocImplementsOnClasses = - | [] - | [ - { - contexts?: ( - | string - | { - comment?: string; - context?: string; - } - )[]; - }, - ]; -// ----- jsdoc/informative-docs ----- -type JsdocInformativeDocs = - | [] - | [ - { - aliases?: { - [k: string]: string[]; - }; - excludedTags?: string[]; - uselessWords?: string[]; - }, - ]; -// ----- jsdoc/lines-before-block ----- -type JsdocLinesBeforeBlock = - | [] - | [ - { - checkBlockStarts?: boolean; - excludedTags?: string[]; - ignoreSameLine?: boolean; - lines?: number; - }, - ]; -// ----- jsdoc/match-description ----- -type JsdocMatchDescription = - | [] - | [ - { - contexts?: ( - | string - | { - comment?: string; - context?: string; - } - )[]; - mainDescription?: - | string - | boolean - | { - match?: string | boolean; - message?: string; - }; - matchDescription?: string; - message?: string; - nonemptyTags?: boolean; - tags?: { - [k: string]: - | string - | true - | { - match?: string | true; - message?: string; - }; - }; - }, - ]; -// ----- jsdoc/match-name ----- -type JsdocMatchName = - | [] - | [ - { - match: { - allowName?: string; - comment?: string; - context?: string; - disallowName?: string; - message?: string; - tags?: string[]; - [k: string]: unknown | undefined; - }[]; - }, - ]; -// ----- jsdoc/multiline-blocks ----- -type JsdocMultilineBlocks = - | [] - | [ - { - allowMultipleTags?: boolean; - minimumLengthForMultiline?: number; - multilineTags?: "*" | string[]; - noFinalLineText?: boolean; - noMultilineBlocks?: boolean; - noSingleLineBlocks?: boolean; - noZeroLineText?: boolean; - singleLineTags?: string[]; - }, - ]; -// ----- jsdoc/no-bad-blocks ----- -type JsdocNoBadBlocks = - | [] - | [ - { - ignore?: string[]; - preventAllMultiAsteriskBlocks?: boolean; - }, - ]; -// ----- jsdoc/no-blank-blocks ----- -type JsdocNoBlankBlocks = - | [] - | [ - { - enableFixer?: boolean; - }, - ]; -// ----- jsdoc/no-defaults ----- -type JsdocNoDefaults = - | [] - | [ - { - contexts?: ( - | string - | { - comment?: string; - context?: string; - } - )[]; - noOptionalParamNames?: boolean; - }, - ]; -// ----- jsdoc/no-missing-syntax ----- -type JsdocNoMissingSyntax = - | [] - | [ - { - contexts?: ( - | string - | { - comment?: string; - context?: string; - message?: string; - minimum?: number; - } - )[]; - }, - ]; -// ----- jsdoc/no-multi-asterisks ----- -type JsdocNoMultiAsterisks = - | [] - | [ - { - allowWhitespace?: boolean; - preventAtEnd?: boolean; - preventAtMiddleLines?: boolean; - }, - ]; -// ----- jsdoc/no-restricted-syntax ----- -type JsdocNoRestrictedSyntax = - | [] - | [ - { - contexts: ( - | string - | { - comment?: string; - context?: string; - message?: string; - } - )[]; - }, - ]; -// ----- jsdoc/no-types ----- -type JsdocNoTypes = - | [] - | [ - { - contexts?: ( - | string - | { - comment?: string; - context?: string; - } - )[]; - }, - ]; -// ----- jsdoc/no-undefined-types ----- -type JsdocNoUndefinedTypes = - | [] - | [ - { - definedTypes?: string[]; - disableReporting?: boolean; - markVariablesAsUsed?: boolean; - }, - ]; -// ----- jsdoc/require-asterisk-prefix ----- -type JsdocRequireAsteriskPrefix = - | [] - | ["always" | "never" | "any"] - | [ - "always" | "never" | "any", - { - tags?: { - always?: string[]; - any?: string[]; - never?: string[]; - [k: string]: unknown | undefined; - }; - }, - ]; -// ----- jsdoc/require-description ----- -type JsdocRequireDescription = - | [] - | [ - { - checkConstructors?: boolean; - checkGetters?: boolean; - checkSetters?: boolean; - contexts?: ( - | string - | { - comment?: string; - context?: string; - } - )[]; - descriptionStyle?: "body" | "tag" | "any"; - exemptedBy?: string[]; - }, - ]; -// ----- jsdoc/require-description-complete-sentence ----- -type JsdocRequireDescriptionCompleteSentence = - | [] - | [ - { - abbreviations?: string[]; - newlineBeforeCapsAssumesBadSentenceEnd?: boolean; - tags?: string[]; - }, - ]; -// ----- jsdoc/require-example ----- -type JsdocRequireExample = - | [] - | [ - { - checkConstructors?: boolean; - checkGetters?: boolean; - checkSetters?: boolean; - contexts?: ( - | string - | { - comment?: string; - context?: string; - } - )[]; - enableFixer?: boolean; - exemptedBy?: string[]; - exemptNoArguments?: boolean; - }, - ]; -// ----- jsdoc/require-file-overview ----- -type JsdocRequireFileOverview = - | [] - | [ - { - tags?: { - [k: string]: { - initialCommentsOnly?: boolean; - mustExist?: boolean; - preventDuplicates?: boolean; - }; - }; - }, - ]; -// ----- jsdoc/require-hyphen-before-param-description ----- -type JsdocRequireHyphenBeforeParamDescription = - | [] - | ["always" | "never"] - | [ - "always" | "never", - { - tags?: - | { - [k: string]: "always" | "never"; - } - | "any"; - }, - ]; -// ----- jsdoc/require-jsdoc ----- -type JsdocRequireJsdoc = - | [] - | [ - { - checkConstructors?: boolean; - checkGetters?: boolean | "no-setter"; - checkSetters?: boolean | "no-getter"; - contexts?: ( - | string - | { - context?: string; - inlineCommentBlock?: boolean; - minLineCount?: number; - } - )[]; - enableFixer?: boolean; - exemptEmptyConstructors?: boolean; - exemptEmptyFunctions?: boolean; - fixerMessage?: string; - minLineCount?: number; - publicOnly?: - | boolean - | { - ancestorsOnly?: boolean; - cjs?: boolean; - esm?: boolean; - window?: boolean; - }; - require?: { - ArrowFunctionExpression?: boolean; - ClassDeclaration?: boolean; - ClassExpression?: boolean; - FunctionDeclaration?: boolean; - FunctionExpression?: boolean; - MethodDefinition?: boolean; - }; - }, - ]; -// ----- jsdoc/require-param ----- -type JsdocRequireParam = - | [] - | [ - { - autoIncrementBase?: number; - checkConstructors?: boolean; - checkDestructured?: boolean; - checkDestructuredRoots?: boolean; - checkGetters?: boolean; - checkRestProperty?: boolean; - checkSetters?: boolean; - checkTypesPattern?: string; - contexts?: ( - | string - | { - comment?: string; - context?: string; - } - )[]; - enableFixer?: boolean; - enableRestElementFixer?: boolean; - enableRootFixer?: boolean; - exemptedBy?: string[]; - ignoreWhenAllParamsMissing?: boolean; - unnamedRootBase?: string[]; - useDefaultObjectProperties?: boolean; - }, - ]; -// ----- jsdoc/require-param-description ----- -type JsdocRequireParamDescription = - | [] - | [ - { - contexts?: ( - | string - | { - comment?: string; - context?: string; - } - )[]; - defaultDestructuredRootDescription?: string; - setDefaultDestructuredRootDescription?: boolean; - }, - ]; -// ----- jsdoc/require-param-name ----- -type JsdocRequireParamName = - | [] - | [ - { - contexts?: ( - | string - | { - comment?: string; - context?: string; - } - )[]; - }, - ]; -// ----- jsdoc/require-param-type ----- -type JsdocRequireParamType = - | [] - | [ - { - contexts?: ( - | string - | { - comment?: string; - context?: string; - } - )[]; - defaultDestructuredRootType?: string; - setDefaultDestructuredRootType?: boolean; - }, - ]; -// ----- jsdoc/require-returns ----- -type JsdocRequireReturns = - | [] - | [ - { - checkConstructors?: boolean; - checkGetters?: boolean; - contexts?: ( - | string - | { - comment?: string; - context?: string; - forceRequireReturn?: boolean; - } - )[]; - enableFixer?: boolean; - exemptedBy?: string[]; - forceRequireReturn?: boolean; - forceReturnsWithAsync?: boolean; - publicOnly?: - | boolean - | { - ancestorsOnly?: boolean; - cjs?: boolean; - esm?: boolean; - window?: boolean; - }; - }, - ]; -// ----- jsdoc/require-returns-check ----- -type JsdocRequireReturnsCheck = - | [] - | [ - { - exemptAsync?: boolean; - exemptGenerators?: boolean; - reportMissingReturnForUndefinedTypes?: boolean; - }, - ]; -// ----- jsdoc/require-returns-description ----- -type JsdocRequireReturnsDescription = - | [] - | [ - { - contexts?: ( - | string - | { - comment?: string; - context?: string; - } - )[]; - }, - ]; -// ----- jsdoc/require-returns-type ----- -type JsdocRequireReturnsType = - | [] - | [ - { - contexts?: ( - | string - | { - comment?: string; - context?: string; - } - )[]; - }, - ]; -// ----- jsdoc/require-template ----- -type JsdocRequireTemplate = - | [] - | [ - { - requireSeparateTemplates?: boolean; - }, - ]; -// ----- jsdoc/require-throws ----- -type JsdocRequireThrows = - | [] - | [ - { - contexts?: ( - | string - | { - comment?: string; - context?: string; - } - )[]; - exemptedBy?: string[]; - }, - ]; -// ----- jsdoc/require-yields ----- -type JsdocRequireYields = - | [] - | [ - { - contexts?: ( - | string - | { - comment?: string; - context?: string; - } - )[]; - exemptedBy?: string[]; - forceRequireNext?: boolean; - forceRequireYields?: boolean; - next?: boolean; - nextWithGeneratorTag?: boolean; - withGeneratorTag?: boolean; - }, - ]; -// ----- jsdoc/require-yields-check ----- -type JsdocRequireYieldsCheck = - | [] - | [ - { - checkGeneratorsOnly?: boolean; - contexts?: ( - | string - | { - comment?: string; - context?: string; - } - )[]; - exemptedBy?: string[]; - next?: boolean; - }, - ]; -// ----- jsdoc/sort-tags ----- -type JsdocSortTags = - | [] - | [ - { - alphabetizeExtras?: boolean; - linesBetween?: number; - reportIntraTagGroupSpacing?: boolean; - reportTagGroupSpacing?: boolean; - tagSequence?: { - tags?: string[]; - [k: string]: unknown | undefined; - }[]; - }, - ]; -// ----- jsdoc/tag-lines ----- -type JsdocTagLines = - | [] - | ["always" | "any" | "never"] - | [ - "always" | "any" | "never", - { - applyToEndTag?: boolean; - count?: number; - endLines?: number | null; - startLines?: number | null; - tags?: { - [k: string]: { - count?: number; - lines?: "always" | "never" | "any"; - }; - }; - }, - ]; -// ----- jsdoc/text-escaping ----- -type JsdocTextEscaping = - | [] - | [ - { - escapeHTML?: boolean; - escapeMarkdown?: boolean; - }, - ]; -// ----- jsdoc/valid-types ----- -type JsdocValidTypes = - | [] - | [ - { - allowEmptyNamepaths?: boolean; - }, - ]; -// ----- jsonc/array-bracket-newline ----- -type JsoncArrayBracketNewline = - | [] - | [ - | ("always" | "never" | "consistent") - | { - multiline?: boolean; - minItems?: number | null; - }, - ]; -// ----- jsonc/array-bracket-spacing ----- -type JsoncArrayBracketSpacing = - | [] - | ["always" | "never"] - | [ - "always" | "never", - { - singleValue?: boolean; - objectsInArrays?: boolean; - arraysInArrays?: boolean; - }, - ]; -// ----- jsonc/array-element-newline ----- -type JsoncArrayElementNewline = - | [] - | [ - | _JsoncArrayElementNewlineBasicConfig - | { - ArrayExpression?: _JsoncArrayElementNewlineBasicConfig; - JSONArrayExpression?: _JsoncArrayElementNewlineBasicConfig; - ArrayPattern?: _JsoncArrayElementNewlineBasicConfig; - }, - ]; -type _JsoncArrayElementNewlineBasicConfig = - | ("always" | "never" | "consistent") - | { - multiline?: boolean; - minItems?: number | null; - }; -// ----- jsonc/comma-dangle ----- -type JsoncCommaDangle = - | [] - | [ - | _JsoncCommaDangleValue - | { - arrays?: _JsoncCommaDangleValueWithIgnore; - objects?: _JsoncCommaDangleValueWithIgnore; - imports?: _JsoncCommaDangleValueWithIgnore; - exports?: _JsoncCommaDangleValueWithIgnore; - functions?: _JsoncCommaDangleValueWithIgnore; - }, - ]; -type _JsoncCommaDangleValue = "always-multiline" | "always" | "never" | "only-multiline"; -type _JsoncCommaDangleValueWithIgnore = "always-multiline" | "always" | "ignore" | "never" | "only-multiline"; -// ----- jsonc/comma-style ----- -type JsoncCommaStyle = - | [] - | ["first" | "last"] - | [ - "first" | "last", - { - exceptions?: { - [k: string]: boolean | undefined; - }; - }, - ]; -// ----- jsonc/indent ----- -type JsoncIndent = - | [] - | ["tab" | number] - | [ - "tab" | number, - { - SwitchCase?: number; - VariableDeclarator?: - | (number | ("first" | "off")) - | { - var?: number | ("first" | "off"); - let?: number | ("first" | "off"); - const?: number | ("first" | "off"); - }; - outerIIFEBody?: number | "off"; - MemberExpression?: number | "off"; - FunctionDeclaration?: { - parameters?: number | ("first" | "off"); - body?: number; - }; - FunctionExpression?: { - parameters?: number | ("first" | "off"); - body?: number; - }; - StaticBlock?: { - body?: number; - }; - CallExpression?: { - arguments?: number | ("first" | "off"); - }; - ArrayExpression?: number | ("first" | "off"); - ObjectExpression?: number | ("first" | "off"); - ImportDeclaration?: number | ("first" | "off"); - flatTernaryExpressions?: boolean; - offsetTernaryExpressions?: boolean; - ignoredNodes?: string[]; - ignoreComments?: boolean; - }, - ]; -// ----- jsonc/key-name-casing ----- -type JsoncKeyNameCasing = - | [] - | [ - { - camelCase?: boolean; - PascalCase?: boolean; - SCREAMING_SNAKE_CASE?: boolean; - "kebab-case"?: boolean; - snake_case?: boolean; - ignores?: string[]; - }, - ]; -// ----- jsonc/key-spacing ----- -type JsoncKeySpacing = - | [] - | [ - | { - align?: - | ("colon" | "value") - | { - mode?: "strict" | "minimum"; - on?: "colon" | "value"; - beforeColon?: boolean; - afterColon?: boolean; - }; - mode?: "strict" | "minimum"; - beforeColon?: boolean; - afterColon?: boolean; - } - | { - singleLine?: { - mode?: "strict" | "minimum"; - beforeColon?: boolean; - afterColon?: boolean; - }; - multiLine?: { - align?: - | ("colon" | "value") - | { - mode?: "strict" | "minimum"; - on?: "colon" | "value"; - beforeColon?: boolean; - afterColon?: boolean; - }; - mode?: "strict" | "minimum"; - beforeColon?: boolean; - afterColon?: boolean; - }; - } - | { - singleLine?: { - mode?: "strict" | "minimum"; - beforeColon?: boolean; - afterColon?: boolean; - }; - multiLine?: { - mode?: "strict" | "minimum"; - beforeColon?: boolean; - afterColon?: boolean; - }; - align?: { - mode?: "strict" | "minimum"; - on?: "colon" | "value"; - beforeColon?: boolean; - afterColon?: boolean; - }; - }, - ]; -// ----- jsonc/no-irregular-whitespace ----- -type JsoncNoIrregularWhitespace = - | [] - | [ - { - skipComments?: boolean; - skipStrings?: boolean; - skipTemplates?: boolean; - skipRegExps?: boolean; - skipJSXText?: boolean; - }, - ]; -// ----- jsonc/no-useless-escape ----- -type JsoncNoUselessEscape = - | [] - | [ - { - allowRegexCharacters?: string[]; - }, - ]; -// ----- jsonc/object-curly-newline ----- -type JsoncObjectCurlyNewline = - | [] - | [ - | ( - | ("always" | "never") - | { - multiline?: boolean; - minProperties?: number; - consistent?: boolean; - } - ) - | { - ObjectExpression?: - | ("always" | "never") - | { - multiline?: boolean; - minProperties?: number; - consistent?: boolean; - }; - ObjectPattern?: - | ("always" | "never") - | { - multiline?: boolean; - minProperties?: number; - consistent?: boolean; - }; - ImportDeclaration?: - | ("always" | "never") - | { - multiline?: boolean; - minProperties?: number; - consistent?: boolean; - }; - ExportDeclaration?: - | ("always" | "never") - | { - multiline?: boolean; - minProperties?: number; - consistent?: boolean; - }; - }, - ]; -// ----- jsonc/object-curly-spacing ----- -type JsoncObjectCurlySpacing = - | [] - | ["always" | "never"] - | [ - "always" | "never", - { - arraysInObjects?: boolean; - objectsInObjects?: boolean; - }, - ]; -// ----- jsonc/object-property-newline ----- -type JsoncObjectPropertyNewline = - | [] - | [ - { - allowAllPropertiesOnSameLine?: boolean; - allowMultiplePropertiesPerLine?: boolean; - }, - ]; -// ----- jsonc/quote-props ----- -type JsoncQuoteProps = - | [] - | ["always" | "as-needed" | "consistent" | "consistent-as-needed"] - | [] - | ["always" | "as-needed" | "consistent" | "consistent-as-needed"] - | [ - "always" | "as-needed" | "consistent" | "consistent-as-needed", - { - keywords?: boolean; - unnecessary?: boolean; - numbers?: boolean; - }, - ]; -// ----- jsonc/quotes ----- -type JsoncQuotes = - | [] - | ["single" | "double" | "backtick"] - | [ - "single" | "double" | "backtick", - ( - | "avoid-escape" - | { - avoidEscape?: boolean; - allowTemplateLiterals?: boolean; - } - ), - ]; -// ----- jsonc/sort-array-values ----- -type JsoncSortArrayValues = [ - { - pathPattern: string; - order: - | ( - | string - | { - valuePattern?: string; - order?: { - type?: "asc" | "desc"; - caseSensitive?: boolean; - natural?: boolean; - }; - } - )[] - | { - type?: "asc" | "desc"; - caseSensitive?: boolean; - natural?: boolean; - }; - minValues?: number; - }, - ...{ - pathPattern: string; - order: - | ( - | string - | { - valuePattern?: string; - order?: { - type?: "asc" | "desc"; - caseSensitive?: boolean; - natural?: boolean; - }; - } - )[] - | { - type?: "asc" | "desc"; - caseSensitive?: boolean; - natural?: boolean; - }; - minValues?: number; - }[], -]; -// ----- jsonc/sort-keys ----- -type JsoncSortKeys = - | [ - { - pathPattern: string; - hasProperties?: string[]; - order: - | ( - | string - | { - keyPattern?: string; - order?: { - type?: "asc" | "desc"; - caseSensitive?: boolean; - natural?: boolean; - }; - } - )[] - | { - type?: "asc" | "desc"; - caseSensitive?: boolean; - natural?: boolean; - }; - minKeys?: number; - allowLineSeparatedGroups?: boolean; - }, - ...{ - pathPattern: string; - hasProperties?: string[]; - order: - | ( - | string - | { - keyPattern?: string; - order?: { - type?: "asc" | "desc"; - caseSensitive?: boolean; - natural?: boolean; - }; - } - )[] - | { - type?: "asc" | "desc"; - caseSensitive?: boolean; - natural?: boolean; - }; - minKeys?: number; - allowLineSeparatedGroups?: boolean; - }[], - ] - | [] - | ["asc" | "desc"] - | [ - "asc" | "desc", - { - caseSensitive?: boolean; - natural?: boolean; - minKeys?: number; - allowLineSeparatedGroups?: boolean; - }, - ]; -// ----- jsonc/space-unary-ops ----- -type JsoncSpaceUnaryOps = - | [] - | [ - { - words?: boolean; - nonwords?: boolean; - overrides?: { - [k: string]: boolean | undefined; - }; - }, - ]; -// ----- jsx-a11y/accessible-emoji ----- -type JsxA11YAccessibleEmoji = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/alt-text ----- -type JsxA11YAltText = - | [] - | [ - { - elements?: string[]; - img?: string[]; - object?: string[]; - area?: string[]; - 'input[type="image"]'?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/anchor-ambiguous-text ----- -type JsxA11YAnchorAmbiguousText = - | [] - | [ - { - words?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/anchor-has-content ----- -type JsxA11YAnchorHasContent = - | [] - | [ - { - components?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/anchor-is-valid ----- -type JsxA11YAnchorIsValid = - | [] - | [ - { - components?: string[]; - specialLink?: string[]; - - aspects?: ["noHref" | "invalidHref" | "preferButton", ...("noHref" | "invalidHref" | "preferButton")[]]; - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/aria-activedescendant-has-tabindex ----- -type JsxA11YAriaActivedescendantHasTabindex = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/aria-props ----- -type JsxA11YAriaProps = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/aria-proptypes ----- -type JsxA11YAriaProptypes = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/aria-role ----- -type JsxA11YAriaRole = - | [] - | [ - { - allowedInvalidRoles?: string[]; - ignoreNonDOM?: boolean; - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/aria-unsupported-elements ----- -type JsxA11YAriaUnsupportedElements = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/autocomplete-valid ----- -type JsxA11YAutocompleteValid = - | [] - | [ - { - inputComponents?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/click-events-have-key-events ----- -type JsxA11YClickEventsHaveKeyEvents = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/control-has-associated-label ----- -type JsxA11YControlHasAssociatedLabel = - | [] - | [ - { - labelAttributes?: string[]; - controlComponents?: string[]; - ignoreElements?: string[]; - ignoreRoles?: string[]; - - depth?: number; - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/heading-has-content ----- -type JsxA11YHeadingHasContent = - | [] - | [ - { - components?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/html-has-lang ----- -type JsxA11YHtmlHasLang = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/iframe-has-title ----- -type JsxA11YIframeHasTitle = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/img-redundant-alt ----- -type JsxA11YImgRedundantAlt = - | [] - | [ - { - components?: string[]; - words?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/interactive-supports-focus ----- -type JsxA11YInteractiveSupportsFocus = - | [] - | [ - { - tabbable?: ( - | "button" - | "checkbox" - | "columnheader" - | "combobox" - | "grid" - | "gridcell" - | "link" - | "listbox" - | "menu" - | "menubar" - | "menuitem" - | "menuitemcheckbox" - | "menuitemradio" - | "option" - | "progressbar" - | "radio" - | "radiogroup" - | "row" - | "rowheader" - | "scrollbar" - | "searchbox" - | "slider" - | "spinbutton" - | "switch" - | "tab" - | "tablist" - | "textbox" - | "tree" - | "treegrid" - | "treeitem" - | "doc-backlink" - | "doc-biblioref" - | "doc-glossref" - | "doc-noteref" - )[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/label-has-associated-control ----- -type JsxA11YLabelHasAssociatedControl = - | [] - | [ - { - labelComponents?: string[]; - labelAttributes?: string[]; - controlComponents?: string[]; - - assert?: "htmlFor" | "nesting" | "both" | "either"; - - depth?: number; - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/label-has-for ----- -type JsxA11YLabelHasFor = - | [] - | [ - { - components?: string[]; - required?: - | ("nesting" | "id") - | { - some: ("nesting" | "id")[]; - [k: string]: unknown | undefined; - } - | { - every: ("nesting" | "id")[]; - [k: string]: unknown | undefined; - }; - allowChildren?: boolean; - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/lang ----- -type JsxA11YLang = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/media-has-caption ----- -type JsxA11YMediaHasCaption = - | [] - | [ - { - audio?: string[]; - video?: string[]; - track?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/mouse-events-have-key-events ----- -type JsxA11YMouseEventsHaveKeyEvents = - | [] - | [ - { - hoverInHandlers?: string[]; - - hoverOutHandlers?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/no-access-key ----- -type JsxA11YNoAccessKey = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/no-aria-hidden-on-focusable ----- -type JsxA11YNoAriaHiddenOnFocusable = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/no-autofocus ----- -type JsxA11YNoAutofocus = - | [] - | [ - { - ignoreNonDOM?: boolean; - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/no-distracting-elements ----- -type JsxA11YNoDistractingElements = - | [] - | [ - { - elements?: ("marquee" | "blink")[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/no-interactive-element-to-noninteractive-role ----- -type JsxA11YNoInteractiveElementToNoninteractiveRole = - | [] - | [ - { - [k: string]: string[] | undefined; - }, - ]; -// ----- jsx-a11y/no-noninteractive-element-interactions ----- -type JsxA11YNoNoninteractiveElementInteractions = - | [] - | [ - { - handlers?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/no-noninteractive-element-to-interactive-role ----- -type JsxA11YNoNoninteractiveElementToInteractiveRole = - | [] - | [ - { - [k: string]: string[] | undefined; - }, - ]; -// ----- jsx-a11y/no-noninteractive-tabindex ----- -type JsxA11YNoNoninteractiveTabindex = - | [] - | [ - { - roles?: string[]; - - tags?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/no-onchange ----- -type JsxA11YNoOnchange = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/no-redundant-roles ----- -type JsxA11YNoRedundantRoles = - | [] - | [ - { - [k: string]: string[] | undefined; - }, - ]; -// ----- jsx-a11y/no-static-element-interactions ----- -type JsxA11YNoStaticElementInteractions = - | [] - | [ - { - handlers?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/prefer-tag-over-role ----- -type JsxA11YPreferTagOverRole = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/role-has-required-aria-props ----- -type JsxA11YRoleHasRequiredAriaProps = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/role-supports-aria-props ----- -type JsxA11YRoleSupportsAriaProps = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/scope ----- -type JsxA11YScope = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- jsx-a11y/tabindex-no-positive ----- -type JsxA11YTabindexNoPositive = - | [] - | [ - { - [k: string]: unknown | undefined; - }, - ]; -// ----- markdown/fenced-code-language ----- -type MarkdownFencedCodeLanguage = - | [] - | [ - { - required?: string[]; - }, - ]; -// ----- markdown/no-html ----- -type MarkdownNoHtml = - | [] - | [ - { - allowed?: string[]; - }, - ]; -// ----- n/callback-return ----- -type NCallbackReturn = [] | [string[]]; -// ----- n/exports-style ----- -type NExportsStyle = - | [] - | ["module.exports" | "exports"] - | [ - "module.exports" | "exports", - { - allowBatchAssign?: boolean; - }, - ]; -// ----- n/file-extension-in-import ----- -type NFileExtensionInImport = - | [] - | ["always" | "never"] - | [ - "always" | "never", - { - [k: string]: ("always" | "never") | undefined; - }, - ]; -// ----- n/handle-callback-err ----- -type NHandleCallbackErr = [] | [string]; -// ----- n/hashbang ----- -type NHashbang = - | [] - | [ - { - convertPath?: - | { - [k: string]: [string, string]; - } - | [ - { - include: [string, ...string[]]; - exclude?: string[]; - - replace: [string, string]; - }, - ...{ - include: [string, ...string[]]; - exclude?: string[]; - - replace: [string, string]; - }[], - ]; - ignoreUnpublished?: boolean; - additionalExecutables?: string[]; - executableMap?: { - [k: string]: string; - }; - }, - ]; -// ----- n/no-deprecated-api ----- -type NNoDeprecatedApi = - | [] - | [ - { - version?: string; - ignoreModuleItems?: ( - | "_linklist" - | "_stream_wrap" - | "async_hooks.currentId" - | "async_hooks.triggerId" - | "buffer.Buffer()" - | "new buffer.Buffer()" - | "buffer.SlowBuffer" - | "constants" - | "crypto._toBuf" - | "crypto.Credentials" - | "crypto.DEFAULT_ENCODING" - | "crypto.createCipher" - | "crypto.createCredentials" - | "crypto.createDecipher" - | "crypto.fips" - | "crypto.prng" - | "crypto.pseudoRandomBytes" - | "crypto.rng" - | "domain" - | "events.EventEmitter.listenerCount" - | "events.listenerCount" - | "freelist" - | "fs.SyncWriteStream" - | "fs.exists" - | "fs.lchmod" - | "fs.lchmodSync" - | "http.createClient" - | "module.Module.createRequireFromPath" - | "module.Module.requireRepl" - | "module.Module._debug" - | "module.createRequireFromPath" - | "module.requireRepl" - | "module._debug" - | "net._setSimultaneousAccepts" - | "os.getNetworkInterfaces" - | "os.tmpDir" - | "path._makeLong" - | "process.EventEmitter" - | "process.assert" - | "process.binding" - | "process.env.NODE_REPL_HISTORY_FILE" - | "process.report.triggerReport" - | "punycode" - | "readline.codePointAt" - | "readline.getStringWidth" - | "readline.isFullWidthCodePoint" - | "readline.stripVTControlCharacters" - | "repl.REPLServer" - | "repl.Recoverable" - | "repl.REPL_MODE_MAGIC" - | "safe-buffer.Buffer()" - | "new safe-buffer.Buffer()" - | "safe-buffer.SlowBuffer" - | "sys" - | "timers.enroll" - | "timers.unenroll" - | "tls.CleartextStream" - | "tls.CryptoStream" - | "tls.SecurePair" - | "tls.convertNPNProtocols" - | "tls.createSecurePair" - | "tls.parseCertString" - | "tty.setRawMode" - | "url.parse" - | "url.resolve" - | "util.debug" - | "util.error" - | "util.isArray" - | "util.isBoolean" - | "util.isBuffer" - | "util.isDate" - | "util.isError" - | "util.isFunction" - | "util.isNull" - | "util.isNullOrUndefined" - | "util.isNumber" - | "util.isObject" - | "util.isPrimitive" - | "util.isRegExp" - | "util.isString" - | "util.isSymbol" - | "util.isUndefined" - | "util.log" - | "util.print" - | "util.pump" - | "util.puts" - | "util._extend" - | "vm.runInDebugContext" - | "zlib.BrotliCompress()" - | "zlib.BrotliDecompress()" - | "zlib.Deflate()" - | "zlib.DeflateRaw()" - | "zlib.Gunzip()" - | "zlib.Gzip()" - | "zlib.Inflate()" - | "zlib.InflateRaw()" - | "zlib.Unzip()" - )[]; - ignoreGlobalItems?: ( - | "Buffer()" - | "new Buffer()" - | "COUNTER_NET_SERVER_CONNECTION" - | "COUNTER_NET_SERVER_CONNECTION_CLOSE" - | "COUNTER_HTTP_SERVER_REQUEST" - | "COUNTER_HTTP_SERVER_RESPONSE" - | "COUNTER_HTTP_CLIENT_REQUEST" - | "COUNTER_HTTP_CLIENT_RESPONSE" - | "GLOBAL" - | "Intl.v8BreakIterator" - | "require.extensions" - | "root" - | "process.EventEmitter" - | "process.assert" - | "process.binding" - | "process.env.NODE_REPL_HISTORY_FILE" - | "process.report.triggerReport" - )[]; - ignoreIndirectDependencies?: boolean; - }, - ]; -// ----- n/no-extraneous-import ----- -type NNoExtraneousImport = - | [] - | [ - { - allowModules?: string[]; - convertPath?: - | { - [k: string]: [string, string]; - } - | [ - { - include: [string, ...string[]]; - exclude?: string[]; - - replace: [string, string]; - }, - ...{ - include: [string, ...string[]]; - exclude?: string[]; - - replace: [string, string]; - }[], - ]; - resolvePaths?: string[]; - resolverConfig?: { - [k: string]: unknown | undefined; - }; - }, - ]; -// ----- n/no-extraneous-require ----- -type NNoExtraneousRequire = - | [] - | [ - { - allowModules?: string[]; - convertPath?: - | { - [k: string]: [string, string]; - } - | [ - { - include: [string, ...string[]]; - exclude?: string[]; - - replace: [string, string]; - }, - ...{ - include: [string, ...string[]]; - exclude?: string[]; - - replace: [string, string]; - }[], - ]; - resolvePaths?: string[]; - resolverConfig?: { - [k: string]: unknown | undefined; - }; - tryExtensions?: string[]; - }, - ]; -// ----- n/no-hide-core-modules ----- -type NNoHideCoreModules = - | [] - | [ - { - allow?: ( - | "assert" - | "buffer" - | "child_process" - | "cluster" - | "console" - | "constants" - | "crypto" - | "dgram" - | "dns" - | "events" - | "fs" - | "http" - | "https" - | "module" - | "net" - | "os" - | "path" - | "querystring" - | "readline" - | "repl" - | "stream" - | "string_decoder" - | "timers" - | "tls" - | "tty" - | "url" - | "util" - | "vm" - | "zlib" - )[]; - ignoreDirectDependencies?: boolean; - ignoreIndirectDependencies?: boolean; - }, - ]; -// ----- n/no-missing-import ----- -type NNoMissingImport = - | [] - | [ - { - allowModules?: string[]; - resolvePaths?: string[]; - resolverConfig?: { - [k: string]: unknown | undefined; - }; - tryExtensions?: string[]; - ignoreTypeImport?: boolean; - tsconfigPath?: string; - typescriptExtensionMap?: unknown[][] | ("react" | "react-jsx" | "react-jsxdev" | "react-native" | "preserve"); - }, - ]; -// ----- n/no-missing-require ----- -type NNoMissingRequire = - | [] - | [ - { - allowModules?: string[]; - tryExtensions?: string[]; - resolvePaths?: string[]; - resolverConfig?: { - [k: string]: unknown | undefined; - }; - typescriptExtensionMap?: unknown[][] | ("react" | "react-jsx" | "react-jsxdev" | "react-native" | "preserve"); - tsconfigPath?: string; - }, - ]; -// ----- n/no-mixed-requires ----- -type NNoMixedRequires = - | [] - | [ - | boolean - | { - grouping?: boolean; - allowCall?: boolean; - }, - ]; -// ----- n/no-process-env ----- -type NNoProcessEnv = - | [] - | [ - { - allowedVariables?: string[]; - }, - ]; -// ----- n/no-restricted-import ----- -type NNoRestrictedImport = - | [] - | [ - ( - | string - | { - name: string | string[]; - message?: string; - } - )[], - ]; -// ----- n/no-restricted-require ----- -type NNoRestrictedRequire = - | [] - | [ - ( - | string - | { - name: string | string[]; - message?: string; - } - )[], - ]; -// ----- n/no-sync ----- -type NNoSync = - | [] - | [ - { - allowAtRootLevel?: boolean; - ignores?: string[]; - }, - ]; -// ----- n/no-unpublished-bin ----- -type NNoUnpublishedBin = - | [] - | [ - { - convertPath?: - | { - [k: string]: [string, string]; - } - | [ - { - include: [string, ...string[]]; - exclude?: string[]; - - replace: [string, string]; - }, - ...{ - include: [string, ...string[]]; - exclude?: string[]; - - replace: [string, string]; - }[], - ]; - [k: string]: unknown | undefined; - }, - ]; -// ----- n/no-unpublished-import ----- -type NNoUnpublishedImport = - | [] - | [ - { - allowModules?: string[]; - convertPath?: - | { - [k: string]: [string, string]; - } - | [ - { - include: [string, ...string[]]; - exclude?: string[]; - - replace: [string, string]; - }, - ...{ - include: [string, ...string[]]; - exclude?: string[]; - - replace: [string, string]; - }[], - ]; - resolvePaths?: string[]; - resolverConfig?: { - [k: string]: unknown | undefined; - }; - tryExtensions?: string[]; - ignoreTypeImport?: boolean; - ignorePrivate?: boolean; - }, - ]; -// ----- n/no-unpublished-require ----- -type NNoUnpublishedRequire = - | [] - | [ - { - allowModules?: string[]; - convertPath?: - | { - [k: string]: [string, string]; - } - | [ - { - include: [string, ...string[]]; - exclude?: string[]; - - replace: [string, string]; - }, - ...{ - include: [string, ...string[]]; - exclude?: string[]; - - replace: [string, string]; - }[], - ]; - resolvePaths?: string[]; - resolverConfig?: { - [k: string]: unknown | undefined; - }; - tryExtensions?: string[]; - ignorePrivate?: boolean; - }, - ]; -// ----- n/no-unsupported-features/es-builtins ----- -type NNoUnsupportedFeaturesEsBuiltins = - | [] - | [ - { - version?: string; - ignores?: ( - | "AggregateError" - | "Array" - | "Array.from" - | "Array.isArray" - | "Array.length" - | "Array.of" - | "Array.toLocaleString" - | "ArrayBuffer" - | "ArrayBuffer.isView" - | "Atomics" - | "Atomics.add" - | "Atomics.and" - | "Atomics.compareExchange" - | "Atomics.exchange" - | "Atomics.isLockFree" - | "Atomics.load" - | "Atomics.notify" - | "Atomics.or" - | "Atomics.store" - | "Atomics.sub" - | "Atomics.wait" - | "Atomics.waitAsync" - | "Atomics.xor" - | "BigInt" - | "BigInt.asIntN" - | "BigInt.asUintN" - | "BigInt64Array" - | "BigInt64Array.BYTES_PER_ELEMENT" - | "BigInt64Array.from" - | "BigInt64Array.name" - | "BigInt64Array.of" - | "BigUint64Array" - | "BigUint64Array.BYTES_PER_ELEMENT" - | "BigUint64Array.from" - | "BigUint64Array.name" - | "BigUint64Array.of" - | "Boolean" - | "DataView" - | "Date" - | "Date.UTC" - | "Date.now" - | "Date.parse" - | "Date.toLocaleDateString" - | "Date.toLocaleString" - | "Date.toLocaleTimeString" - | "Error" - | "Error.cause" - | "EvalError" - | "FinalizationRegistry" - | "Float32Array" - | "Float32Array.BYTES_PER_ELEMENT" - | "Float32Array.from" - | "Float32Array.name" - | "Float32Array.of" - | "Float64Array" - | "Float64Array.BYTES_PER_ELEMENT" - | "Float64Array.from" - | "Float64Array.name" - | "Float64Array.of" - | "Function" - | "Function.length" - | "Function.name" - | "Infinity" - | "Int16Array" - | "Int16Array.BYTES_PER_ELEMENT" - | "Int16Array.from" - | "Int16Array.name" - | "Int16Array.of" - | "Int32Array" - | "Int32Array.BYTES_PER_ELEMENT" - | "Int32Array.from" - | "Int32Array.name" - | "Int32Array.of" - | "Int8Array" - | "Int8Array.BYTES_PER_ELEMENT" - | "Int8Array.from" - | "Int8Array.name" - | "Int8Array.of" - | "Intl" - | "Intl.Collator" - | "Intl.DateTimeFormat" - | "Intl.DisplayNames" - | "Intl.ListFormat" - | "Intl.Locale" - | "Intl.NumberFormat" - | "Intl.PluralRules" - | "Intl.RelativeTimeFormat" - | "Intl.Segmenter" - | "Intl.Segments" - | "Intl.getCanonicalLocales" - | "Intl.supportedValuesOf" - | "JSON" - | "JSON.parse" - | "JSON.stringify" - | "Map" - | "Map.groupBy" - | "Math" - | "Math.E" - | "Math.LN10" - | "Math.LN2" - | "Math.LOG10E" - | "Math.LOG2E" - | "Math.PI" - | "Math.SQRT1_2" - | "Math.SQRT2" - | "Math.abs" - | "Math.acos" - | "Math.acosh" - | "Math.asin" - | "Math.asinh" - | "Math.atan" - | "Math.atan2" - | "Math.atanh" - | "Math.cbrt" - | "Math.ceil" - | "Math.clz32" - | "Math.cos" - | "Math.cosh" - | "Math.exp" - | "Math.expm1" - | "Math.floor" - | "Math.fround" - | "Math.hypot" - | "Math.imul" - | "Math.log" - | "Math.log10" - | "Math.log1p" - | "Math.log2" - | "Math.max" - | "Math.min" - | "Math.pow" - | "Math.random" - | "Math.round" - | "Math.sign" - | "Math.sin" - | "Math.sinh" - | "Math.sqrt" - | "Math.tan" - | "Math.tanh" - | "Math.trunc" - | "NaN" - | "Number.EPSILON" - | "Number.MAX_SAFE_INTEGER" - | "Number.MAX_VALUE" - | "Number.MIN_SAFE_INTEGER" - | "Number.MIN_VALUE" - | "Number.NEGATIVE_INFINITY" - | "Number.NaN" - | "Number.POSITIVE_INFINITY" - | "Number.isFinite" - | "Number.isInteger" - | "Number.isNaN" - | "Number.isSafeInteger" - | "Number.parseFloat" - | "Number.parseInt" - | "Number.toLocaleString" - | "Object.assign" - | "Object.create" - | "Object.defineGetter" - | "Object.defineProperties" - | "Object.defineProperty" - | "Object.defineSetter" - | "Object.entries" - | "Object.freeze" - | "Object.fromEntries" - | "Object.getOwnPropertyDescriptor" - | "Object.getOwnPropertyDescriptors" - | "Object.getOwnPropertyNames" - | "Object.getOwnPropertySymbols" - | "Object.getPrototypeOf" - | "Object.groupBy" - | "Object.hasOwn" - | "Object.is" - | "Object.isExtensible" - | "Object.isFrozen" - | "Object.isSealed" - | "Object.keys" - | "Object.lookupGetter" - | "Object.lookupSetter" - | "Object.preventExtensions" - | "Object.proto" - | "Object.seal" - | "Object.setPrototypeOf" - | "Object.values" - | "Promise" - | "Promise.all" - | "Promise.allSettled" - | "Promise.any" - | "Promise.race" - | "Promise.reject" - | "Promise.resolve" - | "Proxy" - | "Proxy.revocable" - | "RangeError" - | "ReferenceError" - | "Reflect" - | "Reflect.apply" - | "Reflect.construct" - | "Reflect.defineProperty" - | "Reflect.deleteProperty" - | "Reflect.get" - | "Reflect.getOwnPropertyDescriptor" - | "Reflect.getPrototypeOf" - | "Reflect.has" - | "Reflect.isExtensible" - | "Reflect.ownKeys" - | "Reflect.preventExtensions" - | "Reflect.set" - | "Reflect.setPrototypeOf" - | "RegExp" - | "RegExp.dotAll" - | "RegExp.hasIndices" - | "RegExp.input" - | "RegExp.lastIndex" - | "RegExp.lastMatch" - | "RegExp.lastParen" - | "RegExp.leftContext" - | "RegExp.n" - | "RegExp.rightContext" - | "Set" - | "SharedArrayBuffer" - | "String" - | "String.fromCharCode" - | "String.fromCodePoint" - | "String.length" - | "String.localeCompare" - | "String.raw" - | "String.toLocaleLowerCase" - | "String.toLocaleUpperCase" - | "Symbol" - | "Symbol.asyncIterator" - | "Symbol.for" - | "Symbol.hasInstance" - | "Symbol.isConcatSpreadable" - | "Symbol.iterator" - | "Symbol.keyFor" - | "Symbol.match" - | "Symbol.matchAll" - | "Symbol.replace" - | "Symbol.search" - | "Symbol.species" - | "Symbol.split" - | "Symbol.toPrimitive" - | "Symbol.toStringTag" - | "Symbol.unscopables" - | "SyntaxError" - | "TypeError" - | "URIError" - | "Uint16Array" - | "Uint16Array.BYTES_PER_ELEMENT" - | "Uint16Array.from" - | "Uint16Array.name" - | "Uint16Array.of" - | "Uint32Array" - | "Uint32Array.BYTES_PER_ELEMENT" - | "Uint32Array.from" - | "Uint32Array.name" - | "Uint32Array.of" - | "Uint8Array" - | "Uint8Array.BYTES_PER_ELEMENT" - | "Uint8Array.from" - | "Uint8Array.name" - | "Uint8Array.of" - | "Uint8ClampedArray" - | "Uint8ClampedArray.BYTES_PER_ELEMENT" - | "Uint8ClampedArray.from" - | "Uint8ClampedArray.name" - | "Uint8ClampedArray.of" - | "WeakMap" - | "WeakRef" - | "WeakSet" - | "decodeURI" - | "decodeURIComponent" - | "encodeURI" - | "encodeURIComponent" - | "escape" - | "eval" - | "globalThis" - | "isFinite" - | "isNaN" - | "parseFloat" - | "parseInt" - | "unescape" - )[]; - }, - ]; -// ----- n/no-unsupported-features/es-syntax ----- -type NNoUnsupportedFeaturesEsSyntax = - | [] - | [ - { - version?: string; - ignores?: ( - | "no-accessor-properties" - | "accessor-properties" - | "accessorProperties" - | "no-arbitrary-module-namespace-names" - | "arbitrary-module-namespace-names" - | "arbitraryModuleNamespaceNames" - | "no-array-from" - | "array-from" - | "arrayFrom" - | "no-array-isarray" - | "array-isarray" - | "arrayIsarray" - | "no-array-of" - | "array-of" - | "arrayOf" - | "no-array-prototype-copywithin" - | "array-prototype-copywithin" - | "arrayPrototypeCopywithin" - | "no-array-prototype-entries" - | "array-prototype-entries" - | "arrayPrototypeEntries" - | "no-array-prototype-every" - | "array-prototype-every" - | "arrayPrototypeEvery" - | "no-array-prototype-fill" - | "array-prototype-fill" - | "arrayPrototypeFill" - | "no-array-prototype-filter" - | "array-prototype-filter" - | "arrayPrototypeFilter" - | "no-array-prototype-find" - | "array-prototype-find" - | "arrayPrototypeFind" - | "no-array-prototype-findindex" - | "array-prototype-findindex" - | "arrayPrototypeFindindex" - | "no-array-prototype-findlast-findlastindex" - | "array-prototype-findlast-findlastindex" - | "arrayPrototypeFindlastFindlastindex" - | "no-array-prototype-flat" - | "array-prototype-flat" - | "arrayPrototypeFlat" - | "no-array-prototype-foreach" - | "array-prototype-foreach" - | "arrayPrototypeForeach" - | "no-array-prototype-includes" - | "array-prototype-includes" - | "arrayPrototypeIncludes" - | "no-array-prototype-indexof" - | "array-prototype-indexof" - | "arrayPrototypeIndexof" - | "no-array-prototype-keys" - | "array-prototype-keys" - | "arrayPrototypeKeys" - | "no-array-prototype-lastindexof" - | "array-prototype-lastindexof" - | "arrayPrototypeLastindexof" - | "no-array-prototype-map" - | "array-prototype-map" - | "arrayPrototypeMap" - | "no-array-prototype-reduce" - | "array-prototype-reduce" - | "arrayPrototypeReduce" - | "no-array-prototype-reduceright" - | "array-prototype-reduceright" - | "arrayPrototypeReduceright" - | "no-array-prototype-some" - | "array-prototype-some" - | "arrayPrototypeSome" - | "no-array-prototype-toreversed" - | "array-prototype-toreversed" - | "arrayPrototypeToreversed" - | "no-array-prototype-tosorted" - | "array-prototype-tosorted" - | "arrayPrototypeTosorted" - | "no-array-prototype-tospliced" - | "array-prototype-tospliced" - | "arrayPrototypeTospliced" - | "no-array-prototype-values" - | "array-prototype-values" - | "arrayPrototypeValues" - | "no-array-prototype-with" - | "array-prototype-with" - | "arrayPrototypeWith" - | "no-array-string-prototype-at" - | "array-string-prototype-at" - | "arrayStringPrototypeAt" - | "no-arrow-functions" - | "arrow-functions" - | "arrowFunctions" - | "no-async-functions" - | "async-functions" - | "asyncFunctions" - | "no-async-iteration" - | "async-iteration" - | "asyncIteration" - | "no-atomics-waitasync" - | "atomics-waitasync" - | "atomicsWaitasync" - | "no-atomics" - | "atomics" - | "no-bigint" - | "bigint" - | "no-binary-numeric-literals" - | "binary-numeric-literals" - | "binaryNumericLiterals" - | "no-block-scoped-functions" - | "block-scoped-functions" - | "blockScopedFunctions" - | "no-block-scoped-variables" - | "block-scoped-variables" - | "blockScopedVariables" - | "no-class-fields" - | "class-fields" - | "classFields" - | "no-class-static-block" - | "class-static-block" - | "classStaticBlock" - | "no-classes" - | "classes" - | "no-computed-properties" - | "computed-properties" - | "computedProperties" - | "no-date-now" - | "date-now" - | "dateNow" - | "no-date-prototype-getyear-setyear" - | "date-prototype-getyear-setyear" - | "datePrototypeGetyearSetyear" - | "no-date-prototype-togmtstring" - | "date-prototype-togmtstring" - | "datePrototypeTogmtstring" - | "no-default-parameters" - | "default-parameters" - | "defaultParameters" - | "no-destructuring" - | "destructuring" - | "no-dynamic-import" - | "dynamic-import" - | "dynamicImport" - | "no-error-cause" - | "error-cause" - | "errorCause" - | "no-escape-unescape" - | "escape-unescape" - | "escapeUnescape" - | "no-exponential-operators" - | "exponential-operators" - | "exponentialOperators" - | "no-export-ns-from" - | "export-ns-from" - | "exportNsFrom" - | "no-for-of-loops" - | "for-of-loops" - | "forOfLoops" - | "no-function-declarations-in-if-statement-clauses-without-block" - | "function-declarations-in-if-statement-clauses-without-block" - | "functionDeclarationsInIfStatementClausesWithoutBlock" - | "no-function-prototype-bind" - | "function-prototype-bind" - | "functionPrototypeBind" - | "no-generators" - | "generators" - | "no-global-this" - | "global-this" - | "globalThis" - | "no-hashbang" - | "hashbang" - | "no-import-meta" - | "import-meta" - | "importMeta" - | "no-initializers-in-for-in" - | "initializers-in-for-in" - | "initializersInForIn" - | "no-intl-datetimeformat-prototype-formatrange" - | "intl-datetimeformat-prototype-formatrange" - | "intlDatetimeformatPrototypeFormatrange" - | "no-intl-datetimeformat-prototype-formattoparts" - | "intl-datetimeformat-prototype-formattoparts" - | "intlDatetimeformatPrototypeFormattoparts" - | "no-intl-displaynames" - | "intl-displaynames" - | "intlDisplaynames" - | "no-intl-getcanonicallocales" - | "intl-getcanonicallocales" - | "intlGetcanonicallocales" - | "no-intl-listformat" - | "intl-listformat" - | "intlListformat" - | "no-intl-locale" - | "intl-locale" - | "intlLocale" - | "no-intl-numberformat-prototype-formatrange" - | "intl-numberformat-prototype-formatrange" - | "intlNumberformatPrototypeFormatrange" - | "no-intl-numberformat-prototype-formatrangetoparts" - | "intl-numberformat-prototype-formatrangetoparts" - | "intlNumberformatPrototypeFormatrangetoparts" - | "no-intl-numberformat-prototype-formattoparts" - | "intl-numberformat-prototype-formattoparts" - | "intlNumberformatPrototypeFormattoparts" - | "no-intl-pluralrules-prototype-selectrange" - | "intl-pluralrules-prototype-selectrange" - | "intlPluralrulesPrototypeSelectrange" - | "no-intl-pluralrules" - | "intl-pluralrules" - | "intlPluralrules" - | "no-intl-relativetimeformat" - | "intl-relativetimeformat" - | "intlRelativetimeformat" - | "no-intl-segmenter" - | "intl-segmenter" - | "intlSegmenter" - | "no-intl-supportedvaluesof" - | "intl-supportedvaluesof" - | "intlSupportedvaluesof" - | "no-json-superset" - | "json-superset" - | "jsonSuperset" - | "no-json" - | "json" - | "no-keyword-properties" - | "keyword-properties" - | "keywordProperties" - | "no-labelled-function-declarations" - | "labelled-function-declarations" - | "labelledFunctionDeclarations" - | "no-legacy-object-prototype-accessor-methods" - | "legacy-object-prototype-accessor-methods" - | "legacyObjectPrototypeAccessorMethods" - | "no-logical-assignment-operators" - | "logical-assignment-operators" - | "logicalAssignmentOperators" - | "no-malformed-template-literals" - | "malformed-template-literals" - | "malformedTemplateLiterals" - | "no-map" - | "map" - | "no-math-acosh" - | "math-acosh" - | "mathAcosh" - | "no-math-asinh" - | "math-asinh" - | "mathAsinh" - | "no-math-atanh" - | "math-atanh" - | "mathAtanh" - | "no-math-cbrt" - | "math-cbrt" - | "mathCbrt" - | "no-math-clz32" - | "math-clz32" - | "mathClz32" - | "no-math-cosh" - | "math-cosh" - | "mathCosh" - | "no-math-expm1" - | "math-expm1" - | "mathExpm1" - | "no-math-fround" - | "math-fround" - | "mathFround" - | "no-math-hypot" - | "math-hypot" - | "mathHypot" - | "no-math-imul" - | "math-imul" - | "mathImul" - | "no-math-log10" - | "math-log10" - | "mathLog10" - | "no-math-log1p" - | "math-log1p" - | "mathLog1p" - | "no-math-log2" - | "math-log2" - | "mathLog2" - | "no-math-sign" - | "math-sign" - | "mathSign" - | "no-math-sinh" - | "math-sinh" - | "mathSinh" - | "no-math-tanh" - | "math-tanh" - | "mathTanh" - | "no-math-trunc" - | "math-trunc" - | "mathTrunc" - | "no-modules" - | "modules" - | "no-new-target" - | "new-target" - | "newTarget" - | "new.target" - | "no-nullish-coalescing-operators" - | "nullish-coalescing-operators" - | "nullishCoalescingOperators" - | "no-number-epsilon" - | "number-epsilon" - | "numberEpsilon" - | "no-number-isfinite" - | "number-isfinite" - | "numberIsfinite" - | "no-number-isinteger" - | "number-isinteger" - | "numberIsinteger" - | "no-number-isnan" - | "number-isnan" - | "numberIsnan" - | "no-number-issafeinteger" - | "number-issafeinteger" - | "numberIssafeinteger" - | "no-number-maxsafeinteger" - | "number-maxsafeinteger" - | "numberMaxsafeinteger" - | "no-number-minsafeinteger" - | "number-minsafeinteger" - | "numberMinsafeinteger" - | "no-number-parsefloat" - | "number-parsefloat" - | "numberParsefloat" - | "no-number-parseint" - | "number-parseint" - | "numberParseint" - | "no-numeric-separators" - | "numeric-separators" - | "numericSeparators" - | "no-object-assign" - | "object-assign" - | "objectAssign" - | "no-object-create" - | "object-create" - | "objectCreate" - | "no-object-defineproperties" - | "object-defineproperties" - | "objectDefineproperties" - | "no-object-defineproperty" - | "object-defineproperty" - | "objectDefineproperty" - | "no-object-entries" - | "object-entries" - | "objectEntries" - | "no-object-freeze" - | "object-freeze" - | "objectFreeze" - | "no-object-fromentries" - | "object-fromentries" - | "objectFromentries" - | "no-object-getownpropertydescriptor" - | "object-getownpropertydescriptor" - | "objectGetownpropertydescriptor" - | "no-object-getownpropertydescriptors" - | "object-getownpropertydescriptors" - | "objectGetownpropertydescriptors" - | "no-object-getownpropertynames" - | "object-getownpropertynames" - | "objectGetownpropertynames" - | "no-object-getownpropertysymbols" - | "object-getownpropertysymbols" - | "objectGetownpropertysymbols" - | "no-object-getprototypeof" - | "object-getprototypeof" - | "objectGetprototypeof" - | "no-object-hasown" - | "object-hasown" - | "objectHasown" - | "no-object-is" - | "object-is" - | "objectIs" - | "no-object-isextensible" - | "object-isextensible" - | "objectIsextensible" - | "no-object-isfrozen" - | "object-isfrozen" - | "objectIsfrozen" - | "no-object-issealed" - | "object-issealed" - | "objectIssealed" - | "no-object-keys" - | "object-keys" - | "objectKeys" - | "no-object-map-groupby" - | "object-map-groupby" - | "objectMapGroupby" - | "no-object-preventextensions" - | "object-preventextensions" - | "objectPreventextensions" - | "no-object-seal" - | "object-seal" - | "objectSeal" - | "no-object-setprototypeof" - | "object-setprototypeof" - | "objectSetprototypeof" - | "no-object-super-properties" - | "object-super-properties" - | "objectSuperProperties" - | "no-object-values" - | "object-values" - | "objectValues" - | "no-octal-numeric-literals" - | "octal-numeric-literals" - | "octalNumericLiterals" - | "no-optional-catch-binding" - | "optional-catch-binding" - | "optionalCatchBinding" - | "no-optional-chaining" - | "optional-chaining" - | "optionalChaining" - | "no-private-in" - | "private-in" - | "privateIn" - | "no-promise-all-settled" - | "promise-all-settled" - | "promiseAllSettled" - | "no-promise-any" - | "promise-any" - | "promiseAny" - | "no-promise-prototype-finally" - | "promise-prototype-finally" - | "promisePrototypeFinally" - | "no-promise-withresolvers" - | "promise-withresolvers" - | "promiseWithresolvers" - | "no-promise" - | "promise" - | "no-property-shorthands" - | "property-shorthands" - | "propertyShorthands" - | "no-proxy" - | "proxy" - | "no-reflect" - | "reflect" - | "no-regexp-d-flag" - | "regexp-d-flag" - | "regexpDFlag" - | "no-regexp-lookbehind-assertions" - | "regexp-lookbehind-assertions" - | "regexpLookbehindAssertions" - | "regexpLookbehind" - | "no-regexp-named-capture-groups" - | "regexp-named-capture-groups" - | "regexpNamedCaptureGroups" - | "no-regexp-prototype-compile" - | "regexp-prototype-compile" - | "regexpPrototypeCompile" - | "no-regexp-prototype-flags" - | "regexp-prototype-flags" - | "regexpPrototypeFlags" - | "no-regexp-s-flag" - | "regexp-s-flag" - | "regexpSFlag" - | "regexpS" - | "no-regexp-u-flag" - | "regexp-u-flag" - | "regexpUFlag" - | "regexpU" - | "no-regexp-unicode-property-escapes-2019" - | "regexp-unicode-property-escapes-2019" - | "regexpUnicodePropertyEscapes2019" - | "no-regexp-unicode-property-escapes-2020" - | "regexp-unicode-property-escapes-2020" - | "regexpUnicodePropertyEscapes2020" - | "no-regexp-unicode-property-escapes-2021" - | "regexp-unicode-property-escapes-2021" - | "regexpUnicodePropertyEscapes2021" - | "no-regexp-unicode-property-escapes-2022" - | "regexp-unicode-property-escapes-2022" - | "regexpUnicodePropertyEscapes2022" - | "no-regexp-unicode-property-escapes-2023" - | "regexp-unicode-property-escapes-2023" - | "regexpUnicodePropertyEscapes2023" - | "no-regexp-unicode-property-escapes" - | "regexp-unicode-property-escapes" - | "regexpUnicodePropertyEscapes" - | "regexpUnicodeProperties" - | "no-regexp-v-flag" - | "regexp-v-flag" - | "regexpVFlag" - | "no-regexp-y-flag" - | "regexp-y-flag" - | "regexpYFlag" - | "regexpY" - | "no-resizable-and-growable-arraybuffers" - | "resizable-and-growable-arraybuffers" - | "resizableAndGrowableArraybuffers" - | "no-rest-parameters" - | "rest-parameters" - | "restParameters" - | "no-rest-spread-properties" - | "rest-spread-properties" - | "restSpreadProperties" - | "no-set" - | "set" - | "no-shadow-catch-param" - | "shadow-catch-param" - | "shadowCatchParam" - | "no-shared-array-buffer" - | "shared-array-buffer" - | "sharedArrayBuffer" - | "no-spread-elements" - | "spread-elements" - | "spreadElements" - | "no-string-create-html-methods" - | "string-create-html-methods" - | "stringCreateHtmlMethods" - | "no-string-fromcodepoint" - | "string-fromcodepoint" - | "stringFromcodepoint" - | "no-string-prototype-codepointat" - | "string-prototype-codepointat" - | "stringPrototypeCodepointat" - | "no-string-prototype-endswith" - | "string-prototype-endswith" - | "stringPrototypeEndswith" - | "no-string-prototype-includes" - | "string-prototype-includes" - | "stringPrototypeIncludes" - | "no-string-prototype-iswellformed-towellformed" - | "string-prototype-iswellformed-towellformed" - | "stringPrototypeIswellformedTowellformed" - | "no-string-prototype-matchall" - | "string-prototype-matchall" - | "stringPrototypeMatchall" - | "no-string-prototype-normalize" - | "string-prototype-normalize" - | "stringPrototypeNormalize" - | "no-string-prototype-padstart-padend" - | "string-prototype-padstart-padend" - | "stringPrototypePadstartPadend" - | "no-string-prototype-repeat" - | "string-prototype-repeat" - | "stringPrototypeRepeat" - | "no-string-prototype-replaceall" - | "string-prototype-replaceall" - | "stringPrototypeReplaceall" - | "no-string-prototype-startswith" - | "string-prototype-startswith" - | "stringPrototypeStartswith" - | "no-string-prototype-substr" - | "string-prototype-substr" - | "stringPrototypeSubstr" - | "no-string-prototype-trim" - | "string-prototype-trim" - | "stringPrototypeTrim" - | "no-string-prototype-trimleft-trimright" - | "string-prototype-trimleft-trimright" - | "stringPrototypeTrimleftTrimright" - | "no-string-prototype-trimstart-trimend" - | "string-prototype-trimstart-trimend" - | "stringPrototypeTrimstartTrimend" - | "no-string-raw" - | "string-raw" - | "stringRaw" - | "no-subclassing-builtins" - | "subclassing-builtins" - | "subclassingBuiltins" - | "no-symbol-prototype-description" - | "symbol-prototype-description" - | "symbolPrototypeDescription" - | "no-symbol" - | "symbol" - | "no-template-literals" - | "template-literals" - | "templateLiterals" - | "no-top-level-await" - | "top-level-await" - | "topLevelAwait" - | "no-trailing-commas" - | "trailing-commas" - | "trailingCommas" - | "no-trailing-function-commas" - | "trailing-function-commas" - | "trailingFunctionCommas" - | "trailingCommasInFunctions" - | "no-typed-arrays" - | "typed-arrays" - | "typedArrays" - | "no-unicode-codepoint-escapes" - | "unicode-codepoint-escapes" - | "unicodeCodepointEscapes" - | "unicodeCodePointEscapes" - | "no-weak-map" - | "weak-map" - | "weakMap" - | "no-weak-set" - | "weak-set" - | "weakSet" - | "no-weakrefs" - | "weakrefs" - )[]; - }, - ]; -// ----- n/no-unsupported-features/node-builtins ----- -type NNoUnsupportedFeaturesNodeBuiltins = - | [] - | [ - { - version?: string; - allowExperimental?: boolean; - ignores?: ( - | "__filename" - | "__dirname" - | "require" - | "require.cache" - | "require.extensions" - | "require.main" - | "require.resolve" - | "require.resolve.paths" - | "module" - | "module.children" - | "module.exports" - | "module.filename" - | "module.id" - | "module.isPreloading" - | "module.loaded" - | "module.parent" - | "module.path" - | "module.paths" - | "module.require" - | "exports" - | "AbortController" - | "AbortSignal" - | "AbortSignal.abort" - | "AbortSignal.timeout" - | "AbortSignal.any" - | "DOMException" - | "FormData" - | "Headers" - | "MessageEvent" - | "Navigator" - | "Request" - | "Response" - | "WebAssembly" - | "WebSocket" - | "fetch" - | "global" - | "queueMicrotask" - | "navigator" - | "navigator.hardwareConcurrency" - | "navigator.language" - | "navigator.languages" - | "navigator.platform" - | "navigator.userAgent" - | "structuredClone" - | "localStorage" - | "sessionStorage" - | "Storage" - | "Blob" - | "new Buffer()" - | "Buffer" - | "Buffer.alloc" - | "Buffer.allocUnsafe" - | "Buffer.allocUnsafeSlow" - | "Buffer.byteLength" - | "Buffer.compare" - | "Buffer.concat" - | "Buffer.copyBytesFrom" - | "Buffer.from" - | "Buffer.isBuffer" - | "Buffer.isEncoding" - | "File" - | "atob" - | "btoa" - | "console" - | "console.profile" - | "console.profileEnd" - | "console.timeStamp" - | "console.Console" - | "console.assert" - | "console.clear" - | "console.count" - | "console.countReset" - | "console.debug" - | "console.dir" - | "console.dirxml" - | "console.error" - | "console.group" - | "console.groupCollapsed" - | "console.groupEnd" - | "console.info" - | "console.log" - | "console.table" - | "console.time" - | "console.timeEnd" - | "console.timeLog" - | "console.trace" - | "console.warn" - | "crypto" - | "crypto.subtle" - | "crypto.subtle.decrypt" - | "crypto.subtle.deriveBits" - | "crypto.subtle.deriveKey" - | "crypto.subtle.digest" - | "crypto.subtle.encrypt" - | "crypto.subtle.exportKey" - | "crypto.subtle.generateKey" - | "crypto.subtle.importKey" - | "crypto.subtle.sign" - | "crypto.subtle.unwrapKey" - | "crypto.subtle.verify" - | "crypto.subtle.wrapKey" - | "crypto.getRandomValues" - | "crypto.randomUUID" - | "Crypto" - | "CryptoKey" - | "SubtleCrypto" - | "CloseEvent" - | "CustomEvent" - | "Event" - | "EventSource" - | "EventTarget" - | "PerformanceEntry" - | "PerformanceMark" - | "PerformanceMeasure" - | "PerformanceObserver" - | "PerformanceObserverEntryList" - | "PerformanceResourceTiming" - | "performance" - | "performance.clearMarks" - | "performance.clearMeasures" - | "performance.clearResourceTimings" - | "performance.eventLoopUtilization" - | "performance.getEntries" - | "performance.getEntriesByName" - | "performance.getEntriesByType" - | "performance.mark" - | "performance.markResourceTiming" - | "performance.measure" - | "performance.nodeTiming" - | "performance.nodeTiming.bootstrapComplete" - | "performance.nodeTiming.environment" - | "performance.nodeTiming.idleTime" - | "performance.nodeTiming.loopExit" - | "performance.nodeTiming.loopStart" - | "performance.nodeTiming.nodeStart" - | "performance.nodeTiming.uvMetricsInfo" - | "performance.nodeTiming.v8Start" - | "performance.now" - | "performance.onresourcetimingbufferfull" - | "performance.setResourceTimingBufferSize" - | "performance.timeOrigin" - | "performance.timerify" - | "performance.toJSON" - | "process" - | "process.allowedNodeEnvironmentFlags" - | "process.availableMemory" - | "process.arch" - | "process.argv" - | "process.argv0" - | "process.channel" - | "process.config" - | "process.connected" - | "process.debugPort" - | "process.env" - | "process.execArgv" - | "process.execPath" - | "process.exitCode" - | "process.features.cached_builtins" - | "process.features.debug" - | "process.features.inspector" - | "process.features.ipv6" - | "process.features.require_module" - | "process.features.tls" - | "process.features.tls_alpn" - | "process.features.tls_ocsp" - | "process.features.tls_sni" - | "process.features.typescript" - | "process.features.uv" - | "process.finalization.register" - | "process.finalization.registerBeforeExit" - | "process.finalization.unregister" - | "process.getBuiltinModule" - | "process.mainModule" - | "process.noDeprecation" - | "process.permission" - | "process.pid" - | "process.platform" - | "process.ppid" - | "process.release" - | "process.report" - | "process.report.excludeEnv" - | "process.sourceMapsEnabled" - | "process.stdin" - | "process.stdin.isRaw" - | "process.stdin.isTTY" - | "process.stdin.setRawMode" - | "process.stdout" - | "process.stdout.clearLine" - | "process.stdout.clearScreenDown" - | "process.stdout.columns" - | "process.stdout.cursorTo" - | "process.stdout.getColorDepth" - | "process.stdout.getWindowSize" - | "process.stdout.hasColors" - | "process.stdout.isTTY" - | "process.stdout.moveCursor" - | "process.stdout.rows" - | "process.stderr" - | "process.stderr.clearLine" - | "process.stderr.clearScreenDown" - | "process.stderr.columns" - | "process.stderr.cursorTo" - | "process.stderr.getColorDepth" - | "process.stderr.getWindowSize" - | "process.stderr.hasColors" - | "process.stderr.isTTY" - | "process.stderr.moveCursor" - | "process.stderr.rows" - | "process.throwDeprecation" - | "process.title" - | "process.traceDeprecation" - | "process.version" - | "process.versions" - | "process.abort" - | "process.chdir" - | "process.constrainedMemory" - | "process.cpuUsage" - | "process.cwd" - | "process.disconnect" - | "process.dlopen" - | "process.emitWarning" - | "process.exit" - | "process.getActiveResourcesInfo" - | "process.getegid" - | "process.geteuid" - | "process.getgid" - | "process.getgroups" - | "process.getuid" - | "process.hasUncaughtExceptionCaptureCallback" - | "process.hrtime" - | "process.hrtime.bigint" - | "process.initgroups" - | "process.kill" - | "process.loadEnvFile" - | "process.memoryUsage" - | "process.rss" - | "process.nextTick" - | "process.resourceUsage" - | "process.send" - | "process.setegid" - | "process.seteuid" - | "process.setgid" - | "process.setgroups" - | "process.setuid" - | "process.setSourceMapsEnabled" - | "process.setUncaughtExceptionCaptureCallback" - | "process.umask" - | "process.uptime" - | "ReadableStream" - | "ReadableStream.from" - | "ReadableStreamDefaultReader" - | "ReadableStreamBYOBReader" - | "ReadableStreamDefaultController" - | "ReadableByteStreamController" - | "ReadableStreamBYOBRequest" - | "WritableStream" - | "WritableStreamDefaultWriter" - | "WritableStreamDefaultController" - | "TransformStream" - | "TransformStreamDefaultController" - | "ByteLengthQueuingStrategy" - | "CountQueuingStrategy" - | "TextEncoderStream" - | "TextDecoderStream" - | "CompressionStream" - | "DecompressionStream" - | "setInterval" - | "clearInterval" - | "setTimeout" - | "clearTimeout" - | "setImmediate" - | "clearImmediate" - | "URL" - | "URL.canParse" - | "URL.createObjectURL" - | "URL.revokeObjectURL" - | "URLSearchParams" - | "TextDecoder" - | "TextEncoder" - | "BroadcastChannel" - | "MessageChannel" - | "MessagePort" - | "assert" - | "assert.assert" - | "assert.deepEqual" - | "assert.deepStrictEqual" - | "assert.doesNotMatch" - | "assert.doesNotReject" - | "assert.doesNotThrow" - | "assert.equal" - | "assert.fail" - | "assert.ifError" - | "assert.match" - | "assert.notDeepEqual" - | "assert.notDeepStrictEqual" - | "assert.notEqual" - | "assert.notStrictEqual" - | "assert.ok" - | "assert.rejects" - | "assert.strictEqual" - | "assert.throws" - | "assert.CallTracker" - | "assert.strict" - | "assert.strict.assert" - | "assert.strict.deepEqual" - | "assert.strict.deepStrictEqual" - | "assert.strict.doesNotMatch" - | "assert.strict.doesNotReject" - | "assert.strict.doesNotThrow" - | "assert.strict.equal" - | "assert.strict.fail" - | "assert.strict.ifError" - | "assert.strict.match" - | "assert.strict.notDeepEqual" - | "assert.strict.notDeepStrictEqual" - | "assert.strict.notEqual" - | "assert.strict.notStrictEqual" - | "assert.strict.ok" - | "assert.strict.rejects" - | "assert.strict.strictEqual" - | "assert.strict.throws" - | "assert.strict.CallTracker" - | "assert/strict" - | "assert/strict.assert" - | "assert/strict.deepEqual" - | "assert/strict.deepStrictEqual" - | "assert/strict.doesNotMatch" - | "assert/strict.doesNotReject" - | "assert/strict.doesNotThrow" - | "assert/strict.equal" - | "assert/strict.fail" - | "assert/strict.ifError" - | "assert/strict.match" - | "assert/strict.notDeepEqual" - | "assert/strict.notDeepStrictEqual" - | "assert/strict.notEqual" - | "assert/strict.notStrictEqual" - | "assert/strict.ok" - | "assert/strict.rejects" - | "assert/strict.strictEqual" - | "assert/strict.throws" - | "assert/strict.CallTracker" - | "async_hooks" - | "async_hooks.createHook" - | "async_hooks.executionAsyncResource" - | "async_hooks.executionAsyncId" - | "async_hooks.triggerAsyncId" - | "async_hooks.AsyncLocalStorage" - | "async_hooks.AsyncLocalStorage.bind" - | "async_hooks.AsyncLocalStorage.snapshot" - | "async_hooks.AsyncResource" - | "async_hooks.AsyncResource.bind" - | "buffer" - | "buffer.constants" - | "buffer.INSPECT_MAX_BYTES" - | "buffer.kMaxLength" - | "buffer.kStringMaxLength" - | "buffer.atob" - | "buffer.btoa" - | "buffer.isAscii" - | "buffer.isUtf8" - | "buffer.resolveObjectURL" - | "buffer.transcode" - | "buffer.SlowBuffer" - | "buffer.Blob" - | "new buffer.Buffer()" - | "buffer.Buffer" - | "buffer.Buffer.alloc" - | "buffer.Buffer.allocUnsafe" - | "buffer.Buffer.allocUnsafeSlow" - | "buffer.Buffer.byteLength" - | "buffer.Buffer.compare" - | "buffer.Buffer.concat" - | "buffer.Buffer.copyBytesFrom" - | "buffer.Buffer.from" - | "buffer.Buffer.isBuffer" - | "buffer.Buffer.isEncoding" - | "buffer.File" - | "child_process" - | "child_process.exec" - | "child_process.execFile" - | "child_process.fork" - | "child_process.spawn" - | "child_process.execFileSync" - | "child_process.execSync" - | "child_process.spawnSync" - | "child_process.ChildProcess" - | "cluster" - | "cluster.isMaster" - | "cluster.isPrimary" - | "cluster.isWorker" - | "cluster.schedulingPolicy" - | "cluster.settings" - | "cluster.worker" - | "cluster.workers" - | "cluster.disconnect" - | "cluster.fork" - | "cluster.setupMaster" - | "cluster.setupPrimary" - | "cluster.Worker" - | "crypto.constants" - | "crypto.fips" - | "crypto.webcrypto" - | "crypto.webcrypto.subtle" - | "crypto.webcrypto.subtle.decrypt" - | "crypto.webcrypto.subtle.deriveBits" - | "crypto.webcrypto.subtle.deriveKey" - | "crypto.webcrypto.subtle.digest" - | "crypto.webcrypto.subtle.encrypt" - | "crypto.webcrypto.subtle.exportKey" - | "crypto.webcrypto.subtle.generateKey" - | "crypto.webcrypto.subtle.importKey" - | "crypto.webcrypto.subtle.sign" - | "crypto.webcrypto.subtle.unwrapKey" - | "crypto.webcrypto.subtle.verify" - | "crypto.webcrypto.subtle.wrapKey" - | "crypto.webcrypto.getRandomValues" - | "crypto.webcrypto.randomUUID" - | "crypto.checkPrime" - | "crypto.checkPrimeSync" - | "crypto.createCipher" - | "crypto.createCipheriv" - | "crypto.createDecipher" - | "crypto.createDecipheriv" - | "crypto.createDiffieHellman" - | "crypto.createDiffieHellmanGroup" - | "crypto.createECDH" - | "crypto.createHash" - | "crypto.createHmac" - | "crypto.createPrivateKey" - | "crypto.createPublicKey" - | "crypto.createSecretKey" - | "crypto.createSign" - | "crypto.createVerify" - | "crypto.diffieHellman" - | "crypto.generateKey" - | "crypto.generateKeyPair" - | "crypto.generateKeyPairSync" - | "crypto.generateKeySync" - | "crypto.generatePrime" - | "crypto.generatePrimeSync" - | "crypto.getCipherInfo" - | "crypto.getCiphers" - | "crypto.getCurves" - | "crypto.getDiffieHellman" - | "crypto.getFips" - | "crypto.getHashes" - | "crypto.hash" - | "crypto.hkdf" - | "crypto.hkdfSync" - | "crypto.pbkdf2" - | "crypto.pbkdf2Sync" - | "crypto.privateDecrypt" - | "crypto.privateEncrypt" - | "crypto.publicDecrypt" - | "crypto.publicEncrypt" - | "crypto.randomBytes" - | "crypto.randomFillSync" - | "crypto.randomFill" - | "crypto.randomInt" - | "crypto.scrypt" - | "crypto.scryptSync" - | "crypto.secureHeapUsed" - | "crypto.setEngine" - | "crypto.setFips" - | "crypto.sign" - | "crypto.timingSafeEqual" - | "crypto.verify" - | "crypto.Certificate" - | "crypto.Certificate.exportChallenge" - | "crypto.Certificate.exportPublicKey" - | "crypto.Certificate.verifySpkac" - | "crypto.Cipher" - | "crypto.Decipher" - | "crypto.DiffieHellman" - | "crypto.DiffieHellmanGroup" - | "crypto.ECDH" - | "crypto.ECDH.convertKey" - | "crypto.Hash()" - | "new crypto.Hash()" - | "crypto.Hash" - | "crypto.Hmac()" - | "new crypto.Hmac()" - | "crypto.Hmac" - | "crypto.KeyObject" - | "crypto.KeyObject.from" - | "crypto.Sign" - | "crypto.Verify" - | "crypto.X509Certificate" - | "dgram" - | "dgram.createSocket" - | "dgram.Socket" - | "diagnostics_channel" - | "diagnostics_channel.hasSubscribers" - | "diagnostics_channel.channel" - | "diagnostics_channel.subscribe" - | "diagnostics_channel.unsubscribe" - | "diagnostics_channel.tracingChannel" - | "diagnostics_channel.Channel" - | "diagnostics_channel.TracingChannel" - | "dns" - | "dns.Resolver" - | "dns.getServers" - | "dns.lookup" - | "dns.lookupService" - | "dns.resolve" - | "dns.resolve4" - | "dns.resolve6" - | "dns.resolveAny" - | "dns.resolveCname" - | "dns.resolveCaa" - | "dns.resolveMx" - | "dns.resolveNaptr" - | "dns.resolveNs" - | "dns.resolvePtr" - | "dns.resolveSoa" - | "dns.resolveSrv" - | "dns.resolveTxt" - | "dns.reverse" - | "dns.setDefaultResultOrder" - | "dns.getDefaultResultOrder" - | "dns.setServers" - | "dns.promises" - | "dns.promises.Resolver" - | "dns.promises.cancel" - | "dns.promises.getServers" - | "dns.promises.lookup" - | "dns.promises.lookupService" - | "dns.promises.resolve" - | "dns.promises.resolve4" - | "dns.promises.resolve6" - | "dns.promises.resolveAny" - | "dns.promises.resolveCaa" - | "dns.promises.resolveCname" - | "dns.promises.resolveMx" - | "dns.promises.resolveNaptr" - | "dns.promises.resolveNs" - | "dns.promises.resolvePtr" - | "dns.promises.resolveSoa" - | "dns.promises.resolveSrv" - | "dns.promises.resolveTxt" - | "dns.promises.reverse" - | "dns.promises.setDefaultResultOrder" - | "dns.promises.getDefaultResultOrder" - | "dns.promises.setServers" - | "dns/promises" - | "dns/promises.Resolver" - | "dns/promises.cancel" - | "dns/promises.getServers" - | "dns/promises.lookup" - | "dns/promises.lookupService" - | "dns/promises.resolve" - | "dns/promises.resolve4" - | "dns/promises.resolve6" - | "dns/promises.resolveAny" - | "dns/promises.resolveCaa" - | "dns/promises.resolveCname" - | "dns/promises.resolveMx" - | "dns/promises.resolveNaptr" - | "dns/promises.resolveNs" - | "dns/promises.resolvePtr" - | "dns/promises.resolveSoa" - | "dns/promises.resolveSrv" - | "dns/promises.resolveTxt" - | "dns/promises.reverse" - | "dns/promises.setDefaultResultOrder" - | "dns/promises.getDefaultResultOrder" - | "dns/promises.setServers" - | "domain" - | "domain.create" - | "domain.Domain" - | "events" - | "events.Event" - | "events.EventTarget" - | "events.CustomEvent" - | "events.NodeEventTarget" - | "events.EventEmitter" - | "events.EventEmitter.defaultMaxListeners" - | "events.EventEmitter.errorMonitor" - | "events.EventEmitter.captureRejections" - | "events.EventEmitter.captureRejectionSymbol" - | "events.EventEmitter.getEventListeners" - | "events.EventEmitter.getMaxListeners" - | "events.EventEmitter.once" - | "events.EventEmitter.listenerCount" - | "events.EventEmitter.on" - | "events.EventEmitter.setMaxListeners" - | "events.EventEmitter.addAbortListener" - | "events.EventEmitterAsyncResource" - | "events.EventEmitterAsyncResource.defaultMaxListeners" - | "events.EventEmitterAsyncResource.errorMonitor" - | "events.EventEmitterAsyncResource.captureRejections" - | "events.EventEmitterAsyncResource.captureRejectionSymbol" - | "events.EventEmitterAsyncResource.getEventListeners" - | "events.EventEmitterAsyncResource.getMaxListeners" - | "events.EventEmitterAsyncResource.once" - | "events.EventEmitterAsyncResource.listenerCount" - | "events.EventEmitterAsyncResource.on" - | "events.EventEmitterAsyncResource.setMaxListeners" - | "events.EventEmitterAsyncResource.addAbortListener" - | "events.defaultMaxListeners" - | "events.errorMonitor" - | "events.captureRejections" - | "events.captureRejectionSymbol" - | "events.getEventListeners" - | "events.getMaxListeners" - | "events.once" - | "events.listenerCount" - | "events.on" - | "events.setMaxListeners" - | "events.addAbortListener" - | "fs" - | "fs.promises" - | "fs.promises.FileHandle" - | "fs.promises.access" - | "fs.promises.appendFile" - | "fs.promises.chmod" - | "fs.promises.chown" - | "fs.promises.constants" - | "fs.promises.copyFile" - | "fs.promises.cp" - | "fs.promises.glob" - | "fs.promises.lchmod" - | "fs.promises.lchown" - | "fs.promises.link" - | "fs.promises.lstat" - | "fs.promises.lutimes" - | "fs.promises.mkdir" - | "fs.promises.mkdtemp" - | "fs.promises.open" - | "fs.promises.opendir" - | "fs.promises.readFile" - | "fs.promises.readdir" - | "fs.promises.readlink" - | "fs.promises.realpath" - | "fs.promises.rename" - | "fs.promises.rm" - | "fs.promises.rmdir" - | "fs.promises.stat" - | "fs.promises.statfs" - | "fs.promises.symlink" - | "fs.promises.truncate" - | "fs.promises.unlink" - | "fs.promises.utimes" - | "fs.promises.watch" - | "fs.promises.writeFile" - | "fs.access" - | "fs.appendFile" - | "fs.chmod" - | "fs.chown" - | "fs.close" - | "fs.copyFile" - | "fs.cp" - | "fs.createReadStream" - | "fs.createWriteStream" - | "fs.exists" - | "fs.fchmod" - | "fs.fchown" - | "fs.fdatasync" - | "fs.fstat" - | "fs.fsync" - | "fs.ftruncate" - | "fs.futimes" - | "fs.glob" - | "fs.lchmod" - | "fs.lchown" - | "fs.link" - | "fs.lstat" - | "fs.lutimes" - | "fs.mkdir" - | "fs.mkdtemp" - | "fs.native" - | "fs.open" - | "fs.openAsBlob" - | "fs.opendir" - | "fs.read" - | "fs.readdir" - | "fs.readFile" - | "fs.readlink" - | "fs.readv" - | "fs.realpath" - | "fs.realpath.native" - | "fs.rename" - | "fs.rm" - | "fs.rmdir" - | "fs.stat" - | "fs.statfs" - | "fs.symlink" - | "fs.truncate" - | "fs.unlink" - | "fs.unwatchFile" - | "fs.utimes" - | "fs.watch" - | "fs.watchFile" - | "fs.write" - | "fs.writeFile" - | "fs.writev" - | "fs.accessSync" - | "fs.appendFileSync" - | "fs.chmodSync" - | "fs.chownSync" - | "fs.closeSync" - | "fs.copyFileSync" - | "fs.cpSync" - | "fs.existsSync" - | "fs.fchmodSync" - | "fs.fchownSync" - | "fs.fdatasyncSync" - | "fs.fstatSync" - | "fs.fsyncSync" - | "fs.ftruncateSync" - | "fs.futimesSync" - | "fs.globSync" - | "fs.lchmodSync" - | "fs.lchownSync" - | "fs.linkSync" - | "fs.lstatSync" - | "fs.lutimesSync" - | "fs.mkdirSync" - | "fs.mkdtempSync" - | "fs.opendirSync" - | "fs.openSync" - | "fs.readdirSync" - | "fs.readFileSync" - | "fs.readlinkSync" - | "fs.readSync" - | "fs.readvSync" - | "fs.realpathSync" - | "fs.realpathSync.native" - | "fs.renameSync" - | "fs.rmdirSync" - | "fs.rmSync" - | "fs.statfsSync" - | "fs.statSync" - | "fs.symlinkSync" - | "fs.truncateSync" - | "fs.unlinkSync" - | "fs.utimesSync" - | "fs.writeFileSync" - | "fs.writeSync" - | "fs.writevSync" - | "fs.constants" - | "fs.Dir" - | "fs.Dirent" - | "fs.FSWatcher" - | "fs.StatWatcher" - | "fs.ReadStream" - | "fs.Stats()" - | "new fs.Stats()" - | "fs.Stats" - | "fs.StatFs" - | "fs.WriteStream" - | "fs.common_objects" - | "fs/promises" - | "fs/promises.FileHandle" - | "fs/promises.access" - | "fs/promises.appendFile" - | "fs/promises.chmod" - | "fs/promises.chown" - | "fs/promises.constants" - | "fs/promises.copyFile" - | "fs/promises.cp" - | "fs/promises.glob" - | "fs/promises.lchmod" - | "fs/promises.lchown" - | "fs/promises.link" - | "fs/promises.lstat" - | "fs/promises.lutimes" - | "fs/promises.mkdir" - | "fs/promises.mkdtemp" - | "fs/promises.open" - | "fs/promises.opendir" - | "fs/promises.readFile" - | "fs/promises.readdir" - | "fs/promises.readlink" - | "fs/promises.realpath" - | "fs/promises.rename" - | "fs/promises.rm" - | "fs/promises.rmdir" - | "fs/promises.stat" - | "fs/promises.statfs" - | "fs/promises.symlink" - | "fs/promises.truncate" - | "fs/promises.unlink" - | "fs/promises.utimes" - | "fs/promises.watch" - | "fs/promises.writeFile" - | "http2" - | "http2.constants" - | "http2.sensitiveHeaders" - | "http2.createServer" - | "http2.createSecureServer" - | "http2.connect" - | "http2.getDefaultSettings" - | "http2.getPackedSettings" - | "http2.getUnpackedSettings" - | "http2.performServerHandshake" - | "http2.Http2Session" - | "http2.ServerHttp2Session" - | "http2.ClientHttp2Session" - | "http2.Http2Stream" - | "http2.ClientHttp2Stream" - | "http2.ServerHttp2Stream" - | "http2.Http2Server" - | "http2.Http2SecureServer" - | "http2.Http2ServerRequest" - | "http2.Http2ServerResponse" - | "http" - | "http.METHODS" - | "http.STATUS_CODES" - | "http.globalAgent" - | "http.maxHeaderSize" - | "http.createServer" - | "http.get" - | "http.request" - | "http.validateHeaderName" - | "http.validateHeaderValue" - | "http.setMaxIdleHTTPParsers" - | "http.Agent" - | "http.ClientRequest" - | "http.Server" - | "http.ServerResponse" - | "http.IncomingMessage" - | "http.OutgoingMessage" - | "http.WebSocket" - | "https" - | "https.globalAgent" - | "https.createServer" - | "https.get" - | "https.request" - | "https.Agent" - | "https.Server" - | "inspector" - | "inspector.Session" - | "inspector.Network.loadingFailed" - | "inspector.Network.loadingFinished" - | "inspector.Network.requestWillBeSent" - | "inspector.Network.responseReceived" - | "inspector.console" - | "inspector.close" - | "inspector.open" - | "inspector.url" - | "inspector.waitForDebugger" - | "inspector/promises" - | "inspector/promises.Session" - | "inspector/promises.Network.loadingFailed" - | "inspector/promises.Network.loadingFinished" - | "inspector/promises.Network.requestWillBeSent" - | "inspector/promises.Network.responseReceived" - | "inspector/promises.console" - | "inspector/promises.close" - | "inspector/promises.open" - | "inspector/promises.url" - | "inspector/promises.waitForDebugger" - | "module.builtinModules" - | "module.constants.compileCacheStatus" - | "module.createRequire" - | "module.createRequireFromPath" - | "module.enableCompileCache" - | "module.findPackageJSON" - | "module.flushCompileCache" - | "module.getCompileCacheDir" - | "module.isBuiltin" - | "module.register" - | "module.stripTypeScriptTypes" - | "module.syncBuiltinESMExports" - | "module.findSourceMap" - | "module.SourceMap" - | "module.Module.builtinModules" - | "module.Module.createRequire" - | "module.Module.createRequireFromPath" - | "module.Module.enableCompileCache" - | "module.Module.findPackageJSON" - | "module.Module.flushCompileCache" - | "module.Module.getCompileCacheDir" - | "module.Module.isBuiltin" - | "module.Module.register" - | "module.Module.stripTypeScriptTypes" - | "module.Module.syncBuiltinESMExports" - | "module.Module.findSourceMap" - | "module.Module.SourceMap" - | "net" - | "net.connect" - | "net.createConnection" - | "net.createServer" - | "net.getDefaultAutoSelectFamily" - | "net.setDefaultAutoSelectFamily" - | "net.getDefaultAutoSelectFamilyAttemptTimeout" - | "net.setDefaultAutoSelectFamilyAttemptTimeout" - | "net.isIP" - | "net.isIPv4" - | "net.isIPv6" - | "net.BlockList" - | "net.SocketAddress" - | "net.Server" - | "net.Socket" - | "os" - | "os.EOL" - | "os.constants" - | "os.constants.priority" - | "os.devNull" - | "os.availableParallelism" - | "os.arch" - | "os.cpus" - | "os.endianness" - | "os.freemem" - | "os.getPriority" - | "os.homedir" - | "os.hostname" - | "os.loadavg" - | "os.machine" - | "os.networkInterfaces" - | "os.platform" - | "os.release" - | "os.setPriority" - | "os.tmpdir" - | "os.totalmem" - | "os.type" - | "os.uptime" - | "os.userInfo" - | "os.version" - | "path" - | "path.posix" - | "path.posix.delimiter" - | "path.posix.sep" - | "path.posix.basename" - | "path.posix.dirname" - | "path.posix.extname" - | "path.posix.format" - | "path.posix.matchesGlob" - | "path.posix.isAbsolute" - | "path.posix.join" - | "path.posix.normalize" - | "path.posix.parse" - | "path.posix.relative" - | "path.posix.resolve" - | "path.posix.toNamespacedPath" - | "path.win32" - | "path.win32.delimiter" - | "path.win32.sep" - | "path.win32.basename" - | "path.win32.dirname" - | "path.win32.extname" - | "path.win32.format" - | "path.win32.matchesGlob" - | "path.win32.isAbsolute" - | "path.win32.join" - | "path.win32.normalize" - | "path.win32.parse" - | "path.win32.relative" - | "path.win32.resolve" - | "path.win32.toNamespacedPath" - | "path.delimiter" - | "path.sep" - | "path.basename" - | "path.dirname" - | "path.extname" - | "path.format" - | "path.matchesGlob" - | "path.isAbsolute" - | "path.join" - | "path.normalize" - | "path.parse" - | "path.relative" - | "path.resolve" - | "path.toNamespacedPath" - | "path/posix" - | "path/posix.delimiter" - | "path/posix.sep" - | "path/posix.basename" - | "path/posix.dirname" - | "path/posix.extname" - | "path/posix.format" - | "path/posix.matchesGlob" - | "path/posix.isAbsolute" - | "path/posix.join" - | "path/posix.normalize" - | "path/posix.parse" - | "path/posix.relative" - | "path/posix.resolve" - | "path/posix.toNamespacedPath" - | "path/win32" - | "path/win32.delimiter" - | "path/win32.sep" - | "path/win32.basename" - | "path/win32.dirname" - | "path/win32.extname" - | "path/win32.format" - | "path/win32.matchesGlob" - | "path/win32.isAbsolute" - | "path/win32.join" - | "path/win32.normalize" - | "path/win32.parse" - | "path/win32.relative" - | "path/win32.resolve" - | "path/win32.toNamespacedPath" - | "perf_hooks" - | "perf_hooks.performance" - | "perf_hooks.performance.clearMarks" - | "perf_hooks.performance.clearMeasures" - | "perf_hooks.performance.clearResourceTimings" - | "perf_hooks.performance.eventLoopUtilization" - | "perf_hooks.performance.getEntries" - | "perf_hooks.performance.getEntriesByName" - | "perf_hooks.performance.getEntriesByType" - | "perf_hooks.performance.mark" - | "perf_hooks.performance.markResourceTiming" - | "perf_hooks.performance.measure" - | "perf_hooks.performance.nodeTiming" - | "perf_hooks.performance.nodeTiming.bootstrapComplete" - | "perf_hooks.performance.nodeTiming.environment" - | "perf_hooks.performance.nodeTiming.idleTime" - | "perf_hooks.performance.nodeTiming.loopExit" - | "perf_hooks.performance.nodeTiming.loopStart" - | "perf_hooks.performance.nodeTiming.nodeStart" - | "perf_hooks.performance.nodeTiming.uvMetricsInfo" - | "perf_hooks.performance.nodeTiming.v8Start" - | "perf_hooks.performance.now" - | "perf_hooks.performance.onresourcetimingbufferfull" - | "perf_hooks.performance.setResourceTimingBufferSize" - | "perf_hooks.performance.timeOrigin" - | "perf_hooks.performance.timerify" - | "perf_hooks.performance.toJSON" - | "perf_hooks.createHistogram" - | "perf_hooks.monitorEventLoopDelay" - | "perf_hooks.PerformanceEntry" - | "perf_hooks.PerformanceMark" - | "perf_hooks.PerformanceMeasure" - | "perf_hooks.PerformanceNodeEntry" - | "perf_hooks.PerformanceNodeTiming" - | "perf_hooks.PerformanceResourceTiming" - | "perf_hooks.PerformanceObserver" - | "perf_hooks.PerformanceObserverEntryList" - | "perf_hooks.Histogram" - | "perf_hooks.IntervalHistogram" - | "perf_hooks.RecordableHistogram" - | "punycode" - | "punycode.ucs2" - | "punycode.version" - | "punycode.decode" - | "punycode.encode" - | "punycode.toASCII" - | "punycode.toUnicode" - | "querystring" - | "querystring.decode" - | "querystring.encode" - | "querystring.escape" - | "querystring.parse" - | "querystring.stringify" - | "querystring.unescape" - | "readline" - | "readline.promises" - | "readline.promises.createInterface" - | "readline.promises.Interface" - | "readline.promises.Readline" - | "readline.clearLine" - | "readline.clearScreenDown" - | "readline.createInterface" - | "readline.cursorTo" - | "readline.moveCursor" - | "readline.Interface" - | "readline.emitKeypressEvents" - | "readline.InterfaceConstructor" - | "readline/promises" - | "readline/promises.createInterface" - | "readline/promises.Interface" - | "readline/promises.Readline" - | "repl" - | "repl.start" - | "repl.writer" - | "repl.REPLServer()" - | "repl.REPLServer" - | "repl.REPL_MODE_MAGIC" - | "repl.REPL_MODE_SLOPPY" - | "repl.REPL_MODE_STRICT" - | "repl.Recoverable()" - | "repl.Recoverable" - | "repl.builtinModules" - | "sea" - | "sea.isSea" - | "sea.getAsset" - | "sea.getAssetAsBlob" - | "sea.getRawAsset" - | "sea.sea.isSea" - | "sea.sea.getAsset" - | "sea.sea.getAssetAsBlob" - | "sea.sea.getRawAsset" - | "stream" - | "stream.promises" - | "stream.promises.pipeline" - | "stream.promises.finished" - | "stream.finished" - | "stream.pipeline" - | "stream.compose" - | "stream.duplexPair" - | "stream.Readable" - | "stream.Readable.from" - | "stream.Readable.isDisturbed" - | "stream.Readable.fromWeb" - | "stream.Readable.toWeb" - | "stream.Writable" - | "stream.Writable.fromWeb" - | "stream.Writable.toWeb" - | "stream.Duplex" - | "stream.Duplex.from" - | "stream.Duplex.fromWeb" - | "stream.Duplex.toWeb" - | "stream.Transform" - | "stream.isErrored" - | "stream.isReadable" - | "stream.addAbortSignal" - | "stream.getDefaultHighWaterMark" - | "stream.setDefaultHighWaterMark" - | "stream/promises.pipeline" - | "stream/promises.finished" - | "stream/web" - | "stream/web.ReadableStream" - | "stream/web.ReadableStream.from" - | "stream/web.ReadableStreamDefaultReader" - | "stream/web.ReadableStreamBYOBReader" - | "stream/web.ReadableStreamDefaultController" - | "stream/web.ReadableByteStreamController" - | "stream/web.ReadableStreamBYOBRequest" - | "stream/web.WritableStream" - | "stream/web.WritableStreamDefaultWriter" - | "stream/web.WritableStreamDefaultController" - | "stream/web.TransformStream" - | "stream/web.TransformStreamDefaultController" - | "stream/web.ByteLengthQueuingStrategy" - | "stream/web.CountQueuingStrategy" - | "stream/web.TextEncoderStream" - | "stream/web.TextDecoderStream" - | "stream/web.CompressionStream" - | "stream/web.DecompressionStream" - | "stream/consumers" - | "stream/consumers.arrayBuffer" - | "stream/consumers.blob" - | "stream/consumers.buffer" - | "stream/consumers.json" - | "stream/consumers.text" - | "string_decoder" - | "string_decoder.StringDecoder" - | "sqlite" - | "sqlite.DatabaseSync" - | "sqlite.StatementSync" - | "sqlite.SQLITE_CHANGESET_OMIT" - | "sqlite.SQLITE_CHANGESET_REPLACE" - | "sqlite.SQLITE_CHANGESET_ABORT" - | "test" - | "test.after" - | "test.afterEach" - | "test.before" - | "test.beforeEach" - | "test.describe" - | "test.describe.only" - | "test.describe.skip" - | "test.describe.todo" - | "test.it" - | "test.it.only" - | "test.it.skip" - | "test.it.todo" - | "test.mock" - | "test.mock.fn" - | "test.mock.getter" - | "test.mock.method" - | "test.mock.module" - | "test.mock.reset" - | "test.mock.restoreAll" - | "test.mock.setter" - | "test.mock.timers" - | "test.mock.timers.enable" - | "test.mock.timers.reset" - | "test.mock.timers.tick" - | "test.only" - | "test.run" - | "test.snapshot" - | "test.snapshot.setDefaultSnapshotSerializers" - | "test.snapshot.setResolveSnapshotPath" - | "test.skip" - | "test.suite" - | "test.test" - | "test.test.only" - | "test.test.skip" - | "test.test.todo" - | "test.todo" - | "timers" - | "timers.Immediate" - | "timers.Timeout" - | "timers.setImmediate" - | "timers.clearImmediate" - | "timers.setInterval" - | "timers.clearInterval" - | "timers.setTimeout" - | "timers.clearTimeout" - | "timers.promises" - | "timers.promises.setTimeout" - | "timers.promises.setImmediate" - | "timers.promises.setInterval" - | "timers.promises.scheduler.wait" - | "timers.promises.scheduler.yield" - | "timers/promises" - | "timers/promises.setTimeout" - | "timers/promises.setImmediate" - | "timers/promises.setInterval" - | "timers/promises.scheduler.wait" - | "timers/promises.scheduler.yield" - | "tls" - | "tls.rootCertificates" - | "tls.DEFAULT_ECDH_CURVE" - | "tls.DEFAULT_MAX_VERSION" - | "tls.DEFAULT_MIN_VERSION" - | "tls.DEFAULT_CIPHERS" - | "tls.checkServerIdentity" - | "tls.connect" - | "tls.createSecureContext" - | "tls.createSecurePair" - | "tls.createServer" - | "tls.getCiphers" - | "tls.SecureContext" - | "tls.CryptoStream" - | "tls.SecurePair" - | "tls.Server" - | "tls.TLSSocket" - | "trace_events" - | "trace_events.createTracing" - | "trace_events.getEnabledCategories" - | "tty" - | "tty.isatty" - | "tty.ReadStream" - | "tty.WriteStream" - | "url" - | "url.domainToASCII" - | "url.domainToUnicode" - | "url.fileURLToPath" - | "url.format" - | "url.pathToFileURL" - | "url.urlToHttpOptions" - | "url.URL" - | "url.URL.canParse" - | "url.URL.createObjectURL" - | "url.URL.revokeObjectURL" - | "url.URLSearchParams" - | "url.Url" - | "util.promisify" - | "util.promisify.custom" - | "util.callbackify" - | "util.debuglog" - | "util.debug" - | "util.deprecate" - | "util.format" - | "util.formatWithOptions" - | "util.getCallSite" - | "util.getCallSites" - | "util.getSystemErrorName" - | "util.getSystemErrorMap" - | "util.getSystemErrorMessage" - | "util.inherits" - | "util.inspect" - | "util.inspect.custom" - | "util.inspect.defaultOptions" - | "util.inspect.replDefaults" - | "util.isDeepStrictEqual" - | "util.parseArgs" - | "util.parseEnv" - | "util.stripVTControlCharacters" - | "util.styleText" - | "util.toUSVString" - | "util.transferableAbortController" - | "util.transferableAbortSignal" - | "util.aborted" - | "util.MIMEType" - | "util.MIMEParams" - | "util.TextDecoder" - | "util.TextEncoder" - | "util.types" - | "util.types.isExternal" - | "util.types.isDate" - | "util.types.isArgumentsObject" - | "util.types.isBigIntObject" - | "util.types.isBooleanObject" - | "util.types.isNumberObject" - | "util.types.isStringObject" - | "util.types.isSymbolObject" - | "util.types.isNativeError" - | "util.types.isRegExp" - | "util.types.isAsyncFunction" - | "util.types.isGeneratorFunction" - | "util.types.isGeneratorObject" - | "util.types.isPromise" - | "util.types.isMap" - | "util.types.isSet" - | "util.types.isMapIterator" - | "util.types.isSetIterator" - | "util.types.isWeakMap" - | "util.types.isWeakSet" - | "util.types.isArrayBuffer" - | "util.types.isDataView" - | "util.types.isSharedArrayBuffer" - | "util.types.isProxy" - | "util.types.isModuleNamespaceObject" - | "util.types.isAnyArrayBuffer" - | "util.types.isBoxedPrimitive" - | "util.types.isArrayBufferView" - | "util.types.isTypedArray" - | "util.types.isUint8Array" - | "util.types.isUint8ClampedArray" - | "util.types.isUint16Array" - | "util.types.isUint32Array" - | "util.types.isInt8Array" - | "util.types.isInt16Array" - | "util.types.isInt32Array" - | "util.types.isFloat32Array" - | "util.types.isFloat64Array" - | "util.types.isBigInt64Array" - | "util.types.isBigUint64Array" - | "util.types.isKeyObject" - | "util.types.isCryptoKey" - | "util.types.isWebAssemblyCompiledModule" - | "util._extend" - | "util.isArray" - | "util.isBoolean" - | "util.isBuffer" - | "util.isDate" - | "util.isError" - | "util.isFunction" - | "util.isNull" - | "util.isNullOrUndefined" - | "util.isNumber" - | "util.isObject" - | "util.isPrimitive" - | "util.isRegExp" - | "util.isString" - | "util.isSymbol" - | "util.isUndefined" - | "util.log" - | "util" - | "util/types" - | "util/types.isExternal" - | "util/types.isDate" - | "util/types.isArgumentsObject" - | "util/types.isBigIntObject" - | "util/types.isBooleanObject" - | "util/types.isNumberObject" - | "util/types.isStringObject" - | "util/types.isSymbolObject" - | "util/types.isNativeError" - | "util/types.isRegExp" - | "util/types.isAsyncFunction" - | "util/types.isGeneratorFunction" - | "util/types.isGeneratorObject" - | "util/types.isPromise" - | "util/types.isMap" - | "util/types.isSet" - | "util/types.isMapIterator" - | "util/types.isSetIterator" - | "util/types.isWeakMap" - | "util/types.isWeakSet" - | "util/types.isArrayBuffer" - | "util/types.isDataView" - | "util/types.isSharedArrayBuffer" - | "util/types.isProxy" - | "util/types.isModuleNamespaceObject" - | "util/types.isAnyArrayBuffer" - | "util/types.isBoxedPrimitive" - | "util/types.isArrayBufferView" - | "util/types.isTypedArray" - | "util/types.isUint8Array" - | "util/types.isUint8ClampedArray" - | "util/types.isUint16Array" - | "util/types.isUint32Array" - | "util/types.isInt8Array" - | "util/types.isInt16Array" - | "util/types.isInt32Array" - | "util/types.isFloat32Array" - | "util/types.isFloat64Array" - | "util/types.isBigInt64Array" - | "util/types.isBigUint64Array" - | "util/types.isKeyObject" - | "util/types.isCryptoKey" - | "util/types.isWebAssemblyCompiledModule" - | "v8" - | "v8.serialize" - | "v8.deserialize" - | "v8.Serializer" - | "v8.Deserializer" - | "v8.DefaultSerializer" - | "v8.DefaultDeserializer" - | "v8.promiseHooks" - | "v8.promiseHooks.onInit" - | "v8.promiseHooks.onSettled" - | "v8.promiseHooks.onBefore" - | "v8.promiseHooks.onAfter" - | "v8.promiseHooks.createHook" - | "v8.startupSnapshot" - | "v8.startupSnapshot.addSerializeCallback" - | "v8.startupSnapshot.addDeserializeCallback" - | "v8.startupSnapshot.setDeserializeMainFunction" - | "v8.startupSnapshot.isBuildingSnapshot" - | "v8.cachedDataVersionTag" - | "v8.getHeapCodeStatistics" - | "v8.getHeapSnapshot" - | "v8.getHeapSpaceStatistics" - | "v8.getHeapStatistics" - | "v8.queryObjects" - | "v8.setFlagsFromString" - | "v8.stopCoverage" - | "v8.takeCoverage" - | "v8.writeHeapSnapshot" - | "v8.setHeapSnapshotNearHeapLimit" - | "v8.GCProfiler" - | "vm.constants" - | "vm.compileFunction" - | "vm.createContext" - | "vm.isContext" - | "vm.measureMemory" - | "vm.runInContext" - | "vm.runInNewContext" - | "vm.runInThisContext" - | "vm.Script" - | "vm.Module" - | "vm.SourceTextModule" - | "vm.SyntheticModule" - | "vm" - | "wasi.WASI" - | "wasi" - | "worker_threads" - | "worker_threads.isMainThread" - | "worker_threads.parentPort" - | "worker_threads.resourceLimits" - | "worker_threads.SHARE_ENV" - | "worker_threads.threadId" - | "worker_threads.workerData" - | "worker_threads.getEnvironmentData" - | "worker_threads.markAsUncloneable" - | "worker_threads.markAsUntransferable" - | "worker_threads.isMarkedAsUntransferable" - | "worker_threads.moveMessagePortToContext" - | "worker_threads.postMessageToThread" - | "worker_threads.receiveMessageOnPort" - | "worker_threads.setEnvironmentData" - | "worker_threads.BroadcastChannel" - | "worker_threads.MessageChannel" - | "worker_threads.MessagePort" - | "worker_threads.Worker" - | "zlib.constants" - | "zlib.crc32" - | "zlib.createBrotliCompress" - | "zlib.createBrotliDecompress" - | "zlib.createDeflate" - | "zlib.createDeflateRaw" - | "zlib.createGunzip" - | "zlib.createGzip" - | "zlib.createInflate" - | "zlib.createInflateRaw" - | "zlib.createUnzip" - | "zlib.brotliCompress" - | "zlib.brotliCompressSync" - | "zlib.brotliDecompress" - | "zlib.brotliDecompressSync" - | "zlib.deflate" - | "zlib.deflateSync" - | "zlib.deflateRaw" - | "zlib.deflateRawSync" - | "zlib.gunzip" - | "zlib.gunzipSync" - | "zlib.gzip" - | "zlib.gzipSync" - | "zlib.inflate" - | "zlib.inflateSync" - | "zlib.inflateRaw" - | "zlib.inflateRawSync" - | "zlib.unzip" - | "zlib.unzipSync" - | "zlib.BrotliCompress()" - | "zlib.BrotliCompress" - | "zlib.BrotliDecompress()" - | "zlib.BrotliDecompress" - | "zlib.Deflate()" - | "zlib.Deflate" - | "zlib.DeflateRaw()" - | "zlib.DeflateRaw" - | "zlib.Gunzip()" - | "zlib.Gunzip" - | "zlib.Gzip()" - | "zlib.Gzip" - | "zlib.Inflate()" - | "zlib.Inflate" - | "zlib.InflateRaw()" - | "zlib.InflateRaw" - | "zlib.Unzip()" - | "zlib.Unzip" - | "zlib" - | "import.meta.resolve" - | "import.meta.dirname" - | "import.meta.filename" - )[]; - }, - ]; -// ----- n/prefer-global/buffer ----- -type NPreferGlobalBuffer = [] | ["always" | "never"]; -// ----- n/prefer-global/console ----- -type NPreferGlobalConsole = [] | ["always" | "never"]; -// ----- n/prefer-global/process ----- -type NPreferGlobalProcess = [] | ["always" | "never"]; -// ----- n/prefer-global/text-decoder ----- -type NPreferGlobalTextDecoder = [] | ["always" | "never"]; -// ----- n/prefer-global/text-encoder ----- -type NPreferGlobalTextEncoder = [] | ["always" | "never"]; -// ----- n/prefer-global/url ----- -type NPreferGlobalUrl = [] | ["always" | "never"]; -// ----- n/prefer-global/url-search-params ----- -type NPreferGlobalUrlSearchParams = [] | ["always" | "never"]; -// ----- n/prefer-node-protocol ----- -type NPreferNodeProtocol = - | [] - | [ - { - version?: string; - }, - ]; -// ----- n/shebang ----- -type NShebang = - | [] - | [ - { - convertPath?: - | { - [k: string]: [string, string]; - } - | [ - { - include: [string, ...string[]]; - exclude?: string[]; - - replace: [string, string]; - }, - ...{ - include: [string, ...string[]]; - exclude?: string[]; - - replace: [string, string]; - }[], - ]; - ignoreUnpublished?: boolean; - additionalExecutables?: string[]; - executableMap?: { - [k: string]: string; - }; - }, - ]; -// ----- no-unsanitized/method ----- -type NoUnsanitizedMethod = - | [] - | [ - { - defaultDisable?: boolean; - escape?: { - taggedTemplates?: [] | [string]; - methods?: [] | [string]; - [k: string]: unknown | undefined; - }; - objectMatches?: unknown[]; - properties?: unknown[]; - variableTracing?: boolean; - }, - ] - | [ - { - defaultDisable?: boolean; - escape?: { - taggedTemplates?: [] | [string]; - methods?: [] | [string]; - [k: string]: unknown | undefined; - }; - objectMatches?: unknown[]; - properties?: unknown[]; - variableTracing?: boolean; - }, - { - [k: string]: unknown | undefined; - }, - ]; -// ----- no-unsanitized/property ----- -type NoUnsanitizedProperty = - | [] - | [ - { - escape?: { - taggedTemplates?: [] | [string]; - methods?: [] | [string]; - [k: string]: unknown | undefined; - }; - variableTracing?: boolean; - }, - ] - | [ - { - escape?: { - taggedTemplates?: [] | [string]; - methods?: [] | [string]; - [k: string]: unknown | undefined; - }; - variableTracing?: boolean; - }, - { - [k: string]: unknown | undefined; - }, - ]; -// ----- perfectionist/sort-array-includes ----- -type PerfectionistSortArrayIncludes = { - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - specialCharacters?: "remove" | "trim" | "keep"; - - ignoreCase?: boolean; - - alphabet?: string; - - locales?: string | string[]; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - groupKind?: "mixed" | "literals-first" | "spreads-first"; - - customGroups?: ( - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - anyOf?: { - selector?: "literal" | "spread"; - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - }[]; - } - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - selector?: "literal" | "spread"; - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - } - )[]; - - useConfigurationIf?: { - allNamesMatchPattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - }; - - partitionByComment?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ) - | { - block?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - - line?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - }; - - partitionByNewLine?: boolean; - - newlinesBetween?: "ignore" | "always" | "never"; - - groups?: ( - | string - | string[] - | { - newlinesBetween: "ignore" | "always" | "never"; - } - )[]; -}[]; -// ----- perfectionist/sort-classes ----- -type PerfectionistSortClasses = - | [] - | [ - { - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - specialCharacters?: "remove" | "trim" | "keep"; - - ignoreCase?: boolean; - - alphabet?: string; - - locales?: string | string[]; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - customGroups?: ( - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - anyOf?: { - modifiers?: ( - | "async" - | "protected" - | "private" - | "public" - | "static" - | "abstract" - | "override" - | "readonly" - | "decorated" - | "declare" - | "optional" - )[]; - - selector?: - | "accessor-property" - | "index-signature" - | "constructor" - | "static-block" - | "get-method" - | "set-method" - | "function-property" - | "property" - | "method"; - - decoratorNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - - elementValuePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - }[]; - } - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - modifiers?: ( - | "async" - | "protected" - | "private" - | "public" - | "static" - | "abstract" - | "override" - | "readonly" - | "decorated" - | "declare" - | "optional" - )[]; - - selector?: - | "accessor-property" - | "index-signature" - | "constructor" - | "static-block" - | "get-method" - | "set-method" - | "function-property" - | "property" - | "method"; - - decoratorNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - - elementValuePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - } - )[]; - - ignoreCallbackDependenciesPatterns?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - - partitionByComment?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ) - | { - block?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - - line?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - }; - - partitionByNewLine?: boolean; - - newlinesBetween?: "ignore" | "always" | "never"; - - groups?: ( - | string - | string[] - | { - newlinesBetween: "ignore" | "always" | "never"; - } - )[]; - }, - ]; -// ----- perfectionist/sort-decorators ----- -type PerfectionistSortDecorators = - | [] - | [ - { - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - specialCharacters?: "remove" | "trim" | "keep"; - - ignoreCase?: boolean; - - alphabet?: string; - - locales?: string | string[]; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - sortOnParameters?: boolean; - - sortOnProperties?: boolean; - - sortOnAccessors?: boolean; - - sortOnMethods?: boolean; - - sortOnClasses?: boolean; - - partitionByComment?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ) - | { - block?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - - line?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - }; - - customGroups?: { - [k: string]: (string | string[]) | undefined; - }; - - groups?: ( - | string - | string[] - | { - newlinesBetween: "ignore" | "always" | "never"; - } - )[]; - }, - ]; -// ----- perfectionist/sort-enums ----- -type PerfectionistSortEnums = - | [] - | [ - { - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - specialCharacters?: "remove" | "trim" | "keep"; - - ignoreCase?: boolean; - - alphabet?: string; - - locales?: string | string[]; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - customGroups?: - | { - [k: string]: (string | string[]) | undefined; - } - | ( - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - anyOf?: { - elementValuePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - }[]; - } - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - elementValuePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - } - )[]; - - forceNumericSort?: boolean; - - sortByValue?: boolean; - - partitionByComment?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ) - | { - block?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - - line?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - }; - - partitionByNewLine?: boolean; - - newlinesBetween?: "ignore" | "always" | "never"; - - groups?: ( - | string - | string[] - | { - newlinesBetween: "ignore" | "always" | "never"; - } - )[]; - }, - ]; -// ----- perfectionist/sort-exports ----- -type PerfectionistSortExports = { - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - specialCharacters?: "remove" | "trim" | "keep"; - - ignoreCase?: boolean; - - alphabet?: string; - - locales?: string | string[]; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - groupKind?: "mixed" | "values-first" | "types-first"; - - customGroups?: ( - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - anyOf?: { - modifiers?: ("value" | "type")[]; - - selector?: "export"; - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - }[]; - } - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - modifiers?: ("value" | "type")[]; - - selector?: "export"; - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - } - )[]; - - partitionByComment?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ) - | { - block?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - - line?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - }; - - partitionByNewLine?: boolean; - - newlinesBetween?: "ignore" | "always" | "never"; - - groups?: ( - | string - | string[] - | { - newlinesBetween: "ignore" | "always" | "never"; - } - )[]; -}[]; -// ----- perfectionist/sort-heritage-clauses ----- -type PerfectionistSortHeritageClauses = - | [] - | [ - { - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - specialCharacters?: "remove" | "trim" | "keep"; - - ignoreCase?: boolean; - - alphabet?: string; - - locales?: string | string[]; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - customGroups?: { - [k: string]: (string | string[]) | undefined; - }; - - groups?: ( - | string - | string[] - | { - newlinesBetween: "ignore" | "always" | "never"; - } - )[]; - }, - ]; -// ----- perfectionist/sort-imports ----- -type PerfectionistSortImports = { - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - specialCharacters?: "remove" | "trim" | "keep"; - - ignoreCase?: boolean; - - alphabet?: string; - - locales?: string | string[]; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - customGroups?: - | { - value?: { - [k: string]: (string | string[]) | undefined; - }; - - type?: { - [k: string]: (string | string[]) | undefined; - }; - } - | ( - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - anyOf?: { - modifiers?: ("default" | "named" | "require" | "side-effect" | "ts-equals" | "type" | "value" | "wildcard")[]; - - selector?: - | "side-effect-style" - | "tsconfig-path" - | "side-effect" - | "external" - | "internal" - | "builtin" - | "sibling" - | "subpath" - | "import" - | "parent" - | "index" - | "style" - | "type"; - - elementValuePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - }[]; - } - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - modifiers?: ("default" | "named" | "require" | "side-effect" | "ts-equals" | "type" | "value" | "wildcard")[]; - - selector?: - | "side-effect-style" - | "tsconfig-path" - | "side-effect" - | "external" - | "internal" - | "builtin" - | "sibling" - | "subpath" - | "import" - | "parent" - | "index" - | "style" - | "type"; - - elementValuePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - } - )[]; - - maxLineLength?: number; - - sortSideEffects?: boolean; - - environment?: "node" | "bun"; - - tsconfigRootDir?: string; - - partitionByComment?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ) - | { - block?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - - line?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - }; - - partitionByNewLine?: boolean; - - newlinesBetween?: "ignore" | "always" | "never"; - - internalPattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - - groups?: ( - | string - | string[] - | { - newlinesBetween: "ignore" | "always" | "never"; - } - )[]; -}[]; -// ----- perfectionist/sort-interfaces ----- -type PerfectionistSortInterfaces = { - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - sortBy?: "name" | "value"; - }; - - specialCharacters?: "remove" | "trim" | "keep"; - - ignoreCase?: boolean; - - alphabet?: string; - - locales?: string | string[]; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - customGroups?: - | { - [k: string]: (string | string[]) | undefined; - } - | ( - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - sortBy?: "name" | "value"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - anyOf?: { - modifiers?: ("optional" | "required" | "multiline")[]; - - selector?: "index-signature" | "member" | "method" | "multiline" | "property"; - - elementValuePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - sortBy?: "name" | "value"; - }[]; - } - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - sortBy?: "name" | "value"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - modifiers?: ("optional" | "required" | "multiline")[]; - - selector?: "index-signature" | "member" | "method" | "multiline" | "property"; - - elementValuePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - sortBy?: "name" | "value"; - } - )[]; - - groupKind?: "mixed" | "required-first" | "optional-first"; - - useConfigurationIf?: { - allNamesMatchPattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - - declarationMatchesPattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - }; - - partitionByComment?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ) - | { - block?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - - line?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - }; - - partitionByNewLine?: boolean; - - newlinesBetween?: "ignore" | "always" | "never"; - - ignorePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - sortBy?: "name" | "value"; - - groups?: ( - | string - | string[] - | { - newlinesBetween: "ignore" | "always" | "never"; - } - )[]; -}[]; -// ----- perfectionist/sort-intersection-types ----- -type PerfectionistSortIntersectionTypes = { - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - specialCharacters?: "remove" | "trim" | "keep"; - - ignoreCase?: boolean; - - alphabet?: string; - - locales?: string | string[]; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - customGroups?: ( - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - anyOf?: { - selector?: - | "intersection" - | "conditional" - | "function" - | "operator" - | "keyword" - | "literal" - | "nullish" - | "import" - | "object" - | "named" - | "tuple" - | "union"; - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - }[]; - } - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - selector?: - | "intersection" - | "conditional" - | "function" - | "operator" - | "keyword" - | "literal" - | "nullish" - | "import" - | "object" - | "named" - | "tuple" - | "union"; - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - } - )[]; - - partitionByComment?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ) - | { - block?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - - line?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - }; - - partitionByNewLine?: boolean; - - newlinesBetween?: "ignore" | "always" | "never"; - - groups?: ( - | string - | string[] - | { - newlinesBetween: "ignore" | "always" | "never"; - } - )[]; -}[]; -// ----- perfectionist/sort-jsx-props ----- -type PerfectionistSortJsxProps = { - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - specialCharacters?: "remove" | "trim" | "keep"; - - ignoreCase?: boolean; - - alphabet?: string; - - locales?: string | string[]; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - customGroups?: - | { - [k: string]: (string | string[]) | undefined; - } - | ( - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - anyOf?: { - modifiers?: ("shorthand" | "multiline")[]; - - selector?: "multiline" | "prop" | "shorthand"; - - elementValuePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - }[]; - } - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - modifiers?: ("shorthand" | "multiline")[]; - - selector?: "multiline" | "prop" | "shorthand"; - - elementValuePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - } - )[]; - - useConfigurationIf?: { - allNamesMatchPattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - - tagMatchesPattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - }; - - partitionByNewLine?: boolean; - - newlinesBetween?: "ignore" | "always" | "never"; - - ignorePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - - groups?: ( - | string - | string[] - | { - newlinesBetween: "ignore" | "always" | "never"; - } - )[]; -}[]; -// ----- perfectionist/sort-maps ----- -type PerfectionistSortMaps = { - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - specialCharacters?: "remove" | "trim" | "keep"; - - ignoreCase?: boolean; - - alphabet?: string; - - locales?: string | string[]; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - customGroups?: ( - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - anyOf?: { - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - }[]; - } - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - } - )[]; - - useConfigurationIf?: { - allNamesMatchPattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - }; - - partitionByComment?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ) - | { - block?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - - line?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - }; - - partitionByNewLine?: boolean; - - newlinesBetween?: "ignore" | "always" | "never"; - - groups?: ( - | string - | string[] - | { - newlinesBetween: "ignore" | "always" | "never"; - } - )[]; -}[]; -// ----- perfectionist/sort-modules ----- -type PerfectionistSortModules = - | [] - | [ - { - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - specialCharacters?: "remove" | "trim" | "keep"; - - ignoreCase?: boolean; - - alphabet?: string; - - locales?: string | string[]; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - customGroups?: ( - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - anyOf?: { - modifiers?: ("async" | "declare" | "decorated" | "default" | "export")[]; - - selector?: "enum" | "function" | "interface" | "type" | "class"; - - decoratorNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - }[]; - } - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - modifiers?: ("async" | "declare" | "decorated" | "default" | "export")[]; - - selector?: "enum" | "function" | "interface" | "type" | "class"; - - decoratorNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - } - )[]; - - partitionByComment?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ) - | { - block?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - - line?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - }; - - partitionByNewLine?: boolean; - - newlinesBetween?: "ignore" | "always" | "never"; - - groups?: ( - | string - | string[] - | { - newlinesBetween: "ignore" | "always" | "never"; - } - )[]; - }, - ]; -// ----- perfectionist/sort-named-exports ----- -type PerfectionistSortNamedExports = { - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - specialCharacters?: "remove" | "trim" | "keep"; - - ignoreCase?: boolean; - - alphabet?: string; - - locales?: string | string[]; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - groupKind?: "mixed" | "values-first" | "types-first"; - - ignoreAlias?: boolean; - - customGroups?: ( - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - anyOf?: { - modifiers?: ("value" | "type")[]; - - selector?: "export"; - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - }[]; - } - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - modifiers?: ("value" | "type")[]; - - selector?: "export"; - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - } - )[]; - - partitionByComment?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ) - | { - block?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - - line?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - }; - - partitionByNewLine?: boolean; - - newlinesBetween?: "ignore" | "always" | "never"; - - groups?: ( - | string - | string[] - | { - newlinesBetween: "ignore" | "always" | "never"; - } - )[]; -}[]; -// ----- perfectionist/sort-named-imports ----- -type PerfectionistSortNamedImports = { - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - specialCharacters?: "remove" | "trim" | "keep"; - - ignoreCase?: boolean; - - alphabet?: string; - - locales?: string | string[]; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - groupKind?: "mixed" | "values-first" | "types-first"; - - ignoreAlias?: boolean; - - customGroups?: ( - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - anyOf?: { - modifiers?: ("value" | "type")[]; - - selector?: "import"; - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - }[]; - } - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - modifiers?: ("value" | "type")[]; - - selector?: "import"; - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - } - )[]; - - partitionByComment?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ) - | { - block?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - - line?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - }; - - partitionByNewLine?: boolean; - - newlinesBetween?: "ignore" | "always" | "never"; - - groups?: ( - | string - | string[] - | { - newlinesBetween: "ignore" | "always" | "never"; - } - )[]; -}[]; -// ----- perfectionist/sort-object-types ----- -type PerfectionistSortObjectTypes = { - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - sortBy?: "name" | "value"; - }; - - specialCharacters?: "remove" | "trim" | "keep"; - - ignoreCase?: boolean; - - alphabet?: string; - - locales?: string | string[]; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - customGroups?: - | { - [k: string]: (string | string[]) | undefined; - } - | ( - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - sortBy?: "name" | "value"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - anyOf?: { - modifiers?: ("optional" | "required" | "multiline")[]; - - selector?: "index-signature" | "member" | "method" | "multiline" | "property"; - - elementValuePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - sortBy?: "name" | "value"; - }[]; - } - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - sortBy?: "name" | "value"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - modifiers?: ("optional" | "required" | "multiline")[]; - - selector?: "index-signature" | "member" | "method" | "multiline" | "property"; - - elementValuePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - sortBy?: "name" | "value"; - } - )[]; - - groupKind?: "mixed" | "required-first" | "optional-first"; - - useConfigurationIf?: { - allNamesMatchPattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - - declarationMatchesPattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - }; - - partitionByComment?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ) - | { - block?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - - line?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - }; - - partitionByNewLine?: boolean; - - newlinesBetween?: "ignore" | "always" | "never"; - - ignorePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - sortBy?: "name" | "value"; - - groups?: ( - | string - | string[] - | { - newlinesBetween: "ignore" | "always" | "never"; - } - )[]; -}[]; -// ----- perfectionist/sort-objects ----- -type PerfectionistSortObjects = { - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - specialCharacters?: "remove" | "trim" | "keep"; - - ignoreCase?: boolean; - - alphabet?: string; - - locales?: string | string[]; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - destructuredObjects?: - | boolean - | { - groups?: boolean; - }; - customGroups?: - | { - [k: string]: (string | string[]) | undefined; - } - | ( - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - anyOf?: { - modifiers?: ("optional" | "required" | "multiline")[]; - - selector?: "member" | "method" | "multiline" | "property"; - - elementValuePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - }[]; - } - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - modifiers?: ("optional" | "required" | "multiline")[]; - - selector?: "member" | "method" | "multiline" | "property"; - - elementValuePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - } - )[]; - - useConfigurationIf?: { - allNamesMatchPattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - - callingFunctionNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - }; - - destructureOnly?: boolean; - - objectDeclarations?: boolean; - - styledComponents?: boolean; - - partitionByComment?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ) - | { - block?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - - line?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - }; - - partitionByNewLine?: boolean; - - newlinesBetween?: "ignore" | "always" | "never"; - - ignorePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - - groups?: ( - | string - | string[] - | { - newlinesBetween: "ignore" | "always" | "never"; - } - )[]; -}[]; -// ----- perfectionist/sort-sets ----- -type PerfectionistSortSets = { - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - specialCharacters?: "remove" | "trim" | "keep"; - - ignoreCase?: boolean; - - alphabet?: string; - - locales?: string | string[]; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - groupKind?: "mixed" | "literals-first" | "spreads-first"; - - customGroups?: ( - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - anyOf?: { - selector?: "literal" | "spread"; - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - }[]; - } - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - selector?: "literal" | "spread"; - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - } - )[]; - - useConfigurationIf?: { - allNamesMatchPattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - }; - - partitionByComment?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ) - | { - block?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - - line?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - }; - - partitionByNewLine?: boolean; - - newlinesBetween?: "ignore" | "always" | "never"; - - groups?: ( - | string - | string[] - | { - newlinesBetween: "ignore" | "always" | "never"; - } - )[]; -}[]; -// ----- perfectionist/sort-switch-case ----- -type PerfectionistSortSwitchCase = - | [] - | [ - { - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - specialCharacters?: "remove" | "trim" | "keep"; - - ignoreCase?: boolean; - - alphabet?: string; - - locales?: string | string[]; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }, - ]; -// ----- perfectionist/sort-union-types ----- -type PerfectionistSortUnionTypes = { - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - specialCharacters?: "remove" | "trim" | "keep"; - - ignoreCase?: boolean; - - alphabet?: string; - - locales?: string | string[]; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - customGroups?: ( - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - anyOf?: { - selector?: - | "intersection" - | "conditional" - | "function" - | "operator" - | "keyword" - | "literal" - | "nullish" - | "import" - | "object" - | "named" - | "tuple" - | "union"; - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - }[]; - } - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - selector?: - | "intersection" - | "conditional" - | "function" - | "operator" - | "keyword" - | "literal" - | "nullish" - | "import" - | "object" - | "named" - | "tuple" - | "union"; - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - } - )[]; - - partitionByComment?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ) - | { - block?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - - line?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - }; - - partitionByNewLine?: boolean; - - newlinesBetween?: "ignore" | "always" | "never"; - - groups?: ( - | string - | string[] - | { - newlinesBetween: "ignore" | "always" | "never"; - } - )[]; -}[]; -// ----- perfectionist/sort-variable-declarations ----- -type PerfectionistSortVariableDeclarations = - | [] - | [ - { - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - specialCharacters?: "remove" | "trim" | "keep"; - - ignoreCase?: boolean; - - alphabet?: string; - - locales?: string | string[]; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - customGroups?: ( - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - anyOf?: { - selector?: "initialized" | "uninitialized"; - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - }[]; - } - | { - newlinesInside?: "always" | "never"; - - fallbackSort?: { - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - }; - - groupName: string; - - order?: "asc" | "desc"; - - type?: "alphabetical" | "natural" | "line-length" | "custom" | "unsorted"; - - selector?: "initialized" | "uninitialized"; - - elementNamePattern?: - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ); - } - )[]; - - partitionByComment?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ) - | { - block?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - - line?: - | boolean - | ( - | ( - | { - pattern: string; - - flags?: string; - } - | string - )[] - | ( - | { - pattern: string; - - flags?: string; - } - | string - ) - ); - }; - - partitionByNewLine?: boolean; - - newlinesBetween?: "ignore" | "always" | "never"; - - groups?: ( - | string - | string[] - | { - newlinesBetween: "ignore" | "always" | "never"; - } - )[]; - }, - ]; -// ----- playwright/expect-expect ----- -type PlaywrightExpectExpect = - | [] - | [ - { - additionalAssertFunctionNames?: [] | [string]; - }, - ]; -// ----- playwright/max-nested-describe ----- -type PlaywrightMaxNestedDescribe = - | [] - | [ - { - max?: number; - }, - ]; -// ----- playwright/missing-playwright-await ----- -type PlaywrightMissingPlaywrightAwait = - | [] - | [ - { - customMatchers?: string[]; - }, - ]; -// ----- playwright/no-restricted-matchers ----- -type PlaywrightNoRestrictedMatchers = - | [] - | [ - { - [k: string]: (string | null) | undefined; - }, - ]; -// ----- playwright/no-skipped-test ----- -type PlaywrightNoSkippedTest = - | [] - | [ - { - allowConditional?: boolean; - }, - ]; -// ----- playwright/prefer-lowercase-title ----- -type PlaywrightPreferLowercaseTitle = - | [] - | [ - { - allowedPrefixes?: string[]; - ignore?: ("test.describe" | "test")[]; - ignoreTopLevelDescribe?: boolean; - }, - ]; -// ----- playwright/require-top-level-describe ----- -type PlaywrightRequireTopLevelDescribe = - | [] - | [ - { - maxTopLevelDescribes?: number; - }, - ]; -// ----- playwright/valid-expect ----- -type PlaywrightValidExpect = - | [] - | [ - { - maxArgs?: number; - minArgs?: number; - }, - ]; -// ----- promise/always-return ----- -type PromiseAlwaysReturn = - | [] - | [ - { - ignoreLastCallback?: boolean; - ignoreAssignmentVariable?: string[]; - }, - ]; -// ----- promise/catch-or-return ----- -type PromiseCatchOrReturn = - | [] - | [ - { - allowFinally?: boolean; - allowThen?: boolean; - allowThenStrict?: boolean; - terminationMethod?: string | string[]; - }, - ]; -// ----- promise/no-callback-in-promise ----- -type PromiseNoCallbackInPromise = - | [] - | [ - { - exceptions?: string[]; - timeoutsErr?: boolean; - }, - ]; -// ----- promise/no-return-wrap ----- -type PromiseNoReturnWrap = - | [] - | [ - { - allowReject?: boolean; - }, - ]; -// ----- promise/param-names ----- -type PromiseParamNames = - | [] - | [ - { - resolvePattern?: string; - rejectPattern?: string; - }, - ]; -// ----- promise/prefer-await-to-then ----- -type PromisePreferAwaitToThen = - | [] - | [ - { - strict?: boolean; - [k: string]: unknown | undefined; - }, - ]; -// ----- promise/spec-only ----- -type PromiseSpecOnly = - | [] - | [ - { - allowedMethods?: string[]; - }, - ]; -// ----- promise/valid-params ----- -type PromiseValidParams = - | [] - | [ - { - exclude?: string[]; - }, - ]; -// ----- react-dom/no-unknown-property ----- -type ReactDomNoUnknownProperty = - | [] - | [ - { - ignore?: string[]; - requireDataLowercase?: boolean; - }, - ]; -// ----- react-hooks/exhaustive-deps ----- -type ReactHooksExhaustiveDeps = - | [] - | [ - { - additionalHooks?: string; - enableDangerousAutofixThisMayCauseInfiniteLoops?: boolean; - }, - ]; -// ----- react-naming-convention/component-name ----- -type ReactNamingConventionComponentName = - | [] - | [ - | ("PascalCase" | "CONSTANT_CASE") - | { - allowAllCaps?: boolean; - allowLeadingUnderscore?: boolean; - allowNamespace?: boolean; - excepts?: string[]; - rule?: "PascalCase" | "CONSTANT_CASE"; - }, - ]; -// ----- react-naming-convention/filename ----- -type ReactNamingConventionFilename = - | [] - | [ - | ("PascalCase" | "camelCase" | "kebab-case" | "snake_case") - | { - excepts?: string[]; - extensions?: string[]; - rule?: "PascalCase" | "camelCase" | "kebab-case" | "snake_case"; - }, - ]; -// ----- react-naming-convention/filename-extension ----- -type ReactNamingConventionFilenameExtension = - | [] - | [ - | ("always" | "as-needed") - | { - allow?: "always" | "as-needed"; - extensions?: string[]; - ignoreFilesWithoutCode?: boolean; - }, - ]; -// ----- react-refresh/only-export-components ----- -type ReactRefreshOnlyExportComponents = - | [] - | [ - { - allowExportNames?: string[]; - allowConstantExport?: boolean; - customHOCs?: string[]; - checkJS?: boolean; - }, - ]; -// ----- react-x/no-useless-fragment ----- -type ReactXNoUselessFragment = - | [] - | [ - { - allowExpressions?: boolean; - }, - ]; -// ----- react/boolean-prop-naming ----- -type ReactBooleanPropNaming = - | [] - | [ - { - propTypeNames?: [string, ...string[]]; - rule?: string; - message?: string; - validateNested?: boolean; - }, - ]; -// ----- react/button-has-type ----- -type ReactButtonHasType = - | [] - | [ - { - button?: boolean; - submit?: boolean; - reset?: boolean; - }, - ]; -// ----- react/checked-requires-onchange-or-readonly ----- -type ReactCheckedRequiresOnchangeOrReadonly = - | [] - | [ - { - ignoreMissingProperties?: boolean; - ignoreExclusiveCheckedAttribute?: boolean; - }, - ]; -// ----- react/default-props-match-prop-types ----- -type ReactDefaultPropsMatchPropTypes = - | [] - | [ - { - allowRequiredDefaults?: boolean; - }, - ]; -// ----- react/destructuring-assignment ----- -type ReactDestructuringAssignment = - | [] - | ["always" | "never"] - | [ - "always" | "never", - { - ignoreClassFields?: boolean; - destructureInSignature?: "always" | "ignore"; - }, - ]; -// ----- react/display-name ----- -type ReactDisplayName = - | [] - | [ - { - ignoreTranspilerName?: boolean; - checkContextObjects?: boolean; - }, - ]; -// ----- react/forbid-component-props ----- -type ReactForbidComponentProps = - | [] - | [ - { - forbid?: ( - | string - | { - propName?: string; - allowedFor?: string[]; - allowedForPatterns?: string[]; - message?: string; - } - | ( - | { - [k: string]: unknown | undefined; - } - | { - [k: string]: unknown | undefined; - } - ) - | { - propNamePattern?: string; - allowedFor?: string[]; - allowedForPatterns?: string[]; - message?: string; - } - | ( - | { - [k: string]: unknown | undefined; - } - | { - [k: string]: unknown | undefined; - } - ) - )[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- react/forbid-dom-props ----- -type ReactForbidDomProps = - | [] - | [ - { - forbid?: ( - | string - | { - propName?: string; - disallowedFor?: string[]; - message?: string; - [k: string]: unknown | undefined; - } - )[]; - }, - ]; -// ----- react/forbid-elements ----- -type ReactForbidElements = - | [] - | [ - { - forbid?: ( - | string - | { - element: string; - message?: string; - } - )[]; - }, - ]; -// ----- react/forbid-foreign-prop-types ----- -type ReactForbidForeignPropTypes = - | [] - | [ - { - allowInPropTypes?: boolean; - }, - ]; -// ----- react/forbid-prop-types ----- -type ReactForbidPropTypes = - | [] - | [ - { - forbid?: string[]; - checkContextTypes?: boolean; - checkChildContextTypes?: boolean; - [k: string]: unknown | undefined; - }, - ]; -// ----- react/function-component-definition ----- -type ReactFunctionComponentDefinition = - | [] - | [ - { - namedComponents?: - | ("function-declaration" | "arrow-function" | "function-expression") - | ("function-declaration" | "arrow-function" | "function-expression")[]; - unnamedComponents?: ("arrow-function" | "function-expression") | ("arrow-function" | "function-expression")[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- react/hook-use-state ----- -type ReactHookUseState = - | [] - | [ - { - allowDestructuredState?: boolean; - }, - ]; -// ----- react/jsx-boolean-value ----- -type ReactJsxBooleanValue = - | [] - | ["always" | "never"] - | [] - | ["always"] - | [ - "always", - { - never?: string[]; - assumeUndefinedIsFalse?: boolean; - }, - ] - | [] - | ["never"] - | [ - "never", - { - always?: string[]; - assumeUndefinedIsFalse?: boolean; - }, - ]; -// ----- react/jsx-closing-bracket-location ----- -type ReactJsxClosingBracketLocation = - | [] - | [ - | ("after-props" | "props-aligned" | "tag-aligned" | "line-aligned") - | { - location?: "after-props" | "props-aligned" | "tag-aligned" | "line-aligned"; - } - | { - nonEmpty?: "after-props" | "props-aligned" | "tag-aligned" | "line-aligned" | false; - selfClosing?: "after-props" | "props-aligned" | "tag-aligned" | "line-aligned" | false; - }, - ]; -// ----- react/jsx-closing-tag-location ----- -type ReactJsxClosingTagLocation = - | [] - | [ - | ("tag-aligned" | "line-aligned") - | { - location?: "tag-aligned" | "line-aligned"; - }, - ]; -// ----- react/jsx-curly-brace-presence ----- -type ReactJsxCurlyBracePresence = - | [] - | [ - | { - props?: "always" | "never" | "ignore"; - children?: "always" | "never" | "ignore"; - propElementValues?: "always" | "never" | "ignore"; - } - | ("always" | "never" | "ignore"), - ]; -// ----- react/jsx-curly-newline ----- -type ReactJsxCurlyNewline = - | [] - | [ - | ("consistent" | "never") - | { - singleline?: "consistent" | "require" | "forbid"; - multiline?: "consistent" | "require" | "forbid"; - }, - ]; -// ----- react/jsx-curly-spacing ----- -type ReactJsxCurlySpacing = - | [] - | [ - | (_ReactJsxCurlySpacing_BasicConfig & { - attributes?: _ReactJsxCurlySpacingBasicConfigOrBoolean; - children?: _ReactJsxCurlySpacingBasicConfigOrBoolean; - [k: string]: unknown | undefined; - }) - | ("always" | "never"), - ] - | [ - ( - | (_ReactJsxCurlySpacing_BasicConfig & { - attributes?: _ReactJsxCurlySpacingBasicConfigOrBoolean; - children?: _ReactJsxCurlySpacingBasicConfigOrBoolean; - [k: string]: unknown | undefined; - }) - | ("always" | "never") - ), - { - allowMultiline?: boolean; - spacing?: { - objectLiterals?: "always" | "never"; - [k: string]: unknown | undefined; - }; - }, - ]; -type _ReactJsxCurlySpacingBasicConfigOrBoolean = _ReactJsxCurlySpacing_BasicConfig | boolean; -interface _ReactJsxCurlySpacing_BasicConfig { - when?: "always" | "never"; - allowMultiline?: boolean; - spacing?: { - objectLiterals?: "always" | "never"; - [k: string]: unknown | undefined; - }; - [k: string]: unknown | undefined; -} -// ----- react/jsx-equals-spacing ----- -type ReactJsxEqualsSpacing = [] | ["always" | "never"]; -// ----- react/jsx-filename-extension ----- -type ReactJsxFilenameExtension = - | [] - | [ - { - allow?: "always" | "as-needed"; - extensions?: string[]; - ignoreFilesWithoutCode?: boolean; - }, - ]; -// ----- react/jsx-first-prop-new-line ----- -type ReactJsxFirstPropNewLine = [] | ["always" | "never" | "multiline" | "multiline-multiprop" | "multiprop"]; -// ----- react/jsx-fragments ----- -type ReactJsxFragments = [] | ["syntax" | "element"]; -// ----- react/jsx-handler-names ----- -type ReactJsxHandlerNames = - | [] - | [ - | { - eventHandlerPrefix?: string; - eventHandlerPropPrefix?: string; - checkLocalVariables?: boolean; - checkInlineFunction?: boolean; - ignoreComponentNames?: string[]; - } - | { - eventHandlerPrefix?: string; - eventHandlerPropPrefix?: false; - checkLocalVariables?: boolean; - checkInlineFunction?: boolean; - ignoreComponentNames?: string[]; - } - | { - eventHandlerPrefix?: false; - eventHandlerPropPrefix?: string; - checkLocalVariables?: boolean; - checkInlineFunction?: boolean; - ignoreComponentNames?: string[]; - } - | { - checkLocalVariables?: boolean; - } - | { - checkInlineFunction?: boolean; - } - | { - ignoreComponentNames?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- react/jsx-indent ----- -type ReactJsxIndent = - | [] - | ["tab" | number] - | [ - "tab" | number, - { - checkAttributes?: boolean; - indentLogicalExpressions?: boolean; - }, - ]; -// ----- react/jsx-indent-props ----- -type ReactJsxIndentProps = - | [] - | [ - | ("tab" | "first") - | number - | { - indentMode?: ("tab" | "first") | number; - ignoreTernaryOperator?: boolean; - [k: string]: unknown | undefined; - }, - ]; -// ----- react/jsx-key ----- -type ReactJsxKey = - | [] - | [ - { - checkFragmentShorthand?: boolean; - checkKeyMustBeforeSpread?: boolean; - warnOnDuplicates?: boolean; - }, - ]; -// ----- react/jsx-max-depth ----- -type ReactJsxMaxDepth = - | [] - | [ - { - max?: number; - }, - ]; -// ----- react/jsx-max-props-per-line ----- -type ReactJsxMaxPropsPerLine = - | [] - | [ - | { - maximum?: { - single?: number; - multi?: number; - [k: string]: unknown | undefined; - }; - } - | { - maximum?: number; - when?: "always" | "multiline"; - }, - ]; -// ----- react/jsx-newline ----- -type ReactJsxNewline = - | [] - | [ - { - prevent?: boolean; - allowMultilines?: boolean; - }, - ]; -// ----- react/jsx-no-bind ----- -type ReactJsxNoBind = - | [] - | [ - { - allowArrowFunctions?: boolean; - allowBind?: boolean; - allowFunctions?: boolean; - ignoreRefs?: boolean; - ignoreDOMComponents?: boolean; - }, - ]; -// ----- react/jsx-no-duplicate-props ----- -type ReactJsxNoDuplicateProps = - | [] - | [ - { - ignoreCase?: boolean; - }, - ]; -// ----- react/jsx-no-leaked-render ----- -type ReactJsxNoLeakedRender = - | [] - | [ - { - validStrategies?: ("ternary" | "coerce")[]; - }, - ]; -// ----- react/jsx-no-literals ----- -type ReactJsxNoLiterals = - | [] - | [ - { - elementOverrides?: { - [k: string]: { - applyToNestedElements?: boolean; - noStrings?: boolean; - allowedStrings?: string[]; - ignoreProps?: boolean; - noAttributeStrings?: boolean; - [k: string]: unknown | undefined; - }; - }; - noStrings?: boolean; - allowedStrings?: string[]; - ignoreProps?: boolean; - noAttributeStrings?: boolean; - }, - ]; -// ----- react/jsx-no-script-url ----- -type ReactJsxNoScriptUrl = - | [] - | [ - { - name: string; - props: string[]; - }[], - ] - | [ - { - name: string; - props: string[]; - }[], - { - includeFromSettings?: boolean; - [k: string]: unknown | undefined; - }, - ] - | [] - | [ - { - includeFromSettings?: boolean; - [k: string]: unknown | undefined; - }, - ]; -// ----- react/jsx-no-target-blank ----- -type ReactJsxNoTargetBlank = - | [] - | [ - { - allowReferrer?: boolean; - enforceDynamicLinks?: "always" | "never"; - warnOnSpreadAttributes?: boolean; - links?: boolean; - forms?: boolean; - }, - ]; -// ----- react/jsx-no-undef ----- -type ReactJsxNoUndef = - | [] - | [ - { - allowGlobals?: boolean; - }, - ]; -// ----- react/jsx-no-useless-fragment ----- -type ReactJsxNoUselessFragment = - | [] - | [ - { - allowExpressions?: boolean; - [k: string]: unknown | undefined; - }, - ]; -// ----- react/jsx-one-expression-per-line ----- -type ReactJsxOneExpressionPerLine = - | [] - | [ - { - allow?: "none" | "literal" | "single-child" | "non-jsx"; - }, - ]; -// ----- react/jsx-pascal-case ----- -type ReactJsxPascalCase = - | [] - | [ - { - allowAllCaps?: boolean; - allowLeadingUnderscore?: boolean; - allowNamespace?: boolean; - - ignore?: [] | [string]; - }, - ]; -// ----- react/jsx-props-no-spreading ----- -type ReactJsxPropsNoSpreading = - | [] - | [ - { - html?: "enforce" | "ignore"; - custom?: "enforce" | "ignore"; - explicitSpread?: "enforce" | "ignore"; - exceptions?: string[]; - [k: string]: unknown | undefined; - } & { - [k: string]: unknown | undefined; - }, - ]; -// ----- react/jsx-sort-default-props ----- -type ReactJsxSortDefaultProps = - | [] - | [ - { - ignoreCase?: boolean; - }, - ]; -// ----- react/jsx-sort-props ----- -type ReactJsxSortProps = - | [] - | [ - { - callbacksLast?: boolean; - shorthandFirst?: boolean; - shorthandLast?: boolean; - multiline?: "ignore" | "first" | "last"; - ignoreCase?: boolean; - noSortAlphabetically?: boolean; - reservedFirst?: unknown[] | boolean; - locale?: string; - }, - ]; -// ----- react/jsx-space-before-closing ----- -type ReactJsxSpaceBeforeClosing = [] | ["always" | "never"]; -// ----- react/jsx-tag-spacing ----- -type ReactJsxTagSpacing = - | [] - | [ - { - closingSlash?: "always" | "never" | "allow"; - beforeSelfClosing?: "always" | "proportional-always" | "never" | "allow"; - afterOpening?: "always" | "allow-multiline" | "never" | "allow"; - beforeClosing?: "always" | "proportional-always" | "never" | "allow"; - }, - ]; -// ----- react/jsx-wrap-multilines ----- -type ReactJsxWrapMultilines = - | [] - | [ - { - declaration?: true | false | "ignore" | "parens" | "parens-new-line" | "never"; - assignment?: true | false | "ignore" | "parens" | "parens-new-line" | "never"; - return?: true | false | "ignore" | "parens" | "parens-new-line" | "never"; - arrow?: true | false | "ignore" | "parens" | "parens-new-line" | "never"; - condition?: true | false | "ignore" | "parens" | "parens-new-line" | "never"; - logical?: true | false | "ignore" | "parens" | "parens-new-line" | "never"; - prop?: true | false | "ignore" | "parens" | "parens-new-line" | "never"; - }, - ]; -// ----- react/no-children-prop ----- -type ReactNoChildrenProp = - | [] - | [ - { - allowFunctions?: boolean; - }, - ]; -// ----- react/no-danger ----- -type ReactNoDanger = - | [] - | [ - { - customComponentNames?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- react/no-did-mount-set-state ----- -type ReactNoDidMountSetState = [] | ["disallow-in-func"]; -// ----- react/no-did-update-set-state ----- -type ReactNoDidUpdateSetState = [] | ["disallow-in-func"]; -// ----- react/no-invalid-html-attribute ----- -type ReactNoInvalidHtmlAttribute = [] | ["rel"[]]; -// ----- react/no-multi-comp ----- -type ReactNoMultiComp = - | [] - | [ - { - ignoreStateless?: boolean; - }, - ]; -// ----- react/no-string-refs ----- -type ReactNoStringRefs = - | [] - | [ - { - noTemplateLiterals?: boolean; - }, - ]; -// ----- react/no-unescaped-entities ----- -type ReactNoUnescapedEntities = - | [] - | [ - { - forbid?: ( - | string - | { - char?: string; - alternatives?: string[]; - [k: string]: unknown | undefined; - } - )[]; - }, - ]; -// ----- react/no-unknown-property ----- -type ReactNoUnknownProperty = - | [] - | [ - { - ignore?: string[]; - requireDataLowercase?: boolean; - }, - ]; -// ----- react/no-unsafe ----- -type ReactNoUnsafe = - | [] - | [ - { - checkAliases?: boolean; - }, - ]; -// ----- react/no-unstable-nested-components ----- -type ReactNoUnstableNestedComponents = - | [] - | [ - { - customValidators?: string[]; - allowAsProps?: boolean; - propNamePattern?: string; - }, - ]; -// ----- react/no-unused-prop-types ----- -type ReactNoUnusedPropTypes = - | [] - | [ - { - ignore?: string[]; - customValidators?: string[]; - skipShapeProps?: boolean; - }, - ]; -// ----- react/no-will-update-set-state ----- -type ReactNoWillUpdateSetState = [] | ["disallow-in-func"]; -// ----- react/prefer-es6-class ----- -type ReactPreferEs6Class = [] | ["always" | "never"]; -// ----- react/prefer-stateless-function ----- -type ReactPreferStatelessFunction = - | [] - | [ - { - ignorePureComponents?: boolean; - }, - ]; -// ----- react/prop-types ----- -type ReactPropTypes = - | [] - | [ - { - ignore?: string[]; - customValidators?: string[]; - skipUndeclared?: boolean; - }, - ]; -// ----- react/require-default-props ----- -type ReactRequireDefaultProps = - | [] - | [ - { - forbidDefaultForRequired?: boolean; - classes?: "defaultProps" | "ignore"; - functions?: "defaultArguments" | "defaultProps" | "ignore"; - ignoreFunctionalComponents?: boolean; - }, - ]; -// ----- react/require-optimization ----- -type ReactRequireOptimization = - | [] - | [ - { - allowDecorators?: string[]; - }, - ]; -// ----- react/self-closing-comp ----- -type ReactSelfClosingComp = - | [] - | [ - { - component?: boolean; - html?: boolean; - }, - ]; -// ----- react/sort-comp ----- -type ReactSortComp = - | [] - | [ - { - order?: string[]; - groups?: { - [k: string]: string[]; - }; - }, - ]; -// ----- react/sort-default-props ----- -type ReactSortDefaultProps = - | [] - | [ - { - ignoreCase?: boolean; - }, - ]; -// ----- react/sort-prop-types ----- -type ReactSortPropTypes = - | [] - | [ - { - requiredFirst?: boolean; - callbacksLast?: boolean; - ignoreCase?: boolean; - noSortAlphabetically?: boolean; - sortShapeProp?: boolean; - checkTypes?: boolean; - }, - ]; -// ----- react/state-in-constructor ----- -type ReactStateInConstructor = [] | ["always" | "never"]; -// ----- react/static-property-placement ----- -type ReactStaticPropertyPlacement = - | [] - | ["static public field" | "static getter" | "property assignment"] - | [ - "static public field" | "static getter" | "property assignment", - { - propTypes?: "static public field" | "static getter" | "property assignment"; - defaultProps?: "static public field" | "static getter" | "property assignment"; - childContextTypes?: "static public field" | "static getter" | "property assignment"; - contextTypes?: "static public field" | "static getter" | "property assignment"; - contextType?: "static public field" | "static getter" | "property assignment"; - displayName?: "static public field" | "static getter" | "property assignment"; - }, - ]; -// ----- react/style-prop-object ----- -type ReactStylePropObject = - | [] - | [ - { - allow?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- regexp/hexadecimal-escape ----- -type RegexpHexadecimalEscape = [] | ["always" | "never"]; -// ----- regexp/letter-case ----- -type RegexpLetterCase = - | [] - | [ - { - caseInsensitive?: "lowercase" | "uppercase" | "ignore"; - unicodeEscape?: "lowercase" | "uppercase" | "ignore"; - hexadecimalEscape?: "lowercase" | "uppercase" | "ignore"; - controlEscape?: "lowercase" | "uppercase" | "ignore"; - }, - ]; -// ----- regexp/match-any ----- -type RegexpMatchAny = - | [] - | [ - { - allows?: ["[\\s\\S]" | "[\\S\\s]" | "[^]" | "dotAll", ...("[\\s\\S]" | "[\\S\\s]" | "[^]" | "dotAll")[]]; - }, - ]; -// ----- regexp/no-dupe-disjunctions ----- -type RegexpNoDupeDisjunctions = - | [] - | [ - { - report?: "all" | "trivial" | "interesting"; - reportExponentialBacktracking?: "none" | "certain" | "potential"; - reportUnreachable?: "certain" | "potential"; - }, - ]; -// ----- regexp/no-lazy-ends ----- -type RegexpNoLazyEnds = - | [] - | [ - { - ignorePartial?: boolean; - }, - ]; -// ----- regexp/no-legacy-features ----- -type RegexpNoLegacyFeatures = - | [] - | [ - { - staticProperties?: ( - | "input" - | "$_" - | "lastMatch" - | "$&" - | "lastParen" - | "$+" - | "leftContext" - | "$`" - | "rightContext" - | "$'" - | "$1" - | "$2" - | "$3" - | "$4" - | "$5" - | "$6" - | "$7" - | "$8" - | "$9" - )[]; - prototypeMethods?: "compile"[]; - }, - ]; -// ----- regexp/no-misleading-capturing-group ----- -type RegexpNoMisleadingCapturingGroup = - | [] - | [ - { - reportBacktrackingEnds?: boolean; - }, - ]; -// ----- regexp/no-misleading-unicode-character ----- -type RegexpNoMisleadingUnicodeCharacter = - | [] - | [ - { - fixable?: boolean; - }, - ]; -// ----- regexp/no-missing-g-flag ----- -type RegexpNoMissingGFlag = - | [] - | [ - { - strictTypes?: boolean; - }, - ]; -// ----- regexp/no-obscure-range ----- -type RegexpNoObscureRange = - | [] - | [ - { - allowed?: ("all" | "alphanumeric") | ["all" | "alphanumeric"] | ["alphanumeric" | string, ...("alphanumeric" | string)[]]; - }, - ]; -// ----- regexp/no-super-linear-backtracking ----- -type RegexpNoSuperLinearBacktracking = - | [] - | [ - { - report?: "certain" | "potential"; - }, - ]; -// ----- regexp/no-super-linear-move ----- -type RegexpNoSuperLinearMove = - | [] - | [ - { - report?: "certain" | "potential"; - ignoreSticky?: boolean; - ignorePartial?: boolean; - }, - ]; -// ----- regexp/no-unused-capturing-group ----- -type RegexpNoUnusedCapturingGroup = - | [] - | [ - { - fixable?: boolean; - allowNamed?: boolean; - }, - ]; -// ----- regexp/no-useless-character-class ----- -type RegexpNoUselessCharacterClass = - | [] - | [ - { - ignores?: string[]; - }, - ]; -// ----- regexp/no-useless-flag ----- -type RegexpNoUselessFlag = - | [] - | [ - { - ignore?: ("i" | "m" | "s" | "g" | "y")[]; - strictTypes?: boolean; - }, - ]; -// ----- regexp/no-useless-non-capturing-group ----- -type RegexpNoUselessNonCapturingGroup = - | [] - | [ - { - allowTop?: boolean | ("always" | "never" | "partial"); - }, - ]; -// ----- regexp/optimal-quantifier-concatenation ----- -type RegexpOptimalQuantifierConcatenation = - | [] - | [ - { - capturingGroups?: "ignore" | "report"; - }, - ]; -// ----- regexp/prefer-character-class ----- -type RegexpPreferCharacterClass = - | [] - | [ - { - minAlternatives?: number; - }, - ]; -// ----- regexp/prefer-d ----- -type RegexpPreferD = - | [] - | [ - { - insideCharacterClass?: "ignore" | "range" | "d"; - }, - ]; -// ----- regexp/prefer-lookaround ----- -type RegexpPreferLookaround = - | [] - | [ - { - lookbehind?: boolean; - strictTypes?: boolean; - }, - ]; -// ----- regexp/prefer-named-replacement ----- -type RegexpPreferNamedReplacement = - | [] - | [ - { - strictTypes?: boolean; - }, - ]; -// ----- regexp/prefer-range ----- -type RegexpPreferRange = - | [] - | [ - { - target?: ("all" | "alphanumeric") | ["all" | "alphanumeric"] | ["alphanumeric" | string, ...("alphanumeric" | string)[]]; - }, - ]; -// ----- regexp/prefer-result-array-groups ----- -type RegexpPreferResultArrayGroups = - | [] - | [ - { - strictTypes?: boolean; - }, - ]; -// ----- regexp/sort-character-class-elements ----- -type RegexpSortCharacterClassElements = - | [] - | [ - { - order?: ("\\s" | "\\w" | "\\d" | "\\p" | "*" | "\\q" | "[]")[]; - }, - ]; -// ----- regexp/unicode-escape ----- -type RegexpUnicodeEscape = [] | ["unicodeCodePointEscape" | "unicodeEscape"]; -// ----- regexp/unicode-property ----- -type RegexpUnicodeProperty = - | [] - | [ - { - generalCategory?: "always" | "never" | "ignore"; - key?: "short" | "long" | "ignore"; - property?: - | ("short" | "long" | "ignore") - | { - binary?: "short" | "long" | "ignore"; - generalCategory?: "short" | "long" | "ignore"; - script?: "short" | "long" | "ignore"; - }; - }, - ]; -// ----- simple-import-sort/imports ----- -type SimpleImportSortImports = - | [] - | [ - { - groups?: string[][]; - }, - ]; -// ----- sonarjs/arguments-order ----- -type SonarjsArgumentsOrder = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/arguments-usage ----- -type SonarjsArgumentsUsage = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/arrow-function-convention ----- -type SonarjsArrowFunctionConvention = - | [] - | [ - { - requireParameterParentheses?: boolean; - requireBodyBraces?: boolean; - }, - ]; -// ----- sonarjs/aws-iam-all-privileges ----- -type SonarjsAwsIamAllPrivileges = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/aws-iam-all-resources-accessible ----- -type SonarjsAwsIamAllResourcesAccessible = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/aws-iam-privilege-escalation ----- -type SonarjsAwsIamPrivilegeEscalation = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/aws-iam-public-access ----- -type SonarjsAwsIamPublicAccess = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/aws-s3-bucket-granted-access ----- -type SonarjsAwsS3BucketGrantedAccess = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/aws-s3-bucket-public-access ----- -type SonarjsAwsS3BucketPublicAccess = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/aws-s3-bucket-server-encryption ----- -type SonarjsAwsS3BucketServerEncryption = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/aws-s3-bucket-versioning ----- -type SonarjsAwsS3BucketVersioning = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/block-scoped-var ----- -type SonarjsBlockScopedVar = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/certificate-transparency ----- -type SonarjsCertificateTransparency = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/class-name ----- -type SonarjsClassName = - | [] - | [ - { - format?: string; - }, - ]; -// ----- sonarjs/cognitive-complexity ----- -type SonarjsCognitiveComplexity = [] | [number | string] | [number | string, string]; -// ----- sonarjs/comment-regex ----- -type SonarjsCommentRegex = - | [] - | [ - { - regularExpression?: string; - message?: string; - flags?: string; - }, - ]; -// ----- sonarjs/conditional-indentation ----- -type SonarjsConditionalIndentation = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/confidential-information-logging ----- -type SonarjsConfidentialInformationLogging = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/content-length ----- -type SonarjsContentLength = - | [] - | [ - { - fileUploadSizeLimit?: number; - standardSizeLimit?: number; - }, - ]; -// ----- sonarjs/content-security-policy ----- -type SonarjsContentSecurityPolicy = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/cookie-no-httponly ----- -type SonarjsCookieNoHttponly = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/cors ----- -type SonarjsCors = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/csrf ----- -type SonarjsCsrf = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/cyclomatic-complexity ----- -type SonarjsCyclomaticComplexity = - | [] - | [ - { - threshold?: number; - }, - ] - | [ - { - threshold?: number; - }, - "sonar-runtime" | "metric", - ]; -// ----- sonarjs/destructuring-assignment-syntax ----- -type SonarjsDestructuringAssignmentSyntax = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/different-types-comparison ----- -type SonarjsDifferentTypesComparison = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/disabled-auto-escaping ----- -type SonarjsDisabledAutoEscaping = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/dns-prefetching ----- -type SonarjsDnsPrefetching = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/duplicates-in-character-class ----- -type SonarjsDuplicatesInCharacterClass = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/enforce-trailing-comma ----- -type SonarjsEnforceTrailingComma = - | [] - | [ - | _SonarjsEnforceTrailingCommaValue - | { - arrays?: _SonarjsEnforceTrailingCommaValueWithIgnore; - objects?: _SonarjsEnforceTrailingCommaValueWithIgnore; - imports?: _SonarjsEnforceTrailingCommaValueWithIgnore; - exports?: _SonarjsEnforceTrailingCommaValueWithIgnore; - functions?: _SonarjsEnforceTrailingCommaValueWithIgnore; - }, - ]; -type _SonarjsEnforceTrailingCommaValue = "always-multiline" | "always" | "never" | "only-multiline"; -type _SonarjsEnforceTrailingCommaValueWithIgnore = "always-multiline" | "always" | "ignore" | "never" | "only-multiline"; -// ----- sonarjs/expression-complexity ----- -type SonarjsExpressionComplexity = - | [] - | [ - { - max?: number; - }, - ] - | [ - { - max?: number; - }, - "sonar-runtime" | "metric", - ]; -// ----- sonarjs/file-header ----- -type SonarjsFileHeader = - | [] - | [ - { - headerFormat?: string; - isRegularExpression?: boolean; - }, - ]; -// ----- sonarjs/file-uploads ----- -type SonarjsFileUploads = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/for-loop-increment-sign ----- -type SonarjsForLoopIncrementSign = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/frame-ancestors ----- -type SonarjsFrameAncestors = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/function-inside-loop ----- -type SonarjsFunctionInsideLoop = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/function-name ----- -type SonarjsFunctionName = - | [] - | [ - { - format?: string; - }, - ]; -// ----- sonarjs/function-return-type ----- -type SonarjsFunctionReturnType = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/in-operator-type-error ----- -type SonarjsInOperatorTypeError = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/inconsistent-function-call ----- -type SonarjsInconsistentFunctionCall = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/insecure-cookie ----- -type SonarjsInsecureCookie = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/insecure-jwt-token ----- -type SonarjsInsecureJwtToken = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/inverted-assertion-arguments ----- -type SonarjsInvertedAssertionArguments = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/max-lines ----- -type SonarjsMaxLines = - | [] - | [ - { - maximum?: number; - }, - ]; -// ----- sonarjs/max-lines-per-function ----- -type SonarjsMaxLinesPerFunction = - | [] - | [ - { - maximum?: number; - }, - ]; -// ----- sonarjs/max-switch-cases ----- -type SonarjsMaxSwitchCases = [] | [number]; -// ----- sonarjs/max-union-size ----- -type SonarjsMaxUnionSize = - | [] - | [ - { - threshold?: number; - }, - ]; -// ----- sonarjs/nested-control-flow ----- -type SonarjsNestedControlFlow = - | [] - | [ - { - maximumNestingLevel?: number; - }, - ] - | [ - { - maximumNestingLevel?: number; - }, - "sonar-runtime" | "metric", - ]; -// ----- sonarjs/new-operator-misuse ----- -type SonarjsNewOperatorMisuse = - | [] - | [ - { - considerJSDoc?: boolean; - }, - ] - | [ - { - considerJSDoc?: boolean; - }, - unknown, - ]; -// ----- sonarjs/no-code-after-done ----- -type SonarjsNoCodeAfterDone = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/no-collapsible-if ----- -type SonarjsNoCollapsibleIf = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/no-duplicate-in-composite ----- -type SonarjsNoDuplicateInComposite = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/no-duplicate-string ----- -type SonarjsNoDuplicateString = - | [] - | [ - { - threshold?: number; - ignoreStrings?: string; - }, - ] - | [ - { - threshold?: number; - ignoreStrings?: string; - }, - "sonar-runtime" | "metric", - ]; -// ----- sonarjs/no-duplicated-branches ----- -type SonarjsNoDuplicatedBranches = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/no-element-overwrite ----- -type SonarjsNoElementOverwrite = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/no-extra-arguments ----- -type SonarjsNoExtraArguments = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/no-gratuitous-expressions ----- -type SonarjsNoGratuitousExpressions = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/no-hardcoded-passwords ----- -type SonarjsNoHardcodedPasswords = - | [] - | [ - { - passwordWords?: string[]; - }, - ]; -// ----- sonarjs/no-hardcoded-secrets ----- -type SonarjsNoHardcodedSecrets = - | [] - | [ - { - secretWords?: string; - randomnessSensibility?: number; - }, - ]; -// ----- sonarjs/no-identical-conditions ----- -type SonarjsNoIdenticalConditions = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/no-identical-expressions ----- -type SonarjsNoIdenticalExpressions = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/no-identical-functions ----- -type SonarjsNoIdenticalFunctions = [] | [number] | [number, "sonar-runtime" | "metric"]; -// ----- sonarjs/no-implicit-dependencies ----- -type SonarjsNoImplicitDependencies = - | [] - | [ - { - whitelist?: string[]; - }, - ]; -// ----- sonarjs/no-inconsistent-returns ----- -type SonarjsNoInconsistentReturns = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/no-incorrect-string-concat ----- -type SonarjsNoIncorrectStringConcat = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/no-intrusive-permissions ----- -type SonarjsNoIntrusivePermissions = - | [] - | [ - { - permissions?: string[]; - }, - ]; -// ----- sonarjs/no-invariant-returns ----- -type SonarjsNoInvariantReturns = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/no-ip-forward ----- -type SonarjsNoIpForward = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/no-mime-sniff ----- -type SonarjsNoMimeSniff = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/no-mixed-content ----- -type SonarjsNoMixedContent = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/no-nested-functions ----- -type SonarjsNoNestedFunctions = - | [] - | [ - { - threshold?: number; - }, - ] - | [ - { - threshold?: number; - }, - "sonar-runtime" | "metric", - ]; -// ----- sonarjs/no-redundant-optional ----- -type SonarjsNoRedundantOptional = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/no-redundant-parentheses ----- -type SonarjsNoRedundantParentheses = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/no-reference-error ----- -type SonarjsNoReferenceError = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/no-referrer-policy ----- -type SonarjsNoReferrerPolicy = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/no-same-argument-assert ----- -type SonarjsNoSameArgumentAssert = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/no-same-line-conditional ----- -type SonarjsNoSameLineConditional = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/no-selector-parameter ----- -type SonarjsNoSelectorParameter = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/no-try-promise ----- -type SonarjsNoTryPromise = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/no-variable-usage-before-declaration ----- -type SonarjsNoVariableUsageBeforeDeclaration = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/non-number-in-arithmetic-expression ----- -type SonarjsNonNumberInArithmeticExpression = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/regex-complexity ----- -type SonarjsRegexComplexity = - | [] - | [ - { - threshold?: number; - }, - ] - | [ - { - threshold?: number; - }, - "sonar-runtime" | "metric", - ]; -// ----- sonarjs/shorthand-property-grouping ----- -type SonarjsShorthandPropertyGrouping = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/stateful-regex ----- -type SonarjsStatefulRegex = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/strict-transport-security ----- -type SonarjsStrictTransportSecurity = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/strings-comparison ----- -type SonarjsStringsComparison = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/too-many-break-or-continue-in-loop ----- -type SonarjsTooManyBreakOrContinueInLoop = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/unicode-aware-regex ----- -type SonarjsUnicodeAwareRegex = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/unused-named-groups ----- -type SonarjsUnusedNamedGroups = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/unverified-certificate ----- -type SonarjsUnverifiedCertificate = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/unverified-hostname ----- -type SonarjsUnverifiedHostname = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/updated-const-var ----- -type SonarjsUpdatedConstVar = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/updated-loop-counter ----- -type SonarjsUpdatedLoopCounter = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/use-type-alias ----- -type SonarjsUseTypeAlias = [] | ["sonar-runtime" | "metric"]; -// ----- sonarjs/variable-name ----- -type SonarjsVariableName = - | [] - | [ - { - format?: string; - }, - ]; -// ----- sonarjs/xml-parser-xxe ----- -type SonarjsXmlParserXxe = [] | ["sonar-runtime" | "metric"]; -// ----- storybook/meta-inline-properties ----- -type StorybookMetaInlineProperties = - | [] - | [ - { - csfVersion?: number; - }, - ]; -// ----- storybook/no-uninstalled-addons ----- -type StorybookNoUninstalledAddons = - | [] - | [ - { - packageJsonLocation?: string; - ignore?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- tailwindcss/classnames-order ----- -type TailwindcssClassnamesOrder = - | [] - | [ - { - callees?: string[]; - ignoredKeys?: string[]; - config?: - | string - | { - [k: string]: unknown | undefined; - }; - removeDuplicates?: boolean; - tags?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- tailwindcss/enforces-negative-arbitrary-values ----- -type TailwindcssEnforcesNegativeArbitraryValues = - | [] - | [ - { - callees?: string[]; - ignoredKeys?: string[]; - config?: - | string - | { - [k: string]: unknown | undefined; - }; - tags?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- tailwindcss/enforces-shorthand ----- -type TailwindcssEnforcesShorthand = - | [] - | [ - { - callees?: string[]; - ignoredKeys?: string[]; - config?: - | string - | { - [k: string]: unknown | undefined; - }; - tags?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- tailwindcss/migration-from-tailwind-2 ----- -type TailwindcssMigrationFromTailwind2 = - | [] - | [ - { - callees?: string[]; - ignoredKeys?: string[]; - config?: - | string - | { - [k: string]: unknown | undefined; - }; - tags?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- tailwindcss/no-arbitrary-value ----- -type TailwindcssNoArbitraryValue = - | [] - | [ - { - callees?: string[]; - ignoredKeys?: string[]; - config?: - | string - | { - [k: string]: unknown | undefined; - }; - tags?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- tailwindcss/no-contradicting-classname ----- -type TailwindcssNoContradictingClassname = - | [] - | [ - { - callees?: string[]; - ignoredKeys?: string[]; - config?: - | string - | { - [k: string]: unknown | undefined; - }; - tags?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- tailwindcss/no-custom-classname ----- -type TailwindcssNoCustomClassname = - | [] - | [ - { - callees?: string[]; - ignoredKeys?: string[]; - config?: - | string - | { - [k: string]: unknown | undefined; - }; - cssFiles?: string[]; - cssFilesRefreshRate?: number; - tags?: string[]; - whitelist?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- tailwindcss/no-unnecessary-arbitrary-value ----- -type TailwindcssNoUnnecessaryArbitraryValue = - | [] - | [ - { - callees?: string[]; - ignoredKeys?: string[]; - config?: - | string - | { - [k: string]: unknown | undefined; - }; - tags?: string[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- testing-library/await-async-events ----- -type TestingLibraryAwaitAsyncEvents = - | [] - | [ - { - eventModule?: ("fireEvent" | "userEvent") | ("fireEvent" | "userEvent")[]; - }, - ]; -// ----- testing-library/consistent-data-testid ----- -type TestingLibraryConsistentDataTestid = - | [] - | [ - { - testIdPattern: string; - testIdAttribute?: string | string[]; - customMessage?: string; - }, - ]; -// ----- testing-library/no-await-sync-events ----- -type TestingLibraryNoAwaitSyncEvents = - | [] - | [ - { - eventModules?: ["fire-event" | "user-event", ...("fire-event" | "user-event")[]]; - }, - ]; -// ----- testing-library/no-debugging-utils ----- -type TestingLibraryNoDebuggingUtils = - | [] - | [ - { - utilsToCheckFor?: { - prettyFormat?: boolean; - logDOM?: boolean; - logRoles?: boolean; - prettyDOM?: boolean; - logTestingPlaygroundURL?: boolean; - debug?: boolean; - }; - }, - ]; -// ----- testing-library/no-dom-import ----- -type TestingLibraryNoDomImport = [] | [string]; -// ----- testing-library/no-node-access ----- -type TestingLibraryNoNodeAccess = - | [] - | [ - { - allowContainerFirstChild?: boolean; - [k: string]: unknown | undefined; - }, - ]; -// ----- testing-library/no-render-in-lifecycle ----- -type TestingLibraryNoRenderInLifecycle = - | [] - | [ - { - allowTestingFrameworkSetupHook?: "beforeEach" | "beforeAll"; - [k: string]: unknown | undefined; - }, - ]; -// ----- testing-library/no-unnecessary-act ----- -type TestingLibraryNoUnnecessaryAct = - | [] - | [ - { - isStrict?: boolean; - [k: string]: unknown | undefined; - }, - ]; -// ----- testing-library/prefer-explicit-assert ----- -type TestingLibraryPreferExplicitAssert = - | [] - | [ - { - assertion?: "toBeOnTheScreen" | "toBeInTheDocument" | "toBeTruthy" | "toBeDefined"; - includeFindQueries?: boolean; - }, - ]; -// ----- testing-library/prefer-presence-queries ----- -type TestingLibraryPreferPresenceQueries = - | [] - | [ - { - presence?: boolean; - absence?: boolean; - }, - ]; -// ----- testing-library/prefer-query-matchers ----- -type TestingLibraryPreferQueryMatchers = - | [] - | [ - { - validEntries?: { - query?: "get" | "query"; - matcher?: string; - [k: string]: unknown | undefined; - }[]; - }, - ]; -// ----- testing-library/prefer-user-event ----- -type TestingLibraryPreferUserEvent = - | [] - | [ - { - allowedMethods?: unknown[]; - [k: string]: unknown | undefined; - }, - ]; -// ----- toml/array-bracket-newline ----- -type TomlArrayBracketNewline = - | [] - | [ - | ("always" | "never" | "consistent") - | { - multiline?: boolean; - minItems?: number | null; - }, - ]; -// ----- toml/array-bracket-spacing ----- -type TomlArrayBracketSpacing = - | [] - | ["always" | "never"] - | [ - "always" | "never", - { - singleValue?: boolean; - objectsInArrays?: boolean; - arraysInArrays?: boolean; - }, - ]; -// ----- toml/array-element-newline ----- -type TomlArrayElementNewline = - | [] - | [ - | _TomlArrayElementNewlineBasicConfig - | { - ArrayExpression?: _TomlArrayElementNewlineBasicConfig; - ArrayPattern?: _TomlArrayElementNewlineBasicConfig; - TOMLArray?: _TomlArrayElementNewlineBasicConfig; - }, - ]; -type _TomlArrayElementNewlineBasicConfig = - | ("always" | "never" | "consistent") - | { - multiline?: boolean; - minItems?: number | null; - }; -// ----- toml/comma-style ----- -type TomlCommaStyle = - | [] - | ["first" | "last"] - | [ - "first" | "last", - { - exceptions?: { - [k: string]: boolean | undefined; - }; - }, - ]; -// ----- toml/indent ----- -type TomlIndent = - | [] - | ["tab" | number] - | [ - "tab" | number, - { - subTables?: number; - keyValuePairs?: number; - }, - ]; -// ----- toml/inline-table-curly-spacing ----- -type TomlInlineTableCurlySpacing = - | [] - | ["always" | "never"] - | [ - "always" | "never", - { - arraysInObjects?: boolean; - objectsInObjects?: boolean; - }, - ]; -// ----- toml/key-spacing ----- -type TomlKeySpacing = - | [] - | [ - | { - align?: - | ("equal" | "value") - | { - on?: "equal" | "value"; - mode?: "strict" | "minimum"; - beforeEqual?: boolean; - afterEqual?: boolean; - }; - mode?: "strict" | "minimum"; - beforeEqual?: boolean; - afterEqual?: boolean; - } - | { - singleLine?: { - mode?: "strict" | "minimum"; - beforeEqual?: boolean; - afterEqual?: boolean; - }; - multiLine?: { - align?: - | ("equal" | "value") - | { - on?: "equal" | "value"; - mode?: "strict" | "minimum"; - beforeEqual?: boolean; - afterEqual?: boolean; - }; - mode?: "strict" | "minimum"; - beforeEqual?: boolean; - afterEqual?: boolean; - }; - } - | { - singleLine?: { - mode?: "strict" | "minimum"; - beforeEqual?: boolean; - afterEqual?: boolean; - }; - multiLine?: { - mode?: "strict" | "minimum"; - beforeEqual?: boolean; - afterEqual?: boolean; - }; - align?: { - on?: "equal" | "value"; - mode?: "strict" | "minimum"; - beforeEqual?: boolean; - afterEqual?: boolean; - }; - }, - ]; -// ----- toml/no-mixed-type-in-array ----- -type TomlNoMixedTypeInArray = - | [] - | [ - { - typeMap?: { - string?: string; - boolean?: string; - integer?: string; - float?: string; - offsetDateTime?: string; - localDateTime?: string; - localDate?: string; - localTime?: string; - array?: string; - inlineTable?: string; - }; - }, - ]; -// ----- toml/no-non-decimal-integer ----- -type TomlNoNonDecimalInteger = - | [] - | [ - { - allowHexadecimal?: boolean; - allowOctal?: boolean; - allowBinary?: boolean; - }, - ]; -// ----- toml/precision-of-fractional-seconds ----- -type TomlPrecisionOfFractionalSeconds = - | [] - | [ - { - max?: number; - }, - ]; -// ----- toml/precision-of-integer ----- -type TomlPrecisionOfInteger = - | [] - | [ - { - maxBit?: number; - }, - ]; -// ----- toml/quoted-keys ----- -type TomlQuotedKeys = - | [] - | [ - { - prefer?: "as-needed" | "always"; - numbers?: boolean; - }, - ]; -// ----- toml/spaced-comment ----- -type TomlSpacedComment = - | [] - | ["always" | "never"] - | [ - "always" | "never", - { - exceptions?: string[]; - markers?: string[]; - }, - ]; -// ----- toml/table-bracket-spacing ----- -type TomlTableBracketSpacing = [] | ["always" | "never"]; -// ----- unicorn/better-regex ----- -type UnicornBetterRegex = - | [] - | [ - { - sortCharacterClasses?: boolean; - }, - ]; -// ----- unicorn/catch-error-name ----- -type UnicornCatchErrorName = - | [] - | [ - { - name?: string; - ignore?: unknown[]; - }, - ]; -// ----- unicorn/consistent-function-scoping ----- -type UnicornConsistentFunctionScoping = - | [] - | [ - { - checkArrowFunctions?: boolean; - }, - ]; -// ----- unicorn/escape-case ----- -type UnicornEscapeCase = [] | ["uppercase" | "lowercase"]; -// ----- unicorn/expiring-todo-comments ----- -type UnicornExpiringTodoComments = - | [] - | [ - { - terms?: string[]; - ignore?: unknown[]; - ignoreDatesOnPullRequests?: boolean; - allowWarningComments?: boolean; - date?: string; - }, - ]; -// ----- unicorn/explicit-length-check ----- -type UnicornExplicitLengthCheck = - | [] - | [ - { - "non-zero"?: "greater-than" | "not-equal"; - }, - ]; -// ----- unicorn/filename-case ----- -type UnicornFilenameCase = - | [] - | [ - | { - case?: "camelCase" | "snakeCase" | "kebabCase" | "pascalCase"; - ignore?: unknown[]; - multipleFileExtensions?: boolean; - } - | { - cases?: { - camelCase?: boolean; - snakeCase?: boolean; - kebabCase?: boolean; - pascalCase?: boolean; - }; - ignore?: unknown[]; - multipleFileExtensions?: boolean; - }, - ]; -// ----- unicorn/import-style ----- -type UnicornImportStyle = - | [] - | [ - { - checkImport?: boolean; - checkDynamicImport?: boolean; - checkExportFrom?: boolean; - checkRequire?: boolean; - extendDefaultStyles?: boolean; - styles?: _UnicornImportStyle_ModuleStyles; - }, - ]; -type _UnicornImportStyleStyles = (false | _UnicornImportStyle_BooleanObject) | undefined; -interface _UnicornImportStyle_ModuleStyles { - [k: string]: _UnicornImportStyleStyles | undefined; -} -interface _UnicornImportStyle_BooleanObject { - [k: string]: boolean | undefined; -} -// ----- unicorn/no-array-reduce ----- -type UnicornNoArrayReduce = - | [] - | [ - { - allowSimpleOperations?: boolean; - }, - ]; -// ----- unicorn/no-instanceof-builtins ----- -type UnicornNoInstanceofBuiltins = - | [] - | [ - { - useErrorIsError?: boolean; - strategy?: "loose" | "strict"; - include?: string[]; - exclude?: string[]; - }, - ]; -// ----- unicorn/no-keyword-prefix ----- -type UnicornNoKeywordPrefix = - | [] - | [ - { - disallowedPrefixes?: [] | [string]; - checkProperties?: boolean; - onlyCamelCase?: boolean; - }, - ]; -// ----- unicorn/no-null ----- -type UnicornNoNull = - | [] - | [ - { - checkStrictEquality?: boolean; - }, - ]; -// ----- unicorn/no-typeof-undefined ----- -type UnicornNoTypeofUndefined = - | [] - | [ - { - checkGlobalVariables?: boolean; - }, - ]; -// ----- unicorn/no-unnecessary-polyfills ----- -type UnicornNoUnnecessaryPolyfills = - | [] - | [ - { - targets: - | string - | unknown[] - | { - [k: string]: unknown | undefined; - }; - }, - ]; -// ----- unicorn/no-useless-undefined ----- -type UnicornNoUselessUndefined = - | [] - | [ - { - checkArguments?: boolean; - checkArrowFunctionBody?: boolean; - }, - ]; -// ----- unicorn/number-literal-case ----- -type UnicornNumberLiteralCase = - | [] - | [ - { - hexadecimalValue?: "uppercase" | "lowercase"; - }, - ]; -// ----- unicorn/numeric-separators-style ----- -type UnicornNumericSeparatorsStyle = - | [] - | [ - { - binary?: { - onlyIfContainsSeparator?: boolean; - minimumDigits?: number; - groupLength?: number; - }; - octal?: { - onlyIfContainsSeparator?: boolean; - minimumDigits?: number; - groupLength?: number; - }; - hexadecimal?: { - onlyIfContainsSeparator?: boolean; - minimumDigits?: number; - groupLength?: number; - }; - number?: { - onlyIfContainsSeparator?: boolean; - minimumDigits?: number; - groupLength?: number; - }; - onlyIfContainsSeparator?: boolean; - }, - ]; -// ----- unicorn/prefer-add-event-listener ----- -type UnicornPreferAddEventListener = - | [] - | [ - { - excludedPackages?: string[]; - }, - ]; -// ----- unicorn/prefer-array-find ----- -type UnicornPreferArrayFind = - | [] - | [ - { - checkFromLast?: boolean; - }, - ]; -// ----- unicorn/prefer-array-flat ----- -type UnicornPreferArrayFlat = - | [] - | [ - { - functions?: unknown[]; - }, - ]; -// ----- unicorn/prefer-at ----- -type UnicornPreferAt = - | [] - | [ - { - getLastElementFunctions?: unknown[]; - checkAllIndexAccess?: boolean; - }, - ]; -// ----- unicorn/prefer-export-from ----- -type UnicornPreferExportFrom = - | [] - | [ - { - ignoreUsedVariables?: boolean; - }, - ]; -// ----- unicorn/prefer-number-properties ----- -type UnicornPreferNumberProperties = - | [] - | [ - { - checkInfinity?: boolean; - checkNaN?: boolean; - }, - ]; -// ----- unicorn/prefer-object-from-entries ----- -type UnicornPreferObjectFromEntries = - | [] - | [ - { - functions?: unknown[]; - }, - ]; -// ----- unicorn/prefer-single-call ----- -type UnicornPreferSingleCall = - | [] - | [ - { - ignore?: unknown[]; - }, - ]; -// ----- unicorn/prefer-structured-clone ----- -type UnicornPreferStructuredClone = - | [] - | [ - { - functions?: unknown[]; - }, - ]; -// ----- unicorn/prefer-switch ----- -type UnicornPreferSwitch = - | [] - | [ - { - minimumCases?: number; - emptyDefaultCase?: "no-default-comment" | "do-nothing-comment" | "no-default-case"; - }, - ]; -// ----- unicorn/prefer-ternary ----- -type UnicornPreferTernary = [] | ["always" | "only-single-line"]; -// ----- unicorn/prevent-abbreviations ----- -type UnicornPreventAbbreviations = - | [] - | [ - { - checkProperties?: boolean; - checkVariables?: boolean; - checkDefaultAndNamespaceImports?: boolean | string; - checkShorthandImports?: boolean | string; - checkShorthandProperties?: boolean; - checkFilenames?: boolean; - extendDefaultReplacements?: boolean; - replacements?: _UnicornPreventAbbreviations_Abbreviations; - extendDefaultAllowList?: boolean; - allowList?: _UnicornPreventAbbreviations_BooleanObject; - ignore?: unknown[]; - }, - ]; -type _UnicornPreventAbbreviationsReplacements = (false | _UnicornPreventAbbreviations_BooleanObject) | undefined; -interface _UnicornPreventAbbreviations_Abbreviations { - [k: string]: _UnicornPreventAbbreviationsReplacements | undefined; -} -interface _UnicornPreventAbbreviations_BooleanObject { - [k: string]: boolean | undefined; -} -// ----- unicorn/relative-url-style ----- -type UnicornRelativeUrlStyle = [] | ["never" | "always"]; -// ----- unicorn/string-content ----- -type UnicornStringContent = - | [] - | [ - { - patterns?: { - [k: string]: - | ( - | string - | { - suggest: string; - fix?: boolean; - message?: string; - } - ) - | undefined; - }; - }, - ]; -// ----- unicorn/switch-case-braces ----- -type UnicornSwitchCaseBraces = [] | ["always" | "avoid"]; -// ----- unicorn/template-indent ----- -type UnicornTemplateIndent = - | [] - | [ - { - indent?: string | number; - tags?: string[]; - functions?: string[]; - selectors?: string[]; - comments?: string[]; - }, - ]; -// ----- unocss/enforce-class-compile ----- -type UnocssEnforceClassCompile = - | [] - | [ - { - prefix?: string; - enableFix?: boolean; - }, - ]; -// ----- vitest/consistent-test-filename ----- -type VitestConsistentTestFilename = - | [] - | [ - { - pattern?: string; - allTestPattern?: string; - }, - ]; -// ----- vitest/consistent-test-it ----- -type VitestConsistentTestIt = - | [] - | [ - { - fn?: "test" | "it"; - withinDescribe?: "test" | "it"; - }, - ]; -// ----- vitest/expect-expect ----- -type VitestExpectExpect = - | [] - | [ - { - assertFunctionNames?: string[]; - additionalTestBlockFunctions?: string[]; - }, - ]; -// ----- vitest/max-expects ----- -type VitestMaxExpects = - | [] - | [ - { - max?: number; - }, - ]; -// ----- vitest/max-nested-describe ----- -type VitestMaxNestedDescribe = - | [] - | [ - { - max?: number; - }, - ]; -// ----- vitest/no-focused-tests ----- -type VitestNoFocusedTests = - | [] - | [ - { - fixable?: boolean; - }, - ]; -// ----- vitest/no-hooks ----- -type VitestNoHooks = - | [] - | [ - { - allow?: unknown[]; - }, - ]; -// ----- vitest/no-large-snapshots ----- -type VitestNoLargeSnapshots = - | [] - | [ - { - maxSize?: number; - inlineMaxSize?: number; - allowedSnapshots?: { - [k: string]: unknown[] | undefined; - }; - }, - ]; -// ----- vitest/no-only-tests ----- -type VitestNoOnlyTests = - | [] - | [ - { - block?: string[]; - focus?: string[]; - functions?: string[]; - fix?: boolean; - }, - ]; -// ----- vitest/no-restricted-matchers ----- -type VitestNoRestrictedMatchers = - | [] - | [ - { - [k: string]: (string | null) | undefined; - }, - ]; -// ----- vitest/no-restricted-vi-methods ----- -type VitestNoRestrictedViMethods = - | [] - | [ - { - [k: string]: (string | null) | undefined; - }, - ]; -// ----- vitest/no-standalone-expect ----- -type VitestNoStandaloneExpect = - | [] - | [ - { - additionalTestBlockFunctions?: string[]; - }, - ]; -// ----- vitest/prefer-expect-assertions ----- -type VitestPreferExpectAssertions = - | [] - | [ - { - onlyFunctionsWithAsyncKeyword?: boolean; - onlyFunctionsWithExpectInLoop?: boolean; - onlyFunctionsWithExpectInCallback?: boolean; - }, - ]; -// ----- vitest/prefer-lowercase-title ----- -type VitestPreferLowercaseTitle = - | [] - | [ - { - ignore?: ("describe" | "test" | "it")[]; - allowedPrefixes?: string[]; - ignoreTopLevelDescribe?: boolean; - lowercaseFirstCharacterOnly?: boolean; - }, - ]; -// ----- vitest/prefer-snapshot-hint ----- -type VitestPreferSnapshotHint = [] | ["always" | "multi"]; -// ----- vitest/require-hook ----- -type VitestRequireHook = - | [] - | [ - { - allowedFunctionCalls?: string[]; - }, - ]; -// ----- vitest/require-mock-type-parameters ----- -type VitestRequireMockTypeParameters = - | [] - | [ - { - checkImportFunctions?: boolean; - }, - ]; -// ----- vitest/require-top-level-describe ----- -type VitestRequireTopLevelDescribe = - | [] - | [ - { - maxNumberOfTopLevelDescribes?: number; - }, - ]; -// ----- vitest/valid-expect ----- -type VitestValidExpect = - | [] - | [ - { - alwaysAwait?: boolean; - asyncMatchers?: string[]; - minArgs?: number; - maxArgs?: number; - }, - ]; -// ----- vitest/valid-title ----- -type VitestValidTitle = - | [] - | [ - { - ignoreTypeOfDescribeName?: boolean; - allowArguments?: boolean; - disallowedWords?: string[]; - [k: string]: - | string - | [string] - | [string, string] - | { - [k: string]: (string | [string] | [string, string]) | undefined; - }; - }, - ]; -// ----- yaml/block-mapping ----- -type YamlBlockMapping = - | [] - | [ - | ("always" | "never") - | { - singleline?: "always" | "never" | "ignore"; - multiline?: "always" | "never" | "ignore"; - }, - ]; -// ----- yaml/block-mapping-colon-indicator-newline ----- -type YamlBlockMappingColonIndicatorNewline = [] | ["always" | "never"]; -// ----- yaml/block-mapping-question-indicator-newline ----- -type YamlBlockMappingQuestionIndicatorNewline = [] | ["always" | "never"]; -// ----- yaml/block-sequence ----- -type YamlBlockSequence = - | [] - | [ - | ("always" | "never") - | { - singleline?: "always" | "never" | "ignore"; - multiline?: "always" | "never" | "ignore"; - }, - ]; -// ----- yaml/block-sequence-hyphen-indicator-newline ----- -type YamlBlockSequenceHyphenIndicatorNewline = - | [] - | ["always" | "never"] - | [ - "always" | "never", - { - nestedHyphen?: "always" | "never"; - blockMapping?: "always" | "never"; - }, - ]; -// ----- yaml/file-extension ----- -type YamlFileExtension = - | [] - | [ - { - extension?: "yaml" | "yml"; - caseSensitive?: boolean; - }, - ]; -// ----- yaml/flow-mapping-curly-newline ----- -type YamlFlowMappingCurlyNewline = - | [] - | [ - | ("always" | "never") - | { - multiline?: boolean; - minProperties?: number; - consistent?: boolean; - }, - ]; -// ----- yaml/flow-mapping-curly-spacing ----- -type YamlFlowMappingCurlySpacing = - | [] - | ["always" | "never"] - | [ - "always" | "never", - { - arraysInObjects?: boolean; - objectsInObjects?: boolean; - }, - ]; -// ----- yaml/flow-sequence-bracket-newline ----- -type YamlFlowSequenceBracketNewline = - | [] - | [ - | ("always" | "never" | "consistent") - | { - multiline?: boolean; - minItems?: number | null; - }, - ]; -// ----- yaml/flow-sequence-bracket-spacing ----- -type YamlFlowSequenceBracketSpacing = - | [] - | ["always" | "never"] - | [ - "always" | "never", - { - singleValue?: boolean; - objectsInArrays?: boolean; - arraysInArrays?: boolean; - }, - ]; -// ----- yaml/indent ----- -type YamlIndent = - | [] - | [number] - | [ - number, - { - indentBlockSequences?: boolean; - indicatorValueIndent?: number; - alignMultilineFlowScalars?: boolean; - }, - ]; -// ----- yaml/key-name-casing ----- -type YamlKeyNameCasing = - | [] - | [ - { - camelCase?: boolean; - PascalCase?: boolean; - SCREAMING_SNAKE_CASE?: boolean; - "kebab-case"?: boolean; - snake_case?: boolean; - ignores?: string[]; - }, - ]; -// ----- yaml/key-spacing ----- -type YamlKeySpacing = - | [] - | [ - | { - align?: - | ("colon" | "value") - | { - on?: "colon" | "value"; - mode?: "strict" | "minimum"; - beforeColon?: boolean; - afterColon?: boolean; - }; - mode?: "strict" | "minimum"; - beforeColon?: boolean; - afterColon?: boolean; - } - | { - singleLine?: { - mode?: "strict" | "minimum"; - beforeColon?: boolean; - afterColon?: boolean; - }; - multiLine?: { - align?: - | ("colon" | "value") - | { - on?: "colon" | "value"; - mode?: "strict" | "minimum"; - beforeColon?: boolean; - afterColon?: boolean; - }; - mode?: "strict" | "minimum"; - beforeColon?: boolean; - afterColon?: boolean; - }; - } - | { - singleLine?: { - mode?: "strict" | "minimum"; - beforeColon?: boolean; - afterColon?: boolean; - }; - multiLine?: { - mode?: "strict" | "minimum"; - beforeColon?: boolean; - afterColon?: boolean; - }; - align?: { - on?: "colon" | "value"; - mode?: "strict" | "minimum"; - beforeColon?: boolean; - afterColon?: boolean; - }; - }, - ]; -// ----- yaml/no-irregular-whitespace ----- -type YamlNoIrregularWhitespace = - | [] - | [ - { - skipComments?: boolean; - skipQuotedScalars?: boolean; - }, - ]; -// ----- yaml/no-multiple-empty-lines ----- -type YamlNoMultipleEmptyLines = - | [] - | [ - { - max: number; - maxEOF?: number; - maxBOF?: number; - }, - ]; -// ----- yaml/plain-scalar ----- -type YamlPlainScalar = - | [] - | ["always" | "never"] - | [ - "always" | "never", - { - ignorePatterns?: string[]; - overrides?: { - mappingKey?: "always" | "never" | null; - }; - }, - ]; -// ----- yaml/quotes ----- -type YamlQuotes = - | [] - | [ - { - prefer?: "double" | "single"; - avoidEscape?: boolean; - }, - ]; -// ----- yaml/sort-keys ----- -type YamlSortKeys = - | [ - { - pathPattern: string; - hasProperties?: string[]; - order: - | ( - | string - | { - keyPattern?: string; - order?: { - type?: "asc" | "desc"; - caseSensitive?: boolean; - natural?: boolean; - }; - } - )[] - | { - type?: "asc" | "desc"; - caseSensitive?: boolean; - natural?: boolean; - }; - minKeys?: number; - allowLineSeparatedGroups?: boolean; - }, - ...{ - pathPattern: string; - hasProperties?: string[]; - order: - | ( - | string - | { - keyPattern?: string; - order?: { - type?: "asc" | "desc"; - caseSensitive?: boolean; - natural?: boolean; - }; - } - )[] - | { - type?: "asc" | "desc"; - caseSensitive?: boolean; - natural?: boolean; - }; - minKeys?: number; - allowLineSeparatedGroups?: boolean; - }[], - ] - | [] - | ["asc" | "desc"] - | [ - "asc" | "desc", - { - caseSensitive?: boolean; - natural?: boolean; - minKeys?: number; - allowLineSeparatedGroups?: boolean; - }, - ]; -// ----- yaml/sort-sequence-values ----- -type YamlSortSequenceValues = [ - { - pathPattern: string; - order: - | ( - | string - | { - valuePattern?: string; - order?: { - type?: "asc" | "desc"; - caseSensitive?: boolean; - natural?: boolean; - }; - } - )[] - | { - type?: "asc" | "desc"; - caseSensitive?: boolean; - natural?: boolean; - }; - minValues?: number; - }, - ...{ - pathPattern: string; - order: - | ( - | string - | { - valuePattern?: string; - order?: { - type?: "asc" | "desc"; - caseSensitive?: boolean; - natural?: boolean; - }; - } - )[] - | { - type?: "asc" | "desc"; - caseSensitive?: boolean; - natural?: boolean; - }; - minValues?: number; - }[], -]; -// ----- yaml/spaced-comment ----- -type YamlSpacedComment = - | [] - | ["always" | "never"] - | [ - "always" | "never", - { - exceptions?: string[]; - markers?: string[]; - }, - ]; -// ----- zod/prefer-enum ----- -type ZodPreferEnum = [] | [{}]; -// ----- zod/require-strict ----- -type ZodRequireStrict = - | [] - | [ - { - allowPassthrough?: boolean; - }, - ]; -// Names of all the configs -export type ConfigNames = - | "anolilab/antfu" - | "anolilab/astro/setup" - | "anolilab/astro/rules" - | "anolilab/best-practices/rules" - | "anolilab/best-practices/ts-rules" - | "compat/flat/recommended" - | "anolilab/errors/rules" - | "anolilab/errors/ts-rules" - | "anolilab/html/setup" - | "anolilab/no-secrets" - | "anolilab/no-unsanitized/setup" - | "anolilab/promise/rules" - | "anolilab/simple-import-sort" - | "anolilab/sonarjs/plugin" - | "anolilab/sonarjs/rules" - | "anolilab/sonarjs/js-and-ts-rules" - | "anolilab/sonarjs/js-rules" - | "storybook:recommended:setup" - | "storybook:recommended:stories-rules" - | "storybook:recommended:main-rules" - | "tailwindcss:base" - | "tailwindcss:rules" - | "anolilab/validate-jsx-nesting/setup" - | "anolilab/variables/rules" - | "anolilab/variables/ts-rules" - | "anolilab/style/rules" - | "anolilab/style/ts-rules" - | "anolilab/eslint-comments/rules" - | "anolilab/formatter/setup" - | "anolilab/imports/setup" - | "anolilab/imports/rules" - | "anolilab/imports/d.ts-rules" - | "anolilab/javascript/setup" - | "anolilab/jsx-a11y/setup" - | "anolilab/jsdoc/setup" - | "anolilab/jsdoc/js-rules" - | "anolilab/jsonc/json5-rules" - | "anolilab/jsonc/jsonc-rules" - | "anolilab/jsonc/json-rules" - | "anolilab/jsonc/package.json-rules" - | "anolilab/jsonc/tsconfig-json" - | "anolilab/markdown/setup" - | "anolilab/markdown/processor" - | "anolilab/markdown/parser" - | "anolilab/markdown/disables" - | "anolilab/perfectionist/setup" - | "anolilab/perfectionist/rules" - | "anolilab/perfectionist/typescript" - | "anolilab/perfectionist/postcss" - | "anolilab/react/setup" - | "anolilab/react/rules" - | "anolilab/react/jsx" - | "anolilab/react/tsx" - | "anolilab/react/storybook" - | "anolilab/node/setup" - | "anolilab/node/rules" - | "anolilab/stylistic/rules" - | "anolilab/vitest/setup" - | "anolilab/vitest/rules" - | "anolilab/toml" - | "anolilab/regexp/rules" - | "anolilab/typescript/setup" - | "anolilab/typescript/parser" - | "typescript-eslint/base" - | "typescript-eslint/eslint-recommended" - | "typescript-eslint/strict" - | "typescript-eslint/base" - | "typescript-eslint/eslint-recommended" - | "typescript-eslint/stylistic" - | "anolilab/typescript/rules" - | "anolilab/unicorn/plugin" - | "anolilab/unicorn/rules" - | "anolilab/unicorn/tsconfig-overrides" - | "anolilab/unicorn/ts-overrides" - | "anolilab/unocss" - | "anolilab/yaml" - | "anolilab/yaml/pnpm-workspace"; diff --git a/packages/eslint-config/src/utils/is-in-git-hooks-or-lint-staged.ts b/packages/eslint-config/src/utils/is-in-git-hooks-or-lint-staged.ts index 68d4329f8..7b00ea42a 100644 --- a/packages/eslint-config/src/utils/is-in-git-hooks-or-lint-staged.ts +++ b/packages/eslint-config/src/utils/is-in-git-hooks-or-lint-staged.ts @@ -1,5 +1,3 @@ -const isInGitHooksOrLintStaged = (): boolean => { - return !!(process.env["GIT_PARAMS"] || process.env["VSCODE_GIT_COMMAND"] || process.env["npm_lifecycle_script"]?.startsWith("lint-staged")); -}; +const isInGitHooksOrLintStaged = (): boolean => !!(process.env["GIT_PARAMS"] || process.env["VSCODE_GIT_COMMAND"] || process.env["npm_lifecycle_script"]?.startsWith("lint-staged")); export default isInGitHooksOrLintStaged; diff --git a/packages/eslint-config/src/utils/parser-plain.ts b/packages/eslint-config/src/utils/parser-plain.ts index 4231a79ab..c914bcd0a 100644 --- a/packages/eslint-config/src/utils/parser-plain.ts +++ b/packages/eslint-config/src/utils/parser-plain.ts @@ -4,21 +4,23 @@ const parserPlain: Linter.Parser = { meta: { name: "parser-plain", }, - parseForESLint: (code: string) => ({ - ast: { - body: [], - comments: [], - loc: { end: code.length, start: 0 }, - range: [0, code.length], - tokens: [], - type: "Program", - }, - scopeManager: undefined, - services: { isPlain: true }, - visitorKeys: { - Program: [], - }, - }), + parseForESLint: (code: string) => { + return { + ast: { + body: [], + comments: [], + loc: { end: code.length, start: 0 }, + range: [0, code.length], + tokens: [], + type: "Program", + }, + scopeManager: undefined, + services: { isPlain: true }, + visitorKeys: { + Program: [], + }, + }; + }, }; export default parserPlain; diff --git a/packages/eslint-config/src/utils/vitest-globals.ts b/packages/eslint-config/src/utils/vitest-globals.ts index a3353d045..1c463aeb9 100644 --- a/packages/eslint-config/src/utils/vitest-globals.ts +++ b/packages/eslint-config/src/utils/vitest-globals.ts @@ -1,22 +1,22 @@ /** * vitest version 3.1.4 */ -export default /** @type {const} */ { - afterAll: true, - afterEach: true, - assert: true, - assertType: true, - beforeAll: true, - beforeEach: true, - chai: true, - describe: true, - expect: true, - expectTypeOf: true, - it: true, - onTestFailed: true, - onTestFinished: true, - suite: true, - test: true, - vi: true, - vitest: true, -}; +export default /** @type {const} */ ({ + "suite": true, + "test": true, + "chai": true, + "describe": true, + "it": true, + "expectTypeOf": true, + "assertType": true, + "expect": true, + "assert": true, + "vitest": true, + "vi": true, + "beforeAll": true, + "afterAll": true, + "beforeEach": true, + "afterEach": true, + "onTestFailed": true, + "onTestFinished": true +}); From 5e7c01ce47e72783a9240050722b5016fa1d4506 Mon Sep 17 00:00:00 2001 From: prisis Date: Sun, 25 May 2025 09:44:56 +0200 Subject: [PATCH 28/31] chore: update ESLint configuration and scripts - Added src/utils/vitest-globals.ts to .gitignore to prevent linting errors. - Updated ESLint configuration to ignore the newly added vitest-globals.ts file. - Reordered build scripts in package.json for improved execution flow. Signed-off-by: prisis --- packages/eslint-config/.gitignore | 3 ++- packages/eslint-config/eslint.config.js | 2 +- packages/eslint-config/package.json | 4 ++-- .../eslint-config/src/utils/vitest-globals.ts | 22 ------------------- 4 files changed, 5 insertions(+), 26 deletions(-) delete mode 100644 packages/eslint-config/src/utils/vitest-globals.ts diff --git a/packages/eslint-config/.gitignore b/packages/eslint-config/.gitignore index 220f7c434..0437ca66b 100644 --- a/packages/eslint-config/.gitignore +++ b/packages/eslint-config/.gitignore @@ -1 +1,2 @@ -src/typegen.d.ts \ No newline at end of file +src/typegen.d.ts +src/utils/vitest-globals.ts \ No newline at end of file diff --git a/packages/eslint-config/eslint.config.js b/packages/eslint-config/eslint.config.js index 2db73d4ab..ecd912d06 100644 --- a/packages/eslint-config/eslint.config.js +++ b/packages/eslint-config/eslint.config.js @@ -2,7 +2,7 @@ import { createConfig } from "./dist/index.mjs"; export default createConfig( { - ignores: ["./eslint.config.js", "./src/typegen.d.ts", "./__fixtures__/**/*"], + ignores: ["./eslint.config.js", "./src/typegen.d.ts", "./src/utils/vitest-globals.ts", "./__fixtures__/**/*"], react: false, playwright: false, storybook: false, diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index b963d6e65..98f840ed9 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -104,9 +104,9 @@ "dist" ], "scripts": { - "build": "pnpm run build:typegen && pnpm run build:global-vitest && packem build --development", + "build": "pnpm run build:global-vitest && pnpm run build:typegen && packem build --development", "build:global-vitest": "tsx ./scripts/global-vitest.ts", - "build:prod": "pnpm run build:typegen && pnpm run build:global-vitest && packem build --production", + "build:prod": "pnpm run build:global-vitest && pnpm run build:typegen && packem build --production", "build:typegen": "tsx ./scripts/typegen.ts", "clean": "rimraf node_modules dist", "debug:rules": "pnpm exec eslint-config-inspector --config ./debug-eslint.config.mjs", diff --git a/packages/eslint-config/src/utils/vitest-globals.ts b/packages/eslint-config/src/utils/vitest-globals.ts deleted file mode 100644 index 1c463aeb9..000000000 --- a/packages/eslint-config/src/utils/vitest-globals.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * vitest version 3.1.4 - */ -export default /** @type {const} */ ({ - "suite": true, - "test": true, - "chai": true, - "describe": true, - "it": true, - "expectTypeOf": true, - "assertType": true, - "expect": true, - "assert": true, - "vitest": true, - "vi": true, - "beforeAll": true, - "afterAll": true, - "beforeEach": true, - "afterEach": true, - "onTestFailed": true, - "onTestFinished": true -}); From 93443b4229d46feaf40d42c51b5b8532dfa0b1a1 Mon Sep 17 00:00:00 2001 From: prisis Date: Mon, 26 May 2025 08:25:57 +0200 Subject: [PATCH 29/31] chore: update ESLint configuration and improve test handling - Updated import paths in ESLint configuration files to use explicit file extensions. - Expanded the list of ignored files in ESLint configuration to include test files. - Modified test scripts in package.json to prevent failures on test run. - Added a LICENSE.md file to the fixtures directory for compliance. - Introduced a test timeout setting in vitest configuration for better performance. Signed-off-by: prisis --- .../eslint-config/__fixtures__/LICENSE.md | 21 ++++ .../__fixtures__/input/javascript.js | 64 ++++++------ .../eslint-config/__fixtures__/input/jsx.jsx | 34 +++---- .../__fixtures__/input/markdown.md | 15 ++- .../__fixtures__/input/toml.toml | 27 +++--- .../__fixtures__/input/tsconfig.json | 16 +-- .../eslint-config/__fixtures__/input/tsx.tsx | 17 ++-- .../__fixtures__/input/typescript.ts | 97 +++++++++---------- .../__fixtures__/output/all/typescript.ts | 13 ++- .../no-markdown-with-formatters/typescript.ts | 13 ++- .../output/no-style/typescript.ts | 10 ++ .../output/tab-double-quotes/typescript.ts | 13 ++- .../output/ts-override/typescript.ts | 13 ++- .../output/ts-strict-with-react/typescript.ts | 13 ++- .../output/ts-strict/typescript.ts | 13 ++- .../output/with-formatters/typescript.ts | 13 ++- .../eslint-config/__tests__/rules.test.ts | 46 +++++++-- .../eslint-config/debug-eslint.config.mjs | 3 +- packages/eslint-config/eslint.config.js | 2 +- packages/eslint-config/package.json | 4 +- packages/eslint-config/scripts/typegen.ts | 4 +- .../src/config/plugins/imports.ts | 6 +- .../src/config/plugins/markdown.ts | 2 +- .../src/config/plugins/stylistic.ts | 5 + .../src/config/plugins/typescript.ts | 6 +- packages/eslint-config/src/config/style.ts | 2 +- packages/eslint-config/src/index.ts | 4 +- packages/eslint-config/src/types.ts | 4 +- packages/eslint-config/vitest.config.ts | 1 + 29 files changed, 303 insertions(+), 178 deletions(-) create mode 100644 packages/eslint-config/__fixtures__/LICENSE.md diff --git a/packages/eslint-config/__fixtures__/LICENSE.md b/packages/eslint-config/__fixtures__/LICENSE.md new file mode 100644 index 000000000..b2501586b --- /dev/null +++ b/packages/eslint-config/__fixtures__/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019-PRESENT Anthony Fu + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/packages/eslint-config/__fixtures__/input/javascript.js b/packages/eslint-config/__fixtures__/input/javascript.js index 2baab92d7..ab9c71f97 100644 --- a/packages/eslint-config/__fixtures__/input/javascript.js +++ b/packages/eslint-config/__fixtures__/input/javascript.js @@ -1,31 +1,31 @@ // This file is generated by ChatGPT // eslint-disable-next-line no-console -var log = console.log; +var log = console.log // Define a class using ES6 class syntax class Person { - constructor(name, age) { - this.name = name; - this.age = age; - } - - // Define a method within the class - sayHello() { - log(`Hello, my name is ${this.name} and I am ${this.age} years old.`); - } + constructor(name, age) { + this.name = name; + this.age = age; + } + +// Define a method within the class +sayHello() { + log(`Hello, my name is ${this.name} and I am ${this.age} years old.`); +} } // Create an array of objects const people = [ - new Person("Alice", 30), - new Person("Bob", 25), - new Person("Charlie", 35), + new Person('Alice', 30), + new Person('Bob', 25), + new Person('Charlie', 35) ]; // Use the forEach method to iterate over the array -people.forEach((person) => { - person.sayHello(); +people.forEach(person => { + person.sayHello(); }); // Use a template literal to create a multiline string @@ -35,42 +35,38 @@ const multilineString = ` `; // Use destructuring assignment to extract values from an object -const { age, name } = people[0]; - +const { name, age } = people[0]; log(`First person in the array is ${name} and they are ${age} years old.`, multilineString); // Use the spread operator to create a new array const numbers = [1, 2, 3]; const newNumbers = [...numbers, 4, 5]; - log(newNumbers); // Use a try-catch block for error handling try { - // Attempt to parse an invalid JSON string - JSON.parse("invalid JSON"); + // Attempt to parse an invalid JSON string + JSON.parse('invalid JSON'); } catch (error) { - console.error("Error parsing JSON:", error.message); + console.error('Error parsing JSON:', error.message); } // Use a ternary conditional operator -const isEven = number_ => number_ % 2 === 0; +const isEven = num => num % 2 === 0; const number = 7; - -log(`${number} is ${isEven(number) ? "even" : "odd"}.`); +log(`${number} is ${isEven(number) ? 'even' : 'odd'}.`); // Use a callback function with setTimeout for asynchronous code setTimeout(() => { - log("This code runs after a delay of 2 seconds."); + log('This code runs after a delay of 2 seconds.'); }, 2000); -let a; let b; let c; let d; let - foo; +let a, b, c, d, foo -if (a - || b - || c || d - || (d && b) -) { - foo(); -} +if (a + || b + || c || d + || (d && b) + ) { + foo() + } diff --git a/packages/eslint-config/__fixtures__/input/jsx.jsx b/packages/eslint-config/__fixtures__/input/jsx.jsx index 1b26251cc..f2d2a2563 100644 --- a/packages/eslint-config/__fixtures__/input/jsx.jsx +++ b/packages/eslint-config/__fixtures__/input/jsx.jsx @@ -1,28 +1,22 @@ export function HelloWorld({ - greeted = "\"World\"", - greeting = "hello", - onMouseOver, - silent = false - , -}) { - if (!greeting) { - return null; - } + greeting = "hello", greeted = '"World"', silent = false, onMouseOver,}) { - // TODO: Don't use random in render - let number_ = Math - .floor(Math.random() * 1E+7) - .toString() - .replaceAll(/\.\d+/g, ""); + if(!greeting){ + return null}; - return
- { greeting.slice(0, 1).toUpperCase() + greeting.slice(1).toLowerCase() } - {greeting.endsWith(",") - ? " " - : ", " } + // TODO: Don't use random in render + let num = Math + .floor (Math.random() * 1E+7).toString() + .replace(/\.\d+/ig, "") + + return
+ { greeting.slice( 0, 1 ).toUpperCase() + greeting.slice(1).toLowerCase() } + {greeting.endsWith(",") + ? " " : ", " } { greeted } - { silent ? "." : "!"} + { (silent)? ".": "!"}
; + } diff --git a/packages/eslint-config/__fixtures__/input/markdown.md b/packages/eslint-config/__fixtures__/input/markdown.md index 56c0212f8..a7f61a305 100644 --- a/packages/eslint-config/__fixtures__/input/markdown.md +++ b/packages/eslint-config/__fixtures__/input/markdown.md @@ -5,15 +5,11 @@ _Look,_ code blocks are formatted *too!* ```js // This should be handled by ESLint instead of Prettier -/** - * - * @param x - */ -const identity = (x) => { - if (foo) { - console.log("bar"); - } -} +function identity(x) { + if (foo) { + console.log('bar'); + } + } ``` ```css @@ -32,6 +28,7 @@ Jane Roe|JFK|314 + with a [link] (/to/somewhere) + and [another one] + [another one]: http://example.com 'Example title' Lorem ipsum dolor sit amet, consectetur adipiscing elit. diff --git a/packages/eslint-config/__fixtures__/input/toml.toml b/packages/eslint-config/__fixtures__/input/toml.toml index 1f73d046b..31e10f1eb 100644 --- a/packages/eslint-config/__fixtures__/input/toml.toml +++ b/packages/eslint-config/__fixtures__/input/toml.toml @@ -1,23 +1,24 @@ comma = [ - 1, - 2, - 3, + 1 + ,2 + ,3, ] [foo] -b = 1 -c = "hello" -a = { answer = 42 } -indent = [ - 1, - 2 + b = 1 + c = "hello" + a = {answer = 42} + +"indent" = [ +1, + 2 ] -[a-table] +['a-table'] apple.type = "fruit" -apple.skin = "thin" -apple.color = "red" - orange.type = "fruit" +apple.skin = "thin" orange.skin = "thick" + +apple.color = "red" orange.color = "orange" diff --git a/packages/eslint-config/__fixtures__/input/tsconfig.json b/packages/eslint-config/__fixtures__/input/tsconfig.json index c429e6172..66372fb65 100644 --- a/packages/eslint-config/__fixtures__/input/tsconfig.json +++ b/packages/eslint-config/__fixtures__/input/tsconfig.json @@ -1,10 +1,10 @@ { - "compilerOptions": { - "target": "ESNext", - "module": "ESNext", - "moduleResolution": "Bundler", - "strict": true, - "skipDefaultLibCheck": true, - "skipLibCheck": true - } + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "Bundler", + "strict": true, + "skipDefaultLibCheck": true, + "skipLibCheck": true + } } diff --git a/packages/eslint-config/__fixtures__/input/tsx.tsx b/packages/eslint-config/__fixtures__/input/tsx.tsx index cd29195e1..97ca0890b 100644 --- a/packages/eslint-config/__fixtures__/input/tsx.tsx +++ b/packages/eslint-config/__fixtures__/input/tsx.tsx @@ -1,15 +1,14 @@ export function Component1() { - return
; + return
; } export function jsx2() { - const properties = { - a: 1, - b: 2, - }; - - return < a bar={`foo` } foo= 'bar' > -
Inline Text
+ const props = {a:1, + b:2} + return < a foo= 'bar' bar={`foo` } > +
Inline Text
Block Text @@ -21,5 +20,5 @@ export function jsx2() {

foobarbaz

- ; + } diff --git a/packages/eslint-config/__fixtures__/input/typescript.ts b/packages/eslint-config/__fixtures__/input/typescript.ts index 6d9bf6b81..213ff3db2 100644 --- a/packages/eslint-config/__fixtures__/input/typescript.ts +++ b/packages/eslint-config/__fixtures__/input/typescript.ts @@ -1,91 +1,90 @@ // Define a TypeScript interface -interface Person { - age: number; - name: string; +interface Person { + name: string; age: number; } // Create an array of objects with the defined interface const people: Person[] = [ - { age: 30, name: "Alice" }, - { age: 25, name: "Bob" }, - { - age: 35, - name: "Charlie", - }, + { name: 'Alice', age: 30 }, + { name: 'Bob', age: 25 }, + { name: 'Charlie', + age: 35 } ]; // eslint-disable-next-line no-console -const log = console.log; +var log = console.log // Use a for...of loop to iterate over the array for (const person of people) { - log(`Hello, my name is ${person.name} and I am ${person.age} years old.`); + log(`Hello, my name is ${person.name} and I am ${person.age} years old.`); } // Define a generic function -function identity< T >(argument: T): T { - return argument; +function identity< T >(arg: T): T { + return arg; } // Use the generic function with type inference const result = identity( - "TypeScript is awesome", -); - + 'TypeScript is awesome'); log(result); // Use optional properties in an interface interface Car { - make: string; - model?: string; + make: string; + model?: string; } // Create objects using the interface -const car1: Car = { make: "Toyota" }; -const car2: Car = { - make: "Ford", - model: "Focus", - -}; +const car1: Car = { make: 'Toyota' }; +const car2: Car = { + make: 'Ford', model: 'Focus' }; // Use union types -type Fruit = "apple" | "banana" | "orange"; -const favoriteFruit: Fruit = "apple"; +type Fruit = 'apple' | 'banana' | 'orange'; +const favoriteFruit: Fruit = 'apple'; // Use a type assertion to tell TypeScript about the type -const inputValue: any = "42"; +const inputValue: any = '42'; const numericValue = inputValue as number; // Define a class with access modifiers class Animal { - private name: string; - - constructor(name: string) { - this.name = name; - } - - protected makeSound(sound: string) { - log(`${this.name} says ${sound}`); - } + private name: string; + constructor(name: string) { + this.name = name; + } + protected makeSound(sound: string) { + log(`${this.name} says ${sound}`); + } } // Extend a class class Dog extends Animal { - constructor(private alias: string) { - super(alias); - } - - bark() { - this.makeSound("Woof!"); - } + constructor(private alias: string) { + super(alias); + } + bark() { + this.makeSound('Woof!'); + } } -const dog = new Dog("Buddy"); - +const dog = new Dog('Buddy'); dog.bark(); -const function_ = (): string => { - return "hello" + 1; -}; +var fn = (): string => { + return 'hello' + 1 +} + +log(car1, car2, favoriteFruit, numericValue, fn()) -log(car1, car2, favoriteFruit, numericValue, function_()); +// Generator +export function* generator1() { + let id = 0; + while (id < 100) { + yield id++; + } +} +export function * generator2() { + yield* generator1() +} diff --git a/packages/eslint-config/__fixtures__/output/all/typescript.ts b/packages/eslint-config/__fixtures__/output/all/typescript.ts index 29016e385..c1d6575f7 100644 --- a/packages/eslint-config/__fixtures__/output/all/typescript.ts +++ b/packages/eslint-config/__fixtures__/output/all/typescript.ts @@ -20,7 +20,7 @@ for (const person of people) { } // Define a generic function -function identity< T >(arg: T): T { +function identity(arg: T): T { return arg } @@ -82,3 +82,14 @@ function fn(): string { } log(car1, car2, favoriteFruit, numericValue, fn()) + +// Generator +export function* generator1() { + let id = 0 + while (id < 100) { + yield id++ + } +} +export function* generator2() { + yield* generator1() +} diff --git a/packages/eslint-config/__fixtures__/output/no-markdown-with-formatters/typescript.ts b/packages/eslint-config/__fixtures__/output/no-markdown-with-formatters/typescript.ts index 29016e385..c1d6575f7 100644 --- a/packages/eslint-config/__fixtures__/output/no-markdown-with-formatters/typescript.ts +++ b/packages/eslint-config/__fixtures__/output/no-markdown-with-formatters/typescript.ts @@ -20,7 +20,7 @@ for (const person of people) { } // Define a generic function -function identity< T >(arg: T): T { +function identity(arg: T): T { return arg } @@ -82,3 +82,14 @@ function fn(): string { } log(car1, car2, favoriteFruit, numericValue, fn()) + +// Generator +export function* generator1() { + let id = 0 + while (id < 100) { + yield id++ + } +} +export function* generator2() { + yield* generator1() +} diff --git a/packages/eslint-config/__fixtures__/output/no-style/typescript.ts b/packages/eslint-config/__fixtures__/output/no-style/typescript.ts index 1cf34cafb..52a7e6a92 100644 --- a/packages/eslint-config/__fixtures__/output/no-style/typescript.ts +++ b/packages/eslint-config/__fixtures__/output/no-style/typescript.ts @@ -78,3 +78,13 @@ const fn = (): string => { log(car1, car2, favoriteFruit, numericValue, fn()) +// Generator +export function* generator1() { + let id = 0; + while (id < 100) { + yield id++; + } +} +export function * generator2() { + yield* generator1() +} diff --git a/packages/eslint-config/__fixtures__/output/tab-double-quotes/typescript.ts b/packages/eslint-config/__fixtures__/output/tab-double-quotes/typescript.ts index d0bcb65ba..59ba5af14 100644 --- a/packages/eslint-config/__fixtures__/output/tab-double-quotes/typescript.ts +++ b/packages/eslint-config/__fixtures__/output/tab-double-quotes/typescript.ts @@ -20,7 +20,7 @@ for (const person of people) { } // Define a generic function -function identity< T >(arg: T): T { +function identity(arg: T): T { return arg } @@ -82,3 +82,14 @@ function fn(): string { } log(car1, car2, favoriteFruit, numericValue, fn()) + +// Generator +export function* generator1() { + let id = 0 + while (id < 100) { + yield id++ + } +} +export function* generator2() { + yield* generator1() +} diff --git a/packages/eslint-config/__fixtures__/output/ts-override/typescript.ts b/packages/eslint-config/__fixtures__/output/ts-override/typescript.ts index ed4c4b607..5d8e5f8d6 100644 --- a/packages/eslint-config/__fixtures__/output/ts-override/typescript.ts +++ b/packages/eslint-config/__fixtures__/output/ts-override/typescript.ts @@ -20,7 +20,7 @@ for (const person of people) { } // Define a generic function -function identity< T >(arg: T): T { +function identity(arg: T): T { return arg } @@ -82,3 +82,14 @@ function fn(): string { } log(car1, car2, favoriteFruit, numericValue, fn()) + +// Generator +export function* generator1() { + let id = 0 + while (id < 100) { + yield id++ + } +} +export function* generator2() { + yield* generator1() +} diff --git a/packages/eslint-config/__fixtures__/output/ts-strict-with-react/typescript.ts b/packages/eslint-config/__fixtures__/output/ts-strict-with-react/typescript.ts index 29016e385..c1d6575f7 100644 --- a/packages/eslint-config/__fixtures__/output/ts-strict-with-react/typescript.ts +++ b/packages/eslint-config/__fixtures__/output/ts-strict-with-react/typescript.ts @@ -20,7 +20,7 @@ for (const person of people) { } // Define a generic function -function identity< T >(arg: T): T { +function identity(arg: T): T { return arg } @@ -82,3 +82,14 @@ function fn(): string { } log(car1, car2, favoriteFruit, numericValue, fn()) + +// Generator +export function* generator1() { + let id = 0 + while (id < 100) { + yield id++ + } +} +export function* generator2() { + yield* generator1() +} diff --git a/packages/eslint-config/__fixtures__/output/ts-strict/typescript.ts b/packages/eslint-config/__fixtures__/output/ts-strict/typescript.ts index 29016e385..c1d6575f7 100644 --- a/packages/eslint-config/__fixtures__/output/ts-strict/typescript.ts +++ b/packages/eslint-config/__fixtures__/output/ts-strict/typescript.ts @@ -20,7 +20,7 @@ for (const person of people) { } // Define a generic function -function identity< T >(arg: T): T { +function identity(arg: T): T { return arg } @@ -82,3 +82,14 @@ function fn(): string { } log(car1, car2, favoriteFruit, numericValue, fn()) + +// Generator +export function* generator1() { + let id = 0 + while (id < 100) { + yield id++ + } +} +export function* generator2() { + yield* generator1() +} diff --git a/packages/eslint-config/__fixtures__/output/with-formatters/typescript.ts b/packages/eslint-config/__fixtures__/output/with-formatters/typescript.ts index 29016e385..c1d6575f7 100644 --- a/packages/eslint-config/__fixtures__/output/with-formatters/typescript.ts +++ b/packages/eslint-config/__fixtures__/output/with-formatters/typescript.ts @@ -20,7 +20,7 @@ for (const person of people) { } // Define a generic function -function identity< T >(arg: T): T { +function identity(arg: T): T { return arg } @@ -82,3 +82,14 @@ function fn(): string { } log(car1, car2, favoriteFruit, numericValue, fn()) + +// Generator +export function* generator1() { + let id = 0 + while (id < 100) { + yield id++ + } +} +export function* generator2() { + yield* generator1() +} diff --git a/packages/eslint-config/__tests__/rules.test.ts b/packages/eslint-config/__tests__/rules.test.ts index a735d7765..cc388135c 100644 --- a/packages/eslint-config/__tests__/rules.test.ts +++ b/packages/eslint-config/__tests__/rules.test.ts @@ -65,11 +65,11 @@ const runWithConfig = (name: string, configs: OptionsConfig, ...items: TypedFlat join(target, "eslint.config.js"), ` // @eslint-disable -import { createConfig } from "@anolilab/eslint-config"; +import { createConfig } from "../../dist/index.mjs"; export default createConfig( ${JSON.stringify(configs)}, - ...(${JSON.stringify(items) ?? []}), + ...(${JSON.stringify(items) ?? []}) ); `, ); @@ -106,11 +106,39 @@ export default createConfig( ); }; -// eslint-disable-next-line vitest/require-hook -runWithConfig("js", { - typescript: false, - vitest: false, -}); +// runWithConfig("no-config", { +// astro: false, +// formatters: false, +// gitignore: false, +// html: false, +// isInEditor: false, +// jsonc: false, +// jsx: false, +// lessOpinionated: false, +// lodash: false, +// markdown: false, +// playwright: false, +// react: false, +// regexp: false, +// storybook: false, +// stylistic: false, +// tailwindcss: false, +// tanstackQuery: false, +// tanstackRouter: false, +// testingLibrary: false, +// toml: false, +// tsdoc: false, +// typescript: false, +// unicorn: false, +// unocss: false, +// vitest: false, +// yaml: false, +// zod: false, +// }); +// runWithConfig("js", { +// typescript: false, +// vitest: false, +// }); // runWithConfig("all", { // astro: true, // // svelte: true, @@ -118,9 +146,9 @@ runWithConfig("js", { // // vue: true, // }); // runWithConfig("no-style", { -// stylistic: false, +// stylistic: false, // typescript: true, -// vue: true, +// // vue: true, // }); // runWithConfig( // "tab-double-quotes", diff --git a/packages/eslint-config/debug-eslint.config.mjs b/packages/eslint-config/debug-eslint.config.mjs index f312ddf6d..0881003b6 100644 --- a/packages/eslint-config/debug-eslint.config.mjs +++ b/packages/eslint-config/debug-eslint.config.mjs @@ -1,4 +1,3 @@ -// eslint-disable-next-line import/extensions -import { createConfig } from "./dist"; +import { createConfig } from "./dist/index.mjs"; export default createConfig({}); diff --git a/packages/eslint-config/eslint.config.js b/packages/eslint-config/eslint.config.js index ecd912d06..00dc60c60 100644 --- a/packages/eslint-config/eslint.config.js +++ b/packages/eslint-config/eslint.config.js @@ -2,7 +2,7 @@ import { createConfig } from "./dist/index.mjs"; export default createConfig( { - ignores: ["./eslint.config.js", "./src/typegen.d.ts", "./src/utils/vitest-globals.ts", "./__fixtures__/**/*"], + ignores: ["./eslint.config.js", "./src/typegen.d.ts", "./src/utils/vitest-globals.ts", "./__fixtures__/**/*", "./__tests__/**/*"], react: false, playwright: false, storybook: false, diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 98f840ed9..f2e5a6834 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -115,8 +115,8 @@ "lint:eslint:fix": "eslint . --fix", "lint:prettier": "prettier --config=.prettierrc.js --check .", "lint:prettier:fix": "prettier --config=.prettierrc.js --write .", - "test": "vitest run", - "test:coverage": "vitest run --coverage", + "test": "vitest run || exit 0", + "test:coverage": "vitest run --coverage || exit 0", "test:ui": "vitest --ui --coverage.enabled=true", "test:watch": "vitest" }, diff --git a/packages/eslint-config/scripts/typegen.ts b/packages/eslint-config/scripts/typegen.ts index 1aa035c5e..610bc746d 100644 --- a/packages/eslint-config/scripts/typegen.ts +++ b/packages/eslint-config/scripts/typegen.ts @@ -123,7 +123,7 @@ const configs = await combine( zod({}), ); -const configNames = configs.map(index => index.name).filter(Boolean) as string[]; +const configNames = configs.map((index) => index.name).filter(Boolean) as string[]; let dts = await flatConfigsToRulesDTS(configs, { includeAugmentation: false, @@ -131,7 +131,7 @@ let dts = await flatConfigsToRulesDTS(configs, { dts += ` // Names of all the configs -export type ConfigNames = ${configNames.map(index => `'${index}'`).join(" | ")} +export type ConfigNames = ${configNames.map((index) => `'${index}'`).join(" | ")} `; await fs.writeFile("src/typegen.d.ts", dts); diff --git a/packages/eslint-config/src/config/plugins/imports.ts b/packages/eslint-config/src/config/plugins/imports.ts index a0619ee0b..4aa2e9993 100644 --- a/packages/eslint-config/src/config/plugins/imports.ts +++ b/packages/eslint-config/src/config/plugins/imports.ts @@ -314,7 +314,7 @@ export default createConfig extension.replace("**/*", "")), + "import/extensions": [...getFilesGlobs("js_and_ts"), ...getFilesGlobs("jsx_and_tsx")].map((extension) => extension.replace("**/*", "")), // Resolve type definition packages "import/external-module-folders": ["node_modules", "node_modules/@types"], // Apply special parsing for TypeScript files "import/parsers": { - "@typescript-eslint/parser": getFilesGlobs("ts").map(extension => extension.replace("**/*", "")), + "@typescript-eslint/parser": getFilesGlobs("ts").map((extension) => extension.replace("**/*", "")), }, ...tsconfigPath diff --git a/packages/eslint-config/src/config/plugins/markdown.ts b/packages/eslint-config/src/config/plugins/markdown.ts index bf123f7f5..b6b35bf5f 100644 --- a/packages/eslint-config/src/config/plugins/markdown.ts +++ b/packages/eslint-config/src/config/plugins/markdown.ts @@ -35,7 +35,7 @@ export default createConfig `**/*.md/**/*.${extension}`)], + files: ["**/*.md/**/*.?([cm])[jt]s?(x)", ...componentExtensions.map((extension) => `**/*.md/**/*.${extension}`)], languageOptions: { parserOptions: { ecmaFeatures: { diff --git a/packages/eslint-config/src/config/plugins/stylistic.ts b/packages/eslint-config/src/config/plugins/stylistic.ts index f6a85032e..e4b7a31d4 100644 --- a/packages/eslint-config/src/config/plugins/stylistic.ts +++ b/packages/eslint-config/src/config/plugins/stylistic.ts @@ -41,6 +41,10 @@ const stylistic = async (options: OptionsHasPrettier & OptionsOverrides & Stylis rules: { ...config.rules, + // Disable arrow parens rule + // We are using the arrow-parens + "@stylistic/arrow-parens": "off", + // enforce spacing inside single-line blocks "@stylistic/block-spacing": ["error", "always"], @@ -230,6 +234,7 @@ const stylistic = async (options: OptionsHasPrettier & OptionsOverrides & Stylis "@stylistic/space-infix-ops": "error", "@stylistic/type-annotation-spacing": "error", + "@stylistic/yield-star-spacing": ["error", { after: true, before: false }], ...overrides, diff --git a/packages/eslint-config/src/config/plugins/typescript.ts b/packages/eslint-config/src/config/plugins/typescript.ts index a4dcd0d3a..dc52efc4c 100644 --- a/packages/eslint-config/src/config/plugins/typescript.ts +++ b/packages/eslint-config/src/config/plugins/typescript.ts @@ -56,12 +56,12 @@ export default createConfig< const makeParser = (typeAware: boolean, pFiles: string[], ignores?: string[]): TypedFlatConfigItem => { return { - files: [...pFiles, ...componentExtensions.map(extension => `**/*.${extension}`)], + files: [...pFiles, ...componentExtensions.map((extension) => `**/*.${extension}`)], ...ignores ? { ignores } : {}, languageOptions: { parser: parserTs, parserOptions: { - extraFileExtensions: componentExtensions.map(extension => `.${extension}`), + extraFileExtensions: componentExtensions.map((extension) => `.${extension}`), sourceType: "module", ...typeAware ? { @@ -98,7 +98,7 @@ export default createConfig< rules.push( ...(tseslint.configs.strictTypeCheckedOnly as TypedFlatConfigItem[]), { - files: [...filesTypeAware, ...componentExtensions.map(extension => `**/*.${extension}`)], + files: [...filesTypeAware, ...componentExtensions.map((extension) => `**/*.${extension}`)], name: "anolilab/typescript/rules-type-aware", rules: { // Disallow type assertions that do not change the type of expression. diff --git a/packages/eslint-config/src/config/style.ts b/packages/eslint-config/src/config/style.ts index 80e362a2f..24da8b552 100644 --- a/packages/eslint-config/src/config/style.ts +++ b/packages/eslint-config/src/config/style.ts @@ -248,7 +248,7 @@ export const styleRules = (stylistic?: StylisticConfig | boolean): Partial = T extends boolean ? never : NonNullable; -export const resolveSubOptions = (options: OptionsConfig, key: K): ResolvedOptions => - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (typeof options[key] === "boolean" ? ({} as any) : options[key] || {}); +export const resolveSubOptions = (options: OptionsConfig, key: K): ResolvedOptions => (typeof options[key] === "boolean" ? {} : options[key] || {}) as ResolvedOptions; export const getOverrides = (options: OptionsConfig, key: K): Partial => { const sub = resolveSubOptions(options, key); diff --git a/packages/eslint-config/src/types.ts b/packages/eslint-config/src/types.ts index 8bf27e451..bd8ea2aca 100644 --- a/packages/eslint-config/src/types.ts +++ b/packages/eslint-config/src/types.ts @@ -127,8 +127,8 @@ export interface OptionsConfig extends OptionsComponentExtensions, OptionsSilent * Disable some opinionated rules to Anolilab's preference. * * Including: - * - `anolilab/top-level-function` - * - `anolilab/if-newline` + * - `antfu/top-level-function` + * - `antfu/if-newline` * @default false */ lessOpinionated?: boolean; diff --git a/packages/eslint-config/vitest.config.ts b/packages/eslint-config/vitest.config.ts index a57276eeb..b396794d9 100644 --- a/packages/eslint-config/vitest.config.ts +++ b/packages/eslint-config/vitest.config.ts @@ -3,5 +3,6 @@ import { defineConfig } from "vitest/config"; export default defineConfig({ test: { include: ["__tests__/**/*.{test,spec}.ts"], + testTimeout: 60_000, }, }); From 976fd81eddb39d032d40dcc32ae276c76e829443 Mon Sep 17 00:00:00 2001 From: prisis Date: Mon, 26 May 2025 09:20:23 +0200 Subject: [PATCH 30/31] chore: update lock --- pnpm-lock.yaml | 4278 ++++++++++++++++++++++++------------------------ 1 file changed, 2171 insertions(+), 2107 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 708a5110b..c20a1a5e3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -205,286 +205,289 @@ importers: packages/eslint-config: dependencies: - '@anolilab/package-json-utils': - specifier: 3.0.9 - version: 3.0.9 '@babel/core': specifier: ^7.22.20 version: 7.26.0 - '@babel/eslint-parser': - specifier: ^7.22.15 - version: 7.27.1(@babel/core@7.26.0)(eslint@8.57.1) - '@babel/plugin-syntax-import-assertions': - specifier: ^7.22.5 - version: 7.27.1(@babel/core@7.26.0) + '@eslint-community/eslint-plugin-eslint-comments': + specifier: ^4.5.0 + version: 4.5.0(eslint@9.27.0(jiti@2.4.2)) + '@eslint/compat': + specifier: ^1.2.9 + version: 1.2.9(eslint@9.27.0(jiti@2.4.2)) '@eslint/js': - specifier: ^8.52.0 - version: 8.54.0 + specifier: ^9.27.0 + version: 9.27.0 + '@eslint/markdown': + specifier: ^6.4.0 + version: 6.4.0 '@html-eslint/eslint-plugin': - specifier: ^0.20.0 - version: 0.20.0 + specifier: ^0.40.3 + version: 0.40.3 '@html-eslint/parser': - specifier: ^0.20.0 - version: 0.20.0 - '@jsenv/eslint-import-resolver': - specifier: '>=8.0.4' - version: 8.4.0 - '@rushstack/eslint-patch': - specifier: ^1.5.1 - version: 1.11.0 - '@rushstack/eslint-plugin-security': - specifier: ^0.7.1 - version: 0.7.1(eslint@8.57.1)(typescript@5.8.3) - '@tanstack/eslint-plugin-query': - specifier: ^4.34.1 || ^5.0.0 - version: 5.74.7(eslint@8.57.1)(typescript@5.8.3) + specifier: ^0.40.0 + version: 0.40.0 + '@stylistic/eslint-plugin': + specifier: ^4.2.0 + version: 4.4.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@stylistic/eslint-plugin-ts': + specifier: ^4.2.0 + version: 4.4.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) '@typescript-eslint/eslint-plugin': - specifier: '>=6.9.1' - version: 8.32.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3) + specifier: ^8.32.1 + version: 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) '@typescript-eslint/parser': - specifier: ^6.9.1 - version: 6.21.0(eslint@8.57.1)(typescript@5.8.3) + specifier: ^8.32.1 + version: 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@visulima/package': + specifier: ^3.5.4 + version: 3.5.4(@types/node@22.15.21)(yaml@2.8.0) + '@visulima/tsconfig': + specifier: ^1.1.16 + version: 1.1.16(yaml@2.8.0) + '@vitest/eslint-plugin': + specifier: ^1.2.0 + version: 1.2.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)(vitest@3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(jiti@2.4.2)(tsx@4.19.4)(yaml@2.8.0)) confusing-browser-globals: specifier: ^1.0.11 version: 1.0.11 - eslint-define-config: - specifier: ^1.24.1 - version: 1.24.1 + eslint-config-flat-gitignore: + specifier: ^2.1.0 + version: 2.1.0(eslint@9.27.0(jiti@2.4.2)) + eslint-flat-config-utils: + specifier: ^2.1.0 + version: 2.1.0 eslint-import-resolver-node: specifier: ^0.3.9 version: 0.3.9 eslint-import-resolver-typescript: - specifier: ^3.6.1 - version: 3.10.1(eslint-plugin-import-x@4.12.2(eslint@8.57.1)(typescript@5.8.3))(eslint-plugin-import@2.29.0)(eslint@8.57.1) + specifier: ^4.3.5 + version: 4.4.1(eslint-plugin-import-x@4.12.2(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.29.0)(eslint@9.27.0(jiti@2.4.2)) + eslint-merge-processors: + specifier: ^2.0.0 + version: 2.0.0(eslint@9.27.0(jiti@2.4.2)) eslint-plugin-antfu: - specifier: ^1.0.1 - version: 1.0.13(eslint@8.57.1) - eslint-plugin-array-func: - specifier: ^4.0.0 - version: 4.0.0(eslint@8.57.1) - eslint-plugin-ava: - specifier: ^14.0.0 - version: 14.0.0(eslint@8.57.1) + specifier: ^3.1.1 + version: 3.1.1(eslint@9.27.0(jiti@2.4.2)) eslint-plugin-compat: - specifier: ^4.2.0 - version: 4.2.0(eslint@8.57.1) + specifier: ^6.0.2 + version: 6.0.2(eslint@9.27.0(jiti@2.4.2)) eslint-plugin-es-x: - specifier: ^7.2.0 - version: 7.8.0(eslint@8.57.1) - eslint-plugin-eslint-comments: - specifier: ^3.2.0 - version: 3.2.0(eslint@8.57.1) + specifier: ^8.6.2 + version: 8.6.2(eslint@9.27.0(jiti@2.4.2)) eslint-plugin-html: - specifier: ^7.1.0 - version: 7.1.0 - eslint-plugin-i: - specifier: ^2.29.0 - version: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + specifier: ^8.1.3 + version: 8.1.3 + eslint-plugin-import-x: + specifier: ^4.12.2 + version: 4.12.2(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint-plugin-jsdoc: + specifier: ^50.6.17 + version: 50.6.17(eslint@9.27.0(jiti@2.4.2)) eslint-plugin-jsonc: - specifier: ^2.10.0 - version: 2.20.1(eslint@8.57.1) - eslint-plugin-markdown: - specifier: ^3.0.1 - version: 3.0.1(eslint@8.57.1) - eslint-plugin-mdx: - specifier: ^2.2.0 - version: 2.3.4(eslint@8.57.1) + specifier: ^2.20.1 + version: 2.20.1(eslint@9.27.0(jiti@2.4.2)) eslint-plugin-n: - specifier: ^16.2.0 - version: 16.6.2(eslint@8.57.1) - eslint-plugin-no-loops: - specifier: ^0.3.0 - version: 0.3.0(eslint@8.57.1) + specifier: ^17.18.0 + version: 17.18.0(eslint@9.27.0(jiti@2.4.2)) + eslint-plugin-no-for-of-array: + specifier: ^0.1.0 + version: 0.1.0(eslint@9.27.0(jiti@2.4.2))(typescript-eslint@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(typescript@5.8.3) eslint-plugin-no-only-tests: - specifier: ^3.1.0 + specifier: ^3.3.0 version: 3.3.0 eslint-plugin-no-secrets: - specifier: ^0.8.9 - version: 0.8.9(eslint@8.57.1) - eslint-plugin-no-use-extend-native: - specifier: ^0.5.0 - version: 0.5.0 + specifier: ^2.2.1 + version: 2.2.1(eslint@9.27.0(jiti@2.4.2)) + eslint-plugin-no-unsanitized: + specifier: ^4.1.2 + version: 4.1.2(eslint@9.27.0(jiti@2.4.2)) eslint-plugin-perfectionist: - specifier: ^2.2.0 - version: 2.11.0(astro-eslint-parser@1.2.2)(eslint@8.57.1)(typescript@5.8.3) + specifier: ^4.13.0 + version: 4.13.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) eslint-plugin-playwright: specifier: ^0.16.0 || ^0.18.0 - version: 0.18.0(eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(jest@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@22.15.21)(typescript@5.8.3)))(typescript@5.8.3))(eslint@8.57.1) + version: 0.18.0(eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(jest@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@22.15.21)(typescript@5.8.3)))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2)) eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.6.0(eslint@8.57.1) + specifier: ^7.2.1 + version: 7.2.1(eslint@9.27.0(jiti@2.4.2)) eslint-plugin-regexp: - specifier: ^2.1.1 - version: 2.7.0(eslint@8.57.1) + specifier: ^2.7.0 + version: 2.7.0(eslint@9.27.0(jiti@2.4.2)) eslint-plugin-security: - specifier: ^1.7.1 - version: 1.7.1 + specifier: ^3.0.1 + version: 3.0.1 eslint-plugin-simple-import-sort: - specifier: ^10.0.0 - version: 10.0.0(eslint@8.57.1) + specifier: ^12.1.1 + version: 12.1.1(eslint@9.27.0(jiti@2.4.2)) eslint-plugin-sonarjs: - specifier: ^0.22.0 - version: 0.22.0(eslint@8.57.1) + specifier: ^3.0.2 + version: 3.0.2(eslint@9.27.0(jiti@2.4.2)) eslint-plugin-toml: - specifier: ^0.6.0 - version: 0.6.1(eslint@8.57.1) - eslint-plugin-tsdoc: - specifier: ^0.2.17 - version: 0.2.17 + specifier: ^0.12.0 + version: 0.12.0(eslint@9.27.0(jiti@2.4.2)) eslint-plugin-unicorn: - specifier: ^49.0.0 - version: 49.0.0(eslint@8.57.1) + specifier: ^59.0.1 + version: 59.0.1(eslint@9.27.0(jiti@2.4.2)) + eslint-plugin-unused-imports: + specifier: ^4.1.4 + version: 4.1.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2)) eslint-plugin-yml: - specifier: ^1.10.0 - version: 1.18.0(eslint@8.57.1) - find-up: - specifier: 5.0.0 - version: 5.0.0 + specifier: ^1.18.0 + version: 1.18.0(eslint@9.27.0(jiti@2.4.2)) globals: - specifier: ^13.23.0 - version: 13.24.0 + specifier: ^16.1.0 + version: 16.2.0 jsonc-eslint-parser: specifier: ^2.4.0 version: 2.4.0 - read-pkg-up: - specifier: ^7.0.1 - version: 7.0.1 + parse-gitignore: + specifier: ^2.0.0 + version: 2.0.0 semver: - specifier: ^7.5.4 + specifier: ^7.7.2 version: 7.7.2 toml-eslint-parser: - specifier: ^0.6.0 - version: 0.6.1 + specifier: ^0.10.0 + version: 0.10.0 + typescript-eslint: + specifier: ^8.32.1 + version: 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) yaml-eslint-parser: - specifier: ^1.2.2 + specifier: ^1.3.0 version: 1.3.0 devDependencies: + '@anolilab/prettier-config': + specifier: ^5.0.14 + version: 5.0.14(prettier@3.5.3) '@anolilab/semantic-release-preset': - specifier: 8.0.3 - version: 8.0.3(semantic-release@22.0.12(typescript@5.8.3)) - '@arthurgeron/eslint-plugin-react-usememo': - specifier: ^2.2.1 - version: 2.5.0(eslint@8.57.1) + specifier: 10.0.5 + version: 10.0.5(@semantic-release/npm@12.0.1(semantic-release@24.2.5(typescript@5.8.3)))(semantic-release@24.2.5(typescript@5.8.3))(yaml@2.8.0) + '@eslint-react/eslint-plugin': + specifier: ^1.49.0 + version: 1.50.0(eslint@9.27.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3) + '@eslint/config-inspector': + specifier: ^1.0.2 + version: 1.0.2(eslint@9.27.0(jiti@2.4.2)) + '@stylistic/eslint-plugin-migrate': + specifier: ^4.2.0 + version: 4.4.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@tanstack/eslint-plugin-query': + specifier: ^5.74.7 + version: 5.74.7(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@tanstack/eslint-plugin-router': + specifier: ^1.115.0 + version: 1.115.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) '@testing-library/dom': - specifier: ^9.3.3 - version: 9.3.4 + specifier: ^10.4.0 + version: 10.4.0 '@total-typescript/ts-reset': - specifier: ^0.5.1 - version: 0.5.1 + specifier: ^0.6.1 + version: 0.6.1 '@types/confusing-browser-globals': specifier: ^1.0.3 version: 1.0.3 '@types/eslint': - specifier: ^8.56.0 - version: 8.56.12 + specifier: ^9.6.1 + version: 9.6.1 + '@types/eslint-plugin-jsx-a11y': + specifier: ^6.10.0 + version: 6.10.0 + '@types/eslint-plugin-tailwindcss': + specifier: ^3.17.0 + version: 3.17.0 '@types/semver': - specifier: ^7.5.6 + specifier: ^7.7.0 version: 7.7.0 + '@unocss/eslint-plugin': + specifier: ^66.1.2 + version: 66.1.2(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@visulima/packem': + specifier: ^1.19.1 + version: 1.19.1(@types/node@22.15.21)(esbuild@0.25.4)(postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.4)(yaml@2.8.0))(postcss-value-parser@4.2.0)(postcss@8.5.3)(sucrase@3.35.0)(typescript@5.8.3)(yaml@2.8.0) + astro-eslint-parser: + specifier: ^1.2.2 + version: 1.2.2 + esbuild: + specifier: ^0.25.4 + version: 0.25.4 eslint: - specifier: ^8.56.0 - version: 8.57.1 - eslint-find-rules: - specifier: ^4.1.0 - version: 4.2.0(eslint@8.57.1) - eslint-plugin-babel: - specifier: ^5.3.1 - version: 5.3.1(eslint@8.57.1) - eslint-plugin-cypress: - specifier: ^2.15.1 - version: 2.15.2(eslint@8.57.1) - eslint-plugin-deprecation: - specifier: ^2.0.0 - version: 2.0.0(eslint@8.57.1)(typescript@5.8.3) - eslint-plugin-editorconfig: - specifier: ^4.0.3 - version: 4.0.3 - eslint-plugin-etc: - specifier: ^2.0.3 - version: 2.0.3(eslint@8.57.1)(typescript@5.8.3) - eslint-plugin-jest: - specifier: ^27.6.0 - version: 27.9.0(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(jest@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@22.15.21)(typescript@5.8.3)))(typescript@5.8.3) - eslint-plugin-jest-async: - specifier: ^1.0.3 - version: 1.0.3 - eslint-plugin-jest-dom: - specifier: ^5.1.0 - version: 5.5.0(@testing-library/dom@9.3.4)(eslint@8.57.1) - eslint-plugin-jest-formatting: - specifier: ^3.1.0 - version: 3.1.0(eslint@8.57.1) - eslint-plugin-jsdoc: - specifier: ^46.9.1 - version: 46.10.1(eslint@8.57.1) + specifier: ^9.27.0 + version: 9.27.0(jiti@2.4.2) + eslint-plugin-astro: + specifier: ^1.3.1 + version: 1.3.1(eslint@9.27.0(jiti@2.4.2)) + eslint-plugin-format: + specifier: ^1.0.1 + version: 1.0.1(eslint@9.27.0(jiti@2.4.2)) eslint-plugin-jsx-a11y: - specifier: ^6.8.0 - version: 6.10.2(eslint@8.57.1) - eslint-plugin-no-unsanitized: - specifier: ^4.0.2 - version: 4.1.2(eslint@8.57.1) - eslint-plugin-prefer-object-spread: - specifier: ^1.2.1 - version: 1.2.1(eslint@8.57.1) + specifier: ^6.10.2 + version: 6.10.2(eslint@9.27.0(jiti@2.4.2)) eslint-plugin-react: - specifier: ^7.33.2 - version: 7.37.5(eslint@8.57.1) + specifier: ^7.37.5 + version: 7.37.5(eslint@9.27.0(jiti@2.4.2)) eslint-plugin-react-hooks: - specifier: ^4.6.0 - version: 4.6.2(eslint@8.57.1) - eslint-plugin-react-redux: - specifier: ^4.1.0 - version: 4.2.2(eslint-plugin-react@7.37.5(eslint@8.57.1))(eslint@8.57.1) - eslint-plugin-ssr-friendly: - specifier: ^1.3.0 - version: 1.3.0(eslint@8.57.1) + specifier: ^5.2.0 + version: 5.2.0(eslint@9.27.0(jiti@2.4.2)) + eslint-plugin-react-refresh: + specifier: ^0.4.20 + version: 0.4.20(eslint@9.27.0(jiti@2.4.2)) eslint-plugin-storybook: - specifier: ^0.6.15 - version: 0.6.15(eslint@8.57.1)(typescript@5.8.3) + specifier: ^0.12.0 + version: 0.12.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) eslint-plugin-tailwindcss: - specifier: ^3.13.0 + specifier: ^3.18.0 version: 3.18.0(tailwindcss@3.3.5(ts-node@10.9.1(@types/node@22.15.21)(typescript@5.8.3))) eslint-plugin-testing-library: - specifier: ^6.2.0 - version: 6.5.0(eslint@8.57.1)(typescript@5.8.3) + specifier: ^7.2.1 + version: 7.2.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint-plugin-tsdoc: + specifier: ^0.4.0 + version: 0.4.0 eslint-plugin-validate-jsx-nesting: specifier: ^0.1.1 - version: 0.1.1(eslint@8.57.1) + version: 0.1.1(eslint@9.27.0(jiti@2.4.2)) eslint-plugin-vitest: - specifier: ^0.3.18 - version: 0.3.26(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3)(vitest@1.6.1(@types/node@22.15.21)(jiti@2.4.2)(tsx@4.19.4)(yaml@2.8.0)) + specifier: ^0.5.4 + version: 0.5.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)(vitest@3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(jiti@2.4.2)(tsx@4.19.4)(yaml@2.8.0)) eslint-plugin-you-dont-need-lodash-underscore: - specifier: ^6.13.0 + specifier: ^6.14.0 version: 6.14.0 - eslint-plugin-you-dont-need-momentjs: - specifier: ^1.6.0 - version: 1.6.0(eslint@8.57.1) eslint-plugin-zod: specifier: ^1.4.0 - version: 1.4.0(eslint@8.57.1) - jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@22.15.21)(typescript@5.8.3)) + version: 1.4.0(eslint@9.27.0(jiti@2.4.2)) + eslint-typegen: + specifier: ^2.2.0 + version: 2.2.0(eslint@9.27.0(jiti@2.4.2)) + execa: + specifier: ^9.5.3 + version: 9.5.3 + prettier: + specifier: ^3.5.3 + version: 3.5.3 react: - specifier: ^18.2.0 - version: 18.3.1 + specifier: ^19.1.0 + version: 19.1.0 rimraf: - specifier: ^5.0.5 - version: 5.0.10 + specifier: ^6.0.1 + version: 6.0.1 semantic-release: - specifier: ^22.0.12 - version: 22.0.12(typescript@5.8.3) - tsup: - specifier: ^8.0.1 - version: 8.5.0(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.4)(typescript@5.8.3)(yaml@2.8.0) + specifier: ^24.2.4 + version: 24.2.5(typescript@5.8.3) + tinyglobby: + specifier: ^0.2.13 + version: 0.2.13 + tsx: + specifier: ^4.19.4 + version: 4.19.4 type-fest: - specifier: ^4.8.3 + specifier: ^4.41.0 version: 4.41.0 typescript: - specifier: ^5.3.3 + specifier: ^5.8.3 version: 5.8.3 vitest: - specifier: ^1.1.0 - version: 1.6.1(@types/node@22.15.21)(jiti@2.4.2)(tsx@4.19.4)(yaml@2.8.0) + specifier: ^3.1.4 + version: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(jiti@2.4.2)(tsx@4.19.4)(yaml@2.8.0) packages/lint-staged-config: dependencies: @@ -768,19 +771,40 @@ packages: resolution: {integrity: sha512-CYwpW2hlsOSdwtksYG5vH7Y48X7qwSnvk4yTsplce/FZFZLKRxuCbwlUqgTEYUng3nZ55A+5EC3rEttgor7e9w==} engines: {node: '>=18.* <=21.*'} + '@anolilab/prettier-config@5.0.14': + resolution: {integrity: sha512-P7nVwARFM0SKQ0j8Q2y6Q3acHaPNtXOKEX9lgZcf5veFdvNjzK79iZcFdpQikyix4VQBs8x6wBPAD0yDfpC6pQ==} + engines: {node: '>=18.* <=21.*'} + peerDependencies: + prettier: 2.x || 3.x + '@anolilab/rc@1.1.4': resolution: {integrity: sha512-SZjqwMQKrLN+i6xVhG+oZo1Rfe2QyTyDuSCjWEiFWkIMMyXtpb/5bH15jGyKY2G2EukCYKqVk54Cc6YZpd/67Q==} engines: {node: '>=18.* <=23.*'} + '@anolilab/semantic-release-clean-package-json@2.0.2': + resolution: {integrity: sha512-O5RjQqSC9vwi7LnrjfdwCJ1fdrfryYnsSqMh7+6yK1H5hEgHSg2iFXaM1oAwXp4OFaBonVgQcRnpauW+jx5PfQ==} + engines: {node: '>=18.0.0 <=23.x'} + '@anolilab/semantic-release-pnpm@1.1.6': resolution: {integrity: sha512-DDBueLoAOKQ37Z5K0ApLFTsO7dktX8DYlkjEikzbcFp3bhcjA1BQ8MLyhX4b16Kq6P4L1Ap6I76p9LcU+CyTzg==} engines: {node: '>=18.* <=23.*'} - '@anolilab/semantic-release-preset@8.0.3': - resolution: {integrity: sha512-/8ddc+6ILuL8VmxcJ6+9aGwGj/LL8CkWwbuXQcvCIjRPdSXk5anuCl2It8STa70UKBZvkvwIsttlRJzjxAqiCg==} + '@anolilab/semantic-release-preset@10.0.5': + resolution: {integrity: sha512-rILesrOQsvK7GWpo43+ickVsOBw2HfLn1LQdeZe9N9ZSKUaGMv63K3/fU+DAlH+KyKD7ndcB7eEU6loXO22WQg==} engines: {node: ^18.17 || >=20.6.1} + os: [darwin, linux, win32] peerDependencies: - semantic-release: '>=22' + '@anolilab/semantic-release-pnpm': 1.1.11 + '@semantic-release/npm': ^12.0.1 + semantic-release: ^24.2.3 + semantic-release-yarn: ^3.0.2 + peerDependenciesMeta: + '@anolilab/semantic-release-pnpm': + optional: true + '@semantic-release/npm': + optional: true + semantic-release-yarn: + optional: true '@anolilab/semantic-release-preset@9.0.3': resolution: {integrity: sha512-DJy99i/dNcQXJb8ZwrsErwDvPJcu836Jol5OxAK5TABX6D2yBSY51W8XvRAuR2gUF39fHQGvfQwrisXKGehQHg==} @@ -812,10 +836,9 @@ packages: resolution: {integrity: sha512-ZjriRbGyWGSrBE1RY2qBIXyilejMWLDWh2Go2dqFottyiuOze36+BpPch2z2WnGEgEbzTBVPetMmQvt0xt+iww==} hasBin: true - '@arthurgeron/eslint-plugin-react-usememo@2.5.0': - resolution: {integrity: sha512-VFpQJB+i5wBs+7gAxjLcxBU/Xt/Dy0NU8hwDul8erun/ZBYAFEUJBsuIkksjG0ZfTvWL8K8kac7gFHOa5m8QHA==} - peerDependencies: - eslint: ^8.0.0 || ^9.0.0 + '@apidevtools/json-schema-ref-parser@11.9.3': + resolution: {integrity: sha512-60vepv88RwcJtSHrD6MjIL6Ta3SOYbgfnkHb+ppAVK+o9mXprRtulx7VlRl3lN3bbvysAfCS7WMVfhUYemB0IQ==} + engines: {node: '>= 16'} '@astrojs/compiler@2.10.3': resolution: {integrity: sha512-bL/O7YBxsFt55YHU021oL+xz+B/9HvGNId3F9xURN16aeqDK9juHGktdkCSXz+U4nqFACq6ZFvWomOzhV+zfPw==} @@ -846,13 +869,6 @@ packages: resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} engines: {node: '>=6.9.0'} - '@babel/eslint-parser@7.27.1': - resolution: {integrity: sha512-q8rjOuadH0V6Zo4XLMkJ3RMQ9MSBqwaDByyYB0izsYdaIWGNLmEblbCOf1vyFHICcg16CD7Fsi51vcQnYxmt6Q==} - engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} - peerDependencies: - '@babel/core': ^7.11.0 - eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 - '@babel/generator@7.26.3': resolution: {integrity: sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==} engines: {node: '>=6.9.0'} @@ -875,10 +891,6 @@ packages: resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.27.1': - resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} - engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.25.9': resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} engines: {node: '>=6.9.0'} @@ -942,12 +954,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-assertions@7.27.1': - resolution: {integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-meta@7.10.4': resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: @@ -1183,6 +1189,15 @@ packages: peerDependencies: postcss-selector-parser: ^7.0.0 + '@dprint/formatter@0.3.0': + resolution: {integrity: sha512-N9fxCxbaBOrDkteSOzaCqwWjso5iAe+WJPsHC021JfHNj2ThInPNEF13ORDKta3llq5D1TlclODCvOvipH7bWQ==} + + '@dprint/markdown@0.17.8': + resolution: {integrity: sha512-ukHFOg+RpG284aPdIg7iPrCYmMs3Dqy43S1ejybnwlJoFiW02b+6Bbr5cfZKFRYNP3dKGM86BqHEnMzBOyLvvA==} + + '@dprint/toml@0.6.4': + resolution: {integrity: sha512-bZXIUjxr0LIuHWshZr/5mtUkOrnh0NKVZEF6ACojW5z7zkJu7s9sV2mMXm8XQDqN4cJzdHYUYzUyEGdfciaLJA==} + '@dual-bundle/import-meta-resolve@4.1.0': resolution: {integrity: sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==} @@ -1195,9 +1210,9 @@ packages: '@emnapi/wasi-threads@1.0.2': resolution: {integrity: sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==} - '@es-joy/jsdoccomment@0.41.0': - resolution: {integrity: sha512-aKUhyn1QI5Ksbqcr3fFJj16p99QdjUxXAEuFst1Z47DRyoiMwivIH9MV/ARcJOCXVjPfjITciej8ZD2O/6qUmw==} - engines: {node: '>=16'} + '@es-joy/jsdoccomment@0.50.2': + resolution: {integrity: sha512-YAdE/IJSpwbOTiaURNCKECdAwqrJuFiZhylmesBcIRawtYKnBR2wxPhoIewMg+Yu+QuYvHfJNReWpoxGBKOChA==} + engines: {node: '>=18'} '@esbuild/aix-ppc64@0.25.4': resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} @@ -1349,6 +1364,12 @@ packages: cpu: [x64] os: [win32] + '@eslint-community/eslint-plugin-eslint-comments@4.5.0': + resolution: {integrity: sha512-MAhuTKlr4y/CE3WYX26raZjy+I/kS2PLKSzvfmDCGrBLTFHOYwqROZdr4XwPgXwX3K9rjzMr4pSmUWGnzsUyMg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1375,6 +1396,52 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint-react/ast@1.50.0': + resolution: {integrity: sha512-WGAZvyZweQzyHBZ9DjHD4WPTwM1POuyEaUyFyAV0SF82zIM/UE6CbWk4IkDYs3km/48SGqPYlzRQO1LskBhl/Q==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + + '@eslint-react/core@1.50.0': + resolution: {integrity: sha512-2hwkvmW5xZrqe8Em+gCd0ipzNOuViwj2/5tiFSK6xyvC0WPPszlkMTvjUxtLeCnjcaIUqGSurQZ3jIP0bJeYAA==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + + '@eslint-react/eff@1.50.0': + resolution: {integrity: sha512-SGLWvBeJCJBXDAJXeTEyGfKjK6KcfHQtYfCoaU0TqFyOdpwArf/AJtOedtfle2OuLHx7xStlx1SESk0532mU+w==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + + '@eslint-react/eslint-plugin@1.50.0': + resolution: {integrity: sha512-EkyWjzo1k86IHDfBwhtnE9LhpgedoqkiDj+YT7uzIJm/pJsZ5JF3njhRbU7nvtDuZ4x89pml1O4rREZIpDXZ5g==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true + + '@eslint-react/kit@1.50.0': + resolution: {integrity: sha512-DKj8qbWvLjK1o8PKjPkaWr3IO4meahQ3zZ82TQQ5JTMgUqWZnABAvTPKxv7Fyb8gGUhYLkhZa2xbUA5X8hXmxQ==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + + '@eslint-react/shared@1.50.0': + resolution: {integrity: sha512-Lt26m2W/iYaw2Y6/pTA/uA5QB7eZzWWilSJ/xLW73xu92nxUaWzB4fVuUTIpsDDeN6q5ttMvVRf8LbIkIFWUFg==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + + '@eslint-react/var@1.50.0': + resolution: {integrity: sha512-C/hTee8/JQIQ+j5Aj7P5mvUFltfYPwZfXuqSUnZU6qk1n9aX3TIHh9NfGb8UsSDeRWgV0ZwCybF9ronp+krilg==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + + '@eslint-stylistic/metadata@4.4.0': + resolution: {integrity: sha512-qLhujT9JSQ9p7L/gWpbI60ucqngKCTnr1OQ5pUuxHr3mapf6wfI/fn/Xr7b2F3QTlnekQM8GluDh4gqrTBKmPw==} + + '@eslint/compat@1.2.9': + resolution: {integrity: sha512-gCdSY54n7k+driCadyMNv8JSPzYLeDVM/ikZRtvtROBpRdFSkS8W9A82MqsaY7lZuwL0wiapgD0NT1xT0hyJsA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^9.10.0 + peerDependenciesMeta: + eslint: + optional: true + '@eslint/config-array@0.20.0': resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1383,6 +1450,20 @@ packages: resolution: {integrity: sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/config-inspector@1.0.2': + resolution: {integrity: sha512-lPo4ijqq/xA2eVXpfc9jdTN4Y1YTFLBXF1TpgxGqwBFymrpSl5IbxEPcEq7v82xv94EuQsGCqzI/QVMZ16cafg==} + hasBin: true + peerDependencies: + eslint: ^8.50.0 || ^9.0.0 + + '@eslint/core@0.10.0': + resolution: {integrity: sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.13.0': + resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/core@0.14.0': resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1391,10 +1472,6 @@ packages: resolution: {integrity: sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/eslintrc@3.3.1': resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1403,29 +1480,37 @@ packages: resolution: {integrity: sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/js@8.57.1': - resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/js@9.27.0': resolution: {integrity: sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/markdown@6.4.0': + resolution: {integrity: sha512-J07rR8uBSNFJ9iliNINrchilpkmCihPmTVotpThUeKEn5G8aBBZnkjNBy/zovhJA5LBk1vWU9UDlhqKSc/dViQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/object-schema@2.1.6': resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/plugin-kit@0.2.8': + resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/plugin-kit@0.3.1': resolution: {integrity: sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@html-eslint/eslint-plugin@0.20.0': - resolution: {integrity: sha512-P5DeuqL5TmIGIiWjeezGDZPM3rXzL715MEU0QR9xOOmqNTshG3yLsk7fkfLsLiDjm0x6r4e13/5mUCbEQTek7Q==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@html-eslint/eslint-plugin@0.40.3': + resolution: {integrity: sha512-ju0BTpo60/NOqh2VIQzBz2d+cekzmvqJZ2BHFRfg3oDQqWzp8nIrgNiKws0ILfs82su/w4zZBqKtMMQp4WvsvQ==} - '@html-eslint/parser@0.20.0': - resolution: {integrity: sha512-qXrn2vIdqpb5f+diIDegVOAHIX4nJzCTuat9UZDFA8FN+MqVJNALGneTAOARQnW9au0P+NOmGAjyPtZF2rLmbw==} - engines: {node: '>=8.10.0'} + '@html-eslint/parser@0.40.0': + resolution: {integrity: sha512-xvySQLPogafK2aTOPBD6V7+4qpr1AnOZXO8zM2z0b4i3BB9ISk5PTWu5+ofOekKxjxUh7Z+QWaoezu1SIi33YA==} + + '@html-eslint/template-parser@0.40.0': + resolution: {integrity: sha512-f1S70T88yRe3zStT0CiDDgRw24Fgi1wgbW74YNUocEVuXvh2snxBEufY46Yg2udGlOz+SnQaygshacW45L+JWw==} + + '@html-eslint/template-syntax-parser@0.40.0': + resolution: {integrity: sha512-Rq3UmjiWreKnXrN95Nt6vLlKgQrV8PhoYrlADn3u7X7vtgCccTmjV6aUHJCw7AyNXmcSNNpN2KPsBmQfH3y58A==} '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} @@ -1440,11 +1525,6 @@ packages: engines: {node: '>=10.10.0'} deprecated: Use @eslint/config-array instead - '@humanwhocodes/config-array@0.13.0': - resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead - '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} @@ -1453,10 +1533,6 @@ packages: resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} deprecated: Use @eslint/object-schema instead - '@humanwhocodes/object-schema@2.0.3': - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - deprecated: Use @eslint/object-schema instead - '@humanwhocodes/retry@0.3.1': resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} engines: {node: '>=18.18'} @@ -1699,8 +1775,8 @@ packages: resolution: {integrity: sha512-f5DRIOZf7wxogefH03RjMPMdBF7ADTWUMoOs9kaJo06EfwF+aFhMZMDZxHg/Xe12hptN9xoZjGso2fdjapBRIA==} engines: {node: '>=10'} - '@jsenv/eslint-import-resolver@8.4.0': - resolution: {integrity: sha512-DLt7GGB8TBUHoZSir7rl/zH19y+Q/PJBCWWi9yK1xsGNU4dP+WeJsgOaAWLPTSCNJZm+jgvRuY9FODj6hKdkyw==} + '@jsdevtools/ono@7.1.3': + resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} '@keyv/serialize@1.0.2': resolution: {integrity: sha512-+E/LyaAeuABniD/RvUezWVXKpeuvwLEA9//nE9952zBaOdBd2mQ3pPoM8cUe2X6IcMByfuSLzmYqnYshG60+HQ==} @@ -1711,11 +1787,11 @@ packages: '@mdn/browser-compat-data@5.6.24': resolution: {integrity: sha512-xNoWeI2TJN5UNTqpqpK0uGncUW1cL+QksxKfNblXsQ6Uu8ONVHcqLbTZxs6+/VMFEE4ZdRzI3j+0Mw3oJtdsyg==} - '@microsoft/tsdoc-config@0.16.2': - resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} + '@microsoft/tsdoc-config@0.17.1': + resolution: {integrity: sha512-UtjIFe0C6oYgTnad4q1QP4qXwLhe6tIpNTRStJ2RZEPIkqQPREAwE5spzVxsdn9UaEMUqhh0AqSx3X4nWAKXWw==} - '@microsoft/tsdoc@0.14.2': - resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} + '@microsoft/tsdoc@0.15.1': + resolution: {integrity: sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==} '@napi-rs/wasm-runtime@0.2.10': resolution: {integrity: sha512-bCsCyeZEwVErsGmyPNSzwfwFn4OdxBj0mmv6hOFucB/k81Ojdu68RbZdxYsRQUPc9l6SU5F/cG+bXgWs3oUgsQ==} @@ -1723,24 +1799,29 @@ packages: '@napi-rs/wasm-runtime@0.2.4': resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} - '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': - resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} - '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} + '@nodelib/fs.scandir@4.0.1': + resolution: {integrity: sha512-vAkI715yhnmiPupY+dq+xenu5Tdf2TBQ66jLvBIcCddtz+5Q8LbMKaf9CIJJreez8fQ8fgaY+RaywQx8RJIWpw==} + engines: {node: '>=18.18.0'} + '@nodelib/fs.stat@2.0.5': resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} + '@nodelib/fs.stat@4.0.0': + resolution: {integrity: sha512-ctr6bByzksKRCV0bavi8WoQevU6plSp2IkllIsEqaiKe2mwNNnaluhnRhcsgGZHrrHk57B3lf95MkLMO3STYcg==} + engines: {node: '>=18.18.0'} + '@nodelib/fs.walk@1.2.8': resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@nolyfill/is-core-module@1.0.39': - resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} - engines: {node: '>=12.4.0'} + '@nodelib/fs.walk@3.0.1': + resolution: {integrity: sha512-nIh/M6Kh3ZtOmlY00DaUYB4xeeV6F3/ts1l29iwl3/cfyY/OuCfUx+v08zgx8TKPTifXRcjjqVQ4KB2zOYSbyw==} + engines: {node: '>=18.18.0'} '@npmcli/config@6.4.0': resolution: {integrity: sha512-/fQjIbuNVIT/PbXvw178Tm97bxV0E0nVUFKHivMKtSI2pcs8xKdaWkHJxf9dTI0G/y5hp/KuCvgcUu5HwAtI1w==} @@ -1865,12 +1946,6 @@ packages: peerDependencies: '@octokit/core': '5' - '@octokit/plugin-retry@6.1.0': - resolution: {integrity: sha512-WrO3bvq4E1Xh1r2mT9w6SDFg01gFmP81nIG77+p/MqW1JeXXgL++6umim3t6x0Zj5pZm3rXAN+0HEjmmdhIRig==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': '5' - '@octokit/plugin-retry@7.1.1': resolution: {integrity: sha512-G9Ue+x2odcb8E1XIPhaFBnTTIrrUDfXN05iFXiqhR+SeeeDMMILcAnysOsxUpEWcQp2e5Ft397FCXTcPkiPkLw==} engines: {node: '>= 18'} @@ -1883,12 +1958,6 @@ packages: peerDependencies: '@octokit/core': ^6.1.3 - '@octokit/plugin-throttling@8.2.0': - resolution: {integrity: sha512-nOpWtLayKFpgqmgD0y3GqXafMFuKcA4tRPZIfu7BArd2lEZeb1988nhWhwx4aZWmjDmUfdgVf7W+Tt4AmvRmMQ==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': ^5.0.0 - '@octokit/plugin-throttling@9.3.1': resolution: {integrity: sha512-Qd91H4liUBhwLB2h6jZ99bsxoQdhgPk6TdwnClPyTBSDAdviGPceViEgUwj+pcQDmB/rfAXAXK7MTochpHM3yQ==} engines: {node: '>= 18'} @@ -1920,9 +1989,6 @@ packages: '@octokit/types@14.0.0': resolution: {integrity: sha512-VVmZP0lEhbo2O1pdq63gZFiGCKkm8PPp8AUOijlwPO6hojEVjspA0MWKP7E4hbvGxzFKNqKr6p0IYtOH/Wf/zA==} - '@one-ini/wasm@0.1.1': - resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} - '@oxc-parser/binding-darwin-arm64@0.44.0': resolution: {integrity: sha512-JioiiO64lejtmmwTBImSGYBAZiYywK+hj79NgQyMt5G+is+kQF2jRZMuvbRQZr7ewGh2QA70Sw+wlf4wbwQWnw==} cpu: [arm64] @@ -2119,11 +2185,6 @@ packages: cpu: [x64] os: [win32] - '@phenomnomnominal/tsquery@5.0.1': - resolution: {integrity: sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA==} - peerDependencies: - typescript: ^3 || ^4 || ^5 - '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -2429,17 +2490,6 @@ packages: peerDependencies: stylelint: 10 - 15 - '@rushstack/eslint-patch@1.11.0': - resolution: {integrity: sha512-zxnHvoMQVqewTJr/W4pKjF0bMGiKJv1WX7bSrkl46Hg0QjESbzBROWK0Wg4RphzSOS5Jiy7eFimmM3UgMrMZbQ==} - - '@rushstack/eslint-plugin-security@0.7.1': - resolution: {integrity: sha512-84N42tlONhcbXdlk5Rkb+/pVxPnH+ojX8XwtFoecCRV88/4Ii7eGEyJPb73lOpHaE3NJxLzLVIeixKYQmdjImA==} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - - '@rushstack/tree-pattern@0.3.1': - resolution: {integrity: sha512-2yn4qTkXZTByQffL3ymS6viYuyZk3YnJT49bopGBlm9Thtyfa7iuFUV6tt+09YIRO1sjmSWILf4dPj6+Dr5YVA==} - '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} @@ -2518,12 +2568,6 @@ packages: peerDependencies: semantic-release: '>=18.0.0' - '@semantic-release/commit-analyzer@11.1.0': - resolution: {integrity: sha512-cXNTbv3nXR2hlzHjAMgbuiQVtvWHTlwwISt60B+4NZv01y/QRY7p2HcJm8Eh2StzcTJoNnflvKjHH/cjFS7d5g==} - engines: {node: ^18.17 || >=20.6.1} - peerDependencies: - semantic-release: '>=20.1.0' - '@semantic-release/commit-analyzer@13.0.0': resolution: {integrity: sha512-KtXWczvTAB1ZFZ6B4O+w8HkfYm/OgQb1dUGNFZtDgQ0csggrmkq8sTxhd+lwGF8kMb59/RnG9o4Tn7M/I8dQ9Q==} engines: {node: '>=20.8.1'} @@ -2550,6 +2594,12 @@ packages: peerDependencies: semantic-release: '>=18.0.0' + '@semantic-release/exec@7.1.0': + resolution: {integrity: sha512-4ycZ2atgEUutspPZ2hxO6z8JoQt4+y/kkHvfZ1cZxgl9WKJId1xPj+UadwInj+gMn2Gsv+fLnbrZ4s+6tK2TFQ==} + engines: {node: '>=20.8.1'} + peerDependencies: + semantic-release: '>=24.1.0' + '@semantic-release/git@10.0.1': resolution: {integrity: sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==} engines: {node: '>=14.17'} @@ -2568,30 +2618,12 @@ packages: peerDependencies: semantic-release: '>=24.1.0' - '@semantic-release/github@9.2.6': - resolution: {integrity: sha512-shi+Lrf6exeNZF+sBhK+P011LSbhmIAoUEgEY6SsxF8irJ+J2stwI5jkyDQ+4gzYyDImzV6LCKdYB9FXnQRWKA==} - engines: {node: '>=18'} - peerDependencies: - semantic-release: '>=20.1.0' - - '@semantic-release/npm@11.0.3': - resolution: {integrity: sha512-KUsozQGhRBAnoVg4UMZj9ep436VEGwT536/jwSqB7vcEfA6oncCUU7UIYTRdLx7GvTtqn0kBjnkfLVkcnBa2YQ==} - engines: {node: ^18.17 || >=20} - peerDependencies: - semantic-release: '>=20.1.0' - '@semantic-release/npm@12.0.1': resolution: {integrity: sha512-/6nntGSUGK2aTOI0rHPwY3ZjgY9FkXmEHbW9Kr+62NVOsyqpKKeP0lrCH+tphv+EsNdJNmqqwijTEnVWUMQ2Nw==} engines: {node: '>=20.8.1'} peerDependencies: semantic-release: '>=20.1.0' - '@semantic-release/release-notes-generator@12.1.0': - resolution: {integrity: sha512-g6M9AjUKAZUZnxaJZnouNBeDNTCUrJ5Ltj+VJ60gJeDaRRahcHsry9HW8yKrnKkKNkx5lbWiEP1FPMqVNQz8Kg==} - engines: {node: ^18.17 || >=20.6.1} - peerDependencies: - semantic-release: '>=20.1.0' - '@semantic-release/release-notes-generator@14.0.1': resolution: {integrity: sha512-K0w+5220TM4HZTthE5dDpIuFrnkN1NfTGPidJFm04ULT1DEZ9WG89VNXN7F0c+6nMEpWgqmPvb7vY7JkB2jyyA==} engines: {node: '>=20.8.1'} @@ -2641,8 +2673,24 @@ packages: '@sinonjs/fake-timers@9.1.2': resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==} - '@storybook/csf@0.0.1': - resolution: {integrity: sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==} + '@storybook/csf@0.1.13': + resolution: {integrity: sha512-7xOOwCLGB3ebM87eemep89MYRFTko+D8qE7EdAAq74lgdqRR5cOUtYWJLjO2dLtP94nqoOdHJo6MdLLKzg412Q==} + + '@stylistic/eslint-plugin-migrate@4.4.0': + resolution: {integrity: sha512-o5AM2O4j4pIHtBb5v1p3uzp23xB0yOiiO8xEf3U5mVBxATU3RJ/8jRc3pEahzvt9MLyz72gSYvAnJOpMJUYdtg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@stylistic/eslint-plugin-ts@4.4.0': + resolution: {integrity: sha512-i5fya8tZFbF/qbjhOJ9h7CbJr91KZqYOPwrARrcdhG837q/+CEF1Wua+cYK+F3jyeegzLskJgF2sFGizOxC2gQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=9.0.0' + + '@stylistic/eslint-plugin@4.4.0': + resolution: {integrity: sha512-bIh/d9X+OQLCAMdhHtps+frvyjvAM4B1YlSJzcEEhl7wXLIqPar3ngn9DrHhkBOrTA/z9J0bUMtctAspe0dxdQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=9.0.0' '@szmarczak/http-timer@5.0.1': resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} @@ -2653,9 +2701,14 @@ packages: peerDependencies: eslint: ^8.57.0 || ^9.0.0 - '@testing-library/dom@9.3.4': - resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} - engines: {node: '>=14'} + '@tanstack/eslint-plugin-router@1.115.0': + resolution: {integrity: sha512-vwKP9NjzAQ2nU3qADDoTSTxD1vNduLcK0312AWkXkicCWUZQZJtmRuZXPk9cEfuzDD2BAJCIUmlaF1K0vq4oRw==} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + '@testing-library/dom@10.4.0': + resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} + engines: {node: '>=18'} '@textlint-rule/textlint-report-helper-for-google-preset@0.1.2': resolution: {integrity: sha512-FsJXxngIT1PPLj+0aAq/yYFhXQOjDxRtbZVamotTw6K7nvUOeNPcGc5e20FF6gbq1x2fKpLvbMntmL262UXb+g==} @@ -2828,9 +2881,6 @@ packages: '@textlint/utils@14.7.2': resolution: {integrity: sha512-NMLtiALWVYtl/zqRB0GIw3CJLNSV5bq8u35v1qaJOLrWhBVxOkbWISItHhQGndCalHTt8uYkntHXYKpk0oSPtQ==} - '@total-typescript/ts-reset@0.5.1': - resolution: {integrity: sha512-AqlrT8YA1o7Ff5wPfMOL0pvL+1X+sw60NN6CcOCqs658emD6RfiXhF7Gu9QcfKBH7ELY2nInLhKSCWVoNL70MQ==} - '@total-typescript/ts-reset@0.6.1': resolution: {integrity: sha512-cka47fVSo6lfQDIATYqb/vO1nvFfbPw7uWLayIXIhGETj0wcOOlrlkobOMDNQOFr9QOafegUPq13V2+6vtD7yg==} @@ -2885,8 +2935,14 @@ packages: '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} - '@types/eslint@8.56.12': - resolution: {integrity: sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==} + '@types/eslint-plugin-jsx-a11y@6.10.0': + resolution: {integrity: sha512-TGKmk2gO6DrvTVADNOGQMqn3SzqcFcJILFnXNllQA34us9uClS3/AsL/cERPz6jS9ePI3bx+1q8/d2GZsxPVYw==} + + '@types/eslint-plugin-tailwindcss@3.17.0': + resolution: {integrity: sha512-ucQGf2YIdTcndYcxRU3UdZgmhUHsOlbIF4BaRtl0op+7k2JmqM2i3aXZ6XIcfZgVq1ZKov7VM5c/BR81ukmkyg==} + + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} '@types/estree-jsx@1.0.3': resolution: {integrity: sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==} @@ -2930,6 +2986,9 @@ packages: '@types/mdast@3.0.15': resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + '@types/minimatch@3.0.5': resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} @@ -2975,6 +3034,9 @@ packages: '@types/unist@2.0.10': resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} @@ -2989,40 +3051,17 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/experimental-utils@5.59.11': - resolution: {integrity: sha512-GkQGV0UF/V5Ra7gZMBmiD1WrYUFOJNvCZs+XQnUyJoxmqfWMXVNyB2NVCPRKefoQcpvTv9UpJyfCvsJFs8NzzQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - - '@typescript-eslint/experimental-utils@5.62.0': - resolution: {integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - - '@typescript-eslint/parser@6.21.0': - resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/parser@8.32.1': + resolution: {integrity: sha512-LKMrmwCPoLhM45Z00O1ulb6jwyVr2kr3XJp+G+tSEZcbauNnScewcQwtJqXDhXeYPDEjZ8C1SjXm015CirEmGg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/scope-manager@5.59.11': - resolution: {integrity: sha512-dHFOsxoLFtrIcSj5h0QoBT/89hxQONwmn3FOQ0GOQcLOOXm+MIrS8zEAhs4tWl5MraxCY3ZJpaXQQdFMc2Tu+Q==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' '@typescript-eslint/scope-manager@5.62.0': resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/scope-manager@6.21.0': - resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} - engines: {node: ^16.0.0 || >=18.0.0} - '@typescript-eslint/scope-manager@7.16.1': resolution: {integrity: sha512-nYpyv6ALte18gbMz323RM+vpFpTjfNdyakbf3nsLvF43uF9KeNC289SUEW3QLZ1xPtyINJ1dIsZOuWuSRIWygw==} engines: {node: ^18.18.0 || >=20.0.0} @@ -3038,18 +3077,10 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/types@5.59.11': - resolution: {integrity: sha512-epoN6R6tkvBYSc+cllrz+c2sOFWkbisJZWkOE+y3xHtvYaOE6Wk6B8e114McRJwFRjGvYdJwLXQH5c9osME/AA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/types@5.62.0': resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/types@6.21.0': - resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} - engines: {node: ^16.0.0 || >=18.0.0} - '@typescript-eslint/types@7.16.1': resolution: {integrity: sha512-AQn9XqCzUXd4bAVEsAXM/Izk11Wx2u4H3BAfQVhSfzfDOm/wAON9nP7J5rpkCxts7E5TELmN845xTUCQrD1xIQ==} engines: {node: ^18.18.0 || >=20.0.0} @@ -3058,15 +3089,6 @@ packages: resolution: {integrity: sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@5.59.11': - resolution: {integrity: sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - '@typescript-eslint/typescript-estree@5.62.0': resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3076,15 +3098,6 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@6.21.0': - resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - '@typescript-eslint/typescript-estree@7.16.1': resolution: {integrity: sha512-0vFPk8tMjj6apaAZ1HlwM8w7jbghC8jc1aRNJG5vN8Ym5miyhTQGMqU++kuBFDNKe9NcPeZ6x0zfSzV8xC1UlQ==} engines: {node: ^18.18.0 || >=20.0.0} @@ -3100,24 +3113,12 @@ packages: peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@5.59.11': - resolution: {integrity: sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - '@typescript-eslint/utils@5.62.0': 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 - '@typescript-eslint/utils@6.21.0': - resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - '@typescript-eslint/utils@7.16.1': resolution: {integrity: sha512-WrFM8nzCowV0he0RlkotGDujx78xudsxnGMBHI88l5J8wEhED6yBwaSLP99ygfrzAjsQvcYQ94quDwI0d7E1fA==} engines: {node: ^18.18.0 || >=20.0.0} @@ -3131,18 +3132,10 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/visitor-keys@5.59.11': - resolution: {integrity: sha512-KGYniTGG3AMTuKF9QBD7EIrvufkB6O6uX3knP73xbKLMpH+QRPcgnCxjWXSHjMRuOxFLovljqQgQpR0c7GvjoA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/visitor-keys@5.62.0': resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/visitor-keys@6.21.0': - resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} - engines: {node: ^16.0.0 || >=18.0.0} - '@typescript-eslint/visitor-keys@7.16.1': resolution: {integrity: sha512-Qlzzx4sE4u3FsHTPQAAQFJFNOuqtuY0LFrZHwQ8IHK705XxBiWOFkfKRWu6niB7hwfgnwIpO4jTC75ozW1PHWg==} engines: {node: ^18.18.0 || >=20.0.0} @@ -3154,10 +3147,25 @@ packages: '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - '@unrs/resolver-binding-darwin-arm64@1.7.2': - resolution: {integrity: sha512-vxtBno4xvowwNmO/ASL0Y45TpHqmNkAaDtz4Jqb+clmcVSSl8XCG/PNFFkGsXXXS6AMjP+ja/TtNCFFa1QwLRg==} - cpu: [arm64] - os: [darwin] + '@unocss/config@66.1.2': + resolution: {integrity: sha512-2sQXj+Qaq4RVDELVTPoXMggZ30g1WKHeCuur396I12Ab0HgAR6bTc/DIrNtqKVHFI3mmlvP1oM1ynhKWSKPsTg==} + engines: {node: '>=14'} + + '@unocss/core@66.1.2': + resolution: {integrity: sha512-mN9h1hHEuhDcdbI4z74o7UnxlBZYVsJpYcdC1YLWBKROcLYTkuyZ7hgBzpo1FBNox2Bt3JnrSinVDmc44Bxjow==} + + '@unocss/eslint-plugin@66.1.2': + resolution: {integrity: sha512-OwBqODMtY7mLvVirfI1QqxJN/3Ewc1Z8pHTwRxEpBN0w95z8ZvaMzViicci015Yb8JFJ9vs5GlhgoEm/hkenXQ==} + engines: {node: '>=14'} + + '@unocss/rule-utils@66.1.2': + resolution: {integrity: sha512-nn0ehvDh7yyWq2mcBDLVpmMAivjRATUroZ8ETinyN1rmfsGesm71R0d1gV3K+Z6YC7a3+dMLc+/qzI7VK3AG/Q==} + engines: {node: '>=14'} + + '@unrs/resolver-binding-darwin-arm64@1.7.2': + resolution: {integrity: sha512-vxtBno4xvowwNmO/ASL0Y45TpHqmNkAaDtz4Jqb+clmcVSSl8XCG/PNFFkGsXXXS6AMjP+ja/TtNCFFa1QwLRg==} + cpu: [arm64] + os: [darwin] '@unrs/resolver-binding-darwin-x64@1.7.2': resolution: {integrity: sha512-qhVa8ozu92C23Hsmv0BF4+5Dyyd5STT1FolV4whNgbY6mj3kA0qsrGPe35zNR3wAN7eFict3s4Rc2dDTPBTuFQ==} @@ -3589,6 +3597,10 @@ packages: resolution: {integrity: sha512-Yi4Pd0YDL9loDxKn0QYakiblL/SnjB3foMHa3RlDfZjBi4OtUakZDNYDLWtOMnRDSLLW7BTgiXj8pHGdmmNP+A==} engines: {node: '>=18.0.0 <=23.x'} + '@visulima/tsconfig@1.1.16': + resolution: {integrity: sha512-4BiFbaDr5pgFx9h/O+ZcuEcFAbdeD/gEbch1owbY2WBa77yNDSfKfdyqLXEfR3pALQ/5JAQlI2xLbMSeSioRzg==} + engines: {node: '>=18.0.0 <=23.x'} + '@visulima/tsconfig@1.1.4': resolution: {integrity: sha512-bgxcY4IkrhHnCiqDMu4/0eaoTzqn2leqMs+Edy+ZzImnGRvKYoxjAsf3hiW0WugIguHChCkzdIKCyutsCHKbSA==} engines: {node: '>=18.* <=23.*'} @@ -3611,8 +3623,17 @@ packages: '@vitest/browser': optional: true - '@vitest/expect@1.6.1': - resolution: {integrity: sha512-jXL+9+ZNIJKruofqXuuTClf44eSpcHlgj3CiuNihUF3Ioujtmc0zIa3UJOW5RjDK1YLBJZnWBlPuqhYycLioog==} + '@vitest/eslint-plugin@1.2.1': + resolution: {integrity: sha512-JQr1jdVcrsoS7Sdzn83h9sq4DvREf9Q/onTZbJCqTVlv/76qb+TZrLv/9VhjnjSMHweQH5FdpMDeCR6aDe2fgw==} + peerDependencies: + eslint: '>= 8.57.0' + typescript: '>= 5.0.0' + vitest: '>=2.1.9' + peerDependenciesMeta: + typescript: + optional: true + vitest: + optional: true '@vitest/expect@3.1.4': resolution: {integrity: sha512-xkD/ljeliyaClDYqHPNCiJ0plY5YIcM0OlRiZizLhlPmpXWpxnGMyTZXOHFhFeG7w9P5PBeL4IdtJ/HeQwTbQA==} @@ -3631,27 +3652,15 @@ packages: '@vitest/pretty-format@3.1.4': resolution: {integrity: sha512-cqv9H9GvAEoTaoq+cYqUTCGscUjKqlJZC7PRwY5FMySVj5J+xOm1KQcCiYHJOEzOKRUhLH4R2pTwvFlWCEScsg==} - '@vitest/runner@1.6.1': - resolution: {integrity: sha512-3nSnYXkVkf3mXFfE7vVyPmi3Sazhb/2cfZGGs0JRzFsPFvAMBEcrweV1V1GsrstdXeKCTXlJbvnQwGWgEIHmOA==} - '@vitest/runner@3.1.4': resolution: {integrity: sha512-djTeF1/vt985I/wpKVFBMWUlk/I7mb5hmD5oP8K9ACRmVXgKTae3TUOtXAEBfslNKPzUQvnKhNd34nnRSYgLNQ==} - '@vitest/snapshot@1.6.1': - resolution: {integrity: sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==} - '@vitest/snapshot@3.1.4': resolution: {integrity: sha512-JPHf68DvuO7vilmvwdPr9TS0SuuIzHvxeaCkxYcCD4jTk67XwL45ZhEHFKIuCm8CYstgI6LZ4XbwD6ANrwMpFg==} - '@vitest/spy@1.6.1': - resolution: {integrity: sha512-MGcMmpGkZebsMZhbQKkAf9CX5zGvjkBTqf8Zx3ApYWXr3wG+QvEu2eXWfnIIWYSJExIp4V9FCKDEeygzkYrXMw==} - '@vitest/spy@3.1.4': resolution: {integrity: sha512-Xg1bXhu+vtPXIodYN369M86K8shGLouNjoVI78g8iAq2rFoHFdajNvJJ5A/9bPMFcfQqdaCpOgWKEoMQg/s0Yg==} - '@vitest/utils@1.6.1': - resolution: {integrity: sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==} - '@vitest/utils@3.1.4': resolution: {integrity: sha512-yriMuO1cfFhmiGc8ataN51+9ooHRuURdfAZfwFd3usWynjzpLslZdYnRegTv32qdgtJTsj15FoeZe2g15fY1gg==} @@ -3733,10 +3742,6 @@ packages: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} - ansi-escapes@6.2.1: - resolution: {integrity: sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==} - engines: {node: '>=14.16'} - ansi-escapes@7.0.0: resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} engines: {node: '>=18'} @@ -3769,8 +3774,9 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} - ansicolors@0.3.2: - resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==} + ansis@3.17.0: + resolution: {integrity: sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==} + engines: {node: '>=14'} ansis@4.0.0: resolution: {integrity: sha512-P8nrHI1EyW9OfBt1X7hMSwGN2vwRuqHSKJAT1gbLWZRzDa24oHjYwGHvEgHeBepupzk878yS/HBZ0NMPYtbolw==} @@ -3802,8 +3808,8 @@ packages: argv-formatter@1.0.0: resolution: {integrity: sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==} - aria-query@5.1.3: - resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} aria-query@5.3.2: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} @@ -3874,9 +3880,6 @@ packages: resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} engines: {node: '>=8'} - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} @@ -4010,6 +4013,9 @@ packages: resolution: {integrity: sha512-DRxnVbOi/1OgA5pA9EDiRT8gvVYeqfuN7TmPfLyt6cyho3KbHCi3EtDQf39TTmGDrR5dZ9CspdXhPkL/j/WGbg==} engines: {node: '>=0.8'} + birecord@0.1.1: + resolution: {integrity: sha512-VUpsf/qykW0heRlC8LooCq28Kxn3mAqKohhDG/49rrsQ1dT1CXyj/pgXS+5BSRzFTR/3DyIBOqQOrGyZOh71Aw==} + bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -4078,8 +4084,13 @@ packages: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} - builtins@5.1.0: - resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} + builtin-modules@5.0.0: + resolution: {integrity: sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==} + engines: {node: '>=18.20'} + + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} bundle-require@5.1.0: resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} @@ -4087,6 +4098,10 @@ packages: peerDependencies: esbuild: '>=0.25.0' + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -4154,20 +4169,12 @@ packages: caniuse-lite@1.0.30001692: resolution: {integrity: sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==} - cardinal@2.1.1: - resolution: {integrity: sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==} - hasBin: true - ccount@1.1.0: resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chai@4.5.0: - resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} - engines: {node: '>=4'} - chai@5.2.0: resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} engines: {node: '>=12'} @@ -4215,9 +4222,6 @@ packages: charenc@0.0.2: resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - check-error@2.1.1: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} @@ -4242,6 +4246,10 @@ packages: resolution: {integrity: sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==} engines: {node: '>=8'} + ci-info@4.2.0: + resolution: {integrity: sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==} + engines: {node: '>=8'} + cities-list@1.0.3: resolution: {integrity: sha512-UadgzcZiV38TvJXlGymITRvvxaR5PtlrS2M+RJICyvRNp3TnOCPA/5ZZuRn8yG6SexKy1x9I+IwFctZ39XbI/Q==} @@ -4358,10 +4366,6 @@ packages: '@75lb/nature': optional: true - commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - commander@12.1.0: resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} engines: {node: '>=18'} @@ -4395,6 +4399,9 @@ packages: compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + compare-versions@6.1.1: + resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==} + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -4419,10 +4426,6 @@ packages: confusing-browser-globals@1.0.11: resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} - consola@3.4.2: - resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} - engines: {node: ^14.18.0 || >=16.10.0} - conventional-changelog-angular@7.0.0: resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} engines: {node: '>=16'} @@ -4443,11 +4446,6 @@ packages: resolution: {integrity: sha512-5e48V0+DsWvQBEnnbBFhYQwYDzFPXVrakGPP1uSxekDkr5d7YWrmaWsgJpKFR0SkXmxK6qQr9O42uuLb9wpKxA==} engines: {node: '>=18'} - conventional-changelog-writer@7.0.1: - resolution: {integrity: sha512-Uo+R9neH3r/foIvQ0MKcsXkX642hdm9odUp7TqgFS7BsalTcjzRlIfWZrZR1gbxOozKucaKt5KAbjW8J8xRSmA==} - engines: {node: '>=16'} - hasBin: true - conventional-changelog-writer@8.0.0: resolution: {integrity: sha512-TQcoYGRatlAnT2qEWDON/XSfnVG38JzA7E0wcGScu7RElQBkg9WWgZd1peCWFcWDh1xfb2CfsrcvOn1bbSzztA==} engines: {node: '>=18'} @@ -4456,10 +4454,6 @@ packages: conventional-commit-types@3.0.0: resolution: {integrity: sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==} - conventional-commits-filter@4.0.0: - resolution: {integrity: sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==} - engines: {node: '>=16'} - conventional-commits-filter@5.0.0: resolution: {integrity: sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==} engines: {node: '>=18'} @@ -4484,6 +4478,12 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + cookie-es@1.2.2: + resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} + + core-js-compat@3.42.0: + resolution: {integrity: sha512-bQasjMfyDGyaeWKBIu33lHh9qlSR0MFE/Nmc6nMjf/iU9b3rSMdAYz1Baxrv4lPdGUsTqZudHA4jIGSJy0SWZQ==} + core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -4542,6 +4542,9 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} + crossws@0.3.5: + resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} + crypt@0.0.2: resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} @@ -4681,10 +4684,6 @@ packages: babel-plugin-macros: optional: true - deep-eql@4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} - engines: {node: '>=6'} - deep-eql@5.0.2: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} @@ -4693,10 +4692,6 @@ packages: resolution: {integrity: sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==} engines: {node: '>= 0.4'} - deep-equal@2.2.3: - resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} - engines: {node: '>= 0.4'} - deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} @@ -4708,6 +4703,14 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} + default-browser-id@5.0.0: + resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} + engines: {node: '>=18'} + + default-browser@5.2.1: + resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} + engines: {node: '>=18'} + defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} @@ -4727,6 +4730,10 @@ packages: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} @@ -4772,6 +4779,9 @@ packages: resolution: {integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} @@ -4869,11 +4879,6 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - editorconfig@1.0.4: - resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} - engines: {node: '>=14'} - hasBin: true - electron-to-chromium@1.5.80: resolution: {integrity: sha512-LTrKpW0AqIuHwmlVNV+cjFYTnXtM9K37OGhpe0ZI10ScPSxqVSryZHIY3WnCS5NSYbBODRTZyhRMS2h5FAEqAw==} @@ -4915,9 +4920,9 @@ packages: english-article-classifier@1.0.1: resolution: {integrity: sha512-zRLN5xoinT3yQf8gzlkroaAlh7KJAWKq5AC4uF8jaD8DWnlFHEnsPTa6SfnYjlW+/joP/YzwyIjHhiFnOdZ4Jg==} - enhance-visitors@1.0.0: - resolution: {integrity: sha512-+29eJLiUixTEDRaZ35Vu8jP3gPLNcQQkQkOQjLp2X+6cZGGPDD/uasbFzvLsJKnGZnvmyZ0srxudwOtskHeIDA==} - engines: {node: '>=4.0.0'} + enhanced-resolve@5.18.1: + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + engines: {node: '>=10.13.0'} enquirer@2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} @@ -4931,10 +4936,6 @@ packages: resolution: {integrity: sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==} engines: {node: '>=0.12'} - env-ci@10.0.0: - resolution: {integrity: sha512-U4xcd/utDYFgMh0yWj07R1H6L5fwhVbmxBCpnL0DbVSDZVnsC82HONw0wxtxNkIAcua3KtbomQvIk5xFZGAQJw==} - engines: {node: ^18.17 || >=20.6.1} - env-ci@11.0.0: resolution: {integrity: sha512-apikxMgkipkgTvMdRT9MNqWx5VLOci79F4VBd7Op/7OPjjoanjdAvn6fglMCCEf/1bAh8eOiuEVCUs4V3qP3nQ==} engines: {node: ^18.17 || >=20.6.1} @@ -4962,11 +4963,8 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-get-iterator@1.1.3: - resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} - - es-html-parser@0.0.9: - resolution: {integrity: sha512-oniQMi+466VFsDzcdron9Ry/sqUJpDJg1bbDn0jFJKDdxXhwIOYDr4DgBnO5/yPLGj2xv+n5yy4L1Q0vAC5TYQ==} + es-html-parser@0.2.0: + resolution: {integrity: sha512-snJ7uJC8Dkx/yT0eYZrWcY57rkPU6Zui6YphPynw8r52AWf57gjqMC0GWe7OxSDipwXowFpa3rqckEeAPTOz7w==} es-iterator-helpers@1.2.1: resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} @@ -5026,12 +5024,6 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - eslint-compat-utils@0.1.2: - resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} - engines: {node: '>=12'} - peerDependencies: - eslint: '>=6.0.0' - eslint-compat-utils@0.5.1: resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} engines: {node: '>=12'} @@ -5044,30 +5036,34 @@ packages: peerDependencies: eslint: '>=6.0.0' - eslint-define-config@1.24.1: - resolution: {integrity: sha512-o36vBhPSWyIQlHoMqGhhcGmOOm2A2ccBVIdLTG/AWdm9YmjpsLpf+5ntf9LlHR6dduLREgxtGwvwPwSt7vnXJg==} - engines: {node: '>=18.0.0', npm: '>=9.0.0', pnpm: '>= 8.6.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + eslint-config-flat-gitignore@2.1.0: + resolution: {integrity: sha512-cJzNJ7L+psWp5mXM7jBX+fjHtBvvh06RBlcweMhKD8jWqQw0G78hOW5tpVALGHGFPsBV+ot2H+pdDGJy6CV8pA==} + peerDependencies: + eslint: ^9.5.0 - eslint-etc@5.2.1: - resolution: {integrity: sha512-lFJBSiIURdqQKq9xJhvSJFyPA+VeTh5xvk24e8pxVL7bwLBtGF60C/KRkLTMrvCZ6DA3kbPuYhLWY0TZMlqTsg==} + eslint-flat-config-utils@2.1.0: + resolution: {integrity: sha512-6fjOJ9tS0k28ketkUcQ+kKptB4dBZY2VijMZ9rGn8Cwnn1SH0cZBoPXT8AHBFHxmHcLFQK9zbELDinZ2Mr1rng==} + + eslint-formatting-reporter@0.0.0: + resolution: {integrity: sha512-k9RdyTqxqN/wNYVaTk/ds5B5rA8lgoAmvceYN7bcZMBwU7TuXx5ntewJv81eF3pIL/CiJE+pJZm36llG8yhyyw==} peerDependencies: - eslint: ^8.0.0 - typescript: '>=4.0.0' + eslint: '>=8.40.0' - eslint-find-rules@4.2.0: - resolution: {integrity: sha512-FR8mOEn8Kt2MR3VSxNuLoWmoA7zvgmIE2Fm2I3RrSjXSvu0uPHx4OHc/OmiXR1XNbsvxh3gge2UQrBhCV9APCw==} - engines: {node: ^10.12.0 || >=12.0.0 || ^14.17.0 || >=16.0.0} - hasBin: true + eslint-import-context@0.1.5: + resolution: {integrity: sha512-jalO1mLiEvTv0io0koz1AE4LwkHQxDBFLaSXWweWtJR0y/NC1yyxvU61Z54bghIFNeM1M4TvwRwVRhLunQJ3gw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} peerDependencies: - eslint: ^7 || ^8.2.0 + unrs-resolver: ^1.0.0 + peerDependenciesMeta: + unrs-resolver: + optional: true eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - eslint-import-resolver-typescript@3.10.1: - resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==} - engines: {node: ^14.18.0 || >=16.0.0} + eslint-import-resolver-typescript@4.4.1: + resolution: {integrity: sha512-KHQnjMAn/Hbs1AcMs2YfJTeNoWsaOoMRvJUKr77Y2dv7jNOaT8/IJYlvfN/ZIwTxUsv2B6amwv7u9bt2Vl9lZg==} + engines: {node: ^16.17.0 || >=18.6.0} peerDependencies: eslint: '*' eslint-plugin-import: '*' @@ -5089,11 +5085,10 @@ packages: '@eslint/json': optional: true - eslint-mdx@2.3.4: - resolution: {integrity: sha512-u4NszEUyoGtR7Q0A4qs0OymsEQdCO6yqWlTzDa9vGWsK7aMotdnW0hqifHTkf6lEtA2vHk2xlkWHTCrhYLyRbw==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + eslint-merge-processors@2.0.0: + resolution: {integrity: sha512-sUuhSf3IrJdGooquEUB5TNpGNpBoQccbnaLHsb1XkBLUPPqCNivCpY05ZcpCOiV9uHwO2yxXEWVczVclzMxYlA==} peerDependencies: - eslint: '>=8.0.0' + eslint: '*' eslint-module-utils@2.8.0: resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} @@ -5116,49 +5111,25 @@ packages: eslint-import-resolver-webpack: optional: true - eslint-plugin-antfu@1.0.13: - resolution: {integrity: sha512-JzWEzNWZcNK4Q4Tz4VaNELhu3VgCv3obSYxUbK1UhbDBmr2v0a7H9n9xGv5GTS4LkEo905/2Gq6y0dcoBq5FZA==} - peerDependencies: - eslint: '*' - - eslint-plugin-array-func@4.0.0: - resolution: {integrity: sha512-p3NY2idNIvgmQLF2/62ZskYt8gOuUgQ51smRc3Lh7FtSozpNc2sg+lniz9VaCagLZHEZTl8qGJKqE7xy8O/D/g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '>=8.40.0' - - eslint-plugin-ava@14.0.0: - resolution: {integrity: sha512-XmKT6hppaipwwnLVwwvQliSU6AF1QMHiNoLD5JQfzhUhf0jY7CO0O624fQrE+Y/fTb9vbW8r77nKf7M/oHulxw==} - engines: {node: '>=14.17 <15 || >=16.4'} - peerDependencies: - eslint: '>=8.26.0' - - eslint-plugin-babel@5.3.1: - resolution: {integrity: sha512-VsQEr6NH3dj664+EyxJwO4FCYm/00JhYb3Sk3ft8o+fpKuIfQ9TaW6uVUfvwMXHcf/lsnRIoyFPsLMyiWCSL/g==} - engines: {node: '>=4'} - peerDependencies: - eslint: '>=4.0.0' + eslint-parser-plain@0.1.1: + resolution: {integrity: sha512-KRgd6wuxH4U8kczqPp+Oyk4irThIhHWxgFgLDtpgjUGVIS3wGrJntvZW/p6hHq1T4FOwnOtCNkvAI4Kr+mQ/Hw==} - eslint-plugin-compat@4.2.0: - resolution: {integrity: sha512-RDKSYD0maWy5r7zb5cWQS+uSPc26mgOzdORJ8hxILmWM7S/Ncwky7BcAtXVY5iRbKjBdHsWU8Yg7hfoZjtkv7w==} - engines: {node: '>=14.x'} + eslint-plugin-antfu@3.1.1: + resolution: {integrity: sha512-7Q+NhwLfHJFvopI2HBZbSxWXngTwBLKxW1AGXLr2lEGxcEIK/AsDs8pn8fvIizl5aZjBbVbVK5ujmMpBe4Tvdg==} peerDependencies: - eslint: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: '*' - eslint-plugin-cypress@2.15.2: - resolution: {integrity: sha512-CtcFEQTDKyftpI22FVGpx8bkpKyYXBlNge6zSo0pl5/qJvBAnzaD76Vu2AsP16d6mTj478Ldn2mhgrWV+Xr0vQ==} + eslint-plugin-astro@1.3.1: + resolution: {integrity: sha512-2XaLCMQm8htW1UvJvy1Zcmg8l0ziskitiUfJTn/w1Mk7r4Mxj0fZeNpN6UTNrm64XBIXSa5h8UCGrg8mdu47+g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: '>= 3.2.1' + eslint: '>=8.57.0' - eslint-plugin-deprecation@2.0.0: - resolution: {integrity: sha512-OAm9Ohzbj11/ZFyICyR5N6LbOIvQMp7ZU2zI7Ej0jIc8kiGUERXPNMfw2QqqHD1ZHtjMub3yPZILovYEYucgoQ==} + eslint-plugin-compat@6.0.2: + resolution: {integrity: sha512-1ME+YfJjmOz1blH0nPZpHgjMGK4kjgEeoYqGCqoBPQ/mGu/dJzdoP0f1C8H2jcWZjzhZjAMccbM/VdXhPORIfA==} + engines: {node: '>=18.x'} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: ^4.2.4 || ^5.0.0 - - eslint-plugin-editorconfig@4.0.3: - resolution: {integrity: sha512-5YeDxm6mlv75DrTbRBK9Jw2ogqhjiz8ZCvv9bkuz/MXq0603q9FpQvQlamtas4bX1Gji4YcksY7dq7stPeGaLQ==} - engines: {node: '>=14', npm: '>=8'} + eslint: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 eslint-plugin-es-x@7.8.0: resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} @@ -5166,27 +5137,20 @@ packages: peerDependencies: eslint: '>=8' - eslint-plugin-eslint-comments@3.2.0: - resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} - engines: {node: '>=6.5.0'} + eslint-plugin-es-x@8.6.2: + resolution: {integrity: sha512-gROvFUd66sbYLexe1w/jm+6YhrFrI9TTa2AHqdtAeqyfpVkJk3Sbx7kquyiwz7fD4/heejJIFEOn83zzsmowzA==} + engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - eslint: '>=4.19.1' + eslint: '>=8' - eslint-plugin-etc@2.0.3: - resolution: {integrity: sha512-o5RS/0YwtjlGKWjhKojgmm82gV1b4NQUuwk9zqjy9/EjxNFKKYCaF+0M7DkYBn44mJ6JYFZw3Ft249dkKuR1ew==} + eslint-plugin-format@1.0.1: + resolution: {integrity: sha512-Tdns+CDjS+m7QrM85wwRi2yLae88XiWVdIOXjp9mDII0pmTBQlczPCmjpKnjiUIY3yPZNLqb5Ms/A/JXcBF2Dw==} peerDependencies: - eslint: ^8.0.0 - typescript: '>=4.0.0' - - eslint-plugin-html@7.1.0: - resolution: {integrity: sha512-fNLRraV/e6j8e3XYOC9xgND4j+U7b1Rq+OygMlLcMg+wI/IpVbF+ubQa3R78EjKB9njT6TQOlcK5rFKBVVtdfg==} + eslint: ^8.40.0 || ^9.0.0 - eslint-plugin-i@2.29.1: - resolution: {integrity: sha512-ORizX37MelIWLbMyqI7hi8VJMf7A0CskMmYkB+lkCX3aF4pkGV7kwx5bSEb4qx7Yce2rAf9s34HqDRPjGRZPNQ==} - engines: {node: '>=12'} - deprecated: Please migrate to the brand new `eslint-plugin-import-x` instead - peerDependencies: - eslint: ^7.2.0 || ^8 + eslint-plugin-html@8.1.3: + resolution: {integrity: sha512-cnCdO7yb/jrvgSJJAfRkGDOwLu1AOvNdw8WCD6nh/2C4RnxuI4tz6QjMEAmmSiHSeugq/fXcIO8yBpIBQrMZCg==} + engines: {node: '>=16.0.0'} eslint-plugin-import-x@4.12.2: resolution: {integrity: sha512-0jVUgJQipbs0yUfLe7LwYD6p8rIGqCysWZdyJFgkPzDyJgiKpuCaXlywKUAWgJ6u1nLpfrdt21B60OUkupyBrQ==} @@ -5204,26 +5168,6 @@ packages: '@typescript-eslint/parser': optional: true - eslint-plugin-jest-async@1.0.3: - resolution: {integrity: sha512-NgpO6L9IWWgxxqbqvN+mCbGs4MMBsALpvagOFnWJgsQSkyYVmMzYwVe2b4Wpak3sfl8sPK13vnpqsEBNlpyTlQ==} - engines: {node: '>=0.10.0'} - - eslint-plugin-jest-dom@5.5.0: - resolution: {integrity: sha512-CRlXfchTr7EgC3tDI7MGHY6QjdJU5Vv2RPaeeGtkXUHnKZf04kgzMPIJUXt4qKCvYWVVIEo9ut9Oq1vgXAykEA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6', yarn: '>=1'} - peerDependencies: - '@testing-library/dom': ^8.0.0 || ^9.0.0 || ^10.0.0 - eslint: ^6.8.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 - peerDependenciesMeta: - '@testing-library/dom': - optional: true - - eslint-plugin-jest-formatting@3.1.0: - resolution: {integrity: sha512-XyysraZ1JSgGbLSDxjj5HzKKh0glgWf+7CkqxbTqb7zEhW7X2WHo5SBQ8cGhnszKN+2Lj3/oevBlHNbHezoc/A==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '>=0.8.0' - eslint-plugin-jest@27.9.0: resolution: {integrity: sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -5237,9 +5181,9 @@ packages: jest: optional: true - eslint-plugin-jsdoc@46.10.1: - resolution: {integrity: sha512-x8wxIpv00Y50NyweDUpa+58ffgSAI5sqe+zcZh33xphD0AVh+1kqr1ombaTRb7Fhpove1zfUuujlX9DWWBP5ag==} - engines: {node: '>=16'} + eslint-plugin-jsdoc@50.6.17: + resolution: {integrity: sha512-hq+VQylhd12l8qjexyriDsejZhqiP33WgMTy2AmaGZ9+MrMWVqPECsM87GPxgHfQn0zw+YTuhqjUfk1f+q67aQ==} + engines: {node: '>=18'} peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 @@ -5255,65 +5199,39 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - eslint-plugin-markdown@3.0.1: - resolution: {integrity: sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - - eslint-plugin-mdx@2.3.4: - resolution: {integrity: sha512-kr6tgaifKL+AVGYMtdYc2VCsIjfYQXuUCKz4rK58d2DpnPFHrmgXIOC7NcMvaEld+VOEpxBSCCnjnsf4IVCQGg==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '>=8.0.0' - - eslint-plugin-n@16.6.2: - resolution: {integrity: sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==} - engines: {node: '>=16.0.0'} + eslint-plugin-n@17.18.0: + resolution: {integrity: sha512-hvZ/HusueqTJ7VDLoCpjN0hx4N4+jHIWTXD4TMLHy9F23XkDagR9v+xQWRWR57yY55GPF8NnD4ox9iGTxirY8A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: '>=7.0.0' + eslint: '>=8.23.0' - eslint-plugin-no-loops@0.3.0: - resolution: {integrity: sha512-qI0oMgD0mA2Kpad2P/WncEqeVzvJKpHs/6+PA1SW4E6gXSXRmeV2cPv6+fnEgFwC7i+QtFRay2jUQ8DCH02nZg==} + eslint-plugin-no-for-of-array@0.1.0: + resolution: {integrity: sha512-1EeHHbCdaV5iLd4G5zaYpsTg60zS3USPwn9aIclxSrxH6r5sXOcGJLXOYOARzeNu6grI7uF+9z3mqm+zO1orFg==} peerDependencies: - eslint: '>=2.0.0' + eslint: ^9.11.0 + typescript: ^5.6.2 + typescript-eslint: ^8.8.1 eslint-plugin-no-only-tests@3.3.0: resolution: {integrity: sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==} engines: {node: '>=5.0.0'} - eslint-plugin-no-secrets@0.8.9: - resolution: {integrity: sha512-CqaBxXrImABCtxMWspAnm8d5UKkpNylC7zqVveb+fJHEvsSiNGJlSWzdSIvBUnW1XhJXkzifNIZQC08rEII5Ng==} - engines: {node: '>=10.0.0', npm: '>=6.9.0'} + eslint-plugin-no-secrets@2.2.1: + resolution: {integrity: sha512-/7BduEiFeINJ7mlc8iRmqp0sDw2a2lAFahig/RGppn7qf1dKhldXopUuv4M92kc4PX90dcxfKwKtYrW159cuhA==} + engines: {node: '>=18', npm: '>=8'} peerDependencies: - eslint: '>=3.0.0' + eslint: '>=5' eslint-plugin-no-unsanitized@4.1.2: resolution: {integrity: sha512-ydF3PMFKEIkP71ZbLHFvu6/FW8SvRv6VV/gECfrQkqyD5+5oCAtPz8ZHy0GRuMDtNe2jsNdPCQXX4LSbkapAVQ==} peerDependencies: eslint: ^8 || ^9 - eslint-plugin-no-use-extend-native@0.5.0: - resolution: {integrity: sha512-dBNjs8hor8rJgeXLH4HTut5eD3RGWf9JUsadIfuL7UosVQ/dnvOKwxEcRrXrFxrMZ8llUVWT+hOimxJABsAUzQ==} - engines: {node: '>=6.0.0'} - - eslint-plugin-perfectionist@2.11.0: - resolution: {integrity: sha512-XrtBtiu5rbQv88gl+1e2RQud9te9luYNvKIgM9emttQ2zutHPzY/AQUucwxscDKV4qlTkvLTxjOFvxqeDpPorw==} + eslint-plugin-perfectionist@4.13.0: + resolution: {integrity: sha512-dsPwXwV7IrG26PJ+h1crQ1f5kxay/gQAU0NJnbVTQc91l5Mz9kPjyIZ7fXgie+QSgi8a+0TwGbfaJx+GIhzuoQ==} + engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: - astro-eslint-parser: ^1.0.2 - eslint: '>=8.0.0' - svelte: '>=3.0.0' - svelte-eslint-parser: ^0.37.0 - vue-eslint-parser: '>=9.0.0' - peerDependenciesMeta: - astro-eslint-parser: - optional: true - svelte: - optional: true - svelte-eslint-parser: - optional: true - vue-eslint-parser: - optional: true + eslint: '>=8.45.0' eslint-plugin-playwright@0.18.0: resolution: {integrity: sha512-VLvKOAaDvRTonUeI3J8plXIJQuReXjbjrgDGoNwsiydwdqk3lt+mbzgsBcxJscMJDHc9XgnLVo0nWTiaYHLGYQ==} @@ -5324,30 +5242,85 @@ packages: eslint-plugin-jest: optional: true - eslint-plugin-prefer-object-spread@1.2.1: - resolution: {integrity: sha512-upA2W299LZNr49tGHmF0wUtFZw/fkQ+PkudsjZ0bP7dGFtRCFxItFtP39nDiet8u6rN/pOqhEYhBltW6T1OF5g==} - engines: {node: '>=4.0.0'} + eslint-plugin-promise@7.2.1: + resolution: {integrity: sha512-SWKjd+EuvWkYaS+uN2csvj0KoP43YTu7+phKQ5v+xw6+A0gutVX2yqCeCkC3uLCJFiPfR2dD8Es5L7yUsmvEaA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: '>=0.8.0' + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - eslint-plugin-promise@6.6.0: - resolution: {integrity: sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-plugin-react-debug@1.50.0: + resolution: {integrity: sha512-lCHKl1+ydvNNnJ+Cm0Sezog9dYh8Se9fFTVA8IUAjThfElC7FyqtF7YiehDDPnY+4ncX0Lytk8bPfRfGtoIDNA==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true + + eslint-plugin-react-dom@1.50.0: + resolution: {integrity: sha512-ksMoCuD2vUTSy6YN2zhgR7hSbbRr0TUPNoxe44A/3Dlz6Ww500OwamBb2c13nqZi6Mk0fE4T2gbMJEF5aZzFkw==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true + + eslint-plugin-react-hooks-extra@1.50.0: + resolution: {integrity: sha512-owJUWaEeDZvceQkmof7CKFBBA81EjcUOVADcb5aZWwneM2Ui3BUlTHulmxcoSCJDH8b2u7VOkUjiQ/nAZcp55Q==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true - eslint-plugin-react-hooks@4.6.2: - resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} + eslint-plugin-react-hooks@5.2.0: + resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} engines: {node: '>=10'} peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - eslint-plugin-react-redux@4.2.2: - resolution: {integrity: sha512-aQi1KURmZDpTgvkv9ofvz2TgIHWZeh11UP+V+Z2incbK2feZVM2/Zopn+9npGPyFf7pZFKid65gFIB2d7P/XYw==} - engines: {node: '>=18.0.0'} + eslint-plugin-react-naming-convention@1.50.0: + resolution: {integrity: sha512-icV9kENTe15osNJOr09LlKZ2Xj0q43Xm77ofJCzYjWa8JpfI8HI2DNdG3DE4fNkftMIgCxMJIsSs7ch14f1STA==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true + + eslint-plugin-react-refresh@0.4.20: + resolution: {integrity: sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==} + peerDependencies: + eslint: '>=8.40' + + eslint-plugin-react-web-api@1.50.0: + resolution: {integrity: sha512-2I5rmaDdhgtLcOFZ81/0MLJlTdvVQTVL8b+jfUWR4tLfk6BQKHZlx5pBcunYvuGjkZRYZ2viUoue/CKm+92zaA==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true + + eslint-plugin-react-x@1.50.0: + resolution: {integrity: sha512-Izej25IW8wk2wxB0J3orZLf8x+9vyvNICilDu+MOU7LYPPZQifXTeEweOUUfSwXB0byUSElilU+zFG2EKcCJFg==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: - eslint: ^7 || ^8 || ^9.7 - eslint-plugin-react: ^7.35.0 + eslint: ^8.57.0 || ^9.0.0 + ts-api-utils: ^2.1.0 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + ts-api-utils: + optional: true + typescript: + optional: true eslint-plugin-react@7.37.5: resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} @@ -5361,30 +5334,25 @@ packages: peerDependencies: eslint: '>=8.44.0' - eslint-plugin-security@1.7.1: - resolution: {integrity: sha512-sMStceig8AFglhhT2LqlU5r+/fn9OwsA72O5bBuQVTssPCdQAOQzL+oMn/ZcpeUY6KcNfLJArgcrsSULNjYYdQ==} + eslint-plugin-security@3.0.1: + resolution: {integrity: sha512-XjVGBhtDZJfyuhIxnQ/WMm385RbX3DBu7H1J7HNNhmB2tnGxMeqVSnYv79oAj992ayvIBZghsymwkYFS6cGH4Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint-plugin-simple-import-sort@10.0.0: - resolution: {integrity: sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==} + eslint-plugin-simple-import-sort@12.1.1: + resolution: {integrity: sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==} peerDependencies: eslint: '>=5.0.0' - eslint-plugin-sonarjs@0.22.0: - resolution: {integrity: sha512-LJz+TCosMOBLkbAsNk6Q1lCgmK6qNO5RCqtOAle1DCnqqnmxoSTPHakZ1R7Gcnjhw5n7VDcAwuqefmpd4XXPLQ==} - engines: {node: '>=14'} - peerDependencies: - eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 - - eslint-plugin-ssr-friendly@1.3.0: - resolution: {integrity: sha512-VOYl9OgK9mSVWxwl3pSTzNmBUMhPYjDGmxgyjSM9Agdve4GHjn0gAcCG/seg1taaW/aBWTkb7Aw4GIBsxVhL9Q==} + eslint-plugin-sonarjs@3.0.2: + resolution: {integrity: sha512-LxjbfwI7ypENeTmGyKmDyNux3COSkMi7H/6Cal5StSLQ6edf0naP45SZR43OclaNR7WfhVTZdhOn63q3/Y6puQ==} peerDependencies: - eslint: '>=0.8.0' + eslint: ^8.0.0 || ^9.0.0 - eslint-plugin-storybook@0.6.15: - resolution: {integrity: sha512-lAGqVAJGob47Griu29KXYowI4G7KwMoJDOkEip8ujikuDLxU+oWJ1l0WL6F2oDO4QiyUFXvtDkEkISMOPzo+7w==} - engines: {node: 12.x || 14.x || >= 16} + eslint-plugin-storybook@0.12.0: + resolution: {integrity: sha512-Lg5I0+npTgiYgZ4KSvGWGDFZi3eOCNJPaWX0c9rTEEXC5wvooOClsP9ZtbI4hhFKyKgYR877KiJxbRTSJq9gWA==} + engines: {node: '>= 18'} peerDependencies: - eslint: '>=6' + eslint: '>=8' eslint-plugin-tailwindcss@3.18.0: resolution: {integrity: sha512-PQDU4ZMzFH0eb2DrfHPpbgo87Zgg2EXSMOj1NSfzdZm+aJzpuwGerfowMIaVehSREEa0idbf/eoNYAOHSJoDAQ==} @@ -5392,38 +5360,47 @@ packages: peerDependencies: tailwindcss: ^3.4.0 - eslint-plugin-testing-library@6.5.0: - resolution: {integrity: sha512-Ls5TUfLm5/snocMAOlofSOJxNN0aKqwTlco7CrNtMjkTdQlkpSMaeTCDHCuXfzrI97xcx2rSCNeKeJjtpkNC1w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} + eslint-plugin-testing-library@7.2.1: + resolution: {integrity: sha512-sZFbfPaWt+4M1tSY6bc9zyTHAEYR4RNoe7XppcAx/+PQpps+ZGEAmAiTcMykcxRFPNIsbaaIOGinTcY6++ttOA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0, pnpm: ^9.14.0} peerDependencies: - eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 - eslint-plugin-toml@0.6.1: - resolution: {integrity: sha512-BeJWSDUe/6VqK/5qb2qZlxqNxUirxaOY1QZedYF/ND7Tw6whhX4rTMxJmfFLsPy0eaq2v/2QDWCf05Byg89hNA==} + eslint-plugin-toml@0.12.0: + resolution: {integrity: sha512-+/wVObA9DVhwZB1nG83D2OAQRrcQZXy+drqUnFJKymqnmbnbfg/UPmEMCKrJNcEboUGxUjYrJlgy+/Y930mURQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' - eslint-plugin-tsdoc@0.2.17: - resolution: {integrity: sha512-xRmVi7Zx44lOBuYqG8vzTXuL6IdGOeF9nHX17bjJ8+VE6fsxpdGem0/SBTmAwgYMKYB1WBkqRJVQ+n8GK041pA==} + eslint-plugin-tsdoc@0.4.0: + resolution: {integrity: sha512-MT/8b4aKLdDClnS8mP3R/JNjg29i0Oyqd/0ym6NnQf+gfKbJJ4ZcSh2Bs1H0YiUMTBwww5JwXGTWot/RwyJ7aQ==} - eslint-plugin-unicorn@49.0.0: - resolution: {integrity: sha512-0fHEa/8Pih5cmzFW5L7xMEfUTvI9WKeQtjmKpTUmY+BiFCDxkxrTdnURJOHKykhtwIeyYsxnecbGvDCml++z4Q==} - engines: {node: '>=16'} + eslint-plugin-unicorn@59.0.1: + resolution: {integrity: sha512-EtNXYuWPUmkgSU2E7Ttn57LbRREQesIP1BiLn7OZLKodopKfDXfBUkC/0j6mpw2JExwf43Uf3qLSvrSvppgy8Q==} + engines: {node: ^18.20.0 || ^20.10.0 || >=21.0.0} peerDependencies: - eslint: '>=8.52.0' + eslint: '>=9.22.0' + + eslint-plugin-unused-imports@4.1.4: + resolution: {integrity: sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 + eslint: ^9.0.0 || ^8.0.0 + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true eslint-plugin-validate-jsx-nesting@0.1.1: resolution: {integrity: sha512-5MKFBX1Ans4bSunh4YETiIUajtPHGZK2kVrVf2UE3L9geh1TSIQVOmjx7bgm2rFpeua7P/MZSfUva6Du8NXpgA==} peerDependencies: eslint: '>=4.0.0' - eslint-plugin-vitest@0.3.26: - resolution: {integrity: sha512-oxe5JSPgRjco8caVLTh7Ti8PxpwJdhSV0hTQAmkFcNcmy/9DnqLB/oNVRA11RmVRP//2+jIIT6JuBEcpW3obYg==} + eslint-plugin-vitest@0.5.4: + resolution: {integrity: sha512-um+odCkccAHU53WdKAw39MY61+1x990uXjSPguUCq3VcEHdqJrOb8OTMrbYlY6f9jAKx7x98kLVlIe3RJeJqoQ==} 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: '>=2.1.9' peerDependenciesMeta: '@typescript-eslint/eslint-plugin': @@ -5441,25 +5418,12 @@ packages: resolution: {integrity: sha512-3zkkU/O1agczP7szJGHmisZJS/AknfVl6mb0Zqoc95dvFsdmfK+cbhrn+Ffy0UWB1pgDJwQr7kIO3rPstWs3Dw==} engines: {node: '>=4.0'} - eslint-plugin-you-dont-need-momentjs@1.6.0: - resolution: {integrity: sha512-u12WanwuAL5B6/Kx6AtMDI04OojkS/twDueDwBgxsnKLy33VM4npP7ZlU2o7pxD1z8LbzPP6Y6/e7cPf6ZhatQ==} - peerDependencies: - eslint: ^5.5.0 - eslint-plugin-zod@1.4.0: resolution: {integrity: sha512-i9WzQGw2X5fQcuQh33mA8DQjZJM/yuyZvs1Fc5EyTidX7Ed/g832+1FEQ4u5gtXy+jZ+DVsB5+oMHj4tIOfeZg==} engines: {node: '>=12'} peerDependencies: eslint: '>=8.1.0' - eslint-rule-composer@0.3.0: - resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} - engines: {node: '>=4.0.0'} - - eslint-rule-documentation@1.0.23: - resolution: {integrity: sha512-pWReu3fkohwyvztx/oQWWgld2iad25TfUdi6wvhhaDPIQjHU/pyvlKgXFw1kX31SQK2Nq9MH+vRDWB0ZLy8fYw==} - engines: {node: '>=4.0.0'} - eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -5472,15 +5436,10 @@ packages: resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint-utils@3.0.0: - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + eslint-typegen@2.2.0: + resolution: {integrity: sha512-OVgibKnRNnlSs4MhMz8uTRLSSIsvTXjH7a1gzXvyDIVU/txX1t8Zr9I/vOSwWIhtACX5DCPLo9CuyvA9usyjyw==} peerDependencies: - eslint: '>=5' - - eslint-visitor-keys@2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} + eslint: ^9.0.0 eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} @@ -5496,12 +5455,6 @@ packages: deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true - eslint@8.57.1: - resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. - hasBin: true - eslint@9.27.0: resolution: {integrity: sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -5525,9 +5478,6 @@ packages: engines: {node: '>=4'} hasBin: true - espurify@2.1.1: - resolution: {integrity: sha512-zttWvnkhcDyGOhSH4vO2qCBILpdCMv/MX8lp4cqgRkQoDRGK2oZxi2GfWhlP2dIXmk7BaKeOTuzbHhyC68o8XQ==} - esquery@1.5.0: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} @@ -5629,6 +5579,9 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + fast-equals@4.0.3: resolution: {integrity: sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg==} @@ -5770,10 +5723,6 @@ packages: resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} engines: {node: '>=18'} - 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'} @@ -5782,9 +5731,6 @@ packages: resolution: {integrity: sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==} engines: {node: '>= 8'} - fix-dts-default-cjs-exports@1.0.1: - resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} - flat-cache@3.2.0: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} @@ -5890,6 +5836,9 @@ packages: resolution: {integrity: sha512-2g4x+HqTJKM9zcJqBSpjoRmdcPFtJM60J3xJisTQSXBWka5XqyBN/2tNUgma1mztTXyDuUsEtYe5qcs7xYzYQA==} engines: {node: '>= 0.4'} + functional-red-black-tree@1.0.1: + resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} + functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} @@ -5908,9 +5857,6 @@ packages: resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} engines: {node: '>=18'} - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - get-intrinsic@1.2.2: resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} @@ -5922,14 +5868,13 @@ packages: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} + get-port-please@3.1.2: + resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} + get-proto@1.0.1: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} - get-set-props@0.1.0: - resolution: {integrity: sha512-7oKuKzAGKj0ag+eWZwcGw2fjiZ78tXnXQoBgY0aU7ZOxTu4bB7hSuQSDgtKy978EDH062P5FmD2EWiDpQS9K9Q==} - engines: {node: '>=0.10.0'} - get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -6039,6 +5984,14 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} + globals@15.15.0: + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} + engines: {node: '>=18'} + + globals@16.2.0: + resolution: {integrity: sha512-O+7l9tPdHCU320IigZZPj5zmRCFG9xHmx9cU8FqU2Rp+JN714seHV+2S9+JslCpY4gJwU2vOGox0wzgae/MCEg==} + engines: {node: '>=18'} + globalthis@1.0.4: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} @@ -6078,6 +6031,9 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + h3@1.15.3: + resolution: {integrity: sha512-z6GknHqyX0h9aQaTx22VZDf6QyZn+0Nh+Ym8O/u0SGSkyF5cuTJYKlc8MkzW3Nzf9LE1ivcpmYC3FUGpywhuUQ==} + handlebars@4.7.8: resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} engines: {node: '>=0.4.7'} @@ -6215,8 +6171,8 @@ packages: resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} engines: {node: '>=8'} - htmlparser2@8.0.2: - resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + htmlparser2@10.0.0: + resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} @@ -6307,10 +6263,6 @@ packages: import-meta-resolve@4.0.0: resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} - import-modules@2.1.0: - resolution: {integrity: sha512-8HEWcnkbGpovH9yInoisxaSoIg9Brbul+Ju3Kqe2UsYDUBJD/iQjSgEj0zPcTDPKfPp2fs5xlv1i+JSye/m1/A==} - engines: {node: '>=8'} - imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -6361,6 +6313,9 @@ packages: resolution: {integrity: sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==} engines: {node: '>=12'} + iron-webcrypto@1.2.1: + resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} + is-accessor-descriptor@1.0.1: resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} engines: {node: '>= 0.10'} @@ -6411,9 +6366,9 @@ packages: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} engines: {node: '>=4'} - is-builtin-module@3.2.1: - resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} - engines: {node: '>=6'} + is-builtin-module@5.0.0: + resolution: {integrity: sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==} + engines: {node: '>=18.20'} is-bun-module@2.0.0: resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==} @@ -6464,6 +6419,11 @@ packages: engines: {node: '>=8'} hasBin: true + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + is-empty@1.2.0: resolution: {integrity: sha512-F2FnH/otLNJv0J6wc73A5Xo7oHLNnqplYqZhUu01tD54DIPvxIRSTSLkrUB/M0nHO4vo1O9PDfN4KoTxCzLh/w==} @@ -6502,9 +6462,6 @@ packages: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} - is-get-set-prop@1.0.0: - resolution: {integrity: sha512-DvAYZ1ZgGUz4lzxKMPYlt08qAUqyG9ckSg2pIjfvcQ7+pkVNUHk8yVLXOnCLe5WKXhLop8oorWFBJHpwWQpszQ==} - is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -6515,6 +6472,17 @@ packages: is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + is-immutable-type@5.0.1: + resolution: {integrity: sha512-LkHEOGVZZXxGl8vDs+10k3DvP++SEoYEAJLRk6buTFi6kD7QekThV7xHS0j6gpnUCQ0zpud/gMDGiV4dQneLTg==} + peerDependencies: + eslint: '*' + typescript: '>=4.7.4' + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + is-installed-globally@0.4.0: resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} engines: {node: '>=10'} @@ -6523,9 +6491,6 @@ packages: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} - is-js-type@2.0.0: - resolution: {integrity: sha512-Aj13l47+uyTjlQNHtXBV8Cji3jb037vxwMWCgopRR8h6xocgBGW3qG8qGlIOEmbXQtkKShKuBM9e8AA1OeQ+xw==} - is-map@2.0.3: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} @@ -6549,9 +6514,6 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - is-obj-prop@1.0.0: - resolution: {integrity: sha512-5Idb61slRlJlsAzi0Wsfwbp+zZY+9LXKUAZpvT/1ySw+NxKLRWfa0Bzj+wXI3fX5O9hiddm5c3DAaRSNP/yl2w==} - is-obj@2.0.0: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} @@ -6580,9 +6542,6 @@ packages: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} engines: {node: '>=0.10.0'} - is-proto-prop@2.0.0: - resolution: {integrity: sha512-jl3NbQ/fGLv5Jhan4uX+Ge9ohnemqyblWVVCpAvtTQzNFvV2xhJq+esnkIbYQ9F1nITXoLfDDQLp7LBw/zzncg==} - is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} @@ -6664,6 +6623,10 @@ packages: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} + is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} + is-yarn-global@0.4.1: resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==} engines: {node: '>=12'} @@ -6688,10 +6651,6 @@ packages: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} - issue-parser@6.0.0: - resolution: {integrity: sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==} - engines: {node: '>=10.13'} - issue-parser@7.0.1: resolution: {integrity: sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==} engines: {node: ^18.17 || >=20.6.1} @@ -7007,20 +6966,9 @@ packages: jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} - joycon@3.1.1: - resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} - engines: {node: '>=10'} - js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-tokens@9.0.1: - resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} - - js-types@1.0.0: - resolution: {integrity: sha512-bfwqBW9cC/Lp7xcRpug7YrXm0IVw+T9e3g4mCYnv0Pjr3zIzU9PCQElYU9oSGAWzXlbdl9X5SAMPejO9sxkeUw==} - engines: {node: '>=0.10.0'} - js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true @@ -7029,16 +6977,13 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - jsdoc-type-pratt-parser@4.0.0: - resolution: {integrity: sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==} - engines: {node: '>=12.0.0'} - jsdoc-type-pratt-parser@4.1.0: resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} engines: {node: '>=12.0.0'} - jsesc@0.5.0: - resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} hasBin: true jsesc@3.1.0: @@ -7059,6 +7004,9 @@ packages: resolution: {integrity: sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + json-schema-to-typescript-lite@14.1.0: + resolution: {integrity: sha512-b8K6P3aiLgiYKYcHacgZKrwPXPyjekqRPV5vkNfBt0EoohcOSXEbcuGzgi6KQmsAhuy5Mh2KMxofXodRhMxURA==} + json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -7068,9 +7016,6 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - json5@1.0.2: resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true @@ -7133,10 +7078,6 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} - klona@2.0.6: - resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} - engines: {node: '>= 8'} - known-css-properties@0.35.0: resolution: {integrity: sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==} @@ -7218,10 +7159,6 @@ packages: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - local-pkg@0.5.1: - resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} - engines: {node: '>=14'} - locate-path@2.0.0: resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} engines: {node: '>=4'} @@ -7323,19 +7260,12 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - loupe@3.1.2: resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} loupe@3.1.3: resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} - lowercase-keys@1.0.1: - resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} - engines: {node: '>=0.10.0'} - lowercase-keys@3.0.0: resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -7412,12 +7342,6 @@ packages: markdown-table@3.0.3: resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} - marked-terminal@6.2.0: - resolution: {integrity: sha512-ubWhwcBFHnXsjYNsu+Wndpg0zhY4CahSpPlA70PlO0rR9r2sZpkyU+rkCsOWH+KMEkx847UpALON+HWgxowFtw==} - engines: {node: '>=16.0.0'} - peerDependencies: - marked: '>=1 <12' - marked-terminal@7.3.0: resolution: {integrity: sha512-t4rBvPsHc57uE/2nJOLmMbZCQ4tgAccAED3ngXQqW6g+TxA488JzJ+FK3lQkzBQOI1mRV/r/Kq+1ZlJ4D0owQw==} engines: {node: '>=16.0.0'} @@ -7429,11 +7353,6 @@ packages: engines: {node: '>= 18'} hasBin: true - marked@9.1.6: - resolution: {integrity: sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q==} - engines: {node: '>= 16'} - hasBin: true - match-casing@2.0.1: resolution: {integrity: sha512-LeCq9FI5u4nppJnt4hklxcchkH9qH9+uFjX17f74a99lLkRXfVE49iL0hCtM5DZolps483viAy5zjvlTz/JNoA==} @@ -7462,6 +7381,9 @@ packages: mdast-util-find-and-replace@2.2.2: resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==} + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} + mdast-util-footnote@0.1.7: resolution: {integrity: sha512-QxNdO8qSxqbO2e3m09KwDKfWiLgqyCurdWTQ198NpbZ2hxntdc+VKS4fDJCmNWbAroUdYnSthu+XbZ8ovh8C3w==} @@ -7471,45 +7393,69 @@ packages: mdast-util-from-markdown@1.3.1: resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} + mdast-util-from-markdown@2.0.2: + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} + mdast-util-frontmatter@0.2.0: resolution: {integrity: sha512-FHKL4w4S5fdt1KjJCwB0178WJ0evnyyQr5kXTM3wrOVpytD0hrkvd+AOOjU9Td8onOejCkmZ+HQRT3CZ3coHHQ==} mdast-util-frontmatter@1.0.1: resolution: {integrity: sha512-JjA2OjxRqAa8wEG8hloD0uTU0kdn8kbtOWpPP94NBkfAlbxn4S8gCGf/9DwFtEeGPXrDcNXdiDjVaRdUFqYokw==} + mdast-util-frontmatter@2.0.1: + resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==} + mdast-util-gfm-autolink-literal@0.1.3: resolution: {integrity: sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==} mdast-util-gfm-autolink-literal@1.0.3: resolution: {integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==} + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + mdast-util-gfm-footnote@1.0.2: resolution: {integrity: sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==} + mdast-util-gfm-footnote@2.1.0: + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} + mdast-util-gfm-strikethrough@0.2.3: resolution: {integrity: sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==} mdast-util-gfm-strikethrough@1.0.3: resolution: {integrity: sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==} + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + mdast-util-gfm-table@0.1.6: resolution: {integrity: sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==} mdast-util-gfm-table@1.0.7: resolution: {integrity: sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==} + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + mdast-util-gfm-task-list-item@0.1.6: resolution: {integrity: sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==} mdast-util-gfm-task-list-item@1.0.2: resolution: {integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==} + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + mdast-util-gfm@0.1.2: resolution: {integrity: sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==} mdast-util-gfm@2.0.2: resolution: {integrity: sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==} + mdast-util-gfm@3.1.0: + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} + mdast-util-mdx-expression@1.3.2: resolution: {integrity: sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==} @@ -7525,12 +7471,18 @@ packages: mdast-util-phrasing@3.0.1: resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==} + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + mdast-util-to-markdown@0.6.5: resolution: {integrity: sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==} mdast-util-to-markdown@1.5.0: resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} + mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} + mdast-util-to-nlcst@5.2.1: resolution: {integrity: sha512-Xznpj85MsJnLQjBboajOovT2fAAvbbbmYutpFgzLi9pjZEOkgGzjq+t6fHcge8uzZ5uEkj5pigzw2QrnIVq/kw==} @@ -7540,6 +7492,9 @@ packages: mdast-util-to-string@3.2.0: resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + mdn-data@2.12.2: resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} @@ -7569,12 +7524,12 @@ packages: merge@2.1.1: resolution: {integrity: sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==} - micro-spelling-correcter@1.1.1: - resolution: {integrity: sha512-lkJ3Rj/mtjlRcHk6YyCbvZhyWTOzdBvTHsxMmZSk5jxN1YyVSQ+JETAom55mdzfcyDrY/49Z7UCW760BK30crg==} - micromark-core-commonmark@1.1.0: resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==} + micromark-core-commonmark@2.0.3: + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} + micromark-extension-footnote@0.3.2: resolution: {integrity: sha512-gr/BeIxbIWQoUm02cIfK7mdMZ/fbroRpLsck4kvFtjbzP4yi+OPVbnukTc/zy0i7spC2xYE/dbX1Sur8BEDJsQ==} @@ -7584,45 +7539,69 @@ packages: micromark-extension-frontmatter@1.1.1: resolution: {integrity: sha512-m2UH9a7n3W8VAH9JO9y01APpPKmNNNs71P0RbknEmYSaZU5Ghogv38BYO94AI5Xw6OYfxZRdHZZ2nYjs/Z+SZQ==} + micromark-extension-frontmatter@2.0.0: + resolution: {integrity: sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==} + micromark-extension-gfm-autolink-literal@0.5.7: resolution: {integrity: sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==} micromark-extension-gfm-autolink-literal@1.0.5: resolution: {integrity: sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==} + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + micromark-extension-gfm-footnote@1.1.2: resolution: {integrity: sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==} + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + micromark-extension-gfm-strikethrough@0.6.5: resolution: {integrity: sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==} micromark-extension-gfm-strikethrough@1.0.7: resolution: {integrity: sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==} + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + micromark-extension-gfm-table@0.4.3: resolution: {integrity: sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==} micromark-extension-gfm-table@1.0.7: resolution: {integrity: sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==} + micromark-extension-gfm-table@2.1.1: + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} + micromark-extension-gfm-tagfilter@0.3.0: resolution: {integrity: sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==} micromark-extension-gfm-tagfilter@1.0.2: resolution: {integrity: sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==} + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + micromark-extension-gfm-task-list-item@0.3.3: resolution: {integrity: sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==} micromark-extension-gfm-task-list-item@1.0.5: resolution: {integrity: sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==} + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + micromark-extension-gfm@0.3.3: resolution: {integrity: sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==} micromark-extension-gfm@2.0.3: resolution: {integrity: sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==} + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + micromark-extension-mdx-expression@1.0.8: resolution: {integrity: sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw==} @@ -7641,72 +7620,132 @@ packages: micromark-factory-destination@1.1.0: resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==} + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + micromark-factory-label@1.1.0: resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==} + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + micromark-factory-mdx-expression@1.0.9: resolution: {integrity: sha512-jGIWzSmNfdnkJq05c7b0+Wv0Kfz3NJ3N4cBjnbO4zjXIlxJr+f8lk+5ZmwFvqdAbUy2q6B5rCY//g0QAAaXDWA==} micromark-factory-space@1.1.0: resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + micromark-factory-title@1.1.0: resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==} + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + micromark-factory-whitespace@1.1.0: resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==} + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + micromark-util-character@1.2.0: resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + micromark-util-chunked@1.1.0: resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==} + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + micromark-util-classify-character@1.1.0: resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==} + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + micromark-util-combine-extensions@1.1.0: resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==} + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + micromark-util-decode-numeric-character-reference@1.1.0: resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==} + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + micromark-util-decode-string@1.1.0: resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==} + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + micromark-util-encode@1.1.0: resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + micromark-util-events-to-acorn@1.2.3: resolution: {integrity: sha512-ij4X7Wuc4fED6UoLWkmo0xJQhsktfNh1J0m8g4PbIMPlx+ek/4YdW5mvbye8z/aZvAPUoxgXHrwVlXAPKMRp1w==} micromark-util-html-tag-name@1.2.0: resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + micromark-util-normalize-identifier@1.1.0: resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==} + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + micromark-util-resolve-all@1.1.0: resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==} + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + micromark-util-sanitize-uri@1.2.0: resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==} + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + micromark-util-subtokenize@1.1.0: resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==} + micromark-util-subtokenize@2.1.0: + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} + micromark-util-symbol@1.1.0: resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + micromark-util-types@1.1.0: resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + micromark@2.11.4: resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} micromark@3.2.0: resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} + micromark@4.0.2: + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -7759,10 +7798,6 @@ packages: resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} - minimatch@9.0.1: - resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} - engines: {node: '>=16 || 14 >=14.17'} - minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} @@ -7808,6 +7843,10 @@ packages: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} + ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -7847,12 +7886,13 @@ packages: engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} hasBin: true - natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + natural-orderby@5.0.0: + resolution: {integrity: sha512-kKHJhxwpR/Okycz4HhQKKlhWe4ASEfPgkSWNmKFHd7+ezuQlxkA5cM3+XkBPvm1gmHen3w53qsYAv+8GwRrBlg==} + engines: {node: '>=18'} + neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} @@ -7910,6 +7950,9 @@ packages: node-machine-id@1.1.12: resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} + node-mock-http@1.0.0: + resolution: {integrity: sha512-0uGYQ1WQL1M5kKvGRXWQ3uZCHtLTO8hln3oBjIusM75WoesZ909uQJs/Hb946i2SS+Gsrhkaa6iAO17jRIv6DQ==} + node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} @@ -8047,10 +8090,6 @@ packages: '@swc/core': optional: true - obj-props@1.4.0: - resolution: {integrity: sha512-p7p/7ltzPDiBs6DqxOrIbtRdwxxVRBj5ROukeNb9RgA+fawhrz5n2hpNz8DDmYR//tviJSj7nUnlppGmONkjiQ==} - engines: {node: '>=0.10.0'} - object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -8099,6 +8138,9 @@ packages: ofetch@1.4.1: resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} + ohash@2.0.11: + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -8114,6 +8156,10 @@ packages: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} + open@10.1.2: + resolution: {integrity: sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==} + engines: {node: '>=18'} + open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} @@ -8190,10 +8236,6 @@ packages: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - p-limit@5.0.0: - resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} - engines: {node: '>=18'} - p-locate@2.0.0: resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} engines: {node: '>=4'} @@ -8279,6 +8321,13 @@ packages: parse-entities@4.0.1: resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} + parse-gitignore@2.0.0: + resolution: {integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==} + engines: {node: '>=14'} + + parse-imports-exports@0.2.4: + resolution: {integrity: sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==} + parse-json@2.2.0: resolution: {integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==} engines: {node: '>=0.10.0'} @@ -8317,6 +8366,9 @@ packages: resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} engines: {node: '>=0.10.0'} + parse-statements@1.0.11: + resolution: {integrity: sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==} + parse5-htmlparser2-tree-adapter@6.0.1: resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} @@ -8393,9 +8445,6 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - pathval@2.0.0: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} @@ -8447,10 +8496,6 @@ packages: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} - pkg-dir@5.0.0: - resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} - engines: {node: '>=10'} - pkg-pr-new@0.0.50: resolution: {integrity: sha512-wwIE4s+M39AcAnls7N1xxJyw7uYw15pzF94i54byvfSL6OOQjhyo9MAsSCUfcZZXplNKpYy70qW7rDXtOW35zw==} hasBin: true @@ -8560,6 +8605,10 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + prettier@3.5.3: resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} engines: {node: '>=14'} @@ -8604,10 +8653,6 @@ packages: proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} - proto-props@2.0.0: - resolution: {integrity: sha512-2yma2tog9VaRZY2mn3Wq51uiSW4NcPYT1cQdBagwyrznrilKSZwIZ0UG3ZPL/mx+axEns0hE35T5ufOYZXEnBQ==} - engines: {node: '>=4'} - proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} @@ -8662,6 +8707,9 @@ packages: quotation@2.0.3: resolution: {integrity: sha512-yEc24TEgCFLXx7D4JHJJkK4JFVtatO8fziwUxY4nB/Jbea9o9CVS3gt22mA0W7rPYAGW2fWzYDSOtD94PwOyqA==} + radix3@1.1.2: + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} + rc-config-loader@4.1.3: resolution: {integrity: sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w==} @@ -8678,8 +8726,8 @@ packages: react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + react@19.1.0: + resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} engines: {node: '>=0.10.0'} read-cache@1.0.0: @@ -8693,11 +8741,6 @@ packages: resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==} engines: {node: '>=18'} - read-pkg-up@11.0.0: - resolution: {integrity: sha512-LOVbvF1Q0SZdjClSefZ0Nz5z8u+tIE7mV5NibzmE9VYmDe9CaBbAVtz1veOSZbofrdsilxuDAYnFenukZVp8/Q==} - engines: {node: '>=18'} - deprecated: Renamed to read-package-up - read-pkg-up@3.0.0: resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==} engines: {node: '>=4'} @@ -8766,9 +8809,6 @@ packages: resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} engines: {node: '>=12'} - redeyed@2.1.1: - resolution: {integrity: sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==} - refa@0.12.1: resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -8805,8 +8845,8 @@ packages: resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} engines: {node: '>=12'} - regjsparser@0.10.0: - resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} + regjsparser@0.12.0: + resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} hasBin: true rehype-parse@8.0.5: @@ -8833,9 +8873,6 @@ packages: remark-mdx@2.0.0: resolution: {integrity: sha512-TDnjSv77Oynf+K1deGWZPKSwh3/9hykVAxVm9enAw6BmicCGklREET8s19KYnjGsNPms0pNDJLmp+bnHDVItAQ==} - remark-mdx@2.3.0: - resolution: {integrity: sha512-g53hMkpM0I98MU266IzDFMrTD980gNF3BJnkyFcmN+dD873mQeD5rdMO3Y2X+x8umQfbSE0PcoEDl7ledSA+2g==} - remark-message-control@7.1.1: resolution: {integrity: sha512-xKRWl1NTBOKed0oEtCd8BUfH5m4s8WXxFFSoo7uUwx6GW/qdCy4zov5LfPyw7emantDmhfWn5PdIZgcbVcWMDQ==} @@ -8848,9 +8885,6 @@ packages: remark-retext@5.0.1: resolution: {integrity: sha512-h3kOjKNy7oJfohqXlKp+W4YDigHD3rw01x91qvQP/cUkK5nJrDl6yEYwTujQCAXSLZrsBxywlK3ntzIX6c29aA==} - remark-stringify@10.0.3: - resolution: {integrity: sha512-koyOzCMYoUHudypbj4XpnAKFbkddRMYZHwghnxd7ue5210WzGw6kOBwauJTRUMq16jsovXx8dYNvSSWP89kZ3A==} - repeat-string@1.6.1: resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} engines: {node: '>=0.10'} @@ -8863,14 +8897,6 @@ packages: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} - requireindex@1.1.0: - resolution: {integrity: sha512-LBnkqsDE7BZKvqylbmn7lTIVdpx4K/QCduRATpO5R+wtPmky/a8pN1bO2D6wXppn1497AJF9mNjqAXr6bdl9jg==} - engines: {node: '>=0.10.5'} - - requireindex@1.2.0: - resolution: {integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==} - engines: {node: '>=0.10.5'} - resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} @@ -8905,9 +8931,6 @@ packages: resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} engines: {node: '>=10'} - resolve@1.19.0: - resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} - resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -8953,10 +8976,6 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rimraf@5.0.10: - resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} - hasBin: true - rimraf@6.0.1: resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} engines: {node: 20 || >=22} @@ -9009,6 +9028,10 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + run-applescript@7.0.0: + resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} + engines: {node: '>=18'} + run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} @@ -9067,11 +9090,6 @@ packages: select-section@0.4.6: resolution: {integrity: sha512-0WGMcD/Q6SoD/I3TfZyOstTpXZ0J072Qr+vdH+fCMEc5Z+4u/hFRQzc9prVlUpStHWH7phJ44+9nIVySyEQmTg==} - semantic-release@22.0.12: - resolution: {integrity: sha512-0mhiCR/4sZb00RVFJIUlMuiBkW3NMpVIW2Gse7noqEMoFGkvfPPAImEQbkBV8xga4KOPP4FdTRYuLLy32R1fPw==} - engines: {node: ^18.17 || >=20.6.1} - hasBin: true - semantic-release@24.2.5: resolution: {integrity: sha512-9xV49HNY8C0/WmPWxTlaNleiXhWb//qfMzG2c5X8/k7tuWcu8RssbuS+sujb/h7PiWSXv53mrQvV9hrO9b7vuQ==} engines: {node: '>=20.8.1'} @@ -9229,10 +9247,6 @@ packages: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} - source-map@0.8.0-beta.0: - resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} - engines: {node: '>= 8'} - space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} @@ -9309,10 +9323,6 @@ packages: std-env@3.9.0: resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} - stop-iteration-iterator@1.1.0: - resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} - engines: {node: '>= 0.4'} - stream-buffers@3.0.3: resolution: {integrity: sha512-pqMqwQCso0PBJt2PQmDO0cFj0lyqmiwOMiMSkVtRokl7e+ZTRYgDHKnuZNbqjiJXgsg4nuqtD/zxuo9KqTp0Yw==} engines: {node: '>= 0.10.0'} @@ -9337,6 +9347,9 @@ packages: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} + string-ts@2.2.1: + resolution: {integrity: sha512-Q2u0gko67PLLhbte5HmPfdOjNvUKbKQM+mCNQae6jE91DmoFHY6HH9GcdqCeNx87DZ2KKjiFxmA0R/42OneGWw==} + string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -9416,10 +9429,6 @@ packages: resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} engines: {node: '>=18'} - strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} - strip-indent@4.0.0: resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} engines: {node: '>=12'} @@ -9436,9 +9445,6 @@ packages: resolution: {integrity: sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==} engines: {node: '>=14.16'} - strip-literal@2.1.1: - resolution: {integrity: sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==} - structured-source@3.0.2: resolution: {integrity: sha512-Ap7JHfKgmH40SUjumqyKTHYHNZ8GvGQskP34ks0ElHCDEig+bYGpmXVksxPSrgcY9rkJqhVMzfeg5GIpZelfpQ==} @@ -9570,6 +9576,10 @@ packages: engines: {node: '>=14.0.0'} hasBin: true + tapable@2.2.2: + resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} + engines: {node: '>=6'} + tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} @@ -9732,9 +9742,9 @@ packages: resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} engines: {node: '>=12.0.0'} - tinypool@0.8.4: - resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} - engines: {node: '>=14.0.0'} + tinyglobby@0.2.14: + resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + engines: {node: '>=12.0.0'} tinypool@1.0.2: resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} @@ -9748,10 +9758,6 @@ packages: resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} engines: {node: '>=14.0.0'} - tinyspy@2.2.1: - resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} - engines: {node: '>=14.0.0'} - tinyspy@3.0.2: resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} @@ -9778,12 +9784,8 @@ packages: to-vfile@7.2.4: resolution: {integrity: sha512-2eQ+rJ2qGbyw3senPI0qjuM7aut8IYXK6AEoOWb+fJx/mQYzviTckm1wDjq91QYHAPBTYzmdJXxMFA6Mk14mdw==} - toml-eslint-parser@0.6.1: - resolution: {integrity: sha512-7xjjVOdu0c6GpaP2AmA48ZcjesBL7KB2qeMNz93gMG76yV/lHVzQiSlD6HqwAdMJiL9hM44fung0NzhjTfihtw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - toml-eslint-parser@0.7.0: - resolution: {integrity: sha512-HYjp7nkJOk8IOjNHHMH+bbwiwO1CF5KffrRYo5+Qt6CdWoWfEuVk9RRrLnGQlMiG2fUT/26g8DR0kqteGkHVDA==} + toml-eslint-parser@0.10.0: + resolution: {integrity: sha512-khrZo4buq4qVmsGzS5yQjKe/WsFvV8fGfOjDQN0q4iy9FjRfPWRgTFrU8u1R2iu/SfWLhY9WnCi4Jhdrcbtg+g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} too-wordy@0.3.6: @@ -9796,9 +9798,6 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@1.0.1: - resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} - traverse@0.6.7: resolution: {integrity: sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==} @@ -9836,6 +9835,11 @@ packages: peerDependencies: typescript: '>=4.8.4' + ts-declaration-location@1.0.7: + resolution: {integrity: sha512-EDyGAwH1gO0Ausm9gV6T2nUvBgXT5kGoCMJPllOaooZ+4VvJiKBdZE7wK18N1deEowhcUptS+5GXZK8U/fvpwA==} + peerDependencies: + typescript: '>=4.0.0' + ts-dedent@2.2.0: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} @@ -9861,6 +9865,9 @@ packages: '@swc/wasm': optional: true + ts-pattern@5.7.1: + resolution: {integrity: sha512-EGs8PguQqAAUIcQfK4E9xdXxB6s2GK4sJfT/vcc9V1ELIvC4LH/zXu2t/5fajtv6oiRCxdv7BgtVK3vWgROxag==} + tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} @@ -9877,32 +9884,6 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tsup@8.5.0: - resolution: {integrity: sha512-VmBp77lWNQq6PfuMqCHD3xWl22vEoWsKajkF8t+yMBawlUS8JzEI+vOVMeuNZIuMML8qXRizFKi9oD5glKQVcQ==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - '@microsoft/api-extractor': ^7.36.0 - '@swc/core': ^1 - postcss: ^8.4.12 - typescript: '>=4.5.0' - peerDependenciesMeta: - '@microsoft/api-extractor': - optional: true - '@swc/core': - optional: true - postcss: - optional: true - typescript: - optional: true - - tsutils-etc@1.4.2: - resolution: {integrity: sha512-2Dn5SxTDOu6YWDNKcx1xu2YUy6PUeKrWZB/x2cQ8vY2+iz3JRembKn/iZ0JLT1ZudGNwQQvtFX9AwvRHbXuPUg==} - hasBin: true - peerDependencies: - tsutils: ^3.0.0 - typescript: '>=4.0.0' - tsutils@3.21.0: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} @@ -9926,10 +9907,6 @@ packages: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} - type-detect@4.1.0: - resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} - engines: {node: '>=4'} - type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} @@ -9988,6 +9965,13 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + typescript-eslint@8.32.1: + resolution: {integrity: sha512-D7el+eaDHAmXvrZBy1zpzSNIRqnCOrkwTgZxTu3MUqRWk8k0q9m9Ho4+vPf7iHtgUfrK/o8IZaEApsxPlHTFCg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + typescript@5.7.3: resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} engines: {node: '>=14.17'} @@ -10019,6 +10003,9 @@ packages: unconfig@7.3.2: resolution: {integrity: sha512-nqG5NNL2wFVGZ0NA/aCFw0oJ2pxSf1lwg4Z5ill8wd7K4KX/rQbHlwbh+bjctXL5Ly1xtzHenHGOK0b+lG6JVg==} + uncrypto@0.1.3: + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} @@ -10084,6 +10071,9 @@ packages: unist-util-is@5.2.1: resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + unist-util-modify-children@2.0.0: resolution: {integrity: sha512-HGrj7JQo9DwZt8XFsX8UD4gGqOsIlCih9opG6Y+N11XqkBGKzHo8cvDi+MfQQgiZ7zXRUiQREYHhjOBHERTMdg==} @@ -10105,6 +10095,9 @@ packages: unist-util-stringify-position@3.0.3: resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + unist-util-visit-children@1.1.4: resolution: {integrity: sha512-sA/nXwYRCQVRwZU2/tQWUqJ9JSFM1X3x7JIOsIgSzrFHcfVt6NkzDtKzyxg2cZWkCwGF9CO8x4QNZRJRMK8FeQ==} @@ -10123,6 +10116,9 @@ packages: unist-util-visit-parents@5.1.3: resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + unist-util-visit@1.4.1: resolution: {integrity: sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==} @@ -10135,6 +10131,9 @@ packages: unist-util-visit@4.1.2: resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + universal-user-agent@6.0.1: resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==} @@ -10172,10 +10171,6 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - uvu@0.5.6: resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} engines: {node: '>=8'} @@ -10225,11 +10220,6 @@ packages: vfile@5.3.7: resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} - vite-node@1.6.1: - resolution: {integrity: sha512-YAXkfvGtuTzwWbDSACdJSg4A4DZiAqckWe90Zapc/sEX3XvHcw1NdurM/6od8J207tSDqNbSsgdCacBgvJKFuA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - vite-node@3.1.4: resolution: {integrity: sha512-6enNwYnpyDo4hEgytbmc6mYWHXDHYEn0D1/rw4Q+tnHUGtKTJsn8T1YkX6Q18wI5LCrS8CTYlBaiCqxOy2kvUA==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -10275,31 +10265,6 @@ packages: yaml: optional: true - vitest@1.6.1: - resolution: {integrity: sha512-Ljb1cnSJSivGN0LqXd/zmDbWEM0RNNg2t1QW/XUhYl/qPqyu7CsqeWtqQXHVaJsecLPuDoak2oJcZN2QoRIOag==} - 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.6.1 - '@vitest/ui': 1.6.1 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - vitest@3.1.4: resolution: {integrity: sha512-Ta56rT7uWxCSJXlBtKgIlApJnT6e6IGmTYxYcmxjJ4ujuZDI59GUQgVDObXXJujOmPDBYXHK1qmaGtneu6TNIQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -10346,15 +10311,9 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webidl-conversions@4.0.2: - resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - whatwg-url@7.1.0: - resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} - which-boxed-primitive@1.1.1: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} @@ -10389,11 +10348,6 @@ packages: resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} engines: {node: '>=12'} - window-size@0.3.0: - resolution: {integrity: sha512-aB2BGVMsX1iPJ79hqC5JvbDvUXpy3nhoxmbiFw74aEewrHPnkNiFYAFbx+BgurhxuOUZV+qIj/9HurtO8ZTH5w==} - engines: {node: '>= 0.10.0'} - hasBin: true - word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -10436,6 +10390,18 @@ packages: engines: {node: '>=6', npm: '>=5'} hasBin: true + ws@8.18.2: + resolution: {integrity: sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + xdg-basedir@5.1.0: resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} engines: {node: '>=12'} @@ -10567,6 +10533,11 @@ snapshots: dot-path-value: 0.0.10 read-pkg-up: 7.0.1 + '@anolilab/prettier-config@5.0.14(prettier@3.5.3)': + dependencies: + '@anolilab/package-json-utils': 3.0.9 + prettier: 3.5.3 + '@anolilab/rc@1.1.4': dependencies: '@visulima/fs': 2.3.5 @@ -10574,6 +10545,14 @@ snapshots: ini: 5.0.0 ts-deepmerge: 7.0.2 + '@anolilab/semantic-release-clean-package-json@2.0.2(yaml@2.8.0)': + dependencies: + '@semantic-release/error': 4.0.0 + '@visulima/fs': 3.1.2(yaml@2.8.0) + '@visulima/path': 1.3.5 + transitivePeerDependencies: + - yaml + '@anolilab/semantic-release-pnpm@1.1.6(@types/node@22.15.21)(yaml@2.8.0)': dependencies: '@anolilab/rc': 1.1.4 @@ -10591,20 +10570,22 @@ snapshots: - '@types/node' - yaml - '@anolilab/semantic-release-preset@8.0.3(semantic-release@22.0.12(typescript@5.8.3))': + '@anolilab/semantic-release-preset@10.0.5(@semantic-release/npm@12.0.1(semantic-release@24.2.5(typescript@5.8.3)))(semantic-release@24.2.5(typescript@5.8.3))(yaml@2.8.0)': dependencies: - '@anolilab/package-json-utils': 3.0.9 - '@semantic-release/changelog': 6.0.3(semantic-release@22.0.12(typescript@5.8.3)) - '@semantic-release/commit-analyzer': 11.1.0(semantic-release@22.0.12(typescript@5.8.3)) - '@semantic-release/exec': 6.0.3(semantic-release@22.0.12(typescript@5.8.3)) - '@semantic-release/git': 10.0.1(semantic-release@22.0.12(typescript@5.8.3)) - '@semantic-release/github': 9.2.6(semantic-release@22.0.12(typescript@5.8.3)) - '@semantic-release/npm': 11.0.3(semantic-release@22.0.12(typescript@5.8.3)) - '@semantic-release/release-notes-generator': 12.1.0(semantic-release@22.0.12(typescript@5.8.3)) - conventional-changelog-conventionalcommits: 7.0.2 - semantic-release: 22.0.12(typescript@5.8.3) + '@anolilab/semantic-release-clean-package-json': 2.0.2(yaml@2.8.0) + '@semantic-release/changelog': 6.0.3(semantic-release@24.2.5(typescript@5.8.3)) + '@semantic-release/commit-analyzer': 13.0.1(semantic-release@24.2.5(typescript@5.8.3)) + '@semantic-release/exec': 7.1.0(semantic-release@24.2.5(typescript@5.8.3)) + '@semantic-release/git': 10.0.1(semantic-release@24.2.5(typescript@5.8.3)) + '@semantic-release/github': 11.0.2(semantic-release@24.2.5(typescript@5.8.3)) + '@semantic-release/release-notes-generator': 14.0.3(semantic-release@24.2.5(typescript@5.8.3)) + conventional-changelog-conventionalcommits: 8.0.0 + semantic-release: 24.2.5(typescript@5.8.3) + optionalDependencies: + '@semantic-release/npm': 12.0.1(semantic-release@24.2.5(typescript@5.8.3)) transitivePeerDependencies: - supports-color + - yaml '@anolilab/semantic-release-preset@9.0.3(@anolilab/semantic-release-pnpm@1.1.6(@types/node@22.15.21)(yaml@2.8.0))(@semantic-release/npm@12.0.1(semantic-release@24.2.5(typescript@5.7.3)))(semantic-release@24.2.5(typescript@5.7.3))': dependencies: @@ -10660,14 +10641,13 @@ snapshots: package-manager-detector: 1.3.0 tinyexec: 1.0.1 - '@arthurgeron/eslint-plugin-react-usememo@2.5.0(eslint@8.57.1)': + '@apidevtools/json-schema-ref-parser@11.9.3': dependencies: - eslint: 8.57.1 - minimatch: 9.0.3 - uuid: 9.0.1 + '@jsdevtools/ono': 7.1.3 + '@types/json-schema': 7.0.15 + js-yaml: 4.1.0 - '@astrojs/compiler@2.10.3': - optional: true + '@astrojs/compiler@2.10.3': {} '@azu/format-text@1.0.2': {} @@ -10714,14 +10694,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/eslint-parser@7.27.1(@babel/core@7.26.0)(eslint@8.57.1)': - dependencies: - '@babel/core': 7.26.0 - '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 8.57.1 - eslint-visitor-keys: 2.1.0 - semver: 6.3.1 - '@babel/generator@7.26.3': dependencies: '@babel/parser': 7.26.9 @@ -10756,8 +10728,6 @@ snapshots: '@babel/helper-plugin-utils@7.26.5': {} - '@babel/helper-plugin-utils@7.27.1': {} - '@babel/helper-string-parser@7.25.9': {} '@babel/helper-string-parser@7.27.1': {} @@ -10811,11 +10781,6 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -10830,6 +10795,7 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.26.5 + optional: true '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.0)': dependencies: @@ -11131,6 +11097,12 @@ snapshots: dependencies: postcss-selector-parser: 7.1.0 + '@dprint/formatter@0.3.0': {} + + '@dprint/markdown@0.17.8': {} + + '@dprint/toml@0.6.4': {} + '@dual-bundle/import-meta-resolve@4.1.0': {} '@emnapi/core@1.4.3': @@ -11146,11 +11118,13 @@ snapshots: dependencies: tslib: 2.8.1 - '@es-joy/jsdoccomment@0.41.0': + '@es-joy/jsdoccomment@0.50.2': dependencies: + '@types/estree': 1.0.6 + '@typescript-eslint/types': 8.32.1 comment-parser: 1.4.1 esquery: 1.6.0 - jsdoc-type-pratt-parser: 4.0.0 + jsdoc-type-pratt-parser: 4.1.0 '@esbuild/aix-ppc64@0.25.4': optional: true @@ -11227,6 +11201,12 @@ snapshots: '@esbuild/win32-x64@0.25.4': optional: true + '@eslint-community/eslint-plugin-eslint-comments@4.5.0(eslint@9.27.0(jiti@2.4.2))': + dependencies: + escape-string-regexp: 4.0.0 + eslint: 9.27.0(jiti@2.4.2) + ignore: 5.3.2 + '@eslint-community/eslint-utils@4.4.0(eslint@8.54.0)': dependencies: eslint: 8.54.0 @@ -11237,44 +11217,159 @@ snapshots: eslint: 9.27.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.7.0(eslint@8.57.1)': + '@eslint-community/eslint-utils@4.7.0(eslint@9.27.0(jiti@2.4.2))': dependencies: - eslint: 8.57.1 + eslint: 9.27.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.10.0': {} '@eslint-community/regexpp@4.12.1': {} - '@eslint/config-array@0.20.0': + '@eslint-react/ast@1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@eslint/object-schema': 2.1.6 - debug: 4.4.0 - minimatch: 3.1.2 + '@eslint-react/eff': 1.50.0 + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + string-ts: 2.2.1 + ts-pattern: 5.7.1 transitivePeerDependencies: + - eslint - supports-color + - typescript - '@eslint/config-helpers@0.2.2': {} + '@eslint-react/core@1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-react/ast': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/eff': 1.50.0 + '@eslint-react/kit': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/shared': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/var': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + birecord: 0.1.1 + ts-pattern: 5.7.1 + transitivePeerDependencies: + - eslint + - supports-color + - typescript - '@eslint/core@0.14.0': + '@eslint-react/eff@1.50.0': {} + + '@eslint-react/eslint-plugin@1.50.0(eslint@9.27.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3)': dependencies: - '@types/json-schema': 7.0.15 + '@eslint-react/eff': 1.50.0 + '@eslint-react/kit': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/shared': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + eslint-plugin-react-debug: 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint-plugin-react-dom: 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint-plugin-react-hooks-extra: 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint-plugin-react-naming-convention: 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint-plugin-react-web-api: 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint-plugin-react-x: 1.50.0(eslint@9.27.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3) + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + - ts-api-utils - '@eslint/eslintrc@2.1.3': + '@eslint-react/kit@1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: - ajv: 6.12.6 - debug: 4.4.1 - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.2 - import-fresh: 3.3.0 - js-yaml: 4.1.0 + '@eslint-react/eff': 1.50.0 + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + ts-pattern: 5.7.1 + zod: 3.25.28 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + + '@eslint-react/shared@1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-react/eff': 1.50.0 + '@eslint-react/kit': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + ts-pattern: 5.7.1 + zod: 3.25.28 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + + '@eslint-react/var@1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-react/ast': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/eff': 1.50.0 + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + string-ts: 2.2.1 + ts-pattern: 5.7.1 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + + '@eslint-stylistic/metadata@4.4.0': {} + + '@eslint/compat@1.2.9(eslint@9.27.0(jiti@2.4.2))': + optionalDependencies: + eslint: 9.27.0(jiti@2.4.2) + + '@eslint/config-array@0.20.0': + dependencies: + '@eslint/object-schema': 2.1.6 + debug: 4.4.0 minimatch: 3.1.2 - strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - '@eslint/eslintrc@2.1.4': + '@eslint/config-helpers@0.2.2': {} + + '@eslint/config-inspector@1.0.2(eslint@9.27.0(jiti@2.4.2))': + dependencies: + '@nodelib/fs.walk': 3.0.1 + ansis: 3.17.0 + bundle-require: 5.1.0(esbuild@0.25.4) + cac: 6.7.14 + chokidar: 4.0.3 + debug: 4.4.1 + esbuild: 0.25.4 + eslint: 9.27.0(jiti@2.4.2) + find-up: 7.0.0 + get-port-please: 3.1.2 + h3: 1.15.3 + mlly: 1.7.4 + mrmime: 2.0.1 + open: 10.1.2 + tinyglobby: 0.2.13 + ws: 8.18.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + '@eslint/core@0.10.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/core@0.13.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/core@0.14.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@2.1.3': dependencies: ajv: 6.12.6 debug: 4.4.1 @@ -11304,22 +11399,49 @@ snapshots: '@eslint/js@8.54.0': {} - '@eslint/js@8.57.1': {} - '@eslint/js@9.27.0': {} + '@eslint/markdown@6.4.0': + dependencies: + '@eslint/core': 0.10.0 + '@eslint/plugin-kit': 0.2.8 + mdast-util-from-markdown: 2.0.2 + mdast-util-frontmatter: 2.0.1 + mdast-util-gfm: 3.1.0 + micromark-extension-frontmatter: 2.0.0 + micromark-extension-gfm: 3.0.0 + transitivePeerDependencies: + - supports-color + '@eslint/object-schema@2.1.6': {} + '@eslint/plugin-kit@0.2.8': + dependencies: + '@eslint/core': 0.13.0 + levn: 0.4.1 + '@eslint/plugin-kit@0.3.1': dependencies: '@eslint/core': 0.14.0 levn: 0.4.1 - '@html-eslint/eslint-plugin@0.20.0': {} + '@html-eslint/eslint-plugin@0.40.3': + dependencies: + '@eslint/plugin-kit': 0.2.8 + '@html-eslint/parser': 0.40.0 + '@html-eslint/template-parser': 0.40.0 + '@html-eslint/template-syntax-parser': 0.40.0 + + '@html-eslint/parser@0.40.0': + dependencies: + '@html-eslint/template-syntax-parser': 0.40.0 + es-html-parser: 0.2.0 - '@html-eslint/parser@0.20.0': + '@html-eslint/template-parser@0.40.0': dependencies: - es-html-parser: 0.0.9 + es-html-parser: 0.2.0 + + '@html-eslint/template-syntax-parser@0.40.0': {} '@humanfs/core@0.19.1': {} @@ -11336,20 +11458,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@humanwhocodes/config-array@0.13.0': - dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.4.1 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - '@humanwhocodes/module-importer@1.0.1': {} '@humanwhocodes/object-schema@2.0.1': {} - '@humanwhocodes/object-schema@2.0.3': {} - '@humanwhocodes/retry@0.3.1': {} '@humanwhocodes/retry@0.4.3': {} @@ -11442,6 +11554,7 @@ snapshots: jest-message-util: 29.7.0 jest-util: 29.7.0 slash: 3.0.0 + optional: true '@jest/core@28.1.3(ts-node@10.9.1(@types/node@22.15.21)(typescript@5.7.3))': dependencies: @@ -11512,6 +11625,7 @@ snapshots: - babel-plugin-macros - supports-color - ts-node + optional: true '@jest/environment@28.1.3': dependencies: @@ -11526,6 +11640,7 @@ snapshots: '@jest/types': 29.6.3 '@types/node': 22.15.21 jest-mock: 29.7.0 + optional: true '@jest/expect-utils@28.1.3': dependencies: @@ -11534,6 +11649,7 @@ snapshots: '@jest/expect-utils@29.7.0': dependencies: jest-get-type: 29.6.3 + optional: true '@jest/expect@28.1.3': dependencies: @@ -11548,6 +11664,7 @@ snapshots: jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color + optional: true '@jest/fake-timers@28.1.3': dependencies: @@ -11566,6 +11683,7 @@ snapshots: jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 + optional: true '@jest/globals@28.1.3': dependencies: @@ -11583,6 +11701,7 @@ snapshots: jest-mock: 29.7.0 transitivePeerDependencies: - supports-color + optional: true '@jest/reporters@28.1.3': dependencies: @@ -11642,6 +11761,7 @@ snapshots: v8-to-istanbul: 9.2.0 transitivePeerDependencies: - supports-color + optional: true '@jest/schemas@28.1.3': dependencies: @@ -11662,6 +11782,7 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 callsites: 3.1.0 graceful-fs: 4.2.11 + optional: true '@jest/test-result@28.1.3': dependencies: @@ -11676,6 +11797,7 @@ snapshots: '@jest/types': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 collect-v8-coverage: 1.0.2 + optional: true '@jest/test-sequencer@28.1.3': dependencies: @@ -11690,6 +11812,7 @@ snapshots: graceful-fs: 4.2.11 jest-haste-map: 29.7.0 slash: 3.0.0 + optional: true '@jest/transform@28.1.3': dependencies: @@ -11730,6 +11853,7 @@ snapshots: write-file-atomic: 4.0.2 transitivePeerDependencies: - supports-color + optional: true '@jest/types@28.1.3': dependencies: @@ -11748,6 +11872,7 @@ snapshots: '@types/node': 22.15.21 '@types/yargs': 17.0.32 chalk: 4.1.2 + optional: true '@jridgewell/gen-mapping@0.3.3': dependencies: @@ -11794,7 +11919,7 @@ snapshots: string-argv: 0.3.2 type-detect: 4.0.8 - '@jsenv/eslint-import-resolver@8.4.0': {} + '@jsdevtools/ono@7.1.3': {} '@keyv/serialize@1.0.2': dependencies: @@ -11806,14 +11931,14 @@ snapshots: '@mdn/browser-compat-data@5.6.24': {} - '@microsoft/tsdoc-config@0.16.2': + '@microsoft/tsdoc-config@0.17.1': dependencies: - '@microsoft/tsdoc': 0.14.2 - ajv: 6.12.6 + '@microsoft/tsdoc': 0.15.1 + ajv: 8.12.0 jju: 1.4.0 - resolve: 1.19.0 + resolve: 1.22.8 - '@microsoft/tsdoc@0.14.2': {} + '@microsoft/tsdoc@0.15.1': {} '@napi-rs/wasm-runtime@0.2.10': dependencies: @@ -11828,23 +11953,29 @@ snapshots: '@emnapi/runtime': 1.4.3 '@tybys/wasm-util': 0.9.0 - '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': - dependencies: - eslint-scope: 5.1.1 - '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 + '@nodelib/fs.scandir@4.0.1': + dependencies: + '@nodelib/fs.stat': 4.0.0 + run-parallel: 1.2.0 + '@nodelib/fs.stat@2.0.5': {} + '@nodelib/fs.stat@4.0.0': {} + '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 - '@nolyfill/is-core-module@1.0.39': {} + '@nodelib/fs.walk@3.0.1': + dependencies: + '@nodelib/fs.scandir': 4.0.1 + fastq: 1.15.0 '@npmcli/config@6.4.0': dependencies: @@ -11977,13 +12108,6 @@ snapshots: '@octokit/core': 5.2.1 '@octokit/types': 12.6.0 - '@octokit/plugin-retry@6.1.0(@octokit/core@5.2.1)': - dependencies: - '@octokit/core': 5.2.1 - '@octokit/request-error': 5.1.1 - '@octokit/types': 13.5.0 - bottleneck: 2.19.5 - '@octokit/plugin-retry@7.1.1(@octokit/core@6.1.2)': dependencies: '@octokit/core': 6.1.2 @@ -11997,12 +12121,6 @@ snapshots: '@octokit/types': 14.0.0 bottleneck: 2.19.5 - '@octokit/plugin-throttling@8.2.0(@octokit/core@5.2.1)': - dependencies: - '@octokit/core': 5.2.1 - '@octokit/types': 12.6.0 - bottleneck: 2.19.5 - '@octokit/plugin-throttling@9.3.1(@octokit/core@6.1.2)': dependencies: '@octokit/core': 6.1.2 @@ -12046,8 +12164,6 @@ snapshots: dependencies: '@octokit/openapi-types': 25.0.0 - '@one-ini/wasm@0.1.1': {} - '@oxc-parser/binding-darwin-arm64@0.44.0': optional: true @@ -12170,11 +12286,6 @@ snapshots: '@oxc-resolver/binding-win32-x64-msvc@4.2.0': optional: true - '@phenomnomnominal/tsquery@5.0.1(typescript@5.8.3)': - dependencies: - esquery: 1.6.0 - typescript: 5.8.3 - '@pkgjs/parseargs@0.11.0': optional: true @@ -12458,19 +12569,6 @@ snapshots: dependencies: stylelint: 16.12.0(typescript@5.8.3) - '@rushstack/eslint-patch@1.11.0': {} - - '@rushstack/eslint-plugin-security@0.7.1(eslint@8.57.1)(typescript@5.8.3)': - dependencies: - '@rushstack/tree-pattern': 0.3.1 - '@typescript-eslint/experimental-utils': 5.59.11(eslint@8.57.1)(typescript@5.8.3) - eslint: 8.57.1 - transitivePeerDependencies: - - supports-color - - typescript - - '@rushstack/tree-pattern@0.3.1': {} - '@sec-ant/readable-stream@0.4.1': {} '@secretlint/config-creator@8.2.4': @@ -12602,14 +12700,6 @@ snapshots: '@secretlint/types@9.3.3': {} - '@semantic-release/changelog@6.0.3(semantic-release@22.0.12(typescript@5.8.3))': - dependencies: - '@semantic-release/error': 3.0.0 - aggregate-error: 3.1.0 - fs-extra: 11.1.1 - lodash: 4.17.21 - semantic-release: 22.0.12(typescript@5.8.3) - '@semantic-release/changelog@6.0.3(semantic-release@24.2.5(typescript@5.7.3))': dependencies: '@semantic-release/error': 3.0.0 @@ -12626,19 +12716,6 @@ snapshots: lodash: 4.17.21 semantic-release: 24.2.5(typescript@5.8.3) - '@semantic-release/commit-analyzer@11.1.0(semantic-release@22.0.12(typescript@5.8.3))': - dependencies: - conventional-changelog-angular: 7.0.0 - conventional-commits-filter: 4.0.0 - conventional-commits-parser: 5.0.0 - debug: 4.4.1 - import-from-esm: 1.3.3 - lodash-es: 4.17.21 - micromatch: 4.0.8 - semantic-release: 22.0.12(typescript@5.8.3) - transitivePeerDependencies: - - supports-color - '@semantic-release/commit-analyzer@13.0.0(semantic-release@24.2.5(typescript@5.7.3))': dependencies: conventional-changelog-angular: 8.0.0 @@ -12699,18 +12776,6 @@ snapshots: '@semantic-release/error@4.0.0': {} - '@semantic-release/exec@6.0.3(semantic-release@22.0.12(typescript@5.8.3))': - dependencies: - '@semantic-release/error': 3.0.0 - aggregate-error: 3.1.0 - debug: 4.4.0 - execa: 5.1.1 - lodash: 4.17.21 - parse-json: 5.2.0 - semantic-release: 22.0.12(typescript@5.8.3) - transitivePeerDependencies: - - supports-color - '@semantic-release/exec@6.0.3(semantic-release@24.2.5(typescript@5.7.3))': dependencies: '@semantic-release/error': 3.0.0 @@ -12735,17 +12800,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@semantic-release/git@10.0.1(semantic-release@22.0.12(typescript@5.8.3))': + '@semantic-release/exec@7.1.0(semantic-release@24.2.5(typescript@5.8.3))': dependencies: - '@semantic-release/error': 3.0.0 + '@semantic-release/error': 4.0.0 aggregate-error: 3.1.0 - debug: 4.4.0 - dir-glob: 3.0.1 - execa: 5.1.1 - lodash: 4.17.21 - micromatch: 4.0.8 - p-reduce: 2.1.0 - semantic-release: 22.0.12(typescript@5.8.3) + debug: 4.4.1 + execa: 9.5.3 + lodash-es: 4.17.21 + parse-json: 8.1.0 + semantic-release: 24.2.5(typescript@5.8.3) transitivePeerDependencies: - supports-color @@ -12865,45 +12928,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@semantic-release/github@9.2.6(semantic-release@22.0.12(typescript@5.8.3))': - dependencies: - '@octokit/core': 5.2.1 - '@octokit/plugin-paginate-rest': 12.0.0(@octokit/core@5.2.1) - '@octokit/plugin-retry': 6.1.0(@octokit/core@5.2.1) - '@octokit/plugin-throttling': 8.2.0(@octokit/core@5.2.1) - '@semantic-release/error': 4.0.0 - aggregate-error: 5.0.0 - debug: 4.4.1 - dir-glob: 3.0.1 - globby: 14.1.0 - http-proxy-agent: 7.0.0 - https-proxy-agent: 7.0.2 - issue-parser: 6.0.0 - lodash-es: 4.17.21 - mime: 4.0.1 - p-filter: 4.1.0 - semantic-release: 22.0.12(typescript@5.8.3) - url-join: 5.0.0 - transitivePeerDependencies: - - supports-color - - '@semantic-release/npm@11.0.3(semantic-release@22.0.12(typescript@5.8.3))': - dependencies: - '@semantic-release/error': 4.0.0 - aggregate-error: 5.0.0 - execa: 8.0.1 - fs-extra: 11.1.1 - lodash-es: 4.17.21 - nerf-dart: 1.0.0 - normalize-url: 8.0.1 - npm: 10.8.2 - rc: 1.2.8 - read-pkg: 9.0.1 - registry-auth-token: 5.0.3 - semantic-release: 22.0.12(typescript@5.8.3) - semver: 7.7.2 - tempy: 3.1.0 - '@semantic-release/npm@12.0.1(semantic-release@24.2.5(typescript@5.7.3))': dependencies: '@semantic-release/error': 4.0.0 @@ -12938,22 +12962,6 @@ snapshots: semver: 7.7.2 tempy: 3.1.0 - '@semantic-release/release-notes-generator@12.1.0(semantic-release@22.0.12(typescript@5.8.3))': - dependencies: - conventional-changelog-angular: 7.0.0 - conventional-changelog-writer: 7.0.1 - conventional-commits-filter: 4.0.0 - conventional-commits-parser: 5.0.0 - debug: 4.4.1 - get-stream: 7.0.1 - import-from-esm: 1.3.3 - into-stream: 7.0.0 - lodash-es: 4.17.21 - read-pkg-up: 11.0.0 - semantic-release: 22.0.12(typescript@5.8.3) - transitivePeerDependencies: - - supports-color - '@semantic-release/release-notes-generator@14.0.1(semantic-release@24.2.5(typescript@5.7.3))': dependencies: conventional-changelog-angular: 8.0.0 @@ -13043,37 +13051,78 @@ snapshots: '@sinonjs/commons@3.0.0': dependencies: type-detect: 4.0.8 + optional: true '@sinonjs/fake-timers@10.3.0': dependencies: '@sinonjs/commons': 3.0.0 + optional: true '@sinonjs/fake-timers@9.1.2': dependencies: '@sinonjs/commons': 1.8.6 - '@storybook/csf@0.0.1': + '@storybook/csf@0.1.13': dependencies: - lodash: 4.17.21 + type-fest: 2.19.0 + + '@stylistic/eslint-plugin-migrate@4.4.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-stylistic/metadata': 4.4.0 + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + transitivePeerDependencies: + - eslint + - supports-color + - typescript + + '@stylistic/eslint-plugin-ts@4.4.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@stylistic/eslint-plugin@4.4.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + estraverse: 5.3.0 + picomatch: 4.0.2 + transitivePeerDependencies: + - supports-color + - typescript '@szmarczak/http-timer@5.0.1': dependencies: defer-to-connect: 2.0.1 - '@tanstack/eslint-plugin-query@5.74.7(eslint@8.57.1)(typescript@5.8.3)': + '@tanstack/eslint-plugin-query@5.74.7(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + transitivePeerDependencies: + - supports-color + - typescript + + '@tanstack/eslint-plugin-router@1.115.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@typescript-eslint/utils': 8.32.1(eslint@8.57.1)(typescript@5.8.3) - eslint: 8.57.1 + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) transitivePeerDependencies: - supports-color - typescript - '@testing-library/dom@9.3.4': + '@testing-library/dom@10.4.0': dependencies: '@babel/code-frame': 7.27.1 '@babel/runtime': 7.27.1 '@types/aria-query': 5.0.4 - aria-query: 5.1.3 + aria-query: 5.3.0 chalk: 4.1.2 dom-accessibility-api: 0.5.16 lz-string: 1.5.0 @@ -13425,8 +13474,6 @@ snapshots: '@textlint/utils@14.7.2': {} - '@total-typescript/ts-reset@0.5.1': {} - '@total-typescript/ts-reset@0.6.1': {} '@tsconfig/node10@1.0.9': @@ -13490,7 +13537,15 @@ snapshots: dependencies: '@types/ms': 0.7.34 - '@types/eslint@8.56.12': + '@types/eslint-plugin-jsx-a11y@6.10.0': + dependencies: + '@types/eslint': 9.6.1 + + '@types/eslint-plugin-tailwindcss@3.17.0': + dependencies: + '@types/eslint': 9.6.1 + + '@types/eslint@9.6.1': dependencies: '@types/estree': 1.0.6 '@types/json-schema': 7.0.15 @@ -13536,6 +13591,10 @@ snapshots: dependencies: '@types/unist': 2.0.10 + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 2.0.10 + '@types/minimatch@3.0.5': {} '@types/minimist@1.2.5': {} @@ -13573,21 +13632,23 @@ snapshots: '@types/unist@2.0.10': {} + '@types/unist@3.0.3': {} + '@types/yargs-parser@21.0.3': {} '@types/yargs@17.0.32': dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/parser': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) '@typescript-eslint/scope-manager': 8.32.1 - '@typescript-eslint/type-utils': 8.32.1(eslint@8.57.1)(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.32.1 - eslint: 8.57.1 + eslint: 9.27.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 7.0.4 natural-compare: 1.4.0 @@ -13596,49 +13657,23 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/experimental-utils@5.59.11(eslint@8.57.1)(typescript@5.8.3)': + '@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@typescript-eslint/utils': 5.59.11(eslint@8.57.1)(typescript@5.8.3) - eslint: 8.57.1 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/experimental-utils@5.62.0(eslint@8.57.1)(typescript@5.8.3)': - dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.8.3) - eslint: 8.57.1 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3)': - dependencies: - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 6.21.0 + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.32.1 debug: 4.4.1 - eslint: 8.57.1 - optionalDependencies: + eslint: 9.27.0(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@5.59.11': - dependencies: - '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/visitor-keys': 5.59.11 - '@typescript-eslint/scope-manager@5.62.0': dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - - '@typescript-eslint/scope-manager@6.21.0': - dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 + optional: true '@typescript-eslint/scope-manager@7.16.1': dependencies: @@ -13650,41 +13685,24 @@ snapshots: '@typescript-eslint/types': 8.32.1 '@typescript-eslint/visitor-keys': 8.32.1 - '@typescript-eslint/type-utils@8.32.1(eslint@8.57.1)(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) debug: 4.4.1 - eslint: 8.57.1 + eslint: 9.27.0(jiti@2.4.2) ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@5.59.11': {} - - '@typescript-eslint/types@5.62.0': {} - - '@typescript-eslint/types@6.21.0': {} + '@typescript-eslint/types@5.62.0': + optional: true '@typescript-eslint/types@7.16.1': {} '@typescript-eslint/types@8.32.1': {} - '@typescript-eslint/typescript-estree@5.59.11(typescript@5.8.3)': - dependencies: - '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/visitor-keys': 5.59.11 - debug: 4.4.1 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.7.2 - tsutils: 3.21.0(typescript@5.8.3) - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/typescript-estree@5.62.0(typescript@5.8.3)': dependencies: '@typescript-eslint/types': 5.62.0 @@ -13698,21 +13716,7 @@ snapshots: typescript: 5.8.3 transitivePeerDependencies: - supports-color - - '@typescript-eslint/typescript-estree@6.21.0(typescript@5.8.3)': - dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.4.1 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.3 - semver: 7.7.2 - ts-api-utils: 1.3.0(typescript@5.8.3) - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color + optional: true '@typescript-eslint/typescript-estree@7.16.1(typescript@5.8.3)': dependencies: @@ -13743,86 +13747,49 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@5.59.11(eslint@8.57.1)(typescript@5.8.3)': - dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) - '@types/json-schema': 7.0.15 - '@types/semver': 7.7.0 - '@typescript-eslint/scope-manager': 5.59.11 - '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.8.3) - eslint: 8.57.1 - eslint-scope: 5.1.1 - semver: 7.7.2 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@5.8.3)': + '@typescript-eslint/utils@5.62.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) '@types/json-schema': 7.0.15 '@types/semver': 7.7.0 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.8.3) - eslint: 8.57.1 + eslint: 9.27.0(jiti@2.4.2) eslint-scope: 5.1.1 semver: 7.7.2 transitivePeerDependencies: - supports-color - typescript + optional: true - '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.8.3)': - dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) - '@types/json-schema': 7.0.15 - '@types/semver': 7.7.0 - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.8.3) - eslint: 8.57.1 - semver: 7.7.2 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/utils@7.16.1(eslint@8.57.1)(typescript@5.8.3)': + '@typescript-eslint/utils@7.16.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) '@typescript-eslint/scope-manager': 7.16.1 '@typescript-eslint/types': 7.16.1 '@typescript-eslint/typescript-estree': 7.16.1(typescript@5.8.3) - eslint: 8.57.1 + eslint: 9.27.0(jiti@2.4.2) transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@8.32.1(eslint@8.57.1)(typescript@5.8.3)': + '@typescript-eslint/utils@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) '@typescript-eslint/scope-manager': 8.32.1 '@typescript-eslint/types': 8.32.1 '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) - eslint: 8.57.1 + eslint: 9.27.0(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@5.59.11': - dependencies: - '@typescript-eslint/types': 5.59.11 - eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@5.62.0': dependencies: '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.3 - - '@typescript-eslint/visitor-keys@6.21.0': - dependencies: - '@typescript-eslint/types': 6.21.0 - eslint-visitor-keys: 3.4.3 + optional: true '@typescript-eslint/visitor-keys@7.16.1': dependencies: @@ -13836,6 +13803,31 @@ snapshots: '@ungap/structured-clone@1.2.0': {} + '@unocss/config@66.1.2': + dependencies: + '@unocss/core': 66.1.2 + unconfig: 7.3.2 + + '@unocss/core@66.1.2': {} + + '@unocss/eslint-plugin@66.1.2(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@unocss/config': 66.1.2 + '@unocss/core': 66.1.2 + '@unocss/rule-utils': 66.1.2 + magic-string: 0.30.17 + synckit: 0.9.2 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + + '@unocss/rule-utils@66.1.2': + dependencies: + '@unocss/core': 66.1.2 + magic-string: 0.30.17 + '@unrs/resolver-binding-darwin-arm64@1.7.2': optional: true @@ -14249,6 +14241,15 @@ snapshots: transitivePeerDependencies: - yaml + '@visulima/tsconfig@1.1.16(yaml@2.8.0)': + dependencies: + '@visulima/fs': 3.1.2(yaml@2.8.0) + '@visulima/path': 1.3.5 + jsonc-parser: 3.3.1 + resolve-pkg-maps: 1.0.0 + transitivePeerDependencies: + - yaml + '@visulima/tsconfig@1.1.4': dependencies: '@visulima/fs': 2.3.3 @@ -14292,11 +14293,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/expect@1.6.1': + '@vitest/eslint-plugin@1.2.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)(vitest@3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(jiti@2.4.2)(tsx@4.19.4)(yaml@2.8.0))': dependencies: - '@vitest/spy': 1.6.1 - '@vitest/utils': 1.6.1 - chai: 4.5.0 + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + optionalDependencies: + typescript: 5.8.3 + vitest: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(jiti@2.4.2)(tsx@4.19.4)(yaml@2.8.0) + transitivePeerDependencies: + - supports-color '@vitest/expect@3.1.4': dependencies: @@ -14317,44 +14322,21 @@ snapshots: dependencies: tinyrainbow: 2.0.0 - '@vitest/runner@1.6.1': - dependencies: - '@vitest/utils': 1.6.1 - p-limit: 5.0.0 - pathe: 1.1.2 - '@vitest/runner@3.1.4': dependencies: '@vitest/utils': 3.1.4 pathe: 2.0.3 - '@vitest/snapshot@1.6.1': - dependencies: - magic-string: 0.30.17 - pathe: 1.1.2 - pretty-format: 29.7.0 - '@vitest/snapshot@3.1.4': dependencies: '@vitest/pretty-format': 3.1.4 magic-string: 0.30.17 pathe: 2.0.3 - '@vitest/spy@1.6.1': - dependencies: - tinyspy: 2.2.1 - '@vitest/spy@3.1.4': dependencies: tinyspy: 3.0.2 - '@vitest/utils@1.6.1': - dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 - '@vitest/utils@3.1.4': dependencies: '@vitest/pretty-format': 3.1.4 @@ -14390,6 +14372,7 @@ snapshots: acorn-walk@8.3.4: dependencies: acorn: 8.14.0 + optional: true acorn@8.11.2: {} @@ -14470,8 +14453,6 @@ snapshots: dependencies: type-fest: 0.21.3 - ansi-escapes@6.2.1: {} - ansi-escapes@7.0.0: dependencies: environment: 1.1.0 @@ -14494,7 +14475,7 @@ snapshots: ansi-styles@6.2.1: {} - ansicolors@0.3.2: {} + ansis@3.17.0: {} ansis@4.0.0: {} @@ -14520,9 +14501,9 @@ snapshots: argv-formatter@1.0.0: {} - aria-query@5.1.3: + aria-query@5.3.0: dependencies: - deep-equal: 2.2.3 + dequal: 2.0.3 aria-query@5.3.2: {} @@ -14608,8 +14589,6 @@ snapshots: arrify@2.0.1: {} - assertion-error@1.1.0: {} - assertion-error@2.0.1: {} assign-symbols@1.0.0: {} @@ -14640,13 +14619,11 @@ snapshots: semver: 7.7.2 transitivePeerDependencies: - supports-color - optional: true astrojs-compiler-sync@1.0.1(@astrojs/compiler@2.10.3): dependencies: '@astrojs/compiler': 2.10.3 synckit: 0.9.2 - optional: true asynckit@0.4.0: {} @@ -14705,6 +14682,7 @@ snapshots: slash: 3.0.0 transitivePeerDependencies: - supports-color + optional: true babel-plugin-istanbul@6.1.1: dependencies: @@ -14729,6 +14707,7 @@ snapshots: '@babel/types': 7.27.1 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.4 + optional: true babel-plugin-macros@3.1.0: dependencies: @@ -14764,6 +14743,7 @@ snapshots: '@babel/core': 7.26.0 babel-plugin-jest-hoist: 29.6.3 babel-preset-current-node-syntax: 1.0.1(@babel/core@7.26.0) + optional: true bail@1.0.5: {} @@ -14783,6 +14763,8 @@ snapshots: binaryextensions@4.19.0: {} + birecord@0.1.1: {} + bl@4.1.0: dependencies: buffer: 5.7.1 @@ -14862,15 +14844,19 @@ snapshots: builtin-modules@3.3.0: {} - builtins@5.1.0: + builtin-modules@5.0.0: {} + + bundle-name@4.1.0: dependencies: - semver: 7.7.2 + run-applescript: 7.0.0 bundle-require@5.1.0(esbuild@0.25.4): dependencies: esbuild: 0.25.4 load-tsconfig: 0.2.5 + bytes@3.1.2: {} + cac@6.7.14: {} cacheable-lookup@7.0.0: {} @@ -14941,25 +14927,10 @@ snapshots: caniuse-lite@1.0.30001692: {} - cardinal@2.1.1: - dependencies: - ansicolors: 0.3.2 - redeyed: 2.1.1 - ccount@1.1.0: {} ccount@2.0.1: {} - chai@4.5.0: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.4 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.1.0 - chai@5.2.0: dependencies: assertion-error: 2.0.1 @@ -15001,10 +14972,6 @@ snapshots: charenc@0.0.2: {} - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 - check-error@2.1.1: {} chokidar@3.6.0: @@ -15031,6 +14998,8 @@ snapshots: ci-info@4.1.0: {} + ci-info@4.2.0: {} + cities-list@1.0.3: {} cjs-module-lexer@1.2.3: {} @@ -15134,8 +15103,6 @@ snapshots: lodash.camelcase: 4.3.0 typical: 7.2.0 - commander@10.0.1: {} - commander@12.1.0: {} commander@13.1.0: {} @@ -15174,6 +15141,8 @@ snapshots: array-ify: 1.0.0 dot-prop: 5.3.0 + compare-versions@6.1.1: {} + concat-map@0.0.1: {} concat-stream@1.6.2: @@ -15207,8 +15176,6 @@ snapshots: confusing-browser-globals@1.0.11: {} - consola@3.4.2: {} - conventional-changelog-angular@7.0.0: dependencies: compare-func: 2.0.0 @@ -15229,15 +15196,6 @@ snapshots: dependencies: compare-func: 2.0.0 - conventional-changelog-writer@7.0.1: - dependencies: - conventional-commits-filter: 4.0.0 - handlebars: 4.7.8 - json-stringify-safe: 5.0.1 - meow: 12.1.1 - semver: 7.7.2 - split2: 4.2.0 - conventional-changelog-writer@8.0.0: dependencies: '@types/semver': 7.7.0 @@ -15248,8 +15206,6 @@ snapshots: conventional-commit-types@3.0.0: {} - conventional-commits-filter@4.0.0: {} - conventional-commits-filter@5.0.0: {} conventional-commits-parser@5.0.0: @@ -15269,6 +15225,12 @@ snapshots: convert-source-map@2.0.0: {} + cookie-es@1.2.2: {} + + core-js-compat@3.42.0: + dependencies: + browserslist: 4.24.4 + core-util-is@1.0.3: {} cosmiconfig-typescript-loader@5.0.0(@types/node@18.19.70)(cosmiconfig@8.3.6(typescript@5.8.3))(typescript@5.8.3): @@ -15303,6 +15265,7 @@ snapshots: path-type: 4.0.0 optionalDependencies: typescript: 5.8.3 + optional: true cosmiconfig@9.0.0(typescript@5.7.3): dependencies: @@ -15336,6 +15299,7 @@ snapshots: - babel-plugin-macros - supports-color - ts-node + optional: true create-require@1.1.1: optional: true @@ -15350,6 +15314,10 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + crossws@0.3.5: + dependencies: + uncrypto: 0.1.3 + crypt@0.0.2: {} crypto-random-string@4.0.0: @@ -15457,10 +15425,7 @@ snapshots: dedent@1.5.1(babel-plugin-macros@3.1.0): optionalDependencies: babel-plugin-macros: 3.1.0 - - deep-eql@4.1.4: - dependencies: - type-detect: 4.1.0 + optional: true deep-eql@5.0.2: {} @@ -15473,33 +15438,19 @@ snapshots: object-keys: 1.1.1 regexp.prototype.flags: 1.5.3 - deep-equal@2.2.3: - dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.8 - es-get-iterator: 1.1.3 - get-intrinsic: 1.3.0 - is-arguments: 1.1.1 - is-array-buffer: 3.0.4 - is-date-object: 1.1.0 - is-regex: 1.2.1 - is-shared-array-buffer: 1.0.3 - isarray: 2.0.5 - object-is: 1.1.5 - object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.3 - side-channel: 1.1.0 - which-boxed-primitive: 1.1.1 - which-collection: 1.0.2 - which-typed-array: 1.1.16 - deep-extend@0.6.0: {} deep-is@0.1.4: {} deepmerge@4.3.1: {} + default-browser-id@5.0.0: {} + + default-browser@5.2.1: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.0 + defaults@1.0.4: dependencies: clone: 1.0.4 @@ -15520,6 +15471,8 @@ snapshots: define-lazy-prop@2.0.0: {} + define-lazy-prop@3.0.0: {} + define-properties@1.2.1: dependencies: define-data-property: 1.1.1 @@ -15551,6 +15504,10 @@ snapshots: detect-newline@4.0.1: {} + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + didyoumean@1.2.2: {} diff-sequences@28.1.1: {} @@ -15648,18 +15605,12 @@ snapshots: eastasianwidth@0.2.0: {} - editorconfig@1.0.4: - dependencies: - '@one-ini/wasm': 0.1.1 - commander: 10.0.1 - minimatch: 9.0.1 - semver: 7.7.2 - electron-to-chromium@1.5.80: {} emittery@0.10.2: {} - emittery@0.13.1: {} + emittery@0.13.1: + optional: true emoji-regex@10.3.0: {} @@ -15692,9 +15643,10 @@ snapshots: english-article-classifier@1.0.1: {} - enhance-visitors@1.0.0: + enhanced-resolve@5.18.1: dependencies: - lodash: 4.17.21 + graceful-fs: 4.2.11 + tapable: 2.2.2 enquirer@2.3.6: dependencies: @@ -15702,13 +15654,7 @@ snapshots: entities@4.5.0: {} - entities@6.0.0: - optional: true - - env-ci@10.0.0: - dependencies: - execa: 8.0.1 - java-properties: 1.0.2 + entities@6.0.0: {} env-ci@11.0.0: dependencies: @@ -15778,19 +15724,7 @@ snapshots: es-errors@1.3.0: {} - es-get-iterator@1.1.3: - dependencies: - call-bind: 1.0.8 - get-intrinsic: 1.3.0 - has-symbols: 1.1.0 - is-arguments: 1.1.1 - is-map: 2.0.3 - is-set: 2.0.3 - is-string: 1.1.1 - isarray: 2.0.5 - stop-iteration-iterator: 1.1.0 - - es-html-parser@0.0.9: {} + es-html-parser@0.2.0: {} es-iterator-helpers@1.2.1: dependencies: @@ -15877,40 +15811,36 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-compat-utils@0.1.2(eslint@8.57.1): + eslint-compat-utils@0.5.1(eslint@9.27.0(jiti@2.4.2)): dependencies: - eslint: 8.57.1 + eslint: 9.27.0(jiti@2.4.2) + semver: 7.7.2 - eslint-compat-utils@0.5.1(eslint@8.57.1): + eslint-compat-utils@0.6.4(eslint@9.27.0(jiti@2.4.2)): dependencies: - eslint: 8.57.1 + eslint: 9.27.0(jiti@2.4.2) semver: 7.7.2 - eslint-compat-utils@0.6.4(eslint@8.57.1): + eslint-config-flat-gitignore@2.1.0(eslint@9.27.0(jiti@2.4.2)): dependencies: - eslint: 8.57.1 - semver: 7.7.2 + '@eslint/compat': 1.2.9(eslint@9.27.0(jiti@2.4.2)) + eslint: 9.27.0(jiti@2.4.2) - eslint-define-config@1.24.1: {} + eslint-flat-config-utils@2.1.0: + dependencies: + pathe: 2.0.3 - eslint-etc@5.2.1(eslint@8.57.1)(typescript@5.8.3): + eslint-formatting-reporter@0.0.0(eslint@9.27.0(jiti@2.4.2)): dependencies: - '@typescript-eslint/experimental-utils': 5.62.0(eslint@8.57.1)(typescript@5.8.3) - eslint: 8.57.1 - tsutils: 3.21.0(typescript@5.8.3) - tsutils-etc: 1.4.2(tsutils@3.21.0(typescript@5.8.3))(typescript@5.8.3) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color + eslint: 9.27.0(jiti@2.4.2) + prettier-linter-helpers: 1.0.0 - eslint-find-rules@4.2.0(eslint@8.57.1): + eslint-import-context@0.1.5(unrs-resolver@1.7.2): dependencies: - cliui: 7.0.4 - eslint: 8.57.1 - eslint-rule-documentation: 1.0.23 - glob: 7.2.3 - window-size: 0.3.0 - yargs: 16.2.0 + get-tsconfig: 4.10.1 + stable-hash: 0.0.5 + optionalDependencies: + unrs-resolver: 1.7.2 eslint-import-resolver-node@0.3.9: dependencies: @@ -15920,171 +15850,111 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.12.2(eslint@8.57.1)(typescript@5.8.3))(eslint-plugin-import@2.29.0)(eslint@8.57.1): + eslint-import-resolver-typescript@4.4.1(eslint-plugin-import-x@4.12.2(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.29.0)(eslint@9.27.0(jiti@2.4.2)): dependencies: - '@nolyfill/is-core-module': 1.0.39 debug: 4.4.1 - eslint: 8.57.1 + eslint: 9.27.0(jiti@2.4.2) + eslint-import-context: 0.1.5(unrs-resolver@1.7.2) get-tsconfig: 4.10.1 is-bun-module: 2.0.0 stable-hash: 0.0.5 - tinyglobby: 0.2.13 + tinyglobby: 0.2.14 unrs-resolver: 1.7.2 optionalDependencies: - eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) - eslint-plugin-import-x: 4.12.2(eslint@8.57.1)(typescript@5.8.3) + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.4.1)(eslint@9.27.0(jiti@2.4.2)) + eslint-plugin-import-x: 4.12.2(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) transitivePeerDependencies: - supports-color - eslint-json-compat-utils@0.2.1(eslint@8.57.1)(jsonc-eslint-parser@2.4.0): + eslint-json-compat-utils@0.2.1(eslint@9.27.0(jiti@2.4.2))(jsonc-eslint-parser@2.4.0): dependencies: - eslint: 8.57.1 + eslint: 9.27.0(jiti@2.4.2) esquery: 1.6.0 jsonc-eslint-parser: 2.4.0 - eslint-mdx@2.3.4(eslint@8.57.1): + eslint-merge-processors@2.0.0(eslint@9.27.0(jiti@2.4.2)): dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) - eslint: 8.57.1 - espree: 9.6.1 - estree-util-visit: 1.2.1 - remark-mdx: 2.3.0 - remark-parse: 10.0.2 - remark-stringify: 10.0.3 - synckit: 0.9.2 - tslib: 2.8.1 - unified: 10.1.2 - unified-engine: 10.1.0 - unist-util-visit: 4.1.2 - uvu: 0.5.6 - vfile: 5.3.7 - transitivePeerDependencies: - - supports-color + eslint: 9.27.0(jiti@2.4.2) - eslint-module-utils@2.8.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): + eslint-module-utils@2.8.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.1)(eslint@9.27.0(jiti@2.4.2)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.8.3) - eslint: 8.57.1 + '@typescript-eslint/parser': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.12.2(eslint@8.57.1)(typescript@5.8.3))(eslint-plugin-import@2.29.0)(eslint@8.57.1) + eslint-import-resolver-typescript: 4.4.1(eslint-plugin-import-x@4.12.2(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.29.0)(eslint@9.27.0(jiti@2.4.2)) transitivePeerDependencies: - supports-color + optional: true - eslint-plugin-antfu@1.0.13(eslint@8.57.1): - dependencies: - eslint: 8.57.1 + eslint-parser-plain@0.1.1: {} - eslint-plugin-array-func@4.0.0(eslint@8.57.1): + eslint-plugin-antfu@3.1.1(eslint@9.27.0(jiti@2.4.2)): dependencies: - eslint: 8.57.1 - - eslint-plugin-ava@14.0.0(eslint@8.57.1): - dependencies: - enhance-visitors: 1.0.0 - eslint: 8.57.1 - eslint-utils: 3.0.0(eslint@8.57.1) - espree: 9.6.1 - espurify: 2.1.1 - import-modules: 2.1.0 - micro-spelling-correcter: 1.1.1 - pkg-dir: 5.0.0 - resolve-from: 5.0.0 + eslint: 9.27.0(jiti@2.4.2) - eslint-plugin-babel@5.3.1(eslint@8.57.1): + eslint-plugin-astro@1.3.1(eslint@9.27.0(jiti@2.4.2)): dependencies: - eslint: 8.57.1 - eslint-rule-composer: 0.3.0 + '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) + '@jridgewell/sourcemap-codec': 1.5.0 + '@typescript-eslint/types': 8.32.1 + astro-eslint-parser: 1.2.2 + eslint: 9.27.0(jiti@2.4.2) + eslint-compat-utils: 0.6.4(eslint@9.27.0(jiti@2.4.2)) + globals: 15.15.0 + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + transitivePeerDependencies: + - supports-color - eslint-plugin-compat@4.2.0(eslint@8.57.1): + eslint-plugin-compat@6.0.2(eslint@9.27.0(jiti@2.4.2)): dependencies: '@mdn/browser-compat-data': 5.6.24 ast-metadata-inferer: 0.8.1 browserslist: 4.24.4 caniuse-lite: 1.0.30001692 - eslint: 8.57.1 + eslint: 9.27.0(jiti@2.4.2) find-up: 5.0.0 + globals: 15.15.0 lodash.memoize: 4.1.2 semver: 7.7.2 - eslint-plugin-cypress@2.15.2(eslint@8.57.1): + eslint-plugin-es-x@7.8.0(eslint@9.27.0(jiti@2.4.2)): dependencies: - eslint: 8.57.1 - globals: 13.24.0 - - eslint-plugin-deprecation@2.0.0(eslint@8.57.1)(typescript@5.8.3): - dependencies: - '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.8.3) - eslint: 8.57.1 - tslib: 2.8.1 - tsutils: 3.21.0(typescript@5.8.3) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - eslint-plugin-editorconfig@4.0.3: - dependencies: - editorconfig: 1.0.4 - eslint: 8.57.1 - klona: 2.0.6 - transitivePeerDependencies: - - supports-color - - eslint-plugin-es-x@7.8.0(eslint@8.57.1): - dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 - eslint: 8.57.1 - eslint-compat-utils: 0.5.1(eslint@8.57.1) - - eslint-plugin-eslint-comments@3.2.0(eslint@8.57.1): - dependencies: - escape-string-regexp: 1.0.5 - eslint: 8.57.1 - ignore: 5.3.2 + eslint: 9.27.0(jiti@2.4.2) + eslint-compat-utils: 0.5.1(eslint@9.27.0(jiti@2.4.2)) - eslint-plugin-etc@2.0.3(eslint@8.57.1)(typescript@5.8.3): + eslint-plugin-es-x@8.6.2(eslint@9.27.0(jiti@2.4.2)): dependencies: - '@phenomnomnominal/tsquery': 5.0.1(typescript@5.8.3) - '@typescript-eslint/experimental-utils': 5.62.0(eslint@8.57.1)(typescript@5.8.3) - eslint: 8.57.1 - eslint-etc: 5.2.1(eslint@8.57.1)(typescript@5.8.3) - requireindex: 1.2.0 - tslib: 2.8.1 - tsutils: 3.21.0(typescript@5.8.3) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color + '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + eslint: 9.27.0(jiti@2.4.2) + eslint-compat-utils: 0.6.4(eslint@9.27.0(jiti@2.4.2)) - eslint-plugin-html@7.1.0: + eslint-plugin-format@1.0.1(eslint@9.27.0(jiti@2.4.2)): dependencies: - htmlparser2: 8.0.2 + '@dprint/formatter': 0.3.0 + '@dprint/markdown': 0.17.8 + '@dprint/toml': 0.6.4 + eslint: 9.27.0(jiti@2.4.2) + eslint-formatting-reporter: 0.0.0(eslint@9.27.0(jiti@2.4.2)) + eslint-parser-plain: 0.1.1 + prettier: 3.5.3 + synckit: 0.9.2 - eslint-plugin-i@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): + eslint-plugin-html@8.1.3: dependencies: - debug: 4.4.1 - doctrine: 3.0.0 - eslint: 8.57.1 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) - get-tsconfig: 4.10.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - semver: 7.7.2 - transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color + htmlparser2: 10.0.0 - eslint-plugin-import-x@4.12.2(eslint@8.57.1)(typescript@5.8.3): + eslint-plugin-import-x@4.12.2(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3): dependencies: - '@typescript-eslint/utils': 8.32.1(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) comment-parser: 1.4.1 debug: 4.4.1 - eslint: 8.57.1 + eslint: 9.27.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 get-tsconfig: 4.10.1 is-glob: 4.0.3 @@ -16096,9 +15966,8 @@ snapshots: transitivePeerDependencies: - supports-color - typescript - optional: true - eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): + eslint-plugin-import@2.29.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.4.1)(eslint@9.27.0(jiti@2.4.2)): dependencies: array-includes: 3.1.8 array.prototype.findlastindex: 1.2.3 @@ -16106,9 +15975,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.57.1 + eslint: 9.27.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.1)(eslint@9.27.0(jiti@2.4.2)) hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -16119,61 +15988,47 @@ snapshots: semver: 6.3.1 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/parser': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color optional: true - eslint-plugin-jest-async@1.0.3: + eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(jest@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@22.15.21)(typescript@5.8.3)))(typescript@5.8.3): dependencies: - requireindex: 1.1.0 - - eslint-plugin-jest-dom@5.5.0(@testing-library/dom@9.3.4)(eslint@8.57.1): - dependencies: - '@babel/runtime': 7.27.1 - eslint: 8.57.1 - requireindex: 1.2.0 - optionalDependencies: - '@testing-library/dom': 9.3.4 - - eslint-plugin-jest-formatting@3.1.0(eslint@8.57.1): - dependencies: - eslint: 8.57.1 - - eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(jest@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@22.15.21)(typescript@5.8.3)))(typescript@5.8.3): - dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.8.3) - eslint: 8.57.1 + '@typescript-eslint/utils': 5.62.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) jest: 29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@22.15.21)(typescript@5.8.3)) transitivePeerDependencies: - supports-color - typescript + optional: true - eslint-plugin-jsdoc@46.10.1(eslint@8.57.1): + eslint-plugin-jsdoc@50.6.17(eslint@9.27.0(jiti@2.4.2)): dependencies: - '@es-joy/jsdoccomment': 0.41.0 + '@es-joy/jsdoccomment': 0.50.2 are-docs-informative: 0.0.2 comment-parser: 1.4.1 debug: 4.4.1 escape-string-regexp: 4.0.0 - eslint: 8.57.1 + eslint: 9.27.0(jiti@2.4.2) + espree: 10.3.0 esquery: 1.6.0 - is-builtin-module: 3.2.1 + parse-imports-exports: 0.2.4 semver: 7.7.2 spdx-expression-parse: 4.0.0 transitivePeerDependencies: - supports-color - eslint-plugin-jsonc@2.20.1(eslint@8.57.1): + eslint-plugin-jsonc@2.20.1(eslint@9.27.0(jiti@2.4.2)): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) - eslint: 8.57.1 - eslint-compat-utils: 0.6.4(eslint@8.57.1) - eslint-json-compat-utils: 0.2.1(eslint@8.57.1)(jsonc-eslint-parser@2.4.0) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) + eslint: 9.27.0(jiti@2.4.2) + eslint-compat-utils: 0.6.4(eslint@9.27.0(jiti@2.4.2)) + eslint-json-compat-utils: 0.2.1(eslint@9.27.0(jiti@2.4.2))(jsonc-eslint-parser@2.4.0) espree: 10.3.0 graphemer: 1.4.0 jsonc-eslint-parser: 2.4.0 @@ -16182,7 +16037,7 @@ snapshots: transitivePeerDependencies: - '@eslint/json' - eslint-plugin-jsx-a11y@6.10.2(eslint@8.57.1): + eslint-plugin-jsx-a11y@6.10.2(eslint@9.27.0(jiti@2.4.2)): dependencies: aria-query: 5.3.2 array-includes: 3.1.8 @@ -16192,7 +16047,7 @@ snapshots: axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.57.1 + eslint: 9.27.0(jiti@2.4.2) hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -16201,101 +16056,190 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 - eslint-plugin-markdown@3.0.1(eslint@8.57.1): + eslint-plugin-n@17.18.0(eslint@9.27.0(jiti@2.4.2)): dependencies: - eslint: 8.57.1 - mdast-util-from-markdown: 0.8.5 - transitivePeerDependencies: - - supports-color + '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) + enhanced-resolve: 5.18.1 + eslint: 9.27.0(jiti@2.4.2) + eslint-plugin-es-x: 7.8.0(eslint@9.27.0(jiti@2.4.2)) + get-tsconfig: 4.10.1 + globals: 15.15.0 + ignore: 5.3.2 + minimatch: 9.0.5 + semver: 7.7.2 - eslint-plugin-mdx@2.3.4(eslint@8.57.1): + eslint-plugin-no-for-of-array@0.1.0(eslint@9.27.0(jiti@2.4.2))(typescript-eslint@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(typescript@5.8.3): dependencies: - eslint: 8.57.1 - eslint-mdx: 2.3.4(eslint@8.57.1) - eslint-plugin-markdown: 3.0.1(eslint@8.57.1) - remark-mdx: 2.3.0 - remark-parse: 10.0.2 - remark-stringify: 10.0.3 - tslib: 2.8.1 - unified: 10.1.2 - vfile: 5.3.7 + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + typescript: 5.8.3 + typescript-eslint: 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) transitivePeerDependencies: - supports-color - eslint-plugin-n@16.6.2(eslint@8.57.1): + eslint-plugin-no-only-tests@3.3.0: {} + + eslint-plugin-no-secrets@2.2.1(eslint@9.27.0(jiti@2.4.2)): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) - builtins: 5.1.0 - eslint: 8.57.1 - eslint-plugin-es-x: 7.8.0(eslint@8.57.1) - get-tsconfig: 4.10.1 - globals: 13.24.0 - ignore: 5.3.2 - is-builtin-module: 3.2.1 - is-core-module: 2.13.1 - minimatch: 3.1.2 - resolve: 1.22.8 - semver: 7.7.2 + eslint: 9.27.0(jiti@2.4.2) - eslint-plugin-no-loops@0.3.0(eslint@8.57.1): + eslint-plugin-no-unsanitized@4.1.2(eslint@9.27.0(jiti@2.4.2)): dependencies: - eslint: 8.57.1 + eslint: 9.27.0(jiti@2.4.2) - eslint-plugin-no-only-tests@3.3.0: {} + eslint-plugin-perfectionist@4.13.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + natural-orderby: 5.0.0 + transitivePeerDependencies: + - supports-color + - typescript - eslint-plugin-no-secrets@0.8.9(eslint@8.57.1): + eslint-plugin-playwright@0.18.0(eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(jest@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@22.15.21)(typescript@5.8.3)))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2)): dependencies: - eslint: 8.57.1 + eslint: 9.27.0(jiti@2.4.2) + globals: 13.24.0 + optionalDependencies: + eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(jest@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@22.15.21)(typescript@5.8.3)))(typescript@5.8.3) - eslint-plugin-no-unsanitized@4.1.2(eslint@8.57.1): + eslint-plugin-promise@7.2.1(eslint@9.27.0(jiti@2.4.2)): dependencies: - eslint: 8.57.1 + '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) + eslint: 9.27.0(jiti@2.4.2) - eslint-plugin-no-use-extend-native@0.5.0: + eslint-plugin-react-debug@1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3): dependencies: - is-get-set-prop: 1.0.0 - is-js-type: 2.0.0 - is-obj-prop: 1.0.0 - is-proto-prop: 2.0.0 + '@eslint-react/ast': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/core': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/eff': 1.50.0 + '@eslint-react/kit': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/shared': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/var': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + string-ts: 2.2.1 + ts-pattern: 5.7.1 + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color - eslint-plugin-perfectionist@2.11.0(astro-eslint-parser@1.2.2)(eslint@8.57.1)(typescript@5.8.3): + eslint-plugin-react-dom@1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3): dependencies: - '@typescript-eslint/utils': 7.16.1(eslint@8.57.1)(typescript@5.8.3) - eslint: 8.57.1 - minimatch: 9.0.5 - natural-compare-lite: 1.4.0 + '@eslint-react/ast': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/core': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/eff': 1.50.0 + '@eslint-react/kit': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/shared': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/var': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + compare-versions: 6.1.1 + eslint: 9.27.0(jiti@2.4.2) + string-ts: 2.2.1 + ts-pattern: 5.7.1 optionalDependencies: - astro-eslint-parser: 1.2.2 + typescript: 5.8.3 transitivePeerDependencies: - supports-color - - typescript - eslint-plugin-playwright@0.18.0(eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(jest@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@22.15.21)(typescript@5.8.3)))(typescript@5.8.3))(eslint@8.57.1): + eslint-plugin-react-hooks-extra@1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3): dependencies: - eslint: 8.57.1 - globals: 13.24.0 + '@eslint-react/ast': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/core': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/eff': 1.50.0 + '@eslint-react/kit': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/shared': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/var': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + string-ts: 2.2.1 + ts-pattern: 5.7.1 optionalDependencies: - eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(jest@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@22.15.21)(typescript@5.8.3)))(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + eslint-plugin-react-hooks@5.2.0(eslint@9.27.0(jiti@2.4.2)): + dependencies: + eslint: 9.27.0(jiti@2.4.2) - eslint-plugin-prefer-object-spread@1.2.1(eslint@8.57.1): + eslint-plugin-react-naming-convention@1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3): dependencies: - eslint: 8.57.1 + '@eslint-react/ast': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/core': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/eff': 1.50.0 + '@eslint-react/kit': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/shared': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/var': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + string-ts: 2.2.1 + ts-pattern: 5.7.1 + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color - eslint-plugin-promise@6.6.0(eslint@8.57.1): + eslint-plugin-react-refresh@0.4.20(eslint@9.27.0(jiti@2.4.2)): dependencies: - eslint: 8.57.1 + eslint: 9.27.0(jiti@2.4.2) - eslint-plugin-react-hooks@4.6.2(eslint@8.57.1): + eslint-plugin-react-web-api@1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3): dependencies: - eslint: 8.57.1 + '@eslint-react/ast': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/core': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/eff': 1.50.0 + '@eslint-react/kit': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/shared': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/var': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + string-ts: 2.2.1 + ts-pattern: 5.7.1 + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color - eslint-plugin-react-redux@4.2.2(eslint-plugin-react@7.37.5(eslint@8.57.1))(eslint@8.57.1): + eslint-plugin-react-x@1.50.0(eslint@9.27.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3): dependencies: - eslint: 8.57.1 - eslint-plugin-react: 7.37.5(eslint@8.57.1) - eslint-rule-composer: 0.3.0 + '@eslint-react/ast': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/core': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/eff': 1.50.0 + '@eslint-react/kit': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/shared': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/var': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + compare-versions: 6.1.1 + eslint: 9.27.0(jiti@2.4.2) + is-immutable-type: 5.0.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + string-ts: 2.2.1 + ts-pattern: 5.7.1 + optionalDependencies: + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color - eslint-plugin-react@7.37.5(eslint@8.57.1): + eslint-plugin-react@7.37.5(eslint@9.27.0(jiti@2.4.2)): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 @@ -16303,7 +16247,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.1 - eslint: 8.57.1 + eslint: 9.27.0(jiti@2.4.2) estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -16317,40 +16261,43 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-regexp@2.7.0(eslint@8.57.1): + eslint-plugin-regexp@2.7.0(eslint@9.27.0(jiti@2.4.2)): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 comment-parser: 1.4.1 - eslint: 8.57.1 + eslint: 9.27.0(jiti@2.4.2) jsdoc-type-pratt-parser: 4.1.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 - eslint-plugin-security@1.7.1: + eslint-plugin-security@3.0.1: dependencies: safe-regex: 2.1.1 - eslint-plugin-simple-import-sort@10.0.0(eslint@8.57.1): - dependencies: - eslint: 8.57.1 - - eslint-plugin-sonarjs@0.22.0(eslint@8.57.1): + eslint-plugin-simple-import-sort@12.1.1(eslint@9.27.0(jiti@2.4.2)): dependencies: - eslint: 8.57.1 + eslint: 9.27.0(jiti@2.4.2) - eslint-plugin-ssr-friendly@1.3.0(eslint@8.57.1): + eslint-plugin-sonarjs@3.0.2(eslint@9.27.0(jiti@2.4.2)): dependencies: - eslint: 8.57.1 - globals: 13.24.0 + '@eslint-community/regexpp': 4.12.1 + builtin-modules: 3.3.0 + bytes: 3.1.2 + eslint: 9.27.0(jiti@2.4.2) + functional-red-black-tree: 1.0.1 + jsx-ast-utils: 3.3.5 + minimatch: 9.0.5 + scslre: 0.3.0 + semver: 7.7.1 + typescript: 5.8.3 - eslint-plugin-storybook@0.6.15(eslint@8.57.1)(typescript@5.8.3): + eslint-plugin-storybook@0.12.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3): dependencies: - '@storybook/csf': 0.0.1 - '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.8.3) - eslint: 8.57.1 - requireindex: 1.2.0 + '@storybook/csf': 0.1.13 + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) ts-dedent: 2.2.0 transitivePeerDependencies: - supports-color @@ -16362,69 +16309,79 @@ snapshots: postcss: 8.5.3 tailwindcss: 3.3.5(ts-node@10.9.1(@types/node@22.15.21)(typescript@5.8.3)) - eslint-plugin-testing-library@6.5.0(eslint@8.57.1)(typescript@5.8.3): + eslint-plugin-testing-library@7.2.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3): dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.8.3) - eslint: 8.57.1 + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-toml@0.6.1(eslint@8.57.1): + eslint-plugin-toml@0.12.0(eslint@9.27.0(jiti@2.4.2)): dependencies: debug: 4.4.1 - eslint: 8.57.1 - eslint-compat-utils: 0.1.2(eslint@8.57.1) + eslint: 9.27.0(jiti@2.4.2) + eslint-compat-utils: 0.6.4(eslint@9.27.0(jiti@2.4.2)) lodash: 4.17.21 - toml-eslint-parser: 0.7.0 + toml-eslint-parser: 0.10.0 transitivePeerDependencies: - supports-color - eslint-plugin-tsdoc@0.2.17: + eslint-plugin-tsdoc@0.4.0: dependencies: - '@microsoft/tsdoc': 0.14.2 - '@microsoft/tsdoc-config': 0.16.2 + '@microsoft/tsdoc': 0.15.1 + '@microsoft/tsdoc-config': 0.17.1 - eslint-plugin-unicorn@49.0.0(eslint@8.57.1): + eslint-plugin-unicorn@59.0.1(eslint@9.27.0(jiti@2.4.2)): dependencies: '@babel/helper-validator-identifier': 7.27.1 - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) - ci-info: 3.9.0 + '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) + '@eslint/plugin-kit': 0.2.8 + ci-info: 4.2.0 clean-regexp: 1.0.0 - eslint: 8.57.1 + core-js-compat: 3.42.0 + eslint: 9.27.0(jiti@2.4.2) esquery: 1.6.0 - indent-string: 4.0.0 - is-builtin-module: 3.2.1 + find-up-simple: 1.0.1 + globals: 16.2.0 + indent-string: 5.0.0 + is-builtin-module: 5.0.0 jsesc: 3.1.0 pluralize: 8.0.0 - read-pkg-up: 7.0.1 regexp-tree: 0.1.27 - regjsparser: 0.10.0 + regjsparser: 0.12.0 semver: 7.7.2 - strip-indent: 3.0.0 + strip-indent: 4.0.0 + + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2)): + dependencies: + eslint: 9.27.0(jiti@2.4.2) + optionalDependencies: + '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - eslint-plugin-validate-jsx-nesting@0.1.1(eslint@8.57.1): + eslint-plugin-validate-jsx-nesting@0.1.1(eslint@9.27.0(jiti@2.4.2)): dependencies: - eslint: 8.57.1 + eslint: 9.27.0(jiti@2.4.2) validate-html-nesting: 1.2.2 - eslint-plugin-vitest@0.3.26(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3)(vitest@1.6.1(@types/node@22.15.21)(jiti@2.4.2)(tsx@4.19.4)(yaml@2.8.0)): + eslint-plugin-vitest@0.5.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)(vitest@3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(jiti@2.4.2)(tsx@4.19.4)(yaml@2.8.0)): dependencies: - '@typescript-eslint/utils': 7.16.1(eslint@8.57.1)(typescript@5.8.3) - eslint: 8.57.1 + '@typescript-eslint/utils': 7.16.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3) - vitest: 1.6.1(@types/node@22.15.21)(jiti@2.4.2)(tsx@4.19.4)(yaml@2.8.0) + '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + vitest: 3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(jiti@2.4.2)(tsx@4.19.4)(yaml@2.8.0) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-yml@1.18.0(eslint@8.57.1): + eslint-plugin-yml@1.18.0(eslint@9.27.0(jiti@2.4.2)): dependencies: debug: 4.4.1 escape-string-regexp: 4.0.0 - eslint: 8.57.1 - eslint-compat-utils: 0.6.4(eslint@8.57.1) + eslint: 9.27.0(jiti@2.4.2) + eslint-compat-utils: 0.6.4(eslint@9.27.0(jiti@2.4.2)) natural-compare: 1.4.0 yaml-eslint-parser: 1.3.0 transitivePeerDependencies: @@ -16434,23 +16391,15 @@ snapshots: dependencies: kebab-case: 1.0.2 - eslint-plugin-you-dont-need-momentjs@1.6.0(eslint@8.57.1): - dependencies: - eslint: 8.57.1 - kebab-case: 1.0.2 - - eslint-plugin-zod@1.4.0(eslint@8.57.1): + eslint-plugin-zod@1.4.0(eslint@9.27.0(jiti@2.4.2)): dependencies: - eslint: 8.57.1 - - eslint-rule-composer@0.3.0: {} - - eslint-rule-documentation@1.0.23: {} + eslint: 9.27.0(jiti@2.4.2) eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 + optional: true eslint-scope@7.2.2: dependencies: @@ -16462,12 +16411,11 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-utils@3.0.0(eslint@8.57.1): + eslint-typegen@2.2.0(eslint@9.27.0(jiti@2.4.2)): dependencies: - eslint: 8.57.1 - eslint-visitor-keys: 2.1.0 - - eslint-visitor-keys@2.1.0: {} + eslint: 9.27.0(jiti@2.4.2) + json-schema-to-typescript-lite: 14.1.0 + ohash: 2.0.11 eslint-visitor-keys@3.4.3: {} @@ -16516,49 +16464,6 @@ snapshots: transitivePeerDependencies: - supports-color - eslint@8.57.1: - dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) - '@eslint-community/regexpp': 4.12.1 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.1 - '@humanwhocodes/config-array': 0.13.0 - '@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.6 - debug: 4.4.1 - 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 - esquery: 1.6.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 - ignore: 5.3.2 - 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 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.3 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - eslint@9.27.0(jiti@2.4.2): dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@9.27.0(jiti@2.4.2)) @@ -16615,8 +16520,6 @@ snapshots: esprima@4.0.1: {} - espurify@2.1.1: {} - esquery@1.5.0: dependencies: estraverse: 5.3.0 @@ -16629,7 +16532,8 @@ snapshots: dependencies: estraverse: 5.3.0 - estraverse@4.3.0: {} + estraverse@4.3.0: + optional: true estraverse@5.3.0: {} @@ -16738,6 +16642,7 @@ snapshots: jest-matcher-utils: 29.7.0 jest-message-util: 29.7.0 jest-util: 29.7.0 + optional: true extend-shallow@3.0.2: dependencies: @@ -16756,6 +16661,8 @@ snapshots: fast-deep-equal@3.1.3: {} + fast-diff@1.3.0: {} + fast-equals@4.0.3: {} fast-glob@3.3.2: @@ -16886,10 +16793,6 @@ snapshots: path-exists: 5.0.0 unicorn-magic: 0.1.0 - find-versions@5.1.0: - dependencies: - semver-regex: 4.0.5 - find-versions@6.0.0: dependencies: semver-regex: 4.0.5 @@ -16902,12 +16805,6 @@ snapshots: micromatch: 4.0.8 resolve-dir: 1.0.1 - fix-dts-default-cjs-exports@1.0.1: - dependencies: - magic-string: 0.30.17 - mlly: 1.7.4 - rollup: 4.34.9 - flat-cache@3.2.0: dependencies: flatted: 3.2.9 @@ -17016,6 +16913,8 @@ snapshots: hasown: 2.0.2 is-callable: 1.2.7 + functional-red-black-tree@1.0.1: {} + functions-have-names@1.2.3: {} fzf@0.5.2: {} @@ -17026,8 +16925,6 @@ snapshots: get-east-asian-width@1.2.0: {} - get-func-name@2.0.2: {} - get-intrinsic@1.2.2: dependencies: function-bind: 1.1.2 @@ -17050,13 +16947,13 @@ snapshots: get-package-type@0.1.0: {} + get-port-please@3.1.2: {} + get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 - get-set-props@0.1.0: {} - get-stream@6.0.1: {} get-stream@7.0.1: {} @@ -17201,6 +17098,10 @@ snapshots: globals@14.0.0: {} + globals@15.15.0: {} + + globals@16.2.0: {} + globalthis@1.0.4: dependencies: define-properties: 1.2.1 @@ -17261,6 +17162,18 @@ snapshots: graphemer@1.4.0: {} + h3@1.15.3: + dependencies: + cookie-es: 1.2.2 + crossws: 0.3.5 + defu: 6.1.4 + destr: 2.0.5 + iron-webcrypto: 1.2.1 + node-mock-http: 1.0.0 + radix3: 1.1.2 + ufo: 1.6.1 + uncrypto: 0.1.3 + handlebars@4.7.8: dependencies: minimist: 1.2.8 @@ -17414,12 +17327,12 @@ snapshots: html-tags@3.3.1: {} - htmlparser2@8.0.2: + htmlparser2@10.0.0: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 domutils: 3.2.2 - entities: 4.5.0 + entities: 6.0.0 http-cache-semantics@4.1.1: {} @@ -17498,8 +17411,6 @@ snapshots: import-meta-resolve@4.0.0: {} - import-modules@2.1.0: {} - imurmurhash@0.1.4: {} indent-string@4.0.0: {} @@ -17552,6 +17463,8 @@ snapshots: from2: 2.3.0 p-is-promise: 3.0.0 + iron-webcrypto@1.2.1: {} + is-accessor-descriptor@1.0.1: dependencies: hasown: 2.0.2 @@ -17603,9 +17516,9 @@ snapshots: is-buffer@2.0.5: {} - is-builtin-module@3.2.1: + is-builtin-module@5.0.0: dependencies: - builtin-modules: 3.3.0 + builtin-modules: 5.0.0 is-bun-module@2.0.0: dependencies: @@ -17655,6 +17568,8 @@ snapshots: is-docker@2.2.1: {} + is-docker@3.0.0: {} + is-empty@1.2.0: {} is-extendable@1.0.1: @@ -17683,11 +17598,6 @@ snapshots: dependencies: has-tostringtag: 1.0.2 - is-get-set-prop@1.0.0: - dependencies: - get-set-props: 0.1.0 - lowercase-keys: 1.0.1 - is-glob@4.0.3: dependencies: is-extglob: 2.1.1 @@ -17696,6 +17606,20 @@ snapshots: is-hexadecimal@2.0.1: {} + is-immutable-type@5.0.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + ts-api-utils: 2.1.0(typescript@5.8.3) + ts-declaration-location: 1.0.7(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + is-installed-globally@0.4.0: dependencies: global-dirs: 3.0.1 @@ -17703,10 +17627,6 @@ snapshots: is-interactive@1.0.0: {} - is-js-type@2.0.0: - dependencies: - js-types: 1.0.0 - is-map@2.0.3: {} is-module@1.0.0: {} @@ -17722,11 +17642,6 @@ snapshots: is-number@7.0.0: {} - is-obj-prop@1.0.0: - dependencies: - lowercase-keys: 1.0.1 - obj-props: 1.4.0 - is-obj@2.0.0: {} is-path-inside@3.0.3: {} @@ -17743,11 +17658,6 @@ snapshots: is-plain-object@5.0.0: {} - is-proto-prop@2.0.0: - dependencies: - lowercase-keys: 1.0.1 - proto-props: 2.0.0 - is-reference@1.2.1: dependencies: '@types/estree': 1.0.6 @@ -17817,6 +17727,10 @@ snapshots: dependencies: is-docker: 2.2.1 + is-wsl@3.1.0: + dependencies: + is-inside-container: 1.0.0 + is-yarn-global@0.4.1: {} isarray@0.0.1: {} @@ -17831,14 +17745,6 @@ snapshots: isobject@3.0.1: {} - issue-parser@6.0.0: - dependencies: - lodash.capitalize: 4.2.1 - lodash.escaperegexp: 4.1.2 - lodash.isplainobject: 4.0.6 - lodash.isstring: 4.0.1 - lodash.uniqby: 4.7.0 - issue-parser@7.0.1: dependencies: lodash.capitalize: 4.2.1 @@ -17868,6 +17774,7 @@ snapshots: semver: 7.7.2 transitivePeerDependencies: - supports-color + optional: true istanbul-lib-report@3.0.1: dependencies: @@ -17934,6 +17841,7 @@ snapshots: execa: 5.1.1 jest-util: 29.7.0 p-limit: 3.1.0 + optional: true jest-circus@28.1.3: dependencies: @@ -17984,6 +17892,7 @@ snapshots: transitivePeerDependencies: - babel-plugin-macros - supports-color + optional: true jest-cli@28.1.3(@types/node@22.15.21)(ts-node@10.9.1(@types/node@22.15.21)(typescript@5.7.3)): dependencies: @@ -18022,6 +17931,7 @@ snapshots: - babel-plugin-macros - supports-color - ts-node + optional: true jest-config@28.1.3(@types/node@22.15.21)(ts-node@10.9.1(@types/node@22.15.21)(typescript@5.7.3)): dependencies: @@ -18083,6 +17993,7 @@ snapshots: transitivePeerDependencies: - babel-plugin-macros - supports-color + optional: true jest-diff@28.1.3: dependencies: @@ -18105,6 +18016,7 @@ snapshots: jest-docblock@29.7.0: dependencies: detect-newline: 3.1.0 + optional: true jest-each@28.1.3: dependencies: @@ -18121,6 +18033,7 @@ snapshots: jest-get-type: 29.6.3 jest-util: 29.7.0 pretty-format: 29.7.0 + optional: true jest-environment-node@28.1.3: dependencies: @@ -18139,6 +18052,7 @@ snapshots: '@types/node': 22.15.21 jest-mock: 29.7.0 jest-util: 29.7.0 + optional: true jest-get-type@28.0.2: {} @@ -18175,6 +18089,7 @@ snapshots: walker: 1.0.8 optionalDependencies: fsevents: 2.3.3 + optional: true jest-leak-detector@28.1.3: dependencies: @@ -18185,6 +18100,7 @@ snapshots: dependencies: jest-get-type: 29.6.3 pretty-format: 29.7.0 + optional: true jest-matcher-utils@28.1.3: dependencies: @@ -18199,6 +18115,7 @@ snapshots: jest-diff: 29.7.0 jest-get-type: 29.6.3 pretty-format: 29.7.0 + optional: true jest-message-util@28.1.3: dependencies: @@ -18223,6 +18140,7 @@ snapshots: pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 + optional: true jest-mock@28.1.3: dependencies: @@ -18234,6 +18152,7 @@ snapshots: '@jest/types': 29.6.3 '@types/node': 22.15.21 jest-util: 29.7.0 + optional: true jest-pnp-resolver@1.2.3(jest-resolve@28.1.3): optionalDependencies: @@ -18242,10 +18161,12 @@ snapshots: jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): optionalDependencies: jest-resolve: 29.7.0 + optional: true jest-regex-util@28.0.2: {} - jest-regex-util@29.6.3: {} + jest-regex-util@29.6.3: + optional: true jest-resolve-dependencies@28.1.3: dependencies: @@ -18260,6 +18181,7 @@ snapshots: jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color + optional: true jest-resolve@28.1.3: dependencies: @@ -18284,6 +18206,7 @@ snapshots: resolve: 1.22.8 resolve.exports: 2.0.3 slash: 3.0.0 + optional: true jest-runner@28.1.3: dependencies: @@ -18336,6 +18259,7 @@ snapshots: source-map-support: 0.5.13 transitivePeerDependencies: - supports-color + optional: true jest-runtime@28.1.3: dependencies: @@ -18390,6 +18314,7 @@ snapshots: strip-bom: 4.0.0 transitivePeerDependencies: - supports-color + optional: true jest-snapshot@28.1.3: dependencies: @@ -18443,6 +18368,7 @@ snapshots: semver: 7.7.2 transitivePeerDependencies: - supports-color + optional: true jest-util@28.1.3: dependencies: @@ -18461,6 +18387,7 @@ snapshots: ci-info: 3.9.0 graceful-fs: 4.2.11 picomatch: 2.3.1 + optional: true jest-validate@28.1.3: dependencies: @@ -18479,6 +18406,7 @@ snapshots: jest-get-type: 29.6.3 leven: 3.1.0 pretty-format: 29.7.0 + optional: true jest-watcher@28.1.3: dependencies: @@ -18501,6 +18429,7 @@ snapshots: emittery: 0.13.1 jest-util: 29.7.0 string-length: 4.0.2 + optional: true jest-worker@28.1.3: dependencies: @@ -18514,6 +18443,7 @@ snapshots: jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 + optional: true jest@28.1.3(@types/node@22.15.21)(ts-node@10.9.1(@types/node@22.15.21)(typescript@5.7.3)): dependencies: @@ -18537,6 +18467,7 @@ snapshots: - babel-plugin-macros - supports-color - ts-node + optional: true jiti@1.21.0: {} @@ -18546,14 +18477,8 @@ snapshots: jju@1.4.0: {} - joycon@3.1.1: {} - js-tokens@4.0.0: {} - js-tokens@9.0.1: {} - - js-types@1.0.0: {} - js-yaml@3.14.1: dependencies: argparse: 1.0.10 @@ -18563,11 +18488,9 @@ snapshots: dependencies: argparse: 2.0.1 - jsdoc-type-pratt-parser@4.0.0: {} - jsdoc-type-pratt-parser@4.1.0: {} - jsesc@0.5.0: {} + jsesc@3.0.2: {} jsesc@3.1.0: {} @@ -18579,14 +18502,17 @@ snapshots: json-parse-even-better-errors@3.0.0: {} + json-schema-to-typescript-lite@14.1.0: + dependencies: + '@apidevtools/json-schema-ref-parser': 11.9.3 + '@types/json-schema': 7.0.15 + json-schema-traverse@0.4.1: {} json-schema-traverse@1.0.0: {} json-stable-stringify-without-jsonify@1.0.1: {} - json-stringify-safe@5.0.1: {} - json5@1.0.2: dependencies: minimist: 1.2.8 @@ -18649,8 +18575,6 @@ snapshots: kleur@4.1.5: {} - klona@2.0.6: {} - known-css-properties@0.35.0: {} known-css-properties@0.36.0: {} @@ -18754,11 +18678,6 @@ snapshots: load-tsconfig@0.2.5: {} - local-pkg@0.5.1: - dependencies: - mlly: 1.7.4 - pkg-types: 1.3.1 - locate-path@2.0.0: dependencies: p-locate: 2.0.0 @@ -18841,16 +18760,10 @@ snapshots: dependencies: js-tokens: 4.0.0 - loupe@2.3.7: - dependencies: - get-func-name: 2.0.2 - loupe@3.1.2: {} loupe@3.1.3: {} - lowercase-keys@1.0.1: {} - lowercase-keys@3.0.0: {} lru-cache@10.1.0: {} @@ -18916,16 +18829,6 @@ snapshots: markdown-table@3.0.3: {} - marked-terminal@6.2.0(marked@9.1.6): - dependencies: - ansi-escapes: 6.2.1 - cardinal: 2.1.1 - chalk: 5.4.1 - cli-table3: 0.6.5 - marked: 9.1.6 - node-emoji: 2.2.0 - supports-hyperlinks: 3.2.0 - marked-terminal@7.3.0(marked@15.0.12): dependencies: ansi-escapes: 7.0.0 @@ -18939,8 +18842,6 @@ snapshots: marked@15.0.12: {} - marked@9.1.6: {} - match-casing@2.0.1: {} match-index@1.0.3: @@ -18979,6 +18880,13 @@ snapshots: unist-util-is: 5.2.1 unist-util-visit-parents: 5.1.3 + mdast-util-find-and-replace@3.0.2: + dependencies: + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + mdast-util-footnote@0.1.7: dependencies: mdast-util-to-markdown: 0.6.5 @@ -19013,6 +18921,23 @@ snapshots: transitivePeerDependencies: - supports-color + mdast-util-from-markdown@2.0.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.2 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + mdast-util-frontmatter@0.2.0: dependencies: micromark-extension-frontmatter: 0.2.2 @@ -19023,6 +18948,17 @@ snapshots: mdast-util-to-markdown: 1.5.0 micromark-extension-frontmatter: 1.1.1 + mdast-util-frontmatter@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + escape-string-regexp: 5.0.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + micromark-extension-frontmatter: 2.0.0 + transitivePeerDependencies: + - supports-color + mdast-util-gfm-autolink-literal@0.1.3: dependencies: ccount: 1.1.0 @@ -19038,12 +18974,30 @@ snapshots: mdast-util-find-and-replace: 2.2.2 micromark-util-character: 1.2.0 + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.2 + micromark-util-character: 2.1.1 + mdast-util-gfm-footnote@1.0.2: dependencies: '@types/mdast': 3.0.15 mdast-util-to-markdown: 1.5.0 micromark-util-normalize-identifier: 1.1.0 + mdast-util-gfm-footnote@2.1.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color + mdast-util-gfm-strikethrough@0.2.3: dependencies: mdast-util-to-markdown: 0.6.5 @@ -19053,6 +19007,14 @@ snapshots: '@types/mdast': 3.0.15 mdast-util-to-markdown: 1.5.0 + mdast-util-gfm-strikethrough@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + mdast-util-gfm-table@0.1.6: dependencies: markdown-table: 2.0.0 @@ -19067,6 +19029,16 @@ snapshots: transitivePeerDependencies: - supports-color + mdast-util-gfm-table@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.3 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + mdast-util-gfm-task-list-item@0.1.6: dependencies: mdast-util-to-markdown: 0.6.5 @@ -19076,6 +19048,15 @@ snapshots: '@types/mdast': 3.0.15 mdast-util-to-markdown: 1.5.0 + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + mdast-util-gfm@0.1.2: dependencies: mdast-util-gfm-autolink-literal: 0.1.3 @@ -19098,6 +19079,18 @@ snapshots: transitivePeerDependencies: - supports-color + mdast-util-gfm@3.1.0: + dependencies: + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.1.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + mdast-util-mdx-expression@1.3.2: dependencies: '@types/estree-jsx': 1.0.3 @@ -19150,6 +19143,11 @@ snapshots: '@types/mdast': 3.0.15 unist-util-is: 5.2.1 + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.0 + mdast-util-to-markdown@0.6.5: dependencies: '@types/unist': 2.0.10 @@ -19170,6 +19168,18 @@ snapshots: unist-util-visit: 4.1.2 zwitch: 2.0.4 + mdast-util-to-markdown@2.1.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + mdast-util-to-nlcst@5.2.1: dependencies: '@types/mdast': 3.0.15 @@ -19186,6 +19196,10 @@ snapshots: dependencies: '@types/mdast': 3.0.15 + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdn-data@2.12.2: {} mem@4.3.0: @@ -19219,8 +19233,6 @@ snapshots: merge@2.1.1: {} - micro-spelling-correcter@1.1.1: {} - micromark-core-commonmark@1.1.0: dependencies: decode-named-character-reference: 1.0.2 @@ -19240,6 +19252,25 @@ snapshots: micromark-util-types: 1.1.0 uvu: 0.5.6 + micromark-core-commonmark@2.0.3: + dependencies: + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + micromark-extension-footnote@0.3.2: dependencies: micromark: 2.11.4 @@ -19257,6 +19288,13 @@ snapshots: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + micromark-extension-frontmatter@2.0.0: + dependencies: + fault: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + micromark-extension-gfm-autolink-literal@0.5.7: dependencies: micromark: 2.11.4 @@ -19270,6 +19308,13 @@ snapshots: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + micromark-extension-gfm-footnote@1.1.2: dependencies: micromark-core-commonmark: 1.1.0 @@ -19281,6 +19326,17 @@ snapshots: micromark-util-types: 1.1.0 uvu: 0.5.6 + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + micromark-extension-gfm-strikethrough@0.6.5: dependencies: micromark: 2.11.4 @@ -19296,6 +19352,15 @@ snapshots: micromark-util-types: 1.1.0 uvu: 0.5.6 + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + micromark-extension-gfm-table@0.4.3: dependencies: micromark: 2.11.4 @@ -19310,12 +19375,24 @@ snapshots: micromark-util-types: 1.1.0 uvu: 0.5.6 + micromark-extension-gfm-table@2.1.1: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + micromark-extension-gfm-tagfilter@0.3.0: {} micromark-extension-gfm-tagfilter@1.0.2: dependencies: micromark-util-types: 1.1.0 + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + micromark-extension-gfm-task-list-item@0.3.3: dependencies: micromark: 2.11.4 @@ -19330,6 +19407,14 @@ snapshots: micromark-util-types: 1.1.0 uvu: 0.5.6 + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + micromark-extension-gfm@0.3.3: dependencies: micromark: 2.11.4 @@ -19352,6 +19437,17 @@ snapshots: micromark-util-combine-extensions: 1.1.0 micromark-util-types: 1.1.0 + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.1 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + micromark-extension-mdx-expression@1.0.8: dependencies: '@types/estree': 1.0.6 @@ -19409,6 +19505,12 @@ snapshots: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + micromark-factory-destination@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + micromark-factory-label@1.1.0: dependencies: micromark-util-character: 1.2.0 @@ -19416,6 +19518,13 @@ snapshots: micromark-util-types: 1.1.0 uvu: 0.5.6 + micromark-factory-label@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + micromark-factory-mdx-expression@1.0.9: dependencies: '@types/estree': 1.0.6 @@ -19432,6 +19541,11 @@ snapshots: micromark-util-character: 1.2.0 micromark-util-types: 1.1.0 + micromark-factory-space@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.2 + micromark-factory-title@1.1.0: dependencies: micromark-factory-space: 1.1.0 @@ -19439,6 +19553,13 @@ snapshots: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + micromark-factory-title@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + micromark-factory-whitespace@1.1.0: dependencies: micromark-factory-space: 1.1.0 @@ -19446,30 +19567,61 @@ snapshots: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + micromark-factory-whitespace@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + micromark-util-character@1.2.0: dependencies: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + micromark-util-chunked@1.1.0: dependencies: micromark-util-symbol: 1.1.0 + micromark-util-chunked@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-classify-character@1.1.0: dependencies: micromark-util-character: 1.2.0 micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + micromark-util-classify-character@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + micromark-util-combine-extensions@1.1.0: dependencies: micromark-util-chunked: 1.1.0 micromark-util-types: 1.1.0 + micromark-util-combine-extensions@2.0.1: + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.2 + micromark-util-decode-numeric-character-reference@1.1.0: dependencies: micromark-util-symbol: 1.1.0 + micromark-util-decode-numeric-character-reference@2.0.2: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-decode-string@1.1.0: dependencies: decode-named-character-reference: 1.0.2 @@ -19477,8 +19629,17 @@ snapshots: micromark-util-decode-numeric-character-reference: 1.1.0 micromark-util-symbol: 1.1.0 + micromark-util-decode-string@2.0.1: + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 + micromark-util-encode@1.1.0: {} + micromark-util-encode@2.0.1: {} + micromark-util-events-to-acorn@1.2.3: dependencies: '@types/acorn': 4.0.6 @@ -19492,20 +19653,36 @@ snapshots: micromark-util-html-tag-name@1.2.0: {} + micromark-util-html-tag-name@2.0.1: {} + micromark-util-normalize-identifier@1.1.0: dependencies: micromark-util-symbol: 1.1.0 + micromark-util-normalize-identifier@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-resolve-all@1.1.0: dependencies: micromark-util-types: 1.1.0 + micromark-util-resolve-all@2.0.1: + dependencies: + micromark-util-types: 2.0.2 + micromark-util-sanitize-uri@1.2.0: dependencies: micromark-util-character: 1.2.0 micromark-util-encode: 1.1.0 micromark-util-symbol: 1.1.0 + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-subtokenize@1.1.0: dependencies: micromark-util-chunked: 1.1.0 @@ -19513,10 +19690,21 @@ snapshots: micromark-util-types: 1.1.0 uvu: 0.5.6 + micromark-util-subtokenize@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + micromark-util-symbol@1.1.0: {} + micromark-util-symbol@2.0.1: {} + micromark-util-types@1.1.0: {} + micromark-util-types@2.0.2: {} + micromark@2.11.4: dependencies: debug: 4.4.1 @@ -19546,6 +19734,28 @@ snapshots: transitivePeerDependencies: - supports-color + micromark@4.0.2: + dependencies: + '@types/debug': 4.1.12 + debug: 4.4.1 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + transitivePeerDependencies: + - supports-color + micromatch@4.0.8: dependencies: braces: 3.0.3 @@ -19583,10 +19793,6 @@ snapshots: dependencies: brace-expansion: 2.0.1 - minimatch@9.0.1: - dependencies: - brace-expansion: 2.0.1 - minimatch@9.0.3: dependencies: brace-expansion: 2.0.1 @@ -19633,6 +19839,8 @@ snapshots: mri@1.2.0: {} + mrmime@2.0.1: {} + ms@2.1.2: {} ms@2.1.3: {} @@ -19665,10 +19873,10 @@ snapshots: napi-postinstall@0.2.4: {} - natural-compare-lite@1.4.0: {} - natural-compare@1.4.0: {} + natural-orderby@5.0.0: {} + neo-async@2.6.2: {} neotraverse@0.6.18: {} @@ -19732,6 +19940,8 @@ snapshots: node-machine-id@1.1.12: {} + node-mock-http@1.0.0: {} + node-releases@2.0.19: {} nopt@7.2.0: @@ -19844,8 +20054,6 @@ snapshots: transitivePeerDependencies: - debug - obj-props@1.4.0: {} - object-assign@4.1.1: {} object-hash@3.0.0: {} @@ -19905,6 +20113,8 @@ snapshots: node-fetch-native: 1.6.4 ufo: 1.6.1 + ohash@2.0.11: {} + once@1.4.0: dependencies: wrappy: 1.0.2 @@ -19921,6 +20131,13 @@ snapshots: dependencies: mimic-function: 5.0.1 + open@10.1.2: + dependencies: + default-browser: 5.2.1 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 3.1.0 + open@8.4.2: dependencies: define-lazy-prop: 2.0.0 @@ -20047,10 +20264,6 @@ snapshots: dependencies: yocto-queue: 1.0.0 - p-limit@5.0.0: - dependencies: - yocto-queue: 1.0.0 - p-locate@2.0.0: dependencies: p-limit: 1.3.0 @@ -20148,6 +20361,12 @@ snapshots: is-decimal: 2.0.1 is-hexadecimal: 2.0.1 + parse-gitignore@2.0.0: {} + + parse-imports-exports@0.2.4: + dependencies: + parse-statements: 1.0.11 + parse-json@2.2.0: dependencies: error-ex: 1.3.2 @@ -20201,6 +20420,8 @@ snapshots: parse-passwd@1.0.0: {} + parse-statements@1.0.11: {} + parse5-htmlparser2-tree-adapter@6.0.1: dependencies: parse5: 6.0.1 @@ -20257,8 +20478,6 @@ snapshots: pathe@2.0.3: {} - pathval@1.1.1: {} - pathval@2.0.0: {} pause-stream@0.0.11: @@ -20294,10 +20513,6 @@ snapshots: dependencies: find-up: 4.1.0 - pkg-dir@5.0.0: - dependencies: - find-up: 5.0.0 - pkg-pr-new@0.0.50: dependencies: '@jsdevtools/ez-spawn': 3.0.4 @@ -20358,6 +20573,7 @@ snapshots: postcss: 8.5.3 tsx: 4.19.4 yaml: 2.8.0 + optional: true postcss-nested@6.0.1(postcss@8.5.3): dependencies: @@ -20399,6 +20615,10 @@ snapshots: prelude-ls@1.2.1: {} + prettier-linter-helpers@1.0.0: + dependencies: + fast-diff: 1.3.0 + prettier@3.5.3: {} pretty-format@27.5.1: @@ -20445,8 +20665,6 @@ snapshots: proto-list@1.2.4: {} - proto-props@2.0.0: {} - proxy-from-env@1.1.0: {} publint@0.3.12: @@ -20473,7 +20691,8 @@ snapshots: dependencies: escape-goat: 4.0.0 - pure-rand@6.0.4: {} + pure-rand@6.0.4: + optional: true quansync@0.2.10: {} @@ -20502,6 +20721,8 @@ snapshots: quotation@2.0.3: {} + radix3@1.1.2: {} + rc-config-loader@4.1.3: dependencies: debug: 4.4.0 @@ -20524,9 +20745,7 @@ snapshots: react-is@18.2.0: {} - react@18.3.1: - dependencies: - loose-envify: 1.4.0 + react@19.1.0: {} read-cache@1.0.0: dependencies: @@ -20543,12 +20762,6 @@ snapshots: read-pkg: 9.0.1 type-fest: 4.41.0 - read-pkg-up@11.0.0: - dependencies: - find-up-simple: 1.0.1 - read-pkg: 9.0.1 - type-fest: 4.41.0 - read-pkg-up@3.0.0: dependencies: find-up: 2.1.0 @@ -20659,10 +20872,6 @@ snapshots: indent-string: 5.0.0 strip-indent: 4.0.0 - redeyed@2.1.1: - dependencies: - esprima: 4.0.1 - refa@0.12.1: dependencies: '@eslint-community/regexpp': 4.12.1 @@ -20711,9 +20920,9 @@ snapshots: dependencies: rc: 1.2.8 - regjsparser@0.10.0: + regjsparser@0.12.0: dependencies: - jsesc: 0.5.0 + jsesc: 3.0.2 rehype-parse@8.0.5: dependencies: @@ -20771,13 +20980,6 @@ snapshots: transitivePeerDependencies: - supports-color - remark-mdx@2.3.0: - dependencies: - mdast-util-mdx: 2.0.1 - micromark-extension-mdxjs: 1.0.1 - transitivePeerDependencies: - - supports-color - remark-message-control@7.1.1: dependencies: '@types/mdast': 3.0.15 @@ -20809,22 +21011,12 @@ snapshots: mdast-util-to-nlcst: 5.2.1 unified: 10.1.2 - remark-stringify@10.0.3: - dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-markdown: 1.5.0 - unified: 10.1.2 - repeat-string@1.6.1: {} require-directory@2.1.1: {} require-from-string@2.0.2: {} - requireindex@1.1.0: {} - - requireindex@1.2.0: {} - resolve-alpn@1.2.1: {} resolve-cwd@3.0.0: @@ -20851,11 +21043,6 @@ snapshots: resolve.exports@2.0.3: {} - resolve@1.19.0: - dependencies: - is-core-module: 2.13.1 - path-parse: 1.0.7 - resolve@1.22.8: dependencies: is-core-module: 2.13.1 @@ -20923,10 +21110,6 @@ snapshots: dependencies: glob: 7.2.3 - rimraf@5.0.10: - dependencies: - glob: 10.4.5 - rimraf@6.0.1: dependencies: glob: 11.0.0 @@ -21062,6 +21245,8 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.34.9 fsevents: 2.3.3 + run-applescript@7.0.0: {} + run-async@2.4.1: {} run-parallel@1.2.0: @@ -21142,41 +21327,6 @@ snapshots: map-like: 1.1.3 txt-ast-traverse: 1.2.1 - semantic-release@22.0.12(typescript@5.8.3): - dependencies: - '@semantic-release/commit-analyzer': 11.1.0(semantic-release@22.0.12(typescript@5.8.3)) - '@semantic-release/error': 4.0.0 - '@semantic-release/github': 9.2.6(semantic-release@22.0.12(typescript@5.8.3)) - '@semantic-release/npm': 11.0.3(semantic-release@22.0.12(typescript@5.8.3)) - '@semantic-release/release-notes-generator': 12.1.0(semantic-release@22.0.12(typescript@5.8.3)) - aggregate-error: 5.0.0 - cosmiconfig: 8.3.6(typescript@5.8.3) - debug: 4.4.1 - env-ci: 10.0.0 - execa: 8.0.1 - figures: 6.1.0 - find-versions: 5.1.0 - get-stream: 6.0.1 - git-log-parser: 1.2.1 - hook-std: 3.0.0 - hosted-git-info: 7.0.1 - import-from-esm: 1.3.3 - lodash-es: 4.17.21 - marked: 9.1.6 - marked-terminal: 6.2.0(marked@9.1.6) - micromatch: 4.0.8 - p-each-series: 3.0.0 - p-reduce: 3.0.0 - read-pkg-up: 11.0.0 - resolve-from: 5.0.0 - semver: 7.7.2 - semver-diff: 4.0.0 - signale: 1.4.0 - yargs: 17.7.2 - transitivePeerDependencies: - - supports-color - - typescript - semantic-release@24.2.5(typescript@5.7.3): dependencies: '@semantic-release/commit-analyzer': 13.0.1(semantic-release@24.2.5(typescript@5.7.3)) @@ -21408,10 +21558,6 @@ snapshots: source-map@0.7.4: {} - source-map@0.8.0-beta.0: - dependencies: - whatwg-url: 7.1.0 - space-separated-tokens@2.0.2: {} spawn-error-forwarder@1.0.0: {} @@ -21494,11 +21640,6 @@ snapshots: std-env@3.9.0: {} - stop-iteration-iterator@1.1.0: - dependencies: - es-errors: 1.3.0 - internal-slot: 1.1.0 - stream-buffers@3.0.3: {} stream-combiner2@1.1.1: @@ -21524,6 +21665,8 @@ snapshots: char-regex: 1.0.2 strip-ansi: 6.0.1 + string-ts@2.2.1: {} + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -21629,10 +21772,6 @@ snapshots: strip-final-newline@4.0.0: {} - strip-indent@3.0.0: - dependencies: - min-indent: 1.0.1 - strip-indent@4.0.0: dependencies: min-indent: 1.0.1 @@ -21643,10 +21782,6 @@ snapshots: strip-json-comments@5.0.1: {} - strip-literal@2.1.1: - dependencies: - js-tokens: 9.0.1 - structured-source@3.0.2: dependencies: boundary: 1.0.1 @@ -21931,6 +22066,8 @@ snapshots: transitivePeerDependencies: - ts-node + tapable@2.2.2: {} + tar-stream@2.2.0: dependencies: bl: 4.1.0 @@ -22177,7 +22314,10 @@ snapshots: fdir: 6.4.4(picomatch@4.0.2) picomatch: 4.0.2 - tinypool@0.8.4: {} + tinyglobby@0.2.14: + dependencies: + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 tinypool@1.0.2: {} @@ -22185,8 +22325,6 @@ snapshots: tinyrainbow@2.0.0: {} - tinyspy@2.2.1: {} - tinyspy@3.0.2: {} tmp@0.0.33: @@ -22215,11 +22353,7 @@ snapshots: is-buffer: 2.0.5 vfile: 5.3.7 - toml-eslint-parser@0.6.1: - dependencies: - eslint-visitor-keys: 3.4.3 - - toml-eslint-parser@0.7.0: + toml-eslint-parser@0.10.0: dependencies: eslint-visitor-keys: 3.4.3 @@ -22229,10 +22363,6 @@ snapshots: tr46@0.0.3: {} - tr46@1.0.1: - dependencies: - punycode: 2.3.1 - traverse@0.6.7: {} traverse@0.6.8: {} @@ -22255,6 +22385,11 @@ snapshots: dependencies: typescript: 5.8.3 + ts-declaration-location@1.0.7(typescript@5.8.3): + dependencies: + picomatch: 4.0.2 + typescript: 5.8.3 + ts-dedent@2.2.0: {} ts-deepmerge@7.0.2: {} @@ -22299,6 +22434,8 @@ snapshots: yn: 3.1.1 optional: true + ts-pattern@5.7.1: {} + tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 @@ -22313,51 +22450,18 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 - tslib@1.14.1: {} + tslib@1.14.1: + optional: true tslib@2.6.2: {} tslib@2.8.1: {} - tsup@8.5.0(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.4)(typescript@5.8.3)(yaml@2.8.0): - dependencies: - bundle-require: 5.1.0(esbuild@0.25.4) - cac: 6.7.14 - chokidar: 4.0.3 - consola: 3.4.2 - debug: 4.4.1 - esbuild: 0.25.4 - fix-dts-default-cjs-exports: 1.0.1 - joycon: 3.1.1 - picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.4)(yaml@2.8.0) - resolve-from: 5.0.0 - rollup: 4.34.9 - source-map: 0.8.0-beta.0 - sucrase: 3.35.0 - tinyexec: 0.3.2 - tinyglobby: 0.2.13 - tree-kill: 1.2.2 - optionalDependencies: - postcss: 8.5.3 - typescript: 5.8.3 - transitivePeerDependencies: - - jiti - - supports-color - - tsx - - yaml - - tsutils-etc@1.4.2(tsutils@3.21.0(typescript@5.8.3))(typescript@5.8.3): - dependencies: - '@types/yargs': 17.0.32 - tsutils: 3.21.0(typescript@5.8.3) - typescript: 5.8.3 - yargs: 17.7.2 - tsutils@3.21.0(typescript@5.8.3): dependencies: tslib: 1.14.1 typescript: 5.8.3 + optional: true tsx@4.19.4: dependencies: @@ -22365,7 +22469,6 @@ snapshots: get-tsconfig: 4.10.1 optionalDependencies: fsevents: 2.3.3 - optional: true txt-ast-traverse@1.2.1: {} @@ -22375,8 +22478,6 @@ snapshots: type-detect@4.0.8: {} - type-detect@4.1.0: {} - type-fest@0.20.2: {} type-fest@0.21.3: {} @@ -22434,6 +22535,16 @@ snapshots: typedarray@0.0.6: {} + typescript-eslint@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + typescript@5.7.3: {} typescript@5.8.3: {} @@ -22461,6 +22572,8 @@ snapshots: jiti: 2.4.2 quansync: 0.2.10 + uncrypto@0.1.3: {} + undici-types@5.26.5: {} undici-types@6.21.0: {} @@ -22563,6 +22676,10 @@ snapshots: dependencies: '@types/unist': 2.0.10 + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-modify-children@2.0.0: dependencies: array-iterate: 1.1.4 @@ -22593,6 +22710,10 @@ snapshots: dependencies: '@types/unist': 2.0.10 + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-visit-children@1.1.4: {} unist-util-visit-children@2.0.2: @@ -22618,6 +22739,11 @@ snapshots: '@types/unist': 2.0.10 unist-util-is: 5.2.1 + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit@1.4.1: dependencies: unist-util-visit-parents: 2.1.2 @@ -22640,6 +22766,12 @@ snapshots: unist-util-is: 5.2.1 unist-util-visit-parents: 5.1.3 + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + universal-user-agent@6.0.1: {} universal-user-agent@7.0.2: {} @@ -22707,8 +22839,6 @@ snapshots: util-deprecate@1.0.2: {} - uuid@9.0.1: {} - uvu@0.5.6: dependencies: dequal: 2.0.3 @@ -22789,27 +22919,6 @@ snapshots: unist-util-stringify-position: 3.0.3 vfile-message: 3.1.4 - vite-node@1.6.1(@types/node@22.15.21)(jiti@2.4.2)(tsx@4.19.4)(yaml@2.8.0): - dependencies: - cac: 6.7.14 - debug: 4.4.1 - pathe: 1.1.2 - picocolors: 1.1.1 - vite: 6.3.5(@types/node@22.15.21)(jiti@2.4.2)(tsx@4.19.4)(yaml@2.8.0) - transitivePeerDependencies: - - '@types/node' - - jiti - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - vite-node@3.1.4(@types/node@22.15.21)(jiti@2.4.2)(tsx@4.19.4)(yaml@2.8.0): dependencies: cac: 6.7.14 @@ -22846,43 +22955,6 @@ snapshots: tsx: 4.19.4 yaml: 2.8.0 - vitest@1.6.1(@types/node@22.15.21)(jiti@2.4.2)(tsx@4.19.4)(yaml@2.8.0): - dependencies: - '@vitest/expect': 1.6.1 - '@vitest/runner': 1.6.1 - '@vitest/snapshot': 1.6.1 - '@vitest/spy': 1.6.1 - '@vitest/utils': 1.6.1 - acorn-walk: 8.3.4 - chai: 4.5.0 - debug: 4.4.1 - execa: 8.0.1 - local-pkg: 0.5.1 - magic-string: 0.30.17 - pathe: 1.1.2 - picocolors: 1.1.1 - std-env: 3.9.0 - strip-literal: 2.1.1 - tinybench: 2.9.0 - tinypool: 0.8.4 - vite: 6.3.5(@types/node@22.15.21)(jiti@2.4.2)(tsx@4.19.4)(yaml@2.8.0) - vite-node: 1.6.1(@types/node@22.15.21)(jiti@2.4.2)(tsx@4.19.4)(yaml@2.8.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/node': 22.15.21 - transitivePeerDependencies: - - jiti - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - vitest@3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(jiti@2.4.2)(tsx@4.19.4)(yaml@2.8.0): dependencies: '@vitest/expect': 3.1.4 @@ -22939,19 +23011,11 @@ snapshots: webidl-conversions@3.0.1: {} - webidl-conversions@4.0.2: {} - whatwg-url@5.0.0: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - whatwg-url@7.1.0: - dependencies: - lodash.sortby: 4.7.0 - tr46: 1.0.1 - webidl-conversions: 4.0.2 - which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 @@ -23008,8 +23072,6 @@ snapshots: dependencies: string-width: 5.1.2 - window-size@0.3.0: {} - word-wrap@1.2.5: {} wordwrap@1.0.0: {} @@ -23067,6 +23129,8 @@ snapshots: too-wordy: 0.3.6 weasel-words: 0.1.1 + ws@8.18.2: {} + xdg-basedir@5.1.0: {} xtend@2.1.2: From 4ba6bbec55454c4b724bec1bb3d028ca2c3bd68a Mon Sep 17 00:00:00 2001 From: prisis Date: Mon, 26 May 2025 09:26:53 +0200 Subject: [PATCH 31/31] chore: update GitHub workflows - Removed unnecessary blank lines in allo-allo.yaml and test.yml files to improve readability and maintain consistency in workflow definitions. Signed-off-by: prisis --- .github/workflows/allo-allo.yaml | 1 - .github/workflows/test.yml | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/allo-allo.yaml b/.github/workflows/allo-allo.yaml index a9ee6b239..ba7831268 100644 --- a/.github/workflows/allo-allo.yaml +++ b/.github/workflows/allo-allo.yaml @@ -16,4 +16,3 @@ jobs: uses: "anolilab/workflows/.github/workflows/allo-allo.yml@main" with: target-repo: "anolilab/javascript-style-guide" - diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a3c08a13f..8fe2c7e51 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -90,7 +90,6 @@ jobs: - name: "Derive appropriate SHAs for base and head for `nx affected` commands" id: "setSHAs" uses: "nrwl/nx-set-shas@76907e7e5d3cd17ddb5e2b123389f054bffcdd03" # v4 - - name: "Setup resources and environment" id: "setup" @@ -98,7 +97,7 @@ jobs: with: node-version: "${{ matrix.node_version }}" install-bun: false - + # Temporary solution until Nx solve this https://github.com/nrwl/nx/issues/22259 - name: "Get changed files" id: "files"