@anolilab/eslint-config 9.0.3 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/CHANGELOG.md +34 -1
  2. package/dist/chunk-2DWLXDNX.js +9 -0
  3. package/dist/chunk-2DWLXDNX.js.map +1 -0
  4. package/dist/{chunk-MQFZFF2T.js → chunk-2L7ILCIC.js} +1 -1
  5. package/dist/chunk-2L7ILCIC.js.map +1 -0
  6. package/dist/{chunk-3Y2MNMYX.js → chunk-IMYCB5M2.js} +2 -2
  7. package/dist/chunk-IMYCB5M2.js.map +1 -0
  8. package/dist/chunk-O7JDC6TD.js +9 -0
  9. package/dist/{chunk-X3W6J3PZ.js → chunk-OCCLNRZC.js} +2 -2
  10. package/dist/{chunk-X3W6J3PZ.js.map → chunk-OCCLNRZC.js.map} +1 -1
  11. package/dist/chunk-QTF4Y7AW.js +11 -0
  12. package/dist/chunk-QTF4Y7AW.js.map +1 -0
  13. package/dist/config/best-practices.js +2 -2
  14. package/dist/config/errors.js +3 -2
  15. package/dist/config/plugins/antfu.js +2 -2
  16. package/dist/config/plugins/array-func.js +2 -2
  17. package/dist/config/plugins/babel.js +7 -7
  18. package/dist/config/plugins/babel.js.map +1 -1
  19. package/dist/config/plugins/es.js +2 -2
  20. package/dist/config/plugins/eslint-comments.js +2 -2
  21. package/dist/config/plugins/etc.js +2 -2
  22. package/dist/config/plugins/html.js +3 -3
  23. package/dist/config/plugins/import.js +4 -3
  24. package/dist/config/plugins/import.js.map +1 -1
  25. package/dist/config/plugins/jsonc.js +2 -2
  26. package/dist/config/plugins/markdown.js +2 -2
  27. package/dist/config/plugins/mdx.js +2 -2
  28. package/dist/config/plugins/perfectionist.js +2 -2
  29. package/dist/config/plugins/react-hooks.js +2 -2
  30. package/dist/config/plugins/react-redux.js +2 -2
  31. package/dist/config/plugins/react-usememo.js +2 -2
  32. package/dist/config/plugins/react.js +7 -6
  33. package/dist/config/plugins/react.js.map +1 -1
  34. package/dist/config/plugins/regexp.js +2 -2
  35. package/dist/config/plugins/simple-import-sort.js +3 -2
  36. package/dist/config/plugins/simple-import-sort.js.map +1 -1
  37. package/dist/config/plugins/sonarjs.js +2 -2
  38. package/dist/config/plugins/tailwindcss.js +2 -2
  39. package/dist/config/plugins/tanstack-query.js +2 -2
  40. package/dist/config/plugins/testing-library.js +3 -3
  41. package/dist/config/plugins/tsdoc.js +2 -2
  42. package/dist/config/plugins/typescript.js +8 -8
  43. package/dist/config/plugins/typescript.js.map +1 -1
  44. package/dist/config/plugins/unicorn.js +3 -3
  45. package/dist/config/plugins/yml.js +3 -3
  46. package/dist/config/plugins/you-dont-need-lodash-underscore.js +2 -2
  47. package/dist/config/plugins/you-dont-need-momentjs.js +2 -2
  48. package/dist/config/plugins/zod.js +2 -2
  49. package/dist/config/style.js +5 -4
  50. package/dist/index.js +5 -5
  51. package/dist/index.js.map +1 -1
  52. package/dist/typescript-type-checking.js +5 -5
  53. package/dist/typescript-type-checking.js.map +1 -1
  54. package/package.json +23 -23
  55. package/dist/chunk-3Y2MNMYX.js.map +0 -1
  56. package/dist/chunk-57IVUTVM.js +0 -9
  57. package/dist/chunk-6COSQA7M.js +0 -7
  58. package/dist/chunk-6COSQA7M.js.map +0 -1
  59. package/dist/chunk-F5CTGWCD.js +0 -10
  60. package/dist/chunk-F5CTGWCD.js.map +0 -1
  61. package/dist/chunk-MQFZFF2T.js.map +0 -1
  62. package/dist/chunk-TWVXPNWB.js +0 -9
  63. package/dist/chunk-TWVXPNWB.js.map +0 -1
  64. /package/dist/{chunk-57IVUTVM.js.map → chunk-O7JDC6TD.js.map} +0 -0
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/config.ts","../src/engine-node-overwrite.ts"],"names":["hasDependency","hasDevDependency","packageIsTypeModule","pkg","globals","join","semver","resolvePackage","baseConfig","internalPluginConfig","pluginConfig","loadedPlugins","possiblePlugins","plugin","configName","dependencies","eslint_config_default","foundDependencies","dependency","rdependency","oneOfdependency","rules","pluginRules","possiblePluginRules","engineRules","engine_node_overwrite_default","consoleLog","name","consolePlugin","hasLogged","installed","configRules","nodeVersion","rule","ruleConfig","minVersion","config","src_default"],"mappings":"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","sourcesContent":["/**\n * rushstack eslint-patch is used to include plugins as dev\n * dependencies instead of imposing them as peer dependencies\n *\n * {@link https://www.npmjs.com/package/@rushstack/eslint-patch}\n * {@link https://stackoverflow.com/a/74478635/1392749}\n * {@link https://github.com/eslint/eslint/issues/3458}\n * {@link https://eslint.org/blog/2022/08/new-config-system-part-1/}\n * {@link https://eslint.org/blog/2022/08/new-config-system-part-2/}\n * {@link https://eslint.org/blog/2022/08/new-config-system-part-3/}\n * {@link https://eslint.org/docs/latest/user-guide/configuring/configuration-files-new}\n */\nimport \"@rushstack/eslint-patch/modern-module-resolution\";\n\nimport { hasDependency, hasDevDependency, packageIsTypeModule, pkg } from \"@anolilab/package-json-utils\";\nimport type { Linter } from \"eslint\";\nimport globals from \"globals\";\nimport { join } from \"node:path\";\nimport semver from \"semver\";\n\nimport { internalPluginConfig, pluginRules, possiblePluginRules, rules } from \"./config\";\nimport engineRules from \"./engine-node-overwrite\";\nimport anolilabEslintConfig from \"./utils/eslint-config\";\nimport { consoleLog, consolePlugin } from \"./utils/loggers\";\n\n// Workaround VS Code trying to run this file twice!\nif (!global.hasAnolilabEsLintConfigLoaded) {\n if (process.env[\"DEBUG\"]) {\n consoleLog(\"\\n@anolilab/eslint-config loaded the following plugins:\\n\");\n\n consoleLog(\" @rushstack/eslint-plugin-security\");\n internalPluginConfig\n .map((name: string) => {\n if (name === \"import\") {\n return \"i\";\n }\n\n if (name === \"node\") {\n return \"n\";\n }\n\n return name;\n })\n .forEach((plugin) => consolePlugin(plugin));\n }\n\n let hasLogged: boolean = false;\n\n Object.entries(possiblePluginRules).forEach(([plugin, dependencies]) => {\n const hasOneDependency = Object.values(dependencies).some(Boolean);\n\n if (hasOneDependency) {\n hasLogged = true;\n\n consoleLog(\n `\\nYour package.json container dependencies for the \"${plugin}\" eslint-plugin, please add the following dependencies with your chosen package manager to enable this plugin:`,\n );\n\n Object.entries(dependencies).forEach(([dependency, installed]) => {\n if (!installed) {\n consoleLog(` ${dependency}`);\n }\n });\n }\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (hasLogged) {\n consoleLog(\"\\nTo disable this message, add the following to your package.json:\");\n consoleLog(' \"anolilab\": { \"eslint-config\": { plugin: { \"plugin-name\": false } } }\\n');\n }\n\n consoleLog('To disable all logging, add the following to your eslint command call \"NO_LOGS=true eslint ...\"');\n\n global.hasAnolilabEsLintConfigLoaded = true;\n}\n\nconst configRules: Linter.RulesRecord = {};\nlet nodeVersion: string | undefined;\n\nif (pkg?.engines?.[\"node\"]) {\n nodeVersion = pkg.engines[\"node\"];\n}\n\nObject.entries(engineRules).forEach(([rule, ruleConfig]) => {\n Object.keys(ruleConfig)\n .sort(semver.rcompare)\n .forEach((minVersion) => {\n if (nodeVersion && semver.intersects(nodeVersion, `<${minVersion}`)) {\n // eslint-disable-next-line security/detect-object-injection\n configRules[rule] = ruleConfig[minVersion as keyof typeof ruleConfig] as Linter.RuleEntry;\n }\n });\n});\n\n// Workaround VS Code trying to run this file twice!\nif (!global.hasAnolilabEsLintConfigPrettier && (hasDependency(\"prettier\") || hasDevDependency(\"prettier\"))) {\n global.hasAnolilabEsLintConfigPrettier = true;\n\n if (anolilabEslintConfig[\"info_on_disabling_prettier_conflict_rule\"] !== false) {\n consoleLog(\"\\nFound prettier as dependency, disabling some rules to fix wrong behavior of the rule with eslint and prettier\");\n }\n}\n\nconst config: Linter.Config = {\n // After an .eslintrc.js file is loaded, ESLint will normally continue visiting all parent folders\n // to look for other .eslintrc.js files, and also consult a personal file ~/.eslintrc.js. If any files\n // are found, their options will be merged. This is difficult for humans to understand, and it will cause\n // nondeterministic behavior if files are loaded from outside the Git working folder.\n //\n // Setting root=true causes ESLint to stop looking for other config files after the first .eslintrc.js\n extends: [\n ...rules.map((plugin) => join(__dirname, `./config/${plugin}.js`)),\n\n ...pluginRules.map((plugin) => join(__dirname, `./config/plugins/${plugin}.js`)),\n ],\n globals: {\n ...globals.browser,\n ...globals.nodeBuiltin,\n },\n ignorePatterns: [\n \"!.*\",\n\n \".git/\",\n \"node_modules/\",\n \"bower_components/\",\n \"jspm_packages/\",\n \".npm/\",\n\n \"lib-cov/\",\n \"coverage/\",\n \".nyc_output/\",\n \".cache/\",\n\n \"build/\",\n \"dist/\",\n \"tmp/\",\n\n \"**/*.min.*\",\n\n // Manually authored .d.ts files are generally used to describe external APIs that are not expected\n // to follow our coding conventions. Linting those files tends to produce a lot of spurious suppressions,\n // so we simply ignore them.\n \"*.d.ts\",\n\n \"pnpm-lock.yaml\",\n ],\n overrides: [\n {\n files: [\"**/migrations/*.{js,ts}\"],\n rules: {\n \"filenames/match-regex\": \"off\",\n },\n },\n {\n files: [\n // Test files\n \"**/*.spec.{js,ts,tsx}\",\n \"**/*.test.{js,ts,tsx}\",\n\n // Facebook convention\n \"**/__mocks__/*.{js,ts,tsx}\",\n \"**/__tests__/*.{js,ts,tsx}\",\n\n // Microsoft convention\n \"**/test/*.{js,ts,tsx}\",\n ],\n rules: {\n \"no-magic-numbers\": \"off\",\n \"sonarjs/no-duplicate-string\": \"off\",\n },\n },\n // Fixes https://github.com/eslint/eslint/discussions/15305\n {\n files: packageIsTypeModule ? [\"*.js\", \"*.mjs\"] : [\"*.mjs\"],\n parser: \"@babel/eslint-parser\",\n parserOptions: {\n babelOptions: {\n plugins: [\"@babel/plugin-syntax-import-assertions\"],\n },\n requireConfigFile: false,\n },\n },\n ],\n // Disable the parser by default\n parser: \"\",\n // is loaded.\n rules: {\n ...configRules,\n },\n};\n\nexport default config;\n","import { hasDependency, hasDevDependency, resolvePackage } from \"@anolilab/package-json-utils\";\n\nimport type { PackageRules } from \"./types\";\nimport anolilabEslintConfig from \"./utils/eslint-config\";\n\nconst baseConfig = [\"best-practices\", \"errors\", \"style\", \"es6\", \"variables\"];\n\n// eslint-disable-next-line import/exports-last\nexport const internalPluginConfig = [\n \"compat\",\n \"eslint-comments\",\n \"import\",\n \"promise\",\n \"simple-import-sort\",\n \"no-extend-native\",\n \"node\",\n // Security Rules\n \"no-secrets\",\n \"sonarjs\",\n \"security\",\n \"regexp\",\n // file rules\n \"jsonc\",\n \"markdown\",\n \"toml\",\n \"yml\",\n \"html\",\n\n // custom rules\n \"antfu\",\n \"unicorn\",\n \"es\",\n \"perfectionist\",\n];\n\nconst pluginConfig: PackageRules = [\n {\n configName: \"array-func\",\n dependencies: [\"eslint-plugin-array-func\"],\n },\n {\n configName: \"jsdoc\",\n dependencies: [\"eslint-plugin-jsdoc\"],\n },\n {\n configName: \"tsdoc\",\n dependencies: [\"eslint-plugin-tsdoc\", \"typescript\"],\n },\n {\n configName: \"lodash\",\n dependencies: [\"lodash\", \"eslint-plugin-lodash\"],\n },\n {\n configName: \"lodash-fp\",\n dependencies: [\"lodash\", \"eslint-plugin-lodash-fp\"],\n },\n {\n configName: \"you-dont-need-lodash-underscore\",\n dependencies: [\"lodash\", \"eslint-plugin-you-dont-need-lodash-underscore\"],\n },\n {\n configName: \"mdx\",\n dependencies: [\"eslint-plugin-mdx\"],\n oneOfDependency: [\"nextra\", \"docz\", \"@docusaurus/core\", \"gatsby-plugin-mdx\"],\n resolve: [\"@mdx-js/mdx\", \"remark-mdx\", \"@mdx-js/loader\", \"@mdx-js/rollup\", \"@mdx-js/react\"],\n },\n {\n configName: \"no-unsanitized\",\n dependencies: [\"eslint-plugin-no-unsanitized\"],\n },\n {\n configName: \"react\",\n dependencies: [\"react\", \"react-dom\", \"eslint-plugin-react\"],\n },\n {\n configName: \"react-redux\",\n dependencies: [\"eslint-plugin-react-redux\"],\n oneOfDependency: [\"@reduxjs/toolkit\", \"redux\"],\n },\n {\n configName: \"jsx-a11y\",\n dependencies: [\"react\", \"react-dom\", \"eslint-plugin-jsx-a11y\"],\n },\n {\n configName: \"react-hooks\",\n dependencies: [\"react\", \"react-dom\", \"eslint-plugin-react-hooks\"],\n },\n {\n configName: \"react-usememo\",\n dependencies: [\"react\", \"react-dom\", \"@arthurgeron/eslint-plugin-react-usememo\"],\n },\n {\n configName: \"you-dont-need-momentjs\",\n dependencies: [\"moment\", \"eslint-plugin-you-dont-need-momentjs\"],\n },\n {\n configName: \"you-dont-need-momentjs\",\n dependencies: [\"moment-timezone\", \"eslint-plugin-you-dont-need-momentjs\"],\n },\n {\n configName: \"tailwindcss\",\n dependencies: [\"eslint-plugin-tailwindcss\"],\n },\n {\n configName: \"cypress\",\n dependencies: [\"cypress\", \"eslint-plugin-cypress\"],\n },\n {\n configName: \"jest\",\n dependencies: [\"jest\", \"eslint-plugin-jest\"],\n },\n {\n configName: \"jest-dom\",\n dependencies: [\"jest\", \"@testing-library/jest-dom\", \"eslint-plugin-jest-dom\"],\n },\n {\n configName: \"jest-async\",\n dependencies: [\"jest\", \"eslint-plugin-jest-async\"],\n },\n {\n configName: \"jest-formatting\",\n dependencies: [\"jest\", \"eslint-plugin-jest-formatting\"],\n },\n {\n configName: \"tailwindcss\",\n dependencies: [\"tailwindcss\"],\n },\n {\n configName: \"testing-library\",\n dependencies: [\"@testing-library/dom\", \"eslint-plugin-testing-library\"],\n },\n {\n configName: \"testing-library\",\n dependencies: [\"react\", \"@testing-library/react\", \"eslint-plugin-testing-library\"],\n },\n {\n configName: \"typescript\",\n dependencies: [\"typescript\"],\n },\n {\n configName: \"etc\",\n dependencies: [\"typescript\", \"eslint-plugin-etc\"],\n },\n {\n configName: \"vitest\",\n dependencies: [\"vitest\", \"eslint-plugin-vitest\"],\n },\n {\n configName: \"zod\",\n dependencies: [\"zod\", \"eslint-plugin-zod\"],\n },\n {\n configName: \"ava\",\n dependencies: [\"ava\", \"eslint-plugin-ava\"],\n },\n {\n configName: \"storybook\",\n dependencies: [\"storybook\", \"eslint-plugin-storybook\"],\n },\n {\n configName: \"playwright\",\n dependencies: [\"playwright\", \"eslint-plugin-playwright\"],\n },\n {\n configName: \"tanstack-query\",\n dependencies: [\"@tanstack/react-query\", \"@tanstack/eslint-plugin-query\"],\n },\n];\n\nconst loadedPlugins: string[] = [...internalPluginConfig];\nconst possiblePlugins: { [rule: string]: { [packageName: string]: boolean } } = {};\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\npluginConfig.forEach((plugin) => {\n const { configName, dependencies } = plugin;\n\n // eslint-disable-next-line security/detect-object-injection\n if ((anolilabEslintConfig as unknown as { [key: string]: { [key: string]: false | undefined } })[\"plugin\"]?.[configName] !== false) {\n const foundDependencies = [];\n\n dependencies.forEach((dependency) => {\n if (hasDependency(dependency) || hasDevDependency(dependency)) {\n foundDependencies.push(dependency);\n }\n });\n\n // eslint-disable-next-line security/detect-object-injection\n possiblePlugins[configName] = {};\n\n if (foundDependencies.length === 0 && plugin.resolve !== undefined) {\n plugin.resolve.forEach((rdependency) => {\n if (resolvePackage(rdependency) !== undefined) {\n dependencies.forEach((dependency) => {\n // eslint-disable-next-line security/detect-object-injection\n (possiblePlugins[configName] as { [key: string]: boolean })[dependency] = hasDependency(dependency) || hasDevDependency(dependency);\n });\n }\n });\n }\n\n if (foundDependencies.length === 0 && plugin.oneOfDependency !== undefined) {\n plugin.oneOfDependency.forEach((oneOfdependency) => {\n if (hasDependency(oneOfdependency) || hasDevDependency(oneOfdependency)) {\n [...dependencies, ...(plugin.oneOfDependency as string[])].forEach((dependency) => {\n // eslint-disable-next-line security/detect-object-injection\n (possiblePlugins[configName] as { [key: string]: boolean })[dependency] = hasDependency(dependency) || hasDevDependency(dependency);\n });\n }\n });\n }\n\n if (foundDependencies.length === dependencies.length) {\n // eslint-disable-next-line security/detect-object-injection,@typescript-eslint/no-dynamic-delete\n delete possiblePlugins[configName];\n\n loadedPlugins.push(configName);\n } else {\n dependencies.forEach((dependency) => {\n // eslint-disable-next-line security/detect-object-injection\n (possiblePlugins[configName] as { [key: string]: boolean })[dependency] = hasDependency(dependency) || hasDevDependency(dependency);\n });\n }\n }\n});\n\nexport const rules = baseConfig;\nexport const pluginRules = loadedPlugins;\n\nexport const possiblePluginRules = possiblePlugins;\n","/**\nDefine the rules config that are overwritten only for specific version of Node.js based on `engines.node` in package.json or the `nodeVersion` option.\n\nThe keys are rule names and the values are an Object with a valid semver (`4.0.0` is valid `4` is not) as keys and the rule configuration as values.\n\nEach entry define the rule config and the maximum Node.js version for which to set it.\nThe entry with the lowest version that is compliant with the `engines.node`/`nodeVersion` range will be used.\n\n@type {Object}\n\n@example\n```\n{\n 'plugin/rule': {\n '6.0.0': ['error', {prop: 'node-6-conf'}],\n '8.0.0': ['error', {prop: 'node-8-conf'}]\n }\n}\n```\n\nWith `engines.node` set to `>=4` the rule `plugin/rule` will not be used.\nWith `engines.node` set to `>=6` the rule `plugin/rule` will be used with the config `{prop: 'node-6-conf'}`.\nWith `engines.node` set to `>=8` the rule `plugin/rule` will be used with the config `{prop: 'node-8-conf'}`.\n*/\nconst engineRules = {\n \"n/prefer-global/text-decoder\": {\n \"11.0.0\": \"off\",\n },\n \"n/prefer-global/text-encoder\": {\n \"11.0.0\": \"off\",\n },\n \"n/prefer-global/url\": {\n \"10.0.0\": \"off\",\n },\n \"n/prefer-global/url-search-params\": {\n \"10.0.0\": \"off\",\n },\n \"n/prefer-promises/dns\": {\n \"11.14.0\": \"off\",\n },\n \"n/prefer-promises/fs\": {\n \"11.14.0\": \"off\",\n },\n \"no-useless-catch\": {\n \"10.0.0\": \"off\",\n },\n \"prefer-destructuring\": {\n \"6.0.0\": \"off\",\n },\n \"prefer-named-capture-group\": {\n \"10.0.0\": \"off\",\n },\n \"prefer-object-spread\": {\n \"8.3.0\": \"off\",\n },\n \"prefer-rest-params\": {\n \"6.0.0\": \"off\",\n },\n \"promise/prefer-await-to-then\": {\n \"7.6.0\": \"off\",\n },\n \"unicorn/no-new-buffer\": {\n \"5.10.0\": \"off\",\n },\n \"unicorn/prefer-flat-map\": {\n \"11.0.0\": \"off\",\n },\n \"unicorn/prefer-spread\": {\n \"5.0.0\": \"off\",\n },\n};\n\nexport default engineRules;\n"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/config.ts","../src/engine-node-overwrite.ts"],"names":["hasDependency","hasDevDependency","packageIsTypeModule","pkg","globals","join","semver","resolvePackage","baseConfig","internalPluginConfig","pluginConfig","loadedPlugins","possiblePlugins","plugin","configName","dependencies","eslint_config_default","foundDependencies","dependency","rdependency","rules","pluginRules","possiblePluginRules","engineRules","engine_node_overwrite_default","consoleLog","name","consolePlugin","hasLogged","installed","configRules","nodeVersion","rule","ruleConfig","minVersion","config","src_default"],"mappings":"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","sourcesContent":["/**\n * rushstack eslint-patch is used to include plugins as dev\n * dependencies instead of imposing them as peer dependencies\n *\n * {@link https://www.npmjs.com/package/@rushstack/eslint-patch}\n * {@link https://stackoverflow.com/a/74478635/1392749}\n * {@link https://github.com/eslint/eslint/issues/3458}\n * {@link https://eslint.org/blog/2022/08/new-config-system-part-1/}\n * {@link https://eslint.org/blog/2022/08/new-config-system-part-2/}\n * {@link https://eslint.org/blog/2022/08/new-config-system-part-3/}\n * {@link https://eslint.org/docs/latest/user-guide/configuring/configuration-files-new}\n */\nimport \"@rushstack/eslint-patch/modern-module-resolution\";\n\nimport { hasDependency, hasDevDependency, packageIsTypeModule, pkg } from \"@anolilab/package-json-utils\";\nimport type { Linter } from \"eslint\";\nimport globals from \"globals\";\nimport { join } from \"node:path\";\nimport semver from \"semver\";\n\nimport { internalPluginConfig, pluginRules, possiblePluginRules, rules } from \"./config\";\nimport engineRules from \"./engine-node-overwrite\";\nimport anolilabEslintConfig from \"./utils/eslint-config\";\nimport { consoleLog, consolePlugin } from \"./utils/loggers\";\n\n// Workaround VS Code trying to run this file twice!\nif (!global.hasAnolilabEsLintConfigLoaded) {\n if (process.env[\"DEBUG\"]) {\n consoleLog(\"\\n@anolilab/eslint-config loaded the following plugins:\\n\");\n\n consoleLog(\" @rushstack/eslint-plugin-security\");\n internalPluginConfig\n .map((name: string) => {\n if (name === \"import\") {\n return \"i\";\n }\n\n if (name === \"node\") {\n return \"n\";\n }\n\n return name;\n })\n .forEach((plugin) => consolePlugin(plugin));\n }\n\n let hasLogged = false;\n\n Object.entries(possiblePluginRules).forEach(([plugin, dependencies]) => {\n const hasOneDependency = Object.values(dependencies).some(Boolean);\n\n if (hasOneDependency) {\n hasLogged = true;\n\n consoleLog(\n `\\nYour package.json container dependencies for the \"${plugin}\" eslint-plugin, please add the following dependencies with your chosen package manager to enable this plugin:`,\n );\n\n Object.entries(dependencies).forEach(([dependency, installed]) => {\n if (!installed) {\n consoleLog(` ${dependency}`);\n }\n });\n }\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (hasLogged) {\n consoleLog(\"\\nTo disable this message, add the following to your package.json:\");\n consoleLog(' \"anolilab\": { \"eslint-config\": { plugin: { \"plugin-name\": false } } }\\n');\n }\n\n consoleLog('To disable all logging, add the following to your eslint command call \"NO_LOGS=true eslint ...\"');\n\n global.hasAnolilabEsLintConfigLoaded = true;\n}\n\nconst configRules: Linter.RulesRecord = {};\nlet nodeVersion: string | undefined;\n\nif (pkg?.engines?.[\"node\"]) {\n nodeVersion = pkg.engines[\"node\"];\n}\n\nObject.entries(engineRules).forEach(([rule, ruleConfig]) => {\n Object.keys(ruleConfig)\n .sort(semver.rcompare)\n .forEach((minVersion) => {\n if (nodeVersion && semver.intersects(nodeVersion, `<${minVersion}`)) {\n // eslint-disable-next-line security/detect-object-injection\n configRules[rule] = ruleConfig[minVersion as keyof typeof ruleConfig] as Linter.RuleEntry;\n }\n });\n});\n\n// Workaround VS Code trying to run this file twice!\nif (!global.hasAnolilabEsLintConfigPrettier && (hasDependency(\"prettier\") || hasDevDependency(\"prettier\"))) {\n global.hasAnolilabEsLintConfigPrettier = true;\n\n if (anolilabEslintConfig[\"info_on_disabling_prettier_conflict_rule\"] !== false) {\n consoleLog(\"\\nFound prettier as dependency, disabling some rules to fix wrong behavior of the rule with eslint and prettier\");\n }\n}\n\nconst config: Linter.Config = {\n // After an .eslintrc.js file is loaded, ESLint will normally continue visiting all parent folders\n // to look for other .eslintrc.js files, and also consult a personal file ~/.eslintrc.js. If any files\n // are found, their options will be merged. This is difficult for humans to understand, and it will cause\n // nondeterministic behavior if files are loaded from outside the Git working folder.\n //\n // Setting root=true causes ESLint to stop looking for other config files after the first .eslintrc.js\n extends: [\n ...rules.map((plugin) => join(__dirname, `./config/${plugin}.js`)),\n\n ...pluginRules.map((plugin) => join(__dirname, `./config/plugins/${plugin}.js`)),\n ],\n globals: {\n ...globals.browser,\n ...globals.nodeBuiltin,\n },\n ignorePatterns: [\n \"!.*\",\n\n \".git/\",\n \"node_modules/\",\n \"bower_components/\",\n \"jspm_packages/\",\n \".npm/\",\n\n \"lib-cov/\",\n \"coverage/\",\n \".nyc_output/\",\n \".cache/\",\n\n \"build/\",\n \"dist/\",\n \"tmp/\",\n\n \"**/*.min.*\",\n\n // Manually authored .d.ts files are generally used to describe external APIs that are not expected\n // to follow our coding conventions. Linting those files tends to produce a lot of spurious suppressions,\n // so we simply ignore them.\n \"*.d.ts\",\n\n \"pnpm-lock.yaml\",\n ],\n overrides: [\n {\n files: [\"**/migrations/*.{js,ts}\"],\n rules: {\n \"filenames/match-regex\": \"off\",\n },\n },\n {\n files: [\n // Test files\n \"**/*.spec.{js,ts,tsx}\",\n \"**/*.test.{js,ts,tsx}\",\n\n // Facebook convention\n \"**/__mocks__/*.{js,ts,tsx}\",\n \"**/__tests__/*.{js,ts,tsx}\",\n\n // Microsoft convention\n \"**/test/*.{js,ts,tsx}\",\n ],\n rules: {\n \"no-magic-numbers\": \"off\",\n \"sonarjs/no-duplicate-string\": \"off\",\n },\n },\n // Fixes https://github.com/eslint/eslint/discussions/15305\n {\n files: packageIsTypeModule ? [\"*.js\", \"*.mjs\"] : [\"*.mjs\"],\n parser: \"@babel/eslint-parser\",\n parserOptions: {\n babelOptions: {\n plugins: [\"@babel/plugin-syntax-import-assertions\"],\n },\n requireConfigFile: false,\n },\n },\n ],\n // Disable the parser by default\n parser: \"\",\n // is loaded.\n rules: {\n ...configRules,\n },\n};\n\nexport default config;\n","import { hasDependency, hasDevDependency, resolvePackage } from \"@anolilab/package-json-utils\";\n\nimport type { PackageRules } from \"./types\";\nimport anolilabEslintConfig from \"./utils/eslint-config\";\n\nconst baseConfig = [\"best-practices\", \"errors\", \"style\", \"es6\", \"variables\"];\n\n// eslint-disable-next-line import/exports-last\nexport const internalPluginConfig = [\n \"compat\",\n \"eslint-comments\",\n \"import\",\n \"promise\",\n \"simple-import-sort\",\n \"no-extend-native\",\n \"node\",\n // Security Rules\n \"no-secrets\",\n \"sonarjs\",\n \"security\",\n \"regexp\",\n // file rules\n \"jsonc\",\n \"markdown\",\n \"toml\",\n \"yml\",\n \"html\",\n\n // custom rules\n \"antfu\",\n \"unicorn\",\n \"es\",\n \"perfectionist\",\n];\n\nconst pluginConfig: PackageRules = [\n {\n configName: \"array-func\",\n dependencies: [\"eslint-plugin-array-func\"],\n },\n {\n configName: \"jsdoc\",\n dependencies: [\"eslint-plugin-jsdoc\"],\n },\n {\n configName: \"tsdoc\",\n dependencies: [\"eslint-plugin-tsdoc\", \"typescript\"],\n },\n {\n configName: \"lodash\",\n dependencies: [\"lodash\", \"eslint-plugin-lodash\"],\n },\n {\n configName: \"lodash-fp\",\n dependencies: [\"lodash\", \"eslint-plugin-lodash-fp\"],\n },\n {\n configName: \"you-dont-need-lodash-underscore\",\n dependencies: [\"lodash\", \"eslint-plugin-you-dont-need-lodash-underscore\"],\n },\n {\n configName: \"mdx\",\n dependencies: [\"eslint-plugin-mdx\"],\n oneOfDependency: [\"nextra\", \"docz\", \"@docusaurus/core\", \"gatsby-plugin-mdx\"],\n resolve: [\"@mdx-js/mdx\", \"remark-mdx\", \"@mdx-js/loader\", \"@mdx-js/rollup\", \"@mdx-js/react\"],\n },\n {\n configName: \"no-unsanitized\",\n dependencies: [\"eslint-plugin-no-unsanitized\"],\n },\n {\n configName: \"react\",\n dependencies: [\"react\", \"react-dom\", \"eslint-plugin-react\"],\n },\n {\n configName: \"react-redux\",\n dependencies: [\"eslint-plugin-react-redux\"],\n oneOfDependency: [\"@reduxjs/toolkit\", \"redux\"],\n },\n {\n configName: \"jsx-a11y\",\n dependencies: [\"react\", \"react-dom\", \"eslint-plugin-jsx-a11y\"],\n },\n {\n configName: \"react-hooks\",\n dependencies: [\"react\", \"react-dom\", \"eslint-plugin-react-hooks\"],\n },\n {\n configName: \"react-usememo\",\n dependencies: [\"react\", \"react-dom\", \"@arthurgeron/eslint-plugin-react-usememo\"],\n },\n {\n configName: \"you-dont-need-momentjs\",\n dependencies: [\"moment\", \"eslint-plugin-you-dont-need-momentjs\"],\n },\n {\n configName: \"you-dont-need-momentjs\",\n dependencies: [\"moment-timezone\", \"eslint-plugin-you-dont-need-momentjs\"],\n },\n {\n configName: \"tailwindcss\",\n dependencies: [\"eslint-plugin-tailwindcss\"],\n },\n {\n configName: \"cypress\",\n dependencies: [\"cypress\", \"eslint-plugin-cypress\"],\n },\n {\n configName: \"jest\",\n dependencies: [\"jest\", \"eslint-plugin-jest\"],\n },\n {\n configName: \"jest-dom\",\n dependencies: [\"jest\", \"@testing-library/jest-dom\", \"eslint-plugin-jest-dom\"],\n },\n {\n configName: \"jest-async\",\n dependencies: [\"jest\", \"eslint-plugin-jest-async\"],\n },\n {\n configName: \"jest-formatting\",\n dependencies: [\"jest\", \"eslint-plugin-jest-formatting\"],\n },\n {\n configName: \"tailwindcss\",\n dependencies: [\"tailwindcss\"],\n },\n {\n configName: \"testing-library\",\n dependencies: [\"@testing-library/dom\", \"eslint-plugin-testing-library\"],\n },\n {\n configName: \"testing-library\",\n dependencies: [\"react\", \"@testing-library/react\", \"eslint-plugin-testing-library\"],\n },\n {\n configName: \"typescript\",\n dependencies: [\"typescript\"],\n },\n {\n configName: \"etc\",\n dependencies: [\"typescript\", \"eslint-plugin-etc\"],\n },\n {\n configName: \"vitest\",\n dependencies: [\"vitest\", \"eslint-plugin-vitest\"],\n },\n {\n configName: \"zod\",\n dependencies: [\"zod\", \"eslint-plugin-zod\"],\n },\n {\n configName: \"ava\",\n dependencies: [\"ava\", \"eslint-plugin-ava\"],\n },\n {\n configName: \"storybook\",\n dependencies: [\"storybook\", \"eslint-plugin-storybook\"],\n },\n {\n configName: \"playwright\",\n dependencies: [\"playwright\", \"eslint-plugin-playwright\"],\n },\n {\n configName: \"tanstack-query\",\n dependencies: [\"@tanstack/react-query\", \"@tanstack/eslint-plugin-query\"],\n },\n];\n\nconst loadedPlugins: string[] = [...internalPluginConfig];\nconst possiblePlugins: Record<string, Record<string, boolean>> = {};\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\npluginConfig.forEach((plugin) => {\n const { configName, dependencies } = plugin;\n\n // eslint-disable-next-line security/detect-object-injection\n if ((anolilabEslintConfig as unknown as Record<string, Record<string, false | undefined>>)[\"plugin\"]?.[configName] !== false) {\n const foundDependencies = [];\n\n dependencies.forEach((dependency) => {\n if (hasDependency(dependency) || hasDevDependency(dependency)) {\n foundDependencies.push(dependency);\n }\n });\n\n // eslint-disable-next-line security/detect-object-injection\n possiblePlugins[configName] = {};\n\n if (foundDependencies.length === 0 && plugin.resolve !== undefined) {\n plugin.resolve.forEach((rdependency) => {\n if (resolvePackage(rdependency) !== undefined) {\n dependencies.forEach((dependency) => {\n // eslint-disable-next-line security/detect-object-injection\n (possiblePlugins[configName] as Record<string, boolean>)[dependency] = hasDependency(dependency) || hasDevDependency(dependency);\n });\n }\n });\n }\n\n if (foundDependencies.length === dependencies.length) {\n // eslint-disable-next-line security/detect-object-injection,@typescript-eslint/no-dynamic-delete\n delete possiblePlugins[configName];\n\n loadedPlugins.push(configName);\n } else {\n dependencies.forEach((dependency) => {\n // eslint-disable-next-line security/detect-object-injection\n (possiblePlugins[configName] as Record<string, boolean>)[dependency] = hasDependency(dependency) || hasDevDependency(dependency);\n });\n }\n }\n});\n\nexport const rules = baseConfig;\nexport const pluginRules = loadedPlugins;\n\nexport const possiblePluginRules = possiblePlugins;\n","/**\nDefine the rules config that are overwritten only for specific version of Node.js based on `engines.node` in package.json or the `nodeVersion` option.\n\nThe keys are rule names and the values are an Object with a valid semver (`4.0.0` is valid `4` is not) as keys and the rule configuration as values.\n\nEach entry define the rule config and the maximum Node.js version for which to set it.\nThe entry with the lowest version that is compliant with the `engines.node`/`nodeVersion` range will be used.\n\n@type {Object}\n\n@example\n```\n{\n 'plugin/rule': {\n '6.0.0': ['error', {prop: 'node-6-conf'}],\n '8.0.0': ['error', {prop: 'node-8-conf'}]\n }\n}\n```\n\nWith `engines.node` set to `>=4` the rule `plugin/rule` will not be used.\nWith `engines.node` set to `>=6` the rule `plugin/rule` will be used with the config `{prop: 'node-6-conf'}`.\nWith `engines.node` set to `>=8` the rule `plugin/rule` will be used with the config `{prop: 'node-8-conf'}`.\n*/\nconst engineRules = {\n \"n/prefer-global/text-decoder\": {\n \"11.0.0\": \"off\",\n },\n \"n/prefer-global/text-encoder\": {\n \"11.0.0\": \"off\",\n },\n \"n/prefer-global/url\": {\n \"10.0.0\": \"off\",\n },\n \"n/prefer-global/url-search-params\": {\n \"10.0.0\": \"off\",\n },\n \"n/prefer-promises/dns\": {\n \"11.14.0\": \"off\",\n },\n \"n/prefer-promises/fs\": {\n \"11.14.0\": \"off\",\n },\n \"no-useless-catch\": {\n \"10.0.0\": \"off\",\n },\n \"prefer-destructuring\": {\n \"6.0.0\": \"off\",\n },\n \"prefer-named-capture-group\": {\n \"10.0.0\": \"off\",\n },\n \"prefer-object-spread\": {\n \"8.3.0\": \"off\",\n },\n \"prefer-rest-params\": {\n \"6.0.0\": \"off\",\n },\n \"promise/prefer-await-to-then\": {\n \"7.6.0\": \"off\",\n },\n \"unicorn/no-new-buffer\": {\n \"5.10.0\": \"off\",\n },\n \"unicorn/prefer-flat-map\": {\n \"11.0.0\": \"off\",\n },\n \"unicorn/prefer-spread\": {\n \"5.0.0\": \"off\",\n },\n};\n\nexport default engineRules;\n"]}
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var chunkX3W6J3PZ_js = require('./chunk-X3W6J3PZ.js');
4
- var chunkMQFZFF2T_js = require('./chunk-MQFZFF2T.js');
5
- var chunk3Y2MNMYX_js = require('./chunk-3Y2MNMYX.js');
3
+ var chunkOCCLNRZC_js = require('./chunk-OCCLNRZC.js');
4
+ var chunk2L7ILCIC_js = require('./chunk-2L7ILCIC.js');
5
+ var chunkIMYCB5M2_js = require('./chunk-IMYCB5M2.js');
6
6
  require('./chunk-3NVDJZNH.js');
7
7
  var process = require('process');
8
8
 
9
- var r=chunkMQFZFF2T_js.a.rules,s=process.env.DISABLE_ESLINT_WARN_UNSUPPORTED_TYPESCRIPT_VERSION!=="true";chunkX3W6J3PZ_js.a.warn_on_unsupported_typescript_version!==void 0&&(s=chunkX3W6J3PZ_js.a.warn_on_unsupported_typescript_version);var o=chunk3Y2MNMYX_js.a("typescript",{parser:"@typescript-eslint/parser",parserOptions:{ecmaFeatures:{jsx:!0},sourceType:"module",warnOnUnsupportedTypeScriptVersion:s},plugins:["@typescript-eslint"],rules:{"@typescript-eslint/await-thenable":"error","@typescript-eslint/consistent-type-exports":["error",{fixMixedExportsWithInlineTypeSpecifier:!0}],"@typescript-eslint/dot-notation":["error",{allowKeywords:!0}],"@typescript-eslint/no-base-to-string":["error",{ignoredTypeNames:["RegExp"]}],"@typescript-eslint/no-confusing-void-expression":["error",{ignoreArrowShorthand:!0,ignoreVoidOperator:!1}],"@typescript-eslint/no-floating-promises":["error",{ignoreIIFE:!0,ignoreVoid:!0}],"@typescript-eslint/no-for-in-array":"error","@typescript-eslint/no-implied-eval":r["no-implied-eval"],"@typescript-eslint/no-meaningless-void-operator":["error",{checkNever:!0}],"@typescript-eslint/no-misused-promises":["error",{checksConditionals:!0,checksVoidReturn:{arguments:!0,attributes:!1,properties:!0,returns:!0,variables:!0}}],"@typescript-eslint/no-throw-literal":r["no-throw-literal"],"@typescript-eslint/no-unnecessary-condition":"error","@typescript-eslint/no-unnecessary-qualifier":"error","@typescript-eslint/no-unnecessary-type-arguments":"error","@typescript-eslint/no-unnecessary-type-assertion":"off","@typescript-eslint/prefer-includes":"error","@typescript-eslint/prefer-nullish-coalescing":["error",{ignoreConditionalTests:!0,ignoreMixedLogicalExpressions:!0}],"@typescript-eslint/prefer-readonly":["error",{onlyInlineLambdas:!1}],"@typescript-eslint/prefer-reduce-type-parameter":"error","@typescript-eslint/prefer-regexp-exec":"error","@typescript-eslint/prefer-return-this-type":"error","@typescript-eslint/prefer-string-starts-ends-with":"error","@typescript-eslint/promise-function-async":"error","@typescript-eslint/require-array-sort-compare":["error",{ignoreStringArrays:!1}],"@typescript-eslint/require-await":r["require-await"],"@typescript-eslint/restrict-plus-operands":"error","@typescript-eslint/return-await":["error","always"],"@typescript-eslint/switch-exhaustiveness-check":"error","@typescript-eslint/unbound-method":["error",{ignoreStatic:!1}],"dot-notation":"off","no-implied-eval":"off","no-new-func":"off","no-throw-literal":"off","require-await":"off"}}),u=o;
9
+ var r=chunk2L7ILCIC_js.a.rules,s=process.env.DISABLE_ESLINT_WARN_UNSUPPORTED_TYPESCRIPT_VERSION!=="true";chunkOCCLNRZC_js.a.warn_on_unsupported_typescript_version!==void 0&&(s=chunkOCCLNRZC_js.a.warn_on_unsupported_typescript_version);var p=chunkIMYCB5M2_js.a("typescript",{extends:["plugin:@typescript-eslint/recommended-type-checked","plugin:@typescript-eslint/strict-type-checked","plugin:@typescript-eslint/stylistic-type-checked"],parser:"@typescript-eslint/parser",parserOptions:{ecmaFeatures:{jsx:!0},sourceType:"module",warnOnUnsupportedTypeScriptVersion:s},plugins:["@typescript-eslint"],rules:{"@typescript-eslint/await-thenable":"error","@typescript-eslint/consistent-type-exports":["error",{fixMixedExportsWithInlineTypeSpecifier:!0}],"@typescript-eslint/dot-notation":["error",{allowKeywords:!0}],"@typescript-eslint/no-base-to-string":["error",{ignoredTypeNames:["RegExp"]}],"@typescript-eslint/no-confusing-void-expression":["error",{ignoreArrowShorthand:!0,ignoreVoidOperator:!1}],"@typescript-eslint/no-floating-promises":["error",{ignoreIIFE:!0,ignoreVoid:!0}],"@typescript-eslint/no-for-in-array":"error","@typescript-eslint/no-implied-eval":r["no-implied-eval"],"@typescript-eslint/no-meaningless-void-operator":["error",{checkNever:!0}],"@typescript-eslint/no-misused-promises":["error",{checksConditionals:!0,checksVoidReturn:{arguments:!0,attributes:!1,properties:!0,returns:!0,variables:!0}}],"@typescript-eslint/no-throw-literal":r["no-throw-literal"],"@typescript-eslint/no-unnecessary-condition":"error","@typescript-eslint/no-unnecessary-qualifier":"error","@typescript-eslint/no-unnecessary-type-arguments":"error","@typescript-eslint/no-unnecessary-type-assertion":"off","@typescript-eslint/non-nullable-type-assertion-style":"off","@typescript-eslint/prefer-includes":"error","@typescript-eslint/prefer-nullish-coalescing":["error",{ignoreConditionalTests:!0,ignoreMixedLogicalExpressions:!0}],"@typescript-eslint/prefer-readonly":["error",{onlyInlineLambdas:!1}],"@typescript-eslint/prefer-reduce-type-parameter":"error","@typescript-eslint/prefer-regexp-exec":"error","@typescript-eslint/prefer-return-this-type":"error","@typescript-eslint/prefer-string-starts-ends-with":"error","@typescript-eslint/promise-function-async":"error","@typescript-eslint/require-array-sort-compare":["error",{ignoreStringArrays:!1}],"@typescript-eslint/require-await":r["require-await"],"@typescript-eslint/restrict-plus-operands":"error","@typescript-eslint/return-await":["error","always"],"@typescript-eslint/switch-exhaustiveness-check":"error","@typescript-eslint/unbound-method":["error",{ignoreStatic:!1}]}}),y=p;
10
10
 
11
- module.exports = u;
11
+ module.exports = y;
12
12
  //# sourceMappingURL=out.js.map
13
13
  //# sourceMappingURL=typescript-type-checking.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/typescript-type-checking.ts"],"names":["env","bestPracticesRules","best_practices_default","showUnsupportedTypeScriptVersionWarning","eslint_config_default","config","createConfig","typescript_type_checking_default"],"mappings":"oJACA,OAAS,OAAAA,MAAW,UAMpB,IAAMC,EAAqBC,EAAoB,MAE3CC,EAAmDH,EAAI,qDAA0D,OAEjHI,EAAqB,yCAA8C,SACnED,EAA0CC,EAAqB,wCAGnE,IAAMC,EAASC,EAAa,aAAc,CAOtC,OAAQ,4BACR,cAAe,CACX,aAAc,CACV,IAAK,EACT,EACA,WAAY,SACZ,mCAAoCH,CACxC,EACA,QAAS,CAAC,oBAAoB,EAC9B,MAAO,CAEH,oCAAqC,QAErC,6CAA8C,CAC1C,QACA,CACI,uCAAwC,EAC5C,CACJ,EAGA,kCAAmC,CAAC,QAAS,CAAE,cAAe,EAAK,CAAC,EAEpE,uCAAwC,CACpC,QACA,CACI,iBAAkB,CAAC,QAAQ,CAC/B,CACJ,EAGA,kDAAmD,CAC/C,QACA,CACI,qBAAsB,GACtB,mBAAoB,EACxB,CACJ,EAGA,0CAA2C,CACvC,QACA,CACI,WAAY,GACZ,WAAY,EAChB,CACJ,EAGA,qCAAsC,QAEtC,qCAAsCF,EAAmB,iBAAiB,EAI1E,kDAAmD,CAAC,QAAS,CAAE,WAAY,EAAK,CAAC,EAEjF,yCAA0C,CACtC,QACA,CACI,mBAAoB,GACpB,iBAAkB,CACd,UAAW,GACX,WAAY,GACZ,WAAY,GACZ,QAAS,GACT,UAAW,EACf,CACJ,CACJ,EAGA,sCAAuCA,EAAmB,kBAAkB,EAE5E,8CAA+C,QAE/C,8CAA+C,QAI/C,mDAAoD,QAIpD,mDAAoD,MAIpD,qCAAsC,QAItC,+CAAgD,CAC5C,QACA,CACI,uBAAwB,GACxB,8BAA+B,EACnC,CACJ,EAGA,qCAAsC,CAAC,QAAS,CAAE,kBAAmB,EAAM,CAAC,EAI5E,kDAAmD,QAInD,wCAAyC,QAIzC,6CAA8C,QAI9C,oDAAqD,QAErD,4CAA6C,QAG7C,gDAAiD,CAC7C,QACA,CACI,mBAAoB,EACxB,CACJ,EAEA,mCAAoCA,EAAmB,eAAe,EAGtE,4CAA6C,QAG7C,kCAAmC,CAAC,QAAS,QAAQ,EAGrD,iDAAkD,QAIlD,oCAAqC,CAAC,QAAS,CAAE,aAAc,EAAM,CAAC,EAGtE,eAAgB,MAIhB,kBAAmB,MAGnB,cAAe,MAGf,mBAAoB,MAIpB,gBAAiB,KACrB,CACJ,CAAC,EAEMM,EAAQF","sourcesContent":["import type { Linter } from \"eslint\";\nimport { env } from \"node:process\";\n\nimport bestPracticesConfig from \"./config/best-practices\";\nimport { createConfig } from \"./utils/create-config\";\nimport anolilabEslintConfig from \"./utils/eslint-config\";\n\nconst bestPracticesRules = bestPracticesConfig.rules as Linter.RulesRecord;\n\nlet showUnsupportedTypeScriptVersionWarning: boolean = env[\"DISABLE_ESLINT_WARN_UNSUPPORTED_TYPESCRIPT_VERSION\"] !== \"true\";\n\nif (anolilabEslintConfig[\"warn_on_unsupported_typescript_version\"] !== undefined) {\n showUnsupportedTypeScriptVersionWarning = anolilabEslintConfig[\"warn_on_unsupported_typescript_version\"];\n}\n\nconst config = createConfig(\"typescript\", {\n // TODO: enable the rule when typescript-eslint 6.0.0 is released\n // extends: [\n // \"plugin:@typescript-eslint/recommended-type-checked\",\n // \"plugin:@typescript-eslint/strict-type-checked\",\n // \"plugin:@typescript-eslint/stylistic-type-checked\"\n // ],\n parser: \"@typescript-eslint/parser\",\n parserOptions: {\n ecmaFeatures: {\n jsx: true,\n },\n sourceType: \"module\",\n warnOnUnsupportedTypeScriptVersion: showUnsupportedTypeScriptVersionWarning,\n },\n plugins: [\"@typescript-eslint\"],\n rules: {\n // Disallows awaiting a value that is not a Thenable\n \"@typescript-eslint/await-thenable\": \"error\",\n\n \"@typescript-eslint/consistent-type-exports\": [\n \"error\",\n {\n fixMixedExportsWithInlineTypeSpecifier: true,\n },\n ],\n\n // Replace 'dot-notation' rule with '@typescript-eslint' version\n \"@typescript-eslint/dot-notation\": [\"error\", { allowKeywords: true }],\n // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-base-to-string.md\n \"@typescript-eslint/no-base-to-string\": [\n \"error\",\n {\n ignoredTypeNames: [\"RegExp\"],\n },\n ],\n\n // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-confusing-void-expression.md\n \"@typescript-eslint/no-confusing-void-expression\": [\n \"error\",\n {\n ignoreArrowShorthand: true,\n ignoreVoidOperator: false,\n },\n ],\n\n // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-floating-promises.md\n \"@typescript-eslint/no-floating-promises\": [\n \"error\",\n {\n ignoreIIFE: true,\n ignoreVoid: true,\n },\n ],\n\n // Disallow iterating over an array with a for-in loop\n \"@typescript-eslint/no-for-in-array\": \"error\",\n\n \"@typescript-eslint/no-implied-eval\": bestPracticesRules[\"no-implied-eval\"],\n\n // Replace 'no-throw-literal' rule with '@typescript-eslint' version\n // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/no-meaningless-void-operator.md\n \"@typescript-eslint/no-meaningless-void-operator\": [\"error\", { checkNever: true }],\n // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/no-misused-promises.md\n \"@typescript-eslint/no-misused-promises\": [\n \"error\",\n {\n checksConditionals: true,\n checksVoidReturn: {\n arguments: true,\n attributes: false,\n properties: true,\n returns: true,\n variables: true,\n },\n },\n ],\n\n // Replace 'no-implied-eval' and 'no-new-func' rules with '@typescript-eslint' version\n \"@typescript-eslint/no-throw-literal\": bestPracticesRules[\"no-throw-literal\"],\n // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/no-unnecessary-condition.md\n \"@typescript-eslint/no-unnecessary-condition\": \"error\",\n // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/no-unnecessary-qualifier.md\n \"@typescript-eslint/no-unnecessary-qualifier\": \"error\",\n\n // Disallow the void operator except when used to discard a value.\n // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/no-unnecessary-type-arguments.md\n \"@typescript-eslint/no-unnecessary-type-arguments\": \"error\",\n\n // Disallow Promises in places not designed to handle them.\n // Disabling here because in most cases the explicitness is still valuable\n \"@typescript-eslint/no-unnecessary-type-assertion\": \"off\",\n\n // Warns if a type assertion does not change the type of an expression\n // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/prefer-includes.md\n \"@typescript-eslint/prefer-includes\": \"error\",\n\n // Enforce includes method over indexOf method.\n // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/prefer-nullish-coalescing.md\n \"@typescript-eslint/prefer-nullish-coalescing\": [\n \"error\",\n {\n ignoreConditionalTests: true,\n ignoreMixedLogicalExpressions: true,\n },\n ],\n\n // Requires that private members are marked as readonly if they're never modified outside of the constructor\n \"@typescript-eslint/prefer-readonly\": [\"error\", { onlyInlineLambdas: false }],\n\n // Enforce RegExp#exec over String#match if no global flag is provided.\n // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/prefer-reduce-type-parameter.md\n \"@typescript-eslint/prefer-reduce-type-parameter\": \"error\",\n\n // Enforce that this is used when only this type is returned.\n // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/prefer-regexp-exec.md\n \"@typescript-eslint/prefer-regexp-exec\": \"error\",\n\n // Enforce using String#startsWith and String#endsWith over other equivalent methods of checking substrings.\n // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/prefer-return-this-type.md\n \"@typescript-eslint/prefer-return-this-type\": \"error\",\n\n // Replace 'require-await' rule with '@typescript-eslint' version\n // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/prefer-string-starts-ends-with.md\n \"@typescript-eslint/prefer-string-starts-ends-with\": \"error\",\n // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/promise-function-async.md\n \"@typescript-eslint/promise-function-async\": \"error\",\n\n // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/require-array-sort-compare.md\n \"@typescript-eslint/require-array-sort-compare\": [\n \"error\",\n {\n ignoreStringArrays: false,\n },\n ],\n\n \"@typescript-eslint/require-await\": bestPracticesRules[\"require-await\"],\n\n // When adding two variables, operands must both be of type number or of type string\n \"@typescript-eslint/restrict-plus-operands\": \"error\",\n\n // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/return-await.md\n \"@typescript-eslint/return-await\": [\"error\", \"always\"],\n\n // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/switch-exhaustiveness-check.md\n \"@typescript-eslint/switch-exhaustiveness-check\": \"error\",\n\n // Disallow unnecessary namespace qualifiers.\n // Enforces unbound methods are called with their expected scope\n \"@typescript-eslint/unbound-method\": [\"error\", { ignoreStatic: false }],\n\n // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/dot-notation.md\n \"dot-notation\": \"off\",\n\n // Disallow conditionals where the type is always truthy or always falsy.\n // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-implied-eval.md\n \"no-implied-eval\": \"off\",\n\n // Disallow type arguments that are equal to the default.\n \"no-new-func\": \"off\",\n\n // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-throw-literal.md\n \"no-throw-literal\": \"off\",\n\n // Enforce using type parameter when calling Array#reduce instead of casting.\n // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/require-await.md\n \"require-await\": \"off\",\n },\n});\n\nexport default config;\n"]}
1
+ {"version":3,"sources":["../src/typescript-type-checking.ts"],"names":["env","bestPracticesRules","best_practices_default","showUnsupportedTypeScriptVersionWarning","eslint_config_default","config","createConfig","typescript_type_checking_default"],"mappings":"oJACA,OAAS,OAAAA,MAAW,UAMpB,IAAMC,EAAqBC,EAAoB,MAE3CC,EAAmDH,EAAI,qDAA0D,OAEjHI,EAAqB,yCAA8C,SACnED,EAA0CC,EAAqB,wCAGnE,IAAMC,EAASC,EAAa,aAAc,CACtC,QAAS,CACL,qDACA,gDACA,kDACJ,EACA,OAAQ,4BACR,cAAe,CACX,aAAc,CACV,IAAK,EACT,EACA,WAAY,SACZ,mCAAoCH,CACxC,EACA,QAAS,CAAC,oBAAoB,EAC9B,MAAO,CAEH,oCAAqC,QAErC,6CAA8C,CAC1C,QACA,CACI,uCAAwC,EAC5C,CACJ,EAGA,kCAAmC,CAAC,QAAS,CAAE,cAAe,EAAK,CAAC,EAEpE,uCAAwC,CACpC,QACA,CACI,iBAAkB,CAAC,QAAQ,CAC/B,CACJ,EAGA,kDAAmD,CAC/C,QACA,CACI,qBAAsB,GACtB,mBAAoB,EACxB,CACJ,EAGA,0CAA2C,CACvC,QACA,CACI,WAAY,GACZ,WAAY,EAChB,CACJ,EAGA,qCAAsC,QAEtC,qCAAsCF,EAAmB,iBAAiB,EAI1E,kDAAmD,CAAC,QAAS,CAAE,WAAY,EAAK,CAAC,EAEjF,yCAA0C,CACtC,QACA,CACI,mBAAoB,GACpB,iBAAkB,CACd,UAAW,GACX,WAAY,GACZ,WAAY,GACZ,QAAS,GACT,UAAW,EACf,CACJ,CACJ,EAGA,sCAAuCA,EAAmB,kBAAkB,EAE5E,8CAA+C,QAE/C,8CAA+C,QAI/C,mDAAoD,QAIpD,mDAAoD,MAGpD,uDAAwD,MAIxD,qCAAsC,QAGtC,+CAAgD,CAC5C,QACA,CACI,uBAAwB,GACxB,8BAA+B,EACnC,CACJ,EAIA,qCAAsC,CAAC,QAAS,CAAE,kBAAmB,EAAM,CAAC,EAI5E,kDAAmD,QAInD,wCAAyC,QAIzC,6CAA8C,QAE9C,oDAAqD,QAGrD,4CAA6C,QAG7C,gDAAiD,CAC7C,QACA,CACI,mBAAoB,EACxB,CACJ,EAEA,mCAAoCA,EAAmB,eAAe,EAGtE,4CAA6C,QAG7C,kCAAmC,CAAC,QAAS,QAAQ,EAIrD,iDAAkD,QAGlD,oCAAqC,CAAC,QAAS,CAAE,aAAc,EAAM,CAAC,CAC1E,CACJ,CAAC,EAEMM,EAAQF","sourcesContent":["import type { Linter } from \"eslint\";\nimport { env } from \"node:process\";\n\nimport bestPracticesConfig from \"./config/best-practices\";\nimport { createConfig } from \"./utils/create-config\";\nimport anolilabEslintConfig from \"./utils/eslint-config\";\n\nconst bestPracticesRules = bestPracticesConfig.rules as Linter.RulesRecord;\n\nlet showUnsupportedTypeScriptVersionWarning: boolean = env[\"DISABLE_ESLINT_WARN_UNSUPPORTED_TYPESCRIPT_VERSION\"] !== \"true\";\n\nif (anolilabEslintConfig[\"warn_on_unsupported_typescript_version\"] !== undefined) {\n showUnsupportedTypeScriptVersionWarning = anolilabEslintConfig[\"warn_on_unsupported_typescript_version\"];\n}\n\nconst config = createConfig(\"typescript\", {\n extends: [\n \"plugin:@typescript-eslint/recommended-type-checked\",\n \"plugin:@typescript-eslint/strict-type-checked\",\n \"plugin:@typescript-eslint/stylistic-type-checked\",\n ],\n parser: \"@typescript-eslint/parser\",\n parserOptions: {\n ecmaFeatures: {\n jsx: true,\n },\n sourceType: \"module\",\n warnOnUnsupportedTypeScriptVersion: showUnsupportedTypeScriptVersionWarning,\n },\n plugins: [\"@typescript-eslint\"],\n rules: {\n // Disallows awaiting a value that is not a Thenable\n \"@typescript-eslint/await-thenable\": \"error\",\n\n \"@typescript-eslint/consistent-type-exports\": [\n \"error\",\n {\n fixMixedExportsWithInlineTypeSpecifier: true,\n },\n ],\n\n // Replace 'dot-notation' rule with '@typescript-eslint' version\n \"@typescript-eslint/dot-notation\": [\"error\", { allowKeywords: true }],\n // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-base-to-string.md\n \"@typescript-eslint/no-base-to-string\": [\n \"error\",\n {\n ignoredTypeNames: [\"RegExp\"],\n },\n ],\n\n // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-confusing-void-expression.md\n \"@typescript-eslint/no-confusing-void-expression\": [\n \"error\",\n {\n ignoreArrowShorthand: true,\n ignoreVoidOperator: false,\n },\n ],\n\n // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-floating-promises.md\n \"@typescript-eslint/no-floating-promises\": [\n \"error\",\n {\n ignoreIIFE: true,\n ignoreVoid: true,\n },\n ],\n\n // Disallow iterating over an array with a for-in loop\n \"@typescript-eslint/no-for-in-array\": \"error\",\n\n \"@typescript-eslint/no-implied-eval\": bestPracticesRules[\"no-implied-eval\"],\n\n // Replace 'no-throw-literal' rule with '@typescript-eslint' version\n // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/no-meaningless-void-operator.md\n \"@typescript-eslint/no-meaningless-void-operator\": [\"error\", { checkNever: true }],\n // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/no-misused-promises.md\n \"@typescript-eslint/no-misused-promises\": [\n \"error\",\n {\n checksConditionals: true,\n checksVoidReturn: {\n arguments: true,\n attributes: false,\n properties: true,\n returns: true,\n variables: true,\n },\n },\n ],\n\n // Replace 'no-implied-eval' and 'no-new-func' rules with '@typescript-eslint' version\n \"@typescript-eslint/no-throw-literal\": bestPracticesRules[\"no-throw-literal\"],\n // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/no-unnecessary-condition.md\n \"@typescript-eslint/no-unnecessary-condition\": \"error\",\n // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/no-unnecessary-qualifier.md\n \"@typescript-eslint/no-unnecessary-qualifier\": \"error\",\n\n // Disallow the void operator except when used to discard a value.\n // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/no-unnecessary-type-arguments.md\n \"@typescript-eslint/no-unnecessary-type-arguments\": \"error\",\n\n // Disallow Promises in places not designed to handle them.\n // Disabling here because in most cases the explicitness is still valuable\n \"@typescript-eslint/no-unnecessary-type-assertion\": \"off\",\n\n // Warns if a type assertion does not change the type of an expression\n \"@typescript-eslint/non-nullable-type-assertion-style\": \"off\",\n\n // Enforce includes method over indexOf method.\n // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/prefer-includes.md\n \"@typescript-eslint/prefer-includes\": \"error\",\n\n // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/prefer-nullish-coalescing.md\n \"@typescript-eslint/prefer-nullish-coalescing\": [\n \"error\",\n {\n ignoreConditionalTests: true,\n ignoreMixedLogicalExpressions: true,\n },\n ],\n\n // Enforce RegExp#exec over String#match if no global flag is provided.\n // Requires that private members are marked as readonly if they're never modified outside of the constructor\n \"@typescript-eslint/prefer-readonly\": [\"error\", { onlyInlineLambdas: false }],\n\n // Enforce that this is used when only this type is returned.\n // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/prefer-reduce-type-parameter.md\n \"@typescript-eslint/prefer-reduce-type-parameter\": \"error\",\n\n // Enforce using String#startsWith and String#endsWith over other equivalent methods of checking substrings.\n // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/prefer-regexp-exec.md\n \"@typescript-eslint/prefer-regexp-exec\": \"error\",\n\n // Replace 'require-await' rule with '@typescript-eslint' version\n // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/prefer-return-this-type.md\n \"@typescript-eslint/prefer-return-this-type\": \"error\",\n // https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/eslint-plugin/docs/rules/prefer-string-starts-ends-with.md\n \"@typescript-eslint/prefer-string-starts-ends-with\": \"error\",\n\n // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/promise-function-async.md\n \"@typescript-eslint/promise-function-async\": \"error\",\n\n // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/require-array-sort-compare.md\n \"@typescript-eslint/require-array-sort-compare\": [\n \"error\",\n {\n ignoreStringArrays: false,\n },\n ],\n\n \"@typescript-eslint/require-await\": bestPracticesRules[\"require-await\"],\n\n // When adding two variables, operands must both be of type number or of type string\n \"@typescript-eslint/restrict-plus-operands\": \"error\",\n\n // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/return-await.md\n \"@typescript-eslint/return-await\": [\"error\", \"always\"],\n\n // Disallow unnecessary namespace qualifiers.\n // https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/switch-exhaustiveness-check.md\n \"@typescript-eslint/switch-exhaustiveness-check\": \"error\",\n\n // Enforces unbound methods are called with their expected scope\n \"@typescript-eslint/unbound-method\": [\"error\", { ignoreStatic: false }],\n },\n});\n\nexport default config;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anolilab/eslint-config",
3
- "version": "9.0.3",
3
+ "version": "10.0.0",
4
4
  "description": "ESLint shareable config for the Anolilab JavaScript style guide.",
5
5
  "keywords": [
6
6
  "anolilab",
@@ -117,19 +117,19 @@
117
117
  "postinstall": "node ./skip.js || node ./dist/postinstall.js"
118
118
  },
119
119
  "dependencies": {
120
- "@anolilab/package-json-utils": "2.0.1",
121
- "@babel/eslint-parser": "^7.22.6",
120
+ "@anolilab/package-json-utils": "3.0.1",
121
+ "@babel/eslint-parser": "^7.22.9",
122
122
  "@babel/plugin-syntax-import-assertions": "^7.22.5",
123
123
  "@html-eslint/eslint-plugin": "^0.19.0",
124
124
  "@html-eslint/parser": "^0.19.0",
125
125
  "@rushstack/eslint-patch": "^1.3.2",
126
126
  "@rushstack/eslint-plugin-security": "^0.6.0",
127
- "@typescript-eslint/eslint-plugin": ">=5.61.0",
128
- "@typescript-eslint/parser": "^5.61.0",
127
+ "@typescript-eslint/eslint-plugin": ">=6.1.0",
128
+ "@typescript-eslint/parser": "^6.1.0",
129
129
  "confusing-browser-globals": "^1.0.11",
130
130
  "eslint-import-resolver-node": "^0.3.7",
131
131
  "eslint-import-resolver-typescript": "^3.5.5",
132
- "eslint-plugin-antfu": "^0.39.6",
132
+ "eslint-plugin-antfu": "^0.39.8",
133
133
  "eslint-plugin-compat": "^4.1.4",
134
134
  "eslint-plugin-es-x": "^7.1.0",
135
135
  "eslint-plugin-eslint-comments": "^3.2.0",
@@ -141,42 +141,42 @@
141
141
  "eslint-plugin-no-loops": "^0.3.0",
142
142
  "eslint-plugin-no-secrets": "^0.8.9",
143
143
  "eslint-plugin-no-use-extend-native": "^0.5.0",
144
- "eslint-plugin-perfectionist": "^1.4.0",
144
+ "eslint-plugin-perfectionist": "^1.5.0",
145
145
  "eslint-plugin-promise": "^6.1.1",
146
146
  "eslint-plugin-regexp": "^1.15.0",
147
147
  "eslint-plugin-security": "^1.7.1",
148
148
  "eslint-plugin-simple-import-sort": "^10.0.0",
149
149
  "eslint-plugin-sonarjs": "^0.19.0",
150
150
  "eslint-plugin-toml": "^0.5.0",
151
- "eslint-plugin-unicorn": "^47.0.0",
151
+ "eslint-plugin-unicorn": "^48.0.0",
152
152
  "eslint-plugin-yml": "^1.8.0",
153
153
  "find-up": "5.0.0",
154
154
  "globals": "^13.20.0",
155
155
  "jsonc-eslint-parser": "^2.3.0",
156
156
  "read-pkg-up": "^7.0.1",
157
- "semver": "^7.5.3",
157
+ "semver": "^7.5.4",
158
158
  "toml-eslint-parser": "^0.6.0",
159
159
  "tsup": "^7.1.0",
160
160
  "yaml-eslint-parser": "^1.2.2"
161
161
  },
162
162
  "devDependencies": {
163
- "@anolilab/semantic-release-preset": "5.0.1",
163
+ "@anolilab/semantic-release-preset": "6.0.1",
164
164
  "@arthurgeron/eslint-plugin-react-usememo": "^1.1.4",
165
165
  "@testing-library/dom": "^9.3.1",
166
166
  "@total-typescript/ts-reset": "^0.4.2",
167
167
  "@types/confusing-browser-globals": "^1.0.0",
168
- "@types/eslint": "^8.40.2",
168
+ "@types/eslint": "^8.44.0",
169
169
  "@types/semver": "^7.5.0",
170
- "eslint": "^8.44.0",
170
+ "eslint": "^8.45.0",
171
171
  "eslint-find-rules": "^4.1.0",
172
172
  "eslint-plugin-babel": "^5.3.1",
173
173
  "eslint-plugin-cypress": "^2.13.3",
174
174
  "eslint-plugin-etc": "^2.0.3",
175
- "eslint-plugin-jest": "^27.2.2",
175
+ "eslint-plugin-jest": "^27.2.3",
176
176
  "eslint-plugin-jest-async": "^1.0.3",
177
177
  "eslint-plugin-jest-dom": "^5.0.1",
178
178
  "eslint-plugin-jest-formatting": "^3.1.0",
179
- "eslint-plugin-jsdoc": "^46.4.3",
179
+ "eslint-plugin-jsdoc": "^46.4.4",
180
180
  "eslint-plugin-jsx-a11y": "^6.7.1",
181
181
  "eslint-plugin-no-unsanitized": "^4.0.2",
182
182
  "eslint-plugin-prefer-object-spread": "^1.2.1",
@@ -190,34 +190,34 @@
190
190
  "eslint-plugin-you-dont-need-lodash-underscore": "^6.12.0",
191
191
  "eslint-plugin-you-dont-need-momentjs": "^1.6.0",
192
192
  "eslint-plugin-zod": "^1.4.0",
193
- "jest": "^29.5.0",
193
+ "jest": "^29.6.1",
194
194
  "react": "^18.2.0",
195
195
  "rimraf": "^5.0.1",
196
- "semantic-release": "^21.0.6",
196
+ "semantic-release": "^21.0.7",
197
197
  "tsup": "^7.1.0",
198
- "type-fest": "^3.12.0",
198
+ "type-fest": "^4.0.0",
199
199
  "typescript": "^5.1.6",
200
- "vitest": "^0.32.4"
200
+ "vitest": "^0.33.0"
201
201
  },
202
202
  "peerDependencies": {
203
203
  "eslint": "^8.15.0"
204
204
  },
205
205
  "optionalDependencies": {
206
206
  "@arthurgeron/eslint-plugin-react-usememo": "^1.1.4",
207
- "@tanstack/eslint-plugin-query": "^4.29.9",
207
+ "@tanstack/eslint-plugin-query": "^4.29.25",
208
208
  "eslint-plugin-array-func": "^3.1.8",
209
209
  "eslint-plugin-ava": "^14.0.0",
210
210
  "eslint-plugin-babel": "^5.3.1",
211
211
  "eslint-plugin-cypress": "^2.13.3",
212
- "eslint-plugin-jest": "^27.2.2",
212
+ "eslint-plugin-jest": "^27.2.3",
213
213
  "eslint-plugin-jest-async": "^1.0.3",
214
214
  "eslint-plugin-jest-dom": "^5.0.1",
215
215
  "eslint-plugin-jest-formatting": "^3.1.0",
216
- "eslint-plugin-jsdoc": "^46.4.3",
216
+ "eslint-plugin-jsdoc": "^46.4.4",
217
217
  "eslint-plugin-jsx-a11y": "^6.7.1",
218
218
  "eslint-plugin-n": "^16.0.1",
219
219
  "eslint-plugin-no-unsanitized": "^4.0.2",
220
- "eslint-plugin-playwright": "^0.15.2",
220
+ "eslint-plugin-playwright": "^0.15.3",
221
221
  "eslint-plugin-prefer-object-spread": "^1.2.1",
222
222
  "eslint-plugin-react": "^7.32.2",
223
223
  "eslint-plugin-react-hooks": "^4.6.0",
@@ -230,7 +230,7 @@
230
230
  "eslint-plugin-you-dont-need-momentjs": "^1.6.0"
231
231
  },
232
232
  "engines": {
233
- "node": ">=16"
233
+ "node": ">=18"
234
234
  },
235
235
  "publishConfig": {
236
236
  "access": "public",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/create-config.ts"],"names":["getType","type","createConfig","config","environment","createConfigs","rules"],"mappings":"AAgBA,IAAMA,EAAWC,GAAmB,CAChC,OAAQA,EAAM,CACV,IAAK,aAED,MAAO,CAAC,UAAW,YAAa,WAAY,WAAY,UAAU,EAEtE,IAAK,cACD,MAAO,CAAC,WAAY,UAAU,EAElC,IAAK,YACD,MAAO,CAAC,UAAW,WAAY,WAAY,UAAW,YAAa,WAAY,UAAU,EAE7F,IAAK,aACD,MAAO,CAAC,UAAW,WAAY,UAAU,EAE7C,IAAK,MACD,MAAO,CAAC,UAAW,WAAY,WAAY,WAAY,UAAW,YAAa,WAAY,WAAY,UAAU,EAErH,IAAK,WACD,MAAO,CAAC,+BAA+B,EAE3C,IAAK,yBACD,MAAO,CAAC,0DAA0D,EAEtE,IAAK,MACD,MAAO,CAAC,UAAU,EAEtB,IAAK,OACD,MAAO,CAEH,wBACA,wBACA,wBAGA,6BACA,4BACJ,EAEJ,IAAK,MACD,MAAO,CACH,UACA,cACA,iBACA,eACA,eACA,eACA,kBACA,mBACA,sBACJ,EAEJ,IAAK,SACD,MAAO,CAAC,oCAAqC,qCAAqC,EAEtF,IAAK,QACD,MAAO,CAEH,UACA,cACA,iBACA,eACA,eACA,eACA,kBACA,mBACA,uBAGA,wBACA,wBACA,wBACA,6BACA,6BACA,oCACA,qCACJ,EAEJ,QACI,MAAM,IAAI,MAAM,iBAAiBA,CAAI,EAAE,CAE/C,CACJ,EAEaC,EAAe,CAACD,EAAgBE,EAA8CC,KAChF,CACH,IAAKA,EACL,UAAW,CACP,CACI,MAAOJ,EAAQC,CAAI,EACnB,GAAGE,CACP,CACJ,CACJ,GAESE,EACTC,IAKO,CACH,UAAWA,EAAM,IAAI,CAAC,CAAE,OAAAH,EAAQ,KAAAF,CAAK,KAC1B,CACH,MAAOD,EAAQC,CAAI,EACnB,GAAGE,CACP,EACH,CACL","sourcesContent":["import type { Linter } from \"eslint\";\n\ntype FileType =\n | \"all\"\n | \"ava\"\n | \"javascript\"\n | \"jest\"\n | \"js_and_ts\"\n | \"jsx_and_tsx\"\n | \"markdown_inline_js_jsx\"\n | \"markdown\"\n | \"mdx\"\n | \"tests\"\n | \"typescript\"\n | \"vitest\";\n\nconst getType = (type: FileType) => {\n switch (type) {\n case \"typescript\": {\n // @see https://devblogs.microsoft.com/typescript/announcing-typescript-4-5-beta/#new-file-extensions\n return [\"**/*.ts\", \"**/*.d.ts\", \"**/*.tsx\", \"**/*.mts\", \"**/*.cts\"];\n }\n case \"jsx_and_tsx\": {\n return [\"**/*.jsx\", \"**/*.tsx\"];\n }\n case \"js_and_ts\": {\n return [\"**/*.js\", \"**/*.mjs\", \"**/*.cjs\", \"**/*.ts\", \"**/*.d.ts\", \"**/*.mts\", \"**/*.cts\"];\n }\n case \"javascript\": {\n return [\"**/*.js\", \"**/*.mjs\", \"**/*.cjs\"];\n }\n case \"all\": {\n return [\"**/*.js\", \"**/*.jsx\", \"**/*.mjs\", \"**/*.cjs\", \"**/*.ts\", \"**/*.d.ts\", \"**/*.tsx\", \"**/*.mts\", \"**/*.cts\"];\n }\n case \"markdown\": {\n return [\"**/*.{md,mkdn,mdown,markdown}\"];\n }\n case \"markdown_inline_js_jsx\": {\n return [\"**/*.{md,mkdn,mdown,markdown}/*.{js,javascript,jsx,node}\"];\n }\n case \"mdx\": {\n return [\"**/*.mdx\"];\n }\n case \"jest\": {\n return [\n // Test files\n \"**/*.spec.{js,ts,tsx}\",\n \"**/*.test.{js,ts,tsx}\",\n \"**/test/*.{js,ts,tsx}\",\n\n // Facebook convention\n \"**/__mocks__/*.{js,ts,tsx}\",\n \"**/__tests__/*.{js,ts,tsx}\",\n ];\n }\n case \"ava\": {\n return [\n \"test.js\",\n \"src/test.js\",\n \"source/test.js\",\n \"**/test-*.js\",\n \"**/*.spec.js\",\n \"**/*.test.js\",\n \"**/test/**/*.js\",\n \"**/tests/**/*.js\",\n \"**/__tests__/**/*.js\",\n ];\n }\n case \"vitest\": {\n return [\"**/__tests__/**/*.?(c|m)[jt]s?(x)\", \"**/?(*.){test,spec}.?(c|m)[jt]s?(x)\"];\n }\n case \"tests\": {\n return [\n // ava\n \"test.js\",\n \"src/test.js\",\n \"source/test.js\",\n \"**/test-*.js\",\n \"**/*.spec.js\",\n \"**/*.test.js\",\n \"**/test/**/*.js\",\n \"**/tests/**/*.js\",\n \"**/__tests__/**/*.js\",\n\n // jest\n \"**/*.spec.{js,ts,tsx}\",\n \"**/*.test.{js,ts,tsx}\",\n \"**/test/*.{js,ts,tsx}\",\n \"**/__mocks__/*.{js,ts,tsx}\",\n \"**/__tests__/*.{js,ts,tsx}\",\n \"**/__tests__/**/*.?(c|m)[jt]s?(x)\",\n \"**/?(*.){test,spec}.?(c|m)[jt]s?(x)\",\n ];\n }\n default: {\n throw new Error(`Unknown type: ${type}`);\n }\n }\n};\n\nexport const createConfig = (type: FileType, config: Omit<Linter.ConfigOverride, \"files\">, environment?: { [name: string]: boolean }): Linter.Config => {\n return {\n env: environment,\n overrides: [\n {\n files: getType(type),\n ...config,\n },\n ],\n };\n};\nexport const createConfigs = (\n rules: {\n config: Omit<Linter.ConfigOverride, \"files\">;\n type: FileType;\n }[],\n): Linter.Config => {\n return {\n overrides: rules.map(({ config, type }) => {\n return {\n files: getType(type),\n ...config,\n };\n }),\n };\n};\n"]}
@@ -1,9 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkX3W6J3PZ_js = require('./chunk-X3W6J3PZ.js');
4
-
5
- if(global.anolilabEslintIndent===void 0&&chunkX3W6J3PZ_js.a.indent){if(Number.isNaN(chunkX3W6J3PZ_js.a.indent))throw new TypeError("Indent must be a number");global.anolilabEslintIndent=Number(chunkX3W6J3PZ_js.a.indent);}else global.anolilabEslintIndent=4;var l=global.anolilabEslintIndent,i=l;
6
-
7
- exports.a = i;
8
- //# sourceMappingURL=out.js.map
9
- //# sourceMappingURL=chunk-57IVUTVM.js.map
@@ -1,7 +0,0 @@
1
- 'use strict';
2
-
3
- var r={rules:{"for-direction":"error","getter-return":["error",{allowImplicit:!0}],"no-async-promise-executor":"error","no-await-in-loop":"error","no-compare-neg-zero":"error","no-cond-assign":["error","always"],"no-console":"warn","no-constant-condition":"warn","no-control-regex":"error","no-debugger":"error","no-dupe-args":"error","no-dupe-else-if":"error","no-dupe-keys":"error","no-duplicate-case":"error","no-empty":"error","no-empty-character-class":"error","no-ex-assign":"error","no-extra-boolean-cast":"error","no-extra-parens":["off","all",{conditionalAssign:!0,enforceForArrowConditionals:!1,ignoreJSX:"all",nestedBinaryExpressions:!1,returnAssign:!1}],"no-extra-semi":"error","no-func-assign":"error","no-import-assign":"error","no-inner-declarations":"error","no-invalid-regexp":"error","no-irregular-whitespace":"error","no-loss-of-precision":"error","no-misleading-character-class":"error","no-negated-in-lhs":"off","no-obj-calls":"error","no-promise-executor-return":"error","no-prototype-builtins":"error","no-regex-spaces":"error","no-setter-return":"error","no-sparse-arrays":"error","no-template-curly-in-string":"error","no-unexpected-multiline":"error","no-unreachable":"error","no-unreachable-loop":"off","no-unsafe-finally":"error","no-unsafe-negation":"error","no-unsafe-optional-chaining":["error",{disallowArithmeticOperators:!0}],"no-useless-backreference":"error","require-atomic-updates":"off","use-isnan":"error","valid-jsdoc":"off","valid-typeof":["error",{requireStringLiterals:!0}]}},e=r;
4
-
5
- exports.a = e;
6
- //# sourceMappingURL=out.js.map
7
- //# sourceMappingURL=chunk-6COSQA7M.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/config/errors.ts"],"names":["config","errors_default"],"mappings":"AAEA,IAAMA,EAAwB,CAC1B,MAAO,CAGH,gBAAiB,QAIjB,gBAAiB,CAAC,QAAS,CAAE,cAAe,EAAK,CAAC,EAIlD,4BAA6B,QAI7B,mBAAoB,QAIpB,sBAAuB,QAGvB,iBAAkB,CAAC,QAAS,QAAQ,EAGpC,aAAc,OAGd,wBAAyB,OAGzB,mBAAoB,QAGpB,cAAe,QAGf,eAAgB,QAIhB,kBAAmB,QAGnB,eAAgB,QAGhB,oBAAqB,QAGrB,WAAY,QAGZ,2BAA4B,QAG5B,eAAgB,QAIhB,wBAAyB,QAIzB,kBAAmB,CACf,MACA,MACA,CACI,kBAAmB,GACnB,4BAA6B,GAC7B,UAAW,MACX,wBAAyB,GACzB,aAAc,EAClB,CACJ,EAGA,gBAAiB,QAGjB,iBAAkB,QAGlB,mBAAoB,QAGpB,wBAAyB,QAGzB,oBAAqB,QAGrB,0BAA2B,QAI3B,uBAAwB,QAIxB,gCAAiC,QAGjC,oBAAqB,MAIrB,eAAgB,QAIhB,6BAA8B,QAG9B,wBAAyB,QAIzB,kBAAmB,QAGnB,mBAAoB,QAIpB,mBAAoB,QAIpB,8BAA+B,QAG/B,0BAA2B,QAI3B,iBAAkB,QAIlB,sBAAuB,MAIvB,oBAAqB,QAIrB,qBAAsB,QAItB,8BAA+B,CAAC,QAAS,CAAE,4BAA6B,EAAK,CAAC,EAI9E,2BAA4B,QAK5B,yBAA0B,MAG1B,YAAa,QAIb,cAAe,MAIf,eAAgB,CAAC,QAAS,CAAE,sBAAuB,EAAK,CAAC,CAC7D,CACJ,EAEOC,EAAQD","sourcesContent":["import type { Linter } from \"eslint\";\n\nconst config: Linter.Config = {\n rules: {\n // Enforce “for” loop update clause moving the counter in the right direction\n // https://eslint.org/docs/rules/for-direction\n \"for-direction\": \"error\",\n\n // Enforces that a return statement is present in property getters\n // https://eslint.org/docs/rules/getter-return\n \"getter-return\": [\"error\", { allowImplicit: true }],\n\n // disallow using an async function as a Promise executor\n // https://eslint.org/docs/rules/no-async-promise-executor\n \"no-async-promise-executor\": \"error\",\n\n // Disallow await inside of loops\n // https://eslint.org/docs/rules/no-await-in-loop\n \"no-await-in-loop\": \"error\",\n\n // Disallow comparisons to negative zero\n // https://eslint.org/docs/rules/no-compare-neg-zero\n \"no-compare-neg-zero\": \"error\",\n\n // disallow assignment in conditional expressions\n \"no-cond-assign\": [\"error\", \"always\"],\n\n // disallow use of console\n \"no-console\": \"warn\",\n\n // disallow use of constant expressions in conditions\n \"no-constant-condition\": \"warn\",\n\n // disallow control characters in regular expressions\n \"no-control-regex\": \"error\",\n\n // disallow use of debugger\n \"no-debugger\": \"error\",\n\n // disallow duplicate arguments in functions\n \"no-dupe-args\": \"error\",\n\n // Disallow duplicate conditions in if-else-if chains\n // https://eslint.org/docs/rules/no-dupe-else-if\n \"no-dupe-else-if\": \"error\",\n\n // disallow duplicate keys when creating object literals\n \"no-dupe-keys\": \"error\",\n\n // disallow a duplicate case label.\n \"no-duplicate-case\": \"error\",\n\n // disallow empty statements\n \"no-empty\": \"error\",\n\n // disallow the use of empty character classes in regular expressions\n \"no-empty-character-class\": \"error\",\n\n // disallow assigning to the exception in a catch block\n \"no-ex-assign\": \"error\",\n\n // disallow double-negation boolean casts in a boolean context\n // https://eslint.org/docs/rules/no-extra-boolean-cast\n \"no-extra-boolean-cast\": \"error\",\n\n // disallow unnecessary parentheses\n // https://eslint.org/docs/rules/no-extra-parens\n \"no-extra-parens\": [\n \"off\",\n \"all\",\n {\n conditionalAssign: true,\n enforceForArrowConditionals: false,\n ignoreJSX: \"all\", // delegate to eslint-plugin-react\n nestedBinaryExpressions: false,\n returnAssign: false,\n },\n ],\n\n // disallow unnecessary semicolons\n \"no-extra-semi\": \"error\",\n\n // disallow overwriting functions written as function declarations\n \"no-func-assign\": \"error\",\n\n // https://eslint.org/docs/rules/no-import-assign\n \"no-import-assign\": \"error\",\n\n // disallow function or variable declarations in nested blocks\n \"no-inner-declarations\": \"error\",\n\n // disallow invalid regular expression strings in the RegExp constructor\n \"no-invalid-regexp\": \"error\",\n\n // disallow irregular whitespace outside of strings and comments\n \"no-irregular-whitespace\": \"error\",\n\n // Disallow Number Literals That Lose Precision\n // https://eslint.org/docs/rules/no-loss-of-precision\n \"no-loss-of-precision\": \"error\",\n\n // Disallow characters which are made with multiple code points in character class syntax\n // https://eslint.org/docs/rules/no-misleading-character-class\n \"no-misleading-character-class\": \"error\",\n\n // deprecated in favor of no-unsafe-negation\n \"no-negated-in-lhs\": \"off\",\n\n // Disallow returning values from Promise executor functions\n // disallow the use of object properties of the global object (Math and JSON) as functions\n \"no-obj-calls\": \"error\",\n\n // disallow use of Object.prototypes builtins directly\n // https://eslint.org/docs/rules/no-promise-executor-return\n \"no-promise-executor-return\": \"error\",\n\n // https://eslint.org/docs/rules/no-prototype-builtins\n \"no-prototype-builtins\": \"error\",\n\n // Disallow returning values from setters\n // disallow multiple spaces in a regular expression literal\n \"no-regex-spaces\": \"error\",\n\n // https://eslint.org/docs/rules/no-setter-return\n \"no-setter-return\": \"error\",\n\n // Disallow template literal placeholder syntax in regular strings\n // disallow sparse arrays\n \"no-sparse-arrays\": \"error\",\n\n // Avoid code that looks like two expressions but is actually one\n // https://eslint.org/docs/rules/no-template-curly-in-string\n \"no-template-curly-in-string\": \"error\",\n\n // https://eslint.org/docs/rules/no-unexpected-multiline\n \"no-unexpected-multiline\": \"error\",\n\n // Disallow loops with a body that allows only one iteration\n // disallow unreachable statements after a return, throw, continue, or break statement\n \"no-unreachable\": \"error\",\n\n // disallow return/throw/break/continue inside finally blocks\n // https://eslint.org/docs/rules/no-unreachable-loop\n \"no-unreachable-loop\": \"off\", // error with typescript\n\n // disallow negating the left operand of relational operators\n // https://eslint.org/docs/rules/no-unsafe-finally\n \"no-unsafe-finally\": \"error\",\n\n // disallow use of optional chaining in contexts where the undefined value is not allowed\n // https://eslint.org/docs/rules/no-unsafe-negation\n \"no-unsafe-negation\": \"error\",\n\n // Disallow useless backreferences in regular expressions\n // https://eslint.org/docs/rules/no-unsafe-optional-chaining\n \"no-unsafe-optional-chaining\": [\"error\", { disallowArithmeticOperators: true }],\n\n // disallow negation of the left operand of an in expression\n // https://eslint.org/docs/rules/no-useless-backreference\n \"no-useless-backreference\": \"error\",\n\n // Disallow assignments that can lead to race conditions due to usage of await or yield\n // https://eslint.org/docs/rules/require-atomic-updates\n // note: not enabled because it is very buggy\n \"require-atomic-updates\": \"off\",\n\n // disallow comparisons with the value NaN\n \"use-isnan\": \"error\",\n\n // ensure JSDoc comments are valid\n // https://eslint.org/docs/rules/valid-jsdoc\n \"valid-jsdoc\": \"off\",\n\n // ensure that the results of typeof are compared against a valid string\n // https://eslint.org/docs/rules/valid-typeof\n \"valid-typeof\": [\"error\", { requireStringLiterals: true }],\n },\n};\n\nexport default config;\n"]}
@@ -1,10 +0,0 @@
1
- 'use strict';
2
-
3
- var chunk57IVUTVM_js = require('./chunk-57IVUTVM.js');
4
- var packageJsonUtils = require('@anolilab/package-json-utils');
5
-
6
- !global.hasAnolilabEsLintConfigPrettier&&(packageJsonUtils.hasDependency("prettier")||packageJsonUtils.hasDevDependency("prettier"))&&(global.hasAnolilabEsLintConfigPrettier=!0);var r={};global.hasAnolilabEsLintConfigPrettier&&(r={"array-bracket-newline":"off","array-bracket-spacing":"off","array-element-newline":"off","arrow-parens":"off","arrow-spacing":"off","block-spacing":"off","brace-style":"off","comma-dangle":"off","comma-spacing":"off","comma-style":"off","computed-property-spacing":"off",curly:0,"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":0,"max-len":0,"multiline-ternary":"off","new-parens":"off","newline-per-chained-call":"off","no-confusing-arrow":0,"no-extra-parens":"off","no-extra-semi":"off","no-floating-decimal":"off","no-mixed-operators":0,"no-mixed-spaces-and-tabs":"off","no-multi-spaces":"off","no-multiple-empty-lines":"off","no-tabs":0,"no-trailing-spaces":"off","no-unexpected-multiline":0,"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","quote-props":"off",quotes:0,"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","switch-colon-spacing":"off","template-curly-spacing":"off","template-tag-spacing":"off","unicode-bom":"off","wrap-iife":"off","wrap-regex":"off","yield-star-spacing":"off"});var a={rules:{"array-bracket-newline":"off","array-bracket-spacing":["error","never"],"array-element-newline":"off","block-spacing":["error","always"],"brace-style":["error","1tbs",{allowSingleLine:!0}],camelcase:["error",{ignoreDestructuring:!1,properties:"never"}],"capitalized-comments":["off","never",{block:{ignoreConsecutiveComments:!0,ignoreInlineComments:!0,ignorePattern:".*"},line:{ignoreConsecutiveComments:!0,ignoreInlineComments:!0,ignorePattern:".*"}}],"comma-dangle":["error",{arrays:"always-multiline",exports:"always-multiline",functions:"always-multiline",imports:"always-multiline",objects:"always-multiline"}],"comma-spacing":["error",{after:!0,before:!1}],"comma-style":["error","last",{exceptions:{ArrayExpression:!1,ArrayPattern:!1,ArrowFunctionExpression:!1,CallExpression:!1,FunctionDeclaration:!1,FunctionExpression:!1,ImportDeclaration:!1,NewExpression:!1,ObjectExpression:!1,ObjectPattern:!1,VariableDeclaration:!1}}],"computed-property-spacing":["error","never"],"consistent-this":"off","default-param-last":["error"],"eol-last":["error","always"],"func-call-spacing":["error","never"],"func-name-matching":["off","always",{considerPropertyDescriptor:!0,includeCommonJSModuleExports:!1}],"func-names":["error","as-needed"],"func-style":["error","expression"],"function-call-argument-newline":["error","consistent"],"function-paren-newline":["error","consistent"],"id-blacklist":"error","id-denylist":"off","id-length":"off","id-match":"off","implicit-arrow-linebreak":["error","beside"],indent:["error",chunk57IVUTVM_js.a,{ArrayExpression:1,CallExpression:{arguments:1},FunctionDeclaration:{body:1,parameters:1},FunctionExpression:{body:1,parameters:1},ImportDeclaration:1,ObjectExpression:1,SwitchCase:1,VariableDeclarator:1,flatTernaryExpressions:!1,ignoreComments:!1,ignoredNodes:["JSXElement","JSXElement > *","JSXAttribute","JSXIdentifier","JSXNamespacedName","JSXMemberExpression","JSXSpreadAttribute","JSXExpressionContainer","JSXOpeningElement","JSXClosingElement","JSXFragment","JSXOpeningFragment","JSXClosingFragment","JSXText","JSXEmptyExpression","JSXSpreadChild"],outerIIFEBody:1}],"jsx-quotes":["off","prefer-double"],"key-spacing":["error",{afterColon:!0,beforeColon:!1}],"keyword-spacing":["error",{after:!0,before:!0,overrides:{case:{after:!0},return:{after:!0},throw:{after:!0}}}],"line-comment-position":["off",{applyDefaultPatterns:!0,ignorePattern:"",position:"above"}],"linebreak-style":["error","unix"],"lines-around-comment":"off","lines-around-directive":["error",{after:"always",before:"always"}],"lines-between-class-members":["error","always",{exceptAfterSingleLine:!1}],"max-depth":["off",4],"max-len":["error",160,2,{ignoreComments:!1,ignoreRegExpLiterals:!0,ignoreStrings:!0,ignoreTemplateLiterals:!0,ignoreUrls:!0}],"max-lines":["off",{max:300,skipBlankLines:!0,skipComments:!0}],"max-lines-per-function":["off",{IIFEs:!0,max:50,skipBlankLines:!0,skipComments:!0}],"max-nested-callbacks":"off","max-params":["off",3],"max-statements":["off",10],"max-statements-per-line":["off",{max:1}],"multiline-comment-style":["off","starred-block"],"multiline-ternary":["off","never"],"new-cap":["error",{capIsNew:!1,capIsNewExceptions:["Immutable.Map","Immutable.Set","Immutable.List"],newIsCap:!0,newIsCapExceptions:[]}],"new-parens":"error","newline-after-var":"off","newline-before-return":"off","newline-per-chained-call":["error",{ignoreChainWithDepth:4}],"no-array-constructor":"error","no-bitwise":"error","no-continue":"error","no-inline-comments":"off","no-lonely-if":"error","no-mixed-operators":["error",{allowSamePrecedence:!1,groups:[["%","**"],["%","+"],["%","-"],["%","*"],["%","/"],["/","*"],["&","|","<<",">>",">>>"],["==","!=","===","!=="],["&&","||"],["in","instanceof"]]}],"no-mixed-spaces-and-tabs":"error","no-multi-assign":["error"],"no-multiple-empty-lines":["error",{max:1,maxBOF:0,maxEOF:0}],"no-negated-condition":"off","no-nested-ternary":"error","no-new-object":"error","no-plusplus":"error","no-restricted-syntax":["error",{message:"for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array.",selector:"ForInStatement"},{message:"iterators/generators require regenerator-runtime, which is too heavyweight for this guide to allow them. Separately, loops should be avoided in favor of array iterations.",selector:"ForOfStatement"},{message:"Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand.",selector:"LabeledStatement"},{message:"`with` is disallowed in strict mode because it makes code impossible to predict and optimize.",selector:"WithStatement"},{message:"`useMemo` with an empty dependency array can't provide a stable reference, use `useRef` instead.",selector:"CallExpression[callee.name=useMemo][arguments.1.type=ArrayExpression][arguments.1.elements.length=0]"},{message:"Use `.key` instead of `.keyCode`",selector:"MemberExpression > .property[type=Identifier][name=keyCode]"}],"no-spaced-func":"off","no-tabs":"error","no-ternary":"off","no-trailing-spaces":["error",{ignoreComments:!1,skipBlankLines:!1}],"no-underscore-dangle":["error",{allow:["__DEV__","__STORYBOOK_CLIENT_API__","__STORYBOOK_ADDONS_CHANNEL__","__STORYBOOK_STORY_STORE__"],allowAfterSuper:!1,allowAfterThis:!1,enforceInMethodNames:!0}],"no-unneeded-ternary":["error",{defaultAssignment:!1}],"no-whitespace-before-property":"error","nonblock-statement-body-position":["error","beside",{overrides:{}}],"object-curly-newline":["error",{ExportDeclaration:{consistent:!0,minProperties:4,multiline:!0},ImportDeclaration:{consistent:!0,minProperties:4,multiline:!0},ObjectExpression:{consistent:!0,minProperties:4,multiline:!0},ObjectPattern:{consistent:!0,minProperties:4,multiline:!0}}],"object-curly-spacing":["error","always"],"object-property-newline":["error",{allowAllPropertiesOnSameLine:!0}],"one-var":["error","never"],"one-var-declaration-per-line":["error","always"],"operator-assignment":["error","always"],"operator-linebreak":["error","before",{overrides:{"=":"none"}}],"padded-blocks":["error",{blocks:"never",classes:"never",switches:"never"},{allowSingleLineBlocks:!0}],"padding-line-between-statements":"off","prefer-exponentiation-operator":"error","prefer-object-spread":"error","quote-props":["error","as-needed",{keywords:!1,numbers:!1,unnecessary:!0}],quotes:["error","double",{avoidEscape:!0}],"require-jsdoc":"off",semi:["error","always"],"semi-spacing":["error",{after:!0,before:!1}],"semi-style":["error","last"],"sort-keys":"off","sort-vars":"off","space-before-blocks":"error","space-before-function-paren":["error",{anonymous:"always",asyncArrow:"always",named:"never"}],"space-in-parens":["error","never"],"space-infix-ops":"error","space-unary-ops":["error",{nonwords:!1,overrides:{},words:!0}],"spaced-comment":["error","always",{block:{balanced:!0,exceptions:["-","+"],markers:["=","!",":","::"]},line:{exceptions:["-","+","*"],markers:["=","!","/"]}}],"switch-colon-spacing":["error",{after:!0,before:!1}],"template-tag-spacing":["error","never"],"unicode-bom":["error","never"],"wrap-regex":"off",...r}},i=a;
7
-
8
- exports.a = i;
9
- //# sourceMappingURL=out.js.map
10
- //# sourceMappingURL=chunk-F5CTGWCD.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/config/style.ts"],"names":["hasDependency","hasDevDependency","prettierRules","config","indent_default","style_default"],"mappings":"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","sourcesContent":["import { hasDependency, hasDevDependency } from \"@anolilab/package-json-utils\";\nimport type { Linter } from \"eslint\";\n\nimport indent from \"../utils/indent\";\n\nif (!global.hasAnolilabEsLintConfigPrettier && (hasDependency(\"prettier\") || hasDevDependency(\"prettier\"))) {\n global.hasAnolilabEsLintConfigPrettier = true;\n}\n\nlet prettierRules: Linter.Config[\"rules\"] = {};\n\nif (global.hasAnolilabEsLintConfigPrettier) {\n prettierRules = {\n // The rest are rules that you never need to enable when using Prettier.\n \"array-bracket-newline\": \"off\",\n \"array-bracket-spacing\": \"off\",\n \"array-element-newline\": \"off\",\n \"arrow-parens\": \"off\",\n \"arrow-spacing\": \"off\",\n \"block-spacing\": \"off\",\n \"brace-style\": \"off\",\n \"comma-dangle\": \"off\",\n\n \"comma-spacing\": \"off\",\n \"comma-style\": \"off\",\n \"computed-property-spacing\": \"off\",\n // script can distinguish them.)\n curly: 0,\n \"dot-location\": \"off\",\n \"eol-last\": \"off\",\n \"func-call-spacing\": \"off\",\n \"function-call-argument-newline\": \"off\",\n \"function-paren-newline\": \"off\",\n \"generator-star-spacing\": \"off\",\n \"implicit-arrow-linebreak\": \"off\",\n indent: \"off\",\n \"jsx-quotes\": \"off\",\n \"key-spacing\": \"off\",\n \"keyword-spacing\": \"off\",\n \"linebreak-style\": \"off\",\n \"lines-around-comment\": 0,\n \"max-len\": 0,\n \"multiline-ternary\": \"off\",\n \"new-parens\": \"off\",\n \"newline-per-chained-call\": \"off\",\n \"no-confusing-arrow\": 0,\n \"no-extra-parens\": \"off\",\n \"no-extra-semi\": \"off\",\n \"no-floating-decimal\": \"off\",\n \"no-mixed-operators\": 0,\n \"no-mixed-spaces-and-tabs\": \"off\",\n \"no-multi-spaces\": \"off\",\n \"no-multiple-empty-lines\": \"off\",\n \"no-tabs\": 0,\n \"no-trailing-spaces\": \"off\",\n \"no-unexpected-multiline\": 0,\n \"no-whitespace-before-property\": \"off\",\n \"nonblock-statement-body-position\": \"off\",\n \"object-curly-newline\": \"off\",\n \"object-curly-spacing\": \"off\",\n \"object-property-newline\": \"off\",\n \"one-var-declaration-per-line\": \"off\",\n \"operator-linebreak\": \"off\",\n \"padded-blocks\": \"off\",\n \"quote-props\": \"off\",\n quotes: 0,\n \"rest-spread-spacing\": \"off\",\n semi: \"off\",\n \"semi-spacing\": \"off\",\n \"semi-style\": \"off\",\n \"space-before-blocks\": \"off\",\n \"space-before-function-paren\": \"off\",\n \"space-in-parens\": \"off\",\n \"space-infix-ops\": \"off\",\n \"space-unary-ops\": \"off\",\n \"switch-colon-spacing\": \"off\",\n \"template-curly-spacing\": \"off\",\n \"template-tag-spacing\": \"off\",\n \"unicode-bom\": \"off\",\n \"wrap-iife\": \"off\",\n \"wrap-regex\": \"off\",\n \"yield-star-spacing\": \"off\",\n };\n}\n\nconst config: Linter.Config = {\n rules: {\n // enforce line breaks after opening and before closing array brackets\n // https://eslint.org/docs/rules/array-bracket-newline\n \"array-bracket-newline\": \"off\",\n\n // enforce line breaks between array elements\n // enforce spacing inside array brackets\n \"array-bracket-spacing\": [\"error\", \"never\"],\n\n // https://eslint.org/docs/rules/array-element-newline\n \"array-element-newline\": \"off\",\n\n // enforce spacing inside single-line blocks\n // https://eslint.org/docs/rules/block-spacing\n \"block-spacing\": [\"error\", \"always\"],\n\n // enforce one true brace style\n \"brace-style\": [\"error\", \"1tbs\", { allowSingleLine: true }],\n\n // require camel case names\n camelcase: [\"error\", { ignoreDestructuring: false, properties: \"never\" }],\n\n // enforce or disallow capitalization of the first letter of a comment\n // https://eslint.org/docs/rules/capitalized-comments\n \"capitalized-comments\": [\n \"off\",\n \"never\",\n {\n block: {\n ignoreConsecutiveComments: true,\n ignoreInlineComments: true,\n ignorePattern: \".*\",\n },\n line: {\n ignoreConsecutiveComments: true,\n ignoreInlineComments: true,\n ignorePattern: \".*\",\n },\n },\n ],\n\n // require trailing commas in multiline object literals\n \"comma-dangle\": [\n \"error\",\n {\n arrays: \"always-multiline\",\n exports: \"always-multiline\",\n functions: \"always-multiline\",\n imports: \"always-multiline\",\n objects: \"always-multiline\",\n },\n ],\n\n // enforce spacing before and after comma\n \"comma-spacing\": [\"error\", { after: true, before: false }],\n\n // enforce one true comma style\n \"comma-style\": [\n \"error\",\n \"last\",\n {\n exceptions: {\n ArrayExpression: false,\n ArrayPattern: false,\n ArrowFunctionExpression: false,\n CallExpression: false,\n FunctionDeclaration: false,\n FunctionExpression: false,\n ImportDeclaration: false,\n NewExpression: false,\n ObjectExpression: false,\n ObjectPattern: false,\n VariableDeclaration: false,\n },\n },\n ],\n\n // disallow padding inside computed properties\n \"computed-property-spacing\": [\"error\", \"never\"],\n\n // enforces consistent naming when capturing the current execution context\n \"consistent-this\": \"off\",\n\n // enforce that default parameters should come last\n \"default-param-last\": [\"error\"],\n\n // enforce newline at the end of file, with no multiple empty lines\n \"eol-last\": [\"error\", \"always\"],\n\n // https://eslint.org/docs/rules/func-call-spacing\n \"func-call-spacing\": [\"error\", \"never\"],\n\n // enforce spacing between functions and their invocations\n // https://eslint.org/docs/rules/func-name-matching\n \"func-name-matching\": [\n \"off\",\n \"always\",\n {\n considerPropertyDescriptor: true,\n includeCommonJSModuleExports: false,\n },\n ],\n\n // requires function names to match the name of the variable or property to which they are\n // assigned\n // https://eslint.org/docs/rules/func-names\n \"func-names\": [\"error\", \"as-needed\"],\n\n // require function expressions to have a name\n // https://eslint.org/docs/rules/func-style\n \"func-style\": [\"error\", \"expression\"],\n\n // enforces use of function declarations or expressions\n // https://eslint.org/docs/rules/function-call-argument-newline\n \"function-call-argument-newline\": [\"error\", \"consistent\"],\n\n // enforce consistent line breaks inside function parentheses\n // https://eslint.org/docs/rules/function-paren-newline\n \"function-paren-newline\": [\"error\", \"consistent\"],\n\n // Blacklist certain identifiers to prevent them being used\n // https://eslint.org/docs/rules/id-blacklist\n \"id-blacklist\": \"error\",\n\n // disallow specified identifiers\n // https://eslint.org/docs/rules/id-denylist\n \"id-denylist\": \"off\",\n\n // this option enforces minimum and maximum identifier lengths\n // (variable names, property names etc.)\n \"id-length\": \"off\",\n\n // require identifiers to match the provided regular expression\n \"id-match\": \"off\",\n\n // Enforce the location of arrow function bodies with implicit returns\n // https://eslint.org/docs/rules/implicit-arrow-linebreak\n \"implicit-arrow-linebreak\": [\"error\", \"beside\"],\n\n // this option sets a specific tab width for your code\n // https://eslint.org/docs/rules/indent\n indent: [\n \"error\",\n indent,\n {\n ArrayExpression: 1,\n CallExpression: {\n arguments: 1,\n },\n // MemberExpression: null,\n FunctionDeclaration: {\n body: 1,\n parameters: 1,\n },\n FunctionExpression: {\n body: 1,\n parameters: 1,\n },\n ImportDeclaration: 1,\n ObjectExpression: 1,\n SwitchCase: 1,\n VariableDeclarator: 1,\n flatTernaryExpressions: false,\n ignoreComments: false,\n // list derived from https://github.com/benjamn/ast-types/blob/HEAD/def/jsx.js\n ignoredNodes: [\n \"JSXElement\",\n \"JSXElement > *\",\n \"JSXAttribute\",\n \"JSXIdentifier\",\n \"JSXNamespacedName\",\n \"JSXMemberExpression\",\n \"JSXSpreadAttribute\",\n \"JSXExpressionContainer\",\n \"JSXOpeningElement\",\n \"JSXClosingElement\",\n \"JSXFragment\",\n \"JSXOpeningFragment\",\n \"JSXClosingFragment\",\n \"JSXText\",\n \"JSXEmptyExpression\",\n \"JSXSpreadChild\",\n ],\n outerIIFEBody: 1,\n },\n ],\n\n // specify whether double or single quotes should be used in JSX attributes\n // https://eslint.org/docs/rules/jsx-quotes\n \"jsx-quotes\": [\"off\", \"prefer-double\"],\n\n // enforces spacing between keys and values in object literal properties\n \"key-spacing\": [\"error\", { afterColon: true, beforeColon: false }],\n\n // require a space before & after certain keywords\n \"keyword-spacing\": [\n \"error\",\n {\n after: true,\n before: true,\n overrides: {\n case: { after: true },\n return: { after: true },\n throw: { after: true },\n },\n },\n ],\n\n // enforce position of line comments\n // https://eslint.org/docs/rules/line-comment-position\n // TODO: enable?\n \"line-comment-position\": [\n \"off\",\n {\n applyDefaultPatterns: true,\n ignorePattern: \"\",\n position: \"above\",\n },\n ],\n\n // disallow mixed 'LF' and 'CRLF' as linebreaks\n // https://eslint.org/docs/rules/linebreak-style\n \"linebreak-style\": [\"error\", \"unix\"],\n\n // require or disallow an empty line between class members\n // enforces empty lines around comments\n \"lines-around-comment\": \"off\",\n\n // https://eslint.org/docs/rules/lines-around-directive\n \"lines-around-directive\": [\n \"error\",\n {\n after: \"always\",\n before: \"always\",\n },\n ],\n\n // require or disallow newlines around directives\n // https://eslint.org/docs/rules/lines-between-class-members\n \"lines-between-class-members\": [\"error\", \"always\", { exceptAfterSingleLine: false }],\n\n // specify the maximum depth that blocks can be nested\n \"max-depth\": [\"off\", 4],\n\n // specify the maximum length of a line in your program\n // https://eslint.org/docs/rules/max-len\n \"max-len\": [\n \"error\",\n 160,\n 2,\n {\n ignoreComments: false,\n ignoreRegExpLiterals: true,\n ignoreStrings: true,\n ignoreTemplateLiterals: true,\n ignoreUrls: true,\n },\n ],\n\n // specify the max number of lines in a file\n // https://eslint.org/docs/rules/max-lines\n \"max-lines\": [\n \"off\",\n {\n max: 300,\n skipBlankLines: true,\n skipComments: true,\n },\n ],\n\n // enforce a maximum function length\n // https://eslint.org/docs/rules/max-lines-per-function\n \"max-lines-per-function\": [\n \"off\",\n {\n IIFEs: true,\n max: 50,\n skipBlankLines: true,\n skipComments: true,\n },\n ],\n\n // specify the maximum depth callbacks can be nested\n \"max-nested-callbacks\": \"off\",\n\n // limits the number of parameters that can be used in the function declaration.\n \"max-params\": [\"off\", 3],\n\n // specify the maximum number of statement allowed in a function\n \"max-statements\": [\"off\", 10],\n\n // restrict the number of statements per line\n // https://eslint.org/docs/rules/max-statements-per-line\n \"max-statements-per-line\": [\"off\", { max: 1 }],\n\n // enforce a particular style for multiline comments\n // https://eslint.org/docs/rules/multiline-comment-style\n \"multiline-comment-style\": [\"off\", \"starred-block\"],\n\n // require multiline ternary\n // https://eslint.org/docs/rules/multiline-ternary\n // TODO: enable?\n \"multiline-ternary\": [\"off\", \"never\"],\n\n // require a capital letter for constructors\n \"new-cap\": [\n \"error\",\n {\n capIsNew: false,\n capIsNewExceptions: [\"Immutable.Map\", \"Immutable.Set\", \"Immutable.List\"],\n newIsCap: true,\n newIsCapExceptions: [],\n },\n ],\n\n // disallow the omission of parentheses when invoking a constructor with no arguments\n // https://eslint.org/docs/rules/new-parens\n \"new-parens\": \"error\",\n\n // allow/disallow an empty newline after var statement\n \"newline-after-var\": \"off\",\n\n // https://eslint.org/docs/rules/newline-before-return\n \"newline-before-return\": \"off\",\n\n // enforces new line after each method call in the chain to make it\n // more readable and easy to maintain\n // https://eslint.org/docs/rules/newline-per-chained-call\n \"newline-per-chained-call\": [\"error\", { ignoreChainWithDepth: 4 }],\n\n // disallow use of the Array constructor\n \"no-array-constructor\": \"error\",\n\n // disallow use of bitwise operators\n // https://eslint.org/docs/rules/no-bitwise\n \"no-bitwise\": \"error\",\n\n // disallow use of the continue statement\n // https://eslint.org/docs/rules/no-continue\n \"no-continue\": \"error\",\n\n // disallow comments inline after code\n \"no-inline-comments\": \"off\",\n\n // disallow if as the only statement in an else block\n // https://eslint.org/docs/rules/no-lonely-if\n \"no-lonely-if\": \"error\",\n\n // disallow un-paren'd mixes of different operators\n // https://eslint.org/docs/rules/no-mixed-operators\n \"no-mixed-operators\": [\n \"error\",\n {\n // the list of arithmetic groups disallows mixing `%` and `**`\n allowSamePrecedence: false,\n // with other arithmetic operators.\n groups: [\n [\"%\", \"**\"],\n [\"%\", \"+\"],\n [\"%\", \"-\"],\n [\"%\", \"*\"],\n [\"%\", \"/\"],\n [\"/\", \"*\"],\n [\"&\", \"|\", \"<<\", \">>\", \">>>\"],\n [\"==\", \"!=\", \"===\", \"!==\"],\n [\"&&\", \"||\"],\n [\"in\", \"instanceof\"],\n ],\n },\n ],\n\n // disallow mixed spaces and tabs for indentation\n \"no-mixed-spaces-and-tabs\": \"error\",\n\n // disallow use of chained assignment expressions\n // https://eslint.org/docs/rules/no-multi-assign\n \"no-multi-assign\": [\"error\"],\n\n // disallow multiple empty lines, only one newline at the end, and no new lines at the beginning\n // https://eslint.org/docs/rules/no-multiple-empty-lines\n \"no-multiple-empty-lines\": [\"error\", { max: 1, maxBOF: 0, maxEOF: 0 }],\n\n // disallow negated conditions\n // https://eslint.org/docs/rules/no-negated-condition\n \"no-negated-condition\": \"off\",\n\n // disallow nested ternary expressions\n \"no-nested-ternary\": \"error\",\n\n // disallow use of the Object constructor\n \"no-new-object\": \"error\",\n\n // disallow use of unary operators, ++ and --\n // https://eslint.org/docs/rules/no-plusplus\n \"no-plusplus\": \"error\",\n\n // disallow certain syntax forms\n // https://eslint.org/docs/rules/no-restricted-syntax\n \"no-restricted-syntax\": [\n \"error\",\n {\n message:\n \"for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array.\",\n selector: \"ForInStatement\",\n },\n {\n message:\n \"iterators/generators require regenerator-runtime, which is too heavyweight for this guide to allow them. Separately, loops should be avoided in favor of array iterations.\",\n selector: \"ForOfStatement\",\n },\n {\n message: \"Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand.\",\n selector: \"LabeledStatement\",\n },\n {\n message: \"`with` is disallowed in strict mode because it makes code impossible to predict and optimize.\",\n selector: \"WithStatement\",\n },\n {\n message: \"`useMemo` with an empty dependency array can't provide a stable reference, use `useRef` instead.\",\n selector: \"CallExpression[callee.name=useMemo][arguments.1.type=ArrayExpression][arguments.1.elements.length=0]\",\n },\n {\n message: \"Use `.key` instead of `.keyCode`\",\n selector: \"MemberExpression > .property[type=Identifier][name=keyCode]\",\n },\n ],\n\n // disallow space between function identifier and application\n // deprecated in favor of func-call-spacing\n \"no-spaced-func\": \"off\",\n\n // disallow tab characters entirely\n \"no-tabs\": \"error\",\n\n // disallow the use of ternary operators\n \"no-ternary\": \"off\",\n\n // disallow trailing whitespace at the end of lines\n \"no-trailing-spaces\": [\n \"error\",\n {\n ignoreComments: false,\n skipBlankLines: false,\n },\n ],\n\n // disallow dangling underscores in identifiers\n // https://eslint.org/docs/rules/no-underscore-dangle\n \"no-underscore-dangle\": [\n \"error\",\n {\n allow: [\"__DEV__\", \"__STORYBOOK_CLIENT_API__\", \"__STORYBOOK_ADDONS_CHANNEL__\", \"__STORYBOOK_STORY_STORE__\"],\n allowAfterSuper: false,\n allowAfterThis: false,\n enforceInMethodNames: true,\n },\n ],\n\n // disallow the use of Boolean literals in conditional expressions\n // also, prefer `a || b` over `a ? a : b`\n // https://eslint.org/docs/rules/no-unneeded-ternary\n \"no-unneeded-ternary\": [\"error\", { defaultAssignment: false }],\n\n // disallow whitespace before properties\n // https://eslint.org/docs/rules/no-whitespace-before-property\n \"no-whitespace-before-property\": \"error\",\n\n // enforce the location of single-line statements\n // https://eslint.org/docs/rules/nonblock-statement-body-position\n \"nonblock-statement-body-position\": [\"error\", \"beside\", { overrides: {} }],\n\n // https://eslint.org/docs/rules/object-curly-newline\n \"object-curly-newline\": [\n \"error\",\n {\n ExportDeclaration: { consistent: true, minProperties: 4, multiline: true },\n ImportDeclaration: { consistent: true, minProperties: 4, multiline: true },\n ObjectExpression: { consistent: true, minProperties: 4, multiline: true },\n ObjectPattern: { consistent: true, minProperties: 4, multiline: true },\n },\n ],\n\n // enforce line breaks between braces\n // require padding inside curly braces\n \"object-curly-spacing\": [\"error\", \"always\"],\n\n // enforce \"same line\" or \"multiple line\" on object properties.\n // https://eslint.org/docs/rules/object-property-newline\n \"object-property-newline\": [\n \"error\",\n {\n allowAllPropertiesOnSameLine: true,\n },\n ],\n\n // allow just one var statement per function\n \"one-var\": [\"error\", \"never\"],\n\n // require a newline around variable declaration\n // https://eslint.org/docs/rules/one-var-declaration-per-line\n \"one-var-declaration-per-line\": [\"error\", \"always\"],\n\n // require assignment operator shorthand where possible or prohibit it entirely\n // https://eslint.org/docs/rules/operator-assignment\n \"operator-assignment\": [\"error\", \"always\"],\n\n // Requires operator at the beginning of the line in multiline statements\n // https://eslint.org/docs/rules/operator-linebreak\n \"operator-linebreak\": [\"error\", \"before\", { overrides: { \"=\": \"none\" } }],\n\n // disallow padding within blocks\n \"padded-blocks\": [\n \"error\",\n {\n blocks: \"never\",\n classes: \"never\",\n switches: \"never\",\n },\n {\n allowSingleLineBlocks: true,\n },\n ],\n\n // Require or disallow padding lines between statements\n // https://eslint.org/docs/rules/padding-line-between-statements\n \"padding-line-between-statements\": \"off\",\n\n // Disallow the use of Math.pow in favor of the ** operator\n // https://eslint.org/docs/rules/prefer-exponentiation-operator\n \"prefer-exponentiation-operator\": \"error\",\n\n // Prefer use of an object spread over Object.assign\n // https://eslint.org/docs/rules/prefer-object-spread\n \"prefer-object-spread\": \"error\",\n\n // require quotes around object literal property names\n // https://eslint.org/docs/rules/quote-props.html\n \"quote-props\": [\"error\", \"as-needed\", { keywords: false, numbers: false, unnecessary: true }],\n\n // specify whether double or single quotes should be used\n quotes: [\"error\", \"double\", { avoidEscape: true }],\n\n // do not require jsdoc\n // https://eslint.org/docs/rules/require-jsdoc\n \"require-jsdoc\": \"off\",\n\n // require or disallow use of semicolons instead of ASI\n semi: [\"error\", \"always\"],\n\n // enforce spacing before and after semicolons\n \"semi-spacing\": [\"error\", { after: true, before: false }],\n\n // Enforce location of semicolons\n // https://eslint.org/docs/rules/semi-style\n \"semi-style\": [\"error\", \"last\"],\n\n // requires object keys to be sorted\n \"sort-keys\": \"off\",\n\n // sort variables within the same declaration block\n \"sort-vars\": \"off\",\n\n // require or disallow space before blocks\n \"space-before-blocks\": \"error\",\n\n // require or disallow space before function opening parenthesis\n // https://eslint.org/docs/rules/space-before-function-paren\n \"space-before-function-paren\": [\n \"error\",\n {\n anonymous: \"always\",\n asyncArrow: \"always\",\n named: \"never\",\n },\n ],\n\n // require or disallow spaces inside parentheses\n \"space-in-parens\": [\"error\", \"never\"],\n\n // require spaces around operators\n \"space-infix-ops\": \"error\",\n\n // Require or disallow spaces before/after unary operators\n // https://eslint.org/docs/rules/space-unary-ops\n \"space-unary-ops\": [\n \"error\",\n {\n nonwords: false,\n overrides: {},\n words: true,\n },\n ],\n\n // require or disallow a space immediately following the // or /* in a comment\n // https://eslint.org/docs/rules/spaced-comment\n \"spaced-comment\": [\n \"error\",\n \"always\",\n {\n block: {\n balanced: true,\n exceptions: [\"-\", \"+\"],\n markers: [\"=\", \"!\", \":\", \"::\"], // space here to support sprockets directives and flow comment types\n },\n line: {\n exceptions: [\"-\", \"+\", \"*\"],\n markers: [\"=\", \"!\", \"/\"], // space here to support sprockets directives, slash for TS /// comments\n },\n },\n ],\n\n // Enforce spacing around colons of switch statements\n // https://eslint.org/docs/rules/switch-colon-spacing\n \"switch-colon-spacing\": [\"error\", { after: true, before: false }],\n\n // Require or disallow spacing between template tags and their literals\n // https://eslint.org/docs/rules/template-tag-spacing\n \"template-tag-spacing\": [\"error\", \"never\"],\n\n // require or disallow the Unicode Byte Order Mark\n // https://eslint.org/docs/rules/unicode-bom\n \"unicode-bom\": [\"error\", \"never\"],\n\n // require regex literals to be wrapped in parentheses\n \"wrap-regex\": \"off\",\n\n ...prettierRules,\n },\n};\n\nexport default config;\n"]}