@pnpm/resolving.default-resolver 1100.1.2 → 1100.3.0

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.
package/lib/index.d.ts CHANGED
@@ -5,19 +5,38 @@ import type { FetchFromRegistry, GetAuthHeader } from '@pnpm/fetching.types';
5
5
  import { type CustomResolver } from '@pnpm/hooks.types';
6
6
  import { type GitResolveResult } from '@pnpm/resolving.git-resolver';
7
7
  import { type LocalResolveResult } from '@pnpm/resolving.local-resolver';
8
- import { type JsrResolveResult, type NamedRegistryResolveResult, type NpmResolveResult, type PackageMeta, type PackageMetaCache, type ResolverFactoryOptions, type WorkspaceResolveResult } from '@pnpm/resolving.npm-resolver';
9
- import type { ResolveFunction, ResolveOptions, ResolveResult, WantedDependency } from '@pnpm/resolving.resolver-base';
8
+ import { type CreateNpmResolutionVerifierOptions, type JsrResolveResult, type NamedRegistryResolveResult, type NpmResolveResult, type PackageMeta, type PackageMetaCache, type ResolverFactoryOptions, type WorkspaceResolveResult } from '@pnpm/resolving.npm-resolver';
9
+ import type { LatestInfo, LatestQuery, ResolutionVerifier, ResolveFunction, ResolveOptions, ResolveResult, WantedDependency } from '@pnpm/resolving.resolver-base';
10
10
  import { type TarballResolveResult } from '@pnpm/resolving.tarball-resolver';
11
+ import type { RegistryConfig } from '@pnpm/types';
11
12
  export type { PackageMeta, PackageMetaCache, ResolveFunction, ResolverFactoryOptions, };
12
13
  export interface CustomResolverResolveResult extends ResolveResult {
13
14
  resolvedVia: 'custom-resolver';
14
15
  }
15
16
  export type DefaultResolveResult = NpmResolveResult | JsrResolveResult | NamedRegistryResolveResult | GitResolveResult | LocalResolveResult | TarballResolveResult | WorkspaceResolveResult | NodeRuntimeResolveResult | DenoRuntimeResolveResult | BunRuntimeResolveResult | CustomResolverResolveResult;
16
17
  export type DefaultResolver = (wantedDependency: WantedDependency, opts: ResolveOptions) => Promise<DefaultResolveResult>;
18
+ export type ResolveLatestDispatcher = (query: LatestQuery, opts: ResolveOptions) => Promise<LatestInfo | undefined>;
17
19
  export declare function createResolver(fetchFromRegistry: FetchFromRegistry, getAuthHeader: GetAuthHeader, pnpmOpts: ResolverFactoryOptions & {
18
20
  nodeDownloadMirrors?: Record<string, string>;
19
21
  customResolvers?: CustomResolver[];
20
22
  }): {
21
23
  resolve: DefaultResolver;
24
+ resolveLatest: ResolveLatestDispatcher;
22
25
  clearCache: () => void;
23
26
  };
27
+ export type ResolutionVerifierFactoryOptions = Pick<ResolverFactoryOptions, 'cacheDir' | 'registries' | 'namedRegistries' | 'retry' | 'timeout' | 'fetchWarnTimeoutMs'> & Pick<CreateNpmResolutionVerifierOptions, 'minimumReleaseAge' | 'minimumReleaseAgeStrict' | 'minimumReleaseAgeExclude' | 'ignoreMissingTimeField' | 'trustPolicy' | 'trustPolicyExclude' | 'trustPolicyIgnoreAfter' | 'now'> & {
28
+ configByUri?: Record<string, RegistryConfig>;
29
+ };
30
+ /**
31
+ * Companion to {@link createResolver}. Collects the resolver-specific
32
+ * verifier factories (today: npm) into a list. Returns an empty array
33
+ * when no policy is active — callers can cheaply decide whether to
34
+ * iterate at all by checking `verifiers.length`.
35
+ *
36
+ * Future protocols (jsr, git, attestation, etc.) plug in here by pushing
37
+ * their own `ResolutionVerifier` onto the list. Each verifier handles
38
+ * its own protocol short-circuit inside `verify` (returns `{ ok: true }`
39
+ * for resolutions outside its scope), so dispatch happens naturally at
40
+ * the install side — no combinator needed.
41
+ */
42
+ export declare function createResolutionVerifiers(fetchFromRegistry: FetchFromRegistry, opts: ResolutionVerifierFactoryOptions): ResolutionVerifier[];
package/lib/index.js CHANGED
@@ -1,12 +1,13 @@
1
- import { resolveBunRuntime } from '@pnpm/engine.runtime.bun-resolver';
2
- import { resolveDenoRuntime } from '@pnpm/engine.runtime.deno-resolver';
3
- import { resolveNodeRuntime } from '@pnpm/engine.runtime.node-resolver';
1
+ import { resolveBunRuntime, resolveLatestBunRuntime } from '@pnpm/engine.runtime.bun-resolver';
2
+ import { resolveDenoRuntime, resolveLatestDenoRuntime } from '@pnpm/engine.runtime.deno-resolver';
3
+ import { resolveLatestNodeRuntime, resolveNodeRuntime } from '@pnpm/engine.runtime.node-resolver';
4
4
  import { PnpmError } from '@pnpm/error';
5
5
  import { checkCustomResolverCanResolve } from '@pnpm/hooks.types';
6
- import { createGitResolver } from '@pnpm/resolving.git-resolver';
7
- import { resolveFromLocalPath, resolveFromLocalScheme } from '@pnpm/resolving.local-resolver';
8
- import { createNpmResolver, } from '@pnpm/resolving.npm-resolver';
9
- import { resolveFromTarball } from '@pnpm/resolving.tarball-resolver';
6
+ import { createGetAuthHeaderByURI } from '@pnpm/network.auth-header';
7
+ import { createGitResolver, resolveLatestFromGit } from '@pnpm/resolving.git-resolver';
8
+ import { resolveFromLocalPath, resolveFromLocalScheme, resolveLatestFromLocal } from '@pnpm/resolving.local-resolver';
9
+ import { createNpmResolutionVerifier, createNpmResolver, } from '@pnpm/resolving.npm-resolver';
10
+ import { resolveFromTarball, resolveLatestFromTarball } from '@pnpm/resolving.tarball-resolver';
10
11
  async function resolveFromCustomResolvers(customResolvers, wantedDependency, opts) {
11
12
  if (!customResolvers || customResolvers.length === 0) {
12
13
  return null;
@@ -34,7 +35,7 @@ async function resolveFromCustomResolvers(customResolvers, wantedDependency, opt
34
35
  return null;
35
36
  }
36
37
  export function createResolver(fetchFromRegistry, getAuthHeader, pnpmOpts) {
37
- const { resolveFromNpm, resolveFromJsr, resolveFromNamedRegistry, clearCache } = createNpmResolver(fetchFromRegistry, getAuthHeader, pnpmOpts);
38
+ const { resolveFromNpm, resolveFromJsr, resolveFromNamedRegistry, resolveLatestFromNpm, resolveLatestFromJsr, resolveLatestFromNamedRegistry, clearCache, } = createNpmResolver(fetchFromRegistry, getAuthHeader, pnpmOpts);
38
39
  const resolveFromGit = createGitResolver(pnpmOpts);
39
40
  const localCtx = { preserveAbsolutePaths: pnpmOpts.preserveAbsolutePaths };
40
41
  const _resolveFromLocalScheme = resolveFromLocalScheme.bind(null, localCtx);
@@ -42,6 +43,9 @@ export function createResolver(fetchFromRegistry, getAuthHeader, pnpmOpts) {
42
43
  const _resolveNodeRuntime = resolveNodeRuntime.bind(null, { fetchFromRegistry, offline: pnpmOpts.offline, nodeDownloadMirrors: pnpmOpts.nodeDownloadMirrors });
43
44
  const _resolveDenoRuntime = resolveDenoRuntime.bind(null, { fetchFromRegistry, offline: pnpmOpts.offline, resolveFromNpm });
44
45
  const _resolveBunRuntime = resolveBunRuntime.bind(null, { fetchFromRegistry, offline: pnpmOpts.offline, resolveFromNpm });
46
+ const _resolveLatestNodeRuntime = resolveLatestNodeRuntime.bind(null, { fetchFromRegistry, nodeDownloadMirrors: pnpmOpts.nodeDownloadMirrors });
47
+ const _resolveLatestDenoRuntime = resolveLatestDenoRuntime.bind(null, { resolveFromNpm });
48
+ const _resolveLatestBunRuntime = resolveLatestBunRuntime.bind(null, { resolveFromNpm });
45
49
  const _resolveFromCustomResolvers = pnpmOpts.customResolvers
46
50
  ? resolveFromCustomResolvers.bind(null, pnpmOpts.customResolvers)
47
51
  : null;
@@ -73,7 +77,59 @@ export function createResolver(fetchFromRegistry, getAuthHeader, pnpmOpts) {
73
77
  }
74
78
  return resolution;
75
79
  },
80
+ resolveLatest: async (query, opts) => {
81
+ const info = (await resolveLatestFromNpm(query, opts)) ??
82
+ (await resolveLatestFromJsr(query, opts)) ??
83
+ (await resolveLatestFromGit(query)) ??
84
+ (await resolveLatestFromTarball(query)) ??
85
+ (await resolveLatestFromLocal(query)) ??
86
+ (await _resolveLatestNodeRuntime(query, opts)) ??
87
+ (await _resolveLatestDenoRuntime(query, opts)) ??
88
+ (await _resolveLatestBunRuntime(query, opts)) ??
89
+ (await resolveLatestFromNamedRegistry(query, opts));
90
+ return info;
91
+ },
76
92
  clearCache,
77
93
  };
78
94
  }
95
+ /**
96
+ * Companion to {@link createResolver}. Collects the resolver-specific
97
+ * verifier factories (today: npm) into a list. Returns an empty array
98
+ * when no policy is active — callers can cheaply decide whether to
99
+ * iterate at all by checking `verifiers.length`.
100
+ *
101
+ * Future protocols (jsr, git, attestation, etc.) plug in here by pushing
102
+ * their own `ResolutionVerifier` onto the list. Each verifier handles
103
+ * its own protocol short-circuit inside `verify` (returns `{ ok: true }`
104
+ * for resolutions outside its scope), so dispatch happens naturally at
105
+ * the install side — no combinator needed.
106
+ */
107
+ export function createResolutionVerifiers(fetchFromRegistry, opts) {
108
+ const fetchOpts = {
109
+ fetch: fetchFromRegistry,
110
+ retry: opts.retry ?? {},
111
+ timeout: opts.timeout ?? 60_000,
112
+ fetchWarnTimeoutMs: opts.fetchWarnTimeoutMs ?? 10_000,
113
+ };
114
+ const getAuthHeaderValueByURI = createGetAuthHeaderByURI(opts.configByUri ?? {}, opts.registries.default);
115
+ const verifiers = [];
116
+ const npmVerifier = createNpmResolutionVerifier({
117
+ minimumReleaseAge: opts.minimumReleaseAge,
118
+ minimumReleaseAgeStrict: opts.minimumReleaseAgeStrict,
119
+ minimumReleaseAgeExclude: opts.minimumReleaseAgeExclude,
120
+ ignoreMissingTimeField: opts.ignoreMissingTimeField,
121
+ trustPolicy: opts.trustPolicy,
122
+ trustPolicyExclude: opts.trustPolicyExclude,
123
+ trustPolicyIgnoreAfter: opts.trustPolicyIgnoreAfter,
124
+ registries: opts.registries,
125
+ namedRegistries: opts.namedRegistries,
126
+ fetchOpts,
127
+ getAuthHeaderValueByURI,
128
+ cacheDir: opts.cacheDir,
129
+ now: opts.now,
130
+ });
131
+ if (npmVerifier)
132
+ verifiers.push(npmVerifier);
133
+ return verifiers;
134
+ }
79
135
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pnpm/resolving.default-resolver",
3
- "version": "1100.1.2",
3
+ "version": "1100.3.0",
4
4
  "description": "pnpm's default package resolver",
5
5
  "keywords": [
6
6
  "pnpm",
@@ -26,29 +26,30 @@
26
26
  "!*.map"
27
27
  ],
28
28
  "dependencies": {
29
- "@pnpm/engine.runtime.deno-resolver": "1101.0.6",
30
- "@pnpm/fetching.types": "1100.0.1",
29
+ "@pnpm/engine.runtime.deno-resolver": "1101.1.0",
30
+ "@pnpm/engine.runtime.node-resolver": "1101.1.0",
31
31
  "@pnpm/error": "1100.0.0",
32
- "@pnpm/engine.runtime.node-resolver": "1101.0.8",
33
- "@pnpm/resolving.git-resolver": "1100.0.7",
34
- "@pnpm/hooks.types": "1100.0.6",
35
- "@pnpm/resolving.local-resolver": "1101.0.1",
36
- "@pnpm/resolving.npm-resolver": "1101.1.1",
37
- "@pnpm/resolving.resolver-base": "1100.1.3",
38
- "@pnpm/types": "1101.1.0",
39
- "@pnpm/resolving.tarball-resolver": "1100.0.5",
40
- "@pnpm/engine.runtime.bun-resolver": "1101.0.6"
32
+ "@pnpm/fetching.types": "1100.0.1",
33
+ "@pnpm/network.auth-header": "1100.0.3",
34
+ "@pnpm/hooks.types": "1100.0.8",
35
+ "@pnpm/resolving.git-resolver": "1100.1.0",
36
+ "@pnpm/resolving.local-resolver": "1101.1.0",
37
+ "@pnpm/resolving.npm-resolver": "1101.3.0",
38
+ "@pnpm/resolving.resolver-base": "1100.3.0",
39
+ "@pnpm/resolving.tarball-resolver": "1100.1.0",
40
+ "@pnpm/types": "1101.1.1",
41
+ "@pnpm/engine.runtime.bun-resolver": "1101.1.0"
41
42
  },
42
43
  "devDependencies": {
43
44
  "@jest/globals": "30.3.0",
44
45
  "load-json-file": "^7.0.1",
45
46
  "tempy": "3.0.0",
46
- "@pnpm/fetching.fetcher-base": "1100.1.3",
47
- "@pnpm/resolving.default-resolver": "1100.1.2",
48
- "@pnpm/network.fetch": "1100.0.4",
49
- "@pnpm/testing.mock-agent": "1100.0.4",
50
- "@pnpm/fetching.tarball-fetcher": "1101.0.7",
51
- "@pnpm/store.cafs-types": "1100.0.1"
47
+ "@pnpm/fetching.fetcher-base": "1100.1.5",
48
+ "@pnpm/fetching.tarball-fetcher": "1101.0.9",
49
+ "@pnpm/network.fetch": "1100.0.6",
50
+ "@pnpm/resolving.default-resolver": "1100.3.0",
51
+ "@pnpm/store.cafs-types": "1100.0.1",
52
+ "@pnpm/testing.mock-agent": "1100.0.6"
52
53
  },
53
54
  "engines": {
54
55
  "node": ">=22.13"