demofly 0.1.2
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/commands/auth/index.d.ts +3 -0
- package/dist/commands/auth/index.d.ts.map +1 -0
- package/dist/commands/auth/index.js +13 -0
- package/dist/commands/auth/index.js.map +1 -0
- package/dist/commands/auth/login.d.ts +3 -0
- package/dist/commands/auth/login.d.ts.map +1 -0
- package/dist/commands/auth/login.js +109 -0
- package/dist/commands/auth/login.js.map +1 -0
- package/dist/commands/auth/logout.d.ts +3 -0
- package/dist/commands/auth/logout.d.ts.map +1 -0
- package/dist/commands/auth/logout.js +21 -0
- package/dist/commands/auth/logout.js.map +1 -0
- package/dist/commands/auth/status.d.ts +3 -0
- package/dist/commands/auth/status.d.ts.map +1 -0
- package/dist/commands/auth/status.js +25 -0
- package/dist/commands/auth/status.js.map +1 -0
- package/dist/commands/generate.d.ts +3 -0
- package/dist/commands/generate.d.ts.map +1 -0
- package/dist/commands/generate.js +373 -0
- package/dist/commands/generate.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +384 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/projects/delete.d.ts +3 -0
- package/dist/commands/projects/delete.d.ts.map +1 -0
- package/dist/commands/projects/delete.js +41 -0
- package/dist/commands/projects/delete.js.map +1 -0
- package/dist/commands/projects/get.d.ts +3 -0
- package/dist/commands/projects/get.d.ts.map +1 -0
- package/dist/commands/projects/get.js +30 -0
- package/dist/commands/projects/get.js.map +1 -0
- package/dist/commands/projects/index.d.ts +3 -0
- package/dist/commands/projects/index.d.ts.map +1 -0
- package/dist/commands/projects/index.js +17 -0
- package/dist/commands/projects/index.js.map +1 -0
- package/dist/commands/projects/list.d.ts +3 -0
- package/dist/commands/projects/list.d.ts.map +1 -0
- package/dist/commands/projects/list.js +40 -0
- package/dist/commands/projects/list.js.map +1 -0
- package/dist/commands/projects/open.d.ts +3 -0
- package/dist/commands/projects/open.d.ts.map +1 -0
- package/dist/commands/projects/open.js +45 -0
- package/dist/commands/projects/open.js.map +1 -0
- package/dist/commands/projects/update.d.ts +3 -0
- package/dist/commands/projects/update.d.ts.map +1 -0
- package/dist/commands/projects/update.js +31 -0
- package/dist/commands/projects/update.js.map +1 -0
- package/dist/commands/push.d.ts +3 -0
- package/dist/commands/push.d.ts.map +1 -0
- package/dist/commands/push.js +86 -0
- package/dist/commands/push.js.map +1 -0
- package/dist/commands/tts.d.ts +3 -0
- package/dist/commands/tts.d.ts.map +1 -0
- package/dist/commands/tts.js +44 -0
- package/dist/commands/tts.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api-client.d.ts +13 -0
- package/dist/lib/api-client.d.ts.map +1 -0
- package/dist/lib/api-client.js +58 -0
- package/dist/lib/api-client.js.map +1 -0
- package/dist/lib/credentials.d.ts +5 -0
- package/dist/lib/credentials.d.ts.map +1 -0
- package/dist/lib/credentials.js +101 -0
- package/dist/lib/credentials.js.map +1 -0
- package/dist/lib/timing.d.ts +29 -0
- package/dist/lib/timing.d.ts.map +1 -0
- package/dist/lib/timing.js +145 -0
- package/dist/lib/timing.js.map +1 -0
- package/dist/lib/tts.d.ts +42 -0
- package/dist/lib/tts.d.ts.map +1 -0
- package/dist/lib/tts.js +198 -0
- package/dist/lib/tts.js.map +1 -0
- package/package.json +39 -0
|
@@ -0,0 +1,384 @@
|
|
|
1
|
+
import {} from "commander";
|
|
2
|
+
import { execSync, execFileSync } from "node:child_process";
|
|
3
|
+
import { existsSync, mkdirSync } from "node:fs";
|
|
4
|
+
import { createInterface } from "node:readline";
|
|
5
|
+
import { resolve } from "node:path";
|
|
6
|
+
import { homedir } from "node:os";
|
|
7
|
+
function runCommand(cmd, opts) {
|
|
8
|
+
const result = execSync(cmd, {
|
|
9
|
+
stdio: opts?.stdio ?? "pipe",
|
|
10
|
+
encoding: "utf-8",
|
|
11
|
+
timeout: 120_000,
|
|
12
|
+
});
|
|
13
|
+
// execSync returns null when stdio is "inherit"
|
|
14
|
+
return (result ?? "").trim();
|
|
15
|
+
}
|
|
16
|
+
function commandExists(cmd) {
|
|
17
|
+
try {
|
|
18
|
+
runCommand(`which ${cmd}`);
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function canResolvePackage(packageName) {
|
|
26
|
+
try {
|
|
27
|
+
runCommand(`node -e "require.resolve('${packageName}')"`);
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function ensurePlaywrightTest() {
|
|
35
|
+
const label = "@playwright/test";
|
|
36
|
+
if (canResolvePackage("@playwright/test")) {
|
|
37
|
+
return { label, ok: true, skipped: true };
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
console.log("Installing @playwright/test...");
|
|
41
|
+
runCommand("npm install @playwright/test", { stdio: "inherit" });
|
|
42
|
+
return { label, ok: true };
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return { label, ok: false };
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function ensurePlaywrightChromium() {
|
|
49
|
+
const label = "Playwright Chromium";
|
|
50
|
+
try {
|
|
51
|
+
runCommand("npx playwright install chromium", { stdio: "inherit" });
|
|
52
|
+
return { label, ok: true };
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return { label, ok: false };
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function detectPackageManager() {
|
|
59
|
+
if (process.platform === "darwin") {
|
|
60
|
+
if (commandExists("brew")) {
|
|
61
|
+
return { cmd: "brew", args: ["install", "ffmpeg"], sudo: false };
|
|
62
|
+
}
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
if (process.platform === "linux") {
|
|
66
|
+
if (commandExists("apt-get")) {
|
|
67
|
+
return { cmd: "apt-get", args: ["install", "-y", "ffmpeg"], sudo: true };
|
|
68
|
+
}
|
|
69
|
+
if (commandExists("dnf")) {
|
|
70
|
+
return { cmd: "dnf", args: ["install", "-y", "ffmpeg"], sudo: true };
|
|
71
|
+
}
|
|
72
|
+
if (commandExists("pacman")) {
|
|
73
|
+
return { cmd: "pacman", args: ["-S", "--noconfirm", "ffmpeg"], sudo: true };
|
|
74
|
+
}
|
|
75
|
+
if (commandExists("zypper")) {
|
|
76
|
+
return { cmd: "zypper", args: ["install", "-y", "ffmpeg"], sudo: true };
|
|
77
|
+
}
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
async function ensureFfmpeg(opts) {
|
|
83
|
+
const label = "ffmpeg";
|
|
84
|
+
if (commandExists("ffmpeg")) {
|
|
85
|
+
return { label, ok: true, skipped: true };
|
|
86
|
+
}
|
|
87
|
+
const pm = detectPackageManager();
|
|
88
|
+
// No supported package manager — manual instructions only
|
|
89
|
+
if (!pm) {
|
|
90
|
+
if (process.platform === "darwin") {
|
|
91
|
+
console.log("ffmpeg not found. Install Homebrew (https://brew.sh) then run: brew install ffmpeg\n" +
|
|
92
|
+
"Or download from https://ffmpeg.org/download.html");
|
|
93
|
+
}
|
|
94
|
+
else if (process.platform === "linux") {
|
|
95
|
+
console.log("ffmpeg not found. No supported package manager detected.\n" +
|
|
96
|
+
"Install manually: sudo apt install ffmpeg (Debian/Ubuntu) or sudo dnf install ffmpeg (Fedora)");
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
console.log("ffmpeg not found. Download from https://ffmpeg.org/download.html");
|
|
100
|
+
}
|
|
101
|
+
return { label, ok: false };
|
|
102
|
+
}
|
|
103
|
+
// Non-interactive: skip unless --yes
|
|
104
|
+
if (!opts.yes && !process.stdin.isTTY) {
|
|
105
|
+
const installCmd = pm.sudo
|
|
106
|
+
? `sudo ${pm.cmd} ${pm.args.join(" ")}`
|
|
107
|
+
: `${pm.cmd} ${pm.args.join(" ")}`;
|
|
108
|
+
console.log(`Warning: ffmpeg is missing. Run with --yes to auto-install, or run manually:\n ${installCmd}`);
|
|
109
|
+
return { label, ok: false };
|
|
110
|
+
}
|
|
111
|
+
// Prompt for approval (unless --yes)
|
|
112
|
+
if (!opts.yes) {
|
|
113
|
+
const installCmd = pm.sudo
|
|
114
|
+
? `sudo ${pm.cmd} ${pm.args.join(" ")}`
|
|
115
|
+
: `${pm.cmd} ${pm.args.join(" ")}`;
|
|
116
|
+
const approved = await promptUser(`ffmpeg is not installed. Install via \`${installCmd}\`?${pm.sudo ? " This requires sudo." : ""}`);
|
|
117
|
+
if (!approved) {
|
|
118
|
+
console.log(`Skipped. You can install manually with: ${installCmd}`);
|
|
119
|
+
return { label, ok: false };
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// Run the install
|
|
123
|
+
try {
|
|
124
|
+
if (pm.sudo) {
|
|
125
|
+
const isRoot = typeof process.getuid === "function" && process.getuid() === 0;
|
|
126
|
+
if (isRoot) {
|
|
127
|
+
console.log(`Installing ffmpeg via ${pm.cmd}...`);
|
|
128
|
+
execFileSync(pm.cmd, pm.args, {
|
|
129
|
+
stdio: "inherit",
|
|
130
|
+
timeout: 120_000,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
if (!commandExists("sudo")) {
|
|
135
|
+
console.log(`sudo is not available. Install ffmpeg manually as root:\n ${pm.cmd} ${pm.args.join(" ")}`);
|
|
136
|
+
return { label, ok: false };
|
|
137
|
+
}
|
|
138
|
+
console.log(`Installing ffmpeg via sudo ${pm.cmd}...`);
|
|
139
|
+
execFileSync("sudo", [pm.cmd, ...pm.args], {
|
|
140
|
+
stdio: "inherit",
|
|
141
|
+
timeout: 120_000,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
console.log(`Installing ffmpeg via ${pm.cmd}...`);
|
|
147
|
+
execFileSync(pm.cmd, pm.args, {
|
|
148
|
+
stdio: "inherit",
|
|
149
|
+
timeout: 120_000,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
console.log("ffmpeg installation command failed.");
|
|
155
|
+
return { label, ok: false };
|
|
156
|
+
}
|
|
157
|
+
// Post-install verification
|
|
158
|
+
if (commandExists("ffmpeg")) {
|
|
159
|
+
return { label, ok: true };
|
|
160
|
+
}
|
|
161
|
+
console.log("ffmpeg was installed but is not on PATH. You may need to restart your shell or install manually.");
|
|
162
|
+
return { label, ok: false };
|
|
163
|
+
}
|
|
164
|
+
function installPlaywrightPlugin() {
|
|
165
|
+
const label = "Playwright MCP plugin for Claude Code";
|
|
166
|
+
if (!commandExists("claude")) {
|
|
167
|
+
console.log("Claude CLI not found. Install it first: https://docs.anthropic.com/en/docs/claude-code");
|
|
168
|
+
return { label, ok: false };
|
|
169
|
+
}
|
|
170
|
+
try {
|
|
171
|
+
const output = runCommand("claude plugin list");
|
|
172
|
+
if (output.toLowerCase().includes("playwright")) {
|
|
173
|
+
return { label, ok: true, skipped: true };
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
// plugin list failed; try installing anyway
|
|
178
|
+
}
|
|
179
|
+
try {
|
|
180
|
+
console.log("Installing Playwright MCP plugin for Claude Code...");
|
|
181
|
+
runCommand("claude plugin install playwright@claude-plugins-official", { stdio: "inherit" });
|
|
182
|
+
return { label, ok: true };
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
return { label, ok: false };
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
function installDemoflyPlugin() {
|
|
189
|
+
const label = "Demofly plugin for Claude Code";
|
|
190
|
+
if (!commandExists("claude")) {
|
|
191
|
+
console.log("Claude CLI not found. Install it first: https://docs.anthropic.com/en/docs/claude-code");
|
|
192
|
+
return { label, ok: false };
|
|
193
|
+
}
|
|
194
|
+
try {
|
|
195
|
+
console.log("Registering demofly marketplace...");
|
|
196
|
+
runCommand("claude plugin marketplace add llama-farm/demofly-claude");
|
|
197
|
+
}
|
|
198
|
+
catch (err) {
|
|
199
|
+
const stderr = err.stderr ?? "";
|
|
200
|
+
const msg = err.message ?? "";
|
|
201
|
+
const combined = `${stderr} ${msg}`.toLowerCase();
|
|
202
|
+
if (!combined.includes("already installed")) {
|
|
203
|
+
console.log("Failed to register demofly marketplace.");
|
|
204
|
+
return { label, ok: false };
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
try {
|
|
208
|
+
console.log("Installing Demofly plugin for Claude Code...");
|
|
209
|
+
runCommand("claude plugin install demofly@demofly-marketplace", { stdio: "inherit" });
|
|
210
|
+
return { label, ok: true };
|
|
211
|
+
}
|
|
212
|
+
catch {
|
|
213
|
+
return { label, ok: false };
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
function promptUser(question) {
|
|
217
|
+
return new Promise((resolve) => {
|
|
218
|
+
const rl = createInterface({
|
|
219
|
+
input: process.stdin,
|
|
220
|
+
output: process.stdout,
|
|
221
|
+
});
|
|
222
|
+
rl.question(`${question} (y/N) `, (answer) => {
|
|
223
|
+
rl.close();
|
|
224
|
+
resolve(answer.trim().toLowerCase() === "y");
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
async function ensureSystemDeps(opts) {
|
|
229
|
+
const label = "Chromium system dependencies";
|
|
230
|
+
// Only relevant on Linux (WSL reports as linux, which is correct)
|
|
231
|
+
if (process.platform !== "linux") {
|
|
232
|
+
return { label, ok: true, skipped: true };
|
|
233
|
+
}
|
|
234
|
+
// Detect missing deps via dry-run
|
|
235
|
+
let hasMissingDeps = false;
|
|
236
|
+
let dryRunSupported = true;
|
|
237
|
+
try {
|
|
238
|
+
const output = runCommand("npx playwright install-deps --dry-run chromium 2>&1");
|
|
239
|
+
// If dry-run exits 0 with no actionable output, deps are likely present.
|
|
240
|
+
// Non-empty output listing packages indicates missing deps.
|
|
241
|
+
hasMissingDeps = output.length > 0 && !output.toLowerCase().includes("already");
|
|
242
|
+
}
|
|
243
|
+
catch {
|
|
244
|
+
// --dry-run not supported in this Playwright version; we'll ask the user
|
|
245
|
+
// and attempt the install directly if they approve.
|
|
246
|
+
dryRunSupported = false;
|
|
247
|
+
hasMissingDeps = true;
|
|
248
|
+
}
|
|
249
|
+
if (!hasMissingDeps) {
|
|
250
|
+
return { label, ok: true, skipped: true };
|
|
251
|
+
}
|
|
252
|
+
// Non-interactive: skip unless --yes
|
|
253
|
+
if (!opts.yes && !process.stdin.isTTY) {
|
|
254
|
+
console.log("Warning: Chromium system dependencies may be missing. Run with --yes to auto-install, or run manually:\n" +
|
|
255
|
+
" sudo npx playwright install-deps chromium");
|
|
256
|
+
return { label, ok: false };
|
|
257
|
+
}
|
|
258
|
+
// Prompt for approval (unless --yes)
|
|
259
|
+
if (!opts.yes) {
|
|
260
|
+
const msg = dryRunSupported
|
|
261
|
+
? "System dependencies are missing for Chromium. Install them? This requires sudo."
|
|
262
|
+
: "Unable to detect system dependencies (dry-run not supported). Attempt to install Chromium system deps? This requires sudo.";
|
|
263
|
+
const approved = await promptUser(msg);
|
|
264
|
+
if (!approved) {
|
|
265
|
+
console.log("Skipped. You can install manually with: sudo npx playwright install-deps chromium");
|
|
266
|
+
return { label, ok: false };
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
// Determine how to run the install
|
|
270
|
+
const isRoot = typeof process.getuid === "function" && process.getuid() === 0;
|
|
271
|
+
if (isRoot) {
|
|
272
|
+
// Already root — run directly
|
|
273
|
+
try {
|
|
274
|
+
console.log("Installing Chromium system dependencies...");
|
|
275
|
+
runCommand("npx playwright install-deps chromium", { stdio: "inherit" });
|
|
276
|
+
return { label, ok: true };
|
|
277
|
+
}
|
|
278
|
+
catch {
|
|
279
|
+
return { label, ok: false };
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
// Need sudo
|
|
283
|
+
if (!commandExists("sudo")) {
|
|
284
|
+
console.log("sudo is not available. Install system dependencies manually as root:\n" +
|
|
285
|
+
" npx playwright install-deps chromium");
|
|
286
|
+
return { label, ok: false };
|
|
287
|
+
}
|
|
288
|
+
try {
|
|
289
|
+
console.log("Installing Chromium system dependencies (sudo)...");
|
|
290
|
+
execFileSync("sudo", ["npx", "playwright", "install-deps", "chromium"], {
|
|
291
|
+
stdio: "inherit",
|
|
292
|
+
timeout: 120_000,
|
|
293
|
+
});
|
|
294
|
+
return { label, ok: true };
|
|
295
|
+
}
|
|
296
|
+
catch {
|
|
297
|
+
return { label, ok: false };
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
function ensureDemoflyDir() {
|
|
301
|
+
const label = "demofly/ directory";
|
|
302
|
+
const dir = resolve(process.cwd(), "demofly");
|
|
303
|
+
if (existsSync(dir)) {
|
|
304
|
+
return { label, ok: true, skipped: true };
|
|
305
|
+
}
|
|
306
|
+
try {
|
|
307
|
+
mkdirSync(dir, { recursive: true });
|
|
308
|
+
return { label, ok: true };
|
|
309
|
+
}
|
|
310
|
+
catch {
|
|
311
|
+
return { label, ok: false };
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
function ensureKokoroModel() {
|
|
315
|
+
const label = "Kokoro TTS model";
|
|
316
|
+
const modelDir = resolve(homedir(), ".demofly", "models", "kokoro-en-v0_19");
|
|
317
|
+
const modelFile = resolve(modelDir, "model.onnx");
|
|
318
|
+
if (existsSync(modelFile)) {
|
|
319
|
+
return { label, ok: true, skipped: true };
|
|
320
|
+
}
|
|
321
|
+
const modelsDir = resolve(homedir(), ".demofly", "models");
|
|
322
|
+
const tarball = "/tmp/kokoro-en-v0_19.tar.bz2";
|
|
323
|
+
const url = "https://github.com/k2-fsa/sherpa-onnx/releases/download/tts-models/kokoro-en-v0_19.tar.bz2";
|
|
324
|
+
try {
|
|
325
|
+
mkdirSync(modelsDir, { recursive: true });
|
|
326
|
+
console.log("Downloading Kokoro TTS model (~80MB)...");
|
|
327
|
+
const downloadCmd = commandExists("wget")
|
|
328
|
+
? `wget -q --show-progress "${url}" -O "${tarball}"`
|
|
329
|
+
: `curl -L --progress-bar "${url}" -o "${tarball}"`;
|
|
330
|
+
execSync(downloadCmd, { stdio: "inherit", timeout: 600_000 });
|
|
331
|
+
console.log("Extracting model...");
|
|
332
|
+
execSync(`tar xf "${tarball}" -C "${modelsDir}"`, { stdio: "inherit", timeout: 120_000 });
|
|
333
|
+
execSync(`rm -f "${tarball}"`, { stdio: "pipe" });
|
|
334
|
+
if (existsSync(modelFile)) {
|
|
335
|
+
return { label, ok: true };
|
|
336
|
+
}
|
|
337
|
+
console.log("Model extraction succeeded but model.onnx not found at expected path.");
|
|
338
|
+
return { label, ok: false };
|
|
339
|
+
}
|
|
340
|
+
catch {
|
|
341
|
+
console.log("Kokoro model download/extraction failed.");
|
|
342
|
+
return { label, ok: false };
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
function printSummary(results) {
|
|
346
|
+
console.log("\n--- demofly init summary ---\n");
|
|
347
|
+
for (const r of results) {
|
|
348
|
+
const icon = r.ok ? "\u2714" : "\u2718";
|
|
349
|
+
const suffix = r.ok && r.skipped ? " (already present)" : "";
|
|
350
|
+
console.log(` ${icon} ${r.label}${suffix}`);
|
|
351
|
+
}
|
|
352
|
+
const allOk = results.every((r) => r.ok);
|
|
353
|
+
console.log();
|
|
354
|
+
if (allOk) {
|
|
355
|
+
console.log("Ready! Use /demofly:create in Claude Code to create your first demo.");
|
|
356
|
+
}
|
|
357
|
+
else {
|
|
358
|
+
console.log("Not ready -- see issues above.");
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
export function registerInitCommand(program) {
|
|
362
|
+
program
|
|
363
|
+
.command("init")
|
|
364
|
+
.description("Initialize demofly prerequisites in the current project")
|
|
365
|
+
.option("-y, --yes", "Auto-approve prompts (for CI/scripted use)")
|
|
366
|
+
.action(async (opts) => {
|
|
367
|
+
console.log("Initializing demofly...\n");
|
|
368
|
+
const results = [];
|
|
369
|
+
results.push(ensurePlaywrightTest());
|
|
370
|
+
results.push(ensurePlaywrightChromium());
|
|
371
|
+
results.push(await ensureSystemDeps({ yes: opts.yes }));
|
|
372
|
+
results.push(await ensureFfmpeg({ yes: opts.yes }));
|
|
373
|
+
results.push(ensureKokoroModel());
|
|
374
|
+
results.push(installPlaywrightPlugin());
|
|
375
|
+
results.push(installDemoflyPlugin());
|
|
376
|
+
results.push(ensureDemoflyDir());
|
|
377
|
+
printSummary(results);
|
|
378
|
+
const allOk = results.every((r) => r.ok);
|
|
379
|
+
if (!allOk) {
|
|
380
|
+
process.exitCode = 1;
|
|
381
|
+
}
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/commands/projects/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBzC,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAgC7D"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import {} from "commander";
|
|
2
|
+
import { createInterface } from "node:readline";
|
|
3
|
+
import { createApiClient, requireAuth } from "../../lib/api-client.js";
|
|
4
|
+
function confirm(message) {
|
|
5
|
+
return new Promise((resolve) => {
|
|
6
|
+
const rl = createInterface({
|
|
7
|
+
input: process.stdin,
|
|
8
|
+
output: process.stdout,
|
|
9
|
+
});
|
|
10
|
+
rl.question(`${message} (y/N) `, (answer) => {
|
|
11
|
+
rl.close();
|
|
12
|
+
resolve(answer.trim().toLowerCase() === "y");
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
export function registerDeleteCommand(projects) {
|
|
17
|
+
projects
|
|
18
|
+
.command("delete <name>")
|
|
19
|
+
.description("Delete a project")
|
|
20
|
+
.option("-f, --force", "Skip confirmation prompt")
|
|
21
|
+
.action(async (name, opts) => {
|
|
22
|
+
const token = await requireAuth();
|
|
23
|
+
if (!opts.force) {
|
|
24
|
+
const confirmed = await confirm(`Are you sure you want to delete project '${name}'?`);
|
|
25
|
+
if (!confirmed) {
|
|
26
|
+
console.log("Cancelled.");
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const client = createApiClient(token);
|
|
31
|
+
try {
|
|
32
|
+
await client.delete(`/projects/${encodeURIComponent(name)}`);
|
|
33
|
+
console.log(`Deleted project '${name}'.`);
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
console.error(`Failed to delete project: ${error instanceof Error ? error.message : String(error)}`);
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=delete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/commands/projects/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEvE,SAAS,OAAO,CAAC,OAAe;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,EAAE,GAAG,eAAe,CAAC;YACzB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QAEH,EAAE,CAAC,QAAQ,CAAC,GAAG,OAAO,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE;YAC1C,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAiB;IACrD,QAAQ;SACL,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,kBAAkB,CAAC;SAC/B,MAAM,CAAC,aAAa,EAAE,0BAA0B,CAAC;SACjD,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,IAAyB,EAAE,EAAE;QACxD,MAAM,KAAK,GAAG,MAAM,WAAW,EAAE,CAAC;QAElC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,SAAS,GAAG,MAAM,OAAO,CAC7B,4CAA4C,IAAI,IAAI,CACrD,CAAC;YACF,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBAC1B,OAAO;YACT,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAEtC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,MAAM,CACjB,aAAa,kBAAkB,CAAC,IAAI,CAAC,EAAE,CACxC,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,IAAI,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CACX,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACtF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/commands/projects/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAYzC,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAgC1D"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import {} from "commander";
|
|
2
|
+
import { createApiClient, requireAuth } from "../../lib/api-client.js";
|
|
3
|
+
export function registerGetCommand(projects) {
|
|
4
|
+
projects
|
|
5
|
+
.command("get <name>")
|
|
6
|
+
.description("Get details of a project")
|
|
7
|
+
.action(async (name) => {
|
|
8
|
+
const token = await requireAuth();
|
|
9
|
+
const client = createApiClient(token);
|
|
10
|
+
try {
|
|
11
|
+
const project = await client.get(`/projects/${encodeURIComponent(name)}`);
|
|
12
|
+
console.log(`Name: ${project.name}`);
|
|
13
|
+
console.log(`Status: ${project.status}`);
|
|
14
|
+
console.log(`Created: ${project.created}`);
|
|
15
|
+
console.log(`Updated: ${project.updated}`);
|
|
16
|
+
console.log(`URL: ${project.url}`);
|
|
17
|
+
if (project.exports && project.exports.length > 0) {
|
|
18
|
+
console.log(`Exports:`);
|
|
19
|
+
for (const exp of project.exports) {
|
|
20
|
+
console.log(` - ${exp}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
console.error(`Project '${name}' not found. ${error instanceof Error ? error.message : String(error)}`);
|
|
26
|
+
process.exit(1);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=get.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/commands/projects/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAWvE,MAAM,UAAU,kBAAkB,CAAC,QAAiB;IAClD,QAAQ;SACL,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,MAAM,WAAW,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAEtC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,GAAG,CAC9B,aAAa,kBAAkB,CAAC,IAAI,CAAC,EAAE,CACxC,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YAEzC,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBACxB,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBAClC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CACX,YAAY,IAAI,gBAAgB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACzF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/projects/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAU/D"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import {} from "commander";
|
|
2
|
+
import { registerListCommand } from "./list.js";
|
|
3
|
+
import { registerGetCommand } from "./get.js";
|
|
4
|
+
import { registerUpdateCommand } from "./update.js";
|
|
5
|
+
import { registerDeleteCommand } from "./delete.js";
|
|
6
|
+
import { registerOpenCommand } from "./open.js";
|
|
7
|
+
export function registerProjectsCommands(program) {
|
|
8
|
+
const projects = program
|
|
9
|
+
.command("projects")
|
|
10
|
+
.description("Manage demofly projects");
|
|
11
|
+
registerListCommand(projects);
|
|
12
|
+
registerGetCommand(projects);
|
|
13
|
+
registerUpdateCommand(projects);
|
|
14
|
+
registerDeleteCommand(projects);
|
|
15
|
+
registerOpenCommand(projects);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/projects/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,MAAM,QAAQ,GAAG,OAAO;SACrB,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,yBAAyB,CAAC,CAAC;IAE1C,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC9B,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC7B,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAChC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAChC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/projects/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAmD3D"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import {} from "commander";
|
|
2
|
+
import { createApiClient, requireAuth } from "../../lib/api-client.js";
|
|
3
|
+
export function registerListCommand(projects) {
|
|
4
|
+
projects
|
|
5
|
+
.command("list")
|
|
6
|
+
.description("List all projects")
|
|
7
|
+
.action(async () => {
|
|
8
|
+
const token = await requireAuth();
|
|
9
|
+
const client = createApiClient(token);
|
|
10
|
+
try {
|
|
11
|
+
const items = await client.get("/projects");
|
|
12
|
+
if (items.length === 0) {
|
|
13
|
+
console.log("No projects found. Push a demo with: demofly push <project>");
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const nameWidth = Math.max("NAME".length, ...items.map((p) => p.name.length));
|
|
17
|
+
const statusWidth = Math.max("STATUS".length, ...items.map((p) => p.status.length));
|
|
18
|
+
const header = [
|
|
19
|
+
"NAME".padEnd(nameWidth),
|
|
20
|
+
"STATUS".padEnd(statusWidth),
|
|
21
|
+
"URL",
|
|
22
|
+
].join(" ");
|
|
23
|
+
console.log(header);
|
|
24
|
+
console.log("-".repeat(header.length));
|
|
25
|
+
for (const item of items) {
|
|
26
|
+
const row = [
|
|
27
|
+
item.name.padEnd(nameWidth),
|
|
28
|
+
item.status.padEnd(statusWidth),
|
|
29
|
+
item.url,
|
|
30
|
+
].join(" ");
|
|
31
|
+
console.log(row);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
console.error(`Failed to list projects: ${error instanceof Error ? error.message : String(error)}`);
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/projects/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAQvE,MAAM,UAAU,mBAAmB,CAAC,QAAiB;IACnD,QAAQ;SACL,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,mBAAmB,CAAC;SAChC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,KAAK,GAAG,MAAM,WAAW,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAEtC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,GAAG,CAAmB,WAAW,CAAC,CAAC;YAE9D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CACT,6DAA6D,CAC9D,CAAC;gBACF,OAAO;YACT,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CACxB,MAAM,CAAC,MAAM,EACb,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CACnC,CAAC;YACF,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAC1B,QAAQ,CAAC,MAAM,EACf,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CACrC,CAAC;YAEF,MAAM,MAAM,GAAG;gBACb,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;gBACxB,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC5B,KAAK;aACN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEb,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAEvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,GAAG,GAAG;oBACV,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;oBAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;oBAC/B,IAAI,CAAC,GAAG;iBACT,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CACX,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACrF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open.d.ts","sourceRoot":"","sources":["../../../src/commands/projects/open.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAgCzC,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAsB3D"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import {} from "commander";
|
|
2
|
+
import { execFile } from "node:child_process";
|
|
3
|
+
import { createApiClient, requireAuth } from "../../lib/api-client.js";
|
|
4
|
+
function openUrl(url) {
|
|
5
|
+
const platform = process.platform;
|
|
6
|
+
let cmd;
|
|
7
|
+
let args;
|
|
8
|
+
if (platform === "darwin") {
|
|
9
|
+
cmd = "open";
|
|
10
|
+
args = [url];
|
|
11
|
+
}
|
|
12
|
+
else if (platform === "win32") {
|
|
13
|
+
cmd = "cmd";
|
|
14
|
+
args = ["/c", "start", "", url];
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
cmd = "xdg-open";
|
|
18
|
+
args = [url];
|
|
19
|
+
}
|
|
20
|
+
execFile(cmd, args, (error) => {
|
|
21
|
+
if (error) {
|
|
22
|
+
console.error(`Failed to open browser: ${error.message}`);
|
|
23
|
+
console.log(`Open manually: ${url}`);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
export function registerOpenCommand(projects) {
|
|
28
|
+
projects
|
|
29
|
+
.command("open <name>")
|
|
30
|
+
.description("Open a project in the browser")
|
|
31
|
+
.action(async (name) => {
|
|
32
|
+
const token = await requireAuth();
|
|
33
|
+
const client = createApiClient(token);
|
|
34
|
+
try {
|
|
35
|
+
const project = await client.get(`/projects/${encodeURIComponent(name)}`);
|
|
36
|
+
console.log(`Opening ${project.url}`);
|
|
37
|
+
openUrl(project.url);
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
console.error(`Failed to open project: ${error instanceof Error ? error.message : String(error)}`);
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=open.js.map
|