Pull Request Overview
- Opened on September 17, 2026
- Status Closed
- Commit count 0
Total Delta
Open Days
Test Delta
How long has this pull request spent in each phase of its lifecycle?
Data pending calculation for pull request
refactor(@angular/build): extract shared concurrency, watcher, and styling utilities
Extract shared utilities from the application builder so they can be reused across builders:
- Extract runConcurrent and mapConcurrent into utils/concurrency.ts
- Extract setupWatcher into tools/esbuild/watcher.ts
- Extract getTailwindConfig into utils/postcss-configuration.ts
- Update stylesheet bundling options and CSS resource plugin to support data URLs
- Expose resolvePath on BuilderHarness
Comments Threads Pending Resolution
## Code Review
This pull request introduces several refactorings and new features, including the extraction of file watcher setup logic into a reusable `setupWatcher` helper, the addition of a `dataurl` option to inline stylesheet resources as base64 data URIs, and the introduction of new concurrency utilities (`runConcurrent` and `mapConcurrent`) to handle limited-concurrency asynchronous operations. Additionally, the `getTailwindConfig` helper was moved to `postcss-configuration.ts`. Feedback on these changes highlights a potential memory leak in `setupWatcher` where the `'abort'` event listener registered on the `AbortSignal` is not removed when the watcher is closed.
Resolved Comment Threads
## Code Review
This pull request introduces several refactorings and new features, including the extraction of file watcher setup logic into a reusable `setupWatcher` helper, the addition of a `dataurl` option to inline stylesheet resources as base64 data URIs, and the introduction of new concurrency utilities (`runConcurrent` and `mapConcurrent`) to handle limited-concurrency asynchronous operations. Additionally, the `getTailwindConfig` helper was moved to `postcss-configuration.ts`. Feedback on these changes highlights a potential memory leak in `setupWatcher` where the `'abort'` event listener registered on the `AbortSignal` is not removed when the watcher is closed.