Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9477875c1d | |||
| 2b73f3d582 | |||
| 0ffdcf852f | |||
| f8f20be4f4 |
13
changelog.md
13
changelog.md
@@ -1,5 +1,18 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 2026-03-05 - 4.2.5 - fix(compiler)
|
||||||
|
yield to the event loop after TypeScript emit to allow pending microtasks and I/O to settle before reading or modifying the output directory
|
||||||
|
|
||||||
|
- Added await new Promise(resolve => process.nextTick(resolve)) immediately after program.emit()
|
||||||
|
- Prevents race conditions by allowing libuv write completions and other deferred callbacks to complete before accessing the output directory
|
||||||
|
- File changed: ts/mod_compiler/classes.tscompiler.ts
|
||||||
|
|
||||||
|
## 2026-03-05 - 4.2.4 - fix(fshelpers)
|
||||||
|
remove outdated comment about using synchronous rm to avoid XFS metadata corruption
|
||||||
|
|
||||||
|
- Comment-only change in ts/mod_fs/classes.fshelpers.ts; no runtime or API behavior changes
|
||||||
|
- Bump patch version from 4.2.3 to 4.2.4
|
||||||
|
|
||||||
## 2026-03-05 - 4.2.3 - fix(compiler)
|
## 2026-03-05 - 4.2.3 - fix(compiler)
|
||||||
defer unpacking until after all compilations and remove diagnostic filesystem syncs to avoid XFS metadata visibility issues
|
defer unpacking until after all compilations and remove diagnostic filesystem syncs to avoid XFS metadata visibility issues
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@git.zone/tsbuild",
|
"name": "@git.zone/tsbuild",
|
||||||
"version": "4.2.3",
|
"version": "4.2.5",
|
||||||
"private": false,
|
"private": false,
|
||||||
"description": "A tool for compiling TypeScript files using the latest nightly features, offering flexible APIs and a CLI for streamlined development.",
|
"description": "A tool for compiling TypeScript files using the latest nightly features, offering flexible APIs and a CLI for streamlined development.",
|
||||||
"main": "dist_ts/index.js",
|
"main": "dist_ts/index.js",
|
||||||
|
|||||||
@@ -3,6 +3,6 @@
|
|||||||
*/
|
*/
|
||||||
export const commitinfo = {
|
export const commitinfo = {
|
||||||
name: '@git.zone/tsbuild',
|
name: '@git.zone/tsbuild',
|
||||||
version: '4.2.3',
|
version: '4.2.5',
|
||||||
description: 'A tool for compiling TypeScript files using the latest nightly features, offering flexible APIs and a CLI for streamlined development.'
|
description: 'A tool for compiling TypeScript files using the latest nightly features, offering flexible APIs and a CLI for streamlined development.'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -244,6 +244,12 @@ export class TsCompiler {
|
|||||||
|
|
||||||
// If no pre-emit errors, proceed with emit
|
// If no pre-emit errors, proceed with emit
|
||||||
const emitResult = program.emit();
|
const emitResult = program.emit();
|
||||||
|
|
||||||
|
// Yield to the event loop so any pending microtasks, nextTick callbacks,
|
||||||
|
// or deferred I/O from TypeScript's emit (e.g. libuv write completions)
|
||||||
|
// can settle before we read or modify the output directory.
|
||||||
|
await new Promise<void>((resolve) => process.nextTick(resolve));
|
||||||
|
|
||||||
const emitErrorSummary = this.processDiagnostics(emitResult.diagnostics);
|
const emitErrorSummary = this.processDiagnostics(emitResult.diagnostics);
|
||||||
|
|
||||||
// Combine error summaries
|
// Combine error summaries
|
||||||
|
|||||||
@@ -123,9 +123,6 @@ export class FsHelpers {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove a directory recursively.
|
* Remove a directory recursively.
|
||||||
* Uses synchronous rm to avoid XFS metadata corruption observed with
|
|
||||||
* async fs.promises.rm affecting sibling directory entries on the
|
|
||||||
* libuv thread pool under signal pressure.
|
|
||||||
*/
|
*/
|
||||||
public static async removeDirectory(dirPath: string): Promise<void> {
|
public static async removeDirectory(dirPath: string): Promise<void> {
|
||||||
fs.rmSync(dirPath, { recursive: true, force: true, maxRetries: 3, retryDelay: 100 });
|
fs.rmSync(dirPath, { recursive: true, force: true, maxRetries: 3, retryDelay: 100 });
|
||||||
|
|||||||
Reference in New Issue
Block a user