Skip to content

refactor(@angular/build): pass files directly to inlineAll in i18n inliner - #33984

Merged
clydin merged 1 commit into
angular:mainfrom
clydin:refactor/i18n-inliner-files-param
Sep 1, 2026
Merged

refactor(@angular/build): pass files directly to inlineAll in i18n inliner#33984
clydin merged 1 commit into
angular:mainfrom
clydin:refactor/i18n-inliner-files-param

Conversation

@clydin

@clydin clydin commented Sep 1, 2026

Copy link
Copy Markdown
Member

Pass build files directly into inlineAll and inlineForLocale via the files parameter instead of requiring them in the I18nInliner constructor options.

Because file data is passed on-demand to workers per batch request via Blobs, the WorkerPool has no dependency on build files during initialization. Passing files directly to inlineAll decouples the inliner and worker pool lifecycle from individual build runs, allowing inliner and worker pool reuse across watch mode rebuilds. It also eliminates retention of previous build file buffers on the I18nInliner instance and removes the need to pass empty outputFiles arrays when only inlineTemplateUpdate is called.

@clydin clydin added the target: minor This PR is targeted for the next minor release label Sep 1, 2026

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request refactors the I18nInliner class to accept build output files directly in its inlineAll and inlineForLocale methods, rather than requiring them in the constructor options. This change decouples the inliner instance from a static set of files, allowing it to be reused more effectively. The corresponding unit tests have been updated to match this new API. A review comment points out a resource leak in one of the updated tests where a local inliner variable is declared instead of assigning to the suite-level variable, which prevents the afterEach hook from cleaning up the worker pool.

Comment thread packages/angular/build/src/tools/esbuild/i18n-inliner_spec.ts
…liner

Pass build files directly into inlineAll and inlineForLocale via the files
parameter instead of requiring them in the I18nInliner constructor options.

Because file data is passed on-demand to workers per batch request via Blobs,
the WorkerPool has no dependency on build files during initialization. Passing
files directly to inlineAll decouples the inliner and worker pool lifecycle from
individual build runs, allowing inliner and worker pool reuse across watch mode
rebuilds. It also eliminates retention of previous build file buffers on the
I18nInliner instance and removes the need to pass empty outputFiles arrays when
only inlineTemplateUpdate is called.
@clydin
clydin force-pushed the refactor/i18n-inliner-files-param branch from 8cf1f84 to 6128ed8 Compare September 1, 2026 14:14
@clydin clydin added the action: review The PR is still awaiting reviews from at least one requested reviewer label Sep 1, 2026
@clydin
clydin requested a review from alan-agius4 September 1, 2026 14:37
@alan-agius4 alan-agius4 added action: merge The PR is ready for merge by the caretaker and removed action: review The PR is still awaiting reviews from at least one requested reviewer labels Sep 1, 2026
@clydin
clydin merged commit 1d5377b into angular:main Sep 1, 2026
41 checks passed
@clydin

clydin commented Sep 1, 2026

Copy link
Copy Markdown
Member Author

This PR was merged into the repository. The changes were merged into the following branches:

@clydin
clydin deleted the refactor/i18n-inliner-files-param branch September 1, 2026 15:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

action: merge The PR is ready for merge by the caretaker area: @angular/build target: minor This PR is targeted for the next minor release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants