@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 +21 -2
- package/lib/index.js +64 -8
- package/package.json +19 -18
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 {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
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.
|
|
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
|
|
30
|
-
"@pnpm/
|
|
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/
|
|
33
|
-
"@pnpm/
|
|
34
|
-
"@pnpm/hooks.types": "1100.0.
|
|
35
|
-
"@pnpm/resolving.
|
|
36
|
-
"@pnpm/resolving.
|
|
37
|
-
"@pnpm/resolving.resolver
|
|
38
|
-
"@pnpm/
|
|
39
|
-
"@pnpm/resolving.tarball-resolver": "1100.0
|
|
40
|
-
"@pnpm/
|
|
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.
|
|
47
|
-
"@pnpm/
|
|
48
|
-
"@pnpm/network.fetch": "1100.0.
|
|
49
|
-
"@pnpm/
|
|
50
|
-
"@pnpm/
|
|
51
|
-
"@pnpm/
|
|
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"
|