@zayne-labs/eslint-config 0.9.2 → 0.9.4

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 CHANGED
@@ -10,7 +10,7 @@ import parse from "parse-gitignore";
10
10
  import { execSync } from "node:child_process";
11
11
 
12
12
  //#region package.json
13
- var version = "0.9.2";
13
+ var version = "0.9.4";
14
14
 
15
15
  //#endregion
16
16
  //#region src/cli/constants.ts
@@ -65,14 +65,13 @@ const frameworkOptions = [
65
65
  {
66
66
  label: c.cyan("Solid"),
67
67
  value: "solid"
68
- },
69
- {
70
- label: c.blue("Slidev"),
71
- value: "slidev"
72
68
  }
73
69
  ];
74
70
  const frameworks = frameworkOptions.map(({ value }) => value);
75
- const extraOptions = [];
71
+ const extraOptions = [{
72
+ label: c.cyan("TailwindCSS"),
73
+ value: "tailwindcss"
74
+ }];
76
75
  const extra = extraOptions.map(({ value }) => value);
77
76
  const dependenciesMap = defineEnumDeep({
78
77
  astro: ["eslint-plugin-astro", "astro-eslint-parser"],
@@ -81,7 +80,6 @@ const dependenciesMap = defineEnumDeep({
81
80
  "eslint-plugin-react-hooks",
82
81
  "eslint-plugin-react-refresh"
83
82
  ],
84
- slidev: [],
85
83
  solid: ["eslint-plugin-solid"],
86
84
  svelte: ["eslint-plugin-svelte", "svelte-eslint-parser"],
87
85
  vue: [
@@ -136,17 +134,11 @@ async function updateEslintFiles(result) {
136
134
  const configLines = [];
137
135
  if (eslintIgnores.length > 0) configLines.push(`ignores: ${JSON.stringify(eslintIgnores)},`);
138
136
  for (const framework of result.frameworks) configLines.push(`${framework}: true,`);
139
- const mainConfig = configLines.map((i) => ` ${i}`).join("\n");
137
+ const mainConfig = configLines.map((line) => ` ${line}`).join("\n");
140
138
  const additionalConfig = [];
141
139
  const eslintConfigContent = getEslintConfigContent(mainConfig, additionalConfig);
142
140
  await fsp.writeFile(pathFlatConfig, eslintConfigContent);
143
141
  p.log.success(c.green`Created ${configFileName}`);
144
- const files = fs.readdirSync(cwd);
145
- const legacyConfig = [];
146
- files.forEach((file) => {
147
- if (/eslint|prettier/.test(file) && !file.includes("eslint.config.")) legacyConfig.push(file);
148
- });
149
- if (legacyConfig.length > 0) p.note(c.dim(legacyConfig.join(", ")), "You can now remove those files manually");
150
142
  }
151
143
 
152
144
  //#endregion
@@ -160,8 +152,6 @@ const versionsMap = {
160
152
  "eslint-plugin-react-refresh": "^0.4.19",
161
153
  "eslint-plugin-solid": "^0.14.5",
162
154
  "eslint-plugin-svelte": "^3.3.3",
163
- "prettier-plugin-astro": "^0.14.1",
164
- "prettier-plugin-slidev": "^1.0.5",
165
155
  "svelte-eslint-parser": "^1.1.0"
166
156
  };
167
157
 
@@ -178,11 +168,12 @@ async function updatePackageJson(result) {
178
168
  pkg.devDependencies.eslint ??= versionsMap.eslint;
179
169
  const addedPackages = [];
180
170
  for (const framework of result.frameworks) {
181
- const deps = dependenciesMap[framework];
182
- if (!deps) continue;
183
- deps.forEach((f) => {
184
- pkg.devDependencies[f] = versionsMap[f];
185
- addedPackages.push(f);
171
+ const dependencies = dependenciesMap[framework];
172
+ if (!dependencies) continue;
173
+ dependencies.forEach((dependency) => {
174
+ if (!pkg.devDependencies) return;
175
+ pkg.devDependencies[dependency] = versionsMap[dependency];
176
+ addedPackages.push(dependency);
186
177
  });
187
178
  }
188
179
  if (addedPackages.length > 0) p.note(c.dim(addedPackages.join(", ")), "Added packages");
@@ -273,7 +264,7 @@ async function run(options = {}) {
273
264
  await updateEslintFiles(result);
274
265
  await updateVscodeSettings(result);
275
266
  p.log.success(c.green`Setup completed`);
276
- p.outro(`Now you can update the dependencies by run ${c.blue("pnpm install")} and run ${c.blue("eslint --fix")}\n`);
267
+ p.outro(`Now you can update the dependencies by running ${c.blue("pnpm install")} and also ${c.blue("eslint --fix")}\n`);
277
268
  }
278
269
 
279
270
  //#endregion
@@ -282,10 +273,10 @@ function header() {
282
273
  p.intro(`${c.green`@zayne-labs/eslint-config `}${c.dim`v${version}`}`);
283
274
  }
284
275
  const cli = cac("@zayne-labs/eslint-config");
285
- cli.command("", "Run the initialization or migration").option("--yes, -y", "Skip prompts and use default values", { default: false }).option("--template, -t <template>", "Use the framework template for optimal customization: vue / react / svelte / astro", { type: [] }).option("--extra, -e <extra>", "Use the extra utils: formatter / perfectionist / unocss", { type: [] }).action(async (args) => {
276
+ cli.command("", "Run the initialization or migration").option("--yes, -y", "Skip prompts and use default values", { default: false }).option("--template, -t <template>", "Use the framework template for optimal customization: vue / react / svelte / astro", { type: [] }).option("--extra, -e <extra>", "Use the extra utils: perfectionist / tailwindcss", { type: [] }).action(async (options) => {
286
277
  header();
287
278
  try {
288
- await run(args);
279
+ await run(options);
289
280
  } catch (error) {
290
281
  p.log.error(c.inverse.red(" Failed to migrate "));
291
282
  p.log.error(c.red`✘ ${String(error)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["frameworkOptions: Array<PromItem<FrameworkOption>>","frameworks: FrameworkOption[]","extraOptions: Array<PromItem<ExtraLibrariesOption>>","extra: ExtraLibrariesOption[]","mainConfig: string","additionalConfigs?: string[]","result: PromptResult","eslintIgnores: string[]","pattern: string","configLines: string[]","additionalConfig: string[]","eslintConfigContent: string","legacyConfig: string[]","result: PromptResult","addedPackages: string[]","result: PromptResult","dotVscodePath: string","settingsPath: string","options: CliRunOptions","result: PromptResult","args: CliRunOptions"],"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":["{\n\t\"name\": \"@zayne-labs/eslint-config\",\n\t\"type\": \"module\",\n\t\"version\": \"0.9.2\",\n\t\"description\": \"Zayne Labs' ESLint config preset\",\n\t\"author\": \"Ryan Zayne\",\n\t\"license\": \"MIT\",\n\t\"homepage\": \"https://github.com/zayne-labs/config#readme\",\n\t\"repository\": {\n\t\t\"type\": \"git\",\n\t\t\"url\": \"git+https://github.com/zayne-labs/config.git\"\n\t},\n\t\"bugs\": {\n\t\t\"url\": \"https://github.com/zayne-labs/config/issues\"\n\t},\n\t\"keywords\": [],\n\t\"sideEffects\": false,\n\t\"exports\": {\n\t\t\".\": \"./dist/index.js\"\n\t},\n\t\"bin\": \"./bin/index.js\",\n\t\"files\": [\n\t\t\"bin\",\n\t\t\"dist\"\n\t],\n\t\"engines\": {\n\t\t\"node\": \">=18.x\"\n\t},\n\t\"scripts\": {\n\t\t\"build\": \"pnpm typegen && tsdown\",\n\t\t\"build:dev\": \"pnpm typegen && cross-env NODE_ENV=development tsdown\",\n\t\t\"lint:attw\": \"attw --pack . --ignore-rules=cjs-resolves-to-esm\",\n\t\t\"lint:eslint\": \"eslint . --max-warnings 0\",\n\t\t\"lint:format\": \"prettier --cache --write .\",\n\t\t\"lint:packages\": \"pnpm dedupe --check\",\n\t\t\"lint:publint\": \"publint --strict .\",\n\t\t\"lint:type-check\": \"pnpm typegen && tsc --pretty -p tsconfig.json\",\n\t\t\"release\": \"pnpm publish --no-git-checks\",\n\t\t\"release:test\": \"pnpx pkg-pr-new publish\",\n\t\t\"typegen\": \"tsx scripts/typegen.ts\",\n\t\t\"version-package\": \"changeset version\"\n\t},\n\t\"peerDependencies\": {\n\t\t\"@eslint-react/eslint-plugin\": \">=1.15.0\",\n\t\t\"@next/eslint-plugin-next\": \">=14.2.15\",\n\t\t\"@tanstack/eslint-plugin-query\": \">=5.59.7\",\n\t\t\"@tanstack/eslint-plugin-router\": \">=1.120.17\",\n\t\t\"@zayne-labs/toolkit-type-helpers\": \"^0.9.34\",\n\t\t\"astro-eslint-parser\": \">=1.0.2\",\n\t\t\"eslint\": \">=9.12.0\",\n\t\t\"eslint-plugin-astro\": \">=1.2.0\",\n\t\t\"eslint-plugin-better-tailwindcss\": \">=3.2.0\",\n\t\t\"eslint-plugin-depend\": \">=1.2.0\",\n\t\t\"eslint-plugin-pnpm\": \">=0.3.1\",\n\t\t\"eslint-plugin-react-hooks\": \">=5.0.0\",\n\t\t\"eslint-plugin-react-refresh\": \">=0.4.12\",\n\t\t\"eslint-plugin-solid\": \">=0.14.3\",\n\t\t\"eslint-plugin-svelte\": \">=2.35.1\",\n\t\t\"eslint-plugin-vue\": \">=9.28.0\",\n\t\t\"eslint-processor-vue-blocks\": \">=0.1.2\",\n\t\t\"vue-eslint-parser\": \">=9.4.3\"\n\t},\n\t\"peerDependenciesMeta\": {\n\t\t\"@eslint-react/eslint-plugin\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"@next/eslint-plugin-next\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"@tanstack/eslint-plugin-query\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"@tanstack/eslint-plugin-router\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"astro-eslint-parser\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"eslint-plugin-astro\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"eslint-plugin-better-tailwindcss\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"eslint-plugin-depend\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"eslint-plugin-pnpm\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"eslint-plugin-react-hooks\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"eslint-plugin-react-refresh\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"eslint-plugin-solid\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"eslint-plugin-svelte\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"eslint-plugin-vue\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"eslint-processor-vue-blocks\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"vue-eslint-parser\": {\n\t\t\t\"optional\": true\n\t\t}\n\t},\n\t\"dependencies\": {\n\t\t\"@antfu/install-pkg\": \"1.1.0\",\n\t\t\"@clack/prompts\": \"0.11.0\",\n\t\t\"@eslint-community/eslint-plugin-eslint-comments\": \"4.5.0\",\n\t\t\"@eslint/compat\": \"1.3.0\",\n\t\t\"@eslint/js\": \"9.29.0\",\n\t\t\"@stylistic/eslint-plugin\": \"4.4.1\",\n\t\t\"ansis\": \"^4.0.0\",\n\t\t\"cac\": \"^6.7.14\",\n\t\t\"eslint-config-flat-gitignore\": \"2.1.0\",\n\t\t\"eslint-flat-config-utils\": \"2.1.0\",\n\t\t\"eslint-import-resolver-typescript\": \"4.4.3\",\n\t\t\"eslint-merge-processors\": \"^2.0.0\",\n\t\t\"eslint-plugin-import-x\": \"4.15.2\",\n\t\t\"eslint-plugin-jsdoc\": \"51.0.3\",\n\t\t\"eslint-plugin-jsonc\": \"2.20.1\",\n\t\t\"eslint-plugin-n\": \"17.20.0\",\n\t\t\"eslint-plugin-perfectionist\": \"4.15.0\",\n\t\t\"eslint-plugin-security\": \"3.0.1\",\n\t\t\"eslint-plugin-toml\": \"^0.12.0\",\n\t\t\"eslint-plugin-unicorn\": \"59.0.1\",\n\t\t\"eslint-plugin-yml\": \"^1.17.0\",\n\t\t\"globals\": \"16.2.0\",\n\t\t\"jsonc-eslint-parser\": \"2.4.0\",\n\t\t\"local-pkg\": \"1.1.1\",\n\t\t\"parse-gitignore\": \"^2.0.0\",\n\t\t\"toml-eslint-parser\": \"0.10.0\",\n\t\t\"typescript-eslint\": \"8.34.1\",\n\t\t\"yaml-eslint-parser\": \"1.3.0\"\n\t},\n\t\"devDependencies\": {\n\t\t\"@arethetypeswrong/cli\": \"0.18.2\",\n\t\t\"@changesets/cli\": \"2.29.4\",\n\t\t\"@eslint-react/eslint-plugin\": \"1.52.2\",\n\t\t\"@next/eslint-plugin-next\": \"15.3.3\",\n\t\t\"@size-limit/esbuild-why\": \"11.2.0\",\n\t\t\"@size-limit/preset-small-lib\": \"11.2.0\",\n\t\t\"@tanstack/eslint-plugin-query\": \"5.78.0\",\n\t\t\"@tanstack/eslint-plugin-router\": \"^1.121.21\",\n\t\t\"@total-typescript/ts-reset\": \"0.6.1\",\n\t\t\"@types/eslint-plugin-security\": \"3.0.0\",\n\t\t\"@types/node\": \"24.0.3\",\n\t\t\"@zayne-labs/toolkit-type-helpers\": \"^0.9.42\",\n\t\t\"@zayne-labs/tsconfig\": \"workspace:*\",\n\t\t\"astro-eslint-parser\": \"1.2.2\",\n\t\t\"concurrently\": \"9.1.2\",\n\t\t\"cross-env\": \"7.0.3\",\n\t\t\"eslint\": \"9.29.0\",\n\t\t\"eslint-plugin-astro\": \"1.3.1\",\n\t\t\"eslint-plugin-better-tailwindcss\": \"3.3.0\",\n\t\t\"eslint-plugin-depend\": \"1.2.0\",\n\t\t\"eslint-plugin-pnpm\": \"0.3.1\",\n\t\t\"eslint-plugin-react-hooks\": \"5.2.0\",\n\t\t\"eslint-plugin-react-refresh\": \"0.4.20\",\n\t\t\"eslint-plugin-solid\": \"0.14.3\",\n\t\t\"eslint-plugin-svelte\": \"3.9.2\",\n\t\t\"eslint-plugin-vue\": \"10.2.0\",\n\t\t\"eslint-processor-vue-blocks\": \"2.0.0\",\n\t\t\"eslint-typegen\": \"2.2.0\",\n\t\t\"husky\": \"9.1.7\",\n\t\t\"lint-staged\": \"16.1.2\",\n\t\t\"pkg-pr-new\": \"0.0.51\",\n\t\t\"prettier\": \"3.5.3\",\n\t\t\"publint\": \"0.3.12\",\n\t\t\"size-limit\": \"11.2.0\",\n\t\t\"tailwindcss\": \"^4.1.10\",\n\t\t\"tsdown\": \"^0.12.8\",\n\t\t\"tsx\": \"4.20.3\",\n\t\t\"typescript\": \"5.8.3\",\n\t\t\"vue-eslint-parser\": \"10.1.3\"\n\t},\n\t\"publishConfig\": {\n\t\t\"access\": \"public\",\n\t\t\"registry\": \"https://registry.npmjs.org/\",\n\t\t\"provenance\": true\n\t}\n}\n","import { defineEnumDeep } from \"@zayne-labs/toolkit-type-helpers\";\nimport type { ExtraLibrariesOption, FrameworkOption, PromItem } from \"./types\";\n\nimport c from \"ansis\";\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<FrameworkOption>> = [\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\t{\n\t\tlabel: c.blue(\"Slidev\"),\n\t\tvalue: \"slidev\",\n\t},\n];\n\nexport const frameworks: FrameworkOption[] = frameworkOptions.map(({ value }) => value);\n\nexport const extraOptions: Array<PromItem<ExtraLibrariesOption>> = [\n\t// {\n\t// \tlabel: c.cyan(\"UnoCSS\"),\n\t// \tvalue: \"unocss\",\n\t// },\n];\n\nexport const extra: ExtraLibrariesOption[] = 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\tslidev: [],\n\tsolid: [\"eslint-plugin-solid\"],\n\tsvelte: [\"eslint-plugin-svelte\", \"svelte-eslint-parser\"],\n\tvue: [\"eslint-plugin-vue\", \"eslint-processor-vue-blocks\", \"vue-eslint-parser\"],\n});\n","import { execSync } from \"node:child_process\";\n\nexport function 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 function 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 async function updateEslintFiles(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\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\tfor (const framework of result.frameworks) {\n\t\tconfigLines.push(`${framework}: true,`);\n\t}\n\n\tconst mainConfig = configLines.map((i) => ` ${i}`).join(\"\\n\");\n\tconst additionalConfig: string[] = [];\n\n\tconst eslintConfigContent: string = getEslintConfigContent(mainConfig, additionalConfig);\n\n\tawait fsp.writeFile(pathFlatConfig, eslintConfigContent);\n\tp.log.success(c.green`Created ${configFileName}`);\n\n\tconst files = fs.readdirSync(cwd);\n\tconst legacyConfig: string[] = [];\n\tfiles.forEach((file) => {\n\t\tif (/eslint|prettier/.test(file) && !file.includes(\"eslint.config.\")) {\n\t\t\tlegacyConfig.push(file);\n\t\t}\n\t});\n\n\tif (legacyConfig.length > 0) {\n\t\tp.note(c.dim(legacyConfig.join(\", \")), \"You can now remove those files manually\");\n\t}\n}\n","export const versionsMap = {\n\t\"@eslint-react/eslint-plugin\": \"^1.38.4\",\n\t\"astro-eslint-parser\": \"^1.2.2\",\n\teslint: \"^9.24.0\",\n\t\"eslint-plugin-astro\": \"^1.3.1\",\n\t\"eslint-plugin-react-hooks\": \"^5.2.0\",\n\t\"eslint-plugin-react-refresh\": \"^0.4.19\",\n\t\"eslint-plugin-solid\": \"^0.14.5\",\n\t\"eslint-plugin-svelte\": \"^3.3.3\",\n\t\"prettier-plugin-astro\": \"^0.14.1\",\n\t\"prettier-plugin-slidev\": \"^1.0.5\",\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 async function updatePackageJson(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 framework of result.frameworks) {\n\t\tconst deps = dependenciesMap[framework];\n\n\t\t// eslint-disable-next-line ts-eslint/no-unnecessary-condition -- Allow\n\t\tif (!deps) continue;\n\n\t\tdeps.forEach((f) => {\n\t\t\t// eslint-disable-next-line ts-eslint/no-non-null-assertion -- Allow\n\t\t\tpkg.devDependencies![f] = versionsMap[f as keyof typeof versionsMap];\n\t\t\taddedPackages.push(f);\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 { green } from \"ansis\";\nimport { vscodeSettingsString } from \"../constants\";\nimport type { PromptResult } from \"../types\";\n\nexport async function updateVscodeSettings(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(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(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 { ExtraLibrariesOption, FrameworkOption, 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 async function run(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 ExtraLibrariesOption[],\n\t\tframeworks: (argTemplate ?? []) as FrameworkOption[],\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`\"${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<FrameworkOption>({\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`\"${argExtra}\" isn't a valid extra util. Please choose from below: `\n\t\t\t\t\t\t:\t\"Select a extra utils:\";\n\n\t\t\t\t\treturn p.multiselect<ExtraLibrariesOption>({\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\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\tp.outro(\n\t\t`Now you can update the dependencies by run ${c.blue(\"pnpm install\")} and run ${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 { type CliRunOptions, run } from \"./run\";\n\nfunction header(): void {\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: formatter / perfectionist / unocss\", { type: [] })\n\t.action(async (args: CliRunOptions) => {\n\t\theader();\n\t\ttry {\n\t\t\tawait run(args);\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":["frameworkOptions: Array<PromItem<FrameworkOption>>","frameworks: FrameworkOption[]","extraOptions: Array<PromItem<ExtraLibrariesOption>>","extra: ExtraLibrariesOption[]","mainConfig: string","additionalConfigs?: string[]","result: PromptResult","eslintIgnores: string[]","pattern: string","configLines: string[]","additionalConfig: string[]","eslintConfigContent: string","result: PromptResult","addedPackages: string[]","result: PromptResult","dotVscodePath: string","settingsPath: string","options: CliRunOptions","result: PromptResult","options: CliRunOptions"],"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":["{\n\t\"name\": \"@zayne-labs/eslint-config\",\n\t\"type\": \"module\",\n\t\"version\": \"0.9.4\",\n\t\"description\": \"Zayne Labs' ESLint config preset\",\n\t\"author\": \"Ryan Zayne\",\n\t\"license\": \"MIT\",\n\t\"homepage\": \"https://github.com/zayne-labs/config#readme\",\n\t\"repository\": {\n\t\t\"type\": \"git\",\n\t\t\"url\": \"git+https://github.com/zayne-labs/config.git\"\n\t},\n\t\"bugs\": {\n\t\t\"url\": \"https://github.com/zayne-labs/config/issues\"\n\t},\n\t\"keywords\": [],\n\t\"sideEffects\": false,\n\t\"exports\": {\n\t\t\".\": \"./dist/index.js\"\n\t},\n\t\"bin\": \"./bin/index.js\",\n\t\"files\": [\n\t\t\"bin\",\n\t\t\"dist\"\n\t],\n\t\"engines\": {\n\t\t\"node\": \">=18.x\"\n\t},\n\t\"scripts\": {\n\t\t\"build\": \"pnpm typegen && tsdown\",\n\t\t\"build:dev\": \"pnpm typegen && cross-env NODE_ENV=development tsdown\",\n\t\t\"lint:attw\": \"attw --pack . --ignore-rules=cjs-resolves-to-esm\",\n\t\t\"lint:eslint\": \"eslint . --max-warnings 0\",\n\t\t\"lint:format\": \"prettier --cache --write .\",\n\t\t\"lint:packages\": \"pnpm dedupe --check\",\n\t\t\"lint:publint\": \"publint --strict .\",\n\t\t\"lint:type-check\": \"pnpm typegen && tsc --pretty -p tsconfig.json\",\n\t\t\"release\": \"pnpm publish --no-git-checks\",\n\t\t\"release:test\": \"pnpx pkg-pr-new publish\",\n\t\t\"typegen\": \"tsx scripts/typegen.ts\",\n\t\t\"version-package\": \"changeset version\"\n\t},\n\t\"peerDependencies\": {\n\t\t\"@eslint-react/eslint-plugin\": \">=1.15.0\",\n\t\t\"@next/eslint-plugin-next\": \">=14.2.15\",\n\t\t\"@tanstack/eslint-plugin-query\": \">=5.59.7\",\n\t\t\"@tanstack/eslint-plugin-router\": \">=1.120.17\",\n\t\t\"astro-eslint-parser\": \">=1.0.2\",\n\t\t\"eslint\": \">=9.12.0\",\n\t\t\"eslint-plugin-astro\": \">=1.2.0\",\n\t\t\"eslint-plugin-better-tailwindcss\": \">=3.2.0\",\n\t\t\"eslint-plugin-depend\": \">=1.2.0\",\n\t\t\"eslint-plugin-pnpm\": \">=0.3.1\",\n\t\t\"eslint-plugin-react-hooks\": \">=5.0.0\",\n\t\t\"eslint-plugin-react-refresh\": \">=0.4.12\",\n\t\t\"eslint-plugin-solid\": \">=0.14.3\",\n\t\t\"eslint-plugin-svelte\": \">=2.35.1\",\n\t\t\"eslint-plugin-vue\": \">=9.28.0\",\n\t\t\"eslint-processor-vue-blocks\": \">=0.1.2\",\n\t\t\"vue-eslint-parser\": \">=9.4.3\"\n\t},\n\t\"peerDependenciesMeta\": {\n\t\t\"@eslint-react/eslint-plugin\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"@next/eslint-plugin-next\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"@tanstack/eslint-plugin-query\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"@tanstack/eslint-plugin-router\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"astro-eslint-parser\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"eslint-plugin-astro\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"eslint-plugin-better-tailwindcss\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"eslint-plugin-depend\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"eslint-plugin-pnpm\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"eslint-plugin-react-hooks\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"eslint-plugin-react-refresh\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"eslint-plugin-solid\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"eslint-plugin-svelte\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"eslint-plugin-vue\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"eslint-processor-vue-blocks\": {\n\t\t\t\"optional\": true\n\t\t},\n\t\t\"vue-eslint-parser\": {\n\t\t\t\"optional\": true\n\t\t}\n\t},\n\t\"dependencies\": {\n\t\t\"@antfu/install-pkg\": \"1.1.0\",\n\t\t\"@clack/prompts\": \"0.11.0\",\n\t\t\"@eslint-community/eslint-plugin-eslint-comments\": \"4.5.0\",\n\t\t\"@eslint/compat\": \"1.3.1\",\n\t\t\"@eslint/js\": \"9.29.0\",\n\t\t\"@stylistic/eslint-plugin\": \"5.0.0\",\n\t\t\"@zayne-labs/toolkit-type-helpers\": \"0.10.2\",\n\t\t\"ansis\": \"4.1.0\",\n\t\t\"cac\": \"6.7.14\",\n\t\t\"eslint-config-flat-gitignore\": \"2.1.0\",\n\t\t\"eslint-flat-config-utils\": \"2.1.0\",\n\t\t\"eslint-import-resolver-typescript\": \"4.4.4\",\n\t\t\"eslint-merge-processors\": \"^2.0.0\",\n\t\t\"eslint-plugin-import-x\": \"4.16.1\",\n\t\t\"eslint-plugin-jsdoc\": \"51.2.3\",\n\t\t\"eslint-plugin-jsonc\": \"2.20.1\",\n\t\t\"eslint-plugin-n\": \"17.20.0\",\n\t\t\"eslint-plugin-perfectionist\": \"4.15.0\",\n\t\t\"eslint-plugin-security\": \"3.0.1\",\n\t\t\"eslint-plugin-toml\": \"^0.12.0\",\n\t\t\"eslint-plugin-unicorn\": \"59.0.1\",\n\t\t\"eslint-plugin-yml\": \"^1.17.0\",\n\t\t\"globals\": \"16.2.0\",\n\t\t\"jsonc-eslint-parser\": \"2.4.0\",\n\t\t\"local-pkg\": \"1.1.1\",\n\t\t\"parse-gitignore\": \"2.0.0\",\n\t\t\"toml-eslint-parser\": \"0.10.0\",\n\t\t\"typescript-eslint\": \"8.35.0\",\n\t\t\"yaml-eslint-parser\": \"1.3.0\"\n\t},\n\t\"devDependencies\": {\n\t\t\"@arethetypeswrong/cli\": \"0.18.2\",\n\t\t\"@changesets/cli\": \"2.29.5\",\n\t\t\"@eslint-react/eslint-plugin\": \"1.52.2\",\n\t\t\"@next/eslint-plugin-next\": \"15.3.4\",\n\t\t\"@size-limit/esbuild-why\": \"11.2.0\",\n\t\t\"@size-limit/preset-small-lib\": \"11.2.0\",\n\t\t\"@tanstack/eslint-plugin-query\": \"5.81.2\",\n\t\t\"@tanstack/eslint-plugin-router\": \"1.121.21\",\n\t\t\"@total-typescript/ts-reset\": \"0.6.1\",\n\t\t\"@types/eslint-plugin-security\": \"3.0.0\",\n\t\t\"@types/node\": \"24.0.4\",\n\t\t\"@zayne-labs/tsconfig\": \"workspace:*\",\n\t\t\"astro-eslint-parser\": \"1.2.2\",\n\t\t\"concurrently\": \"9.2.0\",\n\t\t\"cross-env\": \"7.0.3\",\n\t\t\"eslint\": \"9.29.0\",\n\t\t\"eslint-plugin-astro\": \"1.3.1\",\n\t\t\"eslint-plugin-better-tailwindcss\": \"3.4.2\",\n\t\t\"eslint-plugin-depend\": \"1.2.0\",\n\t\t\"eslint-plugin-pnpm\": \"0.3.1\",\n\t\t\"eslint-plugin-react-hooks\": \"5.2.0\",\n\t\t\"eslint-plugin-react-refresh\": \"0.4.20\",\n\t\t\"eslint-plugin-solid\": \"0.14.5\",\n\t\t\"eslint-plugin-svelte\": \"3.10.1\",\n\t\t\"eslint-plugin-vue\": \"10.2.0\",\n\t\t\"eslint-processor-vue-blocks\": \"2.0.0\",\n\t\t\"eslint-typegen\": \"2.2.0\",\n\t\t\"husky\": \"9.1.7\",\n\t\t\"lint-staged\": \"16.1.2\",\n\t\t\"pkg-pr-new\": \"0.0.53\",\n\t\t\"prettier\": \"3.6.2\",\n\t\t\"publint\": \"0.3.12\",\n\t\t\"size-limit\": \"11.2.0\",\n\t\t\"tailwindcss\": \"^4.1.11\",\n\t\t\"tsdown\": \"^0.12.9\",\n\t\t\"tsx\": \"4.20.3\",\n\t\t\"typescript\": \"5.8.3\",\n\t\t\"vue-eslint-parser\": \"10.1.4\"\n\t},\n\t\"publishConfig\": {\n\t\t\"access\": \"public\",\n\t\t\"registry\": \"https://registry.npmjs.org/\",\n\t\t\"provenance\": true\n\t}\n}\n","import { defineEnumDeep } from \"@zayne-labs/toolkit-type-helpers\";\nimport c from \"ansis\";\nimport type { ExtraLibrariesOption, FrameworkOption, 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<FrameworkOption>> = [\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: FrameworkOption[] = frameworkOptions.map(({ value }) => value);\n\nexport const extraOptions: Array<PromItem<ExtraLibrariesOption>> = [\n\t{\n\t\tlabel: c.cyan(\"TailwindCSS\"),\n\t\tvalue: \"tailwindcss\",\n\t},\n];\n\nexport const extra: ExtraLibrariesOption[] = 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\tvue: [\"eslint-plugin-vue\", \"eslint-processor-vue-blocks\", \"vue-eslint-parser\"],\n});\n","import { execSync } from \"node:child_process\";\n\nexport function 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 function 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 async function updateEslintFiles(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\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\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","export const versionsMap = {\n\t\"@eslint-react/eslint-plugin\": \"^1.38.4\",\n\t\"astro-eslint-parser\": \"^1.2.2\",\n\teslint: \"^9.24.0\",\n\t\"eslint-plugin-astro\": \"^1.3.1\",\n\t\"eslint-plugin-react-hooks\": \"^5.2.0\",\n\t\"eslint-plugin-react-refresh\": \"^0.4.19\",\n\t\"eslint-plugin-solid\": \"^0.14.5\",\n\t\"eslint-plugin-svelte\": \"^3.3.3\",\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 async function updatePackageJson(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 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 { green } from \"ansis\";\nimport { vscodeSettingsString } from \"../constants\";\nimport type { PromptResult } from \"../types\";\n\nexport async function updateVscodeSettings(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(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(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 { ExtraLibrariesOption, FrameworkOption, 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 async function run(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 ExtraLibrariesOption[],\n\t\tframeworks: (argTemplate ?? []) as FrameworkOption[],\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`\"${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<FrameworkOption>({\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`\"${argExtra}\" isn't a valid extra util. Please choose from below: `\n\t\t\t\t\t\t:\t\"Select a extra utils:\";\n\n\t\t\t\t\treturn p.multiselect<ExtraLibrariesOption>({\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 { type CliRunOptions, run } from \"./run\";\n\nfunction header(): void {\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: perfectionist / tailwindcss\", { type: [] })\n\t.action(async (options: CliRunOptions) => {\n\t\theader();\n\t\ttry {\n\t\t\tawait run(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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"}