@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.
Files changed (53) hide show
  1. package/dist/cjs/ansi-text/style.js +2 -2
  2. package/dist/cjs/ansi-text/style.js.map +1 -1
  3. package/dist/cjs/building/cli.d.ts.map +1 -1
  4. package/dist/cjs/building/cli.js +2 -2
  5. package/dist/cjs/building/cli.js.map +1 -1
  6. package/dist/cjs/building/error.d.ts +3 -3
  7. package/dist/cjs/building/error.d.ts.map +1 -1
  8. package/dist/cjs/building/error.js +2 -2
  9. package/dist/cjs/building/error.js.map +1 -1
  10. package/dist/cjs/building/project-builder.d.ts +2 -0
  11. package/dist/cjs/building/project-builder.d.ts.map +1 -1
  12. package/dist/cjs/building/project-builder.js +12 -3
  13. package/dist/cjs/building/project-builder.js.map +1 -1
  14. package/dist/cjs/building/typescript/solution-builder.js +1 -1
  15. package/dist/cjs/building/typescript/solution-builder.js.map +1 -1
  16. package/dist/cjs/building/typescript/tsgo.d.ts +9 -0
  17. package/dist/cjs/building/typescript/tsgo.d.ts.map +1 -0
  18. package/dist/cjs/building/typescript/tsgo.js +81 -0
  19. package/dist/cjs/building/typescript/tsgo.js.map +6 -0
  20. package/dist/cjs/building/typescript.d.ts +1 -0
  21. package/dist/cjs/building/typescript.d.ts.map +1 -1
  22. package/dist/cjs/building/typescript.js +2 -0
  23. package/dist/cjs/building/typescript.js.map +1 -1
  24. package/dist/esm/ansi-text/style.js +3 -3
  25. package/dist/esm/ansi-text/style.js.map +1 -1
  26. package/dist/esm/building/cli.d.ts.map +1 -1
  27. package/dist/esm/building/cli.js +3 -3
  28. package/dist/esm/building/cli.js.map +1 -1
  29. package/dist/esm/building/error.d.ts +3 -3
  30. package/dist/esm/building/error.d.ts.map +1 -1
  31. package/dist/esm/building/error.js +3 -3
  32. package/dist/esm/building/error.js.map +1 -1
  33. package/dist/esm/building/project-builder.d.ts +2 -0
  34. package/dist/esm/building/project-builder.d.ts.map +1 -1
  35. package/dist/esm/building/project-builder.js +14 -5
  36. package/dist/esm/building/project-builder.js.map +1 -1
  37. package/dist/esm/building/typescript/solution-builder.js +2 -2
  38. package/dist/esm/building/typescript/solution-builder.js.map +1 -1
  39. package/dist/esm/building/typescript/tsgo.d.ts +9 -0
  40. package/dist/esm/building/typescript/tsgo.d.ts.map +1 -0
  41. package/dist/esm/building/typescript/tsgo.js +61 -0
  42. package/dist/esm/building/typescript/tsgo.js.map +6 -0
  43. package/dist/esm/building/typescript.d.ts +1 -0
  44. package/dist/esm/building/typescript.d.ts.map +1 -1
  45. package/dist/esm/building/typescript.js +3 -1
  46. package/dist/esm/building/typescript.js.map +1 -1
  47. package/package.json +4 -3
  48. package/src/building/cli.ts +2 -1
  49. package/src/building/error.ts +3 -3
  50. package/src/building/project-builder.ts +13 -3
  51. package/src/building/typescript/solution-builder.ts +1 -1
  52. package/src/building/typescript/tsgo.ts +66 -0
  53. package/src/building/typescript.ts +1 -0
@@ -11,16 +11,16 @@ export class InternalBuildError extends Error {
11
11
  }
12
12
 
13
13
  export class BuildError extends Error {
14
- constructor(readonly diagnostics: string) {
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
- context = this.tsContext = await createTypescriptContext(project.pkg.workspace, graph);
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.