Skip to content

Use native private members in build tooling - #5940

Open
Bharat Middha (bmiddha) wants to merge 3 commits into
mainfrom
bmiddha/native-private-fields-build-tooling
Open

Use native private members in build tooling#5940
Bharat Middha (bmiddha) wants to merge 3 commits into
mainfrom
bmiddha/native-private-fields-build-tooling

Conversation

@bmiddha

@bmiddha Bharat Middha (bmiddha) commented Aug 19, 2026

Copy link
Copy Markdown
Member

Summary

  • convert TypeScript-private fields, methods, and accessors across Heft and Webpack plugins to ECMAScript #private members
  • replace unsupported private-member destructuring with direct private access
  • keep package behavior and public APIs unchanged

Validation

  • built and tested all 18 affected packages
  • 75 build/test operations passed, including Webpack 4 packages

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 8ebd5bf2-c44b-42d5-be25-e7936d4b0a14
Extend the earlier private-fields conversion to also cover private
methods and get/set accessors across the heft and webpack plugin
scopes, using the same AST-driven tool. Two candidates in
SassProcessor.ts (the _cache get/set accessor pair) were left as
private because the tool's per-declaration reference tracking cannot
safely disambiguate the shared accessor symbol.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 8ebd5bf2-c44b-42d5-be25-e7936d4b0a14
Manually convert the get/set _cache accessor pair the codemod left as
private, since both declarations and all 2 usages are plain 'this._cache'
property access within SassProcessor's own instance methods, with no
subclassing, bracket/reflection access, or external test references in
the package. The tool's skip was a limitation of its per-declaration
reference tracking (shared accessor symbol), not a real semantic hazard.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 8ebd5bf2-c44b-42d5-be25-e7936d4b0a14
@bmiddha Bharat Middha (bmiddha) changed the title Use native private fields in build tooling Use native private members in build tooling Aug 20, 2026
@mojaza
Mo Jazayeri (mojaza) requested a balanced review from Copilot August 21, 2026 18:43

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Converts compile-time-private members in Heft and Webpack tooling to native ECMAScript #private members without changing public APIs or behavior.

Changes:

  • Migrates private fields, methods, and accessors to native syntax.
  • Updates internal references, including private-member destructuring.
  • Covers Heft plugins and Webpack 4/5 tooling.

Reviewed changes

Copilot reviewed 37 out of 37 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
webpack/webpack5-module-minifier-plugin/src/ModuleMinifierPlugin.ts Migrates minifier state.
webpack/webpack5-localization-plugin/src/TrueHashPlugin.ts Migrates plugin options.
webpack/webpack5-localization-plugin/src/test/MemFSPlugin.ts Migrates test filesystem state.
webpack/webpack5-localization-plugin/src/test/LocalizedRuntimeTestBase.ts Migrates test plugin state.
webpack/webpack5-localization-plugin/src/LocalizationPlugin.ts Migrates localization internals.
webpack/webpack4-module-minifier-plugin/src/PortableMinifierIdsPlugin.ts Migrates minifier hooks.
webpack/webpack4-module-minifier-plugin/src/ModuleMinifierPlugin.ts Migrates minifier state.
webpack/webpack4-module-minifier-plugin/src/AsyncImportCompressionPlugin.ts Migrates compression hooks.
webpack/webpack4-localization-plugin/src/LocalizationPlugin.ts Migrates localization internals.
webpack/webpack-workspace-resolve-plugin/src/WorkspaceResolvePlugin.ts Migrates resolver state.
webpack/webpack-workspace-resolve-plugin/src/WorkspaceLayoutCache.ts Migrates resolution context state.
webpack/webpack-workspace-resolve-plugin/src/KnownPackageDependenciesPlugin.ts Migrates cache storage.
webpack/webpack-workspace-resolve-plugin/src/KnownDescriptionFilePlugin.ts Migrates resolver options.
webpack/webpack-embedded-dependencies-plugin/src/EmbeddedDependenciesWebpackPlugin.ts Migrates dependency-report internals.
webpack/webpack-deep-imports-plugin/src/DeepImportsPlugin.ts Migrates path configuration.
webpack/set-webpack-public-path-plugin/src/SetPublicPathPluginBase.ts Migrates plugin naming state.
webpack/set-webpack-public-path-plugin/src/SetPublicPathPlugin.ts Migrates runtime module options.
webpack/hashed-folder-copy-plugin/src/HashedFolderDependency.ts Migrates hashing internals.
heft-plugins/heft-webpack5-plugin/src/Webpack5Plugin.ts Migrates Webpack 5 task state.
heft-plugins/heft-webpack5-plugin/src/DeferredWatchFileSystem.ts Migrates watcher state.
heft-plugins/heft-webpack4-plugin/src/Webpack4Plugin.ts Migrates Webpack 4 task state.
heft-plugins/heft-webpack4-plugin/src/DeferredWatchFileSystem.ts Migrates watcher state.
heft-plugins/heft-typescript-plugin/src/TypeScriptPlugin.ts Migrates helper methods.
heft-plugins/heft-typescript-plugin/src/TypeScriptBuilder.ts Migrates compiler state and helpers.
heft-plugins/heft-typescript-plugin/src/fileSystem/TypeScriptCachedFileSystem.ts Migrates filesystem caches.
heft-plugins/heft-serverless-stack-plugin/src/ServerlessStackPlugin.ts Migrates SST task internals.
heft-plugins/heft-sass-plugin/src/SassProcessor.ts Migrates Sass state and helpers.
heft-plugins/heft-rspack-plugin/src/RspackPlugin.ts Migrates Rspack task state.
heft-plugins/heft-rspack-plugin/src/DeferredWatchFileSystem.ts Migrates watcher state.
heft-plugins/heft-lint-plugin/src/Tslint.ts Migrates TSLint internals.
heft-plugins/heft-lint-plugin/src/LintPlugin.ts Migrates lint initialization state.
heft-plugins/heft-lint-plugin/src/LinterBase.ts Migrates linter-name storage.
heft-plugins/heft-lint-plugin/src/Eslint.ts Migrates ESLint internals.
heft-plugins/heft-jest-plugin/src/TerminalWritableStream.ts Migrates terminal storage.
heft-plugins/heft-jest-plugin/src/JestPlugin.ts Migrates Jest orchestration state.
heft-plugins/heft-jest-plugin/src/HeftJestReporter.ts Migrates reporter state and helpers.
heft-plugins/heft-api-extractor-plugin/src/ApiExtractorPlugin.ts Migrates API Extractor state.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

* ```
*/
private _emitWebpackError(compilation: Compilation, errorMessage: string, error: unknown): void {
#emitWebpackError(compilation: Compilation, errorMessage: string, error: unknown): void {
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Needs triage

Development

Successfully merging this pull request may close these issues.

2 participants