From 0f2f6a0e4a134b4cc3145d5091273c0c4d72fec4 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 00:13:56 -0500 Subject: [PATCH 01/65] Migrate to ESLint v9: only common; removed all deprecated rules by stylistic. --- common.mjs | 685 +++++++++++++ package-lock.json | 2415 +++++++++++++++++++++------------------------ package.json | 21 +- 3 files changed, 1806 insertions(+), 1315 deletions(-) create mode 100644 common.mjs diff --git a/common.mjs b/common.mjs new file mode 100644 index 0000000..3e2506f --- /dev/null +++ b/common.mjs @@ -0,0 +1,685 @@ +/* eslint-disable sort-keys, max-lines, no-magic-numbers */ + +import ImportPlugin from "eslint-plugin-import"; +import ImportNewlinesPlugin from "eslint-plugin-import-newlines"; +import JsdocPlugin from "eslint-plugin-jsdoc"; +import NoAutofixPlugin from "eslint-plugin-no-autofix"; +import SimpleImportSortPlugin from "eslint-plugin-simple-import-sort"; +import globals from "globals"; + +import StylisticJsPlugin from "@stylistic/eslint-plugin-js"; +import StylisticPlusPlugin from "@stylistic/eslint-plugin-plus"; + + +const config = [ + { + languageOptions: { + globals: { + ...globals.node, + }, + ecmaVersion: "latest", + sourceType: "module", + parserOptions: { + ecmaFeatures: { + experimentalObjectRestSpread: true, + }, + }, + }, + plugins: { + "@stylistic/js": StylisticJsPlugin, + "@stylistic/plus": StylisticPlusPlugin, + "import": ImportPlugin, + "import-newlines": ImportNewlinesPlugin, + "jsdoc": JsdocPlugin, + "no-autofix": NoAutofixPlugin, + "simple-import-sort": SimpleImportSortPlugin, + }, + rules: { + "accessor-pairs": ["error"], + "array-callback-return": ["error"], + "arrow-body-style": ["off"], + "block-scoped-var": ["error"], + "camelcase": [ + "error", + { + properties: "never", + ignoreDestructuring: false, + ignoreImports: false, + ignoreGlobals: false, + }, + ], + "capitalized-comments": ["off"], + "class-methods-use-this": ["error"], + "complexity": ["error"], + "consistent-return": ["error"], + "consistent-this": ["error"], + "constructor-super": ["error"], + "curly": [ + "error", + "all", + ], + "default-case": ["error"], + "default-case-last": ["error"], + "default-param-last": ["error"], + "dot-notation": ["error"], + "eqeqeq": ["error"], + "for-direction": ["error"], + "func-name-matching": ["error"], + "func-names": [ + "error", + "as-needed", + ], + "func-style": [ + "warn", + "expression", + ], + "getter-return": ["error"], + "grouped-accessor-pairs": ["error"], + "guard-for-in": ["error"], + "id-denylist": ["off"], + "id-length": ["off"], + "id-match": ["error"], + "init-declarations": ["off"], + + // FIXME: deprecated in ESLint v9.3.0 + "line-comment-position": ["error"], + "logical-assignment-operators": ["error"], + "max-classes-per-file": ["error"], + "max-depth": ["error"], + "max-lines": ["error"], + "max-lines-per-function": [ + "error", + {max: 60, skipBlankLines: true, skipComments: true}, + ], + "max-nested-callbacks": ["error"], + "max-params": [ + "error", + {max: 4}, + ], + "max-statements": [ + "error", + {max: 20}, + ], + + // FIXME: deprecated in ESLint v9.3.0 + "multiline-comment-style": ["off"], + "new-cap": ["error"], + "no-alert": ["error"], + "no-array-constructor": ["error"], + "no-async-promise-executor": ["error"], + "no-await-in-loop": ["off"], + "no-bitwise": ["off"], + "no-caller": ["error"], + "no-case-declarations": ["error"], + "no-class-assign": ["error"], + "no-compare-neg-zero": ["error"], + "no-cond-assign": ["error"], + "no-const-assign": ["error"], + "no-constant-binary-expression": ["error"], + "no-constant-condition": [ + "error", + {checkLoops: false}, + ], + "no-constructor-return": ["error"], + "no-continue": ["off"], + "no-control-regex": ["error"], + "no-debugger": ["error"], + "no-delete-var": ["error"], + "no-div-regex": ["error"], + "no-dupe-args": ["error"], + "no-dupe-class-members": ["error"], + "no-dupe-else-if": ["error"], + "no-dupe-keys": ["error"], + "no-duplicate-case": ["error"], + "no-duplicate-imports": ["error"], + "no-else-return": ["error"], + "no-empty": ["error"], + "no-empty-character-class": ["error"], + "no-empty-function": [ + "error", + {allow: ["arrowFunctions"]}, + ], + "no-empty-pattern": ["error"], + "no-empty-static-block": ["error"], + "no-eq-null": ["error"], + "no-eval": ["error"], + "no-ex-assign": ["error"], + "no-extend-native": ["error"], + "no-extra-bind": ["error"], + "no-extra-boolean-cast": ["error"], + "no-extra-label": ["error"], + "no-fallthrough": ["error"], + "no-func-assign": ["error"], + "no-global-assign": ["error"], + "no-implicit-coercion": ["error"], + "no-implicit-globals": ["error"], + "no-implied-eval": ["error"], + "no-import-assign": ["error"], + "no-inline-comments": ["error"], + "no-inner-declarations": ["error"], + "no-invalid-regexp": ["error"], + "no-invalid-this": ["off"], + "no-irregular-whitespace": ["error"], + "no-iterator": ["error"], + "no-label-var": ["error"], + "no-labels": ["error"], + "no-lone-blocks": ["error"], + "no-lonely-if": ["error"], + "no-loop-func": ["error"], + "no-loss-of-precision": ["error"], + "no-magic-numbers": [ + "error", + { + detectObjects: false, + enforceConst: true, + ignore: [ + -1, + 0, + 1, + 2, + 3, + 10, + 100, + ], + ignoreArrayIndexes: true, + ignoreClassFieldInitialValues: true, + ignoreDefaultValues: true, + }, + ], + "no-misleading-character-class": ["error"], + "no-multi-assign": ["error"], + "no-multi-str": ["error"], + "no-negated-condition": ["off"], + "no-nested-ternary": ["error"], + "no-new": ["error"], + "no-new-func": ["error"], + "no-new-native-nonconstructor": ["error"], + + // deprecated in ESLint v9.0.0 and replaced by the no-new-native-nonconstructor + "no-new-symbol": ["error"], + "no-new-wrappers": ["error"], + "no-nonoctal-decimal-escape": ["error"], + "no-obj-calls": ["error"], + "no-object-constructor": ["error"], + "no-octal": ["error"], + "no-octal-escape": ["error"], + "no-param-reassign": ["off"], + "no-plusplus": ["off"], + "no-promise-executor-return": ["error"], + "no-proto": ["error"], + "no-prototype-builtins": ["error"], + "no-redeclare": ["error"], + "no-regex-spaces": ["error"], + "no-restricted-exports": ["error"], + "no-restricted-globals": ["error"], + "no-restricted-imports": ["error"], + "no-restricted-properties": ["error"], + "no-restricted-syntax": [ + "error", + { + message: "Direct exporting of declarations is not allowed. Use export list or default exports instead.", + selector: "ExportNamedDeclaration[declaration!=null]", + }, + ], + "no-return-assign": ["error"], + "no-script-url": ["error"], + "no-self-assign": ["error"], + "no-self-compare": ["error"], + "no-sequences": ["error"], + "no-setter-return": ["error"], + "no-shadow": ["error"], + "no-shadow-restricted-names": ["error"], + "no-sparse-arrays": ["error"], + "no-template-curly-in-string": ["error"], + "no-ternary": ["off"], + "no-this-before-super": ["error"], + "no-throw-literal": ["error"], + "no-undef": ["error"], + "no-undef-init": ["error"], + "no-undefined": ["error"], + "no-underscore-dangle": [ + "error", + { + allow: [ + "_id", + "_malloc", + ], + }, + ], + "no-unexpected-multiline": ["error"], + "no-unmodified-loop-condition": ["error"], + "no-unneeded-ternary": ["error"], + "no-unreachable": ["error"], + "no-unreachable-loop": ["error"], + "no-unsafe-finally": ["error"], + "no-unsafe-negation": ["error"], + "no-unsafe-optional-chaining": ["error"], + "no-unused-expressions": ["error"], + "no-unused-labels": ["error"], + "no-unused-private-class-members": ["error"], + "no-unused-vars": [ + "warn", + {args: "none"}, + ], + "no-use-before-define": ["error"], + "no-useless-backreference": ["error"], + "no-useless-call": ["error"], + "no-useless-catch": ["error"], + "no-useless-computed-key": ["error"], + "no-useless-concat": ["error"], + "no-useless-constructor": ["error"], + "no-useless-escape": ["error"], + "no-useless-rename": ["error"], + "no-useless-return": ["error"], + "no-var": ["error"], + "no-void": ["error"], + "no-warning-comments": [ + "warn", + { + location: "start", + terms: [ + "todo", + "fixme", + ], + }, + ], + "no-with": ["error"], + "object-shorthand": [ + "error", + "consistent", + ], + "one-var": [ + "error", + {var: "never", let: "never", const: "never"}, + ], + "operator-assignment": ["error"], + "prefer-arrow-callback": ["error"], + "prefer-const": [ + "error", + {destructuring: "all", ignoreReadBeforeAssign: false}, + ], + "prefer-destructuring": ["error"], + "prefer-exponentiation-operator": ["error"], + "prefer-named-capture-group": ["off"], + "prefer-numeric-literals": ["error"], + "prefer-object-has-own": ["error"], + "prefer-object-spread": ["error"], + "prefer-promise-reject-errors": ["error"], + "prefer-regex-literals": ["error"], + "prefer-rest-params": ["error"], + "prefer-spread": ["error"], + "prefer-template": ["error"], + "radix": ["error"], + "require-atomic-updates": ["warn"], + "require-await": ["off"], + "require-unicode-regexp": ["off"], + "require-yield": ["error"], + "simple-import-sort/exports": ["warn"], + "simple-import-sort/imports": [ + "warn", + { + groups: [ + [ + "^meteor", + "^prop-types", + "^react", + ], + ["^\\w"], + ["^@"], + ["^@mui/icons-material"], + ["^/"], + ["^[./]"], + ["^\\\\u0000"], + ], + }, + ], + "sort-imports": ["off"], + "sort-keys": [ + "warn", + "asc", + {allowLineSeparatedGroups: true, caseSensitive: true, minKeys: 5, natural: true}, + ], + "sort-vars": ["error"], + "strict": ["error"], + "symbol-description": ["error"], + "unicode-bom": ["error"], + "use-isnan": ["error"], + "valid-typeof": ["error"], + "vars-on-top": ["error"], + "yoda": [ + "error", + "always", + ], + + // deprecated by `@stylistic` + "@stylistic/js/array-bracket-newline": [ + "error", + "consistent", + ], + "@stylistic/js/array-bracket-spacing": [ + "error", + "never", + ], + "@stylistic/js/array-element-newline": [ + "error", + {ArrayExpression: "always", ArrayPattern: {minItems: 3}}, + ], + "@stylistic/js/arrow-parens": ["error"], + "@stylistic/js/arrow-spacing": ["error"], + "@stylistic/js/block-spacing": ["error"], + "@stylistic/js/brace-style": [ + "error", + "1tbs", + {allowSingleLine: true}, + ], + "@stylistic/js/comma-dangle": [ + "warn", + { + arrays: "always-multiline", + exports: "always-multiline", + functions: "only-multiline", + imports: "always-multiline", + objects: "always-multiline", + }, + ], + "@stylistic/js/comma-spacing": ["error"], + "@stylistic/js/comma-style": ["error"], + "@stylistic/js/computed-property-spacing": ["error"], + "@stylistic/js/dot-location": [ + "error", + "property", + ], + "@stylistic/js/eol-last": [ + "error", + "always", + ], + "@stylistic/js/func-call-spacing": ["off"], + "@stylistic/js/function-call-argument-newline": [ + "error", + "consistent", + ], + "@stylistic/js/function-call-spacing": ["error"], + "@stylistic/js/function-paren-newline": [ + "error", + "multiline-arguments", + ], + "@stylistic/js/generator-star-spacing": ["error"], + "@stylistic/js/implicit-arrow-linebreak": ["error"], + "@stylistic/js/indent": [ + "error", + 4, + { + SwitchCase: 1, + flatTernaryExpressions: false, + offsetTernaryExpressions: false, + ignoreComments: false, + }, + ], + "@stylistic/js/jsx-quotes": ["error"], + "@stylistic/js/key-spacing": [ + "error", + {afterColon: true}, + ], + "@stylistic/js/keyword-spacing": ["error"], + "@stylistic/js/linebreak-style": [ + "error", + "unix", + ], + "@stylistic/js/lines-around-comment": [ + "error", + { + ignorePattern: "c8|Enum", + beforeBlockComment: true, + afterBlockComment: false, + beforeLineComment: true, + afterLineComment: false, + afterHashbangComment: true, + allowBlockStart: true, + allowBlockEnd: true, + allowClassStart: true, + allowClassEnd: true, + allowObjectStart: true, + allowObjectEnd: true, + allowArrayStart: true, + allowArrayEnd: true, + }, + ], + "@stylistic/js/lines-between-class-members": ["error"], + "@stylistic/js/max-len": [ + "warn", + { + code: 100, + tabWidth: 4, + comments: 100, + ignoreComments: false, + ignoreTrailingComments: false, + ignoreUrls: true, + ignoreStrings: false, + ignoreTemplateLiterals: false, + ignoreRegExpLiterals: true, + }, + ], + "@stylistic/js/max-statements-per-line": ["error"], + "@stylistic/js/multiline-ternary": ["error"], + "@stylistic/js/new-parens": ["error"], + "@stylistic/js/newline-per-chained-call": ["error"], + "@stylistic/js/no-confusing-arrow": ["error"], + "@stylistic/js/no-extra-parens": [ + "error", + "functions", + ], + "@stylistic/js/no-extra-semi": ["error"], + "@stylistic/js/no-floating-decimal": ["error"], + "@stylistic/js/no-mixed-operators": ["error"], + "@stylistic/js/no-mixed-spaces-and-tabs": ["error"], + "@stylistic/js/no-multi-spaces": ["error"], + "@stylistic/js/no-multiple-empty-lines": [ + "error", + {max: 2, maxBOF: 0, maxEOF: 0}, + ], + "@stylistic/js/no-tabs": ["error"], + "@stylistic/js/no-trailing-spaces": ["error"], + "@stylistic/js/no-whitespace-before-property": ["error"], + "@stylistic/js/nonblock-statement-body-position": ["error"], + "@stylistic/js/object-curly-newline": [ + "error", + { + ImportDeclaration: {consistent: false, minProperties: 2, multiline: true}, + ExportDeclaration: {consistent: false, minProperties: 2, multiline: true}, + }, + ], + "@stylistic/js/object-curly-spacing": [ + "error", + "never", + ], + "@stylistic/js/object-property-newline": [ + "error", + {allowAllPropertiesOnSameLine: true, allowMultiplePropertiesPerLine: false}, + ], + "@stylistic/js/one-var-declaration-per-line": ["error"], + "@stylistic/js/operator-linebreak": [ + "error", + "after", + ], + "@stylistic/js/padded-blocks": [ + "error", + "never", + ], + "@stylistic/js/padding-line-between-statements": [ + "warn", + {blankLine: "always", next: "return", prev: "*"}, + { + blankLine: "always", + prev: [ + "export", + "const", + "let", + "var", + "function", + ], + next: "*", + }, + { + blankLine: "any", + prev: [ + "singleline-const", + "singleline-let", + "singleline-var", + ], + next: "*", + }, + { + blankLine: "any", + next: [ + "export", + "const", + "let", + "var", + ], + prev: [ + "export", + "const", + "let", + "var", + ], + }, + ], + "@stylistic/js/quote-props": [ + "error", + "consistent-as-needed", + ], + "@stylistic/js/quotes": [ + "warn", + "double", + {avoidEscape: true}, + ], + "@stylistic/js/rest-spread-spacing": ["error"], + "@stylistic/js/semi": ["error"], + "@stylistic/js/semi-spacing": ["error"], + "@stylistic/js/semi-style": ["error"], + "@stylistic/js/space-before-blocks": ["error"], + "@stylistic/js/space-before-function-paren": ["error"], + "@stylistic/js/space-in-parens": ["error"], + "@stylistic/js/space-infix-ops": ["error"], + "@stylistic/js/space-unary-ops": ["error"], + "@stylistic/js/spaced-comment": [ + "error", + "always", + {block: {balanced: true}}, + ], + "@stylistic/js/switch-colon-spacing": ["error"], + "@stylistic/js/template-curly-spacing": ["error"], + "@stylistic/js/template-tag-spacing": ["error"], + "@stylistic/js/wrap-iife": ["error"], + "@stylistic/js/wrap-regex": ["error"], + "@stylistic/js/yield-star-spacing": ["error"], + "@stylistic/plus/indent-binary-ops": ["off"], + "@stylistic/plus/type-generic-spacing": ["error"], + "@stylistic/plus/type-named-tuple-spacing": ["error"], + "import-newlines/enforce": [ + "error", + {items: 1}, + ], + "import/newline-after-import": [ + "error", + {count: 2, exactCount: true, considerComments: true}, + ], + "import/no-unresolved": [ + "error", + {ignore: ["^/imports"], caseSensitive: true, caseSensitiveStrict: false}, + ], + "import/named": ["error"], + "import/namespace": ["error"], + "import/default": ["error"], + "import/export": ["error"], + "import/no-named-as-default": ["warn"], + "import/no-named-as-default-member": ["warn"], + "import/no-duplicates": ["error"], + + "jsdoc/check-access": ["warn"], + "jsdoc/check-alignment": ["warn"], + "jsdoc/check-examples": ["off"], + "jsdoc/check-indentation": ["off"], + "jsdoc/check-line-alignment": ["warn"], + "jsdoc/check-param-names": [ + "warn", + {checkRestProperty: true}, + ], + "jsdoc/check-property-names": ["warn"], + "jsdoc/check-syntax": ["off"], + "jsdoc/check-tag-names": ["warn"], + "jsdoc/check-types": ["warn"], + "jsdoc/check-values": ["warn"], + "jsdoc/empty-tags": ["warn"], + "jsdoc/implements-on-classes": ["warn"], + "jsdoc/informative-docs": ["warn"], + "jsdoc/match-description": ["off"], + "jsdoc/match-name": ["off"], + "jsdoc/multiline-blocks": "warn", + "jsdoc/no-bad-blocks": ["off"], + "jsdoc/no-blank-blocks": "warn", + "jsdoc/no-blank-block-descriptions": ["off"], + "jsdoc/no-defaults": "warn", + "jsdoc/no-missing-syntax": ["off"], + "jsdoc/no-multi-asterisks": "warn", + "jsdoc/no-restricted-syntax": ["off"], + "jsdoc/no-types": ["off"], + "jsdoc/no-undefined-types": ["off"], + "jsdoc/require-asterisk-prefix": ["warn"], + "jsdoc/require-description": [ + "warn", + {checkConstructors: false, checkGetters: false, checkSetters: false}, + ], + "jsdoc/require-description-complete-sentence": ["off"], + "jsdoc/require-example": ["off"], + "jsdoc/require-file-overview": ["off"], + "jsdoc/require-hyphen-before-param-description": [ + "warn", + "never", + ], + "jsdoc/require-jsdoc": [ + "warn", + { + contexts: [ + ":has(VariableDeclarator[init.callee.object.name='Object'][init.callee.property.name='freeze'])[declarations]", + "Program > VariableDeclaration > .declarations > ArrowFunctionExpression", + ], + require: {FunctionDeclaration: true, FunctionExpression: true}, + }, + ], + "jsdoc/require-param": ["warn"], + "jsdoc/require-param-description": ["off"], + "jsdoc/require-param-name": ["warn"], + "jsdoc/require-param-type": ["warn"], + "jsdoc/require-property": ["warn"], + "jsdoc/require-property-description": ["off"], + "jsdoc/require-property-name": ["warn"], + "jsdoc/require-property-type": ["warn"], + "jsdoc/require-returns": ["warn"], + "jsdoc/require-returns-check": ["warn"], + "jsdoc/require-returns-description": ["off"], + "jsdoc/require-returns-type": ["warn"], + "jsdoc/require-throws": ["warn"], + "jsdoc/require-yields": ["warn"], + "jsdoc/require-yields-check": ["warn"], + "jsdoc/sort-tags": ["warn"], + "jsdoc/tag-lines": [ + "warn", + "any", + {startLines: 1}, + ], + "jsdoc/valid-types": ["warn"], + }, + settings: { + jsdoc: { + mode: "typescript", + tagNamePreference: { + returns: "return", + }, + }, + }, + }, +]; + + +export default config; diff --git a/package-lock.json b/package-lock.json index 92e8545..9399638 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,83 +8,116 @@ "name": "eslint-config-yscope", "version": "0.0.32", "peerDependencies": { - "@stylistic/eslint-plugin-js": "^1.6.2", - "@stylistic/eslint-plugin-jsx": "^1.6.2", - "@stylistic/eslint-plugin-plus": "^1.6.2", - "eslint": "^8.57.0", - "eslint-plugin-import": "^2.29.1", + "@stylistic/eslint-plugin-js": "^2.12.1", + "@stylistic/eslint-plugin-jsx": "^2.12.1", + "@stylistic/eslint-plugin-plus": "^2.12.1", + "eslint": "^9.17.0", + "eslint-plugin-import": "^2.31.0", "eslint-plugin-import-newlines": "^1.4.0", - "eslint-plugin-jsdoc": "^48.2.3", - "eslint-plugin-no-autofix": "^1.2.3", - "eslint-plugin-react": "^7.33.2", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-simple-import-sort": "^12.0.0" + "eslint-plugin-jsdoc": "^50.6.1", + "eslint-plugin-no-autofix": "^2.1.0", + "eslint-plugin-react": "^7.37.3", + "eslint-plugin-react-hooks": "^5.1.0", + "eslint-plugin-simple-import-sort": "^12.1.1", + "globals": "^15.14.0" } }, "node_modules/@es-joy/jsdoccomment": { - "version": "0.43.1", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.43.1.tgz", - "integrity": "sha512-I238eDtOolvCuvtxrnqtlBaw0BwdQuYqK7eA6XIonicMdOOOb75mqdIzkGDUbS04+1Di007rgm9snFRNeVrOog==", + "version": "0.49.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.49.0.tgz", + "integrity": "sha512-xjZTSFgECpb9Ohuk5yMX5RhUEbfeQcuOp8IF60e+wyzWEF0M5xeSgqsfLtvPEX8BIyOX9saZqzuGPmZ8oWc+5Q==", + "license": "MIT", "peer": true, "dependencies": { - "@types/eslint": "^8.56.5", - "@types/estree": "^1.0.5", - "@typescript-eslint/types": "^7.2.0", "comment-parser": "1.4.1", - "esquery": "^1.5.0", - "jsdoc-type-pratt-parser": "~4.0.0" + "esquery": "^1.6.0", + "jsdoc-type-pratt-parser": "~4.1.0" }, "engines": { "node": ">=16" } }, - "node_modules/@es-joy/jsdoccomment/node_modules/@typescript-eslint/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.13.0.tgz", - "integrity": "sha512-QWuwm9wcGMAuTsxP+qz6LBBd3Uq8I5Nv8xb0mk54jmNoCyDspnMvVsOxI6IsMmway5d1S9Su2+sCKv1st2l6eA==", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "license": "MIT", "peer": true, + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "license": "Apache-2.0", "peer": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz", - "integrity": "sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "license": "MIT", "peer": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.1.tgz", + "integrity": "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@eslint/object-schema": "^2.1.5", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.1.tgz", + "integrity": "sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", + "license": "MIT", "peer": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", + "espree": "^10.0.1", + "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -92,84 +125,101 @@ "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "license": "MIT", "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/@eslint/js": { + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.17.0.tgz", + "integrity": "sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==", + "license": "MIT", "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, "engines": { - "node": "*" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "node_modules/@eslint/object-schema": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.5.tgz", + "integrity": "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==", + "license": "Apache-2.0", "peer": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "deprecated": "Use @eslint/config-array instead", + "node_modules/@eslint/plugin-kit": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.4.tgz", + "integrity": "sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==", + "license": "Apache-2.0", "peer": true, "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" + "levn": "^0.4.1" }, "engines": { - "node": ">=10.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "license": "Apache-2.0", "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "engines": { + "node": ">=18.18.0" } }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "license": "Apache-2.0", "peer": true, "dependencies": { - "brace-expansion": "^1.1.7" + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" }, "engines": { - "node": "*" + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "license": "Apache-2.0", "peer": true, "engines": { "node": ">=12.22" @@ -179,242 +229,112 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", - "peer": true - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@humanwhocodes/retry": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", + "license": "Apache-2.0", "peer": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, "engines": { - "node": ">= 8" + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "license": "MIT", "peer": true, "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "peer": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, - "engines": { - "node": ">= 8" + "funding": { + "url": "https://opencollective.com/unts" } }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "license": "MIT", + "peer": true + }, "node_modules/@stylistic/eslint-plugin-js": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-1.8.1.tgz", - "integrity": "sha512-c5c2C8Mos5tTQd+NWpqwEu7VT6SSRooAguFPMj1cp2RkTYl1ynKoXo8MWy3k4rkbzoeYHrqC2UlUzsroAN7wtQ==", + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-2.12.1.tgz", + "integrity": "sha512-5ybogtEgWIGCR6dMnaabztbWyVdAPDsf/5XOk6jBonWug875Q9/a6gm9QxnU3rhdyDEnckWKX7dduwYJMOWrVA==", + "license": "MIT", "peer": true, "dependencies": { - "@types/eslint": "^8.56.10", - "acorn": "^8.11.3", - "escape-string-regexp": "^4.0.0", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1" + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "peerDependencies": { "eslint": ">=8.40.0" } }, "node_modules/@stylistic/eslint-plugin-jsx": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-jsx/-/eslint-plugin-jsx-1.8.1.tgz", - "integrity": "sha512-k1Eb6rcjMP+mmjvj+vd9y5KUdWn1OBkkPLHXhsrHt5lCDFZxJEs0aVQzE5lpYrtVZVkpc5esTtss/cPJux0lfA==", + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-jsx/-/eslint-plugin-jsx-2.12.1.tgz", + "integrity": "sha512-VHqOF4bQ2iwUnRfmiP/CB3z3L9zFuV8Qi1q2fyEht7IjAt3IV/Ugm9EeSBPLcZd7ZjfISmWlcT1XbpnWIEFHEA==", + "license": "MIT", "peer": true, "dependencies": { - "@stylistic/eslint-plugin-js": "^1.8.1", - "@types/eslint": "^8.56.10", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", "estraverse": "^5.3.0", "picomatch": "^4.0.2" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "peerDependencies": { "eslint": ">=8.40.0" } }, "node_modules/@stylistic/eslint-plugin-plus": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-plus/-/eslint-plugin-plus-1.8.1.tgz", - "integrity": "sha512-4+40H3lHYTN8OWz+US8CamVkO+2hxNLp9+CAjorI7top/lHqemhpJvKA1LD9Uh+WMY9DYWiWpL2+SZ2wAXY9fQ==", + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-plus/-/eslint-plugin-plus-2.12.1.tgz", + "integrity": "sha512-5eyCVo6h3ahlSjft6GOXvxdYwjh0VDfbk0cfXoqjPSHM4uutxHt6vyjGll6qdsjLeTCPAVl6XiygPCwtcblnwQ==", + "license": "MIT", "peer": true, - "dependencies": { - "@types/eslint": "^8.56.10", - "@typescript-eslint/utils": "^6.21.0" - }, "peerDependencies": { "eslint": "*" } }, - "node_modules/@types/eslint": { - "version": "8.56.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", - "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", - "peer": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "license": "MIT", "peer": true }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT", "peer": true }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "peer": true - }, - "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "peer": true - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", - "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", - "peer": true, - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", - "peer": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", - "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", - "peer": true, - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", - "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", - "peer": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "semver": "^7.5.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", - "peer": true, - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "license": "MIT", "peer": true }, "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "license": "MIT", "peer": true, "bin": { "acorn": "bin/acorn" @@ -427,6 +347,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", "peer": true, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" @@ -436,6 +357,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", @@ -448,19 +370,11 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "peer": true, "dependencies": { "color-convert": "^2.0.1" @@ -476,6 +390,7 @@ "version": "0.0.2", "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "license": "MIT", "peer": true, "engines": { "node": ">=14" @@ -485,16 +400,18 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0", "peer": true }, "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" }, "engines": { "node": ">= 0.4" @@ -507,6 +424,7 @@ "version": "3.1.8", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "license": "MIT", "peer": true, "dependencies": { "call-bind": "^1.0.7", @@ -523,19 +441,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/array.prototype.findlast": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "license": "MIT", "peer": true, "dependencies": { "call-bind": "^1.0.7", @@ -556,6 +466,7 @@ "version": "1.2.5", "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "license": "MIT", "peer": true, "dependencies": { "call-bind": "^1.0.7", @@ -573,15 +484,16 @@ } }, "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -591,15 +503,16 @@ } }, "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -608,22 +521,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.toreversed": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", - "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - } - }, "node_modules/array.prototype.tosorted": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "license": "MIT", "peer": true, "dependencies": { "call-bind": "^1.0.7", @@ -637,19 +539,19 @@ } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "license": "MIT", "peer": true, "dependencies": { "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" }, "engines": { "node": ">= 0.4" @@ -662,6 +564,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", "peer": true, "dependencies": { "possible-typed-array-names": "^1.0.0" @@ -677,40 +580,62 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT", "peer": true }, "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", "peer": true, "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "license": "MIT", "peer": true, "dependencies": { - "fill-range": "^7.1.1" + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "license": "MIT", "peer": true, "dependencies": { - "es-define-property": "^1.0.0", "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", + "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -723,6 +648,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", "peer": true, "engines": { "node": ">=6" @@ -732,6 +658,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "peer": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -748,6 +675,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "peer": true, "dependencies": { "color-name": "~1.1.4" @@ -760,12 +688,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT", "peer": true }, "node_modules/comment-parser": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", + "license": "MIT", "peer": true, "engines": { "node": ">= 12.0.0" @@ -775,12 +705,14 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT", "peer": true }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", "peer": true, "dependencies": { "path-key": "^3.1.0", @@ -792,14 +724,15 @@ } }, "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -809,29 +742,31 @@ } }, "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/inspect-js" } }, "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-data-view": "^1.0.1" }, @@ -843,12 +778,13 @@ } }, "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", "peer": true, "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -863,12 +799,14 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "license": "MIT", "peer": true }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", "peer": true, "dependencies": { "es-define-property": "^1.0.0", @@ -886,6 +824,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", "peer": true, "dependencies": { "define-data-property": "^1.0.1", @@ -899,82 +838,88 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "license": "Apache-2.0", "peer": true, "dependencies": { - "path-type": "^4.0.0" + "esutils": "^2.0.2" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", "peer": true, "dependencies": { - "esutils": "^2.0.2" + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" }, "engines": { - "node": ">=6.0.0" + "node": ">= 0.4" } }, "node_modules/es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "version": "1.23.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.7.tgz", + "integrity": "sha512-OygGC8kIcDhXX+6yAZRGLqwi2CmEXCbLQixeGUgYeR+Qwlppqmo7DIDr8XibtEBZp+fJcoYpoatp5qwLMEdcqQ==", + "license": "MIT", "peer": true, "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.6", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", + "object.assign": "^4.1.7", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-regex-test": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" }, "engines": { "node": ">= 0.4" @@ -984,13 +929,11 @@ } }, "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", "peer": true, - "dependencies": { - "get-intrinsic": "^1.2.4" - }, "engines": { "node": ">= 0.4" } @@ -999,40 +942,52 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", "peer": true, "engines": { "node": ">= 0.4" } }, "node_modules/es-iterator-helpers": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", - "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", + "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", + "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.0.3", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", + "get-intrinsic": "^1.2.6", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.1.2" + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" }, "engines": { "node": ">= 0.4" } }, + "node_modules/es-module-lexer": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", + "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", + "license": "MIT", + "peer": true + }, "node_modules/es-object-atoms": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "license": "MIT", "peer": true, "dependencies": { "es-errors": "^1.3.0" @@ -1045,6 +1000,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "license": "MIT", "peer": true, "dependencies": { "get-intrinsic": "^1.2.4", @@ -1059,20 +1015,22 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "license": "MIT", "peer": true, "dependencies": { "hasown": "^2.0.0" } }, "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "license": "MIT", "peer": true, "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" }, "engines": { "node": ">= 0.4" @@ -1085,6 +1043,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", "peer": true, "engines": { "node": ">=10" @@ -1094,64 +1053,70 @@ } }, "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.17.0.tgz", + "integrity": "sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==", + "license": "MIT", "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.9.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.17.0", + "@eslint/plugin-kit": "^0.2.3", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", + "@humanwhocodes/retry": "^0.4.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "node_modules/eslint-import-resolver-node": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "license": "MIT", "peer": true, "dependencies": { "debug": "^3.2.7", @@ -1163,15 +1128,17 @@ "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", "peer": true, "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-module-utils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", - "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", + "license": "MIT", "peer": true, "dependencies": { "debug": "^3.2.7" @@ -1189,46 +1156,51 @@ "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", "peer": true, "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "license": "MIT", "peer": true, "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", "array.prototype.flat": "^1.3.2", "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", "tsconfig-paths": "^3.15.0" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, "node_modules/eslint-plugin-import-newlines": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/eslint-plugin-import-newlines/-/eslint-plugin-import-newlines-1.4.0.tgz", "integrity": "sha512-+Cz1x2xBLtI9gJbmuYEpvY7F8K75wskBmJ7rk4VRObIJo+jklUJaejFJgtnWeL0dCFWabGEkhausrikXaNbtoQ==", + "license": "MIT", "peer": true, "bin": { "import-linter": "lib/index.js" @@ -1240,72 +1212,34 @@ "eslint": ">=6.0.0" } }, - "node_modules/eslint-plugin-import/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "peer": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "peer": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", "peer": true, - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "ms": "^2.1.1" } }, "node_modules/eslint-plugin-jsdoc": { - "version": "48.2.11", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-48.2.11.tgz", - "integrity": "sha512-mM4RSR1hBPwdtI+boITfDZTxvEYTANSWr3y/D+YR8OshtU3pMgYXC8LrjudhYf0O0g67A7QwlT1gZzhmNy1S4Q==", + "version": "50.6.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.1.tgz", + "integrity": "sha512-UWyaYi6iURdSfdVVqvfOs2vdCVz0J40O/z/HTsv2sFjdjmdlUI/qlKLOTmwbPQ2tAfQnE5F9vqx+B+poF71DBQ==", + "license": "BSD-3-Clause", "peer": true, "dependencies": { - "@es-joy/jsdoccomment": "~0.43.1", + "@es-joy/jsdoccomment": "~0.49.0", "are-docs-informative": "^0.0.2", "comment-parser": "1.4.1", - "debug": "^4.3.4", + "debug": "^4.3.6", "escape-string-regexp": "^4.0.0", - "esquery": "^1.5.0", - "semver": "^7.6.2", - "spdx-expression-parse": "^4.0.0" + "espree": "^10.1.0", + "esquery": "^1.6.0", + "parse-imports": "^2.1.1", + "semver": "^7.6.3", + "spdx-expression-parse": "^4.0.0", + "synckit": "^0.9.1" }, "engines": { "node": ">=18" @@ -1314,104 +1248,87 @@ "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, + "node_modules/eslint-plugin-jsdoc/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/eslint-plugin-no-autofix": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-autofix/-/eslint-plugin-no-autofix-1.2.3.tgz", - "integrity": "sha512-JFSYe82Da2A8Krh+Gfq7+3X2pchTScKgmrlMKIA4HmV6t5xGBF/kgjiFL3YTWRQXQ0NB9eOqpcxh6SuLtQUFjQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-autofix/-/eslint-plugin-no-autofix-2.1.0.tgz", + "integrity": "sha512-JAg9OhE1QkaqlSOWTx/AdOk+1pS/ZZvBCGYa052d/vXB1oKJux0Jyj/VDl7hYjp+qxcLX6EyKXC8jtxmiVDEpA==", + "license": "MIT", "peer": true, "dependencies": { "eslint-rule-composer": "^0.3.0", "find-up": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=18" }, "peerDependencies": { - "eslint": ">= 5.12.1" + "eslint": ">=8" } }, "node_modules/eslint-plugin-react": { - "version": "7.34.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.2.tgz", - "integrity": "sha512-2HCmrU+/JNigDN6tg55cRDKCQWicYAPB38JGSFDQt95jDm8rrvSUo7YPkOIm5l6ts1j1zCvysNcasvfTMQzUOw==", + "version": "7.37.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.3.tgz", + "integrity": "sha512-DomWuTQPFYZwF/7c9W2fkKkStqZmBd3uugfqBYLdkZ3Hii23WzZuOLUskGxB8qkSKqftxEeGL1TB2kMhrce0jA==", + "license": "MIT", "peer": true, "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.2", - "array.prototype.toreversed": "^1.1.2", - "array.prototype.tosorted": "^1.1.3", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.19", + "es-iterator-helpers": "^1.2.1", "estraverse": "^5.3.0", + "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", "object.entries": "^1.1.8", "object.fromentries": "^2.0.8", - "object.hasown": "^1.1.4", - "object.values": "^1.2.0", + "object.values": "^1.2.1", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.5", "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.11" + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", - "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0.tgz", + "integrity": "sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==", + "license": "MIT", "peer": true, "engines": { "node": ">=10" }, "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/eslint-plugin-react/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "peer": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, "node_modules/eslint-plugin-react/node_modules/resolve": { "version": "2.0.0-next.5", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "license": "MIT", "peer": true, "dependencies": { "is-core-module": "^2.13.0", @@ -1425,19 +1342,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/eslint-plugin-simple-import-sort": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-12.1.0.tgz", - "integrity": "sha512-Y2fqAfC11TcG/WP3TrI1Gi3p3nc8XJyEOJYHyEPEGI/UAgNx6akxxlX74p7SbAQdLcgASKhj8M0GKvH3vq/+ig==", + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-12.1.1.tgz", + "integrity": "sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==", + "license": "MIT", "peer": true, "peerDependencies": { "eslint": ">=5.0.0" @@ -1447,82 +1356,65 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", + "license": "MIT", "peer": true, "engines": { "node": ">=4.0.0" } }, "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", + "license": "BSD-2-Clause", "peer": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "license": "Apache-2.0", "peer": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "license": "BSD-2-Clause", "peer": true, "dependencies": { - "acorn": "^8.9.0", + "acorn": "^8.14.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "eslint-visitor-keys": "^4.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "license": "BSD-3-Clause", "peer": true, "dependencies": { "estraverse": "^5.1.0" @@ -1535,6 +1427,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "license": "BSD-2-Clause", "peer": true, "dependencies": { "estraverse": "^5.2.0" @@ -1547,6 +1440,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", "peer": true, "engines": { "node": ">=4.0" @@ -1556,6 +1450,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", "peer": true, "engines": { "node": ">=0.10.0" @@ -1565,85 +1460,41 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT", "peer": true }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "peer": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "peer": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "license": "MIT", "peer": true }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "license": "MIT", "peer": true }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "peer": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "peer": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "license": "MIT", "peer": true, "dependencies": { - "to-regex-range": "^5.0.1" + "flat-cache": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "license": "MIT", "peer": true, "dependencies": { "locate-path": "^6.0.0", @@ -1657,59 +1508,59 @@ } }, "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "license": "MIT", "peer": true, "dependencies": { "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "keyv": "^4.5.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16" } }, "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "license": "ISC", "peer": true }, "node_modules/for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "license": "MIT", "peer": true, "dependencies": { "is-callable": "^1.1.3" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "peer": true - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" }, "engines": { "node": ">= 0.4" @@ -1722,22 +1573,29 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "license": "MIT", "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.6.tgz", + "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==", + "license": "MIT", "peer": true, "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "dunder-proto": "^1.0.0", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -1747,14 +1605,15 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.5", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -1763,31 +1622,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "peer": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "license": "ISC", "peer": true, "dependencies": { "is-glob": "^4.0.3" @@ -1796,38 +1635,14 @@ "node": ">=10.13.0" } }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "version": "15.14.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", + "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", + "license": "MIT", "peer": true, - "dependencies": { - "type-fest": "^0.20.2" - }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -1837,6 +1652,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "license": "MIT", "peer": true, "dependencies": { "define-properties": "^1.2.1", @@ -1849,49 +1665,28 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "peer": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", "peer": true, - "dependencies": { - "get-intrinsic": "^1.1.3" + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "peer": true - }, "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "license": "MIT", "peer": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -1900,6 +1695,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", "peer": true, "engines": { "node": ">=8" @@ -1909,6 +1705,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", "peer": true, "dependencies": { "es-define-property": "^1.0.0" @@ -1918,10 +1715,14 @@ } }, "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "license": "MIT", "peer": true, + "dependencies": { + "dunder-proto": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -1930,9 +1731,10 @@ } }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", "peer": true, "engines": { "node": ">= 0.4" @@ -1945,6 +1747,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", "peer": true, "dependencies": { "has-symbols": "^1.0.3" @@ -1960,6 +1763,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", "peer": true, "dependencies": { "function-bind": "^1.1.2" @@ -1969,9 +1773,10 @@ } }, "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", "peer": true, "engines": { "node": ">= 4" @@ -1981,6 +1786,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "license": "MIT", "peer": true, "dependencies": { "parent-module": "^1.0.0", @@ -1997,50 +1803,37 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "license": "MIT", "peer": true, "engines": { "node": ">=0.8.19" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "peer": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "peer": true - }, "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "license": "MIT", "peer": true, "dependencies": { "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" + "hasown": "^2.0.2", + "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -2053,6 +1846,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "license": "MIT", "peer": true, "dependencies": { "has-tostringtag": "^1.0.0" @@ -2065,25 +1859,30 @@ } }, "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "license": "MIT", "peer": true, "dependencies": { - "has-bigints": "^1.0.1" + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", + "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", + "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -2096,6 +1895,7 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", "peer": true, "engines": { "node": ">= 0.4" @@ -2105,23 +1905,30 @@ } }, "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", "peer": true, "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "license": "MIT", "peer": true, "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", "is-typed-array": "^1.1.13" }, "engines": { @@ -2132,12 +1939,14 @@ } }, "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "license": "MIT", "peer": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -2150,18 +1959,23 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", "peer": true, "engines": { "node": ">=0.10.0" } }, "node_modules/is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2171,6 +1985,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "license": "MIT", "peer": true, "dependencies": { "has-tostringtag": "^1.0.0" @@ -2186,6 +2001,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", "peer": true, "dependencies": { "is-extglob": "^2.1.1" @@ -2198,6 +2014,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "license": "MIT", "peer": true, "engines": { "node": ">= 0.4" @@ -2206,34 +2023,15 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "peer": true, - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "license": "MIT", "peer": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -2242,23 +2040,17 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -2271,6 +2063,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "license": "MIT", "peer": true, "engines": { "node": ">= 0.4" @@ -2280,12 +2073,13 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.7" + "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -2295,12 +2089,14 @@ } }, "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "license": "MIT", "peer": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -2310,12 +2106,15 @@ } }, "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "license": "MIT", "peer": true, "dependencies": { - "has-symbols": "^1.0.2" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -2325,12 +2124,13 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "license": "MIT", "peer": true, "dependencies": { - "which-typed-array": "^1.1.14" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -2343,6 +2143,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "license": "MIT", "peer": true, "engines": { "node": ">= 0.4" @@ -2352,25 +2153,30 @@ } }, "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", + "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", + "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-weakset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", - "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4" + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -2383,37 +2189,46 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT", "peer": true }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC", "peer": true }, "node_modules/iterator.prototype": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", - "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.4.tgz", + "integrity": "sha512-x4WH0BWmrMmg4oHHl+duwubhrvczGlyuGAZu3nvrf0UXOfPu8IhZObFEr7DE/iv01YgVZrsOiRcqw2srkKEDIA==", + "license": "MIT", "peer": true, "dependencies": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "reflect.getprototypeof": "^1.0.8", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT", "peer": true }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", "peer": true, "dependencies": { "argparse": "^2.0.1" @@ -2423,9 +2238,10 @@ } }, "node_modules/jsdoc-type-pratt-parser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", - "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz", + "integrity": "sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==", + "license": "MIT", "peer": true, "engines": { "node": ">=12.0.0" @@ -2435,24 +2251,28 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "license": "MIT", "peer": true }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT", "peer": true }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "license": "MIT", "peer": true }, "node_modules/json5": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "license": "MIT", "peer": true, "dependencies": { "minimist": "^1.2.0" @@ -2465,6 +2285,7 @@ "version": "3.3.5", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "license": "MIT", "peer": true, "dependencies": { "array-includes": "^3.1.6", @@ -2480,6 +2301,7 @@ "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "license": "MIT", "peer": true, "dependencies": { "json-buffer": "3.0.1" @@ -2489,6 +2311,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "license": "MIT", "peer": true, "dependencies": { "prelude-ls": "^1.2.1", @@ -2502,6 +2325,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "license": "MIT", "peer": true, "dependencies": { "p-locate": "^5.0.0" @@ -2517,12 +2341,14 @@ "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "license": "MIT", "peer": true }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", "peer": true, "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" @@ -2531,90 +2357,72 @@ "loose-envify": "cli.js" } }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "peer": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", - "peer": true, - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", "peer": true, "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": ">= 0.4" } }, "node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", "peer": true, "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "*" } }, "node_modules/minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT", "peer": true }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "license": "MIT", "peer": true }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", "peer": true, "engines": { "node": ">=0.10.0" } }, "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "license": "MIT", "peer": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2623,20 +2431,24 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", "peer": true, "engines": { "node": ">= 0.4" } }, "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", "object-keys": "^1.1.1" }, "engines": { @@ -2650,6 +2462,7 @@ "version": "1.1.8", "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "license": "MIT", "peer": true, "dependencies": { "call-bind": "^1.0.7", @@ -2664,6 +2477,7 @@ "version": "2.0.8", "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "license": "MIT", "peer": true, "dependencies": { "call-bind": "^1.0.7", @@ -2682,6 +2496,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "license": "MIT", "peer": true, "dependencies": { "call-bind": "^1.0.7", @@ -2692,30 +2507,15 @@ "node": ">= 0.4" } }, - "node_modules/object.hasown": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", - "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", - "peer": true, - "dependencies": { - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/object.values": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", - "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" }, @@ -2726,19 +2526,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "peer": true, - "dependencies": { - "wrappy": "1" - } - }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "license": "MIT", "peer": true, "dependencies": { "deep-is": "^0.1.3", @@ -2756,6 +2548,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "license": "MIT", "peer": true, "dependencies": { "yocto-queue": "^0.1.0" @@ -2771,6 +2564,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "license": "MIT", "peer": true, "dependencies": { "p-limit": "^3.0.2" @@ -2786,6 +2580,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "license": "MIT", "peer": true, "dependencies": { "callsites": "^3.0.0" @@ -2794,28 +2589,35 @@ "node": ">=6" } }, + "node_modules/parse-imports": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/parse-imports/-/parse-imports-2.2.1.tgz", + "integrity": "sha512-OL/zLggRp8mFhKL0rNORUTR4yBYujK/uU+xZL+/0Rgm2QE4nLO9v8PzEweSJEbMGKmDRjJE4R3IMJlL2di4JeQ==", + "license": "Apache-2.0 AND MIT", + "peer": true, + "dependencies": { + "es-module-lexer": "^1.5.3", + "slashes": "^3.0.12" + }, + "engines": { + "node": ">= 18" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", "peer": true, "engines": { "node": ">=8" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", "peer": true, "engines": { "node": ">=8" @@ -2825,21 +2627,14 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT", "peer": true }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/picomatch": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "license": "MIT", "peer": true, "engines": { "node": ">=12" @@ -2852,6 +2647,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "license": "MIT", "peer": true, "engines": { "node": ">= 0.4" @@ -2861,6 +2657,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "license": "MIT", "peer": true, "engines": { "node": ">= 0.8.0" @@ -2870,6 +2667,7 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", "peer": true, "dependencies": { "loose-envify": "^1.4.0", @@ -2881,50 +2679,34 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", "peer": true, "engines": { "node": ">=6" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true - }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT", "peer": true }, "node_modules/reflect.getprototypeof": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", - "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.9.tgz", + "integrity": "sha512-r0Ay04Snci87djAsI4U+WNRcSw5S4pOH7qFjd/veA5gC7TbqESR3tcj28ia95L/fYUDw11JKP7uqUKUAfVvV5Q==", + "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "es-abstract": "^1.23.1", + "dunder-proto": "^1.0.1", + "es-abstract": "^1.23.6", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "which-builtin-type": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -2934,15 +2716,16 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", + "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.6", + "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" + "set-function-name": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -2952,18 +2735,22 @@ } }, "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "license": "MIT", "peer": true, "dependencies": { - "is-core-module": "^2.13.0", + "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2972,69 +2759,23 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", "peer": true, "engines": { "node": ">=4" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "peer": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "peer": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true, - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, "node_modules/safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", "isarray": "^2.0.5" }, "engines": { @@ -3045,14 +2786,15 @@ } }, "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", - "is-regex": "^1.1.4" + "is-regex": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -3062,21 +2804,20 @@ } }, "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "peer": true, "bin": { "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" } }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", "peer": true, "dependencies": { "define-data-property": "^1.1.4", @@ -3094,6 +2835,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "license": "MIT", "peer": true, "dependencies": { "define-data-property": "^1.1.4", @@ -3109,6 +2851,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", "peer": true, "dependencies": { "shebang-regex": "^3.0.0" @@ -3121,21 +2864,24 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", "peer": true, "engines": { "node": ">=8" } }, "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.7", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -3144,25 +2890,81 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", "peer": true, + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/slashes": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/slashes/-/slashes-3.0.12.tgz", + "integrity": "sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==", + "license": "ISC", + "peer": true + }, "node_modules/spdx-exceptions": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "license": "CC-BY-3.0", "peer": true }, "node_modules/spdx-expression-parse": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", + "license": "MIT", "peer": true, "dependencies": { "spdx-exceptions": "^2.1.0", @@ -3170,29 +2972,32 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.18", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", - "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==", + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", + "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", + "license": "CC0-1.0", "peer": true }, "node_modules/string.prototype.matchall": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", - "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", + "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "regexp.prototype.flags": "^1.5.2", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", "set-function-name": "^2.0.2", - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -3201,16 +3006,31 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "license": "MIT", + "peer": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, "node_modules/string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -3220,15 +3040,20 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -3237,6 +3062,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "license": "MIT", "peer": true, "dependencies": { "call-bind": "^1.0.7", @@ -3250,22 +3076,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "peer": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "license": "MIT", "peer": true, "engines": { "node": ">=4" @@ -3275,6 +3090,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "license": "MIT", "peer": true, "engines": { "node": ">=8" @@ -3287,6 +3103,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -3299,6 +3116,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", "peer": true, "engines": { "node": ">= 0.4" @@ -3307,40 +3125,28 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "peer": true - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/synckit": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz", + "integrity": "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==", + "license": "MIT", "peer": true, "dependencies": { - "is-number": "^7.0.0" + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8.0" - } - }, - "node_modules/ts-api-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", - "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", - "peer": true, - "engines": { - "node": ">=16" + "node": "^14.18.0 || >=16.0.0" }, - "peerDependencies": { - "typescript": ">=4.2.0" + "funding": { + "url": "https://opencollective.com/unts" } }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "license": "MIT", "peer": true, "dependencies": { "@types/json5": "^0.0.29", @@ -3349,10 +3155,18 @@ "strip-bom": "^3.0.0" } }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD", + "peer": true + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "license": "MIT", "peer": true, "dependencies": { "prelude-ls": "^1.2.1" @@ -3361,43 +3175,33 @@ "node": ">= 0.8.0" } }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" + "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -3407,17 +3211,19 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "license": "MIT", "peer": true, "dependencies": { "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" }, "engines": { "node": ">= 0.4" @@ -3427,17 +3233,18 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "license": "MIT", "peer": true, "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-proto": "^1.0.3", "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" }, "engines": { "node": ">= 0.4" @@ -3446,29 +3253,20 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bound": "^1.0.3", "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3478,6 +3276,7 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "license": "BSD-2-Clause", "peer": true, "dependencies": { "punycode": "^2.1.0" @@ -3487,6 +3286,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", "peer": true, "dependencies": { "isexe": "^2.0.0" @@ -3499,39 +3299,45 @@ } }, "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "license": "MIT", "peer": true, "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/which-builtin-type": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", - "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "license": "MIT", "peer": true, "dependencies": { - "function.prototype.name": "^1.1.5", - "has-tostringtag": "^1.0.0", + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.0.2", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", + "is-regex": "^1.2.1", "is-weakref": "^1.0.2", "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -3544,6 +3350,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "license": "MIT", "peer": true, "dependencies": { "is-map": "^2.0.3", @@ -3559,15 +3366,17 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", + "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", + "license": "MIT", "peer": true, "dependencies": { "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "for-each": "^0.3.3", - "gopd": "^1.0.1", + "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" }, "engines": { @@ -3581,21 +3390,17 @@ "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "license": "MIT", "peer": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "peer": true - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "license": "MIT", "peer": true, "engines": { "node": ">=10" diff --git a/package.json b/package.json index c69ac37..1ec6afb 100644 --- a/package.json +++ b/package.json @@ -12,17 +12,18 @@ }, "author": "YScope Inc.", "peerDependencies": { - "@stylistic/eslint-plugin-js": "^1.6.2", - "@stylistic/eslint-plugin-jsx": "^1.6.2", - "@stylistic/eslint-plugin-plus": "^1.6.2", - "eslint": "^8.57.0", - "eslint-plugin-import": "^2.29.1", + "@stylistic/eslint-plugin-js": "^2.12.1", + "@stylistic/eslint-plugin-jsx": "^2.12.1", + "@stylistic/eslint-plugin-plus": "^2.12.1", + "eslint": "^9.17.0", + "eslint-plugin-import": "^2.31.0", "eslint-plugin-import-newlines": "^1.4.0", - "eslint-plugin-jsdoc": "^48.2.3", - "eslint-plugin-no-autofix": "^1.2.3", - "eslint-plugin-react": "^7.33.2", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-simple-import-sort": "^12.0.0" + "eslint-plugin-jsdoc": "^50.6.1", + "eslint-plugin-no-autofix": "^2.1.0", + "eslint-plugin-react": "^7.37.3", + "eslint-plugin-react-hooks": "^5.1.0", + "eslint-plugin-simple-import-sort": "^12.1.1", + "globals": "^15.14.0" }, "eslintConfig": { "extends": [ From dff69baee9629818c290b118958db4e8084c275a Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 01:25:07 -0500 Subject: [PATCH 02/65] add new rules since v9: - no-useless-assignment add back: no-console: off require-await: off -> warn --- common.mjs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/common.mjs b/common.mjs index 3e2506f..719bba2 100644 --- a/common.mjs +++ b/common.mjs @@ -114,6 +114,7 @@ const config = [ "no-class-assign": ["error"], "no-compare-neg-zero": ["error"], "no-cond-assign": ["error"], + "no-console": ["off"], "no-const-assign": ["error"], "no-constant-binary-expression": ["error"], "no-constant-condition": [ @@ -262,6 +263,7 @@ const config = [ {args: "none"}, ], "no-use-before-define": ["error"], + "no-useless-assignment": ["error"], "no-useless-backreference": ["error"], "no-useless-call": ["error"], "no-useless-catch": ["error"], @@ -311,7 +313,7 @@ const config = [ "prefer-template": ["error"], "radix": ["error"], "require-atomic-updates": ["warn"], - "require-await": ["off"], + "require-await": ["warn"], "require-unicode-regexp": ["off"], "require-yield": ["error"], "simple-import-sort/exports": ["warn"], @@ -325,6 +327,8 @@ const config = [ "^react", ], ["^\\w"], + + // FIXME: remove? ["^@"], ["^@mui/icons-material"], ["^/"], @@ -351,7 +355,6 @@ const config = [ "always", ], - // deprecated by `@stylistic` "@stylistic/js/array-bracket-newline": [ "error", "consistent", From 979d00c6da278b2c892e59484b9aab8e69edc6ea Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 01:30:29 -0500 Subject: [PATCH 03/65] @stylistic/js replace deprecated eslint rules with stylistic equivalent: - line-comment-position - multiline-comment-style --- common.mjs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/common.mjs b/common.mjs index 719bba2..3375c01 100644 --- a/common.mjs +++ b/common.mjs @@ -80,9 +80,6 @@ const config = [ "id-length": ["off"], "id-match": ["error"], "init-declarations": ["off"], - - // FIXME: deprecated in ESLint v9.3.0 - "line-comment-position": ["error"], "logical-assignment-operators": ["error"], "max-classes-per-file": ["error"], "max-depth": ["error"], @@ -100,9 +97,6 @@ const config = [ "error", {max: 20}, ], - - // FIXME: deprecated in ESLint v9.3.0 - "multiline-comment-style": ["off"], "new-cap": ["error"], "no-alert": ["error"], "no-array-constructor": ["error"], @@ -424,6 +418,7 @@ const config = [ {afterColon: true}, ], "@stylistic/js/keyword-spacing": ["error"], + "@stylistic/js/line-comment-position": ["error"], "@stylistic/js/linebreak-style": [ "error", "unix", @@ -463,6 +458,7 @@ const config = [ }, ], "@stylistic/js/max-statements-per-line": ["error"], + "@stylistic/js/multiline-comment-style": ["off"], "@stylistic/js/multiline-ternary": ["error"], "@stylistic/js/new-parens": ["error"], "@stylistic/js/newline-per-chained-call": ["error"], @@ -576,6 +572,7 @@ const config = [ "@stylistic/js/wrap-iife": ["error"], "@stylistic/js/wrap-regex": ["error"], "@stylistic/js/yield-star-spacing": ["error"], + "@stylistic/plus/indent-binary-ops": ["off"], "@stylistic/plus/type-generic-spacing": ["error"], "@stylistic/plus/type-named-tuple-spacing": ["error"], From 0397f4238c0ad440eaa3c4a50d7ee69a3750d293 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 01:30:52 -0500 Subject: [PATCH 04/65] Remove `^@` group from `simple-import-sort/imports`. --- common.mjs | 3 --- 1 file changed, 3 deletions(-) diff --git a/common.mjs b/common.mjs index 3375c01..026c045 100644 --- a/common.mjs +++ b/common.mjs @@ -321,9 +321,6 @@ const config = [ "^react", ], ["^\\w"], - - // FIXME: remove? - ["^@"], ["^@mui/icons-material"], ["^/"], ["^[./]"], From 8eca3d88d1ade5f1441a2fe5d03a60c16dd17a38 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 01:37:11 -0500 Subject: [PATCH 05/65] @stylistic/plus add new rule: - curly-newline --- common.mjs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/common.mjs b/common.mjs index 026c045..bde3bb3 100644 --- a/common.mjs +++ b/common.mjs @@ -570,9 +570,14 @@ const config = [ "@stylistic/js/wrap-regex": ["error"], "@stylistic/js/yield-star-spacing": ["error"], + "@stylistic/plus/curly-newline": [ + "error", + "always", + ], "@stylistic/plus/indent-binary-ops": ["off"], "@stylistic/plus/type-generic-spacing": ["error"], "@stylistic/plus/type-named-tuple-spacing": ["error"], + "import-newlines/enforce": [ "error", {items: 1}, From ce6cf8d2607ca85c0ef95d659ab897b7033540fb Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 01:44:04 -0500 Subject: [PATCH 06/65] Remove common.js and related config in package.json; Add eslint.config.mjs for linting sources in this repo. --- common.js | 1526 --------------------------------------------- eslint.config.mjs | 8 + package.json | 5 - 3 files changed, 8 insertions(+), 1531 deletions(-) delete mode 100644 common.js create mode 100644 eslint.config.mjs diff --git a/common.js b/common.js deleted file mode 100644 index 0497245..0000000 --- a/common.js +++ /dev/null @@ -1,1526 +0,0 @@ -/* eslint-disable sort-keys, max-lines, no-magic-numbers */ -module.exports = { - env: { - es6: true, - node: true, - }, - parserOptions: { - ecmaFeatures: { - experimentalObjectRestSpread: true, - }, - ecmaVersion: "latest", - sourceType: "module", - }, - plugins: [ - "no-autofix", - "@stylistic/js", - "@stylistic/plus", - "simple-import-sort", - "import-newlines", - "import", - "jsdoc", - ], - settings: { - jsdoc: { - mode: "typescript", - tagNamePreference: { - returns: "return", - }, - }, - }, - rules: { - "accessor-pairs": [ - "error", - ], - "array-callback-return": [ - "error", - ], - "arrow-body-style": [ - "off", - ], - "block-scoped-var": [ - "error", - ], - "camelcase": [ - "error", - { - properties: "never", - ignoreDestructuring: false, - ignoreImports: false, - ignoreGlobals: false, - }, - ], - "capitalized-comments": [ - "off", - ], - "class-methods-use-this": [ - "error", - ], - "complexity": [ - "error", - ], - "consistent-return": [ - "error", - ], - "consistent-this": [ - "error", - ], - "constructor-super": [ - "error", - ], - "curly": [ - "error", - "all", - ], - "default-case": [ - "error", - ], - "default-case-last": [ - "error", - ], - "default-param-last": [ - "error", - ], - "dot-notation": [ - "error", - ], - "eqeqeq": [ - "error", - ], - "for-direction": [ - "error", - ], - "func-name-matching": [ - "error", - ], - "func-names": [ - "error", - "as-needed", - ], - "func-style": [ - "warn", - "expression", - ], - "getter-return": [ - "error", - ], - "grouped-accessor-pairs": [ - "error", - ], - "guard-for-in": [ - "error", - ], - "id-denylist": [ - "off", - ], - "id-length": [ - "off", - ], - "id-match": [ - "error", - ], - "init-declarations": [ - "off", - ], - "line-comment-position": [ - "error", - ], - "logical-assignment-operators": [ - "error", - ], - "max-classes-per-file": [ - "error", - ], - "max-depth": [ - "error", - ], - "max-lines": [ - "error", - ], - "max-lines-per-function": [ - "error", - { - max: 60, - skipBlankLines: true, - skipComments: true, - }, - ], - "max-nested-callbacks": [ - "error", - ], - "max-params": [ - "error", - { - max: 4, - }, - ], - "max-statements": [ - "error", - { - max: 20, - }, - ], - "multiline-comment-style": [ - "off", - ], - "new-cap": [ - "error", - ], - "no-alert": [ - "error", - ], - "no-array-constructor": [ - "error", - ], - "no-async-promise-executor": [ - "error", - ], - "no-await-in-loop": [ - "off", - ], - "no-bitwise": [ - "off", - ], - "no-caller": [ - "error", - ], - "no-case-declarations": [ - "error", - ], - "no-class-assign": [ - "error", - ], - "no-compare-neg-zero": [ - "error", - ], - "no-cond-assign": [ - "error", - ], - "no-const-assign": [ - "error", - ], - "no-constant-binary-expression": [ - "error", - ], - "no-constant-condition": [ - "error", - { - checkLoops: false, - }, - ], - "no-constructor-return": [ - "error", - ], - "no-continue": [ - "off", - ], - "no-control-regex": [ - "error", - ], - "no-debugger": [ - "error", - ], - "no-delete-var": [ - "error", - ], - "no-div-regex": [ - "error", - ], - "no-dupe-args": [ - "error", - ], - "no-dupe-class-members": [ - "error", - ], - "no-dupe-else-if": [ - "error", - ], - "no-dupe-keys": [ - "error", - ], - "no-duplicate-case": [ - "error", - ], - "no-duplicate-imports": [ - "error", - ], - "no-else-return": [ - "error", - ], - "no-empty": [ - "error", - ], - "no-empty-character-class": [ - "error", - ], - "no-empty-function": [ - "error", - { - allow: ["arrowFunctions"], - }, - ], - "no-empty-pattern": [ - "error", - ], - "no-empty-static-block": [ - "error", - ], - "no-eq-null": [ - "error", - ], - "no-eval": [ - "error", - ], - "no-ex-assign": [ - "error", - ], - "no-extend-native": [ - "error", - ], - "no-extra-bind": [ - "error", - ], - "no-extra-boolean-cast": [ - "error", - ], - "no-extra-label": [ - "error", - ], - "no-fallthrough": [ - "error", - ], - "no-func-assign": [ - "error", - ], - "no-global-assign": [ - "error", - ], - "no-implicit-coercion": [ - "error", - ], - "no-implicit-globals": [ - "error", - ], - "no-implied-eval": [ - "error", - ], - "no-import-assign": [ - "error", - ], - "no-inline-comments": [ - "error", - ], - "no-inner-declarations": [ - "error", - ], - "no-invalid-regexp": [ - "error", - ], - "no-invalid-this": [ - "off", - ], - "no-irregular-whitespace": [ - "error", - ], - "no-iterator": [ - "error", - ], - "no-label-var": [ - "error", - ], - "no-labels": [ - "error", - ], - "no-lone-blocks": [ - "error", - ], - "no-lonely-if": [ - "error", - ], - "no-loop-func": [ - "error", - ], - "no-loss-of-precision": [ - "error", - ], - "no-magic-numbers": [ - "error", - { - detectObjects: false, - enforceConst: true, - ignore: [ - -1, - 0, - 1, - 2, - 3, - 10, - 100, - ], - ignoreArrayIndexes: true, - ignoreClassFieldInitialValues: true, - ignoreDefaultValues: true, - }, - ], - "no-misleading-character-class": [ - "error", - ], - "no-multi-assign": [ - "error", - ], - "no-multi-str": [ - "error", - ], - "no-negated-condition": [ - "off", - ], - "no-nested-ternary": [ - "error", - ], - "no-new": [ - "error", - ], - "no-new-func": [ - "error", - ], - "no-new-native-nonconstructor": [ - "error", - ], - "no-new-symbol": [ - "error", - ], - "no-new-wrappers": [ - "error", - ], - "no-nonoctal-decimal-escape": [ - "error", - ], - "no-obj-calls": [ - "error", - ], - "no-object-constructor": [ - "error", - ], - "no-octal": [ - "error", - ], - "no-octal-escape": [ - "error", - ], - "no-param-reassign": [ - "off", - ], - "no-plusplus": [ - "off", - ], - "no-promise-executor-return": [ - "error", - ], - "no-proto": [ - "error", - ], - "no-prototype-builtins": [ - "error", - ], - "no-redeclare": [ - "error", - ], - "no-regex-spaces": [ - "error", - ], - "no-restricted-exports": [ - "error", - ], - "no-restricted-globals": [ - "error", - ], - "no-restricted-imports": [ - "error", - ], - "no-restricted-properties": [ - "error", - ], - "no-restricted-syntax": [ - "error", - { - message: "Direct exporting of declarations is not allowed. " + - "Use export list or default exports instead.", - selector: "ExportNamedDeclaration[declaration!=null]", - }, - ], - "no-return-assign": [ - "error", - ], - "no-script-url": [ - "error", - ], - "no-self-assign": [ - "error", - ], - "no-self-compare": [ - "error", - ], - "no-sequences": [ - "error", - ], - "no-setter-return": [ - "error", - ], - "no-shadow": [ - "error", - ], - "no-shadow-restricted-names": [ - "error", - ], - "no-sparse-arrays": [ - "error", - ], - "no-template-curly-in-string": [ - "error", - ], - "no-ternary": [ - "off", - ], - "no-this-before-super": [ - "error", - ], - "no-throw-literal": [ - "error", - ], - "no-undef": [ - "error", - ], - "no-undef-init": [ - "error", - ], - "no-undefined": [ - "error", - ], - "no-underscore-dangle": [ - "error", - { - allow: [ - "_id", - "_malloc", - ], - }, - ], - "no-unexpected-multiline": [ - "error", - ], - "no-unmodified-loop-condition": [ - "error", - ], - "no-unneeded-ternary": [ - "error", - ], - "no-unreachable": [ - "error", - ], - "no-unreachable-loop": [ - "error", - ], - "no-unsafe-finally": [ - "error", - ], - "no-unsafe-negation": [ - "error", - ], - "no-unsafe-optional-chaining": [ - "error", - ], - "no-unused-expressions": [ - "error", - ], - "no-unused-labels": [ - "error", - ], - "no-unused-private-class-members": [ - "error", - ], - "no-unused-vars": [ - "warn", - { - args: "none", - }, - ], - "no-use-before-define": [ - "error", - ], - "no-useless-backreference": [ - "error", - ], - "no-useless-call": [ - "error", - ], - "no-useless-catch": [ - "error", - ], - "no-useless-computed-key": [ - "error", - ], - "no-useless-concat": [ - "error", - ], - "no-useless-constructor": [ - "error", - ], - "no-useless-escape": [ - "error", - ], - "no-useless-rename": [ - "error", - ], - "no-useless-return": [ - "error", - ], - "no-var": [ - "error", - ], - "no-void": [ - "error", - ], - "no-warning-comments": [ - "warn", - { - location: "start", - terms: [ - "todo", - "fixme", - ], - }, - ], - "no-with": [ - "error", - ], - "object-shorthand": [ - "error", - "consistent", - ], - "one-var": [ - "error", - { - var: "never", - let: "never", - const: "never", - }, - ], - "operator-assignment": [ - "error", - ], - "prefer-arrow-callback": [ - "error", - ], - "prefer-const": [ - "error", - { - destructuring: "all", - ignoreReadBeforeAssign: false, - }, - ], - "prefer-destructuring": [ - "error", - ], - "prefer-exponentiation-operator": [ - "error", - ], - "prefer-named-capture-group": [ - "off", - ], - "prefer-numeric-literals": [ - "error", - ], - "prefer-object-has-own": [ - "error", - ], - "prefer-object-spread": [ - "error", - ], - "prefer-promise-reject-errors": [ - "error", - ], - "prefer-regex-literals": [ - "error", - ], - "prefer-rest-params": [ - "error", - ], - "prefer-spread": [ - "error", - ], - "prefer-template": [ - "error", - ], - "radix": [ - "error", - ], - "require-atomic-updates": [ - "warn", - ], - "require-await": [ - "off", - ], - "require-unicode-regexp": [ - "off", - ], - "require-yield": [ - "error", - ], - "simple-import-sort/exports": [ - "warn", - ], - "simple-import-sort/imports": [ - "warn", - { - groups: [ - [ - "^meteor", - "^prop-types", - "^react", - ], - [ - "^\\w", - ], - [ - "^@", - ], - [ - "^@mui/icons-material", - ], - [ - "^/", - ], - [ - "^[./]", - ], - [ - "^\\\\u0000", - ], - ], - }, - ], - "sort-imports": [ - "off", - ], - "sort-keys": [ - "warn", - "asc", - { - allowLineSeparatedGroups: true, - caseSensitive: true, - minKeys: 5, - natural: true, - }, - ], - "sort-vars": [ - "error", - ], - "strict": [ - "error", - ], - "symbol-description": [ - "error", - ], - "unicode-bom": [ - "error", - ], - "use-isnan": [ - "error", - ], - "valid-typeof": [ - "error", - ], - "vars-on-top": [ - "error", - ], - "yoda": [ - "error", - "always", - ], - - // deprecated by `@stylistic` - "array-bracket-newline": [ - "off", - ], - "array-bracket-spacing": [ - "off", - ], - "array-element-newline": [ - "off", - ], - "arrow-parens": [ - "off", - "always", - ], - "arrow-spacing": [ - "off", - ], - "block-spacing": [ - "off", - "never", - ], - "brace-style": [ - "off", - ], - "comma-dangle": [ - "off", - ], - "comma-spacing": [ - "off", - ], - "comma-style": [ - "off", - ], - "computed-property-spacing": [ - "off", - ], - "dot-location": [ - "off", - ], - "eol-last": [ - "off", - ], - "func-call-spacing": [ - "off", - ], - "function-call-argument-newline": [ - "off", - ], - "function-paren-newline": [ - "off", - ], - "generator-star-spacing": [ - "off", - ], - "implicit-arrow-linebreak": [ - "off", - ], - "indent": [ - "off", - ], - "jsx-quotes": [ - "off", - ], - "key-spacing": [ - "off", - ], - "keyword-spacing": [ - "off", - ], - "linebreak-style": [ - "off", - ], - "lines-around-comment": [ - "off", - ], - "lines-between-class-members": [ - "off", - ], - "max-len": [ - "off", - ], - "max-statements-per-line": [ - "off", - ], - "multiline-ternary": [ - "off", - ], - "new-parens": [ - "off", - ], - "newline-per-chained-call": [ - "off", - ], - "no-confusing-arrow": [ - "off", - ], - "no-extra-parens": [ - "off", - ], - "no-extra-semi": [ - "off", - ], - "no-floating-decimal": [ - "off", - ], - "no-mixed-operators": [ - "off", - ], - "no-mixed-spaces-and-tabs": [ - "off", - ], - "no-multi-spaces": [ - "off", - ], - "no-multiple-empty-lines": [ - "off", - ], - "no-tabs": [ - "off", - ], - "no-trailing-spaces": [ - "off", - ], - "no-whitespace-before-property": [ - "off", - ], - "nonblock-statement-body-position": [ - "off", - ], - "object-curly-newline": [ - "off", - ], - "object-curly-spacing": [ - "off", - ], - "object-property-newline": [ - "off", - ], - "one-var-declaration-per-line": [ - "off", - ], - "operator-linebreak": [ - "off", - ], - "padded-blocks": [ - "off", - ], - "padding-line-between-statements": [ - "off", - ], - "quote-props": [ - "off", - ], - "quotes": [ - "off", - ], - "rest-spread-spacing": [ - "off", - ], - "semi": [ - "off", - ], - "semi-spacing": [ - "off", - ], - "semi-style": [ - "off", - ], - "space-before-blocks": [ - "off", - ], - "space-before-function-paren": [ - "off", - ], - "space-in-parens": [ - "off", - ], - "space-infix-ops": [ - "off", - ], - "space-unary-ops": [ - "off", - ], - "spaced-comment": [ - "off", - ], - "switch-colon-spacing": [ - "off", - ], - "template-curly-spacing": [ - "off", - ], - "template-tag-spacing": [ - "off", - ], - "wrap-iife": [ - "off", - ], - "wrap-regex": [ - "off", - ], - "yield-star-spacing": [ - "off", - ], - - "@stylistic/js/array-bracket-newline": [ - "error", - "consistent", - ], - "@stylistic/js/array-bracket-spacing": [ - "error", - "never", - ], - "@stylistic/js/array-element-newline": [ - "error", - { - ArrayExpression: "always", - ArrayPattern: { - minItems: 3, - }, - }, - ], - "@stylistic/js/arrow-parens": [ - "error", - ], - "@stylistic/js/arrow-spacing": [ - "error", - ], - "@stylistic/js/block-spacing": [ - "error", - ], - "@stylistic/js/brace-style": [ - "error", - "1tbs", - { - allowSingleLine: true, - }, - ], - "@stylistic/js/comma-dangle": [ - "warn", - { - arrays: "always-multiline", - exports: "always-multiline", - functions: "only-multiline", - imports: "always-multiline", - objects: "always-multiline", - }, - ], - "@stylistic/js/comma-spacing": [ - "error", - ], - "@stylistic/js/comma-style": [ - "error", - ], - "@stylistic/js/computed-property-spacing": [ - "error", - ], - "@stylistic/js/dot-location": [ - "error", - "property", - ], - "@stylistic/js/eol-last": [ - "error", - "always", - ], - "@stylistic/js/func-call-spacing": [ - // The rule has been renamed to "@stylistic/js/function-call-spacing" - "off", - ], - "@stylistic/js/function-call-argument-newline": [ - "error", - "consistent", - ], - "@stylistic/js/function-call-spacing": [ - "error", - ], - "@stylistic/js/function-paren-newline": [ - "error", - "multiline-arguments", - ], - "@stylistic/js/generator-star-spacing": [ - "error", - ], - "@stylistic/js/implicit-arrow-linebreak": [ - "error", - ], - "@stylistic/js/indent": [ - "error", - 4, - { - SwitchCase: 1, - flatTernaryExpressions: false, - offsetTernaryExpressions: false, - ignoreComments: false, - }, - ], - "@stylistic/js/jsx-quotes": [ - "error", - ], - "@stylistic/js/key-spacing": [ - "error", - { - afterColon: true, - }, - ], - "@stylistic/js/keyword-spacing": [ - "error", - ], - "@stylistic/js/linebreak-style": [ - "error", - "unix", - ], - "@stylistic/js/lines-around-comment": [ - "error", - { - ignorePattern: "c8|Enum", - beforeBlockComment: true, - afterBlockComment: false, - beforeLineComment: true, - afterLineComment: false, - afterHashbangComment: true, - allowBlockStart: true, - allowBlockEnd: true, - allowClassStart: true, - allowClassEnd: true, - allowObjectStart: true, - allowObjectEnd: true, - allowArrayStart: true, - allowArrayEnd: true, - }, - ], - "@stylistic/js/lines-between-class-members": [ - "error", - ], - "@stylistic/js/max-len": [ - "warn", - { - code: 100, - tabWidth: 4, - comments: 100, - ignoreComments: false, - ignoreTrailingComments: false, - ignoreUrls: true, - ignoreStrings: false, - ignoreTemplateLiterals: false, - ignoreRegExpLiterals: true, - }, - ], - "@stylistic/js/max-statements-per-line": [ - "error", - ], - "@stylistic/js/multiline-ternary": [ - "error", - ], - "@stylistic/js/new-parens": [ - "error", - ], - "@stylistic/js/newline-per-chained-call": [ - "error", - ], - "@stylistic/js/no-confusing-arrow": [ - "error", - ], - "@stylistic/js/no-extra-parens": [ - "error", - "functions", - ], - "@stylistic/js/no-extra-semi": [ - "error", - ], - "@stylistic/js/no-floating-decimal": [ - "error", - ], - "@stylistic/js/no-mixed-operators": [ - "error", - ], - "@stylistic/js/no-mixed-spaces-and-tabs": [ - "error", - ], - "@stylistic/js/no-multi-spaces": [ - "error", - ], - "@stylistic/js/no-multiple-empty-lines": [ - "error", - { - max: 2, - maxBOF: 0, - maxEOF: 0, - }, - ], - "@stylistic/js/no-tabs": [ - "error", - ], - "@stylistic/js/no-trailing-spaces": [ - "error", - ], - "@stylistic/js/no-whitespace-before-property": [ - "error", - ], - "@stylistic/js/nonblock-statement-body-position": [ - "error", - ], - "@stylistic/js/object-curly-newline": [ - "error", - { - ImportDeclaration: { - consistent: false, - minProperties: 2, - multiline: true, - }, - ExportDeclaration: { - consistent: false, - minProperties: 2, - multiline: true, - }, - }, - ], - "@stylistic/js/object-curly-spacing": [ - "error", - "never", - ], - "@stylistic/js/object-property-newline": [ - "error", - { - allowAllPropertiesOnSameLine: true, - allowMultiplePropertiesPerLine: false, - }, - ], - "@stylistic/js/one-var-declaration-per-line": [ - "error", - ], - "@stylistic/js/operator-linebreak": [ - "error", - "after", - ], - "@stylistic/js/padded-blocks": [ - "error", - "never", - ], - "@stylistic/js/padding-line-between-statements": [ - "warn", - { - blankLine: "always", - next: "return", - prev: "*", - }, - { - blankLine: "always", - prev: [ - "export", - "const", - "let", - "var", - "function", - ], - next: "*", - }, - { - blankLine: "any", - prev: [ - "singleline-const", - "singleline-let", - "singleline-var", - ], - next: "*", - }, - { - blankLine: "any", - next: [ - "export", - "const", - "let", - "var", - ], - prev: [ - "export", - "const", - "let", - "var", - ], - }, - ], - "@stylistic/js/quote-props": [ - "error", - "consistent-as-needed", - ], - "@stylistic/js/quotes": [ - "warn", - "double", - { - avoidEscape: true, - }, - ], - "@stylistic/js/rest-spread-spacing": [ - "error", - ], - "@stylistic/js/semi": [ - "error", - ], - "@stylistic/js/semi-spacing": [ - "error", - ], - "@stylistic/js/semi-style": [ - "error", - ], - "@stylistic/js/space-before-blocks": [ - "error", - ], - "@stylistic/js/space-before-function-paren": [ - "error", - ], - "@stylistic/js/space-in-parens": [ - "error", - ], - "@stylistic/js/space-infix-ops": [ - "error", - ], - "@stylistic/js/space-unary-ops": [ - "error", - ], - "@stylistic/js/spaced-comment": [ - "error", - "always", - { - block: { - balanced: true, - }, - }, - ], - "@stylistic/js/switch-colon-spacing": [ - "error", - ], - "@stylistic/js/template-curly-spacing": [ - "error", - ], - "@stylistic/js/template-tag-spacing": [ - "error", - ], - "@stylistic/js/wrap-iife": [ - "error", - ], - "@stylistic/js/wrap-regex": [ - "error", - ], - "@stylistic/js/yield-star-spacing": [ - "error", - ], - - "@stylistic/plus/indent-binary-ops": [ - "off", - ], - "@stylistic/plus/type-generic-spacing": [ - "error", - ], - "@stylistic/plus/type-named-tuple-spacing": [ - "error", - ], - - "import-newlines/enforce": [ - "error", - { - items: 1, - }, - ], - "import/newline-after-import": [ - "error", - { - count: 2, - exactCount: true, - considerComments: true, - }, - ], - "import/no-unresolved": [ - "error", - { - ignore: [ - "^/imports", - ], - caseSensitive: true, - caseSensitiveStrict: false, - }, - ], - "import/named": [ - "error", - ], - "import/namespace": [ - "error", - ], - "import/default": [ - "error", - ], - "import/export": [ - "error", - ], - "import/no-named-as-default": [ - "warn", - ], - "import/no-named-as-default-member": [ - "warn", - ], - "import/no-duplicates": [ - "error", - ], - - // deprecated by `eslint-plugin-jsdoc` - "require-jsdoc": [ - "off", - ], - "valid-jsdoc": [ - "off", - ], - - "jsdoc/check-access": [ - "warn", - ], - "jsdoc/check-alignment": [ - "warn", - ], - "jsdoc/check-examples": [ - "off", - ], - "jsdoc/check-indentation": [ - "off", - ], - "jsdoc/check-line-alignment": [ - "warn", - ], - "jsdoc/check-param-names": [ - "warn", - { - checkRestProperty: true, - }, - ], - "jsdoc/check-property-names": [ - "warn", - ], - "jsdoc/check-syntax": [ - "off", - ], - "jsdoc/check-tag-names": [ - "warn", - ], - "jsdoc/check-types": [ - "warn", - ], - "jsdoc/check-values": [ - "warn", - ], - "jsdoc/empty-tags": [ - "warn", - ], - "jsdoc/implements-on-classes": [ - "warn", - ], - "jsdoc/informative-docs": [ - "warn", - ], - "jsdoc/match-description": [ - "off", - ], - "jsdoc/match-name": [ - "off", - ], - "jsdoc/multiline-blocks": "warn", - "jsdoc/no-bad-blocks": [ - "off", - ], - "jsdoc/no-blank-blocks": "warn", - "jsdoc/no-blank-block-descriptions": [ - "off", - ], - "jsdoc/no-defaults": "warn", - "jsdoc/no-missing-syntax": [ - "off", - ], - "jsdoc/no-multi-asterisks": "warn", - "jsdoc/no-restricted-syntax": [ - "off", - ], - "jsdoc/no-types": [ - "off", - ], - "jsdoc/no-undefined-types": [ - "off", - ], - "jsdoc/require-asterisk-prefix": [ - "warn", - ], - "jsdoc/require-description": [ - "warn", - { - checkConstructors: false, - checkGetters: false, - checkSetters: false, - }, - ], - "jsdoc/require-description-complete-sentence": [ - "off", - ], - "jsdoc/require-example": [ - "off", - ], - "jsdoc/require-file-overview": [ - "off", - ], - "jsdoc/require-hyphen-before-param-description": [ - "warn", - "never", - ], - "jsdoc/require-jsdoc": [ - "warn", - { - contexts: [ - ":has(" + - "VariableDeclarator[init.callee.object.name='Object']" + - "[init.callee.property.name='freeze']" + - ")[declarations]", - "Program > VariableDeclaration > .declarations > ArrowFunctionExpression", - ], - require: { - FunctionDeclaration: true, - FunctionExpression: true, - }, - }, - ], - "jsdoc/require-param": [ - "warn", - ], - "jsdoc/require-param-description": [ - "off", - ], - "jsdoc/require-param-name": [ - "warn", - ], - "jsdoc/require-param-type": [ - "warn", - ], - "jsdoc/require-property": [ - "warn", - ], - "jsdoc/require-property-description": [ - "off", - ], - "jsdoc/require-property-name": [ - "warn", - ], - "jsdoc/require-property-type": [ - "warn", - ], - "jsdoc/require-returns": [ - "warn", - ], - "jsdoc/require-returns-check": [ - "warn", - ], - "jsdoc/require-returns-description": [ - "off", - ], - "jsdoc/require-returns-type": [ - "warn", - ], - "jsdoc/require-throws": [ - "warn", - ], - "jsdoc/require-yields": [ - "warn", - ], - "jsdoc/require-yields-check": [ - "warn", - ], - "jsdoc/sort-tags": [ - "warn", - ], - "jsdoc/tag-lines": [ - "warn", - "any", - { - startLines: 1, - }, - ], - "jsdoc/valid-types": [ - "warn", - ], - }, -}; -/* eslint-disable sort-keys, max-lines, no-magic-numbers */ diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..4400502 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,8 @@ +import common from "./common.mjs"; + + +const config = [ + ...common, +]; + +export default config; diff --git a/package.json b/package.json index 1ec6afb..4a20e3c 100644 --- a/package.json +++ b/package.json @@ -24,10 +24,5 @@ "eslint-plugin-react-hooks": "^5.1.0", "eslint-plugin-simple-import-sort": "^12.1.1", "globals": "^15.14.0" - }, - "eslintConfig": { - "extends": [ - "./common" - ] } } From 490fc803303a2e6eef27924862851f759daa522b Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 01:52:35 -0500 Subject: [PATCH 07/65] Migrate jest.js. --- jest.js => jest.mjs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) rename jest.js => jest.mjs (55%) diff --git a/jest.js b/jest.mjs similarity index 55% rename from jest.js rename to jest.mjs index e81dce5..da52414 100644 --- a/jest.js +++ b/jest.mjs @@ -1,9 +1,16 @@ -module.exports = { - env: { - jest: true, +import globals from "globals"; + + +const config = [{ + languageOptions: { + globals: { + ...globals.jest, + }, }, + rules: { "no-magic-numbers": "off", + "jsdoc/check-tag-names": [ "warn", { @@ -11,4 +18,7 @@ module.exports = { }, ], }, -}; +}]; + + +export default config; From e0fac0e0c4be2ea685272d541adb47c45cc76381 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 01:57:05 -0500 Subject: [PATCH 08/65] Ensure two blank lines before export. --- eslint.config.mjs | 1 + 1 file changed, 1 insertion(+) diff --git a/eslint.config.mjs b/eslint.config.mjs index 4400502..1e965e0 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -5,4 +5,5 @@ const config = [ ...common, ]; + export default config; From 7c03a712c5c5ae3579bb01fd040344154bda47a3 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 02:30:23 -0500 Subject: [PATCH 09/65] Avoid exposing `common` config. --- common.mjs => _common.mjs | 5 ++--- eslint.config.mjs | 4 ++-- node.mjs | 18 ++++++++++++++++++ 3 files changed, 22 insertions(+), 5 deletions(-) rename common.mjs => _common.mjs (99%) create mode 100644 node.mjs diff --git a/common.mjs b/_common.mjs similarity index 99% rename from common.mjs rename to _common.mjs index bde3bb3..a37b2ce 100644 --- a/common.mjs +++ b/_common.mjs @@ -1,5 +1,7 @@ /* eslint-disable sort-keys, max-lines, no-magic-numbers */ +import StylisticJsPlugin from "@stylistic/eslint-plugin-js"; +import StylisticPlusPlugin from "@stylistic/eslint-plugin-plus"; import ImportPlugin from "eslint-plugin-import"; import ImportNewlinesPlugin from "eslint-plugin-import-newlines"; import JsdocPlugin from "eslint-plugin-jsdoc"; @@ -7,9 +9,6 @@ import NoAutofixPlugin from "eslint-plugin-no-autofix"; import SimpleImportSortPlugin from "eslint-plugin-simple-import-sort"; import globals from "globals"; -import StylisticJsPlugin from "@stylistic/eslint-plugin-js"; -import StylisticPlusPlugin from "@stylistic/eslint-plugin-plus"; - const config = [ { diff --git a/eslint.config.mjs b/eslint.config.mjs index 1e965e0..6964572 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,8 +1,8 @@ -import common from "./common.mjs"; +import NodeConfig from "./node.mjs"; const config = [ - ...common, + ...NodeConfig, ]; diff --git a/node.mjs b/node.mjs new file mode 100644 index 0000000..0e4d59e --- /dev/null +++ b/node.mjs @@ -0,0 +1,18 @@ +import globals from "globals"; + +import CommonConfig from "./_common.mjs"; + + +const config = [ + ...CommonConfig, + { + languageOptions: { + globals: { + ...globals.node, + }, + }, + }, +]; + + +export default config; From d877f74c302d72a768e5e45485b1dfd6bb26e7fa Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 02:31:17 -0500 Subject: [PATCH 10/65] Remove redundant line. --- jest.mjs | 1 - 1 file changed, 1 deletion(-) diff --git a/jest.mjs b/jest.mjs index da52414..fc90511 100644 --- a/jest.mjs +++ b/jest.mjs @@ -7,7 +7,6 @@ const config = [{ ...globals.jest, }, }, - rules: { "no-magic-numbers": "off", From ac0fe90ce82870d64bb1aa77d86d331cda4dfd86 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 02:33:38 -0500 Subject: [PATCH 11/65] Remove `node` globals from common config. --- _common.mjs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/_common.mjs b/_common.mjs index a37b2ce..f1aadfe 100644 --- a/_common.mjs +++ b/_common.mjs @@ -7,15 +7,11 @@ import ImportNewlinesPlugin from "eslint-plugin-import-newlines"; import JsdocPlugin from "eslint-plugin-jsdoc"; import NoAutofixPlugin from "eslint-plugin-no-autofix"; import SimpleImportSortPlugin from "eslint-plugin-simple-import-sort"; -import globals from "globals"; const config = [ { languageOptions: { - globals: { - ...globals.node, - }, ecmaVersion: "latest", sourceType: "module", parserOptions: { From b8dcceec23e7e3f7ab4cf6fa063e9d8121d24e2f Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 02:51:43 -0500 Subject: [PATCH 12/65] Change import sorting rules. --- _common.mjs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/_common.mjs b/_common.mjs index f1aadfe..8ce5a9f 100644 --- a/_common.mjs +++ b/_common.mjs @@ -310,16 +310,18 @@ const config = [ "warn", { groups: [ + ["^\\u0000"], + ["^node:"], [ "^meteor", "^prop-types", "^react", ], - ["^\\w"], + ["^@?\\w"], ["^@mui/icons-material"], ["^/"], - ["^[./]"], - ["^\\\\u0000"], + ["^"], + ["^\\."], ], }, ], From b9bdc273b9373740685856c70077d6d51f1f5408 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 03:00:56 -0500 Subject: [PATCH 13/65] Migrate `react`; @stylistic/eslint-plugin-jsx add new rule: - jsx-function-call-newline --- react.mjs | 207 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 207 insertions(+) create mode 100644 react.mjs diff --git a/react.mjs b/react.mjs new file mode 100644 index 0000000..e9af1c3 --- /dev/null +++ b/react.mjs @@ -0,0 +1,207 @@ +import StylisticJsxPlugin from "@stylistic/eslint-plugin-jsx"; +import ReactPlugin from "eslint-plugin-react"; +import ReactHooksPlugin from "eslint-plugin-react-hooks"; +import globals from "globals"; + +import CommonConfig from "./_common.mjs"; + + +const config = [ + ...CommonConfig, + { + languageOptions: { + globals: { + ...globals.browser, + process: "readonly", + }, + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + }, + }, + plugins: { + "@stylistic/jsx": StylisticJsxPlugin, + "react-hooks": ReactHooksPlugin, + "react": ReactPlugin, + }, + rules: { + "@stylistic/jsx/jsx-child-element-spacing": ["error"], + "@stylistic/jsx/jsx-closing-bracket-location": [ + "error", + { + nonEmpty: "tag-aligned", + selfClosing: "after-props", + }, + ], + "@stylistic/jsx/jsx-closing-tag-location": ["error"], + "@stylistic/jsx/jsx-curly-brace-presence": [ + "error", + { + props: "always", + children: "ignore", + }, + ], + "@stylistic/jsx/jsx-curly-newline": [ + "error", + { + multiline: "consistent", + singleline: "forbid", + }, + ], + "@stylistic/jsx/jsx-curly-spacing": ["error"], + "@stylistic/jsx/jsx-equals-spacing": ["error"], + "@stylistic/jsx/jsx-first-prop-new-line": [ + "error", + "multiline", + ], + "@stylistic/jsx/jsx-function-call-newline": [ + "error", + "multiline", + ], + "@stylistic/jsx/jsx-indent": ["error"], + "@stylistic/jsx/jsx-indent-props": ["error"], + "@stylistic/jsx/jsx-max-props-per-line": [ + "error", + { + maximum: 1, + when: "always", + }, + ], + "@stylistic/jsx/jsx-newline": ["off"], + "@stylistic/jsx/jsx-one-expression-per-line": [ + "error", + { + allow: "literal", + }, + ], + "@stylistic/jsx/jsx-pascal-case": ["error"], + "@stylistic/jsx/jsx-props-no-multi-spaces": ["off"], + "@stylistic/jsx/jsx-self-closing-comp": ["error"], + "@stylistic/jsx/jsx-sort-props": [ + "error", + { + callbacksLast: true, + ignoreCase: true, + locale: "auto", + multiline: "last", + shorthandFirst: true, + }, + ], + "@stylistic/jsx/jsx-tag-spacing": [ + "error", + { + closingSlash: "never", + beforeSelfClosing: "never", + afterOpening: "never", + beforeClosing: "never", + }, + ], + "@stylistic/jsx/jsx-wrap-multilines": [ + "error", + { + arrow: "parens-new-line", + assignment: "parens-new-line", + declaration: "parens-new-line", + return: "parens-new-line", + }, + ], + + "react-hooks/exhaustive-deps": ["warn"], + "react-hooks/rules-of-hooks": ["error"], + + "react/boolean-prop-naming": [ + "error", + { + rule: "^(is|has|disable|enable)[A-Za-z0-9]*", + validateNested: false, + }, + ], + + "react/destructuring-assignment": [ + "warn", + "always", + ], + "react/display-name": ["error"], + + "react/hook-use-state": [ + "warn", + { + allowDestructuredState: true, + }, + ], + + "react/jsx-boolean-value": [ + "warn", + "always", + ], + "react/jsx-child-element-spacing": ["off"], + "react/jsx-closing-bracket-location": ["off"], + "react/jsx-closing-tag-location": ["off"], + "react/jsx-curly-brace-presence": ["off"], + "react/jsx-curly-newline": ["off"], + "react/jsx-curly-spacing": ["off"], + "react/jsx-equals-spacing": ["off"], + "react/jsx-first-prop-new-line": ["off"], + "react/jsx-indent": ["off"], + "react/jsx-key": ["error"], + "react/jsx-max-props-per-line": ["off"], + "react/jsx-newline": ["off"], + "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-one-expression-per-line": ["off"], + "react/jsx-pascal-case": ["off"], + "react/jsx-sort-props": ["off"], + "react/jsx-tag-spacing": ["off"], + "react/jsx-uses-react": ["off"], + "react/jsx-uses-vars": ["error"], + "react/jsx-wrap-multilines": ["off"], + "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/no-unsafe": ["off"], + "react/prop-types": ["off"], + "react/react-in-jsx-scope": ["off"], + "react/require-render-return": ["error"], + }, + settings: { + "import/resolver": { + node: { + extensions: [ + ".js", + ".jsx", + ], + }, + }, + "react": { + version: "detect", + }, + }, + }, + { + files: [ + "**/*.jsx", + "**/*.tsx", + ], + rules: { + "max-lines-per-function": ["error", + { + max: 120, + skipBlankLines: true, + skipComments: true, + }], + }, + }, +]; + + +export default config; From 762bed70b07d3fcf0c7e6d421c47fb2df052541d Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 03:38:24 -0500 Subject: [PATCH 14/65] react plugin add rules: - function-component-definition: warn - jsx-indent-props: off (stylistic) - jsx-no-useless-fragment: error - jsx-props-no-multi-spaces: off (stylistic) - no-multi-comp: error --- react.mjs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/react.mjs b/react.mjs index e9af1c3..b3e1e5a 100644 --- a/react.mjs +++ b/react.mjs @@ -117,13 +117,18 @@ const config = [ validateNested: false, }, ], - "react/destructuring-assignment": [ "warn", "always", ], "react/display-name": ["error"], - + "react/function-component-definition": [ + "warn", + { + namedComponents: "arrow-function", + unnamedComponents: "arrow-function", + }, + ], "react/hook-use-state": [ "warn", { @@ -144,6 +149,7 @@ const config = [ "react/jsx-equals-spacing": ["off"], "react/jsx-first-prop-new-line": ["off"], "react/jsx-indent": ["off"], + "react/jsx-indent-props": ["off"], "react/jsx-key": ["error"], "react/jsx-max-props-per-line": ["off"], "react/jsx-newline": ["off"], @@ -151,19 +157,28 @@ const config = [ "react/jsx-no-duplicate-props": ["error"], "react/jsx-no-target-blank": ["error"], "react/jsx-no-undef": ["error"], + "react/jsx-no-useless-fragment": ["error"], "react/jsx-one-expression-per-line": ["off"], "react/jsx-pascal-case": ["off"], + "react/jsx-props-no-multi-spaces": ["off"], "react/jsx-sort-props": ["off"], "react/jsx-tag-spacing": ["off"], "react/jsx-uses-react": ["off"], "react/jsx-uses-vars": ["error"], "react/jsx-wrap-multilines": ["off"], + "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-multi-comp": [ + "error", + { + ignoreStateless: true, + }, + ], "react/no-render-return-value": ["error"], "react/no-string-refs": ["error"], "react/no-unescaped-entities": ["error"], From 91de045c66950167e9a0057c21007f80ac29fe7f Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 03:38:32 -0500 Subject: [PATCH 15/65] Remove react.js. --- react.js | 300 ------------------------------------------------------- 1 file changed, 300 deletions(-) delete mode 100644 react.js diff --git a/react.js b/react.js deleted file mode 100644 index 5f3a35d..0000000 --- a/react.js +++ /dev/null @@ -1,300 +0,0 @@ -/* eslint-disable sort-keys */ -module.exports = { - env: { - browser: true, - node: false, - }, - extends: [ - "./common", - ], - parserOptions: { - ecmaFeatures: { - jsx: true, - }, - }, - plugins: [ - "@stylistic/jsx", - "react-hooks", - "react", - ], - settings: { - "import/resolver": { - node: { - extensions: [ - ".js", - ".jsx", - ], - }, - }, - "react": { - version: "detect", - }, - }, - globals: { - process: "readonly", - }, - rules: { - "@stylistic/jsx/jsx-child-element-spacing": [ - "error", - ], - "@stylistic/jsx/jsx-closing-bracket-location": [ - "error", - { - nonEmpty: "tag-aligned", - selfClosing: "after-props", - }, - ], - "@stylistic/jsx/jsx-closing-tag-location": [ - "error", - ], - "@stylistic/jsx/jsx-curly-brace-presence": [ - "error", - { - props: "always", - children: "ignore", - }, - ], - "@stylistic/jsx/jsx-curly-newline": [ - "error", - { - multiline: "consistent", - singleline: "forbid", - }, - ], - "@stylistic/jsx/jsx-curly-spacing": [ - "error", - ], - "@stylistic/jsx/jsx-equals-spacing": [ - "error", - ], - "@stylistic/jsx/jsx-first-prop-new-line": [ - "error", - "multiline", - ], - "@stylistic/jsx/jsx-indent": [ - "error", - ], - "@stylistic/jsx/jsx-indent-props": [ - "error", - ], - "@stylistic/jsx/jsx-max-props-per-line": [ - "error", - { - maximum: 1, - when: "always", - }, - ], - "@stylistic/jsx/jsx-newline": [ - "off", - ], - "@stylistic/jsx/jsx-one-expression-per-line": [ - "error", - { - allow: "literal", - }, - ], - "@stylistic/jsx/jsx-pascal-case": [ - "error", - ], - "@stylistic/jsx/jsx-props-no-multi-spaces": [ - // Disable this to allow line gaps between props - "off", - ], - "@stylistic/jsx/jsx-self-closing-comp": [ - "error", - ], - "@stylistic/jsx/jsx-sort-props": [ - "error", - { - callbacksLast: true, - ignoreCase: true, - multiline: "last", - shorthandFirst: true, - locale: "auto", - }, - ], - "@stylistic/jsx/jsx-tag-spacing": [ - "error", - { - closingSlash: "never", - beforeSelfClosing: "never", - afterOpening: "never", - beforeClosing: "never", - }, - ], - "@stylistic/jsx/jsx-wrap-multilines": [ - "error", - { - arrow: "parens-new-line", - assignment: "parens-new-line", - declaration: "parens-new-line", - return: "parens-new-line", - }, - ], - "react-hooks/exhaustive-deps": [ - "warn", - ], - - "react-hooks/rules-of-hooks": [ - "error", - ], - "react/boolean-prop-naming": [ - "error", - { - rule: "^(is|has|disable|enable)[A-Za-z0-9]*", - validateNested: false, - }, - ], - "react/destructuring-assignment": [ - "warn", - "always", - ], - "react/display-name": [ - "error", - ], - "react/hook-use-state": [ - "warn", - { - allowDestructuredState: true, - }, - ], - "react/jsx-boolean-value": [ - "warn", - "always", - ], - "react/jsx-child-element-spacing": [ - "off", - ], - "react/jsx-closing-bracket-location": [ - "off", - ], - "react/jsx-closing-tag-location": [ - "off", - ], - "react/jsx-curly-brace-presence": [ - "off", - ], - "react/jsx-curly-newline": [ - "off", - ], - "react/jsx-curly-spacing": [ - "off", - ], - "react/jsx-equals-spacing": [ - "off", - ], - "react/jsx-first-prop-new-line": [ - "off", - ], - "react/jsx-indent": [ - "off", - ], - "react/jsx-key": [ - "error", - ], - "react/jsx-max-props-per-line": [ - "off", - ], - "react/jsx-newline": [ - "off", - ], - "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-one-expression-per-line": [ - "off", - ], - "react/jsx-pascal-case": [ - "off", - ], - "react/jsx-sort-props": [ - "off", - ], - "react/jsx-tag-spacing": [ - "off", - ], - "react/jsx-uses-react": [ - "off", - ], - "react/jsx-uses-vars": [ - "error", - ], - "react/jsx-wrap-multilines": [ - "off", - ], - "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/no-unsafe": [ - "off", - ], - - // TODO: revisit - // Experimental: turn OFF for now and rely on `eslint-plugin-jsdoc` - "react/prop-types": [ - "off", - ], - - "react/react-in-jsx-scope": [ - "off", - ], - "react/require-render-return": [ - "error", - ], - }, - overrides: [ - { - files: [ - "*.jsx", - "*.tsx", - ], - rules: { - "max-lines-per-function": [ - "error", - { - max: 120, - skipBlankLines: true, - skipComments: true, - }, - ], - }, - }, - ], -}; -/* eslint-disable sort-keys */ From 87b8fd657bb44d55824628b575ccfce690d35801 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 03:41:35 -0500 Subject: [PATCH 16/65] Fix indent. --- _common.mjs | 1316 +++++++++++++++++++++++++-------------------------- 1 file changed, 657 insertions(+), 659 deletions(-) diff --git a/_common.mjs b/_common.mjs index 8ce5a9f..827c03d 100644 --- a/_common.mjs +++ b/_common.mjs @@ -9,676 +9,674 @@ import NoAutofixPlugin from "eslint-plugin-no-autofix"; import SimpleImportSortPlugin from "eslint-plugin-simple-import-sort"; -const config = [ - { - languageOptions: { - ecmaVersion: "latest", - sourceType: "module", - parserOptions: { - ecmaFeatures: { - experimentalObjectRestSpread: true, - }, +const config = [{ + languageOptions: { + ecmaVersion: "latest", + sourceType: "module", + parserOptions: { + ecmaFeatures: { + experimentalObjectRestSpread: true, }, }, - plugins: { - "@stylistic/js": StylisticJsPlugin, - "@stylistic/plus": StylisticPlusPlugin, - "import": ImportPlugin, - "import-newlines": ImportNewlinesPlugin, - "jsdoc": JsdocPlugin, - "no-autofix": NoAutofixPlugin, - "simple-import-sort": SimpleImportSortPlugin, - }, - rules: { - "accessor-pairs": ["error"], - "array-callback-return": ["error"], - "arrow-body-style": ["off"], - "block-scoped-var": ["error"], - "camelcase": [ - "error", - { - properties: "never", - ignoreDestructuring: false, - ignoreImports: false, - ignoreGlobals: false, - }, - ], - "capitalized-comments": ["off"], - "class-methods-use-this": ["error"], - "complexity": ["error"], - "consistent-return": ["error"], - "consistent-this": ["error"], - "constructor-super": ["error"], - "curly": [ - "error", - "all", - ], - "default-case": ["error"], - "default-case-last": ["error"], - "default-param-last": ["error"], - "dot-notation": ["error"], - "eqeqeq": ["error"], - "for-direction": ["error"], - "func-name-matching": ["error"], - "func-names": [ - "error", - "as-needed", - ], - "func-style": [ - "warn", - "expression", - ], - "getter-return": ["error"], - "grouped-accessor-pairs": ["error"], - "guard-for-in": ["error"], - "id-denylist": ["off"], - "id-length": ["off"], - "id-match": ["error"], - "init-declarations": ["off"], - "logical-assignment-operators": ["error"], - "max-classes-per-file": ["error"], - "max-depth": ["error"], - "max-lines": ["error"], - "max-lines-per-function": [ - "error", - {max: 60, skipBlankLines: true, skipComments: true}, - ], - "max-nested-callbacks": ["error"], - "max-params": [ - "error", - {max: 4}, - ], - "max-statements": [ - "error", - {max: 20}, - ], - "new-cap": ["error"], - "no-alert": ["error"], - "no-array-constructor": ["error"], - "no-async-promise-executor": ["error"], - "no-await-in-loop": ["off"], - "no-bitwise": ["off"], - "no-caller": ["error"], - "no-case-declarations": ["error"], - "no-class-assign": ["error"], - "no-compare-neg-zero": ["error"], - "no-cond-assign": ["error"], - "no-console": ["off"], - "no-const-assign": ["error"], - "no-constant-binary-expression": ["error"], - "no-constant-condition": [ - "error", - {checkLoops: false}, - ], - "no-constructor-return": ["error"], - "no-continue": ["off"], - "no-control-regex": ["error"], - "no-debugger": ["error"], - "no-delete-var": ["error"], - "no-div-regex": ["error"], - "no-dupe-args": ["error"], - "no-dupe-class-members": ["error"], - "no-dupe-else-if": ["error"], - "no-dupe-keys": ["error"], - "no-duplicate-case": ["error"], - "no-duplicate-imports": ["error"], - "no-else-return": ["error"], - "no-empty": ["error"], - "no-empty-character-class": ["error"], - "no-empty-function": [ - "error", - {allow: ["arrowFunctions"]}, - ], - "no-empty-pattern": ["error"], - "no-empty-static-block": ["error"], - "no-eq-null": ["error"], - "no-eval": ["error"], - "no-ex-assign": ["error"], - "no-extend-native": ["error"], - "no-extra-bind": ["error"], - "no-extra-boolean-cast": ["error"], - "no-extra-label": ["error"], - "no-fallthrough": ["error"], - "no-func-assign": ["error"], - "no-global-assign": ["error"], - "no-implicit-coercion": ["error"], - "no-implicit-globals": ["error"], - "no-implied-eval": ["error"], - "no-import-assign": ["error"], - "no-inline-comments": ["error"], - "no-inner-declarations": ["error"], - "no-invalid-regexp": ["error"], - "no-invalid-this": ["off"], - "no-irregular-whitespace": ["error"], - "no-iterator": ["error"], - "no-label-var": ["error"], - "no-labels": ["error"], - "no-lone-blocks": ["error"], - "no-lonely-if": ["error"], - "no-loop-func": ["error"], - "no-loss-of-precision": ["error"], - "no-magic-numbers": [ - "error", - { - detectObjects: false, - enforceConst: true, - ignore: [ - -1, - 0, - 1, - 2, - 3, - 10, - 100, - ], - ignoreArrayIndexes: true, - ignoreClassFieldInitialValues: true, - ignoreDefaultValues: true, - }, - ], - "no-misleading-character-class": ["error"], - "no-multi-assign": ["error"], - "no-multi-str": ["error"], - "no-negated-condition": ["off"], - "no-nested-ternary": ["error"], - "no-new": ["error"], - "no-new-func": ["error"], - "no-new-native-nonconstructor": ["error"], + }, + plugins: { + "@stylistic/js": StylisticJsPlugin, + "@stylistic/plus": StylisticPlusPlugin, + "import": ImportPlugin, + "import-newlines": ImportNewlinesPlugin, + "jsdoc": JsdocPlugin, + "no-autofix": NoAutofixPlugin, + "simple-import-sort": SimpleImportSortPlugin, + }, + rules: { + "accessor-pairs": ["error"], + "array-callback-return": ["error"], + "arrow-body-style": ["off"], + "block-scoped-var": ["error"], + "camelcase": [ + "error", + { + properties: "never", + ignoreDestructuring: false, + ignoreImports: false, + ignoreGlobals: false, + }, + ], + "capitalized-comments": ["off"], + "class-methods-use-this": ["error"], + "complexity": ["error"], + "consistent-return": ["error"], + "consistent-this": ["error"], + "constructor-super": ["error"], + "curly": [ + "error", + "all", + ], + "default-case": ["error"], + "default-case-last": ["error"], + "default-param-last": ["error"], + "dot-notation": ["error"], + "eqeqeq": ["error"], + "for-direction": ["error"], + "func-name-matching": ["error"], + "func-names": [ + "error", + "as-needed", + ], + "func-style": [ + "warn", + "expression", + ], + "getter-return": ["error"], + "grouped-accessor-pairs": ["error"], + "guard-for-in": ["error"], + "id-denylist": ["off"], + "id-length": ["off"], + "id-match": ["error"], + "init-declarations": ["off"], + "logical-assignment-operators": ["error"], + "max-classes-per-file": ["error"], + "max-depth": ["error"], + "max-lines": ["error"], + "max-lines-per-function": [ + "error", + {max: 60, skipBlankLines: true, skipComments: true}, + ], + "max-nested-callbacks": ["error"], + "max-params": [ + "error", + {max: 4}, + ], + "max-statements": [ + "error", + {max: 20}, + ], + "new-cap": ["error"], + "no-alert": ["error"], + "no-array-constructor": ["error"], + "no-async-promise-executor": ["error"], + "no-await-in-loop": ["off"], + "no-bitwise": ["off"], + "no-caller": ["error"], + "no-case-declarations": ["error"], + "no-class-assign": ["error"], + "no-compare-neg-zero": ["error"], + "no-cond-assign": ["error"], + "no-console": ["off"], + "no-const-assign": ["error"], + "no-constant-binary-expression": ["error"], + "no-constant-condition": [ + "error", + {checkLoops: false}, + ], + "no-constructor-return": ["error"], + "no-continue": ["off"], + "no-control-regex": ["error"], + "no-debugger": ["error"], + "no-delete-var": ["error"], + "no-div-regex": ["error"], + "no-dupe-args": ["error"], + "no-dupe-class-members": ["error"], + "no-dupe-else-if": ["error"], + "no-dupe-keys": ["error"], + "no-duplicate-case": ["error"], + "no-duplicate-imports": ["error"], + "no-else-return": ["error"], + "no-empty": ["error"], + "no-empty-character-class": ["error"], + "no-empty-function": [ + "error", + {allow: ["arrowFunctions"]}, + ], + "no-empty-pattern": ["error"], + "no-empty-static-block": ["error"], + "no-eq-null": ["error"], + "no-eval": ["error"], + "no-ex-assign": ["error"], + "no-extend-native": ["error"], + "no-extra-bind": ["error"], + "no-extra-boolean-cast": ["error"], + "no-extra-label": ["error"], + "no-fallthrough": ["error"], + "no-func-assign": ["error"], + "no-global-assign": ["error"], + "no-implicit-coercion": ["error"], + "no-implicit-globals": ["error"], + "no-implied-eval": ["error"], + "no-import-assign": ["error"], + "no-inline-comments": ["error"], + "no-inner-declarations": ["error"], + "no-invalid-regexp": ["error"], + "no-invalid-this": ["off"], + "no-irregular-whitespace": ["error"], + "no-iterator": ["error"], + "no-label-var": ["error"], + "no-labels": ["error"], + "no-lone-blocks": ["error"], + "no-lonely-if": ["error"], + "no-loop-func": ["error"], + "no-loss-of-precision": ["error"], + "no-magic-numbers": [ + "error", + { + detectObjects: false, + enforceConst: true, + ignore: [ + -1, + 0, + 1, + 2, + 3, + 10, + 100, + ], + ignoreArrayIndexes: true, + ignoreClassFieldInitialValues: true, + ignoreDefaultValues: true, + }, + ], + "no-misleading-character-class": ["error"], + "no-multi-assign": ["error"], + "no-multi-str": ["error"], + "no-negated-condition": ["off"], + "no-nested-ternary": ["error"], + "no-new": ["error"], + "no-new-func": ["error"], + "no-new-native-nonconstructor": ["error"], - // deprecated in ESLint v9.0.0 and replaced by the no-new-native-nonconstructor - "no-new-symbol": ["error"], - "no-new-wrappers": ["error"], - "no-nonoctal-decimal-escape": ["error"], - "no-obj-calls": ["error"], - "no-object-constructor": ["error"], - "no-octal": ["error"], - "no-octal-escape": ["error"], - "no-param-reassign": ["off"], - "no-plusplus": ["off"], - "no-promise-executor-return": ["error"], - "no-proto": ["error"], - "no-prototype-builtins": ["error"], - "no-redeclare": ["error"], - "no-regex-spaces": ["error"], - "no-restricted-exports": ["error"], - "no-restricted-globals": ["error"], - "no-restricted-imports": ["error"], - "no-restricted-properties": ["error"], - "no-restricted-syntax": [ - "error", - { - message: "Direct exporting of declarations is not allowed. Use export list or default exports instead.", - selector: "ExportNamedDeclaration[declaration!=null]", - }, - ], - "no-return-assign": ["error"], - "no-script-url": ["error"], - "no-self-assign": ["error"], - "no-self-compare": ["error"], - "no-sequences": ["error"], - "no-setter-return": ["error"], - "no-shadow": ["error"], - "no-shadow-restricted-names": ["error"], - "no-sparse-arrays": ["error"], - "no-template-curly-in-string": ["error"], - "no-ternary": ["off"], - "no-this-before-super": ["error"], - "no-throw-literal": ["error"], - "no-undef": ["error"], - "no-undef-init": ["error"], - "no-undefined": ["error"], - "no-underscore-dangle": [ - "error", - { - allow: [ - "_id", - "_malloc", - ], - }, - ], - "no-unexpected-multiline": ["error"], - "no-unmodified-loop-condition": ["error"], - "no-unneeded-ternary": ["error"], - "no-unreachable": ["error"], - "no-unreachable-loop": ["error"], - "no-unsafe-finally": ["error"], - "no-unsafe-negation": ["error"], - "no-unsafe-optional-chaining": ["error"], - "no-unused-expressions": ["error"], - "no-unused-labels": ["error"], - "no-unused-private-class-members": ["error"], - "no-unused-vars": [ - "warn", - {args: "none"}, - ], - "no-use-before-define": ["error"], - "no-useless-assignment": ["error"], - "no-useless-backreference": ["error"], - "no-useless-call": ["error"], - "no-useless-catch": ["error"], - "no-useless-computed-key": ["error"], - "no-useless-concat": ["error"], - "no-useless-constructor": ["error"], - "no-useless-escape": ["error"], - "no-useless-rename": ["error"], - "no-useless-return": ["error"], - "no-var": ["error"], - "no-void": ["error"], - "no-warning-comments": [ - "warn", - { - location: "start", - terms: [ - "todo", - "fixme", - ], - }, - ], - "no-with": ["error"], - "object-shorthand": [ - "error", - "consistent", - ], - "one-var": [ - "error", - {var: "never", let: "never", const: "never"}, - ], - "operator-assignment": ["error"], - "prefer-arrow-callback": ["error"], - "prefer-const": [ - "error", - {destructuring: "all", ignoreReadBeforeAssign: false}, - ], - "prefer-destructuring": ["error"], - "prefer-exponentiation-operator": ["error"], - "prefer-named-capture-group": ["off"], - "prefer-numeric-literals": ["error"], - "prefer-object-has-own": ["error"], - "prefer-object-spread": ["error"], - "prefer-promise-reject-errors": ["error"], - "prefer-regex-literals": ["error"], - "prefer-rest-params": ["error"], - "prefer-spread": ["error"], - "prefer-template": ["error"], - "radix": ["error"], - "require-atomic-updates": ["warn"], - "require-await": ["warn"], - "require-unicode-regexp": ["off"], - "require-yield": ["error"], - "simple-import-sort/exports": ["warn"], - "simple-import-sort/imports": [ - "warn", - { - groups: [ - ["^\\u0000"], - ["^node:"], - [ - "^meteor", - "^prop-types", - "^react", - ], - ["^@?\\w"], - ["^@mui/icons-material"], - ["^/"], - ["^"], - ["^\\."], + // deprecated in ESLint v9.0.0 and replaced by the no-new-native-nonconstructor + "no-new-symbol": ["error"], + "no-new-wrappers": ["error"], + "no-nonoctal-decimal-escape": ["error"], + "no-obj-calls": ["error"], + "no-object-constructor": ["error"], + "no-octal": ["error"], + "no-octal-escape": ["error"], + "no-param-reassign": ["off"], + "no-plusplus": ["off"], + "no-promise-executor-return": ["error"], + "no-proto": ["error"], + "no-prototype-builtins": ["error"], + "no-redeclare": ["error"], + "no-regex-spaces": ["error"], + "no-restricted-exports": ["error"], + "no-restricted-globals": ["error"], + "no-restricted-imports": ["error"], + "no-restricted-properties": ["error"], + "no-restricted-syntax": [ + "error", + { + message: "Direct exporting of declarations is not allowed. Use export list or default exports instead.", + selector: "ExportNamedDeclaration[declaration!=null]", + }, + ], + "no-return-assign": ["error"], + "no-script-url": ["error"], + "no-self-assign": ["error"], + "no-self-compare": ["error"], + "no-sequences": ["error"], + "no-setter-return": ["error"], + "no-shadow": ["error"], + "no-shadow-restricted-names": ["error"], + "no-sparse-arrays": ["error"], + "no-template-curly-in-string": ["error"], + "no-ternary": ["off"], + "no-this-before-super": ["error"], + "no-throw-literal": ["error"], + "no-undef": ["error"], + "no-undef-init": ["error"], + "no-undefined": ["error"], + "no-underscore-dangle": [ + "error", + { + allow: [ + "_id", + "_malloc", + ], + }, + ], + "no-unexpected-multiline": ["error"], + "no-unmodified-loop-condition": ["error"], + "no-unneeded-ternary": ["error"], + "no-unreachable": ["error"], + "no-unreachable-loop": ["error"], + "no-unsafe-finally": ["error"], + "no-unsafe-negation": ["error"], + "no-unsafe-optional-chaining": ["error"], + "no-unused-expressions": ["error"], + "no-unused-labels": ["error"], + "no-unused-private-class-members": ["error"], + "no-unused-vars": [ + "warn", + {args: "none"}, + ], + "no-use-before-define": ["error"], + "no-useless-assignment": ["error"], + "no-useless-backreference": ["error"], + "no-useless-call": ["error"], + "no-useless-catch": ["error"], + "no-useless-computed-key": ["error"], + "no-useless-concat": ["error"], + "no-useless-constructor": ["error"], + "no-useless-escape": ["error"], + "no-useless-rename": ["error"], + "no-useless-return": ["error"], + "no-var": ["error"], + "no-void": ["error"], + "no-warning-comments": [ + "warn", + { + location: "start", + terms: [ + "todo", + "fixme", + ], + }, + ], + "no-with": ["error"], + "object-shorthand": [ + "error", + "consistent", + ], + "one-var": [ + "error", + {var: "never", let: "never", const: "never"}, + ], + "operator-assignment": ["error"], + "prefer-arrow-callback": ["error"], + "prefer-const": [ + "error", + {destructuring: "all", ignoreReadBeforeAssign: false}, + ], + "prefer-destructuring": ["error"], + "prefer-exponentiation-operator": ["error"], + "prefer-named-capture-group": ["off"], + "prefer-numeric-literals": ["error"], + "prefer-object-has-own": ["error"], + "prefer-object-spread": ["error"], + "prefer-promise-reject-errors": ["error"], + "prefer-regex-literals": ["error"], + "prefer-rest-params": ["error"], + "prefer-spread": ["error"], + "prefer-template": ["error"], + "radix": ["error"], + "require-atomic-updates": ["warn"], + "require-await": ["warn"], + "require-unicode-regexp": ["off"], + "require-yield": ["error"], + "simple-import-sort/exports": ["warn"], + "simple-import-sort/imports": [ + "warn", + { + groups: [ + ["^\\u0000"], + ["^node:"], + [ + "^meteor", + "^prop-types", + "^react", ], - }, - ], - "sort-imports": ["off"], - "sort-keys": [ - "warn", - "asc", - {allowLineSeparatedGroups: true, caseSensitive: true, minKeys: 5, natural: true}, - ], - "sort-vars": ["error"], - "strict": ["error"], - "symbol-description": ["error"], - "unicode-bom": ["error"], - "use-isnan": ["error"], - "valid-typeof": ["error"], - "vars-on-top": ["error"], - "yoda": [ - "error", - "always", - ], + ["^@?\\w"], + ["^@mui/icons-material"], + ["^/"], + ["^"], + ["^\\."], + ], + }, + ], + "sort-imports": ["off"], + "sort-keys": [ + "warn", + "asc", + {allowLineSeparatedGroups: true, caseSensitive: true, minKeys: 5, natural: true}, + ], + "sort-vars": ["error"], + "strict": ["error"], + "symbol-description": ["error"], + "unicode-bom": ["error"], + "use-isnan": ["error"], + "valid-typeof": ["error"], + "vars-on-top": ["error"], + "yoda": [ + "error", + "always", + ], - "@stylistic/js/array-bracket-newline": [ - "error", - "consistent", - ], - "@stylistic/js/array-bracket-spacing": [ - "error", - "never", - ], - "@stylistic/js/array-element-newline": [ - "error", - {ArrayExpression: "always", ArrayPattern: {minItems: 3}}, - ], - "@stylistic/js/arrow-parens": ["error"], - "@stylistic/js/arrow-spacing": ["error"], - "@stylistic/js/block-spacing": ["error"], - "@stylistic/js/brace-style": [ - "error", - "1tbs", - {allowSingleLine: true}, - ], - "@stylistic/js/comma-dangle": [ - "warn", - { - arrays: "always-multiline", - exports: "always-multiline", - functions: "only-multiline", - imports: "always-multiline", - objects: "always-multiline", - }, - ], - "@stylistic/js/comma-spacing": ["error"], - "@stylistic/js/comma-style": ["error"], - "@stylistic/js/computed-property-spacing": ["error"], - "@stylistic/js/dot-location": [ - "error", - "property", - ], - "@stylistic/js/eol-last": [ - "error", - "always", - ], - "@stylistic/js/func-call-spacing": ["off"], - "@stylistic/js/function-call-argument-newline": [ - "error", - "consistent", - ], - "@stylistic/js/function-call-spacing": ["error"], - "@stylistic/js/function-paren-newline": [ - "error", - "multiline-arguments", - ], - "@stylistic/js/generator-star-spacing": ["error"], - "@stylistic/js/implicit-arrow-linebreak": ["error"], - "@stylistic/js/indent": [ - "error", - 4, - { - SwitchCase: 1, - flatTernaryExpressions: false, - offsetTernaryExpressions: false, - ignoreComments: false, - }, - ], - "@stylistic/js/jsx-quotes": ["error"], - "@stylistic/js/key-spacing": [ - "error", - {afterColon: true}, - ], - "@stylistic/js/keyword-spacing": ["error"], - "@stylistic/js/line-comment-position": ["error"], - "@stylistic/js/linebreak-style": [ - "error", - "unix", - ], - "@stylistic/js/lines-around-comment": [ - "error", - { - ignorePattern: "c8|Enum", - beforeBlockComment: true, - afterBlockComment: false, - beforeLineComment: true, - afterLineComment: false, - afterHashbangComment: true, - allowBlockStart: true, - allowBlockEnd: true, - allowClassStart: true, - allowClassEnd: true, - allowObjectStart: true, - allowObjectEnd: true, - allowArrayStart: true, - allowArrayEnd: true, - }, - ], - "@stylistic/js/lines-between-class-members": ["error"], - "@stylistic/js/max-len": [ - "warn", - { - code: 100, - tabWidth: 4, - comments: 100, - ignoreComments: false, - ignoreTrailingComments: false, - ignoreUrls: true, - ignoreStrings: false, - ignoreTemplateLiterals: false, - ignoreRegExpLiterals: true, - }, - ], - "@stylistic/js/max-statements-per-line": ["error"], - "@stylistic/js/multiline-comment-style": ["off"], - "@stylistic/js/multiline-ternary": ["error"], - "@stylistic/js/new-parens": ["error"], - "@stylistic/js/newline-per-chained-call": ["error"], - "@stylistic/js/no-confusing-arrow": ["error"], - "@stylistic/js/no-extra-parens": [ - "error", - "functions", - ], - "@stylistic/js/no-extra-semi": ["error"], - "@stylistic/js/no-floating-decimal": ["error"], - "@stylistic/js/no-mixed-operators": ["error"], - "@stylistic/js/no-mixed-spaces-and-tabs": ["error"], - "@stylistic/js/no-multi-spaces": ["error"], - "@stylistic/js/no-multiple-empty-lines": [ - "error", - {max: 2, maxBOF: 0, maxEOF: 0}, - ], - "@stylistic/js/no-tabs": ["error"], - "@stylistic/js/no-trailing-spaces": ["error"], - "@stylistic/js/no-whitespace-before-property": ["error"], - "@stylistic/js/nonblock-statement-body-position": ["error"], - "@stylistic/js/object-curly-newline": [ - "error", - { - ImportDeclaration: {consistent: false, minProperties: 2, multiline: true}, - ExportDeclaration: {consistent: false, minProperties: 2, multiline: true}, - }, - ], - "@stylistic/js/object-curly-spacing": [ - "error", - "never", - ], - "@stylistic/js/object-property-newline": [ - "error", - {allowAllPropertiesOnSameLine: true, allowMultiplePropertiesPerLine: false}, - ], - "@stylistic/js/one-var-declaration-per-line": ["error"], - "@stylistic/js/operator-linebreak": [ - "error", - "after", - ], - "@stylistic/js/padded-blocks": [ - "error", - "never", - ], - "@stylistic/js/padding-line-between-statements": [ - "warn", - {blankLine: "always", next: "return", prev: "*"}, - { - blankLine: "always", - prev: [ - "export", - "const", - "let", - "var", - "function", - ], - next: "*", - }, - { - blankLine: "any", - prev: [ - "singleline-const", - "singleline-let", - "singleline-var", - ], - next: "*", - }, - { - blankLine: "any", - next: [ - "export", - "const", - "let", - "var", - ], - prev: [ - "export", - "const", - "let", - "var", - ], - }, - ], - "@stylistic/js/quote-props": [ - "error", - "consistent-as-needed", - ], - "@stylistic/js/quotes": [ - "warn", - "double", - {avoidEscape: true}, - ], - "@stylistic/js/rest-spread-spacing": ["error"], - "@stylistic/js/semi": ["error"], - "@stylistic/js/semi-spacing": ["error"], - "@stylistic/js/semi-style": ["error"], - "@stylistic/js/space-before-blocks": ["error"], - "@stylistic/js/space-before-function-paren": ["error"], - "@stylistic/js/space-in-parens": ["error"], - "@stylistic/js/space-infix-ops": ["error"], - "@stylistic/js/space-unary-ops": ["error"], - "@stylistic/js/spaced-comment": [ - "error", - "always", - {block: {balanced: true}}, - ], - "@stylistic/js/switch-colon-spacing": ["error"], - "@stylistic/js/template-curly-spacing": ["error"], - "@stylistic/js/template-tag-spacing": ["error"], - "@stylistic/js/wrap-iife": ["error"], - "@stylistic/js/wrap-regex": ["error"], - "@stylistic/js/yield-star-spacing": ["error"], + "@stylistic/js/array-bracket-newline": [ + "error", + "consistent", + ], + "@stylistic/js/array-bracket-spacing": [ + "error", + "never", + ], + "@stylistic/js/array-element-newline": [ + "error", + {ArrayExpression: "always", ArrayPattern: {minItems: 3}}, + ], + "@stylistic/js/arrow-parens": ["error"], + "@stylistic/js/arrow-spacing": ["error"], + "@stylistic/js/block-spacing": ["error"], + "@stylistic/js/brace-style": [ + "error", + "1tbs", + {allowSingleLine: true}, + ], + "@stylistic/js/comma-dangle": [ + "warn", + { + arrays: "always-multiline", + exports: "always-multiline", + functions: "only-multiline", + imports: "always-multiline", + objects: "always-multiline", + }, + ], + "@stylistic/js/comma-spacing": ["error"], + "@stylistic/js/comma-style": ["error"], + "@stylistic/js/computed-property-spacing": ["error"], + "@stylistic/js/dot-location": [ + "error", + "property", + ], + "@stylistic/js/eol-last": [ + "error", + "always", + ], + "@stylistic/js/func-call-spacing": ["off"], + "@stylistic/js/function-call-argument-newline": [ + "error", + "consistent", + ], + "@stylistic/js/function-call-spacing": ["error"], + "@stylistic/js/function-paren-newline": [ + "error", + "multiline-arguments", + ], + "@stylistic/js/generator-star-spacing": ["error"], + "@stylistic/js/implicit-arrow-linebreak": ["error"], + "@stylistic/js/indent": [ + "error", + 4, + { + SwitchCase: 1, + flatTernaryExpressions: false, + offsetTernaryExpressions: false, + ignoreComments: false, + }, + ], + "@stylistic/js/jsx-quotes": ["error"], + "@stylistic/js/key-spacing": [ + "error", + {afterColon: true}, + ], + "@stylistic/js/keyword-spacing": ["error"], + "@stylistic/js/line-comment-position": ["error"], + "@stylistic/js/linebreak-style": [ + "error", + "unix", + ], + "@stylistic/js/lines-around-comment": [ + "error", + { + ignorePattern: "c8|Enum", + beforeBlockComment: true, + afterBlockComment: false, + beforeLineComment: true, + afterLineComment: false, + afterHashbangComment: true, + allowBlockStart: true, + allowBlockEnd: true, + allowClassStart: true, + allowClassEnd: true, + allowObjectStart: true, + allowObjectEnd: true, + allowArrayStart: true, + allowArrayEnd: true, + }, + ], + "@stylistic/js/lines-between-class-members": ["error"], + "@stylistic/js/max-len": [ + "warn", + { + code: 100, + tabWidth: 4, + comments: 100, + ignoreComments: false, + ignoreTrailingComments: false, + ignoreUrls: true, + ignoreStrings: false, + ignoreTemplateLiterals: false, + ignoreRegExpLiterals: true, + }, + ], + "@stylistic/js/max-statements-per-line": ["error"], + "@stylistic/js/multiline-comment-style": ["off"], + "@stylistic/js/multiline-ternary": ["error"], + "@stylistic/js/new-parens": ["error"], + "@stylistic/js/newline-per-chained-call": ["error"], + "@stylistic/js/no-confusing-arrow": ["error"], + "@stylistic/js/no-extra-parens": [ + "error", + "functions", + ], + "@stylistic/js/no-extra-semi": ["error"], + "@stylistic/js/no-floating-decimal": ["error"], + "@stylistic/js/no-mixed-operators": ["error"], + "@stylistic/js/no-mixed-spaces-and-tabs": ["error"], + "@stylistic/js/no-multi-spaces": ["error"], + "@stylistic/js/no-multiple-empty-lines": [ + "error", + {max: 2, maxBOF: 0, maxEOF: 0}, + ], + "@stylistic/js/no-tabs": ["error"], + "@stylistic/js/no-trailing-spaces": ["error"], + "@stylistic/js/no-whitespace-before-property": ["error"], + "@stylistic/js/nonblock-statement-body-position": ["error"], + "@stylistic/js/object-curly-newline": [ + "error", + { + ImportDeclaration: {consistent: false, minProperties: 2, multiline: true}, + ExportDeclaration: {consistent: false, minProperties: 2, multiline: true}, + }, + ], + "@stylistic/js/object-curly-spacing": [ + "error", + "never", + ], + "@stylistic/js/object-property-newline": [ + "error", + {allowAllPropertiesOnSameLine: true, allowMultiplePropertiesPerLine: false}, + ], + "@stylistic/js/one-var-declaration-per-line": ["error"], + "@stylistic/js/operator-linebreak": [ + "error", + "after", + ], + "@stylistic/js/padded-blocks": [ + "error", + "never", + ], + "@stylistic/js/padding-line-between-statements": [ + "warn", + {blankLine: "always", next: "return", prev: "*"}, + { + blankLine: "always", + prev: [ + "export", + "const", + "let", + "var", + "function", + ], + next: "*", + }, + { + blankLine: "any", + prev: [ + "singleline-const", + "singleline-let", + "singleline-var", + ], + next: "*", + }, + { + blankLine: "any", + next: [ + "export", + "const", + "let", + "var", + ], + prev: [ + "export", + "const", + "let", + "var", + ], + }, + ], + "@stylistic/js/quote-props": [ + "error", + "consistent-as-needed", + ], + "@stylistic/js/quotes": [ + "warn", + "double", + {avoidEscape: true}, + ], + "@stylistic/js/rest-spread-spacing": ["error"], + "@stylistic/js/semi": ["error"], + "@stylistic/js/semi-spacing": ["error"], + "@stylistic/js/semi-style": ["error"], + "@stylistic/js/space-before-blocks": ["error"], + "@stylistic/js/space-before-function-paren": ["error"], + "@stylistic/js/space-in-parens": ["error"], + "@stylistic/js/space-infix-ops": ["error"], + "@stylistic/js/space-unary-ops": ["error"], + "@stylistic/js/spaced-comment": [ + "error", + "always", + {block: {balanced: true}}, + ], + "@stylistic/js/switch-colon-spacing": ["error"], + "@stylistic/js/template-curly-spacing": ["error"], + "@stylistic/js/template-tag-spacing": ["error"], + "@stylistic/js/wrap-iife": ["error"], + "@stylistic/js/wrap-regex": ["error"], + "@stylistic/js/yield-star-spacing": ["error"], - "@stylistic/plus/curly-newline": [ - "error", - "always", - ], - "@stylistic/plus/indent-binary-ops": ["off"], - "@stylistic/plus/type-generic-spacing": ["error"], - "@stylistic/plus/type-named-tuple-spacing": ["error"], + "@stylistic/plus/curly-newline": [ + "error", + "always", + ], + "@stylistic/plus/indent-binary-ops": ["off"], + "@stylistic/plus/type-generic-spacing": ["error"], + "@stylistic/plus/type-named-tuple-spacing": ["error"], - "import-newlines/enforce": [ - "error", - {items: 1}, - ], - "import/newline-after-import": [ - "error", - {count: 2, exactCount: true, considerComments: true}, - ], - "import/no-unresolved": [ - "error", - {ignore: ["^/imports"], caseSensitive: true, caseSensitiveStrict: false}, - ], - "import/named": ["error"], - "import/namespace": ["error"], - "import/default": ["error"], - "import/export": ["error"], - "import/no-named-as-default": ["warn"], - "import/no-named-as-default-member": ["warn"], - "import/no-duplicates": ["error"], + "import-newlines/enforce": [ + "error", + {items: 1}, + ], + "import/newline-after-import": [ + "error", + {count: 2, exactCount: true, considerComments: true}, + ], + "import/no-unresolved": [ + "error", + {ignore: ["^/imports"], caseSensitive: true, caseSensitiveStrict: false}, + ], + "import/named": ["error"], + "import/namespace": ["error"], + "import/default": ["error"], + "import/export": ["error"], + "import/no-named-as-default": ["warn"], + "import/no-named-as-default-member": ["warn"], + "import/no-duplicates": ["error"], - "jsdoc/check-access": ["warn"], - "jsdoc/check-alignment": ["warn"], - "jsdoc/check-examples": ["off"], - "jsdoc/check-indentation": ["off"], - "jsdoc/check-line-alignment": ["warn"], - "jsdoc/check-param-names": [ - "warn", - {checkRestProperty: true}, - ], - "jsdoc/check-property-names": ["warn"], - "jsdoc/check-syntax": ["off"], - "jsdoc/check-tag-names": ["warn"], - "jsdoc/check-types": ["warn"], - "jsdoc/check-values": ["warn"], - "jsdoc/empty-tags": ["warn"], - "jsdoc/implements-on-classes": ["warn"], - "jsdoc/informative-docs": ["warn"], - "jsdoc/match-description": ["off"], - "jsdoc/match-name": ["off"], - "jsdoc/multiline-blocks": "warn", - "jsdoc/no-bad-blocks": ["off"], - "jsdoc/no-blank-blocks": "warn", - "jsdoc/no-blank-block-descriptions": ["off"], - "jsdoc/no-defaults": "warn", - "jsdoc/no-missing-syntax": ["off"], - "jsdoc/no-multi-asterisks": "warn", - "jsdoc/no-restricted-syntax": ["off"], - "jsdoc/no-types": ["off"], - "jsdoc/no-undefined-types": ["off"], - "jsdoc/require-asterisk-prefix": ["warn"], - "jsdoc/require-description": [ - "warn", - {checkConstructors: false, checkGetters: false, checkSetters: false}, - ], - "jsdoc/require-description-complete-sentence": ["off"], - "jsdoc/require-example": ["off"], - "jsdoc/require-file-overview": ["off"], - "jsdoc/require-hyphen-before-param-description": [ - "warn", - "never", - ], - "jsdoc/require-jsdoc": [ - "warn", - { - contexts: [ - ":has(VariableDeclarator[init.callee.object.name='Object'][init.callee.property.name='freeze'])[declarations]", - "Program > VariableDeclaration > .declarations > ArrowFunctionExpression", - ], - require: {FunctionDeclaration: true, FunctionExpression: true}, - }, - ], - "jsdoc/require-param": ["warn"], - "jsdoc/require-param-description": ["off"], - "jsdoc/require-param-name": ["warn"], - "jsdoc/require-param-type": ["warn"], - "jsdoc/require-property": ["warn"], - "jsdoc/require-property-description": ["off"], - "jsdoc/require-property-name": ["warn"], - "jsdoc/require-property-type": ["warn"], - "jsdoc/require-returns": ["warn"], - "jsdoc/require-returns-check": ["warn"], - "jsdoc/require-returns-description": ["off"], - "jsdoc/require-returns-type": ["warn"], - "jsdoc/require-throws": ["warn"], - "jsdoc/require-yields": ["warn"], - "jsdoc/require-yields-check": ["warn"], - "jsdoc/sort-tags": ["warn"], - "jsdoc/tag-lines": [ - "warn", - "any", - {startLines: 1}, - ], - "jsdoc/valid-types": ["warn"], - }, - settings: { - jsdoc: { - mode: "typescript", - tagNamePreference: { - returns: "return", - }, + "jsdoc/check-access": ["warn"], + "jsdoc/check-alignment": ["warn"], + "jsdoc/check-examples": ["off"], + "jsdoc/check-indentation": ["off"], + "jsdoc/check-line-alignment": ["warn"], + "jsdoc/check-param-names": [ + "warn", + {checkRestProperty: true}, + ], + "jsdoc/check-property-names": ["warn"], + "jsdoc/check-syntax": ["off"], + "jsdoc/check-tag-names": ["warn"], + "jsdoc/check-types": ["warn"], + "jsdoc/check-values": ["warn"], + "jsdoc/empty-tags": ["warn"], + "jsdoc/implements-on-classes": ["warn"], + "jsdoc/informative-docs": ["warn"], + "jsdoc/match-description": ["off"], + "jsdoc/match-name": ["off"], + "jsdoc/multiline-blocks": "warn", + "jsdoc/no-bad-blocks": ["off"], + "jsdoc/no-blank-blocks": "warn", + "jsdoc/no-blank-block-descriptions": ["off"], + "jsdoc/no-defaults": "warn", + "jsdoc/no-missing-syntax": ["off"], + "jsdoc/no-multi-asterisks": "warn", + "jsdoc/no-restricted-syntax": ["off"], + "jsdoc/no-types": ["off"], + "jsdoc/no-undefined-types": ["off"], + "jsdoc/require-asterisk-prefix": ["warn"], + "jsdoc/require-description": [ + "warn", + {checkConstructors: false, checkGetters: false, checkSetters: false}, + ], + "jsdoc/require-description-complete-sentence": ["off"], + "jsdoc/require-example": ["off"], + "jsdoc/require-file-overview": ["off"], + "jsdoc/require-hyphen-before-param-description": [ + "warn", + "never", + ], + "jsdoc/require-jsdoc": [ + "warn", + { + contexts: [ + ":has(VariableDeclarator[init.callee.object.name='Object'][init.callee.property.name='freeze'])[declarations]", + "Program > VariableDeclaration > .declarations > ArrowFunctionExpression", + ], + require: {FunctionDeclaration: true, FunctionExpression: true}, + }, + ], + "jsdoc/require-param": ["warn"], + "jsdoc/require-param-description": ["off"], + "jsdoc/require-param-name": ["warn"], + "jsdoc/require-param-type": ["warn"], + "jsdoc/require-property": ["warn"], + "jsdoc/require-property-description": ["off"], + "jsdoc/require-property-name": ["warn"], + "jsdoc/require-property-type": ["warn"], + "jsdoc/require-returns": ["warn"], + "jsdoc/require-returns-check": ["warn"], + "jsdoc/require-returns-description": ["off"], + "jsdoc/require-returns-type": ["warn"], + "jsdoc/require-throws": ["warn"], + "jsdoc/require-yields": ["warn"], + "jsdoc/require-yields-check": ["warn"], + "jsdoc/sort-tags": ["warn"], + "jsdoc/tag-lines": [ + "warn", + "any", + {startLines: 1}, + ], + "jsdoc/valid-types": ["warn"], + }, + settings: { + jsdoc: { + mode: "typescript", + tagNamePreference: { + returns: "return", }, }, }, -]; +}]; export default config; From 0774e26d16889127552289a61d94cbe376964d3e Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 03:43:45 -0500 Subject: [PATCH 17/65] Migrate meteor config. --- meteor.js | 18 ------------------ meteor.mjs | 28 ++++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 18 deletions(-) delete mode 100644 meteor.js create mode 100644 meteor.mjs diff --git a/meteor.js b/meteor.js deleted file mode 100644 index 51f5dbb..0000000 --- a/meteor.js +++ /dev/null @@ -1,18 +0,0 @@ -module.exports = { - env: { - node: true, - meteor: true, - jest: true, - }, - extends: [ - "./react", - ], - settings: { - "import/core-modules": [ - "meteor/meteor", - "meteor/mongo", - "meteor/accounts-base", - "meteor/react-meteor-data", - ], - }, -}; diff --git a/meteor.mjs b/meteor.mjs new file mode 100644 index 0000000..122386f --- /dev/null +++ b/meteor.mjs @@ -0,0 +1,28 @@ +import globals from "globals"; + +import ReactConfig from "./react.mjs"; + + +const config = [ + ...ReactConfig, + { + languageOptions: { + globals: { + ...globals.jest, + ...globals.meteor, + ...globals.node, + }, + }, + settings: { + "import/core-modules": [ + "meteor/meteor", + "meteor/mongo", + "meteor/accounts-base", + "meteor/react-meteor-data", + ], + }, + }, +]; + + +export default config; From 1d0d5a01fb2038fcd71985b76da6a227922dcb31 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 04:18:12 -0500 Subject: [PATCH 18/65] Migrate typescript config. --- package-lock.json | 499 +++++++++++++++++++++++++++++++++++++++++++++- package.json | 3 +- typescript.js | 61 ------ typescript.mjs | 50 +++++ 4 files changed, 550 insertions(+), 63 deletions(-) delete mode 100644 typescript.js create mode 100644 typescript.mjs diff --git a/package-lock.json b/package-lock.json index 9399638..d0bcdc0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,8 @@ "eslint-plugin-react": "^7.37.3", "eslint-plugin-react-hooks": "^5.1.0", "eslint-plugin-simple-import-sort": "^12.1.1", - "globals": "^15.14.0" + "globals": "^15.14.0", + "typescript-eslint": "^8.18.2" } }, "node_modules/@es-joy/jsdoccomment": { @@ -243,6 +244,44 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "peer": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/@pkgr/core": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", @@ -330,6 +369,225 @@ "license": "MIT", "peer": true }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.18.2.tgz", + "integrity": "sha512-adig4SzPLjeQ0Tm+jvsozSGiCliI2ajeURDGHjZ2llnA+A67HihCQ+a3amtPhUakd1GlwHxSRvzOZktbEvhPPg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.18.2", + "@typescript-eslint/type-utils": "8.18.2", + "@typescript-eslint/utils": "8.18.2", + "@typescript-eslint/visitor-keys": "8.18.2", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.18.2.tgz", + "integrity": "sha512-y7tcq4StgxQD4mDr9+Jb26dZ+HTZ/SkfqpXSiqeUXZHxOUyjWDKsmwKhJ0/tApR08DgOhrFAoAhyB80/p3ViuA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@typescript-eslint/scope-manager": "8.18.2", + "@typescript-eslint/types": "8.18.2", + "@typescript-eslint/typescript-estree": "8.18.2", + "@typescript-eslint/visitor-keys": "8.18.2", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.18.2.tgz", + "integrity": "sha512-YJFSfbd0CJjy14r/EvWapYgV4R5CHzptssoag2M7y3Ra7XNta6GPAJPPP5KGB9j14viYXyrzRO5GkX7CRfo8/g==", + "license": "MIT", + "peer": true, + "dependencies": { + "@typescript-eslint/types": "8.18.2", + "@typescript-eslint/visitor-keys": "8.18.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.18.2.tgz", + "integrity": "sha512-AB/Wr1Lz31bzHfGm/jgbFR0VB0SML/hd2P1yxzKDM48YmP7vbyJNHRExUE/wZsQj2wUCvbWH8poNHFuxLqCTnA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "8.18.2", + "@typescript-eslint/utils": "8.18.2", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.18.2.tgz", + "integrity": "sha512-Z/zblEPp8cIvmEn6+tPDIHUbRu/0z5lqZ+NvolL5SvXWT5rQy7+Nch83M0++XzO0XrWRFWECgOAyE8bsJTl1GQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.2.tgz", + "integrity": "sha512-WXAVt595HjpmlfH4crSdM/1bcsqh+1weFRWIa9XMTx/XHZ9TCKMcr725tLYqWOgzKdeDrqVHxFotrvWcEsk2Tg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@typescript-eslint/types": "8.18.2", + "@typescript-eslint/visitor-keys": "8.18.2", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.18.2.tgz", + "integrity": "sha512-Cr4A0H7DtVIPkauj4sTSXVl+VBWewE9/o40KcF3TV9aqDEOWoXF3/+oRXNby3DYzZeCATvbdksYsGZzplwnK/Q==", + "license": "MIT", + "peer": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.18.2", + "@typescript-eslint/types": "8.18.2", + "@typescript-eslint/typescript-estree": "8.18.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.2.tgz", + "integrity": "sha512-zORcwn4C3trOWiCqFQP1x6G3xTRyZ1LYydnj51cRnJ6hxBlr/cKPckk+PKPUw/fXmvfKTcw7bwY3w9izgx5jZw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@typescript-eslint/types": "8.18.2", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/acorn": { "version": "8.14.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", @@ -594,6 +852,19 @@ "concat-map": "0.0.1" } }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "peer": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/call-bind": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", @@ -1463,6 +1734,36 @@ "license": "MIT", "peer": true }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "license": "MIT", + "peer": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "peer": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -1477,6 +1778,16 @@ "license": "MIT", "peer": true }, + "node_modules/fastq": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", + "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", + "license": "ISC", + "peer": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, "node_modules/file-entry-cache": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", @@ -1490,6 +1801,19 @@ "node": ">=16.0.0" } }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "peer": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -1678,6 +2002,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "license": "MIT", + "peer": true + }, "node_modules/has-bigints": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", @@ -2023,6 +2354,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/is-number-object": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", @@ -2367,6 +2708,43 @@ "node": ">= 0.4" } }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "peer": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -2685,6 +3063,27 @@ "node": ">=6" } }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "peer": true + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -2765,6 +3164,41 @@ "node": ">=4" } }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "license": "MIT", + "peer": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, "node_modules/safe-array-concat": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", @@ -3142,6 +3576,32 @@ "url": "https://opencollective.com/unts" } }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", @@ -3253,6 +3713,43 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/typescript": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.18.2.tgz", + "integrity": "sha512-KuXezG6jHkvC3MvizeXgupZzaG5wjhU3yE8E7e6viOvAvD9xAWYp8/vy0WULTGe9DYDWcQu7aW03YIV3mSitrQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.18.2", + "@typescript-eslint/parser": "8.18.2", + "@typescript-eslint/utils": "8.18.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, "node_modules/unbox-primitive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", diff --git a/package.json b/package.json index 4a20e3c..0479200 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "eslint-plugin-react": "^7.37.3", "eslint-plugin-react-hooks": "^5.1.0", "eslint-plugin-simple-import-sort": "^12.1.1", - "globals": "^15.14.0" + "globals": "^15.14.0", + "typescript-eslint": "^8.18.2" } } diff --git a/typescript.js b/typescript.js deleted file mode 100644 index ddc3ac5..0000000 --- a/typescript.js +++ /dev/null @@ -1,61 +0,0 @@ -/* eslint-disable sort-keys */ -module.exports = { - env: { - node: true, - }, - extends: [ - "plugin:@typescript-eslint/strict-type-checked", - "plugin:import/typescript", - ], - plugins: [ - "@typescript-eslint", - ], - parser: "@typescript-eslint/parser", - parserOptions: { - project: "tsconfig.json", - }, - settings: { - "import/resolver": { - typescript: { - alwaysTryTypes: true, - project: "tsconfig.json", - }, - }, - }, - rules: { - "no-restricted-syntax": "off", - - // No need to specify types in docs in TS - "jsdoc/no-types": [ - "warn", - ], - "jsdoc/check-types": [ - "off", - ], - "jsdoc/require-param-type": [ - "off", - ], - "jsdoc/require-property-type": [ - "off", - ], - "jsdoc/require-returns-type": [ - "off", - ], - - "no-shadow": [ - "off", - ], - "@typescript-eslint/no-shadow": [ - "error", - ], - "@typescript-eslint/restrict-template-expressions": [ - "error", - { - allowNumber: true, - }, - ], - "@typescript-eslint/no-unnecessary-boolean-literal-compare": "off", - "@typescript-eslint/member-ordering": "error", - }, -}; -/* eslint-enable sort-keys */ diff --git a/typescript.mjs b/typescript.mjs new file mode 100644 index 0000000..4d29910 --- /dev/null +++ b/typescript.mjs @@ -0,0 +1,50 @@ +import importPlugin from "eslint-plugin-import"; +import tseslint from "typescript-eslint"; + + +const Config = [ + ...tseslint.configs.strictTypeChecked, + ...importPlugin.flatConfigs.typescript, + { + languageOptions: { + parser: tseslint.parser, + parserOptions: { + project: "tsconfig.json", + }, + }, + plugins: { + "@typescript-eslint": tseslint.plugin, + }, + rules: { + "jsdoc/check-types": ["off"], + "jsdoc/no-types": ["warn"], + "jsdoc/require-param-type": ["off"], + "jsdoc/require-property-type": ["off"], + "jsdoc/require-returns-type": ["off"], + + "no-restricted-syntax": ["off"], + "no-shadow": ["off"], + + "@typescript-eslint/member-ordering": "error", + "@typescript-eslint/no-shadow": ["error"], + "@typescript-eslint/no-unnecessary-boolean-literal-compare": "off", + "@typescript-eslint/restrict-template-expressions": [ + "error", + { + allowNumber: true, + }, + ], + }, + settings: { + "import/resolver": { + typescript: { + alwaysTryTypes: true, + project: "tsconfig.json", + }, + }, + }, + }, +]; + + +export default Config; From a5c5fb208a239d0995f985568bcb86b36890a150 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 04:22:13 -0500 Subject: [PATCH 19/65] Fix bare object / file naming. --- _common.mjs => CommonConfig.mjs | 4 ++-- jest.mjs => JestConfig.mjs | 4 ++-- meteor.mjs => MeteorConfig.mjs | 6 +++--- node.mjs => NodeConfig.mjs | 6 +++--- react.mjs => ReactConfig.mjs | 6 +++--- typescript.mjs => TsConfig.mjs | 4 ++-- eslint.config.mjs | 2 +- 7 files changed, 16 insertions(+), 16 deletions(-) rename _common.mjs => CommonConfig.mjs (99%) rename jest.mjs => JestConfig.mjs (87%) rename meteor.mjs => MeteorConfig.mjs (83%) rename node.mjs => NodeConfig.mjs (65%) rename react.mjs => ReactConfig.mjs (98%) rename typescript.mjs => TsConfig.mjs (96%) diff --git a/_common.mjs b/CommonConfig.mjs similarity index 99% rename from _common.mjs rename to CommonConfig.mjs index 827c03d..883db73 100644 --- a/_common.mjs +++ b/CommonConfig.mjs @@ -9,7 +9,7 @@ import NoAutofixPlugin from "eslint-plugin-no-autofix"; import SimpleImportSortPlugin from "eslint-plugin-simple-import-sort"; -const config = [{ +const CommonConfig = [{ languageOptions: { ecmaVersion: "latest", sourceType: "module", @@ -679,4 +679,4 @@ const config = [{ }]; -export default config; +export default CommonConfig; diff --git a/jest.mjs b/JestConfig.mjs similarity index 87% rename from jest.mjs rename to JestConfig.mjs index fc90511..15eebd3 100644 --- a/jest.mjs +++ b/JestConfig.mjs @@ -1,7 +1,7 @@ import globals from "globals"; -const config = [{ +const JestConfig = [{ languageOptions: { globals: { ...globals.jest, @@ -20,4 +20,4 @@ const config = [{ }]; -export default config; +export default JestConfig; diff --git a/meteor.mjs b/MeteorConfig.mjs similarity index 83% rename from meteor.mjs rename to MeteorConfig.mjs index 122386f..804c3bc 100644 --- a/meteor.mjs +++ b/MeteorConfig.mjs @@ -1,9 +1,9 @@ import globals from "globals"; -import ReactConfig from "./react.mjs"; +import ReactConfig from "./ReactConfig.mjs"; -const config = [ +const MeteorConfig = [ ...ReactConfig, { languageOptions: { @@ -25,4 +25,4 @@ const config = [ ]; -export default config; +export default MeteorConfig; diff --git a/node.mjs b/NodeConfig.mjs similarity index 65% rename from node.mjs rename to NodeConfig.mjs index 0e4d59e..bc3ef6e 100644 --- a/node.mjs +++ b/NodeConfig.mjs @@ -1,9 +1,9 @@ import globals from "globals"; -import CommonConfig from "./_common.mjs"; +import CommonConfig from "./CommonConfig.mjs"; -const config = [ +const NodeConfig = [ ...CommonConfig, { languageOptions: { @@ -15,4 +15,4 @@ const config = [ ]; -export default config; +export default NodeConfig; diff --git a/react.mjs b/ReactConfig.mjs similarity index 98% rename from react.mjs rename to ReactConfig.mjs index b3e1e5a..d05bdd1 100644 --- a/react.mjs +++ b/ReactConfig.mjs @@ -3,10 +3,10 @@ import ReactPlugin from "eslint-plugin-react"; import ReactHooksPlugin from "eslint-plugin-react-hooks"; import globals from "globals"; -import CommonConfig from "./_common.mjs"; +import CommonConfig from "./CommonConfig.mjs"; -const config = [ +const ReactConfig = [ ...CommonConfig, { languageOptions: { @@ -219,4 +219,4 @@ const config = [ ]; -export default config; +export default ReactConfig; diff --git a/typescript.mjs b/TsConfig.mjs similarity index 96% rename from typescript.mjs rename to TsConfig.mjs index 4d29910..77d5b35 100644 --- a/typescript.mjs +++ b/TsConfig.mjs @@ -2,7 +2,7 @@ import importPlugin from "eslint-plugin-import"; import tseslint from "typescript-eslint"; -const Config = [ +const TsConfig = [ ...tseslint.configs.strictTypeChecked, ...importPlugin.flatConfigs.typescript, { @@ -47,4 +47,4 @@ const Config = [ ]; -export default Config; +export default TsConfig; diff --git a/eslint.config.mjs b/eslint.config.mjs index 6964572..82054f7 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,4 +1,4 @@ -import NodeConfig from "./node.mjs"; +import NodeConfig from "./NodeConfig.mjs"; const config = [ From b8195423d1a59fb928b5a895aa4b82ff687620a9 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 04:24:20 -0500 Subject: [PATCH 20/65] Fix import naming. --- CommonConfig.mjs | 4 ++-- ReactConfig.mjs | 8 ++++---- TsConfig.mjs | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/CommonConfig.mjs b/CommonConfig.mjs index 883db73..27b2855 100644 --- a/CommonConfig.mjs +++ b/CommonConfig.mjs @@ -2,7 +2,7 @@ import StylisticJsPlugin from "@stylistic/eslint-plugin-js"; import StylisticPlusPlugin from "@stylistic/eslint-plugin-plus"; -import ImportPlugin from "eslint-plugin-import"; +import importPlugin from "eslint-plugin-import"; import ImportNewlinesPlugin from "eslint-plugin-import-newlines"; import JsdocPlugin from "eslint-plugin-jsdoc"; import NoAutofixPlugin from "eslint-plugin-no-autofix"; @@ -22,7 +22,7 @@ const CommonConfig = [{ plugins: { "@stylistic/js": StylisticJsPlugin, "@stylistic/plus": StylisticPlusPlugin, - "import": ImportPlugin, + "import": importPlugin, "import-newlines": ImportNewlinesPlugin, "jsdoc": JsdocPlugin, "no-autofix": NoAutofixPlugin, diff --git a/ReactConfig.mjs b/ReactConfig.mjs index d05bdd1..f8ec77b 100644 --- a/ReactConfig.mjs +++ b/ReactConfig.mjs @@ -1,6 +1,6 @@ import StylisticJsxPlugin from "@stylistic/eslint-plugin-jsx"; -import ReactPlugin from "eslint-plugin-react"; -import ReactHooksPlugin from "eslint-plugin-react-hooks"; +import reactPlugin from "eslint-plugin-react"; +import reactHooksPlugin from "eslint-plugin-react-hooks"; import globals from "globals"; import CommonConfig from "./CommonConfig.mjs"; @@ -22,8 +22,8 @@ const ReactConfig = [ }, plugins: { "@stylistic/jsx": StylisticJsxPlugin, - "react-hooks": ReactHooksPlugin, - "react": ReactPlugin, + "react-hooks": reactHooksPlugin, + "react": reactPlugin, }, rules: { "@stylistic/jsx/jsx-child-element-spacing": ["error"], diff --git a/TsConfig.mjs b/TsConfig.mjs index 77d5b35..8897f49 100644 --- a/TsConfig.mjs +++ b/TsConfig.mjs @@ -1,19 +1,19 @@ import importPlugin from "eslint-plugin-import"; -import tseslint from "typescript-eslint"; +import TsEslint from "typescript-eslint"; const TsConfig = [ - ...tseslint.configs.strictTypeChecked, + ...TsEslint.configs.strictTypeChecked, ...importPlugin.flatConfigs.typescript, { languageOptions: { - parser: tseslint.parser, + parser: TsEslint.parser, parserOptions: { project: "tsconfig.json", }, }, plugins: { - "@typescript-eslint": tseslint.plugin, + "@typescript-eslint": TsEslint.plugin, }, rules: { "jsdoc/check-types": ["off"], From 31f284c869c360f212900c556835b2ee152f9388 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 04:41:24 -0500 Subject: [PATCH 21/65] Fix export naming. --- eslint.config.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 82054f7..f9de8b5 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,9 +1,9 @@ import NodeConfig from "./NodeConfig.mjs"; -const config = [ +const EslintConfig = [ ...NodeConfig, ]; -export default config; +export default EslintConfig; From fd12f8c7c548009b2bf846076d546e1a3e410e52 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 04:42:16 -0500 Subject: [PATCH 22/65] Extract Stylistic rules into a separate config, which also adds Stylistic rules to TS. --- CommonConfig.mjs | 241 +------------------------------- NodeConfig.mjs | 2 + ReactConfig.mjs | 85 +----------- StylisticConfig.mjs | 331 ++++++++++++++++++++++++++++++++++++++++++++ TsConfig.mjs | 5 + package-lock.json | 261 +++++++++++++++++++++------------- package.json | 4 +- 7 files changed, 507 insertions(+), 422 deletions(-) create mode 100644 StylisticConfig.mjs diff --git a/CommonConfig.mjs b/CommonConfig.mjs index 27b2855..43e6d0f 100644 --- a/CommonConfig.mjs +++ b/CommonConfig.mjs @@ -1,7 +1,5 @@ -/* eslint-disable sort-keys, max-lines, no-magic-numbers */ +/* eslint-disable max-lines */ -import StylisticJsPlugin from "@stylistic/eslint-plugin-js"; -import StylisticPlusPlugin from "@stylistic/eslint-plugin-plus"; import importPlugin from "eslint-plugin-import"; import ImportNewlinesPlugin from "eslint-plugin-import-newlines"; import JsdocPlugin from "eslint-plugin-jsdoc"; @@ -20,8 +18,6 @@ const CommonConfig = [{ }, }, plugins: { - "@stylistic/js": StylisticJsPlugin, - "@stylistic/plus": StylisticPlusPlugin, "import": importPlugin, "import-newlines": ImportNewlinesPlugin, "jsdoc": JsdocPlugin, @@ -342,238 +338,7 @@ const CommonConfig = [{ "always", ], - "@stylistic/js/array-bracket-newline": [ - "error", - "consistent", - ], - "@stylistic/js/array-bracket-spacing": [ - "error", - "never", - ], - "@stylistic/js/array-element-newline": [ - "error", - {ArrayExpression: "always", ArrayPattern: {minItems: 3}}, - ], - "@stylistic/js/arrow-parens": ["error"], - "@stylistic/js/arrow-spacing": ["error"], - "@stylistic/js/block-spacing": ["error"], - "@stylistic/js/brace-style": [ - "error", - "1tbs", - {allowSingleLine: true}, - ], - "@stylistic/js/comma-dangle": [ - "warn", - { - arrays: "always-multiline", - exports: "always-multiline", - functions: "only-multiline", - imports: "always-multiline", - objects: "always-multiline", - }, - ], - "@stylistic/js/comma-spacing": ["error"], - "@stylistic/js/comma-style": ["error"], - "@stylistic/js/computed-property-spacing": ["error"], - "@stylistic/js/dot-location": [ - "error", - "property", - ], - "@stylistic/js/eol-last": [ - "error", - "always", - ], - "@stylistic/js/func-call-spacing": ["off"], - "@stylistic/js/function-call-argument-newline": [ - "error", - "consistent", - ], - "@stylistic/js/function-call-spacing": ["error"], - "@stylistic/js/function-paren-newline": [ - "error", - "multiline-arguments", - ], - "@stylistic/js/generator-star-spacing": ["error"], - "@stylistic/js/implicit-arrow-linebreak": ["error"], - "@stylistic/js/indent": [ - "error", - 4, - { - SwitchCase: 1, - flatTernaryExpressions: false, - offsetTernaryExpressions: false, - ignoreComments: false, - }, - ], - "@stylistic/js/jsx-quotes": ["error"], - "@stylistic/js/key-spacing": [ - "error", - {afterColon: true}, - ], - "@stylistic/js/keyword-spacing": ["error"], - "@stylistic/js/line-comment-position": ["error"], - "@stylistic/js/linebreak-style": [ - "error", - "unix", - ], - "@stylistic/js/lines-around-comment": [ - "error", - { - ignorePattern: "c8|Enum", - beforeBlockComment: true, - afterBlockComment: false, - beforeLineComment: true, - afterLineComment: false, - afterHashbangComment: true, - allowBlockStart: true, - allowBlockEnd: true, - allowClassStart: true, - allowClassEnd: true, - allowObjectStart: true, - allowObjectEnd: true, - allowArrayStart: true, - allowArrayEnd: true, - }, - ], - "@stylistic/js/lines-between-class-members": ["error"], - "@stylistic/js/max-len": [ - "warn", - { - code: 100, - tabWidth: 4, - comments: 100, - ignoreComments: false, - ignoreTrailingComments: false, - ignoreUrls: true, - ignoreStrings: false, - ignoreTemplateLiterals: false, - ignoreRegExpLiterals: true, - }, - ], - "@stylistic/js/max-statements-per-line": ["error"], - "@stylistic/js/multiline-comment-style": ["off"], - "@stylistic/js/multiline-ternary": ["error"], - "@stylistic/js/new-parens": ["error"], - "@stylistic/js/newline-per-chained-call": ["error"], - "@stylistic/js/no-confusing-arrow": ["error"], - "@stylistic/js/no-extra-parens": [ - "error", - "functions", - ], - "@stylistic/js/no-extra-semi": ["error"], - "@stylistic/js/no-floating-decimal": ["error"], - "@stylistic/js/no-mixed-operators": ["error"], - "@stylistic/js/no-mixed-spaces-and-tabs": ["error"], - "@stylistic/js/no-multi-spaces": ["error"], - "@stylistic/js/no-multiple-empty-lines": [ - "error", - {max: 2, maxBOF: 0, maxEOF: 0}, - ], - "@stylistic/js/no-tabs": ["error"], - "@stylistic/js/no-trailing-spaces": ["error"], - "@stylistic/js/no-whitespace-before-property": ["error"], - "@stylistic/js/nonblock-statement-body-position": ["error"], - "@stylistic/js/object-curly-newline": [ - "error", - { - ImportDeclaration: {consistent: false, minProperties: 2, multiline: true}, - ExportDeclaration: {consistent: false, minProperties: 2, multiline: true}, - }, - ], - "@stylistic/js/object-curly-spacing": [ - "error", - "never", - ], - "@stylistic/js/object-property-newline": [ - "error", - {allowAllPropertiesOnSameLine: true, allowMultiplePropertiesPerLine: false}, - ], - "@stylistic/js/one-var-declaration-per-line": ["error"], - "@stylistic/js/operator-linebreak": [ - "error", - "after", - ], - "@stylistic/js/padded-blocks": [ - "error", - "never", - ], - "@stylistic/js/padding-line-between-statements": [ - "warn", - {blankLine: "always", next: "return", prev: "*"}, - { - blankLine: "always", - prev: [ - "export", - "const", - "let", - "var", - "function", - ], - next: "*", - }, - { - blankLine: "any", - prev: [ - "singleline-const", - "singleline-let", - "singleline-var", - ], - next: "*", - }, - { - blankLine: "any", - next: [ - "export", - "const", - "let", - "var", - ], - prev: [ - "export", - "const", - "let", - "var", - ], - }, - ], - "@stylistic/js/quote-props": [ - "error", - "consistent-as-needed", - ], - "@stylistic/js/quotes": [ - "warn", - "double", - {avoidEscape: true}, - ], - "@stylistic/js/rest-spread-spacing": ["error"], - "@stylistic/js/semi": ["error"], - "@stylistic/js/semi-spacing": ["error"], - "@stylistic/js/semi-style": ["error"], - "@stylistic/js/space-before-blocks": ["error"], - "@stylistic/js/space-before-function-paren": ["error"], - "@stylistic/js/space-in-parens": ["error"], - "@stylistic/js/space-infix-ops": ["error"], - "@stylistic/js/space-unary-ops": ["error"], - "@stylistic/js/spaced-comment": [ - "error", - "always", - {block: {balanced: true}}, - ], - "@stylistic/js/switch-colon-spacing": ["error"], - "@stylistic/js/template-curly-spacing": ["error"], - "@stylistic/js/template-tag-spacing": ["error"], - "@stylistic/js/wrap-iife": ["error"], - "@stylistic/js/wrap-regex": ["error"], - "@stylistic/js/yield-star-spacing": ["error"], - - "@stylistic/plus/curly-newline": [ - "error", - "always", - ], - "@stylistic/plus/indent-binary-ops": ["off"], - "@stylistic/plus/type-generic-spacing": ["error"], - "@stylistic/plus/type-named-tuple-spacing": ["error"], - + "import/named": ["error"], "import-newlines/enforce": [ "error", {items: 1}, @@ -586,7 +351,7 @@ const CommonConfig = [{ "error", {ignore: ["^/imports"], caseSensitive: true, caseSensitiveStrict: false}, ], - "import/named": ["error"], + "import/namespace": ["error"], "import/default": ["error"], "import/export": ["error"], diff --git a/NodeConfig.mjs b/NodeConfig.mjs index bc3ef6e..4f63bb0 100644 --- a/NodeConfig.mjs +++ b/NodeConfig.mjs @@ -1,10 +1,12 @@ import globals from "globals"; import CommonConfig from "./CommonConfig.mjs"; +import StylisticConfig from "./StylisticConfig.mjs"; const NodeConfig = [ ...CommonConfig, + ...StylisticConfig, { languageOptions: { globals: { diff --git a/ReactConfig.mjs b/ReactConfig.mjs index f8ec77b..45999f0 100644 --- a/ReactConfig.mjs +++ b/ReactConfig.mjs @@ -1,9 +1,9 @@ -import StylisticJsxPlugin from "@stylistic/eslint-plugin-jsx"; import reactPlugin from "eslint-plugin-react"; import reactHooksPlugin from "eslint-plugin-react-hooks"; import globals from "globals"; import CommonConfig from "./CommonConfig.mjs"; +import StylisticConfig from "./StylisticConfig.mjs"; const ReactConfig = [ @@ -21,92 +21,10 @@ const ReactConfig = [ }, }, plugins: { - "@stylistic/jsx": StylisticJsxPlugin, "react-hooks": reactHooksPlugin, "react": reactPlugin, }, rules: { - "@stylistic/jsx/jsx-child-element-spacing": ["error"], - "@stylistic/jsx/jsx-closing-bracket-location": [ - "error", - { - nonEmpty: "tag-aligned", - selfClosing: "after-props", - }, - ], - "@stylistic/jsx/jsx-closing-tag-location": ["error"], - "@stylistic/jsx/jsx-curly-brace-presence": [ - "error", - { - props: "always", - children: "ignore", - }, - ], - "@stylistic/jsx/jsx-curly-newline": [ - "error", - { - multiline: "consistent", - singleline: "forbid", - }, - ], - "@stylistic/jsx/jsx-curly-spacing": ["error"], - "@stylistic/jsx/jsx-equals-spacing": ["error"], - "@stylistic/jsx/jsx-first-prop-new-line": [ - "error", - "multiline", - ], - "@stylistic/jsx/jsx-function-call-newline": [ - "error", - "multiline", - ], - "@stylistic/jsx/jsx-indent": ["error"], - "@stylistic/jsx/jsx-indent-props": ["error"], - "@stylistic/jsx/jsx-max-props-per-line": [ - "error", - { - maximum: 1, - when: "always", - }, - ], - "@stylistic/jsx/jsx-newline": ["off"], - "@stylistic/jsx/jsx-one-expression-per-line": [ - "error", - { - allow: "literal", - }, - ], - "@stylistic/jsx/jsx-pascal-case": ["error"], - "@stylistic/jsx/jsx-props-no-multi-spaces": ["off"], - "@stylistic/jsx/jsx-self-closing-comp": ["error"], - "@stylistic/jsx/jsx-sort-props": [ - "error", - { - callbacksLast: true, - ignoreCase: true, - locale: "auto", - multiline: "last", - shorthandFirst: true, - }, - ], - "@stylistic/jsx/jsx-tag-spacing": [ - "error", - { - closingSlash: "never", - beforeSelfClosing: "never", - afterOpening: "never", - beforeClosing: "never", - }, - ], - "@stylistic/jsx/jsx-wrap-multilines": [ - "error", - { - arrow: "parens-new-line", - assignment: "parens-new-line", - declaration: "parens-new-line", - return: "parens-new-line", - }, - ], - "react-hooks/exhaustive-deps": ["warn"], "react-hooks/rules-of-hooks": ["error"], @@ -216,6 +134,7 @@ const ReactConfig = [ }], }, }, + ...StylisticConfig, ]; diff --git a/StylisticConfig.mjs b/StylisticConfig.mjs new file mode 100644 index 0000000..2b2bb06 --- /dev/null +++ b/StylisticConfig.mjs @@ -0,0 +1,331 @@ +/* eslint-disable max-lines, no-magic-numbers */ + +import StylisticPlugin from "@stylistic/eslint-plugin"; + + +const StylisticConfig = [ + StylisticPlugin.configs["disable-legacy"], + { + plugins: { + "@stylistic": StylisticPlugin, + }, + rules: { + "@stylistic/array-bracket-newline": [ + "error", + "consistent", + ], + "@stylistic/array-bracket-spacing": [ + "error", + "never", + ], + "@stylistic/array-element-newline": [ + "error", + {ArrayExpression: "always", ArrayPattern: {minItems: 3}}, + ], + "@stylistic/arrow-parens": ["error"], + "@stylistic/arrow-spacing": ["error"], + "@stylistic/block-spacing": ["error"], + "@stylistic/brace-style": [ + "error", + "1tbs", + {allowSingleLine: true}, + ], + "@stylistic/comma-dangle": [ + "warn", + { + arrays: "always-multiline", + exports: "always-multiline", + functions: "only-multiline", + imports: "always-multiline", + objects: "always-multiline", + }, + ], + "@stylistic/comma-spacing": ["error"], + "@stylistic/comma-style": ["error"], + "@stylistic/computed-property-spacing": ["error"], + "@stylistic/dot-location": [ + "error", + "property", + ], + "@stylistic/eol-last": [ + "error", + "always", + ], + "@stylistic/func-call-spacing": ["off"], + "@stylistic/function-call-argument-newline": [ + "error", + "consistent", + ], + "@stylistic/function-call-spacing": ["error"], + "@stylistic/function-paren-newline": [ + "error", + "multiline-arguments", + ], + "@stylistic/generator-star-spacing": ["error"], + "@stylistic/implicit-arrow-linebreak": ["error"], + "@stylistic/indent": [ + "error", + 4, + { + SwitchCase: 1, + flatTernaryExpressions: false, + offsetTernaryExpressions: false, + ignoreComments: false, + }, + ], + "@stylistic/jsx-quotes": ["error"], + "@stylistic/key-spacing": [ + "error", + {afterColon: true}, + ], + "@stylistic/keyword-spacing": ["error"], + "@stylistic/line-comment-position": ["error"], + "@stylistic/linebreak-style": [ + "error", + "unix", + ], + "@stylistic/lines-around-comment": [ + "error", + { + /* eslint-disable sort-keys */ + ignorePattern: "c8|Enum", + beforeBlockComment: true, + afterBlockComment: false, + beforeLineComment: true, + afterLineComment: false, + afterHashbangComment: true, + allowBlockStart: true, + allowBlockEnd: true, + allowClassStart: true, + allowClassEnd: true, + allowObjectStart: true, + allowObjectEnd: true, + allowArrayStart: true, + allowArrayEnd: true, + /* eslint-enable sort-keys */ + }, + ], + "@stylistic/lines-between-class-members": ["error"], + "@stylistic/max-len": [ + "warn", + { + code: 100, + comments: 100, + ignoreComments: false, + ignoreRegExpLiterals: true, + ignoreStrings: false, + ignoreTemplateLiterals: false, + ignoreTrailingComments: false, + ignoreUrls: true, + tabWidth: 4, + }, + ], + "@stylistic/max-statements-per-line": ["error"], + "@stylistic/multiline-comment-style": ["off"], + "@stylistic/multiline-ternary": ["error"], + "@stylistic/new-parens": ["error"], + "@stylistic/newline-per-chained-call": ["error"], + "@stylistic/no-confusing-arrow": ["error"], + "@stylistic/no-extra-parens": [ + "error", + "functions", + ], + "@stylistic/no-extra-semi": ["error"], + "@stylistic/no-floating-decimal": ["error"], + "@stylistic/no-mixed-operators": ["error"], + "@stylistic/no-mixed-spaces-and-tabs": ["error"], + "@stylistic/no-multi-spaces": ["error"], + "@stylistic/no-multiple-empty-lines": [ + "error", + {max: 2, maxBOF: 0, maxEOF: 0}, + ], + "@stylistic/no-tabs": ["error"], + "@stylistic/no-trailing-spaces": ["error"], + "@stylistic/no-whitespace-before-property": ["error"], + "@stylistic/nonblock-statement-body-position": ["error"], + "@stylistic/object-curly-newline": [ + "error", + { + ImportDeclaration: {consistent: false, minProperties: 2, multiline: true}, + ExportDeclaration: {consistent: false, minProperties: 2, multiline: true}, + }, + ], + "@stylistic/object-curly-spacing": [ + "error", + "never", + ], + "@stylistic/object-property-newline": [ + "error", + {allowAllPropertiesOnSameLine: true, allowMultiplePropertiesPerLine: false}, + ], + "@stylistic/one-var-declaration-per-line": ["error"], + "@stylistic/operator-linebreak": [ + "error", + "after", + ], + "@stylistic/padded-blocks": [ + "error", + "never", + ], + "@stylistic/padding-line-between-statements": [ + "warn", + {blankLine: "always", next: "return", prev: "*"}, + { + blankLine: "always", + prev: [ + "export", + "const", + "let", + "var", + "function", + ], + next: "*", + }, + { + blankLine: "any", + prev: [ + "singleline-const", + "singleline-let", + "singleline-var", + ], + next: "*", + }, + { + blankLine: "any", + next: [ + "export", + "const", + "let", + "var", + ], + prev: [ + "export", + "const", + "let", + "var", + ], + }, + ], + "@stylistic/quote-props": [ + "error", + "consistent-as-needed", + ], + "@stylistic/quotes": [ + "warn", + "double", + {avoidEscape: true}, + ], + "@stylistic/rest-spread-spacing": ["error"], + "@stylistic/semi": ["error"], + "@stylistic/semi-spacing": ["error"], + "@stylistic/semi-style": ["error"], + "@stylistic/space-before-blocks": ["error"], + "@stylistic/space-before-function-paren": ["error"], + "@stylistic/space-in-parens": ["error"], + "@stylistic/space-infix-ops": ["error"], + "@stylistic/space-unary-ops": ["error"], + "@stylistic/spaced-comment": [ + "error", + "always", + {block: {balanced: true}}, + ], + "@stylistic/switch-colon-spacing": ["error"], + "@stylistic/template-curly-spacing": ["error"], + "@stylistic/template-tag-spacing": ["error"], + "@stylistic/wrap-iife": ["error"], + "@stylistic/wrap-regex": ["error"], + "@stylistic/yield-star-spacing": ["error"], + + "@stylistic/jsx-child-element-spacing": ["error"], + "@stylistic/jsx-closing-bracket-location": [ + "error", + { + nonEmpty: "tag-aligned", + selfClosing: "after-props", + }, + ], + "@stylistic/jsx-closing-tag-location": ["error"], + "@stylistic/jsx-curly-brace-presence": [ + "error", + { + props: "always", + children: "ignore", + }, + ], + "@stylistic/jsx-curly-newline": [ + "error", + { + multiline: "consistent", + singleline: "forbid", + }, + ], + "@stylistic/jsx-curly-spacing": ["error"], + "@stylistic/jsx-equals-spacing": ["error"], + "@stylistic/jsx-first-prop-new-line": [ + "error", + "multiline", + ], + "@stylistic/jsx-function-call-newline": [ + "error", + "multiline", + ], + "@stylistic/jsx-indent": ["error"], + "@stylistic/jsx-indent-props": ["error"], + "@stylistic/jsx-max-props-per-line": [ + "error", + { + maximum: 1, + when: "always", + }, + ], + "@stylistic/jsx-newline": ["off"], + "@stylistic/jsx-one-expression-per-line": [ + "error", + { + allow: "literal", + }, + ], + "@stylistic/jsx-pascal-case": ["error"], + "@stylistic/jsx-props-no-multi-spaces": ["off"], + "@stylistic/jsx-self-closing-comp": ["error"], + "@stylistic/jsx-sort-props": [ + "error", + { + callbacksLast: true, + ignoreCase: true, + locale: "auto", + multiline: "last", + shorthandFirst: true, + }, + ], + "@stylistic/jsx-tag-spacing": [ + "error", + { + closingSlash: "never", + beforeSelfClosing: "never", + afterOpening: "never", + beforeClosing: "never", + }, + ], + "@stylistic/jsx-wrap-multilines": [ + "error", + { + arrow: "parens-new-line", + assignment: "parens-new-line", + declaration: "parens-new-line", + return: "parens-new-line", + }, + ], + + "@stylistic/curly-newline": [ + "error", + "always", + ], + "@stylistic/indent-binary-ops": ["off"], + "@stylistic/type-generic-spacing": ["error"], + "@stylistic/type-named-tuple-spacing": ["error"], + }, + }, +]; + +export default StylisticConfig; diff --git a/TsConfig.mjs b/TsConfig.mjs index 8897f49..9103fe6 100644 --- a/TsConfig.mjs +++ b/TsConfig.mjs @@ -1,8 +1,12 @@ import importPlugin from "eslint-plugin-import"; import TsEslint from "typescript-eslint"; +import CommonConfig from "./CommonConfig.mjs"; +import StylisticConfig from "./StylisticConfig.mjs"; + const TsConfig = [ + ...CommonConfig, ...TsEslint.configs.strictTypeChecked, ...importPlugin.flatConfigs.typescript, { @@ -44,6 +48,7 @@ const TsConfig = [ }, }, }, + ...StylisticConfig, ]; diff --git a/package-lock.json b/package-lock.json index d0bcdc0..428e3c9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,9 +8,7 @@ "name": "eslint-config-yscope", "version": "0.0.32", "peerDependencies": { - "@stylistic/eslint-plugin-js": "^2.12.1", - "@stylistic/eslint-plugin-jsx": "^2.12.1", - "@stylistic/eslint-plugin-plus": "^2.12.1", + "@stylistic/eslint-plugin": "^2.12.1", "eslint": "^9.17.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-import-newlines": "^1.4.0", @@ -95,6 +93,30 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@eslint/core": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.1.tgz", @@ -132,6 +154,17 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "14.0.0", "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", @@ -145,6 +178,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@eslint/js": { "version": "9.17.0", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.17.0.tgz", @@ -302,30 +348,14 @@ "license": "MIT", "peer": true }, - "node_modules/@stylistic/eslint-plugin-js": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-2.12.1.tgz", - "integrity": "sha512-5ybogtEgWIGCR6dMnaabztbWyVdAPDsf/5XOk6jBonWug875Q9/a6gm9QxnU3rhdyDEnckWKX7dduwYJMOWrVA==", - "license": "MIT", - "peer": true, - "dependencies": { - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "peerDependencies": { - "eslint": ">=8.40.0" - } - }, - "node_modules/@stylistic/eslint-plugin-jsx": { + "node_modules/@stylistic/eslint-plugin": { "version": "2.12.1", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-jsx/-/eslint-plugin-jsx-2.12.1.tgz", - "integrity": "sha512-VHqOF4bQ2iwUnRfmiP/CB3z3L9zFuV8Qi1q2fyEht7IjAt3IV/Ugm9EeSBPLcZd7ZjfISmWlcT1XbpnWIEFHEA==", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.12.1.tgz", + "integrity": "sha512-fubZKIHSPuo07FgRTn6S4Nl0uXPRPYVNpyZzIDGfp7Fny6JjNus6kReLD7NI380JXi4HtUTSOZ34LBuNPO1XLQ==", "license": "MIT", "peer": true, "dependencies": { + "@typescript-eslint/utils": "^8.13.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "estraverse": "^5.3.0", @@ -338,16 +368,6 @@ "eslint": ">=8.40.0" } }, - "node_modules/@stylistic/eslint-plugin-plus": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-plus/-/eslint-plugin-plus-2.12.1.tgz", - "integrity": "sha512-5eyCVo6h3ahlSjft6GOXvxdYwjh0VDfbk0cfXoqjPSHM4uutxHt6vyjGll6qdsjLeTCPAVl6XiygPCwtcblnwQ==", - "license": "MIT", - "peer": true, - "peerDependencies": { - "eslint": "*" - } - }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -507,45 +527,6 @@ "typescript": ">=4.8.4 <5.8.0" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "license": "MIT", - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", - "peer": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/utils": { "version": "8.18.2", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.18.2.tgz", @@ -842,14 +823,13 @@ "peer": true }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "license": "MIT", "peer": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "node_modules/braces": { @@ -1483,6 +1463,17 @@ "eslint": ">=6.0.0" } }, + "node_modules/eslint-plugin-import/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/eslint-plugin-import/node_modules/debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", @@ -1493,6 +1484,29 @@ "ms": "^2.1.1" } }, + "node_modules/eslint-plugin-import/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/eslint-plugin-jsdoc": { "version": "50.6.1", "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.1.tgz", @@ -1519,19 +1533,6 @@ "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, - "node_modules/eslint-plugin-jsdoc/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/eslint-plugin-no-autofix": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-plugin-no-autofix/-/eslint-plugin-no-autofix-2.1.0.tgz", @@ -1595,6 +1596,30 @@ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, + "node_modules/eslint-plugin-react/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-react/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/eslint-plugin-react/node_modules/resolve": { "version": "2.0.0-next.5", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", @@ -1613,6 +1638,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/eslint-plugin-simple-import-sort": { "version": "12.1.1", "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-12.1.1.tgz", @@ -1663,6 +1698,30 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/espree": { "version": "10.3.0", "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", @@ -2746,16 +2805,19 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "license": "ISC", "peer": true, "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minimist": { @@ -3238,13 +3300,16 @@ } }, "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "license": "ISC", "peer": true, "bin": { "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/set-function-length": { diff --git a/package.json b/package.json index 0479200..caa46d2 100644 --- a/package.json +++ b/package.json @@ -12,9 +12,7 @@ }, "author": "YScope Inc.", "peerDependencies": { - "@stylistic/eslint-plugin-js": "^2.12.1", - "@stylistic/eslint-plugin-jsx": "^2.12.1", - "@stylistic/eslint-plugin-plus": "^2.12.1", + "@stylistic/eslint-plugin": "^2.12.1", "eslint": "^9.17.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-import-newlines": "^1.4.0", From d03e6fa412b55986c8e098553efab793c58bb97f Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 04:44:37 -0500 Subject: [PATCH 23/65] chore: Upgrade version for 1.0.0 release. --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 428e3c9..e3c72ea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "eslint-config-yscope", - "version": "0.0.32", + "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "eslint-config-yscope", - "version": "0.0.32", + "version": "1.0.0", "peerDependencies": { "@stylistic/eslint-plugin": "^2.12.1", "eslint": "^9.17.0", diff --git a/package.json b/package.json index caa46d2..7fc9fae 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "eslint-config-yscope", - "version": "0.0.32", + "version": "1.0.0", "description": "", "scripts": { "release": "npm install && git diff --exit-code && npm publish", From a97dc0ea78bf8982e74d3b30724c2f76ed5d6ede Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 04:58:54 -0500 Subject: [PATCH 24/65] Remove unnecessary spread operator in TsConfig import. --- TsConfig.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TsConfig.mjs b/TsConfig.mjs index 9103fe6..30de663 100644 --- a/TsConfig.mjs +++ b/TsConfig.mjs @@ -8,7 +8,7 @@ import StylisticConfig from "./StylisticConfig.mjs"; const TsConfig = [ ...CommonConfig, ...TsEslint.configs.strictTypeChecked, - ...importPlugin.flatConfigs.typescript, + importPlugin.flatConfigs.typescript, { languageOptions: { parser: TsEslint.parser, From 620bc8c92df70fd8f24a736b53f30e487ec4bce0 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 05:48:00 -0500 Subject: [PATCH 25/65] Move side effect group to the last of imports. --- CommonConfig.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CommonConfig.mjs b/CommonConfig.mjs index 43e6d0f..f700cfd 100644 --- a/CommonConfig.mjs +++ b/CommonConfig.mjs @@ -305,7 +305,6 @@ const CommonConfig = [{ "warn", { groups: [ - ["^\\u0000"], ["^node:"], [ "^meteor", @@ -317,6 +316,7 @@ const CommonConfig = [{ ["^/"], ["^"], ["^\\."], + ["^\\u0000"], ], }, ], From 8f0edf691bd40baf998d363f9dbf4ea08fe0c69f Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 06:09:30 -0500 Subject: [PATCH 26/65] Decouple. --- CommonConfig.mjs | 4 ++-- JestConfig.mjs | 4 ++-- MeteorConfig.mjs => MeteorConfigArray.mjs | 8 ++++---- NodeConfig.mjs | 20 ------------------- ReactConfig.mjs => ReactConfigArray.mjs | 9 ++------- ...sticConfig.mjs => StylisticConfigArray.mjs | 4 ++-- TsConfig.mjs => TsConfigArray.mjs | 9 ++------- eslint.config.mjs | 15 ++++++++++++-- 8 files changed, 27 insertions(+), 46 deletions(-) rename MeteorConfig.mjs => MeteorConfigArray.mjs (76%) delete mode 100644 NodeConfig.mjs rename ReactConfig.mjs => ReactConfigArray.mjs (95%) rename StylisticConfig.mjs => StylisticConfigArray.mjs (99%) rename TsConfig.mjs => TsConfigArray.mjs (87%) diff --git a/CommonConfig.mjs b/CommonConfig.mjs index f700cfd..a8f7f00 100644 --- a/CommonConfig.mjs +++ b/CommonConfig.mjs @@ -7,7 +7,7 @@ import NoAutofixPlugin from "eslint-plugin-no-autofix"; import SimpleImportSortPlugin from "eslint-plugin-simple-import-sort"; -const CommonConfig = [{ +const CommonConfig = { languageOptions: { ecmaVersion: "latest", sourceType: "module", @@ -441,7 +441,7 @@ const CommonConfig = [{ }, }, }, -}]; +}; export default CommonConfig; diff --git a/JestConfig.mjs b/JestConfig.mjs index 15eebd3..2a689f0 100644 --- a/JestConfig.mjs +++ b/JestConfig.mjs @@ -1,7 +1,7 @@ import globals from "globals"; -const JestConfig = [{ +const JestConfig = { languageOptions: { globals: { ...globals.jest, @@ -17,7 +17,7 @@ const JestConfig = [{ }, ], }, -}]; +}; export default JestConfig; diff --git a/MeteorConfig.mjs b/MeteorConfigArray.mjs similarity index 76% rename from MeteorConfig.mjs rename to MeteorConfigArray.mjs index 804c3bc..4eac1bf 100644 --- a/MeteorConfig.mjs +++ b/MeteorConfigArray.mjs @@ -1,10 +1,10 @@ import globals from "globals"; -import ReactConfig from "./ReactConfig.mjs"; +import ReactConfigArray from "./ReactConfigArray.mjs"; -const MeteorConfig = [ - ...ReactConfig, +const MeteorConfigArray = [ + ...ReactConfigArray, { languageOptions: { globals: { @@ -25,4 +25,4 @@ const MeteorConfig = [ ]; -export default MeteorConfig; +export default MeteorConfigArray; diff --git a/NodeConfig.mjs b/NodeConfig.mjs deleted file mode 100644 index 4f63bb0..0000000 --- a/NodeConfig.mjs +++ /dev/null @@ -1,20 +0,0 @@ -import globals from "globals"; - -import CommonConfig from "./CommonConfig.mjs"; -import StylisticConfig from "./StylisticConfig.mjs"; - - -const NodeConfig = [ - ...CommonConfig, - ...StylisticConfig, - { - languageOptions: { - globals: { - ...globals.node, - }, - }, - }, -]; - - -export default NodeConfig; diff --git a/ReactConfig.mjs b/ReactConfigArray.mjs similarity index 95% rename from ReactConfig.mjs rename to ReactConfigArray.mjs index 45999f0..bfc00ce 100644 --- a/ReactConfig.mjs +++ b/ReactConfigArray.mjs @@ -2,12 +2,8 @@ import reactPlugin from "eslint-plugin-react"; import reactHooksPlugin from "eslint-plugin-react-hooks"; import globals from "globals"; -import CommonConfig from "./CommonConfig.mjs"; -import StylisticConfig from "./StylisticConfig.mjs"; - -const ReactConfig = [ - ...CommonConfig, +const ReactConfigArray = [ { languageOptions: { globals: { @@ -134,8 +130,7 @@ const ReactConfig = [ }], }, }, - ...StylisticConfig, ]; -export default ReactConfig; +export default ReactConfigArray; diff --git a/StylisticConfig.mjs b/StylisticConfigArray.mjs similarity index 99% rename from StylisticConfig.mjs rename to StylisticConfigArray.mjs index 2b2bb06..7a43944 100644 --- a/StylisticConfig.mjs +++ b/StylisticConfigArray.mjs @@ -3,7 +3,7 @@ import StylisticPlugin from "@stylistic/eslint-plugin"; -const StylisticConfig = [ +const StylisticConfigArray = [ StylisticPlugin.configs["disable-legacy"], { plugins: { @@ -328,4 +328,4 @@ const StylisticConfig = [ }, ]; -export default StylisticConfig; +export default StylisticConfigArray; diff --git a/TsConfig.mjs b/TsConfigArray.mjs similarity index 87% rename from TsConfig.mjs rename to TsConfigArray.mjs index 30de663..4474043 100644 --- a/TsConfig.mjs +++ b/TsConfigArray.mjs @@ -1,12 +1,8 @@ import importPlugin from "eslint-plugin-import"; import TsEslint from "typescript-eslint"; -import CommonConfig from "./CommonConfig.mjs"; -import StylisticConfig from "./StylisticConfig.mjs"; - -const TsConfig = [ - ...CommonConfig, +const TsConfigArray = [ ...TsEslint.configs.strictTypeChecked, importPlugin.flatConfigs.typescript, { @@ -48,8 +44,7 @@ const TsConfig = [ }, }, }, - ...StylisticConfig, ]; -export default TsConfig; +export default TsConfigArray; diff --git a/eslint.config.mjs b/eslint.config.mjs index f9de8b5..ee9248b 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,8 +1,19 @@ -import NodeConfig from "./NodeConfig.mjs"; +import globals from "globals"; + +import CommonConfig from "./CommonConfig.mjs"; +import StylisticConfigArray from "./StylisticConfigArray.mjs"; const EslintConfig = [ - ...NodeConfig, + CommonConfig, + ...StylisticConfigArray, + { + languageOptions: { + globals: { + ...globals.node, + }, + }, + }, ]; From de3be187db31ffcd21b90552eb31d5e50f22993e Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 06:11:43 -0500 Subject: [PATCH 27/65] Sort. --- CommonConfig.mjs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/CommonConfig.mjs b/CommonConfig.mjs index a8f7f00..780b7ad 100644 --- a/CommonConfig.mjs +++ b/CommonConfig.mjs @@ -338,27 +338,27 @@ const CommonConfig = { "always", ], - "import/named": ["error"], "import-newlines/enforce": [ "error", {items: 1}, ], + + "import/default": ["error"], + "import/export": ["error"], + "import/named": ["error"], + "import/namespace": ["error"], "import/newline-after-import": [ "error", {count: 2, exactCount: true, considerComments: true}, ], + "import/no-duplicates": ["error"], + "import/no-named-as-default": ["warn"], + "import/no-named-as-default-member": ["warn"], "import/no-unresolved": [ "error", {ignore: ["^/imports"], caseSensitive: true, caseSensitiveStrict: false}, ], - "import/namespace": ["error"], - "import/default": ["error"], - "import/export": ["error"], - "import/no-named-as-default": ["warn"], - "import/no-named-as-default-member": ["warn"], - "import/no-duplicates": ["error"], - "jsdoc/check-access": ["warn"], "jsdoc/check-alignment": ["warn"], "jsdoc/check-examples": ["off"], From 6982ed73fc2794f51d42dc4623a06b7e06f7f08d Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 06:12:01 -0500 Subject: [PATCH 28/65] Sort. --- CommonConfig.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CommonConfig.mjs b/CommonConfig.mjs index 780b7ad..bc84e3c 100644 --- a/CommonConfig.mjs +++ b/CommonConfig.mjs @@ -380,8 +380,8 @@ const CommonConfig = { "jsdoc/match-name": ["off"], "jsdoc/multiline-blocks": "warn", "jsdoc/no-bad-blocks": ["off"], - "jsdoc/no-blank-blocks": "warn", "jsdoc/no-blank-block-descriptions": ["off"], + "jsdoc/no-blank-blocks": "warn", "jsdoc/no-defaults": "warn", "jsdoc/no-missing-syntax": ["off"], "jsdoc/no-multi-asterisks": "warn", From 05d00d9c058edd355ae48e47928e6bc40e83459b Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 06:14:59 -0500 Subject: [PATCH 29/65] Add ts-specific options for @stylistic/comma-dangle. --- StylisticConfigArray.mjs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/StylisticConfigArray.mjs b/StylisticConfigArray.mjs index 7a43944..970c6f2 100644 --- a/StylisticConfigArray.mjs +++ b/StylisticConfigArray.mjs @@ -34,10 +34,15 @@ const StylisticConfigArray = [ "warn", { arrays: "always-multiline", + dynamicImports: "never", + enums: "always-multiline", exports: "always-multiline", functions: "only-multiline", + generics: "always-multiline", + importAttributes: "never", imports: "always-multiline", objects: "always-multiline", + tuples: "always-multiline", }, ], "@stylistic/comma-spacing": ["error"], From 01511c8fc3644d77f7659a0bca095686cb090084 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 06:26:18 -0500 Subject: [PATCH 30/65] Removed deprecated allowMultiplePropertiesPerLine from @stylistic/object-property-newline --- StylisticConfigArray.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/StylisticConfigArray.mjs b/StylisticConfigArray.mjs index 970c6f2..4620a0a 100644 --- a/StylisticConfigArray.mjs +++ b/StylisticConfigArray.mjs @@ -161,7 +161,7 @@ const StylisticConfigArray = [ ], "@stylistic/object-property-newline": [ "error", - {allowAllPropertiesOnSameLine: true, allowMultiplePropertiesPerLine: false}, + {allowAllPropertiesOnSameLine: true}, ], "@stylistic/one-var-declaration-per-line": ["error"], "@stylistic/operator-linebreak": [ From 24b5826f548f7271dd40c5c1c2be115018bcf0e8 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 06:30:22 -0500 Subject: [PATCH 31/65] use array syntax for consistency --- TsConfigArray.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TsConfigArray.mjs b/TsConfigArray.mjs index 4474043..c5d293d 100644 --- a/TsConfigArray.mjs +++ b/TsConfigArray.mjs @@ -25,9 +25,9 @@ const TsConfigArray = [ "no-restricted-syntax": ["off"], "no-shadow": ["off"], - "@typescript-eslint/member-ordering": "error", + "@typescript-eslint/member-ordering": ["error"], "@typescript-eslint/no-shadow": ["error"], - "@typescript-eslint/no-unnecessary-boolean-literal-compare": "off", + "@typescript-eslint/no-unnecessary-boolean-literal-compare": ["off"], "@typescript-eslint/restrict-template-expressions": [ "error", { From 3602bf587dfbd4a6e1a7d32229009dab03b48910 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 06:34:25 -0500 Subject: [PATCH 32/65] TS: Enable and configure `@stylistic/member-delimiter-style` rule --- StylisticConfigArray.mjs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/StylisticConfigArray.mjs b/StylisticConfigArray.mjs index 4620a0a..0d896ee 100644 --- a/StylisticConfigArray.mjs +++ b/StylisticConfigArray.mjs @@ -126,6 +126,19 @@ const StylisticConfigArray = [ }, ], "@stylistic/max-statements-per-line": ["error"], + "@stylistic/member-delimiter-style": [ + "error", + { + multiline: { + delimiter: "comma", + requireLast: true, + }, + singleline: { + delimiter: "comma", + requireLast: false, + }, + }, + ], "@stylistic/multiline-comment-style": ["off"], "@stylistic/multiline-ternary": ["error"], "@stylistic/new-parens": ["error"], From dc5e5c40d6cf9cca51f1b5bbabc084efae6e267e Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 06:38:09 -0500 Subject: [PATCH 33/65] Simplify the "@stylistic/lines-around-comment" rule by removing unnecessary options. --- StylisticConfigArray.mjs | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/StylisticConfigArray.mjs b/StylisticConfigArray.mjs index 0d896ee..9077b94 100644 --- a/StylisticConfigArray.mjs +++ b/StylisticConfigArray.mjs @@ -92,22 +92,9 @@ const StylisticConfigArray = [ "@stylistic/lines-around-comment": [ "error", { - /* eslint-disable sort-keys */ ignorePattern: "c8|Enum", - beforeBlockComment: true, afterBlockComment: false, - beforeLineComment: true, afterLineComment: false, - afterHashbangComment: true, - allowBlockStart: true, - allowBlockEnd: true, - allowClassStart: true, - allowClassEnd: true, - allowObjectStart: true, - allowObjectEnd: true, - allowArrayStart: true, - allowArrayEnd: true, - /* eslint-enable sort-keys */ }, ], "@stylistic/lines-between-class-members": ["error"], From 3ac267ccd97f4fa4b509ea3f012dc4954738f713 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 06:48:39 -0500 Subject: [PATCH 34/65] TS: add padding-line-between-statements ts-specific keywords. --- StylisticConfigArray.mjs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/StylisticConfigArray.mjs b/StylisticConfigArray.mjs index 9077b94..7f0b8f1 100644 --- a/StylisticConfigArray.mjs +++ b/StylisticConfigArray.mjs @@ -183,6 +183,9 @@ const StylisticConfigArray = [ "let", "var", "function", + "enum", + "interface", + "type", ], next: "*", }, @@ -210,6 +213,11 @@ const StylisticConfigArray = [ "var", ], }, + { + blankLine: "never", + prev: "function-overload", + next: "function", + }, ], "@stylistic/quote-props": [ "error", From 473728ee78af227eafe15b6df2924fb3e3b983d6 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 06:57:38 -0500 Subject: [PATCH 35/65] TS: enforce semi for @stylistic/member-delimiter-style --- StylisticConfigArray.mjs | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/StylisticConfigArray.mjs b/StylisticConfigArray.mjs index 7f0b8f1..495ec55 100644 --- a/StylisticConfigArray.mjs +++ b/StylisticConfigArray.mjs @@ -113,19 +113,7 @@ const StylisticConfigArray = [ }, ], "@stylistic/max-statements-per-line": ["error"], - "@stylistic/member-delimiter-style": [ - "error", - { - multiline: { - delimiter: "comma", - requireLast: true, - }, - singleline: { - delimiter: "comma", - requireLast: false, - }, - }, - ], + "@stylistic/member-delimiter-style": ["error"], "@stylistic/multiline-comment-style": ["off"], "@stylistic/multiline-ternary": ["error"], "@stylistic/new-parens": ["error"], From ab5d83913e3199c2ed09579a0d9687058d19967c Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 07:08:41 -0500 Subject: [PATCH 36/65] Disallow block-spacing. --- StylisticConfigArray.mjs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/StylisticConfigArray.mjs b/StylisticConfigArray.mjs index 495ec55..317bc01 100644 --- a/StylisticConfigArray.mjs +++ b/StylisticConfigArray.mjs @@ -24,7 +24,10 @@ const StylisticConfigArray = [ ], "@stylistic/arrow-parens": ["error"], "@stylistic/arrow-spacing": ["error"], - "@stylistic/block-spacing": ["error"], + "@stylistic/block-spacing": [ + "error", + "never", + ], "@stylistic/brace-style": [ "error", "1tbs", From b576db82f07e7e9a6bc45d2e232f0d2f330854c2 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 07:13:34 -0500 Subject: [PATCH 37/65] The @stylistic/lines-around-comment options are necessary. --- StylisticConfigArray.mjs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/StylisticConfigArray.mjs b/StylisticConfigArray.mjs index 317bc01..e7bb6cb 100644 --- a/StylisticConfigArray.mjs +++ b/StylisticConfigArray.mjs @@ -94,11 +94,32 @@ const StylisticConfigArray = [ ], "@stylistic/lines-around-comment": [ "error", + /* eslint-disable sort-keys */ { ignorePattern: "c8|Enum", + beforeBlockComment: true, afterBlockComment: false, + beforeLineComment: true, afterLineComment: false, + afterHashbangComment: true, + allowBlockStart: true, + allowBlockEnd: true, + allowClassStart: true, + allowClassEnd: true, + allowObjectStart: true, + allowObjectEnd: true, + allowArrayStart: true, + allowArrayEnd: true, + allowEnumEnd: true, + allowEnumStart: true, + allowInterfaceEnd: true, + allowInterfaceStart: true, + allowModuleEnd: true, + allowModuleStart: true, + allowTypeEnd: true, + allowTypeStart: true, }, + /* eslint-enable sort-keys */ ], "@stylistic/lines-between-class-members": ["error"], "@stylistic/max-len": [ From 09dbd7f285f8236b62597609bb6d67abcce2cacf Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 08:01:13 -0500 Subject: [PATCH 38/65] MeteorConfig does not have to be in an array. --- MeteorConfig.mjs | 23 +++++++++++++++++++++++ MeteorConfigArray.mjs | 28 ---------------------------- 2 files changed, 23 insertions(+), 28 deletions(-) create mode 100644 MeteorConfig.mjs delete mode 100644 MeteorConfigArray.mjs diff --git a/MeteorConfig.mjs b/MeteorConfig.mjs new file mode 100644 index 0000000..f4c5ef2 --- /dev/null +++ b/MeteorConfig.mjs @@ -0,0 +1,23 @@ +import globals from "globals"; + + +const MeteorConfig = { + languageOptions: { + globals: { + ...globals.jest, + ...globals.meteor, + ...globals.node, + }, + }, + settings: { + "import/core-modules": [ + "meteor/meteor", + "meteor/mongo", + "meteor/accounts-base", + "meteor/react-meteor-data", + ], + }, +}; + + +export default MeteorConfig; diff --git a/MeteorConfigArray.mjs b/MeteorConfigArray.mjs deleted file mode 100644 index 4eac1bf..0000000 --- a/MeteorConfigArray.mjs +++ /dev/null @@ -1,28 +0,0 @@ -import globals from "globals"; - -import ReactConfigArray from "./ReactConfigArray.mjs"; - - -const MeteorConfigArray = [ - ...ReactConfigArray, - { - languageOptions: { - globals: { - ...globals.jest, - ...globals.meteor, - ...globals.node, - }, - }, - settings: { - "import/core-modules": [ - "meteor/meteor", - "meteor/mongo", - "meteor/accounts-base", - "meteor/react-meteor-data", - ], - }, - }, -]; - - -export default MeteorConfigArray; From a1cd2f8ebdb0426a674322230906675a7b228493 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 08:27:48 -0500 Subject: [PATCH 39/65] Update README.md. --- README.md | 179 ++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 113 insertions(+), 66 deletions(-) diff --git a/README.md b/README.md index 1e1e5d7..a449a81 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # eslint-config-yscope -This repository contains ESLint configurations for various JavaScript environments under the `yscope` namespace. Our configurations are designed to enforce a consistent coding style and catch common bugs, making your codebase more maintainable and error-free. +This repository contains ESLint ["flat"][eslint-flat-config] configurations for various JavaScript +environments under the `yscope` namespace. Our configurations are designed to enforce a consistent +coding style and catch common bugs, making your codebase more maintainable and error-free. ## Installation @@ -14,83 +16,128 @@ yarn add --dev eslint-config-yscope ### For Older Node.js Versions -If you are using `npm` version >= 3 or < 7, you need to install the `peerDependencies` specified in https://github.com/y-scope/eslint-config-yscope/blob/e0dc97bd6f738b06ee692bd52f0fceb6996c1625/package.json#L14-L26 - -Alternatively, you can upgrade your `npm` to the latest version compatible with your Node.js version. -- Node.js verions below v16: `npm i -g npm@9` -- Node.js v16 or above: `npm i -g npm@latest` +This package requires ESLint 9, which in turn requires Node.js 18 or above. If you are using an +older version of Node.js, you can use version `0.0.32` of this package, which is compatible with +ESLint 8. Detailed setup instructions for this version are available in the +[older versions README][readme-0.0.32]. ## Usage -After installation, you can use one of the configurations by adding it to the `extends` section in your `.eslintrc` (or `.eslintrc.js`, `.eslintrc.json`, etc.) file, or in an attribute named `eslintConfig` in your `package.json` file. - -### ESLint config example - -```json -{ - "extends": ["yscope/common"] -} -``` +After installation, you can create an `eslint.config.mjs` configuration file in the root directory +of your project and export an array of configuration objects. ### Available Configurations -The available configs are: - -- `yscope/common`: A general ESLint configuration suitable for a wide range of JavaScript projects. -- `yscope/react`: Tailored ESLint configuration for React applications. -- `yscope/meteor`: A specialized ESLint configuration for Meteor projects. -- `yscope/typescipt`: Designed specifically for TypeScript applications. -- `yscope/jest`: A Jest-specific ESLint configuration intended to override other configurations for Jest test files. - -### Jest-Specific Configuration - -The Jest configuration is **not standalone** and should be used alongside other configurations. It is intended to -override rules for Jest test files, so it should appear *last* in your `overrides` array. - -#### Example Usage - -If your project uses Jest, you can add an override for your test files as follows: - -```json5 -{ - "overrides": [ - // ... - { - "files": ["test/**/*"], - "extends": ["yscope/jest"] - } - ] -} -``` - -### For TypeScript Configuration - -TypeScript-related dependencies are not automatically installed because not every configuration requires them. -Before you can use this configuration, you need to install the dependencies manually. - -```shell -npm install --save-dev eslint-import-resolver-typescript @typescript-eslint/parser @typescript-eslint/eslint-plugin -``` - -Then in your ESLint configuration: - -```json -{ - "extends": [ - "yscope/common", - "yscope/typescript" - ] -} -``` +Some configurations are provided as standalone configuration objects, which can be directly +referenced once imported: +- `CommonConfig`: A general ESLint configuration suitable for a wide range of JavaScript projects. +- `JestConfig`: A Jest-specific ESLint configuration intended to override other configurations for +Jest test files. +- `MeteorConfig`: A specialized ESLint configuration for Meteor projects. + +The other configurations are provided as a group of configuration objects stored in an array. To use +these configurations, you need to utilize the "spread" (`...`) syntax to unpack the configuration +objects into your own configuration array: +- `StylisticConfigArray`: A configuration for stylistic formatting. It is typically combined with +- `CommonConfig`, as shown in the [ESLint config examples](#eslint-config-examples). +- `ReactConfigArray`: A specialized ESLint configuration tailored for React applications. +- `TsConfigArray`: A configuration designed specifically for TypeScript projects. Refer to the +[ESLint config examples](#eslint-config-examples) for details on how to set it up. + + +### ESLint config examples + +1. For use with a CommonJS Node.js project: + ```javascript + import globals from "globals"; + + import CommonConfig from "./CommonConfig.mjs"; + import StylisticConfigArray from "./StylisticConfigArray.mjs"; + + + const EslintConfig = [ + CommonConfig, + ...StylisticConfigArray, + { + languageOptions: { + globals: { + ...globals.node, + }, + }, + }, + { + rules: { + // ... Your own overrides + }, + }, + ]; + + + export default EslintConfig; + ``` + +2. For use with a JavaScript React.js project: + ```javascript + import CommonConfig from "eslint-config-yscope/CommonConfig.mjs"; + import ReactConfigArray from "eslint-config-yscope/ReactConfigArray.mjs"; + import StylisticConfigArray from "eslint-config-yscope/StylisticConfigArray.mjs"; + + + const EslintConfig = [ + CommonConfig, + ...StylisticConfigArray, + ...ReactConfigArray, + ]; + + + export default EslintConfig; + ``` + +3. For use with a TypeScript React.js project: + ```javascript + import CommonConfig from "eslint-config-yscope/CommonConfig.mjs"; + import ReactConfigArray from "eslint-config-yscope/ReactConfigArray.mjs"; + import StylisticConfigArray from "eslint-config-yscope/StylisticConfigArray.mjs"; + import TsConfigArray from "eslint-config-yscope/TsConfigArray.mjs"; + + + const EslintConfig = [ + CommonConfig, + + // Note below map has to be placed directly before the spreaded `StylisticConfigArray` + ...TsConfigArray.map( + (config) => ({ + files: [ + "**/*.ts", + "**/*.tsx", + ], + ...config, + }) + ), + ...StylisticConfigArray, + + ...ReactConfigArray, + ]; + + + export default EslintConfig; + ``` ## Customization -Each configuration can be further customized and extended as per your project's needs. You can override specific rules by adding them to your ESLint configuration file. +Each configuration can be further customized and extended as per your project's needs. You can +override specific rules by adding them to your ESLint configuration file. ## Contributing -We welcome contributions to the `eslint-config-yscope`! If you have suggestions or improvements, feel free to open an issue or a pull request. +We welcome contributions to the `eslint-config-yscope`! If you have suggestions or improvements, +feel free to open an issue or a pull request. ## License -This project is licensed under Apache License 2.0. Please see the [LICENSE](https://github.com/y-scope/eslint-config-yscope/blob/main/LICENSE) file for more details. +This project is licensed under Apache License 2.0. Please see the [LICENSE][license] file for more +details. + +[eslint-flat-config]: https://eslint.org/docs/v9.x/use/configure/migration-guide +[license]: https://github.com/y-scope/eslint-config-yscope/blob/main/LICENSE +[readme-0.0.32]: https://github.com/y-scope/eslint-config-yscope/blob/f75571723ff1a6fd734ab82b4a399c2c1c92c5fb/README.md#for-older-nodejs-versions From bbc8d5631fcc6b3977e82e79439b4c4add1f9aad Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 22:12:42 -0500 Subject: [PATCH 40/65] Add eslint-import-resolver-typescript to peerDependencies. --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 7fc9fae..cc8f826 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "peerDependencies": { "@stylistic/eslint-plugin": "^2.12.1", "eslint": "^9.17.0", + "eslint-import-resolver-typescript": "^3.7.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-import-newlines": "^1.4.0", "eslint-plugin-jsdoc": "^50.6.1", From 2f194d4a7d3ee20b6e9c85d5a966b8bb45d82d17 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 22:27:37 -0500 Subject: [PATCH 41/65] Add createTsConfigOverride function for custom TypeScript configs. --- TsConfigArray.mjs | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/TsConfigArray.mjs b/TsConfigArray.mjs index c5d293d..b91950f 100644 --- a/TsConfigArray.mjs +++ b/TsConfigArray.mjs @@ -2,6 +2,29 @@ import importPlugin from "eslint-plugin-import"; import TsEslint from "typescript-eslint"; +/** + * Generates an override configuration for a TypeScript project specific to + * file inclusion, parser options, and import resolution settings. + * + * @param {string[]} files Paths to include in the configuration. + * @param {string} project Path to the TypeScript configuration file (tsconfig.json). + * @return {object} The configuration object. + */ +const createTsConfigOverride = (files, project) => ({ + files: files, + languageOptions: { + parserOptions: {project: project}, + }, + settings: { + "import/resolver": { + typescript: { + project: project, + }, + }, + }, +}); + + const TsConfigArray = [ ...TsEslint.configs.strictTypeChecked, importPlugin.flatConfigs.typescript, @@ -46,5 +69,5 @@ const TsConfigArray = [ }, ]; - +export {createTsConfigOverride}; export default TsConfigArray; From fb854cdb2a95882f6c7d8e1cd0c491d8111cb896 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 28 Dec 2024 22:36:51 -0500 Subject: [PATCH 42/65] Add `createTsConfigOverride` helper to README examples. --- README.md | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a449a81..3df5e7e 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,8 @@ objects into your own configuration array: - `StylisticConfigArray`: A configuration for stylistic formatting. It is typically combined with - `CommonConfig`, as shown in the [ESLint config examples](#eslint-config-examples). - `ReactConfigArray`: A specialized ESLint configuration tailored for React applications. -- `TsConfigArray`: A configuration designed specifically for TypeScript projects. Refer to the +- `TsConfigArray`: A configuration designed specifically for TypeScript projects. A helper +`createTsConfigOverride` is also provided. Refer to the [ESLint config examples](#eslint-config-examples) for details on how to set it up. @@ -122,6 +123,56 @@ objects into your own configuration array: export default EslintConfig; ``` + +4. For use with a TypeScript project with multiple `tsconfig.json` files: + In projects that include multiple `tsconfig.json` files for different source types, such as a +Vite project created from the `react-ts` template, you can use the helper function +`createTsConfigOverride` to generate configuration overrides. This ensures proper handling of +imports and resolution. + ```javascript + import CommonConfig from "eslint-config-yscope/CommonConfig.mjs"; + import ReactConfigArray from "eslint-config-yscope/ReactConfigArray.mjs"; + import StylisticConfigArray from "eslint-config-yscope/StylisticConfigArray.mjs"; + import TsConfigArray, {createTsConfigOverride} from "eslint-config-yscope/TsConfigArray.mjs"; + + + const EslintConfig = [ + { + ignores: [ + "dist/", + "node_modules/", + ], + }, + CommonConfig, + ...TsConfigArray.map( + (config) => ({ + files: [ + "**/*.ts", + "**/*.tsx", + ], + ...config, + }) + ), + createTsConfigOverride( + [ + "src/**/*.ts", + "src/**/*.tsx", + ], + "tsconfig.app.json" + ), + createTsConfigOverride( + ["vite.config.ts"], + "tsconfig.node.json" + ), + ...StylisticConfigArray, + ...ReactConfigArray, + ]; + + + export default EslintConfig; + ``` + + ## Customization From 6be95c83a50dfb6de7c8828832d658d65e7db3d9 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 4 Jan 2025 09:45:53 -0500 Subject: [PATCH 43/65] Docs - Apply suggestions from code review Co-authored-by: kirkrodrigues <2454684+kirkrodrigues@users.noreply.github.com> --- README.md | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 3df5e7e..587c444 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ yarn add --dev eslint-config-yscope This package requires ESLint 9, which in turn requires Node.js 18 or above. If you are using an older version of Node.js, you can use version `0.0.32` of this package, which is compatible with ESLint 8. Detailed setup instructions for this version are available in the -[older versions README][readme-0.0.32]. +[older version's README][readme-0.0.32]. ## Usage @@ -31,19 +31,18 @@ of your project and export an array of configuration objects. Some configurations are provided as standalone configuration objects, which can be directly referenced once imported: - `CommonConfig`: A general ESLint configuration suitable for a wide range of JavaScript projects. -- `JestConfig`: A Jest-specific ESLint configuration intended to override other configurations for -Jest test files. +- `JestConfig`: A specialized ESLint configuration for Jest files. - `MeteorConfig`: A specialized ESLint configuration for Meteor projects. The other configurations are provided as a group of configuration objects stored in an array. To use these configurations, you need to utilize the "spread" (`...`) syntax to unpack the configuration objects into your own configuration array: -- `StylisticConfigArray`: A configuration for stylistic formatting. It is typically combined with -- `CommonConfig`, as shown in the [ESLint config examples](#eslint-config-examples). -- `ReactConfigArray`: A specialized ESLint configuration tailored for React applications. -- `TsConfigArray`: A configuration designed specifically for TypeScript projects. A helper -`createTsConfigOverride` is also provided. Refer to the -[ESLint config examples](#eslint-config-examples) for details on how to set it up. +- `StylisticConfigArray`: A configuration for stylistic formatting. It is typically combined with + `CommonConfig`, as shown in the [ESLint config examples](#eslint-config-examples). +- `ReactConfigArray`: A specialized ESLint configuration for React applications. +- `TsConfigArray`: A specialized ESLint configuration for TypeScript projects. A helper + `createTsConfigOverride` is also provided. See [ESLint config examples](#eslint-config-examples) for + details on how to set it up. ### ESLint config examples @@ -52,8 +51,8 @@ objects into your own configuration array: ```javascript import globals from "globals"; - import CommonConfig from "./CommonConfig.mjs"; - import StylisticConfigArray from "./StylisticConfigArray.mjs"; + import CommonConfig from "eslint-config-yscope/CommonConfig.mjs"; + import StylisticConfigArray from "eslint-config-yscope/StylisticConfigArray.mjs"; const EslintConfig = [ @@ -68,7 +67,7 @@ objects into your own configuration array: }, { rules: { - // ... Your own overrides + // Your own overrides }, }, ]; @@ -105,7 +104,7 @@ objects into your own configuration array: const EslintConfig = [ CommonConfig, - // Note below map has to be placed directly before the spreaded `StylisticConfigArray` + // NOTE: The map below must be placed directly before the spread `StylisticConfigArray`. ...TsConfigArray.map( (config) => ({ files: [ @@ -124,11 +123,10 @@ objects into your own configuration array: export default EslintConfig; ``` -4. For use with a TypeScript project with multiple `tsconfig.json` files: - In projects that include multiple `tsconfig.json` files for different source types, such as a -Vite project created from the `react-ts` template, you can use the helper function -`createTsConfigOverride` to generate configuration overrides. This ensures proper handling of -imports and resolution. +4. For use with a TypeScript project with multiple `tsconfig.json` files: In projects that include + multiple `tsconfig.json` files for different source types, such as a Vite project created from + the `react-ts` template, you can use the helper function `createTsConfigOverride` to generate + configuration overrides. This ensures proper handling of imports and resolution. ```javascript import CommonConfig from "eslint-config-yscope/CommonConfig.mjs"; import ReactConfigArray from "eslint-config-yscope/ReactConfigArray.mjs"; From b343b2094f12a285e369c7452df0f2b1cba6d875 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 4 Jan 2025 09:46:59 -0500 Subject: [PATCH 44/65] Remove extraneous newlines. --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 587c444..c41f690 100644 --- a/README.md +++ b/README.md @@ -170,8 +170,6 @@ objects into your own configuration array: export default EslintConfig; ``` - - ## Customization Each configuration can be further customized and extended as per your project's needs. You can From 68405eaaf18500f01bf8b4294ff3bc9e2e4c20fc Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 4 Jan 2025 09:50:17 -0500 Subject: [PATCH 45/65] Remove License section from README. --- README.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/README.md b/README.md index c41f690..7463460 100644 --- a/README.md +++ b/README.md @@ -180,11 +180,6 @@ override specific rules by adding them to your ESLint configuration file. We welcome contributions to the `eslint-config-yscope`! If you have suggestions or improvements, feel free to open an issue or a pull request. -## License - -This project is licensed under Apache License 2.0. Please see the [LICENSE][license] file for more -details. - [eslint-flat-config]: https://eslint.org/docs/v9.x/use/configure/migration-guide [license]: https://github.com/y-scope/eslint-config-yscope/blob/main/LICENSE [readme-0.0.32]: https://github.com/y-scope/eslint-config-yscope/blob/f75571723ff1a6fd734ab82b4a399c2c1c92c5fb/README.md#for-older-nodejs-versions From ede36ed815b8edb180f595aaa44336283e5b555c Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 4 Jan 2025 09:52:36 -0500 Subject: [PATCH 46/65] Update package.json with metadata and licensing details. --- package.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index cc8f826..44f5a47 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,12 @@ "type": "git", "url": "git+https://github.com/y-scope/eslint-config-yscope.git" }, - "author": "YScope Inc.", + "author": "YScope Inc. ", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/y-scope/eslint-config-yscope/issues" + }, + "homepage": "https://github.com/y-scope/eslint-config-yscope#readme", "peerDependencies": { "@stylistic/eslint-plugin": "^2.12.1", "eslint": "^9.17.0", From 8c7173a45a7ff89fa222fbeb07a4e75e544411f6 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 4 Jan 2025 09:52:49 -0500 Subject: [PATCH 47/65] Remove unused test script from package.json. --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 44f5a47..19a70a1 100644 --- a/package.json +++ b/package.json @@ -3,8 +3,7 @@ "version": "1.0.0", "description": "", "scripts": { - "release": "npm install && git diff --exit-code && npm publish", - "test": "echo \"Error: no test specified\" && exit 1" + "release": "npm install && git diff --exit-code && npm publish" }, "repository": { "type": "git", From f3b3d6ae08b63b95f745afdb657c96bf5abe5893 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 4 Jan 2025 10:00:00 -0500 Subject: [PATCH 48/65] Improve expression on the TsConfigArray <- StylisticConfigArray order. --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7463460..7e95557 100644 --- a/README.md +++ b/README.md @@ -104,7 +104,8 @@ objects into your own configuration array: const EslintConfig = [ CommonConfig, - // NOTE: The map below must be placed directly before the spread `StylisticConfigArray`. + // NOTE: The map below must be placed directly before the spread `StylisticConfigArray`, to + // disable conflicting TsEsLint rules by the Stylistic plugin's "disable-legacy" preset. ...TsConfigArray.map( (config) => ({ files: [ From 4a4a3537d6612540540e73eca7cd89f0ebb17faa Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 4 Jan 2025 11:01:14 -0500 Subject: [PATCH 49/65] Add reference and rationale for react/jsx rule configuration. --- ReactConfigArray.mjs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ReactConfigArray.mjs b/ReactConfigArray.mjs index bfc00ce..0c9a64d 100644 --- a/ReactConfigArray.mjs +++ b/ReactConfigArray.mjs @@ -50,6 +50,10 @@ const ReactConfigArray = [ }, ], + // Recognizing delays in porting rules from `eslint-plugin-react` to + // `@stylistic/eslint-plugin-jsx`, we list all available JSX rules from + // `eslint-plugin-react` below for reference. However, we only enable those that are + // useful and not yet covered by `@stylistic/eslint-plugin-jsx`. "react/jsx-boolean-value": [ "warn", "always", From 42418b81ce7252544a79699fe0a0350b4f7e4e1c Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 4 Jan 2025 11:13:26 -0500 Subject: [PATCH 50/65] Reorder and clarify allowed TypeScript types in "@stylistic/lines-around-comment". --- StylisticConfigArray.mjs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/StylisticConfigArray.mjs b/StylisticConfigArray.mjs index e7bb6cb..9146823 100644 --- a/StylisticConfigArray.mjs +++ b/StylisticConfigArray.mjs @@ -110,14 +110,16 @@ const StylisticConfigArray = [ allowObjectEnd: true, allowArrayStart: true, allowArrayEnd: true, - allowEnumEnd: true, + + // TypeScript specific allowEnumStart: true, - allowInterfaceEnd: true, + allowEnumEnd: true, allowInterfaceStart: true, - allowModuleEnd: true, + allowInterfaceEnd: true, allowModuleStart: true, - allowTypeEnd: true, + allowModuleEnd: true, allowTypeStart: true, + allowTypeEnd: true, }, /* eslint-enable sort-keys */ ], From b66f68c5d351e0b9e523bb033cd09ac5edb3eab3 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 4 Jan 2025 11:17:25 -0500 Subject: [PATCH 51/65] Clarify TsConfigArray function documentation. --- TsConfigArray.mjs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/TsConfigArray.mjs b/TsConfigArray.mjs index b91950f..b07b692 100644 --- a/TsConfigArray.mjs +++ b/TsConfigArray.mjs @@ -3,8 +3,11 @@ import TsEslint from "typescript-eslint"; /** - * Generates an override configuration for a TypeScript project specific to - * file inclusion, parser options, and import resolution settings. + * Creates a configuration object for a TypeScript project. + * + * This function helps tailor ESLint to work with our TypeScript config by defining the files to + * include, pointing to the TypeScript project configuration file (tsconfig.json), and ensuring + * proper import resolution. * * @param {string[]} files Paths to include in the configuration. * @param {string} project Path to the TypeScript configuration file (tsconfig.json). From 7cb4644373b2a10efefe005ec63ae60d4fe3df8e Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 4 Jan 2025 11:20:13 -0500 Subject: [PATCH 52/65] Rename `project` to `projectConfigPath`; updated related docs. --- TsConfigArray.mjs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/TsConfigArray.mjs b/TsConfigArray.mjs index b07b692..03ee4d1 100644 --- a/TsConfigArray.mjs +++ b/TsConfigArray.mjs @@ -10,18 +10,18 @@ import TsEslint from "typescript-eslint"; * proper import resolution. * * @param {string[]} files Paths to include in the configuration. - * @param {string} project Path to the TypeScript configuration file (tsconfig.json). + * @param {string} projectConfigPath Path to the corresponding `tsconfig.json`. * @return {object} The configuration object. */ -const createTsConfigOverride = (files, project) => ({ +const createTsConfigOverride = (files, projectConfigPath) => ({ files: files, languageOptions: { - parserOptions: {project: project}, + parserOptions: {project: projectConfigPath}, }, settings: { "import/resolver": { typescript: { - project: project, + project: projectConfigPath, }, }, }, From 3304e1661e1e7dd3d6d3dd38522530a206e2bdd8 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 4 Jan 2025 11:43:31 -0500 Subject: [PATCH 53/65] Update `simple-import-sort/imports` groups; Add examples for the import categories. --- CommonConfig.mjs | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/CommonConfig.mjs b/CommonConfig.mjs index bc84e3c..8cf9541 100644 --- a/CommonConfig.mjs +++ b/CommonConfig.mjs @@ -304,6 +304,41 @@ const CommonConfig = { "simple-import-sort/imports": [ "warn", { + /* + // Built-in Node.js modules + import fs from "node:fs"; + import path from "node:path"; + + // Framework libraries + import {Meteor} from "meteor/meteor"; + import PropTypes from "prop-types"; + import React from "react"; + import ReactDOM from "react-dom"; + + // Third-party libraries + import axios from "axios"; + import lodash from "lodash"; + + // UI icons + import { + faBars, + faFootball, + } from "@fortawesome/free-solid-svg-icons"; + import BarChartIcon from "@mui/icons-material/BarChart"; + import FoodBankIcon from "@mui/icons-material/FoodBank"; + + // Absolute imports (e.g., project-specific aliases) + import apiRoutes from "/api/routes"; + import config from "/config"; + + // Relative imports + import App from "./components/App"; + import helperFunction from "./utils"; + + // Side-effect imports (e.g., those which have `\u0000` prepended) + import "normalize.css"; + import "./index.css"; + */ groups: [ ["^node:"], [ @@ -312,9 +347,11 @@ const CommonConfig = { "^react", ], ["^@?\\w"], - ["^@mui/icons-material"], + [ + "^@fortawesome", + "^@mui/icons-material", + ], ["^/"], - ["^"], ["^\\."], ["^\\u0000"], ], From fbe33abe419fd8cb9cb90648b945f85899172cba Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 4 Jan 2025 11:45:36 -0500 Subject: [PATCH 54/65] Disable `no-new-symbol` ESLint rule due to deprecation. --- CommonConfig.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CommonConfig.mjs b/CommonConfig.mjs index 8cf9541..4179853 100644 --- a/CommonConfig.mjs +++ b/CommonConfig.mjs @@ -180,8 +180,8 @@ const CommonConfig = { "no-new-func": ["error"], "no-new-native-nonconstructor": ["error"], - // deprecated in ESLint v9.0.0 and replaced by the no-new-native-nonconstructor - "no-new-symbol": ["error"], + // Deprecated in ESLint v9.0.0 and replaced by `no-new-native-nonconstructor` + "no-new-symbol": ["off"], "no-new-wrappers": ["error"], "no-nonoctal-decimal-escape": ["error"], "no-obj-calls": ["error"], From e4b747b694ca9c8813da3534e0943d58d616a37f Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 4 Jan 2025 11:48:16 -0500 Subject: [PATCH 55/65] Fix line length violations. --- CommonConfig.mjs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/CommonConfig.mjs b/CommonConfig.mjs index 4179853..d039ae2 100644 --- a/CommonConfig.mjs +++ b/CommonConfig.mjs @@ -202,7 +202,8 @@ const CommonConfig = { "no-restricted-syntax": [ "error", { - message: "Direct exporting of declarations is not allowed. Use export list or default exports instead.", + message: `Direct exporting of declarations is not allowed. Use export list or +default exports instead.`, selector: "ExportNamedDeclaration[declaration!=null]", }, ], @@ -441,7 +442,8 @@ const CommonConfig = { "warn", { contexts: [ - ":has(VariableDeclarator[init.callee.object.name='Object'][init.callee.property.name='freeze'])[declarations]", + ":has(VariableDeclarator[init.callee.object.name='Object']" + + "[init.callee.property.name='freeze'])[declarations]", "Program > VariableDeclaration > .declarations > ArrowFunctionExpression", ], require: {FunctionDeclaration: true, FunctionExpression: true}, From 39450ee39a03b05bc8b3f3bf8d5cc28b4b15547f Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 4 Jan 2025 11:50:36 -0500 Subject: [PATCH 56/65] Remove deprecated `experimentalObjectRestSpread` parserOptions from CommonConfig. --- CommonConfig.mjs | 5 ----- 1 file changed, 5 deletions(-) diff --git a/CommonConfig.mjs b/CommonConfig.mjs index d039ae2..e5d2f31 100644 --- a/CommonConfig.mjs +++ b/CommonConfig.mjs @@ -11,11 +11,6 @@ const CommonConfig = { languageOptions: { ecmaVersion: "latest", sourceType: "module", - parserOptions: { - ecmaFeatures: { - experimentalObjectRestSpread: true, - }, - }, }, plugins: { "import": importPlugin, From 46ccf99ed69c6df90a7e0790c592b4cca1655d3b Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 4 Jan 2025 11:54:08 -0500 Subject: [PATCH 57/65] Add docs for deprecated rule "@stylistic/func-call-spacing". --- StylisticConfigArray.mjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/StylisticConfigArray.mjs b/StylisticConfigArray.mjs index 9146823..8bd5d89 100644 --- a/StylisticConfigArray.mjs +++ b/StylisticConfigArray.mjs @@ -59,6 +59,8 @@ const StylisticConfigArray = [ "error", "always", ], + + // This rule was renamed to `@stylistic/function-call-spacing`. "@stylistic/func-call-spacing": ["off"], "@stylistic/function-call-argument-newline": [ "error", From d108e364d0efec60f277732b8d7340074aaebf69 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 4 Jan 2025 11:57:16 -0500 Subject: [PATCH 58/65] Improve expression: docs for deprecated rule "@stylistic/func-call-spacing". --- StylisticConfigArray.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/StylisticConfigArray.mjs b/StylisticConfigArray.mjs index 8bd5d89..eabf43e 100644 --- a/StylisticConfigArray.mjs +++ b/StylisticConfigArray.mjs @@ -60,7 +60,7 @@ const StylisticConfigArray = [ "always", ], - // This rule was renamed to `@stylistic/function-call-spacing`. + // Deprecated by `@stylistic/function-call-spacing`. "@stylistic/func-call-spacing": ["off"], "@stylistic/function-call-argument-newline": [ "error", From ce3266f616054a6bb08e515f5a4e170bf5eb7910 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sun, 5 Jan 2025 01:28:14 -0500 Subject: [PATCH 59/65] Use PascalCase naming for all default imports. --- CommonConfig.mjs | 4 ++-- JestConfig.mjs | 4 ++-- MeteorConfig.mjs | 8 ++++---- ReactConfigArray.mjs | 12 ++++++------ TsConfigArray.mjs | 4 ++-- eslint.config.mjs | 4 ++-- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/CommonConfig.mjs b/CommonConfig.mjs index e5d2f31..8d5d360 100644 --- a/CommonConfig.mjs +++ b/CommonConfig.mjs @@ -1,6 +1,6 @@ /* eslint-disable max-lines */ -import importPlugin from "eslint-plugin-import"; +import ImportPlugin from "eslint-plugin-import"; import ImportNewlinesPlugin from "eslint-plugin-import-newlines"; import JsdocPlugin from "eslint-plugin-jsdoc"; import NoAutofixPlugin from "eslint-plugin-no-autofix"; @@ -13,7 +13,7 @@ const CommonConfig = { sourceType: "module", }, plugins: { - "import": importPlugin, + "import": ImportPlugin, "import-newlines": ImportNewlinesPlugin, "jsdoc": JsdocPlugin, "no-autofix": NoAutofixPlugin, diff --git a/JestConfig.mjs b/JestConfig.mjs index 2a689f0..5032e44 100644 --- a/JestConfig.mjs +++ b/JestConfig.mjs @@ -1,10 +1,10 @@ -import globals from "globals"; +import Globals from "globals"; const JestConfig = { languageOptions: { globals: { - ...globals.jest, + ...Globals.jest, }, }, rules: { diff --git a/MeteorConfig.mjs b/MeteorConfig.mjs index f4c5ef2..f1ed55c 100644 --- a/MeteorConfig.mjs +++ b/MeteorConfig.mjs @@ -1,12 +1,12 @@ -import globals from "globals"; +import Globals from "globals"; const MeteorConfig = { languageOptions: { globals: { - ...globals.jest, - ...globals.meteor, - ...globals.node, + ...Globals.jest, + ...Globals.meteor, + ...Globals.node, }, }, settings: { diff --git a/ReactConfigArray.mjs b/ReactConfigArray.mjs index 0c9a64d..6683e8d 100644 --- a/ReactConfigArray.mjs +++ b/ReactConfigArray.mjs @@ -1,13 +1,13 @@ -import reactPlugin from "eslint-plugin-react"; -import reactHooksPlugin from "eslint-plugin-react-hooks"; -import globals from "globals"; +import ReactPlugin from "eslint-plugin-react"; +import ReactHooksPlugin from "eslint-plugin-react-hooks"; +import Globals from "globals"; const ReactConfigArray = [ { languageOptions: { globals: { - ...globals.browser, + ...Globals.browser, process: "readonly", }, parserOptions: { @@ -17,8 +17,8 @@ const ReactConfigArray = [ }, }, plugins: { - "react-hooks": reactHooksPlugin, - "react": reactPlugin, + "react-hooks": ReactHooksPlugin, + "react": ReactPlugin, }, rules: { "react-hooks/exhaustive-deps": ["warn"], diff --git a/TsConfigArray.mjs b/TsConfigArray.mjs index 03ee4d1..6acfbb0 100644 --- a/TsConfigArray.mjs +++ b/TsConfigArray.mjs @@ -1,4 +1,4 @@ -import importPlugin from "eslint-plugin-import"; +import ImportPlugin from "eslint-plugin-import"; import TsEslint from "typescript-eslint"; @@ -30,7 +30,7 @@ const createTsConfigOverride = (files, projectConfigPath) => ({ const TsConfigArray = [ ...TsEslint.configs.strictTypeChecked, - importPlugin.flatConfigs.typescript, + ImportPlugin.flatConfigs.typescript, { languageOptions: { parser: TsEslint.parser, diff --git a/eslint.config.mjs b/eslint.config.mjs index ee9248b..d8cebf5 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,4 +1,4 @@ -import globals from "globals"; +import Globals from "globals"; import CommonConfig from "./CommonConfig.mjs"; import StylisticConfigArray from "./StylisticConfigArray.mjs"; @@ -10,7 +10,7 @@ const EslintConfig = [ { languageOptions: { globals: { - ...globals.node, + ...Globals.node, }, }, }, From 6aa2e0efba9b7c2653a53b0f89a9b968bb32c6af Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sun, 5 Jan 2025 01:29:05 -0500 Subject: [PATCH 60/65] Update typescript-eslint to version 8.19.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 19a70a1..99b48a0 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,6 @@ "eslint-plugin-react-hooks": "^5.1.0", "eslint-plugin-simple-import-sort": "^12.1.1", "globals": "^15.14.0", - "typescript-eslint": "^8.18.2" + "typescript-eslint": "^8.19.0" } } From 0a759ac417df9165018a4599bf5bf592848d75cb Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sun, 5 Jan 2025 19:18:40 -0500 Subject: [PATCH 61/65] Fix line width violation - Apply suggestions from code review Co-authored-by: kirkrodrigues <2454684+kirkrodrigues@users.noreply.github.com> --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7e95557..fc087b9 100644 --- a/README.md +++ b/README.md @@ -41,8 +41,8 @@ objects into your own configuration array: `CommonConfig`, as shown in the [ESLint config examples](#eslint-config-examples). - `ReactConfigArray`: A specialized ESLint configuration for React applications. - `TsConfigArray`: A specialized ESLint configuration for TypeScript projects. A helper - `createTsConfigOverride` is also provided. See [ESLint config examples](#eslint-config-examples) for - details on how to set it up. + `createTsConfigOverride` is also provided. See [ESLint config examples](#eslint-config-examples) + for details on how to set it up. ### ESLint config examples From 6b59dcf47bcacee126c48d68c74f574b916f634a Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sun, 5 Jan 2025 19:31:41 -0500 Subject: [PATCH 62/65] Docs - Apply suggestions from code review Co-authored-by: kirkrodrigues <2454684+kirkrodrigues@users.noreply.github.com> --- README.md | 6 ++++-- ReactConfigArray.mjs | 8 ++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index fc087b9..a1cbfde 100644 --- a/README.md +++ b/README.md @@ -104,8 +104,6 @@ objects into your own configuration array: const EslintConfig = [ CommonConfig, - // NOTE: The map below must be placed directly before the spread `StylisticConfigArray`, to - // disable conflicting TsEsLint rules by the Stylistic plugin's "disable-legacy" preset. ...TsConfigArray.map( (config) => ({ files: [ @@ -115,6 +113,10 @@ objects into your own configuration array: ...config, }) ), + + // NOTE: `StylisticConfigArray` must be placed after `TsConfigArray` to override stylistic + // rules within `TsConfigArray` (we can't remove the stylistic rules from `TsConfigArray` + // since they come from a preset that `TsConfigArray` extends). ...StylisticConfigArray, ...ReactConfigArray, diff --git a/ReactConfigArray.mjs b/ReactConfigArray.mjs index 6683e8d..79a916f 100644 --- a/ReactConfigArray.mjs +++ b/ReactConfigArray.mjs @@ -50,10 +50,10 @@ const ReactConfigArray = [ }, ], - // Recognizing delays in porting rules from `eslint-plugin-react` to - // `@stylistic/eslint-plugin-jsx`, we list all available JSX rules from - // `eslint-plugin-react` below for reference. However, we only enable those that are - // useful and not yet covered by `@stylistic/eslint-plugin-jsx`. + // Some rules with the `jsx-` prefix are covered by `@stylistic/eslint-plugin-jsx` + // while others aren't (yet). So we list all available JSX rules from + // `eslint-plugin-react` below (for reference), and only enable those that are useful + // and not yet covered by `@stylistic/eslint-plugin-jsx`. "react/jsx-boolean-value": [ "warn", "always", From a25917d5fd4e0f2d529d756a4bfed7a232c1c7dd Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sun, 5 Jan 2025 19:35:45 -0500 Subject: [PATCH 63/65] Use string concat instead to fix line width violation - Apply suggestions from code review Co-authored-by: kirkrodrigues <2454684+kirkrodrigues@users.noreply.github.com> --- CommonConfig.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CommonConfig.mjs b/CommonConfig.mjs index 8d5d360..58471cb 100644 --- a/CommonConfig.mjs +++ b/CommonConfig.mjs @@ -197,8 +197,8 @@ const CommonConfig = { "no-restricted-syntax": [ "error", { - message: `Direct exporting of declarations is not allowed. Use export list or -default exports instead.`, + message: "Direct exporting of declarations is not allowed. Use export list or " + + "default exports instead.", selector: "ExportNamedDeclaration[declaration!=null]", }, ], From c897715ffa2255f13b9f16540fea840d84937e7b Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sun, 5 Jan 2025 19:41:31 -0500 Subject: [PATCH 64/65] Docs - Apply suggestions from code review Co-authored-by: kirkrodrigues <2454684+kirkrodrigues@users.noreply.github.com> --- CommonConfig.mjs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CommonConfig.mjs b/CommonConfig.mjs index 58471cb..2a5a4b5 100644 --- a/CommonConfig.mjs +++ b/CommonConfig.mjs @@ -301,6 +301,8 @@ const CommonConfig = { "warn", { /* + // EXAMPLES + // === // Built-in Node.js modules import fs from "node:fs"; import path from "node:path"; @@ -331,7 +333,7 @@ const CommonConfig = { import App from "./components/App"; import helperFunction from "./utils"; - // Side-effect imports (e.g., those which have `\u0000` prepended) + // Side-effect imports (those which have `\u0000` prepended) import "normalize.css"; import "./index.css"; */ From 7d9ba949fcc348e4df5f5a8ee824b4cc14e41849 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sun, 5 Jan 2025 19:44:36 -0500 Subject: [PATCH 65/65] createTsConfigOverride - Simplify and clarify the function description and parameter details. --- TsConfigArray.mjs | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/TsConfigArray.mjs b/TsConfigArray.mjs index 6acfbb0..c758806 100644 --- a/TsConfigArray.mjs +++ b/TsConfigArray.mjs @@ -3,13 +3,9 @@ import TsEslint from "typescript-eslint"; /** - * Creates a configuration object for a TypeScript project. + * Gets an object containing the basic options to configure ESLint for a TypeScript project. * - * This function helps tailor ESLint to work with our TypeScript config by defining the files to - * include, pointing to the TypeScript project configuration file (tsconfig.json), and ensuring - * proper import resolution. - * - * @param {string[]} files Paths to include in the configuration. + * @param {string[]} files Paths or globs for the TypeScript files to be linted. * @param {string} projectConfigPath Path to the corresponding `tsconfig.json`. * @return {object} The configuration object. */