diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 000000000..e589a9a04 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,444 @@ +/* eslint-disable comma-dangle */ +/* eslint-disable quotes */ +import pluginImport from 'eslint-plugin-import'; +import pluginNode from 'eslint-plugin-node'; +import pluginReact from 'eslint-plugin-react'; +import pluginTypeScript from '@typescript-eslint/eslint-plugin'; + + +// Generally, don't change TRANSITION_* severities unless you're LordSputnik ;) +const ERROR = 2; +// warnings that should be reviewed soon +const TRANSITION_WARNING = 1; +// warnings that should stay warnings +const WARNING = 1; +// ignores that should be reviewed soon +const TRANSITION_IGNORE = 0; +const IGNORE = 0; + +// These should not be removed at all. +const possibleErrorsRules = { + 'no-await-in-loop': ERROR, + 'no-console': ERROR, + 'no-template-curly-in-string': ERROR, + 'valid-jsdoc': [ + ERROR, + { + prefer: { + return: 'returns' + }, + requireReturn: false + } + ] +}; + +// These should probably not be removed at all. +const bestPracticesRules = { + 'accessor-pairs': ERROR, + 'array-callback-return': ERROR, + 'block-scoped-var': ERROR, + 'class-methods-use-this': TRANSITION_IGNORE, + complexity: [ERROR, {max: 50}], + 'consistent-return': ERROR, + curly: ERROR, + 'default-case': ERROR, + 'dot-location': [ + ERROR, + 'property' + ], + 'dot-notation': ERROR, + eqeqeq: [ + ERROR, + 'allow-null' + ], + 'guard-for-in': ERROR, + 'no-alert': ERROR, + 'no-caller': ERROR, + 'no-div-regex': ERROR, + 'no-else-return': ERROR, + 'no-empty-function': ERROR, + 'no-eq-null': ERROR, + 'no-eval': ERROR, + 'no-extend-native': ERROR, + 'no-extra-bind': ERROR, + 'no-extra-label': ERROR, + 'no-floating-decimal': ERROR, + 'no-implicit-coercion': ERROR, + 'no-implicit-globals': ERROR, + 'no-implied-eval': ERROR, + 'no-iterator': ERROR, + 'no-labels': ERROR, + 'no-lone-blocks': ERROR, + 'no-loop-func': ERROR, + 'no-magic-numbers': [ + TRANSITION_IGNORE, + { + detectObjects: true, + enforceConst: true, + ignore: [ + 0, + 1, + 2, + 3, + 10 + ], + ignoreArrayIndexes: true + } + ], + 'no-multi-spaces': ERROR, + 'no-multi-str': ERROR, + 'no-new': ERROR, + 'no-new-func': ERROR, + 'no-new-wrappers': ERROR, + 'no-octal-escape': ERROR, + 'no-param-reassign': ERROR, + 'no-proto': ERROR, + 'no-return-assign': ERROR, + 'no-return-await': ERROR, + 'no-script-url': ERROR, + 'no-self-compare': ERROR, + 'no-sequences': ERROR, + 'no-throw-literal': ERROR, + 'no-unmodified-loop-condition': ERROR, + 'no-unused-expressions': TRANSITION_WARNING, + 'no-useless-call': ERROR, + 'no-useless-concat': ERROR, + 'no-useless-return': ERROR, + 'no-void': ERROR, + 'no-warning-comments': WARNING, + 'prefer-promise-reject-errors': ERROR, + radix: ERROR, + 'require-await': ERROR, + 'vars-on-top': ERROR, + 'wrap-iife': [ + ERROR, + 'any' + ], + yoda: ERROR +}; + +const strictModeRules = { + strict: [ERROR, "global"], +}; + +const variablesRules = { + "init-declarations": TRANSITION_IGNORE, + "no-catch-shadow": ERROR, + "no-label-var": ERROR, + "no-undef-init": ERROR, + "no-undefined": ERROR, +}; + +const nodeAndCommonJSRules = { + "node/callback-return": [ERROR, ["callback", "cb", "next", "done"]], + "node/global-require": ERROR, + "node/handle-callback-err": ERROR, + "node/no-missing-import": [ + ERROR, + {tryExtensions: [".js", ".jsx", ".ts", ".tsx"]}, + ], + "node/no-mixed-requires": ERROR, + "node/no-new-require": ERROR, + "node/no-path-concat": ERROR, + "node/no-process-env": TRANSITION_WARNING, + "node/no-process-exit": ERROR, + "node/no-sync": ERROR, + "node/no-unpublished-import": IGNORE, + "node/no-unsupported-features/es-builtins": IGNORE, + "node/no-unsupported-features/es-syntax": IGNORE, +}; + +const stylisticIssuesRules = { + "array-bracket-newline": [ERROR, "consistent"], + "array-bracket-spacing": ERROR, + "block-spacing": ERROR, + "brace-style": [ERROR, "stroustrup", {allowSingleLine: true}], + camelcase: [ERROR, {properties: "always"}], + "comma-dangle": TRANSITION_WARNING, + "comma-spacing": ERROR, + "comma-style": ERROR, + "computed-property-spacing": ERROR, + "consistent-this": [ERROR, "self"], + "eol-last": ERROR, + "func-call-spacing": ERROR, + "func-name-matching": ERROR, + "func-names": ERROR, + "func-style": [ERROR, "declaration"], + "function-paren-newline": [TRANSITION_WARNING, "consistent"], + "id-length": [ERROR, {exceptions: ["x", "i", "_", "$", "a", "b", "q"]}], + indent: [ERROR, "tab", {SwitchCase: 1, VariableDeclarator: 1}], + "jsx-quotes": [TRANSITION_WARNING, "prefer-double"], + "key-spacing": ERROR, + "keyword-spacing": ERROR, + "linebreak-style": ERROR, + "lines-around-comment": [ + ERROR, + {allowBlockStart: true, beforeBlockComment: true}, + ], + "lines-between-class-members": ERROR, + "max-depth": [ERROR, 6], + "max-len": [ + WARNING, + {code: 150, ignoreComments: true, ignoreUrls: true, tabWidth: 4}, + ], + "max-nested-callbacks": [ERROR, 5], + "max-params": [TRANSITION_IGNORE, 4], + "max-statements": [TRANSITION_IGNORE, 15], + "new-cap": [ERROR, {capIsNew: false}], + "new-parens": ERROR, + "no-array-constructor": ERROR, + "no-bitwise": ERROR, + "no-continue": ERROR, + "no-inline-comments": WARNING, + "no-lonely-if": ERROR, + "no-mixed-spaces-and-tabs": [ERROR, "smart-tabs"], + "no-multiple-empty-lines": ERROR, + "no-nested-ternary": ERROR, + "no-new-object": TRANSITION_IGNORE, + "no-trailing-spaces": ERROR, + "no-unneeded-ternary": ERROR, + "no-whitespace-before-property": ERROR, + "object-curly-newline": ERROR, + "object-curly-spacing": ERROR, + "one-var": [ERROR, "never"], + "operator-assignment": ERROR, + "operator-linebreak": [ERROR, "after"], + "padded-blocks": [ERROR, "never"], + "quote-props": [ERROR, "as-needed"], + quotes: [TRANSITION_WARNING, "prefer-double", "avoid-escape"], + "require-jsdoc": TRANSITION_IGNORE, + "semi-spacing": [ERROR, {after: true, before: false}], + "sort-keys": ERROR, + "sort-vars": ERROR, + "space-before-blocks": ERROR, + "space-before-function-paren": [ERROR, {named: "never"}], + "space-in-parens": ERROR, + "space-infix-ops": ERROR, + "space-unary-ops": ERROR, + "spaced-comment": ERROR, + "unicode-bom": ERROR, + "wrap-regex": ERROR, +}; + +const ecmaScript6Rules = { + "arrow-body-style": ERROR, + "arrow-spacing": ERROR, + "generator-star-spacing": [ERROR, {after: true, before: false}], + "no-confusing-arrow": ERROR, + "no-duplicate-imports": ERROR, + "no-useless-computed-key": ERROR, + "no-useless-constructor": ERROR, + "no-useless-rename": ERROR, + "no-var": ERROR, + "object-shorthand": ERROR, + "prefer-arrow-callback": ERROR, + "prefer-const": WARNING, + "prefer-destructuring": [ERROR, {array: false, object: true}], + "prefer-numeric-literals": ERROR, + "prefer-template": ERROR, + "rest-spread-spacing": ERROR, + "sort-imports": ERROR, + "template-curly-spacing": ERROR, + "yield-star-spacing": ERROR, +}; + +const typescriptRules = { + "@typescript-eslint/ban-types": TRANSITION_WARNING, + "@typescript-eslint/explicit-module-boundary-types": TRANSITION_IGNORE, + "@typescript-eslint/no-explicit-any": TRANSITION_IGNORE, + "@typescript-eslint/no-extra-parens": [ + ERROR, + "all", + { + enforceForArrowConditionals: false, + ignoreJSX: "multi-line", + nestedBinaryExpressions: false, + returnAssign: false, + }, + ], + "@typescript-eslint/no-invalid-this": ERROR, + "@typescript-eslint/no-shadow": ERROR, + "@typescript-eslint/no-unused-vars": TRANSITION_WARNING, + "@typescript-eslint/no-use-before-define": ERROR, + "@typescript-eslint/semi": ERROR, +}; + + +const reactRules = { + "react/boolean-prop-naming": ERROR, + "react/button-has-type": ERROR, + "react/default-props-match-prop-types": ERROR, + "react/forbid-component-props": TRANSITION_IGNORE, + "react/forbid-foreign-prop-types": ERROR, + "react/jsx-boolean-value": ERROR, + "react/jsx-closing-bracket-location": [ERROR, "tag-aligned"], + "react/jsx-closing-tag-location": ERROR, + "react/jsx-curly-brace-presence": ERROR, + "react/jsx-curly-spacing": [ + ERROR, + { + children: true, + }, + ], + "react/jsx-equals-spacing": ERROR, + "react/jsx-first-prop-new-line": ERROR, + "react/jsx-handler-names": ERROR, + "react/jsx-indent-props": [ERROR, "tab"], + "react/jsx-no-bind": [ + ERROR, + { + ignoreRefs: true, + }, + ], + "react/jsx-no-literals": TRANSITION_IGNORE, + "react/jsx-one-expression-per-line": TRANSITION_IGNORE, + "react/jsx-pascal-case": ERROR, + "react/jsx-sort-props": [ + ERROR, + { + callbacksLast: true, + ignoreCase: false, + shorthandFirst: true, + }, + ], + "react/jsx-tag-spacing": [ + ERROR, + { + beforeSelfClosing: "never", + }, + ], + "react/jsx-wrap-multilines": ERROR, + "react/no-access-state-in-setstate": ERROR, + "react/no-array-index-key": TRANSITION_WARNING, + "react/no-danger": TRANSITION_WARNING, + "react/no-did-mount-set-state": ERROR, + "react/no-did-update-set-state": ERROR, + "react/no-direct-mutation-state": ERROR, + "react/no-multi-comp": [ + ERROR, + { + ignoreStateless: true, + }, + ], + "react/no-redundant-should-component-update": ERROR, + "react/no-set-state": TRANSITION_IGNORE, + "react/no-typos": ERROR, + "react/no-unused-prop-types": ERROR, + "react/no-unused-state": TRANSITION_WARNING, + "react/no-will-update-set-state": ERROR, + "react/prefer-es6-class": [ERROR, "always"], + "react/prefer-stateless-function": ERROR, + "react/require-default-props": [ + ERROR, + { + forbidDefaultForRequired: true, + }, + ], + "react/self-closing-comp": ERROR, + "react/sort-comp": ERROR, + "react/sort-prop-types": [ + ERROR, + { + callbacksLast: false, + ignoreCase: false, + requiredFirst: false, + sortShapeProp: true, + }, + ], + "react/style-prop-object": ERROR, + "react/void-dom-elements-no-children": ERROR, +}; + +const es6ImportRules = { + "import/first": ERROR, + "import/newline-after-import": [ + WARNING, + { + count: 2, + }, + ], + "import/no-absolute-path": ERROR, + "import/no-amd": ERROR, + "import/no-commonjs": ERROR, + "import/no-duplicates": ERROR, + "import/no-dynamic-require": TRANSITION_WARNING, + "import/no-extraneous-dependencies": ERROR, + "import/no-internal-modules": [ + ERROR, + { + allow: [ + "**/src/**", + "**/lib/**", + "**/data/**", + "**/config/**", + "**/test/**", + "react-dom/server", + "**/react-select/*", + ], + }, + ], + "import/no-mutable-exports": ERROR, + "import/no-named-as-default": ERROR, + "import/no-named-as-default-member": ERROR, + "import/no-named-default": ERROR, + "import/no-unassigned-import": ERROR, +}; + +export default [ + { + ignores: [ + "lib/**", + "static/**", + "flow-typed/**", + "nyc/**", + "coverage/**", + "out/**", + "!.eslintrc.js", + "webpack.client.js", + ], + }, + { + files: ["**/*.ts", "**/*.tsx"], + languageOptions: { + parser: "@typescript-eslint/parser", + parserOptions: { + ecmaVersion: "latest", + sourceType: "module", + }, + }, + plugins: { + "@typescript-eslint": pluginTypeScript, + }, + rules: typescriptRules, + }, + { + files: ["**/*.js", "**/*.jsx"], + languageOptions: { + ecmaVersion: "latest", + sourceType: "module", + }, + plugins: { + import: pluginImport, + node: pluginNode, + react: pluginReact, + }, + rules: { + ...possibleErrorsRules, + ...bestPracticesRules, + ...strictModeRules, + ...variablesRules, + ...nodeAndCommonJSRules, + ...stylisticIssuesRules, + ...ecmaScript6Rules, + ...reactRules, + ...es6ImportRules, + }, + settings: { + "import/resolver": { + node: { + extensions: [".js", ".jsx", ".ts", ".tsx"], + }, + }, + }, + }, +]; diff --git a/package.json b/package.json index c9da78441..e6f7b1701 100644 --- a/package.json +++ b/package.json @@ -127,7 +127,7 @@ "enzyme-adapter-react-16": "^1.15.6", "eslint": "^7.30.0", "eslint-plugin-babel": "^5.3.1", - "eslint-plugin-import": "^2.29.1", + "eslint-plugin-import": "^2.31.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-react": "^7.26.1", "eslint-webpack-plugin": "^2.4.1", diff --git a/yarn.lock b/yarn.lock index 1cd3dad1e..5f33cd848 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1773,6 +1773,11 @@ dependencies: dequal "^2.0.2" +"@rtsao/scc@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" + integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== + "@sinclair/typebox@^0.24.1": version "0.24.20" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.20.tgz#11a657875de6008622d53f56e063a6347c51a6dd" @@ -1954,7 +1959,7 @@ "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/lodash@^4.14.202": version "4.14.202" @@ -2523,7 +2528,7 @@ array-flatten@1.1.1: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= -array-includes@^3.1.3, array-includes@^3.1.4, array-includes@^3.1.7: +array-includes@^3.1.3, array-includes@^3.1.4, array-includes@^3.1.8: version "3.1.8" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== @@ -2573,7 +2578,7 @@ array.prototype.find@^2.1.1: es-abstract "^1.19.4" es-shim-unscopables "^1.0.0" -array.prototype.findlastindex@^1.2.3: +array.prototype.findlastindex@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== @@ -2919,15 +2924,7 @@ cacheable-request@^6.0.0: normalize-url "^4.1.0" responselike "^1.0.2" -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== @@ -3306,7 +3303,7 @@ compression@^1.7.4: concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== configstore@^5.0.1: version "5.0.1" @@ -4125,14 +4122,7 @@ es-set-tostringtag@^2.0.3: has-tostringtag "^1.0.2" hasown "^2.0.1" -es-shim-unscopables@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" - integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== - dependencies: - has "^1.0.3" - -es-shim-unscopables@^1.0.2: +es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== @@ -4241,10 +4231,10 @@ eslint-import-resolver-node@^0.3.9: is-core-module "^2.13.0" resolve "^1.22.4" -eslint-module-utils@^2.8.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#52f2404300c3bd33deece9d7372fb337cc1d7c34" - integrity sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q== +eslint-module-utils@^2.12.0: + version "2.12.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#fe4cfb948d61f49203d7b08871982b65b9af0b0b" + integrity sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg== dependencies: debug "^3.2.7" @@ -4263,27 +4253,29 @@ eslint-plugin-es@^3.0.0: eslint-utils "^2.0.0" regexpp "^3.0.0" -eslint-plugin-import@^2.29.1: - version "2.29.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" - integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== +eslint-plugin-import@^2.31.0: + version "2.31.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7" + integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== 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" eslint-plugin-node@^11.1.0: @@ -4940,7 +4932,7 @@ get-func-name@^2.0.0: resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: +get-intrinsic@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== @@ -4949,7 +4941,7 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: has "^1.0.3" has-symbols "^1.0.1" -get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: +get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== @@ -5167,12 +5159,7 @@ gzip-size@^6.0.0: dependencies: duplexer "^0.1.2" -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== - -has-bigints@^1.0.2: +has-bigints@^1.0.1, has-bigints@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== @@ -5187,14 +5174,7 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== - dependencies: - get-intrinsic "^1.1.1" - -has-property-descriptors@^1.0.2: +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== @@ -5206,24 +5186,12 @@ has-proto@^1.0.1, has-proto@^1.0.3: resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== -has-symbols@^1.0.1, has-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - -has-symbols@^1.0.3: +has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has-tostringtag@^1.0.2: +has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== @@ -5546,12 +5514,12 @@ is-boolean-object@^1.0.1, is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-callable@^1.1.3, is-callable@^1.2.7: +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-callable@^1.1.4, is-callable@^1.1.5, is-callable@^1.2.4: +is-callable@^1.1.5, is-callable@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== @@ -5563,7 +5531,14 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" -is-core-module@^2.13.0, is-core-module@^2.13.1, is-core-module@^2.2.0, is-core-module@^2.9.0: +is-core-module@^2.13.0, is-core-module@^2.15.1: + version "2.15.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37" + integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ== + dependencies: + hasown "^2.0.2" + +is-core-module@^2.2.0, is-core-module@^2.9.0: version "2.14.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.14.0.tgz#43b8ef9f46a6a08888db67b1ffd4ec9e3dfd59d1" integrity sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A== @@ -5587,7 +5562,7 @@ is-date-object@^1.0.1: is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-fullwidth-code-point@^3.0.0: version "3.0.0" @@ -5637,9 +5612,9 @@ is-npm@^5.0.0: integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== is-number-object@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" - integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== dependencies: has-tostringtag "^1.0.0" @@ -5712,14 +5687,7 @@ is-shared-array-buffer@^1.0.1: resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== -is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" - integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== - dependencies: - call-bind "^1.0.2" - -is-shared-array-buffer@^1.0.3: +is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== @@ -6554,9 +6522,9 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: brace-expansion "^1.1.7" minimist@^1.2.0, minimist@^1.2.6: - version "1.2.7" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" - integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== mocha-chai-jest-snapshot@^1.1.4: version "1.1.4" @@ -6781,7 +6749,7 @@ object-assign@^4.0.1, object-assign@^4.1.1: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= -object-inspect@^1.11.0, object-inspect@^1.9.0: +object-inspect@^1.11.0: version "1.11.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== @@ -6838,7 +6806,7 @@ object.entries@^1.1.1, object.entries@^1.1.2, object.entries@^1.1.5: define-properties "^1.1.3" es-abstract "^1.19.1" -object.fromentries@^2.0.3, object.fromentries@^2.0.5, object.fromentries@^2.0.7: +object.fromentries@^2.0.3, object.fromentries@^2.0.5, object.fromentries@^2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== @@ -6857,7 +6825,7 @@ object.getownpropertydescriptors@^2.0.3: define-properties "^1.1.3" es-abstract "^1.19.1" -object.groupby@^1.0.1: +object.groupby@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== @@ -6874,7 +6842,7 @@ object.hasown@^1.1.0: define-properties "^1.1.3" es-abstract "^1.19.1" -object.values@^1.1.1, object.values@^1.1.2, object.values@^1.1.5, object.values@^1.1.7: +object.values@^1.1.1, object.values@^1.1.2, object.values@^1.1.5, object.values@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== @@ -7909,14 +7877,14 @@ regexp.prototype.flags@^1.4.3: functions-have-names "^1.2.2" regexp.prototype.flags@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" - integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== + version "1.5.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz#b3ae40b1d2499b8350ab2c3fe6ef3845d3a96f42" + integrity sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ== 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" regexpp@^3.0.0, regexpp@^3.1.0: version "3.2.0" @@ -8309,7 +8277,7 @@ set-function-length@^1.2.1: gopd "^1.0.1" has-property-descriptors "^1.0.2" -set-function-name@^2.0.1: +set-function-name@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== @@ -8348,16 +8316,7 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -side-channel@^1.0.6: +side-channel@^1.0.4, side-channel@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== @@ -8585,7 +8544,7 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1"