From bfdc0e0e6d5e47aa501f9b6fadd143d9c97cf00a Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期三, 24 六月 2026 17:40:39 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev
---
internal/lint-configs/eslint-config/src/configs/javascript.ts | 182 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 182 insertions(+), 0 deletions(-)
diff --git a/internal/lint-configs/eslint-config/src/configs/javascript.ts b/internal/lint-configs/eslint-config/src/configs/javascript.ts
new file mode 100644
index 0000000..bd9bd85
--- /dev/null
+++ b/internal/lint-configs/eslint-config/src/configs/javascript.ts
@@ -0,0 +1,182 @@
+import type { Linter } from 'eslint';
+
+import js from '@eslint/js';
+import pluginUnusedImports from 'eslint-plugin-unused-imports';
+import globals from 'globals';
+
+const rulesCoveredByOxlint = new Set([
+ 'constructor-super',
+ 'for-direction',
+ 'getter-return',
+ 'no-async-promise-executor',
+ 'no-case-declarations',
+ 'no-class-assign',
+ 'no-compare-neg-zero',
+ 'no-cond-assign',
+ 'no-const-assign',
+ 'no-constant-binary-expression',
+ 'no-constant-condition',
+ 'no-debugger',
+ 'no-delete-var',
+ 'no-dupe-args',
+ 'no-dupe-class-members',
+ 'no-dupe-else-if',
+ 'no-dupe-keys',
+ 'no-duplicate-case',
+ 'no-empty',
+ 'no-empty-character-class',
+ 'no-empty-pattern',
+ 'no-empty-static-block',
+ 'no-ex-assign',
+ 'no-extra-boolean-cast',
+ 'no-fallthrough',
+ 'no-func-assign',
+ 'no-global-assign',
+ 'no-import-assign',
+ 'no-invalid-regexp',
+ 'no-irregular-whitespace',
+ 'no-loss-of-precision',
+ 'no-misleading-character-class',
+ 'no-new-native-nonconstructor',
+ 'no-nonoctal-decimal-escape',
+ 'no-obj-calls',
+ 'no-prototype-builtins',
+ 'no-redeclare',
+ 'no-regex-spaces',
+ 'no-self-assign',
+ 'no-setter-return',
+ 'no-shadow-restricted-names',
+ 'no-sparse-arrays',
+ 'no-this-before-super',
+ 'no-unreachable',
+ 'no-unsafe-finally',
+ 'no-unsafe-negation',
+ 'no-unsafe-optional-chaining',
+ 'no-unused-labels',
+ 'no-unused-private-class-members',
+ 'no-unused-vars',
+ 'no-useless-backreference',
+ 'no-useless-catch',
+ 'no-useless-escape',
+ 'no-with',
+ 'require-yield',
+ 'use-isnan',
+ 'valid-typeof',
+]);
+
+export async function javascript(): Promise<Linter.Config[]> {
+ const recommendedRules = Object.fromEntries(
+ Object.entries(js.configs.recommended.rules).filter(
+ ([ruleName]) => !rulesCoveredByOxlint.has(ruleName),
+ ),
+ );
+
+ return [
+ {
+ languageOptions: {
+ ecmaVersion: 'latest',
+ globals: {
+ ...globals.browser,
+ ...globals.es2021,
+ ...globals.node,
+ document: 'readonly',
+ navigator: 'readonly',
+ window: 'readonly',
+ },
+ parserOptions: {
+ ecmaFeatures: {
+ jsx: true,
+ },
+ ecmaVersion: 'latest',
+ sourceType: 'module',
+ },
+ sourceType: 'module',
+ },
+ linterOptions: {
+ reportUnusedDisableDirectives: true,
+ },
+ plugins: {
+ 'unused-imports': pluginUnusedImports,
+ },
+ rules: {
+ ...recommendedRules,
+ 'dot-notation': ['error', { allowKeywords: true }],
+ 'keyword-spacing': 'off',
+ 'no-control-regex': 'error',
+ 'no-empty-function': 'off',
+ 'no-octal': 'error',
+ 'no-octal-escape': 'error',
+ 'no-restricted-properties': [
+ 'error',
+ {
+ message:
+ 'Use `Object.getPrototypeOf` or `Object.setPrototypeOf` instead.',
+ property: '__proto__',
+ },
+ {
+ message: 'Use `Object.defineProperty` instead.',
+ property: '__defineGetter__',
+ },
+ {
+ message: 'Use `Object.defineProperty` instead.',
+ property: '__defineSetter__',
+ },
+ {
+ message: 'Use `Object.getOwnPropertyDescriptor` instead.',
+ property: '__lookupGetter__',
+ },
+ {
+ message: 'Use `Object.getOwnPropertyDescriptor` instead.',
+ property: '__lookupSetter__',
+ },
+ ],
+ 'no-restricted-syntax': [
+ 'error',
+ 'DebuggerStatement',
+ 'LabeledStatement',
+ 'WithStatement',
+ 'TSEnumDeclaration[const=true]',
+ 'TSExportAssignment',
+ ],
+ 'no-undef-init': 'error',
+ 'no-undef': 'off',
+ 'no-unreachable-loop': 'error',
+ 'object-shorthand': [
+ 'error',
+ 'always',
+ {
+ avoidQuotes: true,
+ ignoreConstructors: false,
+ },
+ ],
+ 'one-var': ['error', { initialized: 'never' }],
+ 'prefer-arrow-callback': [
+ 'error',
+ {
+ allowNamedFunctions: false,
+ allowUnboundThis: true,
+ },
+ ],
+ 'prefer-regex-literals': [
+ 'error',
+ {
+ disallowRedundantWrapping: true,
+ },
+ ],
+ 'spaced-comment': 'error',
+ 'space-before-function-paren': 'off',
+
+ 'unused-imports/no-unused-imports': 'error',
+ 'unused-imports/no-unused-vars': [
+ 'error',
+ {
+ args: 'after-used',
+ argsIgnorePattern: '^_',
+ vars: 'all',
+ varsIgnorePattern: '^_',
+ },
+ ],
+ },
+ },
+ ];
+}
--
Gitblit v1.9.3