@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,277 @@
1
+ /**
2
+ * Integration tests for dependency-aware bindings generation.
3
+ *
4
+ * These tests are intentionally end-to-end at the CLI command level:
5
+ * - Use a local NuGet feed (no network)
6
+ * - Verify transitive dependencies produce bindings packages automatically
7
+ * - Verify netstandard-style dependencies resolve under .NET 10
8
+ */
9
+ import { describe, it } from "mocha";
10
+ import { expect } from "chai";
11
+ import { existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, symlinkSync, writeFileSync, } from "node:fs";
12
+ import { tmpdir } from "node:os";
13
+ import { spawnSync } from "node:child_process";
14
+ import { dirname, join, resolve } from "node:path";
15
+ import { fileURLToPath } from "node:url";
16
+ import { addNugetCommand } from "./add-nuget.js";
17
+ import { addPackageCommand } from "./add-package.js";
18
+ import { removeNugetCommand } from "./remove-nuget.js";
19
+ import { updateNugetCommand } from "./update-nuget.js";
20
+ const repoRoot = resolve(join(dirname(fileURLToPath(import.meta.url)), "../../../.."));
21
+ const linkDir = (target, linkPath) => {
22
+ mkdirSync(dirname(linkPath), { recursive: true });
23
+ symlinkSync(target, linkPath, "dir");
24
+ };
25
+ const run = (cwd, command, args) => {
26
+ const result = spawnSync(command, args, { cwd, encoding: "utf-8" });
27
+ if (result.status !== 0) {
28
+ const msg = result.stderr || result.stdout || `Exit code ${result.status}`;
29
+ throw new Error(`${command} ${args.join(" ")} failed:\n${msg}`);
30
+ }
31
+ };
32
+ const writeTsonicJson = (dir, fileName = "tsonic.json") => {
33
+ mkdirSync(join(dir, "src"), { recursive: true });
34
+ writeFileSync(join(dir, fileName), JSON.stringify({
35
+ $schema: "https://tsonic.dev/schema/v1.json",
36
+ rootNamespace: "Test",
37
+ entryPoint: "src/App.ts",
38
+ sourceRoot: "src",
39
+ outputDirectory: "generated",
40
+ outputName: "app",
41
+ dotnetVersion: "net10.0",
42
+ dotnet: {
43
+ typeRoots: ["node_modules/@tsonic/globals"],
44
+ libraries: [],
45
+ frameworkReferences: [],
46
+ packageReferences: [],
47
+ },
48
+ }, null, 2) + "\n", "utf-8");
49
+ writeFileSync(join(dir, "package.json"), JSON.stringify({ name: "test", private: true, type: "module" }, null, 2) +
50
+ "\n", "utf-8");
51
+ };
52
+ const writeNugetConfig = (projectRoot, feedDir) => {
53
+ const xml = `<?xml version="1.0" encoding="utf-8"?>
54
+ <configuration>
55
+ <packageSources>
56
+ <clear />
57
+ <add key="local" value="${feedDir}" />
58
+ </packageSources>
59
+ </configuration>
60
+ `;
61
+ writeFileSync(join(projectRoot, "nuget.config"), xml, "utf-8");
62
+ };
63
+ const createNugetPackage = (workDir, feedDir, pkg) => {
64
+ const projDir = join(workDir, `${pkg.id}.${pkg.version}`);
65
+ mkdirSync(projDir, { recursive: true });
66
+ const deps = pkg.deps && pkg.deps.length > 0
67
+ ? `<ItemGroup>\n${pkg.deps
68
+ .map((d) => ` <PackageReference Include="${d.id}" Version="${d.version}" />`)
69
+ .join("\n")}\n</ItemGroup>\n`
70
+ : "";
71
+ const csproj = `<Project Sdk="Microsoft.NET.Sdk">
72
+ <PropertyGroup>
73
+ <TargetFramework>net10.0</TargetFramework>
74
+ <ImplicitUsings>false</ImplicitUsings>
75
+ <Nullable>enable</Nullable>
76
+ <PackageId>${pkg.id}</PackageId>
77
+ <Version>${pkg.version}</Version>
78
+ </PropertyGroup>
79
+ ${deps}</Project>
80
+ `;
81
+ writeFileSync(join(projDir, `${pkg.id}.csproj`), csproj, "utf-8");
82
+ writeFileSync(join(projDir, "Class1.cs"), `namespace ${pkg.id.replace(/\./g, "_")};\npublic sealed class ${pkg.id
83
+ .split(".")
84
+ .pop()}Type { }\n`, "utf-8");
85
+ // Pack to local feed (uses nuget.config in parent dirs).
86
+ run(projDir, "dotnet", [
87
+ "pack",
88
+ "-c",
89
+ "Release",
90
+ "-o",
91
+ feedDir,
92
+ "--nologo",
93
+ ]);
94
+ };
95
+ describe("add commands - dependency closure bindings", function () {
96
+ this.timeout(10 * 60 * 1000);
97
+ it("add nuget generates bindings for transitive deps (A -> B -> C)", () => {
98
+ const dir = mkdtempSync(join(tmpdir(), "tsonic-add-nuget-"));
99
+ try {
100
+ writeTsonicJson(dir);
101
+ // Link required standard bindings packages into the temp project (no network).
102
+ linkDir(join(repoRoot, "node_modules/@tsonic/dotnet"), join(dir, "node_modules/@tsonic/dotnet"));
103
+ linkDir(join(repoRoot, "node_modules/@tsonic/core"), join(dir, "node_modules/@tsonic/core"));
104
+ const feedDir = join(dir, "feed");
105
+ mkdirSync(feedDir, { recursive: true });
106
+ writeNugetConfig(dir, feedDir);
107
+ // Build local NuGet feed packages: Acme.C, Acme.B(depends on C), Acme.A(depends on B).
108
+ createNugetPackage(dir, feedDir, { id: "Acme.C", version: "1.0.0" });
109
+ createNugetPackage(dir, feedDir, {
110
+ id: "Acme.B",
111
+ version: "1.0.0",
112
+ deps: [{ id: "Acme.C", version: "1.0.0" }],
113
+ });
114
+ createNugetPackage(dir, feedDir, {
115
+ id: "Acme.A",
116
+ version: "1.0.0",
117
+ deps: [{ id: "Acme.B", version: "1.0.0" }],
118
+ });
119
+ const result = addNugetCommand("Acme.A", "1.0.0", undefined, join(dir, "tsonic.json"), {
120
+ verbose: false,
121
+ quiet: true,
122
+ });
123
+ expect(result.ok).to.equal(true);
124
+ // Airplane-grade requirement: deps bindings are generated automatically.
125
+ expect(existsSync(join(dir, "node_modules", "acme-a-types"))).to.equal(true);
126
+ expect(existsSync(join(dir, "node_modules", "acme-b-types"))).to.equal(true);
127
+ expect(existsSync(join(dir, "node_modules", "acme-c-types"))).to.equal(true);
128
+ }
129
+ finally {
130
+ rmSync(dir, { recursive: true, force: true });
131
+ }
132
+ });
133
+ it("update nuget updates pinned version and keeps bindings green", () => {
134
+ const dir = mkdtempSync(join(tmpdir(), "tsonic-update-nuget-"));
135
+ try {
136
+ writeTsonicJson(dir, "tsonic.custom.json");
137
+ linkDir(join(repoRoot, "node_modules/@tsonic/dotnet"), join(dir, "node_modules/@tsonic/dotnet"));
138
+ linkDir(join(repoRoot, "node_modules/@tsonic/core"), join(dir, "node_modules/@tsonic/core"));
139
+ const feedDir = join(dir, "feed");
140
+ mkdirSync(feedDir, { recursive: true });
141
+ writeNugetConfig(dir, feedDir);
142
+ createNugetPackage(dir, feedDir, { id: "Acme.D", version: "1.0.0" });
143
+ createNugetPackage(dir, feedDir, { id: "Acme.D", version: "1.0.1" });
144
+ const configPath = join(dir, "tsonic.custom.json");
145
+ const add = addNugetCommand("Acme.D", "1.0.0", undefined, configPath, {
146
+ verbose: false,
147
+ quiet: true,
148
+ });
149
+ expect(add.ok).to.equal(true);
150
+ expect(existsSync(join(dir, "node_modules", "acme-d-types"))).to.equal(true);
151
+ const update = updateNugetCommand("Acme.D", "1.0.1", undefined, configPath, { verbose: false, quiet: true });
152
+ expect(update.ok).to.equal(true);
153
+ const updated = JSON.parse(readFileSync(configPath, "utf-8"));
154
+ const pr = updated.dotnet?.packageReferences?.find((p) => p.id === "Acme.D");
155
+ expect(pr?.version).to.equal("1.0.1");
156
+ expect(existsSync(join(dir, "node_modules", "acme-d-types"))).to.equal(true);
157
+ }
158
+ finally {
159
+ rmSync(dir, { recursive: true, force: true });
160
+ }
161
+ });
162
+ it("remove nuget removes package reference from config", () => {
163
+ const dir = mkdtempSync(join(tmpdir(), "tsonic-remove-nuget-"));
164
+ try {
165
+ writeTsonicJson(dir);
166
+ linkDir(join(repoRoot, "node_modules/@tsonic/dotnet"), join(dir, "node_modules/@tsonic/dotnet"));
167
+ linkDir(join(repoRoot, "node_modules/@tsonic/core"), join(dir, "node_modules/@tsonic/core"));
168
+ const configPath = join(dir, "tsonic.json");
169
+ const cfg = JSON.parse(readFileSync(configPath, "utf-8"));
170
+ cfg.dotnet = cfg.dotnet ?? {};
171
+ cfg.dotnet.packageReferences = [{ id: "Acme.A", version: "1.0.0" }];
172
+ writeFileSync(configPath, JSON.stringify(cfg, null, 2) + "\n", "utf-8");
173
+ const removed = removeNugetCommand("Acme.A", configPath, {
174
+ verbose: false,
175
+ quiet: true,
176
+ });
177
+ expect(removed.ok).to.equal(true);
178
+ const updated = JSON.parse(readFileSync(configPath, "utf-8"));
179
+ expect(updated.dotnet?.packageReferences).to.deep.equal([]);
180
+ }
181
+ finally {
182
+ rmSync(dir, { recursive: true, force: true });
183
+ }
184
+ });
185
+ it("add package resolves netstandard-style dependencies under .NET 10", () => {
186
+ const dir = mkdtempSync(join(tmpdir(), "tsonic-add-package-"));
187
+ try {
188
+ writeTsonicJson(dir);
189
+ linkDir(join(repoRoot, "node_modules/@tsonic/dotnet"), join(dir, "node_modules/@tsonic/dotnet"));
190
+ linkDir(join(repoRoot, "node_modules/@tsonic/core"), join(dir, "node_modules/@tsonic/core"));
191
+ // Build a netstandard2.0 library (commonly references netstandard 2.0.0.0).
192
+ const libDir = join(dir, "ns");
193
+ run(dir, "dotnet", [
194
+ "new",
195
+ "classlib",
196
+ "-n",
197
+ "NetStandardLib",
198
+ "-f",
199
+ "netstandard2.0",
200
+ "--no-restore",
201
+ "--output",
202
+ libDir,
203
+ ]);
204
+ run(libDir, "dotnet", ["build", "-c", "Release", "--nologo"]);
205
+ const dll = join(libDir, "bin", "Release", "netstandard2.0", "NetStandardLib.dll");
206
+ expect(existsSync(dll)).to.equal(true);
207
+ const add = addPackageCommand(dll, undefined, join(dir, "tsonic.json"), {
208
+ verbose: false,
209
+ quiet: true,
210
+ });
211
+ expect(add.ok).to.equal(true);
212
+ // Should have generated a bindings package in node_modules.
213
+ expect(existsSync(join(dir, "node_modules", "net-standard-lib-types"))).to.equal(true);
214
+ }
215
+ finally {
216
+ rmSync(dir, { recursive: true, force: true });
217
+ }
218
+ });
219
+ it("add package allows constructor constraint loss by default (use --strict to fail)", () => {
220
+ const makeLib = (dir) => {
221
+ const libDir = join(dir, "ctor");
222
+ run(dir, "dotnet", [
223
+ "new",
224
+ "classlib",
225
+ "-n",
226
+ "CtorConstraintInterfaceLib",
227
+ "-f",
228
+ "net10.0",
229
+ "--no-restore",
230
+ "--output",
231
+ libDir,
232
+ ]);
233
+ writeFileSync(join(libDir, "Api.cs"), `namespace CtorConstraintInterfaceLib;\n\npublic interface IFactory<T> where T : new()\n{\n T Make();\n}\n\npublic sealed class Factory<T> : IFactory<T> where T : new()\n{\n public T Make() => new T();\n}\n`, "utf-8");
234
+ run(libDir, "dotnet", ["build", "-c", "Release", "--nologo"]);
235
+ const dll = join(libDir, "bin", "Release", "net10.0", "CtorConstraintInterfaceLib.dll");
236
+ expect(existsSync(dll)).to.equal(true);
237
+ return dll;
238
+ };
239
+ // Default: should succeed (we pass --allow-constructor-constraint-loss).
240
+ const dir = mkdtempSync(join(tmpdir(), "tsonic-ctor-constraint-"));
241
+ try {
242
+ writeTsonicJson(dir);
243
+ linkDir(join(repoRoot, "node_modules/@tsonic/dotnet"), join(dir, "node_modules/@tsonic/dotnet"));
244
+ linkDir(join(repoRoot, "node_modules/@tsonic/core"), join(dir, "node_modules/@tsonic/core"));
245
+ const dll = makeLib(dir);
246
+ const add = addPackageCommand(dll, undefined, join(dir, "tsonic.json"), {
247
+ verbose: false,
248
+ quiet: true,
249
+ });
250
+ expect(add.ok).to.equal(true);
251
+ }
252
+ finally {
253
+ rmSync(dir, { recursive: true, force: true });
254
+ }
255
+ // Strict: should fail with TBG406.
256
+ const dirStrict = mkdtempSync(join(tmpdir(), "tsonic-ctor-constraint-strict-"));
257
+ try {
258
+ writeTsonicJson(dirStrict);
259
+ linkDir(join(repoRoot, "node_modules/@tsonic/dotnet"), join(dirStrict, "node_modules/@tsonic/dotnet"));
260
+ linkDir(join(repoRoot, "node_modules/@tsonic/core"), join(dirStrict, "node_modules/@tsonic/core"));
261
+ const dll = makeLib(dirStrict);
262
+ const add = addPackageCommand(dll, undefined, join(dirStrict, "tsonic.json"), {
263
+ verbose: false,
264
+ quiet: true,
265
+ strict: true,
266
+ });
267
+ expect(add.ok).to.equal(false);
268
+ if (add.ok === false) {
269
+ expect(add.error).to.include("TBG406");
270
+ }
271
+ }
272
+ finally {
273
+ rmSync(dirStrict, { recursive: true, force: true });
274
+ }
275
+ });
276
+ });
277
+ //# sourceMappingURL=add-deps.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-deps.test.js","sourceRoot":"","sources":["../../src/commands/add-deps.test.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@
10
10
  import type { Result } from "../types.js";
11
11
  import { type AddCommandOptions } from "./add-common.js";
12
12
  export type AddFrameworkOptions = AddCommandOptions;
13
- export declare const addFrameworkCommand: (frameworkReference: string, typesPackage: string | undefined, projectRoot: string, options?: AddFrameworkOptions) => Result<{
13
+ export declare const addFrameworkCommand: (frameworkReference: string, typesPackage: string | undefined, configPath: string, options?: AddFrameworkOptions) => Result<{
14
14
  frameworkReference: string;
15
15
  bindings: string;
16
16
  }, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"add-framework.d.ts","sourceRoot":"","sources":["../../src/commands/add-framework.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAgB,MAAM,aAAa,CAAC;AACxD,OAAO,EAUL,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAWpD,eAAO,MAAM,mBAAmB,GAC9B,oBAAoB,MAAM,EAC1B,cAAc,MAAM,GAAG,SAAS,EAChC,aAAa,MAAM,EACnB,UAAS,mBAAwB,KAChC,MAAM,CAAC;IAAE,kBAAkB,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,CAoHjE,CAAC"}
1
+ {"version":3,"file":"add-framework.d.ts","sourceRoot":"","sources":["../../src/commands/add-framework.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAgB,MAAM,aAAa,CAAC;AAGxD,OAAO,EAYL,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAcpD,eAAO,MAAM,mBAAmB,GAC9B,oBAAoB,MAAM,EAC1B,cAAc,MAAM,GAAG,SAAS,EAChC,YAAY,MAAM,EAClB,UAAS,mBAAwB,KAChC,MAAM,CAAC;IAAE,kBAAkB,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,CAsIjE,CAAC"}
@@ -7,32 +7,57 @@
7
7
  * If typesPackage is omitted, bindings are auto-generated via tsbindgen from the
8
8
  * installed shared framework assemblies.
9
9
  */
10
- import { existsSync, mkdirSync } from "node:fs";
11
- import { join } from "node:path";
12
- import { defaultBindingsPackageNameForFramework, detectTsbindgenNaming, ensurePackageJson, listDotnetRuntimes, npmInstallDevDependency, readTsonicJson, resolveFromProjectRoot, resolveTsbindgenDllPath, tsbindgenGenerate, writeTsonicJson, } from "./add-common.js";
13
- const addUnique = (arr, value) => {
14
- if (!arr.includes(value))
15
- arr.push(value);
16
- };
10
+ import { loadConfig } from "../config.js";
11
+ import { dirname } from "node:path";
12
+ import { bindingsStoreDir, defaultBindingsPackageNameForFramework, detectTsbindgenNaming, ensureGeneratedBindingsPackageJson, installGeneratedBindingsPackage, listDotnetRuntimes, npmInstallDevDependency, resolveFromProjectRoot, resolvePackageRoot, resolveTsbindgenDllPath, tsbindgenGenerate, writeTsonicJson, } from "./add-common.js";
13
+ const normalizeFrameworkRefId = (value) => typeof value === "string" ? value : value.id;
17
14
  const isValidTypesPackageName = (name) => {
18
15
  if (!name.startsWith("@") && !name.includes("/"))
19
16
  return true;
20
17
  return /^@[a-z0-9-]+\/[a-z0-9-]+$/i.test(name);
21
18
  };
22
- export const addFrameworkCommand = (frameworkReference, typesPackage, projectRoot, options = {}) => {
19
+ export const addFrameworkCommand = (frameworkReference, typesPackage, configPath, options = {}) => {
20
+ const projectRoot = dirname(configPath);
23
21
  if (!frameworkReference.trim()) {
24
22
  return { ok: false, error: "Framework reference must be non-empty" };
25
23
  }
26
24
  if (typesPackage !== undefined && !isValidTypesPackageName(typesPackage)) {
27
25
  return { ok: false, error: `Invalid types package name: ${typesPackage}` };
28
26
  }
29
- const tsonicConfigResult = readTsonicJson(projectRoot);
27
+ const tsonicConfigResult = loadConfig(configPath);
30
28
  if (!tsonicConfigResult.ok)
31
29
  return tsonicConfigResult;
32
- const { path: configPath, config } = tsonicConfigResult.value;
30
+ const config = tsonicConfigResult.value;
33
31
  const dotnet = config.dotnet ?? {};
34
- const frameworkRefs = [...(dotnet.frameworkReferences ?? [])];
35
- addUnique(frameworkRefs, frameworkReference);
32
+ const frameworkRefs = [
33
+ ...(dotnet.frameworkReferences ?? []),
34
+ ];
35
+ const idx = frameworkRefs.findIndex((r) => normalizeFrameworkRefId(r).toLowerCase() ===
36
+ frameworkReference.toLowerCase());
37
+ if (idx >= 0) {
38
+ const existing = frameworkRefs[idx];
39
+ if (typesPackage) {
40
+ if (typeof existing === "string") {
41
+ frameworkRefs[idx] = { id: existing, types: typesPackage };
42
+ }
43
+ else if (existing.types && existing.types !== typesPackage) {
44
+ return {
45
+ ok: false,
46
+ error: `Framework reference already present with a different types package:\n` +
47
+ `- ${frameworkReference}\n` +
48
+ `- existing: ${existing.types}\n` +
49
+ `- requested: ${typesPackage}\n` +
50
+ `Refusing to change automatically (airplane-grade). Update tsonic.json manually if intended.`,
51
+ };
52
+ }
53
+ else {
54
+ frameworkRefs[idx] = { ...existing, types: typesPackage };
55
+ }
56
+ }
57
+ }
58
+ else {
59
+ frameworkRefs.push(typesPackage ? { id: frameworkReference, types: typesPackage } : frameworkReference);
60
+ }
36
61
  const nextConfig = {
37
62
  ...config,
38
63
  dotnet: {
@@ -69,25 +94,21 @@ export const addFrameworkCommand = (frameworkReference, typesPackage, projectRoo
69
94
  `Installed runtimes:\n${available}`,
70
95
  };
71
96
  }
72
- const dotnetLib = join(projectRoot, "node_modules/@tsonic/dotnet");
73
- const coreLib = join(projectRoot, "node_modules/@tsonic/core");
74
- if (!existsSync(join(dotnetLib, "package.json"))) {
75
- return {
76
- ok: false,
77
- error: "Missing @tsonic/dotnet in node_modules. Run 'tsonic project init' (recommended) or install it manually.",
78
- };
79
- }
80
- if (!existsSync(join(coreLib, "package.json"))) {
81
- return {
82
- ok: false,
83
- error: "Missing @tsonic/core in node_modules. Run 'tsonic project init' (recommended) or install it manually.",
84
- };
85
- }
97
+ const dotnetRoot = resolvePackageRoot(projectRoot, "@tsonic/dotnet");
98
+ if (!dotnetRoot.ok)
99
+ return dotnetRoot;
100
+ const coreRoot = resolvePackageRoot(projectRoot, "@tsonic/core");
101
+ if (!coreRoot.ok)
102
+ return coreRoot;
103
+ const dotnetLib = dotnetRoot.value;
104
+ const coreLib = coreRoot.value;
86
105
  const naming = detectTsbindgenNaming(nextConfig);
87
106
  const generatedPackage = defaultBindingsPackageNameForFramework(frameworkReference);
88
- const bindingsDir = join(projectRoot, "bindings", generatedPackage);
89
- mkdirSync(bindingsDir, { recursive: true });
90
- const packageJsonResult = ensurePackageJson(bindingsDir, generatedPackage);
107
+ const bindingsDir = bindingsStoreDir(projectRoot, "framework", generatedPackage);
108
+ const packageJsonResult = ensureGeneratedBindingsPackageJson(bindingsDir, generatedPackage, {
109
+ kind: "framework",
110
+ source: { frameworkReference },
111
+ });
91
112
  if (!packageJsonResult.ok)
92
113
  return packageJsonResult;
93
114
  const generateArgs = [
@@ -111,12 +132,9 @@ export const addFrameworkCommand = (frameworkReference, typesPackage, projectRoo
111
132
  const genResult = tsbindgenGenerate(projectRoot, tsbindgenDll, generateArgs, options);
112
133
  if (!genResult.ok)
113
134
  return genResult;
114
- const ensurePkg = ensurePackageJson(bindingsDir, generatedPackage);
115
- if (!ensurePkg.ok)
116
- return ensurePkg;
117
- const installLocal = npmInstallDevDependency(projectRoot, `file:bindings/${generatedPackage}`, options);
118
- if (!installLocal.ok)
119
- return installLocal;
135
+ const installResult = installGeneratedBindingsPackage(projectRoot, generatedPackage, bindingsDir);
136
+ if (!installResult.ok)
137
+ return installResult;
120
138
  return {
121
139
  ok: true,
122
140
  value: { frameworkReference, bindings: generatedPackage },
@@ -1 +1 @@
1
- {"version":3,"file":"add-framework.js","sourceRoot":"","sources":["../../src/commands/add-framework.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"add-framework.js","sourceRoot":"","sources":["../../src/commands/add-framework.ts"],"names":[],"mappings":"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"}
@@ -4,13 +4,16 @@
4
4
  * Usage:
5
5
  * tsonic add nuget <PackageId> <Version> [typesPackage]
6
6
  *
7
- * If typesPackage is omitted, bindings are auto-generated via tsbindgen from the
8
- * restored compile-time assemblies (including transitive dependencies).
7
+ * Airplane-grade rules:
8
+ * - Versions are pinned (no automatic upgrades/downgrades)
9
+ * - If a types package is provided, we do NOT auto-generate bindings
10
+ * - If types are omitted, we auto-generate bindings for the full transitive closure
11
+ * via `tsonic restore` (single source of truth)
9
12
  */
10
13
  import type { Result } from "../types.js";
11
14
  import { type AddCommandOptions } from "./add-common.js";
12
15
  export type AddNugetOptions = AddCommandOptions;
13
- export declare const addNugetCommand: (packageId: string, version: string, typesPackage: string | undefined, projectRoot: string, options?: AddNugetOptions) => Result<{
16
+ export declare const addNugetCommand: (id: string, ver: string, typesPackage: string | undefined, configPath: string, options?: AddNugetOptions) => Result<{
14
17
  packageId: string;
15
18
  version: string;
16
19
  bindings: string;
@@ -1 +1 @@
1
- {"version":3,"file":"add-nuget.d.ts","sourceRoot":"","sources":["../../src/commands/add-nuget.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAgB,MAAM,aAAa,CAAC;AACxD,OAAO,EAUL,KAAK,iBAAiB,EAIvB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,eAAe,GAAG,iBAAiB,CAAC;AAoHhD,eAAO,MAAM,eAAe,GAC1B,WAAW,MAAM,EACjB,SAAS,MAAM,EACf,cAAc,MAAM,GAAG,SAAS,EAChC,aAAa,MAAM,EACnB,UAAS,eAAoB,KAC5B,MAAM,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,CAoLzE,CAAC"}
1
+ {"version":3,"file":"add-nuget.d.ts","sourceRoot":"","sources":["../../src/commands/add-nuget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAgB,MAAM,aAAa,CAAC;AAGxD,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAC;AAGzB,MAAM,MAAM,eAAe,GAAG,iBAAiB,CAAC;AAehD,eAAO,MAAM,eAAe,GAC1B,IAAI,MAAM,EACV,KAAK,MAAM,EACX,cAAc,MAAM,GAAG,SAAS,EAChC,YAAY,MAAM,EAClB,UAAS,eAAoB,KAC5B,MAAM,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,CAoFzE,CAAC"}