From 2afaf0a2b2a2a153a2440d86301152d354f9531a Mon Sep 17 00:00:00 2001 From: qun Date: Sat, 11 May 2024 08:21:19 +0000 Subject: [PATCH 01/13] fix some bugs for lockfile-explorer --- .../src/parsing/readLockfile.ts | 20 +- apps/lockfile-explorer/package.json | 6 +- apps/lockfile-explorer/src/start.ts | 13 +- apps/lockfile-explorer/src/utils.ts | 15 ++ .../main_2024-05-11-08-08.json | 10 + .../rush/browser-approved-packages.json | 4 + .../config/subspaces/default/pnpm-lock.yaml | 202 ++++++++++-------- .../config/subspaces/default/repo-state.json | 2 +- 8 files changed, 165 insertions(+), 107 deletions(-) create mode 100644 apps/lockfile-explorer/src/utils.ts create mode 100644 common/changes/@rushstack/lockfile-explorer/main_2024-05-11-08-08.json diff --git a/apps/lockfile-explorer-web/src/parsing/readLockfile.ts b/apps/lockfile-explorer-web/src/parsing/readLockfile.ts index fbc270a80ef..ce78139f673 100644 --- a/apps/lockfile-explorer-web/src/parsing/readLockfile.ts +++ b/apps/lockfile-explorer-web/src/parsing/readLockfile.ts @@ -139,21 +139,17 @@ export function generateLockfileGraph( for (const [dependencyKey, dependencyValue] of Object.entries(lockfile.packages)) { // const normalizedPath = new Path(dependencyKey).makeAbsolute('/').toString(); - let packageDepKey = dependencyKey; - if (pnpmLockfileVersion === PnpmLockfileVersion.V6) { - packageDepKey = dependencyKey.replace('@', '/'); - } - const currEntry = new LockfileEntry({ // entryId: normalizedPath, - rawEntryId: packageDepKey, + rawEntryId: dependencyKey, kind: LockfileEntryFilter.Package, - rawYamlData: dependencyValue + rawYamlData: dependencyValue, + subspaceName }); allPackages.push(currEntry); allEntries.push(currEntry); - allEntriesById[packageDepKey] = currEntry; + allEntriesById[dependencyKey] = currEntry; } } @@ -171,9 +167,11 @@ export function generateLockfileGraph( dependency.resolvedEntry = matchedEntry; matchedEntry.referrers.push(entry); } else { - // Local package - // eslint-disable-next-line no-console - console.error('Could not resolve dependency entryId: ', dependency.entryId, dependency); + if (dependency.entryId.startsWith('/')) { + // Local package + // eslint-disable-next-line no-console + console.error('Could not resolve dependency entryId: ', dependency.entryId, dependency); + } } } } diff --git a/apps/lockfile-explorer/package.json b/apps/lockfile-explorer/package.json index 054bebf9ed8..a876ed64829 100644 --- a/apps/lockfile-explorer/package.json +++ b/apps/lockfile-explorer/package.json @@ -52,7 +52,8 @@ "@types/express": "4.17.21", "@types/js-yaml": "3.12.1", "@types/update-notifier": "~6.0.1", - "local-node-rig": "workspace:*" + "local-node-rig": "workspace:*", + "@pnpm/lockfile-types": "~6.0.0" }, "dependencies": { "@rushstack/node-core-library": "workspace:*", @@ -61,6 +62,7 @@ "express": "4.19.2", "js-yaml": "~3.13.1", "open": "~8.4.0", - "update-notifier": "~5.1.0" + "update-notifier": "~5.1.0", + "@pnpm/dependency-path": "~2.1.2" } } diff --git a/apps/lockfile-explorer/src/start.ts b/apps/lockfile-explorer/src/start.ts index 3cbe3b0c8cf..23d4d388d59 100644 --- a/apps/lockfile-explorer/src/start.ts +++ b/apps/lockfile-explorer/src/start.ts @@ -11,7 +11,9 @@ import { AlreadyReportedError } from '@rushstack/node-core-library'; import { FileSystem, type IPackageJson, JsonFile, PackageJsonLookup } from '@rushstack/node-core-library'; import type { IAppContext } from '@rushstack/lockfile-explorer-web/lib/AppContext'; import { Colorize } from '@rushstack/terminal'; +import type { Lockfile } from '@pnpm/lockfile-types'; +import { convertLockfileV6DepPathToV5DepPath } from './utils'; import { init } from './init'; import type { IAppState } from './state'; import { type ICommandLine, parseCommandLine } from './commandLine'; @@ -103,7 +105,16 @@ function startApp(debugMode: boolean): void { app.get('/api/lockfile', async (req: express.Request, res: express.Response) => { const pnpmLockfileText: string = await FileSystem.readFileAsync(appState.pnpmLockfileLocation); - const doc = yaml.load(pnpmLockfileText); + const doc = yaml.load(pnpmLockfileText) as Lockfile; + const { packages } = doc; + if (packages) { + const updatedPackages: Lockfile['packages'] = {}; + const dependencyPaths = Object.keys(packages); + for (const dependencyPath of dependencyPaths) { + updatedPackages[convertLockfileV6DepPathToV5DepPath(dependencyPath)] = packages[dependencyPath]; + } + doc.packages = updatedPackages; + } res.send({ doc, subspaceName diff --git a/apps/lockfile-explorer/src/utils.ts b/apps/lockfile-explorer/src/utils.ts new file mode 100644 index 00000000000..7db486e0756 --- /dev/null +++ b/apps/lockfile-explorer/src/utils.ts @@ -0,0 +1,15 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. +// See LICENSE in the project root for license information. + +import * as dp from '@pnpm/dependency-path'; + +/** + * This operation exactly mirrors the behavior of PNPM's own implementation: + * https://github.com/pnpm/pnpm/blob/73ebfc94e06d783449579cda0c30a40694d210e4/lockfile/lockfile-file/src/experiments/inlineSpecifiersLockfileConverters.ts#L162 + */ +export function convertLockfileV6DepPathToV5DepPath(newDepPath: string): string { + if (!newDepPath.includes('@', 2) || newDepPath.startsWith('file:')) return newDepPath; + const index = newDepPath.indexOf('@', newDepPath.indexOf('/@') + 2); + if (newDepPath.includes('(') && index > dp.indexOfPeersSuffix(newDepPath)) return newDepPath; + return `${newDepPath.substring(0, index)}/${newDepPath.substring(index + 1)}`; +} diff --git a/common/changes/@rushstack/lockfile-explorer/main_2024-05-11-08-08.json b/common/changes/@rushstack/lockfile-explorer/main_2024-05-11-08-08.json new file mode 100644 index 00000000000..e08c449b263 --- /dev/null +++ b/common/changes/@rushstack/lockfile-explorer/main_2024-05-11-08-08.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@rushstack/lockfile-explorer", + "comment": "Fix some bugs for the lockfile-explorer tool", + "type": "patch" + } + ], + "packageName": "@rushstack/lockfile-explorer" +} \ No newline at end of file diff --git a/common/config/rush/browser-approved-packages.json b/common/config/rush/browser-approved-packages.json index 64c497e90f4..fc27f749c69 100644 --- a/common/config/rush/browser-approved-packages.json +++ b/common/config/rush/browser-approved-packages.json @@ -18,6 +18,10 @@ "name": "@microsoft/rush-sdk", "allowedCategories": [ "tests" ] }, + { + "name": "@pnpm/lockfile-types", + "allowedCategories": [ "libraries" ] + }, { "name": "@radix-ui/colors", "allowedCategories": [ "libraries" ] diff --git a/common/config/subspaces/default/pnpm-lock.yaml b/common/config/subspaces/default/pnpm-lock.yaml index 463addbc9b8..89f8f95c1bf 100644 --- a/common/config/subspaces/default/pnpm-lock.yaml +++ b/common/config/subspaces/default/pnpm-lock.yaml @@ -189,6 +189,9 @@ importers: ../../../apps/lockfile-explorer: dependencies: + '@pnpm/dependency-path': + specifier: ~2.1.2 + version: 2.1.8 '@rushstack/node-core-library': specifier: workspace:* version: link:../../libraries/node-core-library @@ -214,6 +217,9 @@ importers: '@microsoft/rush-lib': specifier: workspace:* version: link:../../libraries/rush-lib + '@pnpm/lockfile-types': + specifier: ~6.0.0 + version: 6.0.0 '@rushstack/heft': specifier: workspace:* version: link:../heft @@ -8866,7 +8872,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 17.0.41 + '@types/node': 20.12.11 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -8883,17 +8889,17 @@ packages: dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.5.0(supports-color@8.1.1) - '@jest/test-result': 29.7.0(@types/node@17.0.41) + '@jest/test-result': 29.7.0(@types/node@20.12.11) '@jest/transform': 29.5.0(supports-color@8.1.1) '@jest/types': 29.5.0 - '@types/node': 17.0.41 + '@types/node': 20.12.11 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.5.0(@types/node@17.0.41)(supports-color@8.1.1) + jest-config: 29.5.0(@types/node@20.12.11)(supports-color@8.1.1) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -8925,17 +8931,17 @@ packages: dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0(@types/node@17.0.41) + '@jest/test-result': 29.7.0(@types/node@20.12.11) '@jest/transform': 29.7.0(supports-color@8.1.1) '@jest/types': 29.6.3 - '@types/node': 17.0.41 + '@types/node': 20.12.11 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@17.0.41) + jest-config: 29.7.0(@types/node@20.12.11) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -8963,7 +8969,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 17.0.41 + '@types/node': 20.12.11 jest-mock: 29.7.0 /@jest/expect-utils@29.7.0: @@ -8987,7 +8993,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 17.0.41 + '@types/node': 20.12.11 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -9051,14 +9057,14 @@ packages: dependencies: '@bcoe/v8-coverage': 0.2.3 '@jest/console': 29.7.0 - '@jest/test-result': 29.7.0(@types/node@17.0.41) + '@jest/test-result': 29.7.0(@types/node@20.12.11) '@jest/transform': 29.7.0(supports-color@8.1.1) '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 '@types/istanbul-lib-coverage': 2.0.4 - '@types/node': 17.0.41 + '@types/node': 20.12.11 chalk: 4.1.2 - collect-v8-coverage: 1.0.2(@types/node@17.0.41) + collect-v8-coverage: 1.0.2(@types/node@20.12.11) exit: 0.1.2 glob: 7.2.3 graceful-fs: 4.2.11 @@ -9092,61 +9098,61 @@ packages: callsites: 3.1.0 graceful-fs: 4.2.11 - /@jest/test-result@29.7.0(@types/node@17.0.41): + /@jest/test-result@29.7.0(@types/node@18.17.15): resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/console': 29.7.0 '@jest/types': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2(@types/node@17.0.41) + collect-v8-coverage: 1.0.2(@types/node@18.17.15) jest-haste-map: 29.7.0 jest-resolve: 29.7.0 transitivePeerDependencies: - '@types/node' - /@jest/test-result@29.7.0(@types/node@18.17.15): + /@jest/test-result@29.7.0(@types/node@20.11.30): resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/console': 29.7.0 '@jest/types': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2(@types/node@18.17.15) + collect-v8-coverage: 1.0.2(@types/node@20.11.30) jest-haste-map: 29.7.0 jest-resolve: 29.7.0 transitivePeerDependencies: - '@types/node' - /@jest/test-result@29.7.0(@types/node@20.11.30): + /@jest/test-result@29.7.0(@types/node@20.12.11): resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/console': 29.7.0 '@jest/types': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2(@types/node@20.11.30) + collect-v8-coverage: 1.0.2(@types/node@20.12.11) jest-haste-map: 29.7.0 jest-resolve: 29.7.0 transitivePeerDependencies: - '@types/node' - /@jest/test-sequencer@29.7.0(@types/node@17.0.41): + /@jest/test-sequencer@29.7.0(@types/node@18.17.15): resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.7.0(@types/node@17.0.41) + '@jest/test-result': 29.7.0(@types/node@18.17.15) graceful-fs: 4.2.11 jest-haste-map: 29.7.0 slash: 3.0.0 transitivePeerDependencies: - '@types/node' - /@jest/test-sequencer@29.7.0(@types/node@18.17.15): + /@jest/test-sequencer@29.7.0(@types/node@20.12.11): resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.7.0(@types/node@18.17.15) + '@jest/test-result': 29.7.0(@types/node@20.12.11) graceful-fs: 4.2.11 jest-haste-map: 29.7.0 slash: 3.0.0 @@ -9226,7 +9232,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 17.0.41 + '@types/node': 20.12.11 '@types/yargs': 15.0.19 chalk: 4.1.2 dev: true @@ -9249,7 +9255,7 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 17.0.41 + '@types/node': 20.12.11 '@types/yargs': 17.0.32 chalk: 4.1.2 @@ -9529,6 +9535,13 @@ packages: ramda: 0.27.2 dev: false + /@pnpm/lockfile-types@6.0.0: + resolution: {integrity: sha512-a4/ULIPLZIIq8Qmi2HEoFgRTtEouGU5RNhuGDxnSmkxu1BjlNMNjLJeEI5jzMZCGOjBoML+AirY/XOO3bcEQ/w==} + engines: {node: '>=18.12'} + dependencies: + '@pnpm/types': 10.0.0 + dev: true + /@pnpm/logger@4.0.0: resolution: {integrity: sha512-SIShw+k556e7S7tLZFVSIHjCdiVog1qWzcKW2RbLEHPItdisAFVNIe34kYd9fMSswTlSRLS/qRjw3ZblzWmJ9Q==} engines: {node: '>=12.17'} @@ -9581,6 +9594,11 @@ packages: strip-bom: 4.0.0 dev: false + /@pnpm/types@10.0.0: + resolution: {integrity: sha512-P608MRTOExt5BkIN2hsrb/ycEchwaPW/x80ujJUAqxKZSXNVAOrlEu3KJ+2+jTCunyWmo/EcE01ZdwCw8jgVrQ==} + engines: {node: '>=18.12'} + dev: true + /@pnpm/types@6.4.0: resolution: {integrity: sha512-nco4+4sZqNHn60Y4VE/fbtlShCBqipyUO+nKRPvDHqLrecMW9pzHWMVRxk4nrMRoeowj3q0rX3GYRBa8lsHTAg==} engines: {node: '>=10.16'} @@ -12462,12 +12480,12 @@ packages: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 17.0.41 + '@types/node': 20.12.11 /@types/bonjour@3.5.13: resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} dependencies: - '@types/node': 17.0.41 + '@types/node': 20.12.11 dev: false /@types/cacheable-request@6.0.3: @@ -12475,7 +12493,7 @@ packages: dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 17.0.41 + '@types/node': 20.12.11 '@types/responselike': 1.0.3 /@types/cli-table@0.3.0: @@ -12508,13 +12526,13 @@ packages: resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} dependencies: '@types/express-serve-static-core': 4.17.43 - '@types/node': 17.0.41 + '@types/node': 20.12.11 dev: false /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 17.0.41 + '@types/node': 20.12.11 /@types/cors@2.8.17: resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} @@ -12548,7 +12566,7 @@ packages: /@types/express-serve-static-core@4.17.43: resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==} dependencies: - '@types/node': 17.0.41 + '@types/node': 20.12.11 '@types/qs': 6.9.13 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -12564,7 +12582,7 @@ packages: /@types/fs-extra@7.0.0: resolution: {integrity: sha512-ndoMMbGyuToTy4qB6Lex/inR98nPiNHacsgMPvy+zqMLgSxbt8VtWpDArpGp69h1fEDQHn1KB+9DWD++wgbwYA==} dependencies: - '@types/node': 17.0.41 + '@types/node': 20.12.11 dev: true /@types/glob@7.1.1: @@ -12572,13 +12590,13 @@ packages: dependencies: '@types/events': 3.0.3 '@types/minimatch': 3.0.5 - '@types/node': 17.0.41 + '@types/node': 20.12.11 dev: true /@types/graceful-fs@4.1.9: resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: - '@types/node': 17.0.41 + '@types/node': 20.12.11 /@types/hast@2.3.10: resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} @@ -12612,7 +12630,7 @@ packages: /@types/http-proxy@1.17.14: resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} dependencies: - '@types/node': 17.0.41 + '@types/node': 20.12.11 /@types/inquirer@7.3.1: resolution: {integrity: sha512-osD38QVIfcdgsPCT0V3lD7eH0OFurX71Jft18bZrsVQWVRt6TuxRzlr0GJLrxoHZR2V5ph7/qP8se/dcnI7o0g==} @@ -12676,7 +12694,7 @@ packages: /@types/jsdom@20.0.1: resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} dependencies: - '@types/node': 17.0.41 + '@types/node': 20.12.11 '@types/tough-cookie': 4.0.5 parse5: 7.1.2 @@ -12690,12 +12708,12 @@ packages: /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 17.0.41 + '@types/node': 20.12.11 /@types/loader-utils@1.1.3: resolution: {integrity: sha512-euKGFr2oCB3ASBwG39CYJMR3N9T0nanVqXdiH7Zu/Nqddt6SmFRxytq/i2w9LQYNQekEtGBz+pE3qG6fQTNvRg==} dependencies: - '@types/node': 17.0.41 + '@types/node': 20.12.11 '@types/webpack': 4.41.32 dev: true @@ -12736,19 +12754,19 @@ packages: /@types/node-fetch@2.6.2: resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} dependencies: - '@types/node': 17.0.41 + '@types/node': 20.12.11 form-data: 3.0.1 /@types/node-forge@1.0.4: resolution: {integrity: sha512-UpX8LTRrarEZPQvQqF5/6KQAqZolOVckH7txWdlsWIJrhBFFtwEUTcqeDouhrJl6t0F7Wg5cyUOAqqF8a6hheg==} dependencies: - '@types/node': 17.0.41 + '@types/node': 20.12.11 dev: true /@types/node-forge@1.3.11: resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} dependencies: - '@types/node': 17.0.41 + '@types/node': 20.12.11 dev: false /@types/node@14.0.1: @@ -12761,6 +12779,7 @@ packages: /@types/node@17.0.41: resolution: {integrity: sha512-xA6drNNeqb5YyV5fO3OAEsnXLfO7uF0whiOfPTz5AeDo8KeZFmODKnvwPymMNO8qE/an8pVY/O50tig2SQCrGw==} + dev: true /@types/node@18.17.15: resolution: {integrity: sha512-2yrWpBk32tvV/JAd3HNHWuZn/VDN1P+72hWirHnvsvTGSqbANi+kSeuQR9yAHnbvaBvHDsoTdXV0Fe+iRtHLKA==} @@ -12774,7 +12793,6 @@ packages: resolution: {integrity: sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw==} dependencies: undici-types: 5.26.5 - dev: true /@types/normalize-package-data@2.4.4: resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -12790,7 +12808,7 @@ packages: /@types/npmlog@4.1.6: resolution: {integrity: sha512-0l3z16vnlJGl2Mi/rgJFrdwfLZ4jfNYgE6ZShEpjqhHuGTqdEzNles03NpYHwUMVYZa+Tj46UxKIEpE78lQ3DQ==} dependencies: - '@types/node': 17.0.41 + '@types/node': 20.12.11 dev: true /@types/overlayscrollbars@1.12.5: @@ -12858,7 +12876,7 @@ packages: /@types/responselike@1.0.3: resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} dependencies: - '@types/node': 17.0.41 + '@types/node': 20.12.11 /@types/retry@0.12.0: resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} @@ -12874,7 +12892,7 @@ packages: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 17.0.41 + '@types/node': 20.12.11 /@types/serialize-javascript@5.0.2: resolution: {integrity: sha512-BRLlwZzRoZukGaBtcUxkLsZsQfWZpvog6MZk3PWQO9Q6pXmXFzjU5iGzZ+943evp6tkkbN98N1Z31KT0UG1yRw==} @@ -12891,12 +12909,12 @@ packages: dependencies: '@types/http-errors': 2.0.4 '@types/mime': 3.0.4 - '@types/node': 17.0.41 + '@types/node': 20.12.11 /@types/sockjs@0.3.36: resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} dependencies: - '@types/node': 17.0.41 + '@types/node': 20.12.11 dev: false /@types/source-list-map@0.1.6: @@ -12905,7 +12923,7 @@ packages: /@types/ssri@7.1.5: resolution: {integrity: sha512-odD/56S3B51liILSk5aXJlnYt99S6Rt9EFDDqGtJM26rKHApHcwyU/UoYHrzKkdkHMAIquGWCuHtQTbes+FRQw==} dependencies: - '@types/node': 17.0.41 + '@types/node': 20.12.11 dev: true /@types/stack-utils@2.0.3: @@ -12925,14 +12943,14 @@ packages: /@types/tar@6.1.6: resolution: {integrity: sha512-HQ06kiiDXz9uqtmE9ksQUn1ovcPr1gGV9EgaCWo6FGYKD0onNBCetBzL0kfcS8Kbj1EFxJWY9jL2W4ZvvtGI8Q==} dependencies: - '@types/node': 17.0.41 + '@types/node': 20.12.11 minipass: 4.2.8 dev: true /@types/through@0.0.33: resolution: {integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==} dependencies: - '@types/node': 17.0.41 + '@types/node': 20.12.11 dev: true /@types/tough-cookie@4.0.5: @@ -12941,7 +12959,7 @@ packages: /@types/tunnel@0.0.3: resolution: {integrity: sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==} dependencies: - '@types/node': 17.0.41 + '@types/node': 20.12.11 dev: false /@types/uglify-js@3.17.5: @@ -12985,14 +13003,14 @@ packages: /@types/webpack-sources@1.4.2: resolution: {integrity: sha512-77T++JyKow4BQB/m9O96n9d/UUHWLQHlcqXb9Vsf4F1+wKNrrlWNFPDLKNT92RJnCSL6CieTc+NDXtCVZswdTw==} dependencies: - '@types/node': 17.0.41 + '@types/node': 20.12.11 '@types/source-list-map': 0.1.6 source-map: 0.7.4 /@types/webpack@4.41.32: resolution: {integrity: sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg==} dependencies: - '@types/node': 17.0.41 + '@types/node': 20.12.11 '@types/tapable': 1.0.6 '@types/uglify-js': 3.17.5 '@types/webpack-sources': 1.4.2 @@ -13002,7 +13020,7 @@ packages: /@types/ws@8.5.5: resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} dependencies: - '@types/node': 17.0.41 + '@types/node': 20.12.11 /@types/xmldoc@1.1.4: resolution: {integrity: sha512-a/ONNCf9itbmzEz1ohx0Fv5TLJzXIPQTapxFu+DlYlDtn9UcAa1OhnrOOMwbU8125hFjrkJKL3qllD7vO5Bivw==} @@ -15570,26 +15588,26 @@ packages: resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==} dev: true - /collect-v8-coverage@1.0.2(@types/node@17.0.41): + /collect-v8-coverage@1.0.2(@types/node@18.17.15): resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} peerDependencies: '@types/node': '>=12' dependencies: - '@types/node': 17.0.41 + '@types/node': 18.17.15 - /collect-v8-coverage@1.0.2(@types/node@18.17.15): + /collect-v8-coverage@1.0.2(@types/node@20.11.30): resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} peerDependencies: '@types/node': '>=12' dependencies: - '@types/node': 18.17.15 + '@types/node': 20.11.30 - /collect-v8-coverage@1.0.2(@types/node@20.11.30): + /collect-v8-coverage@1.0.2(@types/node@20.12.11): resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} peerDependencies: '@types/node': '>=12' dependencies: - '@types/node': 20.11.30 + '@types/node': 20.12.11 /collection-visit@1.0.0: resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} @@ -20262,9 +20280,9 @@ packages: dependencies: '@jest/environment': 29.7.0 '@jest/expect': 29.7.0(supports-color@8.1.1) - '@jest/test-result': 29.7.0(@types/node@17.0.41) + '@jest/test-result': 29.7.0(@types/node@20.12.11) '@jest/types': 29.6.3 - '@types/node': 17.0.41 + '@types/node': 20.12.11 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.1 @@ -20312,7 +20330,7 @@ packages: - ts-node dev: true - /jest-config@29.5.0(@types/node@17.0.41)(supports-color@8.1.1): + /jest-config@29.5.0(@types/node@18.17.15)(supports-color@8.1.1): resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -20325,9 +20343,9 @@ packages: optional: true dependencies: '@babel/core': 7.20.12(supports-color@8.1.1) - '@jest/test-sequencer': 29.7.0(@types/node@17.0.41) + '@jest/test-sequencer': 29.7.0(@types/node@18.17.15) '@jest/types': 29.5.0 - '@types/node': 17.0.41 + '@types/node': 18.17.15 babel-jest: 29.7.0(@babel/core@7.20.12)(supports-color@8.1.1) chalk: 4.1.2 ci-info: 3.9.0 @@ -20351,7 +20369,7 @@ packages: - babel-plugin-macros - supports-color - /jest-config@29.5.0(@types/node@18.17.15)(supports-color@8.1.1): + /jest-config@29.5.0(@types/node@20.12.11)(supports-color@8.1.1): resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -20364,9 +20382,9 @@ packages: optional: true dependencies: '@babel/core': 7.20.12(supports-color@8.1.1) - '@jest/test-sequencer': 29.7.0(@types/node@18.17.15) + '@jest/test-sequencer': 29.7.0(@types/node@20.12.11) '@jest/types': 29.5.0 - '@types/node': 18.17.15 + '@types/node': 20.12.11 babel-jest: 29.7.0(@babel/core@7.20.12)(supports-color@8.1.1) chalk: 4.1.2 ci-info: 3.9.0 @@ -20390,7 +20408,7 @@ packages: - babel-plugin-macros - supports-color - /jest-config@29.7.0(@types/node@17.0.41): + /jest-config@29.7.0(@types/node@18.17.15): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -20403,9 +20421,9 @@ packages: optional: true dependencies: '@babel/core': 7.20.12(supports-color@8.1.1) - '@jest/test-sequencer': 29.7.0(@types/node@17.0.41) + '@jest/test-sequencer': 29.7.0(@types/node@18.17.15) '@jest/types': 29.6.3 - '@types/node': 17.0.41 + '@types/node': 18.17.15 babel-jest: 29.7.0(@babel/core@7.20.12)(supports-color@8.1.1) chalk: 4.1.2 ci-info: 3.9.0 @@ -20430,7 +20448,7 @@ packages: - supports-color dev: true - /jest-config@29.7.0(@types/node@18.17.15): + /jest-config@29.7.0(@types/node@20.12.11): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -20443,9 +20461,9 @@ packages: optional: true dependencies: '@babel/core': 7.20.12(supports-color@8.1.1) - '@jest/test-sequencer': 29.7.0(@types/node@18.17.15) + '@jest/test-sequencer': 29.7.0(@types/node@20.12.11) '@jest/types': 29.6.3 - '@types/node': 18.17.15 + '@types/node': 20.12.11 babel-jest: 29.7.0(@babel/core@7.20.12)(supports-color@8.1.1) chalk: 4.1.2 ci-info: 3.9.0 @@ -20518,7 +20536,7 @@ packages: '@jest/fake-timers': 29.7.0 '@jest/types': 29.5.0 '@types/jsdom': 20.0.1 - '@types/node': 17.0.41 + '@types/node': 20.12.11 jest-mock: 29.7.0 jest-util: 29.7.0 jsdom: 20.0.3 @@ -20534,7 +20552,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.5.0 - '@types/node': 17.0.41 + '@types/node': 20.12.11 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -20545,7 +20563,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 17.0.41 + '@types/node': 20.12.11 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -20564,7 +20582,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.9 - '@types/node': 17.0.41 + '@types/node': 20.12.11 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -20585,7 +20603,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 17.0.41 + '@types/node': 20.12.11 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -20652,7 +20670,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 17.0.41 + '@types/node': 20.12.11 jest-util: 29.7.0 /jest-pnp-resolver@1.2.3(jest-resolve@29.5.0): @@ -20729,10 +20747,10 @@ packages: dependencies: '@jest/console': 29.7.0 '@jest/environment': 29.7.0 - '@jest/test-result': 29.7.0(@types/node@17.0.41) + '@jest/test-result': 29.7.0(@types/node@20.12.11) '@jest/transform': 29.7.0(supports-color@8.1.1) '@jest/types': 29.6.3 - '@types/node': 17.0.41 + '@types/node': 20.12.11 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -20759,13 +20777,13 @@ packages: '@jest/fake-timers': 29.7.0 '@jest/globals': 29.7.0(supports-color@8.1.1) '@jest/source-map': 29.6.3 - '@jest/test-result': 29.7.0(@types/node@17.0.41) + '@jest/test-result': 29.7.0(@types/node@20.12.11) '@jest/transform': 29.7.0(supports-color@8.1.1) '@jest/types': 29.6.3 - '@types/node': 17.0.41 + '@types/node': 20.12.11 chalk: 4.1.2 cjs-module-lexer: 1.2.3 - collect-v8-coverage: 1.0.2(@types/node@17.0.41) + collect-v8-coverage: 1.0.2(@types/node@20.12.11) glob: 7.2.3 graceful-fs: 4.2.11 jest-haste-map: 29.7.0 @@ -20784,7 +20802,7 @@ packages: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 17.0.41 + '@types/node': 20.12.11 graceful-fs: 4.2.11 dev: true @@ -20850,7 +20868,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 17.0.41 + '@types/node': 20.12.11 chalk: 4.1.2 graceful-fs: 4.2.11 is-ci: 2.0.0 @@ -20862,7 +20880,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 17.0.41 + '@types/node': 20.12.11 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -20891,9 +20909,9 @@ packages: resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.7.0(@types/node@17.0.41) + '@jest/test-result': 29.7.0(@types/node@20.12.11) '@jest/types': 29.6.3 - '@types/node': 17.0.41 + '@types/node': 20.12.11 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -20904,7 +20922,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 17.0.41 + '@types/node': 20.12.11 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -20913,7 +20931,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 17.0.41 + '@types/node': 20.12.11 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -20921,7 +20939,7 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 17.0.41 + '@types/node': 20.12.11 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 diff --git a/common/config/subspaces/default/repo-state.json b/common/config/subspaces/default/repo-state.json index 32204326eae..4055baa2d94 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": "4b7734088f9537c4644d58706e7a1e2cbb41b5d3", + "pnpmShrinkwrapHash": "23dcecbac9992d1c115d68c9511191a0d498c80c", "preferredVersionsHash": "ce857ea0536b894ec8f346aaea08cfd85a5af648" } From 6ecdc920dab7431cb7a06263532590b5baadd2a1 Mon Sep 17 00:00:00 2001 From: qun Date: Sat, 11 May 2024 08:54:07 +0000 Subject: [PATCH 02/13] fix some bugs for lockfile-explorer --- apps/lockfile-explorer/src/start.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/lockfile-explorer/src/start.ts b/apps/lockfile-explorer/src/start.ts index 23d4d388d59..a43532d6b54 100644 --- a/apps/lockfile-explorer/src/start.ts +++ b/apps/lockfile-explorer/src/start.ts @@ -106,8 +106,8 @@ function startApp(debugMode: boolean): void { app.get('/api/lockfile', async (req: express.Request, res: express.Response) => { const pnpmLockfileText: string = await FileSystem.readFileAsync(appState.pnpmLockfileLocation); const doc = yaml.load(pnpmLockfileText) as Lockfile; - const { packages } = doc; - if (packages) { + const { packages, lockfileVersion } = doc; + if (packages && lockfileVersion.toString().startsWith('6.')) { const updatedPackages: Lockfile['packages'] = {}; const dependencyPaths = Object.keys(packages); for (const dependencyPath of dependencyPaths) { From 51b86d3b6bf69d5a17e8ff2f58a03843aeea5532 Mon Sep 17 00:00:00 2001 From: qun Date: Sat, 11 May 2024 09:07:26 +0000 Subject: [PATCH 03/13] fix some bugs for lockfile-explorer --- apps/lockfile-explorer/src/start.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/lockfile-explorer/src/start.ts b/apps/lockfile-explorer/src/start.ts index a43532d6b54..9e77e288862 100644 --- a/apps/lockfile-explorer/src/start.ts +++ b/apps/lockfile-explorer/src/start.ts @@ -109,8 +109,7 @@ function startApp(debugMode: boolean): void { const { packages, lockfileVersion } = doc; if (packages && lockfileVersion.toString().startsWith('6.')) { const updatedPackages: Lockfile['packages'] = {}; - const dependencyPaths = Object.keys(packages); - for (const dependencyPath of dependencyPaths) { + for (const dependencyPath in packages) { updatedPackages[convertLockfileV6DepPathToV5DepPath(dependencyPath)] = packages[dependencyPath]; } doc.packages = updatedPackages; From c3aa861745a4125d460cb1fb28f4cd419505a349 Mon Sep 17 00:00:00 2001 From: qun Date: Sat, 11 May 2024 09:22:21 +0000 Subject: [PATCH 04/13] fix some bugs for lockfile-explorer --- apps/lockfile-explorer/src/start.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/lockfile-explorer/src/start.ts b/apps/lockfile-explorer/src/start.ts index 9e77e288862..99f16d81fc2 100644 --- a/apps/lockfile-explorer/src/start.ts +++ b/apps/lockfile-explorer/src/start.ts @@ -110,7 +110,9 @@ function startApp(debugMode: boolean): void { if (packages && lockfileVersion.toString().startsWith('6.')) { const updatedPackages: Lockfile['packages'] = {}; for (const dependencyPath in packages) { - updatedPackages[convertLockfileV6DepPathToV5DepPath(dependencyPath)] = packages[dependencyPath]; + if (Object.prototype.hasOwnProperty.call(packages, dependencyPath)) { + updatedPackages[convertLockfileV6DepPathToV5DepPath(dependencyPath)] = packages[dependencyPath]; + } } doc.packages = updatedPackages; } From ac3e62890ef17e7aaba23c7db3ec6672c575f581 Mon Sep 17 00:00:00 2001 From: qun <68707557+L-Qun@users.noreply.github.com> Date: Tue, 14 May 2024 11:16:40 +0800 Subject: [PATCH 05/13] Update apps/lockfile-explorer/src/start.ts Co-authored-by: Ian Clanton-Thuon --- apps/lockfile-explorer/src/start.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/apps/lockfile-explorer/src/start.ts b/apps/lockfile-explorer/src/start.ts index 99f16d81fc2..9195a226c59 100644 --- a/apps/lockfile-explorer/src/start.ts +++ b/apps/lockfile-explorer/src/start.ts @@ -109,10 +109,8 @@ function startApp(debugMode: boolean): void { const { packages, lockfileVersion } = doc; if (packages && lockfileVersion.toString().startsWith('6.')) { const updatedPackages: Lockfile['packages'] = {}; - for (const dependencyPath in packages) { - if (Object.prototype.hasOwnProperty.call(packages, dependencyPath)) { - updatedPackages[convertLockfileV6DepPathToV5DepPath(dependencyPath)] = packages[dependencyPath]; - } + for (const [dependencyPath, dependency] in Object.entries(packages)) { + updatedPackages[convertLockfileV6DepPathToV5DepPath(dependencyPath)] = dependency; } doc.packages = updatedPackages; } From 2d73af3a6fde5dcb1c90c45aaee209f650757aa4 Mon Sep 17 00:00:00 2001 From: qun Date: Tue, 14 May 2024 03:22:52 +0000 Subject: [PATCH 06/13] fix: move '@pnpm/lockfile-types' to nonbrowser-approved-packages --- common/config/rush/browser-approved-packages.json | 4 ---- common/config/rush/nonbrowser-approved-packages.json | 6 +++++- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/common/config/rush/browser-approved-packages.json b/common/config/rush/browser-approved-packages.json index fc27f749c69..64c497e90f4 100644 --- a/common/config/rush/browser-approved-packages.json +++ b/common/config/rush/browser-approved-packages.json @@ -18,10 +18,6 @@ "name": "@microsoft/rush-sdk", "allowedCategories": [ "tests" ] }, - { - "name": "@pnpm/lockfile-types", - "allowedCategories": [ "libraries" ] - }, { "name": "@radix-ui/colors", "allowedCategories": [ "libraries" ] diff --git a/common/config/rush/nonbrowser-approved-packages.json b/common/config/rush/nonbrowser-approved-packages.json index 9fb98be1e56..333cf6cf95a 100644 --- a/common/config/rush/nonbrowser-approved-packages.json +++ b/common/config/rush/nonbrowser-approved-packages.json @@ -94,6 +94,10 @@ "name": "@pnpm/link-bins", "allowedCategories": [ "libraries" ] }, + { + "name": "@pnpm/lockfile-types", + "allowedCategories": [ "libraries" ] + }, { "name": "@pnpm/logger", "allowedCategories": [ "libraries" ] @@ -917,6 +921,6 @@ { "name": "z-schema", "allowedCategories": [ "libraries" ] - } + }, ] } From 6ec7d1c22f70712bd3a6ac106ab80141289c564b Mon Sep 17 00:00:00 2001 From: qun Date: Tue, 14 May 2024 03:26:36 +0000 Subject: [PATCH 07/13] chore: describe more specifically what's being fixed --- .../@rushstack/lockfile-explorer/main_2024-05-11-08-08.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/changes/@rushstack/lockfile-explorer/main_2024-05-11-08-08.json b/common/changes/@rushstack/lockfile-explorer/main_2024-05-11-08-08.json index e08c449b263..67b13d9f460 100644 --- a/common/changes/@rushstack/lockfile-explorer/main_2024-05-11-08-08.json +++ b/common/changes/@rushstack/lockfile-explorer/main_2024-05-11-08-08.json @@ -2,7 +2,7 @@ "changes": [ { "packageName": "@rushstack/lockfile-explorer", - "comment": "Fix some bugs for the lockfile-explorer tool", + "comment": "Fix some issues when parsing certain lockfile syntaxes", "type": "patch" } ], From 8de41b827b0eb70dec4a6b9750d1f22a30762aff Mon Sep 17 00:00:00 2001 From: qun Date: Tue, 14 May 2024 08:06:24 +0000 Subject: [PATCH 08/13] fix: throw error if lockfile version is not supported --- apps/lockfile-explorer/src/start.ts | 19 +++++++++++++++++-- apps/lockfile-explorer/src/utils.ts | 11 +++++++++-- .../rush/nonbrowser-approved-packages.json | 2 +- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/apps/lockfile-explorer/src/start.ts b/apps/lockfile-explorer/src/start.ts index 9195a226c59..68f0294d9d4 100644 --- a/apps/lockfile-explorer/src/start.ts +++ b/apps/lockfile-explorer/src/start.ts @@ -107,13 +107,28 @@ function startApp(debugMode: boolean): void { const pnpmLockfileText: string = await FileSystem.readFileAsync(appState.pnpmLockfileLocation); const doc = yaml.load(pnpmLockfileText) as Lockfile; const { packages, lockfileVersion } = doc; - if (packages && lockfileVersion.toString().startsWith('6.')) { + + let shrinkwrapFileMajorVersion: number; + if (typeof lockfileVersion === 'string') { + shrinkwrapFileMajorVersion = parseInt(lockfileVersion.substring(0, lockfileVersion.indexOf('.')), 10); + } else if (typeof lockfileVersion === 'number') { + shrinkwrapFileMajorVersion = lockfileVersion; + } else { + shrinkwrapFileMajorVersion = 0; + } + + if (shrinkwrapFileMajorVersion < 5 || shrinkwrapFileMajorVersion > 6) { + throw new Error('The current lockfile version is not supported.'); + } + + if (packages && shrinkwrapFileMajorVersion === 6) { const updatedPackages: Lockfile['packages'] = {}; - for (const [dependencyPath, dependency] in Object.entries(packages)) { + for (const [dependencyPath, dependency] of Object.entries(packages)) { updatedPackages[convertLockfileV6DepPathToV5DepPath(dependencyPath)] = dependency; } doc.packages = updatedPackages; } + res.send({ doc, subspaceName diff --git a/apps/lockfile-explorer/src/utils.ts b/apps/lockfile-explorer/src/utils.ts index 7db486e0756..a6c235bffa1 100644 --- a/apps/lockfile-explorer/src/utils.ts +++ b/apps/lockfile-explorer/src/utils.ts @@ -4,9 +4,16 @@ import * as dp from '@pnpm/dependency-path'; /** - * This operation exactly mirrors the behavior of PNPM's own implementation: - * https://github.com/pnpm/pnpm/blob/73ebfc94e06d783449579cda0c30a40694d210e4/lockfile/lockfile-file/src/experiments/inlineSpecifiersLockfileConverters.ts#L162 + * Example: "" --> "" + * Example: "" --> "" */ +export function convertLockfileV5DepPathToV6DepPath(newDepPath: string): string { + if (newDepPath.startsWith('file:')) return newDepPath; + const index = newDepPath.indexOf('/', 2); + if (newDepPath.includes('(') && index > dp.indexOfPeersSuffix(newDepPath)) return newDepPath; + return `${newDepPath.substring(0, index)}@${newDepPath.substring(index + 1)}`; +} + export function convertLockfileV6DepPathToV5DepPath(newDepPath: string): string { if (!newDepPath.includes('@', 2) || newDepPath.startsWith('file:')) return newDepPath; const index = newDepPath.indexOf('@', newDepPath.indexOf('/@') + 2); diff --git a/common/config/rush/nonbrowser-approved-packages.json b/common/config/rush/nonbrowser-approved-packages.json index 333cf6cf95a..389653fc076 100644 --- a/common/config/rush/nonbrowser-approved-packages.json +++ b/common/config/rush/nonbrowser-approved-packages.json @@ -921,6 +921,6 @@ { "name": "z-schema", "allowedCategories": [ "libraries" ] - }, + } ] } From e0144b3fa01da5c712432c92c77ba42a1c73ccf7 Mon Sep 17 00:00:00 2001 From: qun Date: Tue, 14 May 2024 10:17:25 +0000 Subject: [PATCH 09/13] fix: move rush-lib to dependencies --- apps/lockfile-explorer/package.json | 2 +- .../config/subspaces/default/pnpm-lock.yaml | 195 +++++++++--------- .../config/subspaces/default/repo-state.json | 2 +- 3 files changed, 99 insertions(+), 100 deletions(-) diff --git a/apps/lockfile-explorer/package.json b/apps/lockfile-explorer/package.json index a876ed64829..a4009eee1db 100644 --- a/apps/lockfile-explorer/package.json +++ b/apps/lockfile-explorer/package.json @@ -45,7 +45,6 @@ } }, "devDependencies": { - "@microsoft/rush-lib": "workspace:*", "@rushstack/heft": "workspace:*", "@rushstack/lockfile-explorer-web": "workspace:*", "@types/cors": "~2.8.12", @@ -56,6 +55,7 @@ "@pnpm/lockfile-types": "~6.0.0" }, "dependencies": { + "@microsoft/rush-lib": "workspace:*", "@rushstack/node-core-library": "workspace:*", "@rushstack/terminal": "workspace:*", "cors": "~2.8.5", diff --git a/common/config/subspaces/default/pnpm-lock.yaml b/common/config/subspaces/default/pnpm-lock.yaml index 89f8f95c1bf..337a6b86353 100644 --- a/common/config/subspaces/default/pnpm-lock.yaml +++ b/common/config/subspaces/default/pnpm-lock.yaml @@ -189,6 +189,9 @@ importers: ../../../apps/lockfile-explorer: dependencies: + '@microsoft/rush-lib': + specifier: workspace:* + version: link:../../libraries/rush-lib '@pnpm/dependency-path': specifier: ~2.1.2 version: 2.1.8 @@ -214,9 +217,6 @@ importers: specifier: ~5.1.0 version: 5.1.0 devDependencies: - '@microsoft/rush-lib': - specifier: workspace:* - version: link:../../libraries/rush-lib '@pnpm/lockfile-types': specifier: ~6.0.0 version: 6.0.0 @@ -1853,7 +1853,7 @@ importers: version: 29.5.12 '@types/node': specifier: ts4.9 - version: 20.12.11 + version: 20.12.12 eslint: specifier: ~8.57.0 version: 8.57.0 @@ -8872,7 +8872,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.12.11 + '@types/node': 17.0.41 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -8889,17 +8889,17 @@ packages: dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.5.0(supports-color@8.1.1) - '@jest/test-result': 29.7.0(@types/node@20.12.11) + '@jest/test-result': 29.7.0(@types/node@17.0.41) '@jest/transform': 29.5.0(supports-color@8.1.1) '@jest/types': 29.5.0 - '@types/node': 20.12.11 + '@types/node': 17.0.41 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.5.0(@types/node@20.12.11)(supports-color@8.1.1) + jest-config: 29.5.0(@types/node@17.0.41)(supports-color@8.1.1) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -8931,17 +8931,17 @@ packages: dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0(@types/node@20.12.11) + '@jest/test-result': 29.7.0(@types/node@17.0.41) '@jest/transform': 29.7.0(supports-color@8.1.1) '@jest/types': 29.6.3 - '@types/node': 20.12.11 + '@types/node': 17.0.41 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.12.11) + jest-config: 29.7.0(@types/node@17.0.41) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -8969,7 +8969,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.12.11 + '@types/node': 17.0.41 jest-mock: 29.7.0 /@jest/expect-utils@29.7.0: @@ -8993,7 +8993,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.12.11 + '@types/node': 17.0.41 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -9057,14 +9057,14 @@ packages: dependencies: '@bcoe/v8-coverage': 0.2.3 '@jest/console': 29.7.0 - '@jest/test-result': 29.7.0(@types/node@20.12.11) + '@jest/test-result': 29.7.0(@types/node@17.0.41) '@jest/transform': 29.7.0(supports-color@8.1.1) '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 '@types/istanbul-lib-coverage': 2.0.4 - '@types/node': 20.12.11 + '@types/node': 17.0.41 chalk: 4.1.2 - collect-v8-coverage: 1.0.2(@types/node@20.12.11) + collect-v8-coverage: 1.0.2(@types/node@17.0.41) exit: 0.1.2 glob: 7.2.3 graceful-fs: 4.2.11 @@ -9098,61 +9098,61 @@ packages: callsites: 3.1.0 graceful-fs: 4.2.11 - /@jest/test-result@29.7.0(@types/node@18.17.15): + /@jest/test-result@29.7.0(@types/node@17.0.41): resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/console': 29.7.0 '@jest/types': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2(@types/node@18.17.15) + collect-v8-coverage: 1.0.2(@types/node@17.0.41) jest-haste-map: 29.7.0 jest-resolve: 29.7.0 transitivePeerDependencies: - '@types/node' - /@jest/test-result@29.7.0(@types/node@20.11.30): + /@jest/test-result@29.7.0(@types/node@18.17.15): resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/console': 29.7.0 '@jest/types': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2(@types/node@20.11.30) + collect-v8-coverage: 1.0.2(@types/node@18.17.15) jest-haste-map: 29.7.0 jest-resolve: 29.7.0 transitivePeerDependencies: - '@types/node' - /@jest/test-result@29.7.0(@types/node@20.12.11): + /@jest/test-result@29.7.0(@types/node@20.11.30): resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/console': 29.7.0 '@jest/types': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2(@types/node@20.12.11) + collect-v8-coverage: 1.0.2(@types/node@20.11.30) jest-haste-map: 29.7.0 jest-resolve: 29.7.0 transitivePeerDependencies: - '@types/node' - /@jest/test-sequencer@29.7.0(@types/node@18.17.15): + /@jest/test-sequencer@29.7.0(@types/node@17.0.41): resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.7.0(@types/node@18.17.15) + '@jest/test-result': 29.7.0(@types/node@17.0.41) graceful-fs: 4.2.11 jest-haste-map: 29.7.0 slash: 3.0.0 transitivePeerDependencies: - '@types/node' - /@jest/test-sequencer@29.7.0(@types/node@20.12.11): + /@jest/test-sequencer@29.7.0(@types/node@18.17.15): resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.7.0(@types/node@20.12.11) + '@jest/test-result': 29.7.0(@types/node@18.17.15) graceful-fs: 4.2.11 jest-haste-map: 29.7.0 slash: 3.0.0 @@ -9232,7 +9232,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.12.11 + '@types/node': 17.0.41 '@types/yargs': 15.0.19 chalk: 4.1.2 dev: true @@ -9255,7 +9255,7 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.12.11 + '@types/node': 20.12.12 '@types/yargs': 17.0.32 chalk: 4.1.2 @@ -12480,12 +12480,12 @@ packages: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 20.12.11 + '@types/node': 17.0.41 /@types/bonjour@3.5.13: resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} dependencies: - '@types/node': 20.12.11 + '@types/node': 17.0.41 dev: false /@types/cacheable-request@6.0.3: @@ -12493,7 +12493,7 @@ packages: dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 20.12.11 + '@types/node': 17.0.41 '@types/responselike': 1.0.3 /@types/cli-table@0.3.0: @@ -12526,13 +12526,13 @@ packages: resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} dependencies: '@types/express-serve-static-core': 4.17.43 - '@types/node': 20.12.11 + '@types/node': 17.0.41 dev: false /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 20.12.11 + '@types/node': 17.0.41 /@types/cors@2.8.17: resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} @@ -12566,7 +12566,7 @@ packages: /@types/express-serve-static-core@4.17.43: resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==} dependencies: - '@types/node': 20.12.11 + '@types/node': 17.0.41 '@types/qs': 6.9.13 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -12582,7 +12582,7 @@ packages: /@types/fs-extra@7.0.0: resolution: {integrity: sha512-ndoMMbGyuToTy4qB6Lex/inR98nPiNHacsgMPvy+zqMLgSxbt8VtWpDArpGp69h1fEDQHn1KB+9DWD++wgbwYA==} dependencies: - '@types/node': 20.12.11 + '@types/node': 17.0.41 dev: true /@types/glob@7.1.1: @@ -12590,13 +12590,13 @@ packages: dependencies: '@types/events': 3.0.3 '@types/minimatch': 3.0.5 - '@types/node': 20.12.11 + '@types/node': 17.0.41 dev: true /@types/graceful-fs@4.1.9: resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: - '@types/node': 20.12.11 + '@types/node': 17.0.41 /@types/hast@2.3.10: resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} @@ -12630,7 +12630,7 @@ packages: /@types/http-proxy@1.17.14: resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} dependencies: - '@types/node': 20.12.11 + '@types/node': 17.0.41 /@types/inquirer@7.3.1: resolution: {integrity: sha512-osD38QVIfcdgsPCT0V3lD7eH0OFurX71Jft18bZrsVQWVRt6TuxRzlr0GJLrxoHZR2V5ph7/qP8se/dcnI7o0g==} @@ -12694,7 +12694,7 @@ packages: /@types/jsdom@20.0.1: resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} dependencies: - '@types/node': 20.12.11 + '@types/node': 17.0.41 '@types/tough-cookie': 4.0.5 parse5: 7.1.2 @@ -12708,12 +12708,12 @@ packages: /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 20.12.11 + '@types/node': 17.0.41 /@types/loader-utils@1.1.3: resolution: {integrity: sha512-euKGFr2oCB3ASBwG39CYJMR3N9T0nanVqXdiH7Zu/Nqddt6SmFRxytq/i2w9LQYNQekEtGBz+pE3qG6fQTNvRg==} dependencies: - '@types/node': 20.12.11 + '@types/node': 17.0.41 '@types/webpack': 4.41.32 dev: true @@ -12754,19 +12754,19 @@ packages: /@types/node-fetch@2.6.2: resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} dependencies: - '@types/node': 20.12.11 + '@types/node': 17.0.41 form-data: 3.0.1 /@types/node-forge@1.0.4: resolution: {integrity: sha512-UpX8LTRrarEZPQvQqF5/6KQAqZolOVckH7txWdlsWIJrhBFFtwEUTcqeDouhrJl6t0F7Wg5cyUOAqqF8a6hheg==} dependencies: - '@types/node': 20.12.11 + '@types/node': 17.0.41 dev: true /@types/node-forge@1.3.11: resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} dependencies: - '@types/node': 20.12.11 + '@types/node': 17.0.41 dev: false /@types/node@14.0.1: @@ -12779,7 +12779,6 @@ packages: /@types/node@17.0.41: resolution: {integrity: sha512-xA6drNNeqb5YyV5fO3OAEsnXLfO7uF0whiOfPTz5AeDo8KeZFmODKnvwPymMNO8qE/an8pVY/O50tig2SQCrGw==} - dev: true /@types/node@18.17.15: resolution: {integrity: sha512-2yrWpBk32tvV/JAd3HNHWuZn/VDN1P+72hWirHnvsvTGSqbANi+kSeuQR9yAHnbvaBvHDsoTdXV0Fe+iRtHLKA==} @@ -12789,8 +12788,8 @@ packages: dependencies: undici-types: 5.26.5 - /@types/node@20.12.11: - resolution: {integrity: sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw==} + /@types/node@20.12.12: + resolution: {integrity: sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==} dependencies: undici-types: 5.26.5 @@ -12808,7 +12807,7 @@ packages: /@types/npmlog@4.1.6: resolution: {integrity: sha512-0l3z16vnlJGl2Mi/rgJFrdwfLZ4jfNYgE6ZShEpjqhHuGTqdEzNles03NpYHwUMVYZa+Tj46UxKIEpE78lQ3DQ==} dependencies: - '@types/node': 20.12.11 + '@types/node': 17.0.41 dev: true /@types/overlayscrollbars@1.12.5: @@ -12876,7 +12875,7 @@ packages: /@types/responselike@1.0.3: resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} dependencies: - '@types/node': 20.12.11 + '@types/node': 17.0.41 /@types/retry@0.12.0: resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} @@ -12892,7 +12891,7 @@ packages: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 20.12.11 + '@types/node': 17.0.41 /@types/serialize-javascript@5.0.2: resolution: {integrity: sha512-BRLlwZzRoZukGaBtcUxkLsZsQfWZpvog6MZk3PWQO9Q6pXmXFzjU5iGzZ+943evp6tkkbN98N1Z31KT0UG1yRw==} @@ -12909,12 +12908,12 @@ packages: dependencies: '@types/http-errors': 2.0.4 '@types/mime': 3.0.4 - '@types/node': 20.12.11 + '@types/node': 17.0.41 /@types/sockjs@0.3.36: resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} dependencies: - '@types/node': 20.12.11 + '@types/node': 17.0.41 dev: false /@types/source-list-map@0.1.6: @@ -12923,7 +12922,7 @@ packages: /@types/ssri@7.1.5: resolution: {integrity: sha512-odD/56S3B51liILSk5aXJlnYt99S6Rt9EFDDqGtJM26rKHApHcwyU/UoYHrzKkdkHMAIquGWCuHtQTbes+FRQw==} dependencies: - '@types/node': 20.12.11 + '@types/node': 17.0.41 dev: true /@types/stack-utils@2.0.3: @@ -12943,14 +12942,14 @@ packages: /@types/tar@6.1.6: resolution: {integrity: sha512-HQ06kiiDXz9uqtmE9ksQUn1ovcPr1gGV9EgaCWo6FGYKD0onNBCetBzL0kfcS8Kbj1EFxJWY9jL2W4ZvvtGI8Q==} dependencies: - '@types/node': 20.12.11 + '@types/node': 17.0.41 minipass: 4.2.8 dev: true /@types/through@0.0.33: resolution: {integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==} dependencies: - '@types/node': 20.12.11 + '@types/node': 17.0.41 dev: true /@types/tough-cookie@4.0.5: @@ -12959,7 +12958,7 @@ packages: /@types/tunnel@0.0.3: resolution: {integrity: sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==} dependencies: - '@types/node': 20.12.11 + '@types/node': 17.0.41 dev: false /@types/uglify-js@3.17.5: @@ -13003,14 +13002,14 @@ packages: /@types/webpack-sources@1.4.2: resolution: {integrity: sha512-77T++JyKow4BQB/m9O96n9d/UUHWLQHlcqXb9Vsf4F1+wKNrrlWNFPDLKNT92RJnCSL6CieTc+NDXtCVZswdTw==} dependencies: - '@types/node': 20.12.11 + '@types/node': 17.0.41 '@types/source-list-map': 0.1.6 source-map: 0.7.4 /@types/webpack@4.41.32: resolution: {integrity: sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg==} dependencies: - '@types/node': 20.12.11 + '@types/node': 17.0.41 '@types/tapable': 1.0.6 '@types/uglify-js': 3.17.5 '@types/webpack-sources': 1.4.2 @@ -13020,7 +13019,7 @@ packages: /@types/ws@8.5.5: resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} dependencies: - '@types/node': 20.12.11 + '@types/node': 17.0.41 /@types/xmldoc@1.1.4: resolution: {integrity: sha512-a/ONNCf9itbmzEz1ohx0Fv5TLJzXIPQTapxFu+DlYlDtn9UcAa1OhnrOOMwbU8125hFjrkJKL3qllD7vO5Bivw==} @@ -15588,26 +15587,26 @@ packages: resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==} dev: true - /collect-v8-coverage@1.0.2(@types/node@18.17.15): + /collect-v8-coverage@1.0.2(@types/node@17.0.41): resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} peerDependencies: '@types/node': '>=12' dependencies: - '@types/node': 18.17.15 + '@types/node': 17.0.41 - /collect-v8-coverage@1.0.2(@types/node@20.11.30): + /collect-v8-coverage@1.0.2(@types/node@18.17.15): resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} peerDependencies: '@types/node': '>=12' dependencies: - '@types/node': 20.11.30 + '@types/node': 18.17.15 - /collect-v8-coverage@1.0.2(@types/node@20.12.11): + /collect-v8-coverage@1.0.2(@types/node@20.11.30): resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} peerDependencies: '@types/node': '>=12' dependencies: - '@types/node': 20.12.11 + '@types/node': 20.11.30 /collection-visit@1.0.0: resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} @@ -20280,9 +20279,9 @@ packages: dependencies: '@jest/environment': 29.7.0 '@jest/expect': 29.7.0(supports-color@8.1.1) - '@jest/test-result': 29.7.0(@types/node@20.12.11) + '@jest/test-result': 29.7.0(@types/node@17.0.41) '@jest/types': 29.6.3 - '@types/node': 20.12.11 + '@types/node': 17.0.41 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.1 @@ -20330,7 +20329,7 @@ packages: - ts-node dev: true - /jest-config@29.5.0(@types/node@18.17.15)(supports-color@8.1.1): + /jest-config@29.5.0(@types/node@17.0.41)(supports-color@8.1.1): resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -20343,9 +20342,9 @@ packages: optional: true dependencies: '@babel/core': 7.20.12(supports-color@8.1.1) - '@jest/test-sequencer': 29.7.0(@types/node@18.17.15) + '@jest/test-sequencer': 29.7.0(@types/node@17.0.41) '@jest/types': 29.5.0 - '@types/node': 18.17.15 + '@types/node': 17.0.41 babel-jest: 29.7.0(@babel/core@7.20.12)(supports-color@8.1.1) chalk: 4.1.2 ci-info: 3.9.0 @@ -20369,7 +20368,7 @@ packages: - babel-plugin-macros - supports-color - /jest-config@29.5.0(@types/node@20.12.11)(supports-color@8.1.1): + /jest-config@29.5.0(@types/node@18.17.15)(supports-color@8.1.1): resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -20382,9 +20381,9 @@ packages: optional: true dependencies: '@babel/core': 7.20.12(supports-color@8.1.1) - '@jest/test-sequencer': 29.7.0(@types/node@20.12.11) + '@jest/test-sequencer': 29.7.0(@types/node@18.17.15) '@jest/types': 29.5.0 - '@types/node': 20.12.11 + '@types/node': 18.17.15 babel-jest: 29.7.0(@babel/core@7.20.12)(supports-color@8.1.1) chalk: 4.1.2 ci-info: 3.9.0 @@ -20408,7 +20407,7 @@ packages: - babel-plugin-macros - supports-color - /jest-config@29.7.0(@types/node@18.17.15): + /jest-config@29.7.0(@types/node@17.0.41): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -20421,9 +20420,9 @@ packages: optional: true dependencies: '@babel/core': 7.20.12(supports-color@8.1.1) - '@jest/test-sequencer': 29.7.0(@types/node@18.17.15) + '@jest/test-sequencer': 29.7.0(@types/node@17.0.41) '@jest/types': 29.6.3 - '@types/node': 18.17.15 + '@types/node': 17.0.41 babel-jest: 29.7.0(@babel/core@7.20.12)(supports-color@8.1.1) chalk: 4.1.2 ci-info: 3.9.0 @@ -20448,7 +20447,7 @@ packages: - supports-color dev: true - /jest-config@29.7.0(@types/node@20.12.11): + /jest-config@29.7.0(@types/node@18.17.15): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -20461,9 +20460,9 @@ packages: optional: true dependencies: '@babel/core': 7.20.12(supports-color@8.1.1) - '@jest/test-sequencer': 29.7.0(@types/node@20.12.11) + '@jest/test-sequencer': 29.7.0(@types/node@18.17.15) '@jest/types': 29.6.3 - '@types/node': 20.12.11 + '@types/node': 18.17.15 babel-jest: 29.7.0(@babel/core@7.20.12)(supports-color@8.1.1) chalk: 4.1.2 ci-info: 3.9.0 @@ -20536,7 +20535,7 @@ packages: '@jest/fake-timers': 29.7.0 '@jest/types': 29.5.0 '@types/jsdom': 20.0.1 - '@types/node': 20.12.11 + '@types/node': 17.0.41 jest-mock: 29.7.0 jest-util: 29.7.0 jsdom: 20.0.3 @@ -20552,7 +20551,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.5.0 - '@types/node': 20.12.11 + '@types/node': 17.0.41 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -20563,7 +20562,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.12.11 + '@types/node': 17.0.41 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -20582,7 +20581,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.9 - '@types/node': 20.12.11 + '@types/node': 17.0.41 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -20603,7 +20602,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 20.12.11 + '@types/node': 17.0.41 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -20670,7 +20669,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.12.11 + '@types/node': 17.0.41 jest-util: 29.7.0 /jest-pnp-resolver@1.2.3(jest-resolve@29.5.0): @@ -20747,10 +20746,10 @@ packages: dependencies: '@jest/console': 29.7.0 '@jest/environment': 29.7.0 - '@jest/test-result': 29.7.0(@types/node@20.12.11) + '@jest/test-result': 29.7.0(@types/node@17.0.41) '@jest/transform': 29.7.0(supports-color@8.1.1) '@jest/types': 29.6.3 - '@types/node': 20.12.11 + '@types/node': 17.0.41 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -20777,13 +20776,13 @@ packages: '@jest/fake-timers': 29.7.0 '@jest/globals': 29.7.0(supports-color@8.1.1) '@jest/source-map': 29.6.3 - '@jest/test-result': 29.7.0(@types/node@20.12.11) + '@jest/test-result': 29.7.0(@types/node@17.0.41) '@jest/transform': 29.7.0(supports-color@8.1.1) '@jest/types': 29.6.3 - '@types/node': 20.12.11 + '@types/node': 17.0.41 chalk: 4.1.2 cjs-module-lexer: 1.2.3 - collect-v8-coverage: 1.0.2(@types/node@20.12.11) + collect-v8-coverage: 1.0.2(@types/node@17.0.41) glob: 7.2.3 graceful-fs: 4.2.11 jest-haste-map: 29.7.0 @@ -20802,7 +20801,7 @@ packages: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 20.12.11 + '@types/node': 17.0.41 graceful-fs: 4.2.11 dev: true @@ -20868,7 +20867,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 20.12.11 + '@types/node': 17.0.41 chalk: 4.1.2 graceful-fs: 4.2.11 is-ci: 2.0.0 @@ -20880,7 +20879,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.12.11 + '@types/node': 20.12.12 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -20909,9 +20908,9 @@ packages: resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.7.0(@types/node@20.12.11) + '@jest/test-result': 29.7.0(@types/node@17.0.41) '@jest/types': 29.6.3 - '@types/node': 20.12.11 + '@types/node': 17.0.41 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -20922,7 +20921,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.12.11 + '@types/node': 17.0.41 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -20931,7 +20930,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.12.11 + '@types/node': 17.0.41 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -20939,7 +20938,7 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.12.11 + '@types/node': 17.0.41 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 diff --git a/common/config/subspaces/default/repo-state.json b/common/config/subspaces/default/repo-state.json index 4055baa2d94..a011dcdc511 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": "23dcecbac9992d1c115d68c9511191a0d498c80c", + "pnpmShrinkwrapHash": "fdb1015454ffa0bac21eeff77ab0314887083c7e", "preferredVersionsHash": "ce857ea0536b894ec8f346aaea08cfd85a5af648" } From 35fb928fc6912bc9f74d91b62090a6b8b5949aea Mon Sep 17 00:00:00 2001 From: qun Date: Tue, 14 May 2024 11:15:02 +0000 Subject: [PATCH 10/13] chore: remove useless logic --- apps/lockfile-explorer/src/utils.ts | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/apps/lockfile-explorer/src/utils.ts b/apps/lockfile-explorer/src/utils.ts index a6c235bffa1..9f5c5f60af4 100644 --- a/apps/lockfile-explorer/src/utils.ts +++ b/apps/lockfile-explorer/src/utils.ts @@ -3,17 +3,6 @@ import * as dp from '@pnpm/dependency-path'; -/** - * Example: "" --> "" - * Example: "" --> "" - */ -export function convertLockfileV5DepPathToV6DepPath(newDepPath: string): string { - if (newDepPath.startsWith('file:')) return newDepPath; - const index = newDepPath.indexOf('/', 2); - if (newDepPath.includes('(') && index > dp.indexOfPeersSuffix(newDepPath)) return newDepPath; - return `${newDepPath.substring(0, index)}@${newDepPath.substring(index + 1)}`; -} - export function convertLockfileV6DepPathToV5DepPath(newDepPath: string): string { if (!newDepPath.includes('@', 2) || newDepPath.startsWith('file:')) return newDepPath; const index = newDepPath.indexOf('@', newDepPath.indexOf('/@') + 2); From 6856ee236a53c3745aa1e44f103b7404c54e33d1 Mon Sep 17 00:00:00 2001 From: qun Date: Tue, 14 May 2024 23:38:26 +0000 Subject: [PATCH 11/13] fix: resolve comments --- apps/lockfile-explorer/src/start.ts | 8 ++++++-- libraries/rush-lib/src/logic/pnpm/PnpmShrinkwrapFile.ts | 7 ++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/apps/lockfile-explorer/src/start.ts b/apps/lockfile-explorer/src/start.ts index 68f0294d9d4..205bab99aa0 100644 --- a/apps/lockfile-explorer/src/start.ts +++ b/apps/lockfile-explorer/src/start.ts @@ -110,9 +110,13 @@ function startApp(debugMode: boolean): void { let shrinkwrapFileMajorVersion: number; if (typeof lockfileVersion === 'string') { - shrinkwrapFileMajorVersion = parseInt(lockfileVersion.substring(0, lockfileVersion.indexOf('.')), 10); + const isDotIncluded: boolean = lockfileVersion.includes('.'); + shrinkwrapFileMajorVersion = parseInt( + lockfileVersion.substring(0, isDotIncluded ? lockfileVersion.indexOf('.') : undefined), + 10 + ); } else if (typeof lockfileVersion === 'number') { - shrinkwrapFileMajorVersion = lockfileVersion; + shrinkwrapFileMajorVersion = Math.floor(lockfileVersion); } else { shrinkwrapFileMajorVersion = 0; } diff --git a/libraries/rush-lib/src/logic/pnpm/PnpmShrinkwrapFile.ts b/libraries/rush-lib/src/logic/pnpm/PnpmShrinkwrapFile.ts index 53c93c72574..1341454af49 100644 --- a/libraries/rush-lib/src/logic/pnpm/PnpmShrinkwrapFile.ts +++ b/libraries/rush-lib/src/logic/pnpm/PnpmShrinkwrapFile.ts @@ -277,8 +277,13 @@ export class PnpmShrinkwrapFile extends BaseShrinkwrapFile { lockfileVersion.substring(0, lockfileVersion.indexOf('.')), 10 ); + const isDotIncluded: boolean = lockfileVersion.includes('.'); + this.shrinkwrapFileMajorVersion = parseInt( + lockfileVersion.substring(0, isDotIncluded ? lockfileVersion.indexOf('.') : undefined), + 10 + ); } else if (typeof lockfileVersion === 'number') { - this.shrinkwrapFileMajorVersion = lockfileVersion; + this.shrinkwrapFileMajorVersion = Math.floor(lockfileVersion); } else { this.shrinkwrapFileMajorVersion = 0; } From f647852a953b38ac60f97ce5fc36c63fc8d5140e Mon Sep 17 00:00:00 2001 From: qun Date: Tue, 14 May 2024 23:39:05 +0000 Subject: [PATCH 12/13] fix: resolve comments --- libraries/rush-lib/src/logic/pnpm/PnpmShrinkwrapFile.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/libraries/rush-lib/src/logic/pnpm/PnpmShrinkwrapFile.ts b/libraries/rush-lib/src/logic/pnpm/PnpmShrinkwrapFile.ts index 1341454af49..4338a1220f1 100644 --- a/libraries/rush-lib/src/logic/pnpm/PnpmShrinkwrapFile.ts +++ b/libraries/rush-lib/src/logic/pnpm/PnpmShrinkwrapFile.ts @@ -273,10 +273,6 @@ export class PnpmShrinkwrapFile extends BaseShrinkwrapFile { // Normalize the data const lockfileVersion: string | number | undefined = shrinkwrapJson.lockfileVersion; if (typeof lockfileVersion === 'string') { - this.shrinkwrapFileMajorVersion = parseInt( - lockfileVersion.substring(0, lockfileVersion.indexOf('.')), - 10 - ); const isDotIncluded: boolean = lockfileVersion.includes('.'); this.shrinkwrapFileMajorVersion = parseInt( lockfileVersion.substring(0, isDotIncluded ? lockfileVersion.indexOf('.') : undefined), From 5afbebceb2d847d26fed5ec600b2c06d73d1a5ab Mon Sep 17 00:00:00 2001 From: qun Date: Tue, 14 May 2024 23:45:46 +0000 Subject: [PATCH 13/13] chore: rush change --- .../changes/@microsoft/rush/main_2024-05-14-23-45.json | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 common/changes/@microsoft/rush/main_2024-05-14-23-45.json diff --git a/common/changes/@microsoft/rush/main_2024-05-14-23-45.json b/common/changes/@microsoft/rush/main_2024-05-14-23-45.json new file mode 100644 index 00000000000..fbabe34c5b2 --- /dev/null +++ b/common/changes/@microsoft/rush/main_2024-05-14-23-45.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@microsoft/rush", + "comment": "Optimize the judgment of shrinkwrap file major version.", + "type": "none" + } + ], + "packageName": "@microsoft/rush" +} \ No newline at end of file