flingit 0.0.12 → 0.0.13

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 (91) hide show
  1. package/README.md +8 -1
  2. package/dist/cli/commands/db.d.ts +11 -0
  3. package/dist/cli/commands/db.d.ts.map +1 -1
  4. package/dist/cli/commands/db.js +60 -48
  5. package/dist/cli/commands/db.js.map +1 -1
  6. package/dist/cli/commands/dev.d.ts +9 -0
  7. package/dist/cli/commands/dev.d.ts.map +1 -1
  8. package/dist/cli/commands/dev.js +96 -100
  9. package/dist/cli/commands/dev.js.map +1 -1
  10. package/dist/cli/commands/feedback.d.ts +23 -0
  11. package/dist/cli/commands/feedback.d.ts.map +1 -1
  12. package/dist/cli/commands/feedback.js +60 -73
  13. package/dist/cli/commands/feedback.js.map +1 -1
  14. package/dist/cli/commands/init.d.ts +9 -0
  15. package/dist/cli/commands/init.d.ts.map +1 -1
  16. package/dist/cli/commands/init.js +96 -107
  17. package/dist/cli/commands/init.js.map +1 -1
  18. package/dist/cli/commands/launch.d.ts +11 -1
  19. package/dist/cli/commands/launch.d.ts.map +1 -1
  20. package/dist/cli/commands/launch.js +32 -36
  21. package/dist/cli/commands/launch.js.map +1 -1
  22. package/dist/cli/commands/login.d.ts +30 -0
  23. package/dist/cli/commands/login.d.ts.map +1 -1
  24. package/dist/cli/commands/login.js +71 -58
  25. package/dist/cli/commands/login.js.map +1 -1
  26. package/dist/cli/commands/logs.d.ts +39 -0
  27. package/dist/cli/commands/logs.d.ts.map +1 -1
  28. package/dist/cli/commands/logs.js +121 -90
  29. package/dist/cli/commands/logs.js.map +1 -1
  30. package/dist/cli/commands/onboard.d.ts +1 -1
  31. package/dist/cli/commands/onboard.d.ts.map +1 -1
  32. package/dist/cli/commands/onboard.js +94 -41
  33. package/dist/cli/commands/onboard.js.map +1 -1
  34. package/dist/cli/commands/plugin.d.ts +43 -0
  35. package/dist/cli/commands/plugin.d.ts.map +1 -1
  36. package/dist/cli/commands/plugin.js +229 -211
  37. package/dist/cli/commands/plugin.js.map +1 -1
  38. package/dist/cli/commands/project.d.ts +27 -0
  39. package/dist/cli/commands/project.d.ts.map +1 -1
  40. package/dist/cli/commands/project.js +101 -85
  41. package/dist/cli/commands/project.js.map +1 -1
  42. package/dist/cli/commands/push.d.ts +39 -0
  43. package/dist/cli/commands/push.d.ts.map +1 -1
  44. package/dist/cli/commands/push.js +152 -118
  45. package/dist/cli/commands/push.js.map +1 -1
  46. package/dist/cli/commands/storage.d.ts +32 -0
  47. package/dist/cli/commands/storage.d.ts.map +1 -1
  48. package/dist/cli/commands/storage.js +180 -140
  49. package/dist/cli/commands/storage.js.map +1 -1
  50. package/dist/cli/commands/tunnel.d.ts +41 -0
  51. package/dist/cli/commands/tunnel.d.ts.map +1 -0
  52. package/dist/cli/commands/tunnel.js +210 -0
  53. package/dist/cli/commands/tunnel.js.map +1 -0
  54. package/dist/cli/commands/upgrade.d.ts +15 -0
  55. package/dist/cli/commands/upgrade.d.ts.map +1 -0
  56. package/dist/cli/commands/upgrade.js +82 -0
  57. package/dist/cli/commands/upgrade.js.map +1 -0
  58. package/dist/cli/index.js +35 -4
  59. package/dist/cli/index.js.map +1 -1
  60. package/dist/cli/utils/cli-io-impl.d.ts +64 -0
  61. package/dist/cli/utils/cli-io-impl.d.ts.map +1 -0
  62. package/dist/cli/utils/cli-io-impl.js +521 -0
  63. package/dist/cli/utils/cli-io-impl.js.map +1 -0
  64. package/dist/cli/utils/cli-io.d.ts +350 -0
  65. package/dist/cli/utils/cli-io.d.ts.map +1 -0
  66. package/dist/cli/utils/cli-io.js +13 -0
  67. package/dist/cli/utils/cli-io.js.map +1 -0
  68. package/dist/cli/utils/config.d.ts +60 -2
  69. package/dist/cli/utils/config.d.ts.map +1 -1
  70. package/dist/cli/utils/config.js +158 -37
  71. package/dist/cli/utils/config.js.map +1 -1
  72. package/dist/cli/utils/project.d.ts +60 -0
  73. package/dist/cli/utils/project.d.ts.map +1 -1
  74. package/dist/cli/utils/project.js +112 -2
  75. package/dist/cli/utils/project.js.map +1 -1
  76. package/dist/cli/utils/prompt-new-project.d.ts +1 -1
  77. package/dist/cli/utils/prompt-new-project.d.ts.map +1 -1
  78. package/dist/cli/utils/registry.d.ts +2 -2
  79. package/dist/cli/utils/registry.d.ts.map +1 -1
  80. package/dist/cli/utils/registry.js +13 -3
  81. package/dist/cli/utils/registry.js.map +1 -1
  82. package/dist/runtime/log.d.ts.map +1 -1
  83. package/dist/runtime/log.js +8 -4
  84. package/dist/runtime/log.js.map +1 -1
  85. package/dist/runtime/storage.js +1 -1
  86. package/dist/runtime/storage.js.map +1 -1
  87. package/package.json +3 -2
  88. package/templates/default/CLAUDE.md +1 -0
  89. package/templates/default/skills/fling/.hash +1 -0
  90. package/templates/default/skills/fling/SKILL.md +12 -4
  91. /package/templates/default/skills/{discord/SKILL.md → fling/DISCORD.md} +0 -0
@@ -0,0 +1,521 @@
1
+ /**
2
+ * Production implementations of consolidated CLI I/O interfaces.
3
+ *
4
+ * These wrap the real dependencies (fs, process, @clack/prompts, etc.)
5
+ * used in production. Tests can substitute fake implementations.
6
+ */
7
+ import { existsSync, readFileSync, writeFileSync, unlinkSync, mkdirSync, rmSync, readdirSync, statSync, cpSync, renameSync, } from "node:fs";
8
+ import { join } from "node:path";
9
+ import { createRequire } from "node:module";
10
+ import { homedir } from "node:os";
11
+ import { spawn } from "node:child_process";
12
+ import { createInterface } from "node:readline";
13
+ import * as p from "@clack/prompts";
14
+ import Database from "better-sqlite3";
15
+ import { context } from "esbuild";
16
+ import { isClaudeCodeInstalled, getClaudeCodeNotInstalledError, } from "./claude-code.js";
17
+ import { registerProject } from "./registry.js";
18
+ import { hasWorkerEntry, getWorkerEntryPath, findEnclosingProject, isProjectRoot, hasSymlinkInPath, getFlingRoot, } from "./project.js";
19
+ // ═══════════════════════════════════════════════════════
20
+ // SHARED IMPLEMENTATIONS
21
+ // ═══════════════════════════════════════════════════════
22
+ export const consoleIO = {
23
+ log: (message) => {
24
+ console.log(message);
25
+ },
26
+ error: (message) => {
27
+ console.error(message);
28
+ },
29
+ warn: (message) => {
30
+ console.warn(message);
31
+ },
32
+ };
33
+ export const consoleIOWithProgress = {
34
+ ...consoleIO,
35
+ writeProgress: (message) => {
36
+ process.stderr.write(message);
37
+ },
38
+ };
39
+ export const processIO = {
40
+ exit: (code) => process.exit(code),
41
+ cwd: () => process.cwd(),
42
+ chdir: (dir) => {
43
+ process.chdir(dir);
44
+ },
45
+ env: process.env,
46
+ stdin: process.stdin,
47
+ stdout: process.stdout,
48
+ on: (event, listener) => {
49
+ process.on(event, listener);
50
+ },
51
+ execPath: process.execPath,
52
+ platform: process.platform,
53
+ };
54
+ export const networkIO = {
55
+ fetch: globalThis.fetch,
56
+ };
57
+ // ═══════════════════════════════════════════════════════
58
+ // TIMING (plugin, retry)
59
+ // ═══════════════════════════════════════════════════════
60
+ export const timingIO = {
61
+ sleep: (ms) => new Promise((resolve) => setTimeout(resolve, ms)),
62
+ };
63
+ // ═══════════════════════════════════════════════════════
64
+ // SPAWN (launch, tunnel, plugin browser)
65
+ // ═══════════════════════════════════════════════════════
66
+ export const spawnFn = (command, args, options) => {
67
+ return spawn(command, args, options);
68
+ };
69
+ // ═══════════════════════════════════════════════════════
70
+ // BROWSER (plugin)
71
+ // ═══════════════════════════════════════════════════════
72
+ /**
73
+ * Create browser opener for the current platform.
74
+ */
75
+ export function createBrowserIO(platform, spawn) {
76
+ return {
77
+ open: (url) => {
78
+ let command;
79
+ let args;
80
+ if (platform === "darwin") {
81
+ command = "open";
82
+ args = [url];
83
+ }
84
+ else if (platform === "win32") {
85
+ command = "cmd";
86
+ args = ["/c", "start", url];
87
+ }
88
+ else {
89
+ command = "xdg-open";
90
+ args = [url];
91
+ }
92
+ spawn(command, args, { detached: true, stdio: "ignore" }).unref();
93
+ },
94
+ };
95
+ }
96
+ export const browserIO = createBrowserIO(process.platform, spawnFn);
97
+ // ═══════════════════════════════════════════════════════
98
+ // SIMPLE PROMPTS (readline-based, for login/plugin/project/feedback)
99
+ // ═══════════════════════════════════════════════════════
100
+ /**
101
+ * Create simple readline-based prompt IO.
102
+ */
103
+ export function createSimplePromptIO(proc) {
104
+ return {
105
+ prompt: async (question) => {
106
+ const rl = createInterface({
107
+ input: proc.stdin,
108
+ output: proc.stdout,
109
+ });
110
+ return new Promise((resolve) => {
111
+ rl.question(question, (answer) => {
112
+ rl.close();
113
+ resolve(answer);
114
+ });
115
+ });
116
+ },
117
+ };
118
+ }
119
+ /**
120
+ * Create simple readline-based confirm IO.
121
+ */
122
+ export function createSimpleConfirmIO(proc) {
123
+ return {
124
+ confirm: async (question) => {
125
+ const rl = createInterface({
126
+ input: proc.stdin,
127
+ output: proc.stdout,
128
+ });
129
+ return new Promise((resolve) => {
130
+ rl.question(question, (answer) => {
131
+ rl.close();
132
+ resolve(answer.toLowerCase() === "y" || answer.toLowerCase() === "yes");
133
+ });
134
+ });
135
+ },
136
+ };
137
+ }
138
+ /**
139
+ * Create simple prompt IO with multiline support (for feedback command).
140
+ */
141
+ export function createSimplePromptIOWithMultiline(cons, proc) {
142
+ const base = createSimplePromptIO(proc);
143
+ return {
144
+ ...base,
145
+ promptMultiline: async () => {
146
+ cons.log("Enter your feedback (press Ctrl+D when done):");
147
+ cons.log("---");
148
+ const rl = createInterface({
149
+ input: proc.stdin,
150
+ output: proc.stdout,
151
+ terminal: false,
152
+ });
153
+ const lines = [];
154
+ return new Promise((resolve) => {
155
+ rl.on("line", (line) => lines.push(line));
156
+ rl.on("close", () => {
157
+ cons.log("---");
158
+ resolve(lines.join("\n"));
159
+ });
160
+ });
161
+ },
162
+ };
163
+ }
164
+ // ═══════════════════════════════════════════════════════
165
+ // DATABASE (wraps better-sqlite3)
166
+ // ═══════════════════════════════════════════════════════
167
+ export const databaseIO = {
168
+ open: (path, options) => new Database(path, options),
169
+ };
170
+ // ═══════════════════════════════════════════════════════
171
+ // CLAUDE CODE UTILITIES
172
+ // ═══════════════════════════════════════════════════════
173
+ export const claudeCodeIO = {
174
+ isInstalled: isClaudeCodeInstalled,
175
+ getNotInstalledError: getClaudeCodeNotInstalledError,
176
+ };
177
+ // ═══════════════════════════════════════════════════════
178
+ // FILE SYSTEM IMPLEMENTATIONS
179
+ // ═══════════════════════════════════════════════════════
180
+ export const fileIO = {
181
+ exists: existsSync,
182
+ };
183
+ export const fileIOWithRead = {
184
+ exists: existsSync,
185
+ readFileSync: (path, encoding) => readFileSync(path, encoding),
186
+ };
187
+ export const dbFileIO = {
188
+ exists: existsSync,
189
+ remove: (path, options) => {
190
+ rmSync(path, { force: options?.force ?? false });
191
+ },
192
+ mkdir: (path, options) => {
193
+ mkdirSync(path, { recursive: options?.recursive ?? false });
194
+ },
195
+ };
196
+ export const storageFileIO = {
197
+ exists: existsSync,
198
+ readFileBuffer: (path) => {
199
+ if (!existsSync(path))
200
+ return null;
201
+ return readFileSync(path);
202
+ },
203
+ writeFileBuffer: (path, data) => {
204
+ writeFileSync(path, data);
205
+ },
206
+ stat: (path) => {
207
+ const stats = statSync(path);
208
+ return { size: stats.size };
209
+ },
210
+ };
211
+ export const launchFileIO = {
212
+ exists: existsSync,
213
+ isProjectRoot,
214
+ isDirEmpty(dir) {
215
+ try {
216
+ return readdirSync(dir).length === 0;
217
+ }
218
+ catch {
219
+ return false;
220
+ }
221
+ },
222
+ mkdir: (path, options) => {
223
+ mkdirSync(path, options);
224
+ },
225
+ };
226
+ export const onboardingFileIO = {
227
+ exists: existsSync,
228
+ readFileString: (path) => existsSync(path) ? readFileSync(path, "utf-8").trim() : null,
229
+ writeFileString: (path, content, options) => {
230
+ writeFileSync(path, content, options?.mode ? { mode: options.mode } : undefined);
231
+ },
232
+ delete: (path) => {
233
+ if (existsSync(path))
234
+ unlinkSync(path);
235
+ },
236
+ mkdir: (path, options) => {
237
+ mkdirSync(path, { recursive: options?.recursive ?? true });
238
+ },
239
+ };
240
+ export const initFileIO = {
241
+ exists: existsSync,
242
+ readFileString: (path) => {
243
+ if (!existsSync(path))
244
+ return null;
245
+ return readFileSync(path, "utf-8");
246
+ },
247
+ writeFileString: (path, data, options) => {
248
+ writeFileSync(path, data, options?.mode ? { mode: options.mode } : undefined);
249
+ },
250
+ mkdir: (path, options) => {
251
+ mkdirSync(path, { recursive: options?.recursive ?? false });
252
+ },
253
+ copy: (src, dest, options) => {
254
+ cpSync(src, dest, { recursive: options?.recursive ?? false });
255
+ },
256
+ readdir: (path) => readdirSync(path),
257
+ };
258
+ export const configFileIO = {
259
+ exists: existsSync,
260
+ readFileString: (path) => existsSync(path) ? readFileSync(path, "utf-8").trim() : null,
261
+ writeFileString: (path, content, options) => {
262
+ writeFileSync(path, content, options?.mode ? { mode: options.mode } : undefined);
263
+ },
264
+ mkdir: (path, options) => {
265
+ mkdirSync(path, { recursive: options?.recursive ?? true });
266
+ },
267
+ delete: (path) => {
268
+ if (existsSync(path))
269
+ unlinkSync(path);
270
+ },
271
+ rename: (src, dest) => {
272
+ renameSync(src, dest);
273
+ },
274
+ };
275
+ export const configIO = {
276
+ file: configFileIO,
277
+ env: {
278
+ homedir,
279
+ get: (name) => process.env[name],
280
+ },
281
+ console: {
282
+ error: (msg) => {
283
+ console.error(msg);
284
+ },
285
+ },
286
+ };
287
+ // ═══════════════════════════════════════════════════════
288
+ // USER INTERACTION (wraps @clack/prompts)
289
+ // ═══════════════════════════════════════════════════════
290
+ export const userIO = {
291
+ async select(opts) {
292
+ // Cast required due to exactOptionalPropertyTypes mismatch with Clack's types
293
+ const result = await p.select(opts);
294
+ return result;
295
+ },
296
+ async text(opts) {
297
+ return p.text(opts);
298
+ },
299
+ isCancel: p.isCancel,
300
+ intro: (msg) => {
301
+ p.intro(msg);
302
+ },
303
+ outro: (msg) => {
304
+ p.outro(msg);
305
+ },
306
+ cancel: (msg) => {
307
+ p.cancel(msg);
308
+ },
309
+ password: (opts) => p.password(opts),
310
+ confirm: (opts) => p.confirm(opts),
311
+ spinner: () => {
312
+ const spinner = p.spinner();
313
+ return {
314
+ start: (msg) => {
315
+ spinner.start(msg);
316
+ },
317
+ stop: (msg, exitCode) => {
318
+ spinner.stop(msg, exitCode);
319
+ },
320
+ };
321
+ },
322
+ log: {
323
+ info: (msg) => {
324
+ p.log.info(msg);
325
+ },
326
+ warn: (msg) => {
327
+ p.log.warn(msg);
328
+ },
329
+ message: (msg) => {
330
+ p.log.message(msg);
331
+ },
332
+ },
333
+ };
334
+ // ═══════════════════════════════════════════════════════
335
+ // DEFAULT COMBINED CONTEXTS
336
+ // ═══════════════════════════════════════════════════════
337
+ export const defaultDbIO = {
338
+ file: dbFileIO,
339
+ process: processIO,
340
+ database: databaseIO,
341
+ console: consoleIO,
342
+ };
343
+ export const defaultStorageIO = {
344
+ file: storageFileIO,
345
+ process: {
346
+ cwd: () => process.cwd(),
347
+ exit: (code) => process.exit(code),
348
+ env: process.env,
349
+ stdin: process.stdin,
350
+ stdout: process.stdout,
351
+ },
352
+ console: consoleIO,
353
+ };
354
+ /**
355
+ * Create the default LaunchIO implementation using real dependencies.
356
+ */
357
+ export function createDefaultLaunchIO() {
358
+ const flingHome = join(homedir(), "fling");
359
+ const currentCwd = process.cwd();
360
+ return {
361
+ user: userIO,
362
+ file: launchFileIO,
363
+ paths: {
364
+ flingHome,
365
+ cwd: currentCwd,
366
+ homedir: homedir(),
367
+ },
368
+ process: {
369
+ cwd: () => process.cwd(),
370
+ exit: (code) => process.exit(code),
371
+ chdir: (dir) => {
372
+ process.chdir(dir);
373
+ },
374
+ env: process.env,
375
+ },
376
+ console: consoleIO,
377
+ spawn: spawnFn,
378
+ claudeCode: claudeCodeIO,
379
+ };
380
+ }
381
+ export const defaultOnboardingIO = {
382
+ user: userIO,
383
+ file: onboardingFileIO,
384
+ network: networkIO,
385
+ };
386
+ // ═══════════════════════════════════════════════════════
387
+ // INIT COMMAND
388
+ // ═══════════════════════════════════════════════════════
389
+ /**
390
+ * Check if running from a development checkout.
391
+ */
392
+ function isDevelopmentMode() {
393
+ const flingRoot = getFlingRoot();
394
+ return (existsSync(join(flingRoot, "src")) &&
395
+ existsSync(join(flingRoot, "tsconfig.json")));
396
+ }
397
+ /**
398
+ * Get package name and version from package.json.
399
+ */
400
+ function getPackageMeta() {
401
+ const flingRoot = getFlingRoot();
402
+ const packageJsonPath = join(flingRoot, "package.json");
403
+ try {
404
+ const pkg = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
405
+ return {
406
+ name: pkg.name ?? "flingit",
407
+ version: pkg.version ?? "0.0.1",
408
+ };
409
+ }
410
+ catch {
411
+ return { name: "flingit", version: "0.0.1" };
412
+ }
413
+ }
414
+ /**
415
+ * Create the default InitIO implementation using real dependencies.
416
+ */
417
+ export function createDefaultInitIO() {
418
+ const flingRoot = getFlingRoot();
419
+ const templateDir = join(flingRoot, "templates", "default");
420
+ const { name: packageName, version: packageVersion } = getPackageMeta();
421
+ return {
422
+ file: initFileIO,
423
+ process: {
424
+ cwd: () => process.cwd(),
425
+ exit: (code) => process.exit(code),
426
+ env: process.env,
427
+ },
428
+ console: consoleIO,
429
+ paths: {
430
+ flingRoot,
431
+ templateDir,
432
+ },
433
+ meta: {
434
+ packageName,
435
+ packageVersion,
436
+ isDevelopmentMode: isDevelopmentMode(),
437
+ },
438
+ registry: {
439
+ register: registerProject,
440
+ },
441
+ };
442
+ }
443
+ // ═══════════════════════════════════════════════════════
444
+ // DEV COMMAND
445
+ // ═══════════════════════════════════════════════════════
446
+ export const devFileIO = {
447
+ exists: existsSync,
448
+ mkdir: (path, options) => {
449
+ mkdirSync(path, { recursive: options?.recursive ?? false });
450
+ },
451
+ writeFileString: (path, data, options) => {
452
+ writeFileSync(path, data, options?.mode ? { mode: options.mode } : undefined);
453
+ },
454
+ };
455
+ /**
456
+ * Get the path to the node runtime (the main flingit export).
457
+ */
458
+ function getNodeRuntimePath() {
459
+ return join(getFlingRoot(), "dist", "index.js");
460
+ }
461
+ /**
462
+ * Create the default DevIO implementation using real dependencies.
463
+ */
464
+ export function createDefaultDevIO() {
465
+ const nodeRuntimePath = getNodeRuntimePath();
466
+ // Resolve @hono/node-server from Fling's node_modules
467
+ const require = createRequire(import.meta.url);
468
+ const honoNodeServerPath = require.resolve("@hono/node-server");
469
+ return {
470
+ file: devFileIO,
471
+ process: {
472
+ cwd: () => process.cwd(),
473
+ exit: (code) => process.exit(code),
474
+ env: process.env,
475
+ execPath: process.execPath,
476
+ stdin: process.stdin,
477
+ stdout: process.stdout,
478
+ on: (event, listener) => {
479
+ process.on(event, listener);
480
+ },
481
+ },
482
+ console: consoleIO,
483
+ paths: {
484
+ nodeRuntimePath,
485
+ honoNodeServerPath,
486
+ },
487
+ project: {
488
+ hasWorkerEntry,
489
+ getWorkerEntryPath,
490
+ },
491
+ spawn,
492
+ esbuild: {
493
+ context,
494
+ },
495
+ };
496
+ }
497
+ /**
498
+ * Create the default UpgradeIO implementation using real dependencies.
499
+ */
500
+ export function createDefaultUpgradeIO() {
501
+ const flingRoot = getFlingRoot();
502
+ const templateDir = join(flingRoot, "templates", "default");
503
+ return {
504
+ file: initFileIO,
505
+ process: {
506
+ cwd: () => process.cwd(),
507
+ exit: (code) => process.exit(code),
508
+ env: process.env,
509
+ },
510
+ console: consoleIO,
511
+ paths: {
512
+ flingRoot,
513
+ templateDir,
514
+ },
515
+ project: {
516
+ findEnclosingProject,
517
+ hasSymlinkInPath,
518
+ },
519
+ };
520
+ }
521
+ //# sourceMappingURL=cli-io-impl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-io-impl.js","sourceRoot":"","sources":["../../../src/cli/utils/cli-io-impl.ts"],"names":[],"mappings":"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"}