@tsonic/cli 0.0.19 → 0.0.21

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 (61) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/cli/dispatcher.d.ts.map +1 -1
  3. package/dist/cli/dispatcher.js +96 -4
  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 +8 -0
  7. package/dist/cli/help.js.map +1 -1
  8. package/dist/cli/parser.d.ts.map +1 -1
  9. package/dist/cli/parser.js +17 -0
  10. package/dist/cli/parser.js.map +1 -1
  11. package/dist/cli/parser.test.js +25 -0
  12. package/dist/cli/parser.test.js.map +1 -1
  13. package/dist/commands/add-common.d.ts +19 -4
  14. package/dist/commands/add-common.d.ts.map +1 -1
  15. package/dist/commands/add-common.js +115 -20
  16. package/dist/commands/add-common.js.map +1 -1
  17. package/dist/commands/add-deps.test.d.ts +10 -0
  18. package/dist/commands/add-deps.test.d.ts.map +1 -0
  19. package/dist/commands/add-deps.test.js +277 -0
  20. package/dist/commands/add-deps.test.js.map +1 -0
  21. package/dist/commands/add-framework.d.ts +1 -1
  22. package/dist/commands/add-framework.d.ts.map +1 -1
  23. package/dist/commands/add-framework.js +53 -35
  24. package/dist/commands/add-framework.js.map +1 -1
  25. package/dist/commands/add-nuget.d.ts +6 -3
  26. package/dist/commands/add-nuget.d.ts.map +1 -1
  27. package/dist/commands/add-nuget.js +49 -211
  28. package/dist/commands/add-nuget.js.map +1 -1
  29. package/dist/commands/add-package.d.ts +1 -1
  30. package/dist/commands/add-package.d.ts.map +1 -1
  31. package/dist/commands/add-package.js +162 -58
  32. package/dist/commands/add-package.js.map +1 -1
  33. package/dist/commands/generate.d.ts.map +1 -1
  34. package/dist/commands/generate.js +5 -1
  35. package/dist/commands/generate.js.map +1 -1
  36. package/dist/commands/remove-nuget.d.ts +16 -0
  37. package/dist/commands/remove-nuget.d.ts.map +1 -0
  38. package/dist/commands/remove-nuget.js +47 -0
  39. package/dist/commands/remove-nuget.js.map +1 -0
  40. package/dist/commands/restore.d.ts +19 -0
  41. package/dist/commands/restore.d.ts.map +1 -0
  42. package/dist/commands/restore.js +619 -0
  43. package/dist/commands/restore.js.map +1 -0
  44. package/dist/commands/restore.test.d.ts +5 -0
  45. package/dist/commands/restore.test.d.ts.map +1 -0
  46. package/dist/commands/restore.test.js +59 -0
  47. package/dist/commands/restore.test.js.map +1 -0
  48. package/dist/commands/update-nuget.d.ts +18 -0
  49. package/dist/commands/update-nuget.d.ts.map +1 -0
  50. package/dist/commands/update-nuget.js +76 -0
  51. package/dist/commands/update-nuget.js.map +1 -0
  52. package/dist/config.d.ts.map +1 -1
  53. package/dist/config.js +24 -6
  54. package/dist/config.js.map +1 -1
  55. package/dist/dotnet/runtime-dlls.d.ts +3 -0
  56. package/dist/dotnet/runtime-dlls.d.ts.map +1 -0
  57. package/dist/dotnet/runtime-dlls.js +5 -0
  58. package/dist/dotnet/runtime-dlls.js.map +1 -0
  59. package/dist/types.d.ts +13 -1
  60. package/dist/types.d.ts.map +1 -1
  61. package/package.json +5 -4
@@ -0,0 +1,619 @@
1
+ /**
2
+ * tsonic restore - restore .NET dependencies and (re)generate local bindings.
3
+ *
4
+ * This is the "clone a repo and get to green" command:
5
+ * - Runs dotnet restore for NuGet PackageReferences from tsonic.json
6
+ * - Generates bindings for all transitive NuGet package deps (no duplicates)
7
+ * - Generates bindings for all local DLLs in dotnet.libraries (no duplicates)
8
+ * - Generates bindings for FrameworkReferences when present
9
+ *
10
+ * Airplane-grade rules:
11
+ * - Deterministic dependency closure; no "copy everything" modes
12
+ * - No ambiguous ownership: each CLR type must have exactly one bindings owner
13
+ * - Fail fast with actionable errors
14
+ */
15
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
16
+ import { basename, dirname, join } from "node:path";
17
+ import { isBuiltInRuntimeDllPath } from "../dotnet/runtime-dlls.js";
18
+ import { loadConfig } from "../config.js";
19
+ import { bindingsStoreDir, defaultBindingsPackageNameForDll, defaultBindingsPackageNameForFramework, defaultBindingsPackageNameForNuget, detectTsbindgenNaming, ensureGeneratedBindingsPackageJson, installGeneratedBindingsPackage, listDotnetRuntimes, resolveFromProjectRoot, resolvePackageRoot, resolveTsbindgenDllPath, tsbindgenGenerate, tsbindgenResolveClosure, defaultExec, writeTsonicJson, } from "./add-common.js";
20
+ const normalizePkgId = (id) => id.trim().toLowerCase();
21
+ const pickPackageFolder = (assets) => {
22
+ const folders = assets.packageFolders ? Object.keys(assets.packageFolders) : [];
23
+ if (folders.length === 0)
24
+ return undefined;
25
+ return folders[0];
26
+ };
27
+ const findTargetKey = (assets, tfm) => {
28
+ const targets = assets.targets ? Object.keys(assets.targets) : [];
29
+ if (targets.includes(tfm))
30
+ return tfm;
31
+ return targets.find((k) => k.startsWith(`${tfm}/`));
32
+ };
33
+ const parseLibKey = (libKey) => {
34
+ const idx = libKey.indexOf("/");
35
+ if (idx <= 0)
36
+ return undefined;
37
+ const id = libKey.slice(0, idx);
38
+ const version = libKey.slice(idx + 1);
39
+ if (!id || !version)
40
+ return undefined;
41
+ return { id, version };
42
+ };
43
+ const collectPackageTargets = (assets, targetKey, packageFolder) => {
44
+ const targets = assets.targets?.[targetKey];
45
+ const libraries = assets.libraries ?? {};
46
+ const byLibrary = new Map();
47
+ if (!targets || typeof targets !== "object")
48
+ return byLibrary;
49
+ for (const [libKey, libValue] of Object.entries(targets)) {
50
+ if (!libKey || !libValue || typeof libValue !== "object")
51
+ continue;
52
+ const parsed = parseLibKey(libKey);
53
+ if (!parsed)
54
+ continue;
55
+ const libInfo = libraries[libKey];
56
+ if (!libInfo || libInfo.type !== "package" || !libInfo.path)
57
+ continue;
58
+ const depsObj = libValue.dependencies;
59
+ const dependencies = depsObj && typeof depsObj === "object"
60
+ ? Object.keys(depsObj).filter(Boolean)
61
+ : [];
62
+ const compile = libValue.compile;
63
+ const dlls = compile && typeof compile === "object"
64
+ ? Object.keys(compile)
65
+ .filter((p) => p.toLowerCase().endsWith(".dll"))
66
+ .map((p) => join(packageFolder, libInfo.path, p))
67
+ : [];
68
+ if (dlls.length === 0 && dependencies.length === 0)
69
+ continue;
70
+ byLibrary.set(libKey, {
71
+ libKey,
72
+ packageId: parsed.id,
73
+ version: parsed.version,
74
+ dlls,
75
+ dependencies,
76
+ });
77
+ }
78
+ return byLibrary;
79
+ };
80
+ const writeRestoreProject = (restoreDir, targetFramework, packageReferences) => {
81
+ try {
82
+ mkdirSync(restoreDir, { recursive: true });
83
+ const csprojPath = join(restoreDir, "tsonic.nuget.restore.csproj");
84
+ const itemGroup = packageReferences
85
+ .map((p) => ` <PackageReference Include="${p.id}" Version="${p.version}" />`)
86
+ .join("\n");
87
+ const csproj = `<Project Sdk="Microsoft.NET.Sdk">
88
+ <PropertyGroup>
89
+ <TargetFramework>${targetFramework}</TargetFramework>
90
+ <ImplicitUsings>false</ImplicitUsings>
91
+ <Nullable>enable</Nullable>
92
+ </PropertyGroup>
93
+ <ItemGroup>
94
+ ${itemGroup}
95
+ </ItemGroup>
96
+ </Project>
97
+ `;
98
+ writeFileSync(csprojPath, csproj, "utf-8");
99
+ return { ok: true, value: csprojPath };
100
+ }
101
+ catch (error) {
102
+ return {
103
+ ok: false,
104
+ error: `Failed to write restore project: ${error instanceof Error ? error.message : String(error)}`,
105
+ };
106
+ }
107
+ };
108
+ const dotnetRestore = (restoreProjectPath, options, exec = defaultExec) => {
109
+ const restoreDir = dirname(restoreProjectPath);
110
+ const result = exec("dotnet", ["restore", restoreProjectPath], restoreDir, options.verbose ? "inherit" : "pipe");
111
+ if (result.status !== 0) {
112
+ const msg = result.stderr || result.stdout || "Unknown error";
113
+ return { ok: false, error: `dotnet restore failed:\n${msg}` };
114
+ }
115
+ const assetsPath = join(restoreDir, "obj", "project.assets.json");
116
+ if (!existsSync(assetsPath)) {
117
+ return { ok: false, error: `Restore succeeded but assets file missing: ${assetsPath}` };
118
+ }
119
+ return { ok: true, value: assetsPath };
120
+ };
121
+ const addUniqueFrameworkReference = (arr, value) => {
122
+ if (!arr.some((r) => (typeof r === "string" ? r : r.id).toLowerCase() === value.toLowerCase())) {
123
+ arr.push(value);
124
+ }
125
+ };
126
+ const pathIsWithin = (path, dir) => {
127
+ const normalizedDir = dir.endsWith("/") ? dir : `${dir}/`;
128
+ const normalizedPath = path.replace(/\\/g, "/");
129
+ const normalizedBase = normalizedDir.replace(/\\/g, "/");
130
+ return normalizedPath.startsWith(normalizedBase);
131
+ };
132
+ export const restoreCommand = (configPath, options = {}) => {
133
+ const configResult = loadConfig(configPath);
134
+ if (!configResult.ok)
135
+ return configResult;
136
+ const projectRoot = dirname(configPath);
137
+ const rawConfig = configResult.value;
138
+ let config = rawConfig;
139
+ const tsbindgenDllResult = resolveTsbindgenDllPath(projectRoot);
140
+ if (!tsbindgenDllResult.ok)
141
+ return tsbindgenDllResult;
142
+ const tsbindgenDll = tsbindgenDllResult.value;
143
+ const runtimesResult = listDotnetRuntimes(projectRoot);
144
+ if (!runtimesResult.ok)
145
+ return runtimesResult;
146
+ const runtimes = runtimesResult.value;
147
+ const dotnetRoot = resolvePackageRoot(projectRoot, "@tsonic/dotnet");
148
+ if (!dotnetRoot.ok)
149
+ return dotnetRoot;
150
+ const coreRoot = resolvePackageRoot(projectRoot, "@tsonic/core");
151
+ if (!coreRoot.ok)
152
+ return coreRoot;
153
+ const dotnetLib = dotnetRoot.value;
154
+ const coreLib = coreRoot.value;
155
+ let dotnet = config.dotnet ?? {};
156
+ const originalLibraries = dotnet.libraries ?? [];
157
+ const filteredLibraries = originalLibraries.filter((p) => !isBuiltInRuntimeDllPath(p));
158
+ if (filteredLibraries.length !== originalLibraries.length) {
159
+ dotnet = { ...dotnet, libraries: filteredLibraries };
160
+ const nextConfig = { ...config, dotnet };
161
+ const writeResult = writeTsonicJson(configPath, nextConfig);
162
+ if (!writeResult.ok)
163
+ return writeResult;
164
+ config = nextConfig;
165
+ }
166
+ const naming = detectTsbindgenNaming(config);
167
+ // 1) FrameworkReferences bindings
168
+ for (const entry of (dotnet.frameworkReferences ??
169
+ [])) {
170
+ const frameworkRef = typeof entry === "string" ? entry : entry.id;
171
+ const typesPackage = typeof entry === "string" ? undefined : entry.types;
172
+ if (typesPackage) {
173
+ continue; // bindings supplied externally; do not auto-generate.
174
+ }
175
+ const runtime = runtimes.find((r) => r.name === frameworkRef);
176
+ if (!runtime) {
177
+ const available = runtimes.map((r) => `${r.name} ${r.version}`).join("\n");
178
+ return {
179
+ ok: false,
180
+ error: `Framework runtime not found: ${frameworkRef}\n` +
181
+ `Installed runtimes:\n${available}`,
182
+ };
183
+ }
184
+ const packageName = defaultBindingsPackageNameForFramework(frameworkRef);
185
+ const outDir = bindingsStoreDir(projectRoot, "framework", packageName);
186
+ const pkgJsonResult = ensureGeneratedBindingsPackageJson(outDir, packageName, {
187
+ kind: "framework",
188
+ source: { frameworkReference: frameworkRef },
189
+ });
190
+ if (!pkgJsonResult.ok)
191
+ return pkgJsonResult;
192
+ const generateArgs = [
193
+ "-d",
194
+ runtime.dir,
195
+ "-o",
196
+ outDir,
197
+ "--naming",
198
+ naming,
199
+ "--lib",
200
+ dotnetLib,
201
+ "--lib",
202
+ coreLib,
203
+ ];
204
+ for (const rt of runtimes)
205
+ generateArgs.push("--ref-dir", rt.dir);
206
+ for (const dep of options.deps ?? []) {
207
+ generateArgs.push("--ref-dir", resolveFromProjectRoot(projectRoot, dep));
208
+ }
209
+ const genResult = tsbindgenGenerate(projectRoot, tsbindgenDll, generateArgs, options);
210
+ if (!genResult.ok)
211
+ return genResult;
212
+ const installResult = installGeneratedBindingsPackage(projectRoot, packageName, outDir);
213
+ if (!installResult.ok)
214
+ return installResult;
215
+ }
216
+ // 2) NuGet PackageReferences bindings (including transitive deps)
217
+ const packageReferencesAll = (dotnet.packageReferences ??
218
+ []);
219
+ if (packageReferencesAll.length > 0) {
220
+ const targetFramework = config.dotnetVersion ?? "net10.0";
221
+ const restoreDir = join(projectRoot, ".tsonic", "nuget");
222
+ const restoreProject = writeRestoreProject(restoreDir, targetFramework, packageReferencesAll.map((p) => ({ id: p.id, version: p.version })));
223
+ if (!restoreProject.ok)
224
+ return restoreProject;
225
+ const assetsPathResult = dotnetRestore(restoreProject.value, options);
226
+ if (!assetsPathResult.ok)
227
+ return assetsPathResult;
228
+ let assets;
229
+ try {
230
+ assets = JSON.parse(readFileSync(assetsPathResult.value, "utf-8"));
231
+ }
232
+ catch (error) {
233
+ return {
234
+ ok: false,
235
+ error: `Failed to parse project.assets.json: ${error instanceof Error ? error.message : String(error)}`,
236
+ };
237
+ }
238
+ const packageFolder = pickPackageFolder(assets);
239
+ if (!packageFolder) {
240
+ return { ok: false, error: "project.assets.json missing packageFolders (unexpected)" };
241
+ }
242
+ const targetKey = findTargetKey(assets, targetFramework);
243
+ if (!targetKey) {
244
+ const available = assets.targets ? Object.keys(assets.targets).join("\n") : "(none)";
245
+ return {
246
+ ok: false,
247
+ error: `No restore target found for ${targetFramework}. Available targets:\n${available}`,
248
+ };
249
+ }
250
+ const packagesByLibKey = collectPackageTargets(assets, targetKey, packageFolder);
251
+ const libKeyByPkgId = new Map();
252
+ for (const node of packagesByLibKey.values()) {
253
+ const norm = normalizePkgId(node.packageId);
254
+ const existingKey = libKeyByPkgId.get(norm);
255
+ if (existingKey && existingKey !== node.libKey) {
256
+ return {
257
+ ok: false,
258
+ error: `Ambiguous restore result: multiple resolved library keys for package '${node.packageId}'.\n` +
259
+ `- ${existingKey}\n` +
260
+ `- ${node.libKey}\n` +
261
+ `This indicates multiple versions were resolved, which is not supported.`,
262
+ };
263
+ }
264
+ libKeyByPkgId.set(norm, node.libKey);
265
+ }
266
+ const shouldAutoGenerate = (p) => p.types === undefined || p.types.trim().length === 0;
267
+ const roots = [];
268
+ for (const pr of packageReferencesAll.filter(shouldAutoGenerate)) {
269
+ const root = libKeyByPkgId.get(normalizePkgId(pr.id));
270
+ if (!root) {
271
+ return {
272
+ ok: false,
273
+ error: `Restore did not produce a target library entry for ${pr.id} ${pr.version}.\n` +
274
+ `This may indicate the package is incompatible with ${targetFramework}.`,
275
+ };
276
+ }
277
+ roots.push(root);
278
+ }
279
+ // If all direct package references have explicit types packages, we only
280
+ // perform dotnet restore here (for early error detection) and skip local
281
+ // bindings generation entirely.
282
+ if (roots.length === 0) {
283
+ // Still continue to DLL/framework binding sections if present.
284
+ // (They are independent dependency kinds.)
285
+ // eslint-disable-next-line no-empty
286
+ }
287
+ else {
288
+ const closure = new Set();
289
+ const queue = [...roots];
290
+ while (queue.length > 0) {
291
+ const libKey = queue.pop();
292
+ if (!libKey)
293
+ continue;
294
+ if (closure.has(libKey))
295
+ continue;
296
+ closure.add(libKey);
297
+ const node = packagesByLibKey.get(libKey);
298
+ if (!node)
299
+ continue;
300
+ for (const depId of node.dependencies) {
301
+ const depLibKey = libKeyByPkgId.get(normalizePkgId(depId));
302
+ if (depLibKey)
303
+ queue.push(depLibKey);
304
+ }
305
+ }
306
+ const depsByLibKey = new Map();
307
+ for (const libKey of closure) {
308
+ const node = packagesByLibKey.get(libKey);
309
+ if (!node)
310
+ continue;
311
+ const deps = [];
312
+ for (const depId of node.dependencies) {
313
+ const depLibKey = libKeyByPkgId.get(normalizePkgId(depId));
314
+ if (depLibKey && closure.has(depLibKey))
315
+ deps.push(depLibKey);
316
+ }
317
+ depsByLibKey.set(libKey, Array.from(new Set(deps)));
318
+ }
319
+ const topo = [];
320
+ const state = new Map();
321
+ const visit = (libKey) => {
322
+ const s = state.get(libKey);
323
+ if (s === "done")
324
+ return { ok: true, value: undefined };
325
+ if (s === "visiting")
326
+ return { ok: false, error: `Cycle detected in NuGet dependency graph at: ${libKey}` };
327
+ state.set(libKey, "visiting");
328
+ for (const dep of depsByLibKey.get(libKey) ?? []) {
329
+ const r = visit(dep);
330
+ if (!r.ok)
331
+ return r;
332
+ }
333
+ state.set(libKey, "done");
334
+ topo.push(libKey);
335
+ return { ok: true, value: undefined };
336
+ };
337
+ for (const libKey of closure) {
338
+ const r = visit(libKey);
339
+ if (!r.ok)
340
+ return r;
341
+ }
342
+ const compileDirs = new Set();
343
+ for (const libKey of closure) {
344
+ const node = packagesByLibKey.get(libKey);
345
+ if (!node)
346
+ continue;
347
+ for (const dll of node.dlls)
348
+ compileDirs.add(dirname(dll));
349
+ }
350
+ const typesPackageByPkgId = new Map();
351
+ for (const pr of packageReferencesAll) {
352
+ if (pr.types && pr.types.trim().length > 0) {
353
+ typesPackageByPkgId.set(normalizePkgId(pr.id), pr.types);
354
+ }
355
+ }
356
+ const typesLibDirByPkgId = new Map();
357
+ const resolveTypesLibDir = (packageId) => {
358
+ const norm = normalizePkgId(packageId);
359
+ const existing = typesLibDirByPkgId.get(norm);
360
+ if (existing)
361
+ return { ok: true, value: existing };
362
+ const typesPkg = typesPackageByPkgId.get(norm);
363
+ if (!typesPkg) {
364
+ return { ok: false, error: `Internal error: missing types package for ${packageId}` };
365
+ }
366
+ const root = resolvePackageRoot(projectRoot, typesPkg);
367
+ if (!root.ok)
368
+ return root;
369
+ typesLibDirByPkgId.set(norm, root.value);
370
+ return { ok: true, value: root.value };
371
+ };
372
+ const transitiveDeps = new Map();
373
+ for (const libKey of topo) {
374
+ const set = new Set();
375
+ for (const dep of depsByLibKey.get(libKey) ?? []) {
376
+ set.add(dep);
377
+ const depTrans = transitiveDeps.get(dep);
378
+ if (depTrans)
379
+ for (const t of depTrans)
380
+ set.add(t);
381
+ }
382
+ transitiveDeps.set(libKey, set);
383
+ }
384
+ const bindingsDirByLibKey = new Map();
385
+ for (const libKey of topo) {
386
+ const node = packagesByLibKey.get(libKey);
387
+ if (!node)
388
+ continue;
389
+ const seedDlls = [...node.dlls];
390
+ if (seedDlls.length === 0)
391
+ continue; // meta-package
392
+ const declared = packageReferencesAll.find((p) => normalizePkgId(p.id) === normalizePkgId(node.packageId));
393
+ if (declared?.types) {
394
+ continue; // bindings supplied externally; do not auto-generate.
395
+ }
396
+ const packageName = defaultBindingsPackageNameForNuget(node.packageId);
397
+ const outDir = bindingsStoreDir(projectRoot, "nuget", packageName);
398
+ bindingsDirByLibKey.set(libKey, outDir);
399
+ const pkgJsonResult = ensureGeneratedBindingsPackageJson(outDir, packageName, {
400
+ kind: "nuget",
401
+ source: { packageId: node.packageId, version: node.version },
402
+ });
403
+ if (!pkgJsonResult.ok)
404
+ return pkgJsonResult;
405
+ const generateArgs = [
406
+ ...seedDlls.flatMap((p) => ["-a", p]),
407
+ "-o",
408
+ outDir,
409
+ "--naming",
410
+ naming,
411
+ "--lib",
412
+ dotnetLib,
413
+ "--lib",
414
+ coreLib,
415
+ ];
416
+ const libDirs = new Set();
417
+ for (const depKey of transitiveDeps.get(libKey) ?? []) {
418
+ const depNode = packagesByLibKey.get(depKey);
419
+ if (!depNode)
420
+ continue;
421
+ const depPkgNorm = normalizePkgId(depNode.packageId);
422
+ const typesPkg = typesPackageByPkgId.get(depPkgNorm);
423
+ if (typesPkg) {
424
+ const dirRes = resolveTypesLibDir(depNode.packageId);
425
+ if (!dirRes.ok)
426
+ return dirRes;
427
+ libDirs.add(dirRes.value);
428
+ continue;
429
+ }
430
+ const generated = bindingsDirByLibKey.get(depKey);
431
+ if (generated)
432
+ libDirs.add(generated);
433
+ }
434
+ for (const depDir of Array.from(libDirs).sort((a, b) => a.localeCompare(b))) {
435
+ generateArgs.push("--lib", depDir);
436
+ }
437
+ for (const rt of runtimes)
438
+ generateArgs.push("--ref-dir", rt.dir);
439
+ for (const d of compileDirs)
440
+ generateArgs.push("--ref-dir", d);
441
+ for (const dep of options.deps ?? []) {
442
+ generateArgs.push("--ref-dir", resolveFromProjectRoot(projectRoot, dep));
443
+ }
444
+ const genResult = tsbindgenGenerate(projectRoot, tsbindgenDll, generateArgs, options);
445
+ if (!genResult.ok)
446
+ return genResult;
447
+ const installResult = installGeneratedBindingsPackage(projectRoot, packageName, outDir);
448
+ if (!installResult.ok)
449
+ return installResult;
450
+ }
451
+ }
452
+ }
453
+ // 3) Local DLL bindings (dotnet.libraries)
454
+ const dllLibraries = (dotnet.libraries ?? []).filter((p) => p.toLowerCase().endsWith(".dll"));
455
+ if (dllLibraries.length > 0) {
456
+ const dllAbs = dllLibraries.map((p) => resolveFromProjectRoot(projectRoot, p));
457
+ for (const p of dllAbs) {
458
+ if (!existsSync(p)) {
459
+ return {
460
+ ok: false,
461
+ error: `Missing DLL from tsonic.json dotnet.libraries: ${p}`,
462
+ };
463
+ }
464
+ }
465
+ const userDeps = (options.deps ?? []).map((d) => resolveFromProjectRoot(projectRoot, d));
466
+ const refDirs = [...runtimes.map((r) => r.dir), join(projectRoot, "lib"), ...userDeps];
467
+ const closureResult = tsbindgenResolveClosure(projectRoot, tsbindgenDll, dllAbs, refDirs);
468
+ if (!closureResult.ok)
469
+ return closureResult;
470
+ const closure = closureResult.value;
471
+ const hasErrors = closure.diagnostics.some((d) => d.severity === "Error");
472
+ if (hasErrors) {
473
+ const details = closure.diagnostics
474
+ .filter((d) => d.severity === "Error")
475
+ .map((d) => `${d.code}: ${d.message}`)
476
+ .join("\n");
477
+ return { ok: false, error: `Failed to resolve DLL dependency closure:\n${details}` };
478
+ }
479
+ const requiredFrameworkRefs = new Set();
480
+ const nonFramework = closure.resolvedAssemblies.filter((asm) => {
481
+ const runtimeDir = runtimes.find((rt) => pathIsWithin(asm.path, rt.dir));
482
+ if (!runtimeDir)
483
+ return true;
484
+ if (runtimeDir.name !== "Microsoft.NETCore.App")
485
+ requiredFrameworkRefs.add(runtimeDir.name);
486
+ return false;
487
+ });
488
+ if (requiredFrameworkRefs.size > 0) {
489
+ const nextFrameworkRefs = [
490
+ ...(dotnet.frameworkReferences ?? []),
491
+ ];
492
+ for (const fr of requiredFrameworkRefs) {
493
+ addUniqueFrameworkReference(nextFrameworkRefs, fr);
494
+ }
495
+ const nextConfig = {
496
+ ...config,
497
+ dotnet: { ...dotnet, frameworkReferences: nextFrameworkRefs },
498
+ };
499
+ const writeResult = writeTsonicJson(configPath, nextConfig);
500
+ if (!writeResult.ok)
501
+ return writeResult;
502
+ }
503
+ const identityKey = (asm) => `${asm.name}|${asm.publicKeyToken}|${asm.culture}`;
504
+ const ids = new Set();
505
+ const byId = new Map();
506
+ const destPathById = new Map();
507
+ const directDeps = new Map();
508
+ for (const asm of nonFramework) {
509
+ const id = identityKey(asm);
510
+ if (ids.has(id)) {
511
+ return {
512
+ ok: false,
513
+ error: `Ambiguous assembly identity in closure: ${asm.name} (${asm.publicKeyToken}, ${asm.culture}).\n` +
514
+ `This indicates multiple assemblies with the same identity were resolved, which is not supported.`,
515
+ };
516
+ }
517
+ ids.add(id);
518
+ byId.set(id, asm);
519
+ const destPath = resolveFromProjectRoot(projectRoot, join("lib", basename(asm.path)));
520
+ if (!existsSync(destPath)) {
521
+ return { ok: false, error: `Missing DLL dependency in lib/: ${destPath}` };
522
+ }
523
+ destPathById.set(id, destPath);
524
+ }
525
+ for (const asm of nonFramework) {
526
+ const id = identityKey(asm);
527
+ const refs = asm.references ?? [];
528
+ const deps = [];
529
+ for (const r of refs) {
530
+ const depId = `${r.name}|${r.publicKeyToken}|${r.culture}`;
531
+ if (ids.has(depId))
532
+ deps.push(depId);
533
+ }
534
+ directDeps.set(id, Array.from(new Set(deps)));
535
+ }
536
+ const order = [];
537
+ const state = new Map();
538
+ const visit = (id) => {
539
+ const s = state.get(id);
540
+ if (s === "done")
541
+ return { ok: true, value: undefined };
542
+ if (s === "visiting")
543
+ return { ok: false, error: `Cycle detected in DLL dependency graph at: ${id}` };
544
+ state.set(id, "visiting");
545
+ for (const dep of directDeps.get(id) ?? []) {
546
+ const r = visit(dep);
547
+ if (!r.ok)
548
+ return r;
549
+ }
550
+ state.set(id, "done");
551
+ order.push(id);
552
+ return { ok: true, value: undefined };
553
+ };
554
+ for (const id of ids) {
555
+ const r = visit(id);
556
+ if (!r.ok)
557
+ return r;
558
+ }
559
+ const transitiveDeps = new Map();
560
+ for (const id of order) {
561
+ const set = new Set();
562
+ for (const dep of directDeps.get(id) ?? []) {
563
+ set.add(dep);
564
+ const depTrans = transitiveDeps.get(dep);
565
+ if (depTrans)
566
+ for (const t of depTrans)
567
+ set.add(t);
568
+ }
569
+ transitiveDeps.set(id, set);
570
+ }
571
+ const bindingsDirById = new Map();
572
+ for (const id of order) {
573
+ const asm = byId.get(id);
574
+ const destPath = destPathById.get(id);
575
+ if (!asm || !destPath)
576
+ return { ok: false, error: `Internal error: missing assembly info for ${id}` };
577
+ const packageName = defaultBindingsPackageNameForDll(destPath);
578
+ const outDir = bindingsStoreDir(projectRoot, "dll", packageName);
579
+ bindingsDirById.set(id, outDir);
580
+ const pkgJsonResult = ensureGeneratedBindingsPackageJson(outDir, packageName, {
581
+ kind: "dll",
582
+ source: { assemblyName: asm.name, version: asm.version, path: `lib/${basename(destPath)}` },
583
+ });
584
+ if (!pkgJsonResult.ok)
585
+ return pkgJsonResult;
586
+ const generateArgs = [
587
+ "-a",
588
+ destPath,
589
+ "-o",
590
+ outDir,
591
+ "--naming",
592
+ naming,
593
+ "--lib",
594
+ dotnetLib,
595
+ "--lib",
596
+ coreLib,
597
+ ];
598
+ const libs = Array.from(transitiveDeps.get(id) ?? [])
599
+ .map((depId) => bindingsDirById.get(depId))
600
+ .filter((p) => typeof p === "string")
601
+ .sort((a, b) => a.localeCompare(b));
602
+ for (const lib of libs)
603
+ generateArgs.push("--lib", lib);
604
+ for (const rt of runtimes)
605
+ generateArgs.push("--ref-dir", rt.dir);
606
+ for (const dep of userDeps)
607
+ generateArgs.push("--ref-dir", dep);
608
+ generateArgs.push("--ref-dir", join(projectRoot, "lib"));
609
+ const genResult = tsbindgenGenerate(projectRoot, tsbindgenDll, generateArgs, options);
610
+ if (!genResult.ok)
611
+ return genResult;
612
+ const installResult = installGeneratedBindingsPackage(projectRoot, packageName, outDir);
613
+ if (!installResult.ok)
614
+ return installResult;
615
+ }
616
+ }
617
+ return { ok: true, value: undefined };
618
+ };
619
+ //# sourceMappingURL=restore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restore.js","sourceRoot":"","sources":["../../src/commands/restore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Regression tests for `tsonic restore`.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=restore.test.d.ts.map