flingit 0.0.15 → 0.0.18
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 +2 -1
- package/dist/cli/commands/cron.d.ts +29 -0
- package/dist/cli/commands/cron.d.ts.map +1 -1
- package/dist/cli/commands/cron.js +54 -37
- package/dist/cli/commands/cron.js.map +1 -1
- package/dist/cli/commands/db.d.ts.map +1 -1
- package/dist/cli/commands/db.js +15 -19
- package/dist/cli/commands/db.js.map +1 -1
- package/dist/cli/commands/feedback.js +3 -3
- package/dist/cli/commands/feedback.js.map +1 -1
- package/dist/cli/commands/launch.d.ts +45 -3
- package/dist/cli/commands/launch.d.ts.map +1 -1
- package/dist/cli/commands/launch.js +39 -17
- package/dist/cli/commands/launch.js.map +1 -1
- package/dist/cli/commands/logout.d.ts +18 -0
- package/dist/cli/commands/logout.d.ts.map +1 -1
- package/dist/cli/commands/logout.js +40 -14
- package/dist/cli/commands/logout.js.map +1 -1
- package/dist/cli/commands/logs.d.ts +3 -2
- package/dist/cli/commands/logs.d.ts.map +1 -1
- package/dist/cli/commands/logs.js +26 -43
- package/dist/cli/commands/logs.js.map +1 -1
- package/dist/cli/commands/onboard.d.ts.map +1 -1
- package/dist/cli/commands/onboard.js +3 -3
- package/dist/cli/commands/onboard.js.map +1 -1
- package/dist/cli/commands/project.d.ts.map +1 -1
- package/dist/cli/commands/project.js +44 -23
- package/dist/cli/commands/project.js.map +1 -1
- package/dist/cli/commands/push.js +3 -3
- package/dist/cli/commands/push.js.map +1 -1
- package/dist/cli/commands/register.d.ts +37 -0
- package/dist/cli/commands/register.d.ts.map +1 -1
- package/dist/cli/commands/register.js +96 -74
- package/dist/cli/commands/register.js.map +1 -1
- package/dist/cli/commands/tunnel.js +2 -2
- package/dist/cli/commands/tunnel.js.map +1 -1
- package/dist/cli/commands/whoami.d.ts +18 -0
- package/dist/cli/commands/whoami.d.ts.map +1 -1
- package/dist/cli/commands/whoami.js +54 -28
- package/dist/cli/commands/whoami.js.map +1 -1
- package/dist/cli/index.js +10 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/utils/cli-io-impl.d.ts +33 -2
- package/dist/cli/utils/cli-io-impl.d.ts.map +1 -1
- package/dist/cli/utils/cli-io-impl.js +95 -14
- package/dist/cli/utils/cli-io-impl.js.map +1 -1
- package/dist/cli/utils/cli-io.d.ts +25 -9
- package/dist/cli/utils/cli-io.d.ts.map +1 -1
- package/dist/cli/utils/config.d.ts.map +1 -1
- package/dist/cli/utils/config.js +2 -2
- package/dist/cli/utils/config.js.map +1 -1
- package/dist/cli/utils/db-adapter.d.ts +59 -0
- package/dist/cli/utils/db-adapter.d.ts.map +1 -0
- package/dist/cli/utils/db-adapter.js +74 -0
- package/dist/cli/utils/db-adapter.js.map +1 -0
- package/dist/cli/utils/email.d.ts +15 -0
- package/dist/cli/utils/email.d.ts.map +1 -0
- package/dist/cli/utils/email.js +31 -0
- package/dist/cli/utils/email.js.map +1 -0
- package/dist/cli/utils/project-name.d.ts +10 -2
- package/dist/cli/utils/project-name.d.ts.map +1 -1
- package/dist/cli/utils/project-name.js +12 -6
- package/dist/cli/utils/project-name.js.map +1 -1
- package/dist/cli/utils/project.d.ts +17 -6
- package/dist/cli/utils/project.d.ts.map +1 -1
- package/dist/cli/utils/project.js +30 -36
- package/dist/cli/utils/project.js.map +1 -1
- package/dist/cli/utils/registry.d.ts +8 -6
- package/dist/cli/utils/registry.d.ts.map +1 -1
- package/dist/cli/utils/registry.js +32 -30
- package/dist/cli/utils/registry.js.map +1 -1
- package/dist/shared/constants.d.ts +16 -3
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +16 -3
- package/dist/shared/constants.js.map +1 -1
- package/dist/worker-runtime/discord.js +1 -1
- package/dist/worker-runtime/discord.js.map +1 -1
- package/dist/worker-runtime/index.d.ts +2 -1
- package/dist/worker-runtime/index.d.ts.map +1 -1
- package/dist/worker-runtime/index.js +19 -6
- package/dist/worker-runtime/index.js.map +1 -1
- package/package.json +1 -1
- package/templates/default/skills/fling/.hash +1 -1
- package/templates/default/skills/fling/API.md +15 -3
- package/dist/cli/commands/admin.d.ts +0 -8
- package/dist/cli/commands/admin.d.ts.map +0 -1
- package/dist/cli/commands/admin.js +0 -244
- package/dist/cli/commands/admin.js.map +0 -1
- package/dist/cli/commands/dev-worker.d.ts +0 -12
- package/dist/cli/commands/dev-worker.d.ts.map +0 -1
- package/dist/cli/commands/dev-worker.js +0 -66
- package/dist/cli/commands/dev-worker.js.map +0 -1
- package/dist/cli/commands/tun.d.ts +0 -13
- package/dist/cli/commands/tun.d.ts.map +0 -1
- package/dist/cli/commands/tun.js +0 -189
- package/dist/cli/commands/tun.js.map +0 -1
- package/dist/cli/utils/launch-io-impl.d.ts +0 -13
- package/dist/cli/utils/launch-io-impl.d.ts.map +0 -1
- package/dist/cli/utils/launch-io-impl.js +0 -51
- package/dist/cli/utils/launch-io-impl.js.map +0 -1
- package/dist/cli/utils/launch-io.d.ts +0 -42
- package/dist/cli/utils/launch-io.d.ts.map +0 -1
- package/dist/cli/utils/launch-io.js +0 -8
- package/dist/cli/utils/launch-io.js.map +0 -1
- package/dist/cli/utils/onboarding-io-impl.d.ts +0 -12
- package/dist/cli/utils/onboarding-io-impl.d.ts.map +0 -1
- package/dist/cli/utils/onboarding-io-impl.js +0 -85
- package/dist/cli/utils/onboarding-io-impl.js.map +0 -1
- package/dist/cli/utils/onboarding-io.d.ts +0 -60
- package/dist/cli/utils/onboarding-io.d.ts.map +0 -1
- package/dist/cli/utils/onboarding-io.js +0 -9
- package/dist/cli/utils/onboarding-io.js.map +0 -1
- package/dist/client/assets/index-BqVrS7t9.js +0 -40
- package/dist/client/assets/index-DSLUsCtO.css +0 -1
- package/dist/client/index.html +0 -14
- package/dist/client/vite.svg +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tun.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/tun.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,eAAO,MAAM,UAAU,SAyFnB,CAAC"}
|
package/dist/cli/commands/tun.js
DELETED
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* fling tun - Expose local development server via Cloudflare Tunnel
|
|
3
|
-
*
|
|
4
|
-
* Uses cloudflared (Cloudflare's tunnel daemon) for high-performance,
|
|
5
|
-
* concurrent request handling. The platform provisions tunnel credentials
|
|
6
|
-
* and DNS records; the CLI runs cloudflared with the provided token.
|
|
7
|
-
*
|
|
8
|
-
* Usage:
|
|
9
|
-
* fling tun 3000 # Tunnel localhost:3000
|
|
10
|
-
*/
|
|
11
|
-
import { Command } from "commander";
|
|
12
|
-
import { spawn } from "child_process";
|
|
13
|
-
import { existsSync } from "fs";
|
|
14
|
-
import { platformFetch, getToken } from "../utils/config.js";
|
|
15
|
-
import { getProjectName } from "../utils/project-name.js";
|
|
16
|
-
export const tunCommand = new Command("tun")
|
|
17
|
-
.description("Expose local server via Cloudflare Tunnel")
|
|
18
|
-
.argument("<port>", "Local port to tunnel")
|
|
19
|
-
.addHelpText("after", `
|
|
20
|
-
What it does:
|
|
21
|
-
Creates a Cloudflare Tunnel from the internet to your local development server.
|
|
22
|
-
External requests to the tunnel URL are forwarded to localhost:<port>.
|
|
23
|
-
|
|
24
|
-
This uses cloudflared (Cloudflare's tunnel daemon) which provides:
|
|
25
|
-
- Full concurrent request handling (no serialization)
|
|
26
|
-
- Native Cloudflare edge integration
|
|
27
|
-
- Automatic TLS termination
|
|
28
|
-
|
|
29
|
-
Examples:
|
|
30
|
-
fling tun 3000 Tunnel localhost:3000
|
|
31
|
-
|
|
32
|
-
The tunnel URL will be displayed when connected. Keep the command running
|
|
33
|
-
to maintain the tunnel. Press Ctrl+C to disconnect.
|
|
34
|
-
|
|
35
|
-
Prerequisites:
|
|
36
|
-
- Must be logged in (fling login)
|
|
37
|
-
- Local server must be running on the specified port
|
|
38
|
-
|
|
39
|
-
Note: cloudflared will be automatically downloaded on first use.
|
|
40
|
-
`)
|
|
41
|
-
.action(async (portArg) => {
|
|
42
|
-
const port = parseInt(portArg, 10);
|
|
43
|
-
if (isNaN(port) || port < 1 || port > 65535) {
|
|
44
|
-
console.error("Error: Port must be a number between 1 and 65535");
|
|
45
|
-
process.exit(1);
|
|
46
|
-
}
|
|
47
|
-
const token = getToken();
|
|
48
|
-
if (!token) {
|
|
49
|
-
console.error("Error: Not logged in. Run 'fling login' first.");
|
|
50
|
-
process.exit(1);
|
|
51
|
-
}
|
|
52
|
-
// Get project name from package.json (defaults to "default" for backwards compatibility)
|
|
53
|
-
const projectName = getProjectName();
|
|
54
|
-
console.log(`Starting tunnel to localhost:${port}...`);
|
|
55
|
-
// Ensure cloudflared is installed
|
|
56
|
-
const cloudflaredBin = await ensureCloudflared();
|
|
57
|
-
if (!cloudflaredBin) {
|
|
58
|
-
process.exit(1);
|
|
59
|
-
}
|
|
60
|
-
// Request tunnel credentials from platform
|
|
61
|
-
const tunResponse = await startTunnel(projectName, port);
|
|
62
|
-
if (!tunResponse) {
|
|
63
|
-
process.exit(1);
|
|
64
|
-
}
|
|
65
|
-
console.log(`\nTunnel URL: ${tunResponse.tunnelUrl}`);
|
|
66
|
-
console.log(`Forwarding to: http://localhost:${port}`);
|
|
67
|
-
console.log("\nPress Ctrl+C to disconnect\n");
|
|
68
|
-
// Run cloudflared with the token
|
|
69
|
-
const cloudflaredProcess = runCloudflared(cloudflaredBin, tunResponse.token, port);
|
|
70
|
-
// Handle graceful shutdown
|
|
71
|
-
const cleanup = async () => {
|
|
72
|
-
console.log("\nDisconnecting tunnel...");
|
|
73
|
-
cloudflaredProcess.kill("SIGTERM");
|
|
74
|
-
// Stop tunnel on platform
|
|
75
|
-
await stopTunnel(projectName);
|
|
76
|
-
process.exit(0);
|
|
77
|
-
};
|
|
78
|
-
process.on("SIGINT", () => void cleanup());
|
|
79
|
-
process.on("SIGTERM", () => void cleanup());
|
|
80
|
-
// Wait for cloudflared to exit
|
|
81
|
-
cloudflaredProcess.on("exit", (code) => {
|
|
82
|
-
if (code !== 0 && code !== null) {
|
|
83
|
-
console.error(`cloudflared exited with code ${code}`);
|
|
84
|
-
}
|
|
85
|
-
process.exit(code ?? 0);
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
/**
|
|
89
|
-
* Ensure cloudflared binary is installed.
|
|
90
|
-
* Uses the 'cloudflared' npm package which handles platform-specific downloads.
|
|
91
|
-
*/
|
|
92
|
-
async function ensureCloudflared() {
|
|
93
|
-
try {
|
|
94
|
-
// Dynamic import to handle the cloudflared package
|
|
95
|
-
const { bin, install } = await import("cloudflared");
|
|
96
|
-
if (!existsSync(bin)) {
|
|
97
|
-
console.log("Installing cloudflared...");
|
|
98
|
-
await install(bin);
|
|
99
|
-
console.log("cloudflared installed successfully");
|
|
100
|
-
}
|
|
101
|
-
return bin;
|
|
102
|
-
}
|
|
103
|
-
catch (error) {
|
|
104
|
-
console.error("Failed to install cloudflared:", error);
|
|
105
|
-
return null;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Request tunnel credentials from the platform.
|
|
110
|
-
*/
|
|
111
|
-
async function startTunnel(projectName, localPort) {
|
|
112
|
-
try {
|
|
113
|
-
const response = await platformFetch(`/project/${encodeURIComponent(projectName)}/tun/start`, {
|
|
114
|
-
method: "POST",
|
|
115
|
-
headers: { "Content-Type": "application/json" },
|
|
116
|
-
body: JSON.stringify({ localPort }),
|
|
117
|
-
});
|
|
118
|
-
if (!response.ok) {
|
|
119
|
-
const error = await response.json().catch(() => ({}));
|
|
120
|
-
console.error(`Error: Failed to start tunnel: ${error.error ?? response.statusText}`);
|
|
121
|
-
return null;
|
|
122
|
-
}
|
|
123
|
-
return (await response.json());
|
|
124
|
-
}
|
|
125
|
-
catch (error) {
|
|
126
|
-
console.error("Error: Failed to connect to platform:", error);
|
|
127
|
-
return null;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Notify platform that tunnel is stopping.
|
|
132
|
-
*/
|
|
133
|
-
async function stopTunnel(projectName) {
|
|
134
|
-
try {
|
|
135
|
-
await platformFetch(`/project/${encodeURIComponent(projectName)}/tun/stop`, { method: "DELETE" });
|
|
136
|
-
}
|
|
137
|
-
catch {
|
|
138
|
-
// Ignore errors on cleanup
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Run cloudflared with the provided token.
|
|
143
|
-
*/
|
|
144
|
-
function runCloudflared(bin, tunnelToken, localPort) {
|
|
145
|
-
const args = [
|
|
146
|
-
"tunnel",
|
|
147
|
-
"--no-autoupdate",
|
|
148
|
-
"run",
|
|
149
|
-
"--token",
|
|
150
|
-
tunnelToken,
|
|
151
|
-
"--url",
|
|
152
|
-
`http://localhost:${localPort}`,
|
|
153
|
-
];
|
|
154
|
-
const child = spawn(bin, args, {
|
|
155
|
-
stdio: ["ignore", "pipe", "pipe"],
|
|
156
|
-
});
|
|
157
|
-
// Forward cloudflared output (stdout and stderr are piped, so they're non-null)
|
|
158
|
-
child.stdout.on("data", (data) => {
|
|
159
|
-
const lines = data.toString().split("\n").filter(Boolean);
|
|
160
|
-
for (const line of lines) {
|
|
161
|
-
// Filter out noisy logs, show important ones
|
|
162
|
-
if (line.includes("error") ||
|
|
163
|
-
line.includes("failed") ||
|
|
164
|
-
line.includes("connected") ||
|
|
165
|
-
line.includes("Registered")) {
|
|
166
|
-
console.log(`[cloudflared] ${line}`);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
});
|
|
170
|
-
child.stderr.on("data", (data) => {
|
|
171
|
-
const lines = data.toString().split("\n").filter(Boolean);
|
|
172
|
-
for (const line of lines) {
|
|
173
|
-
// cloudflared logs to stderr by default
|
|
174
|
-
if (line.includes("ERR") ||
|
|
175
|
-
line.includes("error") ||
|
|
176
|
-
line.includes("failed")) {
|
|
177
|
-
console.error(`[cloudflared] ${line}`);
|
|
178
|
-
}
|
|
179
|
-
else if (line.includes("INF") &&
|
|
180
|
-
(line.includes("connect") ||
|
|
181
|
-
line.includes("Registered") ||
|
|
182
|
-
line.includes("serving"))) {
|
|
183
|
-
console.log(`[cloudflared] ${line}`);
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
});
|
|
187
|
-
return child;
|
|
188
|
-
}
|
|
189
|
-
//# sourceMappingURL=tun.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tun.js","sourceRoot":"","sources":["../../../src/cli/commands/tun.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Default implementation of LaunchIO using real dependencies.
|
|
3
|
-
*/
|
|
4
|
-
import type { LaunchIO } from "./launch-io.js";
|
|
5
|
-
/**
|
|
6
|
-
* Create the default LaunchIO implementation using real dependencies.
|
|
7
|
-
*/
|
|
8
|
-
export declare function createDefaultLaunchIO(): LaunchIO;
|
|
9
|
-
/**
|
|
10
|
-
* Default LaunchIO instance.
|
|
11
|
-
*/
|
|
12
|
-
export declare const defaultLaunchIO: LaunchIO;
|
|
13
|
-
//# sourceMappingURL=launch-io-impl.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"launch-io-impl.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/launch-io-impl.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,QAAQ,CAiDhD;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,UAA0B,CAAC"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Default implementation of LaunchIO using real dependencies.
|
|
3
|
-
*/
|
|
4
|
-
import { existsSync, readdirSync } from "node:fs";
|
|
5
|
-
import { join } from "node:path";
|
|
6
|
-
import { homedir } from "node:os";
|
|
7
|
-
import * as p from "@clack/prompts";
|
|
8
|
-
/**
|
|
9
|
-
* Create the default LaunchIO implementation using real dependencies.
|
|
10
|
-
*/
|
|
11
|
-
export function createDefaultLaunchIO() {
|
|
12
|
-
const flingHome = join(homedir(), "fling");
|
|
13
|
-
const cwd = process.cwd();
|
|
14
|
-
return {
|
|
15
|
-
user: {
|
|
16
|
-
async select(opts) {
|
|
17
|
-
return p.select(opts);
|
|
18
|
-
},
|
|
19
|
-
async text(opts) {
|
|
20
|
-
return p.text(opts);
|
|
21
|
-
},
|
|
22
|
-
isCancel: p.isCancel,
|
|
23
|
-
},
|
|
24
|
-
file: {
|
|
25
|
-
exists(path) {
|
|
26
|
-
return existsSync(path);
|
|
27
|
-
},
|
|
28
|
-
isProjectRoot(dir) {
|
|
29
|
-
return existsSync(join(dir, ".claude", "skills", "fling"));
|
|
30
|
-
},
|
|
31
|
-
isDirEmpty(dir) {
|
|
32
|
-
try {
|
|
33
|
-
return readdirSync(dir).length === 0;
|
|
34
|
-
}
|
|
35
|
-
catch {
|
|
36
|
-
return false;
|
|
37
|
-
}
|
|
38
|
-
},
|
|
39
|
-
},
|
|
40
|
-
paths: {
|
|
41
|
-
flingHome,
|
|
42
|
-
cwd,
|
|
43
|
-
homedir: homedir(),
|
|
44
|
-
},
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Default LaunchIO instance.
|
|
49
|
-
*/
|
|
50
|
-
export const defaultLaunchIO = createDefaultLaunchIO();
|
|
51
|
-
//# sourceMappingURL=launch-io-impl.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"launch-io-impl.js","sourceRoot":"","sources":["../../../src/cli/utils/launch-io-impl.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAGpC;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,OAAO;QACL,IAAI,EAAE;YACJ,KAAK,CAAC,MAAM,CAAmB,IAG9B;gBACC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAsC,CAErD,CAAC;YACJ,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,IAGV;gBACC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;YAED,QAAQ,EAAE,CAAC,CAAC,QAAQ;SACrB;QAED,IAAI,EAAE;YACJ,MAAM,CAAC,IAAY;gBACjB,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;YAED,aAAa,CAAC,GAAW;gBACvB,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;YAC7D,CAAC;YAED,UAAU,CAAC,GAAW;gBACpB,IAAI,CAAC;oBACH,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;gBACvC,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;SACF;QAED,KAAK,EAAE;YACL,SAAS;YACT,GAAG;YACH,OAAO,EAAE,OAAO,EAAE;SACnB;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,qBAAqB,EAAE,CAAC"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* I/O abstraction interfaces for launch flow.
|
|
3
|
-
*
|
|
4
|
-
* These interfaces allow the launch logic to be tested without
|
|
5
|
-
* mocking individual modules.
|
|
6
|
-
*/
|
|
7
|
-
export interface LaunchUserIO {
|
|
8
|
-
select<T extends string>(opts: {
|
|
9
|
-
message: string;
|
|
10
|
-
options: Array<{
|
|
11
|
-
value: T;
|
|
12
|
-
label: string;
|
|
13
|
-
}>;
|
|
14
|
-
}): Promise<T | symbol>;
|
|
15
|
-
text(opts: {
|
|
16
|
-
message: string;
|
|
17
|
-
placeholder?: string;
|
|
18
|
-
}): Promise<string | symbol>;
|
|
19
|
-
isCancel(value: unknown): value is symbol;
|
|
20
|
-
}
|
|
21
|
-
export interface LaunchFileIO {
|
|
22
|
-
exists(path: string): boolean;
|
|
23
|
-
isProjectRoot(path: string): boolean;
|
|
24
|
-
isDirEmpty(path: string): boolean;
|
|
25
|
-
}
|
|
26
|
-
export interface LaunchPaths {
|
|
27
|
-
flingHome: string;
|
|
28
|
-
cwd: string;
|
|
29
|
-
homedir: string;
|
|
30
|
-
}
|
|
31
|
-
export interface LaunchIO {
|
|
32
|
-
user: LaunchUserIO;
|
|
33
|
-
file: LaunchFileIO;
|
|
34
|
-
paths: LaunchPaths;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Result from promptNewProject.
|
|
38
|
-
* - string: path to project directory (existing or new)
|
|
39
|
-
* - null: user cancelled
|
|
40
|
-
*/
|
|
41
|
-
export type PromptNewProjectResult = string | null;
|
|
42
|
-
//# sourceMappingURL=launch-io.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"launch-io.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/launch-io.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE;QAC7B,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,CAAC,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC7C,GAAG,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IAExB,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAE7B,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC;CAC3C;AAMD,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACrC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CACnC;AAMD,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;CACpB;AAMD;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,IAAI,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"launch-io.js","sourceRoot":"","sources":["../../../src/cli/utils/launch-io.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Production implementations of onboarding I/O interfaces.
|
|
3
|
-
*
|
|
4
|
-
* These wrap the real dependencies (@clack/prompts, fs, fetch)
|
|
5
|
-
* used in production. Tests can substitute mock implementations.
|
|
6
|
-
*/
|
|
7
|
-
import type { UserIO, FileIO, NetworkIO, OnboardingIO } from "./onboarding-io.js";
|
|
8
|
-
export declare const clackUserIO: UserIO;
|
|
9
|
-
export declare const nodeFileIO: FileIO;
|
|
10
|
-
export declare const fetchNetworkIO: NetworkIO;
|
|
11
|
-
export declare const defaultOnboardingIO: OnboardingIO;
|
|
12
|
-
//# sourceMappingURL=onboarding-io-impl.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"onboarding-io-impl.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/onboarding-io-impl.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAa,MAAM,oBAAoB,CAAC;AAM7F,eAAO,MAAM,WAAW,EAAE,MA4CzB,CAAC;AAMF,eAAO,MAAM,UAAU,EAAE,MAaxB,CAAC;AAMF,eAAO,MAAM,cAAc,EAAE,SAE5B,CAAC;AAMF,eAAO,MAAM,mBAAmB,EAAE,YAIjC,CAAC"}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Production implementations of onboarding I/O interfaces.
|
|
3
|
-
*
|
|
4
|
-
* These wrap the real dependencies (@clack/prompts, fs, fetch)
|
|
5
|
-
* used in production. Tests can substitute mock implementations.
|
|
6
|
-
*/
|
|
7
|
-
import * as p from "@clack/prompts";
|
|
8
|
-
import { existsSync, readFileSync, writeFileSync, unlinkSync, mkdirSync, } from "node:fs";
|
|
9
|
-
// ═══════════════════════════════════════════════════════
|
|
10
|
-
// USER INTERACTION (wraps @clack/prompts)
|
|
11
|
-
// ═══════════════════════════════════════════════════════
|
|
12
|
-
export const clackUserIO = {
|
|
13
|
-
intro: (msg) => {
|
|
14
|
-
p.intro(msg);
|
|
15
|
-
},
|
|
16
|
-
outro: (msg) => {
|
|
17
|
-
p.outro(msg);
|
|
18
|
-
},
|
|
19
|
-
cancel: (msg) => {
|
|
20
|
-
p.cancel(msg);
|
|
21
|
-
},
|
|
22
|
-
select: async (opts) => {
|
|
23
|
-
// Cast required due to exactOptionalPropertyTypes mismatch with Clack's types
|
|
24
|
-
const result = await p.select(opts);
|
|
25
|
-
return result;
|
|
26
|
-
},
|
|
27
|
-
password: (opts) => p.password(opts),
|
|
28
|
-
text: (opts) => p.text(opts),
|
|
29
|
-
confirm: (opts) => p.confirm(opts),
|
|
30
|
-
spinner: () => {
|
|
31
|
-
const spinner = p.spinner();
|
|
32
|
-
return {
|
|
33
|
-
start: (msg) => {
|
|
34
|
-
spinner.start(msg);
|
|
35
|
-
},
|
|
36
|
-
stop: (msg, exitCode) => {
|
|
37
|
-
spinner.stop(msg, exitCode);
|
|
38
|
-
},
|
|
39
|
-
};
|
|
40
|
-
},
|
|
41
|
-
log: {
|
|
42
|
-
info: (msg) => {
|
|
43
|
-
p.log.info(msg);
|
|
44
|
-
},
|
|
45
|
-
warn: (msg) => {
|
|
46
|
-
p.log.warn(msg);
|
|
47
|
-
},
|
|
48
|
-
message: (msg) => {
|
|
49
|
-
p.log.message(msg);
|
|
50
|
-
},
|
|
51
|
-
},
|
|
52
|
-
isCancel: p.isCancel,
|
|
53
|
-
};
|
|
54
|
-
// ═══════════════════════════════════════════════════════
|
|
55
|
-
// FILE SYSTEM (wraps node:fs)
|
|
56
|
-
// ═══════════════════════════════════════════════════════
|
|
57
|
-
export const nodeFileIO = {
|
|
58
|
-
exists: existsSync,
|
|
59
|
-
read: (path) => existsSync(path) ? readFileSync(path, "utf-8").trim() : null,
|
|
60
|
-
write: (path, content, mode) => {
|
|
61
|
-
writeFileSync(path, content, mode ? { mode } : undefined);
|
|
62
|
-
},
|
|
63
|
-
delete: (path) => {
|
|
64
|
-
if (existsSync(path))
|
|
65
|
-
unlinkSync(path);
|
|
66
|
-
},
|
|
67
|
-
mkdir: (path) => {
|
|
68
|
-
mkdirSync(path, { recursive: true });
|
|
69
|
-
},
|
|
70
|
-
};
|
|
71
|
-
// ═══════════════════════════════════════════════════════
|
|
72
|
-
// NETWORK (wraps global fetch)
|
|
73
|
-
// ═══════════════════════════════════════════════════════
|
|
74
|
-
export const fetchNetworkIO = {
|
|
75
|
-
fetch: globalThis.fetch,
|
|
76
|
-
};
|
|
77
|
-
// ═══════════════════════════════════════════════════════
|
|
78
|
-
// DEFAULT COMBINED CONTEXT
|
|
79
|
-
// ═══════════════════════════════════════════════════════
|
|
80
|
-
export const defaultOnboardingIO = {
|
|
81
|
-
user: clackUserIO,
|
|
82
|
-
file: nodeFileIO,
|
|
83
|
-
network: fetchNetworkIO,
|
|
84
|
-
};
|
|
85
|
-
//# sourceMappingURL=onboarding-io-impl.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"onboarding-io-impl.js","sourceRoot":"","sources":["../../../src/cli/utils/onboarding-io-impl.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* I/O abstraction interfaces for onboarding flow.
|
|
3
|
-
*
|
|
4
|
-
* These interfaces allow the onboarding logic to be tested without
|
|
5
|
-
* mocking individual modules. Tests can provide script-based implementations
|
|
6
|
-
* that verify the exact sequence of I/O operations.
|
|
7
|
-
*/
|
|
8
|
-
export interface SpinnerIO {
|
|
9
|
-
start(message: string): void;
|
|
10
|
-
stop(message: string, exitCode?: number): void;
|
|
11
|
-
}
|
|
12
|
-
export interface UserIO {
|
|
13
|
-
intro(message: string): void;
|
|
14
|
-
outro(message: string): void;
|
|
15
|
-
cancel(message: string): void;
|
|
16
|
-
select<T extends string>(opts: {
|
|
17
|
-
message: string;
|
|
18
|
-
options: Array<{
|
|
19
|
-
value: T;
|
|
20
|
-
label: string;
|
|
21
|
-
hint?: string | undefined;
|
|
22
|
-
}>;
|
|
23
|
-
}): Promise<T | symbol>;
|
|
24
|
-
password(opts: {
|
|
25
|
-
message: string;
|
|
26
|
-
validate?: (value: string) => string | undefined;
|
|
27
|
-
}): Promise<string | symbol>;
|
|
28
|
-
text(opts: {
|
|
29
|
-
message: string;
|
|
30
|
-
placeholder?: string;
|
|
31
|
-
validate?: (value: string) => string | undefined;
|
|
32
|
-
}): Promise<string | symbol>;
|
|
33
|
-
confirm(opts: {
|
|
34
|
-
message: string;
|
|
35
|
-
initialValue?: boolean;
|
|
36
|
-
}): Promise<boolean | symbol>;
|
|
37
|
-
spinner(): SpinnerIO;
|
|
38
|
-
log: {
|
|
39
|
-
info(message: string): void;
|
|
40
|
-
warn(message: string): void;
|
|
41
|
-
message(message: string): void;
|
|
42
|
-
};
|
|
43
|
-
isCancel(value: unknown): value is symbol;
|
|
44
|
-
}
|
|
45
|
-
export interface FileIO {
|
|
46
|
-
exists(path: string): boolean;
|
|
47
|
-
read(path: string): string | null;
|
|
48
|
-
write(path: string, content: string, mode?: number): void;
|
|
49
|
-
delete(path: string): void;
|
|
50
|
-
mkdir(path: string): void;
|
|
51
|
-
}
|
|
52
|
-
export interface NetworkIO {
|
|
53
|
-
fetch(url: string, options?: RequestInit): Promise<Response>;
|
|
54
|
-
}
|
|
55
|
-
export interface OnboardingIO {
|
|
56
|
-
user: UserIO;
|
|
57
|
-
file: FileIO;
|
|
58
|
-
network: NetworkIO;
|
|
59
|
-
}
|
|
60
|
-
//# sourceMappingURL=onboarding-io.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"onboarding-io.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/onboarding-io.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChD;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE;QAC7B,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,CAAC,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;SAAE,CAAC,CAAC;KACxE,GAAG,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IAExB,QAAQ,CAAC,IAAI,EAAE;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;KAClD,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAE7B,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;KAClD,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAE7B,OAAO,CAAC,IAAI,EAAE;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,GAAG,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC;IAE9B,OAAO,IAAI,SAAS,CAAC;IAErB,GAAG,EAAE;QACH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;KAChC,CAAC;IAEF,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC;CAC3C;AAMD,MAAM,WAAW,MAAM;IACrB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAClC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1D,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAMD,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC9D;AAMD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,SAAS,CAAC;CACpB"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* I/O abstraction interfaces for onboarding flow.
|
|
3
|
-
*
|
|
4
|
-
* These interfaces allow the onboarding logic to be tested without
|
|
5
|
-
* mocking individual modules. Tests can provide script-based implementations
|
|
6
|
-
* that verify the exact sequence of I/O operations.
|
|
7
|
-
*/
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=onboarding-io.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"onboarding-io.js","sourceRoot":"","sources":["../../../src/cli/utils/onboarding-io.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|