diff --git a/common/changes/@microsoft/rush/user-selarkin-bot-azure-identity-msal-7_2026-11-02-15-23-08.json b/common/changes/@microsoft/rush/user-selarkin-bot-azure-identity-msal-7_2026-11-02-15-23-08.json new file mode 100644 index 00000000000..bd43fc6f9fa --- /dev/null +++ b/common/changes/@microsoft/rush/user-selarkin-bot-azure-identity-msal-7_2026-11-02-15-23-08.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "comment": "Update the Azure build-cache plugin to @azure/identity ~4.14.1 so that fresh Rush installs use @azure/msal-node 7.1.0 or newer.", + "type": "patch", + "packageName": "@microsoft/rush" + } + ], + "packageName": "@microsoft/rush" +} \ No newline at end of file diff --git a/common/config/subspaces/default/pnpm-lock.yaml b/common/config/subspaces/default/pnpm-lock.yaml index 13b7ce39782..b0b7f6b14b7 100644 --- a/common/config/subspaces/default/pnpm-lock.yaml +++ b/common/config/subspaces/default/pnpm-lock.yaml @@ -5144,8 +5144,8 @@ importers: ../../../rush-plugins/rush-azure-storage-build-cache-plugin: dependencies: '@azure/identity': - specifier: ~4.13.1 - version: 4.13.1 + specifier: ~4.14.1 + version: 4.14.1 '@azure/storage-blob': specifier: ~12.31.0 version: 12.31.0 @@ -5168,12 +5168,18 @@ importers: '@rushstack/heft': specifier: workspace:* version: link:../../apps/heft + '@types/semver': + specifier: 7.7.1 + version: 7.7.1 eslint: specifier: ~9.37.0 version: 9.37.0 local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig + semver: + specifier: ~7.7.4 + version: 7.7.4 ../../../rush-plugins/rush-bridge-cache-plugin: dependencies: @@ -6275,6 +6281,10 @@ packages: resolution: {integrity: sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==} engines: {node: '>=18.0.0'} + '@azure/core-process@1.0.0': + resolution: {integrity: sha512-/shnJ+ooO8WPxDhPEeI/2oRQuubn16gZ6CvlbpWbEswZfzwI9tI/sMAHmF3x1LuQ9yZYXfLW3TjzGMLEC5blKg==} + engines: {node: '>=22.0.0'} + '@azure/core-rest-pipeline@1.23.0': resolution: {integrity: sha512-Evs1INHo+jUjwHi1T6SG6Ua/LHOQBCLuKEEE6efIpt4ZOoNonaT1kP32GoOcdNDbfqsD2445CPri3MubBy5DEQ==} engines: {node: '>=20.0.0'} @@ -6295,6 +6305,10 @@ packages: resolution: {integrity: sha512-5C/2WD5Vb1lHnZS16dNQRPMjN6oV/Upba+C9nBIs15PmOi6A3ZGs4Lr2u60zw4S04gi+u3cEXiqTVP7M4Pz3kw==} engines: {node: '>=20.0.0'} + '@azure/identity@4.14.1': + resolution: {integrity: sha512-HHuuFrmN1uuF9D5A6aAo5eHzNFNX4Q+P4SksZqDKse5YaJFFy/zDLG3wXHEV2FVGgetZ3QM8jGURNBtnQYf1NQ==} + engines: {node: '>=22.0.0'} + '@azure/logger@1.3.0': resolution: {integrity: sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==} engines: {node: '>=20.0.0'} @@ -6303,6 +6317,10 @@ packages: resolution: {integrity: sha512-sTjMtUm+bJpENU/1WlRzHEsgEHppZDZ1EtNyaOODg/sQBtMxxJzGB+MOCM+T2Q5Qe1fKBrdxUmjyRxm0r7Ez9w==} engines: {node: '>=0.8.0'} + '@azure/msal-common@16.15.0': + resolution: {integrity: sha512-lwdLb1B9Q5nEhPLVIKe78XH5wFMN15fCiDkY7ylPDSWZuWcD93G3jpJajrKhO3CQld8SLKz0sHiOi24mxdvtsg==} + engines: {node: '>=0.8.0'} + '@azure/msal-common@16.4.1': resolution: {integrity: sha512-Bl8f+w37xkXsYh7QRkAKCFGYtWMYuOVO7Lv+BxILrvGz3HbIEF22Pt0ugyj0QPOl6NLrHcnNUQ9yeew98P/5iw==} engines: {node: '>=0.8.0'} @@ -6311,6 +6329,10 @@ packages: resolution: {integrity: sha512-DoeSJ9U5KPAIZoHsPywvfEj2MhBniQe0+FSpjLUTdWoIkI999GB5USkW6nNEHnIaLVxROHXvprWA1KzdS1VQ4A==} engines: {node: '>=20'} + '@azure/msal-node@7.1.2': + resolution: {integrity: sha512-52hKQLGpEQzwNufIXG1SPVU+wQ3RIe7Rp2+g+VdAmZojCAZ6yCdGEffzQEQ6RnBZGBEs40nl14rWBmfJpCoHsg==} + engines: {node: '>=20'} + '@azure/storage-blob@12.31.0': resolution: {integrity: sha512-DBgNv10aCSxopt92DkTDD0o9xScXeBqPKGmR50FPZQaEcH4JLQ+GEOGEDv19V5BMkB7kxr+m4h6il/cCDPvmHg==} engines: {node: '>=20.0.0'} @@ -12704,6 +12726,10 @@ packages: resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} engines: {node: '>=18'} + default-browser@5.5.1: + resolution: {integrity: sha512-m1pAzaJgZ/gssEqlOhJkPJp8Xly7QyW6xcrkUa2KKcDeDSEMP7X8xipU3snUcfisTQx0w1AGae+9UtJSfVnXGw==} + engines: {node: '>=18'} + default-gateway@6.0.3: resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} engines: {node: '>= 10'} @@ -14706,6 +14732,10 @@ packages: is-hexadecimal@1.0.4: resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} + is-in-ssh@1.0.0: + resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==} + engines: {node: '>=20'} + is-inside-container@1.0.0: resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} @@ -16190,6 +16220,10 @@ packages: resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} engines: {node: '>=18'} + open@11.0.4: + resolution: {integrity: sha512-++Zlftm0kVLPmzC06t6epuWmcRMDbI4z5P3NNX979WA/k23+NtSOynEGzsVfZwguKw2mi5umVgnBlJQMwRz4Pg==} + engines: {node: '>=20'} + open@7.4.2: resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} engines: {node: '>=8'} @@ -16799,6 +16833,10 @@ packages: resolution: {integrity: sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==} engines: {node: ^10 || ^12 || >=14} + powershell-utils@0.2.1: + resolution: {integrity: sha512-C+y9x90UElAddDZmV4qOx9W53B61PO7cIqWz2dQsWlwswuq4mr8NEwytdGKboYbQlGZ3awrkTeNvcZiZNHnQ8A==} + engines: {node: '>=20'} + prebuild-install@7.1.3: resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} engines: {node: '>=10'} @@ -19270,6 +19308,10 @@ packages: resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} engines: {node: '>=18'} + wsl-utils@1.0.1: + resolution: {integrity: sha512-c16PKLIRxBYpR3jSWsdS7SFp0COm5SOQdiFjY818dYFHJbMGuLBszpF07LBWmOS1uzrHa9VGdynsEgoeKy0oOQ==} + engines: {node: '>=20'} + xdg-basedir@4.0.0: resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==} engines: {node: '>=8'} @@ -19905,6 +19947,8 @@ snapshots: dependencies: tslib: 2.8.1 + '@azure/core-process@1.0.0': {} + '@azure/core-rest-pipeline@1.23.0': dependencies: '@azure/abort-controller': 2.1.2 @@ -19950,6 +19994,23 @@ snapshots: transitivePeerDependencies: - supports-color + '@azure/identity@4.14.1': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.10.1 + '@azure/core-client': 1.10.1 + '@azure/core-process': 1.0.0 + '@azure/core-rest-pipeline': 1.23.0 + '@azure/core-tracing': 1.3.1 + '@azure/core-util': 1.13.1 + '@azure/logger': 1.3.0 + '@azure/msal-browser': 5.6.3 + '@azure/msal-node': 7.1.2 + open: 11.0.4 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + '@azure/logger@1.3.0': dependencies: '@typespec/ts-http-runtime': 0.3.4 @@ -19961,6 +20022,8 @@ snapshots: dependencies: '@azure/msal-common': 16.4.1 + '@azure/msal-common@16.15.0': {} + '@azure/msal-common@16.4.1': {} '@azure/msal-node@5.1.2': @@ -19969,6 +20032,11 @@ snapshots: jsonwebtoken: 9.0.3 uuid: 8.3.2 + '@azure/msal-node@7.1.2': + dependencies: + '@azure/msal-common': 16.15.0 + jsonwebtoken: 9.0.3 + '@azure/storage-blob@12.31.0': dependencies: '@azure/abort-controller': 2.1.2 @@ -30034,6 +30102,11 @@ snapshots: bundle-name: 4.1.0 default-browser-id: 5.0.1 + default-browser@5.5.1: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.1 + default-gateway@6.0.3: dependencies: execa: 5.1.1 @@ -32881,6 +32954,8 @@ snapshots: is-hexadecimal@1.0.4: {} + is-in-ssh@1.0.0: {} + is-inside-container@1.0.0: dependencies: is-docker: 3.0.0 @@ -34953,6 +35028,15 @@ snapshots: is-inside-container: 1.0.0 wsl-utils: 0.1.0 + open@11.0.4: + dependencies: + default-browser: 5.5.1 + define-lazy-prop: 3.0.0 + is-in-ssh: 1.0.0 + is-inside-container: 1.0.0 + powershell-utils: 0.2.1 + wsl-utils: 1.0.1 + open@7.4.2: dependencies: is-docker: 2.2.1 @@ -35591,6 +35675,8 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + powershell-utils@0.2.1: {} + prebuild-install@7.1.3: dependencies: detect-libc: 2.1.2 @@ -38668,6 +38754,11 @@ snapshots: dependencies: is-wsl: 3.1.1 + wsl-utils@1.0.1: + dependencies: + is-wsl: 3.1.1 + powershell-utils: 0.2.1 + xdg-basedir@4.0.0: {} xml-name-validator@5.0.0: {} diff --git a/common/config/subspaces/default/repo-state.json b/common/config/subspaces/default/repo-state.json index 3d09725be2d..4505e496b98 100644 --- a/common/config/subspaces/default/repo-state.json +++ b/common/config/subspaces/default/repo-state.json @@ -1,5 +1,5 @@ // DO NOT MODIFY THIS FILE MANUALLY BUT DO COMMIT IT. It is generated and used by Rush. { - "pnpmShrinkwrapHash": "a21e9138c38033203ce379c3ec1a9aa12562d3c6", + "pnpmShrinkwrapHash": "8f020f103f3d96f0cf229925e61fe39e0c44e9f6", "preferredVersionsHash": "029c99bd6e65c5e1f25e2848340509811ff9753c" } diff --git a/rush-plugins/rush-azure-storage-build-cache-plugin/package.json b/rush-plugins/rush-azure-storage-build-cache-plugin/package.json index 6e43b95a85d..b7ec55fd047 100644 --- a/rush-plugins/rush-azure-storage-build-cache-plugin/package.json +++ b/rush-plugins/rush-azure-storage-build-cache-plugin/package.json @@ -47,7 +47,7 @@ "_phase:test": "heft run --only test -- --clean" }, "dependencies": { - "@azure/identity": "~4.13.1", + "@azure/identity": "~4.14.1", "@azure/storage-blob": "~12.31.0", "@rushstack/credential-cache": "workspace:*", "@rushstack/node-core-library": "workspace:*", @@ -57,8 +57,10 @@ "devDependencies": { "@microsoft/rush-lib": "workspace:*", "@rushstack/heft": "workspace:*", + "@types/semver": "7.7.1", "eslint": "~9.37.0", - "local-node-rig": "workspace:*" + "local-node-rig": "workspace:*", + "semver": "~7.7.4" }, "sideEffects": false } diff --git a/rush-plugins/rush-azure-storage-build-cache-plugin/src/test/AzureIdentityDependency.test.ts b/rush-plugins/rush-azure-storage-build-cache-plugin/src/test/AzureIdentityDependency.test.ts new file mode 100644 index 00000000000..e6804805fac --- /dev/null +++ b/rush-plugins/rush-azure-storage-build-cache-plugin/src/test/AzureIdentityDependency.test.ts @@ -0,0 +1,34 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. +// See LICENSE in the project root for license information. + +import * as path from 'node:path'; + +import { Import, JsonFile, type IPackageJson } from '@rushstack/node-core-library'; +import { gte, minVersion } from 'semver'; + +describe('the Azure Identity dependency chain', () => { + const identityFolder: string = Import.resolvePackage({ + packageName: '@azure/identity', + baseFolderPath: __dirname + }); + const identityPackageJson: IPackageJson = JsonFile.load(path.join(identityFolder, 'package.json')); + + it('requires MSAL Node 7.1.0 or newer for fresh installs', () => { + const msalRange: string | undefined = identityPackageJson.dependencies?.['@azure/msal-node']; + if (!msalRange) { + throw new Error('Azure Identity does not declare its MSAL Node dependency'); + } + + expect(gte(minVersion(msalRange)!, '7.1.0')).toBe(true); + }); + + it('resolves MSAL Node 7.1.0 or newer in the lockfile', () => { + const msalFolder: string = Import.resolvePackage({ + packageName: '@azure/msal-node', + baseFolderPath: identityFolder + }); + const msalPackageJson: IPackageJson = JsonFile.load(path.join(msalFolder, 'package.json')); + + expect(gte(msalPackageJson.version, '7.1.0')).toBe(true); + }); +});