package eslint import ( "list" "strings" "time" "struct" ) #Plugins: { @jsonschema(schema="http://json-schema.org/draft-07/schema#") @jsonschema(id="https://json.schemastore.org/partial-eslint-plugins.json") // Classes decorated with @Component must have suffix "Component" // (or custom) in their name. See more at // https://angular.dev/style-guide#style-02-03 // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/component-class-suffix.md "@angular-eslint/component-class-suffix"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "suffixes"?: [...string] ... }, ...]]) // Enforces a maximum number of lines in inline template, styles // and animations. See more at // https://angular.dev/style-guide#style-05-04 // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/component-max-inline-declarations.md "@angular-eslint/component-max-inline-declarations"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "template"?: >=0 "styles"?: >=0 "animations"?: >=0 ... }, ...]]) // Component selectors should follow given naming rules. See more // at https://angular.dev/style-guide#style-02-07, // https://angular.dev/style-guide#style-05-02 // and https://angular.dev/style-guide#style-05-03. // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/component-selector.md "@angular-eslint/component-selector"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "type"?: matchN(1, [string, [..."element" | "attribute"]]) "prefix"?: string | [...] "style"?: "camelCase" | "kebab-case" ... }, ...]]) // Ensures consistent usage of `styles`/`styleUrls`/`styleUrl` // within Component metadata // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/consistent-component-styles.md "@angular-eslint/consistent-component-styles"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { ... }, ...]]) // Ensures that classes use contextual decorators in its body // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/contextual-decorator.md "@angular-eslint/contextual-decorator"?: _ // Ensures that lifecycle methods are used in a correct context // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/contextual-lifecycle.md "@angular-eslint/contextual-lifecycle"?: _ // Classes decorated with @Directive must have suffix "Directive" // (or custom) in their name. See more at // https://angular.dev/style-guide#style-02-03 // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/directive-class-suffix.md "@angular-eslint/directive-class-suffix"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "suffixes"?: [...string] ... }, ...]]) // Directive selectors should follow given naming rules. See more // at https://angular.dev/style-guide#style-02-06 and // https://angular.dev/style-guide#style-02-08. // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/directive-selector.md "@angular-eslint/directive-selector"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "type"?: matchN(1, [string, [..."element" | "attribute"]]) "prefix"?: string | [...] "style"?: "camelCase" | "kebab-case" ... }, ...]]) // Angular Lifecycle methods should not be async. Angular does not // wait for async lifecycle but the code incorrectly suggests it // does. // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-async-lifecycle-method.md "@angular-eslint/no-async-lifecycle-method"?: _ // The @Attribute decorator is used to obtain a single value for // an attribute. This is a much less common use-case than getting // a stream of values (using @Input), so often the @Attribute // decorator is mistakenly used when @Input was what was // intended. This rule disallows usage of @Attribute decorator // altogether in order to prevent these mistakes. // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-attribute-decorator.md "@angular-eslint/no-attribute-decorator"?: _ // Ensures that directives not implement conflicting lifecycle // interfaces. // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-conflicting-lifecycle.md "@angular-eslint/no-conflicting-lifecycle"?: _ // Ensures that metadata arrays do not contain duplicate entries. // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-duplicates-in-metadata-arrays.md "@angular-eslint/no-duplicates-in-metadata-arrays"?: _ // Disallows declaring empty lifecycle methods // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-empty-lifecycle-method.md "@angular-eslint/no-empty-lifecycle-method"?: _ // Disallows usage of `forwardRef` references for DI // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-forward-ref.md "@angular-eslint/no-forward-ref"?: _ // Disallows usage of the `host` metadata property. NOTE: This // used to be recommended by the Angular Team, but now they // recommend the exact opposite: // https://github.com/angular/angular/issues/54284 // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-host-metadata-property.md "@angular-eslint/no-host-metadata-property"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "allowStatic"?: bool ... }, ...]]) // Ensures that input bindings, including aliases, are not named // or prefixed by the configured disallowed prefixes // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-input-prefix.md "@angular-eslint/no-input-prefix"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "prefixes"?: [...string] ... }, ...]]) // Ensures that input bindings are not aliased // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-input-rename.md "@angular-eslint/no-input-rename"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { // A list with allowed input names "allowedNames"?: list.UniqueItems() & [...string] ... }, ...]]) // Disallows usage of the `inputs` metadata property. See more at // https://angular.dev/style-guide#style-05-12 // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-inputs-metadata-property.md "@angular-eslint/no-inputs-metadata-property"?: _ // Disallows explicit calls to lifecycle methods // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-lifecycle-call.md "@angular-eslint/no-lifecycle-call"?: _ // Ensures that output bindings, including aliases, are not named // as standard DOM events // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-output-native.md "@angular-eslint/no-output-native"?: _ // Ensures that output bindings, including aliases, are not named // "on", nor prefixed with it. See more at // https://angular.dev/style-guide#style-05-16 // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-output-on-prefix.md "@angular-eslint/no-output-on-prefix"?: _ // Ensures that output bindings are not aliased // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-output-rename.md "@angular-eslint/no-output-rename"?: _ // Disallows usage of the `outputs` metadata property. See more at // https://angular.dev/style-guide#style-05-12 // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-outputs-metadata-property.md "@angular-eslint/no-outputs-metadata-property"?: _ // Disallows the declaration of impure pipes // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-pipe-impure.md "@angular-eslint/no-pipe-impure"?: _ // Disallows usage of the `queries` metadata property. See more at // https://angular.dev/style-guide#style-05-12. // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-queries-metadata-property.md "@angular-eslint/no-queries-metadata-property"?: _ // Enforce consistent prefix for pipes. // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/pipe-prefix.md "@angular-eslint/pipe-prefix"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "prefixes"?: list.UniqueItems() & [...string] ... }, ...]]) // Ensures component's `changeDetection` is set to // `ChangeDetectionStrategy.OnPush` // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/prefer-on-push-component-change-detection.md "@angular-eslint/prefer-on-push-component-change-detection"?: _ // Ensures component, directive and pipe `standalone` property is // set to `true` in the component decorator // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/prefer-standalone.md "@angular-eslint/prefer-standalone"?: _ // Ensures component `standalone` property is set to `true` in the // component decorator // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/prefer-standalone-component.md "@angular-eslint/prefer-standalone-component"?: _ // Prefer to declare `@Output` as `readonly` since they are not // supposed to be reassigned // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/prefer-output-readonly.md "@angular-eslint/prefer-output-readonly"?: _ // The ./ and ../ prefix is standard syntax for relative URLs; // don't depend on Angular's current ability to do without that // prefix. See more at // https://angular.dev/style-guide#style-05-04 // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/relative-url-prefix.md "@angular-eslint/relative-url-prefix"?: _ // Ensures that $localize tagged messages contain helpful metadata // to aid with translations. // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/require-localize-metadata.md "@angular-eslint/require-localize-metadata"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "requireDescription"?: bool "requireMeaning"?: bool ... }, ...]]) // Ensures that lifecycle methods are declared in order of // execution // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/sort-lifecycle-methods.md "@angular-eslint/sort-lifecycle-methods"?: _ // Ensures ASC alphabetical order for `NgModule` metadata arrays // for easy visual scanning // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/sort-ngmodule-metadata-arrays.md "@angular-eslint/sort-ngmodule-metadata-arrays"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { // A string with a BCP 47 language tag. "locale"?: string ... }, ...]]) // Component selector must be declared // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/use-component-selector.md "@angular-eslint/use-component-selector"?: _ // Disallows using `ViewEncapsulation.None` // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/use-component-view-encapsulation.md "@angular-eslint/use-component-view-encapsulation"?: _ // Using the `providedIn` property makes `Injectables` // tree-shakable // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/use-injectable-provided-in.md "@angular-eslint/use-injectable-provided-in"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "ignoreClassNamePattern"?: string ... }, ...]]) // Ensures that classes implement lifecycle interfaces // corresponding to the declared lifecycle methods. See more at // https://angular.dev/style-guide#style-09-01 // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/use-lifecycle-interface.md "@angular-eslint/use-lifecycle-interface"?: _ // Ensures that `Pipes` implement `PipeTransform` interface // https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/use-pipe-transform-interface.md "@angular-eslint/use-pipe-transform-interface"?: _ // Ensure imports point to a file/module that can be resolved. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-unresolved.md "eslint-plugin-import/no-unresolved"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "commonjs"?: bool "amd"?: bool "esmodule"?: bool "ignore"?: list.UniqueItems() & [_, ...] & [...string] "caseSensitive"?: bool "caseSensitiveStrict"?: bool ... }, ...]]) // Ensure named imports correspond to a named export in the remote // file. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/named.md "eslint-plugin-import/named"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "commonjs"?: bool ... }, ...]]) // Ensure a default export is present, given a default import. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/default.md "eslint-plugin-import/default"?: _ // Ensure imported namespaces contain dereferenced properties as // they are dereferenced. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/namespace.md "eslint-plugin-import/namespace"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { // If `false`, will report computed (and thus, un-lintable) // references to namespace members. "allowComputed"?: bool ... }, ...]]) // Forbid namespace (a.k.a. "wildcard" `*`) imports. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-namespace.md "eslint-plugin-import/no-namespace"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "ignore"?: list.UniqueItems() & [...string] ... }, ...]]) // Forbid any invalid exports, i.e. re-export of the same name. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/export.md "eslint-plugin-import/export"?: _ // Forbid the use of mutable exports with `var` or `let`. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-mutable-exports.md "eslint-plugin-import/no-mutable-exports"?: _ // Ensure consistent use of file extension within the import path. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/extensions.md "eslint-plugin-import/extensions"?: _ // Enforce which files can be imported in a given folder. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-restricted-paths.md "eslint-plugin-import/no-restricted-paths"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "zones"?: [_, ...] & [...close({ "target"?: matchN(>=1, [string, list.UniqueItems() & [...string] & [_, ...]]) "from"?: matchN(>=1, [string, list.UniqueItems() & [...string] & [_, ...]]) "except"?: list.UniqueItems() & [...string] "message"?: string })] "basePath"?: string ... }, ...]]) // Forbid importing the submodules of other modules. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-internal-modules.md "eslint-plugin-import/no-internal-modules"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { ... }, ...]]) // Prefer named exports to be grouped together in a single export // declaration // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/group-exports.md "eslint-plugin-import/group-exports"?: _ // Forbid importing packages through relative paths. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-relative-packages.md "eslint-plugin-import/no-relative-packages"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "commonjs"?: bool "amd"?: bool "esmodule"?: bool "ignore"?: list.UniqueItems() & [_, ...] & [...string] ... }, ...]]) // Forbid importing modules from parent directories. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-relative-parent-imports.md "eslint-plugin-import/no-relative-parent-imports"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "commonjs"?: bool "amd"?: bool "esmodule"?: bool "ignore"?: list.UniqueItems() & [_, ...] & [...string] ... }, ...]]) // Enforce or ban the use of inline type-only markers for named // imports. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/consistent-type-specifier-style.md "eslint-plugin-import/consistent-type-specifier-style"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { ... }, ...]]) // Forbid a module from importing itself. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-self-import.md "eslint-plugin-import/no-self-import"?: _ // Forbid a module from importing a module with a dependency path // back to itself. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-cycle.md "eslint-plugin-import/no-cycle"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "commonjs"?: bool "amd"?: bool "esmodule"?: bool "ignore"?: list.UniqueItems() & [_, ...] & [...string] "maxDepth"?: matchN(>=1, [int & >=1, "∞"]) // ignore external modules "ignoreExternal"?: bool // Allow cyclic dependency if there is at least one dynamic import // in the chain "allowUnsafeDynamicCyclicDependency"?: bool ... }, ...]]) // Forbid named default exports. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-named-default.md "eslint-plugin-import/no-named-default"?: _ // Forbid use of exported name as identifier of default export. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-named-as-default.md "eslint-plugin-import/no-named-as-default"?: _ // Forbid use of exported name as property of default export. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-named-as-default-member.md "eslint-plugin-import/no-named-as-default-member"?: _ // Forbid anonymous values as default exports. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-anonymous-default-export.md "eslint-plugin-import/no-anonymous-default-export"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { // If `false`, will report default export of an array "allowArray"?: bool // If `false`, will report default export of an arrow function "allowArrowFunction"?: bool // If `false`, will report default export of a function call "allowCallExpression"?: bool // If `false`, will report default export of an anonymous class "allowAnonymousClass"?: bool // If `false`, will report default export of an anonymous function "allowAnonymousFunction"?: bool // If `false`, will report default export of a literal "allowLiteral"?: bool // If `false`, will report default export of an object expression "allowObject"?: bool // If `false`, will report default export of a class instantiation "allowNew"?: bool ... }, ...]]) // Forbid modules without exports, or exports without matching // import in another module. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-unused-modules.md "eslint-plugin-import/no-unused-modules"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { // files/paths to be analyzed (only for unused exports) "src"?: list.UniqueItems() & [...strings.MinRunes(1)] // files/paths for which unused exports will not be reported (e.g // module entry points) "ignoreExports"?: list.UniqueItems() & [...strings.MinRunes(1)] // report modules without any exports "missingExports"?: bool // report exports without any usage "unusedExports"?: bool ... }, ...]]) // Forbid CommonJS `require` calls and `module.exports` or // `exports.*`. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-commonjs.md "eslint-plugin-import/no-commonjs"?: _ // Forbid AMD `require` and `define` calls. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-amd.md "eslint-plugin-import/no-amd"?: _ // Forbid repeated import of the same module in multiple places. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-duplicates.md "eslint-plugin-import/no-duplicates"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "considerQueryString"?: bool "prefer-inline"?: bool ... }, ...]]) // Ensure all imports appear before other statements. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/first.md "eslint-plugin-import/first"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { ... }, ...]]) // Enforce the maximum number of dependencies a module can have. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/max-dependencies.md "eslint-plugin-import/max-dependencies"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "max"?: number "ignoreTypeImports"?: bool ... }, ...]]) // Forbid the use of extraneous packages. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-extraneous-dependencies.md "eslint-plugin-import/no-extraneous-dependencies"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "devDependencies"?: matchN(1, [bool, [...]]) "optionalDependencies"?: matchN(1, [bool, [...]]) "peerDependencies"?: matchN(1, [bool, [...]]) "bundledDependencies"?: matchN(1, [bool, [...]]) "packageDir"?: matchN(1, [string, [...]]) "includeInternal"?: bool "includeTypes"?: bool ... }, ...]]) // Forbid import of modules using absolute paths. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-absolute-path.md "eslint-plugin-import/no-absolute-path"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "commonjs"?: bool "amd"?: bool "esmodule"?: bool "ignore"?: list.UniqueItems() & [_, ...] & [...string] ... }, ...]]) // Forbid Node.js builtin modules. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-nodejs-modules.md "eslint-plugin-import/no-nodejs-modules"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "allow"?: list.UniqueItems() & [...string] ... }, ...]]) // Forbid webpack loader syntax in imports. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-webpack-loader-syntax.md "eslint-plugin-import/no-webpack-loader-syntax"?: _ // Enforce a convention in module import order. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/order.md "eslint-plugin-import/order"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "groups"?: [...] "pathGroupsExcludedImportTypes"?: [...] "distinctGroup"?: bool "pathGroups"?: [...close({ "pattern"!: string "patternOptions"?: { ... } "group"!: "builtin" | "external" | "internal" | "unknown" | "parent" | "sibling" | "index" | "object" | "type" "position"?: "after" | "before" })] "newlines-between"?: "ignore" | "always" | "always-and-inside-groups" | "never" "alphabetize"?: close({ "caseInsensitive"?: bool "order"?: "ignore" | "asc" | "desc" "orderImportKind"?: "ignore" | "asc" | "desc" }) "warnOnUnassignedImports"?: bool ... }, ...]]) // Enforce a newline after import statements. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/newline-after-import.md "eslint-plugin-import/newline-after-import"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "count"?: int & >=1 "exactCount"?: bool "considerComments"?: bool ... }, ...]]) // Prefer a default export if module exports a single name or // multiple names. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/prefer-default-export.md "eslint-plugin-import/prefer-default-export"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "target"?: "single" | "any" ... }, ...]]) // Forbid default exports. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-default-export.md "eslint-plugin-import/no-default-export"?: _ // Forbid named exports. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-named-export.md "eslint-plugin-import/no-named-export"?: _ // Forbid `require()` calls with expressions. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-dynamic-require.md "eslint-plugin-import/no-dynamic-require"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "esmodule"?: bool ... }, ...]]) // Forbid potentially ambiguous parse goal (`script` vs. // `module`). // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/unambiguous.md "eslint-plugin-import/unambiguous"?: _ // Forbid unassigned imports // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-unassigned-import.md "eslint-plugin-import/no-unassigned-import"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "devDependencies"?: matchN(1, [bool, [...]]) "optionalDependencies"?: matchN(1, [bool, [...]]) "peerDependencies"?: matchN(1, [bool, [...]]) "allow"?: [...string] ... }, ...]]) // Forbid unnecessary path segments in import and require // statements. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-useless-path-segments.md "eslint-plugin-import/no-useless-path-segments"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "commonjs"?: bool "noUselessIndex"?: bool ... }, ...]]) // Enforce a leading comment with the webpackChunkName for dynamic // imports. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/dynamic-import-chunkname.md "eslint-plugin-import/dynamic-import-chunkname"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "importFunctions"?: list.UniqueItems() & [...string] "webpackChunknameFormat"?: string ... }, ...]]) // Forbid import statements with CommonJS module.exports. "eslint-plugin-import/no-import-module-exports"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "exceptions"?: [...] ... }, ...]]) // Forbid empty named import blocks. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-empty-named-blocks.md "eslint-plugin-import/no-empty-named-blocks"?: _ // Ensure all exports appear after other statements. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/exports-last.md "eslint-plugin-import/exports-last"?: _ // Forbid imported names marked with `@deprecated` documentation // tag. // https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-deprecated.md "eslint-plugin-import/no-deprecated"?: _ // Replaced by `import/first`. // https://github.com/import-js/eslint-plugin-import/blob/7b25c1cb95ee18acc1531002fd343e1e6031f9ed/docs/rules/imports-first.md "eslint-plugin-import/imports-first"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { ... }, ...]]) // Improve regexes by making them shorter, consistent, and safer. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/better-regex.md "eslint-plugin-unicorn/better-regex"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "sortCharacterClasses"?: bool ... }, ...]]) // Enforce a specific parameter name in catch clauses. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/catch-error-name.md "eslint-plugin-unicorn/catch-error-name"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "name"?: string "ignore"?: list.UniqueItems() ... }, ...]]) // Use destructured variables over properties. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/consistent-destructuring.md "eslint-plugin-unicorn/consistent-destructuring"?: _ // Prefer consistent types when spreading a ternary in an array // literal. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/consistent-empty-array-spread.md "eslint-plugin-unicorn/consistent-empty-array-spread"?: _ // Move function definitions to the highest possible scope. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/consistent-function-scoping.md "eslint-plugin-unicorn/consistent-function-scoping"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "checkArrowFunctions"?: bool ... }, ...]]) // Enforce correct `Error` subclassing. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/custom-error-definition.md "eslint-plugin-unicorn/custom-error-definition"?: _ // Enforce no spaces between braces. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/empty-brace-spaces.md "eslint-plugin-unicorn/empty-brace-spaces"?: _ // Enforce passing a `message` value when creating a built-in // error. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/error-message.md "eslint-plugin-unicorn/error-message"?: _ // Require escape sequences to use uppercase values. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/escape-case.md "eslint-plugin-unicorn/escape-case"?: _ // Add expiration conditions to TODO comments. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/expiring-todo-comments.md "eslint-plugin-unicorn/expiring-todo-comments"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "terms"?: [...string] "ignore"?: list.UniqueItems() "ignoreDatesOnPullRequests"?: bool "allowWarningComments"?: bool "date"?: time.Format("2006-01-02") ... }, ...]]) // Enforce explicitly comparing the `length` or `size` property of // a value. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/explicit-length-check.md "eslint-plugin-unicorn/explicit-length-check"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "non-zero"?: "greater-than" | "not-equal" ... }, ...]]) // Enforce a case style for filenames. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/filename-case.md "eslint-plugin-unicorn/filename-case"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { ... }, ...]]) // Enforce specific import styles per module. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/import-style.md "eslint-plugin-unicorn/import-style"?: _ // Enforce the use of `new` for all builtins, except `String`, // `Number`, `Boolean`, `Symbol` and `BigInt`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/new-for-builtins.md "eslint-plugin-unicorn/new-for-builtins"?: _ // Enforce specifying rules to disable in `eslint-disable` // comments. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-abusive-eslint-disable.md "eslint-plugin-unicorn/no-abusive-eslint-disable"?: _ // Disallow anonymous functions and classes as the default export. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-anonymous-default-export.md "eslint-plugin-unicorn/no-anonymous-default-export"?: _ // Prevent passing a function reference directly to iterator // methods. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-array-callback-reference.md "eslint-plugin-unicorn/no-array-callback-reference"?: _ // Prefer `for…of` over the `forEach` method. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-array-for-each.md "eslint-plugin-unicorn/no-array-for-each"?: _ // Disallow using the `this` argument in array methods. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-array-method-this-argument.md "eslint-plugin-unicorn/no-array-method-this-argument"?: _ // Enforce combining multiple `Array#push()` into one call. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-array-push-push.md "eslint-plugin-unicorn/no-array-push-push"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "ignore"?: list.UniqueItems() ... }, ...]]) // Disallow `Array#reduce()` and `Array#reduceRight()`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-array-reduce.md "eslint-plugin-unicorn/no-array-reduce"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "allowSimpleOperations"?: bool ... }, ...]]) // Disallow member access from await expression. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-await-expression-member.md "eslint-plugin-unicorn/no-await-expression-member"?: _ // Disallow using `await` in `Promise` method parameters. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-await-in-promise-methods.md "eslint-plugin-unicorn/no-await-in-promise-methods"?: _ // Do not use leading/trailing space between `console.log` // parameters. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-console-spaces.md "eslint-plugin-unicorn/no-console-spaces"?: _ // Do not use `document.cookie` directly. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-document-cookie.md "eslint-plugin-unicorn/no-document-cookie"?: _ // Disallow empty files. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-empty-file.md "eslint-plugin-unicorn/no-empty-file"?: _ // Do not use a `for` loop that can be replaced with a `for-of` // loop. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-for-loop.md "eslint-plugin-unicorn/no-for-loop"?: _ // Enforce the use of Unicode escapes instead of hexadecimal // escapes. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-hex-escape.md "eslint-plugin-unicorn/no-hex-escape"?: _ // Require `Array.isArray()` instead of `instanceof Array`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-instanceof-array.md "eslint-plugin-unicorn/no-instanceof-array"?: _ // Disallow invalid options in `fetch()` and `new Request()`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-invalid-fetch-options.md "eslint-plugin-unicorn/no-invalid-fetch-options"?: _ // Prevent calling `EventTarget#removeEventListener()` with the // result of an expression. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-invalid-remove-event-listener.md "eslint-plugin-unicorn/no-invalid-remove-event-listener"?: _ // Disallow identifiers starting with `new` or `class`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-keyword-prefix.md "eslint-plugin-unicorn/no-keyword-prefix"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "disallowedPrefixes"?: list.UniqueItems() & list.MaxItems(1) & [string, ...] & [_, ...] "checkProperties"?: bool "onlyCamelCase"?: bool ... }, ...]]) // Disallow `if` statements as the only statement in `if` blocks // without `else`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-lonely-if.md "eslint-plugin-unicorn/no-lonely-if"?: _ // Disallow a magic number as the `depth` argument in // `Array#flat(…).` // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-magic-array-flat-depth.md "eslint-plugin-unicorn/no-magic-array-flat-depth"?: _ // Disallow negated conditions. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-negated-condition.md "eslint-plugin-unicorn/no-negated-condition"?: _ // Disallow negated expression in equality check. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-negation-in-equality-check.md "eslint-plugin-unicorn/no-negation-in-equality-check"?: _ // Disallow nested ternary expressions. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-nested-ternary.md "eslint-plugin-unicorn/no-nested-ternary"?: _ // Disallow `new Array()`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-new-array.md "eslint-plugin-unicorn/no-new-array"?: _ // Enforce the use of `Buffer.from()` and `Buffer.alloc()` instead // of the deprecated `new Buffer()`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-new-buffer.md "eslint-plugin-unicorn/no-new-buffer"?: _ // Disallow the use of the `null` literal. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-null.md "eslint-plugin-unicorn/no-null"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "checkStrictEquality"?: bool ... }, ...]]) // Disallow the use of objects as default parameters. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-object-as-default-parameter.md "eslint-plugin-unicorn/no-object-as-default-parameter"?: _ // Disallow `process.exit()`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-process-exit.md "eslint-plugin-unicorn/no-process-exit"?: _ // Disallow passing single-element arrays to `Promise` methods. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-single-promise-in-promise-methods.md "eslint-plugin-unicorn/no-single-promise-in-promise-methods"?: _ // Disallow classes that only have static members. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-static-only-class.md "eslint-plugin-unicorn/no-static-only-class"?: _ // Disallow `then` property. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-thenable.md "eslint-plugin-unicorn/no-thenable"?: _ // Disallow assigning `this` to a variable. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-this-assignment.md "eslint-plugin-unicorn/no-this-assignment"?: _ // Disallow comparing `undefined` using `typeof`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-typeof-undefined.md "eslint-plugin-unicorn/no-typeof-undefined"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "checkGlobalVariables"?: bool ... }, ...]]) // Disallow awaiting non-promise values. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-unnecessary-await.md "eslint-plugin-unicorn/no-unnecessary-await"?: _ // Enforce the use of built-in methods instead of unnecessary // polyfills. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-unnecessary-polyfills.md "eslint-plugin-unicorn/no-unnecessary-polyfills"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "targets"?: string | [...] | { ... } ... }, ...]]) // Disallow unreadable array destructuring. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-unreadable-array-destructuring.md "eslint-plugin-unicorn/no-unreadable-array-destructuring"?: _ // Disallow unreadable IIFEs. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-unreadable-iife.md "eslint-plugin-unicorn/no-unreadable-iife"?: _ // Disallow unused object properties. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-unused-properties.md "eslint-plugin-unicorn/no-unused-properties"?: _ // Disallow useless fallback when spreading in object literals. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-useless-fallback-in-spread.md "eslint-plugin-unicorn/no-useless-fallback-in-spread"?: _ // Disallow useless array length check. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-useless-length-check.md "eslint-plugin-unicorn/no-useless-length-check"?: _ // Disallow returning/yielding `Promise.resolve/reject()` in async // functions or promise callbacks // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-useless-promise-resolve-reject.md "eslint-plugin-unicorn/no-useless-promise-resolve-reject"?: _ // Disallow unnecessary spread. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-useless-spread.md "eslint-plugin-unicorn/no-useless-spread"?: _ // Disallow useless case in switch statements. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-useless-switch-case.md "eslint-plugin-unicorn/no-useless-switch-case"?: _ // Disallow useless `undefined`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-useless-undefined.md "eslint-plugin-unicorn/no-useless-undefined"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "checkArguments"?: bool "checkArrowFunctionBody"?: bool ... }, ...]]) // Disallow number literals with zero fractions or dangling dots. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-zero-fractions.md "eslint-plugin-unicorn/no-zero-fractions"?: _ // Enforce proper case for numeric literals. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/number-literal-case.md "eslint-plugin-unicorn/number-literal-case"?: _ // Enforce the style of numeric separators by correctly grouping // digits. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/numeric-separators-style.md "eslint-plugin-unicorn/numeric-separators-style"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "binary"?: close({ "onlyIfContainsSeparator"?: bool "minimumDigits"?: int & >=0 "groupLength"?: int & >=1 }) "octal"?: close({ "onlyIfContainsSeparator"?: bool "minimumDigits"?: int & >=0 "groupLength"?: int & >=1 }) "hexadecimal"?: close({ "onlyIfContainsSeparator"?: bool "minimumDigits"?: int & >=0 "groupLength"?: int & >=1 }) "number"?: close({ "onlyIfContainsSeparator"?: bool "minimumDigits"?: int & >=0 "groupLength"?: int & >=1 }) "onlyIfContainsSeparator"?: bool ... }, ...]]) // Prefer `.addEventListener()` and `.removeEventListener()` over // `on`-functions. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-add-event-listener.md "eslint-plugin-unicorn/prefer-add-event-listener"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "excludedPackages"?: list.UniqueItems() & [...string] ... }, ...]]) // Prefer `.find(…)` and `.findLast(…)` over the first or last // element from `.filter(…)`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-array-find.md "eslint-plugin-unicorn/prefer-array-find"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "checkFromLast"?: bool ... }, ...]]) // Prefer `.flatMap(…)` over `.map(…).flat()`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-array-flat-map.md "eslint-plugin-unicorn/prefer-array-flat-map"?: _ // Prefer `Array#flat()` over legacy techniques to flatten arrays. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-array-flat.md "eslint-plugin-unicorn/prefer-array-flat"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "functions"?: list.UniqueItems() ... }, ...]]) // Prefer `Array#{indexOf,lastIndexOf}()` over // `Array#{findIndex,findLastIndex}()` when looking for the index // of an item. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-array-index-of.md "eslint-plugin-unicorn/prefer-array-index-of"?: _ // Prefer `.some(…)` over `.filter(…).length` check and // `.{find,findLast,findIndex,findLastIndex}(…)`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-array-some.md "eslint-plugin-unicorn/prefer-array-some"?: _ // Prefer `.at()` method for index access and `String#charAt()`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-at.md "eslint-plugin-unicorn/prefer-at"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "getLastElementFunctions"?: list.UniqueItems() "checkAllIndexAccess"?: bool ... }, ...]]) // Prefer `Blob#arrayBuffer()` over // `FileReader#readAsArrayBuffer(…)` and `Blob#text()` over // `FileReader#readAsText(…)`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-blob-reading-methods.md "eslint-plugin-unicorn/prefer-blob-reading-methods"?: _ // Prefer `String#codePointAt(…)` over `String#charCodeAt(…)` and // `String.fromCodePoint(…)` over `String.fromCharCode(…)`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-code-point.md "eslint-plugin-unicorn/prefer-code-point"?: _ // Prefer `Date.now()` to get the number of milliseconds since the // Unix Epoch. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-date-now.md "eslint-plugin-unicorn/prefer-date-now"?: _ // Prefer default parameters over reassignment. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-default-parameters.md "eslint-plugin-unicorn/prefer-default-parameters"?: _ // Prefer `Node#append()` over `Node#appendChild()`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-dom-node-append.md "eslint-plugin-unicorn/prefer-dom-node-append"?: _ // Prefer using `.dataset` on DOM elements over calling attribute // methods. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-dom-node-dataset.md "eslint-plugin-unicorn/prefer-dom-node-dataset"?: _ // Prefer `childNode.remove()` over // `parentNode.removeChild(childNode)`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-dom-node-remove.md "eslint-plugin-unicorn/prefer-dom-node-remove"?: _ // Prefer `.textContent` over `.innerText`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-dom-node-text-content.md "eslint-plugin-unicorn/prefer-dom-node-text-content"?: _ // Prefer `EventTarget` over `EventEmitter`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-event-target.md "eslint-plugin-unicorn/prefer-event-target"?: _ // Prefer `export…from` when re-exporting. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-export-from.md "eslint-plugin-unicorn/prefer-export-from"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "ignoreUsedVariables"?: bool ... }, ...]]) // Prefer `.includes()` over `.indexOf()`, `.lastIndexOf()`, and // `Array#some()` when checking for existence or non-existence. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-includes.md "eslint-plugin-unicorn/prefer-includes"?: _ // Prefer reading a JSON file as a buffer. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-json-parse-buffer.md "eslint-plugin-unicorn/prefer-json-parse-buffer"?: _ // Prefer `KeyboardEvent#key` over `KeyboardEvent#keyCode`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-keyboard-event-key.md "eslint-plugin-unicorn/prefer-keyboard-event-key"?: _ // Prefer using a logical operator over a ternary. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-logical-operator-over-ternary.md "eslint-plugin-unicorn/prefer-logical-operator-over-ternary"?: _ // Enforce the use of `Math.trunc` instead of bitwise operators. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-math-trunc.md "eslint-plugin-unicorn/prefer-math-trunc"?: _ // Prefer `.before()` over `.insertBefore()`, `.replaceWith()` // over `.replaceChild()`, prefer one of `.before()`, `.after()`, // `.append()` or `.prepend()` over `insertAdjacentText()` and // `insertAdjacentElement()`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-modern-dom-apis.md "eslint-plugin-unicorn/prefer-modern-dom-apis"?: _ // Prefer modern `Math` APIs over legacy patterns. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-modern-math-apis.md "eslint-plugin-unicorn/prefer-modern-math-apis"?: _ // Prefer JavaScript modules (ESM) over CommonJS. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-module.md "eslint-plugin-unicorn/prefer-module"?: _ // Prefer using `String`, `Number`, `BigInt`, `Boolean`, and // `Symbol` directly. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-native-coercion-functions.md "eslint-plugin-unicorn/prefer-native-coercion-functions"?: _ // Prefer negative index over `.length - index` when possible. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-negative-index.md "eslint-plugin-unicorn/prefer-negative-index"?: _ // Prefer using the `node:` protocol when importing Node.js // builtin modules. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-node-protocol.md "eslint-plugin-unicorn/prefer-node-protocol"?: _ // Prefer `Number` static properties over global ones. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-number-properties.md "eslint-plugin-unicorn/prefer-number-properties"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "checkInfinity"?: bool "checkNaN"?: bool ... }, ...]]) // Prefer using `Object.fromEntries(…)` to transform a list of // key-value pairs into an object. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-object-from-entries.md "eslint-plugin-unicorn/prefer-object-from-entries"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "functions"?: list.UniqueItems() ... }, ...]]) // Prefer omitting the `catch` binding parameter. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-optional-catch-binding.md "eslint-plugin-unicorn/prefer-optional-catch-binding"?: _ // Prefer borrowing methods from the prototype instead of the // instance. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-prototype-methods.md "eslint-plugin-unicorn/prefer-prototype-methods"?: _ // Prefer `.querySelector()` over `.getElementById()`, // `.querySelectorAll()` over `.getElementsByClassName()` and // `.getElementsByTagName()`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-query-selector.md "eslint-plugin-unicorn/prefer-query-selector"?: _ // Prefer `Reflect.apply()` over `Function#apply()`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-reflect-apply.md "eslint-plugin-unicorn/prefer-reflect-apply"?: _ // Prefer `RegExp#test()` over `String#match()` and // `RegExp#exec()`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-regexp-test.md "eslint-plugin-unicorn/prefer-regexp-test"?: _ // Prefer `Set#has()` over `Array#includes()` when checking for // existence or non-existence. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-set-has.md "eslint-plugin-unicorn/prefer-set-has"?: _ // Prefer using `Set#size` instead of `Array#length`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-set-size.md "eslint-plugin-unicorn/prefer-set-size"?: _ // Prefer the spread operator over `Array.from(…)`, // `Array#concat(…)`, `Array#{slice,toSpliced}()` and // `String#split('')`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-spread.md "eslint-plugin-unicorn/prefer-spread"?: _ // Prefer using the `String.raw` tag to avoid escaping `\`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-string-raw.md "eslint-plugin-unicorn/prefer-string-raw"?: _ // Prefer `String#replaceAll()` over regex searches with the // global flag. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-string-replace-all.md "eslint-plugin-unicorn/prefer-string-replace-all"?: _ // Prefer `String#slice()` over `String#substr()` and // `String#substring()`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-string-slice.md "eslint-plugin-unicorn/prefer-string-slice"?: _ // Prefer `String#startsWith()` & `String#endsWith()` over // `RegExp#test()`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-string-starts-ends-with.md "eslint-plugin-unicorn/prefer-string-starts-ends-with"?: _ // Prefer `String#trimStart()` / `String#trimEnd()` over // `String#trimLeft()` / `String#trimRight()`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-string-trim-start-end.md "eslint-plugin-unicorn/prefer-string-trim-start-end"?: _ // Prefer using `structuredClone` to create a deep clone. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-structured-clone.md "eslint-plugin-unicorn/prefer-structured-clone"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "functions"?: list.UniqueItems() ... }, ...]]) // Prefer `switch` over multiple `else-if`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-switch.md "eslint-plugin-unicorn/prefer-switch"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "minimumCases"?: int & >=2 "emptyDefaultCase"?: "no-default-comment" | "do-nothing-comment" | "no-default-case" ... }, ...]]) // Prefer ternary expressions over simple `if-else` statements. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-ternary.md "eslint-plugin-unicorn/prefer-ternary"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { ... }, ...]]) // Prefer top-level await over top-level promises and async // function calls. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-top-level-await.md "eslint-plugin-unicorn/prefer-top-level-await"?: _ // Enforce throwing `TypeError` in type checking conditions. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-type-error.md "eslint-plugin-unicorn/prefer-type-error"?: _ // Prevent abbreviations. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prevent-abbreviations.md "eslint-plugin-unicorn/prevent-abbreviations"?: _ // Enforce consistent relative URL style. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/relative-url-style.md "eslint-plugin-unicorn/relative-url-style"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { ... }, ...]]) // Enforce using the separator argument with `Array#join()`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/require-array-join-separator.md "eslint-plugin-unicorn/require-array-join-separator"?: _ // Enforce using the digits argument with `Number#toFixed()`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/require-number-to-fixed-digits-argument.md "eslint-plugin-unicorn/require-number-to-fixed-digits-argument"?: _ // Enforce using the `targetOrigin` argument with // `window.postMessage()`. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/require-post-message-target-origin.md "eslint-plugin-unicorn/require-post-message-target-origin"?: _ // Enforce better string content. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/string-content.md "eslint-plugin-unicorn/string-content"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "patterns"?: [string]: matchN(>=1, [string, close({ "suggest"!: string "fix"?: bool "message"?: string })]) ... }, ...]]) // Enforce consistent brace style for `case` clauses. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/switch-case-braces.md "eslint-plugin-unicorn/switch-case-braces"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { ... }, ...]]) // Fix whitespace-insensitive template indentation. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/template-indent.md "eslint-plugin-unicorn/template-indent"?: matchN(1, [#ruleNumber, #ruleString, list.MaxItems(2) & [_, _, ...] & [matchN(1, [#ruleNumber, #ruleString]), { "indent"?: matchN(1, [=~"^\\s+$", int & >=1]) "tags"?: list.UniqueItems() & [...string] "functions"?: list.UniqueItems() & [...string] "selectors"?: list.UniqueItems() & [...string] "comments"?: list.UniqueItems() & [...string] ... }, ...]]) // Enforce consistent case for text encoding identifiers. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/text-encoding-identifier-case.md "eslint-plugin-unicorn/text-encoding-identifier-case"?: _ // Require `new` when creating an error. // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/throw-new-error.md "eslint-plugin-unicorn/throw-new-error"?: _ // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#import-index "eslint-plugin-unicorn/import-index"?: _ // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#no-array-instanceof "eslint-plugin-unicorn/no-array-instanceof"?: _ // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#no-fn-reference-in-iterator "eslint-plugin-unicorn/no-fn-reference-in-iterator"?: _ // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#no-reduce "eslint-plugin-unicorn/no-reduce"?: _ // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#no-unsafe-regex "eslint-plugin-unicorn/no-unsafe-regex"?: _ // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#prefer-dataset "eslint-plugin-unicorn/prefer-dataset"?: _ // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#prefer-event-key "eslint-plugin-unicorn/prefer-event-key"?: _ // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#prefer-exponentiation-operator "eslint-plugin-unicorn/prefer-exponentiation-operator"?: _ // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#prefer-flat-map "eslint-plugin-unicorn/prefer-flat-map"?: _ // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#prefer-node-append "eslint-plugin-unicorn/prefer-node-append"?: _ // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#prefer-node-remove "eslint-plugin-unicorn/prefer-node-remove"?: _ // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#prefer-object-has-own "eslint-plugin-unicorn/prefer-object-has-own"?: _ // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#prefer-replace-all "eslint-plugin-unicorn/prefer-replace-all"?: _ // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#prefer-starts-ends-with "eslint-plugin-unicorn/prefer-starts-ends-with"?: _ // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#prefer-text-content "eslint-plugin-unicorn/prefer-text-content"?: _ // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#prefer-trim-start-end "eslint-plugin-unicorn/prefer-trim-start-end"?: _ // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#regex-shorthand "eslint-plugin-unicorn/regex-shorthand"?: _ // Enforce linebreaks after opening and before closing array // brackets in `