syncpack 5.8.12 → 6.1.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.
- package/README.md +211 -91
- package/dist/bin-fix-mismatches/fix-mismatches.d.ts +3 -0
- package/dist/bin-fix-mismatches/fix-mismatches.js +51 -0
- package/dist/bin-fix-mismatches/get-expected-version/get-highest-version.d.ts +1 -0
- package/dist/{commands/lib → bin-fix-mismatches/get-expected-version}/get-highest-version.js +25 -28
- package/dist/bin-fix-mismatches/get-expected-version/get-pinned-version.d.ts +2 -0
- package/dist/bin-fix-mismatches/get-expected-version/get-pinned-version.js +7 -0
- package/dist/bin-fix-mismatches/get-expected-version/get-workspace-version.d.ts +6 -0
- package/dist/bin-fix-mismatches/get-expected-version/get-workspace-version.js +17 -0
- package/dist/bin-fix-mismatches/get-expected-version/index.d.ts +3 -0
- package/dist/bin-fix-mismatches/get-expected-version/index.js +15 -0
- package/dist/{bin-fix-mismatches.d.ts → bin-fix-mismatches/index.d.ts} +0 -0
- package/dist/bin-fix-mismatches/index.js +66 -0
- package/dist/bin-format/format.d.ts +3 -0
- package/dist/bin-format/format.js +44 -0
- package/dist/{bin-format.d.ts → bin-format/index.d.ts} +0 -0
- package/dist/bin-format/index.js +56 -0
- package/dist/{bin-lint-semver-ranges.d.ts → bin-lint-semver-ranges/index.d.ts} +0 -0
- package/dist/bin-lint-semver-ranges/index.js +66 -0
- package/dist/bin-lint-semver-ranges/lint-semver-ranges.d.ts +2 -0
- package/dist/bin-lint-semver-ranges/lint-semver-ranges.js +40 -0
- package/dist/bin-lint-semver-ranges/list-semver-group-mismatches.d.ts +2 -0
- package/dist/bin-lint-semver-ranges/list-semver-group-mismatches.js +12 -0
- package/dist/{bin-list.d.ts → bin-list/index.d.ts} +0 -0
- package/dist/bin-list/index.js +64 -0
- package/dist/bin-list/list-version-groups.d.ts +9 -0
- package/dist/bin-list/list-version-groups.js +46 -0
- package/dist/bin-list/list.d.ts +2 -0
- package/dist/bin-list/list.js +44 -0
- package/dist/{bin-list-mismatches.d.ts → bin-list-mismatches/index.d.ts} +0 -0
- package/dist/bin-list-mismatches/index.js +64 -0
- package/dist/bin-list-mismatches/list-mismatches.d.ts +2 -0
- package/dist/bin-list-mismatches/list-mismatches.js +44 -0
- package/dist/{bin-set-semver-ranges.d.ts → bin-set-semver-ranges/index.d.ts} +0 -0
- package/dist/bin-set-semver-ranges/index.js +68 -0
- package/dist/bin-set-semver-ranges/set-semver-ranges.d.ts +3 -0
- package/dist/bin-set-semver-ranges/set-semver-ranges.js +25 -0
- package/dist/bin.js +19 -6
- package/dist/constants.d.ts +57 -32
- package/dist/constants.js +23 -19
- package/dist/lib/collect.d.ts +1 -1
- package/dist/lib/collect.js +2 -2
- package/dist/lib/disk.d.ts +10 -0
- package/dist/lib/disk.js +32 -0
- package/dist/lib/get-input/get-config.d.ts +9 -0
- package/dist/lib/get-input/get-config.js +112 -0
- package/dist/lib/get-input/get-instances.d.ts +21 -0
- package/dist/lib/get-input/get-instances.js +135 -0
- package/dist/lib/get-input/get-wrappers/get-file-paths.d.ts +15 -0
- package/dist/lib/get-input/get-wrappers/get-file-paths.js +48 -0
- package/dist/lib/get-input/get-wrappers/get-patterns/get-lerna-patterns.d.ts +3 -0
- package/dist/lib/get-input/get-wrappers/get-patterns/get-lerna-patterns.js +36 -0
- package/dist/lib/get-input/get-wrappers/get-patterns/get-pnpm-patterns.d.ts +3 -0
- package/dist/lib/get-input/get-wrappers/get-patterns/get-pnpm-patterns.js +41 -0
- package/dist/lib/get-input/get-wrappers/get-patterns/get-yarn-patterns.d.ts +3 -0
- package/dist/lib/get-input/get-wrappers/get-patterns/get-yarn-patterns.js +42 -0
- package/dist/lib/get-input/get-wrappers/get-patterns/index.d.ts +13 -0
- package/dist/lib/get-input/get-wrappers/get-patterns/index.js +72 -0
- package/dist/lib/get-input/get-wrappers/get-patterns/props.d.ts +7 -0
- package/dist/lib/get-input/get-wrappers/get-patterns/props.js +39 -0
- package/dist/lib/get-input/get-wrappers/get-patterns/read-json-safe.d.ts +4 -0
- package/dist/lib/get-input/get-wrappers/get-patterns/read-json-safe.js +37 -0
- package/dist/lib/get-input/get-wrappers/get-patterns/read-yaml-safe.d.ts +3 -0
- package/dist/lib/get-input/get-wrappers/get-patterns/read-yaml-safe.js +30 -0
- package/dist/lib/get-input/get-wrappers/index.d.ts +34 -0
- package/dist/lib/get-input/get-wrappers/index.js +36 -0
- package/dist/lib/get-input/get-wrappers/readonly.d.ts +4 -0
- package/dist/lib/get-input/get-wrappers/readonly.js +10 -0
- package/dist/lib/get-input/get-wrappers/tap.d.ts +5 -0
- package/dist/lib/get-input/get-wrappers/tap.js +39 -0
- package/dist/lib/get-input/get-wrappers/try-catch.d.ts +5 -0
- package/dist/lib/get-input/get-wrappers/try-catch.js +13 -0
- package/dist/lib/get-input/index.d.ts +18 -0
- package/dist/lib/get-input/index.js +33 -0
- package/dist/lib/group-by.d.ts +1 -0
- package/dist/lib/group-by.js +11 -0
- package/dist/lib/is-semver.d.ts +4 -0
- package/dist/lib/is-semver.js +26 -0
- package/dist/lib/set-semver-range.d.ts +2 -0
- package/dist/lib/set-semver-range.js +19 -0
- package/dist/lib/sort-by-name.d.ts +5 -0
- package/dist/{commands/lib/installations → lib}/sort-by-name.js +2 -2
- package/dist/lib/write-if-changed.d.ts +10 -0
- package/dist/lib/write-if-changed.js +23 -0
- package/dist/option.d.ts +12 -0
- package/dist/option.js +42 -0
- package/package.json +36 -36
- package/CHANGELOG.md +0 -410
- package/dist/bin-fix-mismatches.js +0 -58
- package/dist/bin-format.js +0 -50
- package/dist/bin-lint-semver-ranges.js +0 -58
- package/dist/bin-list-mismatches.js +0 -56
- package/dist/bin-list.js +0 -56
- package/dist/bin-set-semver-ranges.js +0 -60
- package/dist/commands/fix-mismatches.d.ts +0 -6
- package/dist/commands/fix-mismatches.js +0 -58
- package/dist/commands/format.d.ts +0 -6
- package/dist/commands/format.js +0 -49
- package/dist/commands/lib/get-dependency-types.d.ts +0 -8
- package/dist/commands/lib/get-dependency-types.js +0 -14
- package/dist/commands/lib/get-highest-version.d.ts +0 -1
- package/dist/commands/lib/get-wrappers.d.ts +0 -42
- package/dist/commands/lib/get-wrappers.js +0 -46
- package/dist/commands/lib/installations/get-dependencies.d.ts +0 -19
- package/dist/commands/lib/installations/get-dependencies.js +0 -121
- package/dist/commands/lib/installations/get-grouped-mismatched-dependencies.d.ts +0 -4
- package/dist/commands/lib/installations/get-grouped-mismatched-dependencies.js +0 -133
- package/dist/commands/lib/installations/get-installations-of.d.ts +0 -4
- package/dist/commands/lib/installations/get-installations-of.js +0 -105
- package/dist/commands/lib/installations/get-installations.d.ts +0 -6
- package/dist/commands/lib/installations/get-installations.js +0 -105
- package/dist/commands/lib/installations/get-mismatched-dependencies.d.ts +0 -4
- package/dist/commands/lib/installations/get-mismatched-dependencies.js +0 -131
- package/dist/commands/lib/installations/sort-by-name.d.ts +0 -2
- package/dist/commands/lib/is-semver.d.ts +0 -4
- package/dist/commands/lib/is-semver.js +0 -23
- package/dist/commands/lib/log.d.ts +0 -2
- package/dist/commands/lib/log.js +0 -32
- package/dist/commands/lib/matches-filter.d.ts +0 -5
- package/dist/commands/lib/matches-filter.js +0 -10
- package/dist/commands/lib/set-semver-range.d.ts +0 -4
- package/dist/commands/lib/set-semver-range.js +0 -20
- package/dist/commands/lib/write-if-changed.d.ts +0 -2
- package/dist/commands/lib/write-if-changed.js +0 -26
- package/dist/commands/lint-semver-ranges.d.ts +0 -9
- package/dist/commands/lint-semver-ranges.js +0 -65
- package/dist/commands/list-mismatches.d.ts +0 -7
- package/dist/commands/list-mismatches.js +0 -39
- package/dist/commands/list.d.ts +0 -6
- package/dist/commands/list.js +0 -42
- package/dist/commands/set-semver-ranges.d.ts +0 -6
- package/dist/commands/set-semver-ranges.js +0 -50
- package/dist/lib/get-config.d.ts +0 -2
- 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 get_expected_version_1 = require("../bin-fix-mismatches/get-expected-version");
|
|
13
|
+
var list_version_groups_1 = require("../bin-list/list-version-groups");
|
|
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 groups = (0, list_version_groups_1.listVersionGroups)(versionGroup);
|
|
24
|
+
if (isVersionGroup) {
|
|
25
|
+
console.log((0, chalk_1["default"])(templateObject_1 || (templateObject_1 = __makeTemplateObject(["{dim = Version Group ", " ", "}"], ["{dim = Version Group ", " ", "}"])), i, '='.repeat(63)));
|
|
26
|
+
}
|
|
27
|
+
groups.forEach(function (_a) {
|
|
28
|
+
var hasMismatches = _a.hasMismatches, instances = _a.instances, name = _a.name;
|
|
29
|
+
if (hasMismatches) {
|
|
30
|
+
var expectedVersion = (0, get_expected_version_1.getExpectedVersion)(name, versionGroup, input);
|
|
31
|
+
console.log((0, chalk_1["default"])(templateObject_2 || (templateObject_2 = __makeTemplateObject(["{dim -} ", " {green.dim ", "}"], ["{dim -} ", " {green.dim ", "}"])), name, expectedVersion));
|
|
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(["{red ", " {dim in ", " of ", "}}"], ["{red ", " {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;
|
|
File without changes
|
|
@@ -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,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
exports.__esModule = true;
|
|
3
|
+
exports.setSemverRanges = void 0;
|
|
4
|
+
var list_semver_group_mismatches_1 = require("../bin-lint-semver-ranges/list-semver-group-mismatches");
|
|
5
|
+
var set_semver_range_1 = require("../lib/set-semver-range");
|
|
6
|
+
var write_if_changed_1 = require("../lib/write-if-changed");
|
|
7
|
+
var setSemverRanges = function (input, disk) {
|
|
8
|
+
input.instances.semverGroups.reverse().forEach(function (semverGroup) {
|
|
9
|
+
var mismatches = (0, list_semver_group_mismatches_1.listSemverGroupMismatches)(semverGroup);
|
|
10
|
+
mismatches.forEach(function (_a) {
|
|
11
|
+
var dependencyType = _a.dependencyType, name = _a.name, version = _a.version, wrapper = _a.wrapper;
|
|
12
|
+
var root = wrapper.contents;
|
|
13
|
+
root[dependencyType][name] = (0, set_semver_range_1.setSemverRange)(semverGroup.range, version);
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
input.wrappers.forEach(function (wrapper) {
|
|
17
|
+
(0, write_if_changed_1.writeIfChanged)(disk, {
|
|
18
|
+
contents: wrapper.contents,
|
|
19
|
+
filePath: wrapper.filePath,
|
|
20
|
+
indent: input.indent,
|
|
21
|
+
json: wrapper.json
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
exports.setSemverRanges = setSemverRanges;
|
package/dist/bin.js
CHANGED
|
@@ -4,10 +4,23 @@ exports.__esModule = true;
|
|
|
4
4
|
var commander_1 = require("commander");
|
|
5
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
|
-
|
|
9
|
-
|
|
10
|
-
.command('
|
|
11
|
-
|
|
12
|
-
|
|
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
|
+
})
|
|
13
26
|
.parse(process.argv);
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,20 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
export declare type
|
|
3
|
-
export declare
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
|
@@ -25,22 +26,34 @@ export interface VersionGroup {
|
|
|
25
26
|
* the names of the dependencies (eg. "lodash") which belong to this group
|
|
26
27
|
*/
|
|
27
28
|
dependencies: string[];
|
|
29
|
+
/**
|
|
30
|
+
* optionally force all dependencies in this group to have this version
|
|
31
|
+
*/
|
|
32
|
+
pinVersion?: string;
|
|
28
33
|
}
|
|
29
34
|
export declare type SyncpackConfig = Readonly<{
|
|
35
|
+
/**
|
|
36
|
+
* which dependency properties to search within
|
|
37
|
+
*/
|
|
38
|
+
dependencyTypes: DependencyType[];
|
|
30
39
|
/**
|
|
31
40
|
* whether to search within devDependencies
|
|
32
41
|
*/
|
|
33
42
|
dev: boolean;
|
|
34
43
|
/**
|
|
35
|
-
*
|
|
44
|
+
* a string which will be passed to `new RegExp()` to match against package
|
|
36
45
|
* names that should be included
|
|
37
46
|
*/
|
|
38
47
|
filter: string;
|
|
39
48
|
/**
|
|
40
|
-
*
|
|
49
|
+
* the character(s) to be used to indent your package.json files when writing
|
|
41
50
|
* to disk
|
|
42
51
|
*/
|
|
43
52
|
indent: string;
|
|
53
|
+
/**
|
|
54
|
+
* whether to search within pnpm overrides
|
|
55
|
+
*/
|
|
56
|
+
overrides: boolean;
|
|
44
57
|
/**
|
|
45
58
|
* whether to search within peerDependencies
|
|
46
59
|
*/
|
|
@@ -49,11 +62,19 @@ export declare type SyncpackConfig = Readonly<{
|
|
|
49
62
|
* whether to search within dependencies
|
|
50
63
|
*/
|
|
51
64
|
prod: boolean;
|
|
65
|
+
/**
|
|
66
|
+
* whether to search within yarn resolutions
|
|
67
|
+
*/
|
|
68
|
+
resolutions: boolean;
|
|
69
|
+
/**
|
|
70
|
+
*
|
|
71
|
+
*/
|
|
72
|
+
semverGroups: SemverGroup[];
|
|
52
73
|
/**
|
|
53
74
|
* defaults to `""` to ensure that exact dependency versions are used instead
|
|
54
75
|
* of loose ranges
|
|
55
76
|
*/
|
|
56
|
-
semverRange:
|
|
77
|
+
semverRange: ValidRange;
|
|
57
78
|
/**
|
|
58
79
|
* which fields within package.json files should be sorted alphabetically
|
|
59
80
|
*/
|
|
@@ -72,16 +93,20 @@ export declare type SyncpackConfig = Readonly<{
|
|
|
72
93
|
*/
|
|
73
94
|
versionGroups: VersionGroup[];
|
|
74
95
|
}>;
|
|
75
|
-
export declare const DEFAULT_CONFIG: SyncpackConfig;
|
|
76
96
|
export declare const ALL_PATTERNS: string[];
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
export declare const
|
|
87
|
-
export
|
|
97
|
+
export declare const DEPENDENCY_TYPES: DependencyType[];
|
|
98
|
+
export declare const CWD: string;
|
|
99
|
+
export declare const GREATER = 1;
|
|
100
|
+
export declare const LESSER = -1;
|
|
101
|
+
export declare const SAME = 0;
|
|
102
|
+
export declare const RANGE_ANY = "*";
|
|
103
|
+
export declare const RANGE_EXACT = "";
|
|
104
|
+
export declare const RANGE_GT = ">";
|
|
105
|
+
export declare const RANGE_GTE = ">=";
|
|
106
|
+
export declare const RANGE_LOOSE = ".x";
|
|
107
|
+
export declare const RANGE_LT = "<";
|
|
108
|
+
export declare const RANGE_LTE = "<=";
|
|
109
|
+
export declare const RANGE_MINOR = "^";
|
|
110
|
+
export declare const RANGE_PATCH = "~";
|
|
111
|
+
export declare const SEMVER_ORDER: ValidRange[];
|
|
112
|
+
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.
|
|
4
|
-
|
|
5
|
-
exports.DEPENDENCY_TYPES = [
|
|
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: [
|
|
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
|
-
};
|
package/dist/lib/collect.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare
|
|
1
|
+
export declare function collect(value: string, previous: string[]): string[];
|
package/dist/lib/collect.js
CHANGED
|
@@ -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
|
+
};
|
package/dist/lib/disk.js
ADDED
|
@@ -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;
|