@pnpm/hooks.read-package-hook 1100.0.9 → 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,599 @@
1
+ # @pnpm/hooks.read-package-hook
2
+
3
+ ## 1100.1.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies:
8
+ - @pnpm/deps.peer-range@1100.1.0
9
+
10
+ ## 1100.1.0
11
+
12
+ ### Minor Changes
13
+
14
+ - 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).
15
+
16
+ ```yaml
17
+ overrides:
18
+ "form-data@": 4.0.6
19
+ ```
20
+
21
+ 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.
22
+
23
+ ### Patch Changes
24
+
25
+ - Updated dependencies:
26
+ - @pnpm/config.parse-overrides@1100.1.0
27
+ - @pnpm/types@1101.4.0
28
+
29
+ ## 1100.0.9
30
+
31
+ ### Patch Changes
32
+
33
+ - Updated dependencies [852d537]
34
+ - @pnpm/error@1100.0.1
35
+ - @pnpm/config.parse-overrides@1100.0.2
36
+
37
+ ## 1100.0.8
38
+
39
+ ### Patch Changes
40
+
41
+ - a31faa7: Updated dependency ranges. Notably:
42
+
43
+ - `@pnpm/logger` peer dependency range moved to `^1100.0.0`.
44
+ - `msgpackr` 1.11.8 → 2.0.4 (store index files remain byte-compatible in both directions).
45
+ - `open` ^7.4.2 → ^11.0.0, `memoize` ^10 → ^11, `cli-truncate` ^5 → ^6, `pidtree` ^0.6 → ^1.
46
+ - `@yarnpkg/core` 4.5.0 → 4.8.0, `@rushstack/worker-pool` 0.7.7 → 0.7.18, `@cyclonedx/cyclonedx-library` 10.0.0 → 10.1.0, `@pnpm/config.nerf-dart` ^1 → ^2, `@pnpm/log.group` 3.0.2 → 4.0.1, `@pnpm/util.lex-comparator` ^3 → ^4.
47
+
48
+ - Updated dependencies [681b593]
49
+ - Updated dependencies [a31faa7]
50
+ - @pnpm/types@1101.3.2
51
+ - @pnpm/deps.peer-range@1100.0.2
52
+
53
+ ## 1100.0.7
54
+
55
+ ### Patch Changes
56
+
57
+ - Updated dependencies [bf1b731]
58
+ - @pnpm/types@1101.3.1
59
+
60
+ ## 1100.0.6
61
+
62
+ ### Patch Changes
63
+
64
+ - Updated dependencies [a017bf3]
65
+ - @pnpm/types@1101.3.0
66
+
67
+ ## 1100.0.5
68
+
69
+ ### Patch Changes
70
+
71
+ - Updated dependencies [35d2355]
72
+ - @pnpm/types@1101.2.0
73
+
74
+ ## 1100.0.4
75
+
76
+ ### Patch Changes
77
+
78
+ - Updated dependencies [64afc92]
79
+ - @pnpm/types@1101.1.1
80
+
81
+ ## 1100.0.3
82
+
83
+ ### Patch Changes
84
+
85
+ - Updated dependencies [b61e268]
86
+ - @pnpm/types@1101.1.0
87
+
88
+ ## 1100.0.2
89
+
90
+ ### Patch Changes
91
+
92
+ - Updated dependencies [184ce26]
93
+ - @pnpm/resolving.parse-wanted-dependency@1100.0.1
94
+ - @pnpm/config.parse-overrides@1100.0.1
95
+ - @pnpm/deps.peer-range@1100.0.1
96
+ - @pnpm/config.matcher@1100.0.1
97
+
98
+ ## 1100.0.1
99
+
100
+ ### Patch Changes
101
+
102
+ - Updated dependencies [ff28085]
103
+ - @pnpm/types@1101.0.0
104
+
105
+ ## 1001.0.0
106
+
107
+ ### Major Changes
108
+
109
+ - 491a84f: This package is now pure ESM.
110
+ - 7d2fd48: Node.js v18, 19, 20, and 21 support discontinued.
111
+
112
+ ### Patch Changes
113
+
114
+ - Updated dependencies [76718b3]
115
+ - Updated dependencies [a8f016c]
116
+ - Updated dependencies [cc1b8e3]
117
+ - Updated dependencies [491a84f]
118
+ - Updated dependencies [7d2fd48]
119
+ - Updated dependencies [efb48dc]
120
+ - Updated dependencies [cb367b9]
121
+ - Updated dependencies [7b1c189]
122
+ - Updated dependencies [8ffb1a7]
123
+ - Updated dependencies [05fb1ae]
124
+ - Updated dependencies [71de2b3]
125
+ - Updated dependencies [10bc391]
126
+ - Updated dependencies [831f574]
127
+ - Updated dependencies [2df8b71]
128
+ - Updated dependencies [15549a9]
129
+ - Updated dependencies [cc7c0d2]
130
+ - Updated dependencies [efb48dc]
131
+ - @pnpm/types@1001.0.0
132
+ - @pnpm/resolving.parse-wanted-dependency@1002.0.0
133
+ - @pnpm/config.parse-overrides@1002.0.0
134
+ - @pnpm/deps.peer-range@1001.0.0
135
+ - @pnpm/config.matcher@1001.0.0
136
+ - @pnpm/error@1001.0.0
137
+
138
+ ## 1000.0.15
139
+
140
+ ### Patch Changes
141
+
142
+ - Updated dependencies [7c1382f]
143
+ - Updated dependencies [dee39ec]
144
+ - Updated dependencies [7c1382f]
145
+ - @pnpm/types@1000.9.0
146
+ - @pnpm/matcher@1000.1.0
147
+
148
+ ## 1000.0.14
149
+
150
+ ### Patch Changes
151
+
152
+ - @pnpm/error@1000.0.5
153
+ - @pnpm/parse-overrides@1001.0.3
154
+
155
+ ## 1000.0.13
156
+
157
+ ### Patch Changes
158
+
159
+ - Updated dependencies [e792927]
160
+ - @pnpm/types@1000.8.0
161
+
162
+ ## 1000.0.12
163
+
164
+ ### Patch Changes
165
+
166
+ - @pnpm/error@1000.0.4
167
+ - @pnpm/parse-overrides@1001.0.2
168
+
169
+ ## 1000.0.11
170
+
171
+ ### Patch Changes
172
+
173
+ - Updated dependencies [1a07b8f]
174
+ - @pnpm/types@1000.7.0
175
+ - @pnpm/error@1000.0.3
176
+ - @pnpm/parse-overrides@1001.0.1
177
+
178
+ ## 1000.0.10
179
+
180
+ ### Patch Changes
181
+
182
+ - Updated dependencies [5ec7255]
183
+ - @pnpm/types@1000.6.0
184
+
185
+ ## 1000.0.9
186
+
187
+ ### Patch Changes
188
+
189
+ - Updated dependencies [8a9f3a4]
190
+ - Updated dependencies [5b73df1]
191
+ - @pnpm/parse-wanted-dependency@1001.0.0
192
+ - @pnpm/parse-overrides@1001.0.0
193
+ - @pnpm/types@1000.5.0
194
+
195
+ ## 1000.0.8
196
+
197
+ ### Patch Changes
198
+
199
+ - Updated dependencies [750ae7d]
200
+ - @pnpm/types@1000.4.0
201
+
202
+ ## 1000.0.7
203
+
204
+ ### Patch Changes
205
+
206
+ - Updated dependencies [5f7be64]
207
+ - Updated dependencies [5f7be64]
208
+ - @pnpm/types@1000.3.0
209
+
210
+ ## 1000.0.6
211
+
212
+ ### Patch Changes
213
+
214
+ - Updated dependencies [a5e4965]
215
+ - @pnpm/types@1000.2.1
216
+
217
+ ## 1000.0.5
218
+
219
+ ### Patch Changes
220
+
221
+ - Updated dependencies [8fcc221]
222
+ - @pnpm/types@1000.2.0
223
+
224
+ ## 1000.0.4
225
+
226
+ ### Patch Changes
227
+
228
+ - e8c2b17: Prevent `overrides` from adding invalid version ranges to `peerDependencies` by keeping the `peerDependencies` and overriding them with prod `dependencies` [#8978](https://github.com/pnpm/pnpm/issues/8978).
229
+ - Updated dependencies [e8c2b17]
230
+ - @pnpm/semver.peer-range@1000.0.0
231
+
232
+ ## 1000.0.3
233
+
234
+ ### Patch Changes
235
+
236
+ - Updated dependencies [b562deb]
237
+ - @pnpm/types@1000.1.1
238
+ - @pnpm/error@1000.0.2
239
+ - @pnpm/parse-overrides@1000.0.2
240
+
241
+ ## 1000.0.2
242
+
243
+ ### Patch Changes
244
+
245
+ - Updated dependencies [9591a18]
246
+ - @pnpm/types@1000.1.0
247
+
248
+ ## 1000.0.1
249
+
250
+ ### Patch Changes
251
+
252
+ - @pnpm/error@1000.0.1
253
+ - @pnpm/parse-overrides@1000.0.1
254
+
255
+ ## 6.0.0
256
+
257
+ ### Major Changes
258
+
259
+ - 7fb4371: Update the compatibility database (`@yarnpkg/extensions` to v2.0.3). This might change your lockfile.
260
+
261
+ ### Patch Changes
262
+
263
+ - @pnpm/error@6.0.3
264
+ - @pnpm/parse-overrides@5.1.2
265
+
266
+ ## 5.1.0
267
+
268
+ ### Minor Changes
269
+
270
+ - b7fb704: Added the ability for `overrides` to remove dependencies by specifying `"-"` as the field value [#8572](https://github.com/pnpm/pnpm/issues/8572). For example, to remove `lodash` from the dependencies, use this configuration in `package.json`:
271
+
272
+ ```json
273
+ {
274
+ "pnpm": {
275
+ "overrides": {
276
+ "lodash": "-"
277
+ }
278
+ }
279
+ }
280
+ ```
281
+
282
+ ### Patch Changes
283
+
284
+ - @pnpm/error@6.0.2
285
+ - @pnpm/parse-overrides@5.1.1
286
+
287
+ ## 5.0.3
288
+
289
+ ### Patch Changes
290
+
291
+ - Updated dependencies [d500d9f]
292
+ - @pnpm/types@12.2.0
293
+
294
+ ## 5.0.2
295
+
296
+ ### Patch Changes
297
+
298
+ - Updated dependencies [7ee59a1]
299
+ - @pnpm/types@12.1.0
300
+
301
+ ## 5.0.1
302
+
303
+ ### Patch Changes
304
+
305
+ - Updated dependencies [cb006df]
306
+ - @pnpm/types@12.0.0
307
+
308
+ ## 5.0.0
309
+
310
+ ### Major Changes
311
+
312
+ - 0f0e441: Overrides now support catalogs [#8303](https://github.com/pnpm/pnpm/issues/8303).
313
+
314
+ ### Patch Changes
315
+
316
+ - Updated dependencies [0f0e441]
317
+ - Updated dependencies [0ef168b]
318
+ - @pnpm/parse-overrides@5.1.0
319
+ - @pnpm/types@11.1.0
320
+
321
+ ## 4.0.5
322
+
323
+ ### Patch Changes
324
+
325
+ - Updated dependencies [dd00eeb]
326
+ - Updated dependencies
327
+ - @pnpm/types@11.0.0
328
+
329
+ ## 4.0.4
330
+
331
+ ### Patch Changes
332
+
333
+ - Updated dependencies [13e55b2]
334
+ - @pnpm/types@10.1.1
335
+
336
+ ## 4.0.3
337
+
338
+ ### Patch Changes
339
+
340
+ - Updated dependencies [45f4262]
341
+ - @pnpm/types@10.1.0
342
+
343
+ ## 4.0.2
344
+
345
+ ### Patch Changes
346
+
347
+ - b1d7f8c: Overrides with `link:` now preserves absolute path.
348
+ - b1d7f8c: Fix incorrect path when resolving relative `file:` overrides for workspace package.
349
+ - Updated dependencies [a7aef51]
350
+ - @pnpm/error@6.0.1
351
+ - @pnpm/parse-overrides@5.0.1
352
+
353
+ ## 4.0.1
354
+
355
+ ### Patch Changes
356
+
357
+ - 04310be: Write overrides with `file:` scheme to lockfile as-is [#7858](https://github.com/pnpm/pnpm/issues/7858).
358
+
359
+ ## 4.0.0
360
+
361
+ ### Major Changes
362
+
363
+ - aa33269: Peer dependency rules should only affect reporting, not data in the lockfile.
364
+ - 43cdd87: Node.js v16 support dropped. Use at least Node.js v18.12.
365
+
366
+ ### Minor Changes
367
+
368
+ - 730929e: Add a field named `ignoredOptionalDependencies`. This is an array of strings. If an optional dependency has its name included in this array, it will be skipped.
369
+
370
+ ### Patch Changes
371
+
372
+ - 0963390: Link overrides should be able to use absolute path [#7749](https://github.com/pnpm/pnpm/pull/7749).
373
+ - Updated dependencies [7733f3a]
374
+ - Updated dependencies [3ded840]
375
+ - Updated dependencies [43cdd87]
376
+ - Updated dependencies [730929e]
377
+ - @pnpm/types@10.0.0
378
+ - @pnpm/error@6.0.0
379
+ - @pnpm/parse-wanted-dependency@6.0.0
380
+ - @pnpm/parse-overrides@5.0.0
381
+ - @pnpm/matcher@6.0.0
382
+
383
+ ## 3.0.10
384
+
385
+ ### Patch Changes
386
+
387
+ - Updated dependencies [4d34684f1]
388
+ - @pnpm/types@9.4.2
389
+
390
+ ## 3.0.9
391
+
392
+ ### Patch Changes
393
+
394
+ - Updated dependencies
395
+ - @pnpm/types@9.4.1
396
+
397
+ ## 3.0.8
398
+
399
+ ### Patch Changes
400
+
401
+ - Updated dependencies [43ce9e4a6]
402
+ - @pnpm/types@9.4.0
403
+
404
+ ## 3.0.7
405
+
406
+ ### Patch Changes
407
+
408
+ - Updated dependencies [d774a3196]
409
+ - @pnpm/types@9.3.0
410
+
411
+ ## 3.0.6
412
+
413
+ ### Patch Changes
414
+
415
+ - 64bf3c860: Override peerDependencies in `pnpm.overrides` [#6759](https://github.com/pnpm/pnpm/issues/6759).
416
+
417
+ ## 3.0.5
418
+
419
+ ### Patch Changes
420
+
421
+ - ec50dc98c: Compare overriding ranges with intersection instead of subset to fix override range bug [#6878](https://github.com/pnpm/pnpm/issues/6878).
422
+
423
+ ## 3.0.4
424
+
425
+ ### Patch Changes
426
+
427
+ - Updated dependencies [aa2ae8fe2]
428
+ - @pnpm/types@9.2.0
429
+
430
+ ## 3.0.3
431
+
432
+ ### Patch Changes
433
+
434
+ - @pnpm/error@5.0.2
435
+ - @pnpm/parse-overrides@4.0.2
436
+
437
+ ## 3.0.2
438
+
439
+ ### Patch Changes
440
+
441
+ - Updated dependencies [a9e0b7cbf]
442
+ - @pnpm/types@9.1.0
443
+ - @pnpm/error@5.0.1
444
+ - @pnpm/parse-overrides@4.0.1
445
+
446
+ ## 3.0.1
447
+
448
+ ### Patch Changes
449
+
450
+ - c0760128d: bump semver to 7.4.0
451
+
452
+ ## 3.0.0
453
+
454
+ ### Major Changes
455
+
456
+ - eceaa8b8b: Node.js 14 support dropped.
457
+
458
+ ### Patch Changes
459
+
460
+ - df107f2ef: Should use most specific override rule when multiple rules match the same target [#6210](https://github.com/pnpm/pnpm/issues/6210).
461
+ - 0a8b48f04: Update the compatibility DB.
462
+ - Updated dependencies [eceaa8b8b]
463
+ - @pnpm/parse-wanted-dependency@5.0.0
464
+ - @pnpm/parse-overrides@4.0.0
465
+ - @pnpm/matcher@5.0.0
466
+ - @pnpm/error@5.0.0
467
+ - @pnpm/types@9.0.0
468
+
469
+ ## 2.1.1
470
+
471
+ ### Patch Changes
472
+
473
+ - d583fbb2a: Fixed issue where allowedVersions wouldn't apply correctly if only parent>child selectors were used
474
+
475
+ ## 2.1.0
476
+
477
+ ### Minor Changes
478
+
479
+ - f39d608ac: Extends the `pnpm.peerDependencyRules.allowedVersions` `package.json` option to support the `parent>child` selector syntax. This syntax allows for extending specific `peerDependencies` [#6108](https://github.com/pnpm/pnpm/pull/6108).
480
+
481
+ ## 2.0.12
482
+
483
+ ### Patch Changes
484
+
485
+ - 308eb2c9b: Use Map rather than Object in `createPackageExtender` to prevent read the prototype property to native function
486
+
487
+ ## 2.0.11
488
+
489
+ ### Patch Changes
490
+
491
+ - Updated dependencies [2ae1c449d]
492
+ - @pnpm/parse-wanted-dependency@4.1.0
493
+ - @pnpm/parse-overrides@3.0.3
494
+
495
+ ## 2.0.10
496
+
497
+ ### Patch Changes
498
+
499
+ - @pnpm/parse-overrides@3.0.2
500
+
501
+ ## 2.0.9
502
+
503
+ ### Patch Changes
504
+
505
+ - Updated dependencies [b77651d14]
506
+ - @pnpm/types@8.10.0
507
+
508
+ ## 2.0.8
509
+
510
+ ### Patch Changes
511
+
512
+ - b11a8c363: It should be possible to use overrides with absolute file paths [#5754](https://github.com/pnpm/pnpm/issues/5754).
513
+
514
+ ## 2.0.7
515
+
516
+ ### Patch Changes
517
+
518
+ - 924eca293: It should be possible to override a dependency with a local package using relative path from the workspace root directory [#5493](https://github.com/pnpm/pnpm/issues/5493).
519
+ - Updated dependencies [a9d59d8bc]
520
+ - @pnpm/parse-wanted-dependency@4.0.1
521
+ - @pnpm/parse-overrides@3.0.1
522
+
523
+ ## 2.0.6
524
+
525
+ ### Patch Changes
526
+
527
+ - Updated dependencies [969f8a002]
528
+ - @pnpm/matcher@4.0.1
529
+
530
+ ## 2.0.5
531
+
532
+ ### Patch Changes
533
+
534
+ - Updated dependencies [702e847c1]
535
+ - @pnpm/types@8.9.0
536
+
537
+ ## 2.0.4
538
+
539
+ ### Patch Changes
540
+
541
+ - 0da2f0412: Update dependencies.
542
+
543
+ ## 2.0.3
544
+
545
+ ### Patch Changes
546
+
547
+ - da22f0c1f: Version overrider should have higher priority then custom read package hook from `.pnpmfile.cjs`.
548
+
549
+ ## 2.0.2
550
+
551
+ ### Patch Changes
552
+
553
+ - 0fe927215: The custom hooks should be executed after the peer dependency patcher hook.
554
+
555
+ ## 2.0.1
556
+
557
+ ### Patch Changes
558
+
559
+ - Updated dependencies [844e82f3a]
560
+ - @pnpm/types@8.8.0
561
+
562
+ ## 2.0.0
563
+
564
+ ### Major Changes
565
+
566
+ - f884689e0: Require `@pnpm/logger` v5.
567
+
568
+ ### Patch Changes
569
+
570
+ - Updated dependencies [f884689e0]
571
+ - @pnpm/matcher@4.0.0
572
+ - @pnpm/parse-overrides@3.0.0
573
+ - @pnpm/parse-wanted-dependency@4.0.0
574
+
575
+ ## 1.0.2
576
+
577
+ ### Patch Changes
578
+
579
+ - f4813c487: Update @yarnpkg/extensions.
580
+ - 8c3a0b236: The readPackageHooks should always get the project directory as the second argument.
581
+
582
+ ## 1.0.1
583
+
584
+ ### Patch Changes
585
+
586
+ - @pnpm/parse-overrides@2.0.4
587
+
588
+ ## 1.0.0
589
+
590
+ ### Major Changes
591
+
592
+ - 51566e34b: First release.
593
+
594
+ ### Patch Changes
595
+
596
+ - Updated dependencies [abb41a626]
597
+ - Updated dependencies [d665f3ff7]
598
+ - @pnpm/matcher@3.2.0
599
+ - @pnpm/types@8.7.0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pnpm/hooks.read-package-hook",
3
- "version": "1100.0.9",
3
+ "version": "1100.1.1",
4
4
  "description": "Creates the default package reader hook used by pnpm",
5
5
  "keywords": [
6
6
  "pnpm",
@@ -27,24 +27,24 @@
27
27
  "!*.map"
28
28
  ],
29
29
  "dependencies": {
30
+ "@pnpm/config.matcher": "1100.0.1",
31
+ "@pnpm/config.parse-overrides": "1100.1.0",
32
+ "@pnpm/deps.peer-range": "1100.1.0",
33
+ "@pnpm/error": "1100.0.1",
34
+ "@pnpm/resolving.parse-wanted-dependency": "1100.0.1",
35
+ "@pnpm/types": "1101.4.0",
30
36
  "@yarnpkg/extensions": "2.0.6",
31
37
  "normalize-path": "^3.0.0",
32
38
  "ramda": "npm:@pnpm/ramda@0.28.1",
33
- "semver": "^7.8.4",
34
- "@pnpm/config.parse-overrides": "1100.0.2",
35
- "@pnpm/config.matcher": "1100.0.1",
36
- "@pnpm/error": "1100.0.1",
37
- "@pnpm/deps.peer-range": "1100.0.2",
38
- "@pnpm/types": "1101.3.2",
39
- "@pnpm/resolving.parse-wanted-dependency": "1100.0.1"
39
+ "semver": "^7.8.4"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@jest/globals": "30.4.1",
43
+ "@pnpm/hooks.read-package-hook": "1100.1.1",
43
44
  "@types/normalize-path": "^3.0.2",
44
45
  "@types/ramda": "0.31.1",
45
46
  "@types/semver": "7.7.1",
46
- "@yarnpkg/core": "4.8.0",
47
- "@pnpm/hooks.read-package-hook": "1100.0.9"
47
+ "@yarnpkg/core": "4.8.0"
48
48
  },
49
49
  "engines": {
50
50
  "node": ">=22.13"
@@ -1,2 +0,0 @@
1
- import type { ReadPackageHook } from '@pnpm/types';
2
- export declare function createOptionalDependenciesRemover(toBeRemoved: string[]): ReadPackageHook;
@@ -1,17 +0,0 @@
1
- import { createMatcher } from '@pnpm/config.matcher';
2
- export function createOptionalDependenciesRemover(toBeRemoved) {
3
- if (!toBeRemoved.length)
4
- return (manifest) => manifest;
5
- const shouldBeRemoved = createMatcher(toBeRemoved);
6
- return (manifest) => removeOptionalDependencies(manifest, shouldBeRemoved);
7
- }
8
- function removeOptionalDependencies(manifest, shouldBeRemoved) {
9
- for (const optionalDependency in manifest.optionalDependencies) {
10
- if (shouldBeRemoved(optionalDependency)) {
11
- delete manifest.optionalDependencies[optionalDependency];
12
- delete manifest.dependencies?.[optionalDependency];
13
- }
14
- }
15
- return manifest;
16
- }
17
- //# sourceMappingURL=createOptionalDependenciesRemover.js.map
@@ -1,2 +0,0 @@
1
- import type { PackageExtension, ReadPackageHook } from '@pnpm/types';
2
- export declare function createPackageExtender(packageExtensions: Record<string, PackageExtension>): ReadPackageHook;
@@ -1,36 +0,0 @@
1
- import { parseWantedDependency } from '@pnpm/resolving.parse-wanted-dependency';
2
- import semver from 'semver';
3
- export function createPackageExtender(packageExtensions) {
4
- const extensionsByPkgName = new Map();
5
- for (const selector in packageExtensions) {
6
- const packageExtension = packageExtensions[selector];
7
- const { alias, bareSpecifier } = parseWantedDependency(selector);
8
- if (!extensionsByPkgName.has(alias)) {
9
- extensionsByPkgName.set(alias, []);
10
- }
11
- extensionsByPkgName.get(alias).push({ packageExtension, range: bareSpecifier });
12
- }
13
- return extendPkgHook.bind(null, extensionsByPkgName);
14
- }
15
- function extendPkgHook(extensionsByPkgName, manifest) {
16
- const extensions = extensionsByPkgName.get(manifest.name);
17
- if (extensions == null)
18
- return manifest;
19
- extendPkg(manifest, extensions);
20
- return manifest;
21
- }
22
- function extendPkg(manifest, extensions) {
23
- for (const { range, packageExtension } of extensions) {
24
- if (range != null && !semver.satisfies(manifest.version, range))
25
- continue;
26
- for (const field of ['dependencies', 'optionalDependencies', 'peerDependencies', 'peerDependenciesMeta']) {
27
- if (!packageExtension[field])
28
- continue;
29
- manifest[field] = {
30
- ...packageExtension[field],
31
- ...manifest[field],
32
- }; // eslint-disable-line @typescript-eslint/no-explicit-any
33
- }
34
- }
35
- }
36
- //# sourceMappingURL=createPackageExtender.js.map
@@ -1,14 +0,0 @@
1
- import type { PackageExtension, ReadPackageHook } from '@pnpm/types';
2
- import { type VersionOverrideWithoutRawSelector } from './createVersionsOverrider.js';
3
- export declare function getEffectivePackageExtensions({ ignoreCompatibilityDb, packageExtensions, }: {
4
- ignoreCompatibilityDb?: boolean;
5
- packageExtensions?: Record<string, PackageExtension>;
6
- }): Record<string, PackageExtension> | undefined;
7
- export declare function createReadPackageHook({ ignoreCompatibilityDb, lockfileDir, overrides, ignoredOptionalDependencies, packageExtensions, readPackageHook, }: {
8
- ignoreCompatibilityDb?: boolean;
9
- lockfileDir: string;
10
- overrides?: VersionOverrideWithoutRawSelector[];
11
- ignoredOptionalDependencies?: string[];
12
- packageExtensions?: Record<string, PackageExtension>;
13
- readPackageHook?: ReadPackageHook[] | ReadPackageHook;
14
- }): ReadPackageHook | undefined;
@@ -1,79 +0,0 @@
1
- import { packageExtensions as compatPackageExtensions } from '@yarnpkg/extensions';
2
- import { isEmpty, pipeWith } from 'ramda';
3
- import { createOptionalDependenciesRemover } from './createOptionalDependenciesRemover.js';
4
- import { createPackageExtender } from './createPackageExtender.js';
5
- import { createVersionsOverrider } from './createVersionsOverrider.js';
6
- const PACKAGE_EXTENSION_FIELDS = [
7
- 'dependencies',
8
- 'optionalDependencies',
9
- 'peerDependencies',
10
- 'peerDependenciesMeta',
11
- ];
12
- export function getEffectivePackageExtensions({ ignoreCompatibilityDb, packageExtensions, }) {
13
- const effectivePackageExtensions = {};
14
- if (!ignoreCompatibilityDb) {
15
- mergePackageExtensions(effectivePackageExtensions, compatPackageExtensions);
16
- }
17
- if (!isEmpty(packageExtensions ?? {})) {
18
- mergePackageExtensions(effectivePackageExtensions, Object.entries(packageExtensions));
19
- }
20
- return isEmpty(effectivePackageExtensions) ? undefined : effectivePackageExtensions;
21
- }
22
- export function createReadPackageHook({ ignoreCompatibilityDb, lockfileDir, overrides, ignoredOptionalDependencies, packageExtensions, readPackageHook, }) {
23
- const hooks = [];
24
- const effectivePackageExtensions = getEffectivePackageExtensions({
25
- ignoreCompatibilityDb,
26
- packageExtensions,
27
- });
28
- if (effectivePackageExtensions != null) {
29
- hooks.push(createPackageExtender(effectivePackageExtensions));
30
- }
31
- if (Array.isArray(readPackageHook)) {
32
- hooks.push(...readPackageHook);
33
- }
34
- else if (readPackageHook) {
35
- hooks.push(readPackageHook);
36
- }
37
- if (!isEmpty(overrides ?? {})) {
38
- hooks.push(createVersionsOverrider(overrides, lockfileDir));
39
- }
40
- if (ignoredOptionalDependencies && !isEmpty(ignoredOptionalDependencies)) {
41
- hooks.push(createOptionalDependenciesRemover(ignoredOptionalDependencies));
42
- }
43
- if (hooks.length === 0) {
44
- return undefined;
45
- }
46
- const readPackageAndExtend = hooks.length === 1
47
- ? hooks[0]
48
- : ((pkg, dir) => pipeWith(async (f, res) => f(await res, dir), hooks)(pkg, dir)); // eslint-disable-line @typescript-eslint/no-explicit-any
49
- return readPackageAndExtend;
50
- }
51
- function mergePackageExtensions(target, entries) {
52
- for (const [selector, packageExtension] of entries) {
53
- target[selector] = mergePackageExtension(target[selector], packageExtension);
54
- }
55
- }
56
- function mergePackageExtension(previous, next) {
57
- if (previous == null)
58
- return clonePackageExtension(next);
59
- const merged = clonePackageExtension(previous);
60
- for (const field of PACKAGE_EXTENSION_FIELDS) {
61
- if (next[field] == null)
62
- continue;
63
- merged[field] = {
64
- ...next[field],
65
- ...merged[field],
66
- };
67
- }
68
- return merged;
69
- }
70
- function clonePackageExtension(packageExtension) {
71
- const cloned = {};
72
- for (const field of PACKAGE_EXTENSION_FIELDS) {
73
- if (packageExtension[field] == null)
74
- continue;
75
- cloned[field] = { ...packageExtension[field] };
76
- }
77
- return cloned;
78
- }
79
- //# sourceMappingURL=createReadPackageHook.js.map
@@ -1,4 +0,0 @@
1
- import type { VersionOverride as VersionOverrideBase } from '@pnpm/config.parse-overrides';
2
- import type { ReadPackageHook } from '@pnpm/types';
3
- export type VersionOverrideWithoutRawSelector = Omit<VersionOverrideBase, 'selector'>;
4
- export declare function createVersionsOverrider(overrides: VersionOverrideWithoutRawSelector[], rootDir: string): ReadPackageHook;
@@ -1,85 +0,0 @@
1
- import path from 'node:path';
2
- import { isValidPeerRange } from '@pnpm/deps.peer-range';
3
- import normalizePath from 'normalize-path';
4
- import { partition } from 'ramda';
5
- import semver from 'semver';
6
- import { isIntersectingRange } from './isIntersectingRange.js';
7
- export function createVersionsOverrider(overrides, rootDir) {
8
- const [versionOverrides, genericVersionOverrides] = partition(({ parentPkg }) => parentPkg != null, overrides.map((override) => ({
9
- ...override,
10
- localTarget: createLocalTarget(override, rootDir),
11
- })));
12
- return ((manifest, dir) => {
13
- const versionOverridesWithParent = versionOverrides.filter(({ parentPkg }) => {
14
- return (parentPkg.name === manifest.name &&
15
- (!parentPkg.bareSpecifier || semver.satisfies(manifest.version, parentPkg.bareSpecifier)));
16
- });
17
- overrideDepsOfPkg({ manifest, dir }, versionOverridesWithParent, genericVersionOverrides);
18
- return manifest;
19
- });
20
- }
21
- function createLocalTarget(override, rootDir) {
22
- let protocol;
23
- if (override.newBareSpecifier.startsWith('file:')) {
24
- protocol = 'file:';
25
- }
26
- else if (override.newBareSpecifier.startsWith('link:')) {
27
- protocol = 'link:';
28
- }
29
- else {
30
- return undefined;
31
- }
32
- const pkgPath = override.newBareSpecifier.substring(protocol.length);
33
- const specifiedViaRelativePath = !path.isAbsolute(pkgPath);
34
- const absolutePath = specifiedViaRelativePath ? path.join(rootDir, pkgPath) : pkgPath;
35
- return { absolutePath, specifiedViaRelativePath, protocol };
36
- }
37
- function overrideDepsOfPkg({ manifest, dir }, versionOverrides, genericVersionOverrides) {
38
- const { dependencies, optionalDependencies, devDependencies, peerDependencies } = manifest;
39
- const _overrideDeps = overrideDeps.bind(null, { versionOverrides, genericVersionOverrides, dir });
40
- for (const deps of [dependencies, optionalDependencies, devDependencies]) {
41
- if (deps) {
42
- _overrideDeps(deps, undefined);
43
- }
44
- }
45
- if (peerDependencies) {
46
- if (!manifest.dependencies)
47
- manifest.dependencies = {};
48
- _overrideDeps(manifest.dependencies, peerDependencies);
49
- }
50
- }
51
- function overrideDeps({ versionOverrides, genericVersionOverrides, dir }, deps, peerDeps) {
52
- for (const [name, bareSpecifier] of Object.entries(peerDeps ?? deps)) {
53
- const versionOverride = pickMostSpecificVersionOverride(versionOverrides.filter(({ targetPkg }) => targetPkg.name === name && isIntersectingRange(targetPkg.bareSpecifier, bareSpecifier))) ??
54
- pickMostSpecificVersionOverride(genericVersionOverrides.filter(({ targetPkg }) => targetPkg.name === name && isIntersectingRange(targetPkg.bareSpecifier, bareSpecifier)));
55
- if (!versionOverride)
56
- continue;
57
- if (versionOverride.newBareSpecifier === '-') {
58
- if (peerDeps) {
59
- delete peerDeps[versionOverride.targetPkg.name];
60
- }
61
- else {
62
- delete deps[versionOverride.targetPkg.name];
63
- }
64
- continue;
65
- }
66
- const newBareSpecifier = versionOverride.localTarget
67
- ? `${versionOverride.localTarget.protocol}${resolveLocalOverride(versionOverride.localTarget, dir)}`
68
- : versionOverride.newBareSpecifier;
69
- if (peerDeps == null || !isValidPeerRange(newBareSpecifier)) {
70
- deps[versionOverride.targetPkg.name] = newBareSpecifier;
71
- }
72
- else if (isValidPeerRange(newBareSpecifier)) {
73
- peerDeps[versionOverride.targetPkg.name] = newBareSpecifier;
74
- }
75
- }
76
- }
77
- function resolveLocalOverride({ specifiedViaRelativePath, absolutePath }, pkgDir) {
78
- return specifiedViaRelativePath && pkgDir
79
- ? normalizePath(path.relative(pkgDir, absolutePath))
80
- : absolutePath;
81
- }
82
- function pickMostSpecificVersionOverride(versionOverrides) {
83
- return versionOverrides.sort((a, b) => isIntersectingRange(b.targetPkg.bareSpecifier ?? '', a.targetPkg.bareSpecifier ?? '') ? -1 : 1)[0];
84
- }
85
- //# sourceMappingURL=createVersionsOverrider.js.map
package/lib/index.d.ts DELETED
@@ -1 +0,0 @@
1
- export { createReadPackageHook, getEffectivePackageExtensions } from './createReadPackageHook.js';
@@ -1 +0,0 @@
1
- export declare function isIntersectingRange(range1: string | undefined, range2: string): boolean;
@@ -1,9 +0,0 @@
1
- import semver from 'semver';
2
- export function isIntersectingRange(range1, range2) {
3
- return !range1 ||
4
- range2 === range1 ||
5
- semver.validRange(range2) != null &&
6
- semver.validRange(range1) != null &&
7
- semver.intersects(range2, range1);
8
- }
9
- //# sourceMappingURL=isIntersectingRange.js.map
@@ -1 +0,0 @@
1
- export declare function isSubRange(superRange: string | undefined, subRange: string): boolean;
package/lib/isSubRange.js DELETED
@@ -1,9 +0,0 @@
1
- import semver from 'semver';
2
- export function isSubRange(superRange, subRange) {
3
- return !superRange ||
4
- subRange === superRange ||
5
- semver.validRange(subRange) != null &&
6
- semver.validRange(superRange) != null &&
7
- semver.subset(subRange, superRange);
8
- }
9
- //# sourceMappingURL=isSubRange.js.map