@zayne-labs/eslint-config 0.13.6 → 0.13.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/index.js +3 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/constants/defaults.d.ts +3 -3
- package/dist/constants/defaults.js +3 -3
- package/dist/constants/defaults.js.map +1 -1
- package/dist/{index-BF0lj0uZ.d.ts → index-DkgX1yNh.d.ts} +30 -68
- package/dist/index.d.ts +1 -1
- package/dist/index.js +12 -8
- package/dist/index.js.map +1 -1
- package/dist/{jsxRules-CqsZUc21.js → jsxRules-BAjKnxGs.js} +2 -2
- package/dist/jsxRules-BAjKnxGs.js.map +1 -0
- package/dist/utils.d.ts +1 -1
- package/package.json +15 -15
- package/dist/jsxRules-CqsZUc21.js.map +0 -1
package/dist/cli/index.js
CHANGED
|
@@ -10,7 +10,7 @@ import fsp from "node:fs/promises";
|
|
|
10
10
|
import parse from "parse-gitignore";
|
|
11
11
|
import { execSync } from "node:child_process";
|
|
12
12
|
//#region package.json
|
|
13
|
-
var version = "0.13.
|
|
13
|
+
var version = "0.13.8";
|
|
14
14
|
//#endregion
|
|
15
15
|
//#region src/cli/constants.ts
|
|
16
16
|
const vscodeSettingsString = `
|
|
@@ -137,11 +137,11 @@ const updateEslintFiles = async (result) => {
|
|
|
137
137
|
//#endregion
|
|
138
138
|
//#region src/cli/constants-generated.ts
|
|
139
139
|
const versionsMap = defineEnum({
|
|
140
|
-
"@eslint-react/eslint-plugin": "^
|
|
140
|
+
"@eslint-react/eslint-plugin": "^5.6.6",
|
|
141
141
|
"astro-eslint-parser": "^1.4.0",
|
|
142
142
|
eslint: "^10.2.1",
|
|
143
143
|
"eslint-plugin-astro": "^1.7.0",
|
|
144
|
-
"eslint-plugin-better-tailwindcss": "^4.
|
|
144
|
+
"eslint-plugin-better-tailwindcss": "^4.5.0",
|
|
145
145
|
"eslint-plugin-react-hooks": "^7.1.1",
|
|
146
146
|
"eslint-plugin-react-refresh": "^0.5.2",
|
|
147
147
|
"eslint-plugin-react-you-might-not-need-an-effect": "^0.9.3",
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../package.json","../../src/cli/constants.ts","../../src/cli/utils.ts","../../src/cli/stages/update-eslint-files.ts","../../src/cli/constants-generated.ts","../../src/cli/stages/update-package-json.ts","../../src/cli/stages/update-vscode-settings.ts","../../src/cli/run.ts","../../src/cli/index.ts"],"sourcesContent":["","import { defineEnumDeep } from \"@zayne-labs/toolkit-type-helpers\";\nimport c from \"ansis\";\nimport type { ExtraLibrariesOptionUnion, FrameworkOptionUnion, PromItem } from \"./types\";\n\nexport const vscodeSettingsString = `\n // Auto fix\n // \"editor.codeActionsOnSave\": {\n // \"source.fixAll.eslint\": \"explicit\",\n // },\n\n // Enable eslint for all supported languages\n \"eslint.validate\": [\n \"javascript\",\n \"javascriptreact\",\n \"typescript\",\n \"typescriptreact\",\n \"vue\",\n \"html\",\n \"markdown\",\n \"json\",\n \"json5\",\n \"jsonc\",\n \"yaml\",\n \"toml\",\n \"xml\",\n \"gql\",\n \"graphql\",\n \"astro\",\n \"svelte\",\n \"css\",\n \"less\",\n \"scss\",\n \"postcss\"\n ]\n`;\n\nexport const frameworkOptions: Array<PromItem<FrameworkOptionUnion>> = [\n\t{\n\t\tlabel: c.green(\"Vue\"),\n\t\tvalue: \"vue\",\n\t},\n\t{\n\t\tlabel: c.cyan(\"React\"),\n\t\tvalue: \"react\",\n\t},\n\t{\n\t\tlabel: c.red(\"Svelte\"),\n\t\tvalue: \"svelte\",\n\t},\n\t{\n\t\tlabel: c.magenta(\"Astro\"),\n\t\tvalue: \"astro\",\n\t},\n\t{\n\t\tlabel: c.cyan(\"Solid\"),\n\t\tvalue: \"solid\",\n\t},\n];\n\nexport const frameworks: FrameworkOptionUnion[] = frameworkOptions.map(({ value }) => value);\n\nexport const extraOptions: Array<PromItem<ExtraLibrariesOptionUnion>> = [\n\t{\n\t\tlabel: c.cyan(\"TailwindCSS (Better)\"),\n\t\tvalue: \"tailwindcss-better\",\n\t},\n];\n\nexport const extra = extraOptions.map(({ value }) => value);\n\nexport const dependenciesMap = defineEnumDeep({\n\tastro: [\"eslint-plugin-astro\", \"astro-eslint-parser\"],\n\treact: [\n\t\t\"@eslint-react/eslint-plugin\",\n\t\t\"eslint-plugin-react-hooks\",\n\t\t\"eslint-plugin-react-refresh\",\n\t\t\"eslint-plugin-react-you-might-not-need-an-effect\",\n\t],\n\tsolid: [\"eslint-plugin-solid\"],\n\tsvelte: [\"eslint-plugin-svelte\", \"svelte-eslint-parser\"],\n\t\"tailwindcss-better\": [\"eslint-plugin-better-tailwindcss\"],\n\tvue: [\"eslint-plugin-vue\", \"eslint-processor-vue-blocks\", \"vue-eslint-parser\"],\n}) satisfies Record<ExtraLibrariesOptionUnion | FrameworkOptionUnion, string[]>;\n","/* eslint-disable ts-eslint/restrict-template-expressions -- Ignore */\nimport { execSync } from \"node:child_process\";\n\nexport const isGitClean = (): boolean => {\n\ttry {\n\t\texecSync(\"git diff-index --quiet HEAD --\");\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nexport const getEslintConfigContent = (mainConfig: string, additionalConfigs?: string[]): string => {\n\tconst additionalConfigsStr = additionalConfigs?.map((config) => `,{\\n${config}\\n}`);\n\n\treturn `\nimport { zayne } from '@zayne-labs/eslint-config'\n\nexport default zayne({\n${mainConfig}\n}${additionalConfigsStr})\n`.trimStart();\n};\n","/* eslint-disable max-depth -- Allow */\nimport fs from \"node:fs\";\nimport fsp from \"node:fs/promises\";\nimport path from \"node:path\";\nimport process from \"node:process\";\nimport * as p from \"@clack/prompts\";\nimport c from \"ansis\";\n// @ts-expect-error missing types\nimport parse from \"parse-gitignore\";\nimport type { PromptResult } from \"../types\";\nimport { getEslintConfigContent } from \"../utils\";\n\nexport const updateEslintFiles = async (result: PromptResult): Promise<void> => {\n\tconst cwd = process.cwd();\n\tconst pathESLintIgnore = path.join(cwd, \".eslintignore\");\n\tconst pathPackageJSON = path.join(cwd, \"package.json\");\n\n\tconst pkgContent = await fsp.readFile(pathPackageJSON, \"utf8\");\n\tconst pkg = JSON.parse(pkgContent) as Record<string, unknown>;\n\n\tconst configFileName = pkg.type === \"module\" ? \"eslint.config.js\" : \"eslint.config.mjs\";\n\tconst pathFlatConfig = path.join(cwd, configFileName);\n\n\tconst eslintIgnores: string[] = [];\n\n\tif (fs.existsSync(pathESLintIgnore)) {\n\t\tp.log.step(c.cyan`Migrating existing .eslintignore`);\n\n\t\tconst content = await fsp.readFile(pathESLintIgnore, \"utf8\");\n\t\tconst parsed = parse(content);\n\t\tconst globs = parsed.globs();\n\n\t\tfor (const glob of globs) {\n\t\t\tif (glob.type === \"ignore\") {\n\t\t\t\teslintIgnores.push(...(glob.patterns as string[]));\n\t\t\t}\n\n\t\t\tif (glob.type === \"unignore\") {\n\t\t\t\teslintIgnores.push(...(glob.patterns.map((pattern: string) => `!${pattern}`) as string[]));\n\t\t\t}\n\t\t}\n\t}\n\n\tconst configLines: string[] = [];\n\n\tif (eslintIgnores.length > 0) {\n\t\tconfigLines.push(`ignores: ${JSON.stringify(eslintIgnores)},`);\n\t}\n\n\tif (result.extra.includes(\"tailwindcssBetter\")) {\n\t\tconfigLines.push(`tailwindcssBetter: true,`);\n\t}\n\n\tfor (const framework of result.frameworks) {\n\t\tconfigLines.push(`${framework}: true,`);\n\t}\n\n\tconst mainConfig = configLines.map((line) => ` ${line}`).join(\"\\n\");\n\n\tconst additionalConfig: string[] = [];\n\n\tconst eslintConfigContent: string = getEslintConfigContent(mainConfig, additionalConfig);\n\n\tawait fsp.writeFile(pathFlatConfig, eslintConfigContent);\n\n\tp.log.success(c.green`Created ${configFileName}`);\n};\n","import { defineEnum } from \"@zayne-labs/toolkit-type-helpers\";\n\nexport const versionsMap = defineEnum({\n\t\"@eslint-react/eslint-plugin\": \"^4.2.3\",\n\t\"astro-eslint-parser\": \"^1.4.0\",\n\teslint: \"^10.2.1\",\n\t\"eslint-plugin-astro\": \"^1.7.0\",\n\t\"eslint-plugin-better-tailwindcss\": \"^4.4.1\",\n\t\"eslint-plugin-react-hooks\": \"^7.1.1\",\n\t\"eslint-plugin-react-refresh\": \"^0.5.2\",\n\t\"eslint-plugin-react-you-might-not-need-an-effect\": \"^0.9.3\",\n\t\"eslint-plugin-solid\": \"^0.14.5\",\n\t\"eslint-plugin-svelte\": \"^3.17.1\",\n\t\"eslint-plugin-vue\": \"^10.9.0\",\n\t\"eslint-processor-vue-blocks\": \"^2.0.0\",\n\t\"svelte-eslint-parser\": \"^1.6.0\",\n\t\"vue-eslint-parser\": \"^10.4.0\",\n});\n","import fsp from \"node:fs/promises\";\nimport path from \"node:path\";\nimport process from \"node:process\";\nimport * as p from \"@clack/prompts\";\nimport c from \"ansis\";\nimport { version } from \"../../../package.json\";\nimport { dependenciesMap } from \"../constants\";\nimport { versionsMap } from \"../constants-generated\";\nimport type { PromptResult } from \"../types\";\n\nexport const updatePackageJson = async (result: PromptResult): Promise<void> => {\n\tconst cwd = process.cwd();\n\n\tconst pathPackageJSON = path.join(cwd, \"package.json\");\n\n\tp.log.step(c.cyan`Bumping @zayne-labs/eslint-config to v${version}`);\n\n\tconst pkgContent = await fsp.readFile(pathPackageJSON, \"utf8\");\n\tconst pkg = JSON.parse(pkgContent) as Record<string, Record<string, string | undefined> | undefined>;\n\n\tpkg.devDependencies ??= {};\n\tpkg.devDependencies[\"@zayne-labs/eslint-config\"] = `^${version}`;\n\tpkg.devDependencies.eslint ??= versionsMap.eslint;\n\n\tconst addedPackages: string[] = [];\n\n\tfor (const item of result.extra) {\n\t\tswitch (item) {\n\t\t\t// eslint-disable-next-line ts-eslint/no-unnecessary-condition -- Ignore\n\t\t\tcase \"tailwindcss-better\": {\n\t\t\t\tdependenciesMap[\"tailwindcss-better\"].forEach((depName) => {\n\t\t\t\t\tpkg.devDependencies\n\t\t\t\t\t\t&& (pkg.devDependencies[depName] = versionsMap[depName as keyof typeof versionsMap]);\n\n\t\t\t\t\taddedPackages.push(depName);\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tdefault: {\n\t\t\t\titem satisfies never;\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (const framework of result.frameworks) {\n\t\tconst dependencies = dependenciesMap[framework];\n\n\t\t// eslint-disable-next-line ts-eslint/no-unnecessary-condition -- Allow\n\t\tif (!dependencies) continue;\n\n\t\tdependencies.forEach((dependency) => {\n\t\t\tif (!pkg.devDependencies) return;\n\n\t\t\tpkg.devDependencies[dependency] = versionsMap[dependency as keyof typeof versionsMap];\n\t\t\taddedPackages.push(dependency);\n\t\t});\n\t}\n\n\tif (addedPackages.length > 0) {\n\t\tp.note(c.dim(addedPackages.join(\", \")), \"Added packages\");\n\t}\n\n\tawait fsp.writeFile(pathPackageJSON, JSON.stringify(pkg, null, 2));\n\n\tp.log.success(c.green`Changes wrote to package.json`);\n};\n","import fs from \"node:fs\";\nimport fsp from \"node:fs/promises\";\nimport path from \"node:path\";\nimport process from \"node:process\";\nimport * as p from \"@clack/prompts\";\nimport * as ansis from \"ansis\";\nimport { vscodeSettingsString } from \"../constants\";\nimport type { PromptResult } from \"../types\";\n\nexport const updateVscodeSettings = async (result: PromptResult): Promise<void> => {\n\tconst cwd = process.cwd();\n\n\tif (!result.updateVscodeSettings) return;\n\n\tconst dotVscodePath: string = path.join(cwd, \".vscode\");\n\tconst settingsPath: string = path.join(dotVscodePath, \"settings.json\");\n\n\tif (!fs.existsSync(dotVscodePath)) await fsp.mkdir(dotVscodePath, { recursive: true });\n\n\tif (!fs.existsSync(settingsPath)) {\n\t\tawait fsp.writeFile(settingsPath, `{${vscodeSettingsString}}\\n`, \"utf8\");\n\t\tp.log.success(ansis.green`Created .vscode/settings.json`);\n\t} else {\n\t\tlet settingsContent = await fsp.readFile(settingsPath, \"utf8\");\n\n\t\tsettingsContent = settingsContent.trim().replace(/\\s*\\}$/, \"\");\n\t\tsettingsContent += settingsContent.endsWith(\",\") || settingsContent.endsWith(\"{\") ? \"\" : \",\";\n\t\tsettingsContent += `${vscodeSettingsString}}\\n`;\n\n\t\tawait fsp.writeFile(settingsPath, settingsContent, \"utf8\");\n\t\tp.log.success(ansis.green`Updated .vscode/settings.json`);\n\t}\n};\n","/* eslint-disable perfectionist/sort-objects -- Ignore */\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport process from \"node:process\";\nimport * as p from \"@clack/prompts\";\nimport c from \"ansis\";\nimport { extra, extraOptions, frameworkOptions, frameworks } from \"./constants\";\nimport { updateEslintFiles } from \"./stages/update-eslint-files\";\nimport { updatePackageJson } from \"./stages/update-package-json\";\nimport { updateVscodeSettings } from \"./stages/update-vscode-settings\";\nimport type { ExtraLibrariesOptionUnion, FrameworkOptionUnion, PromptResult } from \"./types\";\nimport { isGitClean } from \"./utils\";\n\nexport type CliRunOptions = {\n\t/**\n\t * Use the extra utils: formatter / perfectionist / unocss\n\t */\n\textra?: string[];\n\t/**\n\t * Use the framework template for optimal customization: vue / react / svelte / astro\n\t */\n\tframeworks?: string[];\n\t/**\n\t * Skip prompts and use default values\n\t */\n\tyes?: boolean;\n};\n\nexport const runCli = async (options: CliRunOptions = {}): Promise<void> => {\n\tconst argSkipPrompt = Boolean(process.env.SKIP_PROMPT) || options.yes;\n\tconst argTemplate = options.frameworks?.map((m) => m.trim()).filter(Boolean);\n\tconst argExtra = options.extra?.map((m) => m.trim()).filter(Boolean);\n\n\tif (fs.existsSync(path.join(process.cwd(), \"eslint.config.js\"))) {\n\t\tp.log.warn(c.yellow`eslint.config.js already exists, migration wizard exited.`);\n\n\t\treturn process.exit(1);\n\t}\n\n\t// Set default value for promptResult if `argSkipPrompt` is enabled\n\tlet result: PromptResult = {\n\t\textra: (argExtra ?? []) as ExtraLibrariesOptionUnion[],\n\t\tframeworks: (argTemplate ?? []) as FrameworkOptionUnion[],\n\t\tuncommittedConfirmed: false,\n\t\tupdateVscodeSettings: true,\n\t};\n\n\tif (!argSkipPrompt) {\n\t\tresult = (await p.group(\n\t\t\t{\n\t\t\t\tuncommittedConfirmed: () => {\n\t\t\t\t\tif (isGitClean()) {\n\t\t\t\t\t\treturn Promise.resolve(true);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn p.confirm({\n\t\t\t\t\t\tinitialValue: false,\n\t\t\t\t\t\tmessage:\n\t\t\t\t\t\t\t\"There are uncommitted changes in the current repository, are you sure to continue?\",\n\t\t\t\t\t});\n\t\t\t\t},\n\n\t\t\t\tframeworks: ({ results }) => {\n\t\t\t\t\tconst isArgTemplateValid =\n\t\t\t\t\t\t(argTemplate?.length ?? 0) > 0\n\t\t\t\t\t\t&& (argTemplate ?? []).filter((element) => !frameworks.includes(element)).length === 0;\n\n\t\t\t\t\tif (!results.uncommittedConfirmed || isArgTemplateValid) return;\n\n\t\t\t\t\tconst message =\n\t\t\t\t\t\targTemplate ?\n\t\t\t\t\t\t\t`\"${JSON.stringify(argTemplate)}\" isn't a valid template. Please choose from below: `\n\t\t\t\t\t\t:\t\"Select a framework:\";\n\n\t\t\t\t\treturn p.multiselect<FrameworkOptionUnion>({\n\t\t\t\t\t\tmessage: c.reset(message),\n\t\t\t\t\t\toptions: frameworkOptions,\n\t\t\t\t\t\trequired: false,\n\t\t\t\t\t});\n\t\t\t\t},\n\n\t\t\t\textra: ({ results }) => {\n\t\t\t\t\tconst isArgExtraValid =\n\t\t\t\t\t\t(argExtra?.length ?? 0) > 0\n\t\t\t\t\t\t&& (argExtra ?? []).filter((element) => !extra.includes(element)).length === 0;\n\n\t\t\t\t\tif (!results.uncommittedConfirmed || isArgExtraValid) return;\n\n\t\t\t\t\tconst message =\n\t\t\t\t\t\targExtra ?\n\t\t\t\t\t\t\t`\"${JSON.stringify(argExtra)}\" isn't a valid extra util. Please choose from below: `\n\t\t\t\t\t\t:\t\"Select an extra util:\";\n\n\t\t\t\t\treturn p.multiselect<ExtraLibrariesOptionUnion>({\n\t\t\t\t\t\tmessage: c.reset(message),\n\t\t\t\t\t\toptions: extraOptions,\n\t\t\t\t\t\trequired: false,\n\t\t\t\t\t});\n\t\t\t\t},\n\n\t\t\t\tupdateVscodeSettings: ({ results }) => {\n\t\t\t\t\tif (!results.uncommittedConfirmed) return;\n\n\t\t\t\t\treturn p.confirm({\n\t\t\t\t\t\tinitialValue: true,\n\t\t\t\t\t\tmessage: \"Update .vscode/settings.json for better VS Code experience?\",\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tonCancel: () => {\n\t\t\t\t\tp.cancel(\"Operation cancelled.\");\n\t\t\t\t\tprocess.exit(0);\n\t\t\t\t},\n\t\t\t}\n\t\t)) as PromptResult;\n\n\t\tif (!result.uncommittedConfirmed) {\n\t\t\treturn process.exit(1);\n\t\t}\n\t}\n\n\tawait updatePackageJson(result);\n\tawait updateEslintFiles(result);\n\tawait updateVscodeSettings(result);\n\n\tp.log.success(c.green`Setup completed`);\n\n\tp.outro(\n\t\t`Now you can update the dependencies by running ${c.blue(\"pnpm install\")} and also ${c.blue(\"eslint --fix\")}\\n`\n\t);\n};\n","import process from \"node:process\";\nimport * as p from \"@clack/prompts\";\nimport c from \"ansis\";\nimport { cac } from \"cac\";\nimport { version } from \"../../package.json\";\nimport { runCli, type CliRunOptions } from \"./run\";\n\nconst header = () => {\n\tp.intro(`${c.green`@zayne-labs/eslint-config `}${c.dim`v${version}`}`);\n};\n\nconst cli = cac(\"@zayne-labs/eslint-config\");\n\ncli.command(\"\", \"Run the initialization or migration\")\n\t.option(\"--yes, -y\", \"Skip prompts and use default values\", { default: false })\n\t.option(\n\t\t\"--template, -t <template>\",\n\t\t\"Use the framework template for optimal customization: vue / react / svelte / astro\",\n\t\t{ type: [] }\n\t)\n\t.option(\"--extra, -e <extra>\", \"Use the extra utils: tailwindcss\", { type: [] })\n\t.action(async (options: CliRunOptions) => {\n\t\theader();\n\t\ttry {\n\t\t\tawait runCli(options);\n\t\t} catch (error) {\n\t\t\tp.log.error(c.inverse.red(\" Failed to migrate \"));\n\t\t\tp.log.error(c.red`✘ ${String(error)}`);\n\t\t\tprocess.exit(1);\n\t\t}\n\t});\n\ncli.help();\ncli.version(version);\ncli.parse();\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../package.json","../../src/cli/constants.ts","../../src/cli/utils.ts","../../src/cli/stages/update-eslint-files.ts","../../src/cli/constants-generated.ts","../../src/cli/stages/update-package-json.ts","../../src/cli/stages/update-vscode-settings.ts","../../src/cli/run.ts","../../src/cli/index.ts"],"sourcesContent":["","import { defineEnumDeep } from \"@zayne-labs/toolkit-type-helpers\";\nimport c from \"ansis\";\nimport type { ExtraLibrariesOptionUnion, FrameworkOptionUnion, PromItem } from \"./types\";\n\nexport const vscodeSettingsString = `\n // Auto fix\n // \"editor.codeActionsOnSave\": {\n // \"source.fixAll.eslint\": \"explicit\",\n // },\n\n // Enable eslint for all supported languages\n \"eslint.validate\": [\n \"javascript\",\n \"javascriptreact\",\n \"typescript\",\n \"typescriptreact\",\n \"vue\",\n \"html\",\n \"markdown\",\n \"json\",\n \"json5\",\n \"jsonc\",\n \"yaml\",\n \"toml\",\n \"xml\",\n \"gql\",\n \"graphql\",\n \"astro\",\n \"svelte\",\n \"css\",\n \"less\",\n \"scss\",\n \"postcss\"\n ]\n`;\n\nexport const frameworkOptions: Array<PromItem<FrameworkOptionUnion>> = [\n\t{\n\t\tlabel: c.green(\"Vue\"),\n\t\tvalue: \"vue\",\n\t},\n\t{\n\t\tlabel: c.cyan(\"React\"),\n\t\tvalue: \"react\",\n\t},\n\t{\n\t\tlabel: c.red(\"Svelte\"),\n\t\tvalue: \"svelte\",\n\t},\n\t{\n\t\tlabel: c.magenta(\"Astro\"),\n\t\tvalue: \"astro\",\n\t},\n\t{\n\t\tlabel: c.cyan(\"Solid\"),\n\t\tvalue: \"solid\",\n\t},\n];\n\nexport const frameworks: FrameworkOptionUnion[] = frameworkOptions.map(({ value }) => value);\n\nexport const extraOptions: Array<PromItem<ExtraLibrariesOptionUnion>> = [\n\t{\n\t\tlabel: c.cyan(\"TailwindCSS (Better)\"),\n\t\tvalue: \"tailwindcss-better\",\n\t},\n];\n\nexport const extra = extraOptions.map(({ value }) => value);\n\nexport const dependenciesMap = defineEnumDeep({\n\tastro: [\"eslint-plugin-astro\", \"astro-eslint-parser\"],\n\treact: [\n\t\t\"@eslint-react/eslint-plugin\",\n\t\t\"eslint-plugin-react-hooks\",\n\t\t\"eslint-plugin-react-refresh\",\n\t\t\"eslint-plugin-react-you-might-not-need-an-effect\",\n\t],\n\tsolid: [\"eslint-plugin-solid\"],\n\tsvelte: [\"eslint-plugin-svelte\", \"svelte-eslint-parser\"],\n\t\"tailwindcss-better\": [\"eslint-plugin-better-tailwindcss\"],\n\tvue: [\"eslint-plugin-vue\", \"eslint-processor-vue-blocks\", \"vue-eslint-parser\"],\n}) satisfies Record<ExtraLibrariesOptionUnion | FrameworkOptionUnion, string[]>;\n","/* eslint-disable ts-eslint/restrict-template-expressions -- Ignore */\nimport { execSync } from \"node:child_process\";\n\nexport const isGitClean = (): boolean => {\n\ttry {\n\t\texecSync(\"git diff-index --quiet HEAD --\");\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nexport const getEslintConfigContent = (mainConfig: string, additionalConfigs?: string[]): string => {\n\tconst additionalConfigsStr = additionalConfigs?.map((config) => `,{\\n${config}\\n}`);\n\n\treturn `\nimport { zayne } from '@zayne-labs/eslint-config'\n\nexport default zayne({\n${mainConfig}\n}${additionalConfigsStr})\n`.trimStart();\n};\n","/* eslint-disable max-depth -- Allow */\nimport fs from \"node:fs\";\nimport fsp from \"node:fs/promises\";\nimport path from \"node:path\";\nimport process from \"node:process\";\nimport * as p from \"@clack/prompts\";\nimport c from \"ansis\";\n// @ts-expect-error missing types\nimport parse from \"parse-gitignore\";\nimport type { PromptResult } from \"../types\";\nimport { getEslintConfigContent } from \"../utils\";\n\nexport const updateEslintFiles = async (result: PromptResult): Promise<void> => {\n\tconst cwd = process.cwd();\n\tconst pathESLintIgnore = path.join(cwd, \".eslintignore\");\n\tconst pathPackageJSON = path.join(cwd, \"package.json\");\n\n\tconst pkgContent = await fsp.readFile(pathPackageJSON, \"utf8\");\n\tconst pkg = JSON.parse(pkgContent) as Record<string, unknown>;\n\n\tconst configFileName = pkg.type === \"module\" ? \"eslint.config.js\" : \"eslint.config.mjs\";\n\tconst pathFlatConfig = path.join(cwd, configFileName);\n\n\tconst eslintIgnores: string[] = [];\n\n\tif (fs.existsSync(pathESLintIgnore)) {\n\t\tp.log.step(c.cyan`Migrating existing .eslintignore`);\n\n\t\tconst content = await fsp.readFile(pathESLintIgnore, \"utf8\");\n\t\tconst parsed = parse(content);\n\t\tconst globs = parsed.globs();\n\n\t\tfor (const glob of globs) {\n\t\t\tif (glob.type === \"ignore\") {\n\t\t\t\teslintIgnores.push(...(glob.patterns as string[]));\n\t\t\t}\n\n\t\t\tif (glob.type === \"unignore\") {\n\t\t\t\teslintIgnores.push(...(glob.patterns.map((pattern: string) => `!${pattern}`) as string[]));\n\t\t\t}\n\t\t}\n\t}\n\n\tconst configLines: string[] = [];\n\n\tif (eslintIgnores.length > 0) {\n\t\tconfigLines.push(`ignores: ${JSON.stringify(eslintIgnores)},`);\n\t}\n\n\tif (result.extra.includes(\"tailwindcssBetter\")) {\n\t\tconfigLines.push(`tailwindcssBetter: true,`);\n\t}\n\n\tfor (const framework of result.frameworks) {\n\t\tconfigLines.push(`${framework}: true,`);\n\t}\n\n\tconst mainConfig = configLines.map((line) => ` ${line}`).join(\"\\n\");\n\n\tconst additionalConfig: string[] = [];\n\n\tconst eslintConfigContent: string = getEslintConfigContent(mainConfig, additionalConfig);\n\n\tawait fsp.writeFile(pathFlatConfig, eslintConfigContent);\n\n\tp.log.success(c.green`Created ${configFileName}`);\n};\n","import { defineEnum } from \"@zayne-labs/toolkit-type-helpers\";\n\nexport const versionsMap = defineEnum({\n\t\"@eslint-react/eslint-plugin\": \"^5.6.6\",\n\t\"astro-eslint-parser\": \"^1.4.0\",\n\teslint: \"^10.2.1\",\n\t\"eslint-plugin-astro\": \"^1.7.0\",\n\t\"eslint-plugin-better-tailwindcss\": \"^4.5.0\",\n\t\"eslint-plugin-react-hooks\": \"^7.1.1\",\n\t\"eslint-plugin-react-refresh\": \"^0.5.2\",\n\t\"eslint-plugin-react-you-might-not-need-an-effect\": \"^0.9.3\",\n\t\"eslint-plugin-solid\": \"^0.14.5\",\n\t\"eslint-plugin-svelte\": \"^3.17.1\",\n\t\"eslint-plugin-vue\": \"^10.9.0\",\n\t\"eslint-processor-vue-blocks\": \"^2.0.0\",\n\t\"svelte-eslint-parser\": \"^1.6.0\",\n\t\"vue-eslint-parser\": \"^10.4.0\",\n});\n","import fsp from \"node:fs/promises\";\nimport path from \"node:path\";\nimport process from \"node:process\";\nimport * as p from \"@clack/prompts\";\nimport c from \"ansis\";\nimport { version } from \"../../../package.json\";\nimport { dependenciesMap } from \"../constants\";\nimport { versionsMap } from \"../constants-generated\";\nimport type { PromptResult } from \"../types\";\n\nexport const updatePackageJson = async (result: PromptResult): Promise<void> => {\n\tconst cwd = process.cwd();\n\n\tconst pathPackageJSON = path.join(cwd, \"package.json\");\n\n\tp.log.step(c.cyan`Bumping @zayne-labs/eslint-config to v${version}`);\n\n\tconst pkgContent = await fsp.readFile(pathPackageJSON, \"utf8\");\n\tconst pkg = JSON.parse(pkgContent) as Record<string, Record<string, string | undefined> | undefined>;\n\n\tpkg.devDependencies ??= {};\n\tpkg.devDependencies[\"@zayne-labs/eslint-config\"] = `^${version}`;\n\tpkg.devDependencies.eslint ??= versionsMap.eslint;\n\n\tconst addedPackages: string[] = [];\n\n\tfor (const item of result.extra) {\n\t\tswitch (item) {\n\t\t\t// eslint-disable-next-line ts-eslint/no-unnecessary-condition -- Ignore\n\t\t\tcase \"tailwindcss-better\": {\n\t\t\t\tdependenciesMap[\"tailwindcss-better\"].forEach((depName) => {\n\t\t\t\t\tpkg.devDependencies\n\t\t\t\t\t\t&& (pkg.devDependencies[depName] = versionsMap[depName as keyof typeof versionsMap]);\n\n\t\t\t\t\taddedPackages.push(depName);\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tdefault: {\n\t\t\t\titem satisfies never;\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (const framework of result.frameworks) {\n\t\tconst dependencies = dependenciesMap[framework];\n\n\t\t// eslint-disable-next-line ts-eslint/no-unnecessary-condition -- Allow\n\t\tif (!dependencies) continue;\n\n\t\tdependencies.forEach((dependency) => {\n\t\t\tif (!pkg.devDependencies) return;\n\n\t\t\tpkg.devDependencies[dependency] = versionsMap[dependency as keyof typeof versionsMap];\n\t\t\taddedPackages.push(dependency);\n\t\t});\n\t}\n\n\tif (addedPackages.length > 0) {\n\t\tp.note(c.dim(addedPackages.join(\", \")), \"Added packages\");\n\t}\n\n\tawait fsp.writeFile(pathPackageJSON, JSON.stringify(pkg, null, 2));\n\n\tp.log.success(c.green`Changes wrote to package.json`);\n};\n","import fs from \"node:fs\";\nimport fsp from \"node:fs/promises\";\nimport path from \"node:path\";\nimport process from \"node:process\";\nimport * as p from \"@clack/prompts\";\nimport * as ansis from \"ansis\";\nimport { vscodeSettingsString } from \"../constants\";\nimport type { PromptResult } from \"../types\";\n\nexport const updateVscodeSettings = async (result: PromptResult): Promise<void> => {\n\tconst cwd = process.cwd();\n\n\tif (!result.updateVscodeSettings) return;\n\n\tconst dotVscodePath: string = path.join(cwd, \".vscode\");\n\tconst settingsPath: string = path.join(dotVscodePath, \"settings.json\");\n\n\tif (!fs.existsSync(dotVscodePath)) await fsp.mkdir(dotVscodePath, { recursive: true });\n\n\tif (!fs.existsSync(settingsPath)) {\n\t\tawait fsp.writeFile(settingsPath, `{${vscodeSettingsString}}\\n`, \"utf8\");\n\t\tp.log.success(ansis.green`Created .vscode/settings.json`);\n\t} else {\n\t\tlet settingsContent = await fsp.readFile(settingsPath, \"utf8\");\n\n\t\tsettingsContent = settingsContent.trim().replace(/\\s*\\}$/, \"\");\n\t\tsettingsContent += settingsContent.endsWith(\",\") || settingsContent.endsWith(\"{\") ? \"\" : \",\";\n\t\tsettingsContent += `${vscodeSettingsString}}\\n`;\n\n\t\tawait fsp.writeFile(settingsPath, settingsContent, \"utf8\");\n\t\tp.log.success(ansis.green`Updated .vscode/settings.json`);\n\t}\n};\n","/* eslint-disable perfectionist/sort-objects -- Ignore */\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport process from \"node:process\";\nimport * as p from \"@clack/prompts\";\nimport c from \"ansis\";\nimport { extra, extraOptions, frameworkOptions, frameworks } from \"./constants\";\nimport { updateEslintFiles } from \"./stages/update-eslint-files\";\nimport { updatePackageJson } from \"./stages/update-package-json\";\nimport { updateVscodeSettings } from \"./stages/update-vscode-settings\";\nimport type { ExtraLibrariesOptionUnion, FrameworkOptionUnion, PromptResult } from \"./types\";\nimport { isGitClean } from \"./utils\";\n\nexport type CliRunOptions = {\n\t/**\n\t * Use the extra utils: formatter / perfectionist / unocss\n\t */\n\textra?: string[];\n\t/**\n\t * Use the framework template for optimal customization: vue / react / svelte / astro\n\t */\n\tframeworks?: string[];\n\t/**\n\t * Skip prompts and use default values\n\t */\n\tyes?: boolean;\n};\n\nexport const runCli = async (options: CliRunOptions = {}): Promise<void> => {\n\tconst argSkipPrompt = Boolean(process.env.SKIP_PROMPT) || options.yes;\n\tconst argTemplate = options.frameworks?.map((m) => m.trim()).filter(Boolean);\n\tconst argExtra = options.extra?.map((m) => m.trim()).filter(Boolean);\n\n\tif (fs.existsSync(path.join(process.cwd(), \"eslint.config.js\"))) {\n\t\tp.log.warn(c.yellow`eslint.config.js already exists, migration wizard exited.`);\n\n\t\treturn process.exit(1);\n\t}\n\n\t// Set default value for promptResult if `argSkipPrompt` is enabled\n\tlet result: PromptResult = {\n\t\textra: (argExtra ?? []) as ExtraLibrariesOptionUnion[],\n\t\tframeworks: (argTemplate ?? []) as FrameworkOptionUnion[],\n\t\tuncommittedConfirmed: false,\n\t\tupdateVscodeSettings: true,\n\t};\n\n\tif (!argSkipPrompt) {\n\t\tresult = (await p.group(\n\t\t\t{\n\t\t\t\tuncommittedConfirmed: () => {\n\t\t\t\t\tif (isGitClean()) {\n\t\t\t\t\t\treturn Promise.resolve(true);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn p.confirm({\n\t\t\t\t\t\tinitialValue: false,\n\t\t\t\t\t\tmessage:\n\t\t\t\t\t\t\t\"There are uncommitted changes in the current repository, are you sure to continue?\",\n\t\t\t\t\t});\n\t\t\t\t},\n\n\t\t\t\tframeworks: ({ results }) => {\n\t\t\t\t\tconst isArgTemplateValid =\n\t\t\t\t\t\t(argTemplate?.length ?? 0) > 0\n\t\t\t\t\t\t&& (argTemplate ?? []).filter((element) => !frameworks.includes(element)).length === 0;\n\n\t\t\t\t\tif (!results.uncommittedConfirmed || isArgTemplateValid) return;\n\n\t\t\t\t\tconst message =\n\t\t\t\t\t\targTemplate ?\n\t\t\t\t\t\t\t`\"${JSON.stringify(argTemplate)}\" isn't a valid template. Please choose from below: `\n\t\t\t\t\t\t:\t\"Select a framework:\";\n\n\t\t\t\t\treturn p.multiselect<FrameworkOptionUnion>({\n\t\t\t\t\t\tmessage: c.reset(message),\n\t\t\t\t\t\toptions: frameworkOptions,\n\t\t\t\t\t\trequired: false,\n\t\t\t\t\t});\n\t\t\t\t},\n\n\t\t\t\textra: ({ results }) => {\n\t\t\t\t\tconst isArgExtraValid =\n\t\t\t\t\t\t(argExtra?.length ?? 0) > 0\n\t\t\t\t\t\t&& (argExtra ?? []).filter((element) => !extra.includes(element)).length === 0;\n\n\t\t\t\t\tif (!results.uncommittedConfirmed || isArgExtraValid) return;\n\n\t\t\t\t\tconst message =\n\t\t\t\t\t\targExtra ?\n\t\t\t\t\t\t\t`\"${JSON.stringify(argExtra)}\" isn't a valid extra util. Please choose from below: `\n\t\t\t\t\t\t:\t\"Select an extra util:\";\n\n\t\t\t\t\treturn p.multiselect<ExtraLibrariesOptionUnion>({\n\t\t\t\t\t\tmessage: c.reset(message),\n\t\t\t\t\t\toptions: extraOptions,\n\t\t\t\t\t\trequired: false,\n\t\t\t\t\t});\n\t\t\t\t},\n\n\t\t\t\tupdateVscodeSettings: ({ results }) => {\n\t\t\t\t\tif (!results.uncommittedConfirmed) return;\n\n\t\t\t\t\treturn p.confirm({\n\t\t\t\t\t\tinitialValue: true,\n\t\t\t\t\t\tmessage: \"Update .vscode/settings.json for better VS Code experience?\",\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tonCancel: () => {\n\t\t\t\t\tp.cancel(\"Operation cancelled.\");\n\t\t\t\t\tprocess.exit(0);\n\t\t\t\t},\n\t\t\t}\n\t\t)) as PromptResult;\n\n\t\tif (!result.uncommittedConfirmed) {\n\t\t\treturn process.exit(1);\n\t\t}\n\t}\n\n\tawait updatePackageJson(result);\n\tawait updateEslintFiles(result);\n\tawait updateVscodeSettings(result);\n\n\tp.log.success(c.green`Setup completed`);\n\n\tp.outro(\n\t\t`Now you can update the dependencies by running ${c.blue(\"pnpm install\")} and also ${c.blue(\"eslint --fix\")}\\n`\n\t);\n};\n","import process from \"node:process\";\nimport * as p from \"@clack/prompts\";\nimport c from \"ansis\";\nimport { cac } from \"cac\";\nimport { version } from \"../../package.json\";\nimport { runCli, type CliRunOptions } from \"./run\";\n\nconst header = () => {\n\tp.intro(`${c.green`@zayne-labs/eslint-config `}${c.dim`v${version}`}`);\n};\n\nconst cli = cac(\"@zayne-labs/eslint-config\");\n\ncli.command(\"\", \"Run the initialization or migration\")\n\t.option(\"--yes, -y\", \"Skip prompts and use default values\", { default: false })\n\t.option(\n\t\t\"--template, -t <template>\",\n\t\t\"Use the framework template for optimal customization: vue / react / svelte / astro\",\n\t\t{ type: [] }\n\t)\n\t.option(\"--extra, -e <extra>\", \"Use the extra utils: tailwindcss\", { type: [] })\n\t.action(async (options: CliRunOptions) => {\n\t\theader();\n\t\ttry {\n\t\t\tawait runCli(options);\n\t\t} catch (error) {\n\t\t\tp.log.error(c.inverse.red(\" Failed to migrate \"));\n\t\t\tp.log.error(c.red`✘ ${String(error)}`);\n\t\t\tprocess.exit(1);\n\t\t}\n\t});\n\ncli.help();\ncli.version(version);\ncli.parse();\n"],"mappings":"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"}
|
|
@@ -21,17 +21,17 @@ declare const getDefaultTailwindcssBetterSettings: () => {
|
|
|
21
21
|
}];
|
|
22
22
|
name: "^classNames$";
|
|
23
23
|
}, {
|
|
24
|
-
kind: "
|
|
24
|
+
kind: "tag";
|
|
25
25
|
match: [{
|
|
26
26
|
type: "strings";
|
|
27
27
|
}];
|
|
28
|
-
name: "
|
|
28
|
+
name: "^tw$";
|
|
29
29
|
}, {
|
|
30
30
|
kind: "callee";
|
|
31
31
|
match: [{
|
|
32
32
|
type: "strings";
|
|
33
33
|
}];
|
|
34
|
-
name: "
|
|
34
|
+
name: "^cn(Merge|Join)$";
|
|
35
35
|
}, {
|
|
36
36
|
kind: "callee";
|
|
37
37
|
match: [{
|
|
@@ -53,14 +53,14 @@ const getDefaultTailwindcssBetterSettings = () => {
|
|
|
53
53
|
name: "^classNames$"
|
|
54
54
|
},
|
|
55
55
|
{
|
|
56
|
-
kind: "
|
|
56
|
+
kind: "tag",
|
|
57
57
|
match: [{ type: "strings" }],
|
|
58
|
-
name: "
|
|
58
|
+
name: "^tw$"
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
61
|
kind: "callee",
|
|
62
62
|
match: [{ type: "strings" }],
|
|
63
|
-
name: "
|
|
63
|
+
name: "^cn(Merge|Join)$"
|
|
64
64
|
},
|
|
65
65
|
{
|
|
66
66
|
kind: "callee",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","names":[],"sources":["../../src/constants/defaults.ts"],"sourcesContent":["import { defineEnum, defineEnumDeep } from \"@zayne-labs/toolkit-type-helpers\";\nimport type { OptionsTailwindCSSBetter } from \"@/types\";\n\nexport const getDefaultPluginRenameMap = () => {\n\treturn defineEnum({\n\t\t\"@eslint-react\": \"react\",\n\n\t\t\"@next/next\": \"nextjs\",\n\n\t\t\"@stylistic\": \"stylistic\",\n\n\t\t\"@tanstack/query\": \"tanstack-query\",\n\t\t\"@tanstack/router\": \"tanstack-router\",\n\n\t\t\"@typescript-eslint\": \"ts-eslint\",\n\n\t\t\"better-tailwindcss\": \"tailwindcss-better\",\n\n\t\t\"import-x\": \"import\",\n\n\t\tn: \"node\",\n\t});\n};\n\nexport const getDefaultAllowedNextJsExportNames = () => {\n\treturn defineEnum([\n\t\t\"dynamic\",\n\t\t\"dynamicParams\",\n\t\t\"revalidate\",\n\t\t\"fetchCache\",\n\t\t\"runtime\",\n\t\t\"preferredRegion\",\n\t\t\"maxDuration\",\n\t\t\"config\",\n\t\t\"generateStaticParams\",\n\t\t\"metadata\",\n\t\t\"generateMetadata\",\n\t\t\"viewport\",\n\t\t\"generateViewport\",\n\t]);\n};\n\nexport const getDefaultAllowedReactRouterExportNames = () => {\n\treturn defineEnum([\n\t\t\"meta\",\n\t\t\"links\",\n\t\t\"headers\",\n\t\t\"loader\",\n\t\t\"action\",\n\t\t\"clientLoader\",\n\t\t\"clientAction\",\n\t\t\"handle\",\n\t\t\"shouldRevalidate\",\n\t]);\n};\n\nexport const getDefaultTailwindcssBetterSettings = () => {\n\treturn defineEnumDeep({\n\t\tentryPoint: `./tailwind.css`, // This will be relative to the process.cwd() since cwd option is undefined by default\n\t\tselectors: [\n\t\t\t{\n\t\t\t\tkind: \"attribute\",\n\t\t\t\tmatch: [{ type: \"objectValues\" }],\n\t\t\t\tname: \"^classNames$\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tkind: \"
|
|
1
|
+
{"version":3,"file":"defaults.js","names":[],"sources":["../../src/constants/defaults.ts"],"sourcesContent":["import { defineEnum, defineEnumDeep } from \"@zayne-labs/toolkit-type-helpers\";\nimport type { OptionsTailwindCSSBetter } from \"@/types\";\n\nexport const getDefaultPluginRenameMap = () => {\n\treturn defineEnum({\n\t\t\"@eslint-react\": \"react\",\n\n\t\t\"@next/next\": \"nextjs\",\n\n\t\t\"@stylistic\": \"stylistic\",\n\n\t\t\"@tanstack/query\": \"tanstack-query\",\n\t\t\"@tanstack/router\": \"tanstack-router\",\n\n\t\t\"@typescript-eslint\": \"ts-eslint\",\n\n\t\t\"better-tailwindcss\": \"tailwindcss-better\",\n\n\t\t\"import-x\": \"import\",\n\n\t\tn: \"node\",\n\t});\n};\n\nexport const getDefaultAllowedNextJsExportNames = () => {\n\treturn defineEnum([\n\t\t\"dynamic\",\n\t\t\"dynamicParams\",\n\t\t\"revalidate\",\n\t\t\"fetchCache\",\n\t\t\"runtime\",\n\t\t\"preferredRegion\",\n\t\t\"maxDuration\",\n\t\t\"config\",\n\t\t\"generateStaticParams\",\n\t\t\"metadata\",\n\t\t\"generateMetadata\",\n\t\t\"viewport\",\n\t\t\"generateViewport\",\n\t]);\n};\n\nexport const getDefaultAllowedReactRouterExportNames = () => {\n\treturn defineEnum([\n\t\t\"meta\",\n\t\t\"links\",\n\t\t\"headers\",\n\t\t\"loader\",\n\t\t\"action\",\n\t\t\"clientLoader\",\n\t\t\"clientAction\",\n\t\t\"handle\",\n\t\t\"shouldRevalidate\",\n\t]);\n};\n\nexport const getDefaultTailwindcssBetterSettings = () => {\n\treturn defineEnumDeep({\n\t\tentryPoint: `./tailwind.css`, // This will be relative to the process.cwd() since cwd option is undefined by default\n\t\tselectors: [\n\t\t\t{\n\t\t\t\tkind: \"attribute\",\n\t\t\t\tmatch: [{ type: \"objectValues\" }],\n\t\t\t\tname: \"^classNames$\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tkind: \"tag\",\n\t\t\t\tmatch: [{ type: \"strings\" }],\n\t\t\t\tname: \"^tw$\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tkind: \"callee\",\n\t\t\t\tmatch: [{ type: \"strings\" }],\n\t\t\t\tname: \"^cn(Merge|Join)$\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tkind: \"callee\",\n\t\t\t\tmatch: [{ path: \"^(?:class|className)$\", type: \"objectValues\" }],\n\t\t\t\tname: \"^get[A-Z][a-zA-Z0-9]*Props$\",\n\t\t\t},\n\t\t],\n\t} as const satisfies OptionsTailwindCSSBetter[\"settings\"]);\n};\n\nexport const getDefaultAllowedDependencies = () => {\n\treturn defineEnum([\"lint-staged\"]);\n};\n"],"mappings":";;AAGA,MAAa,kCAAkC;AAC9C,QAAO,WAAW;EACjB,iBAAiB;EAEjB,cAAc;EAEd,cAAc;EAEd,mBAAmB;EACnB,oBAAoB;EAEpB,sBAAsB;EAEtB,sBAAsB;EAEtB,YAAY;EAEZ,GAAG;EACH,CAAC;;AAGH,MAAa,2CAA2C;AACvD,QAAO,WAAW;EACjB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,CAAC;;AAGH,MAAa,gDAAgD;AAC5D,QAAO,WAAW;EACjB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,CAAC;;AAGH,MAAa,4CAA4C;AACxD,QAAO,eAAe;EACrB,YAAY;EACZ,WAAW;GACV;IACC,MAAM;IACN,OAAO,CAAC,EAAE,MAAM,gBAAgB,CAAC;IACjC,MAAM;IACN;GACD;IACC,MAAM;IACN,OAAO,CAAC,EAAE,MAAM,WAAW,CAAC;IAC5B,MAAM;IACN;GACD;IACC,MAAM;IACN,OAAO,CAAC,EAAE,MAAM,WAAW,CAAC;IAC5B,MAAM;IACN;GACD;IACC,MAAM;IACN,OAAO,CAAC;KAAE,MAAM;KAAyB,MAAM;KAAgB,CAAC;IAChE,MAAM;IACN;GACD;EACD,CAAyD;;AAG3D,MAAa,sCAAsC;AAClD,QAAO,WAAW,CAAC,cAAc,CAAC"}
|
|
@@ -3559,11 +3559,6 @@ interface RuleOptions {
|
|
|
3559
3559
|
* @see https://react.dev/learn/you-might-not-need-an-effect#resetting-all-state-when-a-prop-changes
|
|
3560
3560
|
*/
|
|
3561
3561
|
'react-you-might-not-need-an-effect/no-reset-all-state-on-prop-change'?: Linter.RuleEntry<[]>;
|
|
3562
|
-
/**
|
|
3563
|
-
* Disallows higher order functions that define components or hooks inside them.
|
|
3564
|
-
* @see https://eslint-react.xyz/docs/rules/component-hook-factories
|
|
3565
|
-
*/
|
|
3566
|
-
'react/component-hook-factories'?: Linter.RuleEntry<[]>;
|
|
3567
3562
|
/**
|
|
3568
3563
|
* Disallows DOM elements from using 'dangerouslySetInnerHTML'.
|
|
3569
3564
|
* @see https://eslint-react.xyz/docs/rules/dom-no-dangerously-set-innerhtml
|
|
@@ -3644,11 +3639,6 @@ interface RuleOptions {
|
|
|
3644
3639
|
* @see https://eslint-react.xyz/docs/rules/dom-no-void-elements-with-children
|
|
3645
3640
|
*/
|
|
3646
3641
|
'react/dom-no-void-elements-with-children'?: Linter.RuleEntry<[]>;
|
|
3647
|
-
/**
|
|
3648
|
-
* Enforces importing React DOM via a namespace import.
|
|
3649
|
-
* @see https://eslint-react.xyz/docs/rules/dom-prefer-namespace-import
|
|
3650
|
-
*/
|
|
3651
|
-
'react/dom-prefer-namespace-import'?: Linter.RuleEntry<[]>;
|
|
3652
3642
|
/**
|
|
3653
3643
|
* Validates usage of Error Boundaries instead of try/catch for errors in child components.
|
|
3654
3644
|
* @see https://eslint-react.xyz/docs/rules/error-boundaries
|
|
@@ -3659,6 +3649,11 @@ interface RuleOptions {
|
|
|
3659
3649
|
* @see https://github.com/facebook/react/issues/14920
|
|
3660
3650
|
*/
|
|
3661
3651
|
'react/exhaustive-deps'?: Linter.RuleEntry<ReactExhaustiveDeps>;
|
|
3652
|
+
/**
|
|
3653
|
+
* Validates against assignment/mutation of globals during render, part of ensuring that side effects must run outside of render.
|
|
3654
|
+
* @see https://eslint-react.xyz/docs/rules/globals
|
|
3655
|
+
*/
|
|
3656
|
+
'react/globals'?: Linter.RuleEntry<[]>;
|
|
3662
3657
|
/**
|
|
3663
3658
|
* Validates against mutating props, state, and other values that are immutable.
|
|
3664
3659
|
* @see https://eslint-react.xyz/docs/rules/immutability
|
|
@@ -3862,11 +3857,6 @@ interface RuleOptions {
|
|
|
3862
3857
|
* @see https://eslint-react.xyz/docs/rules/no-nested-lazy-component-declarations
|
|
3863
3858
|
*/
|
|
3864
3859
|
'react/no-nested-lazy-component-declarations'?: Linter.RuleEntry<[]>;
|
|
3865
|
-
/**
|
|
3866
|
-
* Disallows 'shouldComponentUpdate' when extending 'React.PureComponent'.
|
|
3867
|
-
* @see https://eslint-react.xyz/docs/rules/no-redundant-should-component-update
|
|
3868
|
-
*/
|
|
3869
|
-
'react/no-redundant-should-component-update'?: Linter.RuleEntry<[]>;
|
|
3870
3860
|
/**
|
|
3871
3861
|
* Disallows calling 'this.setState' in 'componentDidMount' outside functions such as callbacks.
|
|
3872
3862
|
* @see https://eslint-react.xyz/docs/rules/no-set-state-in-component-did-mount
|
|
@@ -3882,16 +3872,6 @@ interface RuleOptions {
|
|
|
3882
3872
|
* @see https://eslint-react.xyz/docs/rules/no-set-state-in-component-will-update
|
|
3883
3873
|
*/
|
|
3884
3874
|
'react/no-set-state-in-component-will-update'?: Linter.RuleEntry<[]>;
|
|
3885
|
-
/**
|
|
3886
|
-
* Disallows unnecessary usage of 'useCallback'.
|
|
3887
|
-
* @see https://eslint-react.xyz/docs/rules/no-unnecessary-use-callback
|
|
3888
|
-
*/
|
|
3889
|
-
'react/no-unnecessary-use-callback'?: Linter.RuleEntry<[]>;
|
|
3890
|
-
/**
|
|
3891
|
-
* Disallows unnecessary usage of 'useMemo'.
|
|
3892
|
-
* @see https://eslint-react.xyz/docs/rules/no-unnecessary-use-memo
|
|
3893
|
-
*/
|
|
3894
|
-
'react/no-unnecessary-use-memo'?: Linter.RuleEntry<[]>;
|
|
3895
3875
|
/**
|
|
3896
3876
|
* Enforces that a function with the 'use' prefix uses at least one Hook inside it.
|
|
3897
3877
|
* @see https://eslint-react.xyz/docs/rules/no-unnecessary-use-prefix
|
|
@@ -3933,7 +3913,7 @@ interface RuleOptions {
|
|
|
3933
3913
|
*/
|
|
3934
3914
|
'react/no-unused-props'?: Linter.RuleEntry<[]>;
|
|
3935
3915
|
/**
|
|
3936
|
-
* Warns about
|
|
3916
|
+
* Warns about state variables that are defined but never used, or only used in effects.
|
|
3937
3917
|
* @see https://eslint-react.xyz/docs/rules/no-unused-state
|
|
3938
3918
|
*/
|
|
3939
3919
|
'react/no-unused-state'?: Linter.RuleEntry<[]>;
|
|
@@ -3942,16 +3922,6 @@ interface RuleOptions {
|
|
|
3942
3922
|
* @see https://eslint-react.xyz/docs/rules/no-use-context
|
|
3943
3923
|
*/
|
|
3944
3924
|
'react/no-use-context'?: Linter.RuleEntry<[]>;
|
|
3945
|
-
/**
|
|
3946
|
-
* Enforces destructuring assignment for component props and context.
|
|
3947
|
-
* @see https://eslint-react.xyz/docs/rules/prefer-destructuring-assignment
|
|
3948
|
-
*/
|
|
3949
|
-
'react/prefer-destructuring-assignment'?: Linter.RuleEntry<[]>;
|
|
3950
|
-
/**
|
|
3951
|
-
* Enforces importing React via a namespace import.
|
|
3952
|
-
* @see https://eslint-react.xyz/docs/rules/prefer-namespace-import
|
|
3953
|
-
*/
|
|
3954
|
-
'react/prefer-namespace-import'?: Linter.RuleEntry<[]>;
|
|
3955
3925
|
/**
|
|
3956
3926
|
* Validates that components and hooks are pure by checking that they do not call known-impure functions during render.
|
|
3957
3927
|
* @see https://eslint-react.xyz/docs/rules/purity
|
|
@@ -3982,6 +3952,11 @@ interface RuleOptions {
|
|
|
3982
3952
|
* @see https://eslint-react.xyz/docs/rules/set-state-in-render
|
|
3983
3953
|
*/
|
|
3984
3954
|
'react/set-state-in-render'?: Linter.RuleEntry<[]>;
|
|
3955
|
+
/**
|
|
3956
|
+
* Validates that components are static, not recreated every render.
|
|
3957
|
+
* @see https://eslint-react.xyz/docs/rules/static-components
|
|
3958
|
+
*/
|
|
3959
|
+
'react/static-components'?: Linter.RuleEntry<[]>;
|
|
3985
3960
|
/**
|
|
3986
3961
|
* Validates against syntax that React Compiler does not support.
|
|
3987
3962
|
* @see https://eslint-react.xyz/docs/rules/unsupported-syntax
|
|
@@ -4002,6 +3977,11 @@ interface RuleOptions {
|
|
|
4002
3977
|
* @see https://eslint-react.xyz/docs/rules/web-api-no-leaked-event-listener
|
|
4003
3978
|
*/
|
|
4004
3979
|
'react/web-api-no-leaked-event-listener'?: Linter.RuleEntry<[]>;
|
|
3980
|
+
/**
|
|
3981
|
+
* Enforces that every 'fetch' in a component or custom hook has a corresponding 'AbortController' abort in the cleanup function.
|
|
3982
|
+
* @see https://eslint-react.xyz/docs/rules/web-api-no-leaked-fetch
|
|
3983
|
+
*/
|
|
3984
|
+
'react/web-api-no-leaked-fetch'?: Linter.RuleEntry<[]>;
|
|
4005
3985
|
/**
|
|
4006
3986
|
* Enforces that every 'setInterval' in a component or custom hook has a corresponding 'clearInterval'.
|
|
4007
3987
|
* @see https://eslint-react.xyz/docs/rules/web-api-no-leaked-interval
|
|
@@ -4017,11 +3997,6 @@ interface RuleOptions {
|
|
|
4017
3997
|
* @see https://eslint-react.xyz/docs/rules/web-api-no-leaked-timeout
|
|
4018
3998
|
*/
|
|
4019
3999
|
'react/web-api-no-leaked-timeout'?: Linter.RuleEntry<[]>;
|
|
4020
|
-
/**
|
|
4021
|
-
* Disallows higher order functions that define components or hooks inside them.
|
|
4022
|
-
* @see https://eslint-react.xyz/docs/rules/component-hook-factories
|
|
4023
|
-
*/
|
|
4024
|
-
'react/x-component-hook-factories'?: Linter.RuleEntry<[]>;
|
|
4025
4000
|
/**
|
|
4026
4001
|
* Validates usage of Error Boundaries instead of try/catch for errors in child components.
|
|
4027
4002
|
* @see https://eslint-react.xyz/docs/rules/error-boundaries
|
|
@@ -4032,6 +4007,11 @@ interface RuleOptions {
|
|
|
4032
4007
|
* @see https://github.com/facebook/react/issues/14920
|
|
4033
4008
|
*/
|
|
4034
4009
|
'react/x-exhaustive-deps'?: Linter.RuleEntry<ReactXExhaustiveDeps>;
|
|
4010
|
+
/**
|
|
4011
|
+
* Validates against assignment/mutation of globals during render, part of ensuring that side effects must run outside of render.
|
|
4012
|
+
* @see https://eslint-react.xyz/docs/rules/globals
|
|
4013
|
+
*/
|
|
4014
|
+
'react/x-globals'?: Linter.RuleEntry<[]>;
|
|
4035
4015
|
/**
|
|
4036
4016
|
* Validates against mutating props, state, and other values that are immutable.
|
|
4037
4017
|
* @see https://eslint-react.xyz/docs/rules/immutability
|
|
@@ -4172,11 +4152,6 @@ interface RuleOptions {
|
|
|
4172
4152
|
* @see https://eslint-react.xyz/docs/rules/no-nested-lazy-component-declarations
|
|
4173
4153
|
*/
|
|
4174
4154
|
'react/x-no-nested-lazy-component-declarations'?: Linter.RuleEntry<[]>;
|
|
4175
|
-
/**
|
|
4176
|
-
* Disallows 'shouldComponentUpdate' when extending 'React.PureComponent'.
|
|
4177
|
-
* @see https://eslint-react.xyz/docs/rules/no-redundant-should-component-update
|
|
4178
|
-
*/
|
|
4179
|
-
'react/x-no-redundant-should-component-update'?: Linter.RuleEntry<[]>;
|
|
4180
4155
|
/**
|
|
4181
4156
|
* Disallows calling 'this.setState' in 'componentDidMount' outside functions such as callbacks.
|
|
4182
4157
|
* @see https://eslint-react.xyz/docs/rules/no-set-state-in-component-did-mount
|
|
@@ -4192,16 +4167,6 @@ interface RuleOptions {
|
|
|
4192
4167
|
* @see https://eslint-react.xyz/docs/rules/no-set-state-in-component-will-update
|
|
4193
4168
|
*/
|
|
4194
4169
|
'react/x-no-set-state-in-component-will-update'?: Linter.RuleEntry<[]>;
|
|
4195
|
-
/**
|
|
4196
|
-
* Disallows unnecessary usage of 'useCallback'.
|
|
4197
|
-
* @see https://eslint-react.xyz/docs/rules/no-unnecessary-use-callback
|
|
4198
|
-
*/
|
|
4199
|
-
'react/x-no-unnecessary-use-callback'?: Linter.RuleEntry<[]>;
|
|
4200
|
-
/**
|
|
4201
|
-
* Disallows unnecessary usage of 'useMemo'.
|
|
4202
|
-
* @see https://eslint-react.xyz/docs/rules/no-unnecessary-use-memo
|
|
4203
|
-
*/
|
|
4204
|
-
'react/x-no-unnecessary-use-memo'?: Linter.RuleEntry<[]>;
|
|
4205
4170
|
/**
|
|
4206
4171
|
* Enforces that a function with the 'use' prefix uses at least one Hook inside it.
|
|
4207
4172
|
* @see https://eslint-react.xyz/docs/rules/no-unnecessary-use-prefix
|
|
@@ -4243,7 +4208,7 @@ interface RuleOptions {
|
|
|
4243
4208
|
*/
|
|
4244
4209
|
'react/x-no-unused-props'?: Linter.RuleEntry<[]>;
|
|
4245
4210
|
/**
|
|
4246
|
-
* Warns about
|
|
4211
|
+
* Warns about state variables that are defined but never used, or only used in effects.
|
|
4247
4212
|
* @see https://eslint-react.xyz/docs/rules/no-unused-state
|
|
4248
4213
|
*/
|
|
4249
4214
|
'react/x-no-unused-state'?: Linter.RuleEntry<[]>;
|
|
@@ -4252,16 +4217,6 @@ interface RuleOptions {
|
|
|
4252
4217
|
* @see https://eslint-react.xyz/docs/rules/no-use-context
|
|
4253
4218
|
*/
|
|
4254
4219
|
'react/x-no-use-context'?: Linter.RuleEntry<[]>;
|
|
4255
|
-
/**
|
|
4256
|
-
* Enforces destructuring assignment for component props and context.
|
|
4257
|
-
* @see https://eslint-react.xyz/docs/rules/prefer-destructuring-assignment
|
|
4258
|
-
*/
|
|
4259
|
-
'react/x-prefer-destructuring-assignment'?: Linter.RuleEntry<[]>;
|
|
4260
|
-
/**
|
|
4261
|
-
* Enforces importing React via a namespace import.
|
|
4262
|
-
* @see https://eslint-react.xyz/docs/rules/prefer-namespace-import
|
|
4263
|
-
*/
|
|
4264
|
-
'react/x-prefer-namespace-import'?: Linter.RuleEntry<[]>;
|
|
4265
4220
|
/**
|
|
4266
4221
|
* Validates that components and hooks are pure by checking that they do not call known-impure functions during render.
|
|
4267
4222
|
* @see https://eslint-react.xyz/docs/rules/purity
|
|
@@ -4287,6 +4242,11 @@ interface RuleOptions {
|
|
|
4287
4242
|
* @see https://eslint-react.xyz/docs/rules/set-state-in-render
|
|
4288
4243
|
*/
|
|
4289
4244
|
'react/x-set-state-in-render'?: Linter.RuleEntry<[]>;
|
|
4245
|
+
/**
|
|
4246
|
+
* Validates that components are static, not recreated every render.
|
|
4247
|
+
* @see https://eslint-react.xyz/docs/rules/static-components
|
|
4248
|
+
*/
|
|
4249
|
+
'react/x-static-components'?: Linter.RuleEntry<[]>;
|
|
4290
4250
|
/**
|
|
4291
4251
|
* Validates against syntax that React Compiler does not support.
|
|
4292
4252
|
* @see https://eslint-react.xyz/docs/rules/unsupported-syntax
|
|
@@ -15333,6 +15293,7 @@ type TailwindcssBetterEnforceCanonicalClasses = [] | [{
|
|
|
15333
15293
|
rootFontSize?: number;
|
|
15334
15294
|
cwd?: string;
|
|
15335
15295
|
collapse?: boolean;
|
|
15296
|
+
ignore?: string[];
|
|
15336
15297
|
logical?: boolean;
|
|
15337
15298
|
}]; // ----- tailwindcss-better/enforce-consistent-class-order -----
|
|
15338
15299
|
type TailwindcssBetterEnforceConsistentClassOrder = [] | [{
|
|
@@ -15929,6 +15890,7 @@ type TailwindcssBetterEnforceConsistentLineWrapping = [] | [{
|
|
|
15929
15890
|
preferSingleLine?: boolean;
|
|
15930
15891
|
printWidth?: number;
|
|
15931
15892
|
strictness?: ("strict" | "loose");
|
|
15893
|
+
tabWidth?: number;
|
|
15932
15894
|
}]; // ----- tailwindcss-better/enforce-consistent-variable-syntax -----
|
|
15933
15895
|
type TailwindcssBetterEnforceConsistentVariableSyntax = [] | [{
|
|
15934
15896
|
selectors?: ({
|
|
@@ -21108,4 +21070,4 @@ interface OptionsConfig extends OptionsComponentExts, OptionsComponentExtsTypeAw
|
|
|
21108
21070
|
type ExtractOptions<TUnion> = Extract<TUnion, object>;
|
|
21109
21071
|
//#endregion
|
|
21110
21072
|
export { RuleOptions as A, OptionsTypeScriptErasableOnly as C, OptionsVue as D, OptionsTypescript as E, TypedFlatConfigItem as O, OptionsTanstack as S, OptionsTypeScriptWithTypes as T, OptionsReact as _, OptionsConfig as a, OptionsTailwindCSS as b, OptionsHasJsx as c, OptionsJSX as d, OptionsMarkdown as f, OptionsPnpm as g, OptionsOverridesMultiple as h, OptionsComponentExtsTypeAware as i, ConfigNames as k, OptionsHasTypeScript as l, OptionsOverrides as m, OptionsAppType as n, OptionsE18e as o, OptionsNode as p, OptionsComponentExts as r, OptionsFiles as s, ExtractOptions as t, OptionsIsInEditor as u, OptionsRegExp as v, OptionsTypeScriptParserOptions as w, OptionsTailwindCSSBetter as x, OptionsStylistic as y };
|
|
21111
|
-
//# sourceMappingURL=index-
|
|
21073
|
+
//# sourceMappingURL=index-DkgX1yNh.d.ts.map
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as RuleOptions, C as OptionsTypeScriptErasableOnly, D as OptionsVue, E as OptionsTypescript, O as TypedFlatConfigItem, S as OptionsTanstack, T as OptionsTypeScriptWithTypes, _ as OptionsReact, a as OptionsConfig, b as OptionsTailwindCSS, c as OptionsHasJsx, d as OptionsJSX, f as OptionsMarkdown, g as OptionsPnpm, h as OptionsOverridesMultiple, i as OptionsComponentExtsTypeAware, k as ConfigNames, l as OptionsHasTypeScript, m as OptionsOverrides, n as OptionsAppType, o as OptionsE18e, p as OptionsNode, r as OptionsComponentExts, s as OptionsFiles, t as ExtractOptions, u as OptionsIsInEditor, v as OptionsRegExp, w as OptionsTypeScriptParserOptions, x as OptionsTailwindCSSBetter, y as OptionsStylistic } from "./index-
|
|
1
|
+
import { A as RuleOptions, C as OptionsTypeScriptErasableOnly, D as OptionsVue, E as OptionsTypescript, O as TypedFlatConfigItem, S as OptionsTanstack, T as OptionsTypeScriptWithTypes, _ as OptionsReact, a as OptionsConfig, b as OptionsTailwindCSS, c as OptionsHasJsx, d as OptionsJSX, f as OptionsMarkdown, g as OptionsPnpm, h as OptionsOverridesMultiple, i as OptionsComponentExtsTypeAware, k as ConfigNames, l as OptionsHasTypeScript, m as OptionsOverrides, n as OptionsAppType, o as OptionsE18e, p as OptionsNode, r as OptionsComponentExts, s as OptionsFiles, t as ExtractOptions, u as OptionsIsInEditor, v as OptionsRegExp, w as OptionsTypeScriptParserOptions, x as OptionsTailwindCSSBetter, y as OptionsStylistic } from "./index-DkgX1yNh.js";
|
|
2
2
|
import { Awaitable } from "@zayne-labs/toolkit-type-helpers";
|
|
3
3
|
import { FlatConfigComposer } from "eslint-flat-config-utils";
|
|
4
4
|
import { Linter } from "eslint";
|
package/dist/index.js
CHANGED
|
@@ -1026,7 +1026,7 @@ const react = async (options = {}) => {
|
|
|
1026
1026
|
]);
|
|
1027
1027
|
const [eslintPluginReact, eslintPluginCustomJsxRules, eslintReactHooks, eslintPluginReactRefresh, eslintPluginReactYouMightNotNeedAnEffect, eslintPluginNextjs] = await Promise.all([
|
|
1028
1028
|
enableReact ? interopDefault(import("@eslint-react/eslint-plugin")) : void 0,
|
|
1029
|
-
enableReact ? interopDefault(import("./jsxRules-
|
|
1029
|
+
enableReact ? interopDefault(import("./jsxRules-BAjKnxGs.js")) : void 0,
|
|
1030
1030
|
enableReact ? interopDefault(import("eslint-plugin-react-hooks")) : void 0,
|
|
1031
1031
|
refresh ? interopDefault(import("eslint-plugin-react-refresh")) : void 0,
|
|
1032
1032
|
youMightNotNeedAnEffect ? interopDefault(import("eslint-plugin-react-you-might-not-need-an-effect")) : void 0,
|
|
@@ -1073,11 +1073,14 @@ const react = async (options = {}) => {
|
|
|
1073
1073
|
files,
|
|
1074
1074
|
name: "zayne/react/unofficial/rules",
|
|
1075
1075
|
rules: {
|
|
1076
|
+
"react/globals": "error",
|
|
1077
|
+
"react/immutability": "error",
|
|
1076
1078
|
"react/jsx-shorthand-boolean": "error",
|
|
1077
1079
|
"react/jsx-shorthand-fragment": "warn",
|
|
1078
1080
|
"react/no-children-count": "off",
|
|
1079
1081
|
"react/no-children-only": "off",
|
|
1080
1082
|
"react/no-clone-element": "off",
|
|
1083
|
+
"react/refs": "error",
|
|
1081
1084
|
"react/exhaustive-deps": "warn",
|
|
1082
1085
|
"react/rules-of-hooks": "error",
|
|
1083
1086
|
...overrides,
|
|
@@ -1090,20 +1093,20 @@ const react = async (options = {}) => {
|
|
|
1090
1093
|
rules: {
|
|
1091
1094
|
"react-hooks/capitalized-calls": "error",
|
|
1092
1095
|
"react-hooks/config": "error",
|
|
1093
|
-
"react-hooks/error-boundaries": "
|
|
1096
|
+
"react-hooks/error-boundaries": "off",
|
|
1094
1097
|
"react-hooks/gating": "error",
|
|
1095
|
-
"react-hooks/globals": "
|
|
1098
|
+
"react-hooks/globals": "off",
|
|
1096
1099
|
"react-hooks/hooks": "error",
|
|
1097
|
-
"react-hooks/immutability": "
|
|
1100
|
+
"react-hooks/immutability": "off",
|
|
1098
1101
|
"react-hooks/incompatible-library": "warn",
|
|
1099
1102
|
"react-hooks/no-deriving-state-in-effects": "error",
|
|
1100
1103
|
"react-hooks/preserve-manual-memoization": "warn",
|
|
1101
|
-
"react-hooks/purity": "
|
|
1102
|
-
"react-hooks/refs": "
|
|
1104
|
+
"react-hooks/purity": "off",
|
|
1105
|
+
"react-hooks/refs": "off",
|
|
1103
1106
|
"react-hooks/rule-suppression": "off",
|
|
1104
1107
|
"react-hooks/set-state-in-effect": "off",
|
|
1105
|
-
"react-hooks/set-state-in-render": "
|
|
1106
|
-
"react-hooks/static-components": "
|
|
1108
|
+
"react-hooks/set-state-in-render": "off",
|
|
1109
|
+
"react-hooks/static-components": "off",
|
|
1107
1110
|
"react-hooks/syntax": "error",
|
|
1108
1111
|
"react-hooks/todo": "warn",
|
|
1109
1112
|
"react-hooks/unsupported-syntax": "warn",
|
|
@@ -1494,6 +1497,7 @@ const tanstack = async (options = {}) => {
|
|
|
1494
1497
|
}, {
|
|
1495
1498
|
name: "zayne/tanstack-query/rules",
|
|
1496
1499
|
rules: {
|
|
1500
|
+
"tanstack-query/prefer-query-options": "warn",
|
|
1497
1501
|
...overrides,
|
|
1498
1502
|
...isObject$1(query) && query.overrides
|
|
1499
1503
|
}
|