From e46a652939e9be40cd6bb07f57c791c756130f6f Mon Sep 17 00:00:00 2001 From: Zoltan Kochan Date: Wed, 17 Dec 2025 11:24:32 +0100 Subject: [PATCH] fix: the add command should not fail, when blockExoticSubdeps is true (#10327) close #10324 --- .changeset/dirty-cases-scream.md | 6 ++++++ .../metadata-v1.3/localhost+7769/is-number.v8 | Bin 0 -> 11844 bytes .../src/resolveDependencies.ts | 7 ++++--- 3 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 .changeset/dirty-cases-scream.md create mode 100644 __fixtures__/with-git-protocol-dep/cache/metadata-v1.3/localhost+7769/is-number.v8 diff --git a/.changeset/dirty-cases-scream.md b/.changeset/dirty-cases-scream.md new file mode 100644 index 0000000000..77275415ac --- /dev/null +++ b/.changeset/dirty-cases-scream.md @@ -0,0 +1,6 @@ +--- +"@pnpm/resolve-dependencies": patch +"pnpm": patch +--- + +Don't fail on `pnpm add`, when `blockExoticSubdeps` is set to `true` [#10324](https://github.com/pnpm/pnpm/issues/10324). diff --git a/__fixtures__/with-git-protocol-dep/cache/metadata-v1.3/localhost+7769/is-number.v8 b/__fixtures__/with-git-protocol-dep/cache/metadata-v1.3/localhost+7769/is-number.v8 new file mode 100644 index 0000000000000000000000000000000000000000..2ff795d4d7466b26ae9da630aa652acf21156c21 GIT binary patch literal 11844 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 literal 0 HcmV?d00001 diff --git a/pkg-manager/resolve-dependencies/src/resolveDependencies.ts b/pkg-manager/resolve-dependencies/src/resolveDependencies.ts index 01fc07e2a3..6fc299aac4 100644 --- a/pkg-manager/resolve-dependencies/src/resolveDependencies.ts +++ b/pkg-manager/resolve-dependencies/src/resolveDependencies.ts @@ -1390,7 +1390,8 @@ async function resolveDependency ( if ( ctx.blockExoticSubdeps && options.currentDepth > 0 && - !isNonExoticDep(pkgResponse.body.resolvedVia) + pkgResponse.body.resolvedVia != null && // This is already coming from the lockfile, we skip the check in this case for now. Should be fixed later. + isExoticDep(pkgResponse.body.resolvedVia) ) { const error = new PnpmError( 'EXOTIC_SUBDEP', @@ -1807,6 +1808,6 @@ const NON_EXOTIC_RESOLVED_VIA = new Set([ 'workspace', ]) -function isNonExoticDep (resolvedVia: string | undefined): boolean { - return resolvedVia != null && NON_EXOTIC_RESOLVED_VIA.has(resolvedVia) +function isExoticDep (resolvedVia: string): boolean { + return !NON_EXOTIC_RESOLVED_VIA.has(resolvedVia) }