flingit 0.0.48 → 0.0.50
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/cron.d.ts +11 -10
- package/dist/cli/commands/cron.d.ts.map +1 -1
- package/dist/cli/commands/cron.js +15 -27
- package/dist/cli/commands/cron.js.map +1 -1
- package/dist/cli/commands/email.d.ts +50 -0
- package/dist/cli/commands/email.d.ts.map +1 -0
- package/dist/cli/commands/email.js +156 -0
- package/dist/cli/commands/email.js.map +1 -0
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/utils/local-dev-fetch.d.ts +9 -0
- package/dist/cli/utils/local-dev-fetch.d.ts.map +1 -0
- package/dist/cli/utils/local-dev-fetch.js +20 -0
- package/dist/cli/utils/local-dev-fetch.js.map +1 -0
- package/dist/runtime/email.d.ts +13 -3
- package/dist/runtime/email.d.ts.map +1 -1
- package/dist/runtime/email.js +18 -3
- package/dist/runtime/email.js.map +1 -1
- package/dist/runtime/entry.d.ts +9 -0
- package/dist/runtime/entry.d.ts.map +1 -1
- package/dist/runtime/entry.js +46 -9
- package/dist/runtime/entry.js.map +1 -1
- package/package.json +1 -1
- package/templates/default/dot-claude/skills/fling/.hash +1 -1
- package/templates/default/dot-claude/skills/fling/SKILL.md +18 -17
- package/templates/default/dot-claude/skills/fling/references/EMAIL-INBOUND.md +16 -0
|
@@ -4,44 +4,45 @@
|
|
|
4
4
|
import { Command } from "commander";
|
|
5
5
|
import { type PlatformFetchFn } from "../utils/config.js";
|
|
6
6
|
import { type ConsoleIO, type ProcessIO } from "../utils/cli-io.js";
|
|
7
|
+
import { type LocalFetchFn } from "../utils/local-dev-fetch.js";
|
|
7
8
|
/**
|
|
8
9
|
* Combined dependencies for cron commands.
|
|
9
10
|
*/
|
|
10
|
-
export interface
|
|
11
|
+
export interface CronIO {
|
|
11
12
|
console: ConsoleIO;
|
|
12
13
|
process: ProcessIO;
|
|
13
14
|
platformFetch: PlatformFetchFn;
|
|
14
|
-
localFetch:
|
|
15
|
+
localFetch: LocalFetchFn;
|
|
15
16
|
getProjectName: (cwd?: string) => string;
|
|
16
17
|
}
|
|
17
|
-
export declare function
|
|
18
|
-
export declare const
|
|
18
|
+
export declare function createDefaultCronIO(): CronIO;
|
|
19
|
+
export declare const defaultCronIO: CronIO;
|
|
19
20
|
/**
|
|
20
21
|
* List cron jobs with status.
|
|
21
22
|
* Exported for testing with injected dependencies.
|
|
22
23
|
*/
|
|
23
|
-
export declare function runCronList(deps?:
|
|
24
|
+
export declare function runCronList(deps?: CronIO): Promise<void>;
|
|
24
25
|
/**
|
|
25
26
|
* Show invocation history for a cron job.
|
|
26
27
|
* Exported for testing with injected dependencies.
|
|
27
28
|
*/
|
|
28
|
-
export declare function runCronHistory(name: string, limit: number, deps?:
|
|
29
|
+
export declare function runCronHistory(name: string, limit: number, deps?: CronIO): Promise<void>;
|
|
29
30
|
/**
|
|
30
31
|
* Manually trigger a cron job.
|
|
31
32
|
* Exported for testing with injected dependencies.
|
|
32
33
|
*/
|
|
33
|
-
export declare function runCronTrigger(name: string, deps?:
|
|
34
|
+
export declare function runCronTrigger(name: string, deps?: CronIO): Promise<void>;
|
|
34
35
|
/**
|
|
35
36
|
* List local cron jobs from the dev server.
|
|
36
37
|
*/
|
|
37
|
-
export declare function runLocalCronList(port: number, deps?:
|
|
38
|
+
export declare function runLocalCronList(port: number, deps?: CronIO): Promise<void>;
|
|
38
39
|
/**
|
|
39
40
|
* Show local invocation history from the dev server.
|
|
40
41
|
*/
|
|
41
|
-
export declare function runLocalCronHistory(name: string, limit: number, port: number, deps?:
|
|
42
|
+
export declare function runLocalCronHistory(name: string, limit: number, port: number, deps?: CronIO): Promise<void>;
|
|
42
43
|
/**
|
|
43
44
|
* Manually trigger a local cron job via the dev server.
|
|
44
45
|
*/
|
|
45
|
-
export declare function runLocalCronTrigger(name: string, port: number, deps?:
|
|
46
|
+
export declare function runLocalCronTrigger(name: string, port: number, deps?: CronIO): Promise<void>;
|
|
46
47
|
export declare const cronCommand: Command;
|
|
47
48
|
//# 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;AACpC,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGzE,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,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,EAAiB,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGzE,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpE,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAM/E;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,SAAS,CAAC;IACnB,aAAa,EAAE,eAAe,CAAC;IAC/B,UAAU,EAAE,YAAY,CAAC;IACzB,cAAc,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CAC1C;AAMD,wBAAgB,mBAAmB,IAAI,MAAM,CAQ5C;AAED,eAAO,MAAM,aAAa,QAAwB,CAAC;AA2KnD;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,IAAI,GAAE,MAAsB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,MAAsB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,MAAsB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAef;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,MAAsB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,MAAsB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAWf;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,MAAsB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,eAAO,MAAM,WAAW,SAmCrB,CAAC"}
|
|
@@ -6,10 +6,11 @@ import { platformFetch } from "../utils/config.js";
|
|
|
6
6
|
import { getTargetEnv, requireProdAuth } from "../utils/environment.js";
|
|
7
7
|
import { getProjectName } from "../utils/project-name.js";
|
|
8
8
|
import { consoleIO, processIO, projectNameFileIO } from "../utils/cli-io-impl.js";
|
|
9
|
+
import { localDevFetch } from "../utils/local-dev-fetch.js";
|
|
9
10
|
// ═══════════════════════════════════════════════════════
|
|
10
11
|
// DEFAULT IMPLEMENTATIONS
|
|
11
12
|
// ═══════════════════════════════════════════════════════
|
|
12
|
-
export function
|
|
13
|
+
export function createDefaultCronIO() {
|
|
13
14
|
return {
|
|
14
15
|
console: consoleIO,
|
|
15
16
|
process: processIO,
|
|
@@ -18,7 +19,7 @@ export function createDefaultCronDeps() {
|
|
|
18
19
|
getProjectName: (cwd) => getProjectName(projectNameFileIO, () => process.cwd(), cwd),
|
|
19
20
|
};
|
|
20
21
|
}
|
|
21
|
-
export const
|
|
22
|
+
export const defaultCronIO = createDefaultCronIO();
|
|
22
23
|
/**
|
|
23
24
|
* Format a timestamp as a human-readable date string.
|
|
24
25
|
*/
|
|
@@ -45,7 +46,7 @@ async function getApiError(response) {
|
|
|
45
46
|
return `API error: ${response.status}`;
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
|
-
function printCronList(data, deps =
|
|
49
|
+
function printCronList(data, deps = defaultCronIO, env) {
|
|
49
50
|
if (data.crons.length === 0) {
|
|
50
51
|
deps.console.log("No cron jobs registered.\n");
|
|
51
52
|
deps.console.log("To add a cron job, use the cron() function in your code:");
|
|
@@ -83,7 +84,7 @@ function printCronList(data, deps = defaultCronDeps, env) {
|
|
|
83
84
|
}
|
|
84
85
|
deps.console.log("");
|
|
85
86
|
}
|
|
86
|
-
function printCronHistory(name, data, deps =
|
|
87
|
+
function printCronHistory(name, data, deps = defaultCronIO) {
|
|
87
88
|
if (data.invocations.length === 0) {
|
|
88
89
|
deps.console.log(`No invocations found for cron job "${name}".`);
|
|
89
90
|
return;
|
|
@@ -113,7 +114,7 @@ function printCronHistory(name, data, deps = defaultCronDeps) {
|
|
|
113
114
|
}
|
|
114
115
|
deps.console.log("");
|
|
115
116
|
}
|
|
116
|
-
function printTriggerResult(name, data, deps =
|
|
117
|
+
function printTriggerResult(name, data, deps = defaultCronIO) {
|
|
117
118
|
if (data.status === "error" && data.error) {
|
|
118
119
|
deps.console.log(`Triggered "${name}" - invocation: ${data.invocationId}, status: ${data.status}`);
|
|
119
120
|
deps.console.log(`Error: ${data.error}`);
|
|
@@ -122,24 +123,11 @@ function printTriggerResult(name, data, deps = defaultCronDeps) {
|
|
|
122
123
|
deps.console.log(`Triggered "${name}" - invocation: ${data.invocationId}, status: ${data.status}`);
|
|
123
124
|
}
|
|
124
125
|
}
|
|
125
|
-
async function localDevFetch(path, port, deps = defaultCronDeps, init) {
|
|
126
|
-
const url = `http://localhost:${port}${path}`;
|
|
127
|
-
try {
|
|
128
|
-
return await deps.localFetch(url, init);
|
|
129
|
-
}
|
|
130
|
-
catch (error) {
|
|
131
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
132
|
-
throw new Error(`Failed to connect to local dev server at ${url}: ${errorMessage}\n\n` +
|
|
133
|
-
"Next steps:\n" +
|
|
134
|
-
" 1. Start local server: fling dev\n" +
|
|
135
|
-
" 2. If using a custom port, pass --port to this command");
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
126
|
/**
|
|
139
127
|
* List cron jobs with status.
|
|
140
128
|
* Exported for testing with injected dependencies.
|
|
141
129
|
*/
|
|
142
|
-
export async function runCronList(deps =
|
|
130
|
+
export async function runCronList(deps = defaultCronIO) {
|
|
143
131
|
const projectName = deps.getProjectName();
|
|
144
132
|
const response = await deps.platformFetch(`/project/${encodeURIComponent(projectName)}/crons`);
|
|
145
133
|
if (!response.ok) {
|
|
@@ -152,7 +140,7 @@ export async function runCronList(deps = defaultCronDeps) {
|
|
|
152
140
|
* Show invocation history for a cron job.
|
|
153
141
|
* Exported for testing with injected dependencies.
|
|
154
142
|
*/
|
|
155
|
-
export async function runCronHistory(name, limit, deps =
|
|
143
|
+
export async function runCronHistory(name, limit, deps = defaultCronIO) {
|
|
156
144
|
const projectName = deps.getProjectName();
|
|
157
145
|
const response = await deps.platformFetch(`/project/${encodeURIComponent(projectName)}/crons/${encodeURIComponent(name)}/invocations?limit=${limit}`);
|
|
158
146
|
if (!response.ok) {
|
|
@@ -165,7 +153,7 @@ export async function runCronHistory(name, limit, deps = defaultCronDeps) {
|
|
|
165
153
|
* Manually trigger a cron job.
|
|
166
154
|
* Exported for testing with injected dependencies.
|
|
167
155
|
*/
|
|
168
|
-
export async function runCronTrigger(name, deps =
|
|
156
|
+
export async function runCronTrigger(name, deps = defaultCronIO) {
|
|
169
157
|
deps.console.log(`Triggering cron job "${name}"...`);
|
|
170
158
|
const projectName = deps.getProjectName();
|
|
171
159
|
const response = await deps.platformFetch(`/project/${encodeURIComponent(projectName)}/crons/${encodeURIComponent(name)}/trigger`, { method: "POST" });
|
|
@@ -178,8 +166,8 @@ export async function runCronTrigger(name, deps = defaultCronDeps) {
|
|
|
178
166
|
/**
|
|
179
167
|
* List local cron jobs from the dev server.
|
|
180
168
|
*/
|
|
181
|
-
export async function runLocalCronList(port, deps =
|
|
182
|
-
const response = await localDevFetch("/__cron", port, deps);
|
|
169
|
+
export async function runLocalCronList(port, deps = defaultCronIO) {
|
|
170
|
+
const response = await localDevFetch("/__cron", port, deps.localFetch);
|
|
183
171
|
if (!response.ok) {
|
|
184
172
|
throw new Error(await getApiError(response));
|
|
185
173
|
}
|
|
@@ -189,8 +177,8 @@ export async function runLocalCronList(port, deps = defaultCronDeps) {
|
|
|
189
177
|
/**
|
|
190
178
|
* Show local invocation history from the dev server.
|
|
191
179
|
*/
|
|
192
|
-
export async function runLocalCronHistory(name, limit, port, deps =
|
|
193
|
-
const response = await localDevFetch(`/__cron/${encodeURIComponent(name)}/invocations?limit=${limit}`, port, deps);
|
|
180
|
+
export async function runLocalCronHistory(name, limit, port, deps = defaultCronIO) {
|
|
181
|
+
const response = await localDevFetch(`/__cron/${encodeURIComponent(name)}/invocations?limit=${limit}`, port, deps.localFetch);
|
|
194
182
|
if (!response.ok) {
|
|
195
183
|
throw new Error(await getApiError(response));
|
|
196
184
|
}
|
|
@@ -200,9 +188,9 @@ export async function runLocalCronHistory(name, limit, port, deps = defaultCronD
|
|
|
200
188
|
/**
|
|
201
189
|
* Manually trigger a local cron job via the dev server.
|
|
202
190
|
*/
|
|
203
|
-
export async function runLocalCronTrigger(name, port, deps =
|
|
191
|
+
export async function runLocalCronTrigger(name, port, deps = defaultCronIO) {
|
|
204
192
|
deps.console.log(`Triggering cron job "${name}"...`);
|
|
205
|
-
const response = await localDevFetch(`/__cron/${encodeURIComponent(name)}/trigger`, port, deps, { method: "POST" });
|
|
193
|
+
const response = await localDevFetch(`/__cron/${encodeURIComponent(name)}/trigger`, port, deps.localFetch, { method: "POST" });
|
|
206
194
|
if (!response.ok) {
|
|
207
195
|
throw new Error(await getApiError(response));
|
|
208
196
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cron.js","sourceRoot":"","sources":["../../../src/cli/commands/cron.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cron.js","sourceRoot":"","sources":["../../../src/cli/commands/cron.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* fling email - Trigger email handlers locally
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from "commander";
|
|
5
|
+
import type { InboundEmail } from "../../types/email.js";
|
|
6
|
+
import type { ConsoleIO } from "../utils/cli-io.js";
|
|
7
|
+
import { type LocalFetchFn } from "../utils/local-dev-fetch.js";
|
|
8
|
+
export interface EmailTriggerIO {
|
|
9
|
+
console: ConsoleIO;
|
|
10
|
+
localFetch: LocalFetchFn;
|
|
11
|
+
now: () => Date;
|
|
12
|
+
}
|
|
13
|
+
export declare function createDefaultEmailTriggerIO(): EmailTriggerIO;
|
|
14
|
+
export declare const defaultEmailTriggerIO: EmailTriggerIO;
|
|
15
|
+
export interface EmailTriggerOptions {
|
|
16
|
+
from: string;
|
|
17
|
+
to: string;
|
|
18
|
+
subject: string;
|
|
19
|
+
text?: string;
|
|
20
|
+
html?: string;
|
|
21
|
+
port: number;
|
|
22
|
+
/** Whether --text was explicitly provided on the command line */
|
|
23
|
+
textExplicit?: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Build an InboundEmail from CLI flags with sensible defaults.
|
|
27
|
+
*/
|
|
28
|
+
export declare function buildInboundEmail(options: EmailTriggerOptions, now: Date): InboundEmail;
|
|
29
|
+
/**
|
|
30
|
+
* Send a simulated inbound email to the local dev server.
|
|
31
|
+
* Exported for testing with injected dependencies.
|
|
32
|
+
*/
|
|
33
|
+
export declare function runLocalEmailTrigger(options: EmailTriggerOptions, deps?: EmailTriggerIO): Promise<void>;
|
|
34
|
+
export declare const emailCommand: Command;
|
|
35
|
+
export declare function parseLocalPort(port: string): number;
|
|
36
|
+
interface RawCommanderOptions {
|
|
37
|
+
from: string;
|
|
38
|
+
to: string;
|
|
39
|
+
subject: string;
|
|
40
|
+
text?: string;
|
|
41
|
+
html?: string;
|
|
42
|
+
port: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Build EmailTriggerOptions from Commander-parsed options and raw argv.
|
|
46
|
+
* Exported for testing.
|
|
47
|
+
*/
|
|
48
|
+
export declare function buildTriggerOptions(options: RawCommanderOptions, argv: string[]): EmailTriggerOptions;
|
|
49
|
+
export {};
|
|
50
|
+
//# sourceMappingURL=email.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/email.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAM/E,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,SAAS,CAAC;IACnB,UAAU,EAAE,YAAY,CAAC;IACzB,GAAG,EAAE,MAAM,IAAI,CAAC;CACjB;AAMD,wBAAgB,2BAA2B,IAAI,cAAc,CAU5D;AAED,eAAO,MAAM,qBAAqB,gBAAgC,CAAC;AAMnE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,EAAE,IAAI,GAAG,YAAY,CA6BvF;AAMD;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,mBAAmB,EAC5B,IAAI,GAAE,cAAsC,GAC3C,OAAO,CAAC,IAAI,CAAC,CAuBf;AAMD,eAAO,MAAM,YAAY,SAsBtB,CAAC;AAEJ,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASnD;AAED,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,mBAAmB,EAC5B,IAAI,EAAE,MAAM,EAAE,GACb,mBAAmB,CAarB"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* fling email - Trigger email handlers locally
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from "commander";
|
|
5
|
+
import { localDevFetch } from "../utils/local-dev-fetch.js";
|
|
6
|
+
// ═══════════════════════════════════════════════════════
|
|
7
|
+
// DEFAULT IMPLEMENTATIONS
|
|
8
|
+
// ═══════════════════════════════════════════════════════
|
|
9
|
+
export function createDefaultEmailTriggerIO() {
|
|
10
|
+
return {
|
|
11
|
+
console: {
|
|
12
|
+
log: (msg) => { console.log(msg); },
|
|
13
|
+
error: (msg) => { console.error(msg); },
|
|
14
|
+
warn: (msg) => { console.warn(msg); },
|
|
15
|
+
},
|
|
16
|
+
localFetch: fetch,
|
|
17
|
+
now: () => new Date(),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export const defaultEmailTriggerIO = createDefaultEmailTriggerIO();
|
|
21
|
+
/**
|
|
22
|
+
* Build an InboundEmail from CLI flags with sensible defaults.
|
|
23
|
+
*/
|
|
24
|
+
export function buildInboundEmail(options, now) {
|
|
25
|
+
// Determine text body:
|
|
26
|
+
// - If --text explicitly provided, use it
|
|
27
|
+
// - If --html provided without explicit --text, suppress default text (set null)
|
|
28
|
+
// - Otherwise use the text value (which has a default)
|
|
29
|
+
let text;
|
|
30
|
+
if (options.textExplicit) {
|
|
31
|
+
text = options.text ?? null;
|
|
32
|
+
}
|
|
33
|
+
else if (options.html) {
|
|
34
|
+
text = null;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
text = options.text ?? null;
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
from: { name: "", address: options.from },
|
|
41
|
+
to: options.to,
|
|
42
|
+
cc: [],
|
|
43
|
+
replyTo: [],
|
|
44
|
+
subject: options.subject,
|
|
45
|
+
text,
|
|
46
|
+
html: options.html ?? null,
|
|
47
|
+
date: now.toISOString(),
|
|
48
|
+
messageId: null,
|
|
49
|
+
inReplyTo: null,
|
|
50
|
+
references: null,
|
|
51
|
+
headers: {},
|
|
52
|
+
attachments: [],
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
// ═══════════════════════════════════════════════════════
|
|
56
|
+
// TRIGGER COMMAND
|
|
57
|
+
// ═══════════════════════════════════════════════════════
|
|
58
|
+
/**
|
|
59
|
+
* Send a simulated inbound email to the local dev server.
|
|
60
|
+
* Exported for testing with injected dependencies.
|
|
61
|
+
*/
|
|
62
|
+
export async function runLocalEmailTrigger(options, deps = defaultEmailTriggerIO) {
|
|
63
|
+
const email = buildInboundEmail(options, deps.now());
|
|
64
|
+
deps.console.log(`Sending test email to local dev server (port ${options.port})...`);
|
|
65
|
+
const response = await localDevFetch("/__email", options.port, deps.localFetch, {
|
|
66
|
+
method: "POST",
|
|
67
|
+
headers: { "Content-Type": "application/json" },
|
|
68
|
+
body: JSON.stringify(email),
|
|
69
|
+
});
|
|
70
|
+
let data;
|
|
71
|
+
try {
|
|
72
|
+
data = (await response.json());
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
throw new Error(`Email delivery failed (HTTP ${response.status}): unexpected non-JSON response`);
|
|
76
|
+
}
|
|
77
|
+
if (data.success) {
|
|
78
|
+
deps.console.log(`Email delivered successfully (from: ${email.from.address}, subject: "${email.subject}")`);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
throw new Error(data.error ?? `Email delivery failed (HTTP ${response.status})`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// ═══════════════════════════════════════════════════════
|
|
85
|
+
// COMMANDER SETUP
|
|
86
|
+
// ═══════════════════════════════════════════════════════
|
|
87
|
+
export const emailCommand = new Command("email")
|
|
88
|
+
.description("Trigger email handlers locally")
|
|
89
|
+
.addHelpText("after", `
|
|
90
|
+
Environment:
|
|
91
|
+
Commands target local dev server at http://localhost:3210.
|
|
92
|
+
There is no --prod support — production emails are sent via actual email.
|
|
93
|
+
Local mode requires \`fling dev\` to be running.
|
|
94
|
+
|
|
95
|
+
Email handlers are defined in your code using the onEmail() function:
|
|
96
|
+
|
|
97
|
+
import { onEmail } from "flingit";
|
|
98
|
+
|
|
99
|
+
onEmail(async (email) => {
|
|
100
|
+
console.log(\`Email from \${email.from.address}: \${email.subject}\`);
|
|
101
|
+
// Process the email...
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
After deploying with \`fling push\`, emails sent to <slug>@flingit.run
|
|
105
|
+
will be dispatched to your handler automatically.
|
|
106
|
+
`);
|
|
107
|
+
export function parseLocalPort(port) {
|
|
108
|
+
if (!/^\d+$/.test(port)) {
|
|
109
|
+
throw new Error("--port must be a number between 1 and 65535");
|
|
110
|
+
}
|
|
111
|
+
const parsed = Number(port);
|
|
112
|
+
if (parsed < 1 || parsed > 65535) {
|
|
113
|
+
throw new Error("--port must be a number between 1 and 65535");
|
|
114
|
+
}
|
|
115
|
+
return parsed;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Build EmailTriggerOptions from Commander-parsed options and raw argv.
|
|
119
|
+
* Exported for testing.
|
|
120
|
+
*/
|
|
121
|
+
export function buildTriggerOptions(options, argv) {
|
|
122
|
+
const textExplicit = argv.some((a) => a === "--text" || a.startsWith("--text="));
|
|
123
|
+
const text = textExplicit ? options.text : (options.text ?? "This is a test email from fling email trigger.");
|
|
124
|
+
const result = {
|
|
125
|
+
from: options.from,
|
|
126
|
+
to: options.to,
|
|
127
|
+
subject: options.subject,
|
|
128
|
+
port: parseLocalPort(options.port),
|
|
129
|
+
textExplicit,
|
|
130
|
+
};
|
|
131
|
+
if (text !== undefined)
|
|
132
|
+
result.text = text;
|
|
133
|
+
if (options.html !== undefined)
|
|
134
|
+
result.html = options.html;
|
|
135
|
+
return result;
|
|
136
|
+
}
|
|
137
|
+
// fling email trigger
|
|
138
|
+
emailCommand
|
|
139
|
+
.command("trigger")
|
|
140
|
+
.description("Simulate an inbound email to local dev server")
|
|
141
|
+
.option("--from <address>", "Sender email address", "test@example.com")
|
|
142
|
+
.option("--to <address>", "Recipient email address", "project@flingit.run")
|
|
143
|
+
.option("--subject <text>", "Email subject", "Test email")
|
|
144
|
+
.option("--text <body>", "Plain text body")
|
|
145
|
+
.option("--html <body>", "HTML body")
|
|
146
|
+
.option("--port <port>", "Local dev server port", "3210")
|
|
147
|
+
.action(async (options) => {
|
|
148
|
+
try {
|
|
149
|
+
await runLocalEmailTrigger(buildTriggerOptions(options, process.argv));
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
console.error("Error:", error.message);
|
|
153
|
+
process.exit(1);
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
//# sourceMappingURL=email.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../../src/cli/commands/email.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -41,6 +41,7 @@ import { signupCommand } from "./commands/signup.js";
|
|
|
41
41
|
import { feedbackCommand } from "./commands/feedback.js";
|
|
42
42
|
import { projectCommand } from "./commands/project.js";
|
|
43
43
|
import { cronCommand } from "./commands/cron.js";
|
|
44
|
+
import { emailCommand } from "./commands/email.js";
|
|
44
45
|
import { tunnelCommand } from "./commands/tunnel.js";
|
|
45
46
|
import { storageCommand } from "./commands/storage.js";
|
|
46
47
|
import { pluginCommand } from "./commands/plugin.js";
|
|
@@ -130,6 +131,7 @@ program.addCommand(whoamiCommand);
|
|
|
130
131
|
program.addCommand(feedbackCommand);
|
|
131
132
|
program.addCommand(projectCommand);
|
|
132
133
|
program.addCommand(cronCommand);
|
|
134
|
+
program.addCommand(emailCommand);
|
|
133
135
|
program.addCommand(tunnelCommand);
|
|
134
136
|
program.addCommand(storageCommand);
|
|
135
137
|
program.addCommand(pluginCommand);
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared fetch wrapper for local dev server requests.
|
|
3
|
+
*
|
|
4
|
+
* Used by CLI commands (cron, email) that talk to the local dev server.
|
|
5
|
+
* Wraps fetch with a connection-error message that guides the user.
|
|
6
|
+
*/
|
|
7
|
+
export type LocalFetchFn = (input: string | URL, init?: RequestInit) => Promise<Response>;
|
|
8
|
+
export declare function localDevFetch(path: string, port: number, fetchFn: LocalFetchFn, init?: RequestInit): Promise<Response>;
|
|
9
|
+
//# sourceMappingURL=local-dev-fetch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-dev-fetch.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/local-dev-fetch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE1F,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,YAAY,EACrB,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,QAAQ,CAAC,CAanB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared fetch wrapper for local dev server requests.
|
|
3
|
+
*
|
|
4
|
+
* Used by CLI commands (cron, email) that talk to the local dev server.
|
|
5
|
+
* Wraps fetch with a connection-error message that guides the user.
|
|
6
|
+
*/
|
|
7
|
+
export async function localDevFetch(path, port, fetchFn, init) {
|
|
8
|
+
const url = `http://localhost:${port}${path}`;
|
|
9
|
+
try {
|
|
10
|
+
return await fetchFn(url, init);
|
|
11
|
+
}
|
|
12
|
+
catch (error) {
|
|
13
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
14
|
+
throw new Error(`Failed to connect to local dev server at ${url}: ${errorMessage}\n\n` +
|
|
15
|
+
"Next steps:\n" +
|
|
16
|
+
" 1. Start local server: fling dev\n" +
|
|
17
|
+
" 2. If using a custom port, pass --port to this command");
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=local-dev-fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-dev-fetch.js","sourceRoot":"","sources":["../../../src/cli/utils/local-dev-fetch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,IAAY,EACZ,OAAqB,EACrB,IAAkB;IAElB,MAAM,GAAG,GAAG,oBAAoB,IAAI,GAAG,IAAI,EAAE,CAAC;IAC9C,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,MAAM,IAAI,KAAK,CACb,4CAA4C,GAAG,KAAK,YAAY,MAAM;YACtE,eAAe;YACf,sCAAsC;YACtC,0DAA0D,CAC3D,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/dist/runtime/email.d.ts
CHANGED
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* In production, the platform's email-inbound worker parses incoming
|
|
5
5
|
* emails and dispatches them to the user's worker at /__email.
|
|
6
6
|
*
|
|
7
|
-
* In local dev mode, email
|
|
8
|
-
*
|
|
9
|
-
*
|
|
7
|
+
* In local dev mode, `fling email trigger` sends a simulated inbound
|
|
8
|
+
* email to the dev server's /__email endpoint, which calls the
|
|
9
|
+
* registered handler via triggerEmailHandler().
|
|
10
10
|
*/
|
|
11
11
|
import type { InboundEmail } from "../types/email.js";
|
|
12
12
|
type EmailHandler = (email: InboundEmail) => Promise<void> | void;
|
|
@@ -33,5 +33,15 @@ export declare function onEmail(handler: EmailHandler): void;
|
|
|
33
33
|
* Get the registered email handler (internal use).
|
|
34
34
|
*/
|
|
35
35
|
export declare function getEmailHandler(): EmailHandler | null;
|
|
36
|
+
/**
|
|
37
|
+
* Trigger the registered email handler with a simulated inbound email.
|
|
38
|
+
* Used by the dev server's /__email endpoint.
|
|
39
|
+
*
|
|
40
|
+
* @throws {Error} If no email handler is registered
|
|
41
|
+
* @throws {Error} If the handler throws
|
|
42
|
+
*/
|
|
43
|
+
export declare function triggerEmailHandler(email: InboundEmail): Promise<{
|
|
44
|
+
success: true;
|
|
45
|
+
}>;
|
|
36
46
|
export {};
|
|
37
47
|
//# sourceMappingURL=email.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../src/runtime/email.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAIlE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAOnD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,GAAG,IAAI,CAErD"}
|
|
1
|
+
{"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../src/runtime/email.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAIlE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAOnD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,GAAG,IAAI,CAErD;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,CAAC,CAOzF"}
|
package/dist/runtime/email.js
CHANGED
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* In production, the platform's email-inbound worker parses incoming
|
|
5
5
|
* emails and dispatches them to the user's worker at /__email.
|
|
6
6
|
*
|
|
7
|
-
* In local dev mode, email
|
|
8
|
-
*
|
|
9
|
-
*
|
|
7
|
+
* In local dev mode, `fling email trigger` sends a simulated inbound
|
|
8
|
+
* email to the dev server's /__email endpoint, which calls the
|
|
9
|
+
* registered handler via triggerEmailHandler().
|
|
10
10
|
*/
|
|
11
11
|
let emailHandler = null;
|
|
12
12
|
/**
|
|
@@ -41,4 +41,19 @@ export function onEmail(handler) {
|
|
|
41
41
|
export function getEmailHandler() {
|
|
42
42
|
return emailHandler;
|
|
43
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* Trigger the registered email handler with a simulated inbound email.
|
|
46
|
+
* Used by the dev server's /__email endpoint.
|
|
47
|
+
*
|
|
48
|
+
* @throws {Error} If no email handler is registered
|
|
49
|
+
* @throws {Error} If the handler throws
|
|
50
|
+
*/
|
|
51
|
+
export async function triggerEmailHandler(email) {
|
|
52
|
+
const handler = getEmailHandler();
|
|
53
|
+
if (!handler) {
|
|
54
|
+
throw new Error("No email handler registered");
|
|
55
|
+
}
|
|
56
|
+
await handler(email);
|
|
57
|
+
return { success: true };
|
|
58
|
+
}
|
|
44
59
|
//# sourceMappingURL=email.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../src/runtime/email.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,IAAI,YAAY,GAAwB,IAAI,CAAC;AAE7C;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,OAAO,CAAC,OAAqB;IAC3C,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,8FAA8F,CAAC,CAAC;QAC7G,OAAO;IACT,CAAC;IACD,YAAY,GAAG,OAAO,CAAC;IACvB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
|
1
|
+
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../src/runtime/email.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,IAAI,YAAY,GAAwB,IAAI,CAAC;AAE7C;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,OAAO,CAAC,OAAqB;IAC3C,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,8FAA8F,CAAC,CAAC;QAC7G,OAAO;IACT,CAAC;IACD,YAAY,GAAG,OAAO,CAAC;IACvB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAAmB;IAC3D,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAClC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IACD,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC"}
|
package/dist/runtime/entry.d.ts
CHANGED
|
@@ -19,6 +19,15 @@ export interface DevServerOptions {
|
|
|
19
19
|
port: number;
|
|
20
20
|
verbose?: boolean;
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Create a JSON response with the given data and status code.
|
|
24
|
+
*/
|
|
25
|
+
export declare function jsonResponse(data: unknown, status?: number): Response;
|
|
26
|
+
/**
|
|
27
|
+
* Handle /__email POST requests in the dev server.
|
|
28
|
+
* Accepts InboundEmail JSON and dispatches to the registered email handler.
|
|
29
|
+
*/
|
|
30
|
+
export declare function handleInternalEmailRequest(request: Request): Promise<Response | null>;
|
|
22
31
|
/**
|
|
23
32
|
* Start the development server.
|
|
24
33
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/runtime/entry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;
|
|
1
|
+
{"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/runtime/entry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAmBH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,SAAM,GAAG,QAAQ,CAKlE;AAED;;;GAGG;AACH,wBAAsB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAyB3F;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0I7E"}
|
package/dist/runtime/entry.js
CHANGED
|
@@ -20,7 +20,46 @@ import { getRequestListener } from "@hono/node-server";
|
|
|
20
20
|
import { app } from "./http.js";
|
|
21
21
|
import { runMigrations } from "./migrate.js";
|
|
22
22
|
import { startCronJobs, getCronJobs, stopCronJobs, triggerCronJob, getCronInvocations, getLatestCronInvocation, } from "./cron.js";
|
|
23
|
+
import { triggerEmailHandler } from "./email.js";
|
|
23
24
|
import { closeLogDatabase } from "./log.js";
|
|
25
|
+
/**
|
|
26
|
+
* Create a JSON response with the given data and status code.
|
|
27
|
+
*/
|
|
28
|
+
export function jsonResponse(data, status = 200) {
|
|
29
|
+
return new Response(JSON.stringify(data), {
|
|
30
|
+
status,
|
|
31
|
+
headers: { "Content-Type": "application/json" },
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Handle /__email POST requests in the dev server.
|
|
36
|
+
* Accepts InboundEmail JSON and dispatches to the registered email handler.
|
|
37
|
+
*/
|
|
38
|
+
export async function handleInternalEmailRequest(request) {
|
|
39
|
+
const url = new URL(request.url);
|
|
40
|
+
if (url.pathname !== "/__email" || request.method !== "POST") {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
let body;
|
|
44
|
+
try {
|
|
45
|
+
body = (await request.json());
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return jsonResponse({ success: false, error: "Invalid JSON body" }, 400);
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
const result = await triggerEmailHandler(body);
|
|
52
|
+
return jsonResponse(result);
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
56
|
+
if (errorMessage === "No email handler registered") {
|
|
57
|
+
return jsonResponse({ success: false, error: errorMessage }, 404);
|
|
58
|
+
}
|
|
59
|
+
console.error("Email handler error:", error);
|
|
60
|
+
return jsonResponse({ success: false, error: errorMessage }, 500);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
24
63
|
/**
|
|
25
64
|
* Start the development server.
|
|
26
65
|
*
|
|
@@ -43,12 +82,6 @@ export async function startDevServer(options) {
|
|
|
43
82
|
console.log(`[worker] Cron jobs: ${String(cronJobs.size)} registered`);
|
|
44
83
|
}
|
|
45
84
|
// Internal cron API handler for dev server
|
|
46
|
-
function jsonResponse(data, status = 200) {
|
|
47
|
-
return new Response(JSON.stringify(data), {
|
|
48
|
-
status,
|
|
49
|
-
headers: { "Content-Type": "application/json" },
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
85
|
async function handleInternalCronRequest(request) {
|
|
53
86
|
const url = new URL(request.url);
|
|
54
87
|
if (url.pathname === "/__cron" && request.method === "GET") {
|
|
@@ -118,9 +151,13 @@ export async function startDevServer(options) {
|
|
|
118
151
|
let portRetries = 0;
|
|
119
152
|
function startServer() {
|
|
120
153
|
const listener = getRequestListener(async (request) => {
|
|
121
|
-
const
|
|
122
|
-
if (
|
|
123
|
-
return
|
|
154
|
+
const cronResponse = await handleInternalCronRequest(request);
|
|
155
|
+
if (cronResponse) {
|
|
156
|
+
return cronResponse;
|
|
157
|
+
}
|
|
158
|
+
const emailResponse = await handleInternalEmailRequest(request);
|
|
159
|
+
if (emailResponse) {
|
|
160
|
+
return emailResponse;
|
|
124
161
|
}
|
|
125
162
|
return app.fetch(request);
|
|
126
163
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry.js","sourceRoot":"","sources":["../../src/runtime/entry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EACL,aAAa,EACb,WAAW,EACX,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAO5C
|
|
1
|
+
{"version":3,"file":"entry.js","sourceRoot":"","sources":["../../src/runtime/entry.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
56ff0f95fb32f366e828b1f9b58a4c30
|
|
@@ -138,7 +138,7 @@ Always use `npx` to run the project's installed Fling (not global).
|
|
|
138
138
|
**Important:** The CLI must be called without a TTY (e.g., with stdout redirected), or with the `--cli` flag. When both stdin and stdout are a TTY and `--cli` is not passed, the CLI launches an interactive mode instead of executing commands. If you are running from an environment where a TTY may be present, always pass `--cli`:
|
|
139
139
|
|
|
140
140
|
```bash
|
|
141
|
-
npx fling --
|
|
141
|
+
npx fling --cli push # Safe from any environment
|
|
142
142
|
```
|
|
143
143
|
|
|
144
144
|
```bash
|
|
@@ -157,6 +157,7 @@ npx fling project takedown # Delete project and all data
|
|
|
157
157
|
npx fling cron list # List registered cron jobs
|
|
158
158
|
npx fling cron history <name> # View invocation history
|
|
159
159
|
npx fling cron trigger <name> --port BE-PORT # Manually trigger a cron job
|
|
160
|
+
npx fling email trigger # Simulate an inbound email to local dev server
|
|
160
161
|
npx fling storage list # List storage objects
|
|
161
162
|
npx fling storage put <key> <file> # Upload file to storage
|
|
162
163
|
npx fling storage get <key> [output] # Download object (stdout if no output)
|
|
@@ -172,13 +173,13 @@ Each cron invocation logs "Running cron job <name>" at the start. To see all log
|
|
|
172
173
|
|
|
173
174
|
1. **Find the invocation** by searching for the cron job name:
|
|
174
175
|
```bash
|
|
175
|
-
npx fling --
|
|
176
|
+
npx fling --prod logs --search "Running cron job daily-cleanup"
|
|
176
177
|
```
|
|
177
178
|
This shows log entries with Ray IDs like `[ray:abc12345]`.
|
|
178
179
|
|
|
179
180
|
2. **Filter by that Ray ID** to see all logs from that invocation:
|
|
180
181
|
```bash
|
|
181
|
-
npx fling --
|
|
182
|
+
npx fling --prod logs --ray abc12345
|
|
182
183
|
```
|
|
183
184
|
|
|
184
185
|
### Local vs Production (`--prod`)
|
|
@@ -193,11 +194,11 @@ npx fling db sql "SELECT 1" # Local SQLite
|
|
|
193
194
|
npx fling storage list # Local storage
|
|
194
195
|
|
|
195
196
|
# Production (requires login)
|
|
196
|
-
npx fling --
|
|
197
|
-
npx fling --
|
|
198
|
-
npx fling --
|
|
199
|
-
npx fling --
|
|
200
|
-
npx fling --
|
|
197
|
+
npx fling --prod secret list # Deployed secrets
|
|
198
|
+
npx fling --prod logs # Deployed logs
|
|
199
|
+
npx fling --prod db sql "SELECT 1" # Deployed D1
|
|
200
|
+
npx fling --prod storage list # R2 storage
|
|
201
|
+
npx fling --prod cron list # Deployed cron jobs
|
|
201
202
|
```
|
|
202
203
|
|
|
203
204
|
**Note:** Production logs have a delay of ~10 seconds or more before they appear.
|
|
@@ -229,7 +230,7 @@ After each deploy, tell the user what the deployed URL is. With Fling, to deplo
|
|
|
229
230
|
|
|
230
231
|
### After First Deployment
|
|
231
232
|
|
|
232
|
-
After your first `fling
|
|
233
|
+
After your first `fling it`, consider asking the user if they want a custom URL.
|
|
233
234
|
Their project was auto-assigned a slug like `proj-abc123`.
|
|
234
235
|
|
|
235
236
|
To change it: `npx fling project slug:set my-custom-slug`
|
|
@@ -245,36 +246,36 @@ If the user isn't logged in (no token stored), help them authenticate:
|
|
|
245
246
|
|
|
246
247
|
**New user:** Sign up with email and name:
|
|
247
248
|
```bash
|
|
248
|
-
npx fling --
|
|
249
|
+
npx fling --cli signup --email user@example.com --name "User Name"
|
|
249
250
|
```
|
|
250
251
|
|
|
251
252
|
**Existing user:** Log in via magic link email:
|
|
252
253
|
```bash
|
|
253
|
-
npx fling --
|
|
254
|
+
npx fling --cli login --email user@example.com
|
|
254
255
|
```
|
|
255
256
|
After running login, tell the user to check their email and click the login link.
|
|
256
257
|
The CLI will wait until the link is clicked, then complete login automatically.
|
|
257
258
|
|
|
258
|
-
|
|
259
|
+
DO NOT ASK THE USER TO RUN THESE COMMAND THEMSELVES. You have bash access, run them directly, unless they ask explicitly.
|
|
259
260
|
|
|
260
261
|
### Email Verification
|
|
261
262
|
|
|
262
263
|
After signing up, you must verify your email to deploy.
|
|
263
|
-
If `fling
|
|
264
|
+
If `fling it` fails with "Email verification required":
|
|
264
265
|
|
|
265
266
|
1. Run `fling verify` to check verification status
|
|
266
267
|
2. Run `fling verify --resend` to resend the verification email
|
|
267
268
|
3. **Tell the user they need to check their email and click the verification link.** You cannot do this step for them — they must open their inbox, find the email from Fling, and click the link. Wait for them to confirm they have done this before proceeding.
|
|
268
|
-
4. Retry `fling
|
|
269
|
+
4. Retry `fling it` after the user confirms they clicked the link
|
|
269
270
|
|
|
270
|
-
### What `fling
|
|
271
|
+
### What `fling it` does:
|
|
271
272
|
|
|
272
273
|
1. **Builds frontend** - Runs `vite build`, outputs to `dist/client/`
|
|
273
274
|
2. **Uploads static assets** - HTML, JS, CSS, images from `dist/client/`
|
|
274
275
|
3. **Bundles backend** - Compiles `src/worker/index.ts` with esbuild
|
|
275
276
|
4. **Deploys to Cloudflare** - Both frontend and backend go live
|
|
276
277
|
|
|
277
|
-
**Secrets:** Always stored locally in `.fling/secrets`. Use `fling
|
|
278
|
+
**Secrets:** Always stored locally in `.fling/secrets`. Use `fling it` to deploy secrets to production along with your code.
|
|
278
279
|
|
|
279
280
|
### Static Asset Limits
|
|
280
281
|
|
|
@@ -327,7 +328,7 @@ This gives collaborators:
|
|
|
327
328
|
|
|
328
329
|
7. **Use /api prefix for backend routes** - Required for Vite proxy during development.
|
|
329
330
|
|
|
330
|
-
8. **Run commands yourself** - You have bash access. Don't ask the user to run `fling
|
|
331
|
+
8. **Run commands yourself** - You have bash access. Don't ask the user to run `fling it`, `fling dev`, `npm start`, etc. Execute them directly.
|
|
331
332
|
|
|
332
333
|
9. **Reserved paths (`/__*`)** - Paths starting with `/__` are reserved for internal platform use (e.g., `/__cron` for cron jobs). Do not create routes with these prefixes.
|
|
333
334
|
|
|
@@ -28,6 +28,22 @@ onEmail(async (email) => {
|
|
|
28
28
|
});
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
+
## Local Testing
|
|
32
|
+
|
|
33
|
+
Use `fling email trigger` to simulate an inbound email to your local dev server:
|
|
34
|
+
|
|
35
|
+
npx fling email trigger --from alice@test.com --subject "Hello" --text "Hi there"
|
|
36
|
+
|
|
37
|
+
All flags are optional with sensible defaults. Available flags:
|
|
38
|
+
- `--from` — sender address (default: test@example.com)
|
|
39
|
+
- `--to` — recipient address (default: project@flingit.run)
|
|
40
|
+
- `--subject` — email subject (default: Test email)
|
|
41
|
+
- `--text` — plain text body
|
|
42
|
+
- `--html` — HTML body (suppresses default text when used alone)
|
|
43
|
+
- `--port` — dev server port (default: 3210)
|
|
44
|
+
|
|
45
|
+
Requires `fling dev` to be running.
|
|
46
|
+
|
|
31
47
|
## `InboundEmail` Fields
|
|
32
48
|
|
|
33
49
|
`onEmail` receives this payload shape:
|