@pnpm/installing.deps-resolver 1100.0.8 → 1100.0.10

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,
@@ -759,6 +759,7 @@ async function resolveDependency(wantedDependency, ctx, options) {
759
759
  name: currentPkg.name,
760
760
  resolution: currentPkg.resolution,
761
761
  version: currentPkg.version,
762
+ publishedAt: currentPkg.pkgId ? ctx.wantedLockfile.time?.[currentPkg.pkgId] : undefined,
762
763
  }
763
764
  : undefined,
764
765
  expectedPkg: currentPkg,
@@ -1172,6 +1173,7 @@ const NON_EXOTIC_RESOLVED_VIA = new Set([
1172
1173
  'github.com/oven-sh/bun',
1173
1174
  'jsr-registry',
1174
1175
  'local-filesystem',
1176
+ 'named-registry',
1175
1177
  'nodejs.org',
1176
1178
  'npm-registry',
1177
1179
  '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.8",
3
+ "version": "1100.0.10",
4
4
  "description": "Resolves dependency graph of a package",
5
5
  "keywords": [
6
6
  "pnpm",
@@ -36,44 +36,44 @@
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
42
  "@pnpm/catalogs.resolver": "1100.0.0",
43
- "@pnpm/config.version-policy": "1100.0.2",
44
- "@pnpm/constants": "1100.0.0",
45
43
  "@pnpm/catalogs.types": "1100.0.0",
46
- "@pnpm/core-loggers": "1100.0.1",
47
- "@pnpm/deps.path": "1100.0.2",
48
- "@pnpm/deps.graph-hasher": "1100.1.4",
49
- "@pnpm/error": "1100.0.0",
44
+ "@pnpm/config.version-policy": "1100.0.3",
45
+ "@pnpm/deps.path": "1100.0.3",
50
46
  "@pnpm/deps.peer-range": "1100.0.1",
51
- "@pnpm/fetching.pick-fetcher": "1100.0.5",
52
- "@pnpm/hooks.types": "1100.0.5",
53
- "@pnpm/lockfile.preferred-versions": "1100.0.7",
54
- "@pnpm/lockfile.types": "1100.0.4",
55
- "@pnpm/lockfile.utils": "1100.0.6",
56
- "@pnpm/lockfile.pruner": "1100.0.4",
57
- "@pnpm/patching.config": "1100.0.2",
47
+ "@pnpm/fetching.pick-fetcher": "1100.0.6",
48
+ "@pnpm/core-loggers": "1100.0.2",
49
+ "@pnpm/deps.graph-hasher": "1100.1.5",
50
+ "@pnpm/lockfile.pruner": "1100.0.5",
51
+ "@pnpm/lockfile.types": "1100.0.5",
52
+ "@pnpm/lockfile.preferred-versions": "1100.0.9",
53
+ "@pnpm/error": "1100.0.0",
54
+ "@pnpm/lockfile.utils": "1100.0.7",
58
55
  "@pnpm/patching.types": "1100.0.0",
59
- "@pnpm/pkg-manifest.utils": "1100.1.1",
60
- "@pnpm/pkg-manifest.reader": "1100.0.2",
61
- "@pnpm/resolving.npm-resolver": "1101.0.3",
62
- "@pnpm/types": "1101.0.0",
63
- "@pnpm/store.controller-types": "1100.0.5",
64
- "@pnpm/resolving.resolver-base": "1100.1.2",
65
- "@pnpm/workspace.spec-parser": "1100.0.0"
56
+ "@pnpm/pkg-manifest.utils": "1100.1.3",
57
+ "@pnpm/patching.config": "1100.0.3",
58
+ "@pnpm/pkg-manifest.reader": "1100.0.3",
59
+ "@pnpm/resolving.npm-resolver": "1101.1.1",
60
+ "@pnpm/hooks.types": "1100.0.6",
61
+ "@pnpm/store.controller-types": "1100.0.7",
62
+ "@pnpm/workspace.spec-parser": "1100.0.0",
63
+ "@pnpm/types": "1101.1.0",
64
+ "@pnpm/resolving.resolver-base": "1100.1.3",
65
+ "@pnpm/constants": "1100.0.0"
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/logger": "1100.0.0",
76
- "@pnpm/installing.deps-resolver": "1100.0.8"
75
+ "@pnpm/installing.deps-resolver": "1100.0.10",
76
+ "@pnpm/logger": "1100.0.0"
77
77
  },
78
78
  "engines": {
79
79
  "node": ">=22.13"