@pnpm/config.parse-overrides 1100.0.2 → 1100.1.1

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 ADDED
@@ -0,0 +1,253 @@
1
+ # @pnpm/parse-overrides
2
+
3
+ ## 1100.1.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Republished every package: the tarballs published by the v11.13.1 through v11.16.0 releases were missing most of their compiled files due to a packing bug [#13164](https://github.com/pnpm/pnpm/issues/13164).
8
+
9
+ - Updated dependencies:
10
+ - @pnpm/catalogs.resolver@1100.0.1
11
+ - @pnpm/catalogs.types@1100.0.1
12
+ - @pnpm/error@1100.1.0
13
+ - @pnpm/resolving.parse-wanted-dependency@1100.0.2
14
+
15
+ ## 1100.1.0
16
+
17
+ ### Minor Changes
18
+
19
+ - Added a new override selector form with an empty range — `"pkg@": "<version>"` — called a convergence override. It rewrites a dependency edge only when its exact version satisfies the edge's declared range, so compatible consumers converge on one version while incompatible consumers keep their own resolution — now and for any dependent added in the future [#12794](https://github.com/pnpm/pnpm/issues/12794).
20
+
21
+ ```yaml
22
+ overrides:
23
+ "form-data@": 4.0.6
24
+ ```
25
+
26
+ The value must be an exact version. When a full resolution detects that every declared range also admits a newer version, pnpm warns that the override is stale and names the version to converge on. Previously an empty range in an override selector was undocumented and behaved like a bare (unscoped) override.
27
+
28
+ ## 1100.0.2
29
+
30
+ ### Patch Changes
31
+
32
+ - Updated dependencies [852d537]
33
+ - @pnpm/error@1100.0.1
34
+
35
+ ## 1100.0.1
36
+
37
+ ### Patch Changes
38
+
39
+ - 184ce26: Fix the package name in README.md.
40
+ - Updated dependencies [184ce26]
41
+ - @pnpm/resolving.parse-wanted-dependency@1100.0.1
42
+
43
+ ## 1002.0.0
44
+
45
+ ### Major Changes
46
+
47
+ - 491a84f: This package is now pure ESM.
48
+ - 7d2fd48: Node.js v18, 19, 20, and 21 support discontinued.
49
+
50
+ ### Patch Changes
51
+
52
+ - Updated dependencies [491a84f]
53
+ - Updated dependencies [7d2fd48]
54
+ - Updated dependencies [831f574]
55
+ - @pnpm/resolving.parse-wanted-dependency@1002.0.0
56
+ - @pnpm/catalogs.resolver@1001.0.0
57
+ - @pnpm/catalogs.types@1001.0.0
58
+ - @pnpm/error@1001.0.0
59
+
60
+ ## 1001.0.3
61
+
62
+ ### Patch Changes
63
+
64
+ - @pnpm/error@1000.0.5
65
+
66
+ ## 1001.0.2
67
+
68
+ ### Patch Changes
69
+
70
+ - @pnpm/error@1000.0.4
71
+ - @pnpm/catalogs.resolver@1000.0.5
72
+
73
+ ## 1001.0.1
74
+
75
+ ### Patch Changes
76
+
77
+ - @pnpm/error@1000.0.3
78
+ - @pnpm/catalogs.resolver@1000.0.4
79
+
80
+ ## 1001.0.0
81
+
82
+ ### Major Changes
83
+
84
+ - 8a9f3a4: `pref` renamed to `bareSpecifier`.
85
+
86
+ ### Patch Changes
87
+
88
+ - Updated dependencies [8a9f3a4]
89
+ - @pnpm/parse-wanted-dependency@1001.0.0
90
+ - @pnpm/catalogs.resolver@1000.0.3
91
+
92
+ ## 1000.0.2
93
+
94
+ ### Patch Changes
95
+
96
+ - @pnpm/error@1000.0.2
97
+ - @pnpm/catalogs.resolver@1000.0.2
98
+
99
+ ## 1000.0.1
100
+
101
+ ### Patch Changes
102
+
103
+ - @pnpm/error@1000.0.1
104
+ - @pnpm/catalogs.resolver@1000.0.1
105
+
106
+ ## 5.1.2
107
+
108
+ ### Patch Changes
109
+
110
+ - @pnpm/error@6.0.3
111
+ - @pnpm/catalogs.resolver@0.1.2
112
+
113
+ ## 5.1.1
114
+
115
+ ### Patch Changes
116
+
117
+ - @pnpm/error@6.0.2
118
+ - @pnpm/catalogs.resolver@0.1.1
119
+
120
+ ## 5.1.0
121
+
122
+ ### Minor Changes
123
+
124
+ - 0f0e441: Overrides now support catalogs [#8303](https://github.com/pnpm/pnpm/issues/8303).
125
+
126
+ ## 5.0.1
127
+
128
+ ### Patch Changes
129
+
130
+ - Updated dependencies [a7aef51]
131
+ - @pnpm/error@6.0.1
132
+
133
+ ## 5.0.0
134
+
135
+ ### Major Changes
136
+
137
+ - 43cdd87: Node.js v16 support dropped. Use at least Node.js v18.12.
138
+
139
+ ### Patch Changes
140
+
141
+ - Updated dependencies [3ded840]
142
+ - Updated dependencies [43cdd87]
143
+ - @pnpm/error@6.0.0
144
+ - @pnpm/parse-wanted-dependency@6.0.0
145
+
146
+ ## 4.0.2
147
+
148
+ ### Patch Changes
149
+
150
+ - @pnpm/error@5.0.2
151
+
152
+ ## 4.0.1
153
+
154
+ ### Patch Changes
155
+
156
+ - @pnpm/error@5.0.1
157
+
158
+ ## 4.0.0
159
+
160
+ ### Major Changes
161
+
162
+ - eceaa8b8b: Node.js 14 support dropped.
163
+
164
+ ### Patch Changes
165
+
166
+ - Updated dependencies [eceaa8b8b]
167
+ - @pnpm/parse-wanted-dependency@5.0.0
168
+ - @pnpm/error@5.0.0
169
+
170
+ ## 3.0.3
171
+
172
+ ### Patch Changes
173
+
174
+ - Updated dependencies [2ae1c449d]
175
+ - @pnpm/parse-wanted-dependency@4.1.0
176
+
177
+ ## 3.0.2
178
+
179
+ ### Patch Changes
180
+
181
+ - @pnpm/error@4.0.1
182
+
183
+ ## 3.0.1
184
+
185
+ ### Patch Changes
186
+
187
+ - Updated dependencies [a9d59d8bc]
188
+ - @pnpm/parse-wanted-dependency@4.0.1
189
+
190
+ ## 3.0.0
191
+
192
+ ### Major Changes
193
+
194
+ - f884689e0: Require `@pnpm/logger` v5.
195
+
196
+ ### Patch Changes
197
+
198
+ - Updated dependencies [043d988fc]
199
+ - Updated dependencies [f884689e0]
200
+ - @pnpm/error@4.0.0
201
+ - @pnpm/parse-wanted-dependency@4.0.0
202
+
203
+ ## 2.0.4
204
+
205
+ ### Patch Changes
206
+
207
+ - Updated dependencies [e8a631bf0]
208
+ - @pnpm/error@3.1.0
209
+
210
+ ## 2.0.3
211
+
212
+ ### Patch Changes
213
+
214
+ - Updated dependencies [238a165a5]
215
+ - @pnpm/parse-wanted-dependency@3.0.2
216
+
217
+ ## 2.0.2
218
+
219
+ ### Patch Changes
220
+
221
+ - Updated dependencies [42c1ea1c0]
222
+ - @pnpm/parse-wanted-dependency@3.0.1
223
+
224
+ ## 2.0.1
225
+
226
+ ### Patch Changes
227
+
228
+ - @pnpm/error@3.0.1
229
+
230
+ ## 2.0.0
231
+
232
+ ### Major Changes
233
+
234
+ - 542014839: Node.js 12 is not supported.
235
+
236
+ ### Patch Changes
237
+
238
+ - Updated dependencies [542014839]
239
+ - @pnpm/error@3.0.0
240
+ - @pnpm/parse-wanted-dependency@3.0.0
241
+
242
+ ## 1.0.1
243
+
244
+ ### Patch Changes
245
+
246
+ - Updated dependencies [70ba51da9]
247
+ - @pnpm/error@2.1.0
248
+
249
+ ## 1.0.0
250
+
251
+ ### Major Changes
252
+
253
+ - 613211b16: Initial release.
package/lib/index.d.ts CHANGED
@@ -4,6 +4,13 @@ export interface VersionOverride {
4
4
  parentPkg?: PackageSelector;
5
5
  targetPkg: PackageSelector;
6
6
  newBareSpecifier: string;
7
+ /**
8
+ * True for empty-range selectors (`"pkg@"`): a convergence override. It
9
+ * applies to a dependency edge only when `newBareSpecifier` (always an
10
+ * exact version) satisfies the edge's declared range, so applying it can
11
+ * never violate a consumer's range.
12
+ */
13
+ converge?: boolean;
7
14
  }
8
15
  export interface PackageSelector {
9
16
  name: string;
package/lib/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { matchCatalogResolveResult, resolveFromCatalog } from '@pnpm/catalogs.resolver';
2
2
  import { PnpmError } from '@pnpm/error';
3
3
  import { parseWantedDependency } from '@pnpm/resolving.parse-wanted-dependency';
4
+ import semver from 'semver';
4
5
  const DELIMITER_REGEX = /[^ |@]>/;
5
6
  export function parseOverrides(overrides, catalogs) {
6
7
  const _resolveFromCatalog = resolveFromCatalog.bind(null, catalogs ?? {});
@@ -17,13 +18,28 @@ export function parseOverrides(overrides, catalogs) {
17
18
  throw new PnpmError('CATALOG_IN_OVERRIDES', `Could not resolve a catalog in the overrides: ${error.message}`);
18
19
  },
19
20
  });
20
- return {
21
+ const override = {
21
22
  selector,
22
23
  newBareSpecifier: resolvedCatalog ?? newBareSpecifier,
23
24
  ...result,
24
25
  };
26
+ return markConvergeOverride(override);
25
27
  });
26
28
  }
29
+ function markConvergeOverride(override) {
30
+ const emptyRangeInParentChildSelector = override.parentPkg != null &&
31
+ (override.parentPkg.bareSpecifier === '' || override.targetPkg.bareSpecifier === '');
32
+ if (emptyRangeInParentChildSelector) {
33
+ throw new PnpmError('INVALID_CONVERGENCE_OVERRIDE', `Cannot use an empty range in the "${override.selector}" selector: convergence overrides ("pkg@") cannot be combined with parent>child selectors`);
34
+ }
35
+ if (override.targetPkg.bareSpecifier !== '')
36
+ return override;
37
+ if (semver.valid(override.newBareSpecifier) == null) {
38
+ throw new PnpmError('INVALID_CONVERGENCE_OVERRIDE', `The value of the convergence override "${override.selector}" must be an exact version, but got "${override.newBareSpecifier}"`);
39
+ }
40
+ override.converge = true;
41
+ return override;
42
+ }
27
43
  export function parsePkgAndParentSelector(selector) {
28
44
  let delimiterIndex = selector.search(DELIMITER_REGEX);
29
45
  if (delimiterIndex !== -1) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pnpm/config.parse-overrides",
3
- "version": "1100.0.2",
3
+ "version": "1100.1.1",
4
4
  "description": "Parse overrides",
5
5
  "keywords": [
6
6
  "pnpm",
@@ -27,14 +27,16 @@
27
27
  "!*.map"
28
28
  ],
29
29
  "dependencies": {
30
- "@pnpm/catalogs.resolver": "1100.0.0",
31
- "@pnpm/catalogs.types": "1100.0.0",
32
- "@pnpm/error": "1100.0.1",
33
- "@pnpm/resolving.parse-wanted-dependency": "1100.0.1"
30
+ "@pnpm/catalogs.resolver": "1100.0.1",
31
+ "@pnpm/catalogs.types": "1100.0.1",
32
+ "@pnpm/error": "1100.1.0",
33
+ "@pnpm/resolving.parse-wanted-dependency": "1100.0.2",
34
+ "semver": "^7.8.4"
34
35
  },
35
36
  "devDependencies": {
36
37
  "@jest/globals": "30.4.1",
37
- "@pnpm/config.parse-overrides": "1100.0.2"
38
+ "@pnpm/config.parse-overrides": "1100.1.1",
39
+ "@types/semver": "7.7.1"
38
40
  },
39
41
  "engines": {
40
42
  "node": ">=22.13"