@d3lm/lint-preset 1.4.2 → 1.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-XLDSYFLW.cjs → chunk-5DYWZ7QA.cjs} +8 -1
- package/dist/chunk-5DYWZ7QA.cjs.map +1 -0
- package/dist/{chunk-SD5SCU2L.js → chunk-XME24BVK.js} +8 -1
- package/dist/chunk-XME24BVK.js.map +1 -0
- package/dist/eslint.cjs +9 -9
- package/dist/eslint.js +1 -1
- package/dist/oxlint.cjs +5 -5
- package/dist/oxlint.js +1 -1
- package/dist/rules.cjs +44 -20
- package/dist/rules.cjs.map +1 -1
- package/dist/rules.js +44 -20
- package/dist/rules.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-SD5SCU2L.js.map +0 -1
- package/dist/chunk-XLDSYFLW.cjs.map +0 -1
|
@@ -266,6 +266,13 @@ var paddingLineEntries = [
|
|
|
266
266
|
prev: "if",
|
|
267
267
|
next: "*"
|
|
268
268
|
},
|
|
269
|
+
{
|
|
270
|
+
blankLine: "always",
|
|
271
|
+
prev: {
|
|
272
|
+
selector: 'ExpressionStatement:matches([expression.type="CallExpression"], [expression.type="AwaitExpression"][expression.argument.type="CallExpression"])'
|
|
273
|
+
},
|
|
274
|
+
next: { selector: 'ExpressionStatement[expression.type="AssignmentExpression"]' }
|
|
275
|
+
},
|
|
269
276
|
/**
|
|
270
277
|
* Imports form a block: padded from anything that isn't an import, but
|
|
271
278
|
* consecutive imports can sit together. The same-type rule comes last so it
|
|
@@ -670,4 +677,4 @@ function generateFilterRegex(defaults, extensions = []) {
|
|
|
670
677
|
|
|
671
678
|
|
|
672
679
|
exports.unicornRulesEslint = unicornRulesEslint; exports.jsFileExtensions = jsFileExtensions; exports.jsRulesOxlint = jsRulesOxlint; exports.jsRulesEslint = jsRulesEslint; exports.reactFileExtensions = reactFileExtensions; exports.resolveReactRuleOptions = resolveReactRuleOptions; exports.reactRulesOxlint = reactRulesOxlint; exports.tsFileExtensions = tsFileExtensions; exports.tsRulesOxlint = tsRulesOxlint; exports.tsRulesEslint = tsRulesEslint;
|
|
673
|
-
//# sourceMappingURL=chunk-
|
|
680
|
+
//# sourceMappingURL=chunk-5DYWZ7QA.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/lint-preset/lint-preset/dist/chunk-5DYWZ7QA.cjs","../src/configs/unicorn.ts","../src/configs/abbreviations.ts","../src/configs/javascript.ts","../src/configs/react.ts","../src/configs/typescript.ts"],"names":[],"mappings":"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","file":"/home/runner/work/lint-preset/lint-preset/dist/chunk-5DYWZ7QA.cjs","sourcesContent":[null,"import type { Linter } from 'eslint';\n\n/**\n * Mirror of `eslint-plugin-unicorn`'s recommended config, split by runtime.\n *\n * Oxlint natively implements most unicorn rules, so we enable those under the\n * canonical `unicorn/` prefix (fast, Rust). Rules oxlint hasn't ported run\n * through the original JS plugin, aliased as `unicornx` in `jsPlugins` (see\n * `src/oxlint.ts`), because oxlint's built-in plugin owns the `unicorn/`\n * namespace.\n *\n * `unicorn/name-replacements` is also not ported. It lives in `javascript.ts`\n * because it takes user-configurable options.\n */\n\n/**\n * Unicorn recommended rules natively implemented by Oxlint, grouped by the\n * oxlint category they belong to. Only the correctness group is enabled by\n * oxlint's defaults (as `warn`); everything is set explicitly to `error` to\n * match the recommended config.\n */\nexport const unicornRulesOxlint: Linter.RulesRecord = {\n // correctness\n 'unicorn/no-await-in-promise-methods': 'error',\n 'unicorn/no-empty-file': 'warn',\n 'unicorn/no-invalid-fetch-options': 'error',\n 'unicorn/no-invalid-remove-event-listener': 'error',\n 'unicorn/no-new-array': 'error',\n 'unicorn/no-single-promise-in-promise-methods': 'error',\n 'unicorn/no-thenable': 'error',\n 'unicorn/no-unnecessary-await': 'error',\n 'unicorn/no-useless-fallback-in-spread': 'error',\n 'unicorn/no-useless-length-check': 'error',\n 'unicorn/no-useless-spread': 'error',\n 'unicorn/prefer-set-size': 'error',\n 'unicorn/prefer-string-starts-ends-with': 'error',\n\n // perf\n 'unicorn/prefer-array-find': 'error',\n 'unicorn/prefer-array-flat-map': 'error',\n 'unicorn/prefer-set-has': 'error',\n\n // restriction\n 'unicorn/no-abusive-eslint-disable': 'error',\n 'unicorn/no-anonymous-default-export': 'error',\n 'unicorn/no-array-for-each': 'error',\n 'unicorn/no-array-reduce': 'error',\n 'unicorn/no-document-cookie': 'error',\n 'unicorn/no-magic-array-flat-depth': 'error',\n 'unicorn/no-process-exit': 'error',\n 'unicorn/no-useless-error-capture-stack-trace': 'error',\n 'unicorn/prefer-modern-math-apis': 'error',\n 'unicorn/prefer-module': 'error',\n 'unicorn/prefer-node-protocol': 'error',\n 'unicorn/prefer-number-properties': 'error',\n\n // suspicious\n 'unicorn/consistent-function-scoping': 'error',\n 'unicorn/no-accessor-recursion': 'error',\n 'unicorn/no-array-reverse': 'error',\n 'unicorn/no-array-sort': 'error',\n 'unicorn/no-instanceof-builtins': 'error',\n 'unicorn/prefer-add-event-listener': 'error',\n 'unicorn/require-module-specifiers': 'error',\n\n // pedantic\n 'unicorn/consistent-assert': 'error',\n 'unicorn/consistent-empty-array-spread': 'error',\n 'unicorn/escape-case': 'error',\n 'unicorn/explicit-length-check': 'error',\n 'unicorn/new-for-builtins': 'error',\n 'unicorn/no-array-callback-reference': 'error',\n 'unicorn/no-hex-escape': 'error',\n 'unicorn/no-immediate-mutation': 'error',\n 'unicorn/no-lonely-if': 'error',\n 'unicorn/no-negation-in-equality-check': 'error',\n 'unicorn/no-new-buffer': 'error',\n 'unicorn/no-object-as-default-parameter': 'error',\n 'unicorn/no-static-only-class': 'error',\n 'unicorn/no-this-assignment': 'error',\n 'unicorn/no-typeof-undefined': 'error',\n 'unicorn/no-unnecessary-array-flat-depth': 'error',\n 'unicorn/no-unnecessary-array-splice-count': 'error',\n 'unicorn/no-unnecessary-slice-end': 'error',\n 'unicorn/no-unreadable-iife': 'error',\n 'unicorn/no-useless-promise-resolve-reject': 'error',\n 'unicorn/no-useless-switch-case': 'error',\n 'unicorn/prefer-array-flat': 'error',\n 'unicorn/prefer-array-some': 'error',\n 'unicorn/prefer-at': 'error',\n 'unicorn/prefer-blob-reading-methods': 'error',\n 'unicorn/prefer-code-point': 'error',\n 'unicorn/prefer-date-now': 'error',\n 'unicorn/prefer-dom-node-append': 'error',\n 'unicorn/prefer-dom-node-dataset': 'error',\n 'unicorn/prefer-dom-node-remove': 'error',\n 'unicorn/prefer-event-target': 'error',\n 'unicorn/prefer-math-min-max': 'error',\n 'unicorn/prefer-math-trunc': 'error',\n 'unicorn/prefer-native-coercion-functions': 'error',\n 'unicorn/prefer-prototype-methods': 'error',\n 'unicorn/prefer-query-selector': 'error',\n 'unicorn/prefer-regexp-test': 'error',\n 'unicorn/prefer-string-replace-all': 'error',\n 'unicorn/prefer-string-slice': 'error',\n 'unicorn/prefer-top-level-await': 'error',\n 'unicorn/prefer-type-error': 'error',\n 'unicorn/require-number-to-fixed-digits-argument': 'error',\n\n // style\n 'unicorn/catch-error-name': ['error', { name: 'error' }],\n 'unicorn/consistent-date-clone': 'error',\n 'unicorn/consistent-existence-index-check': 'error',\n 'unicorn/consistent-template-literal-escape': 'error',\n 'unicorn/empty-brace-spaces': 'error',\n 'unicorn/error-message': 'error',\n 'unicorn/no-array-method-this-argument': 'error',\n 'unicorn/no-await-expression-member': 'error',\n 'unicorn/no-console-spaces': 'error',\n 'unicorn/no-unreadable-array-destructuring': 'error',\n 'unicorn/no-useless-collection-argument': 'error',\n 'unicorn/no-zero-fractions': 'error',\n 'unicorn/numeric-separators-style': 'error',\n 'unicorn/prefer-array-index-of': 'error',\n 'unicorn/prefer-bigint-literals': 'error',\n 'unicorn/prefer-class-fields': 'error',\n 'unicorn/prefer-classlist-toggle': 'error',\n 'unicorn/prefer-default-parameters': 'error',\n 'unicorn/prefer-dom-node-text-content': 'error',\n 'unicorn/prefer-global-this': 'error',\n 'unicorn/prefer-includes': 'error',\n 'unicorn/prefer-keyboard-event-key': 'error',\n 'unicorn/prefer-logical-operator-over-ternary': 'error',\n 'unicorn/prefer-modern-dom-apis': 'error',\n 'unicorn/prefer-negative-index': 'error',\n 'unicorn/prefer-object-from-entries': 'error',\n 'unicorn/prefer-optional-catch-binding': 'error',\n 'unicorn/prefer-reflect-apply': 'error',\n 'unicorn/prefer-response-static-json': 'error',\n 'unicorn/prefer-spread': 'error',\n 'unicorn/prefer-string-raw': 'error',\n 'unicorn/prefer-string-trim-start-end': 'error',\n 'unicorn/prefer-structured-clone': 'error',\n 'unicorn/relative-url-style': 'error',\n 'unicorn/require-array-join-separator': 'error',\n 'unicorn/require-module-attributes': 'error',\n 'unicorn/switch-case-braces': 'error',\n 'unicorn/switch-case-break-position': 'error',\n 'unicorn/text-encoding-identifier-case': 'error',\n 'unicorn/throw-new-error': 'error',\n};\n\n/**\n * Unicorn recommended rules that Oxlint hasn't ported. They run inside Oxlint\n * through the original JS plugin under the `unicornx` alias.\n */\nexport const unicornRulesJsPlugin: Linter.RulesRecord = {\n 'unicornx/isolated-functions': 'error',\n 'unicornx/no-for-loop': 'error',\n 'unicornx/no-named-default': 'error',\n 'unicornx/no-unnecessary-polyfills': 'error',\n 'unicornx/no-unreadable-for-of-expression': 'error',\n 'unicornx/prefer-export-from': 'error',\n 'unicornx/prefer-simple-condition-first': 'error',\n 'unicornx/prefer-single-call': 'error',\n 'unicornx/prefer-switch': 'error',\n 'unicornx/template-indent': 'error',\n\n /**\n * Native port exists but only in oxlint's nursery category, which can't be\n * enabled from config, so we run the JS original instead.\n */\n 'unicornx/no-useless-iterator-to-array': 'error',\n\n /**\n * Oxlint's port hardcodes uppercase hexadecimal digits, which fights\n * Prettier's lowercase formatting, so we run the JS original with the\n * lowercase option instead.\n */\n 'unicornx/number-literal-case': ['error', { hexadecimalValue: 'lowercase' }],\n};\n\n/**\n * Unicorn recommended rules that can't run inside Oxlint's JS-plugin host yet\n * because the compat layer is missing ESLint APIs (e.g.\n * `sourceCode.getDisableDirectives`). ESLint picks them up after Oxlint runs.\n */\nexport const unicornRulesEslint: Linter.RulesRecord = {\n 'unicorn/expiring-todo-comments': 'error',\n};\n","export const DEFAULT_ABBREVIATION_ALLOW_LIST = ['fn', 'cb', 'err', 'prev', 'dev', 'i'];\n\nexport const ABBREVIATION_REPLACEMENTS: Record<string, Record<string, boolean> | false> = {\n ref: false,\n refs: false,\n dev: false,\n dir: false,\n env: false,\n prop: false,\n props: false,\n util: false,\n utils: false,\n param: false,\n params: false,\n arg: false,\n args: false,\n db: false,\n ev: { event: true },\n val: { value: true },\n msg: { message: true },\n el: { element: true },\n elem: { element: true },\n btn: { button: true },\n cb: { callback: true },\n fn: { function: true },\n err: { error: true },\n opts: { options: true },\n cfg: { config: true },\n obj: { object: true },\n arr: { array: true },\n str: { string: true },\n num: { number: true },\n curr: { current: true },\n len: { length: true },\n e: { event: true, error: true },\n};\n","import type { Linter } from 'eslint';\nimport { ABBREVIATION_REPLACEMENTS, DEFAULT_ABBREVIATION_ALLOW_LIST } from './abbreviations.js';\nimport { unicornRulesJsPlugin, unicornRulesOxlint } from './unicorn.js';\n\nexport const jsFileExtensions = ['**/*.js', '**/*.jsx', '**/*.mjs', '**/*.cjs'];\n\nexport const paddingLineEntries = [\n {\n blankLine: 'always',\n prev: '*',\n next: ['block', 'block-like', 'class', 'const', 'let'],\n },\n {\n blankLine: 'always',\n prev: 'block',\n next: '*',\n },\n {\n blankLine: 'always',\n prev: ['const'],\n next: '*',\n },\n {\n blankLine: 'always',\n prev: ['let'],\n next: '*',\n },\n {\n blankLine: 'any',\n prev: ['const'],\n next: ['const'],\n },\n {\n blankLine: 'any',\n prev: ['let'],\n next: ['let'],\n },\n {\n blankLine: 'always',\n prev: ['let'],\n next: ['const'],\n },\n {\n blankLine: 'always',\n prev: ['const'],\n next: ['let'],\n },\n {\n blankLine: 'always',\n prev: ['singleline-const'],\n next: ['multiline-const'],\n },\n {\n blankLine: 'always',\n prev: ['multiline-const'],\n next: ['singleline-const'],\n },\n {\n blankLine: 'always',\n prev: ['singleline-let'],\n next: ['multiline-let'],\n },\n {\n blankLine: 'always',\n prev: ['multiline-let'],\n next: ['singleline-let'],\n },\n {\n blankLine: 'any',\n prev: ['case', 'block', 'block-like'],\n next: ['case', 'default'],\n },\n {\n blankLine: 'any',\n prev: '*',\n next: 'break',\n },\n {\n blankLine: 'always',\n prev: 'if',\n next: '*',\n },\n {\n blankLine: 'always',\n prev: {\n selector:\n 'ExpressionStatement:matches([expression.type=\"CallExpression\"], [expression.type=\"AwaitExpression\"][expression.argument.type=\"CallExpression\"])',\n },\n next: { selector: 'ExpressionStatement[expression.type=\"AssignmentExpression\"]' },\n },\n /**\n * Imports form a block: padded from anything that isn't an import, but\n * consecutive imports can sit together. The same-type rule comes last so it\n * wins over the surrounding `*` rules.\n */\n {\n blankLine: 'always',\n prev: 'import',\n next: '*',\n },\n {\n blankLine: 'always',\n prev: '*',\n next: 'import',\n },\n {\n blankLine: 'any',\n prev: 'import',\n next: 'import',\n },\n /**\n * Exports form a block: padded from anything that isn't an export, but\n * consecutive exports can sit together. The same-type rule comes last so it\n * wins over the surrounding `*` rules.\n */\n {\n blankLine: 'always',\n prev: 'export',\n next: '*',\n },\n {\n blankLine: 'always',\n prev: '*',\n next: 'export',\n },\n {\n blankLine: 'any',\n prev: 'export',\n next: 'export',\n },\n];\n\nexport const jsdocTagLineOptions = ['always', { count: 1, startLines: 1, applyToEndTag: false }];\n\nexport interface JavaScriptRuleOptions {\n preventAbbreviations?: {\n allowList?: string[];\n inheritAllowList?: boolean;\n replacements?: Record<string, Record<string, boolean> | false>;\n inheritReplacements?: boolean;\n };\n}\n\n/**\n * Non type-aware rules that run under Oxlint.\n */\nexport function jsRulesOxlint(options: JavaScriptRuleOptions = {}): Linter.RulesRecord {\n const { preventAbbreviations: preventAbbreviationsOptions } = options;\n\n const {\n inheritAllowList = true,\n inheritReplacements = true,\n allowList = [],\n replacements = {},\n } = preventAbbreviationsOptions ?? {};\n\n const effectiveAllowList = inheritAllowList ? [...DEFAULT_ABBREVIATION_ALLOW_LIST, ...allowList] : allowList;\n\n return {\n 'consistent-return': 'error',\n curly: ['error', 'all'],\n 'arrow-body-style': 'off',\n 'dot-notation': 'error',\n 'no-debugger': 'warn',\n 'no-unused-vars': 'off',\n 'no-async-promise-executor': 'error',\n 'no-case-declarations': 'error',\n 'default-case-last': 'error',\n 'no-cond-assign': 'error',\n 'no-dynamic-delete': 'off',\n 'no-unneeded-ternary': 'error',\n 'object-shorthand': 'error',\n 'no-constant-condition': ['error', { checkLoops: false }],\n\n '@stylistic/padding-line-between-statements': ['error', ...paddingLineEntries],\n '@stylistic/no-trailing-spaces': 'error',\n\n /**\n * Indentation is owned by Prettier. Oxlint's @stylistic/indent port\n * diverges from eslint-stylistic on edge cases (e.g., multiline object\n * args inside ternaries), so we leave the rule off.\n */\n '@stylistic/indent': 'off',\n '@stylistic/no-multiple-empty-lines': ['error', { max: 1 }],\n '@stylistic/multiline-comment-style': ['error', 'starred-block'],\n '@stylistic/spaced-comment': [\n 'error',\n 'always',\n {\n block: { balanced: true },\n },\n ],\n '@stylistic/brace-style': ['error', '1tbs'],\n '@stylistic/lines-around-comment': [\n 'error',\n {\n beforeBlockComment: true,\n beforeLineComment: true,\n allowBlockStart: true,\n allowBlockEnd: false,\n allowObjectStart: true,\n allowObjectEnd: false,\n allowArrayStart: true,\n allowArrayEnd: true,\n allowClassStart: true,\n allowInterfaceStart: true,\n allowInterfaceEnd: true,\n allowEnumStart: true,\n allowEnumEnd: true,\n allowTypeStart: true,\n allowTypeEnd: false,\n },\n ],\n\n // unicorn recommended, split between native oxlint ports and JS originals\n ...unicornRulesOxlint,\n ...unicornRulesJsPlugin,\n\n /**\n * Oxlint's built-in `unicorn` / `jsdoc` plugins don't implement these,\n * so we wire the original JS plugins under aliased names (see jsPlugins\n * in `src/oxlint.ts`). Rule IDs use the alias, not the canonical prefix.\n */\n 'unicornx/name-replacements': [\n 'error',\n {\n replacements: inheritReplacements ? { ...ABBREVIATION_REPLACEMENTS, ...replacements } : replacements,\n allowList: Object.fromEntries(effectiveAllowList.map((name) => [name, true])),\n },\n ],\n\n 'jsdocx/tag-lines': ['error', ...jsdocTagLineOptions],\n };\n}\n\n/**\n * Rules that can't run under Oxlint. ESLint-core rules that Oxlint hasn't\n * implemented (`prefer-arrow-callback`) or only ships in its nursery category\n * (`no-useless-assignment`), and that aren't exposed by any plugin we can\n * alias into oxlint's `jsPlugins` (the `@eslint/js` package only ships configs,\n * not a raw `rules` object). ESLint picks them up after Oxlint runs.\n */\nexport function jsRulesEslint(_options: JavaScriptRuleOptions = {}): Linter.RulesRecord {\n return {\n 'prefer-arrow-callback': 'error',\n 'no-useless-assignment': 'error',\n };\n}\n","import type { Linter } from 'eslint';\n\nexport interface ReactRuleOptions {\n fastRefresh?: boolean;\n performance?: boolean;\n}\n\nexport type ReactConfigOptions = boolean | ReactRuleOptions;\n\ninterface ResolvedReactRuleOptions {\n fastRefresh: boolean;\n performance: boolean;\n}\n\nexport const reactFileExtensions = ['**/*.jsx', '**/*.tsx'];\n\nexport function resolveReactRuleOptions(options: ReactConfigOptions = false): ResolvedReactRuleOptions {\n if (options === false) {\n return {\n fastRefresh: false,\n performance: false,\n };\n }\n\n if (options === true) {\n return {\n fastRefresh: true,\n performance: true,\n };\n }\n\n return {\n fastRefresh: options.fastRefresh ?? true,\n performance: options.performance ?? true,\n };\n}\n\nexport function reactRulesOxlint(options: ReactConfigOptions = false): Linter.RulesRecord {\n const resolvedOptions = resolveReactRuleOptions(options);\n\n return {\n 'react/jsx-key': 'error',\n 'react/jsx-no-duplicate-props': 'error',\n 'react/no-children-prop': 'error',\n 'react/no-danger-with-children': 'error',\n 'react/void-dom-elements-no-children': 'error',\n 'react/no-unknown-property': 'error',\n 'react/style-prop-object': 'error',\n 'react/button-has-type': 'error',\n 'react/checked-requires-onchange-or-readonly': 'error',\n 'react/forward-ref-uses-ref': 'error',\n 'react/jsx-props-no-spread-multi': 'error',\n 'react/jsx-no-script-url': 'error',\n 'react/jsx-no-target-blank': 'error',\n 'react/jsx-no-constructed-context-values': 'error',\n 'react/no-unstable-nested-components': 'error',\n 'react/no-array-index-key': 'warn',\n 'react/no-object-type-as-default-prop': 'warn',\n 'react/iframe-missing-sandbox': 'error',\n 'react/no-danger': 'warn',\n\n ...(resolvedOptions.fastRefresh && {\n 'react/only-export-components': ['warn', { allowConstantExport: true }],\n }),\n\n ...(resolvedOptions.performance && {\n 'react-perf/jsx-no-new-object-as-prop': 'warn',\n 'react-perf/jsx-no-new-array-as-prop': 'warn',\n 'react-perf/jsx-no-new-function-as-prop': 'warn',\n 'react-perf/jsx-no-jsx-as-prop': 'warn',\n }),\n };\n}\n","import type { Linter } from 'eslint';\nimport { jsRulesOxlint, type JavaScriptRuleOptions } from './javascript.js';\n\nexport const tsFileExtensions = ['**/*.ts', '**/*.tsx', '**/*.mts', '**/*.cts'];\n\nconst tsIgnoreDescriptionFormat = String.raw`^: TS\\d+ because .+$`;\n\nexport interface TypeScriptRuleOptions extends JavaScriptRuleOptions {\n namingConvention?: {\n variable?: {\n inheritFormat?: boolean;\n format?: string[];\n exceptions?: string[];\n };\n parameter?: {\n inheritFormat?: boolean;\n format?: string[];\n exceptions?: string[];\n };\n typeLike?: {\n inheritFormat?: boolean;\n format?: string[];\n exceptions?: string[];\n };\n memberLike?: {\n inheritFormat?: boolean;\n format?: string[];\n exceptions?: string[];\n };\n function?: {\n inheritFormat?: boolean;\n format?: string[];\n exceptions?: string[];\n };\n };\n}\n\ninterface NamingConventionFormatOptions {\n inheritFormat?: boolean;\n format?: string[];\n}\n\n/**\n * Type-aware typescript-eslint rules that Oxlint executes natively through\n * tsgolint (`options.typeAware`). They mirror what typescript-eslint's\n * `strictTypeChecked` + `stylisticTypeChecked` presets enabled when these\n * rules still ran under ESLint — same severities, same options — so moving\n * them here changed which engine serves them, not the behavior.\n *\n * Type-aware rules in oxlint's `correctness` category (e.g. `await-thenable`,\n * `unbound-method`) are not listed: they already run via the default\n * category, as `warn`, matching the pre-migration state.\n *\n * `typescript/naming-convention` is one of the two typescript-eslint\n * type-aware rules tsgolint doesn't implement; it stays in ESLint\n * (see {@link tsRulesEslint}).\n */\nexport const tsTypeAwareRulesOxlint: Linter.RulesRecord = {\n 'typescript/no-confusing-void-expression': 'error',\n 'typescript/no-deprecated': 'error',\n 'typescript/no-floating-promises': 'error',\n 'typescript/no-misused-promises': 'error',\n 'typescript/no-mixed-enums': 'error',\n 'typescript/no-unnecessary-boolean-literal-compare': 'error',\n 'typescript/no-unnecessary-condition': 'error',\n 'typescript/no-unnecessary-template-expression': 'error',\n 'typescript/no-unnecessary-type-arguments': 'error',\n 'typescript/no-unnecessary-type-assertion': 'error',\n 'typescript/no-unnecessary-type-conversion': 'error',\n 'typescript/no-unnecessary-type-parameters': 'error',\n 'typescript/no-unsafe-argument': 'error',\n 'typescript/no-unsafe-assignment': 'error',\n 'typescript/no-unsafe-call': 'error',\n 'typescript/no-unsafe-enum-comparison': 'error',\n 'typescript/no-unsafe-member-access': 'error',\n 'typescript/no-unsafe-return': 'error',\n 'typescript/non-nullable-type-assertion-style': 'error',\n 'typescript/only-throw-error': 'error',\n 'typescript/prefer-find': 'error',\n 'typescript/prefer-includes': 'error',\n 'typescript/prefer-nullish-coalescing': ['error', { ignorePrimitives: true }],\n 'typescript/prefer-optional-chain': 'error',\n 'typescript/prefer-promise-reject-errors': 'error',\n 'typescript/prefer-reduce-type-parameter': 'error',\n 'typescript/prefer-regexp-exec': 'error',\n 'typescript/prefer-return-this-type': 'error',\n 'typescript/prefer-string-starts-ends-with': 'error',\n 'typescript/related-getter-setter-pairs': 'error',\n 'typescript/restrict-plus-operands': [\n 'error',\n {\n allowAny: false,\n allowBoolean: false,\n allowNullish: false,\n allowNumberAndString: false,\n allowRegExp: false,\n },\n ],\n 'typescript/return-await': ['error', 'error-handling-correctness-only'],\n 'typescript/use-unknown-in-catch-callback-variable': 'error',\n};\n\n/**\n * Syntax-only rules that Oxlint ports natively and that used to reach ESLint\n * through typescript-eslint's presets: the `strictTypeChecked` /\n * `stylisticTypeChecked` rules that don't need type information, plus the\n * ESLint-core rules typescript-eslint's `eslintRecommended` config raises for\n * TypeScript files (hence the `eslint/` prefix and the TS-files-only scope).\n */\nexport const tsSyntaxRulesOxlint: Linter.RulesRecord = {\n 'typescript/adjacent-overload-signatures': 'error',\n 'typescript/ban-tslint-comment': 'error',\n 'typescript/class-literal-property-style': 'error',\n 'typescript/consistent-generic-constructors': 'error',\n 'typescript/consistent-indexed-object-style': 'error',\n 'typescript/consistent-type-assertions': 'error',\n 'typescript/consistent-type-definitions': 'error',\n 'typescript/no-array-constructor': 'error',\n 'typescript/no-confusing-non-null-assertion': 'error',\n 'typescript/no-empty-object-type': 'error',\n 'typescript/no-extraneous-class': 'error',\n 'typescript/no-inferrable-types': 'error',\n 'typescript/no-invalid-void-type': 'error',\n 'typescript/no-namespace': 'error',\n 'typescript/no-non-null-asserted-nullish-coalescing': 'error',\n 'typescript/no-require-imports': 'error',\n 'typescript/no-unnecessary-type-constraint': 'error',\n 'typescript/no-unsafe-function-type': 'error',\n 'typescript/no-useless-constructor': 'error',\n 'typescript/prefer-for-of': 'error',\n 'typescript/prefer-function-type': 'error',\n 'typescript/prefer-literal-enum-member': 'error',\n 'typescript/unified-signatures': 'error',\n\n 'eslint/no-var': 'error',\n 'eslint/prefer-const': ['error', { destructuring: 'any', ignoreReadBeforeAssign: false }],\n 'eslint/prefer-rest-params': 'error',\n 'eslint/prefer-spread': 'error',\n};\n\n/**\n * TypeScript rules that run under Oxlint, including the type-aware set\n * executed through tsgolint.\n */\nexport function tsRulesOxlint(options: TypeScriptRuleOptions = {}): Linter.RulesRecord {\n return {\n ...jsRulesOxlint(options),\n\n ...tsTypeAwareRulesOxlint,\n ...tsSyntaxRulesOxlint,\n\n /**\n * Oxlint exposes typescript-eslint rules under its own `typescript/`\n * namespace, so rule ids are prefixed `typescript/` rather than\n * `@typescript-eslint/`.\n */\n 'typescript/no-unused-vars': [\n 'error',\n {\n argsIgnorePattern: '^_',\n ignoreRestSiblings: true,\n },\n ],\n 'typescript/no-non-null-assertion': 'error',\n 'typescript/no-empty-function': 'off',\n 'typescript/no-explicit-any': 'off',\n 'typescript/no-base-to-string': 'off',\n 'typescript/no-dynamic-delete': 'off',\n 'typescript/no-extra-non-null-assertion': 'error',\n 'typescript/no-non-null-asserted-optional-chain': 'error',\n 'typescript/explicit-module-boundary-types': 'off',\n 'typescript/ban-ts-comment': [\n 'error',\n {\n 'ts-expect-error': { descriptionFormat: tsIgnoreDescriptionFormat },\n 'ts-ignore': { descriptionFormat: tsIgnoreDescriptionFormat },\n 'ts-nocheck': true,\n 'ts-check': false,\n },\n ],\n\n '@stylistic/type-annotation-spacing': 'error',\n\n // comment handling conflicts with the padding-line heuristics\n '@stylistic/lines-around-comment': 'off',\n };\n}\n\n/**\n * TypeScript rules served by ESLint.\n *\n * Only rules Oxlint can't run remain here: `naming-convention` is one of the\n * two typescript-eslint type-aware rules tsgolint doesn't implement, and\n * `explicit-member-accessibility` has no Oxlint port at all.\n */\nexport function tsRulesEslint(options: TypeScriptRuleOptions = {}): Linter.RulesRecord {\n return {\n ...getESLintNamingConventionRule(options.namingConvention),\n '@typescript-eslint/explicit-member-accessibility': ['error', { accessibility: 'no-public' }],\n '@typescript-eslint/no-dynamic-delete': 'off',\n '@typescript-eslint/array-type': 'off',\n '@typescript-eslint/require-await': 'off',\n '@typescript-eslint/no-explicit-any': 'off',\n '@typescript-eslint/no-empty-function': 'off',\n '@typescript-eslint/no-unused-vars': [\n 'error',\n {\n argsIgnorePattern: '^_',\n varsIgnorePattern: '^_',\n caughtErrorsIgnorePattern: '^_',\n destructuredArrayIgnorePattern: '^_',\n ignoreRestSiblings: true,\n },\n ],\n };\n}\n\n/**\n * ESLint-namespaced variant of the naming-convention rule. Keeps the same\n * filter / selector shape as {@link getNamingConventionRule}, only swapping\n * the rule id so it lines up with `@typescript-eslint/eslint-plugin`.\n */\nexport function getESLintNamingConventionRule(\n extensions?: TypeScriptRuleOptions['namingConvention'],\n): Linter.RulesRecord {\n const oxlintRules = getNamingConventionRule(extensions);\n\n return {\n '@typescript-eslint/naming-convention': oxlintRules['typescript/naming-convention'],\n };\n}\n\nexport function getNamingConventionRule(extensions?: TypeScriptRuleOptions['namingConvention']): Linter.RulesRecord {\n return {\n 'typescript/naming-convention': [\n 'error',\n {\n selector: ['variable'],\n format: mergeFormat(['camelCase', 'UPPER_CASE', 'PascalCase'], extensions?.variable),\n leadingUnderscore: 'allowSingleOrDouble',\n trailingUnderscore: 'forbid',\n filter: {\n regex: generateFilterRegex(['__dirname'], extensions?.variable?.exceptions),\n match: false,\n },\n },\n {\n selector: ['function'],\n format: mergeFormat(['camelCase', 'UPPER_CASE', 'PascalCase'], extensions?.function),\n leadingUnderscore: 'allowSingleOrDouble',\n trailingUnderscore: 'forbid',\n filter: {\n regex: generateFilterRegex(['__dirname'], extensions?.function?.exceptions),\n match: false,\n },\n },\n {\n selector: 'parameter',\n format: mergeFormat(['camelCase', 'UPPER_CASE', 'PascalCase'], extensions?.parameter),\n leadingUnderscore: 'allow',\n ...(extensions?.parameter?.exceptions?.length && {\n filter: {\n regex: generateFilterRegex([], extensions.parameter.exceptions),\n match: false,\n },\n }),\n },\n {\n selector: 'typeLike',\n format: mergeFormat(['PascalCase'], extensions?.typeLike),\n ...(extensions?.typeLike?.exceptions?.length && {\n filter: {\n regex: generateFilterRegex([], extensions.typeLike.exceptions),\n match: false,\n },\n }),\n },\n {\n selector: 'memberLike',\n modifiers: ['private'],\n format: mergeFormat(['camelCase', 'PascalCase'], extensions?.memberLike),\n leadingUnderscore: 'require',\n ...(extensions?.memberLike?.exceptions?.length && {\n filter: {\n regex: generateFilterRegex([], extensions.memberLike.exceptions),\n match: false,\n },\n }),\n },\n ],\n };\n}\n\nfunction mergeFormat(defaults: string[], extensions?: NamingConventionFormatOptions) {\n return [...new Set([...((extensions?.inheritFormat ?? true) ? defaults : []), ...(extensions?.format ?? [])])];\n}\n\nfunction generateFilterRegex(defaults: string[], extensions: string[] = []) {\n return `^(${[...defaults, ...extensions].join('|')})$`;\n}\n"]}
|
|
@@ -266,6 +266,13 @@ var paddingLineEntries = [
|
|
|
266
266
|
prev: "if",
|
|
267
267
|
next: "*"
|
|
268
268
|
},
|
|
269
|
+
{
|
|
270
|
+
blankLine: "always",
|
|
271
|
+
prev: {
|
|
272
|
+
selector: 'ExpressionStatement:matches([expression.type="CallExpression"], [expression.type="AwaitExpression"][expression.argument.type="CallExpression"])'
|
|
273
|
+
},
|
|
274
|
+
next: { selector: 'ExpressionStatement[expression.type="AssignmentExpression"]' }
|
|
275
|
+
},
|
|
269
276
|
/**
|
|
270
277
|
* Imports form a block: padded from anything that isn't an import, but
|
|
271
278
|
* consecutive imports can sit together. The same-type rule comes last so it
|
|
@@ -670,4 +677,4 @@ export {
|
|
|
670
677
|
tsRulesOxlint,
|
|
671
678
|
tsRulesEslint
|
|
672
679
|
};
|
|
673
|
-
//# sourceMappingURL=chunk-
|
|
680
|
+
//# sourceMappingURL=chunk-XME24BVK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/configs/unicorn.ts","../src/configs/abbreviations.ts","../src/configs/javascript.ts","../src/configs/react.ts","../src/configs/typescript.ts"],"sourcesContent":["import type { Linter } from 'eslint';\n\n/**\n * Mirror of `eslint-plugin-unicorn`'s recommended config, split by runtime.\n *\n * Oxlint natively implements most unicorn rules, so we enable those under the\n * canonical `unicorn/` prefix (fast, Rust). Rules oxlint hasn't ported run\n * through the original JS plugin, aliased as `unicornx` in `jsPlugins` (see\n * `src/oxlint.ts`), because oxlint's built-in plugin owns the `unicorn/`\n * namespace.\n *\n * `unicorn/name-replacements` is also not ported. It lives in `javascript.ts`\n * because it takes user-configurable options.\n */\n\n/**\n * Unicorn recommended rules natively implemented by Oxlint, grouped by the\n * oxlint category they belong to. Only the correctness group is enabled by\n * oxlint's defaults (as `warn`); everything is set explicitly to `error` to\n * match the recommended config.\n */\nexport const unicornRulesOxlint: Linter.RulesRecord = {\n // correctness\n 'unicorn/no-await-in-promise-methods': 'error',\n 'unicorn/no-empty-file': 'warn',\n 'unicorn/no-invalid-fetch-options': 'error',\n 'unicorn/no-invalid-remove-event-listener': 'error',\n 'unicorn/no-new-array': 'error',\n 'unicorn/no-single-promise-in-promise-methods': 'error',\n 'unicorn/no-thenable': 'error',\n 'unicorn/no-unnecessary-await': 'error',\n 'unicorn/no-useless-fallback-in-spread': 'error',\n 'unicorn/no-useless-length-check': 'error',\n 'unicorn/no-useless-spread': 'error',\n 'unicorn/prefer-set-size': 'error',\n 'unicorn/prefer-string-starts-ends-with': 'error',\n\n // perf\n 'unicorn/prefer-array-find': 'error',\n 'unicorn/prefer-array-flat-map': 'error',\n 'unicorn/prefer-set-has': 'error',\n\n // restriction\n 'unicorn/no-abusive-eslint-disable': 'error',\n 'unicorn/no-anonymous-default-export': 'error',\n 'unicorn/no-array-for-each': 'error',\n 'unicorn/no-array-reduce': 'error',\n 'unicorn/no-document-cookie': 'error',\n 'unicorn/no-magic-array-flat-depth': 'error',\n 'unicorn/no-process-exit': 'error',\n 'unicorn/no-useless-error-capture-stack-trace': 'error',\n 'unicorn/prefer-modern-math-apis': 'error',\n 'unicorn/prefer-module': 'error',\n 'unicorn/prefer-node-protocol': 'error',\n 'unicorn/prefer-number-properties': 'error',\n\n // suspicious\n 'unicorn/consistent-function-scoping': 'error',\n 'unicorn/no-accessor-recursion': 'error',\n 'unicorn/no-array-reverse': 'error',\n 'unicorn/no-array-sort': 'error',\n 'unicorn/no-instanceof-builtins': 'error',\n 'unicorn/prefer-add-event-listener': 'error',\n 'unicorn/require-module-specifiers': 'error',\n\n // pedantic\n 'unicorn/consistent-assert': 'error',\n 'unicorn/consistent-empty-array-spread': 'error',\n 'unicorn/escape-case': 'error',\n 'unicorn/explicit-length-check': 'error',\n 'unicorn/new-for-builtins': 'error',\n 'unicorn/no-array-callback-reference': 'error',\n 'unicorn/no-hex-escape': 'error',\n 'unicorn/no-immediate-mutation': 'error',\n 'unicorn/no-lonely-if': 'error',\n 'unicorn/no-negation-in-equality-check': 'error',\n 'unicorn/no-new-buffer': 'error',\n 'unicorn/no-object-as-default-parameter': 'error',\n 'unicorn/no-static-only-class': 'error',\n 'unicorn/no-this-assignment': 'error',\n 'unicorn/no-typeof-undefined': 'error',\n 'unicorn/no-unnecessary-array-flat-depth': 'error',\n 'unicorn/no-unnecessary-array-splice-count': 'error',\n 'unicorn/no-unnecessary-slice-end': 'error',\n 'unicorn/no-unreadable-iife': 'error',\n 'unicorn/no-useless-promise-resolve-reject': 'error',\n 'unicorn/no-useless-switch-case': 'error',\n 'unicorn/prefer-array-flat': 'error',\n 'unicorn/prefer-array-some': 'error',\n 'unicorn/prefer-at': 'error',\n 'unicorn/prefer-blob-reading-methods': 'error',\n 'unicorn/prefer-code-point': 'error',\n 'unicorn/prefer-date-now': 'error',\n 'unicorn/prefer-dom-node-append': 'error',\n 'unicorn/prefer-dom-node-dataset': 'error',\n 'unicorn/prefer-dom-node-remove': 'error',\n 'unicorn/prefer-event-target': 'error',\n 'unicorn/prefer-math-min-max': 'error',\n 'unicorn/prefer-math-trunc': 'error',\n 'unicorn/prefer-native-coercion-functions': 'error',\n 'unicorn/prefer-prototype-methods': 'error',\n 'unicorn/prefer-query-selector': 'error',\n 'unicorn/prefer-regexp-test': 'error',\n 'unicorn/prefer-string-replace-all': 'error',\n 'unicorn/prefer-string-slice': 'error',\n 'unicorn/prefer-top-level-await': 'error',\n 'unicorn/prefer-type-error': 'error',\n 'unicorn/require-number-to-fixed-digits-argument': 'error',\n\n // style\n 'unicorn/catch-error-name': ['error', { name: 'error' }],\n 'unicorn/consistent-date-clone': 'error',\n 'unicorn/consistent-existence-index-check': 'error',\n 'unicorn/consistent-template-literal-escape': 'error',\n 'unicorn/empty-brace-spaces': 'error',\n 'unicorn/error-message': 'error',\n 'unicorn/no-array-method-this-argument': 'error',\n 'unicorn/no-await-expression-member': 'error',\n 'unicorn/no-console-spaces': 'error',\n 'unicorn/no-unreadable-array-destructuring': 'error',\n 'unicorn/no-useless-collection-argument': 'error',\n 'unicorn/no-zero-fractions': 'error',\n 'unicorn/numeric-separators-style': 'error',\n 'unicorn/prefer-array-index-of': 'error',\n 'unicorn/prefer-bigint-literals': 'error',\n 'unicorn/prefer-class-fields': 'error',\n 'unicorn/prefer-classlist-toggle': 'error',\n 'unicorn/prefer-default-parameters': 'error',\n 'unicorn/prefer-dom-node-text-content': 'error',\n 'unicorn/prefer-global-this': 'error',\n 'unicorn/prefer-includes': 'error',\n 'unicorn/prefer-keyboard-event-key': 'error',\n 'unicorn/prefer-logical-operator-over-ternary': 'error',\n 'unicorn/prefer-modern-dom-apis': 'error',\n 'unicorn/prefer-negative-index': 'error',\n 'unicorn/prefer-object-from-entries': 'error',\n 'unicorn/prefer-optional-catch-binding': 'error',\n 'unicorn/prefer-reflect-apply': 'error',\n 'unicorn/prefer-response-static-json': 'error',\n 'unicorn/prefer-spread': 'error',\n 'unicorn/prefer-string-raw': 'error',\n 'unicorn/prefer-string-trim-start-end': 'error',\n 'unicorn/prefer-structured-clone': 'error',\n 'unicorn/relative-url-style': 'error',\n 'unicorn/require-array-join-separator': 'error',\n 'unicorn/require-module-attributes': 'error',\n 'unicorn/switch-case-braces': 'error',\n 'unicorn/switch-case-break-position': 'error',\n 'unicorn/text-encoding-identifier-case': 'error',\n 'unicorn/throw-new-error': 'error',\n};\n\n/**\n * Unicorn recommended rules that Oxlint hasn't ported. They run inside Oxlint\n * through the original JS plugin under the `unicornx` alias.\n */\nexport const unicornRulesJsPlugin: Linter.RulesRecord = {\n 'unicornx/isolated-functions': 'error',\n 'unicornx/no-for-loop': 'error',\n 'unicornx/no-named-default': 'error',\n 'unicornx/no-unnecessary-polyfills': 'error',\n 'unicornx/no-unreadable-for-of-expression': 'error',\n 'unicornx/prefer-export-from': 'error',\n 'unicornx/prefer-simple-condition-first': 'error',\n 'unicornx/prefer-single-call': 'error',\n 'unicornx/prefer-switch': 'error',\n 'unicornx/template-indent': 'error',\n\n /**\n * Native port exists but only in oxlint's nursery category, which can't be\n * enabled from config, so we run the JS original instead.\n */\n 'unicornx/no-useless-iterator-to-array': 'error',\n\n /**\n * Oxlint's port hardcodes uppercase hexadecimal digits, which fights\n * Prettier's lowercase formatting, so we run the JS original with the\n * lowercase option instead.\n */\n 'unicornx/number-literal-case': ['error', { hexadecimalValue: 'lowercase' }],\n};\n\n/**\n * Unicorn recommended rules that can't run inside Oxlint's JS-plugin host yet\n * because the compat layer is missing ESLint APIs (e.g.\n * `sourceCode.getDisableDirectives`). ESLint picks them up after Oxlint runs.\n */\nexport const unicornRulesEslint: Linter.RulesRecord = {\n 'unicorn/expiring-todo-comments': 'error',\n};\n","export const DEFAULT_ABBREVIATION_ALLOW_LIST = ['fn', 'cb', 'err', 'prev', 'dev', 'i'];\n\nexport const ABBREVIATION_REPLACEMENTS: Record<string, Record<string, boolean> | false> = {\n ref: false,\n refs: false,\n dev: false,\n dir: false,\n env: false,\n prop: false,\n props: false,\n util: false,\n utils: false,\n param: false,\n params: false,\n arg: false,\n args: false,\n db: false,\n ev: { event: true },\n val: { value: true },\n msg: { message: true },\n el: { element: true },\n elem: { element: true },\n btn: { button: true },\n cb: { callback: true },\n fn: { function: true },\n err: { error: true },\n opts: { options: true },\n cfg: { config: true },\n obj: { object: true },\n arr: { array: true },\n str: { string: true },\n num: { number: true },\n curr: { current: true },\n len: { length: true },\n e: { event: true, error: true },\n};\n","import type { Linter } from 'eslint';\nimport { ABBREVIATION_REPLACEMENTS, DEFAULT_ABBREVIATION_ALLOW_LIST } from './abbreviations.js';\nimport { unicornRulesJsPlugin, unicornRulesOxlint } from './unicorn.js';\n\nexport const jsFileExtensions = ['**/*.js', '**/*.jsx', '**/*.mjs', '**/*.cjs'];\n\nexport const paddingLineEntries = [\n {\n blankLine: 'always',\n prev: '*',\n next: ['block', 'block-like', 'class', 'const', 'let'],\n },\n {\n blankLine: 'always',\n prev: 'block',\n next: '*',\n },\n {\n blankLine: 'always',\n prev: ['const'],\n next: '*',\n },\n {\n blankLine: 'always',\n prev: ['let'],\n next: '*',\n },\n {\n blankLine: 'any',\n prev: ['const'],\n next: ['const'],\n },\n {\n blankLine: 'any',\n prev: ['let'],\n next: ['let'],\n },\n {\n blankLine: 'always',\n prev: ['let'],\n next: ['const'],\n },\n {\n blankLine: 'always',\n prev: ['const'],\n next: ['let'],\n },\n {\n blankLine: 'always',\n prev: ['singleline-const'],\n next: ['multiline-const'],\n },\n {\n blankLine: 'always',\n prev: ['multiline-const'],\n next: ['singleline-const'],\n },\n {\n blankLine: 'always',\n prev: ['singleline-let'],\n next: ['multiline-let'],\n },\n {\n blankLine: 'always',\n prev: ['multiline-let'],\n next: ['singleline-let'],\n },\n {\n blankLine: 'any',\n prev: ['case', 'block', 'block-like'],\n next: ['case', 'default'],\n },\n {\n blankLine: 'any',\n prev: '*',\n next: 'break',\n },\n {\n blankLine: 'always',\n prev: 'if',\n next: '*',\n },\n {\n blankLine: 'always',\n prev: {\n selector:\n 'ExpressionStatement:matches([expression.type=\"CallExpression\"], [expression.type=\"AwaitExpression\"][expression.argument.type=\"CallExpression\"])',\n },\n next: { selector: 'ExpressionStatement[expression.type=\"AssignmentExpression\"]' },\n },\n /**\n * Imports form a block: padded from anything that isn't an import, but\n * consecutive imports can sit together. The same-type rule comes last so it\n * wins over the surrounding `*` rules.\n */\n {\n blankLine: 'always',\n prev: 'import',\n next: '*',\n },\n {\n blankLine: 'always',\n prev: '*',\n next: 'import',\n },\n {\n blankLine: 'any',\n prev: 'import',\n next: 'import',\n },\n /**\n * Exports form a block: padded from anything that isn't an export, but\n * consecutive exports can sit together. The same-type rule comes last so it\n * wins over the surrounding `*` rules.\n */\n {\n blankLine: 'always',\n prev: 'export',\n next: '*',\n },\n {\n blankLine: 'always',\n prev: '*',\n next: 'export',\n },\n {\n blankLine: 'any',\n prev: 'export',\n next: 'export',\n },\n];\n\nexport const jsdocTagLineOptions = ['always', { count: 1, startLines: 1, applyToEndTag: false }];\n\nexport interface JavaScriptRuleOptions {\n preventAbbreviations?: {\n allowList?: string[];\n inheritAllowList?: boolean;\n replacements?: Record<string, Record<string, boolean> | false>;\n inheritReplacements?: boolean;\n };\n}\n\n/**\n * Non type-aware rules that run under Oxlint.\n */\nexport function jsRulesOxlint(options: JavaScriptRuleOptions = {}): Linter.RulesRecord {\n const { preventAbbreviations: preventAbbreviationsOptions } = options;\n\n const {\n inheritAllowList = true,\n inheritReplacements = true,\n allowList = [],\n replacements = {},\n } = preventAbbreviationsOptions ?? {};\n\n const effectiveAllowList = inheritAllowList ? [...DEFAULT_ABBREVIATION_ALLOW_LIST, ...allowList] : allowList;\n\n return {\n 'consistent-return': 'error',\n curly: ['error', 'all'],\n 'arrow-body-style': 'off',\n 'dot-notation': 'error',\n 'no-debugger': 'warn',\n 'no-unused-vars': 'off',\n 'no-async-promise-executor': 'error',\n 'no-case-declarations': 'error',\n 'default-case-last': 'error',\n 'no-cond-assign': 'error',\n 'no-dynamic-delete': 'off',\n 'no-unneeded-ternary': 'error',\n 'object-shorthand': 'error',\n 'no-constant-condition': ['error', { checkLoops: false }],\n\n '@stylistic/padding-line-between-statements': ['error', ...paddingLineEntries],\n '@stylistic/no-trailing-spaces': 'error',\n\n /**\n * Indentation is owned by Prettier. Oxlint's @stylistic/indent port\n * diverges from eslint-stylistic on edge cases (e.g., multiline object\n * args inside ternaries), so we leave the rule off.\n */\n '@stylistic/indent': 'off',\n '@stylistic/no-multiple-empty-lines': ['error', { max: 1 }],\n '@stylistic/multiline-comment-style': ['error', 'starred-block'],\n '@stylistic/spaced-comment': [\n 'error',\n 'always',\n {\n block: { balanced: true },\n },\n ],\n '@stylistic/brace-style': ['error', '1tbs'],\n '@stylistic/lines-around-comment': [\n 'error',\n {\n beforeBlockComment: true,\n beforeLineComment: true,\n allowBlockStart: true,\n allowBlockEnd: false,\n allowObjectStart: true,\n allowObjectEnd: false,\n allowArrayStart: true,\n allowArrayEnd: true,\n allowClassStart: true,\n allowInterfaceStart: true,\n allowInterfaceEnd: true,\n allowEnumStart: true,\n allowEnumEnd: true,\n allowTypeStart: true,\n allowTypeEnd: false,\n },\n ],\n\n // unicorn recommended, split between native oxlint ports and JS originals\n ...unicornRulesOxlint,\n ...unicornRulesJsPlugin,\n\n /**\n * Oxlint's built-in `unicorn` / `jsdoc` plugins don't implement these,\n * so we wire the original JS plugins under aliased names (see jsPlugins\n * in `src/oxlint.ts`). Rule IDs use the alias, not the canonical prefix.\n */\n 'unicornx/name-replacements': [\n 'error',\n {\n replacements: inheritReplacements ? { ...ABBREVIATION_REPLACEMENTS, ...replacements } : replacements,\n allowList: Object.fromEntries(effectiveAllowList.map((name) => [name, true])),\n },\n ],\n\n 'jsdocx/tag-lines': ['error', ...jsdocTagLineOptions],\n };\n}\n\n/**\n * Rules that can't run under Oxlint. ESLint-core rules that Oxlint hasn't\n * implemented (`prefer-arrow-callback`) or only ships in its nursery category\n * (`no-useless-assignment`), and that aren't exposed by any plugin we can\n * alias into oxlint's `jsPlugins` (the `@eslint/js` package only ships configs,\n * not a raw `rules` object). ESLint picks them up after Oxlint runs.\n */\nexport function jsRulesEslint(_options: JavaScriptRuleOptions = {}): Linter.RulesRecord {\n return {\n 'prefer-arrow-callback': 'error',\n 'no-useless-assignment': 'error',\n };\n}\n","import type { Linter } from 'eslint';\n\nexport interface ReactRuleOptions {\n fastRefresh?: boolean;\n performance?: boolean;\n}\n\nexport type ReactConfigOptions = boolean | ReactRuleOptions;\n\ninterface ResolvedReactRuleOptions {\n fastRefresh: boolean;\n performance: boolean;\n}\n\nexport const reactFileExtensions = ['**/*.jsx', '**/*.tsx'];\n\nexport function resolveReactRuleOptions(options: ReactConfigOptions = false): ResolvedReactRuleOptions {\n if (options === false) {\n return {\n fastRefresh: false,\n performance: false,\n };\n }\n\n if (options === true) {\n return {\n fastRefresh: true,\n performance: true,\n };\n }\n\n return {\n fastRefresh: options.fastRefresh ?? true,\n performance: options.performance ?? true,\n };\n}\n\nexport function reactRulesOxlint(options: ReactConfigOptions = false): Linter.RulesRecord {\n const resolvedOptions = resolveReactRuleOptions(options);\n\n return {\n 'react/jsx-key': 'error',\n 'react/jsx-no-duplicate-props': 'error',\n 'react/no-children-prop': 'error',\n 'react/no-danger-with-children': 'error',\n 'react/void-dom-elements-no-children': 'error',\n 'react/no-unknown-property': 'error',\n 'react/style-prop-object': 'error',\n 'react/button-has-type': 'error',\n 'react/checked-requires-onchange-or-readonly': 'error',\n 'react/forward-ref-uses-ref': 'error',\n 'react/jsx-props-no-spread-multi': 'error',\n 'react/jsx-no-script-url': 'error',\n 'react/jsx-no-target-blank': 'error',\n 'react/jsx-no-constructed-context-values': 'error',\n 'react/no-unstable-nested-components': 'error',\n 'react/no-array-index-key': 'warn',\n 'react/no-object-type-as-default-prop': 'warn',\n 'react/iframe-missing-sandbox': 'error',\n 'react/no-danger': 'warn',\n\n ...(resolvedOptions.fastRefresh && {\n 'react/only-export-components': ['warn', { allowConstantExport: true }],\n }),\n\n ...(resolvedOptions.performance && {\n 'react-perf/jsx-no-new-object-as-prop': 'warn',\n 'react-perf/jsx-no-new-array-as-prop': 'warn',\n 'react-perf/jsx-no-new-function-as-prop': 'warn',\n 'react-perf/jsx-no-jsx-as-prop': 'warn',\n }),\n };\n}\n","import type { Linter } from 'eslint';\nimport { jsRulesOxlint, type JavaScriptRuleOptions } from './javascript.js';\n\nexport const tsFileExtensions = ['**/*.ts', '**/*.tsx', '**/*.mts', '**/*.cts'];\n\nconst tsIgnoreDescriptionFormat = String.raw`^: TS\\d+ because .+$`;\n\nexport interface TypeScriptRuleOptions extends JavaScriptRuleOptions {\n namingConvention?: {\n variable?: {\n inheritFormat?: boolean;\n format?: string[];\n exceptions?: string[];\n };\n parameter?: {\n inheritFormat?: boolean;\n format?: string[];\n exceptions?: string[];\n };\n typeLike?: {\n inheritFormat?: boolean;\n format?: string[];\n exceptions?: string[];\n };\n memberLike?: {\n inheritFormat?: boolean;\n format?: string[];\n exceptions?: string[];\n };\n function?: {\n inheritFormat?: boolean;\n format?: string[];\n exceptions?: string[];\n };\n };\n}\n\ninterface NamingConventionFormatOptions {\n inheritFormat?: boolean;\n format?: string[];\n}\n\n/**\n * Type-aware typescript-eslint rules that Oxlint executes natively through\n * tsgolint (`options.typeAware`). They mirror what typescript-eslint's\n * `strictTypeChecked` + `stylisticTypeChecked` presets enabled when these\n * rules still ran under ESLint — same severities, same options — so moving\n * them here changed which engine serves them, not the behavior.\n *\n * Type-aware rules in oxlint's `correctness` category (e.g. `await-thenable`,\n * `unbound-method`) are not listed: they already run via the default\n * category, as `warn`, matching the pre-migration state.\n *\n * `typescript/naming-convention` is one of the two typescript-eslint\n * type-aware rules tsgolint doesn't implement; it stays in ESLint\n * (see {@link tsRulesEslint}).\n */\nexport const tsTypeAwareRulesOxlint: Linter.RulesRecord = {\n 'typescript/no-confusing-void-expression': 'error',\n 'typescript/no-deprecated': 'error',\n 'typescript/no-floating-promises': 'error',\n 'typescript/no-misused-promises': 'error',\n 'typescript/no-mixed-enums': 'error',\n 'typescript/no-unnecessary-boolean-literal-compare': 'error',\n 'typescript/no-unnecessary-condition': 'error',\n 'typescript/no-unnecessary-template-expression': 'error',\n 'typescript/no-unnecessary-type-arguments': 'error',\n 'typescript/no-unnecessary-type-assertion': 'error',\n 'typescript/no-unnecessary-type-conversion': 'error',\n 'typescript/no-unnecessary-type-parameters': 'error',\n 'typescript/no-unsafe-argument': 'error',\n 'typescript/no-unsafe-assignment': 'error',\n 'typescript/no-unsafe-call': 'error',\n 'typescript/no-unsafe-enum-comparison': 'error',\n 'typescript/no-unsafe-member-access': 'error',\n 'typescript/no-unsafe-return': 'error',\n 'typescript/non-nullable-type-assertion-style': 'error',\n 'typescript/only-throw-error': 'error',\n 'typescript/prefer-find': 'error',\n 'typescript/prefer-includes': 'error',\n 'typescript/prefer-nullish-coalescing': ['error', { ignorePrimitives: true }],\n 'typescript/prefer-optional-chain': 'error',\n 'typescript/prefer-promise-reject-errors': 'error',\n 'typescript/prefer-reduce-type-parameter': 'error',\n 'typescript/prefer-regexp-exec': 'error',\n 'typescript/prefer-return-this-type': 'error',\n 'typescript/prefer-string-starts-ends-with': 'error',\n 'typescript/related-getter-setter-pairs': 'error',\n 'typescript/restrict-plus-operands': [\n 'error',\n {\n allowAny: false,\n allowBoolean: false,\n allowNullish: false,\n allowNumberAndString: false,\n allowRegExp: false,\n },\n ],\n 'typescript/return-await': ['error', 'error-handling-correctness-only'],\n 'typescript/use-unknown-in-catch-callback-variable': 'error',\n};\n\n/**\n * Syntax-only rules that Oxlint ports natively and that used to reach ESLint\n * through typescript-eslint's presets: the `strictTypeChecked` /\n * `stylisticTypeChecked` rules that don't need type information, plus the\n * ESLint-core rules typescript-eslint's `eslintRecommended` config raises for\n * TypeScript files (hence the `eslint/` prefix and the TS-files-only scope).\n */\nexport const tsSyntaxRulesOxlint: Linter.RulesRecord = {\n 'typescript/adjacent-overload-signatures': 'error',\n 'typescript/ban-tslint-comment': 'error',\n 'typescript/class-literal-property-style': 'error',\n 'typescript/consistent-generic-constructors': 'error',\n 'typescript/consistent-indexed-object-style': 'error',\n 'typescript/consistent-type-assertions': 'error',\n 'typescript/consistent-type-definitions': 'error',\n 'typescript/no-array-constructor': 'error',\n 'typescript/no-confusing-non-null-assertion': 'error',\n 'typescript/no-empty-object-type': 'error',\n 'typescript/no-extraneous-class': 'error',\n 'typescript/no-inferrable-types': 'error',\n 'typescript/no-invalid-void-type': 'error',\n 'typescript/no-namespace': 'error',\n 'typescript/no-non-null-asserted-nullish-coalescing': 'error',\n 'typescript/no-require-imports': 'error',\n 'typescript/no-unnecessary-type-constraint': 'error',\n 'typescript/no-unsafe-function-type': 'error',\n 'typescript/no-useless-constructor': 'error',\n 'typescript/prefer-for-of': 'error',\n 'typescript/prefer-function-type': 'error',\n 'typescript/prefer-literal-enum-member': 'error',\n 'typescript/unified-signatures': 'error',\n\n 'eslint/no-var': 'error',\n 'eslint/prefer-const': ['error', { destructuring: 'any', ignoreReadBeforeAssign: false }],\n 'eslint/prefer-rest-params': 'error',\n 'eslint/prefer-spread': 'error',\n};\n\n/**\n * TypeScript rules that run under Oxlint, including the type-aware set\n * executed through tsgolint.\n */\nexport function tsRulesOxlint(options: TypeScriptRuleOptions = {}): Linter.RulesRecord {\n return {\n ...jsRulesOxlint(options),\n\n ...tsTypeAwareRulesOxlint,\n ...tsSyntaxRulesOxlint,\n\n /**\n * Oxlint exposes typescript-eslint rules under its own `typescript/`\n * namespace, so rule ids are prefixed `typescript/` rather than\n * `@typescript-eslint/`.\n */\n 'typescript/no-unused-vars': [\n 'error',\n {\n argsIgnorePattern: '^_',\n ignoreRestSiblings: true,\n },\n ],\n 'typescript/no-non-null-assertion': 'error',\n 'typescript/no-empty-function': 'off',\n 'typescript/no-explicit-any': 'off',\n 'typescript/no-base-to-string': 'off',\n 'typescript/no-dynamic-delete': 'off',\n 'typescript/no-extra-non-null-assertion': 'error',\n 'typescript/no-non-null-asserted-optional-chain': 'error',\n 'typescript/explicit-module-boundary-types': 'off',\n 'typescript/ban-ts-comment': [\n 'error',\n {\n 'ts-expect-error': { descriptionFormat: tsIgnoreDescriptionFormat },\n 'ts-ignore': { descriptionFormat: tsIgnoreDescriptionFormat },\n 'ts-nocheck': true,\n 'ts-check': false,\n },\n ],\n\n '@stylistic/type-annotation-spacing': 'error',\n\n // comment handling conflicts with the padding-line heuristics\n '@stylistic/lines-around-comment': 'off',\n };\n}\n\n/**\n * TypeScript rules served by ESLint.\n *\n * Only rules Oxlint can't run remain here: `naming-convention` is one of the\n * two typescript-eslint type-aware rules tsgolint doesn't implement, and\n * `explicit-member-accessibility` has no Oxlint port at all.\n */\nexport function tsRulesEslint(options: TypeScriptRuleOptions = {}): Linter.RulesRecord {\n return {\n ...getESLintNamingConventionRule(options.namingConvention),\n '@typescript-eslint/explicit-member-accessibility': ['error', { accessibility: 'no-public' }],\n '@typescript-eslint/no-dynamic-delete': 'off',\n '@typescript-eslint/array-type': 'off',\n '@typescript-eslint/require-await': 'off',\n '@typescript-eslint/no-explicit-any': 'off',\n '@typescript-eslint/no-empty-function': 'off',\n '@typescript-eslint/no-unused-vars': [\n 'error',\n {\n argsIgnorePattern: '^_',\n varsIgnorePattern: '^_',\n caughtErrorsIgnorePattern: '^_',\n destructuredArrayIgnorePattern: '^_',\n ignoreRestSiblings: true,\n },\n ],\n };\n}\n\n/**\n * ESLint-namespaced variant of the naming-convention rule. Keeps the same\n * filter / selector shape as {@link getNamingConventionRule}, only swapping\n * the rule id so it lines up with `@typescript-eslint/eslint-plugin`.\n */\nexport function getESLintNamingConventionRule(\n extensions?: TypeScriptRuleOptions['namingConvention'],\n): Linter.RulesRecord {\n const oxlintRules = getNamingConventionRule(extensions);\n\n return {\n '@typescript-eslint/naming-convention': oxlintRules['typescript/naming-convention'],\n };\n}\n\nexport function getNamingConventionRule(extensions?: TypeScriptRuleOptions['namingConvention']): Linter.RulesRecord {\n return {\n 'typescript/naming-convention': [\n 'error',\n {\n selector: ['variable'],\n format: mergeFormat(['camelCase', 'UPPER_CASE', 'PascalCase'], extensions?.variable),\n leadingUnderscore: 'allowSingleOrDouble',\n trailingUnderscore: 'forbid',\n filter: {\n regex: generateFilterRegex(['__dirname'], extensions?.variable?.exceptions),\n match: false,\n },\n },\n {\n selector: ['function'],\n format: mergeFormat(['camelCase', 'UPPER_CASE', 'PascalCase'], extensions?.function),\n leadingUnderscore: 'allowSingleOrDouble',\n trailingUnderscore: 'forbid',\n filter: {\n regex: generateFilterRegex(['__dirname'], extensions?.function?.exceptions),\n match: false,\n },\n },\n {\n selector: 'parameter',\n format: mergeFormat(['camelCase', 'UPPER_CASE', 'PascalCase'], extensions?.parameter),\n leadingUnderscore: 'allow',\n ...(extensions?.parameter?.exceptions?.length && {\n filter: {\n regex: generateFilterRegex([], extensions.parameter.exceptions),\n match: false,\n },\n }),\n },\n {\n selector: 'typeLike',\n format: mergeFormat(['PascalCase'], extensions?.typeLike),\n ...(extensions?.typeLike?.exceptions?.length && {\n filter: {\n regex: generateFilterRegex([], extensions.typeLike.exceptions),\n match: false,\n },\n }),\n },\n {\n selector: 'memberLike',\n modifiers: ['private'],\n format: mergeFormat(['camelCase', 'PascalCase'], extensions?.memberLike),\n leadingUnderscore: 'require',\n ...(extensions?.memberLike?.exceptions?.length && {\n filter: {\n regex: generateFilterRegex([], extensions.memberLike.exceptions),\n match: false,\n },\n }),\n },\n ],\n };\n}\n\nfunction mergeFormat(defaults: string[], extensions?: NamingConventionFormatOptions) {\n return [...new Set([...((extensions?.inheritFormat ?? true) ? defaults : []), ...(extensions?.format ?? [])])];\n}\n\nfunction generateFilterRegex(defaults: string[], extensions: string[] = []) {\n return `^(${[...defaults, ...extensions].join('|')})$`;\n}\n"],"mappings":"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","names":[]}
|
package/dist/eslint.cjs
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
var
|
|
8
|
+
var _chunk5DYWZ7QAcjs = require('./chunk-5DYWZ7QA.cjs');
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
var _chunk56WU3HSDcjs = require('./chunk-56WU3HSD.cjs');
|
|
@@ -15,7 +15,7 @@ var _eslintpluginoxlint = require('eslint-plugin-oxlint'); var _eslintpluginoxli
|
|
|
15
15
|
var _eslintpluginunicorn = require('eslint-plugin-unicorn'); var _eslintpluginunicorn2 = _interopRequireDefault(_eslintpluginunicorn);
|
|
16
16
|
var _module = require('module');
|
|
17
17
|
var _typescripteslint = require('typescript-eslint'); var _typescripteslint2 = _interopRequireDefault(_typescripteslint);
|
|
18
|
-
var allFileExtensions = [...
|
|
18
|
+
var allFileExtensions = [..._chunk5DYWZ7QAcjs.jsFileExtensions, ..._chunk5DYWZ7QAcjs.tsFileExtensions];
|
|
19
19
|
var require2 = _module.createRequire.call(void 0, _chunk56WU3HSDcjs.importMetaUrl);
|
|
20
20
|
function eslintConfig(options = {}) {
|
|
21
21
|
const {
|
|
@@ -35,7 +35,7 @@ function eslintConfig(options = {}) {
|
|
|
35
35
|
].map((config) => {
|
|
36
36
|
return {
|
|
37
37
|
...config,
|
|
38
|
-
files: config.files && config.files.length > 0 ? config.files :
|
|
38
|
+
files: config.files && config.files.length > 0 ? config.files : _chunk5DYWZ7QAcjs.tsFileExtensions
|
|
39
39
|
};
|
|
40
40
|
});
|
|
41
41
|
const oxlintDisables = oxlintConfig ? _eslintpluginoxlint2.default.buildFromOxlintConfig(oxlintConfig, {
|
|
@@ -49,7 +49,7 @@ function eslintConfig(options = {}) {
|
|
|
49
49
|
...typeAwareConfigs,
|
|
50
50
|
{
|
|
51
51
|
name: "@d3lm/project-service",
|
|
52
|
-
files:
|
|
52
|
+
files: _chunk5DYWZ7QAcjs.tsFileExtensions,
|
|
53
53
|
languageOptions: {
|
|
54
54
|
parserOptions: {
|
|
55
55
|
projectService: {
|
|
@@ -67,15 +67,15 @@ function eslintConfig(options = {}) {
|
|
|
67
67
|
unicorn: _eslintpluginunicorn2.default
|
|
68
68
|
},
|
|
69
69
|
rules: {
|
|
70
|
-
...
|
|
71
|
-
...
|
|
70
|
+
..._chunk5DYWZ7QAcjs.jsRulesEslint.call(void 0, ruleOptions),
|
|
71
|
+
..._chunk5DYWZ7QAcjs.unicornRulesEslint
|
|
72
72
|
}
|
|
73
73
|
},
|
|
74
74
|
{
|
|
75
75
|
name: "@d3lm/eslint-only-rules-ts",
|
|
76
|
-
files:
|
|
76
|
+
files: _chunk5DYWZ7QAcjs.tsFileExtensions,
|
|
77
77
|
rules: {
|
|
78
|
-
...
|
|
78
|
+
..._chunk5DYWZ7QAcjs.tsRulesEslint.call(void 0, ruleOptions)
|
|
79
79
|
}
|
|
80
80
|
},
|
|
81
81
|
...extraConfigs,
|
|
@@ -92,7 +92,7 @@ function reactHooksConfigs() {
|
|
|
92
92
|
return normalizeConfigs(recommendedConfig).map((config) => {
|
|
93
93
|
return {
|
|
94
94
|
...config,
|
|
95
|
-
files: config.files && config.files.length > 0 ? config.files :
|
|
95
|
+
files: config.files && config.files.length > 0 ? config.files : _chunk5DYWZ7QAcjs.reactFileExtensions
|
|
96
96
|
};
|
|
97
97
|
});
|
|
98
98
|
}
|
package/dist/eslint.js
CHANGED
package/dist/oxlint.cjs
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunk5DYWZ7QAcjs = require('./chunk-5DYWZ7QA.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
var _chunk56WU3HSDcjs = require('./chunk-56WU3HSD.cjs');
|
|
@@ -1392,7 +1392,7 @@ var resolvePlugin = (specifier) => {
|
|
|
1392
1392
|
};
|
|
1393
1393
|
var ownRulesPath = _url.fileURLToPath.call(void 0, new URL("rules.js", _chunk56WU3HSDcjs.importMetaUrl));
|
|
1394
1394
|
var createOxlintConfig = (options) => {
|
|
1395
|
-
const reactOptions =
|
|
1395
|
+
const reactOptions = _chunk5DYWZ7QAcjs.resolveReactRuleOptions.call(void 0, _optionalChain([options, 'optionalAccess', _3 => _3.react]));
|
|
1396
1396
|
const reactPlugins = [
|
|
1397
1397
|
"eslint",
|
|
1398
1398
|
"typescript",
|
|
@@ -1424,7 +1424,7 @@ var createOxlintConfig = (options) => {
|
|
|
1424
1424
|
options: { typeAware: true },
|
|
1425
1425
|
ignorePatterns: ["dist", "node_modules", "coverage"],
|
|
1426
1426
|
rules: {
|
|
1427
|
-
...
|
|
1427
|
+
..._chunk5DYWZ7QAcjs.jsRulesOxlint.call(void 0, _optionalChain([options, 'optionalAccess', _5 => _5.jsRulesOxlint])),
|
|
1428
1428
|
"@d3lm/newline-around-multiline": "error",
|
|
1429
1429
|
"@d3lm/block-scoped-case": "error",
|
|
1430
1430
|
"@d3lm/comment-syntax": "error",
|
|
@@ -1436,12 +1436,12 @@ var createOxlintConfig = (options) => {
|
|
|
1436
1436
|
"@d3lm/no-blank-line-between-imports": "error",
|
|
1437
1437
|
"@d3lm/no-member-access-on-ternary": "error",
|
|
1438
1438
|
"prettier/prettier": ["error", {}],
|
|
1439
|
-
..._optionalChain([options, 'optionalAccess', _6 => _6.react]) &&
|
|
1439
|
+
..._optionalChain([options, 'optionalAccess', _6 => _6.react]) && _chunk5DYWZ7QAcjs.reactRulesOxlint.call(void 0, options.react)
|
|
1440
1440
|
},
|
|
1441
1441
|
overrides: [
|
|
1442
1442
|
{
|
|
1443
1443
|
files: ["**/*.{ts,tsx,mts,cts}"],
|
|
1444
|
-
rules:
|
|
1444
|
+
rules: _chunk5DYWZ7QAcjs.tsRulesOxlint.call(void 0, _optionalChain([options, 'optionalAccess', _7 => _7.tsRulesOxlint]))
|
|
1445
1445
|
}
|
|
1446
1446
|
]
|
|
1447
1447
|
});
|
package/dist/oxlint.js
CHANGED
package/dist/rules.cjs
CHANGED
|
@@ -87,6 +87,9 @@ var block_scoped_case_default = rule;
|
|
|
87
87
|
|
|
88
88
|
// src/rules/comment-preceding-blank-line.ts
|
|
89
89
|
var UNION_OR_INTERSECTION_TYPES = /* @__PURE__ */ new Set(["TSUnionType", "TSIntersectionType"]);
|
|
90
|
+
function isMultiLineBlock(comment) {
|
|
91
|
+
return comment.type === "Block" && comment.value.includes("\n");
|
|
92
|
+
}
|
|
90
93
|
var rule2 = {
|
|
91
94
|
meta: {
|
|
92
95
|
type: "layout",
|
|
@@ -195,6 +198,16 @@ var rule2 = {
|
|
|
195
198
|
}
|
|
196
199
|
return ["{", "(", "["].includes(tokenBefore.value);
|
|
197
200
|
}
|
|
201
|
+
function isExempt(comment) {
|
|
202
|
+
return isAtBlockStart(comment) || isBeforeFirstTypeConstituent(comment) || isChainedCallContext(comment) || isCommentAllowedByEnclosure(comment) || isBetweenImports(comment);
|
|
203
|
+
}
|
|
204
|
+
function followsMultiLineBlock(comment) {
|
|
205
|
+
if (!isMultiLineBlock(comment)) {
|
|
206
|
+
return false;
|
|
207
|
+
}
|
|
208
|
+
const previous = sourceCode.getTokenBefore(comment, { includeComments: true });
|
|
209
|
+
return previous !== null && isMultiLineBlock(previous);
|
|
210
|
+
}
|
|
198
211
|
return {
|
|
199
212
|
Program() {
|
|
200
213
|
const comments = sourceCode.getAllComments();
|
|
@@ -206,16 +219,7 @@ var rule2 = {
|
|
|
206
219
|
if (commentLine <= 1) {
|
|
207
220
|
continue;
|
|
208
221
|
}
|
|
209
|
-
if (
|
|
210
|
-
continue;
|
|
211
|
-
}
|
|
212
|
-
if (isChainedCallContext(comment)) {
|
|
213
|
-
continue;
|
|
214
|
-
}
|
|
215
|
-
if (isCommentAllowedByEnclosure(comment)) {
|
|
216
|
-
continue;
|
|
217
|
-
}
|
|
218
|
-
if (isBetweenImports(comment)) {
|
|
222
|
+
if (!followsMultiLineBlock(comment) && isExempt(comment)) {
|
|
219
223
|
continue;
|
|
220
224
|
}
|
|
221
225
|
const tokenBefore = sourceCode.getTokenBefore(comment, {
|
|
@@ -271,7 +275,8 @@ var DEFAULT_OPTIONS = {
|
|
|
271
275
|
requireLeadingSpace: true,
|
|
272
276
|
requireLowercase: true,
|
|
273
277
|
forbidTrailingPunctuation: true,
|
|
274
|
-
allowedEndings: DEFAULT_LINE_ENDINGS
|
|
278
|
+
allowedEndings: DEFAULT_LINE_ENDINGS,
|
|
279
|
+
maxLength: 120
|
|
275
280
|
},
|
|
276
281
|
block: {
|
|
277
282
|
requireCapital: true,
|
|
@@ -335,23 +340,37 @@ function resolveOptions(raw) {
|
|
|
335
340
|
function isHashbang(comment) {
|
|
336
341
|
return comment.type === "Shebang" || comment.type === "Line" && _optionalChain([comment, 'access', _10 => _10.range, 'optionalAccess', _11 => _11[0]]) === 0 && comment.value.startsWith("!");
|
|
337
342
|
}
|
|
343
|
+
function isUnwrappable(trimmed, options) {
|
|
344
|
+
if (options.ignoreDirectives && DIRECTIVE_PATTERN.test(trimmed)) {
|
|
345
|
+
return true;
|
|
346
|
+
}
|
|
347
|
+
if (options.ignoreUrls && URL_PATTERN.test(trimmed)) {
|
|
348
|
+
return true;
|
|
349
|
+
}
|
|
350
|
+
return options.ignoredPatterns.some((pattern) => pattern.test(trimmed));
|
|
351
|
+
}
|
|
338
352
|
function shouldSkipComment(value, options) {
|
|
339
353
|
const trimmed = value.trim();
|
|
340
354
|
if (!trimmed) {
|
|
341
355
|
return true;
|
|
342
356
|
}
|
|
343
|
-
if (options.ignoreDirectives &&
|
|
357
|
+
if (options.ignoreDirectives && TAG_PATTERN.test(trimmed)) {
|
|
344
358
|
return true;
|
|
345
359
|
}
|
|
346
|
-
|
|
347
|
-
|
|
360
|
+
return isUnwrappable(trimmed, options);
|
|
361
|
+
}
|
|
362
|
+
function checkLineCommentLength(context, comment, options) {
|
|
363
|
+
const loc = comment.loc;
|
|
364
|
+
if (!loc || loc.end.column <= options.line.maxLength || isUnwrappable(comment.value.trim(), options)) {
|
|
365
|
+
return;
|
|
348
366
|
}
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
367
|
+
context.report({
|
|
368
|
+
loc,
|
|
369
|
+
messageId: "lineMaxLength",
|
|
370
|
+
data: {
|
|
371
|
+
maxLength: String(options.line.maxLength)
|
|
352
372
|
}
|
|
353
|
-
}
|
|
354
|
-
return false;
|
|
373
|
+
});
|
|
355
374
|
}
|
|
356
375
|
function checkLineComment(context, comment, options) {
|
|
357
376
|
const { line } = options;
|
|
@@ -655,6 +674,7 @@ var messages = {
|
|
|
655
674
|
lineLeadingSpace: "Line comment should start with a space.",
|
|
656
675
|
lineLowercase: "Line comment should start with a lowercase letter.",
|
|
657
676
|
lineTrailingPunctuation: "Line comment should not end with punctuation.",
|
|
677
|
+
lineMaxLength: "Line comment exceeds the maximum line length of {{maxLength}}; use a multi-line block comment instead.",
|
|
658
678
|
blockCapital: "Block comment should start with an uppercase letter.",
|
|
659
679
|
blockTrailingPunctuation: "Block comment should end with punctuation.",
|
|
660
680
|
blockSingleLineJSDoc: "JSDoc-style block comments (/** ... */) must span multiple lines.",
|
|
@@ -704,7 +724,8 @@ var rule3 = {
|
|
|
704
724
|
type: "array",
|
|
705
725
|
items: { type: "string" },
|
|
706
726
|
uniqueItems: true
|
|
707
|
-
}
|
|
727
|
+
},
|
|
728
|
+
maxLength: { type: "integer", minimum: 1 }
|
|
708
729
|
}
|
|
709
730
|
},
|
|
710
731
|
block: {
|
|
@@ -742,6 +763,9 @@ var rule3 = {
|
|
|
742
763
|
if (isHashbang(comment)) {
|
|
743
764
|
continue;
|
|
744
765
|
}
|
|
766
|
+
if (comment.type === "Line") {
|
|
767
|
+
checkLineCommentLength(context, comment, options);
|
|
768
|
+
}
|
|
745
769
|
if (isSingleLineJsdocBlock(comment)) {
|
|
746
770
|
checkSingleLineJsdocBlock(context, comment);
|
|
747
771
|
continue;
|