@pnpm/installing.deps-resolver 1100.0.7 → 1100.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- export declare function replaceVersionInBareSpecifier(bareSpecifier: string, version: string): string;
1
+ export declare function replaceVersionInBareSpecifier(bareSpecifier: string, version: string, namedRegistryPrefixes?: readonly string[]): string;
@@ -1,11 +1,29 @@
1
1
  import semver from 'semver';
2
- export function replaceVersionInBareSpecifier(bareSpecifier, version) {
2
+ export function replaceVersionInBareSpecifier(bareSpecifier, version, namedRegistryPrefixes = []) {
3
3
  if (semver.validRange(bareSpecifier)) {
4
4
  return version;
5
5
  }
6
- if (!bareSpecifier.startsWith('npm:')) {
6
+ let prefix;
7
+ if (bareSpecifier.startsWith('npm:')) {
8
+ prefix = 'npm:';
9
+ }
10
+ else {
11
+ for (const candidate of namedRegistryPrefixes) {
12
+ if (bareSpecifier.startsWith(candidate)) {
13
+ prefix = candidate;
14
+ break;
15
+ }
16
+ }
17
+ }
18
+ if (prefix == null) {
7
19
  return bareSpecifier;
8
20
  }
21
+ // `<prefix>:<version_selector>` paired with a package alias — replace the
22
+ // whole body. Covers both `npm:^1.0.0` and named-registry forms like
23
+ // `gh:^1.0.0`, where the package name comes from the dependency alias.
24
+ if (semver.validRange(bareSpecifier.slice(prefix.length))) {
25
+ return `${prefix}${version}`;
26
+ }
9
27
  const versionDelimiter = bareSpecifier.lastIndexOf('@');
10
28
  if (versionDelimiter === -1 || bareSpecifier.indexOf('/') > versionDelimiter) {
11
29
  return `${bareSpecifier}@${version}`;
@@ -99,6 +99,7 @@ export interface ResolutionContext {
99
99
  nodeVersion?: string;
100
100
  pnpmVersion: string;
101
101
  registries: Registries;
102
+ namedRegistryPrefixes: readonly string[];
102
103
  resolutionMode?: 'highest' | 'time-based' | 'lowest-direct';
103
104
  virtualStoreDir: string;
104
105
  virtualStoreDirMaxLength: number;
@@ -748,7 +748,7 @@ async function resolveDependency(wantedDependency, ctx, options) {
748
748
  try {
749
749
  const calcSpecifier = options.currentDepth === 0;
750
750
  if (!options.update && currentPkg.version && currentPkg.pkgId?.endsWith(`@${currentPkg.version}`) && !calcSpecifier) {
751
- wantedDependency.bareSpecifier = replaceVersionInBareSpecifier(wantedDependency.bareSpecifier, currentPkg.version);
751
+ wantedDependency.bareSpecifier = replaceVersionInBareSpecifier(wantedDependency.bareSpecifier, currentPkg.version, ctx.namedRegistryPrefixes);
752
752
  }
753
753
  pkgResponse = await ctx.storeController.requestPackage(wantedDependency, {
754
754
  allowBuild: ctx.allowBuild,
@@ -1172,6 +1172,7 @@ const NON_EXOTIC_RESOLVED_VIA = new Set([
1172
1172
  'github.com/oven-sh/bun',
1173
1173
  'jsr-registry',
1174
1174
  'local-filesystem',
1175
+ 'named-registry',
1175
1176
  'nodejs.org',
1176
1177
  'npm-registry',
1177
1178
  'workspace',
@@ -82,6 +82,7 @@ export interface ResolveDependenciesOptions {
82
82
  };
83
83
  nodeVersion?: string;
84
84
  registries: Registries;
85
+ namedRegistries?: Record<string, string>;
85
86
  patchedDependencies?: PatchGroupRecord;
86
87
  pnpmVersion: string;
87
88
  preferredVersions?: PreferredVersions;
@@ -2,6 +2,7 @@ import { resolveFromCatalog } from '@pnpm/catalogs.resolver';
2
2
  import { createPackageVersionPolicy } from '@pnpm/config.version-policy';
3
3
  import { PnpmError } from '@pnpm/error';
4
4
  import { globalWarn } from '@pnpm/logger';
5
+ import { BUILTIN_NAMED_REGISTRIES } from '@pnpm/resolving.npm-resolver';
5
6
  import { partition } from 'ramda';
6
7
  import { nextNodeId } from './nextNodeId.js';
7
8
  import { parentIdsContainSequence } from './parentIdsContainSequence.js';
@@ -35,6 +36,10 @@ export async function resolveDependencyTree(importers, opts) {
35
36
  preferWorkspacePackages: opts.preferWorkspacePackages,
36
37
  readPackageHook: opts.hooks.readPackage,
37
38
  registries: opts.registries,
39
+ namedRegistryPrefixes: Array.from(new Set([
40
+ ...Object.keys(BUILTIN_NAMED_REGISTRIES),
41
+ ...Object.keys(opts.namedRegistries ?? {}),
42
+ ])).map((alias) => `${alias}:`),
38
43
  resolvedPkgsById: {},
39
44
  resolvePeersFromWorkspaceRoot: opts.resolvePeersFromWorkspaceRoot,
40
45
  resolutionMode: opts.resolutionMode,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pnpm/installing.deps-resolver",
3
- "version": "1100.0.7",
3
+ "version": "1100.0.9",
4
4
  "description": "Resolves dependency graph of a package",
5
5
  "keywords": [
6
6
  "pnpm",
@@ -36,43 +36,43 @@
36
36
  "ramda": "npm:@pnpm/ramda@0.28.1",
37
37
  "rename-overwrite": "^7.0.1",
38
38
  "safe-promise-defer": "^2.0.0",
39
- "semver": "^7.7.4",
39
+ "semver": "^7.7.2",
40
40
  "semver-range-intersect": "^0.3.1",
41
41
  "version-selector-type": "^3.0.0",
42
- "@pnpm/config.version-policy": "1100.0.2",
43
42
  "@pnpm/constants": "1100.0.0",
44
- "@pnpm/catalogs.resolver": "1100.0.0",
43
+ "@pnpm/config.version-policy": "1100.0.3",
44
+ "@pnpm/core-loggers": "1100.0.2",
45
+ "@pnpm/deps.graph-hasher": "1100.1.5",
46
+ "@pnpm/deps.path": "1100.0.3",
45
47
  "@pnpm/catalogs.types": "1100.0.0",
46
- "@pnpm/core-loggers": "1100.0.1",
47
- "@pnpm/deps.graph-hasher": "1100.1.4",
48
- "@pnpm/deps.peer-range": "1100.0.1",
49
48
  "@pnpm/error": "1100.0.0",
50
- "@pnpm/fetching.pick-fetcher": "1100.0.5",
51
- "@pnpm/lockfile.types": "1100.0.4",
52
- "@pnpm/hooks.types": "1100.0.5",
53
- "@pnpm/patching.config": "1100.0.2",
54
- "@pnpm/lockfile.utils": "1100.0.6",
55
- "@pnpm/pkg-manifest.reader": "1100.0.2",
56
- "@pnpm/resolving.npm-resolver": "1101.0.2",
57
- "@pnpm/pkg-manifest.utils": "1100.1.1",
49
+ "@pnpm/fetching.pick-fetcher": "1100.0.6",
50
+ "@pnpm/catalogs.resolver": "1100.0.0",
51
+ "@pnpm/lockfile.pruner": "1100.0.5",
52
+ "@pnpm/lockfile.types": "1100.0.5",
53
+ "@pnpm/lockfile.preferred-versions": "1100.0.8",
54
+ "@pnpm/lockfile.utils": "1100.0.7",
55
+ "@pnpm/patching.config": "1100.0.3",
56
+ "@pnpm/hooks.types": "1100.0.6",
58
57
  "@pnpm/patching.types": "1100.0.0",
59
- "@pnpm/lockfile.preferred-versions": "1100.0.7",
60
- "@pnpm/resolving.resolver-base": "1100.1.2",
58
+ "@pnpm/deps.peer-range": "1100.0.1",
59
+ "@pnpm/pkg-manifest.utils": "1100.1.2",
60
+ "@pnpm/resolving.npm-resolver": "1101.1.0",
61
+ "@pnpm/pkg-manifest.reader": "1100.0.3",
62
+ "@pnpm/types": "1101.1.0",
61
63
  "@pnpm/workspace.spec-parser": "1100.0.0",
62
- "@pnpm/types": "1101.0.0",
63
- "@pnpm/store.controller-types": "1100.0.5",
64
- "@pnpm/deps.path": "1100.0.2",
65
- "@pnpm/lockfile.pruner": "1100.0.4"
64
+ "@pnpm/store.controller-types": "1100.0.6",
65
+ "@pnpm/resolving.resolver-base": "1100.1.3"
66
66
  },
67
67
  "peerDependencies": {
68
- "@pnpm/logger": "^1001.0.1"
68
+ "@pnpm/logger": ">=1001.0.0 <1002.0.0"
69
69
  },
70
70
  "devDependencies": {
71
71
  "@jest/globals": "30.3.0",
72
72
  "@types/normalize-path": "^3.0.2",
73
73
  "@types/ramda": "0.31.1",
74
74
  "@types/semver": "7.7.1",
75
- "@pnpm/installing.deps-resolver": "1100.0.7",
75
+ "@pnpm/installing.deps-resolver": "1100.0.9",
76
76
  "@pnpm/logger": "1100.0.0"
77
77
  },
78
78
  "engines": {