@pnpm/hooks.read-package-hook 5.0.0 → 5.0.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.
@@ -0,0 +1,2 @@
1
+ import { type PeerDependencyRules, type ReadPackageHook } from '@pnpm/types';
2
+ export declare function createPeerDependencyPatcher(peerDependencyRules: PeerDependencyRules): ReadPackageHook;
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createPeerDependencyPatcher = void 0;
7
+ const semver_1 = __importDefault(require("semver"));
8
+ const isEmpty_1 = __importDefault(require("ramda/src/isEmpty"));
9
+ const error_1 = require("@pnpm/error");
10
+ const parse_overrides_1 = require("@pnpm/parse-overrides");
11
+ const matcher_1 = require("@pnpm/matcher");
12
+ const isSubRange_1 = require("./isSubRange");
13
+ function createPeerDependencyPatcher(peerDependencyRules) {
14
+ const ignoreMissingPatterns = [...new Set(peerDependencyRules.ignoreMissing ?? [])];
15
+ const ignoreMissingMatcher = (0, matcher_1.createMatcher)(ignoreMissingPatterns);
16
+ const allowAnyPatterns = [...new Set(peerDependencyRules.allowAny ?? [])];
17
+ const allowAnyMatcher = (0, matcher_1.createMatcher)(allowAnyPatterns);
18
+ const { allowedVersionsMatchAll, allowedVersionsByParentPkgName } = parseAllowedVersions(peerDependencyRules.allowedVersions ?? {});
19
+ const _getAllowedVersionsByParentPkg = getAllowedVersionsByParentPkg.bind(null, allowedVersionsByParentPkgName);
20
+ return ((pkg) => {
21
+ if ((0, isEmpty_1.default)(pkg.peerDependencies))
22
+ return pkg;
23
+ const allowedVersions = {
24
+ ...allowedVersionsMatchAll,
25
+ ..._getAllowedVersionsByParentPkg(pkg),
26
+ };
27
+ for (const [peerName, peerVersion] of Object.entries(pkg.peerDependencies ?? {})) {
28
+ if (ignoreMissingMatcher(peerName) &&
29
+ !pkg.peerDependenciesMeta?.[peerName]?.optional) {
30
+ pkg.peerDependenciesMeta = pkg.peerDependenciesMeta ?? {};
31
+ pkg.peerDependenciesMeta[peerName] = {
32
+ optional: true,
33
+ };
34
+ }
35
+ if (allowAnyMatcher(peerName)) {
36
+ pkg.peerDependencies[peerName] = '*';
37
+ continue;
38
+ }
39
+ if (!allowedVersions?.[peerName] || peerVersion === '*') {
40
+ continue;
41
+ }
42
+ if (allowedVersions?.[peerName].includes('*')) {
43
+ pkg.peerDependencies[peerName] = '*';
44
+ continue;
45
+ }
46
+ const currentVersions = parseVersions(pkg.peerDependencies[peerName]);
47
+ allowedVersions[peerName].forEach(allowedVersion => {
48
+ if (!currentVersions.includes(allowedVersion)) {
49
+ currentVersions.push(allowedVersion);
50
+ }
51
+ });
52
+ pkg.peerDependencies[peerName] = currentVersions.join(' || ');
53
+ }
54
+ return pkg;
55
+ });
56
+ }
57
+ exports.createPeerDependencyPatcher = createPeerDependencyPatcher;
58
+ function parseAllowedVersions(allowedVersions) {
59
+ const overrides = tryParseAllowedVersions(allowedVersions);
60
+ const allowedVersionsMatchAll = {};
61
+ const allowedVersionsByParentPkgName = {};
62
+ for (const { parentPkg, targetPkg, newPref } of overrides) {
63
+ const ranges = parseVersions(newPref);
64
+ if (!parentPkg) {
65
+ allowedVersionsMatchAll[targetPkg.name] = ranges;
66
+ continue;
67
+ }
68
+ if (!allowedVersionsByParentPkgName[parentPkg.name]) {
69
+ allowedVersionsByParentPkgName[parentPkg.name] = [];
70
+ }
71
+ allowedVersionsByParentPkgName[parentPkg.name].push({
72
+ parentPkg,
73
+ targetPkg,
74
+ ranges,
75
+ });
76
+ }
77
+ return {
78
+ allowedVersionsMatchAll,
79
+ allowedVersionsByParentPkgName,
80
+ };
81
+ }
82
+ function tryParseAllowedVersions(allowedVersions) {
83
+ try {
84
+ return (0, parse_overrides_1.parseOverrides)(allowedVersions ?? {});
85
+ }
86
+ catch (err) {
87
+ throw new error_1.PnpmError('INVALID_ALLOWED_VERSION_SELECTOR', `${err.message} in pnpm.peerDependencyRules.allowedVersions`);
88
+ }
89
+ }
90
+ function getAllowedVersionsByParentPkg(allowedVersionsByParentPkgName, pkg) {
91
+ if (!pkg.name || !allowedVersionsByParentPkgName[pkg.name])
92
+ return {};
93
+ return allowedVersionsByParentPkgName[pkg.name]
94
+ .reduce((acc, { targetPkg, parentPkg, ranges }) => {
95
+ if (!pkg.peerDependencies[targetPkg.name])
96
+ return acc;
97
+ if (!parentPkg.pref || pkg.version &&
98
+ ((0, isSubRange_1.isSubRange)(parentPkg.pref, pkg.version) || semver_1.default.satisfies(pkg.version, parentPkg.pref))) {
99
+ acc[targetPkg.name] = ranges;
100
+ }
101
+ return acc;
102
+ }, {});
103
+ }
104
+ function parseVersions(versions) {
105
+ return versions.split('||').map(v => v.trim());
106
+ }
107
+ //# sourceMappingURL=createPeerDependencyPatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createPeerDependencyPatcher.js","sourceRoot":"","sources":["../src/createPeerDependencyPatcher.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pnpm/hooks.read-package-hook",
3
- "version": "5.0.0",
3
+ "version": "5.0.1",
4
4
  "description": "Creates the default package reader hook used by pnpm",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -26,17 +26,17 @@
26
26
  "ramda": "npm:@pnpm/ramda@0.28.1",
27
27
  "semver": "^7.6.2",
28
28
  "@pnpm/matcher": "6.0.0",
29
- "@pnpm/parse-wanted-dependency": "6.0.0",
30
29
  "@pnpm/error": "6.0.1",
31
30
  "@pnpm/parse-overrides": "5.1.0",
32
- "@pnpm/types": "11.1.0"
31
+ "@pnpm/types": "12.0.0",
32
+ "@pnpm/parse-wanted-dependency": "6.0.0"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@types/normalize-path": "^3.0.2",
36
36
  "@types/ramda": "0.29.12",
37
37
  "@types/semver": "7.5.3",
38
38
  "@yarnpkg/core": "4.0.3",
39
- "@pnpm/hooks.read-package-hook": "5.0.0"
39
+ "@pnpm/hooks.read-package-hook": "5.0.1"
40
40
  },
41
41
  "funding": "https://opencollective.com/pnpm",
42
42
  "exports": {