UNPKG

@effective/eslint-cfg

Version:

A library for generating ESLint Flat Configs with React and TypeScript support.

1,021 lines (1,020 loc) 32 kB
import { createRequire } from "module"; const require = createRequire(import.meta.url); export default [ { settings: { n: { tryExtensions: [".js", ".ts", ".tsx"], }, }, linterOptions: { reportUnusedDisableDirectives: "off", reportUnusedInlineConfigs: "off", }, rules: { "for-direction": "error", "no-async-promise-executor": "error", "no-case-declarations": "error", "no-compare-neg-zero": "error", "no-cond-assign": ["error", "except-parens"], "no-constant-binary-expression": "error", "no-constant-condition": [ "error", { checkLoops: "allExceptWhileTrue", }, ], "no-control-regex": "error", "no-debugger": "error", "no-delete-var": "error", "no-dupe-else-if": "error", "no-duplicate-case": "error", "no-empty": [ "error", { allowEmptyCatch: false, }, ], "no-empty-pattern": [ "error", { allowObjectPatternsAsParameters: false, }, ], "no-empty-static-block": "error", "no-ex-assign": "error", "no-extra-boolean-cast": ["error", {}], "no-fallthrough": [ "error", { allowEmptyCase: false, reportUnusedFallthroughComment: false, }, ], "no-global-assign": [ "error", { exceptions: [], }, ], "no-irregular-whitespace": [ "error", { skipComments: false, skipJSXText: false, skipRegExps: false, skipStrings: true, skipTemplates: false, }, ], "no-loss-of-precision": "error", "no-misleading-character-class": "error", "no-nonoctal-decimal-escape": "error", "no-octal": "error", "no-prototype-builtins": "error", "no-regex-spaces": "error", "no-self-assign": [ "error", { props: true, }, ], "no-shadow-restricted-names": [ "error", { reportGlobalThis: false, }, ], "no-sparse-arrays": "error", "no-unsafe-finally": "error", "no-unsafe-optional-chaining": [ "error", { disallowArithmeticOperators: false, }, ], "no-unused-labels": "error", "no-unused-private-class-members": "error", "no-useless-catch": "error", "no-useless-escape": [ "error", { allowRegexCharacters: [], }, ], "no-var": "error", "prefer-const": [ "error", { destructuring: "any", ignoreReadBeforeAssign: false, }, ], "prefer-regex-literals": [ "error", { disallowRedundantWrapping: false, }, ], "prefer-rest-params": "error", "prefer-spread": "error", "require-yield": "error", "use-isnan": [ "error", { enforceForIndexOf: false, enforceForSwitchCase: true, }, ], "valid-typeof": [ "error", { requireStringLiterals: false, }, ], "@typescript-eslint/adjacent-overload-signatures": "error", "@typescript-eslint/array-type": [ "error", { default: "array-simple", }, ], "@typescript-eslint/ban-ts-comment": [ "error", { minimumDescriptionLength: 10, }, ], "@typescript-eslint/ban-tslint-comment": "error", "@typescript-eslint/class-literal-property-style": "error", "@typescript-eslint/consistent-generic-constructors": "error", "@typescript-eslint/consistent-indexed-object-style": "error", "@typescript-eslint/consistent-type-assertions": "error", "@typescript-eslint/consistent-type-definitions": "error", "@typescript-eslint/no-array-constructor": "error", "@typescript-eslint/no-confusing-non-null-assertion": "error", "@typescript-eslint/no-duplicate-enum-values": "error", "@typescript-eslint/no-dynamic-delete": "error", "@typescript-eslint/no-empty-function": [ "error", { allow: [], }, ], "@typescript-eslint/no-empty-object-type": "error", "@typescript-eslint/no-explicit-any": "error", "@typescript-eslint/no-extra-non-null-assertion": "error", "@typescript-eslint/no-extraneous-class": "error", "@typescript-eslint/no-inferrable-types": "error", "@typescript-eslint/no-invalid-void-type": "error", "@typescript-eslint/no-misused-new": "error", "@typescript-eslint/no-namespace": "error", "@typescript-eslint/no-non-null-asserted-nullish-coalescing": "error", "@typescript-eslint/no-non-null-asserted-optional-chain": "error", "@typescript-eslint/no-non-null-assertion": "error", "@typescript-eslint/no-require-imports": "error", "@typescript-eslint/no-this-alias": "error", "@typescript-eslint/no-unnecessary-type-constraint": "error", "@typescript-eslint/no-unsafe-declaration-merging": "error", "@typescript-eslint/no-unsafe-function-type": "error", "@typescript-eslint/no-unused-expressions": [ "error", { allowShortCircuit: false, allowTaggedTemplates: false, allowTernary: false, }, ], "@typescript-eslint/no-unused-vars": [ "error", { args: "all", argsIgnorePattern: "^_", caughtErrors: "all", caughtErrorsIgnorePattern: "^_", destructuredArrayIgnorePattern: "^_", varsIgnorePattern: "^_", ignoreRestSiblings: true, }, ], "@typescript-eslint/no-useless-constructor": "error", "@typescript-eslint/no-wrapper-object-types": "error", "@typescript-eslint/prefer-as-const": "error", "@typescript-eslint/prefer-for-of": "error", "@typescript-eslint/prefer-function-type": "error", "@typescript-eslint/prefer-literal-enum-member": "error", "@typescript-eslint/prefer-namespace-keyword": "error", "@typescript-eslint/triple-slash-reference": "error", "@typescript-eslint/unified-signatures": "error", "jsdoc/check-access": "error", "jsdoc/check-alignment": "error", "jsdoc/check-param-names": [ "error", { checkDestructured: false, }, ], "jsdoc/check-property-names": "error", "jsdoc/check-syntax": "error", "jsdoc/check-tag-names": "error", "jsdoc/check-template-names": "error", "jsdoc/check-types": "error", "jsdoc/check-values": "error", "jsdoc/empty-tags": "error", "jsdoc/implements-on-classes": "error", "jsdoc/match-description": "error", "jsdoc/multiline-blocks": "error", "jsdoc/no-bad-blocks": "error", "jsdoc/no-blank-block-descriptions": "error", "jsdoc/no-blank-blocks": "error", "jsdoc/no-defaults": "error", "jsdoc/no-multi-asterisks": "error", "jsdoc/no-types": "error", "jsdoc/no-undefined-types": "error", "jsdoc/require-asterisk-prefix": "error", "jsdoc/require-hyphen-before-param-description": ["error", "always"], "jsdoc/require-returns-check": "error", "jsdoc/require-yields-check": "error", "jsdoc/tag-lines": [ "error", "never", { startLines: 1, }, ], "jsdoc/valid-types": "error", "jsx-a11y/alt-text": "error", "jsx-a11y/anchor-has-content": "error", "jsx-a11y/anchor-is-valid": "error", "jsx-a11y/aria-activedescendant-has-tabindex": "error", "jsx-a11y/aria-props": "error", "jsx-a11y/aria-proptypes": "error", "jsx-a11y/aria-role": "error", "jsx-a11y/aria-unsupported-elements": "error", "jsx-a11y/autocomplete-valid": "error", "jsx-a11y/click-events-have-key-events": "error", "jsx-a11y/heading-has-content": "error", "jsx-a11y/html-has-lang": "error", "jsx-a11y/iframe-has-title": "error", "jsx-a11y/img-redundant-alt": "error", "jsx-a11y/interactive-supports-focus": [ "error", { tabbable: [ "button", "checkbox", "link", "searchbox", "spinbutton", "switch", "textbox", ], }, ], "jsx-a11y/label-has-associated-control": "error", "jsx-a11y/media-has-caption": "error", "jsx-a11y/mouse-events-have-key-events": "error", "jsx-a11y/no-access-key": "error", "jsx-a11y/no-autofocus": "error", "jsx-a11y/no-distracting-elements": "error", "jsx-a11y/no-interactive-element-to-noninteractive-role": [ "error", { tr: ["none", "presentation"], canvas: ["img"], }, ], "jsx-a11y/no-noninteractive-element-interactions": [ "error", { handlers: [ "onClick", "onError", "onLoad", "onMouseDown", "onMouseUp", "onKeyPress", "onKeyDown", "onKeyUp", ], alert: ["onKeyUp", "onKeyDown", "onKeyPress"], body: ["onError", "onLoad"], dialog: ["onKeyUp", "onKeyDown", "onKeyPress"], iframe: ["onError", "onLoad"], img: ["onError", "onLoad"], }, ], "jsx-a11y/no-noninteractive-element-to-interactive-role": [ "error", { ul: [ "listbox", "menu", "menubar", "radiogroup", "tablist", "tree", "treegrid", ], ol: [ "listbox", "menu", "menubar", "radiogroup", "tablist", "tree", "treegrid", ], li: [ "menuitem", "menuitemradio", "menuitemcheckbox", "option", "row", "tab", "treeitem", ], table: ["grid"], td: ["gridcell"], fieldset: ["radiogroup", "presentation"], }, ], "jsx-a11y/no-noninteractive-tabindex": [ "error", { tags: [], roles: ["tabpanel"], allowExpressionValues: true, }, ], "jsx-a11y/no-redundant-roles": "error", "jsx-a11y/no-static-element-interactions": [ "error", { allowExpressionValues: true, handlers: [ "onClick", "onMouseDown", "onMouseUp", "onKeyPress", "onKeyDown", "onKeyUp", ], }, ], "jsx-a11y/role-has-required-aria-props": "error", "jsx-a11y/role-supports-aria-props": "error", "jsx-a11y/scope": "error", "jsx-a11y/tabindex-no-positive": "error", "n/hashbang": "error", "n/no-deprecated-api": "error", "n/no-exports-assign": "error", "n/no-extraneous-import": "error", "n/no-extraneous-require": "error", "n/no-missing-import": "error", "n/no-missing-require": "error", "n/no-process-exit": "error", "n/no-unpublished-bin": "error", "n/no-unpublished-import": "error", "n/no-unpublished-require": "error", "n/no-unsupported-features/es-builtins": "error", "n/no-unsupported-features/es-syntax": [ "error", { ignores: ["modules"], }, ], "n/no-unsupported-features/node-builtins": "error", "n/process-exit-as-throw": "error", "react-compiler/react-compiler": "error", "react-hooks/exhaustive-deps": "error", "react-hooks/rules-of-hooks": "error", "react/display-name": "error", "react/jsx-key": "error", "react/jsx-no-comment-textnodes": "error", "react/jsx-no-duplicate-props": "error", "react/jsx-no-target-blank": "error", "react/jsx-no-undef": "error", "react/jsx-uses-vars": "error", "react/no-children-prop": "error", "react/no-danger-with-children": "error", "react/no-deprecated": "error", "react/no-direct-mutation-state": "error", "react/no-find-dom-node": "error", "react/no-is-mounted": "error", "react/no-render-return-value": "error", "react/no-string-refs": "error", "react/no-unescaped-entities": "error", "react/no-unknown-property": "error", "react/require-render-return": "error", "regexp/confusing-quantifier": "warn", "regexp/control-character-escape": "error", "regexp/match-any": "error", "regexp/negation": "error", "regexp/no-contradiction-with-assertion": "error", "regexp/no-dupe-characters-character-class": "error", "regexp/no-dupe-disjunctions": "error", "regexp/no-empty-alternative": "warn", "regexp/no-empty-capturing-group": "error", "regexp/no-empty-character-class": "error", "regexp/no-empty-group": "error", "regexp/no-empty-lookarounds-assertion": "error", "regexp/no-empty-string-literal": "error", "regexp/no-escape-backspace": "error", "regexp/no-extra-lookaround-assertions": "error", "regexp/no-invalid-regexp": "error", "regexp/no-invisible-character": "error", "regexp/no-lazy-ends": "warn", "regexp/no-legacy-features": "error", "regexp/no-misleading-capturing-group": "error", "regexp/no-misleading-unicode-character": "error", "regexp/no-missing-g-flag": "error", "regexp/no-non-standard-flag": "error", "regexp/no-obscure-range": "error", "regexp/no-optional-assertion": "error", "regexp/no-potentially-useless-backreference": "warn", "regexp/no-super-linear-backtracking": "error", "regexp/no-trivially-nested-assertion": "error", "regexp/no-trivially-nested-quantifier": "error", "regexp/no-unused-capturing-group": "error", "regexp/no-useless-assertions": "error", "regexp/no-useless-backreference": "error", "regexp/no-useless-character-class": "error", "regexp/no-useless-dollar-replacements": "error", "regexp/no-useless-escape": "error", "regexp/no-useless-flag": "warn", "regexp/no-useless-lazy": "error", "regexp/no-useless-non-capturing-group": "error", "regexp/no-useless-quantifier": "error", "regexp/no-useless-range": "error", "regexp/no-useless-set-operand": "error", "regexp/no-useless-string-literal": "error", "regexp/no-useless-two-nums-quantifier": "error", "regexp/no-zero-quantifier": "error", "regexp/optimal-lookaround-quantifier": "warn", "regexp/optimal-quantifier-concatenation": "error", "regexp/prefer-character-class": "error", "regexp/prefer-d": "error", "regexp/prefer-plus-quantifier": "error", "regexp/prefer-predefined-assertion": "error", "regexp/prefer-question-quantifier": "error", "regexp/prefer-range": "error", "regexp/prefer-set-operation": "error", "regexp/prefer-star-quantifier": "error", "regexp/prefer-unicode-codepoint-escapes": "error", "regexp/prefer-w": "error", "regexp/simplify-set-operations": "error", "regexp/sort-flags": "error", "regexp/strict": "error", "regexp/use-ignore-case": "error", "simple-import-sort/exports": "error", "simple-import-sort/imports": "error", }, plugins: { "@typescript-eslint": require("@typescript-eslint/eslint-plugin"), "simple-import-sort": require("eslint-plugin-simple-import-sort"), react: require("eslint-plugin-react"), "react-hooks": require("eslint-plugin-react-hooks"), "react-compiler": require("eslint-plugin-react-compiler"), storybook: require("eslint-plugin-storybook"), "jsx-a11y": require("eslint-plugin-jsx-a11y"), jsdoc: require("eslint-plugin-jsdoc"), regexp: require("eslint-plugin-regexp"), n: require("eslint-plugin-n"), }, languageOptions: { sourceType: "module", ecmaVersion: 2025, parser: require("@typescript-eslint/parser"), parserOptions: { ecmaFeatures: { jsx: true, }, program: null, project: false, projectService: false, ecmaVersion: "latest", }, globals: { __dirname: "off", __filename: "off", AbortController: false, AbortSignal: false, atob: false, Blob: false, BroadcastChannel: false, btoa: false, Buffer: false, ByteLengthQueuingStrategy: false, clearImmediate: false, clearInterval: false, clearTimeout: false, CloseEvent: false, CompressionStream: false, console: false, CountQueuingStrategy: false, crypto: false, Crypto: false, CryptoKey: false, CustomEvent: false, DecompressionStream: false, DOMException: false, Event: false, EventTarget: false, exports: "off", fetch: false, File: false, FormData: false, global: false, Headers: false, MessageChannel: false, MessageEvent: false, MessagePort: false, module: "off", navigator: false, Navigator: false, performance: false, Performance: false, PerformanceEntry: false, PerformanceMark: false, PerformanceMeasure: false, PerformanceObserver: false, PerformanceObserverEntryList: false, PerformanceResourceTiming: false, process: false, queueMicrotask: false, ReadableByteStreamController: false, ReadableStream: false, ReadableStreamBYOBReader: false, ReadableStreamBYOBRequest: false, ReadableStreamDefaultController: false, ReadableStreamDefaultReader: false, Request: false, require: "off", Response: false, setImmediate: false, setInterval: false, setTimeout: false, structuredClone: false, SubtleCrypto: false, TextDecoder: false, TextDecoderStream: false, TextEncoder: false, TextEncoderStream: false, TransformStream: false, TransformStreamDefaultController: false, URL: false, URLSearchParams: false, WebAssembly: false, WebSocket: false, WritableStream: false, WritableStreamDefaultController: false, WritableStreamDefaultWriter: false, AggregateError: false, Array: false, ArrayBuffer: false, Atomics: false, BigInt: false, BigInt64Array: false, BigUint64Array: false, Boolean: false, DataView: false, Date: false, decodeURI: false, decodeURIComponent: false, encodeURI: false, encodeURIComponent: false, Error: false, escape: false, eval: false, EvalError: false, FinalizationRegistry: false, Float32Array: false, Float64Array: false, Function: false, globalThis: false, Infinity: false, Int16Array: false, Int32Array: false, Int8Array: false, Intl: false, isFinite: false, isNaN: false, JSON: false, Map: false, Math: false, NaN: false, Number: false, Object: false, parseFloat: false, parseInt: false, Promise: false, Proxy: false, RangeError: false, ReferenceError: false, Reflect: false, RegExp: false, Set: false, SharedArrayBuffer: false, String: false, Symbol: false, SyntaxError: false, TypeError: false, Uint16Array: false, Uint32Array: false, Uint8Array: false, Uint8ClampedArray: false, undefined: false, unescape: false, URIError: false, WeakMap: false, WeakRef: false, WeakSet: false, }, }, name: "effective/base", }, { rules: { "jest/no-alias-methods": "warn", "jest/prefer-to-be": "error", "jest/prefer-to-contain": "error", "jest/prefer-to-have-length": "error", "testing-library/await-async-events": [ "error", { eventModule: "userEvent", }, ], "testing-library/await-async-queries": "error", "testing-library/await-async-utils": "error", "testing-library/no-await-sync-events": [ "error", { eventModules: ["fire-event"], }, ], "testing-library/no-await-sync-queries": "error", "testing-library/no-container": "error", "testing-library/no-debugging-utils": "warn", "testing-library/no-dom-import": ["error", "react"], "testing-library/no-global-regexp-flag-in-query": "error", "testing-library/no-manual-cleanup": "error", "testing-library/no-node-access": "error", "testing-library/no-promise-in-fire-event": "error", "testing-library/no-render-in-lifecycle": "error", "testing-library/no-unnecessary-act": "error", "testing-library/no-wait-for-multiple-assertions": "error", "testing-library/no-wait-for-side-effects": "error", "testing-library/no-wait-for-snapshot": "error", "testing-library/prefer-find-by": "error", "testing-library/prefer-presence-queries": "error", "testing-library/prefer-query-by-disappearance": "error", "testing-library/prefer-screen-queries": "error", "testing-library/render-result-naming-convention": "error", }, languageOptions: { globals: { afterAll: false, afterEach: false, beforeAll: false, beforeEach: false, describe: false, expect: false, fit: false, it: false, jest: false, test: false, xdescribe: false, xit: false, xtest: false, __dirname: "off", __filename: "off", AbortController: false, AbortSignal: false, atob: false, Blob: false, BroadcastChannel: false, btoa: false, Buffer: false, ByteLengthQueuingStrategy: false, clearImmediate: false, clearInterval: false, clearTimeout: false, CloseEvent: false, CompressionStream: false, console: false, CountQueuingStrategy: false, crypto: false, Crypto: false, CryptoKey: false, CustomEvent: false, DecompressionStream: false, DOMException: false, Event: false, EventTarget: false, exports: "off", fetch: false, File: false, FormData: false, global: false, Headers: false, MessageChannel: false, MessageEvent: false, MessagePort: false, module: "off", navigator: false, Navigator: false, performance: false, Performance: false, PerformanceEntry: false, PerformanceMark: false, PerformanceMeasure: false, PerformanceObserver: false, PerformanceObserverEntryList: false, PerformanceResourceTiming: false, process: false, queueMicrotask: false, ReadableByteStreamController: false, ReadableStream: false, ReadableStreamBYOBReader: false, ReadableStreamBYOBRequest: false, ReadableStreamDefaultController: false, ReadableStreamDefaultReader: false, Request: false, require: "off", Response: false, setImmediate: false, setInterval: false, setTimeout: false, structuredClone: false, SubtleCrypto: false, TextDecoder: false, TextDecoderStream: false, TextEncoder: false, TextEncoderStream: false, TransformStream: false, TransformStreamDefaultController: false, URL: false, URLSearchParams: false, WebAssembly: false, WebSocket: false, WritableStream: false, WritableStreamDefaultController: false, WritableStreamDefaultWriter: false, AggregateError: false, Array: false, ArrayBuffer: false, Atomics: false, BigInt: false, BigInt64Array: false, BigUint64Array: false, Boolean: false, DataView: false, Date: false, decodeURI: false, decodeURIComponent: false, encodeURI: false, encodeURIComponent: false, Error: false, escape: false, eval: false, EvalError: false, FinalizationRegistry: false, Float32Array: false, Float64Array: false, Function: false, globalThis: false, Infinity: false, Int16Array: false, Int32Array: false, Int8Array: false, Intl: false, isFinite: false, isNaN: false, JSON: false, Map: false, Math: false, NaN: false, Number: false, Object: false, parseFloat: false, parseInt: false, Promise: false, Proxy: false, RangeError: false, ReferenceError: false, Reflect: false, RegExp: false, Set: false, SharedArrayBuffer: false, String: false, Symbol: false, SyntaxError: false, TypeError: false, Uint16Array: false, Uint32Array: false, Uint8Array: false, Uint8ClampedArray: false, undefined: false, unescape: false, URIError: false, WeakMap: false, WeakRef: false, WeakSet: false, }, }, plugins: { jest: require("eslint-plugin-jest"), "testing-library": require("eslint-plugin-testing-library"), }, files: ["**/*.test.{ts,tsx}"], name: "effective/test", }, { rules: { "playwright/expect-expect": "warn", "playwright/max-nested-describe": "warn", "playwright/missing-playwright-await": "error", "playwright/no-conditional-expect": "warn", "playwright/no-conditional-in-test": "warn", "playwright/no-element-handle": "warn", "playwright/no-eval": "warn", "playwright/no-focused-test": "error", "playwright/no-force-option": "warn", "playwright/no-nested-step": "warn", "playwright/no-networkidle": "error", "playwright/no-page-pause": "warn", "playwright/no-skipped-test": "warn", "playwright/no-standalone-expect": "error", "playwright/no-unsafe-references": "error", "playwright/no-useless-await": "warn", "playwright/no-useless-not": "warn", "playwright/no-wait-for-selector": "warn", "playwright/no-wait-for-timeout": "warn", "playwright/prefer-web-first-assertions": "error", "playwright/valid-describe-callback": "error", "playwright/valid-expect": "error", "playwright/valid-expect-in-promise": "error", "playwright/valid-title": "error", }, languageOptions: { globals: { AbortController: false, AbortSignal: false, atob: false, Blob: false, BroadcastChannel: false, btoa: false, ByteLengthQueuingStrategy: false, clearInterval: false, clearTimeout: false, CompressionStream: false, console: false, CountQueuingStrategy: false, crypto: false, Crypto: false, CryptoKey: false, CustomEvent: false, DecompressionStream: false, DOMException: false, Event: false, EventTarget: false, fetch: false, File: false, FormData: false, Headers: false, Intl: false, MessageChannel: false, MessageEvent: false, MessagePort: false, performance: false, PerformanceEntry: false, PerformanceMark: false, PerformanceMeasure: false, PerformanceObserver: false, PerformanceObserverEntryList: false, PerformanceResourceTiming: false, queueMicrotask: false, ReadableByteStreamController: false, ReadableStream: false, ReadableStreamBYOBReader: false, ReadableStreamBYOBRequest: false, ReadableStreamDefaultController: false, ReadableStreamDefaultReader: false, Request: false, Response: false, setInterval: false, setTimeout: false, structuredClone: false, SubtleCrypto: false, TextDecoder: false, TextDecoderStream: false, TextEncoder: false, TextEncoderStream: false, TransformStream: false, TransformStreamDefaultController: false, URL: false, URLSearchParams: false, WebAssembly: false, WritableStream: false, WritableStreamDefaultController: false, WritableStreamDefaultWriter: false, __dirname: "off", __filename: "off", Buffer: false, clearImmediate: false, CloseEvent: false, exports: "off", global: false, module: "off", navigator: false, Navigator: false, Performance: false, process: false, require: "off", setImmediate: false, WebSocket: false, AggregateError: false, Array: false, ArrayBuffer: false, Atomics: false, BigInt: false, BigInt64Array: false, BigUint64Array: false, Boolean: false, DataView: false, Date: false, decodeURI: false, decodeURIComponent: false, encodeURI: false, encodeURIComponent: false, Error: false, escape: false, eval: false, EvalError: false, FinalizationRegistry: false, Float32Array: false, Float64Array: false, Function: false, globalThis: false, Infinity: false, Int16Array: false, Int32Array: false, Int8Array: false, isFinite: false, isNaN: false, JSON: false, Map: false, Math: false, NaN: false, Number: false, Object: false, parseFloat: false, parseInt: false, Promise: false, Proxy: false, RangeError: false, ReferenceError: false, Reflect: false, RegExp: false, Set: false, SharedArrayBuffer: false, String: false, Symbol: false, SyntaxError: false, TypeError: false, Uint16Array: false, Uint32Array: false, Uint8Array: false, Uint8ClampedArray: false, undefined: false, unescape: false, URIError: false, WeakMap: false, WeakRef: false, WeakSet: false, }, }, plugins: { playwright: require("eslint-plugin-playwright"), }, files: ["**/*.spec.{ts}"], name: "effective/e2e", }, { rules: { "storybook/await-interactions": "error", "storybook/context-in-play-function": "error", "storybook/default-exports": "error", "storybook/hierarchy-separator": "warn", "storybook/no-redundant-story-name": "warn", "storybook/prefer-pascal-case": "warn", "storybook/story-exports": "error", "storybook/use-storybook-expect": "error", "storybook/use-storybook-testing-library": "error", }, files: ["**/*.stories.tsx"], name: "effective/storybook", }, ];