@pnpm/resolving.npm-resolver 1102.1.2 → 1102.1.3
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/CHANGELOG.md +1878 -0
- package/lib/fetch.js +18 -3
- package/package.json +26 -26
package/lib/fetch.js
CHANGED
|
@@ -81,20 +81,31 @@ function consumeTrailingDigits(s, end) {
|
|
|
81
81
|
export async function fetchMetadataFromFromRegistry(fetchOpts, pkgName, { authHeaderValue, etag: cachedEtag, fullMetadata, modified: cachedModified, registry, }) {
|
|
82
82
|
const uri = toUri(pkgName, registry);
|
|
83
83
|
const op = retry.operation(fetchOpts.retry);
|
|
84
|
+
const ifModifiedSince = cachedModified ? new Date(cachedModified).toUTCString() : undefined;
|
|
85
|
+
const hasValidator = Boolean(cachedEtag || ifModifiedSince);
|
|
84
86
|
return new Promise((resolve, reject) => {
|
|
85
87
|
op.attempt(async (attempt) => {
|
|
86
88
|
let response;
|
|
87
89
|
const startTime = Date.now();
|
|
88
90
|
try {
|
|
89
|
-
|
|
91
|
+
const requestOptions = {
|
|
90
92
|
authHeaderValue,
|
|
91
93
|
compress: true,
|
|
92
94
|
fullMetadata,
|
|
93
95
|
ifNoneMatch: cachedEtag,
|
|
94
|
-
ifModifiedSince
|
|
96
|
+
ifModifiedSince,
|
|
95
97
|
retry: fetchOpts.retry,
|
|
96
98
|
timeout: fetchOpts.timeout,
|
|
97
|
-
}
|
|
99
|
+
};
|
|
100
|
+
response = await fetchOpts.fetch(uri, requestOptions);
|
|
101
|
+
if (response.status === 304 && !hasValidator) {
|
|
102
|
+
response = await fetchOpts.fetch(uri, {
|
|
103
|
+
...requestOptions,
|
|
104
|
+
headers: {
|
|
105
|
+
'cache-control': 'no-cache',
|
|
106
|
+
},
|
|
107
|
+
});
|
|
108
|
+
}
|
|
98
109
|
}
|
|
99
110
|
catch (error) { // eslint-disable-line
|
|
100
111
|
// Redact credentials embedded in the URL from the cause as well, not
|
|
@@ -112,6 +123,10 @@ export async function fetchMetadataFromFromRegistry(fetchOpts, pkgName, { authHe
|
|
|
112
123
|
return;
|
|
113
124
|
}
|
|
114
125
|
if (response.status === 304) {
|
|
126
|
+
if (!hasValidator) {
|
|
127
|
+
reject(new PnpmError('META_NOT_MODIFIED_WITHOUT_CACHE', `Registry returned 304 for ${pkgName} without an existing cache to refresh.`));
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
115
130
|
resolve({ notModified: true });
|
|
116
131
|
return;
|
|
117
132
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pnpm/resolving.npm-resolver",
|
|
3
|
-
"version": "1102.1.
|
|
3
|
+
"version": "1102.1.3",
|
|
4
4
|
"description": "Resolver for npm-hosted packages",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pnpm",
|
|
@@ -29,6 +29,23 @@
|
|
|
29
29
|
"!*.map"
|
|
30
30
|
],
|
|
31
31
|
"dependencies": {
|
|
32
|
+
"@pnpm/config.pick-registry-for-package": "1100.0.10",
|
|
33
|
+
"@pnpm/config.version-policy": "1100.1.7",
|
|
34
|
+
"@pnpm/constants": "1100.0.0",
|
|
35
|
+
"@pnpm/core-loggers": "1100.2.2",
|
|
36
|
+
"@pnpm/crypto.hash": "1100.0.1",
|
|
37
|
+
"@pnpm/error": "1100.0.1",
|
|
38
|
+
"@pnpm/fetching.types": "1100.0.2",
|
|
39
|
+
"@pnpm/fs.graceful-fs": "1100.1.0",
|
|
40
|
+
"@pnpm/resolving.jsr-specifier-parser": "1100.0.2",
|
|
41
|
+
"@pnpm/resolving.registry.pkg-metadata-filter": "1100.0.10",
|
|
42
|
+
"@pnpm/resolving.registry.types": "1100.1.4",
|
|
43
|
+
"@pnpm/resolving.resolver-base": "1100.5.2",
|
|
44
|
+
"@pnpm/store.cafs": "1100.1.13",
|
|
45
|
+
"@pnpm/store.index": "1100.2.1",
|
|
46
|
+
"@pnpm/types": "1101.4.0",
|
|
47
|
+
"@pnpm/workspace.range-resolver": "1100.0.2",
|
|
48
|
+
"@pnpm/workspace.spec-parser": "1100.0.0",
|
|
32
49
|
"@zkochan/retry": "^0.2.0",
|
|
33
50
|
"encode-registry": "^3.0.1",
|
|
34
51
|
"lru-cache": "^11.5.0",
|
|
@@ -42,43 +59,26 @@
|
|
|
42
59
|
"semver-utils": "^1.1.4",
|
|
43
60
|
"ssri": "13.0.1",
|
|
44
61
|
"validate-npm-package-name": "7.0.2",
|
|
45
|
-
"version-selector-type": "^3.0.0"
|
|
46
|
-
"@pnpm/config.pick-registry-for-package": "1100.0.9",
|
|
47
|
-
"@pnpm/crypto.hash": "1100.0.1",
|
|
48
|
-
"@pnpm/error": "1100.0.1",
|
|
49
|
-
"@pnpm/config.version-policy": "1100.1.6",
|
|
50
|
-
"@pnpm/fetching.types": "1100.0.2",
|
|
51
|
-
"@pnpm/resolving.registry.pkg-metadata-filter": "1100.0.9",
|
|
52
|
-
"@pnpm/resolving.registry.types": "1100.1.3",
|
|
53
|
-
"@pnpm/resolving.jsr-specifier-parser": "1100.0.2",
|
|
54
|
-
"@pnpm/resolving.resolver-base": "1100.5.1",
|
|
55
|
-
"@pnpm/types": "1101.3.2",
|
|
56
|
-
"@pnpm/fs.graceful-fs": "1100.1.0",
|
|
57
|
-
"@pnpm/workspace.range-resolver": "1100.0.2",
|
|
58
|
-
"@pnpm/store.index": "1100.2.1",
|
|
59
|
-
"@pnpm/workspace.spec-parser": "1100.0.0",
|
|
60
|
-
"@pnpm/store.cafs": "1100.1.12",
|
|
61
|
-
"@pnpm/core-loggers": "1100.2.1",
|
|
62
|
-
"@pnpm/constants": "1100.0.0"
|
|
62
|
+
"version-selector-type": "^3.0.0"
|
|
63
63
|
},
|
|
64
64
|
"peerDependencies": {
|
|
65
65
|
"@pnpm/logger": "^1100.0.0",
|
|
66
|
-
"@pnpm/worker": "^1100.2.
|
|
66
|
+
"@pnpm/worker": "^1100.2.4"
|
|
67
67
|
},
|
|
68
68
|
"devDependencies": {
|
|
69
69
|
"@jest/globals": "30.4.1",
|
|
70
|
+
"@pnpm/logger": "1100.0.0",
|
|
71
|
+
"@pnpm/network.fetch": "1100.1.5",
|
|
72
|
+
"@pnpm/resolving.npm-resolver": "1102.1.3",
|
|
73
|
+
"@pnpm/test-fixtures": "1100.0.0",
|
|
74
|
+
"@pnpm/testing.mock-agent": "1101.0.5",
|
|
70
75
|
"@types/normalize-path": "^3.0.2",
|
|
71
76
|
"@types/ramda": "0.31.1",
|
|
72
77
|
"@types/semver": "7.7.1",
|
|
73
78
|
"@types/ssri": "^7.1.5",
|
|
74
79
|
"@types/validate-npm-package-name": "^4.0.2",
|
|
75
80
|
"load-json-file": "^7.0.1",
|
|
76
|
-
"tempy": "3.0.0"
|
|
77
|
-
"@pnpm/resolving.npm-resolver": "1102.1.2",
|
|
78
|
-
"@pnpm/test-fixtures": "1100.0.0",
|
|
79
|
-
"@pnpm/logger": "1100.0.0",
|
|
80
|
-
"@pnpm/testing.mock-agent": "1101.0.4",
|
|
81
|
-
"@pnpm/network.fetch": "1100.1.4"
|
|
81
|
+
"tempy": "3.0.0"
|
|
82
82
|
},
|
|
83
83
|
"engines": {
|
|
84
84
|
"node": ">=22.13"
|