Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9477875c1d | |||
| 2b73f3d582 | |||
| 0ffdcf852f | |||
| f8f20be4f4 |
13
changelog.md
13
changelog.md
@@ -1,5 +1,18 @@
|
||||
# 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)
|
||||
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",
|
||||
"version": "4.2.3",
|
||||
"version": "4.2.5",
|
||||
"private": false,
|
||||
"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",
|
||||
|
||||
@@ -3,6 +3,6 @@
|
||||
*/
|
||||
export const commitinfo = {
|
||||
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.'
|
||||
}
|
||||
|
||||
@@ -244,6 +244,12 @@ export class TsCompiler {
|
||||
|
||||
// If no pre-emit errors, proceed with 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);
|
||||
|
||||
// Combine error summaries
|
||||
|
||||
@@ -123,9 +123,6 @@ export class FsHelpers {
|
||||
|
||||
/**
|
||||
* 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> {
|
||||
fs.rmSync(dirPath, { recursive: true, force: true, maxRetries: 3, retryDelay: 100 });
|
||||
|
||||
Reference in New Issue
Block a user