Showing preview only (259K chars total). Download the full file or copy to clipboard to get everything.
Repository: antfu/eslint-typegen
Branch: main
Commit: b1b47bdc86ff
Files: 26
Total size: 248.5 KB
Directory structure:
gitextract_bxds5anp/
├── .github/
│ ├── FUNDING.yml
│ └── workflows/
│ ├── ci.yml
│ └── release.yml
├── .gitignore
├── .npmrc
├── .vscode/
│ └── settings.json
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── eslint.config.js
├── package.json
├── pnpm-workspace.yaml
├── src/
│ ├── core.ts
│ └── index.ts
├── test/
│ ├── index.test.ts
│ ├── input/
│ │ ├── invalid-json-schema-plugin.ts
│ │ └── plugin-with-schema-ids.ts
│ └── output/
│ ├── core-rules.d.ts
│ ├── flat-config-vue.d.ts
│ ├── invalid-json-schema-plugin.d.ts
│ ├── jsx-a11y.d.ts
│ ├── no-rule-meta.d.ts
│ ├── plugin-with-schema-ids.d.ts
│ └── plugins.d.ts
├── tsconfig.json
└── tsdown.config.ts
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/FUNDING.yml
================================================
github: [antfu]
================================================
FILE: .github/workflows/ci.yml
================================================
name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install pnpm
uses: pnpm/action-setup@v2
- name: Set node
uses: actions/setup-node@v3
with:
node-version: lts/*
- name: Setup
run: npm i -g @antfu/ni
- name: Install
run: nci
- name: Lint
run: nr lint
- name: Typecheck
run: nr typecheck
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
node: [lts/*]
os: [ubuntu-latest, windows-latest, macos-latest]
fail-fast: false
steps:
- uses: actions/checkout@v3
- name: Install pnpm
uses: pnpm/action-setup@v2
- name: Set node ${{ matrix.node }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}
- name: Setup
run: npm i -g @antfu/ni
- name: Install
run: nci
- name: Build
run: nr build
- name: Test
run: nr test
================================================
FILE: .github/workflows/release.yml
================================================
name: Release
on:
push:
tags:
- 'v*'
jobs:
release:
uses: sxzz/workflows/.github/workflows/release.yml@v1
with:
publish: true
permissions:
contents: write
id-token: write
================================================
FILE: .gitignore
================================================
.cache
.DS_Store
.idea
*.log
*.tgz
coverage
dist
lib-cov
logs
node_modules
temp
eslint-typegen.d.ts
================================================
FILE: .npmrc
================================================
ignore-workspace-root-check=true
shell-emulator=true
================================================
FILE: .vscode/settings.json
================================================
{
// Enable the ESlint flat config support
"eslint.experimental.useFlatConfig": true,
// Disable the default formatter, use eslint instead
"prettier.enable": false,
"editor.formatOnSave": false,
// Auto fix
"editor.codeActionsOnSave": {
"source.fixAll": "explicit",
"source.organizeImports": "never"
},
// Silent the stylistic rules in you IDE, but still auto fix them
"eslint.rules.customizations": [
{ "rule": "style/*", "severity": "off" },
{ "rule": "*-indent", "severity": "off" },
{ "rule": "*-spacing", "severity": "off" },
{ "rule": "*-spaces", "severity": "off" },
{ "rule": "*-order", "severity": "off" },
{ "rule": "*-dangle", "severity": "off" },
{ "rule": "*-newline", "severity": "off" },
{ "rule": "*quotes", "severity": "off" },
{ "rule": "*semi", "severity": "off" }
],
// Enable eslint for all supported languages
"eslint.validate": [
"javascript",
"javascriptreact",
"typescript",
"typescriptreact",
"vue",
"html",
"markdown",
"json",
"jsonc",
"yaml"
]
}
================================================
FILE: CONTRIBUTING.md
================================================
Please refer to https://github.com/antfu/contribute
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2022 Anthony Fu <https://github.com/antfu>
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.
================================================
FILE: README.md
================================================
# eslint-typegen
[![npm version][npm-version-src]][npm-version-href]
[![npm downloads][npm-downloads-src]][npm-downloads-href]
[![bundle][bundle-src]][bundle-href]
[![JSDocs][jsdocs-src]][jsdocs-href]
[![License][license-src]][license-href]
Generate types from ESLint rule schemas automatically, with auto-completion and type-checking for rule options.

> Btw, if you are using [`@antfu/eslint-config`](https://github.com/antfu/eslint-config), you may NOT need to setup this, as the types for rules [are already shipped with the package](https://github.com/antfu/eslint-config/blob/95963ac345d27cd06a4eeb5ebc16e1848cb2fd81/scripts/typegen.ts#L29-L33).
## Usage
```bash
npm i eslint-typegen
```
In your `eslint.config.mjs`, wrap the export with `typegen` function:
```ts
// @ts-check
/// <reference path="./eslint-typegen.d.ts" />
import typegen from 'eslint-typegen'
export default typegen(
[
// ...your normal eslint flat config
]
)
```
Run ESLint once, an `eslint-typegen.d.ts` file will be generated to augment ESLint's `Linter.RulesRecord` types, to provide you with auto-completion and type-checking for your ESLint rules configuration based on the ESLint plugins you are using.
> It will caluclate the hash of the plugins meta from your flat config, and only regenerate the types when they changes. If you want to force regenerate the types, you can delete the `eslint-typegen.d.ts` file and run ESLint again.
## Low-level API
You can find low-level APIs in the `eslint-typegen/core` modules.
```ts
import fs from 'node:fs/promises'
import pluginTs from '@typescript-eslint/eslint-plugin'
import pluginN from 'eslint-plugin-n'
import { pluginsToRulesDTS } from 'eslint-typegen/core'
const dts = await pluginsToRulesDTS({
'@typescript-eslint': pluginTs,
'n': pluginN,
})
await fs.writeFile('eslint-typegen.d.ts', dts)
```
This can be useful if you want to have more control over the generation process, or even bundle the types with your config package. For example, [here](https://github.com/antfu/eslint-config/blob/95963ac345d27cd06a4eeb5ebc16e1848cb2fd81/scripts/typegen.ts#L29-L33) is how [`@antfu/eslint-config`](https://github.com/antfu/eslint-config) does.
## How it works
Thanks to that [ESLint requires rules to provide the JSONSchema for options](https://eslint.org/docs/latest/extend/custom-rules#options-schemas), we could leverage that to generate types with [`json-schema-to-typescript`](https://github.com/bcherny/json-schema-to-typescript). With the new flat config allowing you to execute the code with fully resolved configs, we managed to sneak in the type generation process on the fly.
## Credits
The initial idea comes from [@Shinigami92](https://github.com/Shinigami92) via his work on [`eslint-define-config`](https://github.com/eslint-types/eslint-define-config), thanks to him!
## Sponsors
<p align="center">
<a href="https://cdn.jsdelivr.net/gh/antfu/static/sponsors.svg">
<img src='https://cdn.jsdelivr.net/gh/antfu/static/sponsors.svg'/>
</a>
</p>
## License
[MIT](./LICENSE) License © 2023-PRESENT [Anthony Fu](https://github.com/antfu)
<!-- Badges -->
[npm-version-src]: https://img.shields.io/npm/v/eslint-typegen?style=flat&colorA=080f12&colorB=1fa669
[npm-version-href]: https://npmjs.com/package/eslint-typegen
[npm-downloads-src]: https://img.shields.io/npm/dm/eslint-typegen?style=flat&colorA=080f12&colorB=1fa669
[npm-downloads-href]: https://npmjs.com/package/eslint-typegen
[bundle-src]: https://img.shields.io/bundlephobia/minzip/eslint-typegen?style=flat&colorA=080f12&colorB=1fa669&label=minzip
[bundle-href]: https://bundlephobia.com/result?p=eslint-typegen
[license-src]: https://img.shields.io/github/license/antfu/eslint-typegen.svg?style=flat&colorA=080f12&colorB=1fa669
[license-href]: https://github.com/antfu/eslint-typegen/blob/main/LICENSE
[jsdocs-src]: https://img.shields.io/badge/jsdocs-reference-080f12?style=flat&colorA=080f12&colorB=1fa669
[jsdocs-href]: https://www.jsdocs.io/package/eslint-typegen
================================================
FILE: eslint.config.js
================================================
// @ts-check
/// <reference path="./eslint-typegen.d.ts" />
import antfu from '@antfu/eslint-config'
// eslint-disable-next-line antfu/no-import-dist
import typegen from './dist/index.mjs'
export default typegen(await antfu({
vue: true,
typescript: true,
pnpm: true,
}),
)
================================================
FILE: package.json
================================================
{
"name": "eslint-typegen",
"type": "module",
"version": "2.3.1",
"packageManager": "pnpm@10.30.0",
"description": "Generate types from ESLint rule schemas automatically, with auto-completion and type-checking for rule options.",
"author": "Anthony Fu <anthonyfu117@hotmail.com>",
"license": "MIT",
"funding": "https://github.com/sponsors/antfu",
"homepage": "https://github.com/antfu/eslint-typegen#readme",
"repository": {
"type": "git",
"url": "git+https://github.com/antfu/eslint-typegen.git"
},
"bugs": "https://github.com/antfu/eslint-typegen/issues",
"keywords": [
"eslint"
],
"sideEffects": false,
"exports": {
".": "./dist/index.mjs",
"./core": "./dist/core.mjs",
"./package.json": "./package.json"
},
"types": "./dist/index.d.mts",
"files": [
"dist"
],
"scripts": {
"build": "tsdown",
"dev": "tsdown --watch",
"lint": "nr build && eslint .",
"prepublishOnly": "nr build",
"release": "bumpp",
"start": "tsx src/index.ts",
"test": "vitest",
"typecheck": "tsc --noEmit",
"prepare": "simple-git-hooks"
},
"peerDependencies": {
"eslint": "^9.0.0 || ^10.0.0"
},
"dependencies": {
"json-schema-to-typescript-lite": "catalog:prod",
"ohash": "catalog:prod"
},
"devDependencies": {
"@antfu/eslint-config": "catalog:dev",
"@antfu/ni": "catalog:dev",
"@types/json-schema": "catalog:dev",
"@types/node": "catalog:dev",
"@typescript-eslint/eslint-plugin": "catalog:test",
"bumpp": "catalog:dev",
"eslint": "catalog:dev",
"eslint-plugin-antfu": "catalog:test",
"eslint-plugin-import-x": "catalog:test",
"eslint-plugin-jsx-a11y": "catalog:test",
"eslint-plugin-you-dont-need-lodash-underscore": "catalog:test",
"lint-staged": "catalog:dev",
"pnpm": "catalog:dev",
"simple-git-hooks": "catalog:dev",
"tsdown": "catalog:dev",
"tsx": "catalog:dev",
"typescript": "catalog:dev",
"vite": "catalog:dev",
"vitest": "catalog:test"
},
"simple-git-hooks": {
"pre-commit": "pnpm lint-staged"
},
"lint-staged": {
"*": "eslint --fix"
}
}
================================================
FILE: pnpm-workspace.yaml
================================================
shellEmulator: true
trustPolicy: no-downgrade
packages:
- playground
- docs
- packages/*
- examples/*
catalogs:
dev:
'@antfu/eslint-config': ^7.4.3
'@antfu/ni': ^28.2.0
'@types/json-schema': ^7.0.15
'@types/node': ^25.2.3
bumpp: ^10.4.1
eslint: ^10.0.0
lint-staged: ^16.2.7
pnpm: ^10.30.0
simple-git-hooks: ^2.13.1
tsdown: ^0.20.3
tsx: ^4.21.0
typescript: ^5.9.3
vite: ^7.3.1
prod:
json-schema-to-typescript-lite: ^15.0.0
ohash: ^2.0.11
test:
'@typescript-eslint/eslint-plugin': ^8.56.0
eslint-plugin-antfu: ^3.2.2
eslint-plugin-import-x: ^4.16.1
eslint-plugin-jsx-a11y: ^6.10.2
eslint-plugin-you-dont-need-lodash-underscore: ^6.14.0
vitest: ^4.0.18
onlyBuiltDependencies:
- esbuild
- simple-git-hooks
- unrs-resolver
================================================
FILE: src/core.ts
================================================
import type { ESLint, Linter, Rule } from 'eslint'
import type { JSONSchema4 } from 'json-schema'
import type { Options as CompileOptions } from 'json-schema-to-typescript-lite'
import { compile as compileSchema, normalizeIdentifier } from 'json-schema-to-typescript-lite'
export interface RulesTypeGenOptions {
/**
* Insert type imports for the generated types.
*
* @default true
*/
includeTypeImports?: boolean
/**
* Include comments to disable ESLint and Prettier.
*
* @default true
*/
includeIgnoreComments?: boolean
/**
* Augment the interface to ESLint's `Linter.RulesRecord`.
*
* @default true
*/
includeAugmentation?: boolean
/**
* Augment the `DefaultConfigNamesMap` interface for `eslint-flat-config-utils`
* For auto-completion of config names etc.
*
* @see https://github.com/antfu/eslint-flat-config-utils
* @default false
*/
augmentFlatConfigUtils?: boolean
/**
* The name of the exported type.
*
* @default 'RuleOptions'
*/
exportTypeName?: string
/**
* Options for json-schema-to-typescript
*/
compileOptions?: Partial<CompileOptions>
}
export interface FlatConfigsToPluginsOptions {
filterConfig?: (config: Linter.Config) => boolean
filterPlugin?: (name: string, plugin: ESLint.Plugin) => boolean
}
export interface FlatConfigsToRulesOptions
extends RulesTypeGenOptions, FlatConfigsToPluginsOptions {
}
export async function flatConfigsToPlugins(
configs: Linter.Config[],
options: FlatConfigsToPluginsOptions = {},
): Promise<Record<string, ESLint.Plugin>> {
const plugins: Record<string, ESLint.Plugin> = {}
for (const config of configs) {
if (!config.plugins)
continue
if (options.filterConfig?.(config) === false)
continue
for (const [name, plugin] of Object.entries(config.plugins)) {
if (options.filterPlugin?.(name, plugin) === false)
continue
plugins[name] = plugin
}
}
return plugins
}
/**
* Generate types for rules from an array of ESLint configurations.
*/
export async function flatConfigsToRulesDTS(
configs: Linter.Config[],
options: FlatConfigsToRulesOptions = {},
) {
return pluginsToRulesDTS(
await flatConfigsToPlugins(configs, options),
options,
)
}
/**
* Generate types for rule from an object of ESLint plugins.
*/
export async function pluginsToRulesDTS(
plugins: Record<string, ESLint.Plugin>,
options: RulesTypeGenOptions & { configNames?: string[] } = {},
) {
const {
includeTypeImports = true,
includeIgnoreComments = true,
includeAugmentation = true,
augmentFlatConfigUtils = false,
exportTypeName = 'RuleOptions',
compileOptions = {},
configNames = [],
} = options
const rules: [name: string, rule: Rule.RuleModule][] = []
for (const [pluginName, plugin] of Object.entries(plugins)) {
for (const [ruleName, rule] of Object.entries(plugin.rules || {})) {
if (rule?.meta == null || typeof rule.meta === 'object') {
rules.push([
pluginName
? `${pluginName}/${ruleName}`
: ruleName,
rule,
])
}
}
}
rules.sort(([a], [b]) => a.localeCompare(b))
const resolved = await Promise.all(rules
.map(([name, rule]) => compileRule(name, rule, compileOptions)))
const exports = [
...(includeIgnoreComments
? [
'/* eslint-disable */',
'/* prettier-ignore */',
]
: []),
...(includeTypeImports
? [
'import type { Linter } from \'eslint\'',
]
: []),
...(includeAugmentation
? [
'',
`declare module 'eslint' {`,
` namespace Linter {`,
` interface RulesRecord extends ${exportTypeName} {}`,
` }`,
`}`,
]
: []),
...(augmentFlatConfigUtils && configNames.length
? [
'',
'// @ts-ignore - In case the package is not installed',
`declare module 'eslint-flat-config-utils' {`,
` interface DefaultConfigNamesMap {`,
...configNames.map(name => ` '${name}'?: true,`),
` }`,
`}`,
]
: []),
'',
`export interface ${exportTypeName} {`,
...resolved.flatMap(({ typeName, name, jsdoc }) => [
jsdoc?.length
? ` /**\n${jsdoc.map(i => ` * ${i}`).join('\n').replaceAll(/\*\//g, '*\\/')}\n */`
: undefined,
` '${name}'?: Linter.RuleEntry<${typeName}>`,
]).filter(Boolean),
`}`,
]
const typeDeclarations = resolved.flatMap(({ typeDeclarations }) => typeDeclarations).join('\n')
return [
...exports,
'',
'/* ======= Declarations ======= */',
typeDeclarations,
].join('\n')
}
export async function compileRule(
ruleName: string,
rule: Rule.RuleModule,
compileOptions: Partial<CompileOptions> = {},
) {
const meta = rule.meta ?? {}
let schemas = meta.schema as JSONSchema4[] ?? []
if (!Array.isArray(schemas))
schemas = [schemas]
const id = normalizeIdentifier(ruleName)
const jsdoc: string[] = []
if (meta.docs?.description)
jsdoc.push(meta.docs.description)
if (meta.docs?.url)
jsdoc.push(`@see ${meta.docs.url}`)
if (meta.deprecated)
jsdoc.push('@deprecated')
if (!meta.schema || !schemas.length) {
return {
jsdoc,
name: ruleName,
typeName: '[]',
typeDeclarations: [],
}
}
let lines: string[] = []
const schema: JSONSchema4 = Array.isArray(meta.schema)
? { type: 'array', items: meta.schema, definitions: meta.schema?.[0]?.definitions }
: meta.schema
let overriddenRootSchemaId: string | undefined
let isRootSchema = true
try {
const compiled = await compileSchema(schema, id, {
unreachableDefinitions: false,
strictIndexSignatures: true,
customName(schema, keyName) {
const canOverrideRootSchemaId = isRootSchema
isRootSchema = false
const resolved = schema.title || schema.$id || keyName
if (resolved === id)
return id
if (!resolved)
return undefined!
const normalizedName = `_${normalizeIdentifier(`${id}_${resolved}`)}`
if (canOverrideRootSchemaId)
overriddenRootSchemaId = normalizedName
return normalizedName
},
...compileOptions,
})
lines.push(
compiled
.replace(/\/\*[\s\S]*?\*\//g, ''),
)
}
catch (error) {
console.warn(`Failed to compile schema ${ruleName} for rule ${ruleName}. Falling back to unknown.`)
console.error(error)
lines.push(`export type ${id} = unknown\n`)
}
lines = lines
.join('\n')
.split('\n')
.map(line => line.replace(/^(export )/, ''))
.filter(Boolean)
lines.unshift(`// ----- ${ruleName} -----`)
return {
name: ruleName,
jsdoc,
typeName: overriddenRootSchemaId ?? id,
typeDeclarations: lines,
}
}
================================================
FILE: src/index.ts
================================================
import type { Linter } from 'eslint'
import type { FlatConfigsToRulesOptions } from './core'
import { existsSync } from 'node:fs'
import fs from 'node:fs/promises'
import { hash as makeHash } from 'ohash'
import { version } from '../package.json'
import { flatConfigsToPlugins, pluginsToRulesDTS } from './core'
export interface TypeGenOptions extends FlatConfigsToRulesOptions {
/**
* Include core rules in the generated types.
*
* @default true
*/
includeCoreRules?: boolean
/**
* Path to the generated types file.
*/
dtsPath?: string
}
/**
* Wrap with resolved flat configs to generates types for rules.
*/
export default async function typegen(
configs: Promise<Linter.Config[]> | Linter.Config[],
options: TypeGenOptions = {},
): Promise<Linter.Config[]> {
const {
includeCoreRules = true,
dtsPath = 'eslint-typegen.d.ts',
} = options
const resolved = await configs
let configsInput = resolved
if (includeCoreRules) {
const { builtinRules } = await import('eslint/use-at-your-own-risk')
configsInput = [
{
plugins: {
'': { rules: Object.fromEntries(builtinRules.entries()) },
},
},
...configsInput,
]
}
const plugins = await flatConfigsToPlugins(configsInput, options)
const configNames = configsInput.flatMap(c => c.name).filter(Boolean) as string[]
const hashSource = [
// version of eslint-typegen
version,
// plugins name and version
...Object.entries(plugins)
.map(([n, p]) => [p.meta?.name, p.meta?.version].filter(Boolean).join('@') || p.name || n)
.sort(),
// config names
...configNames,
].join(' ')
const hash = makeHash(hashSource)
const previousHash = existsSync(dtsPath)
? (await fs.readFile(dtsPath, 'utf-8')).match(/\/\* eslint-typegen-hash: (\S*) \*\//)?.[1]?.trim()
: undefined
if (previousHash !== hash) {
const dts = [
'/* This file is generated by eslint-typegen, for augmenting rules types in ESLint */',
'/* You might want to include this file in tsconfig.json but excluded from git */',
`/* eslint-typegen-hash: ${hash} */`,
'',
await pluginsToRulesDTS(plugins, {
...options,
configNames,
}),
].join('\n')
fs.writeFile(dtsPath, dts, 'utf-8')
}
return resolved
}
================================================
FILE: test/index.test.ts
================================================
import { vue } from '@antfu/eslint-config'
import { expect, it } from 'vitest'
import { flatConfigsToRulesDTS, pluginsToRulesDTS } from '../src/core'
import { invalidJsonSchemaPlugin } from './input/invalid-json-schema-plugin'
import { pluginWithSchemaIds } from './input/plugin-with-schema-ids'
it('pluginsToRuleOptions', async () => {
await expect(await pluginsToRulesDTS({
// @ts-expect-error missing types
import: await import('eslint-plugin-import-x').then(m => m.default),
antfu: await import('eslint-plugin-antfu').then(m => m.default),
}))
.toMatchFileSnapshot('./output/plugins.d.ts')
})
it('pluginsToRuleOptions ts expect no warnings', async () => {
await pluginsToRulesDTS({
// @ts-expect-error missing types
ts: await import('@typescript-eslint/eslint-plugin').then(m => m.default),
})
})
it('core rules', async () => {
const { builtinRules } = await import('eslint/use-at-your-own-risk')
await expect(await pluginsToRulesDTS({
'': { rules: Object.fromEntries(builtinRules.entries()) },
}))
.toMatchFileSnapshot('./output/core-rules.d.ts')
})
it('invalid JSON schema plugin', async () => {
await expect(await pluginsToRulesDTS({
'invalid-json-schema-plugin': invalidJsonSchemaPlugin,
}))
.toMatchFileSnapshot('./output/invalid-json-schema-plugin.d.ts')
})
it('json schema with ids', async () => {
await expect(await pluginsToRulesDTS({
plugin: pluginWithSchemaIds,
}))
.toMatchFileSnapshot('./output/plugin-with-schema-ids.d.ts')
})
it('flatConfigsToRuleOptions', async () => {
await expect(await flatConfigsToRulesDTS(await vue() as any))
.toMatchFileSnapshot('./output/flat-config-vue.d.ts')
})
it('jsx-a11y', async () => {
await expect(await pluginsToRulesDTS({
// @ts-expect-error missing types
'jsx-a11y': await import('eslint-plugin-jsx-a11y').then(m => m.default),
}))
.toMatchFileSnapshot('./output/jsx-a11y.d.ts')
})
it('no rule `meta`', async () => {
await expect(await pluginsToRulesDTS({
// @ts-expect-error missing types
'you-dont-need-lodash-underscore': await import('eslint-plugin-you-dont-need-lodash-underscore').then(m => m.default),
}))
.toMatchFileSnapshot('./output/no-rule-meta.d.ts')
})
================================================
FILE: test/input/invalid-json-schema-plugin.ts
================================================
import type { ESLint, Rule } from 'eslint'
export const invalidJsonSchemaPlugin: ESLint.Plugin = {
rules: {
'invalid-json-schema-rule': {
create: () => null as unknown as Rule.RuleListener,
meta: {
docs: {
description: 'This rules points to a non-existing schema',
},
schema: {
allOf: [
{
$ref: '#/definitions/some-definition-that-does-not-exist',
},
],
type: 'object',
},
},
},
},
}
================================================
FILE: test/input/plugin-with-schema-ids.ts
================================================
import type { ESLint, Rule } from 'eslint'
export const pluginWithSchemaIds: ESLint.Plugin = {
rules: {
'schema-with-id-at-root': {
create: () => null as unknown as Rule.RuleListener,
meta: {
schema: {
id: 'schemaId',
type: 'object',
additionalProperties: false,
properties: {
a: {
id: 'aId',
type: 'string',
},
b: {
id: 'bId',
additionalProperties: false,
type: 'object',
properties: {
b1: {
type: 'string',
},
},
},
c: {
additionalProperties: false,
type: 'object',
properties: {
c1: {
type: 'string',
id: 'c1Id',
},
},
},
d: {
additionalProperties: false,
type: 'object',
properties: {
da: {
type: 'string',
},
},
},
},
},
},
},
},
}
================================================
FILE: test/output/core-rules.d.ts
================================================
/* eslint-disable */
/* prettier-ignore */
import type { Linter } from 'eslint'
declare module 'eslint' {
namespace Linter {
interface RulesRecord extends RuleOptions {}
}
}
export interface RuleOptions {
/**
* Enforce getter and setter pairs in objects and classes
* @see https://eslint.org/docs/latest/rules/accessor-pairs
*/
'accessor-pairs'?: Linter.RuleEntry<AccessorPairs>
/**
* 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<ArrayBracketNewline>
/**
* Enforce consistent spacing inside array brackets
* @see https://eslint.org/docs/latest/rules/array-bracket-spacing
* @deprecated
*/
'array-bracket-spacing'?: Linter.RuleEntry<ArrayBracketSpacing>
/**
* Enforce `return` statements in callbacks of array methods
* @see https://eslint.org/docs/latest/rules/array-callback-return
*/
'array-callback-return'?: Linter.RuleEntry<ArrayCallbackReturn>
/**
* Enforce line breaks after each array element
* @see https://eslint.org/docs/latest/rules/array-element-newline
* @deprecated
*/
'array-element-newline'?: Linter.RuleEntry<ArrayElementNewline>
/**
* Require braces around arrow function bodies
* @see https://eslint.org/docs/latest/rules/arrow-body-style
*/
'arrow-body-style'?: Linter.RuleEntry<ArrowBodyStyle>
/**
* Require parentheses around arrow function arguments
* @see https://eslint.org/docs/latest/rules/arrow-parens
* @deprecated
*/
'arrow-parens'?: Linter.RuleEntry<ArrowParens>
/**
* 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<ArrowSpacing>
/**
* 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<BlockSpacing>
/**
* Enforce consistent brace style for blocks
* @see https://eslint.org/docs/latest/rules/brace-style
* @deprecated
*/
'brace-style'?: Linter.RuleEntry<BraceStyle>
/**
* Require `return` statements after callbacks
* @see https://eslint.org/docs/latest/rules/callback-return
* @deprecated
*/
'callback-return'?: Linter.RuleEntry<CallbackReturn>
/**
* Enforce camelcase naming convention
* @see https://eslint.org/docs/latest/rules/camelcase
*/
'camelcase'?: Linter.RuleEntry<Camelcase>
/**
* Enforce or disallow capitalization of the first letter of a comment
* @see https://eslint.org/docs/latest/rules/capitalized-comments
*/
'capitalized-comments'?: Linter.RuleEntry<CapitalizedComments>
/**
* Enforce that class methods utilize `this`
* @see https://eslint.org/docs/latest/rules/class-methods-use-this
*/
'class-methods-use-this'?: Linter.RuleEntry<ClassMethodsUseThis>
/**
* Require or disallow trailing commas
* @see https://eslint.org/docs/latest/rules/comma-dangle
* @deprecated
*/
'comma-dangle'?: Linter.RuleEntry<CommaDangle>
/**
* Enforce consistent spacing before and after commas
* @see https://eslint.org/docs/latest/rules/comma-spacing
* @deprecated
*/
'comma-spacing'?: Linter.RuleEntry<CommaSpacing>
/**
* Enforce consistent comma style
* @see https://eslint.org/docs/latest/rules/comma-style
* @deprecated
*/
'comma-style'?: Linter.RuleEntry<CommaStyle>
/**
* Enforce a maximum cyclomatic complexity allowed in a program
* @see https://eslint.org/docs/latest/rules/complexity
*/
'complexity'?: Linter.RuleEntry<Complexity>
/**
* Enforce consistent spacing inside computed property brackets
* @see https://eslint.org/docs/latest/rules/computed-property-spacing
* @deprecated
*/
'computed-property-spacing'?: Linter.RuleEntry<ComputedPropertySpacing>
/**
* Require `return` statements to either always or never specify values
* @see https://eslint.org/docs/latest/rules/consistent-return
*/
'consistent-return'?: Linter.RuleEntry<ConsistentReturn>
/**
* Enforce consistent naming when capturing the current execution context
* @see https://eslint.org/docs/latest/rules/consistent-this
*/
'consistent-this'?: Linter.RuleEntry<ConsistentThis>
/**
* 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<Curly>
/**
* Require `default` cases in `switch` statements
* @see https://eslint.org/docs/latest/rules/default-case
*/
'default-case'?: Linter.RuleEntry<DefaultCase>
/**
* 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<DotLocation>
/**
* Enforce dot notation whenever possible
* @see https://eslint.org/docs/latest/rules/dot-notation
*/
'dot-notation'?: Linter.RuleEntry<DotNotation>
/**
* Require or disallow newline at the end of files
* @see https://eslint.org/docs/latest/rules/eol-last
* @deprecated
*/
'eol-last'?: Linter.RuleEntry<EolLast>
/**
* Require the use of `===` and `!==`
* @see https://eslint.org/docs/latest/rules/eqeqeq
*/
'eqeqeq'?: Linter.RuleEntry<Eqeqeq>
/**
* 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<[]>
/**
* 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<FuncCallSpacing>
/**
* 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<FuncNameMatching>
/**
* Require or disallow named `function` expressions
* @see https://eslint.org/docs/latest/rules/func-names
*/
'func-names'?: Linter.RuleEntry<FuncNames>
/**
* 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<FuncStyle>
/**
* 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<FunctionCallArgumentNewline>
/**
* Enforce consistent line breaks inside function parentheses
* @see https://eslint.org/docs/latest/rules/function-paren-newline
* @deprecated
*/
'function-paren-newline'?: Linter.RuleEntry<FunctionParenNewline>
/**
* Enforce consistent spacing around `*` operators in generator functions
* @see https://eslint.org/docs/latest/rules/generator-star-spacing
* @deprecated
*/
'generator-star-spacing'?: Linter.RuleEntry<GeneratorStarSpacing>
/**
* Enforce `return` statements in getters
* @see https://eslint.org/docs/latest/rules/getter-return
*/
'getter-return'?: Linter.RuleEntry<GetterReturn>
/**
* 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<GroupedAccessorPairs>
/**
* 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<HandleCallbackErr>
/**
* Disallow specified identifiers
* @see https://eslint.org/docs/latest/rules/id-blacklist
* @deprecated
*/
'id-blacklist'?: Linter.RuleEntry<IdBlacklist>
/**
* Disallow specified identifiers
* @see https://eslint.org/docs/latest/rules/id-denylist
*/
'id-denylist'?: Linter.RuleEntry<IdDenylist>
/**
* Enforce minimum and maximum identifier lengths
* @see https://eslint.org/docs/latest/rules/id-length
*/
'id-length'?: Linter.RuleEntry<IdLength>
/**
* Require identifiers to match a specified regular expression
* @see https://eslint.org/docs/latest/rules/id-match
*/
'id-match'?: Linter.RuleEntry<IdMatch>
/**
* Enforce the location of arrow function bodies
* @see https://eslint.org/docs/latest/rules/implicit-arrow-linebreak
* @deprecated
*/
'implicit-arrow-linebreak'?: Linter.RuleEntry<ImplicitArrowLinebreak>
/**
* Enforce consistent indentation
* @see https://eslint.org/docs/latest/rules/indent
* @deprecated
*/
'indent'?: Linter.RuleEntry<Indent>
/**
* Enforce consistent indentation
* @see https://eslint.org/docs/latest/rules/indent-legacy
* @deprecated
*/
'indent-legacy'?: Linter.RuleEntry<IndentLegacy>
/**
* Require or disallow initialization in variable declarations
* @see https://eslint.org/docs/latest/rules/init-declarations
*/
'init-declarations'?: Linter.RuleEntry<InitDeclarations>
/**
* 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<JsxQuotes>
/**
* 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<KeySpacing>
/**
* Enforce consistent spacing before and after keywords
* @see https://eslint.org/docs/latest/rules/keyword-spacing
* @deprecated
*/
'keyword-spacing'?: Linter.RuleEntry<KeywordSpacing>
/**
* Enforce position of line comments
* @see https://eslint.org/docs/latest/rules/line-comment-position
* @deprecated
*/
'line-comment-position'?: Linter.RuleEntry<LineCommentPosition>
/**
* Enforce consistent linebreak style
* @see https://eslint.org/docs/latest/rules/linebreak-style
* @deprecated
*/
'linebreak-style'?: Linter.RuleEntry<LinebreakStyle>
/**
* Require empty lines around comments
* @see https://eslint.org/docs/latest/rules/lines-around-comment
* @deprecated
*/
'lines-around-comment'?: Linter.RuleEntry<LinesAroundComment>
/**
* Require or disallow newlines around directives
* @see https://eslint.org/docs/latest/rules/lines-around-directive
* @deprecated
*/
'lines-around-directive'?: Linter.RuleEntry<LinesAroundDirective>
/**
* 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<LinesBetweenClassMembers>
/**
* Require or disallow logical assignment operator shorthand
* @see https://eslint.org/docs/latest/rules/logical-assignment-operators
*/
'logical-assignment-operators'?: Linter.RuleEntry<LogicalAssignmentOperators>
/**
* 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<MaxClassesPerFile>
/**
* Enforce a maximum depth that blocks can be nested
* @see https://eslint.org/docs/latest/rules/max-depth
*/
'max-depth'?: Linter.RuleEntry<MaxDepth>
/**
* Enforce a maximum line length
* @see https://eslint.org/docs/latest/rules/max-len
* @deprecated
*/
'max-len'?: Linter.RuleEntry<MaxLen>
/**
* Enforce a maximum number of lines per file
* @see https://eslint.org/docs/latest/rules/max-lines
*/
'max-lines'?: Linter.RuleEntry<MaxLines>
/**
* 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<MaxLinesPerFunction>
/**
* Enforce a maximum depth that callbacks can be nested
* @see https://eslint.org/docs/latest/rules/max-nested-callbacks
*/
'max-nested-callbacks'?: Linter.RuleEntry<MaxNestedCallbacks>
/**
* Enforce a maximum number of parameters in function definitions
* @see https://eslint.org/docs/latest/rules/max-params
*/
'max-params'?: Linter.RuleEntry<MaxParams>
/**
* Enforce a maximum number of statements allowed in function blocks
* @see https://eslint.org/docs/latest/rules/max-statements
*/
'max-statements'?: Linter.RuleEntry<MaxStatements>
/**
* 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<MaxStatementsPerLine>
/**
* Enforce a particular style for multiline comments
* @see https://eslint.org/docs/latest/rules/multiline-comment-style
* @deprecated
*/
'multiline-comment-style'?: Linter.RuleEntry<MultilineCommentStyle>
/**
* Enforce newlines between operands of ternary expressions
* @see https://eslint.org/docs/latest/rules/multiline-ternary
* @deprecated
*/
'multiline-ternary'?: Linter.RuleEntry<MultilineTernary>
/**
* Require constructor names to begin with a capital letter
* @see https://eslint.org/docs/latest/rules/new-cap
*/
'new-cap'?: Linter.RuleEntry<NewCap>
/**
* Enforce or disallow parentheses when invoking a constructor with no arguments
* @see https://eslint.org/docs/latest/rules/new-parens
* @deprecated
*/
'new-parens'?: Linter.RuleEntry<NewParens>
/**
* Require or disallow an empty line after variable declarations
* @see https://eslint.org/docs/latest/rules/newline-after-var
* @deprecated
*/
'newline-after-var'?: Linter.RuleEntry<NewlineAfterVar>
/**
* Require an empty line before `return` statements
* @see https://eslint.org/docs/latest/rules/newline-before-return
* @deprecated
*/
'newline-before-return'?: Linter.RuleEntry<[]>
/**
* Require a newline after each call in a method chain
* @see https://eslint.org/docs/latest/rules/newline-per-chained-call
* @deprecated
*/
'newline-per-chained-call'?: Linter.RuleEntry<NewlinePerChainedCall>
/**
* Disallow the use of `alert`, `confirm`, and `prompt`
* @see https://eslint.org/docs/latest/rules/no-alert
*/
'no-alert'?: Linter.RuleEntry<[]>
/**
* Disallow `Array` constructors
* @see https://eslint.org/docs/latest/rules/no-array-constructor
*/
'no-array-constructor'?: Linter.RuleEntry<[]>
/**
* Disallow using an async function as a Promise executor
* @see https://eslint.org/docs/latest/rules/no-async-promise-executor
*/
'no-async-promise-executor'?: Linter.RuleEntry<[]>
/**
* Disallow `await` inside of loops
* @see https://eslint.org/docs/latest/rules/no-await-in-loop
*/
'no-await-in-loop'?: Linter.RuleEntry<[]>
/**
* Disallow bitwise operators
* @see https://eslint.org/docs/latest/rules/no-bitwise
*/
'no-bitwise'?: Linter.RuleEntry<NoBitwise>
/**
* Disallow use of the `Buffer()` constructor
* @see https://eslint.org/docs/latest/rules/no-buffer-constructor
* @deprecated
*/
'no-buffer-constructor'?: Linter.RuleEntry<[]>
/**
* Disallow the use of `arguments.caller` or `arguments.callee`
* @see https://eslint.org/docs/latest/rules/no-caller
*/
'no-caller'?: Linter.RuleEntry<[]>
/**
* Disallow lexical declarations in case clauses
* @see https://eslint.org/docs/latest/rules/no-case-declarations
*/
'no-case-declarations'?: Linter.RuleEntry<[]>
/**
* Disallow `catch` clause parameters from shadowing variables in the outer scope
* @see https://eslint.org/docs/latest/rules/no-catch-shadow
* @deprecated
*/
'no-catch-shadow'?: Linter.RuleEntry<[]>
/**
* Disallow reassigning class members
* @see https://eslint.org/docs/latest/rules/no-class-assign
*/
'no-class-assign'?: Linter.RuleEntry<[]>
/**
* Disallow comparing against `-0`
* @see https://eslint.org/docs/latest/rules/no-compare-neg-zero
*/
'no-compare-neg-zero'?: Linter.RuleEntry<[]>
/**
* Disallow assignment operators in conditional expressions
* @see https://eslint.org/docs/latest/rules/no-cond-assign
*/
'no-cond-assign'?: Linter.RuleEntry<NoCondAssign>
/**
* Disallow arrow functions where they could be confused with comparisons
* @see https://eslint.org/docs/latest/rules/no-confusing-arrow
* @deprecated
*/
'no-confusing-arrow'?: Linter.RuleEntry<NoConfusingArrow>
/**
* Disallow the use of `console`
* @see https://eslint.org/docs/latest/rules/no-console
*/
'no-console'?: Linter.RuleEntry<NoConsole>
/**
* Disallow reassigning `const`, `using`, and `await using` variables
* @see https://eslint.org/docs/latest/rules/no-const-assign
*/
'no-const-assign'?: Linter.RuleEntry<[]>
/**
* Disallow expressions where the operation doesn't affect the value
* @see https://eslint.org/docs/latest/rules/no-constant-binary-expression
*/
'no-constant-binary-expression'?: Linter.RuleEntry<[]>
/**
* Disallow constant expressions in conditions
* @see https://eslint.org/docs/latest/rules/no-constant-condition
*/
'no-constant-condition'?: Linter.RuleEntry<NoConstantCondition>
/**
* Disallow returning value from constructor
* @see https://eslint.org/docs/latest/rules/no-constructor-return
*/
'no-constructor-return'?: Linter.RuleEntry<[]>
/**
* Disallow `continue` statements
* @see https://eslint.org/docs/latest/rules/no-continue
*/
'no-continue'?: Linter.RuleEntry<[]>
/**
* Disallow control characters in regular expressions
* @see https://eslint.org/docs/latest/rules/no-control-regex
*/
'no-control-regex'?: Linter.RuleEntry<[]>
/**
* Disallow the use of `debugger`
* @see https://eslint.org/docs/latest/rules/no-debugger
*/
'no-debugger'?: Linter.RuleEntry<[]>
/**
* Disallow deleting variables
* @see https://eslint.org/docs/latest/rules/no-delete-var
*/
'no-delete-var'?: Linter.RuleEntry<[]>
/**
* Disallow equal signs explicitly at the beginning of regular expressions
* @see https://eslint.org/docs/latest/rules/no-div-regex
*/
'no-div-regex'?: Linter.RuleEntry<[]>
/**
* Disallow duplicate arguments in `function` definitions
* @see https://eslint.org/docs/latest/rules/no-dupe-args
*/
'no-dupe-args'?: Linter.RuleEntry<[]>
/**
* Disallow duplicate class members
* @see https://eslint.org/docs/latest/rules/no-dupe-class-members
*/
'no-dupe-class-members'?: Linter.RuleEntry<[]>
/**
* Disallow duplicate conditions in if-else-if chains
* @see https://eslint.org/docs/latest/rules/no-dupe-else-if
*/
'no-dupe-else-if'?: Linter.RuleEntry<[]>
/**
* Disallow duplicate keys in object literals
* @see https://eslint.org/docs/latest/rules/no-dupe-keys
*/
'no-dupe-keys'?: Linter.RuleEntry<[]>
/**
* Disallow duplicate case labels
* @see https://eslint.org/docs/latest/rules/no-duplicate-case
*/
'no-duplicate-case'?: Linter.RuleEntry<[]>
/**
* Disallow duplicate module imports
* @see https://eslint.org/docs/latest/rules/no-duplicate-imports
*/
'no-duplicate-imports'?: Linter.RuleEntry<NoDuplicateImports>
/**
* Disallow `else` blocks after `return` statements in `if` statements
* @see https://eslint.org/docs/latest/rules/no-else-return
*/
'no-else-return'?: Linter.RuleEntry<NoElseReturn>
/**
* Disallow empty block statements
* @see https://eslint.org/docs/latest/rules/no-empty
*/
'no-empty'?: Linter.RuleEntry<NoEmpty>
/**
* Disallow empty character classes in regular expressions
* @see https://eslint.org/docs/latest/rules/no-empty-character-class
*/
'no-empty-character-class'?: Linter.RuleEntry<[]>
/**
* Disallow empty functions
* @see https://eslint.org/docs/latest/rules/no-empty-function
*/
'no-empty-function'?: Linter.RuleEntry<NoEmptyFunction>
/**
* Disallow empty destructuring patterns
* @see https://eslint.org/docs/latest/rules/no-empty-pattern
*/
'no-empty-pattern'?: Linter.RuleEntry<NoEmptyPattern>
/**
* Disallow empty static blocks
* @see https://eslint.org/docs/latest/rules/no-empty-static-block
*/
'no-empty-static-block'?: Linter.RuleEntry<[]>
/**
* Disallow `null` comparisons without type-checking operators
* @see https://eslint.org/docs/latest/rules/no-eq-null
*/
'no-eq-null'?: Linter.RuleEntry<[]>
/**
* Disallow the use of `eval()`
* @see https://eslint.org/docs/latest/rules/no-eval
*/
'no-eval'?: Linter.RuleEntry<NoEval>
/**
* Disallow reassigning exceptions in `catch` clauses
* @see https://eslint.org/docs/latest/rules/no-ex-assign
*/
'no-ex-assign'?: Linter.RuleEntry<[]>
/**
* Disallow extending native types
* @see https://eslint.org/docs/latest/rules/no-extend-native
*/
'no-extend-native'?: Linter.RuleEntry<NoExtendNative>
/**
* Disallow unnecessary calls to `.bind()`
* @see https://eslint.org/docs/latest/rules/no-extra-bind
*/
'no-extra-bind'?: Linter.RuleEntry<[]>
/**
* Disallow unnecessary boolean casts
* @see https://eslint.org/docs/latest/rules/no-extra-boolean-cast
*/
'no-extra-boolean-cast'?: Linter.RuleEntry<NoExtraBooleanCast>
/**
* Disallow unnecessary labels
* @see https://eslint.org/docs/latest/rules/no-extra-label
*/
'no-extra-label'?: Linter.RuleEntry<[]>
/**
* Disallow unnecessary parentheses
* @see https://eslint.org/docs/latest/rules/no-extra-parens
* @deprecated
*/
'no-extra-parens'?: Linter.RuleEntry<NoExtraParens>
/**
* Disallow unnecessary semicolons
* @see https://eslint.org/docs/latest/rules/no-extra-semi
* @deprecated
*/
'no-extra-semi'?: Linter.RuleEntry<[]>
/**
* Disallow fallthrough of `case` statements
* @see https://eslint.org/docs/latest/rules/no-fallthrough
*/
'no-fallthrough'?: Linter.RuleEntry<NoFallthrough>
/**
* Disallow leading or trailing decimal points in numeric literals
* @see https://eslint.org/docs/latest/rules/no-floating-decimal
* @deprecated
*/
'no-floating-decimal'?: Linter.RuleEntry<[]>
/**
* Disallow reassigning `function` declarations
* @see https://eslint.org/docs/latest/rules/no-func-assign
*/
'no-func-assign'?: Linter.RuleEntry<[]>
/**
* Disallow assignments to native objects or read-only global variables
* @see https://eslint.org/docs/latest/rules/no-global-assign
*/
'no-global-assign'?: Linter.RuleEntry<NoGlobalAssign>
/**
* Disallow shorthand type conversions
* @see https://eslint.org/docs/latest/rules/no-implicit-coercion
*/
'no-implicit-coercion'?: Linter.RuleEntry<NoImplicitCoercion>
/**
* Disallow declarations in the global scope
* @see https://eslint.org/docs/latest/rules/no-implicit-globals
*/
'no-implicit-globals'?: Linter.RuleEntry<NoImplicitGlobals>
/**
* Disallow the use of `eval()`-like methods
* @see https://eslint.org/docs/latest/rules/no-implied-eval
*/
'no-implied-eval'?: Linter.RuleEntry<[]>
/**
* Disallow assigning to imported bindings
* @see https://eslint.org/docs/latest/rules/no-import-assign
*/
'no-import-assign'?: Linter.RuleEntry<[]>
/**
* Disallow inline comments after code
* @see https://eslint.org/docs/latest/rules/no-inline-comments
*/
'no-inline-comments'?: Linter.RuleEntry<NoInlineComments>
/**
* Disallow variable or `function` declarations in nested blocks
* @see https://eslint.org/docs/latest/rules/no-inner-declarations
*/
'no-inner-declarations'?: Linter.RuleEntry<NoInnerDeclarations>
/**
* Disallow invalid regular expression strings in `RegExp` constructors
* @see https://eslint.org/docs/latest/rules/no-invalid-regexp
*/
'no-invalid-regexp'?: Linter.RuleEntry<NoInvalidRegexp>
/**
* Disallow use of `this` in contexts where the value of `this` is `undefined`
* @see https://eslint.org/docs/latest/rules/no-invalid-this
*/
'no-invalid-this'?: Linter.RuleEntry<NoInvalidThis>
/**
* Disallow irregular whitespace
* @see https://eslint.org/docs/latest/rules/no-irregular-whitespace
*/
'no-irregular-whitespace'?: Linter.RuleEntry<NoIrregularWhitespace>
/**
* Disallow the use of the `__iterator__` property
* @see https://eslint.org/docs/latest/rules/no-iterator
*/
'no-iterator'?: Linter.RuleEntry<[]>
/**
* Disallow labels that share a name with a variable
* @see https://eslint.org/docs/latest/rules/no-label-var
*/
'no-label-var'?: Linter.RuleEntry<[]>
/**
* Disallow labeled statements
* @see https://eslint.org/docs/latest/rules/no-labels
*/
'no-labels'?: Linter.RuleEntry<NoLabels>
/**
* Disallow unnecessary nested blocks
* @see https://eslint.org/docs/latest/rules/no-lone-blocks
*/
'no-lone-blocks'?: Linter.RuleEntry<[]>
/**
* Disallow `if` statements as the only statement in `else` blocks
* @see https://eslint.org/docs/latest/rules/no-lonely-if
*/
'no-lonely-if'?: Linter.RuleEntry<[]>
/**
* Disallow function declarations that contain unsafe references inside loop statements
* @see https://eslint.org/docs/latest/rules/no-loop-func
*/
'no-loop-func'?: Linter.RuleEntry<[]>
/**
* Disallow literal numbers that lose precision
* @see https://eslint.org/docs/latest/rules/no-loss-of-precision
*/
'no-loss-of-precision'?: Linter.RuleEntry<[]>
/**
* Disallow magic numbers
* @see https://eslint.org/docs/latest/rules/no-magic-numbers
*/
'no-magic-numbers'?: Linter.RuleEntry<NoMagicNumbers>
/**
* Disallow characters which are made with multiple code points in character class syntax
* @see https://eslint.org/docs/latest/rules/no-misleading-character-class
*/
'no-misleading-character-class'?: Linter.RuleEntry<NoMisleadingCharacterClass>
/**
* Disallow mixed binary operators
* @see https://eslint.org/docs/latest/rules/no-mixed-operators
* @deprecated
*/
'no-mixed-operators'?: Linter.RuleEntry<NoMixedOperators>
/**
* Disallow `require` calls to be mixed with regular variable declarations
* @see https://eslint.org/docs/latest/rules/no-mixed-requires
* @deprecated
*/
'no-mixed-requires'?: Linter.RuleEntry<NoMixedRequires>
/**
* Disallow mixed spaces and tabs for indentation
* @see https://eslint.org/docs/latest/rules/no-mixed-spaces-and-tabs
* @deprecated
*/
'no-mixed-spaces-and-tabs'?: Linter.RuleEntry<NoMixedSpacesAndTabs>
/**
* Disallow use of chained assignment expressions
* @see https://eslint.org/docs/latest/rules/no-multi-assign
*/
'no-multi-assign'?: Linter.RuleEntry<NoMultiAssign>
/**
* Disallow multiple spaces
* @see https://eslint.org/docs/latest/rules/no-multi-spaces
* @deprecated
*/
'no-multi-spaces'?: Linter.RuleEntry<NoMultiSpaces>
/**
* Disallow multiline strings
* @see https://eslint.org/docs/latest/rules/no-multi-str
*/
'no-multi-str'?: Linter.RuleEntry<[]>
/**
* Disallow multiple empty lines
* @see https://eslint.org/docs/latest/rules/no-multiple-empty-lines
* @deprecated
*/
'no-multiple-empty-lines'?: Linter.RuleEntry<NoMultipleEmptyLines>
/**
* Disallow assignments to native objects or read-only global variables
* @see https://eslint.org/docs/latest/rules/no-native-reassign
* @deprecated
*/
'no-native-reassign'?: Linter.RuleEntry<NoNativeReassign>
/**
* Disallow negated conditions
* @see https://eslint.org/docs/latest/rules/no-negated-condition
*/
'no-negated-condition'?: Linter.RuleEntry<[]>
/**
* Disallow negating the left operand in `in` expressions
* @see https://eslint.org/docs/latest/rules/no-negated-in-lhs
* @deprecated
*/
'no-negated-in-lhs'?: Linter.RuleEntry<[]>
/**
* Disallow nested ternary expressions
* @see https://eslint.org/docs/latest/rules/no-nested-ternary
*/
'no-nested-ternary'?: Linter.RuleEntry<[]>
/**
* Disallow `new` operators outside of assignments or comparisons
* @see https://eslint.org/docs/latest/rules/no-new
*/
'no-new'?: Linter.RuleEntry<[]>
/**
* Disallow `new` operators with the `Function` object
* @see https://eslint.org/docs/latest/rules/no-new-func
*/
'no-new-func'?: Linter.RuleEntry<[]>
/**
* Disallow `new` operators with global non-constructor functions
* @see https://eslint.org/docs/latest/rules/no-new-native-nonconstructor
*/
'no-new-native-nonconstructor'?: Linter.RuleEntry<[]>
/**
* Disallow `Object` constructors
* @see https://eslint.org/docs/latest/rules/no-new-object
* @deprecated
*/
'no-new-object'?: Linter.RuleEntry<[]>
/**
* Disallow `new` operators with calls to `require`
* @see https://eslint.org/docs/latest/rules/no-new-require
* @deprecated
*/
'no-new-require'?: Linter.RuleEntry<[]>
/**
* Disallow `new` operators with the `Symbol` object
* @see https://eslint.org/docs/latest/rules/no-new-symbol
* @deprecated
*/
'no-new-symbol'?: Linter.RuleEntry<[]>
/**
* Disallow `new` operators with the `String`, `Number`, and `Boolean` objects
* @see https://eslint.org/docs/latest/rules/no-new-wrappers
*/
'no-new-wrappers'?: Linter.RuleEntry<[]>
/**
* Disallow `\8` and `\9` escape sequences in string literals
* @see https://eslint.org/docs/latest/rules/no-nonoctal-decimal-escape
*/
'no-nonoctal-decimal-escape'?: Linter.RuleEntry<[]>
/**
* Disallow calling global object properties as functions
* @see https://eslint.org/docs/latest/rules/no-obj-calls
*/
'no-obj-calls'?: Linter.RuleEntry<[]>
/**
* Disallow calls to the `Object` constructor without an argument
* @see https://eslint.org/docs/latest/rules/no-object-constructor
*/
'no-object-constructor'?: Linter.RuleEntry<[]>
/**
* Disallow octal literals
* @see https://eslint.org/docs/latest/rules/no-octal
*/
'no-octal'?: Linter.RuleEntry<[]>
/**
* Disallow octal escape sequences in string literals
* @see https://eslint.org/docs/latest/rules/no-octal-escape
*/
'no-octal-escape'?: Linter.RuleEntry<[]>
/**
* Disallow reassigning function parameters
* @see https://eslint.org/docs/latest/rules/no-param-reassign
*/
'no-param-reassign'?: Linter.RuleEntry<NoParamReassign>
/**
* Disallow string concatenation with `__dirname` and `__filename`
* @see https://eslint.org/docs/latest/rules/no-path-concat
* @deprecated
*/
'no-path-concat'?: Linter.RuleEntry<[]>
/**
* Disallow the unary operators `++` and `--`
* @see https://eslint.org/docs/latest/rules/no-plusplus
*/
'no-plusplus'?: Linter.RuleEntry<NoPlusplus>
/**
* Disallow the use of `process.env`
* @see https://eslint.org/docs/latest/rules/no-process-env
* @deprecated
*/
'no-process-env'?: Linter.RuleEntry<[]>
/**
* Disallow the use of `process.exit()`
* @see https://eslint.org/docs/latest/rules/no-process-exit
* @deprecated
*/
'no-process-exit'?: Linter.RuleEntry<[]>
/**
* Disallow returning values from Promise executor functions
* @see https://eslint.org/docs/latest/rules/no-promise-executor-return
*/
'no-promise-executor-return'?: Linter.RuleEntry<NoPromiseExecutorReturn>
/**
* Disallow the use of the `__proto__` property
* @see https://eslint.org/docs/latest/rules/no-proto
*/
'no-proto'?: Linter.RuleEntry<[]>
/**
* Disallow calling some `Object.prototype` methods directly on objects
* @see https://eslint.org/docs/latest/rules/no-prototype-builtins
*/
'no-prototype-builtins'?: Linter.RuleEntry<[]>
/**
* Disallow variable redeclaration
* @see https://eslint.org/docs/latest/rules/no-redeclare
*/
'no-redeclare'?: Linter.RuleEntry<NoRedeclare>
/**
* Disallow multiple spaces in regular expressions
* @see https://eslint.org/docs/latest/rules/no-regex-spaces
*/
'no-regex-spaces'?: Linter.RuleEntry<[]>
/**
* Disallow specified names in exports
* @see https://eslint.org/docs/latest/rules/no-restricted-exports
*/
'no-restricted-exports'?: Linter.RuleEntry<NoRestrictedExports>
/**
* Disallow specified global variables
* @see https://eslint.org/docs/latest/rules/no-restricted-globals
*/
'no-restricted-globals'?: Linter.RuleEntry<NoRestrictedGlobals>
/**
* Disallow specified modules when loaded by `import`
* @see https://eslint.org/docs/latest/rules/no-restricted-imports
*/
'no-restricted-imports'?: Linter.RuleEntry<NoRestrictedImports>
/**
* Disallow specified modules when loaded by `require`
* @see https://eslint.org/docs/latest/rules/no-restricted-modules
* @deprecated
*/
'no-restricted-modules'?: Linter.RuleEntry<NoRestrictedModules>
/**
* Disallow certain properties on certain objects
* @see https://eslint.org/docs/latest/rules/no-restricted-properties
*/
'no-restricted-properties'?: Linter.RuleEntry<NoRestrictedProperties>
/**
* Disallow specified syntax
* @see https://eslint.org/docs/latest/rules/no-restricted-syntax
*/
'no-restricted-syntax'?: Linter.RuleEntry<NoRestrictedSyntax>
/**
* Disallow assignment operators in `return` statements
* @see https://eslint.org/docs/latest/rules/no-return-assign
*/
'no-return-assign'?: Linter.RuleEntry<NoReturnAssign>
/**
* Disallow unnecessary `return await`
* @see https://eslint.org/docs/latest/rules/no-return-await
* @deprecated
*/
'no-return-await'?: Linter.RuleEntry<[]>
/**
* Disallow `javascript:` URLs
* @see https://eslint.org/docs/latest/rules/no-script-url
*/
'no-script-url'?: Linter.RuleEntry<[]>
/**
* Disallow assignments where both sides are exactly the same
* @see https://eslint.org/docs/latest/rules/no-self-assign
*/
'no-self-assign'?: Linter.RuleEntry<NoSelfAssign>
/**
* Disallow comparisons where both sides are exactly the same
* @see https://eslint.org/docs/latest/rules/no-self-compare
*/
'no-self-compare'?: Linter.RuleEntry<[]>
/**
* Disallow comma operators
* @see https://eslint.org/docs/latest/rules/no-sequences
*/
'no-sequences'?: Linter.RuleEntry<NoSequences>
/**
* Disallow returning values from setters
* @see https://eslint.org/docs/latest/rules/no-setter-return
*/
'no-setter-return'?: Linter.RuleEntry<[]>
/**
* Disallow variable declarations from shadowing variables declared in the outer scope
* @see https://eslint.org/docs/latest/rules/no-shadow
*/
'no-shadow'?: Linter.RuleEntry<NoShadow>
/**
* Disallow identifiers from shadowing restricted names
* @see https://eslint.org/docs/latest/rules/no-shadow-restricted-names
*/
'no-shadow-restricted-names'?: Linter.RuleEntry<NoShadowRestrictedNames>
/**
* Disallow spacing between function identifiers and their applications (deprecated)
* @see https://eslint.org/docs/latest/rules/no-spaced-func
* @deprecated
*/
'no-spaced-func'?: Linter.RuleEntry<[]>
/**
* Disallow sparse arrays
* @see https://eslint.org/docs/latest/rules/no-sparse-arrays
*/
'no-sparse-arrays'?: Linter.RuleEntry<[]>
/**
* Disallow synchronous methods
* @see https://eslint.org/docs/latest/rules/no-sync
* @deprecated
*/
'no-sync'?: Linter.RuleEntry<NoSync>
/**
* Disallow all tabs
* @see https://eslint.org/docs/latest/rules/no-tabs
* @deprecated
*/
'no-tabs'?: Linter.RuleEntry<NoTabs>
/**
* Disallow template literal placeholder syntax in regular strings
* @see https://eslint.org/docs/latest/rules/no-template-curly-in-string
*/
'no-template-curly-in-string'?: Linter.RuleEntry<[]>
/**
* Disallow ternary operators
* @see https://eslint.org/docs/latest/rules/no-ternary
*/
'no-ternary'?: Linter.RuleEntry<[]>
/**
* Disallow `this`/`super` before calling `super()` in constructors
* @see https://eslint.org/docs/latest/rules/no-this-before-super
*/
'no-this-before-super'?: Linter.RuleEntry<[]>
/**
* Disallow throwing literals as exceptions
* @see https://eslint.org/docs/latest/rules/no-throw-literal
*/
'no-throw-literal'?: Linter.RuleEntry<[]>
/**
* Disallow trailing whitespace at the end of lines
* @see https://eslint.org/docs/latest/rules/no-trailing-spaces
* @deprecated
*/
'no-trailing-spaces'?: Linter.RuleEntry<NoTrailingSpaces>
/**
* Disallow `let` or `var` variables that are read but never assigned
* @see https://eslint.org/docs/latest/rules/no-unassigned-vars
*/
'no-unassigned-vars'?: Linter.RuleEntry<[]>
/**
* Disallow the use of undeclared variables unless mentioned in `/*global *\/` comments
* @see https://eslint.org/docs/latest/rules/no-undef
*/
'no-undef'?: Linter.RuleEntry<NoUndef>
/**
* Disallow initializing variables to `undefined`
* @see https://eslint.org/docs/latest/rules/no-undef-init
*/
'no-undef-init'?: Linter.RuleEntry<[]>
/**
* Disallow the use of `undefined` as an identifier
* @see https://eslint.org/docs/latest/rules/no-undefined
*/
'no-undefined'?: Linter.RuleEntry<[]>
/**
* Disallow dangling underscores in identifiers
* @see https://eslint.org/docs/latest/rules/no-underscore-dangle
*/
'no-underscore-dangle'?: Linter.RuleEntry<NoUnderscoreDangle>
/**
* Disallow confusing multiline expressions
* @see https://eslint.org/docs/latest/rules/no-unexpected-multiline
*/
'no-unexpected-multiline'?: Linter.RuleEntry<[]>
/**
* Disallow unmodified loop conditions
* @see https://eslint.org/docs/latest/rules/no-unmodified-loop-condition
*/
'no-unmodified-loop-condition'?: Linter.RuleEntry<[]>
/**
* Disallow ternary operators when simpler alternatives exist
* @see https://eslint.org/docs/latest/rules/no-unneeded-ternary
*/
'no-unneeded-ternary'?: Linter.RuleEntry<NoUnneededTernary>
/**
* Disallow unreachable code after `return`, `throw`, `continue`, and `break` statements
* @see https://eslint.org/docs/latest/rules/no-unreachable
*/
'no-unreachable'?: Linter.RuleEntry<[]>
/**
* Disallow loops with a body that allows only one iteration
* @see https://eslint.org/docs/latest/rules/no-unreachable-loop
*/
'no-unreachable-loop'?: Linter.RuleEntry<NoUnreachableLoop>
/**
* Disallow control flow statements in `finally` blocks
* @see https://eslint.org/docs/latest/rules/no-unsafe-finally
*/
'no-unsafe-finally'?: Linter.RuleEntry<[]>
/**
* Disallow negating the left operand of relational operators
* @see https://eslint.org/docs/latest/rules/no-unsafe-negation
*/
'no-unsafe-negation'?: Linter.RuleEntry<NoUnsafeNegation>
/**
* 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
*/
'no-unsafe-optional-chaining'?: Linter.RuleEntry<NoUnsafeOptionalChaining>
/**
* Disallow unused expressions
* @see https://eslint.org/docs/latest/rules/no-unused-expressions
*/
'no-unused-expressions'?: Linter.RuleEntry<NoUnusedExpressions>
/**
* Disallow unused labels
* @see https://eslint.org/docs/latest/rules/no-unused-labels
*/
'no-unused-labels'?: Linter.RuleEntry<[]>
/**
* Disallow unused private class members
* @see https://eslint.org/docs/latest/rules/no-unused-private-class-members
*/
'no-unused-private-class-members'?: Linter.RuleEntry<[]>
/**
* Disallow unused variables
* @see https://eslint.org/docs/latest/rules/no-unused-vars
*/
'no-unused-vars'?: Linter.RuleEntry<NoUnusedVars>
/**
* Disallow the use of variables before they are defined
* @see https://eslint.org/docs/latest/rules/no-use-before-define
*/
'no-use-before-define'?: Linter.RuleEntry<NoUseBeforeDefine>
/**
* Disallow variable assignments when the value is not used
* @see https://eslint.org/docs/latest/rules/no-useless-assignment
*/
'no-useless-assignment'?: Linter.RuleEntry<[]>
/**
* Disallow useless backreferences in regular expressions
* @see https://eslint.org/docs/latest/rules/no-useless-backreference
*/
'no-useless-backreference'?: Linter.RuleEntry<[]>
/**
* Disallow unnecessary calls to `.call()` and `.apply()`
* @see https://eslint.org/docs/latest/rules/no-useless-call
*/
'no-useless-call'?: Linter.RuleEntry<[]>
/**
* Disallow unnecessary `catch` clauses
* @see https://eslint.org/docs/latest/rules/no-useless-catch
*/
'no-useless-catch'?: Linter.RuleEntry<[]>
/**
* Disallow unnecessary computed property keys in objects and classes
* @see https://eslint.org/docs/latest/rules/no-useless-computed-key
*/
'no-useless-computed-key'?: Linter.RuleEntry<NoUselessComputedKey>
/**
* Disallow unnecessary concatenation of literals or template literals
* @see https://eslint.org/docs/latest/rules/no-useless-concat
*/
'no-useless-concat'?: Linter.RuleEntry<[]>
/**
* Disallow unnecessary constructors
* @see https://eslint.org/docs/latest/rules/no-useless-constructor
*/
'no-useless-constructor'?: Linter.RuleEntry<[]>
/**
* Disallow unnecessary escape characters
* @see https://eslint.org/docs/latest/rules/no-useless-escape
*/
'no-useless-escape'?: Linter.RuleEntry<NoUselessEscape>
/**
* Disallow renaming import, export, and destructured assignments to the same name
* @see https://eslint.org/docs/latest/rules/no-useless-rename
*/
'no-useless-rename'?: Linter.RuleEntry<NoUselessRename>
/**
* Disallow redundant return statements
* @see https://eslint.org/docs/latest/rules/no-useless-return
*/
'no-useless-return'?: Linter.RuleEntry<[]>
/**
* Require `let` or `const` instead of `var`
* @see https://eslint.org/docs/latest/rules/no-var
*/
'no-var'?: Linter.RuleEntry<[]>
/**
* Disallow `void` operators
* @see https://eslint.org/docs/latest/rules/no-void
*/
'no-void'?: Linter.RuleEntry<NoVoid>
/**
* Disallow specified warning terms in comments
* @see https://eslint.org/docs/latest/rules/no-warning-comments
*/
'no-warning-comments'?: Linter.RuleEntry<NoWarningComments>
/**
* Disallow whitespace before properties
* @see https://eslint.org/docs/latest/rules/no-whitespace-before-property
* @deprecated
*/
'no-whitespace-before-property'?: Linter.RuleEntry<[]>
/**
* Disallow `with` statements
* @see https://eslint.org/docs/latest/rules/no-with
*/
'no-with'?: Linter.RuleEntry<[]>
/**
* Enforce the location of single-line statements
* @see https://eslint.org/docs/latest/rules/nonblock-statement-body-position
* @deprecated
*/
'nonblock-statement-body-position'?: Linter.RuleEntry<NonblockStatementBodyPosition>
/**
* Enforce consistent line breaks after opening and before closing braces
* @see https://eslint.org/docs/latest/rules/object-curly-newline
* @deprecated
*/
'object-curly-newline'?: Linter.RuleEntry<ObjectCurlyNewline>
/**
* Enforce consistent spacing inside braces
* @see https://eslint.org/docs/latest/rules/object-curly-spacing
* @deprecated
*/
'object-curly-spacing'?: Linter.RuleEntry<ObjectCurlySpacing>
/**
* Enforce placing object properties on separate lines
* @see https://eslint.org/docs/latest/rules/object-property-newline
* @deprecated
*/
'object-property-newline'?: Linter.RuleEntry<ObjectPropertyNewline>
/**
* Require or disallow method and property shorthand syntax for object literals
* @see https://eslint.org/docs/latest/rules/object-shorthand
*/
'object-shorthand'?: Linter.RuleEntry<ObjectShorthand>
/**
* Enforce variables to be declared either together or separately in functions
* @see https://eslint.org/docs/latest/rules/one-var
*/
'one-var'?: Linter.RuleEntry<OneVar>
/**
* Require or disallow newlines around variable declarations
* @see https://eslint.org/docs/latest/rules/one-var-declaration-per-line
* @deprecated
*/
'one-var-declaration-per-line'?: Linter.RuleEntry<OneVarDeclarationPerLine>
/**
* Require or disallow assignment operator shorthand where possible
* @see https://eslint.org/docs/latest/rules/operator-assignment
*/
'operator-assignment'?: Linter.RuleEntry<OperatorAssignment>
/**
* Enforce consistent linebreak style for operators
* @see https://eslint.org/docs/latest/rules/operator-linebreak
* @deprecated
*/
'operator-linebreak'?: Linter.RuleEntry<OperatorLinebreak>
/**
* Require or disallow padding within blocks
* @see https://eslint.org/docs/latest/rules/padded-blocks
* @deprecated
*/
'padded-blocks'?: Linter.RuleEntry<PaddedBlocks>
/**
* Require or disallow padding lines between statements
* @see https://eslint.org/docs/latest/rules/padding-line-between-statements
* @deprecated
*/
'padding-line-between-statements'?: Linter.RuleEntry<PaddingLineBetweenStatements>
/**
* Require using arrow functions for callbacks
* @see https://eslint.org/docs/latest/rules/prefer-arrow-callback
*/
'prefer-arrow-callback'?: Linter.RuleEntry<PreferArrowCallback>
/**
* Require `const` declarations for variables that are never reassigned after declared
* @see https://eslint.org/docs/latest/rules/prefer-const
*/
'prefer-const'?: Linter.RuleEntry<PreferConst>
/**
* Require destructuring from arrays and/or objects
* @see https://eslint.org/docs/latest/rules/prefer-destructuring
*/
'prefer-destructuring'?: Linter.RuleEntry<PreferDestructuring>
/**
* Disallow the use of `Math.pow` in favor of the `**` operator
* @see https://eslint.org/docs/latest/rules/prefer-exponentiation-operator
*/
'prefer-exponentiation-operator'?: Linter.RuleEntry<[]>
/**
* Enforce using named capture group in regular expression
* @see https://eslint.org/docs/latest/rules/prefer-named-capture-group
*/
'prefer-named-capture-group'?: 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
*/
'prefer-numeric-literals'?: 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
*/
'prefer-object-has-own'?: 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
*/
'prefer-object-spread'?: Linter.RuleEntry<[]>
/**
* Require using Error objects as Promise rejection reasons
* @see https://eslint.org/docs/latest/rules/prefer-promise-reject-errors
*/
'prefer-promise-reject-errors'?: Linter.RuleEntry<PreferPromiseRejectErrors>
/**
* Require `Reflect` methods where applicable
* @see https://eslint.org/docs/latest/rules/prefer-reflect
* @deprecated
*/
'prefer-reflect'?: Linter.RuleEntry<PreferReflect>
/**
* Disallow use of the `RegExp` constructor in favor of regular expression literals
* @see https://eslint.org/docs/latest/rules/prefer-regex-literals
*/
'prefer-regex-literals'?: Linter.RuleEntry<PreferRegexLiterals>
/**
* Require rest parameters instead of `arguments`
* @see https://eslint.org/docs/latest/rules/prefer-rest-params
*/
'prefer-rest-params'?: Linter.RuleEntry<[]>
/**
* Require spread operators instead of `.apply()`
* @see https://eslint.org/docs/latest/rules/prefer-spread
*/
'prefer-spread'?: Linter.RuleEntry<[]>
/**
* Require template literals instead of string concatenation
* @see https://eslint.org/docs/latest/rules/prefer-template
*/
'prefer-template'?: Linter.RuleEntry<[]>
/**
* Disallow losing originally caught error when re-throwing custom errors
* @see https://eslint.org/docs/latest/rules/preserve-caught-error
*/
'preserve-caught-error'?: Linter.RuleEntry<PreserveCaughtError>
/**
* Require quotes around object literal property names
* @see https://eslint.org/docs/latest/rules/quote-props
* @deprecated
*/
'quote-props'?: Linter.RuleEntry<QuoteProps>
/**
* Enforce the consistent use of either backticks, double, or single quotes
* @see https://eslint.org/docs/latest/rules/quotes
* @deprecated
*/
'quotes'?: Linter.RuleEntry<Quotes>
/**
* Enforce the use of the radix argument when using `parseInt()`
* @see https://eslint.org/docs/latest/rules/radix
*/
'radix'?: Linter.RuleEntry<Radix>
/**
* 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
*/
'require-atomic-updates'?: Linter.RuleEntry<RequireAtomicUpdates>
/**
* Disallow async functions which have no `await` expression
* @see https://eslint.org/docs/latest/rules/require-await
*/
'require-await'?: Linter.RuleEntry<[]>
/**
* Enforce the use of `u` or `v` flag on regular expressions
* @see https://eslint.org/docs/latest/rules/require-unicode-regexp
*/
'require-unicode-regexp'?: Linter.RuleEntry<RequireUnicodeRegexp>
/**
* Require generator functions to contain `yield`
* @see https://eslint.org/docs/latest/rules/require-yield
*/
'require-yield'?: Linter.RuleEntry<[]>
/**
* Enforce spacing between rest and spread operators and their expressions
* @see https://eslint.org/docs/latest/rules/rest-spread-spacing
* @deprecated
*/
'rest-spread-spacing'?: Linter.RuleEntry<RestSpreadSpacing>
/**
* Require or disallow semicolons instead of ASI
* @see https://eslint.org/docs/latest/rules/semi
* @deprecated
*/
'semi'?: Linter.RuleEntry<Semi>
/**
* Enforce consistent spacing before and after semicolons
* @see https://eslint.org/docs/latest/rules/semi-spacing
* @deprecated
*/
'semi-spacing'?: Linter.RuleEntry<SemiSpacing>
/**
* Enforce location of semicolons
* @see https://eslint.org/docs/latest/rules/semi-style
* @deprecated
*/
'semi-style'?: Linter.RuleEntry<SemiStyle>
/**
* Enforce sorted `import` declarations within modules
* @see https://eslint.org/docs/latest/rules/sort-imports
*/
'sort-imports'?: Linter.RuleEntry<SortImports>
/**
* Require object keys to be sorted
* @see https://eslint.org/docs/latest/rules/sort-keys
*/
'sort-keys'?: Linter.RuleEntry<SortKeys>
/**
* Require variables within the same declaration block to be sorted
* @see https://eslint.org/docs/latest/rules/sort-vars
*/
'sort-vars'?: Linter.RuleEntry<SortVars>
/**
* Enforce consistent spacing before blocks
* @see https://eslint.org/docs/latest/rules/space-before-blocks
* @deprecated
*/
'space-before-blocks'?: Linter.RuleEntry<SpaceBeforeBlocks>
/**
* Enforce consistent spacing before `function` definition opening parenthesis
* @see https://eslint.org/docs/latest/rules/space-before-function-paren
* @deprecated
*/
'space-before-function-paren'?: Linter.RuleEntry<SpaceBeforeFunctionParen>
/**
* Enforce consistent spacing inside parentheses
* @see https://eslint.org/docs/latest/rules/space-in-parens
* @deprecated
*/
'space-in-parens'?: Linter.RuleEntry<SpaceInParens>
/**
* Require spacing around infix operators
* @see https://eslint.org/docs/latest/rules/space-infix-ops
* @deprecated
*/
'space-infix-ops'?: Linter.RuleEntry<SpaceInfixOps>
/**
* Enforce consistent spacing before or after unary operators
* @see https://eslint.org/docs/latest/rules/space-unary-ops
* @deprecated
*/
'space-unary-ops'?: Linter.RuleEntry<SpaceUnaryOps>
/**
* Enforce consistent spacing after the `//` or `/*` in a comment
* @see https://eslint.org/docs/latest/rules/spaced-comment
* @deprecated
*/
'spaced-comment'?: Linter.RuleEntry<SpacedComment>
/**
* Require or disallow strict mode directives
* @see https://eslint.org/docs/latest/rules/strict
*/
'strict'?: Linter.RuleEntry<Strict>
/**
* Enforce spacing around colons of switch statements
* @see https://eslint.org/docs/latest/rules/switch-colon-spacing
* @deprecated
*/
'switch-colon-spacing'?: Linter.RuleEntry<SwitchColonSpacing>
/**
* Require symbol descriptions
* @see https://eslint.org/docs/latest/rules/symbol-description
*/
'symbol-description'?: Linter.RuleEntry<[]>
/**
* Require or disallow spacing around embedded expressions of template strings
* @see https://eslint.org/docs/latest/rules/template-curly-spacing
* @deprecated
*/
'template-curly-spacing'?: Linter.RuleEntry<TemplateCurlySpacing>
/**
* Require or disallow spacing between template tags and their literals
* @see https://eslint.org/docs/latest/rules/template-tag-spacing
* @deprecated
*/
'template-tag-spacing'?: Linter.RuleEntry<TemplateTagSpacing>
/**
* Require or disallow Unicode byte order mark (BOM)
* @see https://eslint.org/docs/latest/rules/unicode-bom
*/
'unicode-bom'?: Linter.RuleEntry<UnicodeBom>
/**
* Require calls to `isNaN()` when checking for `NaN`
* @see https://eslint.org/docs/latest/rules/use-isnan
*/
'use-isnan'?: Linter.RuleEntry<UseIsnan>
/**
* Enforce comparing `typeof` expressions against valid strings
* @see https://eslint.org/docs/latest/rules/valid-typeof
*/
'valid-typeof'?: Linter.RuleEntry<ValidTypeof>
/**
* 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 parentheses around immediate `function` invocations
* @see https://eslint.org/docs/latest/rules/wrap-iife
* @deprecated
*/
'wrap-iife'?: Linter.RuleEntry<WrapIife>
/**
* Require parenthesis around regex literals
* @see https://eslint.org/docs/latest/rules/wrap-regex
* @deprecated
*/
'wrap-regex'?: 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<YieldStarSpacing>
/**
* Require or disallow "Yoda" conditions
* @see https://eslint.org/docs/latest/rules/yoda
*/
'yoda'?: Linter.RuleEntry<Yoda>
}
/* ======= Declarations ======= */
// ----- accessor-pairs -----
type AccessorPairs = []|[{
getWithoutSet?: boolean
setWithoutGet?: boolean
enforceForClassMembers?: boolean
enforceForTSTypes?: boolean
}]
// ----- 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
}]
// ----- block-spacing -----
type BlockSpacing = []|[("always" | "never")]
// ----- brace-style -----
type BraceStyle = []|[("1tbs" | "stroustrup" | "allman")]|[("1tbs" | "stroustrup" | "allman"), {
allowSingleLine?: boolean
}]
// ----- callback-return -----
type CallbackReturn = []|[string[]]
// ----- camelcase -----
type Camelcase = []|[{
ignoreDestructuring?: boolean
ignoreImports?: boolean
ignoreGlobals?: boolean
properties?: ("always" | "never")
allow?: string[]
}]
// ----- capitalized-comments -----
type CapitalizedComments = []|[("always" | "never")]|[("always" | "never"), ({
ignorePattern?: string
ignoreInlineComments?: boolean
ignoreConsecutiveComments?: boolean
} | {
line?: {
ignorePattern?: string
ignoreInlineComments?: boolean
ignoreConsecutiveComments?: boolean
}
block?: {
ignorePattern?: string
ignoreInlineComments?: boolean
ignoreConsecutiveComments?: boolean
}
})]
// ----- class-methods-use-this -----
type ClassMethodsUseThis = []|[{
exceptMethods?: string[]
enforceForClassFields?: boolean
ignoreOverrideMethods?: boolean
ignoreClassesWithImplements?: ("all" | "public-fields")
}]
// ----- 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
}
}]
// ----- 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")])
// ----- 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
}]
type _FuncNamesValue = ("always" | "as-needed" | "never")
// ----- func-style -----
type FuncStyle = []|[("declaration" | "expression")]|[("declaration" | "expression"), {
allowArrowFunctions?: boolean
allowTypeAnnotation?: boolean
overrides?: {
namedExports?: ("declaration" | "expression" | "ignore")
}
}]
// ----- 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")]|[("anyOrder" | "getBeforeSet" | "setBeforeGet"), {
enforceForTSTypes?: boolean
}]
// ----- 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")]
// ----- 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
}]
// ----- 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")
}]
// ----- init-declarations -----
type InitDeclarations = ([]|["always"] | []|["never"]|["never", {
ignoreForLoopInit?: boolean
}])
// ----- jsx-quotes -----
type JsxQuotes = []|[("prefer-single" | "prefer-double")]
// ----- key-spacing -----
type KeySpacing = []|[({
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
}
})]
// ----- 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
}
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
}
}
}]
// ----- 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 = []|[({
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
}]
// ----- logical-assignment-operators -----
type LogicalAssignmentOperators = (([]|["always"]|["always", {
enforceForIfStatements?: boolean
}] | ["never"]) & unknown[])
// ----- 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
countVoidThis?: boolean
countThis?: ("never" | "except-void" | "always")
})]
// ----- 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")]
// ----- 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 = []|[{
allow?: [string, ...(string)[]]
}]
// ----- no-constant-condition -----
type NoConstantCondition = []|[{
checkLoops?: ("all" | "allExceptWhileTrue" | "none" | true | false)
}]
// ----- no-duplicate-imports -----
type NoDuplicateImports = []|[{
includeExports?: boolean
allowSeparateTypeImports?: 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" | "privateConstructors" | "protectedConstructors" | "decoratedFunctions" | "overrideMethods")[]
}]
// ----- 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
ignoreEnums?: boolean
ignoreNumericLiteralTypes?: boolean
ignoreReadonlyClassProperties?: boolean
ignoreTypeIndexes?: 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
})[] | []|[{
globals: (string | {
name: string
message?: string
})[]
checkGlobalObject?: boolean
globalObjects?: string[]
}])
// ----- no-restricted-imports -----
type NoRestrictedImports = ((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[] | ({
[k: string]: unknown | undefined
} | {
[k: string]: unknown | undefined
})[])
}])
// ----- no-restricted-modules -----
type NoRestrictedModules = ((string | {
name: string
message?: string
})[] | {
paths?: (string | {
name: string
message?: string
})[]
patterns?: string[]
}[])
// ----- no-restricted-properties -----
type NoRestrictedProperties = ({
[k: string]: unknown | undefined
} | {
[k: string]: unknown | undefined
})[]
// ----- 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" | "types" | "functions-and-types")
allow?: string[]
ignoreOnInitialization?: boolean
ignoreTypeValueShadow?: boolean
ignoreFunctionTypeParameterNameValueShadow?: boolean
}]
// ----- no-shadow-restricted-names -----
type NoShadowRestrictedNames = []|[{
reportGlobalThis?: 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-unused-expressions -----
type NoUnusedExpressions = []|[{
allowShortCircuit?: boolean
allowTernary?: boolean
allowTaggedTemplates?: boolean
enforceForJSX?: boolean
ignoreDirectives?: 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
ignoreUsingDeclarations?: boolean
reportUsedIgnorePattern?: boolean
})]
// ----- no-use-before-define -----
type NoUseBeforeDefine = []|[("nofunc" | {
functions?: boolean
classes?: boolean
variables?: boolean
allowNamedExports?: boolean
enums?: boolean
typedefs?: boolean
ignoreTypeReferences?: boolean
})]
// ----- no-useless-computed-key -----
type NoUselessComputedKey = []|[{
enforceForClassMembers?: boolean
}]
// ----- no-useless-escape -----
type NoUselessEscape = []|[{
allowRegexCharacters?: string[]
}]
// ----- 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")
}
}]
// ----- 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
})
ExportDeclaration?: (("always" | "never") | {
multiline?: boolean
minProperties?: number
consistent?: boolean
})
})]
// ----- 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")
using?: ("always" | "never" | "consecutive")
awaitUsing?: ("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
}
}]
// ----- 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
}[]
// ----- 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
}]
// ----- preserve-caught-error -----
type PreserveCaughtError = []|[{
requireCatchParameter?: boolean
}]
// ----- 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")]
// ----- 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")]
// ----- 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
}
}]
// ----- strict -----
type Strict = []|[("never" | "global" | "function" | "safe")]
// ----- switch-colon-spacing -----
type SwitchColonSpacing = []|[{
before?: boolean
after?: boolean
}]
// ----- template-curly-spacing -----
type TemplateCurlySpacing = []|[("always" | "never")]
// ----- template-tag-spacing -----
type TemplateTagSpacing = []|[("always" | "never")]
// ----- unicode-bom -----
type UnicodeBom = []|[("always" | "never")]
// ----- use-isnan -----
type UseIsnan = []|[{
enforceForSwitchCase?: boolean
enforceForIndexOf?: boolean
}]
// ----- valid-typeof -----
type ValidTypeof = []|[{
requireStringLiterals?: boolean
}]
// ----- wrap-iife -----
type WrapIife = []|[("outside" | "inside" | "any")]|[("outside" | "inside" | "any"), {
functionPrototypeMethods?: boolean
}]
// ----- yield-star-spacing -----
type YieldStarSpacing = []|[(("before" | "after" | "both" | "neither") | {
before?: boolean
after?: boolean
})]
// ----- yoda -----
type Yoda = []|[("always" | "never")]|[("always" | "never"), {
exceptRange?: boolean
onlyEquality?: boolean
}]
================================================
FILE: test/output/flat-config-vue.d.ts
================================================
/* eslint-disable */
/* prettier-ignore */
import type { Linter } from 'eslint'
declare module 'eslint' {
namespace Linter {
interface RulesRecord extends RuleOptions {}
}
}
export interface RuleOptions {
/**
* Enforce linebreaks after opening and before closing array brackets in `<template>`
* @see https://eslint.vuejs.org/rules/array-bracket-newline.html
*/
'vue/array-bracket-newline'?: Linter.RuleEntry<VueArrayBracketNewline>
/**
* Enforce consistent spacing inside array brackets in `<template>`
* @see https://eslint.vuejs.org/rules/array-bracket-spacing.html
*/
'vue/array-bracket-spacing'?: Linter.RuleEntry<VueArrayBracketSpacing>
/**
* Enforce line breaks after each array element in `<template>`
* @see https://eslint.vuejs.org/rules/array-element-newline.html
*/
'vue/array-element-newline'?: Linter.RuleEntry<VueArrayElementNewline>
/**
* Enforce consistent spacing before and after the arrow in arrow functions in `<template>`
* @see https://eslint.vuejs.org/rules/arrow-spacing.html
*/
'vue/arrow-spacing'?: Linter.RuleEntry<VueArrowSpacing>
/**
* enforce attribute naming style on custom components in template
* @see https://eslint.vuejs.org/rules/attribute-hyphenation.html
*/
'vue/attribute-hyphenation'?: Linter.RuleEntry<VueAttributeHyphenation>
/**
* enforce order of attributes
* @see https://eslint.vuejs.org/rules/attributes-order.html
*/
'vue/attributes-order'?: Linter.RuleEntry<VueAttributesOrder>
/**
* disallow use other than available `lang`
* @see https://eslint.vuejs.org/rules/block-lang.html
*/
'vue/block-lang'?: Linter.RuleEntry<VueBlockLang>
/**
* enforce order of component top-level elements
* @see https://eslint.vuejs.org/rules/block-order.html
*/
'vue/block-order'?: Linter.RuleEntry<VueBlockOrder>
/**
* Disallow or enforce spaces inside of blocks after opening block and before closing block in `<template>`
* @see https://eslint.vuejs.org/rules/block-spacing.html
*/
'vue/block-spacing'?: Linter.RuleEntry<VueBlockSpacing>
/**
* enforce line breaks after opening and before closing block-level tags
* @see https://eslint.vuejs.org/rules/block-tag-newline.html
*/
'vue/block-tag-newline'?: Linter.RuleEntry<VueBlockTagNewline>
/**
* Enforce consistent brace style for blocks in `<template>`
* @see https://eslint.vuejs.org/rules/brace-style.html
*/
'vue/brace-style'?: Linter.RuleEntry<VueBraceStyle>
/**
* Enforce camelcase naming convention in `<template>`
* @see https://eslint.vuejs.org/rules/camelcase.html
*/
'vue/camelcase'?: Linter.RuleEntry<VueCamelcase>
/**
* Require or disallow trailing commas in `<template>`
* @see https://eslint.vuejs.org/rules/comma-dangle.html
*/
'vue/comma-dangle'?: Linter.RuleEntry<VueCommaDangle>
/**
* Enforce consistent spacing before and after commas in `<template>`
* @see https://eslint.vuejs.org/rules/comma-spacing.html
*/
'vue/comma-spacing'?: Linter.RuleEntry<VueCommaSpacing>
/**
* Enforce consistent comma style in `<template>`
* @see https://eslint.vuejs.org/rules/comma-style.html
*/
'vue/comma-style'?: Linter.RuleEntry<VueCommaStyle>
/**
* support comment-directives in `<template>`
* @see https://eslint.vuejs.org/rules/comment-directive.html
*/
'vue/comment-directive'?: Linter.RuleEntry<VueCommentDirective>
/**
* enforce component API style
* @see https://eslint.vuejs.org/rules/component-api-style.html
*/
'vue/component-api-style'?: Linter.RuleEntry<VueComponentApiStyle>
/**
* enforce specific casing for component definition name
* @see https://eslint.vuejs.org/rules/component-definition-name-casing.html
*/
'vue/component-definition-name-casing'?: Linter.RuleEntry<VueComponentDefinitionNameCasing>
/**
* enforce specific casing for the component naming style in template
* @see https://eslint.vuejs.org/rules/component-name-in-template-casing.html
*/
'vue/component-name-in-template-casing'?: Linter.RuleEntry<VueComponentNameInTemplateCasing>
/**
* enforce the casing of component name in `components` options
* @see https://eslint.vuejs.org/rules/component-options-name-casing.html
*/
'vue/component-options-name-casing'?: Linter.RuleEntry<VueComponentOptionsNameCasing>
/**
* enforce specific casing for custom event name
* @see https://eslint.vuejs.org/rules/custom-event-name-casing.html
*/
'vue/custom-event-name-casing'?: Linter.RuleEntry<VueCustomEventNameCasing>
/**
* enforce declaration style of `defineEmits`
* @see https://eslint.vuejs.org/rules/define-emits-declaration.html
*/
'vue/define-emits-declaration'?: Linter.RuleEntry<VueDefineEmitsDeclaration>
/**
* enforce order of compiler macros (`defineProps`, `defineEmits`, etc.)
* @see https://eslint.vuejs.org/rules/define-macros-order.html
*/
'vue/define-macros-order'?: Linter.RuleEntry<VueDefineMacrosOrder>
/**
* enforce declaration style of `defineProps`
* @see https://eslint.vuejs.org/rules/define-props-declaration.html
*/
'vue/define-props-declaration'?: Linter.RuleEntry<VueDefinePropsDeclaration>
/**
* enforce consistent style for props destructuring
* @see https://eslint.vuejs.org/rules/define-props-destructuring.html
*/
'vue/define-props-destructuring'?: Linter.RuleEntry<VueDefinePropsDestructuring>
/**
* Enforce consistent newlines before and after dots in `<template>`
* @see https://eslint.vuejs.org/rules/dot-location.html
*/
'vue/dot-location'?: Linter.RuleEntry<VueDotLocation>
/**
* Enforce dot notation whenever possible in `<template>`
* @see https://eslint.vuejs.org/rules/dot-notation.html
*/
'vue/dot-notation'?: Linter.RuleEntry<VueDotNotation>
/**
* enforce or forbid the use of the `scoped` and `module` attributes in SFC top level style tags
* @see https://eslint.vuejs.org/rules/enforce-style-attribute.html
*/
'vue/enforce-style-attribute'?: Linter.RuleEntry<VueEnforceStyleAttribute>
/**
* Require the use of `===` and `!==` in `<template>`
* @see https://eslint.vuejs.org/rules/eqeqeq.html
*/
'vue/eqeqeq'?: Linter.RuleEntry<VueEqeqeq>
/**
* enforce the location of first attribute
* @see https://eslint.vuejs.org/rules/first-attribute-linebreak.html
*/
'vue/first-attribute-linebreak'?: Linter.RuleEntry<VueFirstAttributeLinebreak>
/**
* Require or disallow spacing between function identifiers and their invocations in `<template>`
* @see https://eslint.vuejs.org/rules/func-call-spacing.html
*/
'vue/func-call-spacing'?: Linter.RuleEntry<VueFuncCallSpacing>
/**
* disallow usage of button without an explicit type attribute
* @see https://eslint.vuejs.org/rules/html-button-has-type.html
*/
'vue/html-button-has-type'?: Linter.RuleEntry<VueHtmlButtonHasType>
/**
* require or disallow a line break before tag's closing brackets
* @see https://eslint.vuejs.org/rules/html-closing-bracket-newline.html
*/
'vue/html-closing-bracket-newline'?: Linter.RuleEntry<VueHtmlClosingBracketNewline>
/**
* require or disallow a space before tag's closing brackets
* @see https://eslint.vuejs.org/rules/html-closing-bracket-spacing.html
*/
'vue/html-closing-bracket-spacing'?: Linter.RuleEntry<VueHtmlClosingBracketSpacing>
/**
* enforce unified line break in HTML comments
* @see https://eslint.vuejs.org/rules/html-comment-content-newline.html
*/
'vue/html-comment-content-newline'?: Linter.RuleEntry<VueHtmlCommentContentNewline>
/**
* enforce unified spacing in HTML comments
* @see https://eslint.vuejs.org/rules/html-comment-content-spacing.html
*/
'vue/html-comment-content-spacing'?: Linter.RuleEntry<VueHtmlCommentContentSpacing>
/**
* enforce consistent indentation in HTML comments
* @see https://eslint.vuejs.org/rules/html-comment-indent.html
*/
'vue/html-comment-indent'?: Linter.RuleEntry<VueHtmlCommentIndent>
/**
* enforce end tag style
* @see https://eslint.vuejs.org/rules/html-end-tags.html
*/
'vue/html-end-tags'?: Linter.RuleEntry<[]>
/**
* enforce consistent indentation in `<template>`
* @see https://eslint.vuejs.org/rules/html-indent.html
*/
'vue/html-indent'?: Linter.RuleEntry<VueHtmlIndent>
/**
* enforce quotes style of HTML attributes
* @see https://eslint.vuejs.org/rules/html-quotes.html
*/
'vue/html-quotes'?: Linter.RuleEntry<VueHtmlQuotes>
/**
* enforce self-closing style
* @see https://eslint.vuejs.org/rules/html-self-closing.html
*/
'vue/html-self-closing'?: Linter.RuleEntry<VueHtmlSelfClosing>
/**
* prevent variables used in JSX to be marked as unused
* @see https://eslint.vuejs.org/rules/jsx-uses-vars.html
*/
'vue/jsx-uses-vars'?: Linter.RuleEntry<[]>
/**
* Enforce consistent spacing between property names and type annotations in types and interfaces in `<template>`
* @see https://eslint.vuejs.org/rules/key-spacing.html
*/
'vue/key-spacing'?: Linter.RuleEntry<VueKeySpacing>
/**
* Enforce consistent spacing before and after keywords in `<template>`
* @see https://eslint.vuejs.org/rules/keyword-spacing.html
*/
'vue/keyword-spacing'?: Linter.RuleEntry<VueKeywordSpacing>
/**
* require component name property to match its file name
* @see https://eslint.vuejs.org/rules/match-component-file-name.html
*/
'vue/match-component-file-name'?: Linter.RuleEntry<VueMatchComponentFileName>
/**
* require the registered component name to match the imported component name
* @see https://eslint.vuejs.org/rules/match-component-import-name.html
*/
'vue/match-component-import-name'?: Linter.RuleEntry<[]>
/**
* enforce the maximum number of attributes per line
* @see https://eslint.vuejs.org/rules/max-attributes-per-line.html
*/
'vue/max-attributes-per-line'?: Linter.RuleEntry<VueMaxAttributesPerLine>
/**
* enforce a maximum line length in `.vue` files
* @see https://eslint.vuejs.org/rules/max-len.html
*/
'vue/max-len'?: Linter.RuleEntry<VueMaxLen>
/**
* enforce maximum number of lines in Vue SFC blocks
* @see https://eslint.vuejs.org/rules/max-lines-per-block.html
*/
'vue/max-lines-per-block'?: Linter.RuleEntry<VueMaxLinesPerBlock>
/**
* enforce maximum number of props in Vue component
* @see https://eslint.vuejs.org/rules/max-props.html
*/
'vue/max-props'?: Linter.RuleEntry<VueMaxProps>
/**
* enforce maximum depth of template
* @see https://eslint.vuejs.org/rules/max-template-depth.html
*/
'vue/max-template-depth'?: Linter.RuleEntry<VueMaxTemplateDepth>
/**
* require component names to be always multi-word
* @see https://eslint.vuejs.org/rules/multi-word-component-names.html
*/
'vue/multi-word-component-names'?: Linter.RuleEntry<VueMultiWordComponentNames>
/**
* require a line break before and after the contents of a multiline element
* @see https://eslint.vuejs.org/rules/multiline-html-element-content-newline.html
*/
'vue/multiline-html-element-content-newline'?: Linter.RuleEntry<VueMultilineHtmlElementContentNewline>
/**
* Enforce newlines between operands of ternary expressions in `<template>`
* @see https://eslint.vuejs.org/rules/multiline-ternary.html
*/
'vue/multiline-ternary'?: Linter.RuleEntry<VueMultilineTernary>
/**
* enforce unified spacing in mustache interpolations
* @see https://eslint.vuejs.org/rules/mustache-interpolation-spacing.html
*/
'vue/mustache-interpolation-spacing'?: Linter.RuleEntry<VueMustacheInterpolationSpacing>
/**
* enforce new lines between multi-line properties in Vue components
* @see https://eslint.vuejs.org/rules/new-line-between-multi-line-property.html
*/
'vue/new-line-between-multi-line-property'?: Linter.RuleEntry<VueNewLineBetweenMultiLineProperty>
/**
* enforce Promise or callback style in `nextTick`
* @see https://eslint.vuejs.org/rules/next-tick-style.html
*/
'vue/next-tick-style'?: Linter.RuleEntry<VueNextTickStyle>
/**
* disallow using arrow functions to define watcher
* @see https://eslint.vuejs.org/rules/no-arrow-functions-in-watch.html
*/
'vue/no-arrow-functions-in-watch'?: Linter.RuleEntry<[]>
/**
* disallow asynchronous actions in computed properties
* @see https://eslint.vuejs.org/rules/no-async-in-computed-properties.html
*/
'vue/no-async-in-computed-properties'?: Linter.RuleEntry<VueNoAsyncInComputedProperties>
/**
* disallow the use of bare strings in `<template>`
* @see https://eslint.vuejs.org/rules/no-bare-strings-in-template.html
*/
'vue/no-bare-strings-in-template'?: Linter.RuleEntry<VueNoBareStringsInTemplate>
/**
* disallow boolean defaults
* @see https://eslint.vuejs.org/rules/no-boolean-default.html
*/
'vue/no-boolean-default'?: Linter.RuleEntry<VueNoBooleanDefault>
/**
* disallow element's child contents which would be overwritten by a directive like `v-html` or `v-text`
* @see https://eslint.vuejs.org/rules/no-child-content.html
*/
'vue/no-child-content'?: Linter.RuleEntry<VueNoChildContent>
/**
* disallow accessing computed properties in `data`
* @see https://eslint.vuejs.org/rules/no-computed-properties-in-data.html
*/
'vue/no-computed-properties-in-data'?: Linter.RuleEntry<[]>
/**
* Disallow the use of `console` in `<template>`
* @see https://eslint.vuejs.org/rules/no-console.html
*/
'vue/no-console'?: Linter.RuleEntry<VueNoConsole>
/**
* Disallow constant expressions in conditions in `<template>`
* @see https://eslint.vuejs.org/rules/no-constant-condition.html
*/
'vue/no-constant-condition'?: Linter.RuleEntry<VueNoConstantCondition>
/**
* disallow custom modifiers on v-model used on the component
* @see https://eslint.vuejs.org/rules/no-custom-modifiers-on-v-model.html
*/
'vue/no-custom-modifiers-on-v-model'?: Linter.RuleEntry<[]>
/**
* disallow using deprecated object declaration on data (in Vue.js 3.0.0+)
* @see https://eslint.vuejs.org/rules/no-deprecated-data-object-declaration.html
*/
'vue/no-deprecated-data-object-declaration'?: Linter.RuleEntry<[]>
/**
* disallow using deprecated `$delete` and `$set` (in Vue.js 3.0.0+)
* @see https://eslint.vuejs.org/rules/no-deprecated-delete-set.html
*/
'vue/no-deprecated-delete-set'?: Linter.RuleEntry<[]>
/**
* disallow using deprecated `destroyed` and `beforeDestroy` lifecycle hooks (in Vue.js 3.0.0+)
* @see https://eslint.vuejs.org/rules/no-deprecated-destroyed-lifecycle.html
*/
'vue/no-deprecated-destroyed-lifecycle'?: Linter.RuleEntry<[]>
/**
* disallow using deprecated `$listeners` (in Vue.js 3.0.0+)
* @see https://eslint.vuejs.org/rules/no-deprecated-dollar-listeners-api.html
*/
'vue/no-deprecated-dollar-listeners-api'?: Linter.RuleEntry<[]>
/**
* disallow using deprecated `$scopedSlots` (in Vue.js 3.0.0+)
* @see https://eslint.vuejs.org/rules/no-deprecated-dollar-scopedslots-api.html
*/
'vue/no-deprecated-dollar-scopedslots-api'?: Linter.RuleEntry<[]>
/**
* disallow using deprecated events api (in Vue.js 3.0.0+)
* @see https://eslint.vuejs.org/rules/no-deprecated-events-api.html
*/
'vue/no-deprecated-events-api'?: Linter.RuleEntry<[]>
/**
* disallow using deprecated filters syntax (in Vue.js 3.0.0+)
* @see https://eslint.vuejs.org/rules/no-deprecated-filter.html
*/
'vue/no-deprecated-filter'?: Linter.RuleEntry<[]>
/**
* disallow using deprecated the `functional` template (in Vue.js 3.0.0+)
* @see https://eslint.vuejs.org/rules/no-deprecated-functional-template.html
*/
'vue/no-deprecated-functional-template'?: Linter.RuleEntry<[]>
/**
* disallow using deprecated the `is` attribute on HTML elements (in Vue.js 3.0.0+)
* @see https://eslint.vuejs.org/rules/no-deprecated-html-element-is.html
*/
'vue/no-deprecated-html-element-is'?: Linter.RuleEntry<[]>
/**
* disallow using deprecated `inline-template` attribute (in Vue.js 3.0.0+)
* @see https://eslint.vuejs.org/rules/no-deprecated-inline-template.html
*/
'vue/no-deprecated-inline-template'?: Linter.RuleEntry<[]>
/**
* disallow deprecated `model` definition (in Vue.js 3.0.0+)
* @see https://eslint.vuejs.org/rules/no-deprecated-model-definition.html
*/
'vue/no-deprecated-model-definition'?: Linter.RuleEntry<VueNoDeprecatedModelDefinition>
/**
* disallow deprecated `this` access in props default function (in Vue.js 3.0.0+)
* @see https://eslint.vuejs.org/rules/no-deprecated-props-default-this.html
*/
'vue/no-deprecated-props-default-this'?: Linter.RuleEntry<[]>
/**
* disallow using deprecated `tag` property on `RouterLink` (in Vue.js 3.0.0+)
* @see https://eslint.vuejs.org/rules/no-deprecated-router-link-tag-prop.html
*/
'vue/no-deprecated-router-link-tag-prop'?: Linter.RuleEntry<VueNoDeprecatedRouterLinkTagProp>
/**
* disallow deprecated `scope` attribute (in Vue.js 2.5.0+)
* @see https://eslint.vuejs.org/rules/no-deprecated-scope-attribute.html
*/
'vue/no-deprecated-scope-attribute'?: Linter.RuleEntry<[]>
/**
* disallow deprecated `slot` attribute (in Vue.js 2.6.0+)
* @see https://eslint.vuejs.org/rules/no-deprecated-slot-attribute.html
*/
'vue/no-deprecated-slot-attribute'?: Linter.RuleEntry<VueNoDeprecatedSlotAttribute>
/**
* disallow deprecated `slot-scope` attribute (in Vue.js 2.6.0+)
* @see https://eslint.vuejs.org/rules/no-deprecated-slot-scope-attribute.html
*/
'vue/no-deprecated-slot-scope-attribute'?: Linter.RuleEntry<[]>
/**
* disallow use of deprecated `.sync` modifier on `v-bind` directive (in Vue.js 3.0.0+)
* @see https://eslint.vuejs.org/rules/no-deprecated-v-bind-sync.html
*/
'vue/no-deprecated-v-bind-sync'?: Linter.RuleEntry<[]>
/**
* disallow deprecated `v-is` directive (in Vue.js 3.1.0+)
* @see https://eslint.vuejs.org/rules/no-deprecated-v-is.html
*/
'vue/no-deprecated-v-is'?: Linter.RuleEntry<[]>
/**
* disallow using deprecated `.native` modifiers (in Vue.js 3.0.0+)
* @see https://eslint.vuejs.org/rules/no-deprecated-v-on-native-modifier.html
*/
'vue/no-deprecated-v-on-native-modifier'?: Linter.RuleEntry<[]>
/**
* disallow using deprecated number (keycode) modifiers (in Vue.js 3.0.0+)
* @see https://eslint.vuejs.org/rules/no-deprecated-v-on-number-modifiers.html
*/
'vue/no-deprecated-v-on-number-modifiers'?: Linter.RuleEntry<[]>
/**
* disallow using deprecated `Vue.config.keyCodes` (in Vue.js 3.0.0+)
* @see https://eslint.vuejs.org/rules/no-deprecated-vue-config-keycodes.html
*/
'vue/no-deprecated-vue-config-keycodes'?: Linter.RuleEntry<[]>
/**
* disallow duplication of field names
* @see https://eslint.vuejs.org/rules/no-dupe-keys.html
*/
'vue/no-dupe-keys'?: Linter.RuleEntry<VueNoDupeKeys>
/**
* disallow duplicate conditions in `v-if` / `v-else-if` chains
* @see https://eslint.vuejs.org/rules/no-dupe-v-else-if.html
*/
'vue/no-dupe-v-else-if'?: Linter.RuleEntry<[]>
/**
* enforce `inheritAttrs` to be set to `false` when using `v-bind="$attrs"`
* @see https://eslint.vuejs.org/rules/no-duplicate-attr-inheritance.html
*/
'vue/no-duplicate-attr-inheritance'?: Linter.RuleEntry<VueNoDuplicateAttrInheritance>
/**
* disallow duplication of attributes
* @see https://eslint.vuejs.org/rules/no-duplicate-attributes.html
*/
'vue/no-duplicate-attributes'?: Linter.RuleEntry<VueNoDuplicateAttributes>
/**
* disallow duplication of class names in class attributes
* @see https://eslint.vuejs.org/rules/no-duplicate-class-names.html
*/
'vue/no-duplicate-class-names'?: Linter.RuleEntry<[]>
/**
* disallow the `<template>` `<script>` `<style>` block to be empty
* @see https://eslint.vuejs.org/rules/no-empty-component-block.html
*/
'vue/no-empty-component-block'?: Linter.RuleEntry<[]>
/**
* Disallow empty destructuring patterns in `<template>`
* @see https://eslint.vuejs.org/rules/no-empty-pattern.html
*/
'vue/no-empty-pattern'?: Linter.RuleEntry<VueNoEmptyPattern>
/**
* disallow `export` in `<script setup>`
* @see https://eslint.vuejs.org/rules/no-export-in-script-setup.html
*/
'vue/no-export-in-script-setup'?: Linter.RuleEntry<[]>
/**
* disallow asynchronously registered `expose`
* @see https://eslint.vuejs.org/rules/no-expose-after-await.html
*/
'vue/no-expose-after-await'?: Linter.RuleEntry<[]>
/**
* Disallow unnecessary parentheses in `<template>`
* @see https://eslint.vuejs.org/rules/no-extra-parens.html
*/
'vue/no-extra-parens'?: Linter.RuleEntry<VueNoExtraParens>
/**
* Disallow shorthand type conversions in `<template>`
* @see https://eslint.vuejs.org/rules/no-implicit-coercion.html
*/
'vue/no-implicit-coercion'?: Linter.RuleEntry<VueNoImplicitCoercion>
/**
* disallow importing Vue compiler macros
* @see https://eslint.vuejs.org/rules/no-import-compiler-macros.html
*/
'vue/no-import-compiler-macros'?: Linter.RuleEntry<[]>
/**
* disallow irregular whitespace in `.vue` files
* @see https://eslint.vuejs.org/rules/no-irregular-whitespace.html
*/
'vue/no-irregular-whitespace'?: Linter.RuleEntry<VueNoIrregularWhitespace>
/**
* disallow asynchronously registered lifecycle hooks
* @see https://eslint.vuejs.org/rules/no-lifecycle-after-await.html
*/
'vue/no-lifecycle-after-await'?: Linter.RuleEntry<[]>
/**
* disallow object, array, and function literals in template
* @see https://eslint.vuejs.org/rules/no-literals-in-template.html
*/
'vue/no-literals-in-template'?: Linter.RuleEntry<[]>
/**
* disallow unnecessary `<template>`
* @see https://eslint.vuejs.org/rules/no-lone-template.html
*/
'vue/no-lone-template'?: Linter.RuleEntry<VueNoLoneTemplate>
/**
* Disallow literal numbers that lose precision in `<template>`
* @see https://eslint.vuejs.org/rules/no-loss-of-precision.html
*/
'vue/no-loss-of-precision'?: Linter.RuleEntry<[]>
/**
* disallow multiple spaces
* @see https://eslint.vuejs.org/rules/no-multi-spaces.html
*/
'vue/no-multi-spaces'?: Linter.RuleEntry<VueNoMultiSpaces>
/**
* disallow passing multiple objects in an array to class
* @see https://eslint.vuejs.org/rules/no-multiple-objects-in-class.html
*/
'vue/no-multiple-objects-in-class'?: Linter.RuleEntry<[]>
/**
* disallow passing multiple arguments to scoped slots
* @see https://eslint.vuejs.org/rules/no-multiple-slot-args.html
*/
'vue/no-multiple-slot-args'?: Linter.RuleEntry<[]>
/**
* disallow adding multiple root nodes to the template
* @see https://eslint.vuejs.org/rules/no-multiple-template-root.html
*/
'vue/no-multiple-template-root'?: Linter.RuleEntry<VueNoMultipleTemplateRoot>
/**
* disallow mutation of component props
* @see https://eslint.vuejs.org/rules/no-mutating-props.html
*/
'vue/no-mutating-props'?: Linter.RuleEntry<VueNoMutatingProps>
/**
* Disallow negated conditions in `<template>`
* @see https://eslint.vuejs.org/rules/no-negated-condition.html
*/
'vue/no-negated-condition'?: Linter.RuleEntry<[]>
/**
* disallow negated conditions in v-if/v-else
* @see https://eslint.vuejs.org/rules/no-negated-v-if-condition.html
*/
'vue/no-negated-v-if-condition'?: Linter.RuleEntry<[]>
/**
* disallow parsing errors in `<template>`
* @see https://eslint.vuejs.org/rules/no-parsing-error.html
*/
'vue/no-parsing-error'?: Linter.RuleEntry<VueNoParsingError>
/**
* disallow a potential typo in your component property
* @see https://eslint.vuejs.org/rules/no-potential-component-option-typo.html
*/
'vue/no-potential-component-option-typo'?: Linter.RuleEntry<VueNoPotentialComponentOptionTypo>
/**
* disallow use of value wrapped by `ref()` (Composition API) as an operand
* @see https://eslint.vuejs.org/rules/no-ref-as-operand.html
*/
'vue/no-ref-as-operand'?: Linter.RuleEntry<[]>
/**
* disallow usages of ref objects that can lead to loss of reactivity
* @see https://eslint.vuejs.org/rules/no-ref-object-reactivity-loss.html
*/
'vue/no-ref-object-reactivity-loss'?: Linter.RuleEntry<[]>
/**
* enforce props with default values to be optional
* @see https://eslint.vuejs.org/rules/no-required-prop-with-default.html
*/
'vue/no-required-prop-with-default'?: Linter.RuleEntry<VueNoRequiredPropWithDefault>
/**
* disallow the use of reserved names in component definitions
* @see https://eslint.vuejs.org/rules/no-reserved-component-names.html
*/
'vue/no-reserved-component-names'?: Linter.RuleEntry<VueNoReservedComponentNames>
/**
* disallow overwriting reserved keys
* @see https://eslint.vuejs.org/rules/no-reserved-keys.html
*/
'vue/no-reserved-keys'?: Linter.RuleEntry<VueNoReservedKeys>
/**
* disallow reserved names in props
* @see https://eslint.vuejs.org/rules/no-reserved-props.html
*/
'vue/no-reserved-props'?: Linter.RuleEntry<VueNoReservedProps>
/**
* disallow specific block
* @see https://eslint.vuejs.org/rules/no-restricted-block.html
*/
'vue/no-restricted-block'?: Linter.RuleEntry<VueNoRestrictedBlock>
/**
* disallow asynchronously called restricted methods
* @see https://eslint.vuejs.org/rules/no-restricted-call-after-await.html
*/
'vue/no-restricted-call-after-await'?: Linter.RuleEntry<VueNoRestrictedCallAfterAwait>
/**
* disallow specific classes in Vue components
* @see https://eslint.vuejs.org/rules/no-restricted-class.html
*/
'vue/no-restricted-class'?: Linter.RuleEntry<VueNoRestrictedClass>
/**
* disallow specific component names
* @see https://eslint.vuejs.org/rules/no-restricted-component-names.html
*/
'vue/no-restricted-component-names'?: Linter.RuleEntry<VueNoRestrictedComponentNames>
/**
* disallow specific component option
* @see https://eslint.vuejs.org/rules/no-restricted-component-options.html
*/
'vue/no-restricted-component-options'?: Linter.RuleEntry<VueNoRestrictedComponentOptions>
/**
* disallow specific custom event
* @see https://eslint.vuejs.org/rules/no-restricted-custom-event.html
*/
'vue/no-restricted-custom-event'?: Linter.RuleEntry<VueNoRestrictedCustomEvent>
/**
* disallow specific elements
* @see https://eslint.vuejs.org/rules/no-restricted-html-elements.html
*/
'vue/no-restricted-html-elements'?: Linter.RuleEntry<VueNoRestrictedHtmlElements>
/**
* disallow specific props
* @see https://eslint.vuejs.org/rules/no-restricted-props.html
*/
'vue/no-restricted-props'?: Linter.RuleEntry<VueNoRestrictedProps>
/**
* disallow specific attribute
* @see https://eslint.vuejs.org/rules/no-restricted-static-attribute.html
*/
'vue/no-restricted-static-attribute'?: Linter.RuleEntry<VueNoRestrictedStaticAttribute>
/**
* Disallow specified syntax in `<template>`
* @see https://eslint.vuejs.org/rules/no-restricted-syntax.html
*/
'vue/no-restricted-syntax'?: Linter.RuleEntry<VueNoRestrictedSyntax>
/**
* disallow specific argument in `v-bind`
* @see https://eslint.vuejs.org/rules/no-restricted-v-bind.html
*/
'vue/no-restricted-v-bind'?: Linter.RuleEntry<VueNoRestrictedVBind>
/**
* disallow specific argument in `v-on`
* @see https://eslint.vuejs.org/rules/no-restricted-v-on.html
*/
'vue/no-restricted-v-on'?: Linter.RuleEntry<VueNoRestrictedVOn>
/**
* disallow `v-if` directives on root element
* @see https://eslint.vuejs.org/rules/no-root-v-if.html
*/
'vue/no-root-v-if'?: Linter.RuleEntry<[]>
/**
* disallow usages that lose the reactivity of `props` passed to `setup`
* @see https://eslint.vuejs.org/rules/no-setup-props-reactivity-loss.html
*/
'vue/no-setup-props-reactivity-loss'?: Linter.RuleEntry<[]>
/**
* enforce component's data property to be a function
* @see https://eslint.vuejs.org/rules/no-shared-component-data.html
*/
'vue/no-shared-component-data'?: Linter.RuleEntry<[]>
/**
* disallow side effects in computed properties
* @see https://eslint.vuejs.org/rules/no-side-effects-in-computed-properties.html
*/
'vue/no-side-effects-in-computed-properties'?: Linter.RuleEntry<[]>
/**
* disallow spaces around equal signs in attribute
* @see https://eslint.vuejs.org/rules/no-spaces-around-equal-signs-in-attribute.html
*/
'vue/no-spaces-around-equal-signs-in-attribute'?: Linter.RuleEntry<[]>
/**
* Disallow sparse arrays in `<template>`
* @see https://eslint.vuejs.org/rules/no-sparse-arrays.html
*/
'vue/no-sparse-arrays'?: Linter.RuleEntry<[]>
/**
* disallow static inline `style` attributes
* @see https://eslint.vuejs.org/rules/no-static-inline-styles.html
*/
'vue/no-static-inline-styles'?: Linter.RuleEntry<VueNoStaticInlineStyles>
/**
* disallow `key` attribute on `<template>`
* @see https://eslint.vuejs.org/rules/no-template-key.html
*/
'vue/no-template-key'?: Linter.RuleEntry<[]>
/**
* disallow variable declarations from shadowing variables declared in the outer scope
* @see https://eslint.vuejs.org/rules/no-template-shadow.html
*/
'vue/no-template-shadow'?: Linter.RuleEntry<VueNoTemplateShadow>
/**
* disallow target="_blank" attribute without rel="noopener noreferrer"
* @see https://eslint.vuejs.org/rules/no-template-target-blank.html
*/
'vue/no-template-target-blank'?: Linter.RuleEntry<VueNoTemplateTargetBlank>
/**
* disallow mustaches in `<textarea>`
* @see https://eslint.vuejs.org/rules/no-textarea-mustache.html
*/
'vue/no-textarea-mustache'?: Linter.RuleEntry<[]>
/**
* disallow `this` usage in a `beforeRouteEnter` method
* @see https://eslint.vuejs.org/rules/no-this-in-before-route-enter.html
*/
'vue/no-this-in-before-route-enter'?: Linter.RuleEntry<[]>
/**
* disallow use of undefined components in `<template>`
* @see https://eslint.vuejs.org/rules/no-undef-components.html
*/
'vue/no-undef-components'?: Linter.RuleEntry<VueNoUndefComponents>
/**
* disallow use of undefined custom directives
* @see https://eslint.vuejs.org/rules/no-undef-directives.html
*/
'vue/no-undef-directives'?: Linter.RuleEntry<VueNoUndefDirectives>
/**
* disallow undefined properties
* @see https://eslint.vuejs.org/rules/no-undef-properties.html
*/
'vue/no-undef-properties'?: Linter.RuleEntry<VueNoUndefProperties>
/**
* disallow unsupported Vue.js syntax on the specified version
* @see https://eslint.vuejs.org/rules/no-unsupported-features.html
*/
'vue/no-unsupported-features'?: Linter.RuleEntry<VueNoUnsupportedFeatures>
/**
* disallow registering components that are not used inside templates
* @see https://eslint.vuejs.org/rules/no-unused-components.html
*/
'vue/no-unused-components'?: Linter.RuleEntry<VueNoUnusedComponents>
/**
* disallow unused emit declarations
* @see https://eslint.vuejs.org/rules/no-unused-emit-declarations.html
*/
'vue/no-unused-emit-declarations'?: Linter.RuleEntry<[]>
/**
* disallow unused properties
* @see https://eslint.vuejs.org/rules/no-unused-properties.html
*/
'vue/no-unused-properties'?: Linter.RuleEntry<VueNoUnusedProperties>
/**
* disallow unused refs
* @see https://eslint.vuejs.org/rules/no-unused-refs.html
*/
'vue/no-unused-refs'?: Linter.RuleEntry<[]>
/**
* disallow unused variable definitions of v-for directives or scope attributes
* @see https://eslint.vuejs.org/rules/no-unused-vars.html
*/
'vue/no-unused-vars'?: Linter.RuleEntry<VueNoUnusedVars>
/**
* disallow use computed property like method
* @see https://eslint.vuejs.org/rules/no-use-computed-property-like-method.html
*/
'vue/no-use-computed-property-like-method'?: Linter.RuleEntry<[]>
/**
* disallow using `v-else-if`/`v-else` on the same element as `v-for`
* @see https://eslint.vuejs.org/rules/no-use-v-else-with-v-for.html
*/
'vue/no-use-v-else-with-v-for'?: Linter.RuleEntry<[]>
/**
* disallow using `v-if` on the same element as `v-for`
* @see https://eslint.vuejs.org/rules/no-use-v-if-with-v-for.html
*/
'vue/no-use-v-if-with-v-for'?: Linter.RuleEntry<VueNoUseVIfWithVFor>
/**
* Disallow unnecessary concatenation of literals or template literals in `<template>`
* @see https://eslint.vuejs.org/rules/no-useless-concat.html
*/
'vue/no-useless-concat'?: Linter.RuleEntry<[]>
/**
* disallow unnecessary mustache interpolations
* @see https://eslint.vuejs.org/rules/no-useless-mustaches.html
*/
'vue/no-useless-mustaches'?: Linter.RuleEntry<VueNoUselessMustaches>
/**
* disallow useless attribute on `<template>`
* @see https://eslint.vuejs.org/rules/no-useless-template-attributes.html
*/
'vue/no-useless-template-attributes'?: Linter.RuleEntry<[]>
/**
* disallow unnecessary `v-bind` directives
* @see https://eslint.vuejs.org/rules/no-useless-v-bind.html
*/
'vue/no-useless-v-bind'?: Linter.RuleEntry<VueNoUselessVBind>
/**
* disallow `key` attribute on `<template v-for>`
* @see https://eslint.vuejs.org/rules/no-v-for-template-key.html
* @deprecated
*/
'vue/no-v-for-template-key'?: Linter.RuleEntry<[]>
/**
* disallow key of `<template v-for>` placed on child elements
* @see https://eslint.vuejs.org/rules/no-v-for-template-key-on-child.html
*/
'vue/no-v-for-template-key-on-child'?: Linter.RuleEntry<[]>
/**
* disallow use of v-html to prevent XSS attack
* @see https://eslint.vuejs.org/rules/no-v-html.html
*/
'vue/no-v-html'?: Linter.RuleEntry<VueNoVHtml>
/**
* disallow adding an argument to `v-model` used in custom component
* @see https://eslint.vuejs.org/rules/no-v-model-argument.html
* @deprecated
*/
'vue/no-v-model-argument'?: Linter.RuleEntry<[]>
/**
* disallow use of v-text
* @see https://eslint.vuejs.org/rules/no-v-text.html
*/
'vue/no-v-text'?: Linter.RuleEntry<[]>
/**
* disallow v-text / v-html on component
* @see https://eslint.vuejs.org/rules/no-v-text-v-html-on-component.html
*/
'vue/no-v-text-v-html-on-component'?: Linter.RuleEntry<VueNoVTextVHtmlOnComponent>
/**
* disallow asynchronously registered `watch`
* @see https://eslint.vuejs.org/rules/no-watch-after-await.html
*/
'vue/no-watch-after-await'?: Linter.RuleEntry<[]>
/**
* Enforce consistent line breaks after opening and before closing braces in `<template>`
* @see https://eslint.vuejs.org/rules/object-curly-newline.html
*/
'vue/object-curly-newline'?: Linter.RuleEntry<VueObjectCurlyNewline>
/**
* Enforce consistent spacing inside braces in `<template>`
* @see https://eslint.vuejs.org/rules/object-curly-spacing.html
*/
'vue/object-curly-spacing'?: Linter.RuleEntry<VueObjectCurlySpacing>
/**
* Enforce placing object properties on separate lines in `<template>`
* @see https://eslint.vuejs.org/rules/object-property-newline.html
*/
'vue/object-property-newline'?: Linter.RuleEntry<VueObjectPropertyNewline>
/**
* Require or disallow method and property shorthand syntax for object literals in `<template>`
* @see https://eslint.vuejs.org/rules/object-shorthand.html
*/
'vue/object-shorthand'?: Linter.RuleEntry<VueObjectShorthand>
/**
* enforce that each component should be in its own file
* @see https://eslint.vuejs.org/rules/one-component-per-file.html
*/
'vue/one-component-per-file'?: Linter.RuleEntry<[]>
/**
* Enforce consistent linebreak style for operators in `<template>`
* @see https://eslint.vuejs.org/rules/operator-linebreak.html
*/
'vue/operator-linebreak'?: Linter.RuleEntry<VueOperatorLinebreak>
/**
* enforce order of properties in components
* @see https://eslint.vuejs.org/rules/order-in-components.html
*/
'vue/order-in-components'?: Linter.RuleEntry<VueOrderInComponents>
/**
* require or disallow padding lines between blocks
* @see https://eslint.vuejs.org/rules/padding-line-between-blocks.html
*/
'vue/padding-line-between-blocks'?: Linter.RuleEntry<VuePaddingLineBetweenBlocks>
/**
* require or disallow newlines between sibling tags in template
* @see https://eslint.vuejs.org/rules/padding-line-between-tags.html
*/
'vue/padding-line-between-tags'?: Linter.RuleEntry<VuePaddingLineBetweenTags>
/**
* require or disallow padding lines in component definition
* @see https://eslint.vuejs.org/rules/padding-lines-in-component-definition.html
*/
'vue/padding-lines-in-component-definition'?: Linter.RuleEntry<VuePaddingLinesInComponentDefinition>
/**
* enforce use of `defineOptions` instead of default export
* @see https://eslint.vuejs.org/rules/prefer-define-options.html
*/
'vue/prefer-define-options'?: Linter.RuleEntry<[]>
/**
* enforce import from 'vue' instead of import from '@vue/*'
* @see https://eslint.vuejs.org/rules/prefer-import-from-vue.html
*/
'vue/prefer-import-from-vue'?: Linter.RuleEntry<[]>
/**
* enforce `Boolean` comes first in component prop types
* @see https://eslint.vuejs.org/rules/prefer-prop-type-boolean-first.html
*/
'vue/prefer-prop-type-boolean-first'?: Linter.RuleEntry<[]>
/**
* require static class names in template to be in a separate `class` attribute
* @see https://eslint.vuejs.org/rules/prefer-separate-static-class.html
*/
'vue/prefer-separate-static-class'?: Linter.RuleEntry<[]>
/**
* Require template literals instead of string concatenation in `<template>`
* @see https://eslint.vuejs.org/rules/prefer-template.html
*/
'vue/prefer-template'?: Linter.RuleEntry<[]>
/**
* require shorthand form attribute when `v-bind` value is `true`
* @see https://eslint.vuejs.org/rules/prefer-true-attribute-shorthand.html
*/
'vue/prefer-true-attribute-shorthand'?: Linter.RuleEntry<VuePreferTrueAttributeShorthand>
/**
* require using `useTemplateRef` instead of `ref`/`shallowRef` for template refs
* @see https://eslint.vuejs.org/rules/prefer-use-template-ref.html
*/
'vue/prefer-use-template-ref'?: Linter.RuleEntry<[]>
/**
* enforce specific casing for the Prop name in Vue components
* @see https://eslint.vuejs.org/rules/prop-name-casing.html
*/
'vue/prop-name-casing'?: Linter.RuleEntry<VuePropNameCasing>
/**
* Require quotes around object literal, type literal, interfaces and enums property names in `<template>`
* @see https://eslint.vuejs.org/rules/quote-props.html
*/
'vue/quote-props'?: Linter.RuleEntry<VueQuoteProps>
/**
* require `v-bind:is` of `<component>` elements
* @see https://eslint.vuejs.org/rules/require-component-is.html
*/
'vue/require-component-is'?: Linter.RuleEntry<[]>
/**
* require components to be the default export
* @see https://eslint.vuejs.org/rules/require-default-export.html
*/
'vue/require-default-export'?: Linter.RuleEntry<[]>
/**
* require default value for props
* @see https://eslint.vuejs.org/rules/require-default-prop.html
*/
'vue/require-default-prop'?: Linter.RuleEntry<[]>
/**
* require the component to be directly exported
* @see https://eslint.vuejs.org/rules/require-direct-export.html
*/
'vue/require-direct-export'?: Linter.RuleEntry<VueRequireDirectExport>
/**
* require type definitions in emits
* @see https://eslint.vuejs.org/rules/require-emit-validator.html
*/
'vue/require-emit-validator'?: Linter.RuleEntry<[]>
/**
* require `emits` option with name triggered by `$emit()`
* @see https://eslint.vuejs.org/rules/require-explicit-emits.html
*/
'vue/require-explicit-emits'?: Linter.RuleEntry<VueRequireExplicitEmits>
/**
* require slots to be explicitly defined
* @see https://eslint.vuejs.org/rules/require-explicit-slots.html
*/
'vue/require-explicit-slots'?: Linter.RuleEntry<[]>
/**
* require declare public properties using `expose`
* @see https://eslint.vuejs.org/rules/require-expose.html
*/
'vue/require-expose'?: Linter.RuleEntry<[]>
/**
* require a certain macro variable name
* @see https://eslint.vuejs.org/rules/require-macro-variable-name.html
*/
'vue/require-macro-variable-name'?: Linter.RuleEntry<VueRequireMacroVariableName>
/**
* require a name property in Vue components
* @see https://eslint.vuejs.org/rules/require-name-property.html
*/
'vue/require-name-property'?: Linter.RuleEntry<[]>
/**
* require props to have a comment
* @see https://eslint.vuejs.org/rules/require-prop-comment.html
*/
'vue/require-prop-comment'?: Linter.RuleEntry<VueRequirePropComment>
/**
* require prop type to be a constructor
* @see https://eslint.vuejs.org/rules/require-prop-type-constructor.html
*/
'vue/require-prop-type-constructor'?: Linter.RuleEntry<[]>
/**
* require type definitions in props
* @see https://eslint.vuejs.org/rules/require-prop-types.html
*/
'vue/require-prop-types'?: Linter.RuleEntry<[]>
/**
* enforce render function to always return value
* @see https://eslint.vuejs.org/rules/require-render-return.html
*/
'vue/require-render-return'?: Linter.RuleEntry<[]>
/**
* enforce properties of `$slots` to be used as a function
* @see https://eslint.vuejs.org/rules/require-slots-as-functions.html
*/
'vue/require-slots-as-functions'?: Linter.RuleEntry<[]>
/**
* require control the display of the content inside `<transition>`
* @see https://eslint.vuejs.org/rules/require-toggle-inside-transition.html
*/
'vue/require-toggle-inside-transition'?: Linter.RuleEntry<VueRequireToggleInsideTransition>
/**
* enforce adding type declarations to object props
* @see https://eslint.vuejs.org/rules/require-typed-object-prop.html
*/
'vue/require-typed-object-prop'?: Linter.RuleEntry<[]>
/**
* require `ref` and `shallowRef` functions to be strongly typed
* @see https://eslint.vuejs.org/rules/require-typed-ref.html
*/
'vue/require-typed-ref'?: Linter.RuleEntry<[]>
/**
* require `v-bind:key` with `v-for` directives
* @see https://eslint.vuejs.org/rules/require-v-for-key.html
*/
'vue/require-v-for-key'?: Linter.RuleEntry<[]>
/**
* enforce props default values to be valid
* @see https://eslint.vuejs.org/rules/require-valid-default-prop.html
*/
'vue/require-valid-default-prop'?: Linter.RuleEntry<[]>
/**
* enforce using only specific component names
* @see https://eslint.vuejs.org/rules/restricted-component-names.html
*/
'vue/restricted-component-names'?: Linter.RuleEntry<VueRestrictedComponentNames>
/**
* enforce that a return statement is present in computed property
* @see https://eslint.vuejs.org/rules/return-in-computed-property.html
*/
'vue/return-in-computed-property'?: Linter.RuleEntry<VueReturnInComputedProperty>
/**
* enforce that a return statement is present in emits validator
* @see https://eslint.vuejs.org/rules/return-in-emits-validator.html
*/
'vue/return-in-emits-validator'?: Linter.RuleEntry<[]>
/**
* enforce consistent indentation in `<script>`
* @see https://eslint.vuejs.org/rules/script-indent.html
*/
'vue/script-indent'?: Linter.RuleEntry<VueScriptIndent>
/**
* require a line break before and after the contents of a singleline element
* @see https://eslint.vuejs.org/rules/singleline-html-element-content-newline.html
*/
'vue/singleline-html-element-content-newline'?: Linter.RuleEntry<VueSinglelineHtmlElementContentNewline>
/**
* enforce specific casing for slot names
* @see https://eslint.vuejs.org/rules/slot-name-casing.html
*/
'vue/slot-name-casing'?: Linter.RuleEntry<VueSlotNameCasing>
/**
* enforce sort-keys in a manner that is compatible with order-in-components
* @see https://eslint.vuejs.org/rules/sort-keys.html
*/
'vue/sort-keys'?: Linter.RuleEntry<VueSortKeys>
/**
* Enforce consistent spacing inside parentheses in `<template>`
* @see https://eslint.vuejs.org/rules/space-in-parens.html
*/
'vue/space-in-parens'?: Linter.RuleEntry<VueSpaceInParens>
/**
* Require spacing around infix operators in `<template>`
* @see https://eslint.vuejs.org/rules/space-infix-ops.html
*/
'vue/space-infix-ops'?: Linter.RuleEntry<VueSpaceInfixOps>
/**
* Enforce consistent spacing before or after unary operators in `<template>`
* @see https://eslint.vuejs.org/rules/space-unary-ops.html
*/
'vue/space-unary-ops'?: Linter.RuleEntry<VueSpaceUnaryOps>
/**
* enforce static class names order
* @see https://eslint.vuejs.org/rules/static-class-names-order.html
*/
'vue/static-class-names-order'?: Linter.RuleEntry<[]>
/**
* Require or disallow spacing around embedded expressions of template strings in `<template>`
* @see https://eslint.vuejs.org/rules/template-curly-spacing.html
*/
'vue/template-curly-spacing'?: Linter.RuleEntry<VueTemplateCurlySpacing>
/**
* disallow usage of `this` in template
* @see https://eslint.vuejs.org/rules/this-in-template.html
*/
'vue/this-in-template'?: Linter.RuleEntry<VueThisInTemplate>
/**
* enforce usage of `exact` modifier on `v-on`
* @see https://eslint.vuejs.org/rules/use-v-on-exact.html
*/
'vue/use-v-on-exact'?: Linter.RuleEntry<[]>
/**
* enforce `v-bind` directive style
* @see https://eslint.vuejs.org/rules/v-bind-style.html
*/
'vue/v-bind-style'?: Linter.RuleEntry<VueVBindStyle>
/**
* enforce `v-for` directive's delimiter style
* @see https://eslint.vuejs.org/rules/v-for-delimiter-style.html
*/
'vue/v-for-delimiter-style'?: Linter.RuleEntry<VueVForDelimiterStyle>
/**
* require key attribute for conditionally rendered repeated components
* @see https://eslint.vuejs.org/rules/v-if-else-key.html
*/
'vue/v-if-else-key'?: Linter.RuleEntry<[]>
/**
* enforce v-on event naming style on custom components in template
* @see https://eslint.vuejs.org/rules/v-on-event-hyphenation.html
*/
'vue/v-on-event-hyphenation'?: Linter.RuleEntry<VueVOnEventHyphenation>
/**
* enforce writing style for handlers in `v-on` directives
* @see https://eslint.vuejs.org/rules/v-on-handler-style.html
*/
'vue/v-on-handler-style'?: Linter.RuleEntry<VueVOnHandlerStyle>
/**
* enforce `v-on` directive style
* @see https://eslint.vuejs.org/rules/v-on-style.html
*/
'vue/v-on-style'?: Linter.RuleEntry<VueVOnStyle>
/**
* enforce `v-slot` directive style
* @see https://eslint.vuejs.org/rules/v-slot-style.html
*/
'vue/v-slot-style'?: Linter.RuleEntry<VueVSlotStyle>
/**
* require valid attribute names
* @see https://eslint.vuejs.org/rules/valid-attribute-name.html
*/
'vue/valid-attribute-name'?: Linter.RuleEntry<[]>
/**
* enforce valid `defineEmits` compiler macro
* @see https://eslint.vuejs.org/rules/valid-define-emits.html
*/
'vue/valid-define-emits'?: Linter.RuleEntry<[]>
/**
* enforce valid `defineOptions` compiler macro
* @see https://eslint.vuejs.org/rules/valid-define-options.html
*/
'vue/valid-define-options'?: Linter.RuleEntry<[]>
/**
* enforce valid `defineProps` compiler macro
* @see https://eslint.vuejs.org/rules/valid-define-props.html
*/
'vue/valid-define-props'?: Linter.RuleEntry<[]>
/**
* require valid keys in model option
* @see https://eslint.vuejs.org/rules/valid-model-definition.html
* @deprecated
*/
'vue/valid-model-definition'?: Linter.RuleEntry<[]>
/**
* enforce valid `nextTick` function calls
* @see https://eslint.vuejs.org/rules/valid-next-tick.html
*/
'vue/valid-next-tick'?: Linter.RuleEntry<[]>
/**
* enforce valid template root
* @see https://eslint.vuejs.org/rules/valid-template-root.html
*/
'vue/valid-template-root'?: Linter.RuleEntry<[]>
/**
* enforce valid `v-bind` directives
* @see https://eslint.vuejs.org/rules/valid-v-bind.html
*/
'vue/valid-v-bind'?: Linter.RuleEntry<[]>
/**
* enforce valid `.sync` modifier on `v-bind` directives
* @see https://eslint.vuejs.org/rules/valid-v-bind-sync.html
* @deprecated
*/
'vue/valid-v-bind-sync'?: Linter.RuleEntry<[]>
/**
* enforce valid `v-cloak` directives
* @see https://eslint.vuejs.org/rules/valid-v-cloak.html
*/
'vue/valid-v-cloak'?: Linter.RuleEntry<[]>
/**
* enforce valid `v-else` directives
* @see https://eslint.vuejs.org/rules/valid-v-else.html
*/
'vue/valid-v-else'?: Linter.RuleEntry<[]>
/**
* enforce valid `v-else-if` directives
* @see https://eslint.vuejs.org/rules/valid-v-else-if.html
*/
'vue/valid-v-else-if'?: Linter.RuleEntry<[]>
/**
* enforce valid `v-for` directives
* @see https://eslint.vuejs.org/rules/valid-v-for.html
*/
'vue/valid-v-for'?: Linter.RuleEntry<VueValidVFor>
/**
* enforce valid `v-html` directives
* @see https://eslint.vuejs.org/rules/valid-v-html.html
*/
'vue/valid-v-html'?: Linter.RuleEntry<[]>
/**
* enforce valid `v-if` directives
* @see https://eslint.vuejs.org/rules/valid-v-if.html
*/
'vue/valid-v-if'?: Linter.RuleEntry<[]>
/**
* enforce valid `v-is` directives
* @see https://eslint.vuejs.org/rules/valid-v-is.html
*/
'vue/valid-v-is'?: Linter.RuleEntry<[]>
/**
* enforce valid `v-memo` directives
* @see https://eslint.vuejs.org/rules/valid-v-memo.html
*/
'vue/valid-v-memo'?: Linter.RuleEntry<[]>
/**
* enforce valid `v-model` directives
* @see https://eslint.vuejs.org/rules/valid-v-model.html
*/
'vue/valid-v-model'?: Linter.RuleEntry<[]>
/**
* enforce valid `v-on` directives
* @see https://eslint.vuejs.org/rules/valid-v-on.html
*/
'vue/valid-v-on'?: Linter.RuleEntry<VueValidVOn>
/**
* enforce valid `v-once` directives
* @see https://eslint.vuejs.org/rules/valid-v-once.html
*/
'vue/valid-v-once'?: Linter.RuleEntry<[]>
/**
* enforce valid `v-pre` directives
* @see https://eslint.vuejs.org/rules/valid-v-pre.html
*/
'vue/valid-v-pre'?: Linter.RuleEntry<[]>
/**
* enforce valid `v-show` directives
* @see https://eslint.vuejs.org/rules/valid-v-show.html
*/
'vue/valid-v-show'?: Linter.RuleEntry<[]>
/**
* enforce valid `v-slot` directives
* @see https://eslint.vuejs.org/rules/valid-v-slot.html
*/
'vue/valid-v-slot'?: Linter.RuleEntry<VueValidVSlot>
/**
* enforce valid `v-text` directives
* @see https://eslint.vuejs.org/rules/valid-v-text.html
*/
'vue/valid-v-text'?: Linter.RuleEntry<[]>
}
/* ======= Declarations ======= */
// ----- vue/array-bracket-newline -----
type VueArrayBracketNewline = []|[(("always" | "never" | "consistent") | {
multiline?: boolean
minItems?: (number | null)
})]
// ----- vue/array-bracket-spacing -----
type VueArrayBracketSpacing = []|[("always" | "never")]|[("always" | "never"), {
singleValue?: boolean
objectsInArrays?: boolean
arraysInArrays?: boolean
}]
// ----- vue/array-element-newline -----
type VueArrayElementNewline = []|[(_VueArrayElementNewlineBasicConfig | {
ArrayExpression?: _VueArrayElementNewlineBasicConfig
ArrayPattern?: _VueArrayElementNewlineBasicConfig
})]
type _VueArrayElementNewlineBasicConfig = (("always" | "never" | "consistent") | {
consistent?: boolean
multiline?: boolean
minItems?: (number | null)
})
// ----- vue/arrow-spacing -----
type VueArrowSpacing = []|[{
before?: boolean
after?: boolean
}]
// ----- vue/attribute-hyphenation -----
type VueAttributeHyphenation = []|[("always" | "never")]|[("always" | "never"), {
ignore?: (string & {
[k: string]: unknown | undefined
} & {
[k: string]: unknown | undefined
})[]
ignoreTags?: string[]
}]
// ----- vue/attributes-order -----
type VueAttributesOrder = []|[{
order?: (("DEFINITION" | "LIST_RENDERING" | "CONDITIONALS" | "RENDER_MODIFIERS" | "GLOBAL" | "UNIQUE" | "SLOT" | "TWO_WAY_BINDING" | "OTHER_DIRECTIVES" | "OTHER_ATTR" | "ATTR_STATIC" | "ATTR_DYNAMIC" | "ATTR_SHORTHAND_BOOL" | "EVENTS" | "CONTENT") | ("DEFINITION" | "LIST_RENDERING" | "CONDITIONALS" | "RENDER_MODIFIERS" | "GLOBAL" | "UNIQUE" | "SLOT" | "TWO_WAY_BINDING" | "OTHER_DIRECTIVES" | "OTHER_ATTR" | "ATTR_STATIC" | "ATTR_DYNAMIC" | "ATTR_SHORTHAND_BOOL" | "EVENTS" | "CONTENT")[])[]
alphabetical?: boolean
sortLineLength?: boolean
ignoreVBindObject?: boolean
}]
// ----- vue/block-lang -----
type VueBlockLang = []|[{
[k: string]: {
lang?: (string | string[])
allowNoLang?: boolean
}
}]
// ----- vue/block-order -----
type VueBlockOrder = []|[{
order?: (string | string[])[]
}]
// ----- vue/block-spacing -----
type VueBlockSpacing = []|[("always" | "never")]
// ----- vue/block-tag-newline -----
type VueBlockTagNewline = []|[{
singleline?: ("always" | "never" | "consistent" | "ignore")
multiline?: ("always" | "never" | "consistent" | "ignore")
maxEmptyLines?: number
blocks?: {
[k: string]: {
singleline?: ("always" | "never" | "consistent" | "ignore")
multiline?: ("always" | "never" | "consistent" | "ignore")
maxEmptyLines?: number
}
}
}]
// ----- vue/brace-style -----
type VueBraceStyle = []|[("1tbs" | "stroustrup" | "allman")]|[("1tbs" | "stroustrup" | "allman"), {
allowSingleLine?: boolean
}]
// ----- vue/camelcase -----
type VueCamelcase = []|[{
ignoreDestructuring?: boolean
ignoreImports?: boolean
ignoreGlobals?: boolean
properties?: ("always" | "never")
allow?: string[]
}]
// ----- vue/comma-dangle -----
type VueCommaDangle = []|[(_VueCommaDangleValue | {
arrays?: _VueCommaDangleValueWithIgnore
objects?: _VueCommaDangleValueWithIgnore
imports?: _VueCommaDangleValueWithIgnore
exports?: _VueCommaDangleValueWithIgnore
functions?: _VueCommaDangleValueWithIgnore
importAttributes?: _VueCommaDangleValueWithIgnore
dynamicImports?: _VueCommaDangleValueWithIgnore
enums?: _VueCommaDangleValueWithIgnore
generics?: _VueCommaDangleValueWithIgnore
tuples?: _VueCommaDangleValueWithIgnore
})]
type _VueCommaDangleValue = ("always-multiline" | "always" | "never" | "only-multiline")
type _VueCommaDangleValueWithIgnore = ("always-multiline" | "always" | "never" | "only-multiline" | "ignore")
// ----- vue/comma-spacing -----
type VueCommaSpacing = []|[{
before?: boolean
after?: boolean
}]
// ----- vue/comma-style -----
type VueCommaStyle = []|[("first" | "last")]|[("first" | "last"), {
exceptions?: {
[k: string]: boolean | undefined
}
}]
// ----- vue/comment-directive -----
type VueCommentDirective = []|[{
reportUnusedDisableDirectives?: boolean
}]
// ----- vue/component-api-style -----
type VueComponentApiStyle = []|[[("script-setup" | "composition" | "composition-vue2" | "options"), ...(("script-setup" | "composition" | "composition-vue2" | "options"))[]]]
// ----- vue/component-definition-name-casing -----
type VueComponentDefinitionNameCasing = []|[("PascalCase" | "kebab-case")]
// ----- vue/component-name-in-template-casing -----
type VueComponentNameInTemplateCasing = []|[("PascalCase" | "kebab-case")]|[("PascalCase" | "kebab-case"), {
globals?: string[]
ignores?: string[]
registeredComponentsOnly?: boolean
}]
// ----- vue/component-options-name-casing -----
type VueComponentOptionsNameCasing = []|[("camelCase" | "kebab-case" | "PascalCase")]
// ----- vue/custom-event-name-casing -----
type VueCustomEventNameCasing = []|[("kebab-case" | "camelCase")]|[("kebab-case" | "camelCase"), {
ignores?: string[]
}]
// ----- vue/define-emits-declaration -----
type VueDefineEmitsDeclaration = []|[("type-based" | "type-literal" | "runtime")]
// ----- vue/define-macros-order -----
type VueDefineMacrosOrder = []|[{
order?: string[]
defineExposeLast?: boolean
}]
// ----- vue/define-props-declaration -----
type VueDefinePropsDeclaration = []|[("type-based" | "runtime")]
// ----- vue/define-props-destructuring -----
type VueDefinePropsDestructuring = []|[{
destructure?: ("only-when-assigned" | "always" | "never")
}]
// ----- vue/dot-location -----
type VueDotLocation = []|[("object" | "property")]
// ----- vue/dot-notation -----
type VueDotNotation = []|[{
allowKeywords?: boolean
allowPattern?: string
}]
// ----- vue/enforce-style-attribute -----
type VueEnforceStyleAttribute = []|[{
allow?: [("plain" | "scoped" | "module"), ...(("plain" | "scoped" | "module"))[]]
}]
// ----- vue/eqeqeq -----
type VueEqeqeq = ([]|["always"]|["always", {
null?: ("always" | "never" | "ignore")
}] | []|[("smart" | "allow-null")])
// ----- vue/first-attribute-linebreak -----
type VueFirstAttributeLinebreak = []|[{
multiline?: ("below" | "beside" | "ignore")
singleline?: ("below" | "beside" | "ignore")
}]
// ----- vue/func-call-spacing -----
type VueFuncCallSpacing = ([]|["never"] | []|["always"]|["always", {
allowNewlines?: boolean
optionalChain?: {
before?: boolean
after?: boolean
}
}])
// ----- vue/html-button-has-type -----
type VueHtmlButtonHasType = []|[{
button?: boolean
submit?: boolean
reset?: boolean
}]
// ----- vue/html-closing-bracket-newline -----
type VueHtmlClosingBracketNewline = []|[{
singleline?: ("always" | "never")
multiline?: ("always" | "never")
selfClosingTag?: {
singleline?: ("always" | "never")
multiline?: ("always" | "never")
}
}]
// ----- vue/html-closing-bracket-spacing -----
type VueHtmlClosingBracketSpacing = []|[{
startTag?: ("always" | "never")
endTag?: ("always" | "never")
selfClosingTag?: ("always" | "never")
}]
// ----- vue/html-comment-content-newline -----
type VueHtmlCommentContentNewline = []|[(("always" | "never") | {
singleline?: ("always" | "never" | "ignore")
multiline?: ("always" | "never" | "ignore")
})]|[(("always" | "never") | {
singleline?: ("always" | "never" | "ignore")
multiline?: ("always" | "never" | "ignore")
}), {
exceptions?: string[]
}]
// ----- vue/html-comment-content-spacing -----
type VueHtmlCommentContentSpacing = []|[("always" | "never")]|[("always" | "never"), {
exceptions?: string[]
}]
// ----- vue/html-comment-indent -----
type VueHtmlCommentIndent = []|[(number | "tab")]
// ----- vue/html-indent -----
type VueHtmlIndent = []|[(number | "tab")]|[(number | "tab"), {
attribute?: number
baseIndent?: number
closeBracket?: (number | {
startTag?: number
endTag?: number
selfClosingTag?: number
})
switchCase?: number
alignAttributesVertically?: boolean
ignores?: (string & {
[k: string]: unknown | undefined
} & {
[k: string]: unknown | undefined
})[]
}]
// ----- vue/html-quotes -----
type VueHtmlQuotes = []|[("double" | "single")]|[("double" | "single"), {
avoidEscape?: boolean
}]
// ----- vue/html-self-closing -----
type VueHtmlSelfClosing = []|[{
html?: {
normal?: _VueHtmlSelfClosingOptionValue
void?: _VueHtmlSelfClosingOptionValue
component?: _VueHtmlSelfClosingOptionValue
}
svg?: _VueHtmlSelfClosingOptionValue
math?: _VueHtmlSelfClosingOptionValue
}]
type _VueHtmlSelfClosingOptionValue = ("always" | "never" | "any")
// ----- vue/key-spacing -----
type VueKeySpacing = []|[({
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
}
})]
// ----- vue/keyword-spacing -----
type VueKeywordSpacing = []|[{
before?: boolean
after?: boolean
overrides?: {
abstract?: {
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
}
function?: {
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
}
long?: {
before?: boolean
after?: boolean
}
native?: {
before?: boolean
after?: boolean
}
new?: {
before?: boolean
after?: boolean
}
null?: {
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
}
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
}
arguments?: {
before?: boolean
after?: boolean
}
as?: {
before?: boolean
after?: boolean
}
async?: {
before?: boolean
after?: boolean
}
await?: {
before?: boolean
after?: boolean
}
eval?: {
before?: boolean
after?: boolean
}
from?: {
before?: boolean
after?: boolean
}
get?: {
before?: boolean
after?: boolean
}
let?: {
before?: boolean
after?: boolean
}
of?: {
before?: boolean
after?: boolean
}
set?: {
before?: boolean
after?: boolean
}
type?: {
before?: boolean
after?: boolean
}
using?: {
before?: boolean
after?: boolean
}
yield?: {
before?: boolean
after?: boolean
}
accessor?: {
before?: boolean
after?: boolean
}
satisfies?: {
before?: boolean
after?: boolean
}
}
}]
// ----- vue/match-component-file-name -----
type VueMatchComponentFileName = []|[{
extensions?: string[]
shouldMatchCase?: boolean
}]
// ----- vue/max-attributes-per-line -----
type VueMaxAttributesPerLine = []|[{
singleline?: (number | {
max?: number
})
multiline?: (number | {
max?: number
})
}]
// ----- vue/max-len -----
type VueMaxLen = []|[({
code?: number
template?: number
comments?: number
tabWidth?: number
ignorePattern?: string
ignoreComments?: boolean
ignoreTrailingComments?: boolean
ignoreUrls?: boolean
ignoreStrings?: boolean
ignoreTemplateLiterals?: boolean
ignoreRegExpLiterals?: boolean
ignoreHTMLAttributeValues?: boolean
ignoreHTMLTextContents?: boolean
} | number)]|[({
code?: number
template?: number
comments?: number
tabWidth?: number
ignorePattern?: string
ignoreComments?: boolean
ignoreTrailingComments?: boolean
ignoreUrls?: boolean
ignoreStrings?: boolean
ignoreTemplateLiterals?: boolean
ignoreRegExpLiterals?: boolean
ignoreHTMLAttributeValues?: boolean
ignoreHTMLTextContents?: boolean
} | number), ({
code?: number
template?: number
comments?: number
tabWidth?: number
ignorePattern?: string
ignoreComments?: boolean
ignoreTrailingComments?: boolean
ignoreUrls?: boolean
ignoreStrings?: boolean
ignoreTemplateLiterals?: boolean
ignoreRegExpLiterals?: boolean
ignoreHTMLAttributeValues?: boolean
ignoreHTMLTextContents?: boolean
} | number)]|[({
code?: number
template?: number
comments?: number
tabWidth?: number
ignorePattern?: string
ignoreComments?: boolean
ignoreTrailingComments?: boolean
ignoreUrls?: boolean
ignoreStrings?: boolean
ignoreTemplateLiterals?: boolean
ignoreRegExpLiterals?: boolean
ignoreHTMLAttributeValues?: boolean
ignoreHTMLTextContents?: boolean
} | number), ({
code?: number
template?: number
comments?: number
tabWidth?: number
ignorePattern?: string
ignoreComments?: boolean
ignoreTrailingComments?: boolean
ignoreUrls?: boolean
ignoreStrings?: boolean
ignoreTemplateLiterals?: boolean
ignoreRegExpLiterals?: boolean
ignoreHTMLAttributeValues?: boolean
ignoreHTMLTextContents?: boolean
} | number), {
code?: number
template?: number
comments?: number
tabWidth?: number
ignorePattern?: string
ignoreComments?: boolean
ignoreTrailingComments?: boolean
ignoreUrls?: boolean
ignoreStrings?: boolean
ignoreTemplateLiterals?: boolean
ignoreRegExpLiterals?: boolean
ignoreHTMLAttributeValues?: boolean
ignoreHTMLTextContents?: boolean
}]
// ----- vue/max-lines-per-block -----
type VueMaxLinesPerBlock = []|[{
style?: number
template?: number
script?: number
skipBlankLines?: boolean
}]
// ----- vue/max-props -----
type VueMaxProps = []|[{
maxProps?: number
}]
// ----- vue/max-template-depth -----
type VueMaxTemplateDepth = []|[{
maxDepth?: number
}]
// ----- vue/multi-word-component-names -----
type VueMultiWordComponentNames = []|[{
ignores?: string[]
}]
// ----- vue/multiline-html-element-content-newline -----
type VueMultilineHtmlElementContentNewline = []|[{
ignoreWhenEmpty?: boolean
ignores?: string[]
allowEmptyLines?: boolean
}]
// ----- vue/multiline-ternary -----
type VueMultilineTernary = []|[("always" | "always-multiline" | "never")]|[("always" | "always-multiline" | "never"), {
ignoreJSX?: boolean
}]
// ----- vue/mustache-interpolation-spacing -----
type VueMustacheInterpolationSpacing = []|[("always" | "never")]
// ----- vue/new-line-between-multi-line-property -----
type VueNewLineBetweenMultiLineProperty = []|[{
minLineOfMultilineProperty?: number
}]
// ----- vue/next-tick-style -----
type VueNextTickStyle = []|[("promise" | "callback")]
// ----- vue/no-async-in-computed-properties -----
type VueNoAsyncInComputedProperties = []|[{
ignoredObjectNames?: string[]
}]
// ----- vue/no-bare-strings-in-template -----
type VueNoBareStringsInTemplate = []|[{
allowlist?: string[]
attributes?: {
[k: string]: string[]
}
directives?: string[]
}]
// ----- vue/no-boolean-default -----
type VueNoBooleanDefault = []|[("default-false" | "no-default")]
// ----- vue/no-child-content -----
type VueNoChildContent = []|[{
additionalDirectives: [string, ...(string)[]]
}]
// ----- vue/no-console -----
type VueNoConsole = []|[{
allow?: [string, ...(string)[]]
}]
// ----- vue/no-constant-condition -----
type VueNoConstantCondition = []|[{
checkLoops?: ("all" | "allExceptWhileTrue" | "none" | true | false)
}]
// ----- vue/no-deprecated-model-definition -----
type VueNoDeprecatedModelDefinition = []|[{
allowVue3Compat?: boolean
}]
// ----- vue/no-deprecated-router-link-tag-prop -----
type VueNoDeprecatedRouterLinkTagProp = []|[{
components?: [string, ...(string)[]]
}]
// ----- vue/no-deprecated-slot-attribute -----
type VueNoDeprecatedSlotAttribute = []|[{
ignore?: string[]
ignoreParents?: string[]
}]
// ----- vue/no-dupe-keys -----
type VueNoDupeKeys = []|[{
groups?: unknown[]
}]
// ----- vue/no-duplicate-attr-inheritance -----
type VueNoDuplicateAttrInheritance = []|[{
checkMultiRootNodes?: boolean
}]
// ----- vue/no-duplicate-attributes -----
type VueNoDuplicateAttributes = []|[{
allowCoexistClass?: boolean
allowCoexistStyle?: boolean
}]
// ----- vue/no-empty-pattern -----
type VueNoEmptyPattern = []|[{
allowObjectPatternsAsParameters?: boolean
}]
// ----- vue/no-extra-parens -----
type VueNoExtraParens = ([]|["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
allowNodesInSpreadElement?: {
ConditionalExpression?: boolean
LogicalExpression?: boolean
AwaitExpression?: boolean
}
ignoredNodes?: string[]
}])
// ----- vue/no-implicit-coercion -----
type VueNoImplicitCoercion = []|[{
boolean?: boolean
number?: boolean
string?: boolean
disallowTemplateShorthand?: boolean
allow?: ("~" | "!!" | "+" | "- -" | "-" | "*")[]
}]
// ----- vue/no-irregular-whitespace -----
type VueNoIrregularWhitespace = []|[{
skipComments?: boolean
skipStrings?: boolean
skipTemplates?: boolean
skipRegExps?: boolean
skipHTMLAttributeValues?: boolean
skipHTMLTextContents?: boolean
}]
// ----- vue/no-lone-template -----
type VueNoLoneTemplate = []|[{
ignoreAccessible?: boolean
}]
// ----- vue/no-multi-spaces -----
type VueNoMultiSpaces = []|[{
ignoreProperties?: boolean
ignoreEOLComments?: boolean
}]
// ----- vue/no-multiple-template-root -----
type VueNoMultipleTemplateRoot = []|[{
disallowComments?: boolean
}]
// ----- vue/no-mutating-props -----
type VueNoMutatingProps = []|[{
shallowOnly?: boolean
}]
// ----- vue/no-parsing-error -----
type VueNoParsingError = []|[{
"abrupt-closing-of-empty-comment"?: boolean
"absence-of-digits-in-numeric-character-reference"?: boolean
"cdata-in-html-content"?: boolean
"character-reference-outside-unicode-range"?: boolean
"control-character-in-input-stream"?: boolean
"control-character-reference"?: boolean
"eof-before-tag-name"?: boolean
"eof-in-cdata"?: boolean
"eof-in-comment"?: boolean
"eof-in-tag"?: boolean
"incorrectly-closed-comment"?: boolean
"incorrectly-opened-comment"?: boolean
"invalid-first-character-of-tag-name"?: boolean
"missing-attribute-value"?: boolean
"missing-end-tag-name"?: boolean
"missing-semicolon-after-character-reference"?: boolean
"missing-whitespace-between-attributes"?: boolean
"nested-comment"?: boolean
"noncharacter-character-reference"?: boolean
"noncharacter-in-input-stream"?: boolean
"null-character-reference"?: boolean
"surrogate-character-reference"?: boolean
"surrogate-in-input-stream"?: boolean
"unexpected-character-in-attribute-name"?: boolean
"unexpected-character-in-unquoted-attribute-value"?: boolean
"unexpected-equals-sign-before-attribute-name"?: boolean
"unexpected-null-character"?: boolean
"unexpected-question-mark-instead-of-tag-name"?: boolean
"unexpected-solidus-in-tag"?: boolean
"unknown-named-character-reference"?: boolean
"end-tag-with-attributes"?: boolean
"duplicate-attribute"?: boolean
"end-tag-with-trailing-solidus"?: boolean
"non-void-html-element-start-tag-with-trailing-solidus"?: boolean
"x-invalid-end-tag"?: boolean
"x-invalid-namespace"?: boolean
}]
// ----- vue/no-potential-component-option-typo -----
type VueNoPotentialComponentOptionTypo = []|[{
presets?: ("all" | "vue" | "vue-router" | "nuxt")[]
custom?: string[]
threshold?: number
}]
// ----- vue/no-required-prop-with-default -----
type VueNoRequiredPropWithDefault = []|[{
autofix?: boolean
}]
// ----- vue/no-reserved-component-names -----
type VueNoReservedComponentNames = []|[{
disallowVueBuiltInComponents?: boolean
disallowVue3BuiltInComponents?: boolean
htmlElementCaseSensitive?: boolean
}]
// ----- vue/no-reserved-keys -----
type VueNoReservedKeys = []|[{
reserved?: unknown[]
groups?: unknown[]
}]
// ----- vue/no-reserved-props -----
type VueNoReservedProps = []|[{
vueVersion?: (2 | 3)
}]
// ----- vue/no-restricted-block -----
type VueNoRestrictedBlock = (string | {
element: string
message?: string
})[]
// ----- vue/no-restricted-call-after-await -----
type VueNoRestrictedCallAfterAwait = {
module: string
path?: (string | string[])
message?: string
}[]
// ----- vue/no-restricted-class -----
type VueNoRestrictedClass = string[]
// ----- vue/no-restricted-component-names -----
type VueNoRestrictedComponentNames = (string | {
name: string
message?: string
suggest?: string
})[]
// ----- vue/no-restricted-component-options -----
type VueNoRestrictedComponentOptions = (string | string[] | {
name: (string | string[])
message?: string
})[]
// ----- vue/no-restricted-custom-event -----
type VueNoRestrictedCustomEvent = (string | {
event: string
message?: string
suggest?: string
})[]
// ----- vue/no-restricted-html-elements -----
type VueNoRestrictedHtmlElements = (string | {
element: (string | string[])
message?: string
})[]
// ----- vue/no-restricted-props -----
type VueNoRestrictedProps = (string | {
name: string
message?: string
suggest?: string
})[]
// ----- vue/no-restricted-static-attribute -----
type VueNoRestrictedStaticAttribute = (string | {
key: string
value?: (string | true)
element?: string
message?: string
})[]
// ----- vue/no-restricted-syntax -----
type VueNoRestrictedSyntax = (string | {
selector: string
message?: string
})[]
// ----- vue/no-restricted-v-bind -----
type VueNoRestrictedVBind = ((string | null) | {
argument: (string | null)
modifiers?: ("prop" | "camel" | "sync" | "attr")[]
element?: string
message?: string
})[]
// ----- vue/no-restricted-v-on -----
type VueNoRestrictedVOn = ((string | null) | {
argument: (string | null)
element?: string
message?: string
modifiers?: [("prevent" | "stop" | "capture" | "self" | "once" | "passive"),
gitextract_bxds5anp/ ├── .github/ │ ├── FUNDING.yml │ └── workflows/ │ ├── ci.yml │ └── release.yml ├── .gitignore ├── .npmrc ├── .vscode/ │ └── settings.json ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── eslint.config.js ├── package.json ├── pnpm-workspace.yaml ├── src/ │ ├── core.ts │ └── index.ts ├── test/ │ ├── index.test.ts │ ├── input/ │ │ ├── invalid-json-schema-plugin.ts │ │ └── plugin-with-schema-ids.ts │ └── output/ │ ├── core-rules.d.ts │ ├── flat-config-vue.d.ts │ ├── invalid-json-schema-plugin.d.ts │ ├── jsx-a11y.d.ts │ ├── no-rule-meta.d.ts │ ├── plugin-with-schema-ids.d.ts │ └── plugins.d.ts ├── tsconfig.json └── tsdown.config.ts
SYMBOL INDEX (435 symbols across 9 files)
FILE: src/core.ts
type RulesTypeGenOptions (line 6) | interface RulesTypeGenOptions {
type FlatConfigsToPluginsOptions (line 50) | interface FlatConfigsToPluginsOptions {
type FlatConfigsToRulesOptions (line 55) | interface FlatConfigsToRulesOptions
function flatConfigsToPlugins (line 59) | async function flatConfigsToPlugins(
function flatConfigsToRulesDTS (line 81) | async function flatConfigsToRulesDTS(
function pluginsToRulesDTS (line 94) | async function pluginsToRulesDTS(
function compileRule (line 180) | async function compileRule(
FILE: src/index.ts
type TypeGenOptions (line 9) | interface TypeGenOptions extends FlatConfigsToRulesOptions {
function typegen (line 26) | async function typegen(
FILE: test/output/core-rules.d.ts
type RulesRecord (line 7) | interface RulesRecord extends RuleOptions {}
type RuleOptions (line 11) | interface RuleOptions {
type AccessorPairs (line 1569) | type AccessorPairs = []|[{
type ArrayBracketNewline (line 1576) | type ArrayBracketNewline = []|[(("always" | "never" | "consistent") | {
type ArrayBracketSpacing (line 1581) | type ArrayBracketSpacing = []|[("always" | "never")]|[("always" | "never...
type ArrayCallbackReturn (line 1587) | type ArrayCallbackReturn = []|[{
type ArrayElementNewline (line 1593) | type ArrayElementNewline = []|[(_ArrayElementNewlineBasicConfig | {
type _ArrayElementNewlineBasicConfig (line 1597) | type _ArrayElementNewlineBasicConfig = (("always" | "never" | "consisten...
type ArrowBodyStyle (line 1602) | type ArrowBodyStyle = ([]|[("always" | "never")] | []|["as-needed"]|["as...
type ArrowParens (line 1606) | type ArrowParens = []|[("always" | "as-needed")]|[("always" | "as-needed...
type ArrowSpacing (line 1610) | type ArrowSpacing = []|[{
type BlockSpacing (line 1615) | type BlockSpacing = []|[("always" | "never")]
type BraceStyle (line 1617) | type BraceStyle = []|[("1tbs" | "stroustrup" | "allman")]|[("1tbs" | "st...
type CallbackReturn (line 1621) | type CallbackReturn = []|[string[]]
type Camelcase (line 1623) | type Camelcase = []|[{
type CapitalizedComments (line 1632) | type CapitalizedComments = []|[("always" | "never")]|[("always" | "never...
type ClassMethodsUseThis (line 1649) | type ClassMethodsUseThis = []|[{
type CommaDangle (line 1656) | type CommaDangle = []|[(_CommaDangleValue | {
type _CommaDangleValue (line 1663) | type _CommaDangleValue = ("always-multiline" | "always" | "never" | "onl...
type _CommaDangleValueWithIgnore (line 1664) | type _CommaDangleValueWithIgnore = ("always-multiline" | "always" | "ign...
type CommaSpacing (line 1666) | type CommaSpacing = []|[{
type CommaStyle (line 1671) | type CommaStyle = []|[("first" | "last")]|[("first" | "last"), {
type Complexity (line 1677) | type Complexity = []|[(number | {
type ComputedPropertySpacing (line 1683) | type ComputedPropertySpacing = []|[("always" | "never")]|[("always" | "n...
type ConsistentReturn (line 1687) | type ConsistentReturn = []|[{
type ConsistentThis (line 1691) | type ConsistentThis = string[]
type Curly (line 1693) | type Curly = ([]|["all"] | []|[("multi" | "multi-line" | "multi-or-nest"...
type DefaultCase (line 1695) | type DefaultCase = []|[{
type DotLocation (line 1699) | type DotLocation = []|[("object" | "property")]
type DotNotation (line 1701) | type DotNotation = []|[{
type EolLast (line 1706) | type EolLast = []|[("always" | "never" | "unix" | "windows")]
type Eqeqeq (line 1708) | type Eqeqeq = ([]|["always"]|["always", {
type FuncCallSpacing (line 1712) | type FuncCallSpacing = ([]|["never"] | []|["always"]|["always", {
type FuncNameMatching (line 1716) | type FuncNameMatching = ([]|[("always" | "never")]|[("always" | "never"), {
type FuncNames (line 1724) | type FuncNames = []|[_FuncNamesValue]|[_FuncNamesValue, {
type _FuncNamesValue (line 1727) | type _FuncNamesValue = ("always" | "as-needed" | "never")
type FuncStyle (line 1729) | type FuncStyle = []|[("declaration" | "expression")]|[("declaration" | "...
type FunctionCallArgumentNewline (line 1737) | type FunctionCallArgumentNewline = []|[("always" | "never" | "consistent")]
type FunctionParenNewline (line 1739) | type FunctionParenNewline = []|[(("always" | "never" | "consistent" | "m...
type GeneratorStarSpacing (line 1743) | type GeneratorStarSpacing = []|[(("before" | "after" | "both" | "neither...
type GetterReturn (line 1760) | type GetterReturn = []|[{
type GroupedAccessorPairs (line 1764) | type GroupedAccessorPairs = []|[("anyOrder" | "getBeforeSet" | "setBefor...
type HandleCallbackErr (line 1768) | type HandleCallbackErr = []|[string]
type IdBlacklist (line 1770) | type IdBlacklist = string[]
type IdDenylist (line 1772) | type IdDenylist = string[]
type IdLength (line 1774) | type IdLength = []|[{
type IdMatch (line 1782) | type IdMatch = []|[string]|[string, {
type ImplicitArrowLinebreak (line 1789) | type ImplicitArrowLinebreak = []|[("beside" | "below")]
type Indent (line 1791) | type Indent = []|[("tab" | number)]|[("tab" | number), {
type IndentLegacy (line 1823) | type IndentLegacy = []|[("tab" | number)]|[("tab" | number), {
type InitDeclarations (line 1851) | type InitDeclarations = ([]|["always"] | []|["never"]|["never", {
type JsxQuotes (line 1855) | type JsxQuotes = []|[("prefer-single" | "prefer-double")]
type KeySpacing (line 1857) | type KeySpacing = []|[({
type KeywordSpacing (line 1903) | type KeywordSpacing = []|[{
type LineCommentPosition (line 2182) | type LineCommentPosition = []|[(("above" | "beside") | {
type LinebreakStyle (line 2189) | type LinebreakStyle = []|[("unix" | "windows")]
type LinesAroundComment (line 2191) | type LinesAroundComment = []|[{
type LinesAroundDirective (line 2209) | type LinesAroundDirective = []|[(("always" | "never") | {
type LinesBetweenClassMembers (line 2214) | type LinesBetweenClassMembers = []|[({
type LogicalAssignmentOperators (line 2240) | type LogicalAssignmentOperators = (([]|["always"]|["always", {
type MaxClassesPerFile (line 2244) | type MaxClassesPerFile = []|[(number | {
type MaxDepth (line 2249) | type MaxDepth = []|[(number | {
type MaxLen (line 2254) | type MaxLen = []|[({
type MaxLines (line 2322) | type MaxLines = []|[(number | {
type MaxLinesPerFunction (line 2328) | type MaxLinesPerFunction = []|[({
type MaxNestedCallbacks (line 2335) | type MaxNestedCallbacks = []|[(number | {
type MaxParams (line 2340) | type MaxParams = []|[(number | {
type MaxStatements (line 2349) | type MaxStatements = []|[(number | {
type MaxStatementsPerLine (line 2359) | type MaxStatementsPerLine = []|[{
type MultilineCommentStyle (line 2363) | type MultilineCommentStyle = ([]|[("starred-block" | "bare-block")] | []...
type MultilineTernary (line 2367) | type MultilineTernary = []|[("always" | "always-multiline" | "never")]
type NewCap (line 2369) | type NewCap = []|[{
type NewParens (line 2379) | type NewParens = []|[("always" | "never")]
type NewlineAfterVar (line 2381) | type NewlineAfterVar = []|[("never" | "always")]
type NewlinePerChainedCall (line 2383) | type NewlinePerChainedCall = []|[{
type NoBitwise (line 2387) | type NoBitwise = []|[{
type NoCondAssign (line 2392) | type NoCondAssign = []|[("except-parens" | "always")]
type NoConfusingArrow (line 2394) | type NoConfusingArrow = []|[{
type NoConsole (line 2399) | type NoConsole = []|[{
type NoConstantCondition (line 2404) | type NoConstantCondition = []|[{
type NoDuplicateImports (line 2408) | type NoDuplicateImports = []|[{
type NoElseReturn (line 2413) | type NoElseReturn = []|[{
type NoEmpty (line 2417) | type NoEmpty = []|[{
type NoEmptyFunction (line 2421) | type NoEmptyFunction = []|[{
type NoEmptyPattern (line 2425) | type NoEmptyPattern = []|[{
type NoEval (line 2429) | type NoEval = []|[{
type NoExtendNative (line 2433) | type NoExtendNative = []|[{
type NoExtraBooleanCast (line 2437) | type NoExtraBooleanCast = []|[({
type NoExtraParens (line 2443) | type NoExtraParens = ([]|["functions"] | []|["all"]|["all", {
type NoFallthrough (line 2456) | type NoFallthrough = []|[{
type NoGlobalAssign (line 2462) | type NoGlobalAssign = []|[{
type NoImplicitCoercion (line 2466) | type NoImplicitCoercion = []|[{
type NoImplicitGlobals (line 2474) | type NoImplicitGlobals = []|[{
type NoInlineComments (line 2478) | type NoInlineComments = []|[{
type NoInnerDeclarations (line 2482) | type NoInnerDeclarations = []|[("functions" | "both")]|[("functions" | "...
type NoInvalidRegexp (line 2486) | type NoInvalidRegexp = []|[{
type NoInvalidThis (line 2490) | type NoInvalidThis = []|[{
type NoIrregularWhitespace (line 2494) | type NoIrregularWhitespace = []|[{
type NoLabels (line 2502) | type NoLabels = []|[{
type NoMagicNumbers (line 2507) | type NoMagicNumbers = []|[{
type NoMisleadingCharacterClass (line 2520) | type NoMisleadingCharacterClass = []|[{
type NoMixedOperators (line 2524) | type NoMixedOperators = []|[{
type NoMixedRequires (line 2529) | type NoMixedRequires = []|[(boolean | {
type NoMixedSpacesAndTabs (line 2534) | type NoMixedSpacesAndTabs = []|[("smart-tabs" | true | false)]
type NoMultiAssign (line 2536) | type NoMultiAssign = []|[{
type NoMultiSpaces (line 2540) | type NoMultiSpaces = []|[{
type NoMultipleEmptyLines (line 2547) | type NoMultipleEmptyLines = []|[{
type NoNativeReassign (line 2553) | type NoNativeReassign = []|[{
type NoParamReassign (line 2557) | type NoParamReassign = []|[({
type NoPlusplus (line 2565) | type NoPlusplus = []|[{
type NoPromiseExecutorReturn (line 2569) | type NoPromiseExecutorReturn = []|[{
type NoRedeclare (line 2573) | type NoRedeclare = []|[{
type NoRestrictedExports (line 2577) | type NoRestrictedExports = []|[({
type NoRestrictedGlobals (line 2592) | type NoRestrictedGlobals = ((string | {
type NoRestrictedImports (line 2605) | type NoRestrictedImports = ((string | {
type NoRestrictedModules (line 2628) | type NoRestrictedModules = ((string | {
type NoRestrictedProperties (line 2639) | type NoRestrictedProperties = ({
type NoRestrictedSyntax (line 2645) | type NoRestrictedSyntax = (string | {
type NoReturnAssign (line 2650) | type NoReturnAssign = []|[("except-parens" | "always")]
type NoSelfAssign (line 2652) | type NoSelfAssign = []|[{
type NoSequences (line 2656) | type NoSequences = []|[{
type NoShadow (line 2660) | type NoShadow = []|[{
type NoShadowRestrictedNames (line 2669) | type NoShadowRestrictedNames = []|[{
type NoSync (line 2673) | type NoSync = []|[{
type NoTabs (line 2677) | type NoTabs = []|[{
type NoTrailingSpaces (line 2681) | type NoTrailingSpaces = []|[{
type NoUndef (line 2686) | type NoUndef = []|[{
type NoUnderscoreDangle (line 2690) | type NoUnderscoreDangle = []|[{
type NoUnneededTernary (line 2702) | type NoUnneededTernary = []|[{
type NoUnreachableLoop (line 2706) | type NoUnreachableLoop = []|[{
type NoUnsafeNegation (line 2710) | type NoUnsafeNegation = []|[{
type NoUnsafeOptionalChaining (line 2714) | type NoUnsafeOptionalChaining = []|[{
type NoUnusedExpressions (line 2718) | type NoUnusedExpressions = []|[{
type NoUnusedVars (line 2726) | type NoUnusedVars = []|[(("all" | "local") | {
type NoUseBeforeDefine (line 2740) | type NoUseBeforeDefine = []|[("nofunc" | {
type NoUselessComputedKey (line 2750) | type NoUselessComputedKey = []|[{
type NoUselessEscape (line 2754) | type NoUselessEscape = []|[{
type NoUselessRename (line 2758) | type NoUselessRename = []|[{
type NoVoid (line 2764) | type NoVoid = []|[{
type NoWarningComments (line 2768) | type NoWarningComments = []|[{
type NonblockStatementBodyPosition (line 2775) | type NonblockStatementBodyPosition = []|[("beside" | "below" | "any")]|[...
type ObjectCurlyNewline (line 2785) | type ObjectCurlyNewline = []|[((("always" | "never") | {
type ObjectCurlySpacing (line 2812) | type ObjectCurlySpacing = []|[("always" | "never")]|[("always" | "never"...
type ObjectPropertyNewline (line 2817) | type ObjectPropertyNewline = []|[{
type ObjectShorthand (line 2822) | type ObjectShorthand = ([]|[("always" | "methods" | "properties" | "neve...
type OneVar (line 2831) | type OneVar = []|[(("always" | "never" | "consecutive") | {
type OneVarDeclarationPerLine (line 2843) | type OneVarDeclarationPerLine = []|[("always" | "initializations")]
type OperatorAssignment (line 2845) | type OperatorAssignment = []|[("always" | "never")]
type OperatorLinebreak (line 2847) | type OperatorLinebreak = []|[("after" | "before" | "none" | null)]|[("af...
type PaddedBlocks (line 2853) | type PaddedBlocks = []|[(("always" | "never") | {
type _PaddingLineBetweenStatementsPaddingType (line 2865) | type _PaddingLineBetweenStatementsPaddingType = ("any" | "never" | "alwa...
type _PaddingLineBetweenStatementsStatementType (line 2866) | type _PaddingLineBetweenStatementsStatementType = (("*" | "block-like" |...
type PaddingLineBetweenStatements (line 2867) | type PaddingLineBetweenStatements = {
type PreferArrowCallback (line 2873) | type PreferArrowCallback = []|[{
type PreferConst (line 2878) | type PreferConst = []|[{
type PreferDestructuring (line 2883) | type PreferDestructuring = []|[({
type PreferPromiseRejectErrors (line 2911) | type PreferPromiseRejectErrors = []|[{
type PreferReflect (line 2915) | type PreferReflect = []|[{
type PreferRegexLiterals (line 2919) | type PreferRegexLiterals = []|[{
type PreserveCaughtError (line 2923) | type PreserveCaughtError = []|[{
type QuoteProps (line 2928) | type QuoteProps = ([]|[("always" | "as-needed" | "consistent" | "consist...
type Quotes (line 2934) | type Quotes = []|[("single" | "double" | "backtick")]|[("single" | "doub...
type Radix (line 2939) | type Radix = []|[("always" | "as-needed")]
type RequireAtomicUpdates (line 2941) | type RequireAtomicUpdates = []|[{
type RequireUnicodeRegexp (line 2945) | type RequireUnicodeRegexp = []|[{
type RestSpreadSpacing (line 2949) | type RestSpreadSpacing = []|[("always" | "never")]
type Semi (line 2951) | type Semi = ([]|["never"]|["never", {
type SemiSpacing (line 2958) | type SemiSpacing = []|[{
type SemiStyle (line 2963) | type SemiStyle = []|[("last" | "first")]
type SortImports (line 2965) | type SortImports = []|[{
type SortKeys (line 2974) | type SortKeys = []|[("asc" | "desc")]|[("asc" | "desc"), {
type SortVars (line 2982) | type SortVars = []|[{
type SpaceBeforeBlocks (line 2986) | type SpaceBeforeBlocks = []|[(("always" | "never") | {
type SpaceBeforeFunctionParen (line 2992) | type SpaceBeforeFunctionParen = []|[(("always" | "never") | {
type SpaceInParens (line 2998) | type SpaceInParens = []|[("always" | "never")]|[("always" | "never"), {
type SpaceInfixOps (line 3002) | type SpaceInfixOps = []|[{
type SpaceUnaryOps (line 3006) | type SpaceUnaryOps = []|[{
type SpacedComment (line 3014) | type SpacedComment = []|[("always" | "never")]|[("always" | "never"), {
type Strict (line 3028) | type Strict = []|[("never" | "global" | "function" | "safe")]
type SwitchColonSpacing (line 3030) | type SwitchColonSpacing = []|[{
type TemplateCurlySpacing (line 3035) | type TemplateCurlySpacing = []|[("always" | "never")]
type TemplateTagSpacing (line 3037) | type TemplateTagSpacing = []|[("always" | "never")]
type UnicodeBom (line 3039) | type UnicodeBom = []|[("always" | "never")]
type UseIsnan (line 3041) | type UseIsnan = []|[{
type ValidTypeof (line 3046) | type ValidTypeof = []|[{
type WrapIife (line 3050) | type WrapIife = []|[("outside" | "inside" | "any")]|[("outside" | "insid...
type YieldStarSpacing (line 3054) | type YieldStarSpacing = []|[(("before" | "after" | "both" | "neither") | {
type Yoda (line 3059) | type Yoda = []|[("always" | "never")]|[("always" | "never"), {
FILE: test/output/flat-config-vue.d.ts
type RulesRecord (line 7) | interface RulesRecord extends RuleOptions {}
type RuleOptions (line 11) | interface RuleOptions {
type VueArrayBracketNewline (line 1270) | type VueArrayBracketNewline = []|[(("always" | "never" | "consistent") | {
type VueArrayBracketSpacing (line 1275) | type VueArrayBracketSpacing = []|[("always" | "never")]|[("always" | "ne...
type VueArrayElementNewline (line 1281) | type VueArrayElementNewline = []|[(_VueArrayElementNewlineBasicConfig | {
type _VueArrayElementNewlineBasicConfig (line 1285) | type _VueArrayElementNewlineBasicConfig = (("always" | "never" | "consis...
type VueArrowSpacing (line 1291) | type VueArrowSpacing = []|[{
type VueAttributeHyphenation (line 1296) | type VueAttributeHyphenation = []|[("always" | "never")]|[("always" | "n...
type VueAttributesOrder (line 1305) | type VueAttributesOrder = []|[{
type VueBlockLang (line 1312) | type VueBlockLang = []|[{
type VueBlockOrder (line 1319) | type VueBlockOrder = []|[{
type VueBlockSpacing (line 1323) | type VueBlockSpacing = []|[("always" | "never")]
type VueBlockTagNewline (line 1325) | type VueBlockTagNewline = []|[{
type VueBraceStyle (line 1338) | type VueBraceStyle = []|[("1tbs" | "stroustrup" | "allman")]|[("1tbs" | ...
type VueCamelcase (line 1342) | type VueCamelcase = []|[{
type VueCommaDangle (line 1351) | type VueCommaDangle = []|[(_VueCommaDangleValue | {
type _VueCommaDangleValue (line 1363) | type _VueCommaDangleValue = ("always-multiline" | "always" | "never" | "...
type _VueCommaDangleValueWithIgnore (line 1364) | type _VueCommaDangleValueWithIgnore = ("always-multiline" | "always" | "...
type VueCommaSpacing (line 1366) | type VueCommaSpacing = []|[{
type VueCommaStyle (line 1371) | type VueCommaStyle = []|[("first" | "last")]|[("first" | "last"), {
type VueCommentDirective (line 1377) | type VueCommentDirective = []|[{
type VueComponentApiStyle (line 1381) | type VueComponentApiStyle = []|[[("script-setup" | "composition" | "comp...
type VueComponentDefinitionNameCasing (line 1383) | type VueComponentDefinitionNameCasing = []|[("PascalCase" | "kebab-case")]
type VueComponentNameInTemplateCasing (line 1385) | type VueComponentNameInTemplateCasing = []|[("PascalCase" | "kebab-case"...
type VueComponentOptionsNameCasing (line 1391) | type VueComponentOptionsNameCasing = []|[("camelCase" | "kebab-case" | "...
type VueCustomEventNameCasing (line 1393) | type VueCustomEventNameCasing = []|[("kebab-case" | "camelCase")]|[("keb...
type VueDefineEmitsDeclaration (line 1397) | type VueDefineEmitsDeclaration = []|[("type-based" | "type-literal" | "r...
type VueDefineMacrosOrder (line 1399) | type VueDefineMacrosOrder = []|[{
type VueDefinePropsDeclaration (line 1404) | type VueDefinePropsDeclaration = []|[("type-based" | "runtime")]
type VueDefinePropsDestructuring (line 1406) | type VueDefinePropsDestructuring = []|[{
type VueDotLocation (line 1410) | type VueDotLocation = []|[("object" | "property")]
type VueDotNotation (line 1412) | type VueDotNotation = []|[{
type VueEnforceStyleAttribute (line 1417) | type VueEnforceStyleAttribute = []|[{
type VueEqeqeq (line 1422) | type VueEqeqeq = ([]|["always"]|["always", {
type VueFirstAttributeLinebreak (line 1426) | type VueFirstAttributeLinebreak = []|[{
type VueFuncCallSpacing (line 1431) | type VueFuncCallSpacing = ([]|["never"] | []|["always"]|["always", {
type VueHtmlButtonHasType (line 1439) | type VueHtmlButtonHasType = []|[{
type VueHtmlClosingBracketNewline (line 1445) | type VueHtmlClosingBracketNewline = []|[{
type VueHtmlClosingBracketSpacing (line 1454) | type VueHtmlClosingBracketSpacing = []|[{
type VueHtmlCommentContentNewline (line 1460) | type VueHtmlCommentContentNewline = []|[(("always" | "never") | {
type VueHtmlCommentContentSpacing (line 1470) | type VueHtmlCommentContentSpacing = []|[("always" | "never")]|[("always"...
type VueHtmlCommentIndent (line 1474) | type VueHtmlCommentIndent = []|[(number | "tab")]
type VueHtmlIndent (line 1476) | type VueHtmlIndent = []|[(number | "tab")]|[(number | "tab"), {
type VueHtmlQuotes (line 1493) | type VueHtmlQuotes = []|[("double" | "single")]|[("double" | "single"), {
type VueHtmlSelfClosing (line 1497) | type VueHtmlSelfClosing = []|[{
type _VueHtmlSelfClosingOptionValue (line 1506) | type _VueHtmlSelfClosingOptionValue = ("always" | "never" | "any")
type VueKeySpacing (line 1508) | type VueKeySpacing = []|[({
type VueKeywordSpacing (line 1555) | type VueKeywordSpacing = []|[{
type VueMatchComponentFileName (line 1858) | type VueMatchComponentFileName = []|[{
type VueMaxAttributesPerLine (line 1863) | type VueMaxAttributesPerLine = []|[{
type VueMaxLen (line 1872) | type VueMaxLen = []|[({
type VueMaxLinesPerBlock (line 1958) | type VueMaxLinesPerBlock = []|[{
type VueMaxProps (line 1965) | type VueMaxProps = []|[{
type VueMaxTemplateDepth (line 1969) | type VueMaxTemplateDepth = []|[{
type VueMultiWordComponentNames (line 1973) | type VueMultiWordComponentNames = []|[{
type VueMultilineHtmlElementContentNewline (line 1977) | type VueMultilineHtmlElementContentNewline = []|[{
type VueMultilineTernary (line 1983) | type VueMultilineTernary = []|[("always" | "always-multiline" | "never")...
type VueMustacheInterpolationSpacing (line 1987) | type VueMustacheInterpolationSpacing = []|[("always" | "never")]
type VueNewLineBetweenMultiLineProperty (line 1989) | type VueNewLineBetweenMultiLineProperty = []|[{
type VueNextTickStyle (line 1993) | type VueNextTickStyle = []|[("promise" | "callback")]
type VueNoAsyncInComputedProperties (line 1995) | type VueNoAsyncInComputedProperties = []|[{
type VueNoBareStringsInTemplate (line 1999) | type VueNoBareStringsInTemplate = []|[{
type VueNoBooleanDefault (line 2007) | type VueNoBooleanDefault = []|[("default-false" | "no-default")]
type VueNoChildContent (line 2009) | type VueNoChildContent = []|[{
type VueNoConsole (line 2014) | type VueNoConsole = []|[{
type VueNoConstantCondition (line 2019) | type VueNoConstantCondition = []|[{
type VueNoDeprecatedModelDefinition (line 2023) | type VueNoDeprecatedModelDefinition = []|[{
type VueNoDeprecatedRouterLinkTagProp (line 2027) | type VueNoDeprecatedRouterLinkTagProp = []|[{
type VueNoDeprecatedSlotAttribute (line 2032) | type VueNoDeprecatedSlotAttribute = []|[{
type VueNoDupeKeys (line 2037) | type VueNoDupeKeys = []|[{
type VueNoDuplicateAttrInheritance (line 2041) | type VueNoDuplicateAttrInheritance = []|[{
type VueNoDuplicateAttributes (line 2045) | type VueNoDuplicateAttributes = []|[{
type VueNoEmptyPattern (line 2050) | type VueNoEmptyPattern = []|[{
type VueNoExtraParens (line 2054) | type VueNoExtraParens = ([]|["functions"] | []|["all"]|["all", {
type VueNoImplicitCoercion (line 2074) | type VueNoImplicitCoercion = []|[{
type VueNoIrregularWhitespace (line 2082) | type VueNoIrregularWhitespace = []|[{
type VueNoLoneTemplate (line 2091) | type VueNoLoneTemplate = []|[{
type VueNoMultiSpaces (line 2095) | type VueNoMultiSpaces = []|[{
type VueNoMultipleTemplateRoot (line 2100) | type VueNoMultipleTemplateRoot = []|[{
type VueNoMutatingProps (line 2104) | type VueNoMutatingProps = []|[{
type VueNoParsingError (line 2108) | type VueNoParsingError = []|[{
type VueNoPotentialComponentOptionTypo (line 2147) | type VueNoPotentialComponentOptionTypo = []|[{
type VueNoRequiredPropWithDefault (line 2155) | type VueNoRequiredPropWithDefault = []|[{
type VueNoReservedComponentNames (line 2159) | type VueNoReservedComponentNames = []|[{
type VueNoReservedKeys (line 2165) | type VueNoReservedKeys = []|[{
type VueNoReservedProps (line 2170) | type VueNoReservedProps = []|[{
type VueNoRestrictedBlock (line 2174) | type VueNoRestrictedBlock = (string | {
type VueNoRestrictedCallAfterAwait (line 2179) | type VueNoRestrictedCallAfterAwait = {
type VueNoRestrictedClass (line 2185) | type VueNoRestrictedClass = string[]
type VueNoRestrictedComponentNames (line 2187) | type VueNoRestrictedComponentNames = (string | {
type VueNoRestrictedComponentOptions (line 2193) | type VueNoRestrictedComponentOptions = (string | string[] | {
type VueNoRestrictedCustomEvent (line 2198) | type VueNoRestrictedCustomEvent = (string | {
type VueNoRestrictedHtmlElements (line 2204) | type VueNoRestrictedHtmlElements = (string | {
type VueNoRestrictedProps (line 2209) | type VueNoRestrictedProps = (string | {
type VueNoRestrictedStaticAttribute (line 2215) | type VueNoRestrictedStaticAttribute = (string | {
type VueNoRestrictedSyntax (line 2222) | type VueNoRestrictedSyntax = (string | {
type VueNoRestrictedVBind (line 2227) | type VueNoRestrictedVBind = ((string | null) | {
type VueNoRestrictedVOn (line 2234) | type VueNoRestrictedVOn = ((string | null) | {
type VueNoStaticInlineStyles (line 2242) | type VueNoStaticInlineStyles = []|[{
type VueNoTemplateShadow (line 2246) | type VueNoTemplateShadow = []|[{
type VueNoTemplateTargetBlank (line 2250) | type VueNoTemplateTargetBlank = []|[{
type VueNoUndefComponents (line 2255) | type VueNoUndefComponents = []|[{
type VueNoUndefDirectives (line 2259) | type VueNoUndefDirectives = []|[{
type VueNoUndefProperties (line 2263) | type VueNoUndefProperties = []|[{
type VueNoUnsupportedFeatures (line 2267) | type VueNoUnsupportedFeatures = []|[{
type VueNoUnusedComponents (line 2272) | type VueNoUnusedComponents = []|[{
type VueNoUnusedProperties (line 2276) | type VueNoUnusedProperties = []|[{
type VueNoUnusedVars (line 2283) | type VueNoUnusedVars = []|[{
type VueNoUseVIfWithVFor (line 2287) | type VueNoUseVIfWithVFor = []|[{
type VueNoUselessMustaches (line 2291) | type VueNoUselessMustaches = []|[{
type VueNoUselessVBind (line 2296) | type VueNoUselessVBind = []|[{
type VueNoVHtml (line 2301) | type VueNoVHtml = []|[{
type VueNoVTextVHtmlOnComponent (line 2305) | type VueNoVTextVHtmlOnComponent = []|[{
type VueObjectCurlyNewline (line 2310) | type VueObjectCurlyNewline = []|[((("always" | "never") | {
type VueObjectCurlySpacing (line 2352) | type VueObjectCurlySpacing = []|[("always" | "never")]|[("always" | "nev...
type VueObjectPropertyNewline (line 2370) | type VueObjectPropertyNewline = []|[{
type VueObjectShorthand (line 2374) | type VueObjectShorthand = ([]|[("always" | "methods" | "properties" | "n...
type VueOperatorLinebreak (line 2383) | type VueOperatorLinebreak = []|[(("after" | "before" | "none") | null)]|...
type VueOrderInComponents (line 2389) | type VueOrderInComponents = []|[{
type VuePaddingLineBetweenBlocks (line 2393) | type VuePaddingLineBetweenBlocks = []|[("never" | "always")]
type VuePaddingLineBetweenTags (line 2395) | type VuePaddingLineBetweenTags = []|[{
type VuePaddingLinesInComponentDefinition (line 2401) | type VuePaddingLinesInComponentDefinition = []|[(("always" | "never") | {
type VuePreferTrueAttributeShorthand (line 2412) | type VuePreferTrueAttributeShorthand = []|[("always" | "never")]|[("alwa...
type VuePropNameCasing (line 2416) | type VuePropNameCasing = []|[("camelCase" | "snake_case")]|[("camelCase"...
type VueQuoteProps (line 2420) | type VueQuoteProps = ([]|[("always" | "as-needed" | "consistent" | "cons...
type VueRequireDirectExport (line 2426) | type VueRequireDirectExport = []|[{
type VueRequireExplicitEmits (line 2430) | type VueRequireExplicitEmits = []|[{
type VueRequireMacroVariableName (line 2434) | type VueRequireMacroVariableName = []|[{
type VueRequirePropComment (line 2442) | type VueRequirePropComment = []|[{
type VueRequireToggleInsideTransition (line 2446) | type VueRequireToggleInsideTransition = []|[{
type VueRestrictedComponentNames (line 2450) | type VueRestrictedComponentNames = []|[{
type VueReturnInComputedProperty (line 2454) | type VueReturnInComputedProperty = []|[{
type VueScriptIndent (line 2458) | type VueScriptIndent = []|[(number | "tab")]|[(number | "tab"), {
type VueSinglelineHtmlElementContentNewline (line 2468) | type VueSinglelineHtmlElementContentNewline = []|[{
type VueSlotNameCasing (line 2475) | type VueSlotNameCasing = []|[("camelCase" | "kebab-case" | "singleword")]
type VueSortKeys (line 2477) | type VueSortKeys = []|[("asc" | "desc")]|[("asc" | "desc"), {
type VueSpaceInParens (line 2485) | type VueSpaceInParens = []|[("always" | "never")]|[("always" | "never"), {
type VueSpaceInfixOps (line 2489) | type VueSpaceInfixOps = []|[{
type VueSpaceUnaryOps (line 2494) | type VueSpaceUnaryOps = []|[{
type VueTemplateCurlySpacing (line 2502) | type VueTemplateCurlySpacing = []|[("always" | "never")]
type VueThisInTemplate (line 2504) | type VueThisInTemplate = []|[("always" | "never")]
type VueVBindStyle (line 2506) | type VueVBindStyle = []|[("shorthand" | "longform")]|[("shorthand" | "lo...
type VueVForDelimiterStyle (line 2510) | type VueVForDelimiterStyle = []|[("in" | "of")]
type VueVOnEventHyphenation (line 2512) | type VueVOnEventHyphenation = []|[("always" | "never")]|[("always" | "ne...
type VueVOnHandlerStyle (line 2522) | type VueVOnHandlerStyle = []|[(("inline" | "inline-function") | ["method...
type VueVOnStyle (line 2526) | type VueVOnStyle = []|[("shorthand" | "longform")]
type VueVSlotStyle (line 2528) | type VueVSlotStyle = []|[(("shorthand" | "longform") | {
type VueValidVFor (line 2534) | type VueValidVFor = []|[{
type VueValidVOn (line 2538) | type VueValidVOn = []|[{
type VueValidVSlot (line 2542) | type VueValidVSlot = []|[{
FILE: test/output/invalid-json-schema-plugin.d.ts
type RulesRecord (line 7) | interface RulesRecord extends RuleOptions {}
type RuleOptions (line 11) | interface RuleOptions {
type InvalidJsonSchemaPluginInvalidJsonSchemaRule (line 20) | type InvalidJsonSchemaPluginInvalidJsonSchemaRule = unknown
FILE: test/output/jsx-a11y.d.ts
type RulesRecord (line 7) | interface RulesRecord extends RuleOptions {}
type RuleOptions (line 11) | interface RuleOptions {
type JsxA11YAccessibleEmoji (line 214) | type JsxA11YAccessibleEmoji = []|[{
type JsxA11YAltText (line 218) | type JsxA11YAltText = []|[{
type JsxA11YAnchorAmbiguousText (line 227) | type JsxA11YAnchorAmbiguousText = []|[{
type JsxA11YAnchorHasContent (line 232) | type JsxA11YAnchorHasContent = []|[{
type JsxA11YAnchorIsValid (line 237) | type JsxA11YAnchorIsValid = []|[{
type JsxA11YAriaActivedescendantHasTabindex (line 245) | type JsxA11YAriaActivedescendantHasTabindex = []|[{
type JsxA11YAriaProps (line 249) | type JsxA11YAriaProps = []|[{
type JsxA11YAriaProptypes (line 253) | type JsxA11YAriaProptypes = []|[{
type JsxA11YAriaRole (line 257) | type JsxA11YAriaRole = []|[{
type JsxA11YAriaUnsupportedElements (line 263) | type JsxA11YAriaUnsupportedElements = []|[{
type JsxA11YAutocompleteValid (line 267) | type JsxA11YAutocompleteValid = []|[{
type JsxA11YClickEventsHaveKeyEvents (line 272) | type JsxA11YClickEventsHaveKeyEvents = []|[{
type JsxA11YControlHasAssociatedLabel (line 276) | type JsxA11YControlHasAssociatedLabel = []|[{
type JsxA11YHeadingHasContent (line 286) | type JsxA11YHeadingHasContent = []|[{
type JsxA11YHtmlHasLang (line 291) | type JsxA11YHtmlHasLang = []|[{
type JsxA11YIframeHasTitle (line 295) | type JsxA11YIframeHasTitle = []|[{
type JsxA11YImgRedundantAlt (line 299) | type JsxA11YImgRedundantAlt = []|[{
type JsxA11YInteractiveSupportsFocus (line 305) | type JsxA11YInteractiveSupportsFocus = []|[{
type JsxA11YLabelHasAssociatedControl (line 311) | type JsxA11YLabelHasAssociatedControl = []|[{
type JsxA11YLabelHasFor (line 322) | type JsxA11YLabelHasFor = []|[{
type JsxA11YLang (line 337) | type JsxA11YLang = []|[{
type JsxA11YMediaHasCaption (line 341) | type JsxA11YMediaHasCaption = []|[{
type JsxA11YMouseEventsHaveKeyEvents (line 348) | type JsxA11YMouseEventsHaveKeyEvents = []|[{
type JsxA11YNoAccessKey (line 356) | type JsxA11YNoAccessKey = []|[{
type JsxA11YNoAriaHiddenOnFocusable (line 360) | type JsxA11YNoAriaHiddenOnFocusable = []|[{
type JsxA11YNoAutofocus (line 364) | type JsxA11YNoAutofocus = []|[{
type JsxA11YNoDistractingElements (line 369) | type JsxA11YNoDistractingElements = []|[{
type JsxA11YNoInteractiveElementToNoninteractiveRole (line 375) | type JsxA11YNoInteractiveElementToNoninteractiveRole = []|[{
type JsxA11YNoNoninteractiveElementInteractions (line 379) | type JsxA11YNoNoninteractiveElementInteractions = []|[{
type JsxA11YNoNoninteractiveElementToInteractiveRole (line 384) | type JsxA11YNoNoninteractiveElementToInteractiveRole = []|[{
type JsxA11YNoNoninteractiveTabindex (line 388) | type JsxA11YNoNoninteractiveTabindex = []|[{
type JsxA11YNoOnchange (line 396) | type JsxA11YNoOnchange = []|[{
type JsxA11YNoRedundantRoles (line 400) | type JsxA11YNoRedundantRoles = []|[{
type JsxA11YNoStaticElementInteractions (line 404) | type JsxA11YNoStaticElementInteractions = []|[{
type JsxA11YPreferTagOverRole (line 409) | type JsxA11YPreferTagOverRole = []|[{
type JsxA11YRoleHasRequiredAriaProps (line 413) | type JsxA11YRoleHasRequiredAriaProps = []|[{
type JsxA11YRoleSupportsAriaProps (line 417) | type JsxA11YRoleSupportsAriaProps = []|[{
type JsxA11YScope (line 421) | type JsxA11YScope = []|[{
type JsxA11YTabindexNoPositive (line 425) | type JsxA11YTabindexNoPositive = []|[{
FILE: test/output/no-rule-meta.d.ts
type RulesRecord (line 7) | interface RulesRecord extends RuleOptions {}
type RuleOptions (line 11) | interface RuleOptions {
FILE: test/output/plugin-with-schema-ids.d.ts
type RulesRecord (line 7) | interface RulesRecord extends RuleOptions {}
type RuleOptions (line 11) | interface RuleOptions {
type _PluginSchemaWithIdAtRootAId (line 17) | type _PluginSchemaWithIdAtRootAId = string
type _PluginSchemaWithIdAtRootC1Id (line 18) | type _PluginSchemaWithIdAtRootC1Id = string
type _PluginSchemaWithIdAtRootSchemaId (line 19) | interface _PluginSchemaWithIdAtRootSchemaId {
type _PluginSchemaWithIdAtRootBId (line 29) | interface _PluginSchemaWithIdAtRootBId {
FILE: test/output/plugins.d.ts
type RulesRecord (line 7) | interface RulesRecord extends RuleOptions {}
type RuleOptions (line 11) | interface RuleOptions {
type AntfuConsistentChaining (line 307) | type AntfuConsistentChaining = []|[{
type AntfuConsistentListNewline (line 312) | type AntfuConsistentListNewline = []|[{
type AntfuIndentUnindent (line 336) | type AntfuIndentUnindent = []|[{
type ImportConsistentTypeSpecifierStyle (line 341) | type ImportConsistentTypeSpecifierStyle = []|[("prefer-top-level" | "pre...
type ImportDynamicImportChunkname (line 343) | type ImportDynamicImportChunkname = []|[{
type ImportExtensions (line 350) | type ImportExtensions = ([]|[("always" | "ignorePackages" | "never")] | ...
type ImportFirst (line 386) | type ImportFirst = []|[("absolute-first" | "disable-absolute-first")]
type ImportImportsFirst (line 388) | type ImportImportsFirst = []|[("absolute-first" | "disable-absolute-firs...
type ImportMaxDependencies (line 390) | type ImportMaxDependencies = []|[{
type ImportNamed (line 395) | type ImportNamed = []|[{
type ImportNamespace (line 399) | type ImportNamespace = []|[{
type ImportNewlineAfterImport (line 404) | type ImportNewlineAfterImport = []|[{
type ImportNoAbsolutePath (line 410) | type ImportNoAbsolutePath = []|[{
type ImportNoAnonymousDefaultExport (line 418) | type ImportNoAnonymousDefaultExport = []|[{
type ImportNoCommonjs (line 437) | type ImportNoCommonjs = ([]|["allow-primitive-modules"] | []|[{
type ImportNoCycle (line 443) | type ImportNoCycle = []|[{
type ImportNoDuplicates (line 456) | type ImportNoDuplicates = []|[{
type ImportNoDynamicRequire (line 461) | type ImportNoDynamicRequire = []|[{
type ImportNoExtraneousDependencies (line 465) | type ImportNoExtraneousDependencies = []|[{
type ImportNoImportModuleExports (line 476) | type ImportNoImportModuleExports = []|[{
type ImportNoInternalModules (line 480) | type ImportNoInternalModules = []|[({
type ImportNoNamespace (line 486) | type ImportNoNamespace = []|[{
type ImportNoNodejsModules (line 491) | type ImportNoNodejsModules = []|[{
type ImportNoRelativePackages (line 495) | type ImportNoRelativePackages = []|[{
type ImportNoRelativeParentImports (line 503) | type ImportNoRelativeParentImports = []|[{
type ImportNoRenameDefault (line 511) | type ImportNoRenameDefault = []|[{
type ImportNoRestrictedPaths (line 516) | type ImportNoRestrictedPaths = []|[{
type ImportNoUnassignedImport (line 532) | type ImportNoUnassignedImport = []|[{
type ImportNoUnresolved (line 539) | type ImportNoUnresolved = []|[{
type ImportNoUnusedModules (line 549) | type ImportNoUnusedModules = []|[({
type ImportNoUselessPathSegments (line 559) | type ImportNoUselessPathSegments = []|[{
type ImportOrder (line 564) | type ImportOrder = []|[{
type ImportPreferDefaultExport (line 596) | type ImportPreferDefaultExport = []|[{
type ImportPreferNamespaceImport (line 600) | type ImportPreferNamespaceImport = []|[{
Condensed preview — 26 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (267K chars).
[
{
"path": ".github/FUNDING.yml",
"chars": 16,
"preview": "github: [antfu]\n"
},
{
"path": ".github/workflows/ci.yml",
"chars": 1125,
"preview": "name: CI\n\non:\n push:\n branches:\n - main\n\n pull_request:\n branches:\n - main\n\njobs:\n lint:\n runs-on:"
},
{
"path": ".github/workflows/release.yml",
"chars": 217,
"preview": "name: Release\n\non:\n push:\n tags:\n - 'v*'\n\njobs:\n release:\n uses: sxzz/workflows/.github/workflows/release.y"
},
{
"path": ".gitignore",
"chars": 100,
"preview": ".cache\n.DS_Store\n.idea\n*.log\n*.tgz\ncoverage\ndist\nlib-cov\nlogs\nnode_modules\ntemp\neslint-typegen.d.ts\n"
},
{
"path": ".npmrc",
"chars": 53,
"preview": "ignore-workspace-root-check=true\nshell-emulator=true\n"
},
{
"path": ".vscode/settings.json",
"chars": 1090,
"preview": "{\n // Enable the ESlint flat config support\n \"eslint.experimental.useFlatConfig\": true,\n\n // Disable the default form"
},
{
"path": "CONTRIBUTING.md",
"chars": 52,
"preview": "Please refer to https://github.com/antfu/contribute\n"
},
{
"path": "LICENSE",
"chars": 1094,
"preview": "MIT License\n\nCopyright (c) 2022 Anthony Fu <https://github.com/antfu>\n\nPermission is hereby granted, free of charge, to "
},
{
"path": "README.md",
"chars": 4109,
"preview": "# eslint-typegen\n\n[![npm version][npm-version-src]][npm-version-href]\n[![npm downloads][npm-downloads-src]][npm-download"
},
{
"path": "eslint.config.js",
"chars": 280,
"preview": "// @ts-check\n/// <reference path=\"./eslint-typegen.d.ts\" />\nimport antfu from '@antfu/eslint-config'\n// eslint-disable-n"
},
{
"path": "package.json",
"chars": 2143,
"preview": "{\n \"name\": \"eslint-typegen\",\n \"type\": \"module\",\n \"version\": \"2.3.1\",\n \"packageManager\": \"pnpm@10.30.0\",\n \"descripti"
},
{
"path": "pnpm-workspace.yaml",
"chars": 824,
"preview": "shellEmulator: true\n\ntrustPolicy: no-downgrade\n\npackages:\n - playground\n - docs\n - packages/*\n - examples/*\ncatalogs"
},
{
"path": "src/core.ts",
"chars": 6922,
"preview": "import type { ESLint, Linter, Rule } from 'eslint'\nimport type { JSONSchema4 } from 'json-schema'\nimport type { Options "
},
{
"path": "src/index.ts",
"chars": 2334,
"preview": "import type { Linter } from 'eslint'\nimport type { FlatConfigsToRulesOptions } from './core'\nimport { existsSync } from "
},
{
"path": "test/index.test.ts",
"chars": 2240,
"preview": "import { vue } from '@antfu/eslint-config'\nimport { expect, it } from 'vitest'\nimport { flatConfigsToRulesDTS, pluginsTo"
},
{
"path": "test/input/invalid-json-schema-plugin.ts",
"chars": 525,
"preview": "import type { ESLint, Rule } from 'eslint'\n\nexport const invalidJsonSchemaPlugin: ESLint.Plugin = {\n rules: {\n 'inva"
},
{
"path": "test/input/plugin-with-schema-ids.ts",
"chars": 1208,
"preview": "import type { ESLint, Rule } from 'eslint'\n\nexport const pluginWithSchemaIds: ESLint.Plugin = {\n rules: {\n 'schema-w"
},
{
"path": "test/output/core-rules.d.ts",
"chars": 96810,
"preview": "/* eslint-disable */\n/* prettier-ignore */\nimport type { Linter } from 'eslint'\n\ndeclare module 'eslint' {\n namespace L"
},
{
"path": "test/output/flat-config-vue.d.ts",
"chars": 86606,
"preview": "/* eslint-disable */\n/* prettier-ignore */\nimport type { Linter } from 'eslint'\n\ndeclare module 'eslint' {\n namespace L"
},
{
"path": "test/output/invalid-json-schema-plugin.d.ts",
"chars": 560,
"preview": "/* eslint-disable */\n/* prettier-ignore */\nimport type { Linter } from 'eslint'\n\ndeclare module 'eslint' {\n namespace L"
},
{
"path": "test/output/jsx-a11y.d.ts",
"chars": 17756,
"preview": "/* eslint-disable */\n/* prettier-ignore */\nimport type { Linter } from 'eslint'\n\ndeclare module 'eslint' {\n namespace L"
},
{
"path": "test/output/no-rule-meta.d.ts",
"chars": 5136,
"preview": "/* eslint-disable */\n/* prettier-ignore */\nimport type { Linter } from 'eslint'\n\ndeclare module 'eslint' {\n namespace L"
},
{
"path": "test/output/plugin-with-schema-ids.d.ts",
"chars": 726,
"preview": "/* eslint-disable */\n/* prettier-ignore */\nimport type { Linter } from 'eslint'\n\ndeclare module 'eslint' {\n namespace L"
},
{
"path": "test/output/plugins.d.ts",
"chars": 21970,
"preview": "/* eslint-disable */\n/* prettier-ignore */\nimport type { Linter } from 'eslint'\n\ndeclare module 'eslint' {\n namespace L"
},
{
"path": "tsconfig.json",
"chars": 371,
"preview": "{\n \"compilerOptions\": {\n \"target\": \"ESNext\",\n \"lib\": [\"ESNext\"],\n \"module\": \"ESNext\",\n \"moduleResolution\": "
},
{
"path": "tsdown.config.ts",
"chars": 209,
"preview": "import { defineConfig } from 'tsdown'\n\nexport default defineConfig({\n entry: [\n 'src/index.ts',\n 'src/core.ts',\n "
}
]
About this extraction
This page contains the full source code of the antfu/eslint-typegen GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 26 files (248.5 KB), approximately 70.7k tokens, and a symbol index with 435 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.