@d1g1tal/tsbuild 1.9.0 → 1.9.1

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/CHANGELOG.md CHANGED
@@ -1,3 +1,45 @@
1
+ ## [1.9.1](https://github.com/D1g1talEntr0py/tsbuild/compare/v1.9.0...v1.9.1) (2026-06-14)
2
+
3
+ ### Performance Improvements
4
+
5
+ * **loader:** improve loader caching key uniqueness and safety (319eb4f938458aa69ccdc71783a8116934769e6a)
6
+ - Add file inode and configuration status metrics to the transformation cache keys
7
+ - Migrate from async block writes to safe, synchronous filesystem writes
8
+ - Recover on-the-fly from zero-byte or corrupt cached module assets
9
+
10
+
11
+ ### Code Refactoring
12
+
13
+ * **tsbuild:** remove test-only flush methods and standardize process exit (bebbc91a1516dff7560fd373358496d170f15e60)
14
+ - Avoid direct process.exit calls and handle exit state through process.exitCode
15
+ - Remove the flushBackgroundCleanup project hook, refactoring test suites to poll for output removal instead
16
+ - Simplify dependency path resolution by referencing internal promises directly
17
+
18
+
19
+ ### Documentation
20
+
21
+ * refine project guidelines and update copilot instructions (3b7d6bed70d84968be88793897bfa5580931d098)
22
+ - Clean up githooks file permissions and mode headers
23
+ - Condense Copilot instructions into a unified, high-density reference snapshot
24
+ - Document target values and criteria for performance optimization checks
25
+
26
+
27
+ ### Miscellaneous Chores
28
+
29
+ * **bench:** remove platform-specific details and introduce non-dts benchmarks (5887e241de3d4c22967030815f3ff548ac445276)
30
+ - Remove platform-specific MAXRSS memory measurements to ensure portable benchmark execution
31
+ - Introduce comparative benchmarks testing tsbuild with decoration emitting disabled
32
+ - Improve child process crash diagnostics and print cleaner terminal result layouts
33
+
34
+
35
+ ### Build System
36
+
37
+ * **deps:** upgrade Node engine, package manager, and dependencies (a695f4e2e1a7af8b2036e8ed1f2c766cdcaeb21f)
38
+ - Raise Node.js requirement to >=22.6.0 and pnpm package manager to 11.6.0
39
+ - Upgrade esbuild production dependency to 0.28.1
40
+ - Update multiple devDependencies including ESLint, typescript-eslint, memory-fs, and Vitest
41
+ - Regenerate the lockfile to align with package version bumps
42
+
1
43
  ## [1.9.0](https://github.com/D1g1talEntr0py/tsbuild/compare/v1.8.10...v1.9.0) (2026-05-23)
2
44
 
3
45
  ### Features
@@ -2683,15 +2683,8 @@ var _TypeScriptProject = class _TypeScriptProject {
2683
2683
  });
2684
2684
  this.pendingStaleOutputsCleanup = cleanup;
2685
2685
  }
2686
- /**
2687
- * Waits for fire-and-forget stale-output cleanup to settle.
2688
- * Useful for deterministic tests that need to assert post-cleanup filesystem state.
2689
- */
2690
- async flushBackgroundCleanup() {
2691
- await this.pendingStaleOutputsCleanup;
2692
- }
2693
2686
  async build() {
2694
- Logger.header(`${tsLogo} tsbuild v${"1.9.0"}${this.configuration.compilerOptions.incremental && this.configuration.buildCache?.isValid() ? " [incremental]" : ""}`);
2687
+ Logger.header(`${tsLogo} tsbuild v${"1.9.1"}${this.configuration.compilerOptions.incremental && this.configuration.buildCache?.isValid() ? " [incremental]" : ""}`);
2695
2688
  try {
2696
2689
  const processes = [];
2697
2690
  const buildCache = this.configuration.buildCache;
@@ -2799,7 +2792,7 @@ var _TypeScriptProject = class _TypeScriptProject {
2799
2792
  }
2800
2793
  plugins.push(outputPlugin());
2801
2794
  if (this.buildConfiguration.noExternal.length > 0) {
2802
- plugins.push(externalModulesPlugin({ dependencies: await this.getProjectDependencyPaths(), noExternal: this.buildConfiguration.noExternal }));
2795
+ plugins.push(externalModulesPlugin({ dependencies: await this.dependencyPaths, noExternal: this.buildConfiguration.noExternal }));
2803
2796
  }
2804
2797
  if (this.configuration.compilerOptions.emitDecoratorMetadata) {
2805
2798
  try {
@@ -3078,14 +3071,6 @@ var _TypeScriptProject = class _TypeScriptProject {
3078
3071
  }
3079
3072
  return expandedEntryPoints;
3080
3073
  }
3081
- /**
3082
- * Gets the project dependency paths.
3083
- * The promise is started in the constructor so it overlaps with TS Program creation.
3084
- * @returns A promise that resolves to an array of project dependency paths.
3085
- */
3086
- getProjectDependencyPaths() {
3087
- return this.dependencyPaths;
3088
- }
3089
3074
  /**
3090
3075
  * Handles build errors by logging unexpected errors and setting appropriate exit codes.
3091
3076
  * Expected build failures (TypeCheckError, BundleError) are already logged when they occur,
package/dist/tsbuild.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  BuildError,
4
4
  TypeScriptProject
5
- } from "./S3D7UW6Z.js";
5
+ } from "./7G6BAIKH.js";
6
6
  import "./XTZ3MYA7.js";
7
7
 
8
8
  // src/tsbuild.ts
@@ -27,19 +27,19 @@ if (help) {
27
27
  console.log(` ${`-${short}, --${long}`.padEnd(20)} ${description}`);
28
28
  }
29
29
  console.log();
30
- process.exit(0);
31
- }
32
- if (version) {
33
- console.log("1.9.0");
34
- process.exit(0);
35
- }
36
- var typeScriptOptions = {
37
- clearCache: args.clearCache,
38
- compilerOptions: { noEmit: args.noEmit },
39
- tsbuild: { force: args.force, minify: args.minify, watch: { enabled: args.watch } }
40
- };
41
- try {
42
- await new TypeScriptProject(args.project, typeScriptOptions).build();
43
- } catch (error) {
44
- process.exitCode = error instanceof BuildError ? error.code : 1;
30
+ process.exitCode = 0;
31
+ } else if (version) {
32
+ console.log("1.9.1");
33
+ process.exitCode = 0;
34
+ } else {
35
+ const typeScriptOptions = {
36
+ clearCache: args.clearCache,
37
+ compilerOptions: { noEmit: args.noEmit },
38
+ tsbuild: { force: args.force, minify: args.minify, watch: { enabled: args.watch } }
39
+ };
40
+ try {
41
+ await new TypeScriptProject(args.project, typeScriptOptions).build();
42
+ } catch (error) {
43
+ process.exitCode = error instanceof BuildError ? error.code : 1;
44
+ }
45
45
  }
@@ -307,11 +307,6 @@ declare class TypeScriptProject implements Closable {
307
307
  * @param current - Project-relative paths produced by the current build
308
308
  */
309
309
  private cleanupStaleOutputs;
310
- /**
311
- * Waits for fire-and-forget stale-output cleanup to settle.
312
- * Useful for deterministic tests that need to assert post-cleanup filesystem state.
313
- */
314
- flushBackgroundCleanup(): Promise<void>;
315
310
  /**
316
311
  * Builds the project
317
312
  * @returns A promise that resolves when the build is complete.
@@ -361,12 +356,6 @@ declare class TypeScriptProject implements Closable {
361
356
  * @returns A promise that resolves to the entry points.
362
357
  */
363
358
  private getEntryPoints;
364
- /**
365
- * Gets the project dependency paths.
366
- * The promise is started in the constructor so it overlaps with TS Program creation.
367
- * @returns A promise that resolves to an array of project dependency paths.
368
- */
369
- private getProjectDependencyPaths;
370
359
  /**
371
360
  * Handles build errors by logging unexpected errors and setting appropriate exit codes.
372
361
  * Expected build failures (TypeCheckError, BundleError) are already logged when they occur,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  TypeScriptProject
3
- } from "./S3D7UW6Z.js";
3
+ } from "./7G6BAIKH.js";
4
4
  import "./XTZ3MYA7.js";
5
5
  export {
6
6
  TypeScriptProject
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@d1g1tal/tsbuild",
3
3
  "author": "D1g1talEntr0py",
4
- "version": "1.9.0",
4
+ "version": "1.9.1",
5
5
  "license": "MIT",
6
6
  "description": "A fast, ESM-only TypeScript build tool combining the TypeScript API for type checking and declaration generation, esbuild for bundling, and SWC for decorator metadata.",
7
7
  "homepage": "https://github.com/D1g1talEntr0py/tsbuild#readme",
@@ -19,7 +19,7 @@
19
19
  }
20
20
  ],
21
21
  "engines": {
22
- "node": ">=22.0.0"
22
+ "node": ">=22.6.0"
23
23
  },
24
24
  "publishConfig": {
25
25
  "registry": "https://registry.npmjs.org",
@@ -45,23 +45,23 @@
45
45
  },
46
46
  "dependencies": {
47
47
  "@d1g1tal/watchr": "^1.0.6",
48
- "esbuild": "^0.28.0",
48
+ "esbuild": "^0.28.1",
49
49
  "magic-string": "^0.30.21"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@eslint/js": "^10.0.1",
53
- "@types/node": "^25.9.1",
54
- "@typescript-eslint/eslint-plugin": "^8.59.4",
55
- "@typescript-eslint/parser": "^8.59.4",
56
- "@vitest/coverage-v8": "^4.1.7",
57
- "eslint": "^10.4.0",
58
- "eslint-plugin-jsdoc": "^63.0.0",
53
+ "@types/node": "^25.9.3",
54
+ "@typescript-eslint/eslint-plugin": "^8.61.0",
55
+ "@typescript-eslint/parser": "^8.61.0",
56
+ "@vitest/coverage-v8": "^4.1.8",
57
+ "eslint": "^10.5.0",
58
+ "eslint-plugin-jsdoc": "^63.0.2",
59
59
  "fs-monkey": "^1.1.0",
60
- "memfs": "^4.57.2",
60
+ "memfs": "^4.57.7",
61
61
  "mitata": "^1.0.34",
62
62
  "typescript": "^6.0.3",
63
- "typescript-eslint": "^8.59.4",
64
- "vitest": "^4.1.7"
63
+ "typescript-eslint": "^8.61.0",
64
+ "vitest": "^4.1.8"
65
65
  },
66
66
  "peerDependencies": {
67
67
  "typescript": ">=5.6.3"