@zayne-labs/eslint-config 0.12.5 → 0.12.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/README.md CHANGED
@@ -541,6 +541,28 @@ export default zayne({
541
541
  });
542
542
  ```
543
543
 
544
+ ### Editor Specific Disables
545
+
546
+ Auto-fixing for the following rules are disabled when ESLint is running in a code editor:
547
+
548
+ - [`prefer-const`](https://eslint.org/docs/rules/prefer-const)
549
+ - [`test/no-only-tests`](https://github.com/levibuzolic/eslint-plugin-no-only-tests)
550
+ - [`unused-imports/no-unused-imports`](https://www.npmjs.com/package/eslint-plugin-unused-imports)
551
+ - [`pnpm/json-enforce-catalog`](https://github.com/antfu/pnpm-workspace-utils/tree/main/packages/eslint-plugin-pnpm#rules)
552
+ - [`pnpm/json-prefer-workspace-settings`](https://github.com/antfu/pnpm-workspace-utils/tree/main/packages/eslint-plugin-pnpm#rules)
553
+ - [`pnpm/json-valid-catalog`](https://github.com/antfu/pnpm-workspace-utils/tree/main/packages/eslint-plugin-pnpm#rules)
554
+
555
+ This is to prevent unused imports from getting removed by the editor during refactoring to get a better developer experience. Those rules will be applied when you run ESLint in the terminal or [Lint Staged](#lint-staged). If you don't want this behavior, you can disable them:
556
+
557
+ ```js
558
+ // eslint.config.js
559
+ import { zayne } from "@antfu/eslint-config";
560
+
561
+ export default zayne({
562
+ isInEditor: false,
563
+ });
564
+ ```
565
+
544
566
  ## Inspecting Config
545
567
 
546
568
  View active rules using the [ESLint Config Inspector](https://github.com/eslint/config-inspector):
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.12.5";
13
+ var version = "0.12.8";
14
14
  //#endregion
15
15
  //#region src/cli/constants.ts
16
16
  const vscodeSettingsString = `
@@ -77,7 +77,8 @@ const dependenciesMap = defineEnumDeep({
77
77
  react: [
78
78
  "@eslint-react/eslint-plugin",
79
79
  "eslint-plugin-react-hooks",
80
- "eslint-plugin-react-refresh"
80
+ "eslint-plugin-react-refresh",
81
+ "eslint-plugin-react-you-might-not-need-an-effect"
81
82
  ],
82
83
  solid: ["eslint-plugin-solid"],
83
84
  svelte: ["eslint-plugin-svelte", "svelte-eslint-parser"],
@@ -136,16 +137,20 @@ const updateEslintFiles = async (result) => {
136
137
  //#endregion
137
138
  //#region src/cli/constants-generated.ts
138
139
  const versionsMap = defineEnum({
139
- "@eslint-react/eslint-plugin": "2.4.0",
140
- "astro-eslint-parser": "1.2.2",
141
- eslint: "9.39.2",
142
- "eslint-plugin-astro": "1.5.0",
143
- "eslint-plugin-better-tailwindcss": "3.8.0",
144
- "eslint-plugin-react-hooks": "7.0.1",
145
- "eslint-plugin-react-refresh": "0.4.26",
146
- "eslint-plugin-solid": "0.14.5",
147
- "eslint-plugin-svelte": "3.13.1",
148
- "svelte-eslint-parser": "1.1.0"
140
+ "@eslint-react/eslint-plugin": "^4.2.3",
141
+ "astro-eslint-parser": "^1.4.0",
142
+ eslint: "^10.2.0",
143
+ "eslint-plugin-astro": "^1.6.0",
144
+ "eslint-plugin-better-tailwindcss": "^4.3.2",
145
+ "eslint-plugin-react-hooks": "^7.0.1",
146
+ "eslint-plugin-react-refresh": "^0.5.2",
147
+ "eslint-plugin-react-you-might-not-need-an-effect": "^0.9.2",
148
+ "eslint-plugin-solid": "^0.14.5",
149
+ "eslint-plugin-svelte": "^3.17.0",
150
+ "eslint-plugin-vue": "^10.8.0",
151
+ "eslint-processor-vue-blocks": "^2.0.0",
152
+ "svelte-eslint-parser": "^1.6.0",
153
+ "vue-eslint-parser": "^10.4.0"
149
154
  });
150
155
  //#endregion
151
156
  //#region src/cli/stages/update-package-json.ts
@@ -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: [\"@eslint-react/eslint-plugin\", \"eslint-plugin-react-hooks\", \"eslint-plugin-react-refresh\"],\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\": \"2.4.0\",\n\t\"astro-eslint-parser\": \"1.2.2\",\n\teslint: \"9.39.2\",\n\t\"eslint-plugin-astro\": \"1.5.0\",\n\t\"eslint-plugin-better-tailwindcss\": \"3.8.0\",\n\t\"eslint-plugin-react-hooks\": \"7.0.1\",\n\t\"eslint-plugin-react-refresh\": \"0.4.26\",\n\t\"eslint-plugin-solid\": \"0.14.5\",\n\t\"eslint-plugin-svelte\": \"3.13.1\",\n\t\"svelte-eslint-parser\": \"1.1.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\": \"^4.2.3\",\n\t\"astro-eslint-parser\": \"^1.4.0\",\n\teslint: \"^10.2.0\",\n\t\"eslint-plugin-astro\": \"^1.6.0\",\n\t\"eslint-plugin-better-tailwindcss\": \"^4.3.2\",\n\t\"eslint-plugin-react-hooks\": \"^7.0.1\",\n\t\"eslint-plugin-react-refresh\": \"^0.5.2\",\n\t\"eslint-plugin-react-you-might-not-need-an-effect\": \"^0.9.2\",\n\t\"eslint-plugin-solid\": \"^0.14.5\",\n\t\"eslint-plugin-svelte\": \"^3.17.0\",\n\t\"eslint-plugin-vue\": \"^10.8.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 +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\t\t// \"@eslint-react/debug\": \"react-debug\",\n\t\t// \"@eslint-react/dom\": \"react-dom\",\n\t\t// \"@eslint-react/naming-convention\": \"react-naming-convention\",\n\t\t// \"@eslint-react/rsc\": \"react-rsc\",\n\t\t// \"@eslint-react/web-api\": \"react-web-api\",\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: `${process.cwd()}/tailwind.css`,\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: \"callee\",\n\t\t\t\tmatch: [{ type: \"strings\" }],\n\t\t\t\tname: \"cnMerge\",\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: \"cnJoin\",\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;EAOjB,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,GAAG,QAAQ,KAAK,CAAC;EAC7B,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;EACD,CAAyD;;AAG3D,MAAa,sCAAsC;AAClD,QAAO,WAAW,CAAC,cAAc,CAAC"}
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: `${process.cwd()}/tailwind.css`,\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: \"callee\",\n\t\t\t\tmatch: [{ type: \"strings\" }],\n\t\t\t\tname: \"cnMerge\",\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: \"cnJoin\",\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,GAAG,QAAQ,KAAK,CAAC;EAC7B,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;EACD,CAAyD;;AAG3D,MAAa,sCAAsC;AAClD,QAAO,WAAW,CAAC,cAAc,CAAC"}