@tsonic/cli 0.0.26 → 0.0.28
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 +90 -40
- 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 +21 -19
- package/dist/commands/add-js.js.map +1 -1
- package/dist/commands/add-js.test.js +23 -11
- 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 +22 -19
- package/dist/commands/add-nodejs.js.map +1 -1
- package/dist/commands/add-nodejs.test.js +31 -13
- 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 +44 -30
- 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 +47 -69
- 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 -260
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/init.test.js +21 -51
- 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 +42 -61
- package/dist/commands/restore.js.map +1 -1
- package/dist/commands/restore.test.js +42 -18
- 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 +212 -156
- package/dist/config.js.map +1 -1
- package/dist/config.test.js +156 -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 +59 -36
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* tsonic add framework - add a FrameworkReference to the
|
|
2
|
+
* tsonic add framework - add a FrameworkReference to the workspace, plus bindings.
|
|
3
3
|
*
|
|
4
4
|
* Usage:
|
|
5
5
|
* tsonic add framework Microsoft.AspNetCore.App [typesPackage]
|
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
* If typesPackage is omitted, bindings are auto-generated via tsbindgen from the
|
|
8
8
|
* installed shared framework assemblies.
|
|
9
9
|
*/
|
|
10
|
-
import {
|
|
10
|
+
import { loadWorkspaceConfig } from "../config.js";
|
|
11
11
|
import { dirname } from "node:path";
|
|
12
|
-
import { bindingsStoreDir, defaultBindingsPackageNameForFramework,
|
|
12
|
+
import { bindingsStoreDir, defaultBindingsPackageNameForFramework, ensureGeneratedBindingsPackageJson, installGeneratedBindingsPackage, listDotnetRuntimes, npmInstallDevDependency, resolveFromProjectRoot, resolvePackageRoot, resolveTsbindgenDllPath, tsbindgenGenerate, writeTsonicJson, } from "./add-common.js";
|
|
13
13
|
const normalizeFrameworkRefId = (value) => typeof value === "string" ? value : value.id;
|
|
14
14
|
const isValidTypesPackageName = (name) => {
|
|
15
15
|
if (!name.startsWith("@") && !name.includes("/"))
|
|
@@ -17,14 +17,14 @@ const isValidTypesPackageName = (name) => {
|
|
|
17
17
|
return /^@[a-z0-9-]+\/[a-z0-9-]+$/i.test(name);
|
|
18
18
|
};
|
|
19
19
|
export const addFrameworkCommand = (frameworkReference, typesPackage, configPath, options = {}) => {
|
|
20
|
-
const
|
|
20
|
+
const workspaceRoot = dirname(configPath);
|
|
21
21
|
if (!frameworkReference.trim()) {
|
|
22
22
|
return { ok: false, error: "Framework reference must be non-empty" };
|
|
23
23
|
}
|
|
24
24
|
if (typesPackage !== undefined && !isValidTypesPackageName(typesPackage)) {
|
|
25
25
|
return { ok: false, error: `Invalid types package name: ${typesPackage}` };
|
|
26
26
|
}
|
|
27
|
-
const tsonicConfigResult =
|
|
27
|
+
const tsonicConfigResult = loadWorkspaceConfig(configPath);
|
|
28
28
|
if (!tsonicConfigResult.ok)
|
|
29
29
|
return tsonicConfigResult;
|
|
30
30
|
const config = tsonicConfigResult.value;
|
|
@@ -47,7 +47,7 @@ export const addFrameworkCommand = (frameworkReference, typesPackage, configPath
|
|
|
47
47
|
`- ${frameworkReference}\n` +
|
|
48
48
|
`- existing: ${existing.types}\n` +
|
|
49
49
|
`- requested: ${typesPackage}\n` +
|
|
50
|
-
`Refusing to change automatically (airplane-grade). Update tsonic.json manually if intended.`,
|
|
50
|
+
`Refusing to change automatically (airplane-grade). Update tsonic.workspace.json manually if intended.`,
|
|
51
51
|
};
|
|
52
52
|
}
|
|
53
53
|
else {
|
|
@@ -69,7 +69,7 @@ export const addFrameworkCommand = (frameworkReference, typesPackage, configPath
|
|
|
69
69
|
if (!writeResult.ok)
|
|
70
70
|
return writeResult;
|
|
71
71
|
if (typesPackage) {
|
|
72
|
-
const installResult = npmInstallDevDependency(
|
|
72
|
+
const installResult = npmInstallDevDependency(workspaceRoot, typesPackage, options);
|
|
73
73
|
if (!installResult.ok)
|
|
74
74
|
return installResult;
|
|
75
75
|
return {
|
|
@@ -77,11 +77,11 @@ export const addFrameworkCommand = (frameworkReference, typesPackage, configPath
|
|
|
77
77
|
value: { frameworkReference, bindings: typesPackage },
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
|
-
const tsbindgenDllResult = resolveTsbindgenDllPath(
|
|
80
|
+
const tsbindgenDllResult = resolveTsbindgenDllPath(workspaceRoot);
|
|
81
81
|
if (!tsbindgenDllResult.ok)
|
|
82
82
|
return tsbindgenDllResult;
|
|
83
83
|
const tsbindgenDll = tsbindgenDllResult.value;
|
|
84
|
-
const runtimesResult = listDotnetRuntimes(
|
|
84
|
+
const runtimesResult = listDotnetRuntimes(workspaceRoot);
|
|
85
85
|
if (!runtimesResult.ok)
|
|
86
86
|
return runtimesResult;
|
|
87
87
|
const runtimes = runtimesResult.value;
|
|
@@ -94,17 +94,12 @@ export const addFrameworkCommand = (frameworkReference, typesPackage, configPath
|
|
|
94
94
|
`Installed runtimes:\n${available}`,
|
|
95
95
|
};
|
|
96
96
|
}
|
|
97
|
-
const dotnetRoot = resolvePackageRoot(
|
|
97
|
+
const dotnetRoot = resolvePackageRoot(workspaceRoot, "@tsonic/dotnet");
|
|
98
98
|
if (!dotnetRoot.ok)
|
|
99
99
|
return dotnetRoot;
|
|
100
|
-
const coreRoot = resolvePackageRoot(projectRoot, "@tsonic/core");
|
|
101
|
-
if (!coreRoot.ok)
|
|
102
|
-
return coreRoot;
|
|
103
100
|
const dotnetLib = dotnetRoot.value;
|
|
104
|
-
const coreLib = coreRoot.value;
|
|
105
|
-
const naming = detectTsbindgenNaming(nextConfig);
|
|
106
101
|
const generatedPackage = defaultBindingsPackageNameForFramework(frameworkReference);
|
|
107
|
-
const bindingsDir = bindingsStoreDir(
|
|
102
|
+
const bindingsDir = bindingsStoreDir(workspaceRoot, "framework", generatedPackage);
|
|
108
103
|
const packageJsonResult = ensureGeneratedBindingsPackageJson(bindingsDir, generatedPackage, {
|
|
109
104
|
kind: "framework",
|
|
110
105
|
source: { frameworkReference },
|
|
@@ -116,23 +111,19 @@ export const addFrameworkCommand = (frameworkReference, typesPackage, configPath
|
|
|
116
111
|
runtime.dir,
|
|
117
112
|
"-o",
|
|
118
113
|
bindingsDir,
|
|
119
|
-
"--naming",
|
|
120
|
-
naming,
|
|
121
114
|
"--lib",
|
|
122
115
|
dotnetLib,
|
|
123
|
-
"--lib",
|
|
124
|
-
coreLib,
|
|
125
116
|
];
|
|
126
117
|
for (const rt of runtimes) {
|
|
127
118
|
generateArgs.push("--ref-dir", rt.dir);
|
|
128
119
|
}
|
|
129
120
|
for (const dep of options.deps ?? []) {
|
|
130
|
-
generateArgs.push("--ref-dir", resolveFromProjectRoot(
|
|
121
|
+
generateArgs.push("--ref-dir", resolveFromProjectRoot(workspaceRoot, dep));
|
|
131
122
|
}
|
|
132
|
-
const genResult = tsbindgenGenerate(
|
|
123
|
+
const genResult = tsbindgenGenerate(workspaceRoot, tsbindgenDll, generateArgs, options);
|
|
133
124
|
if (!genResult.ok)
|
|
134
125
|
return genResult;
|
|
135
|
-
const installResult = installGeneratedBindingsPackage(
|
|
126
|
+
const installResult = installGeneratedBindingsPackage(workspaceRoot, generatedPackage, bindingsDir);
|
|
136
127
|
if (!installResult.ok)
|
|
137
128
|
return installResult;
|
|
138
129
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-framework.js","sourceRoot":"","sources":["../../src/commands/add-framework.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"add-framework.js","sourceRoot":"","sources":["../../src/commands/add-framework.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* tsonic add js - add JSRuntime interop to
|
|
2
|
+
* tsonic add js - add JSRuntime interop to a workspace.
|
|
3
3
|
*
|
|
4
4
|
* - Installs @tsonic/js (type declarations)
|
|
5
|
-
* - Copies runtime DLLs into ./
|
|
5
|
+
* - Copies runtime DLLs into ./libs for deterministic builds
|
|
6
6
|
*/
|
|
7
7
|
import type { Result } from "../types.js";
|
|
8
8
|
import { type Exec, type AddCommandOptions } from "./add-common.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-js.d.ts","sourceRoot":"","sources":["../../src/commands/add-js.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"add-js.d.ts","sourceRoot":"","sources":["../../src/commands/add-js.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAIL,KAAK,IAAI,EACT,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAC;AAiCzB,eAAO,MAAM,YAAY,GACvB,YAAY,MAAM,EAClB,UAAS,iBAAsB,EAC/B,OAAM,IAAkB,KACvB,MAAM,CAAC,IAAI,EAAE,MAAM,CA+BrB,CAAC"}
|
package/dist/commands/add-js.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* tsonic add js - add JSRuntime interop to
|
|
2
|
+
* tsonic add js - add JSRuntime interop to a workspace.
|
|
3
3
|
*
|
|
4
4
|
* - Installs @tsonic/js (type declarations)
|
|
5
|
-
* - Copies runtime DLLs into ./
|
|
5
|
+
* - Copies runtime DLLs into ./libs for deterministic builds
|
|
6
6
|
*/
|
|
7
7
|
import { existsSync, readFileSync } from "node:fs";
|
|
8
8
|
import { dirname, join } from "node:path";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import { defaultExec,
|
|
9
|
+
import { loadWorkspaceConfig } from "../config.js";
|
|
10
|
+
import { copyRuntimeDllsToWorkspaceLibs } from "../dotnet/runtime-assets.js";
|
|
11
|
+
import { defaultExec, npmInstallDevDependency, writeTsonicJson, } from "./add-common.js";
|
|
12
12
|
const hasPackage = (projectRoot, name) => {
|
|
13
13
|
const pkgJsonPath = join(projectRoot, "package.json");
|
|
14
14
|
if (!existsSync(pkgJsonPath))
|
|
@@ -27,31 +27,33 @@ const ensureDevDependency = (projectRoot, packageName, options, exec) => {
|
|
|
27
27
|
return { ok: true, value: undefined };
|
|
28
28
|
return npmInstallDevDependency(projectRoot, `${packageName}@latest`, options, exec);
|
|
29
29
|
};
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
const naming = detectTsbindgenNaming(config);
|
|
34
|
-
if (naming !== "clr")
|
|
35
|
-
return { ok: true, value: undefined };
|
|
36
|
-
return ensureDevDependency(projectRoot, "@tsonic/dotnet", options, exec);
|
|
30
|
+
const addUnique = (arr, value) => {
|
|
31
|
+
if (!arr.includes(value))
|
|
32
|
+
arr.push(value);
|
|
37
33
|
};
|
|
38
34
|
export const addJsCommand = (configPath, options = {}, exec = defaultExec) => {
|
|
39
|
-
const
|
|
40
|
-
const configResult =
|
|
35
|
+
const workspaceRoot = dirname(configPath);
|
|
36
|
+
const configResult = loadWorkspaceConfig(configPath);
|
|
41
37
|
if (!configResult.ok)
|
|
42
38
|
return configResult;
|
|
43
39
|
const config = configResult.value;
|
|
44
|
-
const
|
|
45
|
-
if (!peerResult.ok)
|
|
46
|
-
return peerResult;
|
|
47
|
-
const installResult = ensureDevDependency(projectRoot, "@tsonic/js", options, exec);
|
|
40
|
+
const installResult = ensureDevDependency(workspaceRoot, "@tsonic/js", options, exec);
|
|
48
41
|
if (!installResult.ok)
|
|
49
42
|
return installResult;
|
|
50
|
-
const copyResult =
|
|
43
|
+
const copyResult = copyRuntimeDllsToWorkspaceLibs(workspaceRoot, {
|
|
51
44
|
includeJsRuntime: true,
|
|
52
45
|
});
|
|
53
46
|
if (!copyResult.ok)
|
|
54
47
|
return copyResult;
|
|
48
|
+
const dotnet = config.dotnet ?? {};
|
|
49
|
+
const libraries = [...(dotnet.libraries ?? [])];
|
|
50
|
+
addUnique(libraries, "libs/Tsonic.JSRuntime.dll");
|
|
51
|
+
const writeResult = writeTsonicJson(configPath, {
|
|
52
|
+
...config,
|
|
53
|
+
dotnet: { ...dotnet, libraries },
|
|
54
|
+
});
|
|
55
|
+
if (!writeResult.ok)
|
|
56
|
+
return writeResult;
|
|
55
57
|
return { ok: true, value: undefined };
|
|
56
58
|
};
|
|
57
59
|
//# sourceMappingURL=add-js.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-js.js","sourceRoot":"","sources":["../../src/commands/add-js.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"add-js.js","sourceRoot":"","sources":["../../src/commands/add-js.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { describe, it } from "mocha";
|
|
5
5
|
import { expect } from "chai";
|
|
6
|
-
import { mkdtempSync, rmSync, writeFileSync, existsSync } from "node:fs";
|
|
6
|
+
import { mkdtempSync, rmSync, writeFileSync, existsSync, readFileSync, } from "node:fs";
|
|
7
7
|
import { tmpdir } from "node:os";
|
|
8
8
|
import { join } from "node:path";
|
|
9
9
|
import { addJsCommand } from "./add-js.js";
|
|
@@ -12,19 +12,25 @@ describe("add js", () => {
|
|
|
12
12
|
const dir = mkdtempSync(join(tmpdir(), "tsonic-add-js-"));
|
|
13
13
|
try {
|
|
14
14
|
writeFileSync(join(dir, "package.json"), JSON.stringify({ name: "test", version: "0.0.0", type: "module", devDependencies: {} }, null, 2) + "\n", "utf-8");
|
|
15
|
-
writeFileSync(join(dir, "tsonic.json"), JSON.stringify({
|
|
15
|
+
writeFileSync(join(dir, "tsonic.workspace.json"), JSON.stringify({
|
|
16
|
+
$schema: "https://tsonic.org/schema/workspace/v1.json",
|
|
17
|
+
dotnetVersion: "net10.0",
|
|
18
|
+
dotnet: { libraries: [], frameworkReferences: [], packageReferences: [] },
|
|
19
|
+
}, null, 2) + "\n", "utf-8");
|
|
16
20
|
const calls = [];
|
|
17
|
-
const exec = (cmd, args) => {
|
|
21
|
+
const exec = (cmd, args, cwd) => {
|
|
18
22
|
calls.push({ cmd, args });
|
|
23
|
+
expect(cwd).to.equal(dir);
|
|
19
24
|
return { status: 0, stdout: "", stderr: "" };
|
|
20
25
|
};
|
|
21
|
-
const result = addJsCommand(join(dir, "tsonic.json"), {}, exec);
|
|
26
|
+
const result = addJsCommand(join(dir, "tsonic.workspace.json"), {}, exec);
|
|
22
27
|
expect(result.ok).to.equal(true);
|
|
23
28
|
expect(calls.length).to.equal(1);
|
|
24
29
|
expect(calls[0]?.cmd).to.equal("npm");
|
|
25
30
|
expect(calls[0]?.args.join(" ")).to.include("@tsonic/js@latest");
|
|
26
|
-
expect(existsSync(join(dir, "
|
|
27
|
-
|
|
31
|
+
expect(existsSync(join(dir, "libs", "Tsonic.JSRuntime.dll"))).to.equal(true);
|
|
32
|
+
const updated = JSON.parse(readFileSync(join(dir, "tsonic.workspace.json"), "utf-8"));
|
|
33
|
+
expect(updated.dotnet?.libraries).to.deep.equal(["libs/Tsonic.JSRuntime.dll"]);
|
|
28
34
|
}
|
|
29
35
|
finally {
|
|
30
36
|
rmSync(dir, { recursive: true, force: true });
|
|
@@ -39,17 +45,23 @@ describe("add js", () => {
|
|
|
39
45
|
type: "module",
|
|
40
46
|
devDependencies: { "@tsonic/js": "^0.1.2" },
|
|
41
47
|
}, null, 2) + "\n", "utf-8");
|
|
42
|
-
writeFileSync(join(dir, "tsonic.json"), JSON.stringify({
|
|
48
|
+
writeFileSync(join(dir, "tsonic.workspace.json"), JSON.stringify({
|
|
49
|
+
$schema: "https://tsonic.org/schema/workspace/v1.json",
|
|
50
|
+
dotnetVersion: "net10.0",
|
|
51
|
+
dotnet: { libraries: [], frameworkReferences: [], packageReferences: [] },
|
|
52
|
+
}, null, 2) + "\n", "utf-8");
|
|
43
53
|
const calls = [];
|
|
44
|
-
const exec = (cmd, args) => {
|
|
54
|
+
const exec = (cmd, args, cwd) => {
|
|
45
55
|
calls.push({ cmd, args });
|
|
56
|
+
expect(cwd).to.equal(dir);
|
|
46
57
|
return { status: 0, stdout: "", stderr: "" };
|
|
47
58
|
};
|
|
48
|
-
const result = addJsCommand(join(dir, "tsonic.json"), {}, exec);
|
|
59
|
+
const result = addJsCommand(join(dir, "tsonic.workspace.json"), {}, exec);
|
|
49
60
|
expect(result.ok).to.equal(true);
|
|
50
61
|
expect(calls.length).to.equal(0);
|
|
51
|
-
expect(existsSync(join(dir, "
|
|
52
|
-
|
|
62
|
+
expect(existsSync(join(dir, "libs", "Tsonic.JSRuntime.dll"))).to.equal(true);
|
|
63
|
+
const updated = JSON.parse(readFileSync(join(dir, "tsonic.workspace.json"), "utf-8"));
|
|
64
|
+
expect(updated.dotnet?.libraries).to.deep.equal(["libs/Tsonic.JSRuntime.dll"]);
|
|
53
65
|
}
|
|
54
66
|
finally {
|
|
55
67
|
rmSync(dir, { recursive: true, force: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-js.test.js","sourceRoot":"","sources":["../../src/commands/add-js.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,
|
|
1
|
+
{"version":3,"file":"add-js.test.js","sourceRoot":"","sources":["../../src/commands/add-js.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* tsonic add nodejs - add Node.js interop to
|
|
2
|
+
* tsonic add nodejs - add Node.js interop to a workspace.
|
|
3
3
|
*
|
|
4
4
|
* - Installs @tsonic/nodejs (type declarations)
|
|
5
|
-
* - Copies runtime DLLs into ./
|
|
5
|
+
* - Copies runtime DLLs into ./libs for deterministic builds
|
|
6
6
|
*/
|
|
7
7
|
import type { Result } from "../types.js";
|
|
8
8
|
import { type Exec, type AddCommandOptions } from "./add-common.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-nodejs.d.ts","sourceRoot":"","sources":["../../src/commands/add-nodejs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"add-nodejs.d.ts","sourceRoot":"","sources":["../../src/commands/add-nodejs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAIL,KAAK,IAAI,EACT,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAC;AAiCzB,eAAO,MAAM,gBAAgB,GAC3B,YAAY,MAAM,EAClB,UAAS,iBAAsB,EAC/B,OAAM,IAAkB,KACvB,MAAM,CAAC,IAAI,EAAE,MAAM,CAiCrB,CAAC"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* tsonic add nodejs - add Node.js interop to
|
|
2
|
+
* tsonic add nodejs - add Node.js interop to a workspace.
|
|
3
3
|
*
|
|
4
4
|
* - Installs @tsonic/nodejs (type declarations)
|
|
5
|
-
* - Copies runtime DLLs into ./
|
|
5
|
+
* - Copies runtime DLLs into ./libs for deterministic builds
|
|
6
6
|
*/
|
|
7
7
|
import { existsSync, readFileSync } from "node:fs";
|
|
8
8
|
import { dirname, join } from "node:path";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import { defaultExec,
|
|
9
|
+
import { loadWorkspaceConfig } from "../config.js";
|
|
10
|
+
import { copyRuntimeDllsToWorkspaceLibs } from "../dotnet/runtime-assets.js";
|
|
11
|
+
import { defaultExec, npmInstallDevDependency, writeTsonicJson, } from "./add-common.js";
|
|
12
12
|
const hasPackage = (projectRoot, name) => {
|
|
13
13
|
const pkgJsonPath = join(projectRoot, "package.json");
|
|
14
14
|
if (!existsSync(pkgJsonPath))
|
|
@@ -27,32 +27,35 @@ const ensureDevDependency = (projectRoot, packageName, options, exec) => {
|
|
|
27
27
|
return { ok: true, value: undefined };
|
|
28
28
|
return npmInstallDevDependency(projectRoot, `${packageName}@latest`, options, exec);
|
|
29
29
|
};
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
const naming = detectTsbindgenNaming(config);
|
|
34
|
-
if (naming !== "clr")
|
|
35
|
-
return { ok: true, value: undefined };
|
|
36
|
-
return ensureDevDependency(projectRoot, "@tsonic/dotnet", options, exec);
|
|
30
|
+
const addUnique = (arr, value) => {
|
|
31
|
+
if (!arr.includes(value))
|
|
32
|
+
arr.push(value);
|
|
37
33
|
};
|
|
38
34
|
export const addNodejsCommand = (configPath, options = {}, exec = defaultExec) => {
|
|
39
|
-
const
|
|
40
|
-
const configResult =
|
|
35
|
+
const workspaceRoot = dirname(configPath);
|
|
36
|
+
const configResult = loadWorkspaceConfig(configPath);
|
|
41
37
|
if (!configResult.ok)
|
|
42
38
|
return configResult;
|
|
43
39
|
const config = configResult.value;
|
|
44
|
-
const
|
|
45
|
-
if (!peerResult.ok)
|
|
46
|
-
return peerResult;
|
|
47
|
-
const installResult = ensureDevDependency(projectRoot, "@tsonic/nodejs", options, exec);
|
|
40
|
+
const installResult = ensureDevDependency(workspaceRoot, "@tsonic/nodejs", options, exec);
|
|
48
41
|
if (!installResult.ok)
|
|
49
42
|
return installResult;
|
|
50
|
-
const copyResult =
|
|
43
|
+
const copyResult = copyRuntimeDllsToWorkspaceLibs(workspaceRoot, {
|
|
51
44
|
includeJsRuntime: true,
|
|
52
45
|
includeNodejs: true,
|
|
53
46
|
});
|
|
54
47
|
if (!copyResult.ok)
|
|
55
48
|
return copyResult;
|
|
49
|
+
const dotnet = config.dotnet ?? {};
|
|
50
|
+
const libraries = [...(dotnet.libraries ?? [])];
|
|
51
|
+
addUnique(libraries, "libs/Tsonic.JSRuntime.dll");
|
|
52
|
+
addUnique(libraries, "libs/nodejs.dll");
|
|
53
|
+
const writeResult = writeTsonicJson(configPath, {
|
|
54
|
+
...config,
|
|
55
|
+
dotnet: { ...dotnet, libraries },
|
|
56
|
+
});
|
|
57
|
+
if (!writeResult.ok)
|
|
58
|
+
return writeResult;
|
|
56
59
|
return { ok: true, value: undefined };
|
|
57
60
|
};
|
|
58
61
|
//# sourceMappingURL=add-nodejs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-nodejs.js","sourceRoot":"","sources":["../../src/commands/add-nodejs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"add-nodejs.js","sourceRoot":"","sources":["../../src/commands/add-nodejs.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { describe, it } from "mocha";
|
|
5
5
|
import { expect } from "chai";
|
|
6
|
-
import { mkdtempSync, rmSync, writeFileSync, existsSync } from "node:fs";
|
|
6
|
+
import { mkdtempSync, rmSync, writeFileSync, existsSync, readFileSync, } from "node:fs";
|
|
7
7
|
import { tmpdir } from "node:os";
|
|
8
8
|
import { join } from "node:path";
|
|
9
9
|
import { addNodejsCommand } from "./add-nodejs.js";
|
|
@@ -12,20 +12,29 @@ describe("add nodejs", () => {
|
|
|
12
12
|
const dir = mkdtempSync(join(tmpdir(), "tsonic-add-nodejs-"));
|
|
13
13
|
try {
|
|
14
14
|
writeFileSync(join(dir, "package.json"), JSON.stringify({ name: "test", version: "0.0.0", type: "module", devDependencies: {} }, null, 2) + "\n", "utf-8");
|
|
15
|
-
writeFileSync(join(dir, "tsonic.json"), JSON.stringify({
|
|
15
|
+
writeFileSync(join(dir, "tsonic.workspace.json"), JSON.stringify({
|
|
16
|
+
$schema: "https://tsonic.org/schema/workspace/v1.json",
|
|
17
|
+
dotnetVersion: "net10.0",
|
|
18
|
+
dotnet: { libraries: [], frameworkReferences: [], packageReferences: [] },
|
|
19
|
+
}, null, 2) + "\n", "utf-8");
|
|
16
20
|
const calls = [];
|
|
17
|
-
const exec = (cmd, args) => {
|
|
21
|
+
const exec = (cmd, args, cwd) => {
|
|
18
22
|
calls.push({ cmd, args });
|
|
23
|
+
expect(cwd).to.equal(dir);
|
|
19
24
|
return { status: 0, stdout: "", stderr: "" };
|
|
20
25
|
};
|
|
21
|
-
const result = addNodejsCommand(join(dir, "tsonic.json"), {}, exec);
|
|
26
|
+
const result = addNodejsCommand(join(dir, "tsonic.workspace.json"), {}, exec);
|
|
22
27
|
expect(result.ok).to.equal(true);
|
|
23
28
|
expect(calls.length).to.equal(1);
|
|
24
29
|
expect(calls[0]?.cmd).to.equal("npm");
|
|
25
30
|
expect(calls[0]?.args.join(" ")).to.include("@tsonic/nodejs@latest");
|
|
26
|
-
expect(existsSync(join(dir, "
|
|
27
|
-
expect(existsSync(join(dir, "
|
|
28
|
-
|
|
31
|
+
expect(existsSync(join(dir, "libs", "Tsonic.JSRuntime.dll"))).to.equal(true);
|
|
32
|
+
expect(existsSync(join(dir, "libs", "nodejs.dll"))).to.equal(true);
|
|
33
|
+
const updated = JSON.parse(readFileSync(join(dir, "tsonic.workspace.json"), "utf-8"));
|
|
34
|
+
expect(updated.dotnet?.libraries).to.deep.equal([
|
|
35
|
+
"libs/Tsonic.JSRuntime.dll",
|
|
36
|
+
"libs/nodejs.dll",
|
|
37
|
+
]);
|
|
29
38
|
}
|
|
30
39
|
finally {
|
|
31
40
|
rmSync(dir, { recursive: true, force: true });
|
|
@@ -40,18 +49,27 @@ describe("add nodejs", () => {
|
|
|
40
49
|
type: "module",
|
|
41
50
|
devDependencies: { "@tsonic/nodejs": "^0.4.5" },
|
|
42
51
|
}, null, 2) + "\n", "utf-8");
|
|
43
|
-
writeFileSync(join(dir, "tsonic.json"), JSON.stringify({
|
|
52
|
+
writeFileSync(join(dir, "tsonic.workspace.json"), JSON.stringify({
|
|
53
|
+
$schema: "https://tsonic.org/schema/workspace/v1.json",
|
|
54
|
+
dotnetVersion: "net10.0",
|
|
55
|
+
dotnet: { libraries: [], frameworkReferences: [], packageReferences: [] },
|
|
56
|
+
}, null, 2) + "\n", "utf-8");
|
|
44
57
|
const calls = [];
|
|
45
|
-
const exec = (cmd, args) => {
|
|
58
|
+
const exec = (cmd, args, cwd) => {
|
|
46
59
|
calls.push({ cmd, args });
|
|
60
|
+
expect(cwd).to.equal(dir);
|
|
47
61
|
return { status: 0, stdout: "", stderr: "" };
|
|
48
62
|
};
|
|
49
|
-
const result = addNodejsCommand(join(dir, "tsonic.json"), {}, exec);
|
|
63
|
+
const result = addNodejsCommand(join(dir, "tsonic.workspace.json"), {}, exec);
|
|
50
64
|
expect(result.ok).to.equal(true);
|
|
51
65
|
expect(calls.length).to.equal(0);
|
|
52
|
-
expect(existsSync(join(dir, "
|
|
53
|
-
expect(existsSync(join(dir, "
|
|
54
|
-
|
|
66
|
+
expect(existsSync(join(dir, "libs", "Tsonic.JSRuntime.dll"))).to.equal(true);
|
|
67
|
+
expect(existsSync(join(dir, "libs", "nodejs.dll"))).to.equal(true);
|
|
68
|
+
const updated = JSON.parse(readFileSync(join(dir, "tsonic.workspace.json"), "utf-8"));
|
|
69
|
+
expect(updated.dotnet?.libraries).to.deep.equal([
|
|
70
|
+
"libs/Tsonic.JSRuntime.dll",
|
|
71
|
+
"libs/nodejs.dll",
|
|
72
|
+
]);
|
|
55
73
|
}
|
|
56
74
|
finally {
|
|
57
75
|
rmSync(dir, { recursive: true, force: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-nodejs.test.js","sourceRoot":"","sources":["../../src/commands/add-nodejs.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,
|
|
1
|
+
{"version":3,"file":"add-nodejs.test.js","sourceRoot":"","sources":["../../src/commands/add-nodejs.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-nuget.d.ts","sourceRoot":"","sources":["../../src/commands/add-nuget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"add-nuget.d.ts","sourceRoot":"","sources":["../../src/commands/add-nuget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAiD,MAAM,aAAa,CAAC;AAGzF,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAC;AAGzB,MAAM,MAAM,eAAe,GAAG,iBAAiB,CAAC;AAShD,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,CAwFzE,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* tsonic add nuget - add a NuGet PackageReference to the
|
|
2
|
+
* tsonic add nuget - add a NuGet PackageReference to the workspace, plus bindings.
|
|
3
3
|
*
|
|
4
4
|
* Usage:
|
|
5
5
|
* tsonic add nuget <PackageId> <Version> [typesPackage]
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* - If types are omitted, we auto-generate bindings for the full transitive closure
|
|
11
11
|
* via `tsonic restore` (single source of truth)
|
|
12
12
|
*/
|
|
13
|
-
import {
|
|
13
|
+
import { loadWorkspaceConfig } from "../config.js";
|
|
14
14
|
import { dirname } from "node:path";
|
|
15
15
|
import { defaultBindingsPackageNameForNuget, npmInstallDevDependency, writeTsonicJson, } from "./add-common.js";
|
|
16
16
|
import { restoreCommand } from "./restore.js";
|
|
@@ -21,7 +21,7 @@ const isValidTypesPackageName = (name) => {
|
|
|
21
21
|
return /^@[a-z0-9-]+\/[a-z0-9-]+$/i.test(name);
|
|
22
22
|
};
|
|
23
23
|
export const addNugetCommand = (id, ver, typesPackage, configPath, options = {}) => {
|
|
24
|
-
const
|
|
24
|
+
const workspaceRoot = dirname(configPath);
|
|
25
25
|
if (!id.trim()) {
|
|
26
26
|
return { ok: false, error: "NuGet package id must be non-empty" };
|
|
27
27
|
}
|
|
@@ -31,7 +31,7 @@ export const addNugetCommand = (id, ver, typesPackage, configPath, options = {})
|
|
|
31
31
|
if (typesPackage !== undefined && !isValidTypesPackageName(typesPackage)) {
|
|
32
32
|
return { ok: false, error: `Invalid types package name: ${typesPackage}` };
|
|
33
33
|
}
|
|
34
|
-
const tsonicConfigResult =
|
|
34
|
+
const tsonicConfigResult = loadWorkspaceConfig(configPath);
|
|
35
35
|
if (!tsonicConfigResult.ok)
|
|
36
36
|
return tsonicConfigResult;
|
|
37
37
|
const config = tsonicConfigResult.value;
|
|
@@ -46,7 +46,7 @@ export const addNugetCommand = (id, ver, typesPackage, configPath, options = {})
|
|
|
46
46
|
return {
|
|
47
47
|
ok: false,
|
|
48
48
|
error: `NuGet package already present with a different version: ${current?.id} ${current?.version}\n` +
|
|
49
|
-
`Refusing to change versions automatically (airplane-grade). Update tsonic.json manually if intended.`,
|
|
49
|
+
`Refusing to change versions automatically (airplane-grade). Update tsonic.workspace.json manually if intended.`,
|
|
50
50
|
};
|
|
51
51
|
}
|
|
52
52
|
if (typesPackage) {
|
|
@@ -57,7 +57,7 @@ export const addNugetCommand = (id, ver, typesPackage, configPath, options = {})
|
|
|
57
57
|
`- ${current.id} ${current.version}\n` +
|
|
58
58
|
`- existing: ${current.types}\n` +
|
|
59
59
|
`- requested: ${typesPackage}\n` +
|
|
60
|
-
`Refusing to change automatically (airplane-grade). Update tsonic.json manually if intended.`,
|
|
60
|
+
`Refusing to change automatically (airplane-grade). Update tsonic.workspace.json manually if intended.`,
|
|
61
61
|
};
|
|
62
62
|
}
|
|
63
63
|
existing[idx] = { ...current, types: typesPackage };
|
|
@@ -80,7 +80,7 @@ export const addNugetCommand = (id, ver, typesPackage, configPath, options = {})
|
|
|
80
80
|
existing.find((p) => normalizePkgId(p.id) === normalizePkgId(id))?.types ??
|
|
81
81
|
defaultBindingsPackageNameForNuget(id);
|
|
82
82
|
if (typesPackage) {
|
|
83
|
-
const installResult = npmInstallDevDependency(
|
|
83
|
+
const installResult = npmInstallDevDependency(workspaceRoot, typesPackage, options);
|
|
84
84
|
if (!installResult.ok)
|
|
85
85
|
return installResult;
|
|
86
86
|
return { ok: true, value: { packageId: id, version: ver, bindings } };
|