@tsonic/cli 0.0.8 → 0.0.9

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 (43) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/cli/constants.d.ts +1 -1
  3. package/dist/cli/constants.js +1 -1
  4. package/dist/cli/dispatcher.d.ts.map +1 -1
  5. package/dist/cli/dispatcher.js +27 -3
  6. package/dist/cli/dispatcher.js.map +1 -1
  7. package/dist/cli/help.d.ts.map +1 -1
  8. package/dist/cli/help.js +8 -4
  9. package/dist/cli/help.js.map +1 -1
  10. package/dist/cli/parser.d.ts +1 -0
  11. package/dist/cli/parser.d.ts.map +1 -1
  12. package/dist/cli/parser.js +16 -2
  13. package/dist/cli/parser.js.map +1 -1
  14. package/dist/cli/parser.test.js +30 -3
  15. package/dist/cli/parser.test.js.map +1 -1
  16. package/dist/commands/add-package.d.ts +26 -0
  17. package/dist/commands/add-package.d.ts.map +1 -0
  18. package/dist/commands/add-package.js +119 -0
  19. package/dist/commands/add-package.js.map +1 -0
  20. package/dist/commands/build.d.ts.map +1 -1
  21. package/dist/commands/build.js +12 -37
  22. package/dist/commands/build.js.map +1 -1
  23. package/dist/commands/emit.d.ts.map +1 -1
  24. package/dist/commands/emit.js +29 -35
  25. package/dist/commands/emit.js.map +1 -1
  26. package/dist/commands/generate.d.ts +12 -0
  27. package/dist/commands/generate.d.ts.map +1 -0
  28. package/dist/commands/generate.js +344 -0
  29. package/dist/commands/generate.js.map +1 -0
  30. package/dist/commands/init.d.ts +15 -0
  31. package/dist/commands/init.d.ts.map +1 -1
  32. package/dist/commands/init.js +94 -25
  33. package/dist/commands/init.js.map +1 -1
  34. package/dist/commands/init.test.d.ts +5 -0
  35. package/dist/commands/init.test.d.ts.map +1 -0
  36. package/dist/commands/init.test.js +81 -0
  37. package/dist/commands/init.test.js.map +1 -0
  38. package/dist/commands/pack.js +6 -6
  39. package/dist/commands/pack.js.map +1 -1
  40. package/dist/types.d.ts +1 -0
  41. package/dist/types.d.ts.map +1 -1
  42. package/package.json +1 -1
  43. package/runtime/nodejs.dll +0 -0
@@ -0,0 +1,344 @@
1
+ /**
2
+ * tsonic generate 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
+ * Collect all CLR assemblies used by modules
20
+ * Returns unique assembly names from module imports
21
+ */
22
+ const collectClrAssemblies = (modules) => {
23
+ const assemblies = new Set();
24
+ for (const mod of modules) {
25
+ for (const imp of mod.imports) {
26
+ if (imp.isClr && imp.resolvedAssembly) {
27
+ assemblies.add(imp.resolvedAssembly);
28
+ }
29
+ }
30
+ }
31
+ return assemblies;
32
+ };
33
+ /**
34
+ * Find runtime DLLs bundled with @tsonic/cli npm package
35
+ * Returns assembly references for the csproj file
36
+ */
37
+ const findRuntimeDlls = (runtime, outputDir, usedAssemblies = new Set()) => {
38
+ // Try to find runtime directory bundled with CLI package
39
+ // import.meta.dirname is the dist/commands directory
40
+ const possiblePaths = [
41
+ // Development: From dist/commands -> ../../runtime
42
+ join(import.meta.dirname, "../../runtime"),
43
+ // npm installed: From dist/commands -> ../runtime (inside @tsonic/cli package)
44
+ join(import.meta.dirname, "../runtime"),
45
+ // From project's node_modules (when CLI is a dev dependency)
46
+ join(process.cwd(), "node_modules/@tsonic/cli/runtime"),
47
+ ];
48
+ let runtimeDir = null;
49
+ for (const p of possiblePaths) {
50
+ if (existsSync(p)) {
51
+ runtimeDir = p;
52
+ break;
53
+ }
54
+ }
55
+ if (!runtimeDir) {
56
+ return [];
57
+ }
58
+ const refs = [];
59
+ // Calculate relative path from output directory to runtime directory
60
+ const relativeRuntimeDir = relative(outputDir, runtimeDir);
61
+ // Always include Tsonic.Runtime
62
+ const runtimeDll = join(runtimeDir, "Tsonic.Runtime.dll");
63
+ if (existsSync(runtimeDll)) {
64
+ refs.push({
65
+ name: "Tsonic.Runtime",
66
+ hintPath: join(relativeRuntimeDir, "Tsonic.Runtime.dll"),
67
+ });
68
+ }
69
+ // Include Tsonic.JSRuntime for js mode
70
+ if (runtime === "js") {
71
+ const jsRuntimeDll = join(runtimeDir, "Tsonic.JSRuntime.dll");
72
+ if (existsSync(jsRuntimeDll)) {
73
+ refs.push({
74
+ name: "Tsonic.JSRuntime",
75
+ hintPath: join(relativeRuntimeDir, "Tsonic.JSRuntime.dll"),
76
+ });
77
+ }
78
+ }
79
+ // Include nodejs.dll if nodejs assembly is used
80
+ if (usedAssemblies.has("nodejs")) {
81
+ const nodejsDll = join(runtimeDir, "nodejs.dll");
82
+ if (existsSync(nodejsDll)) {
83
+ refs.push({
84
+ name: "nodejs",
85
+ hintPath: join(relativeRuntimeDir, "nodejs.dll"),
86
+ });
87
+ }
88
+ }
89
+ return refs;
90
+ };
91
+ /**
92
+ * Collect assembly references from project libraries (lib/*.dll)
93
+ * These are DLLs registered in tsonic.json's dotnet.libraries
94
+ */
95
+ const collectProjectLibraries = (projectRoot, outputDir, libraries) => {
96
+ const refs = [];
97
+ for (const libPath of libraries) {
98
+ // Library path is relative to project root
99
+ const absolutePath = join(projectRoot, libPath);
100
+ if (!existsSync(absolutePath)) {
101
+ continue;
102
+ }
103
+ if (!libPath.endsWith(".dll")) {
104
+ continue;
105
+ }
106
+ // Extract assembly name from filename
107
+ const dllName = libPath.split("/").pop() ?? "";
108
+ const assemblyName = dllName.replace(/\.dll$/, "");
109
+ // Calculate relative path from output directory to the DLL
110
+ const hintPath = relative(outputDir, absolutePath);
111
+ refs.push({
112
+ name: assemblyName,
113
+ hintPath,
114
+ });
115
+ }
116
+ return refs;
117
+ };
118
+ /**
119
+ * Extract entry point information from IR module
120
+ */
121
+ const extractEntryInfo = (entryModule, runtime) => {
122
+ // Look for exported 'main' function
123
+ for (const exp of entryModule.exports) {
124
+ if (exp.kind === "declaration") {
125
+ const decl = exp.declaration;
126
+ if (decl.kind === "functionDeclaration" && decl.name === "main") {
127
+ return {
128
+ namespace: entryModule.namespace,
129
+ className: entryModule.className,
130
+ methodName: "main",
131
+ isAsync: decl.isAsync,
132
+ needsProgram: true,
133
+ runtime,
134
+ };
135
+ }
136
+ }
137
+ else if (exp.kind === "named" && exp.name === "main") {
138
+ // Named export of 'main'
139
+ // Look in body for the function declaration
140
+ for (const stmt of entryModule.body) {
141
+ if (stmt.kind === "functionDeclaration" && stmt.name === "main") {
142
+ return {
143
+ namespace: entryModule.namespace,
144
+ className: entryModule.className,
145
+ methodName: "main",
146
+ isAsync: stmt.isAsync,
147
+ needsProgram: true,
148
+ runtime,
149
+ };
150
+ }
151
+ }
152
+ }
153
+ }
154
+ // No main function found
155
+ return null;
156
+ };
157
+ /**
158
+ * Emit C# code from TypeScript
159
+ */
160
+ export const generateCommand = (config) => {
161
+ const { entryPoint, outputDirectory, rootNamespace, projectRoot, sourceRoot, packages, typeRoots, } = config;
162
+ // For libraries, entry point is optional
163
+ if (!entryPoint && config.outputConfig.type !== "library") {
164
+ return {
165
+ ok: false,
166
+ error: "Entry point is required for executable builds",
167
+ };
168
+ }
169
+ try {
170
+ // For libraries without entry point, we need a different approach
171
+ // For now, require entry point (library multi-file support can be added later)
172
+ if (!entryPoint) {
173
+ return {
174
+ ok: false,
175
+ error: "Entry point is required (library multi-file support coming soon)",
176
+ };
177
+ }
178
+ // Combine typeRoots and non-DLL libraries for TypeScript compilation
179
+ // DLL paths (*.dll) are for assembly references, not type roots
180
+ const typeLibraries = config.libraries.filter((lib) => !lib.endsWith(".dll"));
181
+ const allTypeRoots = [...typeRoots, ...typeLibraries];
182
+ // Build dependency graph - this traverses all imports and builds IR for all modules
183
+ const compilerOptions = {
184
+ projectRoot,
185
+ sourceRoot,
186
+ rootNamespace,
187
+ typeRoots: allTypeRoots,
188
+ verbose: config.verbose,
189
+ };
190
+ const graphResult = buildModuleDependencyGraph(entryPoint, compilerOptions);
191
+ if (!graphResult.ok) {
192
+ const errorMessages = graphResult.error
193
+ .map((d) => {
194
+ if (d.location) {
195
+ return `${d.location.file}:${d.location.line} ${d.message}`;
196
+ }
197
+ return d.message;
198
+ })
199
+ .join("\n");
200
+ return {
201
+ ok: false,
202
+ error: `TypeScript compilation failed:\n${errorMessages}`,
203
+ };
204
+ }
205
+ const { modules, entryModule } = graphResult.value;
206
+ // irResult.value was an array of modules, now it's graphResult.value.modules
207
+ const irResult = { ok: true, value: modules };
208
+ // Emit C# code
209
+ const absoluteEntryPoint = entryPoint ? resolve(entryPoint) : undefined;
210
+ const emitResult = emitCSharpFiles(irResult.value, {
211
+ rootNamespace,
212
+ entryPointPath: absoluteEntryPoint,
213
+ libraries: typeLibraries, // Only non-DLL libraries (type roots)
214
+ runtime: config.runtime,
215
+ });
216
+ if (!emitResult.ok) {
217
+ // Handle file name collision errors
218
+ for (const error of emitResult.errors) {
219
+ console.error(`error ${error.code}: ${error.message}`);
220
+ }
221
+ process.exit(1);
222
+ }
223
+ const csFiles = emitResult.files;
224
+ // Create output directory
225
+ const outputDir = join(process.cwd(), outputDirectory);
226
+ mkdirSync(outputDir, { recursive: true });
227
+ // Write C# files preserving directory structure
228
+ for (const [modulePath, csCode] of csFiles) {
229
+ // Convert module path to C# file path
230
+ // src/models/User.ts → generated/src/models/User.cs
231
+ const csPath = modulePath.replace(/\.ts$/, ".cs");
232
+ const fullPath = join(outputDir, csPath);
233
+ mkdirSync(dirname(fullPath), { recursive: true });
234
+ writeFileSync(fullPath, csCode, "utf-8");
235
+ }
236
+ // Generate Program.cs entry point wrapper (only for executables)
237
+ if (absoluteEntryPoint) {
238
+ // entryModule is already provided by buildDependencyGraph
239
+ // But double-check by comparing relative paths
240
+ const entryRelative = relative(sourceRoot, absoluteEntryPoint).replace(/\\/g, "/");
241
+ const foundEntryModule = irResult.value.find((m) => m.filePath === entryRelative) ??
242
+ entryModule;
243
+ if (foundEntryModule) {
244
+ const entryInfo = extractEntryInfo(foundEntryModule, config.runtime);
245
+ if (entryInfo) {
246
+ const programCs = generateProgramCs(entryInfo);
247
+ const programPath = join(outputDir, "Program.cs");
248
+ writeFileSync(programPath, programCs, "utf-8");
249
+ }
250
+ }
251
+ }
252
+ // Generate or copy existing .csproj
253
+ const csprojPath = join(outputDir, "tsonic.csproj");
254
+ const projectCsproj = findProjectCsproj();
255
+ // Collect CLR assemblies used by the modules (e.g., "nodejs")
256
+ const usedAssemblies = collectClrAssemblies(irResult.value);
257
+ // Debug: log collected assemblies
258
+ if (config.verbose && usedAssemblies.size > 0) {
259
+ console.log(` CLR assemblies used: ${[...usedAssemblies].join(", ")}`);
260
+ }
261
+ if (projectCsproj) {
262
+ // Copy existing .csproj from project root (preserves user edits)
263
+ copyFileSync(projectCsproj, csprojPath);
264
+ }
265
+ else if (!existsSync(csprojPath)) {
266
+ // Find Tsonic runtime - try multiple approaches:
267
+ // 1. ProjectReference to .csproj (development/monorepo)
268
+ // 2. Assembly references to DLLs (npm installed package)
269
+ let runtimePath;
270
+ let assemblyReferences = [];
271
+ // 1. Try monorepo structure (development) - ProjectReference
272
+ const monorepoPath = resolve(join(import.meta.dirname, "../../../runtime/src/Tsonic.Runtime.csproj"));
273
+ if (existsSync(monorepoPath)) {
274
+ runtimePath = monorepoPath;
275
+ }
276
+ else {
277
+ // 2. Try installed package structure - ProjectReference
278
+ const installedPath = resolve(join(import.meta.dirname, "../../../../@tsonic/runtime/src/Tsonic.Runtime.csproj"));
279
+ if (existsSync(installedPath)) {
280
+ runtimePath = installedPath;
281
+ }
282
+ else {
283
+ // 3. Try to find runtime DLLs from npm package
284
+ const runtimeRefs = findRuntimeDlls(config.runtime ?? "js", outputDir, usedAssemblies);
285
+ // 4. Add project libraries (from dotnet.libraries in tsonic.json)
286
+ const projectRefs = collectProjectLibraries(projectRoot, outputDir, config.libraries);
287
+ assemblyReferences = [...runtimeRefs, ...projectRefs];
288
+ }
289
+ }
290
+ // Build output configuration
291
+ const outputType = config.outputConfig.type ?? "executable";
292
+ let outputConfig;
293
+ if (outputType === "library") {
294
+ outputConfig = {
295
+ type: "library",
296
+ targetFrameworks: config.outputConfig.targetFrameworks ?? [
297
+ config.dotnetVersion,
298
+ ],
299
+ generateDocumentation: config.outputConfig.generateDocumentation ?? true,
300
+ includeSymbols: config.outputConfig.includeSymbols ?? true,
301
+ packable: config.outputConfig.packable ?? false,
302
+ packageMetadata: config.outputConfig.package,
303
+ };
304
+ }
305
+ else {
306
+ outputConfig = {
307
+ type: "executable",
308
+ nativeAot: config.outputConfig.nativeAot ?? true,
309
+ singleFile: config.outputConfig.singleFile ?? true,
310
+ trimmed: config.outputConfig.trimmed ?? true,
311
+ stripSymbols: config.stripSymbols,
312
+ optimization: config.optimize === "size" ? "Size" : "Speed",
313
+ invariantGlobalization: config.invariantGlobalization,
314
+ selfContained: config.outputConfig.selfContained ?? true,
315
+ };
316
+ }
317
+ const buildConfig = {
318
+ rootNamespace,
319
+ outputName: config.outputName,
320
+ dotnetVersion: config.dotnetVersion,
321
+ runtimePath,
322
+ assemblyReferences,
323
+ packages,
324
+ outputConfig,
325
+ };
326
+ const csproj = generateCsproj(buildConfig);
327
+ writeFileSync(csprojPath, csproj, "utf-8");
328
+ }
329
+ return {
330
+ ok: true,
331
+ value: {
332
+ filesGenerated: csFiles.size,
333
+ outputDir,
334
+ },
335
+ };
336
+ }
337
+ catch (error) {
338
+ return {
339
+ ok: false,
340
+ error: `Emit failed: ${error instanceof Error ? error.message : String(error)}`,
341
+ };
342
+ }
343
+ };
344
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,22 @@ type InitOptions = {
6
6
  readonly skipTypes?: boolean;
7
7
  readonly typesVersion?: string;
8
8
  readonly runtime?: "js" | "dotnet";
9
+ readonly nodejs?: boolean;
9
10
  };
11
+ type TypePackageInfo = {
12
+ readonly packages: readonly {
13
+ name: string;
14
+ version: string;
15
+ }[];
16
+ readonly typeRoots: readonly string[];
17
+ };
18
+ /**
19
+ * Get type package info based on runtime mode
20
+ *
21
+ * typeRoots: Only ambient globals packages (provide global types without imports)
22
+ * packages: All type packages to install (includes explicit import packages)
23
+ */
24
+ export declare const getTypePackageInfo: (runtime: "js" | "dotnet", nodejs?: boolean) => TypePackageInfo;
10
25
  /**
11
26
  * Initialize a new Tsonic project
12
27
  */
@@ -1 +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"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH,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;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AA8DF,KAAK,eAAe,GAAG;IACrB,QAAQ,CAAC,QAAQ,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAChE,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC,CAAC;AAKF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAC7B,SAAS,IAAI,GAAG,QAAQ,EACxB,SAAQ,OAAe,KACtB,eAoCF,CAAC;AA+KF;;GAEG;AACH,eAAO,MAAM,WAAW,GACtB,KAAK,MAAM,EACX,UAAS,WAAgB,KACxB,MAAM,CAAC,IAAI,EAAE,MAAM,CA2GrB,CAAC"}
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * tsonic project init command
3
3
  */
4
- import { writeFileSync, existsSync, readFileSync, mkdirSync } from "node:fs";
5
- import { join } from "node:path";
4
+ import { writeFileSync, existsSync, readFileSync, mkdirSync, copyFileSync, } from "node:fs";
5
+ import { join, dirname } from "node:path";
6
6
  import { spawnSync } from "node:child_process";
7
7
  const DEFAULT_GITIGNORE = `# .NET build artifacts
8
8
  generated/bin/
@@ -30,9 +30,9 @@ const SAMPLE_MAIN_TS_DOTNET = `import { Console } from "@tsonic/dotnet/System";
30
30
  import { File } from "@tsonic/dotnet/System.IO";
31
31
 
32
32
  export function main(): void {
33
- Console.WriteLine("Reading README.md...");
34
- const content = File.ReadAllText("./README.md");
35
- Console.WriteLine(content);
33
+ Console.writeLine("Reading README.md...");
34
+ const content = File.readAllText("./README.md");
35
+ Console.writeLine(content);
36
36
  }
37
37
  `;
38
38
  const SAMPLE_README = `# My Tsonic Project
@@ -60,26 +60,30 @@ npm run dev
60
60
  - \`tsonic.json\` - Project configuration
61
61
  - \`generated/\` - Generated C# code (gitignored)
62
62
  `;
63
- // CLI package version - installed as devDependency for npm run build/dev
64
- const CLI_PACKAGE = { name: "@tsonic/cli", version: "0.0.4" };
63
+ // Unified CLI package version - installed as devDependency for npm run build/dev
64
+ const CLI_PACKAGE = { name: "@tsonic/tsonic", version: "latest" };
65
65
  /**
66
66
  * Get type package info based on runtime mode
67
67
  *
68
68
  * typeRoots: Only ambient globals packages (provide global types without imports)
69
69
  * packages: All type packages to install (includes explicit import packages)
70
70
  */
71
- const getTypePackageInfo = (runtime) => {
71
+ export const getTypePackageInfo = (runtime, nodejs = false) => {
72
72
  if (runtime === "js") {
73
73
  // JS mode:
74
74
  // - @tsonic/cli: the compiler CLI (provides `tsonic` command)
75
75
  // - @tsonic/js-globals: ambient globals (Array, console, etc.) - needs typeRoots
76
76
  // - @tsonic/types: explicit imports (int, float, etc.) - just npm dep
77
+ const packages = [
78
+ CLI_PACKAGE,
79
+ { name: "@tsonic/js-globals", version: "latest" },
80
+ { name: "@tsonic/types", version: "latest" },
81
+ ];
82
+ if (nodejs) {
83
+ packages.push({ name: "@tsonic/nodejs", version: "latest" });
84
+ }
77
85
  return {
78
- packages: [
79
- CLI_PACKAGE,
80
- { name: "@tsonic/js-globals", version: "0.1.1" },
81
- { name: "@tsonic/types", version: "0.2.0" },
82
- ],
86
+ packages,
83
87
  typeRoots: ["node_modules/@tsonic/js-globals"],
84
88
  };
85
89
  }
@@ -88,19 +92,65 @@ const getTypePackageInfo = (runtime) => {
88
92
  // - @tsonic/dotnet-globals: ambient globals - needs typeRoots
89
93
  // - @tsonic/dotnet: explicit imports (System.*, etc.) - just npm dep
90
94
  // - @tsonic/types: transitive dep of @tsonic/dotnet
95
+ const packages = [
96
+ CLI_PACKAGE,
97
+ { name: "@tsonic/dotnet-globals", version: "latest" },
98
+ { name: "@tsonic/dotnet", version: "latest" },
99
+ ];
100
+ if (nodejs) {
101
+ packages.push({ name: "@tsonic/nodejs", version: "latest" });
102
+ }
91
103
  return {
92
- packages: [
93
- CLI_PACKAGE,
94
- { name: "@tsonic/dotnet-globals", version: "0.1.2" },
95
- { name: "@tsonic/dotnet", version: "0.5.1" },
96
- ],
104
+ packages,
97
105
  typeRoots: ["node_modules/@tsonic/dotnet-globals"],
98
106
  };
99
107
  };
108
+ /**
109
+ * Find nodejs.dll from the CLI package runtime directory
110
+ */
111
+ const findNodejsDll = () => {
112
+ // Try to find runtime directory bundled with CLI package
113
+ // import.meta.dirname is the dist/commands directory when running from built CLI
114
+ // Or src/commands when running from source
115
+ const possiblePaths = [
116
+ // Development: From dist/commands -> ../../runtime
117
+ join(dirname(import.meta.url.replace("file://", "")), "../../runtime"),
118
+ // npm installed: From dist/commands -> ../runtime (inside @tsonic/cli package)
119
+ join(dirname(import.meta.url.replace("file://", "")), "../runtime"),
120
+ // From project's node_modules (when CLI is a dev dependency)
121
+ join(process.cwd(), "node_modules/@tsonic/cli/runtime"),
122
+ // Monorepo structure
123
+ join(process.cwd(), "packages/cli/runtime"),
124
+ ];
125
+ for (const p of possiblePaths) {
126
+ const dllPath = join(p, "nodejs.dll");
127
+ if (existsSync(dllPath)) {
128
+ return dllPath;
129
+ }
130
+ }
131
+ return null;
132
+ };
133
+ /**
134
+ * Copy nodejs.dll to project's lib/ directory
135
+ */
136
+ const copyNodejsDll = (cwd) => {
137
+ const sourceDll = findNodejsDll();
138
+ if (!sourceDll) {
139
+ return {
140
+ ok: false,
141
+ error: "nodejs.dll not found. Make sure @tsonic/tsonic is installed.",
142
+ };
143
+ }
144
+ const libDir = join(cwd, "lib");
145
+ const destDll = join(libDir, "nodejs.dll");
146
+ mkdirSync(libDir, { recursive: true });
147
+ copyFileSync(sourceDll, destDll);
148
+ return { ok: true, value: "lib/nodejs.dll" };
149
+ };
100
150
  /**
101
151
  * Generate tsonic.json config
102
152
  */
103
- const generateConfig = (includeTypeRoots, runtime) => {
153
+ const generateConfig = (includeTypeRoots, runtime, nodejsLibPath) => {
104
154
  const config = {
105
155
  $schema: "https://tsonic.dev/schema/v1.json",
106
156
  rootNamespace: "MyApp",
@@ -116,11 +166,16 @@ const generateConfig = (includeTypeRoots, runtime) => {
116
166
  invariantGlobalization: true,
117
167
  },
118
168
  };
119
- if (includeTypeRoots) {
169
+ if (includeTypeRoots || nodejsLibPath) {
120
170
  const typeInfo = getTypePackageInfo(runtime);
121
- config.dotnet = {
122
- typeRoots: typeInfo.typeRoots,
123
- };
171
+ const dotnet = {};
172
+ if (includeTypeRoots) {
173
+ dotnet.typeRoots = typeInfo.typeRoots;
174
+ }
175
+ if (nodejsLibPath) {
176
+ dotnet.libraries = [nodejsLibPath];
177
+ }
178
+ config.dotnet = dotnet;
124
179
  }
125
180
  return JSON.stringify(config, null, 2) + "\n";
126
181
  };
@@ -211,7 +266,8 @@ export const initProject = (cwd, options = {}) => {
211
266
  console.log(packageJsonExists ? "✓ Updated package.json" : "✓ Created package.json");
212
267
  // Install type declarations based on runtime mode
213
268
  const shouldInstallTypes = !options.skipTypes;
214
- const typeInfo = getTypePackageInfo(runtime);
269
+ const nodejs = options.nodejs ?? false;
270
+ const typeInfo = getTypePackageInfo(runtime, nodejs);
215
271
  if (shouldInstallTypes) {
216
272
  for (const pkg of typeInfo.packages) {
217
273
  const version = options.typesVersion ?? pkg.version;
@@ -223,8 +279,21 @@ export const initProject = (cwd, options = {}) => {
223
279
  console.log(`✓ Installed ${pkg.name}`);
224
280
  }
225
281
  }
282
+ // Copy nodejs.dll if nodejs option is enabled
283
+ let nodejsLibPath;
284
+ if (nodejs) {
285
+ const copyResult = copyNodejsDll(cwd);
286
+ if (!copyResult.ok) {
287
+ // Log warning but continue - user can add manually later
288
+ console.log(`⚠ Warning: ${copyResult.error}`);
289
+ }
290
+ else {
291
+ nodejsLibPath = copyResult.value;
292
+ console.log("✓ Copied nodejs.dll to lib/");
293
+ }
294
+ }
226
295
  // Create tsonic.json
227
- const config = generateConfig(shouldInstallTypes, runtime);
296
+ const config = generateConfig(shouldInstallTypes, runtime, nodejsLibPath);
228
297
  writeFileSync(tsonicJsonPath, config, "utf-8");
229
298
  console.log("✓ Created tsonic.json");
230
299
  // Create or append to .gitignore
@@ -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":"AAAA;;GAEG;AAEH,OAAO,EACL,aAAa,EACb,UAAU,EACV,YAAY,EACZ,SAAS,EACT,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAU/C,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;CAazB,CAAC;AAEF,MAAM,iBAAiB,GAAG;;;;;;;CAOzB,CAAC;AAEF,MAAM,qBAAqB,GAAG;;;;;;;;CAQ7B,CAAC;AAEF,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwBrB,CAAC;AAOF,iFAAiF;AACjF,MAAM,WAAW,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAElE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,OAAwB,EACxB,SAAkB,KAAK,EACN,EAAE;IACnB,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,WAAW;QACX,8DAA8D;QAC9D,iFAAiF;QACjF,sEAAsE;QACtE,MAAM,QAAQ,GAAG;YACf,WAAW;YACX,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,QAAQ,EAAE;YACjD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE;SAC7C,CAAC;QACF,IAAI,MAAM,EAAE,CAAC;YACX,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO;YACL,QAAQ;YACR,SAAS,EAAE,CAAC,iCAAiC,CAAC;SAC/C,CAAC;IACJ,CAAC;IACD,eAAe;IACf,8DAA8D;IAC9D,8DAA8D;IAC9D,qEAAqE;IACrE,oDAAoD;IACpD,MAAM,QAAQ,GAAG;QACf,WAAW;QACX,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,QAAQ,EAAE;QACrD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,QAAQ,EAAE;KAC9C,CAAC;IACF,IAAI,MAAM,EAAE,CAAC;QACX,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO;QACL,QAAQ;QACR,SAAS,EAAE,CAAC,qCAAqC,CAAC;KACnD,CAAC;AACJ,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,aAAa,GAAG,GAAkB,EAAE;IACxC,yDAAyD;IACzD,iFAAiF;IACjF,2CAA2C;IAC3C,MAAM,aAAa,GAAG;QACpB,mDAAmD;QACnD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,eAAe,CAAC;QACtE,+EAA+E;QAC/E,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC;QACnE,6DAA6D;QAC7D,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,kCAAkC,CAAC;QACvD,qBAAqB;QACrB,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,sBAAsB,CAAC;KAC5C,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;QACtC,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,aAAa,GAAG,CAAC,GAAW,EAA0B,EAAE;IAC5D,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;IAClC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,8DAA8D;SACtE,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAE3C,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAEjC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;AAC/C,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,cAAc,GAAG,CACrB,gBAAyB,EACzB,OAAwB,EACxB,aAAsB,EACd,EAAE;IACV,MAAM,MAAM,GAA4B;QACtC,OAAO,EAAE,mCAAmC;QAC5C,aAAa,EAAE,OAAO;QACtB,UAAU,EAAE,YAAY;QACxB,UAAU,EAAE,KAAK;QACjB,eAAe,EAAE,WAAW;QAC5B,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE;YACZ,YAAY,EAAE,IAAI;YAClB,sBAAsB,EAAE,IAAI;SAC7B;KACF,CAAC;IAEF,IAAI,gBAAgB,IAAI,aAAa,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,MAAM,GAA4B,EAAE,CAAC;QAE3C,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACxC,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,CAAC,SAAS,GAAG,CAAC,aAAa,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AAChD,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,yBAAyB,GAAG,CAAC,eAAuB,EAAQ,EAAE;IAClE,IAAI,WAAoC,CAAC;IAEzC,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAChC,mCAAmC;QACnC,MAAM,QAAQ,GAAG,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QACxD,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEnC,+BAA+B;QAC/B,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YACtB,WAAW,CAAC,IAAI,GAAG,eAAe,CAAC;QACrC,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACzB,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YACtB,WAAW,CAAC,IAAI,GAAG,QAAQ,CAAC;QAC9B,CAAC;QAED,gBAAgB;QAChB,MAAM,eAAe,GAClB,WAAW,CAAC,OAAkC,IAAI,EAAE,CAAC;QACxD,WAAW,CAAC,OAAO,GAAG;YACpB,GAAG,eAAe;YAClB,KAAK,EAAE,yBAAyB;YAChC,GAAG,EAAE,uBAAuB;SAC7B,CAAC;QAEF,gCAAgC;QAChC,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;YACjC,WAAW,CAAC,eAAe,GAAG,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,0BAA0B;QAC1B,WAAW,GAAG;YACZ,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,KAAK,EAAE,yBAAyB;gBAChC,GAAG,EAAE,uBAAuB;aAC7B;YACD,eAAe,EAAE,EAAE;SACpB,CAAC;IACJ,CAAC;IAED,aAAa,CACX,eAAe,EACf,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAC3C,OAAO,CACR,CAAC;AACJ,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,cAAc,GAAG,CACrB,WAAmB,EACnB,OAAe,EACO,EAAE;IACxB,MAAM,MAAM,GAAG,SAAS,CACtB,KAAK,EACL,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,WAAW,IAAI,OAAO,EAAE,CAAC,EACtD;QACE,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,OAAO;KAClB,CACF,CAAC;IAEF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,qBAAqB,WAAW,IAAI,OAAO,EAAE;SACrD,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AACxC,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,GAAW,EACX,UAAuB,EAAE,EACH,EAAE;IACxB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;IACxC,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC1C,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAElD,sCAAsC;IACtC,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAC/B,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,6DAA6D;SACrE,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,2DAA2D;QAC3D,MAAM,iBAAiB,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;QACtD,yBAAyB,CAAC,eAAe,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CACT,iBAAiB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,wBAAwB,CACxE,CAAC;QAEF,kDAAkD;QAClD,MAAM,kBAAkB,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC;QAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;QACvC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAErD,IAAI,kBAAkB,EAAE,CAAC;YACvB,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACpC,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,IAAI,GAAG,CAAC,OAAO,CAAC;gBACpD,OAAO,CAAC,GAAG,CAAC,iCAAiC,GAAG,CAAC,IAAI,IAAI,OAAO,MAAM,CAAC,CAAC;gBACxE,MAAM,aAAa,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACxD,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC;oBACtB,OAAO,aAAa,CAAC;gBACvB,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QAED,8CAA8C;QAC9C,IAAI,aAAiC,CAAC;QACtC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;gBACnB,yDAAyD;gBACzD,OAAO,CAAC,GAAG,CAAC,cAAc,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACN,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC;gBACjC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,MAAM,MAAM,GAAG,cAAc,CAAC,kBAAkB,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QAC1E,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QAErC,iCAAiC;QACjC,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YACtD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBACrC,aAAa,CACX,aAAa,EACb,QAAQ,GAAG,IAAI,GAAG,iBAAiB,EACnC,OAAO,CACR,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,aAAa,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACtC,CAAC;QAED,gEAAgE;QAChE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,MAAM,UAAU,GACd,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,qBAAqB,CAAC;YAC/D,aAAa,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACtC,CAAC;QAED,mBAAmB;QACnB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,aAAa,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACrC,CAAC;QAED,qFAAqF;QAErF,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAEhD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,iCAAiC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;SACjG,CAAC;IACJ,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for init command
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=init.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.test.d.ts","sourceRoot":"","sources":["../../src/commands/init.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}