Skip to content

Use native private members in build tooling - #5940

Merged
Bharat Middha (bmiddha) merged 5 commits into
mainfrom
bmiddha/native-private-fields-build-tooling
Sep 9, 2026
Merged

Use native private members in build tooling#5940
Bharat Middha (bmiddha) merged 5 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

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.

@bmiddha
Bharat Middha (bmiddha) force-pushed the bmiddha/native-private-fields-build-tooling branch from 65244f2 to b96dff6 Compare September 6, 2026 22:23
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 8ebd5bf2-c44b-42d5-be25-e7936d4b0a14
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
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
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
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
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@bmiddha
Bharat Middha (bmiddha) force-pushed the bmiddha/native-private-fields-build-tooling branch from b96dff6 to dc20619 Compare September 8, 2026 19:52
@bmiddha
Bharat Middha (bmiddha) enabled auto-merge (squash) September 8, 2026 21:22
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@bmiddha
Bharat Middha (bmiddha) force-pushed the bmiddha/native-private-fields-build-tooling branch from dc20619 to 206983b Compare September 9, 2026 19:01
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@bmiddha
Bharat Middha (bmiddha) merged commit 71b2150 into main Sep 9, 2026
15 of 16 checks passed
@bmiddha
Bharat Middha (bmiddha) deleted the bmiddha/native-private-fields-build-tooling branch September 9, 2026 23:44
@github-project-automation github-project-automation Bot moved this from Needs triage to Closed in Bug Triage Sep 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Closed

Development

Successfully merging this pull request may close these issues.

3 participants