syncpack 5.7.11 → 6.0.0

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 (125) hide show
  1. package/README.md +261 -103
  2. package/dist/bin-fix-mismatches/fix-mismatches.d.ts +3 -0
  3. package/dist/bin-fix-mismatches/fix-mismatches.js +58 -0
  4. package/dist/bin-fix-mismatches/get-highest-version.d.ts +1 -0
  5. package/dist/{commands/lib → bin-fix-mismatches}/get-highest-version.js +16 -19
  6. package/dist/bin-fix-mismatches/get-workspace-version.d.ts +6 -0
  7. package/dist/bin-fix-mismatches/get-workspace-version.js +17 -0
  8. package/dist/{bin-fix-mismatches.d.ts → bin-fix-mismatches/index.d.ts} +0 -0
  9. package/dist/bin-fix-mismatches/index.js +66 -0
  10. package/dist/bin-format/format.d.ts +3 -0
  11. package/dist/bin-format/format.js +44 -0
  12. package/dist/{bin-format.d.ts → bin-format/index.d.ts} +0 -0
  13. package/dist/bin-format/index.js +56 -0
  14. package/dist/{bin-list-mismatches.d.ts → bin-lint-semver-ranges/index.d.ts} +0 -0
  15. package/dist/bin-lint-semver-ranges/index.js +66 -0
  16. package/dist/bin-lint-semver-ranges/lint-semver-ranges.d.ts +2 -0
  17. package/dist/bin-lint-semver-ranges/lint-semver-ranges.js +52 -0
  18. package/dist/bin-lint-semver-ranges/list-semver-group-mismatches.d.ts +2 -0
  19. package/dist/bin-lint-semver-ranges/list-semver-group-mismatches.js +12 -0
  20. package/dist/{bin-set-semver-ranges.d.ts → bin-list/index.d.ts} +0 -0
  21. package/dist/bin-list/index.js +64 -0
  22. package/dist/bin-list/list-version-groups.d.ts +3 -0
  23. package/dist/bin-list/list-version-groups.js +40 -0
  24. package/dist/bin-list/list.d.ts +9 -0
  25. package/dist/bin-list/list.js +46 -0
  26. package/dist/{bin-list.d.ts → bin-list-mismatches/index.d.ts} +0 -0
  27. package/dist/bin-list-mismatches/index.js +64 -0
  28. package/dist/bin-list-mismatches/list-mismatches.d.ts +2 -0
  29. package/dist/bin-list-mismatches/list-mismatches.js +44 -0
  30. package/dist/bin-set-semver-ranges/index.d.ts +2 -0
  31. package/dist/bin-set-semver-ranges/index.js +68 -0
  32. package/dist/bin-set-semver-ranges/set-semver-ranges.d.ts +3 -0
  33. package/dist/bin-set-semver-ranges/set-semver-ranges.js +37 -0
  34. package/dist/bin.js +21 -7
  35. package/dist/constants.d.ts +53 -32
  36. package/dist/constants.js +23 -19
  37. package/dist/lib/collect.d.ts +1 -1
  38. package/dist/lib/collect.js +2 -2
  39. package/dist/lib/disk.d.ts +10 -0
  40. package/dist/lib/disk.js +32 -0
  41. package/dist/lib/get-input/get-config.d.ts +9 -0
  42. package/dist/lib/get-input/get-config.js +112 -0
  43. package/dist/lib/get-input/get-instances.d.ts +21 -0
  44. package/dist/lib/get-input/get-instances.js +133 -0
  45. package/dist/lib/get-input/get-wrappers/get-file-paths.d.ts +15 -0
  46. package/dist/lib/get-input/get-wrappers/get-file-paths.js +48 -0
  47. package/dist/lib/get-input/get-wrappers/get-patterns/get-lerna-patterns.d.ts +3 -0
  48. package/dist/lib/get-input/get-wrappers/get-patterns/get-lerna-patterns.js +36 -0
  49. package/dist/lib/get-input/get-wrappers/get-patterns/get-pnpm-patterns.d.ts +3 -0
  50. package/dist/lib/get-input/get-wrappers/get-patterns/get-pnpm-patterns.js +41 -0
  51. package/dist/lib/get-input/get-wrappers/get-patterns/get-yarn-patterns.d.ts +3 -0
  52. package/dist/lib/get-input/get-wrappers/get-patterns/get-yarn-patterns.js +42 -0
  53. package/dist/lib/get-input/get-wrappers/get-patterns/index.d.ts +13 -0
  54. package/dist/lib/get-input/get-wrappers/get-patterns/index.js +72 -0
  55. package/dist/lib/get-input/get-wrappers/get-patterns/props.d.ts +7 -0
  56. package/dist/lib/get-input/get-wrappers/get-patterns/props.js +39 -0
  57. package/dist/lib/get-input/get-wrappers/get-patterns/read-json-safe.d.ts +4 -0
  58. package/dist/lib/get-input/get-wrappers/get-patterns/read-json-safe.js +37 -0
  59. package/dist/lib/get-input/get-wrappers/get-patterns/read-yaml-safe.d.ts +3 -0
  60. package/dist/lib/get-input/get-wrappers/get-patterns/read-yaml-safe.js +30 -0
  61. package/dist/lib/get-input/get-wrappers/index.d.ts +34 -0
  62. package/dist/lib/get-input/get-wrappers/index.js +36 -0
  63. package/dist/lib/get-input/get-wrappers/readonly.d.ts +4 -0
  64. package/dist/lib/get-input/get-wrappers/readonly.js +10 -0
  65. package/dist/lib/get-input/get-wrappers/tap.d.ts +5 -0
  66. package/dist/lib/get-input/get-wrappers/tap.js +39 -0
  67. package/dist/lib/get-input/get-wrappers/try-catch.d.ts +5 -0
  68. package/dist/lib/get-input/get-wrappers/try-catch.js +13 -0
  69. package/dist/lib/get-input/index.d.ts +18 -0
  70. package/dist/lib/get-input/index.js +33 -0
  71. package/dist/lib/group-by.d.ts +1 -0
  72. package/dist/lib/group-by.js +11 -0
  73. package/dist/lib/is-semver.d.ts +4 -0
  74. package/dist/lib/is-semver.js +26 -0
  75. package/dist/lib/matches-filter.d.ts +3 -0
  76. package/dist/lib/matches-filter.js +10 -0
  77. package/dist/lib/set-semver-range.d.ts +2 -0
  78. package/dist/lib/set-semver-range.js +19 -0
  79. package/dist/lib/sort-by-name.d.ts +5 -0
  80. package/dist/{commands/lib/installations → lib}/sort-by-name.js +2 -2
  81. package/dist/lib/write-if-changed.d.ts +10 -0
  82. package/dist/lib/write-if-changed.js +23 -0
  83. package/dist/option.d.ts +12 -0
  84. package/dist/option.js +42 -0
  85. package/package.json +41 -39
  86. package/CHANGELOG.md +0 -396
  87. package/dist/bin-fix-mismatches.js +0 -56
  88. package/dist/bin-format.js +0 -48
  89. package/dist/bin-list-mismatches.js +0 -54
  90. package/dist/bin-list.js +0 -54
  91. package/dist/bin-set-semver-ranges.js +0 -58
  92. package/dist/commands/fix-mismatches.d.ts +0 -6
  93. package/dist/commands/fix-mismatches.js +0 -58
  94. package/dist/commands/format.d.ts +0 -6
  95. package/dist/commands/format.js +0 -49
  96. package/dist/commands/lib/get-dependency-types.d.ts +0 -8
  97. package/dist/commands/lib/get-dependency-types.js +0 -14
  98. package/dist/commands/lib/get-highest-version.d.ts +0 -1
  99. package/dist/commands/lib/get-wrappers.d.ts +0 -42
  100. package/dist/commands/lib/get-wrappers.js +0 -46
  101. package/dist/commands/lib/installations/get-dependencies.d.ts +0 -19
  102. package/dist/commands/lib/installations/get-dependencies.js +0 -121
  103. package/dist/commands/lib/installations/get-grouped-mismatched-dependencies.d.ts +0 -4
  104. package/dist/commands/lib/installations/get-grouped-mismatched-dependencies.js +0 -133
  105. package/dist/commands/lib/installations/get-installations-of.d.ts +0 -4
  106. package/dist/commands/lib/installations/get-installations-of.js +0 -105
  107. package/dist/commands/lib/installations/get-mismatched-dependencies.d.ts +0 -4
  108. package/dist/commands/lib/installations/get-mismatched-dependencies.js +0 -131
  109. package/dist/commands/lib/installations/sort-by-name.d.ts +0 -2
  110. package/dist/commands/lib/is-semver.d.ts +0 -4
  111. package/dist/commands/lib/is-semver.js +0 -23
  112. package/dist/commands/lib/log.d.ts +0 -2
  113. package/dist/commands/lib/log.js +0 -31
  114. package/dist/commands/lib/matches-filter.d.ts +0 -4
  115. package/dist/commands/lib/matches-filter.js +0 -8
  116. package/dist/commands/lib/write-if-changed.d.ts +0 -2
  117. package/dist/commands/lib/write-if-changed.js +0 -26
  118. package/dist/commands/list-mismatches.d.ts +0 -7
  119. package/dist/commands/list-mismatches.js +0 -39
  120. package/dist/commands/list.d.ts +0 -6
  121. package/dist/commands/list.js +0 -42
  122. package/dist/commands/set-semver-ranges.d.ts +0 -7
  123. package/dist/commands/set-semver-ranges.js +0 -76
  124. package/dist/lib/get-config.d.ts +0 -2
  125. package/dist/lib/get-config.js +0 -40
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
3
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
+ return cooked;
5
+ };
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ exports.__esModule = true;
10
+ exports.listMismatches = void 0;
11
+ var chalk_1 = __importDefault(require("chalk"));
12
+ var list_version_groups_1 = require("../bin-list/list-version-groups");
13
+ var matches_filter_1 = require("../lib/matches-filter");
14
+ function listMismatches(input) {
15
+ var isInvalid = false;
16
+ /**
17
+ * Reverse the list so the default/ungrouped version group is rendered first
18
+ * (appears at the top). The actual version groups which the user configured
19
+ * will then start from index 1.
20
+ */
21
+ input.instances.versionGroups.reverse().forEach(function (versionGroup, i) {
22
+ var isVersionGroup = i > 0;
23
+ var filtered = versionGroup.instances.filter((0, matches_filter_1.matchesFilter)(input));
24
+ var ungrouped = (0, list_version_groups_1.listVersionGroups)(filtered);
25
+ if (isVersionGroup) {
26
+ console.log((0, chalk_1["default"])(templateObject_1 || (templateObject_1 = __makeTemplateObject(["{dim = Version Group ", " ", "}"], ["{dim = Version Group ", " ", "}"])), i, '='.repeat(63)));
27
+ }
28
+ ungrouped.forEach(function (_a) {
29
+ var hasMismatches = _a.hasMismatches, instances = _a.instances, name = _a.name;
30
+ if (hasMismatches) {
31
+ console.log((0, chalk_1["default"])(templateObject_2 || (templateObject_2 = __makeTemplateObject(["{red \u2715 ", "}"], ["{red \u2715 ", "}"])), name));
32
+ instances.forEach(function (_a) {
33
+ var dependencyType = _a.dependencyType, version = _a.version, wrapper = _a.wrapper;
34
+ console.log((0, chalk_1["default"])(templateObject_3 || (templateObject_3 = __makeTemplateObject(["{dim -} ", " {dim in ", " of} ", ""], ["{dim -} ", " {dim in ", " of} ", ""])), version, dependencyType, wrapper.contents.name));
35
+ });
36
+ }
37
+ });
38
+ });
39
+ if (isInvalid) {
40
+ process.exit(1);
41
+ }
42
+ }
43
+ exports.listMismatches = listMismatches;
44
+ var templateObject_1, templateObject_2, templateObject_3;
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,68 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
4
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
5
+ return cooked;
6
+ };
7
+ var __read = (this && this.__read) || function (o, n) {
8
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
9
+ if (!m) return o;
10
+ var i = m.call(o), r, ar = [], e;
11
+ try {
12
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
13
+ }
14
+ catch (error) { e = { error: error }; }
15
+ finally {
16
+ try {
17
+ if (r && !r.done && (m = i["return"])) m.call(i);
18
+ }
19
+ finally { if (e) throw e.error; }
20
+ }
21
+ return ar;
22
+ };
23
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
24
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
25
+ if (ar || !(i in from)) {
26
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
27
+ ar[i] = from[i];
28
+ }
29
+ }
30
+ return to.concat(ar || Array.prototype.slice.call(from));
31
+ };
32
+ var __importDefault = (this && this.__importDefault) || function (mod) {
33
+ return (mod && mod.__esModule) ? mod : { "default": mod };
34
+ };
35
+ var _a, _b, _c, _d, _e, _f, _g, _h;
36
+ exports.__esModule = true;
37
+ var chalk_1 = __importDefault(require("chalk"));
38
+ var commander_1 = require("commander");
39
+ var option_1 = require("../option");
40
+ var disk_1 = require("../lib/disk");
41
+ var get_input_1 = require("../lib/get-input");
42
+ var set_semver_ranges_1 = require("./set-semver-ranges");
43
+ commander_1.program.description((0, chalk_1["default"])(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n Ensure dependency versions within {yellow dependencies}, {yellow devDependencies},\n {yellow peerDependencies}, {yellow overrides}, and {yellow resolutions} follow a consistent format."], ["\n Ensure dependency versions within {yellow dependencies}, {yellow devDependencies},\n {yellow peerDependencies}, {yellow overrides}, and {yellow resolutions} follow a consistent format."]))).replace(/^\n/, ''));
44
+ commander_1.program.on('--help', function () {
45
+ console.log((0, chalk_1["default"])(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\nExamples:\n {dim # uses defaults for resolving packages}\n syncpack set-semver-ranges\n {dim # uses packages defined by --source when provided}\n syncpack set-semver-ranges --source {yellow \"apps/*/package.json\"}\n {dim # multiple globs can be provided like this}\n syncpack set-semver-ranges --source {yellow \"apps/*/package.json\"} --source {yellow \"core/*/package.json\"}\n {dim # uses dependencies regular expression defined by --filter when provided}\n syncpack set-semver-ranges --filter {yellow \"typescript|tslint\"}\n {dim # use ~ range instead of default \"\"}\n syncpack set-semver-ranges --semver-range ~\n {dim # set ~ range in \"devDependencies\"}\n syncpack set-semver-ranges --dev --semver-range ~\n {dim # set ~ range in \"devDependencies\" and \"peerDependencies\"}\n syncpack set-semver-ranges --dev --peer --semver-range ~\n {dim # indent package.json with 4 spaces instead of 2}\n syncpack set-semver-ranges --indent {yellow \" \"}\n\nSupported Ranges:\n < {dim <1.4.2}\n <= {dim <=1.4.2}\n \"\" {dim 1.4.2}\n ~ {dim ~1.4.2}\n ^ {dim ^1.4.2}\n >= {dim >=1.4.2}\n > {dim >1.4.2}\n * {dim *}\n\nResolving Packages:\n 1. If {yellow --source} globs are provided, use those.\n 2. If using Pnpm Workspaces, read {yellow packages} from {yellow pnpm-workspace.yaml} in the root of the project.\n 3. If using Yarn Workspaces, read {yellow workspaces} from {yellow package.json}.\n 4. If using Lerna, read {yellow packages} from {yellow lerna.json}.\n 5. Default to {yellow \"package.json\"} and {yellow \"packages/*/package.json\"}.\n\nReference:\n globs {blue.underline https://github.com/isaacs/node-glob#glob-primer}\n lerna.json {blue.underline https://github.com/lerna/lerna#lernajson}\n Yarn Workspaces {blue.underline https://yarnpkg.com/lang/en/docs/workspaces}\n Pnpm Workspaces {blue.underline https://pnpm.js.org/en/workspaces}\n"], ["\nExamples:\n {dim # uses defaults for resolving packages}\n syncpack set-semver-ranges\n {dim # uses packages defined by --source when provided}\n syncpack set-semver-ranges --source {yellow \"apps/*/package.json\"}\n {dim # multiple globs can be provided like this}\n syncpack set-semver-ranges --source {yellow \"apps/*/package.json\"} --source {yellow \"core/*/package.json\"}\n {dim # uses dependencies regular expression defined by --filter when provided}\n syncpack set-semver-ranges --filter {yellow \"typescript|tslint\"}\n {dim # use ~ range instead of default \"\"}\n syncpack set-semver-ranges --semver-range ~\n {dim # set ~ range in \"devDependencies\"}\n syncpack set-semver-ranges --dev --semver-range ~\n {dim # set ~ range in \"devDependencies\" and \"peerDependencies\"}\n syncpack set-semver-ranges --dev --peer --semver-range ~\n {dim # indent package.json with 4 spaces instead of 2}\n syncpack set-semver-ranges --indent {yellow \" \"}\n\nSupported Ranges:\n < {dim <1.4.2}\n <= {dim <=1.4.2}\n \"\" {dim 1.4.2}\n ~ {dim ~1.4.2}\n ^ {dim ^1.4.2}\n >= {dim >=1.4.2}\n > {dim >1.4.2}\n * {dim *}\n\nResolving Packages:\n 1. If {yellow --source} globs are provided, use those.\n 2. If using Pnpm Workspaces, read {yellow packages} from {yellow pnpm-workspace.yaml} in the root of the project.\n 3. If using Yarn Workspaces, read {yellow workspaces} from {yellow package.json}.\n 4. If using Lerna, read {yellow packages} from {yellow lerna.json}.\n 5. Default to {yellow \"package.json\"} and {yellow \"packages/*/package.json\"}.\n\nReference:\n globs {blue.underline https://github.com/isaacs/node-glob#glob-primer}\n lerna.json {blue.underline https://github.com/lerna/lerna#lernajson}\n Yarn Workspaces {blue.underline https://yarnpkg.com/lang/en/docs/workspaces}\n Pnpm Workspaces {blue.underline https://pnpm.js.org/en/workspaces}\n"]))));
46
+ });
47
+ (_a = (_b = (_c = (_d = (_e = (_f = (_g = (_h = commander_1.program
48
+ .option.apply(commander_1.program, __spreadArray([], __read(option_1.option.source), false)))
49
+ .option.apply(_h, __spreadArray([], __read(option_1.option.prod), false)))
50
+ .option.apply(_g, __spreadArray([], __read(option_1.option.dev), false)))
51
+ .option.apply(_f, __spreadArray([], __read(option_1.option.peer), false)))
52
+ .option.apply(_e, __spreadArray([], __read(option_1.option.resolutions), false)))
53
+ .option.apply(_d, __spreadArray([], __read(option_1.option.overrides), false)))
54
+ .option.apply(_c, __spreadArray([], __read(option_1.option.filter), false)))
55
+ .option.apply(_b, __spreadArray([], __read(option_1.option.indent), false)))
56
+ .option.apply(_a, __spreadArray([], __read(option_1.option.semverRange), false)).parse(process.argv);
57
+ (0, set_semver_ranges_1.setSemverRanges)((0, get_input_1.getInput)(disk_1.disk, {
58
+ dev: commander_1.program.opts().dev,
59
+ filter: commander_1.program.opts().filter,
60
+ indent: commander_1.program.opts().indent,
61
+ overrides: commander_1.program.opts().overrides,
62
+ peer: commander_1.program.opts().peer,
63
+ prod: commander_1.program.opts().prod,
64
+ resolutions: commander_1.program.opts().resolutions,
65
+ semverRange: commander_1.program.opts().semverRange,
66
+ source: commander_1.program.opts().source
67
+ }), disk_1.disk);
68
+ var templateObject_1, templateObject_2;
@@ -0,0 +1,3 @@
1
+ import type { Disk } from '../lib/disk';
2
+ import type { ProgramInput } from '../lib/get-input';
3
+ export declare const setSemverRanges: (input: ProgramInput, disk: Disk) => void;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ exports.__esModule = true;
14
+ exports.setSemverRanges = void 0;
15
+ var list_semver_group_mismatches_1 = require("../bin-lint-semver-ranges/list-semver-group-mismatches");
16
+ var matches_filter_1 = require("../lib/matches-filter");
17
+ var set_semver_range_1 = require("../lib/set-semver-range");
18
+ var write_if_changed_1 = require("../lib/write-if-changed");
19
+ var setSemverRanges = function (input, disk) {
20
+ input.instances.semverGroups.reverse().forEach(function (semverGroup) {
21
+ var mismatches = (0, list_semver_group_mismatches_1.listSemverGroupMismatches)(__assign(__assign({}, semverGroup), { instances: semverGroup.instances.filter((0, matches_filter_1.matchesFilter)(input)) }));
22
+ mismatches.forEach(function (_a) {
23
+ var dependencyType = _a.dependencyType, name = _a.name, version = _a.version, wrapper = _a.wrapper;
24
+ var root = wrapper.contents;
25
+ root[dependencyType][name] = (0, set_semver_range_1.setSemverRange)(semverGroup.range, version);
26
+ });
27
+ });
28
+ input.wrappers.forEach(function (wrapper) {
29
+ (0, write_if_changed_1.writeIfChanged)(disk, {
30
+ contents: wrapper.contents,
31
+ filePath: wrapper.filePath,
32
+ indent: input.indent,
33
+ json: wrapper.json
34
+ });
35
+ });
36
+ };
37
+ exports.setSemverRanges = setSemverRanges;
package/dist/bin.js CHANGED
@@ -1,12 +1,26 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
3
  exports.__esModule = true;
4
- var program = require("commander");
5
- program
4
+ var commander_1 = require("commander");
5
+ commander_1.program
6
6
  .version(require('../package.json').version)
7
- .command('fix-mismatches', 'set dependencies used with different versions to the same version')
8
- .command('format', 'sort and shorten properties according to a convention')
9
- .command('list', 'list every dependency used in your packages', { isDefault: true })
10
- .command('list-mismatches', 'list every dependency used with different versions in your packages')
11
- .command('set-semver-ranges', 'set semver ranges to the given format')
7
+ .command('fix-mismatches', 'set dependencies used with different versions to the same version', {
8
+ executableFile: './bin-fix-mismatches/index.js'
9
+ })
10
+ .command('format', 'sort and shorten properties according to a convention', {
11
+ executableFile: './bin-format/index.js'
12
+ })
13
+ .command('lint-semver-ranges', 'check dependency versions comply with the given semver range format', {
14
+ executableFile: './bin-lint-semver-ranges/index.js'
15
+ })
16
+ .command('list-mismatches', 'list every dependency used with different versions in your packages', {
17
+ executableFile: './bin-list-mismatches/index.js'
18
+ })
19
+ .command('list', 'list every dependency used in your packages', {
20
+ executableFile: './bin-list/index.js',
21
+ isDefault: true
22
+ })
23
+ .command('set-semver-ranges', 'set semver ranges to the given format', {
24
+ executableFile: './bin-set-semver-ranges/index.js'
25
+ })
12
26
  .parse(process.argv);
@@ -1,20 +1,21 @@
1
- import { collect } from './lib/collect';
2
- export declare type DependencyType = 'dependencies' | 'devDependencies' | 'peerDependencies';
3
- export declare const DEPENDENCY_TYPES: DependencyType[];
4
- export declare const GREATER = 1;
5
- export declare const LESSER = -1;
6
- export declare const SAME = 0;
7
- export declare type ValidRange = '*' | '' | '>' | '>=' | '.x' | '<' | '<=' | '^' | '~';
8
- export declare const RANGE_ANY = "*";
9
- export declare const RANGE_EXACT = "";
10
- export declare const RANGE_GT = ">";
11
- export declare const RANGE_GTE = ">=";
12
- export declare const RANGE_LOOSE = ".x";
13
- export declare const RANGE_LT = "<";
14
- export declare const RANGE_LTE = "<=";
15
- export declare const RANGE_MINOR = "^";
16
- export declare const RANGE_PATCH = "~";
17
- export declare const SEMVER_ORDER: ValidRange[];
1
+ export declare type DependencyType = 'dependencies' | 'devDependencies' | 'overrides' | 'peerDependencies' | 'resolutions';
2
+ export declare type DependencyOption = Pick<SyncpackConfig, 'dev' | 'overrides' | 'peer' | 'prod' | 'resolutions'>;
3
+ export declare type ValidRange = typeof RANGE_ANY | typeof RANGE_EXACT | typeof RANGE_GT | typeof RANGE_GTE | typeof RANGE_LOOSE | typeof RANGE_LT | typeof RANGE_LTE | typeof RANGE_MINOR | typeof RANGE_PATCH;
4
+ export interface SemverGroup {
5
+ /**
6
+ * the names of packages in your monorepo which belong to this group, taken
7
+ * from the "name" field in package.json, not the package directory name
8
+ */
9
+ packages: string[];
10
+ /**
11
+ * the names of the dependencies (eg. "lodash") which belong to this group
12
+ */
13
+ dependencies: string[];
14
+ /**
15
+ * the semver range which dependencies in this group should use
16
+ */
17
+ range: ValidRange;
18
+ }
18
19
  export interface VersionGroup {
19
20
  /**
20
21
  * the names of packages in your monorepo which belong to this group, taken
@@ -27,20 +28,28 @@ export interface VersionGroup {
27
28
  dependencies: string[];
28
29
  }
29
30
  export declare type SyncpackConfig = Readonly<{
31
+ /**
32
+ * which dependency properties to search within
33
+ */
34
+ dependencyTypes: DependencyType[];
30
35
  /**
31
36
  * whether to search within devDependencies
32
37
  */
33
38
  dev: boolean;
34
39
  /**
35
- * A string which will be passed to `new RegExp()` to match against package
40
+ * a string which will be passed to `new RegExp()` to match against package
36
41
  * names that should be included
37
42
  */
38
43
  filter: string;
39
44
  /**
40
- * The character(s) to be used to indent your package.json files when writing
45
+ * the character(s) to be used to indent your package.json files when writing
41
46
  * to disk
42
47
  */
43
48
  indent: string;
49
+ /**
50
+ * whether to search within pnpm overrides
51
+ */
52
+ overrides: boolean;
44
53
  /**
45
54
  * whether to search within peerDependencies
46
55
  */
@@ -49,11 +58,19 @@ export declare type SyncpackConfig = Readonly<{
49
58
  * whether to search within dependencies
50
59
  */
51
60
  prod: boolean;
61
+ /**
62
+ * whether to search within yarn resolutions
63
+ */
64
+ resolutions: boolean;
65
+ /**
66
+ *
67
+ */
68
+ semverGroups: SemverGroup[];
52
69
  /**
53
70
  * defaults to `""` to ensure that exact dependency versions are used instead
54
71
  * of loose ranges
55
72
  */
56
- semverRange: string;
73
+ semverRange: ValidRange;
57
74
  /**
58
75
  * which fields within package.json files should be sorted alphabetically
59
76
  */
@@ -72,16 +89,20 @@ export declare type SyncpackConfig = Readonly<{
72
89
  */
73
90
  versionGroups: VersionGroup[];
74
91
  }>;
75
- export declare const DEFAULT_CONFIG: SyncpackConfig;
76
92
  export declare const ALL_PATTERNS: string[];
77
- interface OptionsByName {
78
- dev: [string, string];
79
- filter: [string, string];
80
- indent: [string, string];
81
- peer: [string, string];
82
- prod: [string, string];
83
- semverRange: [string, string];
84
- source: [string, string, typeof collect, string[]];
85
- }
86
- export declare const option: OptionsByName;
87
- export {};
93
+ export declare const DEPENDENCY_TYPES: DependencyType[];
94
+ export declare const CWD: string;
95
+ export declare const GREATER = 1;
96
+ export declare const LESSER = -1;
97
+ export declare const SAME = 0;
98
+ export declare const RANGE_ANY = "*";
99
+ export declare const RANGE_EXACT = "";
100
+ export declare const RANGE_GT = ">";
101
+ export declare const RANGE_GTE = ">=";
102
+ export declare const RANGE_LOOSE = ".x";
103
+ export declare const RANGE_LT = "<";
104
+ export declare const RANGE_LTE = "<=";
105
+ export declare const RANGE_MINOR = "^";
106
+ export declare const RANGE_PATCH = "~";
107
+ export declare const SEMVER_ORDER: ValidRange[];
108
+ export declare const DEFAULT_CONFIG: SyncpackConfig;
package/dist/constants.js CHANGED
@@ -1,8 +1,15 @@
1
1
  "use strict";
2
2
  exports.__esModule = true;
3
- exports.option = exports.ALL_PATTERNS = exports.DEFAULT_CONFIG = exports.SEMVER_ORDER = exports.RANGE_PATCH = exports.RANGE_MINOR = exports.RANGE_LTE = exports.RANGE_LT = exports.RANGE_LOOSE = exports.RANGE_GTE = exports.RANGE_GT = exports.RANGE_EXACT = exports.RANGE_ANY = exports.SAME = exports.LESSER = exports.GREATER = exports.DEPENDENCY_TYPES = void 0;
4
- var collect_1 = require("./lib/collect");
5
- exports.DEPENDENCY_TYPES = ['dependencies', 'devDependencies', 'peerDependencies'];
3
+ exports.DEFAULT_CONFIG = exports.SEMVER_ORDER = exports.RANGE_PATCH = exports.RANGE_MINOR = exports.RANGE_LTE = exports.RANGE_LT = exports.RANGE_LOOSE = exports.RANGE_GTE = exports.RANGE_GT = exports.RANGE_EXACT = exports.RANGE_ANY = exports.SAME = exports.LESSER = exports.GREATER = exports.CWD = exports.DEPENDENCY_TYPES = exports.ALL_PATTERNS = void 0;
4
+ exports.ALL_PATTERNS = ['package.json', 'packages/*/package.json'];
5
+ exports.DEPENDENCY_TYPES = [
6
+ 'dependencies',
7
+ 'devDependencies',
8
+ 'overrides',
9
+ 'peerDependencies',
10
+ 'resolutions',
11
+ ];
12
+ exports.CWD = process.cwd();
6
13
  exports.GREATER = 1;
7
14
  exports.LESSER = -1;
8
15
  exports.SAME = 0;
@@ -26,29 +33,26 @@ exports.SEMVER_ORDER = [
26
33
  exports.RANGE_ANY,
27
34
  ];
28
35
  exports.DEFAULT_CONFIG = {
36
+ dependencyTypes: [],
29
37
  dev: true,
30
38
  filter: '.',
31
39
  indent: ' ',
40
+ overrides: true,
32
41
  peer: true,
33
42
  prod: true,
43
+ resolutions: true,
44
+ semverGroups: [],
34
45
  semverRange: '',
35
- sortAz: ['contributors', 'dependencies', 'devDependencies', 'keywords', 'peerDependencies', 'resolutions', 'scripts'],
46
+ sortAz: [
47
+ 'contributors',
48
+ 'dependencies',
49
+ 'devDependencies',
50
+ 'keywords',
51
+ 'peerDependencies',
52
+ 'resolutions',
53
+ 'scripts',
54
+ ],
36
55
  sortFirst: ['name', 'description', 'version', 'author'],
37
56
  source: [],
38
57
  versionGroups: []
39
58
  };
40
- var MONOREPO_PATTERN = 'package.json';
41
- var PACKAGES_PATTERN = 'packages/*/package.json';
42
- exports.ALL_PATTERNS = [MONOREPO_PATTERN, PACKAGES_PATTERN];
43
- exports.option = {
44
- dev: ['-d, --dev', 'include devDependencies'],
45
- filter: ['-f, --filter [pattern]', 'regex for dependency filter'],
46
- indent: ['-i, --indent [value]', "override indentation. defaults to \"" + exports.DEFAULT_CONFIG.indent + "\""],
47
- peer: ['-P, --peer', 'include peerDependencies'],
48
- prod: ['-p, --prod', 'include dependencies'],
49
- semverRange: [
50
- '-r, --semver-range <range>',
51
- "see supported ranges below. defaults to \"" + exports.DEFAULT_CONFIG.semverRange + "\"",
52
- ],
53
- source: ['-s, --source [pattern]', 'glob pattern for package.json files to read from', collect_1.collect, []]
54
- };
@@ -1 +1 @@
1
- export declare const collect: (value: string, previous: string[]) => string[];
1
+ export declare function collect(value: string, previous: string[]): string[];
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  exports.__esModule = true;
3
3
  exports.collect = void 0;
4
- var collect = function (value, previous) {
4
+ function collect(value, previous) {
5
5
  return previous.concat([value]);
6
- };
6
+ }
7
7
  exports.collect = collect;
@@ -0,0 +1,10 @@
1
+ import type { SyncpackConfig } from '../constants';
2
+ export declare type Disk = typeof disk;
3
+ export declare const disk: {
4
+ readonly globSync: (pattern: string) => string[];
5
+ readonly readConfigFileSync: () => Partial<SyncpackConfig>;
6
+ readonly readFileSync: (filePath: string) => string;
7
+ readonly readYamlFileSync: <T = unknown>(filePath: string) => T;
8
+ readonly removeSync: (filePath: string) => void;
9
+ readonly writeFileSync: (filePath: string, contents: string) => void;
10
+ };
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.disk = void 0;
4
+ var cosmiconfig_1 = require("cosmiconfig");
5
+ var expect_more_1 = require("expect-more");
6
+ var fs_extra_1 = require("fs-extra");
7
+ var glob_1 = require("glob");
8
+ var read_yaml_file_1 = require("read-yaml-file");
9
+ var constants_1 = require("../constants");
10
+ exports.disk = {
11
+ globSync: function (pattern) {
12
+ return (0, glob_1.sync)(pattern, { absolute: true, cwd: constants_1.CWD });
13
+ },
14
+ readConfigFileSync: function () {
15
+ var rcSearch = (0, cosmiconfig_1.cosmiconfigSync)('syncpack').search();
16
+ var rcConfig = rcSearch !== null ? rcSearch.config : {};
17
+ var rcFile = (0, expect_more_1.isObject)(rcConfig) ? rcConfig : {};
18
+ return rcFile;
19
+ },
20
+ readFileSync: function (filePath) {
21
+ return (0, fs_extra_1.readFileSync)(filePath, { encoding: 'utf8' });
22
+ },
23
+ readYamlFileSync: function (filePath) {
24
+ return (0, read_yaml_file_1.sync)(filePath);
25
+ },
26
+ removeSync: function (filePath) {
27
+ (0, fs_extra_1.removeSync)(filePath);
28
+ },
29
+ writeFileSync: function (filePath, contents) {
30
+ (0, fs_extra_1.writeFileSync)(filePath, contents);
31
+ }
32
+ };
@@ -0,0 +1,9 @@
1
+ import type { SyncpackConfig } from '../../constants';
2
+ /**
3
+ * Take all configuration from the command line and config file, combine it, and
4
+ * set defaults for anything which hasn't been defined.
5
+ *
6
+ * @param rcFile Optional configuration file contents
7
+ * @param program Optional command line options
8
+ */
9
+ export declare const getConfig: (rcFile: Partial<SyncpackConfig>, program: Partial<SyncpackConfig>) => SyncpackConfig;
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.getConfig = void 0;
4
+ var expect_more_1 = require("expect-more");
5
+ var constants_1 = require("../../constants");
6
+ var is_semver_1 = require("../../lib/is-semver");
7
+ /**
8
+ * Take all configuration from the command line and config file, combine it, and
9
+ * set defaults for anything which hasn't been defined.
10
+ *
11
+ * @param rcFile Optional configuration file contents
12
+ * @param program Optional command line options
13
+ */
14
+ var getConfig = function (rcFile, program) {
15
+ var hasTypeOverride = (0, expect_more_1.isBoolean)(program.dev) ||
16
+ (0, expect_more_1.isBoolean)(program.overrides) ||
17
+ (0, expect_more_1.isBoolean)(program.peer) ||
18
+ (0, expect_more_1.isBoolean)(program.prod) ||
19
+ (0, expect_more_1.isBoolean)(program.resolutions);
20
+ var dev = hasTypeOverride
21
+ ? Boolean(program.dev)
22
+ : getOption('dev', expect_more_1.isBoolean);
23
+ var overrides = hasTypeOverride
24
+ ? Boolean(program.overrides)
25
+ : getOption('overrides', expect_more_1.isBoolean);
26
+ var peer = hasTypeOverride
27
+ ? Boolean(program.peer)
28
+ : getOption('peer', expect_more_1.isBoolean);
29
+ var prod = hasTypeOverride
30
+ ? Boolean(program.prod)
31
+ : getOption('prod', expect_more_1.isBoolean);
32
+ var resolutions = hasTypeOverride
33
+ ? Boolean(program.resolutions)
34
+ : getOption('resolutions', expect_more_1.isBoolean);
35
+ var dependencyTypes = dev || overrides || peer || prod || resolutions
36
+ ? constants_1.DEPENDENCY_TYPES.filter(function (type) {
37
+ return (type === 'devDependencies' && dev) ||
38
+ (type === 'overrides' && overrides) ||
39
+ (type === 'peerDependencies' && peer) ||
40
+ (type === 'dependencies' && prod) ||
41
+ (type === 'resolutions' && resolutions);
42
+ })
43
+ : constants_1.DEPENDENCY_TYPES;
44
+ var filter = getOption('filter', expect_more_1.isNonEmptyString);
45
+ var indent = getOption('indent', expect_more_1.isNonEmptyString);
46
+ var semverRange = getOption('semverRange', is_semver_1.isValidSemverRange);
47
+ var sortAz = getOption('sortAz', expect_more_1.isArrayOfStrings);
48
+ var sortFirst = getOption('sortFirst', expect_more_1.isArrayOfStrings);
49
+ var source = getOption('source', expect_more_1.isArrayOfStrings);
50
+ /**
51
+ * Every instance must belong to a semver group, even if that semver group is
52
+ * this one which represents a default, no special treatment group.
53
+ */
54
+ var defaultSemverGroup = {
55
+ range: semverRange,
56
+ dependencies: ['**'],
57
+ packages: ['**']
58
+ };
59
+ var semverGroups = getOption('semverGroups', isArrayOfSemverGroups).concat(defaultSemverGroup);
60
+ /**
61
+ * Every instance must belong to a semver group, even if that semver group is
62
+ * this one which represents a default, no special treatment group.
63
+ */
64
+ var defaultVersionGroup = {
65
+ packages: ['**'],
66
+ dependencies: ['**']
67
+ };
68
+ var versionGroups = getOption('versionGroups', isArrayOfVersionGroups).concat(defaultVersionGroup);
69
+ return {
70
+ dependencyTypes: dependencyTypes,
71
+ dev: dev,
72
+ filter: filter,
73
+ indent: indent,
74
+ overrides: overrides,
75
+ peer: peer,
76
+ prod: prod,
77
+ resolutions: resolutions,
78
+ semverGroups: semverGroups,
79
+ semverRange: semverRange,
80
+ sortAz: sortAz,
81
+ sortFirst: sortFirst,
82
+ source: source,
83
+ versionGroups: versionGroups
84
+ };
85
+ function getOption(name, isValid) {
86
+ var cliOption = program[name];
87
+ if (isValid(cliOption))
88
+ return cliOption;
89
+ var configOption = rcFile[name];
90
+ if (isValid(configOption))
91
+ return configOption;
92
+ return constants_1.DEFAULT_CONFIG[name];
93
+ }
94
+ function isArrayOfSemverGroups(value) {
95
+ return ((0, expect_more_1.isArray)(value) &&
96
+ value.every(function (value) {
97
+ return (0, expect_more_1.isObject)(value) &&
98
+ (0, expect_more_1.isArrayOfStrings)(value.packages) &&
99
+ (0, expect_more_1.isArrayOfStrings)(value.dependencies) &&
100
+ (0, expect_more_1.isString)(value.range);
101
+ }));
102
+ }
103
+ function isArrayOfVersionGroups(value) {
104
+ return ((0, expect_more_1.isArray)(value) &&
105
+ value.every(function (value) {
106
+ return (0, expect_more_1.isObject)(value) &&
107
+ (0, expect_more_1.isArrayOfStrings)(value.packages) &&
108
+ (0, expect_more_1.isArrayOfStrings)(value.dependencies);
109
+ }));
110
+ }
111
+ };
112
+ exports.getConfig = getConfig;
@@ -0,0 +1,21 @@
1
+ import type { DependencyType, SemverGroup, SyncpackConfig, VersionGroup } from '../../constants';
2
+ import type { SourceWrapper } from './get-wrappers';
3
+ export interface Instance {
4
+ dependencyType: DependencyType;
5
+ name: string;
6
+ version: string;
7
+ wrapper: SourceWrapper;
8
+ }
9
+ export interface InstanceIndex {
10
+ instances: Instance[];
11
+ instancesByName: InstancesByName;
12
+ }
13
+ export declare type InstancesByName = Record<string, Instance[]>;
14
+ export declare type IndexedSemverGroup = SemverGroup & InstanceIndex;
15
+ export declare type IndexedVersionGroup = VersionGroup & InstanceIndex;
16
+ export interface Instances {
17
+ all: Instance[];
18
+ semverGroups: IndexedSemverGroup[];
19
+ versionGroups: IndexedVersionGroup[];
20
+ }
21
+ export declare function getInstances(options: SyncpackConfig, wrappers: SourceWrapper[]): Instances;