You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
svelte/.oxlintrc.json

178 lines
6.2 KiB

{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"plugins": ["typescript", "unicorn"],
"categories": {
"correctness": "error"
},
"env": {
"browser": true,
"node": true
},
"rules": {
"@stylistic/quote-props": ["error", "as-needed"],
"@typescript-eslint/array-type": ["error", { "default": "array-simple" }],
"@typescript-eslint/no-array-delete": "off",
"@typescript-eslint/no-base-to-string": "off",
"@typescript-eslint/no-duplicate-type-constituents": "off",
"@typescript-eslint/no-empty-object-type": "error",
"@typescript-eslint/no-floating-promises": "off",
"@typescript-eslint/no-for-in-array": "off",
"@typescript-eslint/no-implied-eval": "off",
"@typescript-eslint/no-meaningless-void-operator": "off",
"@typescript-eslint/no-misused-spread": "off",
"@typescript-eslint/no-namespace": "error",
"@typescript-eslint/no-redundant-type-constituents": "off",
"@typescript-eslint/no-require-imports": "error",
"@typescript-eslint/no-this-alias": "off",
"@typescript-eslint/no-unnecessary-parameter-property-assignment": "off",
"@typescript-eslint/no-unnecessary-type-constraint": "error",
"@typescript-eslint/no-unsafe-function-type": "error",
"@typescript-eslint/no-unsafe-unary-minus": "off",
"@typescript-eslint/no-useless-empty-export": "off",
"@typescript-eslint/prefer-namespace-keyword": "error",
"@typescript-eslint/require-array-sort-compare": "off",
"@typescript-eslint/require-await": "error",
"@typescript-eslint/restrict-template-expressions": "off",
"@typescript-eslint/unbound-method": "off",
"getter-return": "error",
"lube/svelte-naming-convention": ["error", { "fixSameNames": true }],
"no-array-constructor": "error",
"no-caller": "off",
"no-case-declarations": "error",
"no-console": "error",
"no-constant-condition": ["error", { "checkLoops": false }],
"no-duplicate-imports": "error",
"no-empty": ["error", { "allowEmptyCatch": true }],
"no-eval": "off",
"no-fallthrough": "error",
"no-misleading-character-class": "error",
"no-prototype-builtins": "error",
"no-redeclare": "error",
"no-regex-spaces": "error",
"no-sparse-arrays": "off",
"no-unassigned-vars": "off",
"no-undef": "error",
"no-unreachable": "error",
"no-unused-vars": "off",
"no-useless-rename": "off",
"svelte/comment-directive": "error",
"svelte/infinite-reactive-loop": "error",
"svelte/no-at-debug-tags": "warn",
"svelte/no-at-html-tags": "error",
"svelte/no-dom-manipulating": "error",
"svelte/no-dupe-else-if-blocks": "error",
"svelte/no-dupe-on-directives": "error",
"svelte/no-dupe-style-properties": "error",
"svelte/no-dupe-use-directives": "error",
"svelte/no-export-load-in-svelte-module-in-kit-pages": "error",
"svelte/no-immutable-reactive-statements": "error",
"svelte/no-inspect": "warn",
"svelte/no-not-function-handler": "error",
"svelte/no-object-in-text-mustaches": "error",
"svelte/no-raw-special-elements": "error",
"svelte/no-reactive-functions": "error",
"svelte/no-reactive-literals": "error",
"svelte/no-reactive-reassign": "error",
"svelte/no-shorthand-style-property-overrides": "error",
"svelte/no-store-async": "error",
"svelte/no-svelte-internal": "error",
"svelte/no-unknown-style-directive-property": "error",
"svelte/no-unnecessary-state-wrap": "error",
"svelte/no-unused-props": "error",
"svelte/no-unused-svelte-ignore": "error",
"svelte/no-useless-children-snippet": "error",
"svelte/no-useless-mustaches": "error",
"svelte/prefer-svelte-reactivity": "error",
"svelte/prefer-writable-derived": "error",
"svelte/require-each-key": "error",
"svelte/require-event-dispatcher-types": "error",
"svelte/require-store-reactive-access": "error",
"svelte/system": "error",
"svelte/valid-each-key": "error",
"svelte/valid-prop-names-in-kit-pages": "error",
"unicorn/no-await-in-promise-methods": "off",
"unicorn/no-empty-file": "off",
"unicorn/no-invalid-fetch-options": "off",
"unicorn/no-invalid-remove-event-listener": "off",
"unicorn/no-new-array": "off",
"unicorn/no-single-promise-in-promise-methods": "off",
"unicorn/no-thenable": "off",
"unicorn/no-unnecessary-await": "off",
"unicorn/no-useless-fallback-in-spread": "off",
"unicorn/no-useless-length-check": "off",
"unicorn/no-useless-spread": "off",
"unicorn/prefer-set-size": "off",
"unicorn/prefer-string-starts-ends-with": "off"
},
"jsPlugins": ["eslint-plugin-svelte", "@stylistic/eslint-plugin", "eslint-plugin-lube"],
"ignorePatterns": [
"**/*.d.ts",
"**/tests",
"packages/svelte/scripts/process-messages/templates/*.js",
"packages/svelte/scripts/_bundle.js",
"packages/svelte/src/compiler/errors.js",
"packages/svelte/src/internal/client/errors.js",
"packages/svelte/src/internal/client/warnings.js",
"packages/svelte/src/internal/shared/warnings.js",
"packages/svelte/src/internal/server/warnings.js",
"packages/svelte/compiler/index.js",
"benchmarking/**",
"coverage/**",
"playgrounds/sandbox/**",
"*.config.js",
"vitest-xhtml-environment.ts",
"documentation",
"tmp/**"
],
"overrides": [
{
"files": ["**/*.ts", "**/*.tsx", "**/*.mts", "**/*.cts"],
"rules": {
"constructor-super": "off",
"getter-return": "off",
"no-class-assign": "off",
"no-const-assign": "off",
"no-dupe-class-members": "off",
"no-dupe-keys": "off",
"no-func-assign": "off",
"no-import-assign": "off",
"no-new-native-nonconstructor": "off",
"no-obj-calls": "off",
"no-redeclare": "off",
"no-setter-return": "off",
"no-this-before-super": "off",
"no-undef": "off",
"no-unreachable": "off",
"no-unsafe-negation": "off",
"no-var": "error",
"no-with": "off",
"prefer-const": "error",
"prefer-rest-params": "error",
"prefer-spread": "error"
}
},
{
"files": ["*.svelte", "**/*.svelte"],
"rules": {
"no-self-assign": "off"
},
"jsPlugins": ["eslint-plugin-svelte"]
},
{
"files": ["**/*.svelte"],
"rules": {
"@typescript-eslint/await-thenable": "off",
"@typescript-eslint/require-await": "off"
}
},
{
"files": ["packages/svelte/src/**/*"],
"rules": {
"svelte/no-svelte-internal": "off",
"custom/no-compiler-imports": "error"
},
"jsPlugins": ["./oxlint/custom.js"]
}
]
}