@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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/cli/dispatcher.d.ts.map +1 -1
- package/dist/cli/dispatcher.js +85 -44
- package/dist/cli/dispatcher.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +15 -16
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/parser.js +5 -5
- package/dist/cli/parser.js.map +1 -1
- package/dist/cli/parser.test.js +3 -7
- package/dist/cli/parser.test.js.map +1 -1
- package/dist/commands/add-common.d.ts +2 -4
- package/dist/commands/add-common.d.ts.map +1 -1
- package/dist/commands/add-common.js +0 -6
- package/dist/commands/add-common.js.map +1 -1
- package/dist/commands/add-deps.test.js +13 -20
- package/dist/commands/add-deps.test.js.map +1 -1
- package/dist/commands/add-framework.d.ts +1 -1
- package/dist/commands/add-framework.d.ts.map +1 -1
- package/dist/commands/add-framework.js +14 -23
- package/dist/commands/add-framework.js.map +1 -1
- package/dist/commands/add-js.d.ts +2 -2
- package/dist/commands/add-js.d.ts.map +1 -1
- package/dist/commands/add-js.js +17 -24
- package/dist/commands/add-js.js.map +1 -1
- package/dist/commands/add-js.test.js +22 -14
- package/dist/commands/add-js.test.js.map +1 -1
- package/dist/commands/add-nodejs.d.ts +2 -2
- package/dist/commands/add-nodejs.d.ts.map +1 -1
- package/dist/commands/add-nodejs.js +18 -25
- package/dist/commands/add-nodejs.js.map +1 -1
- package/dist/commands/add-nodejs.test.js +26 -18
- package/dist/commands/add-nodejs.test.js.map +1 -1
- package/dist/commands/add-nuget.d.ts +1 -1
- package/dist/commands/add-nuget.d.ts.map +1 -1
- package/dist/commands/add-nuget.js +7 -7
- package/dist/commands/add-nuget.js.map +1 -1
- package/dist/commands/add-package.d.ts.map +1 -1
- package/dist/commands/add-package.js +59 -35
- package/dist/commands/add-package.js.map +1 -1
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +157 -11
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +32 -26
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/init.d.ts +10 -19
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +150 -265
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/init.test.js +19 -56
- package/dist/commands/init.test.js.map +1 -1
- package/dist/commands/pack.js +1 -1
- package/dist/commands/pack.js.map +1 -1
- package/dist/commands/remove-nuget.d.ts +1 -1
- package/dist/commands/remove-nuget.d.ts.map +1 -1
- package/dist/commands/remove-nuget.js +3 -3
- package/dist/commands/remove-nuget.js.map +1 -1
- package/dist/commands/restore.d.ts +1 -1
- package/dist/commands/restore.d.ts.map +1 -1
- package/dist/commands/restore.js +80 -57
- package/dist/commands/restore.js.map +1 -1
- package/dist/commands/restore.test.js +103 -28
- package/dist/commands/restore.test.js.map +1 -1
- package/dist/commands/update-nuget.d.ts +1 -1
- package/dist/commands/update-nuget.d.ts.map +1 -1
- package/dist/commands/update-nuget.js +3 -3
- package/dist/commands/update-nuget.js.map +1 -1
- package/dist/config.d.ts +18 -9
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +234 -153
- package/dist/config.js.map +1 -1
- package/dist/config.test.js +169 -147
- package/dist/config.test.js.map +1 -1
- package/dist/dotnet/runtime-assets.d.ts +1 -0
- package/dist/dotnet/runtime-assets.d.ts.map +1 -1
- package/dist/dotnet/runtime-assets.js +30 -0
- package/dist/dotnet/runtime-assets.js.map +1 -1
- package/dist/types.d.ts +69 -37
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -5,8 +5,8 @@ import { describe, it } from "mocha";
|
|
|
5
5
|
import { expect } from "chai";
|
|
6
6
|
import { mkdtempSync, readFileSync, rmSync } from "node:fs";
|
|
7
7
|
import { tmpdir } from "node:os";
|
|
8
|
-
import { join } from "node:path";
|
|
9
|
-
import { getTypePackageInfo,
|
|
8
|
+
import { basename, join } from "node:path";
|
|
9
|
+
import { getTypePackageInfo, initWorkspace } from "./init.js";
|
|
10
10
|
describe("Init Command", () => {
|
|
11
11
|
describe("getTypePackageInfo", () => {
|
|
12
12
|
describe("default (no options)", () => {
|
|
@@ -16,7 +16,6 @@ describe("Init Command", () => {
|
|
|
16
16
|
expect(packageNames).to.include("tsonic");
|
|
17
17
|
expect(packageNames).to.include("@tsonic/core");
|
|
18
18
|
expect(packageNames).to.include("@tsonic/globals");
|
|
19
|
-
expect(packageNames).to.not.include("@tsonic/globals-pure");
|
|
20
19
|
expect(packageNames).to.not.include("@tsonic/nodejs");
|
|
21
20
|
expect(packageNames).to.not.include("@tsonic/js");
|
|
22
21
|
});
|
|
@@ -47,29 +46,6 @@ describe("Init Command", () => {
|
|
|
47
46
|
expect(packageNames).to.include("@tsonic/js");
|
|
48
47
|
});
|
|
49
48
|
});
|
|
50
|
-
describe("pure flag", () => {
|
|
51
|
-
it("should use globals-pure when pure flag is true", () => {
|
|
52
|
-
const result = getTypePackageInfo({ pure: true });
|
|
53
|
-
const packageNames = result.packages.map((p) => p.name);
|
|
54
|
-
expect(packageNames).to.include("tsonic");
|
|
55
|
-
expect(packageNames).to.include("@tsonic/core");
|
|
56
|
-
expect(packageNames).to.include("@tsonic/globals-pure");
|
|
57
|
-
expect(packageNames).to.not.include("@tsonic/globals");
|
|
58
|
-
expect(result.typeRoots).to.deep.equal([
|
|
59
|
-
"node_modules/@tsonic/globals-pure",
|
|
60
|
-
]);
|
|
61
|
-
});
|
|
62
|
-
it("should use globals-pure with nodejs when both flags are true", () => {
|
|
63
|
-
const result = getTypePackageInfo({ nodejs: true, pure: true });
|
|
64
|
-
const packageNames = result.packages.map((p) => p.name);
|
|
65
|
-
expect(packageNames).to.include("tsonic");
|
|
66
|
-
expect(packageNames).to.include("@tsonic/core");
|
|
67
|
-
expect(packageNames).to.include("@tsonic/globals-pure");
|
|
68
|
-
expect(packageNames).to.include("@tsonic/dotnet");
|
|
69
|
-
expect(packageNames).to.include("@tsonic/nodejs");
|
|
70
|
-
expect(packageNames).to.not.include("@tsonic/globals");
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
49
|
describe("package versions", () => {
|
|
74
50
|
it("should use latest version for all packages", () => {
|
|
75
51
|
const result = getTypePackageInfo();
|
|
@@ -87,17 +63,17 @@ describe("Init Command", () => {
|
|
|
87
63
|
});
|
|
88
64
|
});
|
|
89
65
|
});
|
|
90
|
-
describe("
|
|
66
|
+
describe("initWorkspace", () => {
|
|
91
67
|
it("should generate dotnet sample for default mode", () => {
|
|
92
68
|
const dir = mkdtempSync(join(tmpdir(), "tsonic-init-default-"));
|
|
93
69
|
try {
|
|
94
|
-
const result =
|
|
70
|
+
const result = initWorkspace(dir, { skipTypes: true });
|
|
95
71
|
expect(result.ok).to.equal(true);
|
|
96
|
-
const
|
|
72
|
+
const workspaceName = basename(dir);
|
|
73
|
+
const appTs = readFileSync(join(dir, "packages", workspaceName, "src", "App.ts"), "utf-8");
|
|
97
74
|
expect(appTs).to.include('@tsonic/dotnet/System.js');
|
|
98
|
-
expect(appTs).to.include("Console.
|
|
99
|
-
expect(appTs).to.include("File.
|
|
100
|
-
expect(appTs).to.not.include("@tsonic/dotnet-pure/System.js");
|
|
75
|
+
expect(appTs).to.include("Console.WriteLine");
|
|
76
|
+
expect(appTs).to.include("File.ReadAllText");
|
|
101
77
|
}
|
|
102
78
|
finally {
|
|
103
79
|
rmSync(dir, { recursive: true, force: true });
|
|
@@ -106,14 +82,15 @@ describe("Init Command", () => {
|
|
|
106
82
|
it("should generate js sample when --js is enabled", () => {
|
|
107
83
|
const dir = mkdtempSync(join(tmpdir(), "tsonic-init-js-"));
|
|
108
84
|
try {
|
|
109
|
-
const result =
|
|
85
|
+
const result = initWorkspace(dir, { skipTypes: true, js: true });
|
|
110
86
|
expect(result.ok).to.equal(true);
|
|
111
|
-
const
|
|
87
|
+
const workspaceName = basename(dir);
|
|
88
|
+
const appTs = readFileSync(join(dir, "packages", workspaceName, "src", "App.ts"), "utf-8");
|
|
112
89
|
expect(appTs).to.include('@tsonic/js/index.js');
|
|
113
90
|
expect(appTs).to.include("JSON.parse");
|
|
114
91
|
expect(appTs).to.include("JSON.stringify");
|
|
115
|
-
const config = JSON.parse(readFileSync(join(dir, "tsonic.json"), "utf-8"));
|
|
116
|
-
expect(config.dotnet?.libraries).to.deep.equal(["
|
|
92
|
+
const config = JSON.parse(readFileSync(join(dir, "tsonic.workspace.json"), "utf-8"));
|
|
93
|
+
expect(config.dotnet?.libraries).to.deep.equal(["libs/Tsonic.JSRuntime.dll"]);
|
|
117
94
|
}
|
|
118
95
|
finally {
|
|
119
96
|
rmSync(dir, { recursive: true, force: true });
|
|
@@ -122,36 +99,22 @@ describe("Init Command", () => {
|
|
|
122
99
|
it("should generate nodejs sample when --nodejs is enabled", () => {
|
|
123
100
|
const dir = mkdtempSync(join(tmpdir(), "tsonic-init-nodejs-"));
|
|
124
101
|
try {
|
|
125
|
-
const result =
|
|
102
|
+
const result = initWorkspace(dir, { skipTypes: true, nodejs: true });
|
|
126
103
|
expect(result.ok).to.equal(true);
|
|
127
|
-
const
|
|
104
|
+
const workspaceName = basename(dir);
|
|
105
|
+
const appTs = readFileSync(join(dir, "packages", workspaceName, "src", "App.ts"), "utf-8");
|
|
128
106
|
expect(appTs).to.include('@tsonic/nodejs/index.js');
|
|
129
107
|
expect(appTs).to.include("console.log");
|
|
130
|
-
const config = JSON.parse(readFileSync(join(dir, "tsonic.json"), "utf-8"));
|
|
108
|
+
const config = JSON.parse(readFileSync(join(dir, "tsonic.workspace.json"), "utf-8"));
|
|
131
109
|
expect(config.dotnet?.libraries).to.deep.equal([
|
|
132
|
-
"
|
|
133
|
-
"
|
|
110
|
+
"libs/Tsonic.JSRuntime.dll",
|
|
111
|
+
"libs/nodejs.dll",
|
|
134
112
|
]);
|
|
135
113
|
}
|
|
136
114
|
finally {
|
|
137
115
|
rmSync(dir, { recursive: true, force: true });
|
|
138
116
|
}
|
|
139
117
|
});
|
|
140
|
-
it("should generate dotnet-pure sample when --pure is enabled", () => {
|
|
141
|
-
const dir = mkdtempSync(join(tmpdir(), "tsonic-init-pure-"));
|
|
142
|
-
try {
|
|
143
|
-
const result = initProject(dir, { skipTypes: true, pure: true });
|
|
144
|
-
expect(result.ok).to.equal(true);
|
|
145
|
-
const appTs = readFileSync(join(dir, "src", "App.ts"), "utf-8");
|
|
146
|
-
expect(appTs).to.include('@tsonic/dotnet-pure/System.js');
|
|
147
|
-
expect(appTs).to.include("Console.WriteLine");
|
|
148
|
-
expect(appTs).to.include("File.ReadAllText");
|
|
149
|
-
expect(appTs).to.not.include("@tsonic/dotnet/System.js");
|
|
150
|
-
}
|
|
151
|
-
finally {
|
|
152
|
-
rmSync(dir, { recursive: true, force: true });
|
|
153
|
-
}
|
|
154
|
-
});
|
|
155
118
|
});
|
|
156
119
|
});
|
|
157
120
|
//# sourceMappingURL=init.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.test.js","sourceRoot":"","sources":["../../src/commands/init.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"init.test.js","sourceRoot":"","sources":["../../src/commands/init.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE9D,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;YACpC,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;gBACvD,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;gBACpC,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAExD,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC1C,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;gBAChD,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;gBACnD,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;gBACtD,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;gBACzC,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;gBACpC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;oBACrC,8BAA8B;iBAC/B,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;YAC3B,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;gBAChE,MAAM,MAAM,GAAG,kBAAkB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpD,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAExD,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC1C,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;gBAChD,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;gBACnD,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;YACvB,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;gBACxD,MAAM,MAAM,GAAG,kBAAkB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;gBAChD,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAExD,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC1C,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;gBAChD,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;gBACnD,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;YAChC,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;gBACpD,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;gBAEpC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBAClC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;gBACtD,MAAM,MAAM,GAAG,kBAAkB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpD,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CACpC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CACnC,CAAC;gBAEF,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;oBAC5B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;gBACtD,CAAC;gBACD,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvD,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAEjC,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACpC,MAAM,KAAK,GAAG,YAAY,CACxB,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,CAAC,EACrD,OAAO,CACR,CAAC;gBACF,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;gBACrD,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;gBAC9C,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YAC/C,CAAC;oBAAS,CAAC;gBACT,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAChD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;YAC3D,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;gBACjE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAEjC,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACpC,MAAM,KAAK,GAAG,YAAY,CACxB,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,CAAC,EACrD,OAAO,CACR,CAAC;gBACF,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;gBAChD,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBACvC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;gBAE3C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CACvB,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,uBAAuB,CAAC,EAAE,OAAO,CAAC,CAG1D,CAAC;gBACF,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC;YAChF,CAAC;oBAAS,CAAC;gBACT,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAChD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;YAChE,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC;YAC/D,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAEjC,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACpC,MAAM,KAAK,GAAG,YAAY,CACxB,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,CAAC,EACrD,OAAO,CACR,CAAC;gBACF,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;gBACpD,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBAExC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CACvB,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,uBAAuB,CAAC,EAAE,OAAO,CAAC,CAG1D,CAAC;gBACF,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;oBAC7C,2BAA2B;oBAC3B,iBAAiB;iBAClB,CAAC,CAAC;YACL,CAAC;oBAAS,CAAC;gBACT,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAChD,CAAC;QACH,CAAC,CAAC,CAAC;IAEL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/commands/pack.js
CHANGED
|
@@ -45,7 +45,7 @@ export const packCommand = (config) => {
|
|
|
45
45
|
if (!quiet) {
|
|
46
46
|
console.log("Step 2/2: Creating NuGet package...");
|
|
47
47
|
}
|
|
48
|
-
const nugetConfigResult = resolveNugetConfigFile(config.
|
|
48
|
+
const nugetConfigResult = resolveNugetConfigFile(config.workspaceRoot);
|
|
49
49
|
if (!nugetConfigResult.ok)
|
|
50
50
|
return nugetConfigResult;
|
|
51
51
|
const packArgs = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pack.js","sourceRoot":"","sources":["../../src/commands/pack.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,MAAsB,EACkB,EAAE;IAC1C,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAE/D,mCAAmC;IACnC,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC3C,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EACH,kGAAkG;SACrG,CAAC;IACJ,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAClC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EACH,qEAAqE;SACxE,CAAC;IACJ,CAAC;IAED,uBAAuB;IACvB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,cAAc,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;QACvB,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;IAEvD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,6BAA6B,eAAe,+CAA+C;SACnG,CAAC;IACJ,CAAC;IAED,0BAA0B;IAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"pack.js","sourceRoot":"","sources":["../../src/commands/pack.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove-nuget.d.ts","sourceRoot":"","sources":["../../src/commands/remove-nuget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"remove-nuget.d.ts","sourceRoot":"","sources":["../../src/commands/remove-nuget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAiD,MAAM,aAAa,CAAC;AAEzF,OAAO,EAAmB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAK1E,eAAO,MAAM,kBAAkB,GAC7B,IAAI,MAAM,EACV,YAAY,MAAM,EAClB,UAAS,iBAAsB,KAC9B,MAAM,CAAC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,CAsCtC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* tsonic remove nuget - remove a NuGet PackageReference from the
|
|
2
|
+
* tsonic remove nuget - remove a NuGet PackageReference from the workspace.
|
|
3
3
|
*
|
|
4
4
|
* Usage:
|
|
5
5
|
* tsonic remove nuget <PackageId>
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* - Deterministic edit: removes exactly one PackageReference by id (case-insensitive)
|
|
9
9
|
* - Always runs `tsonic restore` afterwards to keep local bindings consistent
|
|
10
10
|
*/
|
|
11
|
-
import {
|
|
11
|
+
import { loadWorkspaceConfig } from "../config.js";
|
|
12
12
|
import { writeTsonicJson } from "./add-common.js";
|
|
13
13
|
import { restoreCommand } from "./restore.js";
|
|
14
14
|
const normalizePkgId = (id) => id.trim().toLowerCase();
|
|
@@ -16,7 +16,7 @@ export const removeNugetCommand = (id, configPath, options = {}) => {
|
|
|
16
16
|
if (!id.trim()) {
|
|
17
17
|
return { ok: false, error: "NuGet package id must be non-empty" };
|
|
18
18
|
}
|
|
19
|
-
const configResult =
|
|
19
|
+
const configResult = loadWorkspaceConfig(configPath);
|
|
20
20
|
if (!configResult.ok)
|
|
21
21
|
return configResult;
|
|
22
22
|
const config = configResult.value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove-nuget.js","sourceRoot":"","sources":["../../src/commands/remove-nuget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"remove-nuget.js","sourceRoot":"","sources":["../../src/commands/remove-nuget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,eAAe,EAA0B,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,cAAc,GAAG,CAAC,EAAU,EAAU,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAEvE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,EAAU,EACV,UAAkB,EAClB,UAA6B,EAAE,EACQ,EAAE;IACzC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;QACf,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAC;IACpE,CAAC;IAED,MAAM,YAAY,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACrD,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC;IAElC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IACnC,MAAM,QAAQ,GAA6B;QACzC,GAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI,EAAE,CAA8B;KAClE,CAAC;IAEF,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,cAAc,CAAC,EAAE,CAAC,CACnD,CAAC;IACF,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACZ,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,sCAAsC,EAAE,EAAE,EAAE,CAAC;IAC1E,CAAC;IAED,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAExB,MAAM,UAAU,GAA0B;QACxC,GAAG,MAAM;QACT,MAAM,EAAE;YACN,GAAG,MAAM;YACT,iBAAiB,EAAE,QAAQ;SAC5B;KACF,CAAC;IAEF,MAAM,WAAW,GAAG,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC5D,IAAI,CAAC,WAAW,CAAC,EAAE;QAAE,OAAO,WAAW,CAAC;IAExC,MAAM,aAAa,GAAG,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC1D,IAAI,CAAC,aAAa,CAAC,EAAE;QAAE,OAAO,aAAa,CAAC;IAE5C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC;AAChD,CAAC,CAAC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* tsonic restore - restore .NET dependencies and (re)generate local bindings.
|
|
3
3
|
*
|
|
4
4
|
* This is the "clone a repo and get to green" command:
|
|
5
|
-
* - Runs dotnet restore for NuGet PackageReferences from tsonic.json
|
|
5
|
+
* - Runs dotnet restore for NuGet PackageReferences from tsonic.workspace.json
|
|
6
6
|
* - Generates bindings for all transitive NuGet package deps (no duplicates)
|
|
7
7
|
* - Generates bindings for all local DLLs in dotnet.libraries (no duplicates)
|
|
8
8
|
* - Generates bindings for FrameworkReferences when present
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"restore.d.ts","sourceRoot":"","sources":["../../src/commands/restore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"restore.d.ts","sourceRoot":"","sources":["../../src/commands/restore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAIV,MAAM,EAEP,MAAM,aAAa,CAAC;AAIrB,OAAO,EAaL,KAAK,iBAAiB,EAIvB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,cAAc,GAAG,iBAAiB,CAAC;AA0K/C,eAAO,MAAM,cAAc,GACzB,YAAY,MAAM,EAClB,UAAS,cAAmB,KAC3B,MAAM,CAAC,IAAI,EAAE,MAAM,CAyhBrB,CAAC"}
|
package/dist/commands/restore.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* tsonic restore - restore .NET dependencies and (re)generate local bindings.
|
|
3
3
|
*
|
|
4
4
|
* This is the "clone a repo and get to green" command:
|
|
5
|
-
* - Runs dotnet restore for NuGet PackageReferences from tsonic.json
|
|
5
|
+
* - Runs dotnet restore for NuGet PackageReferences from tsonic.workspace.json
|
|
6
6
|
* - Generates bindings for all transitive NuGet package deps (no duplicates)
|
|
7
7
|
* - Generates bindings for all local DLLs in dotnet.libraries (no duplicates)
|
|
8
8
|
* - Generates bindings for FrameworkReferences when present
|
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
16
16
|
import { basename, dirname, join } from "node:path";
|
|
17
17
|
import { isBuiltInRuntimeDllPath } from "../dotnet/runtime-dlls.js";
|
|
18
|
-
import {
|
|
18
|
+
import { loadWorkspaceConfig } from "../config.js";
|
|
19
19
|
import { resolveNugetConfigFile } from "../dotnet/nuget-config.js";
|
|
20
|
-
import { bindingsStoreDir, defaultBindingsPackageNameForDll, defaultBindingsPackageNameForFramework, defaultBindingsPackageNameForNuget,
|
|
20
|
+
import { bindingsStoreDir, defaultBindingsPackageNameForDll, defaultBindingsPackageNameForFramework, defaultBindingsPackageNameForNuget, ensureGeneratedBindingsPackageJson, installGeneratedBindingsPackage, listDotnetRuntimes, resolveFromProjectRoot, resolvePackageRoot, resolveTsbindgenDllPath, tsbindgenGenerate, tsbindgenResolveClosure, defaultExec, writeTsonicJson, } from "./add-common.js";
|
|
21
21
|
const normalizePkgId = (id) => id.trim().toLowerCase();
|
|
22
22
|
const pickPackageFolder = (assets) => {
|
|
23
23
|
const folders = assets.packageFolders ? Object.keys(assets.packageFolders) : [];
|
|
@@ -130,35 +130,31 @@ const pathIsWithin = (path, dir) => {
|
|
|
130
130
|
const normalizedBase = normalizedDir.replace(/\\/g, "/");
|
|
131
131
|
return normalizedPath.startsWith(normalizedBase);
|
|
132
132
|
};
|
|
133
|
+
const normalizeLibraryKey = (pathLike) => pathLike.replace(/\\/g, "/").replace(/^\.\//, "").toLowerCase();
|
|
133
134
|
export const restoreCommand = (configPath, options = {}) => {
|
|
134
|
-
const configResult =
|
|
135
|
+
const configResult = loadWorkspaceConfig(configPath);
|
|
135
136
|
if (!configResult.ok)
|
|
136
137
|
return configResult;
|
|
137
|
-
const
|
|
138
|
-
const nugetConfigResult = resolveNugetConfigFile(
|
|
138
|
+
const workspaceRoot = dirname(configPath);
|
|
139
|
+
const nugetConfigResult = resolveNugetConfigFile(workspaceRoot);
|
|
139
140
|
if (!nugetConfigResult.ok)
|
|
140
141
|
return nugetConfigResult;
|
|
141
142
|
const nugetConfigFile = nugetConfigResult.value;
|
|
142
143
|
const rawConfig = configResult.value;
|
|
143
144
|
let config = rawConfig;
|
|
144
|
-
const tsbindgenDllResult = resolveTsbindgenDllPath(
|
|
145
|
+
const tsbindgenDllResult = resolveTsbindgenDllPath(workspaceRoot);
|
|
145
146
|
if (!tsbindgenDllResult.ok)
|
|
146
147
|
return tsbindgenDllResult;
|
|
147
148
|
const tsbindgenDll = tsbindgenDllResult.value;
|
|
148
|
-
const runtimesResult = listDotnetRuntimes(
|
|
149
|
+
const runtimesResult = listDotnetRuntimes(workspaceRoot);
|
|
149
150
|
if (!runtimesResult.ok)
|
|
150
151
|
return runtimesResult;
|
|
151
152
|
const runtimes = runtimesResult.value;
|
|
152
|
-
const dotnetRoot = resolvePackageRoot(
|
|
153
|
+
const dotnetRoot = resolvePackageRoot(workspaceRoot, "@tsonic/dotnet");
|
|
153
154
|
if (!dotnetRoot.ok)
|
|
154
155
|
return dotnetRoot;
|
|
155
|
-
const coreRoot = resolvePackageRoot(projectRoot, "@tsonic/core");
|
|
156
|
-
if (!coreRoot.ok)
|
|
157
|
-
return coreRoot;
|
|
158
156
|
const dotnetLib = dotnetRoot.value;
|
|
159
|
-
const coreLib = coreRoot.value;
|
|
160
157
|
const dotnet = config.dotnet ?? {};
|
|
161
|
-
const naming = detectTsbindgenNaming(config);
|
|
162
158
|
// 1) FrameworkReferences bindings
|
|
163
159
|
for (const entry of (dotnet.frameworkReferences ??
|
|
164
160
|
[])) {
|
|
@@ -177,7 +173,7 @@ export const restoreCommand = (configPath, options = {}) => {
|
|
|
177
173
|
};
|
|
178
174
|
}
|
|
179
175
|
const packageName = defaultBindingsPackageNameForFramework(frameworkRef);
|
|
180
|
-
const outDir = bindingsStoreDir(
|
|
176
|
+
const outDir = bindingsStoreDir(workspaceRoot, "framework", packageName);
|
|
181
177
|
const pkgJsonResult = ensureGeneratedBindingsPackageJson(outDir, packageName, {
|
|
182
178
|
kind: "framework",
|
|
183
179
|
source: { frameworkReference: frameworkRef },
|
|
@@ -189,22 +185,18 @@ export const restoreCommand = (configPath, options = {}) => {
|
|
|
189
185
|
runtime.dir,
|
|
190
186
|
"-o",
|
|
191
187
|
outDir,
|
|
192
|
-
"--naming",
|
|
193
|
-
naming,
|
|
194
188
|
"--lib",
|
|
195
189
|
dotnetLib,
|
|
196
|
-
"--lib",
|
|
197
|
-
coreLib,
|
|
198
190
|
];
|
|
199
191
|
for (const rt of runtimes)
|
|
200
192
|
generateArgs.push("--ref-dir", rt.dir);
|
|
201
193
|
for (const dep of options.deps ?? []) {
|
|
202
|
-
generateArgs.push("--ref-dir", resolveFromProjectRoot(
|
|
194
|
+
generateArgs.push("--ref-dir", resolveFromProjectRoot(workspaceRoot, dep));
|
|
203
195
|
}
|
|
204
|
-
const genResult = tsbindgenGenerate(
|
|
196
|
+
const genResult = tsbindgenGenerate(workspaceRoot, tsbindgenDll, generateArgs, options);
|
|
205
197
|
if (!genResult.ok)
|
|
206
198
|
return genResult;
|
|
207
|
-
const installResult = installGeneratedBindingsPackage(
|
|
199
|
+
const installResult = installGeneratedBindingsPackage(workspaceRoot, packageName, outDir);
|
|
208
200
|
if (!installResult.ok)
|
|
209
201
|
return installResult;
|
|
210
202
|
}
|
|
@@ -212,8 +204,8 @@ export const restoreCommand = (configPath, options = {}) => {
|
|
|
212
204
|
const packageReferencesAll = (dotnet.packageReferences ??
|
|
213
205
|
[]);
|
|
214
206
|
if (packageReferencesAll.length > 0) {
|
|
215
|
-
const targetFramework = config.dotnetVersion
|
|
216
|
-
const restoreDir = join(
|
|
207
|
+
const targetFramework = config.dotnetVersion;
|
|
208
|
+
const restoreDir = join(workspaceRoot, ".tsonic", "nuget");
|
|
217
209
|
const restoreProject = writeRestoreProject(restoreDir, targetFramework, packageReferencesAll.map((p) => ({ id: p.id, version: p.version })));
|
|
218
210
|
if (!restoreProject.ok)
|
|
219
211
|
return restoreProject;
|
|
@@ -358,7 +350,7 @@ export const restoreCommand = (configPath, options = {}) => {
|
|
|
358
350
|
if (!typesPkg) {
|
|
359
351
|
return { ok: false, error: `Internal error: missing types package for ${packageId}` };
|
|
360
352
|
}
|
|
361
|
-
const root = resolvePackageRoot(
|
|
353
|
+
const root = resolvePackageRoot(workspaceRoot, typesPkg);
|
|
362
354
|
if (!root.ok)
|
|
363
355
|
return root;
|
|
364
356
|
typesLibDirByPkgId.set(norm, root.value);
|
|
@@ -389,7 +381,7 @@ export const restoreCommand = (configPath, options = {}) => {
|
|
|
389
381
|
continue; // bindings supplied externally; do not auto-generate.
|
|
390
382
|
}
|
|
391
383
|
const packageName = defaultBindingsPackageNameForNuget(node.packageId);
|
|
392
|
-
const outDir = bindingsStoreDir(
|
|
384
|
+
const outDir = bindingsStoreDir(workspaceRoot, "nuget", packageName);
|
|
393
385
|
bindingsDirByLibKey.set(libKey, outDir);
|
|
394
386
|
const pkgJsonResult = ensureGeneratedBindingsPackageJson(outDir, packageName, {
|
|
395
387
|
kind: "nuget",
|
|
@@ -401,12 +393,8 @@ export const restoreCommand = (configPath, options = {}) => {
|
|
|
401
393
|
...seedDlls.flatMap((p) => ["-a", p]),
|
|
402
394
|
"-o",
|
|
403
395
|
outDir,
|
|
404
|
-
"--naming",
|
|
405
|
-
naming,
|
|
406
396
|
"--lib",
|
|
407
397
|
dotnetLib,
|
|
408
|
-
"--lib",
|
|
409
|
-
coreLib,
|
|
410
398
|
];
|
|
411
399
|
const libDirs = new Set();
|
|
412
400
|
for (const depKey of transitiveDeps.get(libKey) ?? []) {
|
|
@@ -434,42 +422,68 @@ export const restoreCommand = (configPath, options = {}) => {
|
|
|
434
422
|
for (const d of compileDirs)
|
|
435
423
|
generateArgs.push("--ref-dir", d);
|
|
436
424
|
for (const dep of options.deps ?? []) {
|
|
437
|
-
generateArgs.push("--ref-dir", resolveFromProjectRoot(
|
|
425
|
+
generateArgs.push("--ref-dir", resolveFromProjectRoot(workspaceRoot, dep));
|
|
438
426
|
}
|
|
439
|
-
const genResult = tsbindgenGenerate(
|
|
427
|
+
const genResult = tsbindgenGenerate(workspaceRoot, tsbindgenDll, generateArgs, options);
|
|
440
428
|
if (!genResult.ok)
|
|
441
429
|
return genResult;
|
|
442
|
-
const installResult = installGeneratedBindingsPackage(
|
|
430
|
+
const installResult = installGeneratedBindingsPackage(workspaceRoot, packageName, outDir);
|
|
443
431
|
if (!installResult.ok)
|
|
444
432
|
return installResult;
|
|
445
433
|
}
|
|
446
434
|
}
|
|
447
435
|
}
|
|
448
436
|
// 3) Local DLL bindings (dotnet.libraries)
|
|
449
|
-
const
|
|
437
|
+
const typesPackageByLibraryPathKey = new Map();
|
|
438
|
+
const libraryPaths = [];
|
|
439
|
+
for (const entry of (dotnet.libraries ?? [])) {
|
|
440
|
+
if (typeof entry === "string") {
|
|
441
|
+
libraryPaths.push(entry);
|
|
442
|
+
continue;
|
|
443
|
+
}
|
|
444
|
+
libraryPaths.push(entry.path);
|
|
445
|
+
if (entry.types === undefined)
|
|
446
|
+
continue;
|
|
447
|
+
const key = normalizeLibraryKey(entry.path);
|
|
448
|
+
if (!key.endsWith(".dll")) {
|
|
449
|
+
return {
|
|
450
|
+
ok: false,
|
|
451
|
+
error: `tsonic.workspace.json: dotnet.libraries entry has 'types' but is not a DLL: ${entry.path}`,
|
|
452
|
+
};
|
|
453
|
+
}
|
|
454
|
+
const existing = typesPackageByLibraryPathKey.get(key);
|
|
455
|
+
if (existing && existing !== entry.types) {
|
|
456
|
+
return {
|
|
457
|
+
ok: false,
|
|
458
|
+
error: `tsonic.workspace.json: conflicting 'types' mapping for '${entry.path}'.\n` +
|
|
459
|
+
`Existing: ${existing}\n` +
|
|
460
|
+
`New: ${entry.types}`,
|
|
461
|
+
};
|
|
462
|
+
}
|
|
463
|
+
typesPackageByLibraryPathKey.set(key, entry.types);
|
|
464
|
+
}
|
|
465
|
+
const dllLibraries = libraryPaths.filter((p) => {
|
|
450
466
|
const normalized = p.replace(/\\/g, "/").toLowerCase();
|
|
451
467
|
if (!normalized.endsWith(".dll"))
|
|
452
468
|
return false;
|
|
453
469
|
if (isBuiltInRuntimeDllPath(p))
|
|
454
470
|
return false;
|
|
455
|
-
// Only DLLs copied into ./
|
|
456
|
-
|
|
457
|
-
// references only.
|
|
458
|
-
return normalized.startsWith("lib/") || normalized.startsWith("./lib/");
|
|
471
|
+
// Only DLLs copied into ./libs are eligible for bindings generation.
|
|
472
|
+
return normalized.startsWith("libs/") || normalized.startsWith("./libs/");
|
|
459
473
|
});
|
|
460
474
|
if (dllLibraries.length > 0) {
|
|
461
|
-
const dllAbs = dllLibraries.map((p) => resolveFromProjectRoot(
|
|
475
|
+
const dllAbs = dllLibraries.map((p) => resolveFromProjectRoot(workspaceRoot, p));
|
|
462
476
|
for (const p of dllAbs) {
|
|
463
477
|
if (!existsSync(p)) {
|
|
464
478
|
return {
|
|
465
479
|
ok: false,
|
|
466
|
-
error: `Missing DLL from tsonic.json dotnet.libraries: ${p}`,
|
|
480
|
+
error: `Missing DLL from tsonic.workspace.json dotnet.libraries: ${p}`,
|
|
467
481
|
};
|
|
468
482
|
}
|
|
469
483
|
}
|
|
470
|
-
const userDeps = (options.deps ?? []).map((d) => resolveFromProjectRoot(
|
|
471
|
-
const refDirs = [...runtimes.map((r) => r.dir), join(
|
|
472
|
-
const closureResult = tsbindgenResolveClosure(
|
|
484
|
+
const userDeps = (options.deps ?? []).map((d) => resolveFromProjectRoot(workspaceRoot, d));
|
|
485
|
+
const refDirs = [...runtimes.map((r) => r.dir), join(workspaceRoot, "libs"), ...userDeps];
|
|
486
|
+
const closureResult = tsbindgenResolveClosure(workspaceRoot, tsbindgenDll, dllAbs, refDirs);
|
|
473
487
|
if (!closureResult.ok)
|
|
474
488
|
return closureResult;
|
|
475
489
|
const closure = closureResult.value;
|
|
@@ -521,9 +535,9 @@ export const restoreCommand = (configPath, options = {}) => {
|
|
|
521
535
|
}
|
|
522
536
|
ids.add(id);
|
|
523
537
|
byId.set(id, asm);
|
|
524
|
-
const destPath = resolveFromProjectRoot(
|
|
538
|
+
const destPath = resolveFromProjectRoot(workspaceRoot, join("libs", basename(asm.path)));
|
|
525
539
|
if (!existsSync(destPath)) {
|
|
526
|
-
return { ok: false, error: `Missing DLL dependency in
|
|
540
|
+
return { ok: false, error: `Missing DLL dependency in libs/: ${destPath}` };
|
|
527
541
|
}
|
|
528
542
|
destPathById.set(id, destPath);
|
|
529
543
|
}
|
|
@@ -573,18 +587,31 @@ export const restoreCommand = (configPath, options = {}) => {
|
|
|
573
587
|
}
|
|
574
588
|
transitiveDeps.set(id, set);
|
|
575
589
|
}
|
|
576
|
-
const
|
|
590
|
+
const libDirById = new Map();
|
|
577
591
|
for (const id of order) {
|
|
578
592
|
const asm = byId.get(id);
|
|
579
593
|
const destPath = destPathById.get(id);
|
|
580
594
|
if (!asm || !destPath)
|
|
581
595
|
return { ok: false, error: `Internal error: missing assembly info for ${id}` };
|
|
596
|
+
const typesPkg = typesPackageByLibraryPathKey.get(normalizeLibraryKey(`libs/${basename(destPath)}`));
|
|
597
|
+
if (typesPkg) {
|
|
598
|
+
const typesRoot = resolvePackageRoot(workspaceRoot, typesPkg);
|
|
599
|
+
if (!typesRoot.ok) {
|
|
600
|
+
return {
|
|
601
|
+
ok: false,
|
|
602
|
+
error: `Bindings package not found for '${basename(destPath)}': ${typesPkg}\n` +
|
|
603
|
+
`Install it in the workspace and retry (e.g. npm install -D ${typesPkg}).`,
|
|
604
|
+
};
|
|
605
|
+
}
|
|
606
|
+
libDirById.set(id, typesRoot.value);
|
|
607
|
+
continue; // bindings supplied externally; do not auto-generate.
|
|
608
|
+
}
|
|
582
609
|
const packageName = defaultBindingsPackageNameForDll(destPath);
|
|
583
|
-
const outDir = bindingsStoreDir(
|
|
584
|
-
|
|
610
|
+
const outDir = bindingsStoreDir(workspaceRoot, "dll", packageName);
|
|
611
|
+
libDirById.set(id, outDir);
|
|
585
612
|
const pkgJsonResult = ensureGeneratedBindingsPackageJson(outDir, packageName, {
|
|
586
613
|
kind: "dll",
|
|
587
|
-
source: { assemblyName: asm.name, version: asm.version, path: `
|
|
614
|
+
source: { assemblyName: asm.name, version: asm.version, path: `libs/${basename(destPath)}` },
|
|
588
615
|
});
|
|
589
616
|
if (!pkgJsonResult.ok)
|
|
590
617
|
return pkgJsonResult;
|
|
@@ -593,15 +620,11 @@ export const restoreCommand = (configPath, options = {}) => {
|
|
|
593
620
|
destPath,
|
|
594
621
|
"-o",
|
|
595
622
|
outDir,
|
|
596
|
-
"--naming",
|
|
597
|
-
naming,
|
|
598
623
|
"--lib",
|
|
599
624
|
dotnetLib,
|
|
600
|
-
"--lib",
|
|
601
|
-
coreLib,
|
|
602
625
|
];
|
|
603
626
|
const libs = Array.from(transitiveDeps.get(id) ?? [])
|
|
604
|
-
.map((depId) =>
|
|
627
|
+
.map((depId) => libDirById.get(depId))
|
|
605
628
|
.filter((p) => typeof p === "string")
|
|
606
629
|
.sort((a, b) => a.localeCompare(b));
|
|
607
630
|
for (const lib of libs)
|
|
@@ -610,11 +633,11 @@ export const restoreCommand = (configPath, options = {}) => {
|
|
|
610
633
|
generateArgs.push("--ref-dir", rt.dir);
|
|
611
634
|
for (const dep of userDeps)
|
|
612
635
|
generateArgs.push("--ref-dir", dep);
|
|
613
|
-
generateArgs.push("--ref-dir", join(
|
|
614
|
-
const genResult = tsbindgenGenerate(
|
|
636
|
+
generateArgs.push("--ref-dir", join(workspaceRoot, "libs"));
|
|
637
|
+
const genResult = tsbindgenGenerate(workspaceRoot, tsbindgenDll, generateArgs, options);
|
|
615
638
|
if (!genResult.ok)
|
|
616
639
|
return genResult;
|
|
617
|
-
const installResult = installGeneratedBindingsPackage(
|
|
640
|
+
const installResult = installGeneratedBindingsPackage(workspaceRoot, packageName, outDir);
|
|
618
641
|
if (!installResult.ok)
|
|
619
642
|
return installResult;
|
|
620
643
|
}
|