From a43cde790dedce9da8591e4e901c8904f09cb566 Mon Sep 17 00:00:00 2001 From: qun Date: Thu, 18 Jul 2024 06:36:00 +0000 Subject: [PATCH 1/3] fix: edge cases where Rush does not update the lockfile --- .../rush-lib/src/logic/pnpm/PnpmShrinkwrapFile.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/libraries/rush-lib/src/logic/pnpm/PnpmShrinkwrapFile.ts b/libraries/rush-lib/src/logic/pnpm/PnpmShrinkwrapFile.ts index e8cb02740c0..c2515f93904 100644 --- a/libraries/rush-lib/src/logic/pnpm/PnpmShrinkwrapFile.ts +++ b/libraries/rush-lib/src/logic/pnpm/PnpmShrinkwrapFile.ts @@ -872,7 +872,7 @@ export class PnpmShrinkwrapFile extends BaseShrinkwrapFile { // Use a new PackageJsonEditor since it will classify each dependency type, making tracking the // found versions much simpler. - const { dependencyList, devDependencyList } = PackageJsonEditor.fromObject( + const { dependencyList, devDependencyList, dependencyMetaList } = PackageJsonEditor.fromObject( this._pnpmfileConfiguration.transform(transformedPackageJson), project.packageJsonEditor.filePath ); @@ -960,6 +960,7 @@ export class PnpmShrinkwrapFile extends BaseShrinkwrapFile { ); const importerDependencies: Set = new Set(Object.keys(importer.dependencies ?? {})); const importerDevDependencies: Set = new Set(Object.keys(importer.devDependencies ?? {})); + const importerDependenciesMeta: Set = new Set(Object.keys(importer.dependenciesMeta ?? {})); for (const { dependencyType, name, version } of allDependencies) { let isOptional: boolean = false; @@ -1019,11 +1020,18 @@ export class PnpmShrinkwrapFile extends BaseShrinkwrapFile { } } + for (const { name, injected } of dependencyMetaList) { + if (importer.dependenciesMeta?.[name]?.injected === injected) { + importerDependenciesMeta.delete(name); + } + } + // Finally, validate that all values in the importer are also present in the dependency list. if ( importerOptionalDependencies.size > 0 || importerDependencies.size > 0 || - importerDevDependencies.size > 0 + importerDevDependencies.size > 0 || + importerDependenciesMeta.size > 0 ) { return true; } From b5d43ab11742deccd759d9e0e1549f0d5e1591b3 Mon Sep 17 00:00:00 2001 From: qun Date: Thu, 18 Jul 2024 06:38:16 +0000 Subject: [PATCH 2/3] rush change --- .../rush/fix-edge-case_2024-07-18-06-38.json | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 common/changes/@microsoft/rush/fix-edge-case_2024-07-18-06-38.json diff --git a/common/changes/@microsoft/rush/fix-edge-case_2024-07-18-06-38.json b/common/changes/@microsoft/rush/fix-edge-case_2024-07-18-06-38.json new file mode 100644 index 00000000000..860fdbc928a --- /dev/null +++ b/common/changes/@microsoft/rush/fix-edge-case_2024-07-18-06-38.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@microsoft/rush", + "comment": "Fix edge cases where Rush does not update the lockfile", + "type": "none" + } + ], + "packageName": "@microsoft/rush" +} \ No newline at end of file From 3a34f0e465244b1321980f2f0bd675fa0fd3658b Mon Sep 17 00:00:00 2001 From: Ian Clanton-Thuon Date: Mon, 22 Jul 2024 11:09:32 -0700 Subject: [PATCH 3/3] Rush change. --- .../changes/@microsoft/rush/fix-edge-case_2024-07-18-06-38.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/changes/@microsoft/rush/fix-edge-case_2024-07-18-06-38.json b/common/changes/@microsoft/rush/fix-edge-case_2024-07-18-06-38.json index 860fdbc928a..bc263e1bd1f 100644 --- a/common/changes/@microsoft/rush/fix-edge-case_2024-07-18-06-38.json +++ b/common/changes/@microsoft/rush/fix-edge-case_2024-07-18-06-38.json @@ -2,7 +2,7 @@ "changes": [ { "packageName": "@microsoft/rush", - "comment": "Fix edge cases where Rush does not update the lockfile", + "comment": "Fix an issue where Rush does not detect an outdated lockfile if the `dependenciesMeta` `package.json` field is edited.", "type": "none" } ],