@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.
- package/README.md +37 -29
- package/dist/cli.d.ts +5 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +223 -140
- package/dist/cli.js.map +1 -1
- package/dist/commands/connect.d.ts +3 -0
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +37 -8
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +14 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init-next-admin.d.ts +7 -0
- package/dist/commands/init-next-admin.d.ts.map +1 -0
- package/dist/commands/init-next-admin.js +170 -0
- package/dist/commands/init-next-admin.js.map +1 -0
- package/dist/commands/init.d.ts +6 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +87 -16
- package/dist/commands/init.js.map +1 -1
- package/dist/install/plan.d.ts +8 -0
- package/dist/install/plan.d.ts.map +1 -0
- package/dist/install/plan.js +29 -0
- package/dist/install/plan.js.map +1 -0
- package/dist/install/run.d.ts +5 -0
- package/dist/install/run.d.ts.map +1 -0
- package/dist/install/run.js +80 -0
- package/dist/install/run.js.map +1 -0
- package/dist/interactive/clack-host.d.ts +3 -0
- package/dist/interactive/clack-host.d.ts.map +1 -0
- package/dist/interactive/clack-host.js +47 -0
- package/dist/interactive/clack-host.js.map +1 -0
- package/dist/interactive/connect-wizard.d.ts +17 -0
- package/dist/interactive/connect-wizard.d.ts.map +1 -0
- package/dist/interactive/connect-wizard.js +41 -0
- package/dist/interactive/connect-wizard.js.map +1 -0
- package/dist/interactive/init-wizard.d.ts +12 -0
- package/dist/interactive/init-wizard.d.ts.map +1 -0
- package/dist/interactive/init-wizard.js +73 -0
- package/dist/interactive/init-wizard.js.map +1 -0
- package/dist/interactive/is-interactive.d.ts +9 -0
- package/dist/interactive/is-interactive.d.ts.map +1 -0
- package/dist/interactive/is-interactive.js +19 -0
- package/dist/interactive/is-interactive.js.map +1 -0
- package/dist/interactive/menu.d.ts +4 -0
- package/dist/interactive/menu.d.ts.map +1 -0
- package/dist/interactive/menu.js +50 -0
- package/dist/interactive/menu.js.map +1 -0
- package/dist/interactive/types.d.ts +34 -0
- package/dist/interactive/types.d.ts.map +1 -0
- package/dist/interactive/types.js +2 -0
- package/dist/interactive/types.js.map +1 -0
- package/package.json +5 -4
package/dist/commands/init.js
CHANGED
|
@@ -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
|
-
|
|
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
|
|
29
|
-
: "Generic static site: ContentRail will not generate your HTML/React pages. Init adds content, /admin
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,gBAAgB,EAChB,cAAc,GAEf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,0BAA0B,EAC1B,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|