syncpack 9.0.2 → 9.3.2

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.
Files changed (37) hide show
  1. package/README.md +24 -764
  2. package/dist/bin-fix-mismatches/fix-mismatches.js +17 -40
  3. package/dist/bin-lint-semver-ranges/lint-semver-ranges.js +6 -9
  4. package/dist/bin-list/list.js +41 -21
  5. package/dist/bin-list-mismatches/list-mismatches.js +63 -34
  6. package/dist/bin-set-semver-ranges/set-semver-ranges.js +2 -2
  7. package/dist/get-context/get-config/schema/base-group.d.ts +1 -0
  8. package/dist/get-context/get-config/schema/base-group.js +1 -0
  9. package/dist/get-context/get-config/schema/index.d.ts +214 -78
  10. package/dist/get-context/get-config/schema/semver-group.d.ts +30 -12
  11. package/dist/get-context/get-config/schema/version-group.d.ts +34 -4
  12. package/dist/get-context/get-groups/base-group.d.ts +19 -0
  13. package/dist/get-context/get-groups/base-group.js +40 -0
  14. package/dist/get-context/get-groups/index.d.ts +8 -0
  15. package/dist/get-context/get-groups/index.js +47 -0
  16. package/dist/get-context/get-groups/semver-group.d.ts +16 -0
  17. package/dist/get-context/get-groups/semver-group.js +89 -0
  18. package/dist/get-context/get-groups/version-group/index.d.ts +9 -26
  19. package/dist/get-context/get-groups/version-group/index.js +67 -15
  20. package/dist/get-context/get-groups/version-group/instance-group/index.d.ts +10 -20
  21. package/dist/get-context/get-groups/version-group/instance-group/index.js +49 -53
  22. package/dist/get-context/get-package-json-files/get-file-paths.js +2 -1
  23. package/dist/get-context/get-package-json-files/package-json-file/index.js +3 -2
  24. package/dist/get-context/get-package-json-files/package-json-file/instance.d.ts +2 -5
  25. package/dist/get-context/get-package-json-files/package-json-file/instance.js +3 -22
  26. package/dist/get-context/index.js +3 -8
  27. package/dist/lib/log.d.ts +4 -2
  28. package/dist/lib/log.js +23 -14
  29. package/dist/lib/print-strings.d.ts +1 -0
  30. package/dist/lib/print-strings.js +7 -0
  31. package/package.json +2 -1
  32. package/dist/get-context/get-groups/get-semver-groups.d.ts +0 -4
  33. package/dist/get-context/get-groups/get-semver-groups.js +0 -46
  34. package/dist/get-context/get-groups/get-version-groups.d.ts +0 -4
  35. package/dist/get-context/get-groups/get-version-groups.js +0 -72
  36. package/dist/get-context/get-groups/semver-group/index.d.ts +0 -29
  37. package/dist/get-context/get-groups/semver-group/index.js +0 -56
@@ -1,57 +1,34 @@
1
1
  "use strict";
2
- var __read = (this && this.__read) || function (o, n) {
3
- var m = typeof Symbol === "function" && o[Symbol.iterator];
4
- if (!m) return o;
5
- var i = m.call(o), r, ar = [], e;
6
- try {
7
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
- }
9
- catch (error) { e = { error: error }; }
10
- finally {
11
- try {
12
- if (r && !r.done && (m = i["return"])) m.call(i);
13
- }
14
- finally { if (e) throw e.error; }
15
- }
16
- return ar;
17
- };
18
2
  exports.__esModule = true;
19
3
  exports.fixMismatches = void 0;
20
4
  var expect_more_1 = require("expect-more");
21
5
  function fixMismatches(ctx) {
22
- ctx.versionGroups.reverse().forEach(function (versionGroup) {
6
+ ctx.versionGroups.forEach(function (versionGroup) {
23
7
  var invalidGroups = versionGroup.getInvalidInstanceGroups();
24
8
  // Nothing to do if there are no mismatches
25
9
  if (invalidGroups.length === 0)
26
10
  return;
27
11
  // Set the correct version on each instance.
28
12
  invalidGroups.forEach(function (instanceGroup) {
29
- var nextVersion = instanceGroup.getExpectedVersion();
30
- if (nextVersion === '')
31
- console.trace(instanceGroup);
32
- instanceGroup.instances.forEach(function (instance) {
33
- return instance.setVersion(nextVersion);
34
- });
13
+ if (!instanceGroup.hasUnsupportedVersion()) {
14
+ var nextVersion_1 = instanceGroup.getExpectedVersion();
15
+ instanceGroup.instances.forEach(function (instance) {
16
+ return instance.setVersion(nextVersion_1);
17
+ });
18
+ }
35
19
  });
36
20
  });
37
- ctx.packageJsonFiles.forEach(function (file) {
38
- removeEmptyObjects(file.contents);
21
+ /** Remove eg `{"dependencies": {}, "devDependencies": {}}` */
22
+ ctx.packageJsonFiles.forEach(function (packageJsonFile) {
23
+ var contents = packageJsonFile.contents;
24
+ Object.keys(contents).forEach(function (key) {
25
+ var value = contents[key];
26
+ if ((0, expect_more_1.isObject)(value) &&
27
+ Object.values(value).every(expect_more_1.isUndefined)) {
28
+ delete contents[key];
29
+ }
30
+ });
39
31
  });
40
32
  return ctx;
41
- /** Remove eg { "dependencies": {}, "devDependencies": {} }` */
42
- function removeEmptyObjects(parent) {
43
- if ((0, expect_more_1.isObject)(parent)) {
44
- Object.entries(parent).forEach(function (_a) {
45
- var _b = __read(_a, 2), key = _b[0], child = _b[1];
46
- if ((0, expect_more_1.isObject)(child) &&
47
- ((0, expect_more_1.isEmptyObject)(child) || Object.values(child).every(expect_more_1.isUndefined))) {
48
- delete parent[key];
49
- }
50
- else {
51
- removeEmptyObjects(child);
52
- }
53
- });
54
- }
55
- }
56
33
  }
57
34
  exports.fixMismatches = fixMismatches;
@@ -50,28 +50,25 @@ exports.lintSemverRanges = void 0;
50
50
  var chalk_1 = __importDefault(require("chalk"));
51
51
  var constants_1 = require("../constants");
52
52
  var log = __importStar(require("../lib/log"));
53
- var set_semver_range_1 = require("../lib/set-semver-range");
54
53
  function lintSemverRanges(ctx) {
55
- ctx.semverGroups.reverse().forEach(function (semverGroup, i) {
54
+ var hasUserGroups = ctx.semverGroups.length > 1;
55
+ ctx.semverGroups.forEach(function (semverGroup, i) {
56
56
  // Nothing to do if there are no mismatches
57
57
  if (!semverGroup.hasMismatches())
58
58
  return;
59
59
  // Record that this project has mismatches, so that eg. the CLI can exit
60
60
  // with the correct status code.
61
61
  ctx.isInvalid = true;
62
+ // Annotate each group
63
+ hasUserGroups && log.semverGroupHeader(semverGroup, i);
62
64
  // Log each group which has mismatches
63
65
  semverGroup.getMismatches().forEach(function (_a) {
64
66
  var _b = __read(_a, 2), name = _b[0], mismatches = _b[1];
65
- // Annotate user-defined version groups
66
- if (!semverGroup.isDefault)
67
- log.semverGroupHeader(i);
68
67
  // Log the dependency name
69
68
  log.invalid(name);
70
69
  // Log each of the dependencies mismatches
71
70
  mismatches.forEach(function (instance) {
72
- if (!instance.hasRange(semverGroup.range)) {
73
- logSemverRangeMismatch(instance, semverGroup);
74
- }
71
+ logSemverRangeMismatch(instance, semverGroup);
75
72
  });
76
73
  });
77
74
  });
@@ -82,7 +79,7 @@ function logSemverRangeMismatch(instance, semverGroup) {
82
79
  var path = instance.pathDef.path;
83
80
  var shortPath = instance.packageJsonFile.shortPath;
84
81
  var actual = instance.version;
85
- var expected = (0, set_semver_range_1.setSemverRange)(semverGroup.range, actual);
82
+ var expected = semverGroup.getExpectedVersion(instance);
86
83
  console.log((0, chalk_1["default"])(templateObject_1 || (templateObject_1 = __makeTemplateObject([" {red ", "} ", " {green ", "} {dim in ", " of ", "}"], [" {red ", "} ", " {green ", "} {dim in ", " of ", "}"])), actual, constants_1.ICON.rightArrow, expected, path, shortPath));
87
84
  }
88
85
  var templateObject_1;
@@ -35,34 +35,44 @@ var chalk_1 = __importDefault(require("chalk"));
35
35
  var constants_1 = require("../constants");
36
36
  var log = __importStar(require("../lib/log"));
37
37
  function list(ctx) {
38
- ctx.versionGroups.reverse().forEach(function (versionGroup, i) {
39
- // Annotate user-defined version groups
40
- if (!versionGroup.isDefault)
41
- log.versionGroupHeader(i);
42
- versionGroup.instanceGroups.forEach(function (instanceGroup) {
43
- var expected = instanceGroup.getExpectedVersion();
44
- var uniques = instanceGroup.uniques;
38
+ var hasUserGroups = ctx.versionGroups.length > 1;
39
+ ctx.versionGroups.forEach(function (versionGroup, i) {
40
+ var instanceGroups = versionGroup.getAllInstanceGroups();
41
+ // Nothing to do if empty
42
+ if (instanceGroups.length === 0)
43
+ return;
44
+ // Annotate each group
45
+ hasUserGroups && log.versionGroupHeader(versionGroup, i);
46
+ instanceGroups.forEach(function (instanceGroup) {
45
47
  // Record that this project has mismatches, so that eg. the CLI can exit
46
48
  // with the correct status code.
47
- if (instanceGroup.isInvalid)
49
+ if (instanceGroup.isInvalid())
48
50
  ctx.isInvalid = true;
49
- versionGroup.isBanned
50
- ? logBanned(instanceGroup)
51
- : versionGroup.isIgnored
52
- ? logIgnored(instanceGroup)
53
- : instanceGroup.hasMismatches
54
- ? logVersionMismatch(instanceGroup, uniques, expected)
55
- : logVersionMatch(instanceGroup, uniques);
51
+ if (versionGroup.isBanned())
52
+ return logBanned(instanceGroup);
53
+ if (versionGroup.isIgnored())
54
+ return logIgnored(instanceGroup);
55
+ if (versionGroup.isUnpinned())
56
+ return logUnpinned(instanceGroup);
57
+ if (instanceGroup.hasMismatchingVersions()) {
58
+ return instanceGroup.hasUnsupportedVersion()
59
+ ? logUnsupportedMismatches(instanceGroup)
60
+ : logVersionMismatch(instanceGroup);
61
+ }
62
+ logVersionMatch(instanceGroup);
56
63
  });
57
64
  });
58
65
  return ctx;
59
- function logVersionMatch(instanceGroup, uniques) {
60
- console.log((0, chalk_1["default"])(templateObject_1 || (templateObject_1 = __makeTemplateObject(["{dim -} {white ", "} {dim ", "}"], ["{dim -} {white ", "} {dim ", "}"])), instanceGroup.name, uniques));
66
+ function logVersionMatch(instanceGroup) {
67
+ console.log((0, chalk_1["default"])(templateObject_1 || (templateObject_1 = __makeTemplateObject(["{dim -} {white ", "} {dim ", "}"], ["{dim -} {white ", "} {dim ", "}"])), instanceGroup.name, instanceGroup.getUniqueVersions()));
61
68
  }
62
- function logVersionMismatch(instanceGroup, uniques, expected) {
63
- console.log((0, chalk_1["default"])(templateObject_2 || (templateObject_2 = __makeTemplateObject(["{red ", " ", "} ", ""], ["{red ", " ", "} ", ""])), constants_1.ICON.cross, instanceGroup.name, uniques
69
+ function logVersionMismatch(instanceGroup) {
70
+ console.log((0, chalk_1["default"])(templateObject_2 || (templateObject_2 = __makeTemplateObject(["{red ", " ", "} ", ""], ["{red ", " ", "} ", ""])), constants_1.ICON.cross, instanceGroup.name, instanceGroup
71
+ .getUniqueVersions()
64
72
  .map(function (version) {
65
- return version === expected ? chalk_1["default"].green(version) : chalk_1["default"].red(version);
73
+ return version === instanceGroup.getExpectedVersion()
74
+ ? chalk_1["default"].green(version)
75
+ : chalk_1["default"].red(version);
66
76
  })
67
77
  .join(chalk_1["default"].dim(', '))));
68
78
  }
@@ -72,6 +82,16 @@ function list(ctx) {
72
82
  function logBanned(instanceGroup) {
73
83
  console.log((0, chalk_1["default"])(templateObject_4 || (templateObject_4 = __makeTemplateObject(["{red ", " ", "} {dim.red is banned in this version group}"], ["{red ", " ", "} {dim.red is banned in this version group}"])), constants_1.ICON.cross, instanceGroup.name));
74
84
  }
85
+ function logUnpinned(instanceGroup) {
86
+ var pinVersion = instanceGroup.versionGroup.getPinnedVersion();
87
+ console.log((0, chalk_1["default"])(templateObject_5 || (templateObject_5 = __makeTemplateObject(["{red ", " ", "} {dim.red is pinned to ", " in this version group}"], ["{red ", " ", "} {dim.red is pinned to ", " in this version group}"])), constants_1.ICON.cross, instanceGroup.name, pinVersion));
88
+ }
89
+ function logUnsupportedMismatches(instanceGroup) {
90
+ console.log((0, chalk_1["default"])(templateObject_6 || (templateObject_6 = __makeTemplateObject(["{red ", " ", "} {dim.red has mismatched versions which syncpack cannot fix: ", "}"], ["{red ", " ", "} {dim.red has mismatched versions which syncpack cannot fix: ", "}"])), constants_1.ICON.cross, instanceGroup.name, instanceGroup
91
+ .getUniqueVersions()
92
+ .map(function (version) { return chalk_1["default"].yellow(version); })
93
+ .join(chalk_1["default"].dim(', '))));
94
+ }
75
95
  }
76
96
  exports.list = list;
77
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4;
97
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;
@@ -34,7 +34,8 @@ exports.listMismatches = void 0;
34
34
  var chalk_1 = __importDefault(require("chalk"));
35
35
  var log = __importStar(require("../lib/log"));
36
36
  function listMismatches(ctx) {
37
- ctx.versionGroups.reverse().forEach(function (versionGroup, i) {
37
+ var hasUserGroups = ctx.versionGroups.length > 1;
38
+ ctx.versionGroups.forEach(function (versionGroup, i) {
38
39
  var invalidGroups = versionGroup.getInvalidInstanceGroups();
39
40
  // Nothing to do if there are no mismatches
40
41
  if (invalidGroups.length === 0)
@@ -42,51 +43,73 @@ function listMismatches(ctx) {
42
43
  // Record that this project has mismatches, so that eg. the CLI can exit
43
44
  // with the correct status code.
44
45
  ctx.isInvalid = true;
45
- // Annotate user-defined version groups
46
- if (!versionGroup.isDefault)
47
- log.versionGroupHeader(i);
46
+ // Annotate each group
47
+ hasUserGroups && log.versionGroupHeader(versionGroup, i);
48
48
  // Log the mismatches
49
49
  invalidGroups.forEach(function (instanceGroup) {
50
- var name = instanceGroup.name;
51
- var workspaceInstance = instanceGroup.getWorkspaceInstance();
52
- var expected = instanceGroup.getExpectedVersion() || '';
53
- var isBanned = versionGroup.isBanned;
54
- var isUnpinned = instanceGroup.isUnpinned;
55
- // Log the dependency name
56
- if (isBanned) {
57
- logBanned(name);
50
+ if (versionGroup.isBanned())
51
+ return logBanned(instanceGroup);
52
+ if (versionGroup.isUnpinned())
53
+ return logUnpinned(instanceGroup);
54
+ if (instanceGroup.hasUnsupportedVersion())
55
+ return logUnsupportedMismatches(instanceGroup);
56
+ if (instanceGroup.hasWorkspaceInstance()) {
57
+ return logWorkspaceMismatch(instanceGroup);
58
58
  }
59
- else if (isUnpinned) {
60
- logPinVersionMismatch(name, versionGroup);
61
- }
62
- else if (workspaceInstance) {
63
- logWorkspaceMismatch(workspaceInstance, expected, name);
64
- }
65
- else {
66
- logHighestVersionMismatch(expected, name);
67
- }
68
- // Log each of the dependencies mismatches
69
- instanceGroup.instances.forEach(function (instance) {
70
- if (instance.version !== expected) {
71
- logVersionMismatch(instance);
72
- }
73
- });
59
+ logHighestVersionMismatch(instanceGroup);
74
60
  });
75
61
  });
76
62
  return ctx;
77
- function logBanned(name) {
63
+ function logBanned(instanceGroup) {
64
+ var name = instanceGroup.name;
78
65
  log.invalid(name, 'is banned in this version group');
66
+ // Log each of the dependencies mismatches
67
+ instanceGroup.instances.forEach(function (instance) {
68
+ logVersionMismatch(instance);
69
+ });
79
70
  }
80
- function logPinVersionMismatch(name, versionGroup) {
81
- var pinVersion = versionGroup.pinVersion;
71
+ function logUnsupportedMismatches(instanceGroup) {
72
+ var name = instanceGroup.name;
73
+ log.invalid(name, 'has mismatched versions which syncpack cannot fix');
74
+ // Log each of the dependencies mismatches
75
+ instanceGroup.instances.forEach(function (instance) {
76
+ logUnsupportedVersionMismatch(instance);
77
+ });
78
+ }
79
+ function logUnpinned(instanceGroup) {
80
+ var name = instanceGroup.name;
81
+ var pinVersion = instanceGroup.versionGroup.getPinnedVersion();
82
82
  log.invalid(name, (0, chalk_1["default"])(templateObject_1 || (templateObject_1 = __makeTemplateObject(["is pinned in this version group at {reset.green ", "}"], ["is pinned in this version group at {reset.green ", "}"])), pinVersion));
83
+ // Log each of the dependencies mismatches
84
+ instanceGroup.instances.forEach(function (instance) {
85
+ if (instance.version !== pinVersion) {
86
+ logVersionMismatch(instance);
87
+ }
88
+ });
83
89
  }
84
- function logWorkspaceMismatch(workspaceInstance, expected, name) {
85
- var shortPath = workspaceInstance.packageJsonFile.shortPath;
90
+ function logWorkspaceMismatch(instanceGroup) {
91
+ var name = instanceGroup.name;
92
+ var workspaceInstance = instanceGroup.getWorkspaceInstance();
93
+ var shortPath = workspaceInstance === null || workspaceInstance === void 0 ? void 0 : workspaceInstance.packageJsonFile.shortPath;
94
+ var expected = instanceGroup.getExpectedVersion();
86
95
  log.invalid(name, (0, chalk_1["default"])(templateObject_2 || (templateObject_2 = __makeTemplateObject(["{reset.green ", "} {dim is developed in this repo at ", "}"], ["{reset.green ", "} {dim is developed in this repo at ", "}"])), expected, shortPath));
96
+ // Log each of the dependencies mismatches
97
+ instanceGroup.instances.forEach(function (instance) {
98
+ if (instance.version !== expected) {
99
+ logVersionMismatch(instance);
100
+ }
101
+ });
87
102
  }
88
- function logHighestVersionMismatch(expected, name) {
103
+ function logHighestVersionMismatch(instanceGroup) {
104
+ var name = instanceGroup.name;
105
+ var expected = instanceGroup.getExpectedVersion();
89
106
  log.invalid(name, (0, chalk_1["default"])(templateObject_3 || (templateObject_3 = __makeTemplateObject(["{reset.green ", "} {dim is the highest valid semver version in use}"], ["{reset.green ", "} {dim is the highest valid semver version in use}"])), expected));
107
+ // Log each of the dependencies mismatches
108
+ instanceGroup.instances.forEach(function (instance) {
109
+ if (instance.version !== expected) {
110
+ logVersionMismatch(instance);
111
+ }
112
+ });
90
113
  }
91
114
  function logVersionMismatch(instance) {
92
115
  var type = instance.pathDef.path;
@@ -94,6 +117,12 @@ function listMismatches(ctx) {
94
117
  var actual = instance.version;
95
118
  console.log((0, chalk_1["default"])(templateObject_4 || (templateObject_4 = __makeTemplateObject([" {red ", "} {dim in ", " of ", "}"], [" {red ", "} {dim in ", " of ", "}"])), actual, type, shortPath));
96
119
  }
120
+ function logUnsupportedVersionMismatch(instance) {
121
+ var type = instance.pathDef.path;
122
+ var shortPath = instance.packageJsonFile.shortPath;
123
+ var actual = instance.version;
124
+ console.log((0, chalk_1["default"])(templateObject_5 || (templateObject_5 = __makeTemplateObject([" {yellow ", "} {dim in ", " of ", "}"], [" {yellow ", "} {dim in ", " of ", "}"])), actual, type, shortPath));
125
+ }
97
126
  }
98
127
  exports.listMismatches = listMismatches;
99
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4;
128
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;
@@ -2,9 +2,9 @@
2
2
  exports.__esModule = true;
3
3
  exports.setSemverRanges = void 0;
4
4
  var setSemverRanges = function (ctx) {
5
- ctx.semverGroups.reverse().forEach(function (semverGroup) {
5
+ ctx.semverGroups.forEach(function (semverGroup) {
6
6
  semverGroup.instances.forEach(function (instance) {
7
- instance.setRange(semverGroup.range);
7
+ instance.setVersion(semverGroup.getExpectedVersion(instance));
8
8
  });
9
9
  });
10
10
  return ctx;
@@ -2,5 +2,6 @@ import { z } from 'zod';
2
2
  export declare const baseGroupFields: {
3
3
  dependencies: z.ZodArray<z.ZodString, "many">;
4
4
  dependencyTypes: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
5
+ label: z.ZodDefault<z.ZodString>;
5
6
  packages: z.ZodArray<z.ZodString, "many">;
6
7
  };
@@ -5,5 +5,6 @@ var zod_1 = require("zod");
5
5
  exports.baseGroupFields = {
6
6
  dependencies: zod_1.z.array(zod_1.z.string()).min(1),
7
7
  dependencyTypes: zod_1.z.array(zod_1.z.string())["default"]([]),
8
+ label: zod_1.z.string()["default"](''),
8
9
  packages: zod_1.z.array(zod_1.z.string()).min(1)
9
10
  };