flingit 0.0.9 → 0.0.11

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.
Files changed (153) hide show
  1. package/dist/cli/commands/admin.d.ts.map +1 -1
  2. package/dist/cli/commands/admin.js +29 -16
  3. package/dist/cli/commands/admin.js.map +1 -1
  4. package/dist/cli/commands/cron.d.ts.map +1 -1
  5. package/dist/cli/commands/cron.js +7 -3
  6. package/dist/cli/commands/cron.js.map +1 -1
  7. package/dist/cli/commands/db.d.ts.map +1 -1
  8. package/dist/cli/commands/db.js +5 -2
  9. package/dist/cli/commands/db.js.map +1 -1
  10. package/dist/cli/commands/feedback.d.ts.map +1 -1
  11. package/dist/cli/commands/feedback.js +6 -1
  12. package/dist/cli/commands/feedback.js.map +1 -1
  13. package/dist/cli/commands/init.d.ts.map +1 -1
  14. package/dist/cli/commands/init.js +5 -20
  15. package/dist/cli/commands/init.js.map +1 -1
  16. package/dist/cli/commands/launch.d.ts.map +1 -1
  17. package/dist/cli/commands/launch.js +5 -59
  18. package/dist/cli/commands/launch.js.map +1 -1
  19. package/dist/cli/commands/login.d.ts.map +1 -1
  20. package/dist/cli/commands/login.js +7 -2
  21. package/dist/cli/commands/login.js.map +1 -1
  22. package/dist/cli/commands/logs.d.ts.map +1 -1
  23. package/dist/cli/commands/logs.js +3 -1
  24. package/dist/cli/commands/logs.js.map +1 -1
  25. package/dist/cli/commands/onboard.js +1 -1
  26. package/dist/cli/commands/plugin.d.ts +8 -0
  27. package/dist/cli/commands/plugin.d.ts.map +1 -0
  28. package/dist/cli/commands/plugin.js +407 -0
  29. package/dist/cli/commands/plugin.js.map +1 -0
  30. package/dist/cli/commands/project.d.ts.map +1 -1
  31. package/dist/cli/commands/project.js +3 -1
  32. package/dist/cli/commands/project.js.map +1 -1
  33. package/dist/cli/commands/push.d.ts.map +1 -1
  34. package/dist/cli/commands/push.js +128 -12
  35. package/dist/cli/commands/push.js.map +1 -1
  36. package/dist/cli/commands/register.d.ts +25 -0
  37. package/dist/cli/commands/register.d.ts.map +1 -1
  38. package/dist/cli/commands/register.js +30 -13
  39. package/dist/cli/commands/register.js.map +1 -1
  40. package/dist/cli/commands/secret.d.ts +9 -0
  41. package/dist/cli/commands/secret.d.ts.map +1 -1
  42. package/dist/cli/commands/secret.js +40 -50
  43. package/dist/cli/commands/secret.js.map +1 -1
  44. package/dist/cli/commands/storage.d.ts +10 -0
  45. package/dist/cli/commands/storage.d.ts.map +1 -0
  46. package/dist/cli/commands/storage.js +459 -0
  47. package/dist/cli/commands/storage.js.map +1 -0
  48. package/dist/cli/commands/tun.d.ts.map +1 -1
  49. package/dist/cli/commands/tun.js +3 -2
  50. package/dist/cli/commands/tun.js.map +1 -1
  51. package/dist/cli/deploy/bundler.d.ts +15 -0
  52. package/dist/cli/deploy/bundler.d.ts.map +1 -1
  53. package/dist/cli/deploy/bundler.js +86 -2
  54. package/dist/cli/deploy/bundler.js.map +1 -1
  55. package/dist/cli/index.js +4 -0
  56. package/dist/cli/index.js.map +1 -1
  57. package/dist/cli/utils/config.d.ts +12 -0
  58. package/dist/cli/utils/config.d.ts.map +1 -1
  59. package/dist/cli/utils/config.js +23 -3
  60. package/dist/cli/utils/config.js.map +1 -1
  61. package/dist/cli/utils/environment.d.ts +12 -0
  62. package/dist/cli/utils/environment.d.ts.map +1 -1
  63. package/dist/cli/utils/environment.js +40 -6
  64. package/dist/cli/utils/environment.js.map +1 -1
  65. package/dist/cli/utils/launch-io-impl.d.ts +13 -0
  66. package/dist/cli/utils/launch-io-impl.d.ts.map +1 -0
  67. package/dist/cli/utils/launch-io-impl.js +51 -0
  68. package/dist/cli/utils/launch-io-impl.js.map +1 -0
  69. package/dist/cli/utils/launch-io.d.ts +42 -0
  70. package/dist/cli/utils/launch-io.d.ts.map +1 -0
  71. package/dist/cli/utils/launch-io.js +8 -0
  72. package/dist/cli/utils/launch-io.js.map +1 -0
  73. package/dist/cli/utils/project-name.d.ts +17 -0
  74. package/dist/cli/utils/project-name.d.ts.map +1 -0
  75. package/dist/cli/utils/project-name.js +33 -0
  76. package/dist/cli/utils/project-name.js.map +1 -0
  77. package/dist/cli/utils/prompt-new-project.d.ts +12 -0
  78. package/dist/cli/utils/prompt-new-project.d.ts.map +1 -0
  79. package/dist/cli/utils/prompt-new-project.js +66 -0
  80. package/dist/cli/utils/prompt-new-project.js.map +1 -0
  81. package/dist/cli/utils/version-check.d.ts +30 -0
  82. package/dist/cli/utils/version-check.d.ts.map +1 -0
  83. package/dist/cli/utils/version-check.js +43 -0
  84. package/dist/cli/utils/version-check.js.map +1 -0
  85. package/dist/client/assets/index-BqVrS7t9.js +40 -0
  86. package/dist/client/assets/index-DSLUsCtO.css +1 -0
  87. package/dist/client/index.html +14 -0
  88. package/dist/client/vite.svg +1 -0
  89. package/dist/index.d.ts +3 -1
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/index.js +2 -1
  92. package/dist/index.js.map +1 -1
  93. package/dist/runtime/db.d.ts +5 -0
  94. package/dist/runtime/db.d.ts.map +1 -1
  95. package/dist/runtime/db.js +6 -1
  96. package/dist/runtime/db.js.map +1 -1
  97. package/dist/runtime/discord.d.ts +171 -0
  98. package/dist/runtime/discord.d.ts.map +1 -0
  99. package/dist/runtime/discord.js +192 -0
  100. package/dist/runtime/discord.js.map +1 -0
  101. package/dist/runtime/secrets.d.ts +28 -0
  102. package/dist/runtime/secrets.d.ts.map +1 -1
  103. package/dist/runtime/secrets.js +77 -20
  104. package/dist/runtime/secrets.js.map +1 -1
  105. package/dist/runtime/storage.d.ts +29 -0
  106. package/dist/runtime/storage.d.ts.map +1 -0
  107. package/dist/runtime/storage.js +456 -0
  108. package/dist/runtime/storage.js.map +1 -0
  109. package/dist/shared/constants.d.ts +12 -0
  110. package/dist/shared/constants.d.ts.map +1 -0
  111. package/dist/shared/constants.js +12 -0
  112. package/dist/shared/constants.js.map +1 -0
  113. package/dist/shared/discord-types.d.ts +130 -0
  114. package/dist/shared/discord-types.d.ts.map +1 -0
  115. package/dist/shared/discord-types.js +8 -0
  116. package/dist/shared/discord-types.js.map +1 -0
  117. package/dist/shared/random-code.d.ts +6 -0
  118. package/dist/shared/random-code.d.ts.map +1 -0
  119. package/dist/shared/random-code.js +23 -0
  120. package/dist/shared/random-code.js.map +1 -0
  121. package/dist/types/storage.d.ts +154 -0
  122. package/dist/types/storage.d.ts.map +1 -0
  123. package/dist/types/storage.js +8 -0
  124. package/dist/types/storage.js.map +1 -0
  125. package/dist/worker-runtime/discord.d.ts +61 -0
  126. package/dist/worker-runtime/discord.d.ts.map +1 -0
  127. package/dist/worker-runtime/discord.js +181 -0
  128. package/dist/worker-runtime/discord.js.map +1 -0
  129. package/dist/worker-runtime/index.d.ts +21 -1
  130. package/dist/worker-runtime/index.d.ts.map +1 -1
  131. package/dist/worker-runtime/index.js +102 -0
  132. package/dist/worker-runtime/index.js.map +1 -1
  133. package/package.json +9 -2
  134. package/templates/default/CLAUDE.md +65 -11
  135. package/templates/default/skills/discord/SKILL.md +328 -0
  136. package/templates/default/skills/fling/API.md +208 -0
  137. package/templates/default/skills/fling/SKILL.md +51 -8
  138. package/dist/cli/deploy/worker-entry.d.ts +0 -14
  139. package/dist/cli/deploy/worker-entry.d.ts.map +0 -1
  140. package/dist/cli/deploy/worker-entry.js +0 -60
  141. package/dist/cli/deploy/worker-entry.js.map +0 -1
  142. package/dist/cli/deploy/wrangler-config.d.ts +0 -20
  143. package/dist/cli/deploy/wrangler-config.d.ts.map +0 -1
  144. package/dist/cli/deploy/wrangler-config.js +0 -54
  145. package/dist/cli/deploy/wrangler-config.js.map +0 -1
  146. package/dist/cli/loaders/register-wasm.d.ts +0 -12
  147. package/dist/cli/loaders/register-wasm.d.ts.map +0 -1
  148. package/dist/cli/loaders/register-wasm.js +0 -19
  149. package/dist/cli/loaders/register-wasm.js.map +0 -1
  150. package/dist/cli/loaders/wasm-hooks.d.ts +0 -61
  151. package/dist/cli/loaders/wasm-hooks.d.ts.map +0 -1
  152. package/dist/cli/loaders/wasm-hooks.js +0 -63
  153. package/dist/cli/loaders/wasm-hooks.js.map +0 -1
@@ -0,0 +1,456 @@
1
+ /**
2
+ * Storage primitive using local filesystem
3
+ *
4
+ * The storage API matches Cloudflare R2 for portability.
5
+ * Locally, this uses a flat directory with URL-encoded filenames.
6
+ * In production, it runs against Cloudflare R2.
7
+ *
8
+ * Storage structure:
9
+ * .fling/data/storage/ - Object storage root (flat directory)
10
+ * images%2Flogo.png.data - Key: "images/logo.png" data file
11
+ * images%2Flogo.png.meta - Metadata JSON sidecar
12
+ *
13
+ * Both data and metadata files use explicit suffixes to avoid conflicts
14
+ * (e.g., a key ending in ".meta" won't collide with metadata files).
15
+ */
16
+ import { createHash } from "node:crypto";
17
+ import { existsSync, mkdirSync, readFileSync, writeFileSync, unlinkSync, readdirSync, statSync, renameSync, } from "node:fs";
18
+ import { join, dirname } from "node:path";
19
+ import { Readable } from "node:stream";
20
+ // Storage directory path - configurable via environment or setter
21
+ let _storagePath = null;
22
+ /**
23
+ * Get the storage path. Reads from environment on each call if not overridden.
24
+ */
25
+ function getStoragePath() {
26
+ if (_storagePath !== null) {
27
+ return _storagePath;
28
+ }
29
+ return process.env["FLING_getStoragePath()"] ?? join(process.cwd(), ".fling", "data", "storage");
30
+ }
31
+ /**
32
+ * Set storage path. Used for testing.
33
+ */
34
+ export function setStoragePath(path) {
35
+ _storagePath = path;
36
+ }
37
+ /**
38
+ * Reset storage path to default behavior. Used for testing.
39
+ */
40
+ export function resetStoragePath() {
41
+ _storagePath = null;
42
+ }
43
+ /**
44
+ * MIME type detection from file extension.
45
+ */
46
+ const MIME_TYPES = {
47
+ ".html": "text/html",
48
+ ".htm": "text/html",
49
+ ".css": "text/css",
50
+ ".js": "application/javascript",
51
+ ".mjs": "application/javascript",
52
+ ".json": "application/json",
53
+ ".xml": "application/xml",
54
+ ".txt": "text/plain",
55
+ ".md": "text/markdown",
56
+ ".csv": "text/csv",
57
+ ".png": "image/png",
58
+ ".jpg": "image/jpeg",
59
+ ".jpeg": "image/jpeg",
60
+ ".gif": "image/gif",
61
+ ".svg": "image/svg+xml",
62
+ ".webp": "image/webp",
63
+ ".ico": "image/x-icon",
64
+ ".pdf": "application/pdf",
65
+ ".zip": "application/zip",
66
+ ".gz": "application/gzip",
67
+ ".tar": "application/x-tar",
68
+ ".wasm": "application/wasm",
69
+ ".mp3": "audio/mpeg",
70
+ ".mp4": "video/mp4",
71
+ ".webm": "video/webm",
72
+ ".woff": "font/woff",
73
+ ".woff2": "font/woff2",
74
+ ".ttf": "font/ttf",
75
+ ".otf": "font/otf",
76
+ ".eot": "application/vnd.ms-fontobject",
77
+ };
78
+ /**
79
+ * Detect MIME type from key extension.
80
+ */
81
+ function detectMimeType(key) {
82
+ const lastDot = key.lastIndexOf(".");
83
+ if (lastDot === -1)
84
+ return undefined;
85
+ const ext = key.slice(lastDot).toLowerCase();
86
+ return MIME_TYPES[ext];
87
+ }
88
+ /**
89
+ * Validate storage key.
90
+ */
91
+ function validateKey(key) {
92
+ if (!key || key.length === 0) {
93
+ throw new Error("Storage key is required");
94
+ }
95
+ if (key.length > 1024) {
96
+ throw new Error("Storage key must be at most 1024 characters");
97
+ }
98
+ if (key.startsWith("/")) {
99
+ throw new Error("Storage key must not start with /");
100
+ }
101
+ if (key.includes("..")) {
102
+ throw new Error("Storage key must not contain ..");
103
+ }
104
+ if (key.includes("//")) {
105
+ throw new Error("Storage key must not contain //");
106
+ }
107
+ }
108
+ /**
109
+ * Encode key for filesystem storage.
110
+ * Uses URL encoding to handle path separators safely.
111
+ */
112
+ function encodeKey(key) {
113
+ return encodeURIComponent(key);
114
+ }
115
+ /**
116
+ * Decode filesystem name back to key.
117
+ */
118
+ function decodeKey(encoded) {
119
+ return decodeURIComponent(encoded);
120
+ }
121
+ /**
122
+ * Get filesystem path for a key's data file.
123
+ * Uses .data suffix to avoid conflicts with .meta files.
124
+ */
125
+ function getFilePath(key) {
126
+ return join(getStoragePath(), encodeKey(key) + ".data");
127
+ }
128
+ /**
129
+ * Get metadata sidecar path for a key.
130
+ */
131
+ function getMetaPath(key) {
132
+ return join(getStoragePath(), encodeKey(key) + ".meta");
133
+ }
134
+ /**
135
+ * Ensure storage directory exists.
136
+ */
137
+ function ensureStorageDir() {
138
+ if (!existsSync(getStoragePath())) {
139
+ mkdirSync(getStoragePath(), { recursive: true });
140
+ }
141
+ }
142
+ /**
143
+ * Calculate MD5 hash for ETag (matches R2 behavior).
144
+ */
145
+ function calculateEtag(content) {
146
+ const hash = createHash("md5").update(content).digest("hex");
147
+ return `"${hash}"`;
148
+ }
149
+ /**
150
+ * Read value from various input types into a Buffer.
151
+ */
152
+ async function readValue(value) {
153
+ if (typeof value === "string") {
154
+ return Buffer.from(value, "utf-8");
155
+ }
156
+ if (value instanceof ArrayBuffer) {
157
+ return Buffer.from(value);
158
+ }
159
+ if (ArrayBuffer.isView(value)) {
160
+ return Buffer.from(value.buffer, value.byteOffset, value.byteLength);
161
+ }
162
+ // ReadableStream - collect all chunks
163
+ const reader = value.getReader();
164
+ const chunks = [];
165
+ for (;;) {
166
+ const readResult = await reader.read();
167
+ if (readResult.done)
168
+ break;
169
+ chunks.push(readResult.value);
170
+ }
171
+ return Buffer.concat(chunks);
172
+ }
173
+ /**
174
+ * Create a StorageObjectBody from stored file.
175
+ */
176
+ function createObjectBody(key, content, meta, etag) {
177
+ let bodyUsed = false;
178
+ let bodyStream = null;
179
+ // Build the base object without undefined values
180
+ const baseObj = {
181
+ key,
182
+ size: content.length,
183
+ etag,
184
+ uploaded: new Date(meta.uploaded),
185
+ };
186
+ if (meta.contentType)
187
+ baseObj.contentType = meta.contentType;
188
+ if (meta.customMetadata)
189
+ baseObj.customMetadata = meta.customMetadata;
190
+ const obj = {
191
+ ...baseObj,
192
+ bodyUsed: false,
193
+ get body() {
194
+ if (bodyUsed) {
195
+ throw new Error("Body has already been used");
196
+ }
197
+ bodyStream ??= Readable.toWeb(Readable.from(content));
198
+ return bodyStream;
199
+ },
200
+ async arrayBuffer() {
201
+ if (bodyUsed) {
202
+ throw new Error("Body has already been used");
203
+ }
204
+ bodyUsed = true;
205
+ obj.bodyUsed = true;
206
+ // Create a new ArrayBuffer copy to avoid SharedArrayBuffer issues
207
+ const copy = new ArrayBuffer(content.length);
208
+ new Uint8Array(copy).set(content);
209
+ return copy;
210
+ },
211
+ async text() {
212
+ if (bodyUsed) {
213
+ throw new Error("Body has already been used");
214
+ }
215
+ bodyUsed = true;
216
+ obj.bodyUsed = true;
217
+ return content.toString("utf-8");
218
+ },
219
+ async json() {
220
+ if (bodyUsed) {
221
+ throw new Error("Body has already been used");
222
+ }
223
+ bodyUsed = true;
224
+ obj.bodyUsed = true;
225
+ return JSON.parse(content.toString("utf-8"));
226
+ },
227
+ };
228
+ return obj;
229
+ }
230
+ /**
231
+ * Local filesystem storage implementation.
232
+ */
233
+ export const storage = {
234
+ async put(key, value, options) {
235
+ validateKey(key);
236
+ ensureStorageDir();
237
+ const content = await readValue(value);
238
+ const etag = calculateEtag(content);
239
+ const now = Date.now();
240
+ // Determine content type
241
+ const contentType = options?.contentType ?? detectMimeType(key);
242
+ // Prepare metadata (only include defined fields)
243
+ const meta = { uploaded: now };
244
+ if (contentType)
245
+ meta.contentType = contentType;
246
+ if (options?.customMetadata)
247
+ meta.customMetadata = options.customMetadata;
248
+ const filePath = getFilePath(key);
249
+ const metaPath = getMetaPath(key);
250
+ // Write atomically using temp files
251
+ const tempDir = dirname(filePath);
252
+ const tempFile = join(tempDir, `.tmp-${Date.now()}-${Math.random().toString(36).slice(2)}`);
253
+ const tempMeta = tempFile + ".meta";
254
+ try {
255
+ writeFileSync(tempFile, content);
256
+ writeFileSync(tempMeta, JSON.stringify(meta));
257
+ // Rename atomically
258
+ renameSync(tempFile, filePath);
259
+ renameSync(tempMeta, metaPath);
260
+ }
261
+ catch (error) {
262
+ // Clean up temp files on error
263
+ try {
264
+ unlinkSync(tempFile);
265
+ }
266
+ catch {
267
+ // Ignore
268
+ }
269
+ try {
270
+ unlinkSync(tempMeta);
271
+ }
272
+ catch {
273
+ // Ignore
274
+ }
275
+ throw error;
276
+ }
277
+ const result = {
278
+ key,
279
+ size: content.length,
280
+ etag,
281
+ uploaded: new Date(now),
282
+ };
283
+ if (contentType)
284
+ result.contentType = contentType;
285
+ if (options?.customMetadata)
286
+ result.customMetadata = options.customMetadata;
287
+ return result;
288
+ },
289
+ async get(key) {
290
+ validateKey(key);
291
+ const filePath = getFilePath(key);
292
+ const metaPath = getMetaPath(key);
293
+ if (!existsSync(filePath)) {
294
+ return null;
295
+ }
296
+ const content = readFileSync(filePath);
297
+ const etag = calculateEtag(content);
298
+ // Read metadata
299
+ let meta = { uploaded: Date.now() };
300
+ if (existsSync(metaPath)) {
301
+ try {
302
+ meta = JSON.parse(readFileSync(metaPath, "utf-8"));
303
+ }
304
+ catch {
305
+ // Use defaults if metadata is corrupted
306
+ }
307
+ }
308
+ else {
309
+ // Fallback: use file mtime
310
+ const stat = statSync(filePath);
311
+ meta.uploaded = stat.mtimeMs;
312
+ }
313
+ return createObjectBody(key, content, meta, etag);
314
+ },
315
+ async head(key) {
316
+ validateKey(key);
317
+ const filePath = getFilePath(key);
318
+ const metaPath = getMetaPath(key);
319
+ if (!existsSync(filePath)) {
320
+ return null;
321
+ }
322
+ const content = readFileSync(filePath);
323
+ const etag = calculateEtag(content);
324
+ // Read metadata
325
+ let meta = { uploaded: Date.now() };
326
+ if (existsSync(metaPath)) {
327
+ try {
328
+ meta = JSON.parse(readFileSync(metaPath, "utf-8"));
329
+ }
330
+ catch {
331
+ // Use defaults if metadata is corrupted
332
+ }
333
+ }
334
+ else {
335
+ // Fallback: use file mtime
336
+ const stat = statSync(filePath);
337
+ meta.uploaded = stat.mtimeMs;
338
+ }
339
+ const result = {
340
+ key,
341
+ size: content.length,
342
+ etag,
343
+ uploaded: new Date(meta.uploaded),
344
+ };
345
+ if (meta.contentType)
346
+ result.contentType = meta.contentType;
347
+ if (meta.customMetadata)
348
+ result.customMetadata = meta.customMetadata;
349
+ return result;
350
+ },
351
+ async delete(keys) {
352
+ const keyArray = Array.isArray(keys) ? keys : [keys];
353
+ for (const key of keyArray) {
354
+ validateKey(key);
355
+ const filePath = getFilePath(key);
356
+ const metaPath = getMetaPath(key);
357
+ try {
358
+ if (existsSync(filePath)) {
359
+ unlinkSync(filePath);
360
+ }
361
+ if (existsSync(metaPath)) {
362
+ unlinkSync(metaPath);
363
+ }
364
+ }
365
+ catch {
366
+ // Ignore errors - file might not exist
367
+ }
368
+ }
369
+ },
370
+ async list(options) {
371
+ ensureStorageDir();
372
+ const prefix = options?.prefix ?? "";
373
+ const limit = Math.min(options?.limit ?? 1000, 1000);
374
+ const cursor = options?.cursor;
375
+ // Read all files in storage directory
376
+ const files = readdirSync(getStoragePath());
377
+ // Filter to .data files and decode keys
378
+ const allObjects = [];
379
+ for (const file of files) {
380
+ if (!file.endsWith(".data"))
381
+ continue;
382
+ try {
383
+ // Strip .data suffix before decoding
384
+ const encoded = file.slice(0, -5);
385
+ const key = decodeKey(encoded);
386
+ if (key.startsWith(prefix)) {
387
+ allObjects.push({ key, encoded });
388
+ }
389
+ }
390
+ catch {
391
+ // Skip files with invalid encoding
392
+ }
393
+ }
394
+ // Sort by key for consistent ordering
395
+ allObjects.sort((a, b) => a.key.localeCompare(b.key));
396
+ // Find cursor position
397
+ let startIndex = 0;
398
+ if (cursor) {
399
+ const cursorIndex = allObjects.findIndex((o) => o.key === cursor);
400
+ if (cursorIndex !== -1) {
401
+ startIndex = cursorIndex + 1;
402
+ }
403
+ }
404
+ // Get page of results
405
+ const pageObjects = allObjects.slice(startIndex, startIndex + limit);
406
+ const truncated = startIndex + limit < allObjects.length;
407
+ // Build result objects
408
+ const objects = [];
409
+ for (const { key, encoded } of pageObjects) {
410
+ const filePath = join(getStoragePath(), encoded + ".data");
411
+ const metaPath = join(getStoragePath(), encoded + ".meta");
412
+ try {
413
+ const content = readFileSync(filePath);
414
+ const etag = calculateEtag(content);
415
+ let meta = { uploaded: Date.now() };
416
+ if (existsSync(metaPath)) {
417
+ try {
418
+ meta = JSON.parse(readFileSync(metaPath, "utf-8"));
419
+ }
420
+ catch {
421
+ // Use defaults
422
+ }
423
+ }
424
+ else {
425
+ const stat = statSync(filePath);
426
+ meta.uploaded = stat.mtimeMs;
427
+ }
428
+ const obj = {
429
+ key,
430
+ size: content.length,
431
+ etag,
432
+ uploaded: new Date(meta.uploaded),
433
+ };
434
+ if (meta.contentType)
435
+ obj.contentType = meta.contentType;
436
+ if (meta.customMetadata)
437
+ obj.customMetadata = meta.customMetadata;
438
+ objects.push(obj);
439
+ }
440
+ catch {
441
+ // Skip files that can't be read
442
+ }
443
+ }
444
+ const result = {
445
+ objects,
446
+ truncated,
447
+ };
448
+ if (truncated && pageObjects.length > 0) {
449
+ const lastKey = pageObjects[pageObjects.length - 1]?.key;
450
+ if (lastKey)
451
+ result.cursor = lastKey;
452
+ }
453
+ return result;
454
+ },
455
+ };
456
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/runtime/storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Shared constants for CLI.
3
+ *
4
+ * NOTE: This value MUST match platform/shared/constants.ts.
5
+ * They are separate files because CLI and platform have separate TypeScript builds.
6
+ */
7
+ /**
8
+ * Default project name used for backwards compatibility.
9
+ * Projects without an explicit name use this value.
10
+ */
11
+ export declare const DEFAULT_PROJECT_NAME = "default";
12
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/shared/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,eAAO,MAAM,oBAAoB,YAAY,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Shared constants for CLI.
3
+ *
4
+ * NOTE: This value MUST match platform/shared/constants.ts.
5
+ * They are separate files because CLI and platform have separate TypeScript builds.
6
+ */
7
+ /**
8
+ * Default project name used for backwards compatibility.
9
+ * Projects without an explicit name use this value.
10
+ */
11
+ export const DEFAULT_PROJECT_NAME = "default";
12
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/shared/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,SAAS,CAAC"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Shared Discord types used by both the local runtime and worker runtime.
3
+ *
4
+ * These are the canonical definitions — runtime modules re-export them
5
+ * so user code can import from "flingit/plugin/discord".
6
+ */
7
+ /**
8
+ * Discord slash command definition.
9
+ */
10
+ export interface DiscordSlashCommand {
11
+ /** Command name (1-32 chars, lowercase alphanumeric + hyphens) */
12
+ name: string;
13
+ /** Command description (1-100 chars) */
14
+ description: string;
15
+ /** Command options/arguments */
16
+ options?: DiscordCommandOption[];
17
+ }
18
+ /**
19
+ * Discord command option (argument).
20
+ */
21
+ export interface DiscordCommandOption {
22
+ name: string;
23
+ description: string;
24
+ type: "string" | "integer" | "boolean" | "user" | "channel" | "role";
25
+ required?: boolean;
26
+ choices?: Array<{
27
+ name: string;
28
+ value: string | number;
29
+ }>;
30
+ }
31
+ /**
32
+ * Discord interaction from a slash command.
33
+ */
34
+ export interface DiscordInteraction {
35
+ /** Interaction ID */
36
+ id: string;
37
+ /** Interaction type (2 = application command) */
38
+ type: number;
39
+ /** Application ID */
40
+ application_id: string;
41
+ /** Interaction token for responses */
42
+ token: string;
43
+ /** Guild ID if in a server */
44
+ guild_id?: string;
45
+ /** Channel ID */
46
+ channel_id?: string;
47
+ /** Member who triggered (in guilds) */
48
+ member?: {
49
+ user: {
50
+ id: string;
51
+ username: string;
52
+ discriminator: string;
53
+ };
54
+ roles: string[];
55
+ permissions: string;
56
+ };
57
+ /** User who triggered (in DMs) */
58
+ user?: {
59
+ id: string;
60
+ username: string;
61
+ discriminator: string;
62
+ };
63
+ /** Command data */
64
+ data?: {
65
+ id: string;
66
+ name: string;
67
+ type: number;
68
+ options?: Array<{
69
+ name: string;
70
+ type: number;
71
+ value: string | number | boolean;
72
+ }>;
73
+ };
74
+ }
75
+ /**
76
+ * Discord message embed.
77
+ */
78
+ export interface DiscordEmbed {
79
+ title?: string;
80
+ description?: string;
81
+ color?: number;
82
+ url?: string;
83
+ timestamp?: string;
84
+ footer?: {
85
+ text: string;
86
+ icon_url?: string;
87
+ };
88
+ author?: {
89
+ name: string;
90
+ url?: string;
91
+ icon_url?: string;
92
+ };
93
+ fields?: Array<{
94
+ name: string;
95
+ value: string;
96
+ inline?: boolean;
97
+ }>;
98
+ }
99
+ /**
100
+ * Options for sending a message.
101
+ */
102
+ export interface SendMessageOptions {
103
+ channelId: string;
104
+ content?: string;
105
+ embeds?: DiscordEmbed[];
106
+ }
107
+ /**
108
+ * Options for editing a message.
109
+ */
110
+ export interface EditMessageOptions {
111
+ content?: string;
112
+ embeds?: DiscordEmbed[];
113
+ }
114
+ /**
115
+ * Options for replying to an interaction.
116
+ */
117
+ export interface InteractionReplyOptions {
118
+ content?: string;
119
+ embeds?: DiscordEmbed[];
120
+ ephemeral?: boolean;
121
+ }
122
+ /**
123
+ * Discord message response.
124
+ */
125
+ export interface DiscordMessage {
126
+ id: string;
127
+ channelId: string;
128
+ content: string;
129
+ }
130
+ //# sourceMappingURL=discord-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discord-types.d.ts","sourceRoot":"","sources":["../../src/shared/discord-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Shared Discord types used by both the local runtime and worker runtime.
3
+ *
4
+ * These are the canonical definitions — runtime modules re-export them
5
+ * so user code can import from "flingit/plugin/discord".
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=discord-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discord-types.js","sourceRoot":"","sources":["../../src/shared/discord-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Generate a random 6-character code using confusable-char-excluded charset.
3
+ * Used for project IDs.
4
+ */
5
+ export declare function generateRandomCode(): string;
6
+ //# sourceMappingURL=random-code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"random-code.d.ts","sourceRoot":"","sources":["../../src/shared/random-code.ts"],"names":[],"mappings":"AAYA;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAO3C"}