@matter/tools 0.16.0-alpha.0-20251207-37e501b18 → 0.16.0-alpha.0-20251209-d6072d23e
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/cjs/ansi-text/style.js +2 -2
- package/dist/cjs/ansi-text/style.js.map +1 -1
- package/dist/cjs/building/cli.d.ts.map +1 -1
- package/dist/cjs/building/cli.js +2 -2
- package/dist/cjs/building/cli.js.map +1 -1
- package/dist/cjs/building/error.d.ts +3 -3
- package/dist/cjs/building/error.d.ts.map +1 -1
- package/dist/cjs/building/error.js +2 -2
- package/dist/cjs/building/error.js.map +1 -1
- package/dist/cjs/building/project-builder.d.ts +2 -0
- package/dist/cjs/building/project-builder.d.ts.map +1 -1
- package/dist/cjs/building/project-builder.js +12 -3
- package/dist/cjs/building/project-builder.js.map +1 -1
- package/dist/cjs/building/typescript/solution-builder.js +1 -1
- package/dist/cjs/building/typescript/solution-builder.js.map +1 -1
- package/dist/cjs/building/typescript/tsgo.d.ts +9 -0
- package/dist/cjs/building/typescript/tsgo.d.ts.map +1 -0
- package/dist/cjs/building/typescript/tsgo.js +81 -0
- package/dist/cjs/building/typescript/tsgo.js.map +6 -0
- package/dist/cjs/building/typescript.d.ts +1 -0
- package/dist/cjs/building/typescript.d.ts.map +1 -1
- package/dist/cjs/building/typescript.js +2 -0
- package/dist/cjs/building/typescript.js.map +1 -1
- package/dist/esm/ansi-text/style.js +3 -3
- package/dist/esm/ansi-text/style.js.map +1 -1
- package/dist/esm/building/cli.d.ts.map +1 -1
- package/dist/esm/building/cli.js +3 -3
- package/dist/esm/building/cli.js.map +1 -1
- package/dist/esm/building/error.d.ts +3 -3
- package/dist/esm/building/error.d.ts.map +1 -1
- package/dist/esm/building/error.js +3 -3
- package/dist/esm/building/error.js.map +1 -1
- package/dist/esm/building/project-builder.d.ts +2 -0
- package/dist/esm/building/project-builder.d.ts.map +1 -1
- package/dist/esm/building/project-builder.js +14 -5
- package/dist/esm/building/project-builder.js.map +1 -1
- package/dist/esm/building/typescript/solution-builder.js +2 -2
- package/dist/esm/building/typescript/solution-builder.js.map +1 -1
- package/dist/esm/building/typescript/tsgo.d.ts +9 -0
- package/dist/esm/building/typescript/tsgo.d.ts.map +1 -0
- package/dist/esm/building/typescript/tsgo.js +61 -0
- package/dist/esm/building/typescript/tsgo.js.map +6 -0
- package/dist/esm/building/typescript.d.ts +1 -0
- package/dist/esm/building/typescript.d.ts.map +1 -1
- package/dist/esm/building/typescript.js +3 -1
- package/dist/esm/building/typescript.js.map +1 -1
- package/package.json +4 -3
- package/src/building/cli.ts +2 -1
- package/src/building/error.ts +3 -3
- package/src/building/project-builder.ts +13 -3
- package/src/building/typescript/solution-builder.ts +1 -1
- package/src/building/typescript/tsgo.ts +66 -0
- package/src/building/typescript.ts +1 -0
package/src/building/error.ts
CHANGED
|
@@ -11,16 +11,16 @@ export class InternalBuildError extends Error {
|
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
export class BuildError extends Error {
|
|
14
|
-
constructor(readonly diagnostics
|
|
14
|
+
constructor(readonly diagnostics?: string) {
|
|
15
15
|
super();
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
override get stack() {
|
|
19
|
-
return this.diagnostics;
|
|
19
|
+
return this.diagnostics ?? super.stack;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
override toString() {
|
|
23
|
-
return this.diagnostics;
|
|
23
|
+
return this.diagnostics ?? "Build error";
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
inspect() {
|
|
@@ -9,7 +9,7 @@ import { Progress } from "../util/progress.js";
|
|
|
9
9
|
import { BuildError } from "./error.js";
|
|
10
10
|
import { Graph } from "./graph.js";
|
|
11
11
|
import { BuildInformation, Project } from "./project.js";
|
|
12
|
-
import { createTypescriptContext } from "./typescript.js";
|
|
12
|
+
import { createTsgoContext, createTypescriptContext } from "./typescript.js";
|
|
13
13
|
import { TypescriptContext } from "./typescript/context.js";
|
|
14
14
|
|
|
15
15
|
export enum Target {
|
|
@@ -23,6 +23,7 @@ export interface Options {
|
|
|
23
23
|
targets?: Target[];
|
|
24
24
|
clean?: boolean;
|
|
25
25
|
graph?: Graph;
|
|
26
|
+
tsgo?: boolean;
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
/**
|
|
@@ -34,11 +35,13 @@ export class ProjectBuilder {
|
|
|
34
35
|
unconditional: boolean;
|
|
35
36
|
tsContext?: TypescriptContext;
|
|
36
37
|
graph?: Graph;
|
|
38
|
+
tsgo?: boolean;
|
|
37
39
|
|
|
38
40
|
constructor(private options: Options = {}) {
|
|
39
41
|
this.graph = options.graph;
|
|
40
42
|
this.unconditional =
|
|
41
43
|
options.clean || (options.targets !== undefined && options.targets?.indexOf(Target.clean) !== -1);
|
|
44
|
+
this.tsgo = options.tsgo;
|
|
42
45
|
}
|
|
43
46
|
|
|
44
47
|
get hasClean() {
|
|
@@ -112,7 +115,12 @@ export class ProjectBuilder {
|
|
|
112
115
|
// Obtain or initialize typescript solution builder
|
|
113
116
|
let context = this.tsContext;
|
|
114
117
|
if (context === undefined) {
|
|
115
|
-
|
|
118
|
+
if (this.tsgo) {
|
|
119
|
+
context = createTsgoContext(project.pkg.workspace);
|
|
120
|
+
} else {
|
|
121
|
+
context = await createTypescriptContext(project.pkg.workspace, graph);
|
|
122
|
+
}
|
|
123
|
+
this.tsContext = context;
|
|
116
124
|
}
|
|
117
125
|
|
|
118
126
|
const refreshCallback = progress.refresh.bind(progress);
|
|
@@ -152,8 +160,10 @@ export class ProjectBuilder {
|
|
|
152
160
|
}
|
|
153
161
|
} catch (e) {
|
|
154
162
|
if (e instanceof BuildError) {
|
|
163
|
+
if (e.diagnostics) {
|
|
164
|
+
process.stderr.write(`${e.diagnostics}\n`);
|
|
165
|
+
}
|
|
155
166
|
progress.failure("Terminating due to type errors");
|
|
156
|
-
process.stderr.write(`${e.diagnostics}\n`);
|
|
157
167
|
process.exit(1);
|
|
158
168
|
}
|
|
159
169
|
throw e;
|
|
@@ -39,7 +39,7 @@ export async function createSolutionBuilderContext(
|
|
|
39
39
|
|
|
40
40
|
function currentContext() {
|
|
41
41
|
if (context === undefined) {
|
|
42
|
-
throw new Error("Build context accessed with no ");
|
|
42
|
+
throw new Error("Build context accessed with no context");
|
|
43
43
|
}
|
|
44
44
|
return context;
|
|
45
45
|
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { spawn } from "node:child_process";
|
|
8
|
+
import { cp } from "node:fs/promises";
|
|
9
|
+
import { join } from "path";
|
|
10
|
+
import { isDirectory } from "../../util/file.js";
|
|
11
|
+
import { Package } from "../../util/package.js";
|
|
12
|
+
import { BuildError } from "../error.js";
|
|
13
|
+
import { TypescriptContext } from "./context.js";
|
|
14
|
+
|
|
15
|
+
export function createTsgoContext(workspace: Package): TypescriptContext {
|
|
16
|
+
const bin = join(workspace.resolve("node_modules", ".bin", "tsgo"));
|
|
17
|
+
return {
|
|
18
|
+
async build(pkg, path, _refreshCallback, emit) {
|
|
19
|
+
const args = ["--project", path];
|
|
20
|
+
|
|
21
|
+
if (emit === false) {
|
|
22
|
+
args.push("--noEmit");
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
await new Promise<void>((resolve, reject) => {
|
|
26
|
+
const tsgo = spawn(bin, args, { stdio: "inherit" });
|
|
27
|
+
|
|
28
|
+
tsgo.on("exit", (code, signal) => {
|
|
29
|
+
switch (code) {
|
|
30
|
+
case 0:
|
|
31
|
+
resolve();
|
|
32
|
+
break;
|
|
33
|
+
|
|
34
|
+
case 1: // Diagnostics present, outputs generated
|
|
35
|
+
case 2: // Diagnostics present, outputs skipped
|
|
36
|
+
case 3: // Project invalid
|
|
37
|
+
case 4: // Reference cycle
|
|
38
|
+
case 5: // Not implemented
|
|
39
|
+
// TS will have printed an error already
|
|
40
|
+
reject(new BuildError());
|
|
41
|
+
break;
|
|
42
|
+
|
|
43
|
+
case null:
|
|
44
|
+
reject(new BuildError(`tsgo exited with signal ${signal}`));
|
|
45
|
+
break;
|
|
46
|
+
|
|
47
|
+
default:
|
|
48
|
+
reject(new BuildError(`tsgo exited with code ${code}`));
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
await cp(pkg.resolve("dist/esm"), pkg.resolve("dist/cjs"), {
|
|
55
|
+
recursive: true,
|
|
56
|
+
filter(src) {
|
|
57
|
+
if (isDirectory(src)) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return src.endsWith(".d.ts") || src.endsWith(".d.ts.map");
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
import { type TypescriptContext } from "./typescript/context.js";
|
|
8
8
|
import { createSolutionBuilderContext } from "./typescript/solution-builder.js";
|
|
9
|
+
export { createTsgoContext } from "./typescript/tsgo.js";
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* Create a {@link TypescriptContext} for validating types and optionally emitting .d.ts file.
|