@launchmatic/cli 0.3.0 → 0.4.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 (106) hide show
  1. package/README.md +178 -0
  2. package/dist/c.js +14185 -260
  3. package/dist/index.js +25506 -46
  4. package/package.json +37 -36
  5. package/dist/api.d.ts +0 -7
  6. package/dist/api.d.ts.map +0 -1
  7. package/dist/api.js +0 -79
  8. package/dist/api.js.map +0 -1
  9. package/dist/c.d.ts +0 -11
  10. package/dist/c.d.ts.map +0 -1
  11. package/dist/c.js.map +0 -1
  12. package/dist/commands/api-key.d.ts +0 -3
  13. package/dist/commands/api-key.d.ts.map +0 -1
  14. package/dist/commands/api-key.js +0 -89
  15. package/dist/commands/api-key.js.map +0 -1
  16. package/dist/commands/browser.d.ts +0 -3
  17. package/dist/commands/browser.d.ts.map +0 -1
  18. package/dist/commands/browser.js +0 -410
  19. package/dist/commands/browser.js.map +0 -1
  20. package/dist/commands/db.d.ts +0 -3
  21. package/dist/commands/db.d.ts.map +0 -1
  22. package/dist/commands/db.js +0 -481
  23. package/dist/commands/db.js.map +0 -1
  24. package/dist/commands/deploy.d.ts +0 -3
  25. package/dist/commands/deploy.d.ts.map +0 -1
  26. package/dist/commands/deploy.js +0 -219
  27. package/dist/commands/deploy.js.map +0 -1
  28. package/dist/commands/deployments.d.ts +0 -3
  29. package/dist/commands/deployments.d.ts.map +0 -1
  30. package/dist/commands/deployments.js +0 -158
  31. package/dist/commands/deployments.js.map +0 -1
  32. package/dist/commands/destroy.d.ts +0 -3
  33. package/dist/commands/destroy.d.ts.map +0 -1
  34. package/dist/commands/destroy.js +0 -53
  35. package/dist/commands/destroy.js.map +0 -1
  36. package/dist/commands/doctor.d.ts +0 -3
  37. package/dist/commands/doctor.d.ts.map +0 -1
  38. package/dist/commands/doctor.js +0 -160
  39. package/dist/commands/doctor.js.map +0 -1
  40. package/dist/commands/domains.d.ts +0 -3
  41. package/dist/commands/domains.d.ts.map +0 -1
  42. package/dist/commands/domains.js +0 -38
  43. package/dist/commands/domains.js.map +0 -1
  44. package/dist/commands/env.d.ts +0 -3
  45. package/dist/commands/env.d.ts.map +0 -1
  46. package/dist/commands/env.js +0 -74
  47. package/dist/commands/env.js.map +0 -1
  48. package/dist/commands/infra.d.ts +0 -3
  49. package/dist/commands/infra.d.ts.map +0 -1
  50. package/dist/commands/infra.js +0 -193
  51. package/dist/commands/infra.js.map +0 -1
  52. package/dist/commands/init.d.ts +0 -3
  53. package/dist/commands/init.d.ts.map +0 -1
  54. package/dist/commands/init.js +0 -239
  55. package/dist/commands/init.js.map +0 -1
  56. package/dist/commands/lightspeed.d.ts +0 -3
  57. package/dist/commands/lightspeed.d.ts.map +0 -1
  58. package/dist/commands/lightspeed.js +0 -175
  59. package/dist/commands/lightspeed.js.map +0 -1
  60. package/dist/commands/login.d.ts +0 -3
  61. package/dist/commands/login.d.ts.map +0 -1
  62. package/dist/commands/login.js +0 -175
  63. package/dist/commands/login.js.map +0 -1
  64. package/dist/commands/logs.d.ts +0 -3
  65. package/dist/commands/logs.d.ts.map +0 -1
  66. package/dist/commands/logs.js +0 -49
  67. package/dist/commands/logs.js.map +0 -1
  68. package/dist/commands/preview.d.ts +0 -3
  69. package/dist/commands/preview.d.ts.map +0 -1
  70. package/dist/commands/preview.js +0 -96
  71. package/dist/commands/preview.js.map +0 -1
  72. package/dist/commands/quicklaunch.d.ts +0 -3
  73. package/dist/commands/quicklaunch.d.ts.map +0 -1
  74. package/dist/commands/quicklaunch.js +0 -452
  75. package/dist/commands/quicklaunch.js.map +0 -1
  76. package/dist/commands/repo.d.ts +0 -3
  77. package/dist/commands/repo.d.ts.map +0 -1
  78. package/dist/commands/repo.js +0 -433
  79. package/dist/commands/repo.js.map +0 -1
  80. package/dist/commands/status.d.ts +0 -3
  81. package/dist/commands/status.d.ts.map +0 -1
  82. package/dist/commands/status.js +0 -77
  83. package/dist/commands/status.js.map +0 -1
  84. package/dist/commands/usage.d.ts +0 -3
  85. package/dist/commands/usage.d.ts.map +0 -1
  86. package/dist/commands/usage.js +0 -95
  87. package/dist/commands/usage.js.map +0 -1
  88. package/dist/config.d.ts +0 -12
  89. package/dist/config.d.ts.map +0 -1
  90. package/dist/config.js +0 -41
  91. package/dist/config.js.map +0 -1
  92. package/dist/connectors.d.ts +0 -16
  93. package/dist/connectors.d.ts.map +0 -1
  94. package/dist/connectors.js +0 -95
  95. package/dist/connectors.js.map +0 -1
  96. package/dist/context.d.ts +0 -10
  97. package/dist/context.d.ts.map +0 -1
  98. package/dist/context.js +0 -32
  99. package/dist/context.js.map +0 -1
  100. package/dist/detect.d.ts +0 -20
  101. package/dist/detect.d.ts.map +0 -1
  102. package/dist/detect.js +0 -281
  103. package/dist/detect.js.map +0 -1
  104. package/dist/index.d.ts +0 -3
  105. package/dist/index.d.ts.map +0 -1
  106. package/dist/index.js.map +0 -1
@@ -1,95 +0,0 @@
1
- import chalk from "chalk";
2
- import ora from "ora";
3
- import { api } from "../api.js";
4
- import { isLoggedIn } from "../config.js";
5
- import { readContext } from "../context.js";
6
- export function registerUsage(program) {
7
- const usage = program
8
- .command("usage")
9
- .description("View resource usage and metrics");
10
- // ── lm usage summary ──
11
- usage
12
- .command("summary")
13
- .description("Show aggregated usage stats for the current service")
14
- .action(async () => {
15
- if (!isLoggedIn()) {
16
- console.error(chalk.red('Not logged in. Run "lm login" first.'));
17
- process.exitCode = 1;
18
- return;
19
- }
20
- const ctx = readContext();
21
- const spinner = ora("Fetching usage summary...").start();
22
- try {
23
- const { data } = await api(`/api/usage/summary?serviceId=${ctx.serviceId}`);
24
- spinner.stop();
25
- console.log(chalk.bold("\n Resource Usage\n"));
26
- console.log(` ${chalk.bold("CPU")} avg ${fmtCpu(data.avgCpu)} peak ${fmtCpu(data.peakCpu)}`);
27
- console.log(` ${chalk.bold("Memory")} avg ${fmtMem(data.avgMemory)} peak ${fmtMem(data.peakMemory)}`);
28
- console.log(` ${chalk.bold("Network In")} ${data.totalNetworkIn.toFixed(1)} MB`);
29
- console.log(` ${chalk.bold("Network Out")} ${data.totalNetworkOut.toFixed(1)} MB`);
30
- console.log(` ${chalk.bold("Replicas")} ${data.currentReplicas}`);
31
- console.log(chalk.bold("\n Deployments\n"));
32
- console.log(` ${chalk.bold("Total")} ${data.totalDeploys}`);
33
- console.log(` ${chalk.bold("Success Rate")} ${(data.successRate * 100).toFixed(0)}%`);
34
- console.log(` ${chalk.bold("Avg Build")} ${data.avgBuildMinutes.toFixed(1)} min`);
35
- console.log();
36
- }
37
- catch (err) {
38
- spinner.fail(chalk.red(`Failed: ${err instanceof Error ? err.message : "Unknown error"}`));
39
- process.exitCode = 1;
40
- }
41
- });
42
- // ── lm usage history ──
43
- usage
44
- .command("history")
45
- .description("Show time-series resource snapshots")
46
- .option("-h, --hours <hours>", "Hours of history", "24")
47
- .action(async (opts) => {
48
- if (!isLoggedIn()) {
49
- console.error(chalk.red('Not logged in. Run "lm login" first.'));
50
- process.exitCode = 1;
51
- return;
52
- }
53
- const ctx = readContext();
54
- const spinner = ora("Fetching usage history...").start();
55
- try {
56
- const { data } = await api(`/api/usage?serviceId=${ctx.serviceId}&hours=${opts.hours}`);
57
- spinner.stop();
58
- if (data.length === 0) {
59
- console.log(chalk.dim("No usage data available yet."));
60
- return;
61
- }
62
- console.log(chalk.bold(padR("TIME", 22) +
63
- padR("CPU", 10) +
64
- padR("MEM", 10) +
65
- padR("NET IN", 10) +
66
- padR("NET OUT", 10) +
67
- "REPLICAS"));
68
- for (const snap of data) {
69
- const ts = new Date(snap.timestamp).toLocaleString(undefined, {
70
- month: "short", day: "numeric", hour: "2-digit", minute: "2-digit",
71
- });
72
- console.log(padR(ts, 22) +
73
- padR(fmtCpu(snap.cpuMillicores), 10) +
74
- padR(fmtMem(snap.memoryMb), 10) +
75
- padR(`${snap.networkInMb.toFixed(1)}MB`, 10) +
76
- padR(`${snap.networkOutMb.toFixed(1)}MB`, 10) +
77
- String(snap.replicas));
78
- }
79
- }
80
- catch (err) {
81
- spinner.fail(chalk.red(`Failed: ${err instanceof Error ? err.message : "Unknown error"}`));
82
- process.exitCode = 1;
83
- }
84
- });
85
- }
86
- function fmtCpu(m) {
87
- return m >= 1000 ? `${(m / 1000).toFixed(1)} cores` : `${m}m`;
88
- }
89
- function fmtMem(mb) {
90
- return mb >= 1024 ? `${(mb / 1024).toFixed(1)} GB` : `${mb.toFixed(0)} MB`;
91
- }
92
- function padR(s, n) {
93
- return s + " ".repeat(Math.max(0, n - s.length));
94
- }
95
- //# sourceMappingURL=usage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/commands/usage.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts DELETED
@@ -1,12 +0,0 @@
1
- export declare function getApiUrl(): string;
2
- export declare function setApiUrl(url: string): void;
3
- export declare function getTokens(): {
4
- accessToken: string;
5
- refreshToken: string;
6
- };
7
- export declare function setTokens(accessToken: string, refreshToken: string): void;
8
- export declare function getUsername(): string;
9
- export declare function setUsername(username: string): void;
10
- export declare function clearAuth(): void;
11
- export declare function isLoggedIn(): boolean;
12
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAmBA,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED,wBAAgB,SAAS,IAAI;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAKzE;AAED,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAGzE;AAED,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAElD;AAED,wBAAgB,SAAS,IAAI,IAAI,CAIhC;AAED,wBAAgB,UAAU,IAAI,OAAO,CAEpC"}
package/dist/config.js DELETED
@@ -1,41 +0,0 @@
1
- import Conf from "conf";
2
- const store = new Conf({
3
- projectName: "launchmatic",
4
- schema: {
5
- apiUrl: { type: "string", default: "https://api.launchmatic.io" },
6
- accessToken: { type: "string", default: "" },
7
- refreshToken: { type: "string", default: "" },
8
- username: { type: "string", default: "" },
9
- },
10
- });
11
- export function getApiUrl() {
12
- return process.env.LM_API_URL || store.get("apiUrl");
13
- }
14
- export function setApiUrl(url) {
15
- store.set("apiUrl", url);
16
- }
17
- export function getTokens() {
18
- return {
19
- accessToken: store.get("accessToken"),
20
- refreshToken: store.get("refreshToken"),
21
- };
22
- }
23
- export function setTokens(accessToken, refreshToken) {
24
- store.set("accessToken", accessToken);
25
- store.set("refreshToken", refreshToken);
26
- }
27
- export function getUsername() {
28
- return store.get("username");
29
- }
30
- export function setUsername(username) {
31
- store.set("username", username);
32
- }
33
- export function clearAuth() {
34
- store.delete("accessToken");
35
- store.delete("refreshToken");
36
- store.delete("username");
37
- }
38
- export function isLoggedIn() {
39
- return !!store.get("accessToken");
40
- }
41
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AASxB,MAAM,KAAK,GAAG,IAAI,IAAI,CAAY;IAChC,WAAW,EAAE,aAAa;IAC1B,MAAM,EAAE;QACN,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,4BAA4B,EAAE;QACjE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QAC5C,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QAC7C,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;KAC1C;CACF,CAAC,CAAC;AAEH,MAAM,UAAU,SAAS;IACvB,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO;QACL,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC;QACrC,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC;KACxC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,WAAmB,EAAE,YAAoB;IACjE,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IACtC,KAAK,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC5B,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAC7B,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AACpC,CAAC"}
@@ -1,16 +0,0 @@
1
- export interface ConnectorInfo {
2
- service: string;
3
- url: string;
4
- hint: string;
5
- autoValue?: string;
6
- }
7
- export declare function getConnector(envKey: string, appName?: string): ConnectorInfo | null;
8
- /**
9
- * Detect required environment variables from .env.example, .env.local.example, or .env
10
- */
11
- export declare function detectEnvVars(cwd: string): string[];
12
- /**
13
- * Format connector info for CLI display
14
- */
15
- export declare function formatConnectorLine(key: string, connector: ConnectorInfo | null): string;
16
- //# sourceMappingURL=connectors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connectors.d.ts","sourceRoot":"","sources":["../src/connectors.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA0CD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAKnF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CA0BnD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,GAAG,IAAI,GAAG,MAAM,CAQxF"}
@@ -1,95 +0,0 @@
1
- import { existsSync, readFileSync } from "node:fs";
2
- import { join } from "node:path";
3
- import { randomBytes } from "node:crypto";
4
- import chalk from "chalk";
5
- const CONNECTOR_REGISTRY = [
6
- // Stripe
7
- { pattern: /^STRIPE_(SECRET|PUBLISHABLE|API)_KEY$/i, info: () => ({ service: "Stripe", url: "https://dashboard.stripe.com/apikeys", hint: "Copy your Secret key" }) },
8
- { pattern: /^STRIPE_WEBHOOK_SECRET$/i, info: () => ({ service: "Stripe", url: "https://dashboard.stripe.com/webhooks", hint: "Create webhook and copy signing secret" }) },
9
- // OpenAI
10
- { pattern: /^OPENAI_API_KEY$/i, info: () => ({ service: "OpenAI", url: "https://platform.openai.com/api-keys", hint: "Create a new API key" }) },
11
- // Anthropic
12
- { pattern: /^ANTHROPIC_API_KEY$/i, info: () => ({ service: "Anthropic", url: "https://console.anthropic.com/settings/keys", hint: "Create a new API key" }) },
13
- // Supabase
14
- { pattern: /^(NEXT_PUBLIC_)?SUPABASE_(URL|ANON_KEY|SERVICE_ROLE_KEY)$/i, info: () => ({ service: "Supabase", url: "https://supabase.com/dashboard/project/_/settings/api", hint: "Project Settings → API" }) },
15
- // Firebase
16
- { pattern: /^(NEXT_PUBLIC_)?FIREBASE_(API_KEY|AUTH_DOMAIN|PROJECT_ID)$/i, info: () => ({ service: "Firebase", url: "https://console.firebase.google.com/", hint: "Project Settings → General → Config" }) },
17
- // Resend
18
- { pattern: /^RESEND_API_KEY$/i, info: () => ({ service: "Resend", url: "https://resend.com/api-keys", hint: "Create an API key" }) },
19
- // SendGrid
20
- { pattern: /^SENDGRID_API_KEY$/i, info: () => ({ service: "SendGrid", url: "https://app.sendgrid.com/settings/api_keys", hint: "Create an API key" }) },
21
- // Twilio
22
- { pattern: /^TWILIO_(ACCOUNT_SID|AUTH_TOKEN|PHONE_NUMBER)$/i, info: () => ({ service: "Twilio", url: "https://console.twilio.com/", hint: "Console dashboard" }) },
23
- // Clerk
24
- { pattern: /^(NEXT_PUBLIC_)?CLERK_(PUBLISHABLE_KEY|SECRET_KEY)$/i, info: () => ({ service: "Clerk", url: "https://dashboard.clerk.com/", hint: "API Keys section" }) },
25
- // Auth0
26
- { pattern: /^AUTH0_(SECRET|CLIENT_ID|CLIENT_SECRET|ISSUER_BASE_URL)$/i, info: () => ({ service: "Auth0", url: "https://manage.auth0.com/dashboard", hint: "Applications → Settings" }) },
27
- // Cloudinary
28
- { pattern: /^CLOUDINARY_(CLOUD_NAME|API_KEY|API_SECRET|URL)$/i, info: () => ({ service: "Cloudinary", url: "https://console.cloudinary.com/settings/api-keys", hint: "Dashboard or API Keys page" }) },
29
- // AWS
30
- { pattern: /^AWS_(ACCESS_KEY_ID|SECRET_ACCESS_KEY|REGION)$/i, info: () => ({ service: "AWS", url: "https://console.aws.amazon.com/iam/home#/security_credentials", hint: "IAM → Security credentials" }) },
31
- // GitHub
32
- { pattern: /^GITHUB_(TOKEN|CLIENT_ID|CLIENT_SECRET)$/i, info: () => ({ service: "GitHub", url: "https://github.com/settings/tokens", hint: "Generate personal access token" }) },
33
- // Google Maps
34
- { pattern: /^(NEXT_PUBLIC_)?GOOGLE_MAPS_API_KEY$/i, info: () => ({ service: "Google Maps", url: "https://console.cloud.google.com/apis/credentials", hint: "Create API key" }) },
35
- // ─── Auto-filled internal resources ───
36
- { pattern: /^DATABASE_URL$/i, info: () => ({ service: "Database", url: "", hint: "Auto-provisioned by Launchmatic", autoValue: "auto-provisioned" }) },
37
- { pattern: /^REDIS_URL$/i, info: () => ({ service: "Redis", url: "", hint: "Auto-provisioned by Launchmatic", autoValue: "auto-provisioned" }) },
38
- { pattern: /^(JWT_SECRET|SESSION_SECRET|NEXTAUTH_SECRET|SECRET_KEY|APP_SECRET|ENCRYPTION_KEY)$/i, info: () => ({ service: "Secret", url: "", hint: "Auto-generated", autoValue: randomBytes(32).toString("hex") }) },
39
- { pattern: /^(NEXT_PUBLIC_)?(APP_URL|BASE_URL|SITE_URL|NEXTAUTH_URL)$/i, info: () => ({ service: "URL", url: "", hint: "Auto-set to deployment URL after first deploy", autoValue: "auto-provisioned" }) },
40
- { pattern: /^NODE_ENV$/i, info: () => ({ service: "Node", url: "", hint: "Production environment", autoValue: "production" }) },
41
- { pattern: /^PORT$/i, info: () => ({ service: "Port", url: "", hint: "Set by platform", autoValue: "3000" }) },
42
- ];
43
- export function getConnector(envKey, appName) {
44
- for (const entry of CONNECTOR_REGISTRY) {
45
- if (entry.pattern.test(envKey))
46
- return entry.info(appName);
47
- }
48
- return null;
49
- }
50
- /**
51
- * Detect required environment variables from .env.example, .env.local.example, or .env
52
- */
53
- export function detectEnvVars(cwd) {
54
- const envFiles = [".env.example", ".env.local.example", ".env.sample", ".env"];
55
- for (const file of envFiles) {
56
- const filePath = join(cwd, file);
57
- if (existsSync(filePath)) {
58
- try {
59
- const content = readFileSync(filePath, "utf-8");
60
- const keys = [];
61
- for (const line of content.split("\n")) {
62
- const trimmed = line.trim();
63
- if (!trimmed || trimmed.startsWith("#"))
64
- continue;
65
- const match = trimmed.match(/^([A-Z][A-Z0-9_]*)=/);
66
- if (match) {
67
- const key = match[1];
68
- // Skip keys that already have real values (not placeholders)
69
- const value = trimmed.slice(key.length + 1).trim();
70
- if (!value || value === '""' || value === "''" || value.startsWith("your_") || value.startsWith("sk_test_") || value.includes("xxx") || value.includes("CHANGE_ME")) {
71
- keys.push(key);
72
- }
73
- }
74
- }
75
- if (keys.length > 0)
76
- return keys;
77
- }
78
- catch { /* ignore */ }
79
- }
80
- }
81
- return [];
82
- }
83
- /**
84
- * Format connector info for CLI display
85
- */
86
- export function formatConnectorLine(key, connector) {
87
- if (!connector) {
88
- return ` ${chalk.yellow("?")} ${chalk.bold(key)} ${chalk.dim("— manual entry required")}`;
89
- }
90
- if (connector.autoValue) {
91
- return ` ${chalk.green("✓")} ${chalk.bold(key)} ${chalk.dim(`← ${connector.hint}`)}`;
92
- }
93
- return ` ${chalk.cyan("→")} ${chalk.bold(key)} ${chalk.dim(`← ${connector.service}`)} ${chalk.cyan.underline(connector.url)}`;
94
- }
95
- //# sourceMappingURL=connectors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connectors.js","sourceRoot":"","sources":["../src/connectors.ts"],"names":[],"mappings":"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"}
package/dist/context.d.ts DELETED
@@ -1,10 +0,0 @@
1
- export interface ProjectContext {
2
- projectId: string;
3
- serviceId: string;
4
- teamId: string;
5
- }
6
- export declare function readContext(): ProjectContext;
7
- export declare function writeContext(ctx: ProjectContext): void;
8
- export declare function contextExists(): boolean;
9
- export declare function removeContext(): void;
10
- //# sourceMappingURL=context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD,wBAAgB,WAAW,IAAI,cAAc,CAe5C;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,CAEtD;AAED,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED,wBAAgB,aAAa,IAAI,IAAI,CAKpC"}
package/dist/context.js DELETED
@@ -1,32 +0,0 @@
1
- import { readFileSync, writeFileSync, existsSync, unlinkSync } from "node:fs";
2
- import { resolve } from "node:path";
3
- const CONFIG_FILE = ".launchmatic.json";
4
- function configPath() {
5
- return resolve(process.cwd(), CONFIG_FILE);
6
- }
7
- export function readContext() {
8
- const path = configPath();
9
- if (!existsSync(path)) {
10
- throw new Error(`No ${CONFIG_FILE} found in current directory. Run "lm init" first.`);
11
- }
12
- const raw = readFileSync(path, "utf-8");
13
- try {
14
- return JSON.parse(raw);
15
- }
16
- catch {
17
- throw new Error(`${CONFIG_FILE} is corrupted. Delete it and run "lm init" to recreate.`);
18
- }
19
- }
20
- export function writeContext(ctx) {
21
- writeFileSync(configPath(), JSON.stringify(ctx, null, 2) + "\n");
22
- }
23
- export function contextExists() {
24
- return existsSync(configPath());
25
- }
26
- export function removeContext() {
27
- const path = configPath();
28
- if (existsSync(path)) {
29
- unlinkSync(path);
30
- }
31
- }
32
- //# sourceMappingURL=context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,WAAW,GAAG,mBAAmB,CAAC;AAQxC,SAAS,UAAU;IACjB,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;IAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,MAAM,WAAW,mDAAmD,CACrE,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,GAAG,WAAW,yDAAyD,CACxE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAmB;IAC9C,aAAa,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;IAC1B,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,UAAU,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;AACH,CAAC"}
package/dist/detect.d.ts DELETED
@@ -1,20 +0,0 @@
1
- export interface DetectionResult {
2
- runtime: string;
3
- framework?: string;
4
- buildCmd?: string;
5
- startCmd?: string;
6
- port: number;
7
- confidence: "high" | "low";
8
- }
9
- export interface GitInfo {
10
- repoOwner?: string;
11
- repoName?: string;
12
- repoBranch: string;
13
- commitSha?: string;
14
- hasUncommitted: boolean;
15
- hasUnpushed: boolean;
16
- hasRemote: boolean;
17
- }
18
- export declare function detectLocal(cwd: string): DetectionResult;
19
- export declare function getGitInfo(cwd: string): GitInfo;
20
- //# sourceMappingURL=detect.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,GAAG,KAAK,CAAC;CAC5B;AAED,MAAM,WAAW,OAAO;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAyLxD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAuE/C"}