flingit 0.0.15 → 0.0.19
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 +3 -2
- package/templates/default/skills/fling/.hash +1 -1
- package/templates/default/skills/fling/API.md +15 -3
- package/templates/default/skills/fling/SKILL.md +7 -0
- 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
package/README.md
CHANGED
|
@@ -33,7 +33,7 @@ Requires Node.js 22 or later.
|
|
|
33
33
|
|
|
34
34
|
## How It Works
|
|
35
35
|
|
|
36
|
-
Fling provides
|
|
36
|
+
Fling provides these primitives (more to come) that Claude uses to build your tools:
|
|
37
37
|
|
|
38
38
|
| Primitive | What it does |
|
|
39
39
|
|-----------|--------------|
|
|
@@ -41,6 +41,7 @@ Fling provides four primitives (more to come) that Claude uses to build your too
|
|
|
41
41
|
| **Cron** | Run code on a schedule |
|
|
42
42
|
| **Database** | Store and query data (SQLite) |
|
|
43
43
|
| **Secrets** | Manage API keys and credentials |
|
|
44
|
+
| **Storage** | Store and serve files (local or R2) |
|
|
44
45
|
|
|
45
46
|
Everything works locally during development. When you're ready, just tell Claude Code to deploys to production.
|
|
46
47
|
|
|
@@ -2,5 +2,34 @@
|
|
|
2
2
|
* fling cron - Manage cron jobs
|
|
3
3
|
*/
|
|
4
4
|
import { Command } from "commander";
|
|
5
|
+
import { type PlatformFetchFn } from "../utils/config.js";
|
|
6
|
+
import { type ConsoleIO, type ProcessIO } from "../utils/cli-io.js";
|
|
7
|
+
/**
|
|
8
|
+
* Combined dependencies for cron commands.
|
|
9
|
+
*/
|
|
10
|
+
export interface CronDeps {
|
|
11
|
+
console: ConsoleIO;
|
|
12
|
+
process: ProcessIO;
|
|
13
|
+
isLoggedIn: () => boolean;
|
|
14
|
+
platformFetch: PlatformFetchFn;
|
|
15
|
+
getProjectName: (cwd?: string) => string;
|
|
16
|
+
}
|
|
17
|
+
export declare function createDefaultCronDeps(): CronDeps;
|
|
18
|
+
export declare const defaultCronDeps: CronDeps;
|
|
19
|
+
/**
|
|
20
|
+
* List cron jobs with status.
|
|
21
|
+
* Exported for testing with injected dependencies.
|
|
22
|
+
*/
|
|
23
|
+
export declare function runCronList(deps?: CronDeps): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Show invocation history for a cron job.
|
|
26
|
+
* Exported for testing with injected dependencies.
|
|
27
|
+
*/
|
|
28
|
+
export declare function runCronHistory(name: string, limit: number, deps?: CronDeps): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Manually trigger a cron job.
|
|
31
|
+
* Exported for testing with injected dependencies.
|
|
32
|
+
*/
|
|
33
|
+
export declare function runCronTrigger(name: string, deps?: CronDeps): Promise<void>;
|
|
5
34
|
export declare const cronCommand: Command;
|
|
6
35
|
//# sourceMappingURL=cron.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/cron.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/cron.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAA6B,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErF,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAOpE;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,SAAS,CAAC;IACnB,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,aAAa,EAAE,eAAe,CAAC;IAC/B,cAAc,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CAC1C;AAMD,wBAAgB,qBAAqB,IAAI,QAAQ,CAQhD;AAED,eAAO,MAAM,eAAe,UAA0B,CAAC;AAmDvD;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,IAAI,GAAE,QAA0B,GAC/B,OAAO,CAAC,IAAI,CAAC,CAiDf;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,QAA0B,GAC/B,OAAO,CAAC,IAAI,CAAC,CAiDf;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,QAA0B,GAC/B,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED,eAAO,MAAM,WAAW,SAoCpB,CAAC"}
|
|
@@ -4,6 +4,20 @@
|
|
|
4
4
|
import { Command } from "commander";
|
|
5
5
|
import { isLoggedIn, platformFetch } from "../utils/config.js";
|
|
6
6
|
import { getProjectName } from "../utils/project-name.js";
|
|
7
|
+
import { consoleIO, processIO, projectNameFileIO } from "../utils/cli-io-impl.js";
|
|
8
|
+
// ═══════════════════════════════════════════════════════
|
|
9
|
+
// DEFAULT IMPLEMENTATIONS
|
|
10
|
+
// ═══════════════════════════════════════════════════════
|
|
11
|
+
export function createDefaultCronDeps() {
|
|
12
|
+
return {
|
|
13
|
+
console: consoleIO,
|
|
14
|
+
process: processIO,
|
|
15
|
+
isLoggedIn,
|
|
16
|
+
platformFetch,
|
|
17
|
+
getProjectName: (cwd) => getProjectName(projectNameFileIO, () => process.cwd(), cwd),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export const defaultCronDeps = createDefaultCronDeps();
|
|
7
21
|
/**
|
|
8
22
|
* Format a timestamp as a human-readable date string.
|
|
9
23
|
*/
|
|
@@ -20,34 +34,35 @@ function truncate(str, max) {
|
|
|
20
34
|
}
|
|
21
35
|
/**
|
|
22
36
|
* List cron jobs with status.
|
|
37
|
+
* Exported for testing with injected dependencies.
|
|
23
38
|
*/
|
|
24
|
-
async function
|
|
25
|
-
const projectName = getProjectName();
|
|
26
|
-
const response = await platformFetch(`/project/${encodeURIComponent(projectName)}/crons`);
|
|
39
|
+
export async function runCronList(deps = defaultCronDeps) {
|
|
40
|
+
const projectName = deps.getProjectName();
|
|
41
|
+
const response = await deps.platformFetch(`/project/${encodeURIComponent(projectName)}/crons`);
|
|
27
42
|
if (!response.ok) {
|
|
28
43
|
const data = (await response.json());
|
|
29
44
|
throw new Error(data.error ?? `API error: ${response.status}`);
|
|
30
45
|
}
|
|
31
46
|
const data = (await response.json());
|
|
32
47
|
if (data.crons.length === 0) {
|
|
33
|
-
console.log("No cron jobs registered.\n");
|
|
34
|
-
console.log("To add a cron job, use the cron() function in your code:");
|
|
35
|
-
console.log("");
|
|
36
|
-
console.log(' cron("daily-task", "0 9 * * *", async () => {');
|
|
37
|
-
console.log(" // Your scheduled task here");
|
|
38
|
-
console.log(" });");
|
|
39
|
-
console.log("");
|
|
40
|
-
console.log("Then run 'fling push' to deploy.");
|
|
48
|
+
deps.console.log("No cron jobs registered.\n");
|
|
49
|
+
deps.console.log("To add a cron job, use the cron() function in your code:");
|
|
50
|
+
deps.console.log("");
|
|
51
|
+
deps.console.log(' cron("daily-task", "0 9 * * *", async () => {');
|
|
52
|
+
deps.console.log(" // Your scheduled task here");
|
|
53
|
+
deps.console.log(" });");
|
|
54
|
+
deps.console.log("");
|
|
55
|
+
deps.console.log("Then run 'fling push' to deploy.");
|
|
41
56
|
return;
|
|
42
57
|
}
|
|
43
58
|
// Print table header
|
|
44
|
-
console.log("");
|
|
45
|
-
console.log("Name".padEnd(25) +
|
|
59
|
+
deps.console.log("");
|
|
60
|
+
deps.console.log("Name".padEnd(25) +
|
|
46
61
|
"Schedule".padEnd(15) +
|
|
47
62
|
"Scheduled For".padEnd(22) +
|
|
48
63
|
"Started At".padEnd(22) +
|
|
49
64
|
"Status");
|
|
50
|
-
console.log("-".repeat(95));
|
|
65
|
+
deps.console.log("-".repeat(95));
|
|
51
66
|
for (const job of data.crons) {
|
|
52
67
|
const name = truncate(job.name, 23).padEnd(25);
|
|
53
68
|
const schedule = truncate(job.schedule, 13).padEnd(15);
|
|
@@ -58,35 +73,36 @@ async function listCronJobs() {
|
|
|
58
73
|
? formatDate(job.lastRun.startedAt).padEnd(22)
|
|
59
74
|
: "-".padEnd(22);
|
|
60
75
|
const status = job.lastRun?.status ?? "-";
|
|
61
|
-
console.log(name + schedule + scheduledFor + startedAt + status);
|
|
76
|
+
deps.console.log(name + schedule + scheduledFor + startedAt + status);
|
|
62
77
|
}
|
|
63
|
-
console.log("");
|
|
78
|
+
deps.console.log("");
|
|
64
79
|
}
|
|
65
80
|
/**
|
|
66
81
|
* Show invocation history for a cron job.
|
|
82
|
+
* Exported for testing with injected dependencies.
|
|
67
83
|
*/
|
|
68
|
-
async function
|
|
69
|
-
const projectName = getProjectName();
|
|
70
|
-
const response = await platformFetch(`/project/${encodeURIComponent(projectName)}/crons/${encodeURIComponent(name)}/invocations?limit=${limit}`);
|
|
84
|
+
export async function runCronHistory(name, limit, deps = defaultCronDeps) {
|
|
85
|
+
const projectName = deps.getProjectName();
|
|
86
|
+
const response = await deps.platformFetch(`/project/${encodeURIComponent(projectName)}/crons/${encodeURIComponent(name)}/invocations?limit=${limit}`);
|
|
71
87
|
if (!response.ok) {
|
|
72
88
|
const data = (await response.json());
|
|
73
89
|
throw new Error(data.error ?? `API error: ${response.status}`);
|
|
74
90
|
}
|
|
75
91
|
const data = (await response.json());
|
|
76
92
|
if (data.invocations.length === 0) {
|
|
77
|
-
console.log(`No invocations found for cron job "${name}".`);
|
|
93
|
+
deps.console.log(`No invocations found for cron job "${name}".`);
|
|
78
94
|
return;
|
|
79
95
|
}
|
|
80
96
|
// Print table header
|
|
81
|
-
console.log("");
|
|
82
|
-
console.log(`Invocation history for "${name}":`);
|
|
83
|
-
console.log("");
|
|
84
|
-
console.log("Scheduled For".padEnd(22) +
|
|
97
|
+
deps.console.log("");
|
|
98
|
+
deps.console.log(`Invocation history for "${name}":`);
|
|
99
|
+
deps.console.log("");
|
|
100
|
+
deps.console.log("Scheduled For".padEnd(22) +
|
|
85
101
|
"Started At".padEnd(22) +
|
|
86
102
|
"Finished At".padEnd(22) +
|
|
87
103
|
"Status".padEnd(10) +
|
|
88
104
|
"Result / Error");
|
|
89
|
-
console.log("-".repeat(110));
|
|
105
|
+
deps.console.log("-".repeat(110));
|
|
90
106
|
for (const inv of data.invocations) {
|
|
91
107
|
const scheduledFor = formatDate(inv.scheduledFor).padEnd(22);
|
|
92
108
|
const startedAt = formatDate(inv.startedAt).padEnd(22);
|
|
@@ -99,28 +115,29 @@ async function showCronHistory(name, limit) {
|
|
|
99
115
|
: inv.result
|
|
100
116
|
? truncate(JSON.stringify(inv.result), 30)
|
|
101
117
|
: "-";
|
|
102
|
-
console.log(scheduledFor + startedAt + finishedAt + status + result);
|
|
118
|
+
deps.console.log(scheduledFor + startedAt + finishedAt + status + result);
|
|
103
119
|
}
|
|
104
|
-
console.log("");
|
|
120
|
+
deps.console.log("");
|
|
105
121
|
}
|
|
106
122
|
/**
|
|
107
123
|
* Manually trigger a cron job.
|
|
124
|
+
* Exported for testing with injected dependencies.
|
|
108
125
|
*/
|
|
109
|
-
async function
|
|
110
|
-
console.log(`Triggering cron job "${name}"...`);
|
|
111
|
-
const projectName = getProjectName();
|
|
112
|
-
const response = await platformFetch(`/project/${encodeURIComponent(projectName)}/crons/${encodeURIComponent(name)}/trigger`, { method: "POST" });
|
|
126
|
+
export async function runCronTrigger(name, deps = defaultCronDeps) {
|
|
127
|
+
deps.console.log(`Triggering cron job "${name}"...`);
|
|
128
|
+
const projectName = deps.getProjectName();
|
|
129
|
+
const response = await deps.platformFetch(`/project/${encodeURIComponent(projectName)}/crons/${encodeURIComponent(name)}/trigger`, { method: "POST" });
|
|
113
130
|
if (!response.ok) {
|
|
114
131
|
const data = (await response.json());
|
|
115
132
|
throw new Error(data.error ?? `API error: ${response.status}`);
|
|
116
133
|
}
|
|
117
134
|
const data = (await response.json());
|
|
118
135
|
if (data.status === "error" && data.error) {
|
|
119
|
-
console.log(`Triggered "${name}" - invocation: ${data.invocationId}, status: ${data.status}`);
|
|
120
|
-
console.log(`Error: ${data.error}`);
|
|
136
|
+
deps.console.log(`Triggered "${name}" - invocation: ${data.invocationId}, status: ${data.status}`);
|
|
137
|
+
deps.console.log(`Error: ${data.error}`);
|
|
121
138
|
}
|
|
122
139
|
else {
|
|
123
|
-
console.log(`Triggered "${name}" - invocation: ${data.invocationId}, status: ${data.status}`);
|
|
140
|
+
deps.console.log(`Triggered "${name}" - invocation: ${data.invocationId}, status: ${data.status}`);
|
|
124
141
|
}
|
|
125
142
|
}
|
|
126
143
|
export const cronCommand = new Command("cron")
|
|
@@ -163,7 +180,7 @@ cronCommand
|
|
|
163
180
|
.description("List all registered cron jobs")
|
|
164
181
|
.action(async () => {
|
|
165
182
|
try {
|
|
166
|
-
await
|
|
183
|
+
await runCronList();
|
|
167
184
|
}
|
|
168
185
|
catch (error) {
|
|
169
186
|
console.error("Error:", error.message);
|
|
@@ -182,7 +199,7 @@ cronCommand
|
|
|
182
199
|
console.error("Error: --limit must be between 1 and 100");
|
|
183
200
|
process.exit(1);
|
|
184
201
|
}
|
|
185
|
-
await
|
|
202
|
+
await runCronHistory(name, limit);
|
|
186
203
|
}
|
|
187
204
|
catch (error) {
|
|
188
205
|
console.error("Error:", error.message);
|
|
@@ -195,7 +212,7 @@ cronCommand
|
|
|
195
212
|
.description("Manually trigger a cron job")
|
|
196
213
|
.action(async (name) => {
|
|
197
214
|
try {
|
|
198
|
-
await
|
|
215
|
+
await runCronTrigger(name);
|
|
199
216
|
}
|
|
200
217
|
catch (error) {
|
|
201
218
|
console.error("Error:", error.message);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cron.js","sourceRoot":"","sources":["../../../src/cli/commands/cron.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"cron.js","sourceRoot":"","sources":["../../../src/cli/commands/cron.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/db.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AA4B/C,eAAO,MAAM,SAAS,SAepB,CAAC;AAEH;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,IAAI,GAAG,IAAI,CAcjD;AA4CD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/db.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AA4B/C,eAAO,MAAM,SAAS,SAepB,CAAC;AAEH;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,IAAI,GAAG,IAAI,CAcjD;AA4CD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI,CAsD5F"}
|
package/dist/cli/commands/db.js
CHANGED
|
@@ -10,7 +10,7 @@ import { platformFetch } from "../utils/config.js";
|
|
|
10
10
|
import { getTargetEnv, requireProdAuth } from "../utils/environment.js";
|
|
11
11
|
import { DB_PATH_PARTS } from "../../runtime/db.js";
|
|
12
12
|
import { getProjectName } from "../utils/project-name.js";
|
|
13
|
-
import { defaultDbIO } from "../utils/cli-io-impl.js";
|
|
13
|
+
import { defaultDbIO, projectNameFileIO } from "../utils/cli-io-impl.js";
|
|
14
14
|
/**
|
|
15
15
|
* Get the database path for the current working directory.
|
|
16
16
|
*/
|
|
@@ -103,12 +103,9 @@ export function executeLocalQuery(query, options, io) {
|
|
|
103
103
|
}
|
|
104
104
|
try {
|
|
105
105
|
const db = io.database.open(dbPath);
|
|
106
|
-
const
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
const isSelect = query.trim().toUpperCase().startsWith("SELECT");
|
|
110
|
-
if (isSelect) {
|
|
111
|
-
const rows = stmt.all();
|
|
106
|
+
const result = db.execute(query);
|
|
107
|
+
if (result.kind === "select") {
|
|
108
|
+
const rows = result.rows;
|
|
112
109
|
if (options.json) {
|
|
113
110
|
io.console.log(JSON.stringify({ results: rows }, null, 2));
|
|
114
111
|
db.close();
|
|
@@ -121,19 +118,18 @@ export function executeLocalQuery(query, options, io) {
|
|
|
121
118
|
}
|
|
122
119
|
printRows(rows, io);
|
|
123
120
|
io.console.log(`\n${rows.length} row(s) returned`);
|
|
121
|
+
db.close();
|
|
122
|
+
return;
|
|
124
123
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
db.close();
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
io.console.log(`Query executed: ${result.changes} row(s) affected`);
|
|
124
|
+
if (options.json) {
|
|
125
|
+
io.console.log(JSON.stringify({
|
|
126
|
+
changes: result.changes,
|
|
127
|
+
lastInsertRowid: result.lastInsertRowid,
|
|
128
|
+
}, null, 2));
|
|
129
|
+
db.close();
|
|
130
|
+
return;
|
|
136
131
|
}
|
|
132
|
+
io.console.log(`Query executed: ${result.changes} row(s) affected`);
|
|
137
133
|
db.close();
|
|
138
134
|
}
|
|
139
135
|
catch (error) {
|
|
@@ -146,7 +142,7 @@ export function executeLocalQuery(query, options, io) {
|
|
|
146
142
|
*/
|
|
147
143
|
async function executeD1Query(query, options, io) {
|
|
148
144
|
try {
|
|
149
|
-
const projectName = getProjectName();
|
|
145
|
+
const projectName = getProjectName(projectNameFileIO, () => process.cwd());
|
|
150
146
|
const response = await platformFetch(`/project/${encodeURIComponent(projectName)}/sql`, {
|
|
151
147
|
method: "POST",
|
|
152
148
|
headers: { "Content-Type": "application/json" },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../../src/cli/commands/db.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../../src/cli/commands/db.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { Command } from "commander";
|
|
|
5
5
|
import { isLoggedIn, platformFetch } from "../utils/config.js";
|
|
6
6
|
import { findEnclosingProject } from "../utils/project.js";
|
|
7
7
|
import { getProjectName } from "../utils/project-name.js";
|
|
8
|
-
import { consoleIO, processIO, createSimplePromptIOWithMultiline } from "../utils/cli-io-impl.js";
|
|
8
|
+
import { consoleIO, processIO, createSimplePromptIOWithMultiline, projectFileIO, projectNameFileIO } from "../utils/cli-io-impl.js";
|
|
9
9
|
const MIN_LENGTH = 10;
|
|
10
10
|
const MAX_LENGTH = 5000;
|
|
11
11
|
// ═══════════════════════════════════════════════════════
|
|
@@ -18,8 +18,8 @@ export function createDefaultFeedbackDeps() {
|
|
|
18
18
|
user: createSimplePromptIOWithMultiline(consoleIO, processIO),
|
|
19
19
|
isLoggedIn,
|
|
20
20
|
platformFetch,
|
|
21
|
-
findEnclosingProject,
|
|
22
|
-
getProjectName,
|
|
21
|
+
findEnclosingProject: (startDir) => findEnclosingProject(startDir, projectFileIO),
|
|
22
|
+
getProjectName: (cwd) => getProjectName(projectNameFileIO, () => process.cwd(), cwd),
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
25
|
export const defaultFeedbackDeps = createDefaultFeedbackDeps();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../../src/cli/commands/feedback.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAwB,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,iCAAiC,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../../src/cli/commands/feedback.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,12 +5,54 @@
|
|
|
5
5
|
* - Otherwise: show project selector or create-new flow
|
|
6
6
|
*/
|
|
7
7
|
import type { Command } from "commander";
|
|
8
|
-
import
|
|
8
|
+
import * as p from "@clack/prompts";
|
|
9
|
+
import type { LaunchIO, ProjectFileIO, RegistryIO, PromptNewProjectResult } from "../utils/cli-io.js";
|
|
10
|
+
import type { Command as InitCommandType } from "commander";
|
|
11
|
+
/**
|
|
12
|
+
* Auth prompt result from promptCredentials.
|
|
13
|
+
*/
|
|
14
|
+
export type CredentialsResult = "authenticated" | "skipped" | "failed" | "cancelled";
|
|
15
|
+
/**
|
|
16
|
+
* Dependencies for the launch command.
|
|
17
|
+
* Allows testing without module mocking.
|
|
18
|
+
*/
|
|
19
|
+
export interface LaunchDeps {
|
|
20
|
+
/** Check if inside a Fling project */
|
|
21
|
+
findEnclosingProject: (startDir: string, io: ProjectFileIO) => string | null;
|
|
22
|
+
/** Register a project in the registry */
|
|
23
|
+
registerProject: (path: string, io: RegistryIO) => void;
|
|
24
|
+
/** Get list of valid registered projects */
|
|
25
|
+
getValidProjects: (io: RegistryIO) => string[];
|
|
26
|
+
/** Check if user is logged in */
|
|
27
|
+
isLoggedIn: () => boolean;
|
|
28
|
+
/** Prompt for credentials */
|
|
29
|
+
promptCredentials: () => Promise<CredentialsResult>;
|
|
30
|
+
/** Prompt for new project location */
|
|
31
|
+
promptNewProject: (io: LaunchIO) => Promise<PromptNewProjectResult>;
|
|
32
|
+
/** Check if directory is a project root */
|
|
33
|
+
isProjectRoot: (dir: string, io: ProjectFileIO) => boolean;
|
|
34
|
+
/** Init command for creating projects */
|
|
35
|
+
initCommand: InitCommandType;
|
|
36
|
+
/** Project file IO for project detection */
|
|
37
|
+
projectFileIO: ProjectFileIO;
|
|
38
|
+
/** Registry IO for project registration */
|
|
39
|
+
registryIO: RegistryIO;
|
|
40
|
+
/** User prompt functions (select, isCancel) */
|
|
41
|
+
prompts: {
|
|
42
|
+
select: typeof p.select;
|
|
43
|
+
isCancel: typeof p.isCancel;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Create default dependencies for the launch command.
|
|
48
|
+
*/
|
|
49
|
+
export declare function createDefaultLaunchDeps(): LaunchDeps;
|
|
50
|
+
export declare const defaultLaunchDeps: LaunchDeps;
|
|
9
51
|
/**
|
|
10
52
|
* Create a new Fling project in the given directory.
|
|
11
53
|
* Runs init, then npm install.
|
|
12
54
|
*/
|
|
13
|
-
export declare function createProject(dir: string, io: LaunchIO): Promise<void>;
|
|
55
|
+
export declare function createProject(dir: string, io: LaunchIO, initCommand?: InitCommandType): Promise<void>;
|
|
14
56
|
/**
|
|
15
57
|
* Launch Claude Code in the given project directory.
|
|
16
58
|
*/
|
|
@@ -18,5 +60,5 @@ export declare function launchClaudeCode(projectDir: string, io: LaunchIO): void
|
|
|
18
60
|
/**
|
|
19
61
|
* Launch Fling - the default action when running `fling` with no args.
|
|
20
62
|
*/
|
|
21
|
-
export declare function launch(program: Command, io?: LaunchIO): Promise<void>;
|
|
63
|
+
export declare function launch(program: Command, io?: LaunchIO, deps?: LaunchDeps): Promise<void>;
|
|
22
64
|
//# sourceMappingURL=launch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/launch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/launch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAQpC,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACtG,OAAO,KAAK,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,WAAW,CAAC;AAM5D;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACzB,eAAe,GACf,SAAS,GACT,QAAQ,GACR,WAAW,CAAC;AAEhB;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,sCAAsC;IACtC,oBAAoB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,KAAK,MAAM,GAAG,IAAI,CAAC;IAC7E,yCAAyC;IACzC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,KAAK,IAAI,CAAC;IACxD,4CAA4C;IAC5C,gBAAgB,EAAE,CAAC,EAAE,EAAE,UAAU,KAAK,MAAM,EAAE,CAAC;IAC/C,iCAAiC;IACjC,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,6BAA6B;IAC7B,iBAAiB,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACpD,sCAAsC;IACtC,gBAAgB,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACpE,2CAA2C;IAC3C,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,KAAK,OAAO,CAAC;IAC3D,yCAAyC;IACzC,WAAW,EAAE,eAAe,CAAC;IAC7B,4CAA4C;IAC5C,aAAa,EAAE,aAAa,CAAC;IAC7B,2CAA2C;IAC3C,UAAU,EAAE,UAAU,CAAC;IACvB,+CAA+C;IAC/C,OAAO,EAAE;QACP,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC;QACxB,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC;KAC7B,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,UAAU,CAiBpD;AAED,eAAO,MAAM,iBAAiB,YAA4B,CAAC;AAE3D;;;GAGG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,QAAQ,EACZ,WAAW,GAAE,eAAoC,GAChD,OAAO,CAAC,IAAI,CAAC,CAkCf;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,GAAG,IAAI,CA6BvE;AAED;;GAEG;AACH,wBAAsB,MAAM,CAC1B,OAAO,EAAE,OAAO,EAChB,EAAE,GAAE,QAAkC,EACtC,IAAI,GAAE,UAA8B,GACnC,OAAO,CAAC,IAAI,CAAC,CA2Df"}
|
|
@@ -5,18 +5,40 @@
|
|
|
5
5
|
* - Otherwise: show project selector or create-new flow
|
|
6
6
|
*/
|
|
7
7
|
import * as p from "@clack/prompts";
|
|
8
|
-
import { initCommand } from "./init.js";
|
|
9
|
-
import { promptCredentials } from "./onboard.js";
|
|
8
|
+
import { initCommand as defaultInitCommand } from "./init.js";
|
|
9
|
+
import { promptCredentials as defaultPromptCredentials } from "./onboard.js";
|
|
10
10
|
import { findEnclosingProject, isProjectRoot } from "../utils/project.js";
|
|
11
11
|
import { registerProject, getValidProjects } from "../utils/registry.js";
|
|
12
|
-
import { isLoggedIn } from "../utils/config.js";
|
|
13
|
-
import { promptNewProject } from "../utils/prompt-new-project.js";
|
|
14
|
-
import { createDefaultLaunchIO } from "../utils/cli-io-impl.js";
|
|
12
|
+
import { isLoggedIn as defaultIsLoggedIn } from "../utils/config.js";
|
|
13
|
+
import { promptNewProject as defaultPromptNewProject } from "../utils/prompt-new-project.js";
|
|
14
|
+
import { createDefaultLaunchIO, projectFileIO, registryIO } from "../utils/cli-io-impl.js";
|
|
15
|
+
/**
|
|
16
|
+
* Create default dependencies for the launch command.
|
|
17
|
+
*/
|
|
18
|
+
export function createDefaultLaunchDeps() {
|
|
19
|
+
return {
|
|
20
|
+
findEnclosingProject,
|
|
21
|
+
registerProject,
|
|
22
|
+
getValidProjects,
|
|
23
|
+
isLoggedIn: defaultIsLoggedIn,
|
|
24
|
+
promptCredentials: defaultPromptCredentials,
|
|
25
|
+
promptNewProject: defaultPromptNewProject,
|
|
26
|
+
isProjectRoot,
|
|
27
|
+
initCommand: defaultInitCommand,
|
|
28
|
+
projectFileIO,
|
|
29
|
+
registryIO,
|
|
30
|
+
prompts: {
|
|
31
|
+
select: p.select,
|
|
32
|
+
isCancel: p.isCancel,
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export const defaultLaunchDeps = createDefaultLaunchDeps();
|
|
15
37
|
/**
|
|
16
38
|
* Create a new Fling project in the given directory.
|
|
17
39
|
* Runs init, then npm install.
|
|
18
40
|
*/
|
|
19
|
-
export async function createProject(dir, io) {
|
|
41
|
+
export async function createProject(dir, io, initCommand = defaultInitCommand) {
|
|
20
42
|
io.console.log(`Creating your Fling project at ${dir}...\n`);
|
|
21
43
|
io.file.mkdir(dir, { recursive: true });
|
|
22
44
|
const originalCwd = io.process.cwd();
|
|
@@ -79,17 +101,17 @@ export function launchClaudeCode(projectDir, io) {
|
|
|
79
101
|
/**
|
|
80
102
|
* Launch Fling - the default action when running `fling` with no args.
|
|
81
103
|
*/
|
|
82
|
-
export async function launch(program, io = createDefaultLaunchIO()) {
|
|
104
|
+
export async function launch(program, io = createDefaultLaunchIO(), deps = defaultLaunchDeps) {
|
|
83
105
|
const cwd = io.process.cwd();
|
|
84
106
|
// Step 1: Are we inside a Fling project?
|
|
85
|
-
const enclosingProject = findEnclosingProject(cwd);
|
|
107
|
+
const enclosingProject = deps.findEnclosingProject(cwd, deps.projectFileIO);
|
|
86
108
|
if (enclosingProject) {
|
|
87
|
-
registerProject(enclosingProject);
|
|
109
|
+
deps.registerProject(enclosingProject, deps.registryIO);
|
|
88
110
|
program.outputHelp();
|
|
89
111
|
return;
|
|
90
112
|
}
|
|
91
113
|
// Step 2: Do we have registered projects?
|
|
92
|
-
const projects = getValidProjects();
|
|
114
|
+
const projects = deps.getValidProjects(deps.registryIO);
|
|
93
115
|
if (projects.length > 0) {
|
|
94
116
|
// Show project selector
|
|
95
117
|
const options = projects.map((proj) => ({
|
|
@@ -98,11 +120,11 @@ export async function launch(program, io = createDefaultLaunchIO()) {
|
|
|
98
120
|
}));
|
|
99
121
|
options.push({ value: "new", label: "Create new project" });
|
|
100
122
|
options.push({ value: "cancel", label: "Cancel" });
|
|
101
|
-
const choice = await
|
|
123
|
+
const choice = await deps.prompts.select({
|
|
102
124
|
message: "Select a Fling project to open:",
|
|
103
125
|
options,
|
|
104
126
|
});
|
|
105
|
-
if (
|
|
127
|
+
if (deps.prompts.isCancel(choice) || choice === "cancel") {
|
|
106
128
|
return;
|
|
107
129
|
}
|
|
108
130
|
if (choice === "new") {
|
|
@@ -114,19 +136,19 @@ export async function launch(program, io = createDefaultLaunchIO()) {
|
|
|
114
136
|
}
|
|
115
137
|
}
|
|
116
138
|
// Step 3: Prompt auth before creating a new project
|
|
117
|
-
if (!isLoggedIn()) {
|
|
118
|
-
const credResult = await promptCredentials();
|
|
139
|
+
if (!deps.isLoggedIn()) {
|
|
140
|
+
const credResult = await deps.promptCredentials();
|
|
119
141
|
if (credResult === "cancelled") {
|
|
120
142
|
return;
|
|
121
143
|
}
|
|
122
144
|
}
|
|
123
145
|
// Step 4: Create a new project
|
|
124
|
-
const dir = await promptNewProject(io);
|
|
146
|
+
const dir = await deps.promptNewProject(io);
|
|
125
147
|
if (!dir) {
|
|
126
148
|
return;
|
|
127
149
|
}
|
|
128
|
-
if (!isProjectRoot(dir)) {
|
|
129
|
-
await createProject(dir, io);
|
|
150
|
+
if (!deps.isProjectRoot(dir, deps.projectFileIO)) {
|
|
151
|
+
await createProject(dir, io, deps.initCommand);
|
|
130
152
|
}
|
|
131
153
|
launchClaudeCode(dir, io);
|
|
132
154
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launch.js","sourceRoot":"","sources":["../../../src/cli/commands/launch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"launch.js","sourceRoot":"","sources":["../../../src/cli/commands/launch.ts"],"names":[],"mappings":"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"}
|