@contentrail/cli 0.2.1 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/README.md +37 -29
  2. package/dist/cli.d.ts +5 -0
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +223 -140
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/connect.d.ts +3 -0
  7. package/dist/commands/connect.d.ts.map +1 -1
  8. package/dist/commands/connect.js +37 -8
  9. package/dist/commands/connect.js.map +1 -1
  10. package/dist/commands/doctor.d.ts.map +1 -1
  11. package/dist/commands/doctor.js +14 -0
  12. package/dist/commands/doctor.js.map +1 -1
  13. package/dist/commands/init-next-admin.d.ts +7 -0
  14. package/dist/commands/init-next-admin.d.ts.map +1 -0
  15. package/dist/commands/init-next-admin.js +170 -0
  16. package/dist/commands/init-next-admin.js.map +1 -0
  17. package/dist/commands/init.d.ts +6 -0
  18. package/dist/commands/init.d.ts.map +1 -1
  19. package/dist/commands/init.js +87 -16
  20. package/dist/commands/init.js.map +1 -1
  21. package/dist/install/plan.d.ts +8 -0
  22. package/dist/install/plan.d.ts.map +1 -0
  23. package/dist/install/plan.js +29 -0
  24. package/dist/install/plan.js.map +1 -0
  25. package/dist/install/run.d.ts +5 -0
  26. package/dist/install/run.d.ts.map +1 -0
  27. package/dist/install/run.js +80 -0
  28. package/dist/install/run.js.map +1 -0
  29. package/dist/interactive/clack-host.d.ts +3 -0
  30. package/dist/interactive/clack-host.d.ts.map +1 -0
  31. package/dist/interactive/clack-host.js +47 -0
  32. package/dist/interactive/clack-host.js.map +1 -0
  33. package/dist/interactive/connect-wizard.d.ts +17 -0
  34. package/dist/interactive/connect-wizard.d.ts.map +1 -0
  35. package/dist/interactive/connect-wizard.js +41 -0
  36. package/dist/interactive/connect-wizard.js.map +1 -0
  37. package/dist/interactive/init-wizard.d.ts +12 -0
  38. package/dist/interactive/init-wizard.d.ts.map +1 -0
  39. package/dist/interactive/init-wizard.js +73 -0
  40. package/dist/interactive/init-wizard.js.map +1 -0
  41. package/dist/interactive/is-interactive.d.ts +9 -0
  42. package/dist/interactive/is-interactive.d.ts.map +1 -0
  43. package/dist/interactive/is-interactive.js +19 -0
  44. package/dist/interactive/is-interactive.js.map +1 -0
  45. package/dist/interactive/menu.d.ts +4 -0
  46. package/dist/interactive/menu.d.ts.map +1 -0
  47. package/dist/interactive/menu.js +50 -0
  48. package/dist/interactive/menu.js.map +1 -0
  49. package/dist/interactive/types.d.ts +34 -0
  50. package/dist/interactive/types.d.ts.map +1 -0
  51. package/dist/interactive/types.js +2 -0
  52. package/dist/interactive/types.js.map +1 -0
  53. package/package.json +5 -4
@@ -1,8 +1,13 @@
1
+ import { readFileSync } from "node:fs";
1
2
  import path from "node:path";
2
3
  import { CONFIG_FILE_NAME, DEFAULT_CONFIG, } from "../config/types.js";
3
4
  import { detectFrameworkFromPackage, readPackageJson, } from "../detect/framework.js";
4
5
  import { ExitCode } from "../exit-codes.js";
6
+ import { promptInitOptions } from "../interactive/init-wizard.js";
7
+ import { resolveInstallPlan } from "../install/plan.js";
5
8
  import { ensureDir, writeFileSafe } from "../util/fs.js";
9
+ import { NEXT_ADMIN_FILES, nextAdminInstallHint, scaffoldNextAdmin, } from "./init-next-admin.js";
10
+ const CLI_VERSION = JSON.parse(readFileSync(new URL("../../package.json", import.meta.url), "utf8")).version;
6
11
  export async function runInit(options, log) {
7
12
  const nodeMajor = Number(process.versions.node.split(".")[0]);
8
13
  if (Number.isNaN(nodeMajor) || nodeMajor < 22) {
@@ -15,7 +20,7 @@ export async function runInit(options, log) {
15
20
  return ExitCode.Config;
16
21
  }
17
22
  const detected = detectFrameworkFromPackage(pkg);
18
- const framework = options.framework === "astro" ||
23
+ let framework = options.framework === "astro" ||
19
24
  options.framework === "vite" ||
20
25
  options.framework === "next" ||
21
26
  options.framework === "static"
@@ -23,14 +28,40 @@ export async function runInit(options, log) {
23
28
  : detected === "unknown"
24
29
  ? "static"
25
30
  : detected;
31
+ let withEditor = options.withEditor !== false;
32
+ let withFunctions = options.withFunctions !== false;
33
+ let force = options.force === true;
34
+ let shouldInstall = options.install === true;
35
+ if (options.interactive === true && options.prompts !== undefined) {
36
+ options.prompts.intro("ContentRail setup");
37
+ const answers = await promptInitOptions(options.prompts, detected);
38
+ if (answers.cancelled) {
39
+ return ExitCode.Success;
40
+ }
41
+ const frameworkForced = options.framework === "astro" ||
42
+ options.framework === "vite" ||
43
+ options.framework === "next" ||
44
+ options.framework === "static";
45
+ if (!frameworkForced) {
46
+ framework = answers.framework;
47
+ }
48
+ if (options.withEditor === undefined) {
49
+ withEditor = answers.withEditor;
50
+ }
51
+ if (options.withFunctions === undefined) {
52
+ withFunctions = answers.withFunctions;
53
+ }
54
+ if (options.force !== true) {
55
+ force = answers.force;
56
+ }
57
+ shouldInstall = options.install === true ? true : answers.install;
58
+ }
26
59
  if (framework === "static" || framework === "next") {
27
60
  log.info(framework === "next"
28
- ? 'Next.js detected: ContentRail will not generate App Router pages. Use output: "export" so Pages can serve `out/`. Init adds content, /admin source, and Pages Functions.'
29
- : "Generic static site: ContentRail will not generate your HTML/React pages. Init adds content, /admin source, and Pages Functions.");
61
+ ? 'Next.js detected: ContentRail will not generate App Router pages. Use output: "export" so Pages can serve `out/`. Init adds content, /admin (Vite bundle into public/admin), and Pages Functions.'
62
+ : "Generic static site: ContentRail will not generate your HTML/React pages. Init adds content, /admin (Vite bundle into public/admin), and Pages Functions.");
30
63
  }
31
64
  const collectionsPath = framework === "astro" ? "src/contentrail/config.ts" : "content/config.ts";
32
- const withEditor = options.withEditor !== false;
33
- const withFunctions = options.withFunctions !== false;
34
65
  const config = {
35
66
  ...DEFAULT_CONFIG,
36
67
  framework,
@@ -50,7 +81,7 @@ export async function runInit(options, log) {
50
81
  planned.push("contentrail.editor.json");
51
82
  }
52
83
  if (framework === "static" || framework === "next") {
53
- planned.push("admin/index.html", "admin/main.ts");
84
+ planned.push("admin/index.html", "admin/main.ts", ...NEXT_ADMIN_FILES);
54
85
  }
55
86
  if (withFunctions) {
56
87
  planned.push("functions/api/[[path]].ts", "functions/_middleware.ts", ".dev.vars.example");
@@ -60,13 +91,23 @@ export async function runInit(options, log) {
60
91
  for (const item of planned) {
61
92
  log.info(` - ${item}`);
62
93
  }
94
+ if (shouldInstall) {
95
+ const plan = resolveInstallPlan(framework, CLI_VERSION);
96
+ log.info("Dry run: would install:");
97
+ for (const pkg of plan.dependencies) {
98
+ log.info(` - ${pkg}`);
99
+ }
100
+ for (const pkg of plan.devDependencies) {
101
+ log.info(` - ${pkg} (dev)`);
102
+ }
103
+ }
63
104
  log.info("No files were written.");
64
105
  return ExitCode.Success;
65
106
  }
66
- const configResult = await writeFileSafe(path.join(options.projectRoot, CONFIG_FILE_NAME), `${JSON.stringify(config, null, 2)}\n`, { force: options.force });
107
+ const configResult = await writeFileSafe(path.join(options.projectRoot, CONFIG_FILE_NAME), `${JSON.stringify(config, null, 2)}\n`, { force });
67
108
  (configResult === "written" ? written : skipped).push(CONFIG_FILE_NAME);
68
109
  const collectionSource = collectionModuleSource();
69
- const collectionResult = await writeFileSafe(path.join(options.projectRoot, collectionsPath), collectionSource, { force: options.force });
110
+ const collectionResult = await writeFileSafe(path.join(options.projectRoot, collectionsPath), collectionSource, { force });
70
111
  (collectionResult === "written" ? written : skipped).push(collectionsPath);
71
112
  await ensureDir(path.join(options.projectRoot, "content", "articles"));
72
113
  const sampleEntry = path.join(options.projectRoot, "content", "articles", "welcome.json");
@@ -76,7 +117,7 @@ export async function runInit(options, log) {
76
117
  published: true,
77
118
  summary: "First ContentRail entry.",
78
119
  body: "Edit this JSON or use the ContentRail editor.",
79
- }, null, 2)}\n`, { force: options.force });
120
+ }, null, 2)}\n`, { force });
80
121
  (entryResult === "written" ? written : skipped).push("content/articles/welcome.json");
81
122
  if (withEditor) {
82
123
  const editorResult = await writeFileSafe(path.join(options.projectRoot, "contentrail.editor.json"), `${JSON.stringify({
@@ -123,24 +164,27 @@ export async function runInit(options, log) {
123
164
  ],
124
165
  },
125
166
  ],
126
- }, null, 2)}\n`, { force: options.force });
167
+ }, null, 2)}\n`, { force });
127
168
  (editorResult === "written" ? written : skipped).push("contentrail.editor.json");
128
169
  }
129
170
  if (framework === "static" || framework === "next") {
130
- const htmlResult = await writeFileSafe(path.join(options.projectRoot, "admin/index.html"), ADMIN_HTML, { force: options.force });
171
+ const htmlResult = await writeFileSafe(path.join(options.projectRoot, "admin/index.html"), ADMIN_HTML, { force });
131
172
  (htmlResult === "written" ? written : skipped).push("admin/index.html");
132
- const mainResult = await writeFileSafe(path.join(options.projectRoot, "admin/main.ts"), ADMIN_MAIN, { force: options.force });
173
+ const mainResult = await writeFileSafe(path.join(options.projectRoot, "admin/main.ts"), ADMIN_MAIN, { force });
133
174
  (mainResult === "written" ? written : skipped).push("admin/main.ts");
175
+ const nextAdmin = await scaffoldNextAdmin(options.projectRoot, force);
176
+ written.push(...nextAdmin.written);
177
+ skipped.push(...nextAdmin.skipped);
134
178
  }
135
179
  if (withFunctions) {
136
180
  const importPath = framework === "astro"
137
181
  ? "../../src/contentrail/config"
138
182
  : "../../content/config";
139
- const apiResult = await writeFileSafe(path.join(options.projectRoot, "functions/api/[[path]].ts"), pagesApiSource(importPath), { force: options.force });
183
+ const apiResult = await writeFileSafe(path.join(options.projectRoot, "functions/api/[[path]].ts"), pagesApiSource(importPath), { force });
140
184
  (apiResult === "written" ? written : skipped).push("functions/api/[[path]].ts");
141
- const middlewareResult = await writeFileSafe(path.join(options.projectRoot, "functions/_middleware.ts"), PAGES_MIDDLEWARE, { force: options.force });
185
+ const middlewareResult = await writeFileSafe(path.join(options.projectRoot, "functions/_middleware.ts"), PAGES_MIDDLEWARE, { force });
142
186
  (middlewareResult === "written" ? written : skipped).push("functions/_middleware.ts");
143
- const varsResult = await writeFileSafe(path.join(options.projectRoot, ".dev.vars.example"), DEV_VARS_EXAMPLE, { force: options.force });
187
+ const varsResult = await writeFileSafe(path.join(options.projectRoot, ".dev.vars.example"), DEV_VARS_EXAMPLE, { force });
144
188
  (varsResult === "written" ? written : skipped).push(".dev.vars.example");
145
189
  }
146
190
  log.info(`ContentRail initialized for ${framework}.`);
@@ -152,7 +196,34 @@ export async function runInit(options, log) {
152
196
  .map((item) => ` - ${item}`)
153
197
  .join("\n")}`);
154
198
  }
155
- log.info("Next: npm install @contentrail/core @contentrail/editor @contentrail/cloudflare @contentrail/publisher preact zod. Export CF_API_TOKEN. Then `contentrail connect --confirm --yes` and `contentrail deploy`. Protect /admin with Cloudflare Access.");
199
+ if (shouldInstall) {
200
+ if (options.installDeps === undefined) {
201
+ log.error("Package install was requested but no installer is available. Re-run without --install or use the interactive CLI.");
202
+ return ExitCode.Failure;
203
+ }
204
+ const plan = resolveInstallPlan(framework, CLI_VERSION);
205
+ const installResult = await options.installDeps({
206
+ projectRoot: options.projectRoot,
207
+ plan,
208
+ dryRun: false,
209
+ });
210
+ if (!installResult.ok) {
211
+ log.error(installResult.detail);
212
+ return ExitCode.Failure;
213
+ }
214
+ log.info(installResult.detail);
215
+ if (options.interactive === true) {
216
+ options.prompts?.outro("Setup complete. Export CF_API_TOKEN, then run `contentrail` → Connect.");
217
+ }
218
+ }
219
+ else {
220
+ log.info(framework === "next" || framework === "static"
221
+ ? nextAdminInstallHint(framework)
222
+ : "Next: run `contentrail init --install` (or the interactive setup) to add packages, or install @contentrail/core @contentrail/editor @contentrail/cloudflare @contentrail/publisher preact@^10.26.0 zod@^4.6.7 manually. Export CF_API_TOKEN. Then `contentrail connect` and `contentrail deploy`. Protect /admin with Cloudflare Access.");
223
+ if (options.interactive === true) {
224
+ options.prompts?.outro("Files ready. Re-run setup with install, or `contentrail init --install`.");
225
+ }
226
+ }
156
227
  return ExitCode.Success;
157
228
  }
158
229
  const ADMIN_HTML = `<!doctype html>
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { InstallPlan } from "../interactive/types.js";
2
+ export type InstallFramework = "astro" | "vite" | "next" | "static";
3
+ /**
4
+ * Packages the consumer site needs after `contentrail init`.
5
+ * The developer installs `@contentrail/cli` only; init installs the rest.
6
+ */
7
+ export declare function resolveInstallPlan(framework: InstallFramework, version: string): InstallPlan;
8
+ //# sourceMappingURL=plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/install/plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEpE;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,gBAAgB,EAC3B,OAAO,EAAE,MAAM,GACd,WAAW,CAuBb"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Packages the consumer site needs after `contentrail init`.
3
+ * The developer installs `@contentrail/cli` only; init installs the rest.
4
+ */
5
+ export function resolveInstallPlan(framework, version) {
6
+ const pin = (name) => `${name}@${version}`;
7
+ const dependencies = [
8
+ pin("@contentrail/core"),
9
+ pin("@contentrail/editor"),
10
+ pin("@contentrail/publisher"),
11
+ pin("@contentrail/cloudflare"),
12
+ "preact@^10.26.0",
13
+ "zod@^4.6.7",
14
+ ];
15
+ const devDependencies = [];
16
+ if (framework === "astro") {
17
+ dependencies.push(pin("@contentrail/astro"), pin("@contentrail/reader"));
18
+ }
19
+ else if (framework === "vite") {
20
+ dependencies.push(pin("@contentrail/vite"), pin("@contentrail/reader"));
21
+ }
22
+ else {
23
+ // Next / generic static: Vite builds /admin into public/admin.
24
+ dependencies.push(pin("@contentrail/reader"));
25
+ devDependencies.push("vite@^8.3.5");
26
+ }
27
+ return { dependencies, devDependencies };
28
+ }
29
+ //# sourceMappingURL=plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/install/plan.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,SAA2B,EAC3B,OAAe;IAEf,MAAM,GAAG,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC;IAC3D,MAAM,YAAY,GAAG;QACnB,GAAG,CAAC,mBAAmB,CAAC;QACxB,GAAG,CAAC,qBAAqB,CAAC;QAC1B,GAAG,CAAC,wBAAwB,CAAC;QAC7B,GAAG,CAAC,yBAAyB,CAAC;QAC9B,iBAAiB;QACjB,YAAY;KACb,CAAC;IACF,MAAM,eAAe,GAAa,EAAE,CAAC;IAErC,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;QAC1B,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC3E,CAAC;SAAM,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QAChC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC1E,CAAC;SAAM,CAAC;QACN,+DAA+D;QAC/D,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC9C,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { InstallDepsFn } from "../interactive/types.js";
2
+ export declare function createPackageInstallRunner(options?: {
3
+ readonly env?: NodeJS.ProcessEnv;
4
+ }): InstallDepsFn;
5
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/install/run.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,yBAAyB,CAAC;AAmC5E,wBAAgB,0BAA0B,CAAC,OAAO,CAAC,EAAE;IACnD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CAClC,GAAG,aAAa,CAiEhB"}
@@ -0,0 +1,80 @@
1
+ import { detectPackageManager } from "../detect/framework.js";
2
+ import { runCommand } from "../util/spawn.js";
3
+ function packageManagerArgs(manager, kind, packages) {
4
+ if (manager === "pnpm") {
5
+ return {
6
+ command: "pnpm",
7
+ args: kind === "devDependencies"
8
+ ? ["add", "-D", ...packages]
9
+ : ["add", ...packages],
10
+ };
11
+ }
12
+ if (manager === "yarn") {
13
+ return {
14
+ command: "yarn",
15
+ args: kind === "devDependencies"
16
+ ? ["add", "-D", ...packages]
17
+ : ["add", ...packages],
18
+ };
19
+ }
20
+ return {
21
+ command: "npm",
22
+ args: kind === "devDependencies"
23
+ ? ["install", "-D", ...packages]
24
+ : ["install", ...packages],
25
+ };
26
+ }
27
+ export function createPackageInstallRunner(options) {
28
+ return async ({ projectRoot, plan, dryRun }) => {
29
+ if (plan.dependencies.length === 0 && plan.devDependencies.length === 0) {
30
+ return { ok: true, skipped: true, detail: "Nothing to install." };
31
+ }
32
+ const detected = await detectPackageManager(projectRoot);
33
+ const manager = detected === "unknown" ? "npm" : detected;
34
+ const lines = [
35
+ ...plan.dependencies.map((pkg) => ` ${pkg}`),
36
+ ...plan.devDependencies.map((pkg) => ` ${pkg} (dev)`),
37
+ ];
38
+ if (dryRun) {
39
+ return {
40
+ ok: true,
41
+ skipped: true,
42
+ detail: `Dry run: would install with ${manager}:\n${lines.join("\n")}`,
43
+ };
44
+ }
45
+ if (plan.dependencies.length > 0) {
46
+ const { command, args } = packageManagerArgs(manager, "dependencies", plan.dependencies);
47
+ const result = await runCommand(command, args, {
48
+ cwd: projectRoot,
49
+ ...(options?.env !== undefined ? { env: options.env } : {}),
50
+ });
51
+ if (result.code !== 0) {
52
+ return {
53
+ ok: false,
54
+ skipped: false,
55
+ detail: `${command} ${args.join(" ")} failed:\n${result.stderr || result.stdout}`,
56
+ };
57
+ }
58
+ }
59
+ if (plan.devDependencies.length > 0) {
60
+ const { command, args } = packageManagerArgs(manager, "devDependencies", plan.devDependencies);
61
+ const result = await runCommand(command, args, {
62
+ cwd: projectRoot,
63
+ ...(options?.env !== undefined ? { env: options.env } : {}),
64
+ });
65
+ if (result.code !== 0) {
66
+ return {
67
+ ok: false,
68
+ skipped: false,
69
+ detail: `${command} ${args.join(" ")} failed:\n${result.stderr || result.stdout}`,
70
+ };
71
+ }
72
+ }
73
+ return {
74
+ ok: true,
75
+ skipped: false,
76
+ detail: `Installed with ${manager}:\n${lines.join("\n")}`,
77
+ };
78
+ };
79
+ }
80
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/install/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { PromptHost } from "./types.js";
2
+ export declare function createClackPromptHost(): PromptHost;
3
+ //# sourceMappingURL=clack-host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clack-host.d.ts","sourceRoot":"","sources":["../../src/interactive/clack-host.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;AAE3D,wBAAgB,qBAAqB,IAAI,UAAU,CA+ClD"}
@@ -0,0 +1,47 @@
1
+ import * as p from "@clack/prompts";
2
+ export function createClackPromptHost() {
3
+ return {
4
+ intro(message) {
5
+ p.intro(message);
6
+ },
7
+ outro(message) {
8
+ p.outro(message);
9
+ },
10
+ note(message, title) {
11
+ p.note(message, title);
12
+ },
13
+ async select(message, options) {
14
+ // @clack Option<T> is incompatible with exactOptionalPropertyTypes for hints.
15
+ const value = await p.select({
16
+ message,
17
+ options: options.map((option) => ({
18
+ value: option.value,
19
+ label: option.label,
20
+ ...(option.hint !== undefined ? { hint: option.hint } : {}),
21
+ })),
22
+ });
23
+ return value;
24
+ },
25
+ async confirm(message, initial = true) {
26
+ return p.confirm({ message, initialValue: initial });
27
+ },
28
+ async text(message, options) {
29
+ return p.text({
30
+ message,
31
+ ...(options?.placeholder !== undefined
32
+ ? { placeholder: options.placeholder }
33
+ : {}),
34
+ ...(options?.initialValue !== undefined
35
+ ? { initialValue: options.initialValue }
36
+ : {}),
37
+ });
38
+ },
39
+ cancel(message = "Cancelled.") {
40
+ p.cancel(message);
41
+ },
42
+ isCancel(value) {
43
+ return p.isCancel(value);
44
+ },
45
+ };
46
+ }
47
+ //# sourceMappingURL=clack-host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clack-host.js","sourceRoot":"","sources":["../../src/interactive/clack-host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAGpC,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,KAAK,CAAC,OAAO;YACX,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnB,CAAC;QACD,KAAK,CAAC,OAAO;YACX,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,KAAK;YACjB,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACzB,CAAC;QACD,KAAK,CAAC,MAAM,CACV,OAAe,EACf,OAAmC;YAEnC,8EAA8E;YAC9E,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC;gBAC3B,OAAO;gBACP,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;oBAChC,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC5D,CAAC,CAAC;aAC8B,CAAC,CAAC;YACrC,OAAO,KAAmB,CAAC;QAC7B,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;YACnC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO;YACzB,OAAO,CAAC,CAAC,IAAI,CAAC;gBACZ,OAAO;gBACP,GAAG,CAAC,OAAO,EAAE,WAAW,KAAK,SAAS;oBACpC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE;oBACtC,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,OAAO,EAAE,YAAY,KAAK,SAAS;oBACrC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE;oBACxC,CAAC,CAAC,EAAE,CAAC;aACR,CAAC,CAAC;QACL,CAAC;QACD,MAAM,CAAC,OAAO,GAAG,YAAY;YAC3B,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpB,CAAC;QACD,QAAQ,CAAC,KAAK;YACZ,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { PromptHost } from "./types.js";
2
+ export interface ConnectWizardAccount {
3
+ readonly id: string;
4
+ readonly name: string;
5
+ }
6
+ export interface ConnectWizardResult {
7
+ readonly cancelled: boolean;
8
+ readonly accountId?: string;
9
+ readonly projectName?: string;
10
+ readonly confirmApply: boolean;
11
+ }
12
+ export declare function promptConnectOptions(host: PromptHost, input: {
13
+ readonly accounts: readonly ConnectWizardAccount[];
14
+ readonly defaultAccountId?: string;
15
+ readonly defaultProjectName: string;
16
+ }): Promise<ConnectWizardResult>;
17
+ //# sourceMappingURL=connect-wizard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect-wizard.d.ts","sourceRoot":"","sources":["../../src/interactive/connect-wizard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;CAChC;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE;IACL,QAAQ,CAAC,QAAQ,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACnD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC,GACA,OAAO,CAAC,mBAAmB,CAAC,CAmD9B"}
@@ -0,0 +1,41 @@
1
+ export async function promptConnectOptions(host, input) {
2
+ let accountId = input.defaultAccountId;
3
+ if (accountId === undefined || accountId === "") {
4
+ if (input.accounts.length === 1) {
5
+ accountId = input.accounts[0].id;
6
+ host.note(`${input.accounts[0].name} (${accountId})`, "Cloudflare account");
7
+ }
8
+ else {
9
+ const selected = await host.select("Which Cloudflare account?", input.accounts.map((account) => ({
10
+ value: account.id,
11
+ label: account.name,
12
+ hint: account.id,
13
+ })));
14
+ if (host.isCancel(selected)) {
15
+ host.cancel("Connect cancelled.");
16
+ return { cancelled: true, confirmApply: false };
17
+ }
18
+ accountId = selected;
19
+ }
20
+ }
21
+ const projectName = await host.text("Pages project name", {
22
+ initialValue: input.defaultProjectName,
23
+ placeholder: input.defaultProjectName,
24
+ });
25
+ if (host.isCancel(projectName) || projectName.trim() === "") {
26
+ host.cancel("Connect cancelled.");
27
+ return { cancelled: true, confirmApply: false };
28
+ }
29
+ const confirmApply = await host.confirm("Create or patch this Cloudflare Pages project now?", false);
30
+ if (host.isCancel(confirmApply)) {
31
+ host.cancel("Connect cancelled.");
32
+ return { cancelled: true, confirmApply: false };
33
+ }
34
+ return {
35
+ cancelled: false,
36
+ accountId,
37
+ projectName: projectName.trim(),
38
+ confirmApply,
39
+ };
40
+ }
41
+ //# sourceMappingURL=connect-wizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect-wizard.js","sourceRoot":"","sources":["../../src/interactive/connect-wizard.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAgB,EAChB,KAIC;IAED,IAAI,SAAS,GAAG,KAAK,CAAC,gBAAgB,CAAC;IAEvC,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;QAChD,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,IAAI,CACP,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,IAAI,KAAK,SAAS,GAAG,EAC3C,oBAAoB,CACrB,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAChC,2BAA2B,EAC3B,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC/B,KAAK,EAAE,OAAO,CAAC,EAAE;gBACjB,KAAK,EAAE,OAAO,CAAC,IAAI;gBACnB,IAAI,EAAE,OAAO,CAAC,EAAE;aACjB,CAAC,CAAC,CACJ,CAAC;YACF,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5B,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;gBAClC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;YAClD,CAAC;YACD,SAAS,GAAG,QAAQ,CAAC;QACvB,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;QACxD,YAAY,EAAE,KAAK,CAAC,kBAAkB;QACtC,WAAW,EAAE,KAAK,CAAC,kBAAkB;KACtC,CAAC,CAAC;IACH,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAClC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IAClD,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CACrC,oDAAoD,EACpD,KAAK,CACN,CAAC;IACF,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAClC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IAClD,CAAC;IAED,OAAO;QACL,SAAS,EAAE,KAAK;QAChB,SAAS;QACT,WAAW,EAAE,WAAW,CAAC,IAAI,EAAE;QAC/B,YAAY;KACb,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { DetectedFramework } from "../detect/framework.js";
2
+ import type { PromptHost } from "./types.js";
3
+ export interface InitWizardResult {
4
+ readonly framework: "astro" | "vite" | "next" | "static";
5
+ readonly withEditor: boolean;
6
+ readonly withFunctions: boolean;
7
+ readonly force: boolean;
8
+ readonly install: boolean;
9
+ readonly cancelled: boolean;
10
+ }
11
+ export declare function promptInitOptions(host: PromptHost, detected: DetectedFramework): Promise<InitWizardResult>;
12
+ //# sourceMappingURL=init-wizard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-wizard.d.ts","sourceRoot":"","sources":["../../src/interactive/init-wizard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IACzD,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,iBAAiB,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CAwF3B"}
@@ -0,0 +1,73 @@
1
+ export async function promptInitOptions(host, detected) {
2
+ const defaultFramework = detected === "unknown" || detected === "static"
3
+ ? "static"
4
+ : detected === "astro" || detected === "vite" || detected === "next"
5
+ ? detected
6
+ : "static";
7
+ const frameworkOptions = [
8
+ {
9
+ value: "next",
10
+ label: "Next.js (static export)",
11
+ ...(defaultFramework === "next" ? { hint: "detected" } : {}),
12
+ },
13
+ {
14
+ value: "astro",
15
+ label: "Astro",
16
+ ...(defaultFramework === "astro" ? { hint: "detected" } : {}),
17
+ },
18
+ {
19
+ value: "vite",
20
+ label: "Vite",
21
+ ...(defaultFramework === "vite" ? { hint: "detected" } : {}),
22
+ },
23
+ {
24
+ value: "static",
25
+ label: "Generic static / React SPA",
26
+ ...(defaultFramework === "static" ? { hint: "detected" } : {}),
27
+ },
28
+ ];
29
+ const framework = await host.select("Which site stack should ContentRail target?", frameworkOptions);
30
+ if (host.isCancel(framework)) {
31
+ host.cancel("Setup cancelled.");
32
+ return cancelledResult();
33
+ }
34
+ const withEditor = await host.confirm("Generate editor metadata (contentrail.editor.json)?", true);
35
+ if (host.isCancel(withEditor)) {
36
+ host.cancel("Setup cancelled.");
37
+ return cancelledResult();
38
+ }
39
+ const withFunctions = await host.confirm("Add Cloudflare Pages Functions templates (/api)?", true);
40
+ if (host.isCancel(withFunctions)) {
41
+ host.cancel("Setup cancelled.");
42
+ return cancelledResult();
43
+ }
44
+ const force = await host.confirm("Overwrite existing ContentRail files if present?", false);
45
+ if (host.isCancel(force)) {
46
+ host.cancel("Setup cancelled.");
47
+ return cancelledResult();
48
+ }
49
+ const install = await host.confirm("Install ContentRail packages into this project now?", true);
50
+ if (host.isCancel(install)) {
51
+ host.cancel("Setup cancelled.");
52
+ return cancelledResult();
53
+ }
54
+ return {
55
+ framework,
56
+ withEditor,
57
+ withFunctions,
58
+ force,
59
+ install,
60
+ cancelled: false,
61
+ };
62
+ }
63
+ function cancelledResult() {
64
+ return {
65
+ framework: "static",
66
+ withEditor: true,
67
+ withFunctions: true,
68
+ force: false,
69
+ install: false,
70
+ cancelled: true,
71
+ };
72
+ }
73
+ //# sourceMappingURL=init-wizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-wizard.js","sourceRoot":"","sources":["../../src/interactive/init-wizard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Interactive prompts require a real TTY and a non-CI environment.
3
+ * `--yes` / `-y` always forces non-interactive command paths.
4
+ */
5
+ export declare function canUseInteractiveUi(env?: NodeJS.ProcessEnv, streams?: {
6
+ readonly stdin?: NodeJS.ReadStream;
7
+ readonly stdout?: NodeJS.WritableStream;
8
+ }): boolean;
9
+ //# sourceMappingURL=is-interactive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-interactive.d.ts","sourceRoot":"","sources":["../../src/interactive/is-interactive.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,OAAO,GAAE;IACP,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;CACpC,GACL,OAAO,CAaT"}