flingit 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/commands/logs.d.ts.map +1 -1
- package/dist/cli/commands/logs.js +7 -2
- package/dist/cli/commands/logs.js.map +1 -1
- package/dist/cli/commands/tun.d.ts +13 -0
- package/dist/cli/commands/tun.d.ts.map +1 -0
- package/dist/cli/commands/tun.js +188 -0
- package/dist/cli/commands/tun.js.map +1 -0
- package/dist/cli/deploy/bundler.d.ts.map +1 -1
- package/dist/cli/deploy/bundler.js +1 -0
- package/dist/cli/deploy/bundler.js.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/loaders/register-wasm.d.ts +12 -0
- package/dist/cli/loaders/register-wasm.d.ts.map +1 -0
- package/dist/cli/loaders/register-wasm.js +19 -0
- package/dist/cli/loaders/register-wasm.js.map +1 -0
- package/dist/cli/loaders/wasm-hooks.d.ts +54 -0
- package/dist/cli/loaders/wasm-hooks.d.ts.map +1 -0
- package/dist/cli/loaders/wasm-hooks.js +56 -0
- package/dist/cli/loaders/wasm-hooks.js.map +1 -0
- package/package.json +2 -1
- package/templates/default/skills/fling/SKILL.md +15 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/logs.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/logs.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+BpC,eAAO,MAAM,WAAW,SAkKpB,CAAC"}
|
|
@@ -23,6 +23,7 @@ export const logsCommand = new Command("logs")
|
|
|
23
23
|
.option("-f, --follow", "Follow log output in real-time (local only)")
|
|
24
24
|
.option("-n, --limit <count>", "Number of logs to show", "50")
|
|
25
25
|
.option("--search <text>", "Full-text search in log messages (prod only)")
|
|
26
|
+
.option("--ray <id>", "Filter by Ray ID / invocation ID (prod only)")
|
|
26
27
|
.addHelpText("after", `
|
|
27
28
|
Environment:
|
|
28
29
|
By default, shows logs from local SQLite database.
|
|
@@ -33,7 +34,7 @@ Duration format for --since:
|
|
|
33
34
|
|
|
34
35
|
Feature availability:
|
|
35
36
|
Local only: --cron (filter by cron job), --follow (real-time)
|
|
36
|
-
Prod only: --search (full-text search)
|
|
37
|
+
Prod only: --search (full-text search), --ray (filter by invocation)
|
|
37
38
|
|
|
38
39
|
Examples:
|
|
39
40
|
fling logs Last 50 local logs
|
|
@@ -46,6 +47,7 @@ Examples:
|
|
|
46
47
|
fling --prod logs Last 50 production logs
|
|
47
48
|
fling --prod logs --search payment Search for "payment" in prod logs
|
|
48
49
|
fling --prod logs -l error -s 2d Prod errors from last 2 days
|
|
50
|
+
fling --prod logs --ray abc12345 Logs from specific invocation
|
|
49
51
|
`)
|
|
50
52
|
.action(async (options, command) => {
|
|
51
53
|
const env = getTargetEnv(command);
|
|
@@ -204,6 +206,9 @@ async function queryDeployedLogs(options) {
|
|
|
204
206
|
if (options.search) {
|
|
205
207
|
params.set("search", options.search);
|
|
206
208
|
}
|
|
209
|
+
if (options.ray) {
|
|
210
|
+
params.set("rayId", options.ray);
|
|
211
|
+
}
|
|
207
212
|
if (options.limit) {
|
|
208
213
|
params.set("limit", options.limit);
|
|
209
214
|
}
|
|
@@ -254,7 +259,7 @@ function printDeployedLog(entry) {
|
|
|
254
259
|
const timestamp = new Date(entry.timestamp).toISOString();
|
|
255
260
|
let output = `${dim}${timestamp}${reset} ${color}${levelPadded}${reset} ${entry.message}`;
|
|
256
261
|
if (entry.rayId) {
|
|
257
|
-
output += ` ${dim}[ray:${entry.rayId
|
|
262
|
+
output += ` ${dim}[ray:${entry.rayId}]${reset}`;
|
|
258
263
|
}
|
|
259
264
|
console.log(output);
|
|
260
265
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/cli/commands/logs.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAExE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/cli/commands/logs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
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
|
+
export declare const tunCommand: Command;
|
|
13
|
+
//# sourceMappingURL=tun.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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;AAYpC,eAAO,MAAM,UAAU,SAyFnB,CAAC"}
|
|
@@ -0,0 +1,188 @@
|
|
|
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
|
+
export const tunCommand = new Command("tun")
|
|
16
|
+
.description("Expose local server via Cloudflare Tunnel")
|
|
17
|
+
.argument("<port>", "Local port to tunnel")
|
|
18
|
+
.addHelpText("after", `
|
|
19
|
+
What it does:
|
|
20
|
+
Creates a Cloudflare Tunnel from the internet to your local development server.
|
|
21
|
+
External requests to the tunnel URL are forwarded to localhost:<port>.
|
|
22
|
+
|
|
23
|
+
This uses cloudflared (Cloudflare's tunnel daemon) which provides:
|
|
24
|
+
- Full concurrent request handling (no serialization)
|
|
25
|
+
- Native Cloudflare edge integration
|
|
26
|
+
- Automatic TLS termination
|
|
27
|
+
|
|
28
|
+
Examples:
|
|
29
|
+
fling tun 3000 Tunnel localhost:3000
|
|
30
|
+
|
|
31
|
+
The tunnel URL will be displayed when connected. Keep the command running
|
|
32
|
+
to maintain the tunnel. Press Ctrl+C to disconnect.
|
|
33
|
+
|
|
34
|
+
Prerequisites:
|
|
35
|
+
- Must be logged in (fling login)
|
|
36
|
+
- Local server must be running on the specified port
|
|
37
|
+
|
|
38
|
+
Note: cloudflared will be automatically downloaded on first use.
|
|
39
|
+
`)
|
|
40
|
+
.action(async (portArg) => {
|
|
41
|
+
const port = parseInt(portArg, 10);
|
|
42
|
+
if (isNaN(port) || port < 1 || port > 65535) {
|
|
43
|
+
console.error("Error: Port must be a number between 1 and 65535");
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
const token = getToken();
|
|
47
|
+
if (!token) {
|
|
48
|
+
console.error("Error: Not logged in. Run 'fling login' first.");
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
// Use default project (like other CLI commands)
|
|
52
|
+
const projectName = "default";
|
|
53
|
+
console.log(`Starting tunnel to localhost:${port}...`);
|
|
54
|
+
// Ensure cloudflared is installed
|
|
55
|
+
const cloudflaredBin = await ensureCloudflared();
|
|
56
|
+
if (!cloudflaredBin) {
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
// Request tunnel credentials from platform
|
|
60
|
+
const tunResponse = await startTunnel(projectName, port);
|
|
61
|
+
if (!tunResponse) {
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
console.log(`\nTunnel URL: ${tunResponse.tunnelUrl}`);
|
|
65
|
+
console.log(`Forwarding to: http://localhost:${port}`);
|
|
66
|
+
console.log("\nPress Ctrl+C to disconnect\n");
|
|
67
|
+
// Run cloudflared with the token
|
|
68
|
+
const cloudflaredProcess = runCloudflared(cloudflaredBin, tunResponse.token, port);
|
|
69
|
+
// Handle graceful shutdown
|
|
70
|
+
const cleanup = async () => {
|
|
71
|
+
console.log("\nDisconnecting tunnel...");
|
|
72
|
+
cloudflaredProcess.kill("SIGTERM");
|
|
73
|
+
// Stop tunnel on platform
|
|
74
|
+
await stopTunnel(projectName);
|
|
75
|
+
process.exit(0);
|
|
76
|
+
};
|
|
77
|
+
process.on("SIGINT", () => void cleanup());
|
|
78
|
+
process.on("SIGTERM", () => void cleanup());
|
|
79
|
+
// Wait for cloudflared to exit
|
|
80
|
+
cloudflaredProcess.on("exit", (code) => {
|
|
81
|
+
if (code !== 0 && code !== null) {
|
|
82
|
+
console.error(`cloudflared exited with code ${code}`);
|
|
83
|
+
}
|
|
84
|
+
process.exit(code ?? 0);
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
/**
|
|
88
|
+
* Ensure cloudflared binary is installed.
|
|
89
|
+
* Uses the 'cloudflared' npm package which handles platform-specific downloads.
|
|
90
|
+
*/
|
|
91
|
+
async function ensureCloudflared() {
|
|
92
|
+
try {
|
|
93
|
+
// Dynamic import to handle the cloudflared package
|
|
94
|
+
const { bin, install } = await import("cloudflared");
|
|
95
|
+
if (!existsSync(bin)) {
|
|
96
|
+
console.log("Installing cloudflared...");
|
|
97
|
+
await install(bin);
|
|
98
|
+
console.log("cloudflared installed successfully");
|
|
99
|
+
}
|
|
100
|
+
return bin;
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
console.error("Failed to install cloudflared:", error);
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Request tunnel credentials from the platform.
|
|
109
|
+
*/
|
|
110
|
+
async function startTunnel(projectName, localPort) {
|
|
111
|
+
try {
|
|
112
|
+
const response = await platformFetch(`/project/${encodeURIComponent(projectName)}/tun/start`, {
|
|
113
|
+
method: "POST",
|
|
114
|
+
headers: { "Content-Type": "application/json" },
|
|
115
|
+
body: JSON.stringify({ localPort }),
|
|
116
|
+
});
|
|
117
|
+
if (!response.ok) {
|
|
118
|
+
const error = await response.json().catch(() => ({}));
|
|
119
|
+
console.error(`Error: Failed to start tunnel: ${error.error ?? response.statusText}`);
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
return (await response.json());
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
console.error("Error: Failed to connect to platform:", error);
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Notify platform that tunnel is stopping.
|
|
131
|
+
*/
|
|
132
|
+
async function stopTunnel(projectName) {
|
|
133
|
+
try {
|
|
134
|
+
await platformFetch(`/project/${encodeURIComponent(projectName)}/tun/stop`, { method: "DELETE" });
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
// Ignore errors on cleanup
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Run cloudflared with the provided token.
|
|
142
|
+
*/
|
|
143
|
+
function runCloudflared(bin, tunnelToken, localPort) {
|
|
144
|
+
const args = [
|
|
145
|
+
"tunnel",
|
|
146
|
+
"--no-autoupdate",
|
|
147
|
+
"run",
|
|
148
|
+
"--token",
|
|
149
|
+
tunnelToken,
|
|
150
|
+
"--url",
|
|
151
|
+
`http://localhost:${localPort}`,
|
|
152
|
+
];
|
|
153
|
+
const child = spawn(bin, args, {
|
|
154
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
155
|
+
});
|
|
156
|
+
// Forward cloudflared output (stdout and stderr are piped, so they're non-null)
|
|
157
|
+
child.stdout.on("data", (data) => {
|
|
158
|
+
const lines = data.toString().split("\n").filter(Boolean);
|
|
159
|
+
for (const line of lines) {
|
|
160
|
+
// Filter out noisy logs, show important ones
|
|
161
|
+
if (line.includes("error") ||
|
|
162
|
+
line.includes("failed") ||
|
|
163
|
+
line.includes("connected") ||
|
|
164
|
+
line.includes("Registered")) {
|
|
165
|
+
console.log(`[cloudflared] ${line}`);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
child.stderr.on("data", (data) => {
|
|
170
|
+
const lines = data.toString().split("\n").filter(Boolean);
|
|
171
|
+
for (const line of lines) {
|
|
172
|
+
// cloudflared logs to stderr by default
|
|
173
|
+
if (line.includes("ERR") ||
|
|
174
|
+
line.includes("error") ||
|
|
175
|
+
line.includes("failed")) {
|
|
176
|
+
console.error(`[cloudflared] ${line}`);
|
|
177
|
+
}
|
|
178
|
+
else if (line.includes("INF") &&
|
|
179
|
+
(line.includes("connect") ||
|
|
180
|
+
line.includes("Registered") ||
|
|
181
|
+
line.includes("serving"))) {
|
|
182
|
+
console.log(`[cloudflared] ${line}`);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
return child;
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=tun.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tun.js","sourceRoot":"","sources":["../../../src/cli/commands/tun.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundler.d.ts","sourceRoot":"","sources":["../../../src/cli/deploy/bundler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAWD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,OAAO,UAAQ,GACd,OAAO,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"bundler.d.ts","sourceRoot":"","sources":["../../../src/cli/deploy/bundler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAWD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,OAAO,UAAQ,GACd,OAAO,CAAC,YAAY,CAAC,CA0KvB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqBzE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundler.js","sourceRoot":"","sources":["../../../src/cli/deploy/bundler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAY1D;;;GAGG;AACH,SAAS,oBAAoB;IAC3B,wDAAwD;IACxD,OAAO,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC;AACnE,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,UAAkB,EAClB,OAAO,GAAG,KAAK;IAEf,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC9D,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;IAEjD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,uDAAuD;YACrD,8CAA8C;YAC9C,sEAAsE,CACzE,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,SAAS,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,iBAAiB,CAAC,CAAC;IACjE,CAAC;IAED,yDAAyD;IACzD,MAAM,SAAS,GAAG;2EACuD,iBAAiB;;;;;;;;;;;;;;sBActE,OAAO
|
|
1
|
+
{"version":3,"file":"bundler.js","sourceRoot":"","sources":["../../../src/cli/deploy/bundler.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -22,6 +22,7 @@ import { feedbackCommand } from "./commands/feedback.js";
|
|
|
22
22
|
import { projectCommand } from "./commands/project.js";
|
|
23
23
|
import { adminCommand } from "./commands/admin.js";
|
|
24
24
|
import { cronCommand } from "./commands/cron.js";
|
|
25
|
+
import { tunCommand } from "./commands/tun.js";
|
|
25
26
|
import { launch } from "./commands/launch.js";
|
|
26
27
|
const program = new Command();
|
|
27
28
|
program
|
|
@@ -61,6 +62,7 @@ program.addCommand(whoamiCommand);
|
|
|
61
62
|
program.addCommand(feedbackCommand);
|
|
62
63
|
program.addCommand(projectCommand);
|
|
63
64
|
program.addCommand(cronCommand);
|
|
65
|
+
program.addCommand(tunCommand);
|
|
64
66
|
program.addCommand(adminCommand);
|
|
65
67
|
// If no command specified, run the default launch action
|
|
66
68
|
if (process.argv.length === 2) {
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,+DAA+D,CAAC;KAC5E,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,QAAQ,EAAE,gDAAgD,CAAC;KAClE,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;;CAiBvB,CAAC,CAAC;AAEH,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC9B,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AAEjC,yDAAyD;AACzD,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IAC9B,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QACvC,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;KAAM,CAAC;IACN,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registration file for the WASM ESM loader hooks.
|
|
3
|
+
*
|
|
4
|
+
* This file is used with Node.js --import flag to register the WASM loader
|
|
5
|
+
* before any user code runs. It uses the node:module register() API to
|
|
6
|
+
* install the custom resolve and load hooks.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* node --import ./register-wasm.js script.js
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=register-wasm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-wasm.d.ts","sourceRoot":"","sources":["../../../src/cli/loaders/register-wasm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registration file for the WASM ESM loader hooks.
|
|
3
|
+
*
|
|
4
|
+
* This file is used with Node.js --import flag to register the WASM loader
|
|
5
|
+
* before any user code runs. It uses the node:module register() API to
|
|
6
|
+
* install the custom resolve and load hooks.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* node --import ./register-wasm.js script.js
|
|
10
|
+
*/
|
|
11
|
+
import { register } from "node:module";
|
|
12
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
13
|
+
import { dirname, join } from "node:path";
|
|
14
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
15
|
+
// The hooks file path - will be .js when compiled to dist/
|
|
16
|
+
const hooksPath = join(__dirname, "wasm-hooks.js");
|
|
17
|
+
// Register the WASM loader hooks
|
|
18
|
+
register(pathToFileURL(hooksPath).href, import.meta.url);
|
|
19
|
+
//# sourceMappingURL=register-wasm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-wasm.js","sourceRoot":"","sources":["../../../src/cli/loaders/register-wasm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,2DAA2D;AAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AAEnD,iCAAiC;AACjC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node.js ESM loader hooks for WebAssembly support in development.
|
|
3
|
+
*
|
|
4
|
+
* This file provides the resolve and load hooks that allow importing .wasm
|
|
5
|
+
* files directly in TypeScript/JavaScript code during development with tsx.
|
|
6
|
+
*
|
|
7
|
+
* Usage in user code (same API as production bundling):
|
|
8
|
+
* import loadWasm from './example.wasm';
|
|
9
|
+
* const exports = await loadWasm({ env: { log: console.log } });
|
|
10
|
+
* exports.someFunction();
|
|
11
|
+
*/
|
|
12
|
+
interface ResolveContext {
|
|
13
|
+
conditions: string[];
|
|
14
|
+
importAttributes: Record<string, string>;
|
|
15
|
+
parentURL?: string;
|
|
16
|
+
}
|
|
17
|
+
interface ResolveResult {
|
|
18
|
+
format?: string | null;
|
|
19
|
+
importAttributes?: Record<string, string>;
|
|
20
|
+
shortCircuit?: boolean;
|
|
21
|
+
url: string;
|
|
22
|
+
}
|
|
23
|
+
type NextResolve = (specifier: string, context: ResolveContext) => Promise<ResolveResult>;
|
|
24
|
+
interface LoadContext {
|
|
25
|
+
conditions: string[];
|
|
26
|
+
format?: string | null;
|
|
27
|
+
importAttributes: Record<string, string>;
|
|
28
|
+
}
|
|
29
|
+
interface LoadResult {
|
|
30
|
+
format: string;
|
|
31
|
+
shortCircuit?: boolean;
|
|
32
|
+
source?: string | ArrayBuffer | Uint8Array;
|
|
33
|
+
}
|
|
34
|
+
type NextLoad = (url: string, context: LoadContext) => Promise<LoadResult>;
|
|
35
|
+
/**
|
|
36
|
+
* Resolve hook: mark .wasm imports with custom format.
|
|
37
|
+
*/
|
|
38
|
+
export declare function resolve(specifier: string, context: ResolveContext, nextResolve: NextResolve): Promise<ResolveResult>;
|
|
39
|
+
/**
|
|
40
|
+
* Load hook: generate JS module that exports WASM binary as Uint8Array.
|
|
41
|
+
*
|
|
42
|
+
* We embed the WASM binary as base64 in the generated JS module,
|
|
43
|
+
* which then decodes to Uint8Array when imported.
|
|
44
|
+
*
|
|
45
|
+
* This matches what libraries like @resvg/resvg-wasm expect:
|
|
46
|
+
* - In Cloudflare Workers: import returns WebAssembly.Module
|
|
47
|
+
* - In Node.js (local dev): import returns Uint8Array
|
|
48
|
+
*
|
|
49
|
+
* Both types are accepted by WebAssembly.instantiate() and by
|
|
50
|
+
* library init functions like initWasm().
|
|
51
|
+
*/
|
|
52
|
+
export declare function load(url: string, context: LoadContext, nextLoad: NextLoad): Promise<LoadResult>;
|
|
53
|
+
export {};
|
|
54
|
+
//# sourceMappingURL=wasm-hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wasm-hooks.d.ts","sourceRoot":"","sources":["../../../src/cli/loaders/wasm-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,UAAU,cAAc;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,KAAK,WAAW,GAAG,CACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,KACpB,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5B,UAAU,WAAW;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,CAAC;CAC5C;AAED,KAAK,QAAQ,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3E;;GAEG;AACH,wBAAsB,OAAO,CAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,aAAa,CAAC,CASxB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,IAAI,CACxB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,UAAU,CAAC,CAkBrB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node.js ESM loader hooks for WebAssembly support in development.
|
|
3
|
+
*
|
|
4
|
+
* This file provides the resolve and load hooks that allow importing .wasm
|
|
5
|
+
* files directly in TypeScript/JavaScript code during development with tsx.
|
|
6
|
+
*
|
|
7
|
+
* Usage in user code (same API as production bundling):
|
|
8
|
+
* import loadWasm from './example.wasm';
|
|
9
|
+
* const exports = await loadWasm({ env: { log: console.log } });
|
|
10
|
+
* exports.someFunction();
|
|
11
|
+
*/
|
|
12
|
+
import { readFile } from "node:fs/promises";
|
|
13
|
+
import { fileURLToPath } from "node:url";
|
|
14
|
+
// Custom format identifier for WASM files
|
|
15
|
+
const WASM_FORMAT = "wasm-loader";
|
|
16
|
+
/**
|
|
17
|
+
* Resolve hook: mark .wasm imports with custom format.
|
|
18
|
+
*/
|
|
19
|
+
export async function resolve(specifier, context, nextResolve) {
|
|
20
|
+
const resolved = await nextResolve(specifier, context);
|
|
21
|
+
// Mark .wasm files with our custom format
|
|
22
|
+
if (specifier.endsWith(".wasm")) {
|
|
23
|
+
return { ...resolved, format: WASM_FORMAT };
|
|
24
|
+
}
|
|
25
|
+
return resolved;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Load hook: generate JS module that exports WASM binary as Uint8Array.
|
|
29
|
+
*
|
|
30
|
+
* We embed the WASM binary as base64 in the generated JS module,
|
|
31
|
+
* which then decodes to Uint8Array when imported.
|
|
32
|
+
*
|
|
33
|
+
* This matches what libraries like @resvg/resvg-wasm expect:
|
|
34
|
+
* - In Cloudflare Workers: import returns WebAssembly.Module
|
|
35
|
+
* - In Node.js (local dev): import returns Uint8Array
|
|
36
|
+
*
|
|
37
|
+
* Both types are accepted by WebAssembly.instantiate() and by
|
|
38
|
+
* library init functions like initWasm().
|
|
39
|
+
*/
|
|
40
|
+
export async function load(url, context, nextLoad) {
|
|
41
|
+
if (context.format === WASM_FORMAT) {
|
|
42
|
+
const filePath = fileURLToPath(url);
|
|
43
|
+
const wasmBuffer = await readFile(filePath);
|
|
44
|
+
const base64 = wasmBuffer.toString("base64");
|
|
45
|
+
// Generate JS module that decodes base64 to Uint8Array
|
|
46
|
+
// This is compatible with libraries that accept either Uint8Array or WebAssembly.Module
|
|
47
|
+
const source = `
|
|
48
|
+
const base64 = "${base64}";
|
|
49
|
+
const binary = Uint8Array.from(atob(base64), c => c.charCodeAt(0));
|
|
50
|
+
export default binary;
|
|
51
|
+
`;
|
|
52
|
+
return { format: "module", source, shortCircuit: true };
|
|
53
|
+
}
|
|
54
|
+
return nextLoad(url, context);
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=wasm-hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wasm-hooks.js","sourceRoot":"","sources":["../../../src/cli/loaders/wasm-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,0CAA0C;AAC1C,MAAM,WAAW,GAAG,aAAa,CAAC;AAkClC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,SAAiB,EACjB,OAAuB,EACvB,WAAwB;IAExB,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAEvD,0CAA0C;IAC1C,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAC9C,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,GAAW,EACX,OAAoB,EACpB,QAAkB;IAElB,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAE7C,uDAAuD;QACvD,wFAAwF;QACxF,MAAM,MAAM,GAAG;kBACD,MAAM;;;CAGvB,CAAC;QAEE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAC1D,CAAC;IAED,OAAO,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAChC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "flingit",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.7",
|
|
4
4
|
"description": "Personal Software Platform - Build and deploy personal tools through conversation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"@clack/prompts": "^0.11.0",
|
|
54
54
|
"@hono/node-server": "^1.19.9",
|
|
55
55
|
"better-sqlite3": "^12.6.2",
|
|
56
|
+
"cloudflared": "^0.7.1",
|
|
56
57
|
"commander": "^14.0.2",
|
|
57
58
|
"croner": "^9.1.0",
|
|
58
59
|
"dotenv": "^17.2.3",
|
|
@@ -108,6 +108,21 @@ npm exec fling cron history <name> # View invocation history
|
|
|
108
108
|
npm exec fling cron trigger <name> # Manually trigger a cron job
|
|
109
109
|
```
|
|
110
110
|
|
|
111
|
+
### Debugging Cron Jobs in Production
|
|
112
|
+
|
|
113
|
+
Each cron invocation logs "Running cron job <name>" at the start. To see all logs from a specific cron invocation:
|
|
114
|
+
|
|
115
|
+
1. **Find the invocation** by searching for the cron job name:
|
|
116
|
+
```bash
|
|
117
|
+
npm exec fling -- --prod logs --search "Running cron job daily-cleanup"
|
|
118
|
+
```
|
|
119
|
+
This shows log entries with Ray IDs like `[ray:abc12345]`.
|
|
120
|
+
|
|
121
|
+
2. **Filter by that Ray ID** to see all logs from that invocation:
|
|
122
|
+
```bash
|
|
123
|
+
npm exec fling -- --prod logs --ray abc12345
|
|
124
|
+
```
|
|
125
|
+
|
|
111
126
|
### Local vs Production (`--prod`)
|
|
112
127
|
|
|
113
128
|
Commands default to local environment. Use `--prod` for production:
|