@launchmatic/cli 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/api.d.ts +5 -0
  2. package/dist/api.d.ts.map +1 -1
  3. package/dist/api.js +11 -2
  4. package/dist/api.js.map +1 -1
  5. package/dist/c.js +12 -2
  6. package/dist/c.js.map +1 -1
  7. package/dist/commands/api-key.d.ts +3 -0
  8. package/dist/commands/api-key.d.ts.map +1 -0
  9. package/dist/commands/api-key.js +89 -0
  10. package/dist/commands/api-key.js.map +1 -0
  11. package/dist/commands/browser.d.ts +3 -0
  12. package/dist/commands/browser.d.ts.map +1 -0
  13. package/dist/commands/browser.js +410 -0
  14. package/dist/commands/browser.js.map +1 -0
  15. package/dist/commands/db.d.ts +3 -0
  16. package/dist/commands/db.d.ts.map +1 -0
  17. package/dist/commands/db.js +481 -0
  18. package/dist/commands/db.js.map +1 -0
  19. package/dist/commands/deploy.d.ts.map +1 -1
  20. package/dist/commands/deploy.js +9 -7
  21. package/dist/commands/deploy.js.map +1 -1
  22. package/dist/commands/deployments.d.ts +3 -0
  23. package/dist/commands/deployments.d.ts.map +1 -0
  24. package/dist/commands/deployments.js +158 -0
  25. package/dist/commands/deployments.js.map +1 -0
  26. package/dist/commands/doctor.d.ts +3 -0
  27. package/dist/commands/doctor.d.ts.map +1 -0
  28. package/dist/commands/doctor.js +160 -0
  29. package/dist/commands/doctor.js.map +1 -0
  30. package/dist/commands/infra.d.ts +3 -0
  31. package/dist/commands/infra.d.ts.map +1 -0
  32. package/dist/commands/infra.js +193 -0
  33. package/dist/commands/infra.js.map +1 -0
  34. package/dist/commands/init.d.ts.map +1 -1
  35. package/dist/commands/init.js +49 -11
  36. package/dist/commands/init.js.map +1 -1
  37. package/dist/commands/lightspeed.d.ts.map +1 -1
  38. package/dist/commands/lightspeed.js +12 -2
  39. package/dist/commands/lightspeed.js.map +1 -1
  40. package/dist/commands/login.d.ts.map +1 -1
  41. package/dist/commands/login.js +46 -2
  42. package/dist/commands/login.js.map +1 -1
  43. package/dist/commands/logs.d.ts.map +1 -1
  44. package/dist/commands/logs.js +4 -3
  45. package/dist/commands/logs.js.map +1 -1
  46. package/dist/commands/preview.d.ts +3 -0
  47. package/dist/commands/preview.d.ts.map +1 -0
  48. package/dist/commands/preview.js +96 -0
  49. package/dist/commands/preview.js.map +1 -0
  50. package/dist/commands/quicklaunch.d.ts.map +1 -1
  51. package/dist/commands/quicklaunch.js +146 -18
  52. package/dist/commands/quicklaunch.js.map +1 -1
  53. package/dist/commands/repo.d.ts +3 -0
  54. package/dist/commands/repo.d.ts.map +1 -0
  55. package/dist/commands/repo.js +433 -0
  56. package/dist/commands/repo.js.map +1 -0
  57. package/dist/commands/usage.d.ts +3 -0
  58. package/dist/commands/usage.d.ts.map +1 -0
  59. package/dist/commands/usage.js +95 -0
  60. package/dist/commands/usage.js.map +1 -0
  61. package/dist/connectors.d.ts +16 -0
  62. package/dist/connectors.d.ts.map +1 -0
  63. package/dist/connectors.js +95 -0
  64. package/dist/connectors.js.map +1 -0
  65. package/dist/context.d.ts.map +1 -1
  66. package/dist/context.js +6 -1
  67. package/dist/context.js.map +1 -1
  68. package/dist/index.js +19 -1
  69. package/dist/index.js.map +1 -1
  70. package/package.json +36 -34
@@ -0,0 +1,410 @@
1
+ import chalk from "chalk";
2
+ import ora from "ora";
3
+ import { resolve } from "node:path";
4
+ import { existsSync, readdirSync } from "node:fs";
5
+ import { execFileSync } from "node:child_process";
6
+ import { api } from "../api.js";
7
+ import { contextExists, readContext } from "../context.js";
8
+ /**
9
+ * Ensure Chromium is available. Checks system Chrome, Playwright cache,
10
+ * and auto-downloads via Playwright if nothing found.
11
+ */
12
+ async function ensureChromium() {
13
+ const existing = findChromium();
14
+ if (existing)
15
+ return existing;
16
+ // Auto-download Chromium — zero-config setup
17
+ const spinner = ora("Downloading Chromium (one-time setup)...").start();
18
+ try {
19
+ execFileSync("npx", ["playwright", "install", "chromium"], {
20
+ stdio: ["pipe", "pipe", "pipe"],
21
+ timeout: 120000,
22
+ });
23
+ spinner.succeed("Chromium installed");
24
+ }
25
+ catch {
26
+ try {
27
+ execFileSync("npx", ["playwright-core", "install", "chromium"], {
28
+ stdio: ["pipe", "pipe", "pipe"],
29
+ timeout: 120000,
30
+ });
31
+ spinner.succeed("Chromium installed");
32
+ }
33
+ catch {
34
+ spinner.fail("Failed to install Chromium");
35
+ console.error(chalk.dim(" Manual install: npx playwright install chromium"));
36
+ process.exit(1);
37
+ }
38
+ }
39
+ const path = findChromium();
40
+ if (!path) {
41
+ console.error(chalk.red("Chromium installed but not found on disk."));
42
+ process.exit(1);
43
+ }
44
+ return path;
45
+ }
46
+ async function launchBrowser(headless = true) {
47
+ const pw = await import("playwright-core");
48
+ const chromePath = await ensureChromium();
49
+ return pw.chromium.launch({
50
+ headless,
51
+ executablePath: chromePath,
52
+ args: headless ? ["--no-sandbox", "--disable-gpu"] : [],
53
+ });
54
+ }
55
+ function findChromium() {
56
+ const candidates = [];
57
+ if (process.platform === "win32") {
58
+ candidates.push("C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe", `${process.env.LOCALAPPDATA}\\Google\\Chrome\\Application\\chrome.exe`);
59
+ }
60
+ else if (process.platform === "darwin") {
61
+ candidates.push("/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", "/Applications/Chromium.app/Contents/MacOS/Chromium");
62
+ }
63
+ else {
64
+ candidates.push("/usr/bin/google-chrome", "/usr/bin/chromium-browser", "/usr/bin/chromium");
65
+ }
66
+ // Check Playwright's installed browsers
67
+ try {
68
+ const home = process.env.HOME || process.env.USERPROFILE || "";
69
+ const pwBrowsers = resolve(home, ".cache", "ms-playwright");
70
+ if (existsSync(pwBrowsers)) {
71
+ const dirs = readdirSync(pwBrowsers).filter((d) => d.startsWith("chromium-"));
72
+ if (dirs.length > 0) {
73
+ const latest = dirs.sort().pop();
74
+ const chromePath = process.platform === "win32" ? resolve(pwBrowsers, latest, "chrome-win", "chrome.exe") :
75
+ process.platform === "darwin" ? resolve(pwBrowsers, latest, "chrome-mac", "Chromium.app", "Contents", "MacOS", "Chromium") :
76
+ resolve(pwBrowsers, latest, "chrome-linux", "chrome");
77
+ if (existsSync(chromePath))
78
+ return chromePath;
79
+ }
80
+ }
81
+ }
82
+ catch { /* ignore */ }
83
+ for (const c of candidates) {
84
+ if (existsSync(c))
85
+ return c;
86
+ }
87
+ if (process.platform !== "win32") {
88
+ try {
89
+ return execFileSync("which", ["google-chrome"], { encoding: "utf-8" }).trim();
90
+ }
91
+ catch { /* */ }
92
+ try {
93
+ return execFileSync("which", ["chromium"], { encoding: "utf-8" }).trim();
94
+ }
95
+ catch { /* */ }
96
+ }
97
+ return undefined;
98
+ }
99
+ async function resolveUrl(url) {
100
+ if (url)
101
+ return url.startsWith("http") ? url : `https://${url}`;
102
+ if (contextExists()) {
103
+ try {
104
+ const ctx = readContext();
105
+ const { data } = await api(`/api/services/${ctx.serviceId}`);
106
+ if (data.subdomain)
107
+ return `https://${data.subdomain}`;
108
+ }
109
+ catch { /* ignore */ }
110
+ }
111
+ console.error(chalk.red("No URL provided and no service context found."));
112
+ process.exit(1);
113
+ }
114
+ export function registerBrowser(program) {
115
+ const browser = program
116
+ .command("browser")
117
+ .alias("b")
118
+ .description("Browser automation — screenshot, test, open, PDF, and more");
119
+ // ─── screenshot ───────────────────────────────────────
120
+ browser
121
+ .command("screenshot [url]")
122
+ .alias("ss")
123
+ .description("Take a screenshot of a page")
124
+ .option("-o, --output <path>", "Output file path", "screenshot.png")
125
+ .option("-w, --width <px>", "Viewport width", "1280")
126
+ .option("--height <px>", "Viewport height", "720")
127
+ .option("--full", "Capture full page", false)
128
+ .option("--delay <ms>", "Wait before capturing", "0")
129
+ .option("--device <name>", "Emulate device (e.g. 'iPhone 14')")
130
+ .action(async (url, opts) => {
131
+ const targetUrl = await resolveUrl(url);
132
+ const spinner = ora(`Capturing ${chalk.cyan(targetUrl)}...`).start();
133
+ try {
134
+ const pw = await import("playwright-core");
135
+ const b = await launchBrowser(true);
136
+ const contextOpts = {
137
+ viewport: { width: parseInt(opts.width), height: parseInt(opts.height) },
138
+ };
139
+ if (opts.device) {
140
+ const device = pw.devices[opts.device];
141
+ if (device)
142
+ Object.assign(contextOpts, device);
143
+ else
144
+ spinner.warn(`Device "${opts.device}" not found, using defaults`);
145
+ }
146
+ const context = await b.newContext(contextOpts);
147
+ const page = await context.newPage();
148
+ await page.goto(targetUrl, { waitUntil: "networkidle" });
149
+ if (parseInt(opts.delay) > 0)
150
+ await page.waitForTimeout(parseInt(opts.delay));
151
+ const output = resolve(opts.output);
152
+ await page.screenshot({ path: output, fullPage: opts.full });
153
+ await b.close();
154
+ spinner.succeed(`Screenshot saved → ${chalk.cyan(output)}`);
155
+ }
156
+ catch (err) {
157
+ spinner.fail(chalk.red(`Screenshot failed: ${err.message}`));
158
+ process.exitCode = 1;
159
+ }
160
+ });
161
+ // ─── pdf ──────────────────────────────────────────────
162
+ browser
163
+ .command("pdf [url]")
164
+ .description("Generate a PDF of a page")
165
+ .option("-o, --output <path>", "Output file path", "page.pdf")
166
+ .option("--format <size>", "Paper format", "A4")
167
+ .option("--landscape", "Landscape orientation", false)
168
+ .action(async (url, opts) => {
169
+ const targetUrl = await resolveUrl(url);
170
+ const spinner = ora(`Generating PDF of ${chalk.cyan(targetUrl)}...`).start();
171
+ try {
172
+ const b = await launchBrowser(true);
173
+ const page = await b.newPage();
174
+ await page.goto(targetUrl, { waitUntil: "networkidle" });
175
+ const output = resolve(opts.output);
176
+ await page.pdf({ path: output, format: opts.format, landscape: opts.landscape, printBackground: true });
177
+ await b.close();
178
+ spinner.succeed(`PDF saved → ${chalk.cyan(output)}`);
179
+ }
180
+ catch (err) {
181
+ spinner.fail(chalk.red(`PDF failed: ${err.message}`));
182
+ process.exitCode = 1;
183
+ }
184
+ });
185
+ // ─── open ─────────────────────────────────────────────
186
+ browser
187
+ .command("open [url]")
188
+ .description("Open page in headed browser for inspection")
189
+ .option("-w, --width <px>", "Viewport width", "1280")
190
+ .option("--height <px>", "Viewport height", "720")
191
+ .option("--device <name>", "Emulate device")
192
+ .action(async (url, opts) => {
193
+ const targetUrl = await resolveUrl(url);
194
+ console.log(chalk.dim(`Opening ${chalk.cyan(targetUrl)}...`));
195
+ console.log(chalk.dim("Close the browser window to exit.\n"));
196
+ try {
197
+ const pw = await import("playwright-core");
198
+ const b = await launchBrowser(false);
199
+ const contextOpts = {
200
+ viewport: { width: parseInt(opts.width), height: parseInt(opts.height) },
201
+ };
202
+ if (opts.device) {
203
+ const device = pw.devices[opts.device];
204
+ if (device)
205
+ Object.assign(contextOpts, device);
206
+ }
207
+ const context = await b.newContext(contextOpts);
208
+ const page = await context.newPage();
209
+ await page.goto(targetUrl, { waitUntil: "domcontentloaded" });
210
+ await new Promise((res) => { b.on("disconnected", () => res()); });
211
+ console.log(chalk.dim("\nBrowser closed."));
212
+ }
213
+ catch (err) {
214
+ console.error(chalk.red(`Failed: ${err.message}`));
215
+ process.exitCode = 1;
216
+ }
217
+ });
218
+ // ─── test ─────────────────────────────────────────────
219
+ browser
220
+ .command("test [url]")
221
+ .description("Run smoke tests against a deployed page")
222
+ .option("--timeout <ms>", "Navigation timeout", "30000")
223
+ .option("--check-links", "Verify links return 200", false)
224
+ .option("--check-console", "Report console errors", false)
225
+ .option("--check-a11y", "Basic accessibility checks", false)
226
+ .action(async (url, opts) => {
227
+ const targetUrl = await resolveUrl(url);
228
+ console.log(chalk.bold(`\n Testing ${chalk.cyan(targetUrl)}\n`));
229
+ const results = [];
230
+ const consoleErrors = [];
231
+ try {
232
+ const b = await launchBrowser(true);
233
+ const context = await b.newContext();
234
+ const page = await context.newPage();
235
+ if (opts.checkConsole) {
236
+ page.on("console", (msg) => {
237
+ if (msg.type() === "error")
238
+ consoleErrors.push(msg.text());
239
+ });
240
+ }
241
+ // Test: Page loads
242
+ const loadStart = Date.now();
243
+ const response = await page.goto(targetUrl, {
244
+ waitUntil: "networkidle",
245
+ timeout: parseInt(opts.timeout),
246
+ });
247
+ const loadTime = Date.now() - loadStart;
248
+ results.push({
249
+ name: "Page loads",
250
+ pass: !!response && response.ok(),
251
+ detail: `${response?.status()} in ${loadTime}ms`,
252
+ });
253
+ // Test: No error page
254
+ const title = await page.title();
255
+ const bodyEl = await page.$("body");
256
+ const bodyText = bodyEl ? await bodyEl.textContent() || "" : "";
257
+ const hasError = /Application error|500|Internal Server Error|Cannot GET/i.test(bodyText.slice(0, 500));
258
+ results.push({
259
+ name: "No error page",
260
+ pass: !hasError,
261
+ detail: hasError ? "Error content detected" : `Title: "${title.slice(0, 50)}"`,
262
+ });
263
+ // Test: Performance
264
+ results.push({ name: "Load time < 5s", pass: loadTime < 5000, detail: `${loadTime}ms` });
265
+ // Test: Has content
266
+ results.push({ name: "Has content", pass: bodyText.length > 100, detail: `${bodyText.length} chars` });
267
+ // Test: HTTPS
268
+ results.push({ name: "HTTPS", pass: targetUrl.startsWith("https://"), detail: targetUrl.startsWith("https://") ? "Secure" : "Insecure" });
269
+ // Test: Viewport renders
270
+ const scrollHeight = await page.$eval("html", (el) => el.scrollHeight);
271
+ results.push({ name: "Viewport renders", pass: scrollHeight > 0, detail: `${scrollHeight}px` });
272
+ // Optional: Check links
273
+ if (opts.checkLinks) {
274
+ const links = await page.$$eval("a[href]", (els) => els.map((a) => a.href).filter((h) => h.startsWith("http")));
275
+ const unique = [...new Set(links)].slice(0, 20);
276
+ let broken = 0;
277
+ for (const link of unique) {
278
+ try {
279
+ const r = await page.request.head(link, { timeout: 5000 });
280
+ if (!r.ok())
281
+ broken++;
282
+ }
283
+ catch {
284
+ broken++;
285
+ }
286
+ }
287
+ results.push({ name: "Links valid", pass: broken === 0, detail: `${unique.length} checked, ${broken} broken` });
288
+ }
289
+ // Optional: Console errors
290
+ if (opts.checkConsole) {
291
+ results.push({
292
+ name: "No console errors",
293
+ pass: consoleErrors.length === 0,
294
+ detail: consoleErrors.length > 0 ? `${consoleErrors.length} errors` : "Clean",
295
+ });
296
+ }
297
+ // Optional: a11y
298
+ if (opts.checkA11y) {
299
+ const hasLang = await page.$eval("html", (el) => !!el.lang);
300
+ const missingAlt = await page.$$eval("img:not([alt])", (imgs) => imgs.length);
301
+ const h1Count = await page.$$eval("h1", (h1s) => h1s.length);
302
+ results.push({ name: "HTML lang attribute", pass: hasLang, detail: hasLang ? "Present" : "Missing" });
303
+ results.push({ name: "Images have alt text", pass: missingAlt === 0, detail: `${missingAlt} missing` });
304
+ results.push({ name: "Has <h1>", pass: h1Count > 0, detail: `${h1Count} found` });
305
+ }
306
+ await b.close();
307
+ }
308
+ catch (err) {
309
+ results.push({ name: "Page loads", pass: false, detail: err.message.slice(0, 100) });
310
+ }
311
+ // Print results
312
+ const passed = results.filter((r) => r.pass).length;
313
+ const failed = results.filter((r) => !r.pass).length;
314
+ for (const r of results) {
315
+ const icon = r.pass ? chalk.green(" ✓") : chalk.red(" ✗");
316
+ console.log(`${icon} ${r.name}${r.detail ? chalk.dim(` — ${r.detail}`) : ""}`);
317
+ }
318
+ console.log(`\n ${chalk.bold(passed)} passed${failed > 0 ? chalk.red(`, ${failed} failed`) : ""}${chalk.dim(` (${results.length} tests)`)}\n`);
319
+ if (failed > 0)
320
+ process.exitCode = 1;
321
+ });
322
+ // ─── wait ─────────────────────────────────────────────
323
+ browser
324
+ .command("wait [url]")
325
+ .description("Wait for a page to become reachable (post-deploy)")
326
+ .option("--timeout <s>", "Max wait seconds", "120")
327
+ .option("--interval <s>", "Check interval seconds", "5")
328
+ .option("--status <code>", "Expected HTTP status", "200")
329
+ .action(async (url, opts) => {
330
+ const targetUrl = await resolveUrl(url);
331
+ const timeout = parseInt(opts.timeout) * 1000;
332
+ const interval = parseInt(opts.interval) * 1000;
333
+ const expected = parseInt(opts.status);
334
+ const spinner = ora(`Waiting for ${chalk.cyan(targetUrl)}...`).start();
335
+ const start = Date.now();
336
+ while (Date.now() - start < timeout) {
337
+ try {
338
+ const res = await fetch(targetUrl, { method: "HEAD", signal: AbortSignal.timeout(5000) });
339
+ if (res.status === expected) {
340
+ spinner.succeed(`${chalk.cyan(targetUrl)} is up (${res.status}) — ${((Date.now() - start) / 1000).toFixed(1)}s`);
341
+ return;
342
+ }
343
+ spinner.text = `Waiting... (got ${res.status}, want ${expected})`;
344
+ }
345
+ catch {
346
+ spinner.text = `Waiting for ${chalk.cyan(targetUrl)}...`;
347
+ }
348
+ await new Promise((r) => setTimeout(r, interval));
349
+ }
350
+ spinner.fail(chalk.red(`Timeout — not reachable after ${opts.timeout}s`));
351
+ process.exitCode = 1;
352
+ });
353
+ // ─── devices ──────────────────────────────────────────
354
+ browser
355
+ .command("devices")
356
+ .description("List available device emulation profiles")
357
+ .option("--filter <name>", "Filter by name")
358
+ .action(async (opts) => {
359
+ const pw = await import("playwright-core");
360
+ const names = Object.keys(pw.devices);
361
+ const filtered = opts.filter
362
+ ? names.filter((d) => d.toLowerCase().includes(opts.filter.toLowerCase()))
363
+ : names;
364
+ console.log(chalk.bold(`\n Available devices (${filtered.length}):\n`));
365
+ for (const name of filtered) {
366
+ const d = pw.devices[name];
367
+ console.log(` ${chalk.cyan(name)}${chalk.dim(` — ${d.viewport.width}x${d.viewport.height}${d.isMobile ? " (mobile)" : ""}`)}`);
368
+ }
369
+ console.log();
370
+ });
371
+ // ─── codegen ──────────────────────────────────────────
372
+ browser
373
+ .command("codegen [url]")
374
+ .description("Record browser actions and generate test code")
375
+ .option("--target <lang>", "Output: playwright-ts, playwright-js, python", "playwright-ts")
376
+ .action(async (url, opts) => {
377
+ const targetUrl = await resolveUrl(url);
378
+ console.log(chalk.bold.cyan("\n Codegen") + chalk.dim(" — recording browser actions\n"));
379
+ console.log(chalk.dim(" Navigate the page. Close the browser to output code.\n"));
380
+ try {
381
+ const b = await launchBrowser(false);
382
+ const context = await b.newContext({ viewport: { width: 1280, height: 720 } });
383
+ const page = await context.newPage();
384
+ const actions = [];
385
+ let lastUrl = "";
386
+ page.on("framenavigated", (frame) => {
387
+ if (frame === page.mainFrame()) {
388
+ const u = frame.url();
389
+ if (u !== lastUrl) {
390
+ actions.push(`await page.goto('${u}');`);
391
+ lastUrl = u;
392
+ }
393
+ }
394
+ });
395
+ await page.goto(targetUrl, { waitUntil: "domcontentloaded" });
396
+ await new Promise((res) => { b.on("disconnected", () => res()); });
397
+ const isPython = opts.target.includes("python");
398
+ const code = isPython
399
+ ? `from playwright.sync_api import sync_playwright\n\nwith sync_playwright() as p:\n browser = p.chromium.launch(headless=False)\n page = browser.new_page()\n${actions.map((a) => ` ${a.replace("await ", "").replace(";", "")}`).join("\n")}\n # Add assertions here\n browser.close()\n`
400
+ : `import { test, expect } from '@playwright/test';\n\ntest('smoke test', async ({ page }) => {\n${actions.map((a) => ` ${a}`).join("\n")}\n // Add assertions here\n await expect(page).toHaveTitle(/.*/); \n});\n`;
401
+ console.log(chalk.bold("\n Generated code:\n"));
402
+ console.log(chalk.cyan(code));
403
+ }
404
+ catch (err) {
405
+ console.error(chalk.red(`Codegen failed: ${err.message}`));
406
+ process.exitCode = 1;
407
+ }
408
+ });
409
+ }
410
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/commands/browser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerDb(program: Command): void;
3
+ //# sourceMappingURL=db.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/commands/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiDpC,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6bjD"}