@tsonic/cli 0.0.26 → 0.0.28

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 (81) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/cli/dispatcher.d.ts.map +1 -1
  3. package/dist/cli/dispatcher.js +90 -40
  4. package/dist/cli/dispatcher.js.map +1 -1
  5. package/dist/cli/help.d.ts.map +1 -1
  6. package/dist/cli/help.js +15 -16
  7. package/dist/cli/help.js.map +1 -1
  8. package/dist/cli/parser.js +5 -5
  9. package/dist/cli/parser.js.map +1 -1
  10. package/dist/cli/parser.test.js +3 -7
  11. package/dist/cli/parser.test.js.map +1 -1
  12. package/dist/commands/add-common.d.ts +2 -4
  13. package/dist/commands/add-common.d.ts.map +1 -1
  14. package/dist/commands/add-common.js +0 -6
  15. package/dist/commands/add-common.js.map +1 -1
  16. package/dist/commands/add-deps.test.js +13 -20
  17. package/dist/commands/add-deps.test.js.map +1 -1
  18. package/dist/commands/add-framework.d.ts +1 -1
  19. package/dist/commands/add-framework.d.ts.map +1 -1
  20. package/dist/commands/add-framework.js +14 -23
  21. package/dist/commands/add-framework.js.map +1 -1
  22. package/dist/commands/add-js.d.ts +2 -2
  23. package/dist/commands/add-js.d.ts.map +1 -1
  24. package/dist/commands/add-js.js +21 -19
  25. package/dist/commands/add-js.js.map +1 -1
  26. package/dist/commands/add-js.test.js +23 -11
  27. package/dist/commands/add-js.test.js.map +1 -1
  28. package/dist/commands/add-nodejs.d.ts +2 -2
  29. package/dist/commands/add-nodejs.d.ts.map +1 -1
  30. package/dist/commands/add-nodejs.js +22 -19
  31. package/dist/commands/add-nodejs.js.map +1 -1
  32. package/dist/commands/add-nodejs.test.js +31 -13
  33. package/dist/commands/add-nodejs.test.js.map +1 -1
  34. package/dist/commands/add-nuget.d.ts +1 -1
  35. package/dist/commands/add-nuget.d.ts.map +1 -1
  36. package/dist/commands/add-nuget.js +7 -7
  37. package/dist/commands/add-nuget.js.map +1 -1
  38. package/dist/commands/add-package.d.ts.map +1 -1
  39. package/dist/commands/add-package.js +44 -30
  40. package/dist/commands/add-package.js.map +1 -1
  41. package/dist/commands/build.d.ts.map +1 -1
  42. package/dist/commands/build.js +157 -11
  43. package/dist/commands/build.js.map +1 -1
  44. package/dist/commands/generate.d.ts.map +1 -1
  45. package/dist/commands/generate.js +47 -69
  46. package/dist/commands/generate.js.map +1 -1
  47. package/dist/commands/init.d.ts +10 -19
  48. package/dist/commands/init.d.ts.map +1 -1
  49. package/dist/commands/init.js +150 -260
  50. package/dist/commands/init.js.map +1 -1
  51. package/dist/commands/init.test.js +21 -51
  52. package/dist/commands/init.test.js.map +1 -1
  53. package/dist/commands/pack.js +1 -1
  54. package/dist/commands/pack.js.map +1 -1
  55. package/dist/commands/remove-nuget.d.ts +1 -1
  56. package/dist/commands/remove-nuget.d.ts.map +1 -1
  57. package/dist/commands/remove-nuget.js +3 -3
  58. package/dist/commands/remove-nuget.js.map +1 -1
  59. package/dist/commands/restore.d.ts +1 -1
  60. package/dist/commands/restore.d.ts.map +1 -1
  61. package/dist/commands/restore.js +42 -61
  62. package/dist/commands/restore.js.map +1 -1
  63. package/dist/commands/restore.test.js +42 -18
  64. package/dist/commands/restore.test.js.map +1 -1
  65. package/dist/commands/update-nuget.d.ts +1 -1
  66. package/dist/commands/update-nuget.d.ts.map +1 -1
  67. package/dist/commands/update-nuget.js +3 -3
  68. package/dist/commands/update-nuget.js.map +1 -1
  69. package/dist/config.d.ts +18 -9
  70. package/dist/config.d.ts.map +1 -1
  71. package/dist/config.js +212 -156
  72. package/dist/config.js.map +1 -1
  73. package/dist/config.test.js +156 -147
  74. package/dist/config.test.js.map +1 -1
  75. package/dist/dotnet/runtime-assets.d.ts +1 -0
  76. package/dist/dotnet/runtime-assets.d.ts.map +1 -1
  77. package/dist/dotnet/runtime-assets.js +30 -0
  78. package/dist/dotnet/runtime-assets.js.map +1 -1
  79. package/dist/types.d.ts +59 -36
  80. package/dist/types.d.ts.map +1 -1
  81. package/package.json +5 -5
@@ -1,20 +1,45 @@
1
1
  /**
2
- * tsonic project init command
2
+ * tsonic init - initialize a mandatory Tsonic workspace.
3
+ *
4
+ * Workspace layout (airplane-grade, deterministic):
5
+ * tsonic.workspace.json
6
+ * libs/
7
+ * packages/<workspaceName>/
8
+ * tsonic.json
9
+ * package.json
10
+ * src/App.ts
3
11
  */
4
- import { writeFileSync, existsSync, readFileSync, mkdirSync, } from "node:fs";
5
- import { join } from "node:path";
12
+ import { existsSync, mkdirSync, readFileSync, writeFileSync, } from "node:fs";
13
+ import { basename, join } from "node:path";
6
14
  import { spawnSync } from "node:child_process";
7
- import { copyRuntimeDllsToProjectLib } from "../dotnet/runtime-assets.js";
8
- const DEFAULT_GITIGNORE = `# .NET build artifacts
9
- generated/bin/
10
- generated/obj/
15
+ import { copyRuntimeDllsToWorkspaceLibs } from "../dotnet/runtime-assets.js";
16
+ // Unified CLI package version - installed as devDependency for npm scripts.
17
+ const CLI_PACKAGE = { name: "tsonic", version: "latest" };
18
+ export const getTypePackageInfo = (options = {}) => {
19
+ const js = options.js === true;
20
+ const nodejs = options.nodejs === true;
21
+ const packages = [
22
+ CLI_PACKAGE,
23
+ { name: "@tsonic/core", version: "latest" },
24
+ { name: "@tsonic/globals", version: "latest" },
25
+ ...(js ? [{ name: "@tsonic/js", version: "latest" }] : []),
26
+ ...(nodejs ? [{ name: "@tsonic/nodejs", version: "latest" }] : []),
27
+ ];
28
+ return {
29
+ packages,
30
+ typeRoots: ["node_modules/@tsonic/globals"],
31
+ };
32
+ };
33
+ const DEFAULT_ROOT_GITIGNORE = `# .NET build artifacts (per-project)
34
+ packages/*/generated/bin/
35
+ packages/*/generated/obj/
11
36
 
12
37
  # Optional: Uncomment to ignore generated C# files
13
- # generated/**/*.cs
38
+ # packages/*/generated/**/*.cs
14
39
 
15
40
  # Output executables
16
- out/
17
- *.exe
41
+ packages/*/out/
42
+ packages/*/*.exe
18
43
 
19
44
  # Dependencies
20
45
  node_modules/
@@ -25,15 +50,6 @@ node_modules/
25
50
  const SAMPLE_MAIN_TS = `import { Console } from "@tsonic/dotnet/System.js";
26
51
  import { File } from "@tsonic/dotnet/System.IO.js";
27
52
 
28
- export function main(): void {
29
- Console.writeLine("Reading README.md...");
30
- const content = File.readAllText("./README.md");
31
- Console.writeLine(content);
32
- }
33
- `;
34
- const SAMPLE_MAIN_TS_PURE = `import { Console } from "@tsonic/dotnet-pure/System.js";
35
- import { File } from "@tsonic/dotnet-pure/System.IO.js";
36
-
37
53
  export function main(): void {
38
54
  Console.WriteLine("Reading README.md...");
39
55
  const content = File.ReadAllText("./README.md");
@@ -43,15 +59,6 @@ export function main(): void {
43
59
  const SAMPLE_MAIN_TS_JS = `import { Console } from "@tsonic/dotnet/System.js";
44
60
  import { console, JSON } from "@tsonic/js/index.js";
45
61
 
46
- export function main(): void {
47
- Console.writeLine("JSRuntime JSON example...");
48
- const value = JSON.parse<{ x: number }>('{"x": 1}');
49
- console.log(JSON.stringify(value));
50
- }
51
- `;
52
- const SAMPLE_MAIN_TS_JS_PURE = `import { Console } from "@tsonic/dotnet-pure/System.js";
53
- import { console, JSON } from "@tsonic/js/index.js";
54
-
55
62
  export function main(): void {
56
63
  Console.WriteLine("JSRuntime JSON example...");
57
64
  const value = JSON.parse<{ x: number }>('{"x": 1}');
@@ -64,276 +71,159 @@ export function main(): void {
64
71
  console.log("Hello from @tsonic/nodejs");
65
72
  }
66
73
  `;
67
- const SAMPLE_README = `# My Tsonic Project
68
-
69
- This is a sample Tsonic project that demonstrates .NET interop.
70
-
71
- ## Getting Started
72
-
73
- Build and run the project:
74
-
75
- \`\`\`bash
76
- npm run build
77
- ./out/app
78
- \`\`\`
79
-
80
- Or run directly:
81
-
82
- \`\`\`bash
83
- npm run dev
84
- \`\`\`
85
-
86
- ## Project Structure
87
-
88
- - \`src/App.ts\` - Entry point
89
- - \`tsonic.json\` - Project configuration
90
- - \`generated/\` - Generated C# code (gitignored)
91
- `;
92
- // Unified CLI package version - installed as devDependency for npm run build/dev
93
- const CLI_PACKAGE = { name: "tsonic", version: "latest" };
94
- /**
95
- * Get type package info
96
- *
97
- * typeRoots: Only ambient globals packages (provide global types without imports)
98
- * packages: All type packages to install (includes explicit import packages)
99
- *
100
- * Package structure:
101
- * - @tsonic/core: Core types (int, float, etc.) - imported as @tsonic/core/types.js
102
- * - @tsonic/globals depends on @tsonic/dotnet (camelCase BCL methods)
103
- * - @tsonic/globals-pure depends on @tsonic/dotnet-pure (PascalCase CLR naming)
104
- * - @tsonic/nodejs has @tsonic/dotnet as peerDependency (uses whichever globals provides)
105
- */
106
- export const getTypePackageInfo = (options = {}) => {
107
- const js = options.js === true;
108
- const nodejs = options.nodejs === true;
109
- const pure = options.pure === true;
110
- // Core package is always included (provides int, float, etc.)
111
- const corePackage = { name: "@tsonic/core", version: "latest" };
112
- // - @tsonic/cli: the compiler CLI (provides `tsonic` command)
113
- // - @tsonic/core: core types (int, float, etc.) - explicit import
114
- // - @tsonic/globals[-pure]: base types + BCL methods (transitive @tsonic/dotnet[-pure]) - needs typeRoots
115
- // - @tsonic/nodejs: Node.js interop (peerDep on @tsonic/dotnet, satisfied by globals)
116
- const globalsPackage = pure ? "@tsonic/globals-pure" : "@tsonic/globals";
117
- const packages = [
118
- CLI_PACKAGE,
119
- corePackage,
120
- { name: globalsPackage, version: "latest" },
121
- ];
122
- // JSRuntime / nodejs bindings currently import from @tsonic/dotnet (not dotnet-pure).
123
- // In --pure mode, ensure @tsonic/dotnet is installed so these packages typecheck.
124
- if (pure && (js || nodejs)) {
125
- packages.push({ name: "@tsonic/dotnet", version: "latest" });
126
- }
127
- if (js) {
128
- packages.push({ name: "@tsonic/js", version: "latest" });
129
- }
130
- if (nodejs) {
131
- packages.push({ name: "@tsonic/nodejs", version: "latest" });
132
- }
133
- return {
134
- packages,
135
- typeRoots: [`node_modules/${globalsPackage}`],
136
- };
137
- };
138
- /**
139
- * Generate tsonic.json config
140
- */
141
- const generateConfig = (includeTypeRoots, libraryPaths = [], pure = false) => {
142
- const config = {
143
- $schema: "https://tsonic.org/schema/v1.json",
144
- rootNamespace: "MyApp",
145
- entryPoint: "src/App.ts",
146
- sourceRoot: "src",
147
- outputDirectory: "generated",
148
- outputName: "app",
149
- optimize: "speed",
150
- buildOptions: {
151
- stripSymbols: true,
152
- invariantGlobalization: true,
153
- },
154
- };
155
- if (includeTypeRoots || libraryPaths.length > 0) {
156
- const typeInfo = getTypePackageInfo({ pure });
157
- const dotnet = {};
158
- if (includeTypeRoots) {
159
- dotnet.typeRoots = typeInfo.typeRoots;
160
- }
161
- if (libraryPaths.length > 0) {
162
- dotnet.libraries = [...libraryPaths];
163
- }
164
- config.dotnet = dotnet;
165
- }
166
- return JSON.stringify(config, null, 2) + "\n";
167
- };
168
- /**
169
- * Create or update package.json with scripts and metadata
170
- */
171
- const createOrUpdatePackageJson = (packageJsonPath) => {
172
- let packageJson;
74
+ const createOrUpdateRootPackageJson = (workspaceRoot) => {
75
+ const packageJsonPath = join(workspaceRoot, "package.json");
76
+ const workspaceName = basename(workspaceRoot);
77
+ let pkg;
173
78
  if (existsSync(packageJsonPath)) {
174
- // Merge with existing package.json
175
- const existing = readFileSync(packageJsonPath, "utf-8");
176
- packageJson = JSON.parse(existing);
177
- // Ensure required fields exist
178
- if (!packageJson.name) {
179
- packageJson.name = "my-tsonic-app";
180
- }
181
- if (!packageJson.version) {
182
- packageJson.version = "1.0.0";
183
- }
184
- if (!packageJson.type) {
185
- packageJson.type = "module";
186
- }
187
- // Merge scripts
188
- const existingScripts = packageJson.scripts || {};
189
- packageJson.scripts = {
190
- ...existingScripts,
191
- build: "tsonic build src/App.ts",
192
- dev: "tsonic run src/App.ts",
193
- };
194
- // Ensure devDependencies exists
195
- if (!packageJson.devDependencies) {
196
- packageJson.devDependencies = {};
197
- }
79
+ pkg = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
198
80
  }
199
81
  else {
200
- // Create new package.json
201
- packageJson = {
202
- name: "my-tsonic-app",
82
+ pkg = {
83
+ name: workspaceName,
84
+ private: true,
203
85
  version: "1.0.0",
204
86
  type: "module",
205
- scripts: {
206
- build: "tsonic build src/App.ts",
207
- dev: "tsonic run src/App.ts",
208
- },
209
- devDependencies: {},
210
87
  };
211
88
  }
212
- writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + "\n", "utf-8");
89
+ pkg.workspaces = ["packages/*"];
90
+ const scripts = pkg.scripts ?? {};
91
+ pkg.scripts = {
92
+ ...scripts,
93
+ build: "tsonic build",
94
+ dev: "tsonic run",
95
+ };
96
+ pkg.devDependencies = pkg.devDependencies ?? {};
97
+ writeFileSync(packageJsonPath, JSON.stringify(pkg, null, 2) + "\n", "utf-8");
213
98
  };
214
- /**
215
- * Install npm package
216
- */
217
- const installPackage = (packageName, version) => {
218
- const result = spawnSync("npm", ["install", "--save-dev", `${packageName}@${version}`], {
99
+ const writeWorkspaceConfig = (workspaceRoot, config) => {
100
+ writeFileSync(join(workspaceRoot, "tsonic.workspace.json"), JSON.stringify(config, null, 2) + "\n", "utf-8");
101
+ };
102
+ const writeProjectConfig = (projectRoot, config) => {
103
+ writeFileSync(join(projectRoot, "tsonic.json"), JSON.stringify(config, null, 2) + "\n", "utf-8");
104
+ };
105
+ const npmInstallDev = (workspaceRoot, spec) => {
106
+ const result = spawnSync("npm", ["install", "--save-dev", spec, "--no-fund", "--no-audit"], {
107
+ cwd: workspaceRoot,
219
108
  stdio: "inherit",
220
109
  encoding: "utf-8",
221
110
  });
222
111
  if (result.status !== 0) {
223
- return {
224
- ok: false,
225
- error: `Failed to install ${packageName}@${version}`,
226
- };
112
+ return { ok: false, error: `npm install failed: ${spec}` };
227
113
  }
228
114
  return { ok: true, value: undefined };
229
115
  };
230
- /**
231
- * Initialize a new Tsonic project
232
- */
233
- export const initProject = (cwd, options = {}) => {
234
- const tsonicJsonPath = join(cwd, "tsonic.json");
235
- const gitignorePath = join(cwd, ".gitignore");
236
- const srcDir = join(cwd, "src");
237
- const appTsPath = join(srcDir, "App.ts");
238
- const readmePath = join(cwd, "README.md");
239
- const packageJsonPath = join(cwd, "package.json");
240
- // Check if tsonic.json already exists
241
- if (existsSync(tsonicJsonPath)) {
116
+ export const initWorkspace = (workspaceRoot, options = {}) => {
117
+ const workspaceConfigPath = join(workspaceRoot, "tsonic.workspace.json");
118
+ if (existsSync(workspaceConfigPath)) {
242
119
  return {
243
120
  ok: false,
244
- error: "tsonic.json already exists. Project is already initialized.",
121
+ error: "tsonic.workspace.json already exists. Workspace is already initialized.",
245
122
  };
246
123
  }
124
+ const name = basename(workspaceRoot);
125
+ const packagesDir = join(workspaceRoot, "packages");
126
+ const libsDir = join(workspaceRoot, "libs");
127
+ const projectRoot = join(packagesDir, name);
247
128
  try {
248
- // Create or update package.json FIRST (before npm install)
249
- const packageJsonExists = existsSync(packageJsonPath);
250
- createOrUpdatePackageJson(packageJsonPath);
251
- console.log(packageJsonExists ? " Updated package.json" : "✓ Created package.json");
252
- // Install type declarations
253
- const shouldInstallTypes = !options.skipTypes;
254
- const js = options.js ?? false;
255
- const nodejs = options.nodejs ?? false;
256
- const pure = options.pure ?? false;
257
- const typeInfo = getTypePackageInfo({ js, nodejs, pure });
129
+ mkdirSync(packagesDir, { recursive: true });
130
+ mkdirSync(libsDir, { recursive: true });
131
+ mkdirSync(projectRoot, { recursive: true });
132
+ mkdirSync(join(projectRoot, "src"), { recursive: true });
133
+ // Root package.json (npm workspaces)
134
+ createOrUpdateRootPackageJson(workspaceRoot);
135
+ // Workspace config (deps live here)
136
+ let workspaceConfig = {
137
+ $schema: "https://tsonic.org/schema/workspace/v1.json",
138
+ dotnetVersion: "net10.0",
139
+ dotnet: {
140
+ typeRoots: ["node_modules/@tsonic/globals"],
141
+ libraries: [],
142
+ frameworkReferences: [],
143
+ packageReferences: [],
144
+ },
145
+ };
146
+ // Install type declarations at workspace root
147
+ const shouldInstallTypes = options.skipTypes !== true;
148
+ const js = options.js === true;
149
+ const nodejs = options.nodejs === true;
258
150
  if (shouldInstallTypes) {
151
+ const typeInfo = getTypePackageInfo({ js, nodejs });
259
152
  for (const pkg of typeInfo.packages) {
260
153
  const version = options.typesVersion ?? pkg.version;
261
- console.log(`Installing type declarations (${pkg.name}@${version})...`);
262
- const installResult = installPackage(pkg.name, version);
263
- if (!installResult.ok) {
264
- return installResult;
265
- }
266
- console.log(`✓ Installed ${pkg.name}`);
154
+ const r = npmInstallDev(workspaceRoot, `${pkg.name}@${version}`);
155
+ if (!r.ok)
156
+ return r;
267
157
  }
268
158
  }
269
- // Copy runtime DLLs to lib/ directory
270
- // This includes:
271
- // - Tsonic.Runtime.dll (always)
272
- // - Tsonic.JSRuntime.dll (if --js or --nodejs)
273
- // - nodejs.dll (if --nodejs)
274
- // Note: These are NOT added to dotnet.libraries - findRuntimeDlls in generate.ts looks in lib/ first
275
- console.log("Copying runtime DLLs to lib/...");
276
- const copyResult = copyRuntimeDllsToProjectLib(cwd, {
277
- includeJsRuntime: js || nodejs,
278
- includeNodejs: nodejs,
279
- });
280
- if (!copyResult.ok) {
281
- // Log warning but continue - user can add manually later
282
- console.log(`⚠ Warning: ${copyResult.error}`);
283
- }
284
- else {
285
- for (const path of copyResult.value) {
286
- console.log(`✓ Copied ${path.split("/").pop()}`);
159
+ // Optional runtime assemblies (JSRuntime + nodejs) are treated like any other DLL:
160
+ // copy them into ./libs and add to workspace dotnet.libraries so csproj references them.
161
+ if (js || nodejs) {
162
+ const copyResult = copyRuntimeDllsToWorkspaceLibs(workspaceRoot, {
163
+ includeJsRuntime: true,
164
+ includeNodejs: nodejs,
165
+ });
166
+ if (!copyResult.ok)
167
+ return copyResult;
168
+ const libs = [...(workspaceConfig.dotnet?.libraries ?? [])];
169
+ if (copyResult.value.includes("libs/Tsonic.JSRuntime.dll")) {
170
+ libs.push("libs/Tsonic.JSRuntime.dll");
287
171
  }
288
- }
289
- // Create tsonic.json
290
- // Note: Runtime DLLs in lib/ are found automatically by generate command
291
- const config = generateConfig(shouldInstallTypes, [], pure);
292
- writeFileSync(tsonicJsonPath, config, "utf-8");
293
- console.log("✓ Created tsonic.json");
294
- // Create or append to .gitignore
295
- if (existsSync(gitignorePath)) {
296
- const existing = readFileSync(gitignorePath, "utf-8");
297
- if (!existing.includes("generated/")) {
298
- writeFileSync(gitignorePath, existing + "\n" + DEFAULT_GITIGNORE, "utf-8");
299
- console.log("✓ Updated .gitignore");
172
+ if (copyResult.value.includes("libs/nodejs.dll")) {
173
+ libs.push("libs/nodejs.dll");
300
174
  }
175
+ workspaceConfig = {
176
+ ...workspaceConfig,
177
+ dotnet: {
178
+ ...(workspaceConfig.dotnet ?? {}),
179
+ libraries: Array.from(new Set(libs)),
180
+ },
181
+ };
301
182
  }
302
- else {
303
- writeFileSync(gitignorePath, DEFAULT_GITIGNORE, "utf-8");
304
- console.log("✓ Created .gitignore");
305
- }
306
- // Create src directory and App.ts
307
- if (!existsSync(srcDir)) {
308
- mkdirSync(srcDir, { recursive: true });
183
+ writeWorkspaceConfig(workspaceRoot, workspaceConfig);
184
+ // Project package.json (minimal)
185
+ const projectPkgJson = join(projectRoot, "package.json");
186
+ if (!existsSync(projectPkgJson)) {
187
+ writeFileSync(projectPkgJson, JSON.stringify({
188
+ name,
189
+ private: true,
190
+ version: "1.0.0",
191
+ type: "module",
192
+ }, null, 2) + "\n", "utf-8");
309
193
  }
194
+ // Project config
195
+ writeProjectConfig(projectRoot, {
196
+ $schema: "https://tsonic.org/schema/v1.json",
197
+ rootNamespace: "MyApp",
198
+ entryPoint: "src/App.ts",
199
+ sourceRoot: "src",
200
+ outputDirectory: "generated",
201
+ outputName: name,
202
+ output: { type: "executable" },
203
+ });
204
+ // Sample source
205
+ const appTsPath = join(projectRoot, "src", "App.ts");
310
206
  if (!existsSync(appTsPath)) {
311
- const sample = nodejs
312
- ? SAMPLE_MAIN_TS_NODEJS
313
- : js
314
- ? (pure ? SAMPLE_MAIN_TS_JS_PURE : SAMPLE_MAIN_TS_JS)
315
- : pure
316
- ? SAMPLE_MAIN_TS_PURE
317
- : SAMPLE_MAIN_TS;
207
+ const sample = nodejs ? SAMPLE_MAIN_TS_NODEJS : js ? SAMPLE_MAIN_TS_JS : SAMPLE_MAIN_TS;
318
208
  writeFileSync(appTsPath, sample, "utf-8");
319
- console.log("✓ Created src/App.ts");
320
209
  }
321
- // Create README.md
322
- if (!existsSync(readmePath)) {
323
- writeFileSync(readmePath, SAMPLE_README, "utf-8");
324
- console.log("✓ Created README.md");
210
+ // Root .gitignore
211
+ const gitignorePath = join(workspaceRoot, ".gitignore");
212
+ if (existsSync(gitignorePath)) {
213
+ const existing = readFileSync(gitignorePath, "utf-8");
214
+ if (!existing.includes("packages/*/generated/")) {
215
+ writeFileSync(gitignorePath, existing + "\n" + DEFAULT_ROOT_GITIGNORE, "utf-8");
216
+ }
217
+ }
218
+ else {
219
+ writeFileSync(gitignorePath, DEFAULT_ROOT_GITIGNORE, "utf-8");
325
220
  }
326
- // Note: .csproj is generated by the build command with proper runtime DLL references
327
- console.log("\n✓ Project initialized successfully!");
328
- console.log("\nNext steps:");
329
- console.log(" npm run build # Build executable");
330
- console.log(" npm run dev # Run directly");
331
221
  return { ok: true, value: undefined };
332
222
  }
333
223
  catch (error) {
334
224
  return {
335
225
  ok: false,
336
- error: `Failed to initialize project: ${error instanceof Error ? error.message : String(error)}`,
226
+ error: `Failed to initialize workspace: ${error instanceof Error ? error.message : String(error)}`,
337
227
  };
338
228
  }
339
229
  };
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}