@tsonic/backend 0.0.1 → 0.0.2

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 (47) hide show
  1. package/dist/.tsbuildinfo +1 -0
  2. package/dist/build-orchestrator.d.ts +9 -0
  3. package/dist/build-orchestrator.d.ts.map +1 -0
  4. package/dist/build-orchestrator.js +165 -0
  5. package/dist/build-orchestrator.js.map +1 -0
  6. package/dist/dotnet.d.ts +17 -0
  7. package/dist/dotnet.d.ts.map +1 -0
  8. package/dist/dotnet.js +85 -0
  9. package/dist/dotnet.js.map +1 -0
  10. package/dist/dotnet.test.d.ts +5 -0
  11. package/dist/dotnet.test.d.ts.map +1 -0
  12. package/dist/dotnet.test.js +46 -0
  13. package/dist/dotnet.test.js.map +1 -0
  14. package/dist/index.d.ts +9 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/{src/index.ts → dist/index.js} +1 -19
  17. package/dist/index.js.map +1 -0
  18. package/dist/program-generator.d.ts +9 -0
  19. package/dist/program-generator.d.ts.map +1 -0
  20. package/dist/program-generator.js +27 -0
  21. package/dist/program-generator.js.map +1 -0
  22. package/dist/program-generator.test.d.ts +5 -0
  23. package/dist/program-generator.test.d.ts.map +1 -0
  24. package/dist/program-generator.test.js +53 -0
  25. package/dist/program-generator.test.js.map +1 -0
  26. package/dist/project-generator.d.ts +18 -0
  27. package/dist/project-generator.d.ts.map +1 -0
  28. package/dist/project-generator.js +182 -0
  29. package/dist/project-generator.js.map +1 -0
  30. package/dist/project-generator.test.d.ts +5 -0
  31. package/dist/project-generator.test.d.ts.map +1 -0
  32. package/dist/project-generator.test.js +103 -0
  33. package/dist/project-generator.test.js.map +1 -0
  34. package/dist/types.d.ts +133 -0
  35. package/dist/types.d.ts.map +1 -0
  36. package/dist/types.js +5 -0
  37. package/dist/types.js.map +1 -0
  38. package/package.json +6 -3
  39. package/src/build-orchestrator.ts +0 -215
  40. package/src/dotnet.test.ts +0 -50
  41. package/src/dotnet.ts +0 -101
  42. package/src/program-generator.test.ts +0 -63
  43. package/src/program-generator.ts +0 -33
  44. package/src/project-generator.test.ts +0 -130
  45. package/src/project-generator.ts +0 -245
  46. package/src/types.ts +0 -150
  47. package/tsconfig.json +0 -14
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-generator.d.ts","sourceRoot":"","sources":["../src/project-generator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,WAAW,EAQZ,MAAM,YAAY,CAAC;AAmLpB;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,WAAW,KAAG,MAkBpD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,WAAW,GAAG;IACpB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sBAAsB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC3C,KACA,MAmBF,CAAC"}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * .csproj file generation for multiple output types
3
+ */
4
+ /**
5
+ * Generate package references XML
6
+ */
7
+ const formatPackageReferences = (packages) => {
8
+ if (packages.length === 0) {
9
+ return "";
10
+ }
11
+ const refs = packages
12
+ .map((pkg) => ` <PackageReference Include="${pkg.name}" Version="${pkg.version}" />`)
13
+ .join("\n");
14
+ return `
15
+ <ItemGroup>
16
+ ${refs}
17
+ </ItemGroup>`;
18
+ };
19
+ /**
20
+ * Generate assembly references XML (for DLL files)
21
+ */
22
+ const formatAssemblyReferences = (refs) => {
23
+ if (refs.length === 0) {
24
+ return "";
25
+ }
26
+ const refElements = refs
27
+ .map((ref) => ` <Reference Include="${ref.name}">
28
+ <HintPath>${ref.hintPath}</HintPath>
29
+ </Reference>`)
30
+ .join("\n");
31
+ return `
32
+ <ItemGroup>
33
+ ${refElements}
34
+ </ItemGroup>`;
35
+ };
36
+ /**
37
+ * Capitalize first letter
38
+ */
39
+ const capitalizeFirst = (str) => {
40
+ return str.charAt(0).toUpperCase() + str.slice(1);
41
+ };
42
+ /**
43
+ * Generate NuGet package metadata properties
44
+ */
45
+ const generatePackageMetadata = (metadata) => {
46
+ const authors = metadata.authors.join(";");
47
+ const tags = metadata.tags?.join(";") || "";
48
+ return `
49
+ <PackageId>${metadata.id}</PackageId>
50
+ <Version>${metadata.version}</Version>
51
+ <Authors>${authors}</Authors>
52
+ <Description>${metadata.description}</Description>${metadata.projectUrl ? `\n <PackageProjectUrl>${metadata.projectUrl}</PackageProjectUrl>` : ""}${metadata.license ? `\n <PackageLicenseExpression>${metadata.license}</PackageLicenseExpression>` : ""}${tags ? `\n <PackageTags>${tags}</PackageTags>` : ""}`;
53
+ };
54
+ /**
55
+ * Generate property group for executable output
56
+ */
57
+ const generateExecutableProperties = (config, execConfig) => {
58
+ const nativeAotSettings = execConfig.nativeAot
59
+ ? `
60
+ <!-- NativeAOT settings -->
61
+ <PublishAot>true</PublishAot>
62
+ <PublishSingleFile>${execConfig.singleFile}</PublishSingleFile>
63
+ <PublishTrimmed>${execConfig.trimmed}</PublishTrimmed>
64
+ <InvariantGlobalization>${execConfig.invariantGlobalization}</InvariantGlobalization>
65
+ <StripSymbols>${execConfig.stripSymbols}</StripSymbols>
66
+
67
+ <!-- Optimization -->
68
+ <OptimizationPreference>${capitalizeFirst(execConfig.optimization)}</OptimizationPreference>
69
+ <IlcOptimizationPreference>${capitalizeFirst(execConfig.optimization)}</IlcOptimizationPreference>`
70
+ : `
71
+ <PublishSingleFile>${execConfig.singleFile}</PublishSingleFile>
72
+ <SelfContained>${execConfig.selfContained}</SelfContained>`;
73
+ return ` <PropertyGroup>
74
+ <OutputType>Exe</OutputType>
75
+ <TargetFramework>${config.dotnetVersion}</TargetFramework>
76
+ <RootNamespace>${config.rootNamespace}</RootNamespace>
77
+ <AssemblyName>${config.outputName}</AssemblyName>
78
+ <Nullable>enable</Nullable>
79
+ <ImplicitUsings>false</ImplicitUsings>${nativeAotSettings}
80
+ </PropertyGroup>`;
81
+ };
82
+ /**
83
+ * Generate property group for library output
84
+ */
85
+ const generateLibraryProperties = (config, libConfig) => {
86
+ const targetFrameworks = libConfig.targetFrameworks.join(";");
87
+ const isMultiTarget = libConfig.targetFrameworks.length > 1;
88
+ const targetProp = isMultiTarget
89
+ ? `<TargetFrameworks>${targetFrameworks}</TargetFrameworks>`
90
+ : `<TargetFramework>${libConfig.targetFrameworks[0]}</TargetFramework>`;
91
+ const docSettings = libConfig.generateDocumentation
92
+ ? `
93
+ <GenerateDocumentationFile>true</GenerateDocumentationFile>`
94
+ : "";
95
+ const symbolSettings = libConfig.includeSymbols
96
+ ? `
97
+ <DebugType>embedded</DebugType>
98
+ <DebugSymbols>true</DebugSymbols>`
99
+ : `
100
+ <DebugType>none</DebugType>`;
101
+ const packageSettings = libConfig.packable && libConfig.packageMetadata
102
+ ? generatePackageMetadata(libConfig.packageMetadata)
103
+ : "";
104
+ return ` <PropertyGroup>
105
+ <OutputType>Library</OutputType>
106
+ ${targetProp}
107
+ <RootNamespace>${config.rootNamespace}</RootNamespace>
108
+ <AssemblyName>${config.outputName}</AssemblyName>
109
+ <Nullable>enable</Nullable>
110
+ <ImplicitUsings>false</ImplicitUsings>${docSettings}${symbolSettings}
111
+ <IsPackable>${libConfig.packable}</IsPackable>${packageSettings}
112
+ </PropertyGroup>`;
113
+ };
114
+ /**
115
+ * Generate property group for console app output
116
+ */
117
+ const generateConsoleAppProperties = (config, consoleConfig) => {
118
+ return ` <PropertyGroup>
119
+ <OutputType>Exe</OutputType>
120
+ <TargetFramework>${consoleConfig.targetFramework}</TargetFramework>
121
+ <RootNamespace>${config.rootNamespace}</RootNamespace>
122
+ <AssemblyName>${config.outputName}</AssemblyName>
123
+ <Nullable>enable</Nullable>
124
+ <ImplicitUsings>false</ImplicitUsings>
125
+ <PublishSingleFile>${consoleConfig.singleFile}</PublishSingleFile>
126
+ <SelfContained>${consoleConfig.selfContained}</SelfContained>
127
+ </PropertyGroup>`;
128
+ };
129
+ /**
130
+ * Generate property group based on output type
131
+ */
132
+ const generatePropertyGroup = (config, outputConfig) => {
133
+ switch (outputConfig.type) {
134
+ case "executable":
135
+ return generateExecutableProperties(config, outputConfig);
136
+ case "library":
137
+ return generateLibraryProperties(config, outputConfig);
138
+ case "console-app":
139
+ return generateConsoleAppProperties(config, outputConfig);
140
+ }
141
+ };
142
+ /**
143
+ * Generate complete .csproj file content
144
+ */
145
+ export const generateCsproj = (config) => {
146
+ const packageRefs = formatPackageReferences(config.packages);
147
+ const assemblyRefs = formatAssemblyReferences(config.assemblyReferences ?? []);
148
+ const runtimeRef = config.runtimePath
149
+ ? `
150
+ <ItemGroup>
151
+ <ProjectReference Include="${config.runtimePath}" />
152
+ </ItemGroup>`
153
+ : "";
154
+ const propertyGroup = generatePropertyGroup(config, config.outputConfig);
155
+ return `<Project Sdk="Microsoft.NET.Sdk">
156
+ ${propertyGroup}${packageRefs}${assemblyRefs}${runtimeRef}
157
+ </Project>
158
+ `;
159
+ };
160
+ /**
161
+ * Legacy function for backward compatibility
162
+ * @deprecated Use generateCsproj with outputConfig instead
163
+ */
164
+ export const generateCsprojLegacy = (config) => {
165
+ // Convert legacy config to new format
166
+ const execConfig = {
167
+ type: "executable",
168
+ nativeAot: true,
169
+ singleFile: true,
170
+ trimmed: true,
171
+ stripSymbols: config.stripSymbols ?? true,
172
+ optimization: config.optimizationPreference ?? "Speed",
173
+ invariantGlobalization: config.invariantGlobalization ?? true,
174
+ selfContained: true,
175
+ };
176
+ const newConfig = {
177
+ ...config,
178
+ outputConfig: execConfig,
179
+ };
180
+ return generateCsproj(newConfig);
181
+ };
182
+ //# sourceMappingURL=project-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-generator.js","sourceRoot":"","sources":["../src/project-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for .csproj generation
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=project-generator.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-generator.test.d.ts","sourceRoot":"","sources":["../src/project-generator.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Tests for .csproj generation
3
+ */
4
+ import { describe, it } from "mocha";
5
+ import { expect } from "chai";
6
+ import { generateCsproj } from "./project-generator.js";
7
+ describe("Project Generator", () => {
8
+ describe("generateCsproj", () => {
9
+ it("should generate basic executable .csproj without packages", () => {
10
+ const config = {
11
+ rootNamespace: "TestApp",
12
+ outputName: "test",
13
+ dotnetVersion: "net10.0",
14
+ packages: [],
15
+ outputConfig: {
16
+ type: "executable",
17
+ nativeAot: true,
18
+ singleFile: true,
19
+ trimmed: true,
20
+ stripSymbols: true,
21
+ optimization: "Speed",
22
+ invariantGlobalization: true,
23
+ selfContained: true,
24
+ },
25
+ };
26
+ const result = generateCsproj(config);
27
+ expect(result).to.include('<Project Sdk="Microsoft.NET.Sdk">');
28
+ expect(result).to.include("<TargetFramework>net10.0</TargetFramework>");
29
+ expect(result).to.include("<RootNamespace>TestApp</RootNamespace>");
30
+ expect(result).to.include("<AssemblyName>test</AssemblyName>");
31
+ expect(result).to.include("<PublishAot>true</PublishAot>");
32
+ expect(result).to.include("<OptimizationPreference>Speed</OptimizationPreference>");
33
+ });
34
+ it("should include package references when provided", () => {
35
+ const config = {
36
+ rootNamespace: "TestApp",
37
+ outputName: "test",
38
+ dotnetVersion: "net10.0",
39
+ packages: [
40
+ { name: "System.Text.Json", version: "8.0.0" },
41
+ { name: "Newtonsoft.Json", version: "13.0.3" },
42
+ ],
43
+ outputConfig: {
44
+ type: "executable",
45
+ nativeAot: true,
46
+ singleFile: true,
47
+ trimmed: true,
48
+ stripSymbols: true,
49
+ optimization: "Size",
50
+ invariantGlobalization: true,
51
+ selfContained: true,
52
+ },
53
+ };
54
+ const result = generateCsproj(config);
55
+ expect(result).to.include('<PackageReference Include="System.Text.Json" Version="8.0.0"');
56
+ expect(result).to.include('<PackageReference Include="Newtonsoft.Json" Version="13.0.3"');
57
+ expect(result).to.include("<OptimizationPreference>Size</OptimizationPreference>");
58
+ });
59
+ it("should set invariant globalization correctly", () => {
60
+ const config = {
61
+ rootNamespace: "TestApp",
62
+ outputName: "test",
63
+ dotnetVersion: "net10.0",
64
+ packages: [],
65
+ outputConfig: {
66
+ type: "executable",
67
+ nativeAot: true,
68
+ singleFile: true,
69
+ trimmed: true,
70
+ stripSymbols: false,
71
+ optimization: "Speed",
72
+ invariantGlobalization: false,
73
+ selfContained: true,
74
+ },
75
+ };
76
+ const result = generateCsproj(config);
77
+ expect(result).to.include("<InvariantGlobalization>false</InvariantGlobalization>");
78
+ expect(result).to.include("<StripSymbols>false</StripSymbols>");
79
+ });
80
+ it("should generate library .csproj", () => {
81
+ const config = {
82
+ rootNamespace: "TestLib",
83
+ outputName: "testlib",
84
+ dotnetVersion: "net10.0",
85
+ packages: [],
86
+ outputConfig: {
87
+ type: "library",
88
+ targetFrameworks: ["net8.0", "net9.0"],
89
+ generateDocumentation: true,
90
+ includeSymbols: true,
91
+ packable: false,
92
+ },
93
+ };
94
+ const result = generateCsproj(config);
95
+ expect(result).to.include("<OutputType>Library</OutputType>");
96
+ expect(result).to.include("<TargetFrameworks>net8.0;net9.0</TargetFrameworks>");
97
+ expect(result).to.include("<GenerateDocumentationFile>true</GenerateDocumentationFile>");
98
+ expect(result).to.include("<DebugType>embedded</DebugType>");
99
+ expect(result).to.include("<IsPackable>false</IsPackable>");
100
+ });
101
+ });
102
+ });
103
+ //# sourceMappingURL=project-generator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-generator.test.js","sourceRoot":"","sources":["../src/project-generator.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Type definitions for backend build process
3
+ */
4
+ /**
5
+ * NuGet package reference
6
+ */
7
+ export type NuGetPackage = {
8
+ readonly name: string;
9
+ readonly version: string;
10
+ };
11
+ /**
12
+ * Output type taxonomy
13
+ */
14
+ export type OutputType = "executable" | "library" | "console-app";
15
+ /**
16
+ * NuGet package metadata for libraries
17
+ */
18
+ export type PackageMetadata = {
19
+ readonly id: string;
20
+ readonly version: string;
21
+ readonly authors: readonly string[];
22
+ readonly description: string;
23
+ readonly projectUrl?: string;
24
+ readonly license?: string;
25
+ readonly tags?: readonly string[];
26
+ };
27
+ /**
28
+ * Executable-specific configuration
29
+ */
30
+ export type ExecutableConfig = {
31
+ readonly type: "executable";
32
+ readonly nativeAot: boolean;
33
+ readonly singleFile: boolean;
34
+ readonly trimmed: boolean;
35
+ readonly stripSymbols: boolean;
36
+ readonly optimization: "Size" | "Speed";
37
+ readonly invariantGlobalization: boolean;
38
+ readonly selfContained: boolean;
39
+ };
40
+ /**
41
+ * Library-specific configuration
42
+ */
43
+ export type LibraryConfig = {
44
+ readonly type: "library";
45
+ readonly targetFrameworks: readonly string[];
46
+ readonly generateDocumentation: boolean;
47
+ readonly includeSymbols: boolean;
48
+ readonly packable: boolean;
49
+ readonly packageMetadata?: PackageMetadata;
50
+ };
51
+ /**
52
+ * Console app configuration (non-NativeAOT)
53
+ */
54
+ export type ConsoleAppConfig = {
55
+ readonly type: "console-app";
56
+ readonly selfContained: boolean;
57
+ readonly singleFile: boolean;
58
+ readonly targetFramework: string;
59
+ };
60
+ /**
61
+ * Output configuration union type
62
+ */
63
+ export type OutputConfig = ExecutableConfig | LibraryConfig | ConsoleAppConfig;
64
+ /**
65
+ * Assembly reference (for DLL files)
66
+ */
67
+ export type AssemblyReference = {
68
+ readonly name: string;
69
+ readonly hintPath: string;
70
+ };
71
+ /**
72
+ * Build configuration options
73
+ */
74
+ export type BuildConfig = {
75
+ readonly rootNamespace: string;
76
+ readonly outputName: string;
77
+ readonly dotnetVersion: string;
78
+ readonly runtimePath?: string;
79
+ readonly assemblyReferences?: readonly AssemblyReference[];
80
+ readonly packages: readonly NuGetPackage[];
81
+ readonly outputConfig: OutputConfig;
82
+ readonly invariantGlobalization?: boolean;
83
+ readonly stripSymbols?: boolean;
84
+ readonly optimizationPreference?: "Size" | "Speed";
85
+ };
86
+ /**
87
+ * Entry point information
88
+ */
89
+ export type EntryInfo = {
90
+ readonly namespace: string;
91
+ readonly className: string;
92
+ readonly methodName: string;
93
+ readonly isAsync: boolean;
94
+ readonly needsProgram: boolean;
95
+ readonly runtime?: "js" | "dotnet";
96
+ };
97
+ /**
98
+ * Build options passed to buildNativeAot
99
+ */
100
+ export type BuildOptions = {
101
+ readonly namespace: string;
102
+ readonly outputName?: string;
103
+ readonly dotnetVersion?: string;
104
+ readonly rid?: string;
105
+ readonly keepTemp?: boolean;
106
+ readonly stripSymbols?: boolean;
107
+ readonly optimizationPreference?: "Size" | "Speed";
108
+ };
109
+ /**
110
+ * Result of the build process
111
+ */
112
+ export type BuildResult = {
113
+ readonly ok: true;
114
+ readonly outputPath: string;
115
+ readonly buildDir: string;
116
+ } | {
117
+ readonly ok: false;
118
+ readonly error: string;
119
+ readonly buildDir?: string;
120
+ };
121
+ /**
122
+ * Dotnet execution result
123
+ */
124
+ export type DotnetResult = {
125
+ readonly ok: true;
126
+ readonly stdout: string;
127
+ } | {
128
+ readonly ok: false;
129
+ readonly error: string;
130
+ readonly stdout?: string;
131
+ readonly stderr?: string;
132
+ };
133
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Type definitions for backend build process
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
package/package.json CHANGED
@@ -1,10 +1,13 @@
1
1
  {
2
2
  "name": "@tsonic/backend",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": ".NET build orchestration for Tsonic compiler",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
8
+ "files": [
9
+ "dist"
10
+ ],
8
11
  "exports": {
9
12
  ".": {
10
13
  "types": "./dist/index.d.ts",
@@ -18,8 +21,8 @@
18
21
  "test:watch": "mocha 'dist/**/*.test.js' --watch"
19
22
  },
20
23
  "dependencies": {
21
- "@tsonic/emitter": "0.0.1",
22
- "@tsonic/frontend": "0.0.1"
24
+ "@tsonic/emitter": "0.0.2",
25
+ "@tsonic/frontend": "0.0.2"
23
26
  },
24
27
  "devDependencies": {
25
28
  "@types/chai": "5.2.2",