@keit/create-base 0.1.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/detect.d.ts CHANGED
@@ -5,5 +5,9 @@ export interface DetectedProject {
5
5
  license?: string;
6
6
  hasTypeScript?: boolean;
7
7
  }
8
+ /**
9
+ * Scans the target execution directory for an existing package.json.
10
+ * If found, extracts current project metadata to pre-fill prompts.
11
+ */
8
12
  export declare function detectExistingProject(cwd: string): DetectedProject;
9
13
  //# sourceMappingURL=detect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAyBlE"}
1
+ {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAwBlE"}
package/dist/detect.js CHANGED
@@ -1,8 +1,12 @@
1
1
  import { existsSync, readFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
+ /**
4
+ * Scans the target execution directory for an existing package.json.
5
+ * If found, extracts current project metadata to pre-fill prompts.
6
+ */
3
7
  export function detectExistingProject(cwd) {
4
8
  const pkgPath = join(cwd, "package.json");
5
- // No package.json found return empty, prompts will ask everything
9
+ // No package.json found - return empty, prompts will ask everything
6
10
  if (!existsSync(pkgPath))
7
11
  return {};
8
12
  try {
@@ -14,14 +18,13 @@ export function detectExistingProject(cwd) {
14
18
  return {
15
19
  name: pkg.name,
16
20
  description: pkg.description,
17
- // author can be a string or { name: string }
18
21
  author: typeof pkg.author === "string" ? pkg.author : pkg.author?.name,
19
22
  license: pkg.license,
20
23
  hasTypeScript: "typescript" in allDeps,
21
24
  };
22
25
  }
23
26
  catch {
24
- // Malformed package.json treat as empty
27
+ // Malformed package.json - treat as empty
25
28
  return {};
26
29
  }
27
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"detect.js","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAWjC,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAE1C,oEAAoE;IACpE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG;YACd,GAAG,GAAG,CAAC,YAAY;YACnB,GAAG,GAAG,CAAC,eAAe;SACvB,CAAC;QAEF,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,6CAA6C;YAC7C,MAAM,EAAE,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI;YACtE,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,aAAa,EAAE,YAAY,IAAI,OAAO;SACvC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,0CAA0C;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"detect.js","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAUjC;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAE1C,oEAAoE;IACpE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG;YACd,GAAG,GAAG,CAAC,YAAY;YACnB,GAAG,GAAG,CAAC,eAAe;SACvB,CAAC;QAEF,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,MAAM,EAAE,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI;YACtE,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,aAAa,EAAE,YAAY,IAAI,OAAO;SACvC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,0CAA0C;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -1,4 +1,10 @@
1
1
  import type { Answers } from "./prompts.js";
2
+ /**
3
+ * Selectively injects configurations based on interactive prompts or CLI flags.
4
+ */
2
5
  export declare function generateExtraFiles(cwd: string, targetDir: string, answers: Answers): Promise<void>;
6
+ /**
7
+ * Orchestrates the entire file generation pipeline sequentially.
8
+ */
3
9
  export declare function generateFiles(cwd: string, targetDir: string, answers: Answers, isToolingOnly: boolean): Promise<void>;
4
10
  //# sourceMappingURL=generator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AA+C5C,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,iBA4DxF;AAsBD,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,OAAO,iBAKvB"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAoD5C;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,iBA0DxF;AAyBD;;GAEG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,OAAO,iBAKvB"}
package/dist/generator.js CHANGED
@@ -2,17 +2,20 @@ import { copyFileSync, existsSync, mkdirSync, readdirSync, statSync } from "node
2
2
  import { dirname, join } from "node:path";
3
3
  import pc from "picocolors";
4
4
  import { isVSCodeEditor } from "./utils.js";
5
- // Reusable utility to safely replicate file structures recursively
5
+ /**
6
+ * Core engine utility to safely replicate file structures recursively.
7
+ * Reads the source array, maps the destinations, and streams the copying.
8
+ */
6
9
  async function copyFiles(items, sourceDir, targetDir) {
7
10
  let fileCount = 0;
8
- items.forEach((item) => {
11
+ for (const item of items) {
9
12
  try {
10
13
  const sourcePath = join(sourceDir, item);
11
14
  const destinationPath = join(targetDir, item);
12
15
  // Only act on files, skipping directories naturally
13
16
  if (statSync(sourcePath).isFile()) {
14
17
  const destDirname = dirname(destinationPath);
15
- // Ensure parent directory exists before writing
18
+ // Ensure parent directory tree exists before writing the file
16
19
  if (!existsSync(destDirname)) {
17
20
  mkdirSync(destDirname, { recursive: true });
18
21
  }
@@ -25,20 +28,25 @@ async function copyFiles(items, sourceDir, targetDir) {
25
28
  console.error(pc.red(`✖ Resolution error during structural asset sync: ${item}`), error);
26
29
  process.exit(1);
27
30
  }
28
- });
31
+ }
29
32
  if (fileCount > 0) {
30
- console.log(pc.dim(` Synced ${fileCount} target asset files cleanly.`));
33
+ console.log(pc.dim(` Synced ${fileCount} target asset files cleanly.\n`));
31
34
  }
32
35
  }
36
+ /**
37
+ * Scaffolds the base foundation files required for all generated workspaces.
38
+ */
33
39
  async function generateBaseFiles(cwd, targetDir) {
34
40
  console.log(pc.cyan("📁 Cloning baseline environmental layouts..."));
35
41
  const baseDir = join(cwd, "base");
36
42
  if (!existsSync(baseDir))
37
43
  return;
38
44
  const baseItems = readdirSync(baseDir, { recursive: true });
39
- console.log(`BaseDir: ${baseDir}; targetDir: ${targetDir}`);
40
45
  await copyFiles(baseItems, baseDir, targetDir);
41
46
  }
47
+ /**
48
+ * Selectively injects configurations based on interactive prompts or CLI flags.
49
+ */
42
50
  export async function generateExtraFiles(cwd, targetDir, answers) {
43
51
  const isTypeScript = answers.language === "typescript";
44
52
  const hasEditor = answers.editor !== "none";
@@ -48,7 +56,7 @@ export async function generateExtraFiles(cwd, targetDir, answers) {
48
56
  }
49
57
  console.log(pc.cyan("🧩 Injecting contextual development tooling variations..."));
50
58
  const extrasDir = join(cwd, "extras");
51
- // - TypeScript Configs -
59
+ // TypeScript Specific Configurations
52
60
  if (isTypeScript) {
53
61
  console.log(pc.dim(" Applying explicit structural TypeScript configurations..."));
54
62
  const tsDir = answers.template === "library"
@@ -59,7 +67,7 @@ export async function generateExtraFiles(cwd, targetDir, answers) {
59
67
  await copyFiles(tsItems, tsDir, targetDir);
60
68
  }
61
69
  }
62
- // - Editor Profiles -
70
+ // Editor Specific Profiles
63
71
  if (hasEditor) {
64
72
  console.log(pc.dim(` Generating workspace rulesets targeting editor environment: ${answers.editor}...`));
65
73
  const editorsDir = join(extrasDir, "editors");
@@ -74,7 +82,7 @@ export async function generateExtraFiles(cwd, targetDir, answers) {
74
82
  await copyFiles(editorItems, editorDir, targetDir);
75
83
  }
76
84
  }
77
- // - Optional Packages -
85
+ // Optional Extra Ecosystem Packages
78
86
  if (hasOptionalLibs) {
79
87
  for (const extra of answers.extras) {
80
88
  console.log(pc.dim(` Configuring optional runtime ecosystem plug-in: ${extra}...`));
@@ -86,8 +94,11 @@ export async function generateExtraFiles(cwd, targetDir, answers) {
86
94
  }
87
95
  }
88
96
  }
97
+ /**
98
+ * Scaffolds specific functional template files (e.g., minimal, library, rest-api)
99
+ */
89
100
  async function generateTemplateFiles(cwd, targetDir, answers, isToolingOnly) {
90
- // We only scaffold source code if it is a brand new project.
101
+ // We only scaffold source code templates if this is not a tooling-only operation
91
102
  if (!isToolingOnly) {
92
103
  console.log(pc.cyan(`📦 Generating functional codebase matching template: ${answers.template}...`));
93
104
  const templateDir = join(cwd, "templates", answers.template);
@@ -97,6 +108,9 @@ async function generateTemplateFiles(cwd, targetDir, answers, isToolingOnly) {
97
108
  }
98
109
  }
99
110
  }
111
+ /**
112
+ * Orchestrates the entire file generation pipeline sequentially.
113
+ */
100
114
  export async function generateFiles(cwd, targetDir, answers, isToolingOnly) {
101
115
  await generateBaseFiles(cwd, targetDir);
102
116
  await generateExtraFiles(cwd, targetDir, answers);
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -9,25 +9,48 @@ import { generateFiles } from "./generator.js";
9
9
  import { runPrompts } from "./prompts.js";
10
10
  import { scaffoldProjectMetadata } from "./scaffold.js";
11
11
  import { validateArgv } from "./validate.js";
12
+ // Parse CLI arguments with mapping configuration
12
13
  const argv = minimist(process.argv.slice(2), {
13
- string: ["template", "language", "description", "author", "license", "git-remote", "editor"],
14
+ string: [
15
+ "template",
16
+ "t",
17
+ "language",
18
+ "l",
19
+ "description",
20
+ "d",
21
+ "author",
22
+ "a",
23
+ "license",
24
+ "git-remote",
25
+ "g",
26
+ "editor",
27
+ "e",
28
+ "extras",
29
+ ],
14
30
  alias: {
15
31
  t: "template",
16
32
  l: "language",
17
33
  d: "description",
18
34
  a: "author",
19
35
  e: "editor",
36
+ g: "git-remote",
20
37
  },
21
38
  });
39
+ // Run validation against strictly defined enums to prevent silent errors
22
40
  validateArgv(argv);
41
+ /**
42
+ * Main execution pipeline for the CLI tool.
43
+ */
23
44
  async function main() {
24
45
  const projectArg = argv._[0];
25
46
  const isCurrentFolder = !projectArg || projectArg === ".";
47
+ // The directory where the user executes the command
26
48
  const executionDir = process.cwd();
49
+ // The directory where the compiled CLI tool itself resides
27
50
  const cliDir = resolve(dirname(fileURLToPath(import.meta.url)), "..");
28
51
  console.log();
29
52
  console.log(pc.bold(pc.cyan("@keit/create-base")));
30
- console.log(pc.dim("Modern TypeScript/JavaScript project scaffolder"));
53
+ console.log(pc.dim("Professional TypeScript and JavaScript project generator"));
31
54
  console.log();
32
55
  const detected = isCurrentFolder ? detectExistingProject(executionDir) : {};
33
56
  const answers = await runPrompts(isCurrentFolder, projectArg, argv, detected);
@@ -47,9 +70,11 @@ async function main() {
47
70
  console.log(pc.green(`✔ Created folder: ${answers.projectName}`));
48
71
  console.log();
49
72
  }
50
- console.log(pc.dim("Scaffolding project..."));
73
+ console.log(pc.dim("Initializing project scaffold..."));
51
74
  console.log();
75
+ // Phase 1: Clone underlying baseline folders and specific tooling templates
52
76
  await generateFiles(cliDir, targetDir, answers, isToolingOnly);
77
+ // Phase 2: Create manifests, configuration files, and install dependencies
53
78
  await scaffoldProjectMetadata(targetDir, answers, isToolingOnly);
54
79
  console.log();
55
80
  console.log(pc.bold(pc.green("🚀 Execution phase completed cleanly!")));
@@ -57,7 +82,7 @@ async function main() {
57
82
  console.log();
58
83
  }
59
84
  main().catch((err) => {
60
- console.error(pc.red("Something went wrong:"), err);
85
+ console.error(pc.red("\n✖ Unhandled runtime error occurred:"), err);
61
86
  process.exit(1);
62
87
  });
63
88
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/prompts.d.ts CHANGED
@@ -22,5 +22,10 @@ export declare const VALID_VALUES: {
22
22
  readonly editor: readonly ["vscode", "cursor", "windsurf", "zed", "none"];
23
23
  readonly license: readonly ["MIT", "ISC", "Apache-2.0", "UNLICENSED"];
24
24
  };
25
- export declare function runPrompts(isCurrentFolder: boolean, projectArg: string | undefined, argv: Record<string, string>, detected?: DetectedProject): Promise<Answers>;
25
+ interface ParsedArgs {
26
+ _?: string[];
27
+ [key: string]: unknown;
28
+ }
29
+ export declare function runPrompts(isCurrentFolder: boolean, projectArg: string | undefined, argv: ParsedArgs, detected?: DetectedProject): Promise<Answers>;
30
+ export {};
26
31
  //# sourceMappingURL=prompts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAInD,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,YAAY,CAAC;AACnD,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;AACvE,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,KAAK,GAAG,MAAM,CAAC;AACvE,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,UAAU,CAAC;AAE/C,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAKD,eAAO,MAAM,YAAY,2CAA4C,CAAC;AAEtE,eAAO,MAAM,YAAY;;;;;CAKf,CAAC;AAIX,wBAAsB,UAAU,CAC9B,eAAe,EAAE,OAAO,EACxB,UAAU,EAAE,MAAM,GAAG,SAAS,EAE9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAE5B,QAAQ,GAAE,eAAoB,GAC7B,OAAO,CAAC,OAAO,CAAC,CAuOlB"}
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,YAAY,CAAC;AACnD,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;AACvE,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,KAAK,GAAG,MAAM,CAAC;AACvE,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,UAAU,CAAC;AAE/C,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,eAAO,MAAM,YAAY,2CAA4C,CAAC;AAEtE,eAAO,MAAM,YAAY;;;;;CAKf,CAAC;AAEX,UAAU,UAAU;IAClB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,wBAAsB,UAAU,CAC9B,eAAe,EAAE,OAAO,EACxB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,IAAI,EAAE,UAAU,EAChB,QAAQ,GAAE,eAAoB,GAC7B,OAAO,CAAC,OAAO,CAAC,CA6MlB"}
package/dist/prompts.js CHANGED
@@ -1,7 +1,5 @@
1
1
  import pc from "picocolors";
2
2
  import prompts from "prompts";
3
- // ── Allowed values for CLI flag validation ────────────────────────────────────
4
- // Single source of truth — imported by validate.ts so the two never drift apart
5
3
  export const vscodeFamily = ["vscode", "cursor", "windsurf"];
6
4
  export const VALID_VALUES = {
7
5
  template: ["minimal", "rest-api", "library", "monorepo"],
@@ -9,209 +7,179 @@ export const VALID_VALUES = {
9
7
  editor: [...vscodeFamily, "zed", "none"],
10
8
  license: ["MIT", "ISC", "Apache-2.0", "UNLICENSED"],
11
9
  };
12
- // ── Prompt runner ─────────────────────────────────────────────────────────────
13
- export async function runPrompts(isCurrentFolder, projectArg,
14
- // CLI flags parsed by minimist (e.g. --template rest-api)
15
- argv,
16
- // Data detected from an existing package.json (empty object for new projects)
17
- detected = {}) {
18
- // Exit cleanly on Ctrl+C instead of throwing an unhandled rejection
10
+ export async function runPrompts(isCurrentFolder, projectArg, argv, detected = {}) {
11
+ const hasAllFlags = !!(argv.language && argv.template && argv.license && argv.author);
12
+ const projectNameFromArg = argv._?.[0];
13
+ if (hasAllFlags) {
14
+ return {
15
+ projectName: projectNameFromArg ?? detected.name ?? "my-project",
16
+ description: argv.description ?? detected.description ?? "",
17
+ author: argv.author ?? detected.author ?? "",
18
+ license: argv.license ?? detected.license ?? "MIT",
19
+ language: argv.language,
20
+ template: argv.template,
21
+ editor: argv.editor ?? "vscode",
22
+ extras: Array.isArray(argv.extras) ? argv.extras : argv.extras ? [String(argv.extras)] : [],
23
+ gitRemote: argv["git-remote"] ?? "",
24
+ folderPurpose: "new",
25
+ };
26
+ }
19
27
  const onCancel = () => {
20
28
  console.log();
21
- console.log(pc.red("✖ Cancelled."));
29
+ console.log(pc.red("✖ Cancelled prompt execution."));
22
30
  process.exit(0);
23
31
  };
24
- const answers = await prompts([
25
- // ── Folder purpose ─────────────────────────────────────────────────────
26
- {
27
- // Only shown when no folder argument was given (i.e. the user ran the
28
- // CLI inside an existing directory). Determines whether to scaffold a
29
- // fresh project or just layer tooling configs onto what's already there.
30
- type: isCurrentFolder ? "select" : null,
31
- name: "folderPurpose",
32
- message: "The target directory is the current folder. Is this for:",
33
- choices: [
34
- { title: "A new project (initialize from scratch)", value: "new" },
35
- { title: "An existing project (add tooling configurations only)", value: "existing" },
36
- ],
37
- initial: 0,
38
- },
39
- // ── Project identity ───────────────────────────────────────────────────
40
- {
41
- // Skipped when:
42
- // • a folder name was passed as a positional argument, OR
43
- // • the user chose "existing" (name is read from package.json instead)
44
- type: (_prev, values) => {
45
- if (!isCurrentFolder && projectArg && projectArg !== ".")
46
- return null;
47
- if (values.folderPurpose === "existing")
48
- return null;
49
- return "text";
32
+ const hasDirectFlags = Boolean(argv.language || argv.template);
33
+ let answers = {};
34
+ if (!hasDirectFlags) {
35
+ answers = await prompts([
36
+ {
37
+ type: isCurrentFolder ? "select" : null,
38
+ name: "folderPurpose",
39
+ message: "The target directory is the current folder. Is this for:",
40
+ choices: [
41
+ { title: "A new project (initialize from scratch)", value: "new" },
42
+ { title: "An existing project (add tooling configurations only)", value: "existing" },
43
+ ],
44
+ initial: 0,
50
45
  },
51
- name: "projectName",
52
- message: "Project name:",
53
- // Pre-fill with the detected package name if available
54
- initial: detected.name ?? "my-project",
55
- validate: (v) => (v.trim().length > 0 ? true : "Project name cannot be empty."),
56
- },
57
- {
58
- // Skipped when:
59
- // • --description flag was passed, OR
60
- // • existing project (description read from package.json)
61
- type: (_prev, values) => argv.description || values.folderPurpose === "existing" ? null : "text",
62
- name: "description",
63
- message: "Description:",
64
- // Pre-fill from detected package.json if available
65
- initial: detected.description ?? "",
66
- },
67
- {
68
- // Skipped when:
69
- // • --author flag was passed, OR
70
- // • existing project (author read from package.json)
71
- type: (_prev, values) => argv.author || values.folderPurpose === "existing" ? null : "text",
72
- name: "author",
73
- message: "Author:",
74
- // Pre-fill from detected package.json if available
75
- initial: detected.author ?? "",
76
- },
77
- {
78
- // Skipped when:
79
- // • --license flag was passed, OR
80
- // • existing project (license read from package.json)
81
- type: (_prev, values) => argv.license || values.folderPurpose === "existing" ? null : "select",
82
- name: "license",
83
- message: "License:",
84
- choices: [
85
- { title: "MIT", value: "MIT" },
86
- { title: "ISC", value: "ISC" },
87
- { title: "Apache-2.0", value: "Apache-2.0" },
88
- { title: "Unlicensed", value: "UNLICENSED" },
89
- ],
90
- // Pre-select the matching license if one was detected in package.json
91
- initial: detected.license
92
- ? Math.max(0, ["MIT", "ISC", "Apache-2.0", "UNLICENSED"].indexOf(detected.license))
93
- : 0,
94
- },
95
- // ── Project setup ──────────────────────────────────────────────────────
96
- {
97
- // Skipped when:
98
- // • --language flag was passed, OR
99
- // • existing project (language auto-detected from dependencies)
100
- type: (_prev, values) => argv.language || values.folderPurpose === "existing" ? null : "select",
101
- name: "language",
102
- message: "Language:",
103
- choices: [
104
- { title: "TypeScript", value: "typescript" },
105
- { title: "JavaScript", value: "javascript" },
106
- ],
107
- // Pre-select TypeScript unless detect explicitly found no TypeScript dep
108
- initial: detected.hasTypeScript === false ? 1 : 0,
109
- },
110
- {
111
- // Skipped when:
112
- // • --template flag was passed, OR
113
- // • existing project (no template needed, only tooling is added)
114
- type: (_prev, values) => argv.template || values.folderPurpose === "existing" ? null : "select",
115
- name: "template",
116
- message: "Template:",
117
- choices: [
118
- {
119
- title: "Minimal",
120
- value: "minimal",
121
- description: "Blank Node.js app — bots, scripts, servers",
46
+ {
47
+ type: (_prev, values) => {
48
+ if (!isCurrentFolder && projectArg && projectArg !== ".")
49
+ return null;
50
+ if (values.folderPurpose === "existing")
51
+ return null;
52
+ return "text";
122
53
  },
123
- {
124
- title: "REST API",
125
- value: "rest-api",
126
- description: "Express + basic routing structure",
127
- },
128
- {
129
- title: "Library",
130
- value: "library",
131
- description: "npm-publishable package with exports and type declarations",
132
- },
133
- {
134
- title: "Monorepo",
135
- value: "monorepo",
136
- description: "pnpm workspaces — Next.js + NestJS apps",
137
- },
138
- ],
139
- initial: 0,
140
- },
141
- // ── Editor ────────────────────────────────────────────────────────────
142
- {
143
- // Skipped when --editor flag was passed.
144
- // The selected value determines which config directory gets generated:
145
- // vscode / cursor / windsurf → .vscode/settings.json
146
- // zed → .zed/settings.json
147
- // none → no editor config (docs link printed instead)
148
- type: argv.editor ? null : "select",
149
- name: "editor",
150
- message: "Editor / IDE:",
151
- choices: [
152
- {
153
- title: "VS Code",
154
- value: "vscode",
155
- description: "Creates .vscode/settings.json",
156
- },
157
- {
158
- title: "Cursor",
159
- value: "cursor",
160
- description: "Creates .vscode/settings.json",
161
- },
162
- {
163
- title: "Windsurf",
164
- value: "windsurf",
165
- description: "Creates .vscode/settings.json",
166
- },
167
- {
168
- title: "Zed",
169
- value: "zed",
170
- description: "Creates .zed/settings.json",
171
- },
172
- {
173
- title: "None / Skip",
174
- value: "none",
175
- description: "No editor config — Biome docs link printed instead",
176
- },
177
- ],
178
- initial: 0,
179
- },
180
- // ── Optional extras ────────────────────────────────────────────────────
181
- {
182
- // Always shown. Space to toggle, Enter to confirm.
183
- // Selected values are installed as devDependencies by the generator.
184
- type: "multiselect",
185
- name: "extras",
186
- message: "Optional extras:",
187
- choices: [
188
- {
189
- title: "changelogen",
190
- value: "changelogen",
191
- description: "Auto-generate CHANGELOG.md from conventional commits",
192
- selected: true,
193
- },
194
- ],
195
- },
196
- // ── Git remote ─────────────────────────────────────────────────────────
197
- {
198
- // Skipped when:
199
- // • --git-remote flag was passed, OR
200
- // • existing project (already has a git remote set up)
201
- // Leave blank to skip — git remote add origin will not be run.
202
- type: (_prev, values) => argv["git-remote"] || values.folderPurpose === "existing" ? null : "text",
203
- name: "gitRemote",
204
- message: "Git remote URL (leave blank to skip):",
205
- initial: "",
206
- },
207
- ], { onCancel });
208
- // ── Resolve values for existing projects ───────────────────────────────────
209
- // When folderPurpose === "existing", identity prompts were skipped entirely.
210
- // We fall back to whatever was read from the existing package.json.
54
+ name: "projectName",
55
+ message: "Project name:",
56
+ initial: detected.name ?? "my-project",
57
+ validate: (v) => (v.trim().length > 0 ? true : "Project name cannot be empty."),
58
+ },
59
+ {
60
+ type: (_prev, values) => argv.description || values.folderPurpose === "existing" ? null : "text",
61
+ name: "description",
62
+ message: "Description:",
63
+ initial: detected.description ?? "",
64
+ },
65
+ {
66
+ type: (_prev, values) => argv.author || values.folderPurpose === "existing" ? null : "text",
67
+ name: "author",
68
+ message: "Author:",
69
+ initial: detected.author ?? "",
70
+ },
71
+ {
72
+ type: (_prev, values) => argv.license || values.folderPurpose === "existing" ? null : "select",
73
+ name: "license",
74
+ message: "License:",
75
+ choices: [
76
+ { title: "MIT", value: "MIT" },
77
+ { title: "ISC", value: "ISC" },
78
+ { title: "Apache-2.0", value: "Apache-2.0" },
79
+ { title: "Unlicensed", value: "UNLICENSED" },
80
+ ],
81
+ initial: detected.license
82
+ ? Math.max(0, ["MIT", "ISC", "Apache-2.0", "UNLICENSED"].indexOf(detected.license))
83
+ : 0,
84
+ },
85
+ {
86
+ type: (_prev, values) => argv.language || values.folderPurpose === "existing" ? null : "select",
87
+ name: "language",
88
+ message: "Language:",
89
+ choices: [
90
+ { title: "TypeScript", value: "typescript" },
91
+ { title: "JavaScript", value: "javascript" },
92
+ ],
93
+ initial: detected.hasTypeScript === false ? 1 : 0,
94
+ },
95
+ {
96
+ type: (_prev, values) => argv.template || values.folderPurpose === "existing" ? null : "select",
97
+ name: "template",
98
+ message: "Template:",
99
+ choices: [
100
+ {
101
+ title: "Minimal",
102
+ value: "minimal",
103
+ description: "Blank Node.js app - bots, scripts, servers",
104
+ },
105
+ {
106
+ title: "REST API",
107
+ value: "rest-api",
108
+ description: "Express + basic routing structure",
109
+ },
110
+ {
111
+ title: "Library",
112
+ value: "library",
113
+ description: "npm-publishable package with exports and type declarations",
114
+ },
115
+ {
116
+ title: "Monorepo",
117
+ value: "monorepo",
118
+ description: "pnpm workspaces - Next.js + NestJS apps",
119
+ },
120
+ ],
121
+ initial: 0,
122
+ },
123
+ {
124
+ type: argv.editor ? null : "select",
125
+ name: "editor",
126
+ message: "Editor / IDE:",
127
+ choices: [
128
+ {
129
+ title: "VS Code",
130
+ value: "vscode",
131
+ description: "Creates .vscode/settings.json",
132
+ },
133
+ {
134
+ title: "Cursor",
135
+ value: "cursor",
136
+ description: "Creates .vscode/settings.json",
137
+ },
138
+ {
139
+ title: "Windsurf",
140
+ value: "windsurf",
141
+ description: "Creates .vscode/settings.json",
142
+ },
143
+ {
144
+ title: "Zed",
145
+ value: "zed",
146
+ description: "Creates .zed/settings.json",
147
+ },
148
+ {
149
+ title: "None / Skip",
150
+ value: "none",
151
+ description: "No editor config - Biome docs link printed instead",
152
+ },
153
+ ],
154
+ initial: 0,
155
+ },
156
+ {
157
+ type: argv.extras ? null : "multiselect",
158
+ name: "extras",
159
+ message: "Optional extras:",
160
+ choices: [
161
+ {
162
+ title: "changelogen",
163
+ value: "changelogen",
164
+ description: "Auto-generate CHANGELOG.md from conventional commits",
165
+ selected: true,
166
+ },
167
+ ],
168
+ },
169
+ {
170
+ type: (_prev, values) => argv["git-remote"] || values.folderPurpose === "existing" ? null : "text",
171
+ name: "gitRemote",
172
+ message: "Git remote URL (leave blank to skip):",
173
+ initial: "",
174
+ },
175
+ ], { onCancel });
176
+ }
211
177
  const isExisting = answers.folderPurpose === "existing";
212
- // Fallback project name: positional arg → detected name → "my-project"
213
178
  const fallbackName = projectArg && projectArg !== "." ? projectArg : (detected.name ?? "my-project");
214
- // ── Merge: CLI flag > prompt answer > detected value > hardcoded default ──
179
+ let parsedExtras = answers.extras ?? [];
180
+ if (argv.extras) {
181
+ parsedExtras = Array.isArray(argv.extras) ? argv.extras : [String(argv.extras)];
182
+ }
215
183
  return {
216
184
  projectName: answers.projectName ?? fallbackName,
217
185
  description: argv.description ?? answers.description ?? detected.description ?? "",
@@ -219,11 +187,10 @@ detected = {}) {
219
187
  license: argv.license ?? answers.license ?? detected.license ?? "MIT",
220
188
  language: argv.language ??
221
189
  answers.language ??
222
- // For existing projects, infer language from detected deps
223
190
  (isExisting ? (detected.hasTypeScript ? "typescript" : "javascript") : "typescript"),
224
191
  template: argv.template ?? answers.template ?? "minimal",
225
192
  editor: argv.editor ?? answers.editor ?? "vscode",
226
- extras: answers.extras ?? [],
193
+ extras: parsedExtras,
227
194
  gitRemote: argv["git-remote"] ?? answers.gitRemote ?? "",
228
195
  folderPurpose: answers.folderPurpose,
229
196
  };
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AA4H5C,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,OAAO,GACrB,OAAO,CAAC,IAAI,CAAC,CA4Bf"}
1
+ {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAsL5C,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,OAAO,GACrB,OAAO,CAAC,IAAI,CAAC,CA2Df"}
package/dist/scaffold.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { execSync } from "node:child_process";
2
- import { existsSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
3
3
  import { join } from "node:path";
4
4
  import pc from "picocolors";
5
5
  function buildPackageJson(answers) {
@@ -17,6 +17,12 @@ function buildPackageJson(answers) {
17
17
  prepare: "husky",
18
18
  },
19
19
  };
20
+ if (answers.gitRemote) {
21
+ basePkg.repository = {
22
+ type: "git",
23
+ url: answers.gitRemote,
24
+ };
25
+ }
20
26
  const devDependencies = {
21
27
  "@biomejs/biome": "^2.5.0",
22
28
  "@commitlint/cli": "^21.0.2",
@@ -28,19 +34,37 @@ function buildPackageJson(answers) {
28
34
  "lint-staged": "^17.0.7",
29
35
  secretlint: "^13.0.2",
30
36
  };
31
- if (answers.language === "typescript") {
32
- devDependencies["typescript"] = "^6.0.3";
37
+ const scripts = basePkg.scripts;
38
+ const isTs = answers.language === "typescript";
39
+ const ext = isTs ? "ts" : "js";
40
+ const runner = isTs ? "tsx" : "node";
41
+ if (isTs) {
42
+ devDependencies.typescript = "^6.0.3";
33
43
  devDependencies["@types/node"] = "^25.9.3";
34
- basePkg.scripts.typecheck = "tsc --noEmit";
35
- if (answers.template === "library") {
36
- basePkg.scripts.build = "tsc";
37
- basePkg.scripts.dev = "tsc --watch";
38
- basePkg.scripts.start = "node dist/index.js";
39
- }
44
+ devDependencies.tsx = "^4.19.2";
45
+ scripts.typecheck = "tsc --noEmit";
46
+ }
47
+ if (answers.template === "library") {
48
+ scripts.build = isTs ? "tsc" : "echo 'No build step required for JS library'";
49
+ scripts.dev = isTs ? "tsc --watch" : `node --watch src/index.${ext}`;
50
+ scripts.start = "node dist/index.js";
51
+ }
52
+ else if (answers.template === "rest-api") {
53
+ scripts.dev = `${runner} --watch src/index.${ext}`;
54
+ scripts.start = isTs ? "node dist/index.js" : `node src/index.${ext}`;
55
+ if (isTs)
56
+ scripts.build = "tsc";
57
+ }
58
+ else if (answers.template === "minimal") {
59
+ scripts.start = `${runner} src/index.${ext}`;
60
+ }
61
+ else if (answers.template === "monorepo") {
62
+ scripts.build = "npm run build --workspaces";
63
+ scripts.test = "npm run test --workspaces";
40
64
  }
41
65
  if (answers.extras.includes("changelogen")) {
42
- devDependencies["changelogen"] = "^0.6.2";
43
- basePkg.scripts.release = "changelogen --release";
66
+ devDependencies.changelogen = "^0.6.2";
67
+ scripts.release = "changelogen --release";
44
68
  }
45
69
  basePkg.devDependencies = devDependencies;
46
70
  return JSON.stringify(basePkg, null, 2);
@@ -75,24 +99,16 @@ function mergeExistingPackageJson(targetDir, answers) {
75
99
  secretlint: "^13.0.2",
76
100
  };
77
101
  if (answers.language === "typescript") {
78
- pkg.devDependencies["typescript"] = pkg.devDependencies["typescript"] || "^6.0.3";
102
+ pkg.devDependencies.typescript = pkg.devDependencies.typescript || "^6.0.3";
79
103
  pkg.devDependencies["@types/node"] = pkg.devDependencies["@types/node"] || "^25.9.3";
80
104
  }
81
105
  if (answers.extras.includes("changelogen")) {
82
- pkg.devDependencies["changelogen"] = pkg.devDependencies["changelogen"] || "^0.6.2";
106
+ pkg.devDependencies.changelogen = pkg.devDependencies.changelogen || "^0.6.2";
83
107
  }
84
108
  return JSON.stringify(pkg, null, 2);
85
109
  }
86
110
  function buildReadme(answers) {
87
- return `# ${answers.projectName}
88
-
89
- > ${answers.description || "Scaffolded with @keit/create-base"}
90
-
91
- ## Development Scripts
92
-
93
- - \`pnpm run check\` - Run full formatting, linting, and diagnostics via Biome
94
- - \`pnpm run prepare\` - Setup local Git hardware hooks via Husky
95
- ${answers.language === "typescript" ? "- `pnpm run typecheck` - Validate explicit structural types\n" : ""}`;
111
+ return `# ${answers.projectName}\n\n> ${answers.description || "Scaffolded with @keit/create-base"}\n\n## Development Scripts\n\n- \`pnpm run check\` - Run full formatting, linting, and diagnostics via Biome\n- \`pnpm run prepare\` - Setup local Git hardware hooks via Husky\n${answers.language === "typescript" ? "- `pnpm run typecheck` - Validate explicit structural types\n" : ""}`;
96
112
  }
97
113
  function buildLicense(answers) {
98
114
  const year = new Date().getFullYear();
@@ -100,11 +116,48 @@ function buildLicense(answers) {
100
116
  if (answers.license === "MIT") {
101
117
  return `MIT License\n\nCopyright (c) ${year} ${authorText}\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.`;
102
118
  }
119
+ if (answers.license === "ISC") {
120
+ return `ISC License\n\nCopyright (c) ${year} ${authorText}\n\nPermission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.`;
121
+ }
122
+ if (answers.license === "Apache-2.0") {
123
+ return `Apache License\nVersion 2.0, January 2004\nhttp://www.apache.org/licenses/\n\nCopyright ${year} ${authorText}\n\nLicensed under the Apache License, Version 2.0 (the "License");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.`;
124
+ }
103
125
  if (answers.license === "UNLICENSED") {
104
126
  return `Copyright (c) ${year} ${authorText}. All rights reserved.\nUnauthorized copying, modification, or distribution via any medium is strictly prohibited.\nProprietary and confidential.`;
105
127
  }
106
128
  return `${answers.license} License\n\nCopyright (c) ${year} ${authorText}`;
107
129
  }
130
+ function setupWorkspaceConfigs(targetDir, editor) {
131
+ if (["vscode", "cursor", "windsurf"].includes(editor)) {
132
+ const vscodeDir = join(targetDir, ".vscode");
133
+ if (!existsSync(vscodeDir)) {
134
+ mkdirSync(vscodeDir, { recursive: true });
135
+ }
136
+ const extensions = {
137
+ recommendations: ["biomejs.biome"],
138
+ };
139
+ const settings = {
140
+ "editor.formatOnSave": true,
141
+ "editor.defaultFormatter": "biomejs.biome",
142
+ "editor.codeActionsOnSave": {
143
+ "source.organizeImports.biome": "explicit",
144
+ },
145
+ };
146
+ writeFileSync(join(vscodeDir, "extensions.json"), JSON.stringify(extensions, null, 2), "utf-8");
147
+ writeFileSync(join(vscodeDir, "settings.json"), JSON.stringify(settings, null, 2), "utf-8");
148
+ }
149
+ else if (editor === "zed") {
150
+ const zedDir = join(targetDir, ".zed");
151
+ if (!existsSync(zedDir)) {
152
+ mkdirSync(zedDir, { recursive: true });
153
+ }
154
+ const settings = {
155
+ formatter: "language_server",
156
+ language_servers: ["biome"],
157
+ };
158
+ writeFileSync(join(zedDir, "settings.json"), JSON.stringify(settings, null, 2), "utf-8");
159
+ }
160
+ }
108
161
  export async function scaffoldProjectMetadata(targetDir, answers, isToolingOnly) {
109
162
  console.log(pc.cyan("⚙ Generating structural project configuration..."));
110
163
  if (isToolingOnly && existsSync(join(targetDir, "package.json"))) {
@@ -117,14 +170,42 @@ export async function scaffoldProjectMetadata(targetDir, answers, isToolingOnly)
117
170
  writeFileSync(join(targetDir, "README.md"), buildReadme(answers), "utf-8");
118
171
  writeFileSync(join(targetDir, "LICENSE"), buildLicense(answers), "utf-8");
119
172
  }
173
+ if (!isToolingOnly && answers.editor !== "none") {
174
+ console.log(pc.dim(` Configuring workspace settings for ${answers.editor}...`));
175
+ setupWorkspaceConfigs(targetDir, answers.editor);
176
+ }
177
+ try {
178
+ writeFileSync(join(targetDir, ".npmrc"), "confirmModulesPurge=false\n", "utf-8");
179
+ }
180
+ catch {
181
+ console.log(pc.yellow(" Warning: Failed to inject local .npmrc bypass."));
182
+ }
183
+ if (answers.gitRemote) {
184
+ try {
185
+ console.log(pc.dim(" Initializing Git and configuring remote repository..."));
186
+ execSync("git init", { cwd: targetDir, stdio: "ignore" });
187
+ execSync(`git remote add origin ${answers.gitRemote}`, { cwd: targetDir, stdio: "ignore" });
188
+ }
189
+ catch {
190
+ console.log(pc.yellow(" Warning: Git initialization failed. Ensure Git is installed."));
191
+ }
192
+ }
120
193
  try {
121
194
  console.log(pc.cyan("📦 Running dependency resolution step..."));
122
195
  console.log(pc.dim(" Invoking pnpm install..."));
123
- execSync("pnpm install", { cwd: targetDir, stdio: "inherit" });
124
- console.log(`${pc.green("✔")} Manifest assets synced successfully.`);
196
+ execSync("pnpm install", {
197
+ cwd: targetDir,
198
+ stdio: "inherit",
199
+ env: {
200
+ ...process.env,
201
+ CI: "true",
202
+ npm_config_confirmModulesPurge: "false",
203
+ },
204
+ });
205
+ console.log(`\n ${pc.green("✔")} Manifest assets synced successfully.`);
125
206
  }
126
- catch (error) {
127
- console.error(pc.red("✖ External subprocess resolution via pnpm failed."), error);
207
+ catch {
208
+ console.error(pc.red("\n✖ External subprocess resolution via pnpm failed. Check the error log above."));
128
209
  process.exit(1);
129
210
  }
130
211
  }
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,YAAY,CAAC;AAG5B,SAAS,gBAAgB,CAAC,OAAgB;IACxC,MAAM,OAAO,GAA4B;QACvC,IAAI,EAAE,OAAO,CAAC,WAAW;QACzB,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE;YACP,MAAM,EAAE,wBAAwB;YAChC,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,uBAAuB;YAC9B,OAAO,EAAE,OAAO;SACS;KAC5B,CAAC;IAEF,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,CAAC,UAAU,GAAG;YACnB,IAAI,EAAE,KAAK;YACX,GAAG,EAAE,OAAO,CAAC,SAAS;SACvB,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAA2B;QAC9C,gBAAgB,EAAE,QAAQ;QAC1B,iBAAiB,EAAE,SAAS;QAC5B,iCAAiC,EAAE,SAAS;QAC5C,8CAA8C,EAAE,SAAS;QACzD,cAAc,EAAE,SAAS;QACzB,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,SAAS;QACf,aAAa,EAAE,SAAS;QACxB,UAAU,EAAE,SAAS;KACtB,CAAC;IAEF,MAAM,OAAO,GAAG,OAAO,CAAC,OAAiC,CAAC;IAC1D,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,KAAK,YAAY,CAAC;IAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAErC,IAAI,IAAI,EAAE,CAAC;QACT,eAAe,CAAC,UAAU,GAAG,QAAQ,CAAC;QACtC,eAAe,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;QAC3C,eAAe,CAAC,GAAG,GAAG,SAAS,CAAC;QAChC,OAAO,CAAC,SAAS,GAAG,cAAc,CAAC;IACrC,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,8CAA8C,CAAC;QAC9E,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,0BAA0B,GAAG,EAAE,CAAC;QACrE,OAAO,CAAC,KAAK,GAAG,oBAAoB,CAAC;IACvC,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,GAAG,GAAG,MAAM,sBAAsB,GAAG,EAAE,CAAC;QACnD,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,kBAAkB,GAAG,EAAE,CAAC;QACtE,IAAI,IAAI;YAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;IAClC,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,CAAC,KAAK,GAAG,GAAG,MAAM,cAAc,GAAG,EAAE,CAAC;IAC/C,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC3C,OAAO,CAAC,KAAK,GAAG,4BAA4B,CAAC;QAC7C,OAAO,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAC7C,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QAC3C,eAAe,CAAC,WAAW,GAAG,QAAQ,CAAC;QACvC,OAAO,CAAC,OAAO,GAAG,uBAAuB,CAAC;IAC5C,CAAC;IAED,OAAO,CAAC,eAAe,GAAG,eAAe,CAAC;IAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,wBAAwB,CAAC,SAAiB,EAAE,OAAgB;IACnE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEhC,GAAG,CAAC,OAAO,GAAG;QACZ,GAAG,GAAG,CAAC,OAAO;QACd,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,IAAI,wBAAwB;QACvD,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,IAAI,cAAc;QACzC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,uBAAuB;QACpD,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,IAAI,OAAO;KACzC,CAAC;IAEF,IAAI,OAAO,CAAC,QAAQ,KAAK,YAAY,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QAChE,GAAG,CAAC,OAAO,CAAC,SAAS,GAAG,cAAc,CAAC;IACzC,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,OAAO,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,uBAAuB,CAAC;IACvE,CAAC;IAED,GAAG,CAAC,eAAe,GAAG;QACpB,GAAG,GAAG,CAAC,eAAe;QACtB,gBAAgB,EAAE,QAAQ;QAC1B,iBAAiB,EAAE,SAAS;QAC5B,iCAAiC,EAAE,SAAS;QAC5C,8CAA8C,EAAE,SAAS;QACzD,cAAc,EAAE,SAAS;QACzB,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,SAAS;QACf,aAAa,EAAE,SAAS;QACxB,UAAU,EAAE,SAAS;KACtB,CAAC;IAEF,IAAI,OAAO,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;QACtC,GAAG,CAAC,eAAe,CAAC,UAAU,GAAG,GAAG,CAAC,eAAe,CAAC,UAAU,IAAI,QAAQ,CAAC;QAC5E,GAAG,CAAC,eAAe,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC;IACvF,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,eAAe,CAAC,WAAW,GAAG,GAAG,CAAC,eAAe,CAAC,WAAW,IAAI,QAAQ,CAAC;IAChF,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,WAAW,CAAC,OAAgB;IACnC,OAAO,KAAK,OAAO,CAAC,WAAW,SAAS,OAAO,CAAC,WAAW,IAAI,mCAAmC,oLAAoL,OAAO,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,+DAA+D,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACnY,CAAC;AAED,SAAS,YAAY,CAAC,OAAgB;IACpC,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACtC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,IAAI,cAAc,CAAC;IAEpD,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QAC9B,OAAO,gCAAgC,IAAI,IAAI,UAAU,wjBAAwjB,CAAC;IACpnB,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QAC9B,OAAO,gCAAgC,IAAI,IAAI,UAAU,gsBAAgsB,CAAC;IAC5vB,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;QACrC,OAAO,2FAA2F,IAAI,IAAI,UAAU,2hBAA2hB,CAAC;IAClpB,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;QACrC,OAAO,iBAAiB,IAAI,IAAI,UAAU,mJAAmJ,CAAC;IAChM,CAAC;IAED,OAAO,GAAG,OAAO,CAAC,OAAO,6BAA6B,IAAI,IAAI,UAAU,EAAE,CAAC;AAC7E,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAiB,EAAE,MAAc;IAC9D,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,UAAU,GAAG;YACjB,eAAe,EAAE,CAAC,eAAe,CAAC;SACnC,CAAC;QAEF,MAAM,QAAQ,GAAG;YACf,qBAAqB,EAAE,IAAI;YAC3B,yBAAyB,EAAE,eAAe;YAC1C,0BAA0B,EAAE;gBAC1B,8BAA8B,EAAE,UAAU;aAC3C;SACF,CAAC;QAEF,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAChG,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9F,CAAC;SAAM,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,QAAQ,GAAG;YACf,SAAS,EAAE,iBAAiB;YAC5B,gBAAgB,EAAE,CAAC,OAAO,CAAC;SAC5B,CAAC;QAEF,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC3F,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,SAAiB,EACjB,OAAgB,EAChB,aAAsB;IAEtB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC,CAAC;IAEzE,IAAI,aAAa,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC,CAAC;QAC3E,aAAa,CACX,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAC/B,wBAAwB,CAAC,SAAS,EAAE,OAAO,CAAC,EAC5C,OAAO,CACR,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC,CAAC;QAC/E,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QACnF,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QAC3E,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,wCAAwC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;QACjF,qBAAqB,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,CAAC;QACH,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,6BAA6B,EAAE,OAAO,CAAC,CAAC;IACnF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,kDAAkD,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC,CAAC;YAC/E,QAAQ,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC1D,QAAQ,CAAC,yBAAyB,OAAO,CAAC,SAAS,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9F,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,gEAAgE,CAAC,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAElD,QAAQ,CAAC,cAAc,EAAE;YACvB,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE;gBACH,GAAG,OAAO,CAAC,GAAG;gBACd,EAAE,EAAE,MAAM;gBACV,8BAA8B,EAAE,OAAO;aACxC;SACF,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CACX,EAAE,CAAC,GAAG,CAAC,gFAAgF,CAAC,CACzF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
package/dist/utils.d.ts CHANGED
@@ -1,3 +1,7 @@
1
1
  import { vscodeFamily } from "./prompts.js";
2
+ /**
3
+ * Type guard to check if the selected editor belongs to the VS Code family.
4
+ * This allows sharing settings.json structures across compatible editors.
5
+ */
2
6
  export declare function isVSCodeEditor(editor: string): editor is (typeof vscodeFamily)[number];
3
7
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAEtF"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAEtF"}
package/dist/utils.js CHANGED
@@ -1,4 +1,8 @@
1
1
  import { vscodeFamily } from "./prompts.js";
2
+ /**
3
+ * Type guard to check if the selected editor belongs to the VS Code family.
4
+ * This allows sharing settings.json structures across compatible editors.
5
+ */
2
6
  export function isVSCodeEditor(editor) {
3
7
  return vscodeFamily.includes(editor);
4
8
  }
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,OAAQ,YAAkC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC9D,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,OAAQ,YAAkC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC9D,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare function validateArgv(argv: Record<string, string>): void;
1
+ export declare function validateArgv(argv: Record<string, unknown>): void;
2
2
  //# sourceMappingURL=validate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAOA,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAsB/D"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAGA,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAuBhE"}
package/dist/validate.js CHANGED
@@ -1,23 +1,21 @@
1
1
  import pc from "picocolors";
2
2
  import { VALID_VALUES } from "./prompts.js";
3
- // ── CLI flag validator ────────────────────────────────────────────────────────
4
- // Runs before prompts so invalid flags are caught immediately with a clear
5
- // error message instead of silently passing wrong values into the generator.
6
3
  export function validateArgv(argv) {
7
4
  let hasError = false;
8
- // VALID_VALUES is the single source of truth — defined in prompts.ts and
9
- // reused here so the two never drift out of sync
10
5
  for (const [flag, allowed] of Object.entries(VALID_VALUES)) {
11
6
  const value = argv[flag];
12
- // Skip flags that weren't passed at all
13
7
  if (!value)
14
8
  continue;
15
9
  if (!allowed.includes(value)) {
16
- console.log(pc.red(`✖ Invalid --${flag} value: "${value}"`));
10
+ console.log(pc.red(`✖ Invalid --${flag} value: "${String(value)}"`));
17
11
  console.log(pc.dim(` Allowed: ${allowed.join(", ")}`));
18
12
  hasError = true;
19
13
  }
20
14
  }
15
+ if (argv["git-remote"] && typeof argv["git-remote"] !== "string") {
16
+ console.log(pc.red("✖ Invalid --git-remote format. Must be a valid repository string."));
17
+ hasError = true;
18
+ }
21
19
  if (hasError) {
22
20
  console.log();
23
21
  process.exit(1);
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,iFAAiF;AACjF,2EAA2E;AAC3E,6EAA6E;AAE7E,MAAM,UAAU,YAAY,CAAC,IAA4B;IACvD,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,yEAAyE;IACzE,iDAAiD;IACjD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAEzB,wCAAwC;QACxC,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,IAAI,CAAE,OAA6B,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,IAAI,YAAY,KAAK,GAAG,CAAC,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,cAAe,OAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/E,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,UAAU,YAAY,CAAC,IAA6B;IACxD,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,IAAI,CAAE,OAA6B,CAAC,QAAQ,CAAC,KAAe,CAAC,EAAE,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,IAAI,YAAY,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,cAAe,OAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/E,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,QAAQ,EAAE,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC,CAAC;QACzF,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keit/create-base",
3
- "version": "0.1.0",
3
+ "version": "1.0.0",
4
4
  "description": "Interactive CLI to scaffold modern TypeScript/JavaScript projects with Biome, Husky, Commitlint, and more",
5
5
  "keywords": [
6
6
  "create",
@@ -64,11 +64,14 @@
64
64
  "knip": "^6.16.1",
65
65
  "lint-staged": "^17.0.7",
66
66
  "secretlint": "^13.0.2",
67
+ "ts-node": "^10.9.2",
68
+ "tsx": "^4.22.4",
67
69
  "typescript": "^6.0.3"
68
70
  },
69
71
  "scripts": {
70
72
  "build": "tsc",
71
73
  "dev": "tsc --watch",
74
+ "test": "node --import tsx --test tests/**/*.test.ts",
72
75
  "start": "node dist/index.js",
73
76
  "typecheck": "tsc --noEmit",
74
77
  "format": "biome format --write .",