flingit 0.0.55 → 0.0.59
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 +31 -59
- package/dist/cli/commands/dev.d.ts.map +1 -1
- package/dist/cli/commands/dev.js +1 -2
- package/dist/cli/commands/dev.js.map +1 -1
- package/dist/cli/commands/email.d.ts +37 -1
- package/dist/cli/commands/email.d.ts.map +1 -1
- package/dist/cli/commands/email.js +135 -5
- package/dist/cli/commands/email.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +20 -7
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/index.d.ts +30 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +127 -68
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/utils/cli-io-impl.d.ts.map +1 -1
- package/dist/cli/utils/cli-io-impl.js +8 -20
- package/dist/cli/utils/cli-io-impl.js.map +1 -1
- package/dist/cli/utils/cli-io.d.ts +11 -2
- package/dist/cli/utils/cli-io.d.ts.map +1 -1
- package/dist/repo-shared/constants.d.ts +15 -0
- package/dist/repo-shared/constants.d.ts.map +1 -0
- package/dist/repo-shared/constants.js +44 -0
- package/dist/repo-shared/constants.js.map +1 -0
- package/dist/repo-shared/cost.d.ts +36 -0
- package/dist/repo-shared/cost.d.ts.map +1 -0
- package/dist/repo-shared/cost.js +35 -0
- package/dist/repo-shared/cost.js.map +1 -0
- package/dist/repo-shared/package-metadata.d.ts +9 -0
- package/dist/repo-shared/package-metadata.d.ts.map +1 -0
- package/dist/repo-shared/package-metadata.js +38 -0
- package/dist/repo-shared/package-metadata.js.map +1 -0
- package/dist/runtime/entry.d.ts +52 -2
- package/dist/runtime/entry.d.ts.map +1 -1
- package/dist/runtime/entry.js +61 -40
- package/dist/runtime/entry.js.map +1 -1
- package/dist/shared/constants.d.ts +3 -52
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +10 -65
- package/dist/shared/constants.js.map +1 -1
- package/dist/worker-runtime/email-send.d.ts +28 -0
- package/dist/worker-runtime/email-send.d.ts.map +1 -1
- package/dist/worker-runtime/email-send.js +69 -47
- package/dist/worker-runtime/email-send.js.map +1 -1
- package/dist/worker-runtime/entry.d.ts +2 -1
- package/dist/worker-runtime/entry.d.ts.map +1 -1
- package/dist/worker-runtime/entry.js +6 -2
- package/dist/worker-runtime/entry.js.map +1 -1
- package/package.json +14 -5
- package/templates/default/dot-claude/skills/fling/.hash +1 -1
- package/templates/default/dot-claude/skills/fling/SKILL.md +3 -1
- package/templates/default/package.json +0 -1
|
@@ -8,6 +8,34 @@
|
|
|
8
8
|
*/
|
|
9
9
|
export type { SendEmailOptions, SendEmailResult } from "../shared/email-send-types.js";
|
|
10
10
|
import type { SendEmailOptions, SendEmailResult } from "../shared/email-send-types.js";
|
|
11
|
+
export interface EmailSendDeps {
|
|
12
|
+
pluginFetch: (path: string, init?: RequestInit) => Promise<Response>;
|
|
13
|
+
getProjectHeaders: () => Promise<Record<string, string>>;
|
|
14
|
+
throwResponseError: (response: Response, msg: string) => Promise<never>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Create an email runtime with injected dependencies.
|
|
18
|
+
*/
|
|
19
|
+
export declare function createEmailRuntime(deps: EmailSendDeps): {
|
|
20
|
+
/**
|
|
21
|
+
* Send a transactional email.
|
|
22
|
+
*
|
|
23
|
+
* The email is sent from `<project-slug>@flingit.run`. Use the `replyTo`
|
|
24
|
+
* field to set a custom reply address.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* import { email } from "flingit/plugin/email-send";
|
|
29
|
+
*
|
|
30
|
+
* await email.send({
|
|
31
|
+
* to: "user@example.com",
|
|
32
|
+
* subject: "Welcome!",
|
|
33
|
+
* text: "Thanks for signing up.",
|
|
34
|
+
* });
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
send(options: SendEmailOptions): Promise<SendEmailResult>;
|
|
38
|
+
};
|
|
11
39
|
export declare const email: {
|
|
12
40
|
/**
|
|
13
41
|
* Send a transactional email.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-send.d.ts","sourceRoot":"","sources":["../../src/worker-runtime/email-send.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEvF,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"email-send.d.ts","sourceRoot":"","sources":["../../src/worker-runtime/email-send.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEvF,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAMvF,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrE,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACzD,kBAAkB,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;CACzE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa;IAElD;;;;;;;;;;;;;;;;OAgBG;kBACiB,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;EAyBlE;AAyBD,eAAO,MAAM,KAAK;IAnEd;;;;;;;;;;;;;;;;OAgBG;kBACiB,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;CAkDP,CAAC"}
|
|
@@ -8,51 +8,73 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { getPluginMeta } from "../shared/plugin-metadata.js";
|
|
10
10
|
import { createPluginFetch, getProjectHeaders, throwResponseError } from "./plugin-common.js";
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
})
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
result
|
|
55
|
-
|
|
56
|
-
}
|
|
57
|
-
}
|
|
11
|
+
/**
|
|
12
|
+
* Create an email runtime with injected dependencies.
|
|
13
|
+
*/
|
|
14
|
+
export function createEmailRuntime(deps) {
|
|
15
|
+
return {
|
|
16
|
+
/**
|
|
17
|
+
* Send a transactional email.
|
|
18
|
+
*
|
|
19
|
+
* The email is sent from `<project-slug>@flingit.run`. Use the `replyTo`
|
|
20
|
+
* field to set a custom reply address.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* import { email } from "flingit/plugin/email-send";
|
|
25
|
+
*
|
|
26
|
+
* await email.send({
|
|
27
|
+
* to: "user@example.com",
|
|
28
|
+
* subject: "Welcome!",
|
|
29
|
+
* text: "Thanks for signing up.",
|
|
30
|
+
* });
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
async send(options) {
|
|
34
|
+
const response = await deps.pluginFetch("/proxy/send", {
|
|
35
|
+
method: "POST",
|
|
36
|
+
headers: await deps.getProjectHeaders(),
|
|
37
|
+
body: JSON.stringify({
|
|
38
|
+
to: options.to,
|
|
39
|
+
subject: options.subject,
|
|
40
|
+
text: options.text,
|
|
41
|
+
html: options.html,
|
|
42
|
+
cc: options.cc,
|
|
43
|
+
bcc: options.bcc,
|
|
44
|
+
replyTo: options.replyTo,
|
|
45
|
+
}),
|
|
46
|
+
});
|
|
47
|
+
if (!response.ok) {
|
|
48
|
+
await deps.throwResponseError(response, "Failed to send email");
|
|
49
|
+
}
|
|
50
|
+
const data = (await response.json());
|
|
51
|
+
const result = { success: data.success };
|
|
52
|
+
if (data.messageId)
|
|
53
|
+
result.messageId = data.messageId;
|
|
54
|
+
return result;
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
// ═══════════════════════════════════════════════════════
|
|
59
|
+
// DEFAULT INSTANCE (backward compatible)
|
|
60
|
+
// ═══════════════════════════════════════════════════════
|
|
61
|
+
function createDefaultDeps() {
|
|
62
|
+
// Lazily resolve plugin metadata so module-scope side effects
|
|
63
|
+
// only trigger when the default instance is actually used.
|
|
64
|
+
let resolvedPluginFetch = null;
|
|
65
|
+
return {
|
|
66
|
+
pluginFetch(path, init) {
|
|
67
|
+
if (!resolvedPluginFetch) {
|
|
68
|
+
const meta = getPluginMeta("email-send");
|
|
69
|
+
if (!meta)
|
|
70
|
+
throw new Error("email-send plugin not found in metadata registry");
|
|
71
|
+
resolvedPluginFetch = createPluginFetch(meta.serviceBinding);
|
|
72
|
+
}
|
|
73
|
+
return resolvedPluginFetch(path, init);
|
|
74
|
+
},
|
|
75
|
+
getProjectHeaders,
|
|
76
|
+
throwResponseError,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
export const email = createEmailRuntime(createDefaultDeps());
|
|
58
80
|
//# sourceMappingURL=email-send.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-send.js","sourceRoot":"","sources":["../../src/worker-runtime/email-send.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"email-send.js","sourceRoot":"","sources":["../../src/worker-runtime/email-send.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAgB9F;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAmB;IACpD,OAAO;QACL;;;;;;;;;;;;;;;;WAgBG;QACH,KAAK,CAAC,IAAI,CAAC,OAAyB;YAClC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;gBACrD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;gBACvC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,EAAE,EAAE,OAAO,CAAC,EAAE;oBACd,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,EAAE,EAAE,OAAO,CAAC,EAAE;oBACd,GAAG,EAAE,OAAO,CAAC,GAAG;oBAChB,OAAO,EAAE,OAAO,CAAC,OAAO;iBACzB,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC;YAClE,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA6C,CAAC;YACjF,MAAM,MAAM,GAAoB,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1D,IAAI,IAAI,CAAC,SAAS;gBAAE,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACtD,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,0DAA0D;AAC1D,yCAAyC;AACzC,0DAA0D;AAE1D,SAAS,iBAAiB;IACxB,8DAA8D;IAC9D,2DAA2D;IAC3D,IAAI,mBAAmB,GAAgD,IAAI,CAAC;IAE5E,OAAO;QACL,WAAW,CAAC,IAAY,EAAE,IAAkB;YAC1C,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;gBACzC,IAAI,CAAC,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;gBAC/E,mBAAmB,GAAG,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC/D,CAAC;YACD,OAAO,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACzC,CAAC;QACD,iBAAiB;QACjB,kBAAkB;KACnB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,KAAK,GAAG,kBAAkB,CAAC,iBAAiB,EAAE,CAAC,CAAC"}
|
|
@@ -15,9 +15,10 @@ import type { WorkerEnv } from "./types.js";
|
|
|
15
15
|
* Create a Cloudflare Worker entry point.
|
|
16
16
|
*
|
|
17
17
|
* @param loadUserApp - Function that imports the user's app module (triggers route registration)
|
|
18
|
+
* @param pluginHandlersOverride - Optional overrides for plugin request handlers (merged with defaults)
|
|
18
19
|
* @returns Worker module with fetch handler
|
|
19
20
|
*/
|
|
20
|
-
export declare function createWorkerEntry(loadUserApp: () => Promise<unknown
|
|
21
|
+
export declare function createWorkerEntry(loadUserApp: () => Promise<unknown>, pluginHandlersOverride?: Record<string, (request: Request) => Promise<Response>>): {
|
|
21
22
|
fetch(request: Request, env: WorkerEnv, ctx: ExecutionContext): Promise<Response>;
|
|
22
23
|
};
|
|
23
24
|
//# sourceMappingURL=entry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/worker-runtime/entry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAa5C
|
|
1
|
+
{"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/worker-runtime/entry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAa5C;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EACnC,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,GAC/E;IACD,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACnF,CAyKA"}
|
|
@@ -21,9 +21,13 @@ const pluginPathPattern = /^\/__plugin\/(\w+)$/;
|
|
|
21
21
|
* Create a Cloudflare Worker entry point.
|
|
22
22
|
*
|
|
23
23
|
* @param loadUserApp - Function that imports the user's app module (triggers route registration)
|
|
24
|
+
* @param pluginHandlersOverride - Optional overrides for plugin request handlers (merged with defaults)
|
|
24
25
|
* @returns Worker module with fetch handler
|
|
25
26
|
*/
|
|
26
|
-
export function createWorkerEntry(loadUserApp) {
|
|
27
|
+
export function createWorkerEntry(loadUserApp, pluginHandlersOverride) {
|
|
28
|
+
const effectivePluginHandlers = pluginHandlersOverride
|
|
29
|
+
? { ...pluginHandlers, ...pluginHandlersOverride }
|
|
30
|
+
: pluginHandlers;
|
|
27
31
|
let initialized = false;
|
|
28
32
|
let initError = null;
|
|
29
33
|
async function ensureInit(env) {
|
|
@@ -149,7 +153,7 @@ export function createWorkerEntry(loadUserApp) {
|
|
|
149
153
|
// Handle plugin events (forwarded from plugin workers via internal paths)
|
|
150
154
|
const match = url.pathname.match(pluginPathPattern);
|
|
151
155
|
if (match?.[1] && request.method === "POST") {
|
|
152
|
-
const handler =
|
|
156
|
+
const handler = effectivePluginHandlers[match[1]];
|
|
153
157
|
if (handler) {
|
|
154
158
|
await ensureInit(env);
|
|
155
159
|
return handler(request);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry.js","sourceRoot":"","sources":["../../src/worker-runtime/entry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAExG,OAAO,EAAE,qBAAqB,IAAI,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,qBAAqB,IAAI,cAAc,EAAE,MAAM,YAAY,CAAC;AAErE,MAAM,cAAc,GAA4D;IAC9E,OAAO,EAAE,gBAAgB;IACzB,KAAK,EAAE,cAAc;CACtB,CAAC;AAEF,MAAM,iBAAiB,GAAG,qBAAqB,CAAC;AAEhD
|
|
1
|
+
{"version":3,"file":"entry.js","sourceRoot":"","sources":["../../src/worker-runtime/entry.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "flingit",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.59",
|
|
4
4
|
"description": "Small Software Platform - Build and deploy personal tools through conversation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -41,6 +41,13 @@
|
|
|
41
41
|
"import": "./dist/worker-runtime/index.js"
|
|
42
42
|
}
|
|
43
43
|
},
|
|
44
|
+
"imports": {
|
|
45
|
+
"#repo-shared/*": {
|
|
46
|
+
"source": "./shared/*.ts",
|
|
47
|
+
"types": "./dist/repo-shared/*.d.ts",
|
|
48
|
+
"default": "./dist/repo-shared/*.js"
|
|
49
|
+
}
|
|
50
|
+
},
|
|
44
51
|
"files": [
|
|
45
52
|
"dist",
|
|
46
53
|
"!dist/cli-admin",
|
|
@@ -52,15 +59,16 @@
|
|
|
52
59
|
"url": "https://github.com/glideapps/fling.git"
|
|
53
60
|
},
|
|
54
61
|
"scripts": {
|
|
55
|
-
"build": "npm run build:env && tsc && npm run build:hash",
|
|
62
|
+
"build": "npm run build:env && npm run build:shared && tsc && npm run build:hash",
|
|
56
63
|
"build:env": "tsx scripts/generate-build-env.ts",
|
|
64
|
+
"build:shared": "tsc -p tsconfig.shared.json",
|
|
57
65
|
"build:hash": "tsx scripts/compute-skills-hash.ts",
|
|
58
66
|
"dev": "npm run build:env && tsx watch src/cli/index.ts",
|
|
59
67
|
"start": "npm run cli --",
|
|
60
68
|
"cli": "npm run build && node dist/cli/index.js",
|
|
61
69
|
"cli-admin": "npm run build && node dist/cli-admin/index.js",
|
|
62
70
|
"cli-infra": "npm run build && node dist/cli-infra/index.js",
|
|
63
|
-
"typecheck": "tsc --noEmit",
|
|
71
|
+
"typecheck": "tsc -p tsconfig.shared.json --emitDeclarationOnly && tsc --noEmit",
|
|
64
72
|
"lint": "eslint src/ platform/",
|
|
65
73
|
"lint:fix": "eslint src/ platform/ --fix",
|
|
66
74
|
"check": "npm run typecheck && npm run lint",
|
|
@@ -68,12 +76,13 @@
|
|
|
68
76
|
"test": "vitest",
|
|
69
77
|
"test:run": "vitest run",
|
|
70
78
|
"test:coverage": "vitest run --coverage",
|
|
79
|
+
"test:pack": "bash scripts/test-pack.sh",
|
|
71
80
|
"prepublishOnly": "npm run lint && npm run typecheck && npm run build:hash && npm run build && npm run test:run",
|
|
72
81
|
"prepare": "husky"
|
|
73
82
|
},
|
|
74
83
|
"dependencies": {
|
|
75
84
|
"@clack/prompts": "^0.11.0",
|
|
76
|
-
"@hono/node-server": "^1.19.
|
|
85
|
+
"@hono/node-server": "^1.19.11",
|
|
77
86
|
"@hono/zod-validator": "^0.7.6",
|
|
78
87
|
"aws4fetch": "^1.0.20",
|
|
79
88
|
"better-sqlite3": "^12.6.2",
|
|
@@ -82,7 +91,7 @@
|
|
|
82
91
|
"croner": "^9.1.0",
|
|
83
92
|
"dotenv": "^17.2.3",
|
|
84
93
|
"esbuild": "^0.27.2",
|
|
85
|
-
"hono": "^4.12.
|
|
94
|
+
"hono": "^4.12.7",
|
|
86
95
|
"postal-mime": "^2.7.3",
|
|
87
96
|
"tsx": "^4.19.0",
|
|
88
97
|
"zod": "^4"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
731f0eea8885c3d021e990642ef047a3
|
|
@@ -15,6 +15,8 @@ Fling handles all of this automatically. When the user asks you to build somethi
|
|
|
15
15
|
3. Run `npm start` to test it locally (you have bash access - run commands yourself!)
|
|
16
16
|
4. When it works, run `npx fling it` to deploy
|
|
17
17
|
|
|
18
|
+
## IMPORTANT: Do NOT ask the user to run fling commands - that's your job!
|
|
19
|
+
|
|
18
20
|
## When to Send Feedback
|
|
19
21
|
|
|
20
22
|
Fling can send feedback to its authors. Read `references/FEEDBACK.md` for details.
|
|
@@ -247,7 +249,7 @@ Slugs must be:
|
|
|
247
249
|
|
|
248
250
|
### Authentication
|
|
249
251
|
|
|
250
|
-
If the user isn't logged in (no token stored), help them authenticate
|
|
252
|
+
If the user isn't logged in (no token stored), help them authenticate. Tell the user explicitly that you can log them in or sign them up, and that they don't need to go anywhere or do anything to do that, other than telling you.
|
|
251
253
|
|
|
252
254
|
**New user:** Sign up with email and name:
|
|
253
255
|
```bash
|