Skip to content

Use native private members in rush-lib - #5939

Merged
Bharat Middha (bmiddha) merged 3 commits into
mainfrom
bmiddha/native-private-fields-rush-lib
Sep 9, 2026
Merged

Use native private members in rush-lib#5939
Bharat Middha (bmiddha) merged 3 commits into
mainfrom
bmiddha/native-private-fields-rush-lib

Conversation

@bmiddha

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

Copy link
Copy Markdown
Member

Summary

  • convert TypeScript-private fields, methods, and accessors in @microsoft/rush-lib to ECMAScript #private members
  • replace private-member destructuring with direct private access
  • keep a small set of TypeScript-private test seams where tests intentionally synthesize, inspect, or spy on class internals
  • keep package behavior and public APIs unchanged

Validation

  • rush build --to @microsoft/rush-lib --verbose
  • heft test --clean (741 tests)

Dependency

Stacked on #5947, which fixes @rushstack/no-new-null handling for ECMAScript private members. Narrow suppressions remain because these packages consume the released decoupled plugin; they can be removed after the patched plugin is published and adopted.

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

Migrates Rush library internals from TypeScript-private members to native ECMAScript #private members without changing public behavior.

Changes:

  • Converted private fields, methods, accessors, and internal references.
  • Replaced private-member destructuring with direct access.
  • Preserved intentional test seams and updated affected tests.

Reviewed changes

Copilot reviewed 129 out of 129 changed files in this pull request and generated no comments.

Show a summary per file
File Description
libraries/rush-lib/src/utilities/TarExecutable.ts Migrates tar execution internals.
libraries/rush-lib/src/utilities/Stopwatch.ts Migrates stopwatch state.
libraries/rush-lib/src/utilities/OverlappingPathAnalyzer.ts Migrates path-tree root.
libraries/rush-lib/src/utilities/HotlinkManager.ts Migrates hotlink state and helpers.
libraries/rush-lib/src/utilities/CollatedTerminalProvider.ts Migrates terminal provider state.
libraries/rush-lib/src/utilities/AsyncRecycler.ts Migrates recycler state and helper.
libraries/rush-lib/src/pluginFramework/RushSession.ts Migrates session options and factories.
libraries/rush-lib/src/pluginFramework/PluginLoader/PluginLoaderBase.ts Migrates plugin-loading helpers.
libraries/rush-lib/src/pluginFramework/logging/Logger.ts Migrates logger state and accessor.
libraries/rush-lib/src/logic/yarn/YarnShrinkwrapFile.ts Migrates Yarn shrinkwrap state.
libraries/rush-lib/src/logic/versionMismatch/VersionMismatchFinderProject.ts Migrates project file manager.
libraries/rush-lib/src/logic/versionMismatch/VersionMismatchFinderCommonVersions.ts Migrates common-version internals.
libraries/rush-lib/src/logic/versionMismatch/VersionMismatchFinder.ts Migrates mismatch analysis state.
libraries/rush-lib/src/logic/UnlinkManager.ts Migrates unlink configuration and helper.
libraries/rush-lib/src/logic/test/Telemetry.test.ts Corrects telemetry test seam type.
libraries/rush-lib/src/logic/TempProjectHelper.ts Migrates temporary-project state.
libraries/rush-lib/src/logic/Telemetry.ts Migrates telemetry internals while preserving test seam.
libraries/rush-lib/src/logic/setup/TerminalInput.ts Migrates password prompt state.
libraries/rush-lib/src/logic/setup/KeyboardLoop.ts Migrates keyboard-loop state and callbacks.
libraries/rush-lib/src/logic/setup/ArtifactoryConfiguration.ts Migrates configuration filename.
libraries/rush-lib/src/logic/selectors/VersionPolicyProjectSelectorParser.ts Migrates selector configuration.
libraries/rush-lib/src/logic/selectors/TagProjectSelectorParser.ts Migrates tag selector configuration.
libraries/rush-lib/src/logic/selectors/SubspaceSelectorParser.ts Migrates subspace selector configuration.
libraries/rush-lib/src/logic/selectors/PathProjectSelectorParser.ts Migrates path selector state.
libraries/rush-lib/src/logic/selectors/NamedProjectSelectorParser.ts Migrates named selector configuration.
libraries/rush-lib/src/logic/selectors/GitChangedProjectSelectorParser.ts Migrates Git selector state.
libraries/rush-lib/src/logic/PurgeManager.ts Migrates purge state and helper.
libraries/rush-lib/src/logic/PublishGit.ts Migrates Git publishing state.
libraries/rush-lib/src/logic/ProjectImpactGraphGenerator.ts Migrates graph-generation internals.
libraries/rush-lib/src/logic/ProjectCommandSet.ts Migrates script lookup map.
libraries/rush-lib/src/logic/PrereleaseToken.ts Migrates prerelease token state.
libraries/rush-lib/src/logic/pnpm/PnpmWorkspaceFile.ts Migrates workspace package storage.
libraries/rush-lib/src/logic/pnpm/PnpmProjectShrinkwrapFile.ts Migrates shrinkwrap traversal helpers.
libraries/rush-lib/src/logic/pnpm/PnpmOptionsConfiguration.ts Migrates PNPM configuration state.
libraries/rush-lib/src/logic/pnpm/PnpmLinkManager.ts Migrates PNPM linking helpers.
libraries/rush-lib/src/logic/pnpm/PnpmfileConfiguration.ts Migrates PNPM hook context.
libraries/rush-lib/src/logic/PackageLookup.ts Migrates package lookup map.
libraries/rush-lib/src/logic/operations/ValidateOperationsPlugin.ts Migrates plugin terminal state.
libraries/rush-lib/src/logic/operations/test/MockOperationRunner.ts Migrates mock runner callback.
libraries/rush-lib/src/logic/operations/ShellOperationRunner.ts Migrates shell runner state.
libraries/rush-lib/src/logic/operations/ProjectLogWritable.ts Migrates log writer handles.
libraries/rush-lib/src/logic/operations/PnpmSyncCopyOperationPlugin.ts Migrates plugin terminal state.
libraries/rush-lib/src/logic/operations/PeriodicCallback.ts Migrates timer and callback state.
libraries/rush-lib/src/logic/operations/OperationStateFile.ts Migrates operation state.
libraries/rush-lib/src/logic/operations/OperationResultSummarizerPlugin.ts Migrates summarizer terminal.
libraries/rush-lib/src/logic/operations/OperationMetadataManager.ts Migrates metadata paths.
libraries/rush-lib/src/logic/operations/OperationChunkTap.ts Migrates chunk callback state.
libraries/rush-lib/src/logic/operations/NodeDiagnosticDirPlugin.ts Migrates diagnostics directory.
libraries/rush-lib/src/logic/operations/LegacySkipPlugin.ts Migrates plugin options.
libraries/rush-lib/src/logic/operations/IPCOperationRunner.ts Migrates IPC runner state.
libraries/rush-lib/src/logic/operations/DebugHashesPlugin.ts Migrates debug terminal state.
libraries/rush-lib/src/logic/operations/ConsoleTimelinePlugin.ts Migrates timeline terminal state.
libraries/rush-lib/src/logic/operations/BuildPlanPlugin.ts Migrates build-plan terminal state.
libraries/rush-lib/src/logic/operations/AsyncOperationQueue.ts Migrates queue state and destructuring.
libraries/rush-lib/src/logic/npm/NpmShrinkwrapFile.ts Migrates NPM shrinkwrap state.
libraries/rush-lib/src/logic/npm/NpmLinkManager.ts Migrates NPM linking helper.
libraries/rush-lib/src/logic/InteractiveUpgrader.ts Migrates interactive-upgrade helpers.
libraries/rush-lib/src/logic/incremental/InputsSnapshot.ts Migrates snapshot caches and generator.
libraries/rush-lib/src/logic/EventHooksManager.ts Migrates event-hook state.
libraries/rush-lib/src/logic/DependencyAnalyzer.ts Migrates dependency analysis state.
libraries/rush-lib/src/logic/cobuild/DisjointSet.ts Migrates disjoint-set internals.
libraries/rush-lib/src/logic/cobuild/CobuildLock.ts Migrates cobuild context.
libraries/rush-lib/src/logic/ChangeManager.ts Migrates change-management state.
libraries/rush-lib/src/logic/ChangeFiles.ts Migrates change-file cache and helper.
libraries/rush-lib/src/logic/buildCache/test/OperationBuildCache.test.ts Uses the public cache ID accessor.
libraries/rush-lib/src/logic/base/BaseShrinkwrapFile.ts Migrates version-check helper.
libraries/rush-lib/src/logic/base/BasePackage.ts Migrates child lookup map.
libraries/rush-lib/src/logic/ApprovedPackagesChecker.ts Migrates approval-check state.
libraries/rush-lib/src/cli/actions/UpgradeInteractiveAction.ts Migrates command parameters.
libraries/rush-lib/src/cli/actions/UpdateCloudCredentialsAction.ts Migrates credential parameters.
libraries/rush-lib/src/cli/actions/UpdateAction.ts Migrates update parameters.
libraries/rush-lib/src/cli/actions/ScanAction.ts Migrates scan flags.
libraries/rush-lib/src/cli/actions/PurgeAction.ts Migrates purge flag.
libraries/rush-lib/src/cli/actions/LinkPackageAction.ts Migrates project-selection helper.
libraries/rush-lib/src/cli/actions/LinkAction.ts Migrates force flag.
libraries/rush-lib/src/cli/actions/InstallAction.ts Migrates install parameters.
libraries/rush-lib/src/cli/actions/InitSubspaceAction.ts Migrates subspace parameter.
libraries/rush-lib/src/cli/actions/InitDeployAction.ts Migrates deployment parameters.
libraries/rush-lib/src/cli/actions/InitAutoinstallerAction.ts Migrates autoinstaller parameter.
libraries/rush-lib/src/cli/actions/InitAction.ts Migrates initialization state and helpers.
libraries/rush-lib/src/cli/actions/DeployAction.ts Migrates deployment action state.
libraries/rush-lib/src/cli/actions/CheckAction.ts Migrates check parameters.
libraries/rush-lib/src/cli/actions/BridgePackageAction.ts Migrates bridge parameters and helper.
libraries/rush-lib/src/cli/actions/BaseRushAction.ts Migrates base action state and helpers.
libraries/rush-lib/src/cli/actions/BaseInstallAction.ts Migrates installation helpers.
libraries/rush-lib/src/cli/actions/AlertAction.ts Migrates alert parameters.
libraries/rush-lib/src/cli/actions/AddAction.ts Migrates package-add flags.
libraries/rush-lib/src/api/VersionPolicyConfiguration.ts Migrates version-policy file helpers.
libraries/rush-lib/src/api/VersionPolicy.ts Migrates version-policy internals.
libraries/rush-lib/src/api/SaveCallbackPackageJsonEditor.ts Migrates save callback.
libraries/rush-lib/src/api/RushProjectConfiguration.ts Migrates validation cache.
libraries/rush-lib/src/api/RushPluginsConfiguration.ts Migrates plugin configuration filename.
libraries/rush-lib/src/api/RushConfigurationProject.ts Migrates project state and relationship caches.
libraries/rush-lib/src/api/LastInstallFlag.ts Migrates validity-check helper.
libraries/rush-lib/src/api/EventHooks.ts Migrates event-hook map.
libraries/rush-lib/src/api/CustomTipsConfiguration.ts Migrates message-writing helper.
libraries/rush-lib/src/api/CommonVersionsConfiguration.ts Migrates common-version state and callbacks.
libraries/rush-lib/src/api/CommandLineConfiguration.ts Migrates phase translation internals.
libraries/rush-lib/src/api/CobuildConfiguration.ts Migrates cobuild provider state.
libraries/rush-lib/src/api/ChangeFile.ts Migrates change-file state and helpers.
libraries/rush-lib/src/api/ApprovedPackagesConfiguration.ts Migrates approved-package storage and helpers.

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

Base automatically changed from bmiddha/fix-no-new-null-native-private to main August 21, 2026 18:50
@bmiddha
Bharat Middha (bmiddha) force-pushed the bmiddha/native-private-fields-rush-lib branch from 07c0f06 to c8a16aa 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>
Convert TypeScript-only private methods, getters, and setters in
libraries/rush-lib to ECMAScript # private syntax, matching the
private field migration already on this branch.

Preserved as TypeScript-only private (not converted) because tests
rely on reflection-style access that true private members do not
support:
- OperationBuildCache#tryCollectPathsToCacheAsync (accessed via
  bracket-notation string literal in tests)
- RushPnpmCommandLineParser (entire class): its test suite
  constructs partial instances via Object.create(prototype) and
  assigns/reads members directly, which is incompatible with real
  private fields
- Telemetry#flushAsyncTasks (accessed through an Omit<> interface
  cast in tests)
- RushCommandLineParser#reportErrorAndSetExitCode (monkey-patched
  onto the prototype by test mocks to prevent process.exit)

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-rush-lib branch from 4edd012 to fcef51d Compare September 8, 2026 19:51
@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-rush-lib branch from fcef51d to 6c5fd33 Compare September 9, 2026 19:01
@bmiddha
Bharat Middha (bmiddha) merged commit 67ca939 into main Sep 9, 2026
10 checks passed
@bmiddha
Bharat Middha (bmiddha) deleted the bmiddha/native-private-fields-rush-lib branch September 9, 2026 20:23
@github-project-automation github-project-automation Bot moved this from Needs triage to Closed in Bug Triage Sep 9, 2026
Sean Larkin (TheLarkInn) added a commit that referenced this pull request Sep 9, 2026
Merge main 67ca939 (#5939) into f338af9, retaining the inherited #5941 tooling synchronization and all reviewed followups.

Reconcile twelve conflicted files and auto-merged accesses with native private declarations. Preserve early reporter ownership and late telemetry failures, generation-safe native execution, explicit Node IPC/raw argv/UTF-8/readiness, awaited resource ownership, and unexpected or empty AggregateError cleanup handling. Keep RushSession's encapsulated WeakMap facade state rather than adding incompatible private brands, and retain existing integration helpers instead of superseded inline paths.

Adapt representation-dependent tests to real constructors, public hooks, gated close/join behavior and observable detached-record semantics. Validation: full rush-lib 971, frontend 128, targeted daemon 115, public client 125, renderer 13 and SDK 6 tests; build, types, API review, rush check and change verification passed. No gates, defaults or test deadlines changed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
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