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
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyDpC,eAAO,MAAM,WAAW,SAwKpB,CAAC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAuI9D;AAED,eAAO,MAAM,WAAW,SA+CpB,CAAC"}
@@ -2,89 +2,36 @@
2
2
  * fling init - Scaffold a new project in the current directory
3
3
  */
4
4
  import { Command } from "commander";
5
- import { existsSync, mkdirSync, writeFileSync, readFileSync, cpSync, } from "node:fs";
6
- import { join, dirname } from "node:path";
7
- import { fileURLToPath } from "node:url";
8
- import { registerProject } from "../utils/registry.js";
5
+ import { join } from "node:path";
9
6
  import { generateRandomCode } from "../../shared/random-code.js";
10
- const __dirname = dirname(fileURLToPath(import.meta.url));
11
- // Get Fling root directory (where package.json lives)
12
- function getFlingRoot() {
13
- // From src/cli/commands/ or dist/cli/commands/
14
- return join(__dirname, "..", "..", "..");
15
- }
16
- // Check if running from a development checkout
17
- function isDevelopmentMode() {
18
- const flingRoot = getFlingRoot();
19
- // Development checkout has src/ directory and tsconfig.json
20
- return (existsSync(join(flingRoot, "src")) &&
21
- existsSync(join(flingRoot, "tsconfig.json")));
22
- }
23
- function getPackageMeta() {
24
- const flingRoot = getFlingRoot();
25
- const packageJsonPath = join(flingRoot, "package.json");
26
- try {
27
- const pkg = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
28
- return {
29
- name: pkg.name ?? "flingit",
30
- version: pkg.version ?? "0.0.1",
31
- };
32
- }
33
- catch {
34
- return { name: "flingit", version: "0.0.1" };
7
+ import { createDefaultInitIO } from "../utils/cli-io-impl.js";
8
+ /**
9
+ * Run the init command logic.
10
+ * Extracted for testability via dependency injection.
11
+ */
12
+ export function runInit(options, io) {
13
+ const cwd = io.process.cwd();
14
+ // Refuse to init in a non-empty directory
15
+ const existingFiles = io.file.readdir(cwd);
16
+ if (existingFiles.length > 0) {
17
+ io.console.error("Error: Directory is not empty.");
18
+ io.console.error("");
19
+ io.console.error("fling init requires an empty directory to avoid overwriting existing files.");
20
+ io.console.error("");
21
+ io.console.error("To create a new project:");
22
+ io.console.error(" mkdir my-project && cd my-project && fling init");
23
+ io.process.exit(1);
35
24
  }
36
- }
37
- export const initCommand = new Command("init")
38
- .description("Create a new Fling project in the current directory")
39
- .option("--local", "Use local Fling package via file: reference (for development)")
40
- .option("--no-local", "Use published package version (override development auto-detection)")
41
- .addHelpText("after", `
42
- Prerequisites:
43
- - Node.js 22 or later
44
- - Empty or new directory (run mkdir my-project && cd my-project first)
45
-
46
- Creates:
47
- index.html Vite entry HTML
48
- vite.config.ts Vite configuration
49
- tsconfig.json TypeScript root config
50
- tsconfig.app.json React TypeScript config
51
- tsconfig.worker.json Worker TypeScript config
52
- src/worker/index.ts Backend API code
53
- src/react-app/ React frontend code
54
- public/ Static assets
55
- package.json Project configuration with React, Vite deps
56
- .nvmrc Node.js version (22)
57
- CLAUDE.md Instructions for Claude Code
58
- .claude/skills/ Claude skill files for Fling commands
59
- .fling/ Local data directory (gitignored)
60
- .fling/secrets Local secrets file (gitignored)
61
- .fling/data/ SQLite database location (gitignored)
62
-
63
- Next steps after init:
64
- npm install Install dependencies
65
- fling dev Start local development server
66
-
67
- Example:
68
- mkdir my-project && cd my-project
69
- fling init
70
- npm install
71
- fling dev
72
- `)
73
- .action(async (options) => {
74
- const cwd = process.cwd();
75
- // Check if already initialized
76
- if (existsSync(join(cwd, ".fling"))) {
77
- console.log("Fling project already initialized in this directory.");
25
+ // Check if already initialized (redundant now but kept for clarity)
26
+ if (io.file.exists(join(cwd, ".fling"))) {
27
+ io.console.log("Fling project already initialized in this directory.");
78
28
  return;
79
29
  }
80
- console.log("Initializing Fling project...\n");
81
- // Templates are located relative to this file:
82
- // In dev: src/cli/commands/init.ts -> ../../../templates/default
83
- // In dist: dist/cli/commands/init.js -> ../../../templates/default
84
- const templateDir = join(__dirname, "..", "..", "..", "templates", "default");
85
- if (!existsSync(templateDir)) {
86
- console.error("Error: Could not find template directory at", templateDir);
87
- process.exit(1);
30
+ io.console.log("Initializing Fling project...\n");
31
+ const templateDir = io.paths.templateDir;
32
+ if (!io.file.exists(templateDir)) {
33
+ io.console.error("Error: Could not find template directory at " + templateDir);
34
+ io.process.exit(1);
88
35
  }
89
36
  // Copy template files to project root
90
37
  // We copy specific files to handle .gitignore specially
@@ -100,41 +47,44 @@ Example:
100
47
  ];
101
48
  for (const { src, dest } of filesToCopy) {
102
49
  const srcPath = join(templateDir, src);
103
- if (existsSync(srcPath)) {
104
- cpSync(srcPath, join(cwd, dest));
50
+ if (io.file.exists(srcPath)) {
51
+ io.file.copy(srcPath, join(cwd, dest));
105
52
  }
106
53
  }
107
54
  // Copy src directory
108
55
  const srcTemplateDir = join(templateDir, "src");
109
- if (existsSync(srcTemplateDir)) {
110
- cpSync(srcTemplateDir, join(cwd, "src"), { recursive: true });
56
+ if (io.file.exists(srcTemplateDir)) {
57
+ io.file.copy(srcTemplateDir, join(cwd, "src"), { recursive: true });
111
58
  }
112
59
  // Copy public directory (static assets for Vite)
113
60
  const publicTemplateDir = join(templateDir, "public");
114
- if (existsSync(publicTemplateDir)) {
115
- cpSync(publicTemplateDir, join(cwd, "public"), { recursive: true });
61
+ if (io.file.exists(publicTemplateDir)) {
62
+ io.file.copy(publicTemplateDir, join(cwd, "public"), { recursive: true });
116
63
  }
117
64
  // Copy skills to .claude/skills/
118
65
  const skillsTemplateDir = join(templateDir, "skills");
119
66
  const skillsDestDir = join(cwd, ".claude", "skills");
120
- if (existsSync(skillsTemplateDir)) {
121
- mkdirSync(skillsDestDir, { recursive: true });
122
- cpSync(skillsTemplateDir, skillsDestDir, { recursive: true });
67
+ if (io.file.exists(skillsTemplateDir)) {
68
+ io.file.mkdir(skillsDestDir, { recursive: true });
69
+ io.file.copy(skillsTemplateDir, skillsDestDir, { recursive: true });
123
70
  }
124
71
  // Modify package.json with project name and fling dependency
125
72
  const projectName = cwd.split("/").pop() ?? "fling-project";
126
- const useLocal = options.local ?? isDevelopmentMode();
127
- const flingRoot = getFlingRoot();
128
- const { name: packageName, version: packageVersion } = getPackageMeta();
129
- const dependencyName = packageName || "flingit";
73
+ const useLocal = options.local ?? io.meta.isDevelopmentMode;
74
+ const dependencyName = io.meta.packageName || "flingit";
130
75
  const dependencyVersion = useLocal
131
- ? `file:${flingRoot}`
132
- : `^${packageVersion || "0.0.1"}`;
76
+ ? `file:${io.paths.flingRoot}`
77
+ : `^${io.meta.packageVersion || "0.0.1"}`;
133
78
  if (useLocal) {
134
- console.log(`Using local Fling: ${flingRoot}\n`);
79
+ io.console.log(`Using local Fling: ${io.paths.flingRoot}\n`);
135
80
  }
136
81
  const packageJsonPath = join(cwd, "package.json");
137
- const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
82
+ const packageJsonContent = io.file.readFileString(packageJsonPath);
83
+ if (packageJsonContent === null) {
84
+ io.console.error("Error: package.json not found after copying template");
85
+ io.process.exit(1);
86
+ }
87
+ const packageJson = JSON.parse(packageJsonContent);
138
88
  packageJson.name = projectName;
139
89
  packageJson.dependencies = packageJson.dependencies ?? {};
140
90
  delete packageJson.dependencies["fling"];
@@ -142,26 +92,65 @@ Example:
142
92
  // Generate unique project ID
143
93
  const projectId = generateRandomCode();
144
94
  packageJson.fling = { projectName: projectId };
145
- writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + "\n");
95
+ io.file.writeFileString(packageJsonPath, JSON.stringify(packageJson, null, 2) + "\n");
146
96
  // Create .fling directory
147
- mkdirSync(join(cwd, ".fling", "data"), { recursive: true });
97
+ io.file.mkdir(join(cwd, ".fling", "data"), { recursive: true });
148
98
  // Register project in the global registry
149
- registerProject(cwd);
99
+ io.registry.register(cwd);
150
100
  // Create empty secrets file with restricted permissions (owner read/write only)
151
- writeFileSync(join(cwd, ".fling", "secrets"), "# Fling secrets\n# Format: KEY=value\n", { mode: 0o600 });
101
+ io.file.writeFileString(join(cwd, ".fling", "secrets"), "# Fling secrets\n# Format: KEY=value\n", { mode: 0o600 });
152
102
  // Handle .gitignore - copy template or append to existing
153
103
  const gitignorePath = join(cwd, ".gitignore");
154
104
  const gitignoreTemplate = join(templateDir, ".gitignore");
155
- if (existsSync(gitignorePath)) {
105
+ if (io.file.exists(gitignorePath)) {
156
106
  // Append Fling entries if not already present
157
- const existing = readFileSync(gitignorePath, "utf-8");
158
- if (!existing.includes(".fling/secrets")) {
159
- writeFileSync(gitignorePath, existing + "\n# Fling\n.fling/secrets\n.fling/data/\n");
107
+ const existing = io.file.readFileString(gitignorePath);
108
+ if (existing !== null && !existing.includes(".fling/secrets")) {
109
+ io.file.writeFileString(gitignorePath, existing + "\n# Fling\n.fling/secrets\n.fling/data/\n");
160
110
  }
161
111
  }
162
- else if (existsSync(gitignoreTemplate)) {
163
- cpSync(gitignoreTemplate, gitignorePath);
112
+ else if (io.file.exists(gitignoreTemplate)) {
113
+ io.file.copy(gitignoreTemplate, gitignorePath);
164
114
  }
165
- console.log("This project is ready for your coding agent.");
115
+ io.console.log("This project is ready for your coding agent.");
116
+ }
117
+ export const initCommand = new Command("init")
118
+ .description("Create a new Fling project in the current directory")
119
+ .option("--local", "Use local Fling package via file: reference (for development)")
120
+ .option("--no-local", "Use published package version (override development auto-detection)")
121
+ .addHelpText("after", `
122
+ Prerequisites:
123
+ - Node.js 22 or later
124
+ - Empty or new directory (run mkdir my-project && cd my-project first)
125
+
126
+ Creates:
127
+ index.html Vite entry HTML
128
+ vite.config.ts Vite configuration
129
+ tsconfig.json TypeScript root config
130
+ tsconfig.app.json React TypeScript config
131
+ tsconfig.worker.json Worker TypeScript config
132
+ src/worker/index.ts Backend API code
133
+ src/react-app/ React frontend code
134
+ public/ Static assets
135
+ package.json Project configuration with React, Vite deps
136
+ .nvmrc Node.js version (22)
137
+ CLAUDE.md Instructions for Claude Code
138
+ .claude/skills/ Claude skill files for Fling commands
139
+ .fling/ Local data directory (gitignored)
140
+ .fling/secrets Local secrets file (gitignored)
141
+ .fling/data/ SQLite database location (gitignored)
142
+
143
+ Next steps after init:
144
+ npm install Install dependencies
145
+ fling dev Start local development server
146
+
147
+ Example:
148
+ mkdir my-project && cd my-project
149
+ fling init
150
+ npm install
151
+ fling dev
152
+ `)
153
+ .action((options) => {
154
+ runInit(options, createDefaultInitIO());
166
155
  });
167
156
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
@@ -5,8 +5,18 @@
5
5
  * - Otherwise: show project selector or create-new flow
6
6
  */
7
7
  import type { Command } from "commander";
8
+ import type { LaunchIO } from "../utils/cli-io.js";
9
+ /**
10
+ * Create a new Fling project in the given directory.
11
+ * Runs init, then npm install.
12
+ */
13
+ export declare function createProject(dir: string, io: LaunchIO): Promise<void>;
14
+ /**
15
+ * Launch Claude Code in the given project directory.
16
+ */
17
+ export declare function launchClaudeCode(projectDir: string, io: LaunchIO): void;
8
18
  /**
9
19
  * Launch Fling - the default action when running `fling` with no args.
10
20
  */
11
- export declare function launch(program: Command): Promise<void>;
21
+ export declare function launch(program: Command, io?: LaunchIO): Promise<void>;
12
22
  //# sourceMappingURL=launch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/launch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwFzC;;GAEG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA4D5D"}
1
+ {"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/launch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;GAGG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAkC5E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,GAAG,IAAI,CA6BvE;AAED;;GAEG;AACH,wBAAsB,MAAM,CAC1B,OAAO,EAAE,OAAO,EAChB,EAAE,GAAE,QAAkC,GACrC,OAAO,CAAC,IAAI,CAAC,CA2Df"}
@@ -4,36 +4,33 @@
4
4
  * - Inside a Fling project: auto-register and show Commander help
5
5
  * - Otherwise: show project selector or create-new flow
6
6
  */
7
- import { mkdirSync } from "node:fs";
8
- import { spawn } from "node:child_process";
9
7
  import * as p from "@clack/prompts";
10
8
  import { initCommand } from "./init.js";
11
9
  import { promptCredentials } from "./onboard.js";
12
10
  import { findEnclosingProject, isProjectRoot } from "../utils/project.js";
13
11
  import { registerProject, getValidProjects } from "../utils/registry.js";
14
12
  import { isLoggedIn } from "../utils/config.js";
15
- import { isClaudeCodeInstalled, getClaudeCodeNotInstalledError, } from "../utils/claude-code.js";
16
13
  import { promptNewProject } from "../utils/prompt-new-project.js";
17
- import { createDefaultLaunchIO } from "../utils/launch-io-impl.js";
14
+ import { createDefaultLaunchIO } from "../utils/cli-io-impl.js";
18
15
  /**
19
16
  * Create a new Fling project in the given directory.
20
17
  * Runs init, then npm install.
21
18
  */
22
- async function createProject(dir) {
23
- console.log(`Creating your Fling project at ${dir}...\n`);
24
- mkdirSync(dir, { recursive: true });
25
- const originalCwd = process.cwd();
26
- process.chdir(dir);
19
+ export async function createProject(dir, io) {
20
+ io.console.log(`Creating your Fling project at ${dir}...\n`);
21
+ io.file.mkdir(dir, { recursive: true });
22
+ const originalCwd = io.process.cwd();
23
+ io.process.chdir(dir);
27
24
  try {
28
25
  await initCommand.parseAsync([], { from: "user" });
29
26
  }
30
27
  finally {
31
- process.chdir(originalCwd);
28
+ io.process.chdir(originalCwd);
32
29
  }
33
- console.log("");
34
- console.log("Installing dependencies...\n");
30
+ io.console.log("");
31
+ io.console.log("Installing dependencies...\n");
35
32
  await new Promise((resolve, reject) => {
36
- const npm = spawn("npm", ["install"], {
33
+ const npm = io.spawn("npm", ["install"], {
37
34
  cwd: dir,
38
35
  stdio: "inherit",
39
36
  });
@@ -47,43 +44,43 @@ async function createProject(dir) {
47
44
  }
48
45
  });
49
46
  });
50
- console.log("");
47
+ io.console.log("");
51
48
  }
52
49
  /**
53
50
  * Launch Claude Code in the given project directory.
54
51
  */
55
- function launchClaudeCode(projectDir) {
52
+ export function launchClaudeCode(projectDir, io) {
56
53
  // Check for Claude Code before attempting to launch
57
- if (!isClaudeCodeInstalled()) {
58
- console.error(getClaudeCodeNotInstalledError());
59
- process.exit(1);
54
+ if (!io.claudeCode.isInstalled()) {
55
+ io.console.error(io.claudeCode.getNotInstalledError());
56
+ io.process.exit(1);
60
57
  }
61
- console.log(`Opening Claude Code in ${projectDir}...\n`);
62
- const claude = spawn("claude", [], {
58
+ io.console.log(`Opening Claude Code in ${projectDir}...\n`);
59
+ const claude = io.spawn("claude", [], {
63
60
  cwd: projectDir,
64
61
  stdio: "inherit",
65
- env: { ...process.env, PWD: projectDir },
62
+ env: { ...io.process.env, PWD: projectDir },
66
63
  });
67
64
  claude.on("error", (error) => {
68
65
  // This should rarely happen now that we pre-check, but handle edge cases
69
66
  if (error.code === "ENOENT") {
70
- console.error(getClaudeCodeNotInstalledError());
71
- process.exit(1);
67
+ io.console.error(io.claudeCode.getNotInstalledError());
68
+ io.process.exit(1);
72
69
  }
73
70
  else {
74
- console.error("Error launching Claude Code:", error);
75
- process.exit(1);
71
+ io.console.error(`Error launching Claude Code: ${error}`);
72
+ io.process.exit(1);
76
73
  }
77
74
  });
78
75
  claude.on("close", (code) => {
79
- process.exit(code ?? 0);
76
+ io.process.exit(code ?? 0);
80
77
  });
81
78
  }
82
79
  /**
83
80
  * Launch Fling - the default action when running `fling` with no args.
84
81
  */
85
- export async function launch(program) {
86
- const cwd = process.cwd();
82
+ export async function launch(program, io = createDefaultLaunchIO()) {
83
+ const cwd = io.process.cwd();
87
84
  // Step 1: Are we inside a Fling project?
88
85
  const enclosingProject = findEnclosingProject(cwd);
89
86
  if (enclosingProject) {
@@ -95,9 +92,9 @@ export async function launch(program) {
95
92
  const projects = getValidProjects();
96
93
  if (projects.length > 0) {
97
94
  // Show project selector
98
- const options = projects.map((p) => ({
99
- value: p,
100
- label: p,
95
+ const options = projects.map((proj) => ({
96
+ value: proj,
97
+ label: proj,
101
98
  }));
102
99
  options.push({ value: "new", label: "Create new project" });
103
100
  options.push({ value: "cancel", label: "Cancel" });
@@ -112,7 +109,7 @@ export async function launch(program) {
112
109
  // Fall through to create-new flow
113
110
  }
114
111
  else {
115
- launchClaudeCode(choice);
112
+ launchClaudeCode(choice, io);
116
113
  return;
117
114
  }
118
115
  }
@@ -124,14 +121,13 @@ export async function launch(program) {
124
121
  }
125
122
  }
126
123
  // Step 4: Create a new project
127
- const launchIO = createDefaultLaunchIO();
128
- const dir = await promptNewProject(launchIO);
124
+ const dir = await promptNewProject(io);
129
125
  if (!dir) {
130
126
  return;
131
127
  }
132
128
  if (!isProjectRoot(dir)) {
133
- await createProject(dir);
129
+ await createProject(dir, io);
134
130
  }
135
- launchClaudeCode(dir);
131
+ launchClaudeCode(dir, io);
136
132
  }
137
133
  //# sourceMappingURL=launch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"launch.js","sourceRoot":"","sources":["../../../src/cli/commands/launch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"launch.js","sourceRoot":"","sources":["../../../src/cli/commands/launch.ts"],"names":[],"mappings":"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"}
@@ -2,5 +2,35 @@
2
2
  * fling login - Store API token for the Fling platform
3
3
  */
4
4
  import { Command } from "commander";
5
+ import { type PlatformFetchFn } from "../utils/config.js";
6
+ import { type ConsoleIO, type ProcessIOWithStdio, type SimplePromptIO } from "../utils/cli-io.js";
7
+ /**
8
+ * Token storage.
9
+ */
10
+ export interface LoginTokenIO {
11
+ setToken(token: string): void;
12
+ clearToken(): void;
13
+ setApiUrl(url: string): void;
14
+ }
15
+ /**
16
+ * Combined dependencies for login command.
17
+ */
18
+ export interface LoginDeps {
19
+ console: ConsoleIO;
20
+ process: ProcessIOWithStdio;
21
+ user: SimplePromptIO;
22
+ token: LoginTokenIO;
23
+ isLoggedIn: () => boolean;
24
+ platformFetch: PlatformFetchFn;
25
+ }
26
+ export declare function createDefaultLoginDeps(): LoginDeps;
27
+ export declare const defaultLoginDeps: LoginDeps;
28
+ /**
29
+ * Run the login command.
30
+ * Exported for testing with injected dependencies.
31
+ */
32
+ export declare function runLogin(tokenArg: string | undefined, options: {
33
+ apiUrl?: string;
34
+ }, deps?: LoginDeps): Promise<void>;
5
35
  export declare const loginCommand: Command;
6
36
  //# sourceMappingURL=login.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/login.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBpC,eAAO,MAAM,YAAY,SAsFrB,CAAC"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/login.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAA8D,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACtH,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAOlG;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,IAAI,IAAI,CAAC;IACnB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,aAAa,EAAE,eAAe,CAAC;CAChC;AAMD,wBAAgB,sBAAsB,IAAI,SAAS,CAalD;AAED,eAAO,MAAM,gBAAgB,WAA2B,CAAC;AAMzD;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAC5B,IAAI,GAAE,SAA4B,GACjC,OAAO,CAAC,IAAI,CAAC,CAkEf;AAED,eAAO,MAAM,YAAY,SAsBrB,CAAC"}