@tsonic/cli 0.0.27 → 0.0.29

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 +85 -44
  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 +17 -24
  25. package/dist/commands/add-js.js.map +1 -1
  26. package/dist/commands/add-js.test.js +22 -14
  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 +18 -25
  31. package/dist/commands/add-nodejs.js.map +1 -1
  32. package/dist/commands/add-nodejs.test.js +26 -18
  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 +59 -35
  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 +32 -26
  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 -265
  50. package/dist/commands/init.js.map +1 -1
  51. package/dist/commands/init.test.js +19 -56
  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 +80 -57
  62. package/dist/commands/restore.js.map +1 -1
  63. package/dist/commands/restore.test.js +103 -28
  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 +234 -153
  72. package/dist/config.js.map +1 -1
  73. package/dist/config.test.js +169 -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 +69 -37
  80. package/dist/types.d.ts.map +1 -1
  81. package/package.json +5 -5
package/dist/config.js CHANGED
@@ -1,162 +1,244 @@
1
1
  /**
2
- * Configuration loading and validation
2
+ * Workspace + project configuration loading and resolution.
3
+ *
4
+ * Airplane-grade rule: Tsonic always operates in a workspace.
5
+ * - Workspace root contains `tsonic.workspace.json`
6
+ * - Projects live under `packages/*` and contain `tsonic.json`
7
+ * - All external dependencies are workspace-scoped (no project-private deps)
3
8
  */
4
- import { readFileSync, existsSync } from "node:fs";
5
- import { join, resolve, dirname } from "node:path";
9
+ import { existsSync, readFileSync, readdirSync } from "node:fs";
10
+ import { dirname, join, resolve } from "node:path";
6
11
  import { detectRid } from "@tsonic/backend";
12
+ export const WORKSPACE_CONFIG_FILE = "tsonic.workspace.json";
13
+ export const PROJECT_CONFIG_FILE = "tsonic.json";
7
14
  /**
8
- * Load tsonic.json from a directory
15
+ * Find `tsonic.workspace.json` by walking up the directory tree.
9
16
  */
10
- export const loadConfig = (configPath) => {
17
+ export const findWorkspaceConfig = (startDir) => {
18
+ let currentDir = resolve(startDir);
19
+ for (;;) {
20
+ const cfg = join(currentDir, WORKSPACE_CONFIG_FILE);
21
+ if (existsSync(cfg))
22
+ return cfg;
23
+ const parent = dirname(currentDir);
24
+ if (parent === currentDir)
25
+ return null;
26
+ currentDir = parent;
27
+ }
28
+ };
29
+ const parseJsonFile = (filePath) => {
30
+ try {
31
+ const raw = readFileSync(filePath, "utf-8");
32
+ return { ok: true, value: JSON.parse(raw) };
33
+ }
34
+ catch (error) {
35
+ return {
36
+ ok: false,
37
+ error: `Failed to parse ${filePath}: ${error instanceof Error ? error.message : String(error)}`,
38
+ };
39
+ }
40
+ };
41
+ export const loadWorkspaceConfig = (configPath) => {
11
42
  if (!existsSync(configPath)) {
43
+ return { ok: false, error: `Workspace config not found: ${configPath}` };
44
+ }
45
+ const parsed = parseJsonFile(configPath);
46
+ if (!parsed.ok)
47
+ return parsed;
48
+ const config = parsed.value;
49
+ if (!config.dotnetVersion || typeof config.dotnetVersion !== "string") {
12
50
  return {
13
51
  ok: false,
14
- error: `Config file not found: ${configPath}`,
52
+ error: `${WORKSPACE_CONFIG_FILE}: 'dotnetVersion' is required`,
15
53
  };
16
54
  }
17
- try {
18
- const content = readFileSync(configPath, "utf-8");
19
- const config = JSON.parse(content);
20
- // Validate required fields
21
- if (!config.rootNamespace) {
55
+ const dotnet = (config.dotnet ?? {});
56
+ const libraries = dotnet.libraries;
57
+ if (libraries !== undefined) {
58
+ if (!Array.isArray(libraries)) {
22
59
  return {
23
60
  ok: false,
24
- error: "tsonic.json: 'rootNamespace' is required",
61
+ error: `${WORKSPACE_CONFIG_FILE}: 'dotnet.libraries' must be an array of strings or { path: string, types?: string }`,
25
62
  };
26
63
  }
27
- const isNamingPolicy = (value) => value === "clr" || value === "none";
28
- const validateNamingPolicyKey = (key, value) => {
29
- if (value === undefined)
30
- return { ok: true, value: undefined };
31
- if (isNamingPolicy(value))
32
- return { ok: true, value: undefined };
33
- return {
34
- ok: false,
35
- error: `tsonic.json: '${key}' must be one of 'clr', 'none' (got '${value}')`,
36
- };
37
- };
38
- const namingPolicy = config.namingPolicy;
39
- if (namingPolicy) {
40
- const checks = [
41
- validateNamingPolicyKey("namingPolicy.all", namingPolicy.all),
42
- validateNamingPolicyKey("namingPolicy.classes", namingPolicy.classes),
43
- validateNamingPolicyKey("namingPolicy.namespaces", namingPolicy.namespaces),
44
- validateNamingPolicyKey("namingPolicy.methods", namingPolicy.methods),
45
- validateNamingPolicyKey("namingPolicy.properties", namingPolicy.properties),
46
- validateNamingPolicyKey("namingPolicy.fields", namingPolicy.fields),
47
- validateNamingPolicyKey("namingPolicy.enumMembers", namingPolicy.enumMembers),
48
- ];
49
- for (const res of checks) {
50
- if (!res.ok)
51
- return res;
64
+ for (const entry of libraries) {
65
+ if (typeof entry === "string")
66
+ continue;
67
+ if (entry === null || typeof entry !== "object" || Array.isArray(entry)) {
68
+ return {
69
+ ok: false,
70
+ error: `${WORKSPACE_CONFIG_FILE}: 'dotnet.libraries' entries must be strings or { path: string, types?: string }`,
71
+ };
72
+ }
73
+ const path = entry.path;
74
+ const types = entry.types;
75
+ if (typeof path !== "string" || path.trim().length === 0) {
76
+ return {
77
+ ok: false,
78
+ error: `${WORKSPACE_CONFIG_FILE}: 'dotnet.libraries' object entries must include a non-empty 'path'`,
79
+ };
80
+ }
81
+ if (types !== undefined && typeof types !== "string") {
82
+ return {
83
+ ok: false,
84
+ error: `${WORKSPACE_CONFIG_FILE}: 'dotnet.libraries' object entries must have 'types' as a string when present`,
85
+ };
52
86
  }
53
87
  }
54
- const outputType = config.output?.type;
55
- if (outputType !== undefined &&
56
- outputType !== "executable" &&
57
- outputType !== "library" &&
58
- outputType !== "console-app") {
59
- return {
60
- ok: false,
61
- error: `tsonic.json: 'output.type' must be one of 'executable', 'library', 'console-app' (got '${outputType}')`,
62
- };
63
- }
64
- const frameworkReferences = config.dotnet?.frameworkReferences;
65
- if (frameworkReferences !== undefined &&
66
- (!Array.isArray(frameworkReferences) ||
67
- frameworkReferences.some((r) => {
68
- if (typeof r === "string")
69
- return false;
70
- if (r === null || typeof r !== "object")
71
- return true;
72
- const id = r.id;
73
- const types = r.types;
74
- if (typeof id !== "string")
75
- return true;
76
- if (types !== undefined && typeof types !== "string")
77
- return true;
88
+ }
89
+ const frameworkReferences = dotnet.frameworkReferences;
90
+ if (frameworkReferences !== undefined &&
91
+ (!Array.isArray(frameworkReferences) ||
92
+ frameworkReferences.some((r) => {
93
+ if (typeof r === "string")
78
94
  return false;
79
- }))) {
95
+ if (r === null || typeof r !== "object")
96
+ return true;
97
+ const id = r.id;
98
+ const types = r.types;
99
+ if (typeof id !== "string")
100
+ return true;
101
+ if (types !== undefined && typeof types !== "string")
102
+ return true;
103
+ return false;
104
+ }))) {
105
+ return {
106
+ ok: false,
107
+ error: `${WORKSPACE_CONFIG_FILE}: 'dotnet.frameworkReferences' must be an array of strings or { id: string, types?: string }`,
108
+ };
109
+ }
110
+ const packageReferences = dotnet.packageReferences;
111
+ if (packageReferences !== undefined) {
112
+ if (!Array.isArray(packageReferences)) {
80
113
  return {
81
114
  ok: false,
82
- error: "tsonic.json: 'dotnet.frameworkReferences' must be an array of strings or { id: string, types?: string }",
115
+ error: `${WORKSPACE_CONFIG_FILE}: 'dotnet.packageReferences' must be an array of { id, version }`,
83
116
  };
84
117
  }
85
- const packageReferences = config.dotnet?.packageReferences;
86
- if (packageReferences !== undefined) {
87
- if (!Array.isArray(packageReferences)) {
118
+ for (const entry of packageReferences) {
119
+ if (entry === null ||
120
+ typeof entry !== "object" ||
121
+ typeof entry.id !== "string" ||
122
+ typeof entry.version !== "string" ||
123
+ (entry.types !== undefined &&
124
+ typeof entry.types !== "string")) {
88
125
  return {
89
126
  ok: false,
90
- error: "tsonic.json: 'dotnet.packageReferences' must be an array of { id, version }",
127
+ error: `${WORKSPACE_CONFIG_FILE}: 'dotnet.packageReferences' entries must be { id: string, version: string, types?: string }`,
91
128
  };
92
129
  }
93
- for (const entry of packageReferences) {
94
- if (entry === null ||
95
- typeof entry !== "object" ||
96
- typeof entry.id !== "string" ||
97
- typeof entry.version !== "string" ||
98
- (entry.types !== undefined &&
99
- typeof entry.types !== "string")) {
100
- return {
101
- ok: false,
102
- error: "tsonic.json: 'dotnet.packageReferences' entries must be { id: string, version: string, types?: string }",
103
- };
104
- }
105
- }
106
130
  }
107
- return { ok: true, value: config };
108
131
  }
109
- catch (error) {
132
+ const typeRoots = dotnet.typeRoots;
133
+ if (typeRoots !== undefined &&
134
+ (!Array.isArray(typeRoots) || typeRoots.some((r) => typeof r !== "string"))) {
110
135
  return {
111
136
  ok: false,
112
- error: `Failed to parse tsonic.json: ${error instanceof Error ? error.message : String(error)}`,
137
+ error: `${WORKSPACE_CONFIG_FILE}: 'dotnet.typeRoots' must be an array of strings`,
113
138
  };
114
139
  }
140
+ return { ok: true, value: config };
115
141
  };
116
- /**
117
- * Find tsonic.json by walking up the directory tree
118
- */
119
- export const findConfig = (startDir) => {
120
- let currentDir = resolve(startDir);
121
- // Walk up until we find tsonic.json or hit root
122
- while (true) {
123
- const configPath = join(currentDir, "tsonic.json");
124
- if (existsSync(configPath)) {
125
- return configPath;
142
+ export const loadProjectConfig = (configPath) => {
143
+ if (!existsSync(configPath)) {
144
+ return { ok: false, error: `Project config not found: ${configPath}` };
145
+ }
146
+ const parsed = parseJsonFile(configPath);
147
+ if (!parsed.ok)
148
+ return parsed;
149
+ // Airplane-grade enforcement: deps live in the workspace config only.
150
+ if ("dotnet" in parsed.value || "dotnetVersion" in parsed.value) {
151
+ return {
152
+ ok: false,
153
+ error: `${PROJECT_CONFIG_FILE}: dotnet dependencies must be declared in ${WORKSPACE_CONFIG_FILE} (workspace-scoped).\n` +
154
+ `Remove 'dotnet' / 'dotnetVersion' from this project config and retry.`,
155
+ };
156
+ }
157
+ const references = parsed.value.references;
158
+ if (references !== undefined) {
159
+ if (references === null || typeof references !== "object" || Array.isArray(references)) {
160
+ return {
161
+ ok: false,
162
+ error: `${PROJECT_CONFIG_FILE}: 'references' must be an object`,
163
+ };
126
164
  }
127
- const parentDir = dirname(currentDir);
128
- if (parentDir === currentDir) {
129
- // Hit root
130
- return null;
165
+ const libraries = references.libraries;
166
+ if (libraries !== undefined &&
167
+ (!Array.isArray(libraries) || libraries.some((p) => typeof p !== "string"))) {
168
+ return {
169
+ ok: false,
170
+ error: `${PROJECT_CONFIG_FILE}: 'references.libraries' must be an array of strings`,
171
+ };
131
172
  }
132
- currentDir = parentDir;
133
173
  }
174
+ const config = parsed.value;
175
+ if (!config.rootNamespace || typeof config.rootNamespace !== "string") {
176
+ return { ok: false, error: `${PROJECT_CONFIG_FILE}: 'rootNamespace' is required` };
177
+ }
178
+ const outputType = config.output?.type;
179
+ if (outputType !== undefined &&
180
+ outputType !== "executable" &&
181
+ outputType !== "library" &&
182
+ outputType !== "console-app") {
183
+ return {
184
+ ok: false,
185
+ error: `${PROJECT_CONFIG_FILE}: 'output.type' must be one of 'executable', 'library', 'console-app' (got '${String(outputType)}')`,
186
+ };
187
+ }
188
+ return { ok: true, value: config };
189
+ };
190
+ export const listProjects = (workspaceRoot) => {
191
+ const packagesDir = join(workspaceRoot, "packages");
192
+ if (!existsSync(packagesDir))
193
+ return [];
194
+ const projects = [];
195
+ for (const entry of readdirSync(packagesDir, { withFileTypes: true })) {
196
+ if (!entry.isDirectory())
197
+ continue;
198
+ const projectDir = join(packagesDir, entry.name);
199
+ if (existsSync(join(projectDir, PROJECT_CONFIG_FILE))) {
200
+ projects.push(projectDir);
201
+ }
202
+ }
203
+ return projects;
134
204
  };
135
205
  /**
136
- * Auto-detect output type based on entry point and project structure
206
+ * Find the nearest project config under `packages/<project>/tsonic.json` for a given working directory.
137
207
  */
138
- const autoDetectOutputType = (entryPoint) => {
139
- // If no entry point, default to library
140
- if (!entryPoint) {
141
- return "library";
208
+ export const findProjectConfig = (startDir, workspaceRoot) => {
209
+ let currentDir = resolve(startDir);
210
+ const workspaceAbs = resolve(workspaceRoot);
211
+ for (;;) {
212
+ // Don't walk above the workspace.
213
+ if (!currentDir.startsWith(workspaceAbs))
214
+ return null;
215
+ const cfg = join(currentDir, PROJECT_CONFIG_FILE);
216
+ if (existsSync(cfg)) {
217
+ // Enforce packages/* boundary.
218
+ const rel = currentDir.slice(workspaceAbs.length).replace(/^[\\/]/, "");
219
+ if (!rel.startsWith("packages/"))
220
+ return null;
221
+ return cfg;
222
+ }
223
+ if (currentDir === workspaceAbs)
224
+ return null;
225
+ const parent = dirname(currentDir);
226
+ if (parent === currentDir)
227
+ return null;
228
+ currentDir = parent;
142
229
  }
143
- // If entry point is provided, default to executable
144
- // The user specified an entry point, so they want a runnable program
145
- return "executable";
146
230
  };
147
231
  /**
148
- * Resolve output configuration from config + CLI options
232
+ * Resolve output configuration from project + workspace + CLI options.
149
233
  */
150
- const resolveOutputConfig = (config, cliOptions, entryPoint) => {
151
- const configOutput = config.output ?? {};
152
- // Determine output type
234
+ const resolveOutputConfig = (projectConfig, workspaceConfig, cliOptions, entryPoint) => {
235
+ const configOutput = projectConfig.output ?? {};
236
+ const autoDetectOutputType = (ep) => ep ? "executable" : "library";
153
237
  const outputType = cliOptions.type ?? configOutput.type ?? autoDetectOutputType(entryPoint);
154
- // Base config from file
155
238
  const baseConfig = {
156
239
  type: outputType,
157
- name: configOutput.name ?? config.outputName,
240
+ name: configOutput.name ?? projectConfig.outputName,
158
241
  };
159
- // Merge executable-specific options
160
242
  if (outputType === "executable") {
161
243
  return {
162
244
  ...baseConfig,
@@ -165,90 +247,89 @@ const resolveOutputConfig = (config, cliOptions, entryPoint) => {
165
247
  trimmed: configOutput.trimmed ?? true,
166
248
  stripSymbols: cliOptions.noStrip
167
249
  ? false
168
- : (configOutput.stripSymbols ?? config.buildOptions?.stripSymbols ?? true),
250
+ : (configOutput.stripSymbols ??
251
+ projectConfig.buildOptions?.stripSymbols ??
252
+ workspaceConfig.buildOptions?.stripSymbols ??
253
+ true),
169
254
  optimization: cliOptions.optimize ??
170
- config.optimize ??
255
+ projectConfig.optimize ??
256
+ workspaceConfig.optimize ??
171
257
  configOutput.optimization ??
172
258
  "speed",
173
259
  invariantGlobalization: configOutput.invariantGlobalization ??
174
- config.buildOptions?.invariantGlobalization ??
260
+ projectConfig.buildOptions?.invariantGlobalization ??
261
+ workspaceConfig.buildOptions?.invariantGlobalization ??
175
262
  true,
176
263
  selfContained: cliOptions.selfContained ?? configOutput.selfContained ?? true,
177
264
  };
178
265
  }
179
- // Merge library-specific options
180
266
  if (outputType === "library") {
181
267
  return {
182
268
  ...baseConfig,
183
- targetFrameworks: configOutput.targetFrameworks ?? [
184
- config.dotnetVersion ?? "net10.0",
185
- ],
269
+ targetFrameworks: configOutput.targetFrameworks ?? [workspaceConfig.dotnetVersion],
186
270
  generateDocumentation: cliOptions.generateDocs ?? configOutput.generateDocumentation ?? true,
187
271
  includeSymbols: cliOptions.includeSymbols ?? configOutput.includeSymbols ?? true,
188
272
  packable: cliOptions.pack ?? configOutput.packable ?? false,
189
273
  package: configOutput.package,
190
274
  };
191
275
  }
192
- // Console app (non-NativeAOT) output
193
276
  if (outputType === "console-app") {
194
277
  return {
195
278
  ...baseConfig,
196
279
  targetFramework: cliOptions.targetFramework ??
197
280
  configOutput.targetFramework ??
198
- config.dotnetVersion ??
199
- "net10.0",
281
+ workspaceConfig.dotnetVersion,
200
282
  singleFile: cliOptions.singleFile ?? configOutput.singleFile ?? true,
201
283
  selfContained: cliOptions.selfContained ?? configOutput.selfContained ?? true,
202
284
  };
203
285
  }
204
- // Unknown output type - preserve for downstream error handling.
205
286
  return baseConfig;
206
287
  };
207
288
  /**
208
- * Resolve final configuration from file + CLI args
209
- * @param projectRoot - Directory containing tsonic.json/package.json (for package resolution)
289
+ * Resolve a project's effective configuration (workspace-scoped deps + project settings).
210
290
  */
211
- export const resolveConfig = (config, cliOptions, projectRoot, entryFile) => {
212
- const entryPoint = entryFile ?? config.entryPoint;
291
+ export const resolveConfig = (workspaceConfig, projectConfig, cliOptions, workspaceRoot, projectRoot, entryFile) => {
292
+ const entryPoint = entryFile ?? projectConfig.entryPoint;
213
293
  const sourceRoot = cliOptions.src ??
214
- config.sourceRoot ??
294
+ projectConfig.sourceRoot ??
215
295
  (entryPoint ? dirname(entryPoint) : "src");
216
- // Default type roots
217
- // Only ambient globals packages need typeRoots - explicit import packages are resolved normally
218
296
  const defaultTypeRoots = ["node_modules/@tsonic/globals"];
219
- const typeRoots = config.dotnet?.typeRoots ?? defaultTypeRoots;
220
- // Merge libraries from config and CLI
221
- const configLibraries = config.dotnet?.libraries ?? [];
297
+ const typeRoots = workspaceConfig.dotnet?.typeRoots ?? defaultTypeRoots;
298
+ const configLibraries = (workspaceConfig.dotnet?.libraries ?? []).map((p) => (typeof p === "string" ? p : p.path));
299
+ const projectLibraries = (projectConfig.references?.libraries ?? []).map((p) => resolve(projectRoot, p));
222
300
  const cliLibraries = cliOptions.lib ?? [];
223
- const libraries = [...configLibraries, ...cliLibraries];
224
- const rawFrameworkReferences = config.dotnet?.frameworkReferences ?? [];
301
+ const libraries = [...configLibraries, ...projectLibraries, ...cliLibraries];
302
+ const rawFrameworkReferences = (workspaceConfig.dotnet?.frameworkReferences ??
303
+ []);
225
304
  const frameworkReferences = rawFrameworkReferences.map((r) => typeof r === "string" ? r : r.id);
226
- const packageReferences = (config.dotnet?.packageReferences ?? []).map((p) => ({
227
- id: p.id,
228
- version: p.version,
229
- }));
230
- // Resolve output configuration
231
- const outputConfig = resolveOutputConfig(config, cliOptions, entryPoint);
305
+ const packageReferences = (workspaceConfig.dotnet?.packageReferences ??
306
+ []).map((p) => ({ id: p.id, version: p.version }));
307
+ const outputConfig = resolveOutputConfig(projectConfig, workspaceConfig, cliOptions, entryPoint);
232
308
  return {
233
- rootNamespace: cliOptions.namespace ?? config.rootNamespace,
234
- namingPolicy: config.namingPolicy,
309
+ workspaceRoot,
310
+ rootNamespace: cliOptions.namespace ?? projectConfig.rootNamespace,
235
311
  entryPoint,
236
312
  projectRoot,
237
313
  sourceRoot,
238
- outputDirectory: config.outputDirectory ?? "generated",
239
- outputName: cliOptions.out ?? config.outputName ?? "app",
240
- rid: cliOptions.rid ?? config.rid ?? detectRid(),
241
- dotnetVersion: config.dotnetVersion ?? "net10.0",
314
+ outputDirectory: projectConfig.outputDirectory ?? "generated",
315
+ outputName: cliOptions.out ?? projectConfig.outputName ?? "app",
316
+ rid: cliOptions.rid ?? workspaceConfig.rid ?? detectRid(),
317
+ dotnetVersion: workspaceConfig.dotnetVersion,
242
318
  optimize: cliOptions.optimize ??
243
- config.optimize ??
244
- config.output?.optimization ??
319
+ projectConfig.optimize ??
320
+ workspaceConfig.optimize ??
321
+ projectConfig.output?.optimization ??
245
322
  "speed",
246
323
  outputConfig,
247
324
  stripSymbols: cliOptions.noStrip
248
325
  ? false
249
- : (config.output?.stripSymbols ?? config.buildOptions?.stripSymbols ?? true),
250
- invariantGlobalization: config.output?.invariantGlobalization ??
251
- config.buildOptions?.invariantGlobalization ??
326
+ : (projectConfig.output?.stripSymbols ??
327
+ projectConfig.buildOptions?.stripSymbols ??
328
+ workspaceConfig.buildOptions?.stripSymbols ??
329
+ true),
330
+ invariantGlobalization: projectConfig.output?.invariantGlobalization ??
331
+ projectConfig.buildOptions?.invariantGlobalization ??
332
+ workspaceConfig.buildOptions?.invariantGlobalization ??
252
333
  true,
253
334
  keepTemp: cliOptions.keepTemp ?? false,
254
335
  verbose: cliOptions.verbose ?? false,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}