Use native private members in rush-lib - #5939
Open
Bharat Middha (bmiddha) wants to merge 5 commits into
Open
Conversation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 8ebd5bf2-c44b-42d5-be25-e7936d4b0a14
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
The decoupled ESLint plugin does not recognize native private methods, causing no-new-null to report a false positive. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 8ebd5bf2-c44b-42d5-be25-e7936d4b0a14
Treat PrivateIdentifier class keys like TypeScript private members so no-new-null does not report private API types. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 8ebd5bf2-c44b-42d5-be25-e7936d4b0a14
…rivate' into bmiddha/native-private-fields-rush-lib
Bharat Middha (bmiddha)
changed the base branch from
main
to
bmiddha/fix-no-new-null-native-private
August 20, 2026 06:05
Contributor
There was a problem hiding this comment.
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
@microsoft/rush-libto ECMAScript#privatemembersValidation
rush build --to @microsoft/rush-lib --verboseheft test --clean(741 tests)Dependency
Stacked on #5947, which fixes
@rushstack/no-new-nullhandling 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.