@tsonic/cli 0.0.1

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 (82) hide show
  1. package/dist/cli/constants.d.ts +5 -0
  2. package/dist/cli/constants.d.ts.map +1 -0
  3. package/dist/cli/constants.js +5 -0
  4. package/dist/cli/constants.js.map +1 -0
  5. package/dist/cli/dispatcher.d.ts +8 -0
  6. package/dist/cli/dispatcher.d.ts.map +1 -0
  7. package/dist/cli/dispatcher.js +111 -0
  8. package/dist/cli/dispatcher.js.map +1 -0
  9. package/dist/cli/help.d.ts +8 -0
  10. package/dist/cli/help.d.ts.map +1 -0
  11. package/dist/cli/help.js +55 -0
  12. package/dist/cli/help.js.map +1 -0
  13. package/dist/cli/index.d.ts +8 -0
  14. package/dist/cli/index.d.ts.map +1 -0
  15. package/dist/cli/index.js +8 -0
  16. package/dist/cli/index.js.map +1 -0
  17. package/dist/cli/parser.d.ts +14 -0
  18. package/dist/cli/parser.d.ts.map +1 -0
  19. package/dist/cli/parser.js +113 -0
  20. package/dist/cli/parser.js.map +1 -0
  21. package/dist/cli/parser.test.d.ts +5 -0
  22. package/dist/cli/parser.test.d.ts.map +1 -0
  23. package/dist/cli/parser.test.js +221 -0
  24. package/dist/cli/parser.test.js.map +1 -0
  25. package/dist/cli.d.ts +6 -0
  26. package/dist/cli.d.ts.map +1 -0
  27. package/dist/cli.js +6 -0
  28. package/dist/cli.js.map +1 -0
  29. package/dist/commands/build.d.ts +11 -0
  30. package/dist/commands/build.d.ts.map +1 -0
  31. package/dist/commands/build.js +214 -0
  32. package/dist/commands/build.js.map +1 -0
  33. package/dist/commands/emit.d.ts +12 -0
  34. package/dist/commands/emit.d.ts.map +1 -0
  35. package/dist/commands/emit.js +311 -0
  36. package/dist/commands/emit.js.map +1 -0
  37. package/dist/commands/init.d.ts +15 -0
  38. package/dist/commands/init.d.ts.map +1 -0
  39. package/dist/commands/init.js +270 -0
  40. package/dist/commands/init.js.map +1 -0
  41. package/dist/commands/pack.d.ts +11 -0
  42. package/dist/commands/pack.d.ts.map +1 -0
  43. package/dist/commands/pack.js +92 -0
  44. package/dist/commands/pack.js.map +1 -0
  45. package/dist/commands/run.d.ts +11 -0
  46. package/dist/commands/run.d.ts.map +1 -0
  47. package/dist/commands/run.js +40 -0
  48. package/dist/commands/run.js.map +1 -0
  49. package/dist/config.d.ts +17 -0
  50. package/dist/config.d.ts.map +1 -0
  51. package/dist/config.js +160 -0
  52. package/dist/config.js.map +1 -0
  53. package/dist/config.test.d.ts +5 -0
  54. package/dist/config.test.d.ts.map +1 -0
  55. package/dist/config.test.js +283 -0
  56. package/dist/config.test.js.map +1 -0
  57. package/dist/index.d.ts +8 -0
  58. package/dist/index.d.ts.map +1 -0
  59. package/dist/index.js +20 -0
  60. package/dist/index.js.map +1 -0
  61. package/dist/types.d.ts +111 -0
  62. package/dist/types.d.ts.map +1 -0
  63. package/dist/types.js +5 -0
  64. package/dist/types.js.map +1 -0
  65. package/package.json +38 -0
  66. package/src/cli/constants.ts +5 -0
  67. package/src/cli/dispatcher.ts +129 -0
  68. package/src/cli/help.ts +56 -0
  69. package/src/cli/index.ts +8 -0
  70. package/src/cli/parser.test.ts +259 -0
  71. package/src/cli/parser.ts +128 -0
  72. package/src/cli.ts +6 -0
  73. package/src/commands/build.ts +264 -0
  74. package/src/commands/emit.ts +406 -0
  75. package/src/commands/init.ts +334 -0
  76. package/src/commands/pack.ts +114 -0
  77. package/src/commands/run.ts +51 -0
  78. package/src/config.test.ts +337 -0
  79. package/src/config.ts +205 -0
  80. package/src/index.ts +23 -0
  81. package/src/types.ts +121 -0
  82. package/tsconfig.json +18 -0
package/dist/cli.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ /**
2
+ * CLI argument parsing and command dispatch
3
+ * Main dispatcher - re-exports from cli/ subdirectory
4
+ */
5
+ export { VERSION, showHelp, parseArgs, runCli } from "./cli/index.js";
6
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/cli.js ADDED
@@ -0,0 +1,6 @@
1
+ /**
2
+ * CLI argument parsing and command dispatch
3
+ * Main dispatcher - re-exports from cli/ subdirectory
4
+ */
5
+ export { VERSION, showHelp, parseArgs, runCli } from "./cli/index.js";
6
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * tsonic build command - Build executable or library
3
+ */
4
+ import type { ResolvedConfig, Result } from "../types.js";
5
+ /**
6
+ * Main build command - dispatches to executable or library build
7
+ */
8
+ export declare const buildCommand: (config: ResolvedConfig) => Result<{
9
+ outputPath: string;
10
+ }, string>;
11
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AA6N1D;;GAEG;AACH,eAAO,MAAM,YAAY,GACvB,QAAQ,cAAc,KACrB,MAAM,CAAC;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,CA8BvC,CAAC"}
@@ -0,0 +1,214 @@
1
+ /**
2
+ * tsonic build command - Build executable or library
3
+ */
4
+ import { spawnSync } from "node:child_process";
5
+ import { join, relative } from "node:path";
6
+ import { copyFileSync, chmodSync, existsSync, mkdirSync } from "node:fs";
7
+ import { emitCommand } from "./emit.js";
8
+ /**
9
+ * Build native executable
10
+ */
11
+ const buildExecutable = (config, generatedDir) => {
12
+ const { outputName, rid, quiet, verbose } = config;
13
+ // Step 2: Run dotnet publish
14
+ if (!quiet) {
15
+ console.log("Step 2/3: Compiling with dotnet publish...");
16
+ }
17
+ const publishArgs = [
18
+ "publish",
19
+ "tsonic.csproj",
20
+ "-c",
21
+ "Release",
22
+ "-r",
23
+ rid,
24
+ "--nologo",
25
+ ];
26
+ if (quiet) {
27
+ publishArgs.push("--verbosity", "quiet");
28
+ }
29
+ else if (verbose) {
30
+ publishArgs.push("--verbosity", "detailed");
31
+ }
32
+ else {
33
+ publishArgs.push("--verbosity", "minimal");
34
+ }
35
+ const publishResult = spawnSync("dotnet", publishArgs, {
36
+ cwd: generatedDir,
37
+ stdio: verbose ? "inherit" : "pipe",
38
+ encoding: "utf-8",
39
+ });
40
+ if (publishResult.status !== 0) {
41
+ const errorMsg = publishResult.stderr || publishResult.stdout || "Unknown error";
42
+ return {
43
+ ok: false,
44
+ error: `dotnet publish failed:\n${errorMsg}`,
45
+ };
46
+ }
47
+ // Step 3: Copy output binary
48
+ if (!quiet) {
49
+ console.log("Step 3/3: Copying output binary...");
50
+ }
51
+ const binaryName = process.platform === "win32" ? `${outputName}.exe` : outputName;
52
+ const publishDir = join(generatedDir, "bin", "Release", config.dotnetVersion, rid, "publish");
53
+ const sourceBinary = join(publishDir, binaryName);
54
+ const targetBinary = join(process.cwd(), binaryName);
55
+ if (!existsSync(sourceBinary)) {
56
+ return {
57
+ ok: false,
58
+ error: `Built binary not found at ${sourceBinary}`,
59
+ };
60
+ }
61
+ try {
62
+ copyFileSync(sourceBinary, targetBinary);
63
+ // Make executable on Unix
64
+ if (process.platform !== "win32") {
65
+ chmodSync(targetBinary, 0o755);
66
+ }
67
+ if (!quiet) {
68
+ const relativePath = relative(process.cwd(), targetBinary);
69
+ console.log(`\n✓ Build complete: ${relativePath}`);
70
+ }
71
+ return {
72
+ ok: true,
73
+ value: { outputPath: targetBinary },
74
+ };
75
+ }
76
+ catch (error) {
77
+ return {
78
+ ok: false,
79
+ error: `Failed to copy binary: ${error instanceof Error ? error.message : String(error)}`,
80
+ };
81
+ }
82
+ };
83
+ /**
84
+ * Build library
85
+ */
86
+ const buildLibrary = (config, generatedDir) => {
87
+ const { outputName, quiet, verbose } = config;
88
+ const targetFrameworks = config.outputConfig.targetFrameworks ?? [
89
+ config.dotnetVersion,
90
+ ];
91
+ // Step 2: Run dotnet build
92
+ if (!quiet) {
93
+ console.log("Step 2/3: Compiling library with dotnet build...");
94
+ }
95
+ const buildArgs = ["build", "tsonic.csproj", "-c", "Release", "--nologo"];
96
+ if (quiet) {
97
+ buildArgs.push("--verbosity", "quiet");
98
+ }
99
+ else if (verbose) {
100
+ buildArgs.push("--verbosity", "detailed");
101
+ }
102
+ else {
103
+ buildArgs.push("--verbosity", "minimal");
104
+ }
105
+ const buildResult = spawnSync("dotnet", buildArgs, {
106
+ cwd: generatedDir,
107
+ stdio: verbose ? "inherit" : "pipe",
108
+ encoding: "utf-8",
109
+ });
110
+ if (buildResult.status !== 0) {
111
+ const errorMsg = buildResult.stderr || buildResult.stdout || "Unknown error";
112
+ return {
113
+ ok: false,
114
+ error: `dotnet build failed:\n${errorMsg}`,
115
+ };
116
+ }
117
+ // Step 3: Copy output library artifacts
118
+ if (!quiet) {
119
+ console.log("Step 3/3: Copying library artifacts...");
120
+ }
121
+ const outputDir = join(process.cwd(), "dist");
122
+ try {
123
+ // Create output directory
124
+ if (!existsSync(outputDir)) {
125
+ mkdirSync(outputDir, { recursive: true });
126
+ }
127
+ // Copy artifacts for each target framework
128
+ const copiedFiles = [];
129
+ for (const framework of targetFrameworks) {
130
+ const buildDir = join(generatedDir, "bin", "Release", framework);
131
+ if (!existsSync(buildDir)) {
132
+ continue;
133
+ }
134
+ const frameworkOutputDir = join(outputDir, framework);
135
+ if (!existsSync(frameworkOutputDir)) {
136
+ mkdirSync(frameworkOutputDir, { recursive: true });
137
+ }
138
+ // Copy .dll
139
+ const dllSource = join(buildDir, `${outputName}.dll`);
140
+ if (existsSync(dllSource)) {
141
+ const dllTarget = join(frameworkOutputDir, `${outputName}.dll`);
142
+ copyFileSync(dllSource, dllTarget);
143
+ copiedFiles.push(relative(process.cwd(), dllTarget));
144
+ }
145
+ // Copy .xml (documentation)
146
+ const xmlSource = join(buildDir, `${outputName}.xml`);
147
+ if (existsSync(xmlSource)) {
148
+ const xmlTarget = join(frameworkOutputDir, `${outputName}.xml`);
149
+ copyFileSync(xmlSource, xmlTarget);
150
+ copiedFiles.push(relative(process.cwd(), xmlTarget));
151
+ }
152
+ // Copy .pdb (symbols)
153
+ const pdbSource = join(buildDir, `${outputName}.pdb`);
154
+ if (existsSync(pdbSource)) {
155
+ const pdbTarget = join(frameworkOutputDir, `${outputName}.pdb`);
156
+ copyFileSync(pdbSource, pdbTarget);
157
+ copiedFiles.push(relative(process.cwd(), pdbTarget));
158
+ }
159
+ }
160
+ if (copiedFiles.length === 0) {
161
+ return {
162
+ ok: false,
163
+ error: "No library artifacts found to copy",
164
+ };
165
+ }
166
+ if (!quiet) {
167
+ console.log(`\n✓ Build complete. Artifacts copied to dist/:`);
168
+ for (const file of copiedFiles) {
169
+ console.log(` - ${file}`);
170
+ }
171
+ }
172
+ return {
173
+ ok: true,
174
+ value: { outputPath: outputDir },
175
+ };
176
+ }
177
+ catch (error) {
178
+ return {
179
+ ok: false,
180
+ error: `Failed to copy library artifacts: ${error instanceof Error ? error.message : String(error)}`,
181
+ };
182
+ }
183
+ };
184
+ /**
185
+ * Main build command - dispatches to executable or library build
186
+ */
187
+ export const buildCommand = (config) => {
188
+ const { outputDirectory, quiet } = config;
189
+ const outputType = config.outputConfig.type ?? "executable";
190
+ // Step 1: Emit C# code
191
+ if (!quiet) {
192
+ console.log("Step 1/3: Generating C# code...");
193
+ }
194
+ const emitResult = emitCommand(config);
195
+ if (!emitResult.ok) {
196
+ return emitResult;
197
+ }
198
+ const generatedDir = emitResult.value.outputDir;
199
+ const csprojPath = join(generatedDir, "tsonic.csproj");
200
+ if (!existsSync(csprojPath)) {
201
+ return {
202
+ ok: false,
203
+ error: `No tsonic.csproj found in ${outputDirectory}/. This should have been created by emit.`,
204
+ };
205
+ }
206
+ // Dispatch to appropriate build function
207
+ if (outputType === "library") {
208
+ return buildLibrary(config, generatedDir);
209
+ }
210
+ else {
211
+ return buildExecutable(config, generatedDir);
212
+ }
213
+ };
214
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * tsonic emit command - Generate C# code only
3
+ */
4
+ import type { ResolvedConfig, Result } from "../types.js";
5
+ /**
6
+ * Emit C# code from TypeScript
7
+ */
8
+ export declare const emitCommand: (config: ResolvedConfig) => Result<{
9
+ filesGenerated: number;
10
+ outputDir: string;
11
+ }, string>;
12
+ //# sourceMappingURL=emit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit.d.ts","sourceRoot":"","sources":["../../src/commands/emit.ts"],"names":[],"mappings":"AAAA;;GAEG;AA0BH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAgH1D;;GAEG;AACH,eAAO,MAAM,WAAW,GACtB,QAAQ,cAAc,KACrB,MAAM,CAAC;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,CAoQ9D,CAAC"}
@@ -0,0 +1,311 @@
1
+ /**
2
+ * tsonic emit command - Generate C# code only
3
+ */
4
+ import { mkdirSync, writeFileSync, existsSync, readdirSync, copyFileSync, } from "node:fs";
5
+ import { join, dirname, relative, resolve } from "node:path";
6
+ import { buildModuleDependencyGraph, } from "@tsonic/frontend";
7
+ import { emitCSharpFiles } from "@tsonic/emitter";
8
+ import { generateCsproj, generateProgramCs, } from "@tsonic/backend";
9
+ /**
10
+ * Find project .csproj file in current directory
11
+ */
12
+ const findProjectCsproj = () => {
13
+ const cwd = process.cwd();
14
+ const files = readdirSync(cwd);
15
+ const csprojFile = files.find((f) => f.endsWith(".csproj"));
16
+ return csprojFile ? join(cwd, csprojFile) : null;
17
+ };
18
+ /**
19
+ * Find runtime DLLs from @tsonic/tsonic npm package
20
+ * Returns assembly references for the csproj file
21
+ */
22
+ const findRuntimeDlls = (runtime, outputDir) => {
23
+ // Try to find @tsonic/tsonic package runtime directory
24
+ const possiblePaths = [
25
+ // From project's node_modules
26
+ join(process.cwd(), "node_modules/@tsonic/tsonic/runtime"),
27
+ // From CLI's node_modules (when installed globally or via npx)
28
+ join(import.meta.dirname, "../../runtime"),
29
+ join(import.meta.dirname, "../../../runtime"),
30
+ ];
31
+ let runtimeDir = null;
32
+ for (const p of possiblePaths) {
33
+ if (existsSync(p)) {
34
+ runtimeDir = p;
35
+ break;
36
+ }
37
+ }
38
+ if (!runtimeDir) {
39
+ return [];
40
+ }
41
+ const refs = [];
42
+ // Calculate relative path from output directory to runtime directory
43
+ const relativeRuntimeDir = relative(outputDir, runtimeDir);
44
+ // Always include Tsonic.Runtime
45
+ const runtimeDll = join(runtimeDir, "Tsonic.Runtime.dll");
46
+ if (existsSync(runtimeDll)) {
47
+ refs.push({
48
+ name: "Tsonic.Runtime",
49
+ hintPath: join(relativeRuntimeDir, "Tsonic.Runtime.dll"),
50
+ });
51
+ }
52
+ // Include Tsonic.JSRuntime for js mode
53
+ if (runtime === "js") {
54
+ const jsRuntimeDll = join(runtimeDir, "Tsonic.JSRuntime.dll");
55
+ if (existsSync(jsRuntimeDll)) {
56
+ refs.push({
57
+ name: "Tsonic.JSRuntime",
58
+ hintPath: join(relativeRuntimeDir, "Tsonic.JSRuntime.dll"),
59
+ });
60
+ }
61
+ }
62
+ return refs;
63
+ };
64
+ /**
65
+ * Extract entry point information from IR module
66
+ */
67
+ const extractEntryInfo = (entryModule, runtime) => {
68
+ // Look for exported 'main' function
69
+ for (const exp of entryModule.exports) {
70
+ if (exp.kind === "declaration") {
71
+ const decl = exp.declaration;
72
+ if (decl.kind === "functionDeclaration" && decl.name === "main") {
73
+ return {
74
+ namespace: entryModule.namespace,
75
+ className: entryModule.className,
76
+ methodName: "main",
77
+ isAsync: decl.isAsync,
78
+ needsProgram: true,
79
+ runtime,
80
+ };
81
+ }
82
+ }
83
+ else if (exp.kind === "named" && exp.name === "main") {
84
+ // Named export of 'main'
85
+ // Look in body for the function declaration
86
+ for (const stmt of entryModule.body) {
87
+ if (stmt.kind === "functionDeclaration" && stmt.name === "main") {
88
+ return {
89
+ namespace: entryModule.namespace,
90
+ className: entryModule.className,
91
+ methodName: "main",
92
+ isAsync: stmt.isAsync,
93
+ needsProgram: true,
94
+ runtime,
95
+ };
96
+ }
97
+ }
98
+ }
99
+ }
100
+ // No main function found
101
+ return null;
102
+ };
103
+ /**
104
+ * Emit C# code from TypeScript
105
+ */
106
+ export const emitCommand = (config) => {
107
+ const { entryPoint, outputDirectory, rootNamespace, sourceRoot, packages, typeRoots, } = config;
108
+ // For libraries, entry point is optional
109
+ if (!entryPoint && config.outputConfig.type !== "library") {
110
+ return {
111
+ ok: false,
112
+ error: "Entry point is required for executable builds",
113
+ };
114
+ }
115
+ if (!config.quiet) {
116
+ const target = entryPoint ?? sourceRoot;
117
+ console.log(`Emitting C# code for ${target}...`);
118
+ }
119
+ try {
120
+ // For libraries without entry point, we need a different approach
121
+ // For now, require entry point (library multi-file support can be added later)
122
+ if (!entryPoint) {
123
+ return {
124
+ ok: false,
125
+ error: "Entry point is required (library multi-file support coming soon)",
126
+ };
127
+ }
128
+ // Combine typeRoots and libraries for TypeScript compilation
129
+ const allTypeRoots = [...typeRoots, ...config.libraries];
130
+ // Build dependency graph - this traverses all imports and builds IR for all modules
131
+ const compilerOptions = {
132
+ sourceRoot,
133
+ rootNamespace,
134
+ typeRoots: allTypeRoots,
135
+ verbose: config.verbose,
136
+ };
137
+ const graphResult = buildModuleDependencyGraph(entryPoint, compilerOptions);
138
+ if (!graphResult.ok) {
139
+ const errorMessages = graphResult.error
140
+ .map((d) => {
141
+ if (d.location) {
142
+ return `${d.location.file}:${d.location.line} ${d.message}`;
143
+ }
144
+ return d.message;
145
+ })
146
+ .join("\n");
147
+ return {
148
+ ok: false,
149
+ error: `TypeScript compilation failed:\n${errorMessages}`,
150
+ };
151
+ }
152
+ const { modules, entryModule } = graphResult.value;
153
+ if (config.verbose) {
154
+ console.log(` Discovered ${modules.length} TypeScript modules`);
155
+ for (const module of modules) {
156
+ console.log(` - ${module.filePath}`);
157
+ }
158
+ }
159
+ // irResult.value was an array of modules, now it's graphResult.value.modules
160
+ const irResult = { ok: true, value: modules };
161
+ // Emit C# code
162
+ const absoluteEntryPoint = entryPoint ? resolve(entryPoint) : undefined;
163
+ const emitResult = emitCSharpFiles(irResult.value, {
164
+ rootNamespace,
165
+ entryPointPath: absoluteEntryPoint,
166
+ libraries: config.libraries,
167
+ runtime: config.runtime,
168
+ });
169
+ if (!emitResult.ok) {
170
+ // Handle file name collision errors
171
+ for (const error of emitResult.errors) {
172
+ console.error(`error ${error.code}: ${error.message}`);
173
+ }
174
+ process.exit(1);
175
+ }
176
+ const csFiles = emitResult.files;
177
+ // Create output directory
178
+ const outputDir = join(process.cwd(), outputDirectory);
179
+ mkdirSync(outputDir, { recursive: true });
180
+ // Write C# files preserving directory structure
181
+ for (const [modulePath, csCode] of csFiles) {
182
+ // Convert module path to C# file path
183
+ // src/models/User.ts → generated/src/models/User.cs
184
+ const csPath = modulePath.replace(/\.ts$/, ".cs");
185
+ const fullPath = join(outputDir, csPath);
186
+ mkdirSync(dirname(fullPath), { recursive: true });
187
+ writeFileSync(fullPath, csCode, "utf-8");
188
+ if (config.verbose) {
189
+ const relPath = relative(process.cwd(), fullPath);
190
+ console.log(` Generated: ${relPath}`);
191
+ }
192
+ }
193
+ // Generate Program.cs entry point wrapper (only for executables)
194
+ if (absoluteEntryPoint) {
195
+ // entryModule is already provided by buildDependencyGraph
196
+ // But double-check by comparing relative paths
197
+ const entryRelative = relative(sourceRoot, absoluteEntryPoint).replace(/\\/g, "/");
198
+ const foundEntryModule = irResult.value.find((m) => m.filePath === entryRelative) ??
199
+ entryModule;
200
+ if (foundEntryModule) {
201
+ const entryInfo = extractEntryInfo(foundEntryModule, config.runtime);
202
+ if (entryInfo) {
203
+ const programCs = generateProgramCs(entryInfo);
204
+ const programPath = join(outputDir, "Program.cs");
205
+ writeFileSync(programPath, programCs, "utf-8");
206
+ if (config.verbose) {
207
+ console.log(` Generated: ${relative(process.cwd(), programPath)}`);
208
+ }
209
+ }
210
+ }
211
+ }
212
+ // Generate or copy existing .csproj
213
+ const csprojPath = join(outputDir, "tsonic.csproj");
214
+ const projectCsproj = findProjectCsproj();
215
+ if (projectCsproj) {
216
+ // Copy existing .csproj from project root (preserves user edits)
217
+ copyFileSync(projectCsproj, csprojPath);
218
+ if (config.verbose) {
219
+ console.log(` Copied: ${relative(process.cwd(), projectCsproj)} → ${relative(process.cwd(), csprojPath)} (user edits preserved)`);
220
+ }
221
+ }
222
+ else if (!existsSync(csprojPath)) {
223
+ // Find Tsonic runtime - try multiple approaches:
224
+ // 1. ProjectReference to .csproj (development/monorepo)
225
+ // 2. Assembly references to DLLs (npm installed package)
226
+ let runtimePath;
227
+ let assemblyReferences = [];
228
+ // 1. Try monorepo structure (development) - ProjectReference
229
+ const monorepoPath = resolve(join(import.meta.dirname, "../../../runtime/src/Tsonic.Runtime.csproj"));
230
+ if (existsSync(monorepoPath)) {
231
+ runtimePath = monorepoPath;
232
+ }
233
+ else {
234
+ // 2. Try installed package structure - ProjectReference
235
+ const installedPath = resolve(join(import.meta.dirname, "../../../../@tsonic/runtime/src/Tsonic.Runtime.csproj"));
236
+ if (existsSync(installedPath)) {
237
+ runtimePath = installedPath;
238
+ }
239
+ else {
240
+ // 3. Try to find runtime DLLs from npm package
241
+ assemblyReferences = findRuntimeDlls(config.runtime ?? "js", outputDir);
242
+ }
243
+ }
244
+ // Warn if no runtime found
245
+ if (!runtimePath && assemblyReferences.length === 0 && !config.quiet) {
246
+ console.warn("Warning: Tsonic runtime not found. You may need to add references manually.");
247
+ }
248
+ // Build output configuration
249
+ const outputType = config.outputConfig.type ?? "executable";
250
+ let outputConfig;
251
+ if (outputType === "library") {
252
+ outputConfig = {
253
+ type: "library",
254
+ targetFrameworks: config.outputConfig.targetFrameworks ?? [
255
+ config.dotnetVersion,
256
+ ],
257
+ generateDocumentation: config.outputConfig.generateDocumentation ?? true,
258
+ includeSymbols: config.outputConfig.includeSymbols ?? true,
259
+ packable: config.outputConfig.packable ?? false,
260
+ packageMetadata: config.outputConfig.package,
261
+ };
262
+ }
263
+ else {
264
+ outputConfig = {
265
+ type: "executable",
266
+ nativeAot: config.outputConfig.nativeAot ?? true,
267
+ singleFile: config.outputConfig.singleFile ?? true,
268
+ trimmed: config.outputConfig.trimmed ?? true,
269
+ stripSymbols: config.stripSymbols,
270
+ optimization: config.optimize === "size" ? "Size" : "Speed",
271
+ invariantGlobalization: config.invariantGlobalization,
272
+ selfContained: config.outputConfig.selfContained ?? true,
273
+ };
274
+ }
275
+ const buildConfig = {
276
+ rootNamespace,
277
+ outputName: config.outputName,
278
+ dotnetVersion: config.dotnetVersion,
279
+ runtimePath,
280
+ assemblyReferences,
281
+ packages,
282
+ outputConfig,
283
+ };
284
+ const csproj = generateCsproj(buildConfig);
285
+ writeFileSync(csprojPath, csproj, "utf-8");
286
+ if (config.verbose) {
287
+ console.log(` Generated: ${relative(process.cwd(), csprojPath)}`);
288
+ }
289
+ }
290
+ else if (config.verbose) {
291
+ console.log(` Preserved: ${relative(process.cwd(), csprojPath)} (user edits kept)`);
292
+ }
293
+ if (!config.quiet) {
294
+ console.log(`\n✓ Generated ${csFiles.size} C# files in ${outputDirectory}/`);
295
+ }
296
+ return {
297
+ ok: true,
298
+ value: {
299
+ filesGenerated: csFiles.size,
300
+ outputDir,
301
+ },
302
+ };
303
+ }
304
+ catch (error) {
305
+ return {
306
+ ok: false,
307
+ error: `Emit failed: ${error instanceof Error ? error.message : String(error)}`,
308
+ };
309
+ }
310
+ };
311
+ //# sourceMappingURL=emit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit.js","sourceRoot":"","sources":["../../src/commands/emit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * tsonic project init command
3
+ */
4
+ import type { Result } from "../types.js";
5
+ type InitOptions = {
6
+ readonly skipTypes?: boolean;
7
+ readonly typesVersion?: string;
8
+ readonly runtime?: "js" | "dotnet";
9
+ };
10
+ /**
11
+ * Initialize a new Tsonic project
12
+ */
13
+ export declare const initProject: (cwd: string, options?: InitOptions) => Result<void, string>;
14
+ export {};
15
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,KAAK,WAAW,GAAG;IACjB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC;CACpC,CAAC;AA6NF;;GAEG;AACH,eAAO,MAAM,WAAW,GACtB,KAAK,MAAM,EACX,UAAS,WAAgB,KACxB,MAAM,CAAC,IAAI,EAAE,MAAM,CA6FrB,CAAC"}