syncpack 7.1.0 → 8.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.
- package/README.md +57 -19
- package/dist/bin-fix-mismatches/fix-mismatches.js +19 -1
- package/dist/bin-fix-mismatches/get-expected-version/index.d.ts +1 -1
- package/dist/bin-fix-mismatches/get-expected-version/index.js +12 -8
- package/dist/bin-fix-mismatches/index.js +1 -0
- package/dist/bin-lint-semver-ranges/index.js +2 -1
- package/dist/bin-lint-semver-ranges/lint-semver-ranges.d.ts +2 -1
- package/dist/bin-lint-semver-ranges/lint-semver-ranges.js +2 -2
- package/dist/bin-list/index.js +2 -1
- package/dist/bin-list/list-version-groups.d.ts +1 -0
- package/dist/bin-list/list-version-groups.js +9 -5
- package/dist/bin-list/list.d.ts +2 -1
- package/dist/bin-list/list.js +7 -6
- package/dist/bin-list-mismatches/index.js +2 -1
- package/dist/bin-list-mismatches/list-mismatches.d.ts +2 -1
- package/dist/bin-list-mismatches/list-mismatches.js +8 -7
- package/dist/bin-set-semver-ranges/index.js +1 -0
- package/dist/bin-set-semver-ranges/set-semver-ranges.js +7 -1
- package/dist/constants.d.ts +10 -2
- package/dist/constants.js +2 -0
- package/dist/lib/disk.d.ts +3 -0
- package/dist/lib/disk.js +22 -7
- package/dist/lib/get-input/get-config.d.ts +1 -1
- package/dist/lib/get-input/get-config.js +20 -5
- package/dist/lib/get-input/get-instances.js +43 -30
- package/dist/lib/get-input/get-wrappers/get-patterns/index.js +3 -2
- package/dist/lib/get-input/get-wrappers/index.d.ts +4 -1
- package/dist/lib/get-input/index.d.ts +1 -1
- package/dist/lib/log.d.ts +1 -1
- package/dist/lib/log.js +37 -2
- package/dist/option.d.ts +1 -0
- package/dist/option.js +5 -4
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -14,6 +14,10 @@
|
|
|
14
14
|
npm install --global syncpack
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
+
## 🤖 GitHub Action
|
|
18
|
+
|
|
19
|
+
As of May 2022 there is now a [Syncpack GitHub Action](https://github.com/marketplace/actions/syncpack-synchronise-monorepo-dependency-versions). It is new and less stable than syncpack itself, but please give it a try and [give your feedback](https://github.com/JamieMason/syncpack-github-action/issues/new).
|
|
20
|
+
|
|
17
21
|
## 📝 Commands
|
|
18
22
|
|
|
19
23
|
### fix-mismatches
|
|
@@ -34,7 +38,8 @@ See [`versionGroups`](#versiongroups) if you have advanced requirements.
|
|
|
34
38
|
-d, --dev include devDependencies
|
|
35
39
|
-P, --peer include peerDependencies
|
|
36
40
|
-R, --resolutions include resolutions (yarn)
|
|
37
|
-
-o, --overrides include overrides (
|
|
41
|
+
-o, --overrides include overrides (npm)
|
|
42
|
+
-O, --pnpmOverrides include overrides (pnpm)
|
|
38
43
|
-w, --workspace include locally developed package versions
|
|
39
44
|
-i, --indent [value] override indentation. defaults to " "
|
|
40
45
|
-c, --config <path> path to a syncpack config file
|
|
@@ -116,7 +121,8 @@ See [`semverGroups`](#semvergroups) if you have advanced requirements.
|
|
|
116
121
|
-d, --dev include devDependencies
|
|
117
122
|
-P, --peer include peerDependencies
|
|
118
123
|
-R, --resolutions include resolutions (yarn)
|
|
119
|
-
-o, --overrides include overrides (
|
|
124
|
+
-o, --overrides include overrides (npm)
|
|
125
|
+
-O, --pnpmOverrides include overrides (pnpm)
|
|
120
126
|
-f, --filter [pattern] only include dependencies whose name matches this regex
|
|
121
127
|
-r, --semver-range <range> see supported ranges below. defaults to ""
|
|
122
128
|
-c, --config <path> path to a syncpack config file
|
|
@@ -161,7 +167,8 @@ List all dependencies required by your packages.
|
|
|
161
167
|
-d, --dev include devDependencies
|
|
162
168
|
-P, --peer include peerDependencies
|
|
163
169
|
-R, --resolutions include resolutions (yarn)
|
|
164
|
-
-o, --overrides include overrides (
|
|
170
|
+
-o, --overrides include overrides (npm)
|
|
171
|
+
-O, --pnpmOverrides include overrides (pnpm)
|
|
165
172
|
-f, --filter [pattern] only include dependencies whose name matches this regex
|
|
166
173
|
-c, --config <path> path to a syncpack config file
|
|
167
174
|
-w, --workspace include locally developed package versions
|
|
@@ -206,7 +213,8 @@ See [`versionGroups`](#versiongroups) if you have advanced requirements.
|
|
|
206
213
|
-d, --dev include devDependencies
|
|
207
214
|
-P, --peer include peerDependencies
|
|
208
215
|
-R, --resolutions include resolutions (yarn)
|
|
209
|
-
-o, --overrides include overrides (
|
|
216
|
+
-o, --overrides include overrides (npm)
|
|
217
|
+
-O, --pnpmOverrides include overrides (pnpm)
|
|
210
218
|
-f, --filter [pattern] only include dependencies whose name matches this regex
|
|
211
219
|
-c, --config <path> path to a syncpack config file
|
|
212
220
|
-w, --workspace include locally developed package versions
|
|
@@ -253,7 +261,8 @@ See [`semverGroups`](#semvergroups) if you have advanced requirements.
|
|
|
253
261
|
-d, --dev include devDependencies
|
|
254
262
|
-P, --peer include peerDependencies
|
|
255
263
|
-R, --resolutions include resolutions (yarn)
|
|
256
|
-
-o, --overrides include overrides (
|
|
264
|
+
-o, --overrides include overrides (npm)
|
|
265
|
+
-O, --pnpmOverrides include overrides (pnpm)
|
|
257
266
|
-w, --workspace include locally developed package versions
|
|
258
267
|
-i, --indent [value] override indentation. defaults to " "
|
|
259
268
|
-r, --semver-range <range> see supported ranges below. defaults to ""
|
|
@@ -311,6 +320,7 @@ configuration file (if present), you can use the `--config` option.
|
|
|
311
320
|
"indent": " ",
|
|
312
321
|
"overrides": true,
|
|
313
322
|
"peer": true,
|
|
323
|
+
"pnpmOverrides": true,
|
|
314
324
|
"prod": true,
|
|
315
325
|
"resolutions": true,
|
|
316
326
|
"workspace": true,
|
|
@@ -325,28 +335,23 @@ configuration file (if present), you can use the `--config` option.
|
|
|
325
335
|
"resolutions",
|
|
326
336
|
"scripts"
|
|
327
337
|
],
|
|
328
|
-
"sortFirst": [
|
|
329
|
-
"name",
|
|
330
|
-
"description",
|
|
331
|
-
"version",
|
|
332
|
-
"author"
|
|
333
|
-
],
|
|
338
|
+
"sortFirst": ["name", "description", "version", "author"],
|
|
334
339
|
"source": [],
|
|
335
340
|
"versionGroups": []
|
|
336
341
|
}
|
|
337
342
|
```
|
|
338
343
|
|
|
339
|
-
### `dev`, `peer`, `prod`, `resolutions`, `overrides`, and `workspace`
|
|
344
|
+
### `dev`, `peer`, `prod`, `resolutions`, `overrides`, `pnpmOverrides`, and `workspace`
|
|
340
345
|
|
|
341
346
|
Whether to search within `devDependencies`, `peerDependencies`, `dependencies`,
|
|
342
|
-
`resolutions` (Yarn), `overrides` (
|
|
343
|
-
package.json files of your own packages developed
|
|
344
|
-
respectively.
|
|
347
|
+
`resolutions` (Yarn), `overrides` (npm), `pnpmOverrides` (pnpm), and the
|
|
348
|
+
`version` property of the package.json files of your own packages developed
|
|
349
|
+
within your `workspace` respectively.
|
|
345
350
|
|
|
346
351
|
All of these locations are searched by default but they can be disabled
|
|
347
352
|
individually in your config file. If any are set via the command line options
|
|
348
|
-
`--dev`, `--peer`, `--prod`, `--resolutions`, `--overrides`,
|
|
349
|
-
then only the options you provide will be searched.
|
|
353
|
+
`--dev`, `--peer`, `--prod`, `--resolutions`, `--overrides`, `--pnpmOverrides`,
|
|
354
|
+
or `--workspace` then only the options you provide will be searched.
|
|
350
355
|
|
|
351
356
|
### `filter`
|
|
352
357
|
|
|
@@ -409,7 +414,7 @@ rest of the repo might need to remain on stable versions.
|
|
|
409
414
|
|
|
410
415
|
You don't want mismatches within your alpha packages, you don't want mismatches
|
|
411
416
|
within the other packages, but you _do_ want those groups to use different
|
|
412
|
-
versions
|
|
417
|
+
versions _to each other_ and not have `syncpack` make them all the same.
|
|
413
418
|
|
|
414
419
|
In the following example, 2 of our packages are using different versions of
|
|
415
420
|
`react` and `react-dom` to the rest of the project.
|
|
@@ -450,7 +455,40 @@ to apply to an entire package:
|
|
|
450
455
|
- A specific dependency in some specific packages only.
|
|
451
456
|
- Any dependency who name matches a pattern such as `@aws-sdk/**`.
|
|
452
457
|
|
|
453
|
-
See [`semverGroups`](#semverGroups) for
|
|
458
|
+
See [`semverGroups`](#semverGroups) for more examples, they work the same way.
|
|
459
|
+
|
|
460
|
+
#### `versionGroup.isBanned`
|
|
461
|
+
|
|
462
|
+
Remove dependencies which you've decided should never be allowed.
|
|
463
|
+
|
|
464
|
+
```json
|
|
465
|
+
{
|
|
466
|
+
"versionGroups": [
|
|
467
|
+
{
|
|
468
|
+
"isBanned": true,
|
|
469
|
+
"dependencies": ["never-gonna"],
|
|
470
|
+
"packages": ["**"]
|
|
471
|
+
}
|
|
472
|
+
]
|
|
473
|
+
}
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
#### `versionGroup.pinVersion`
|
|
477
|
+
|
|
478
|
+
Pin the version of all dependencies in this group to match this specific version
|
|
479
|
+
you've defined.
|
|
480
|
+
|
|
481
|
+
```json
|
|
482
|
+
{
|
|
483
|
+
"versionGroups": [
|
|
484
|
+
{
|
|
485
|
+
"pinVersion": "3.55.0",
|
|
486
|
+
"dependencies": ["@aws-sdk/**"],
|
|
487
|
+
"packages": ["**"]
|
|
488
|
+
}
|
|
489
|
+
]
|
|
490
|
+
}
|
|
491
|
+
```
|
|
454
492
|
|
|
455
493
|
### `semverGroups`
|
|
456
494
|
|
|
@@ -9,6 +9,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
9
9
|
exports.__esModule = true;
|
|
10
10
|
exports.fixMismatches = void 0;
|
|
11
11
|
var chalk_1 = __importDefault(require("chalk"));
|
|
12
|
+
var expect_more_1 = require("expect-more");
|
|
12
13
|
var list_version_groups_1 = require("../bin-list/list-version-groups");
|
|
13
14
|
var write_if_changed_1 = require("../lib/write-if-changed");
|
|
14
15
|
var get_expected_version_1 = require("./get-expected-version");
|
|
@@ -32,13 +33,19 @@ function fixMismatches(input, disk) {
|
|
|
32
33
|
var dependencyType = _a.dependencyType, version = _a.version, wrapper = _a.wrapper;
|
|
33
34
|
var root = wrapper.contents;
|
|
34
35
|
if (version !== nextVersion_1) {
|
|
35
|
-
|
|
36
|
+
if (dependencyType === 'pnpmOverrides') {
|
|
37
|
+
root.pnpm.overrides[name] = nextVersion_1;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
root[dependencyType][name] = nextVersion_1;
|
|
41
|
+
}
|
|
36
42
|
}
|
|
37
43
|
});
|
|
38
44
|
}
|
|
39
45
|
});
|
|
40
46
|
});
|
|
41
47
|
input.wrappers.forEach(function (wrapper) {
|
|
48
|
+
removeEmptyIndexes(wrapper);
|
|
42
49
|
(0, write_if_changed_1.writeIfChanged)(disk, {
|
|
43
50
|
contents: wrapper.contents,
|
|
44
51
|
filePath: wrapper.filePath,
|
|
@@ -46,6 +53,17 @@ function fixMismatches(input, disk) {
|
|
|
46
53
|
json: wrapper.json
|
|
47
54
|
});
|
|
48
55
|
});
|
|
56
|
+
/**
|
|
57
|
+
* Remove eg `{"dependencies": {}, "devDependencies": {}}`
|
|
58
|
+
*/
|
|
59
|
+
function removeEmptyIndexes(wrapper) {
|
|
60
|
+
input.dependencyTypes.forEach(function (dependencyType) {
|
|
61
|
+
var deps = wrapper.contents[dependencyType];
|
|
62
|
+
if (deps && Object.values(deps).every(expect_more_1.isUndefined)) {
|
|
63
|
+
delete wrapper.contents[dependencyType];
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}
|
|
49
67
|
}
|
|
50
68
|
exports.fixMismatches = fixMismatches;
|
|
51
69
|
var templateObject_1;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { ProgramInput } from '../../lib/get-input';
|
|
2
2
|
import type { IndexedVersionGroup } from '../../lib/get-input/get-instances';
|
|
3
|
-
export declare function getExpectedVersion(name: string, versionGroup: Pick<IndexedVersionGroup, 'instances' | 'pinVersion'>, input: Pick<ProgramInput, 'workspace' | 'wrappers'>): string;
|
|
3
|
+
export declare function getExpectedVersion(name: string, versionGroup: Pick<IndexedVersionGroup, 'isBanned' | 'instances' | 'pinVersion'>, input: Pick<ProgramInput, 'workspace' | 'wrappers'>): string | undefined;
|
|
@@ -5,13 +5,17 @@ var get_highest_version_1 = require("./get-highest-version");
|
|
|
5
5
|
var get_pinned_version_1 = require("./get-pinned-version");
|
|
6
6
|
var get_workspace_version_1 = require("./get-workspace-version");
|
|
7
7
|
function getExpectedVersion(name, versionGroup, input) {
|
|
8
|
-
return
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
return versionGroup.isBanned === true
|
|
9
|
+
? // remove this dependency
|
|
10
|
+
undefined
|
|
11
|
+
: (0, get_pinned_version_1.getPinnedVersion)(versionGroup) ||
|
|
12
|
+
(input.workspace === true &&
|
|
13
|
+
(0, get_workspace_version_1.getWorkspaceVersion)(name, input.wrappers)) ||
|
|
14
|
+
(0, get_highest_version_1.getHighestVersion)(versionGroup.instances
|
|
15
|
+
.filter(function (instance) { return instance.name === name; })
|
|
16
|
+
.map(function (_a) {
|
|
17
|
+
var version = _a.version;
|
|
18
|
+
return version;
|
|
19
|
+
}));
|
|
16
20
|
}
|
|
17
21
|
exports.getExpectedVersion = getExpectedVersion;
|
|
@@ -62,6 +62,7 @@ commander_1.program.on('--help', function () {
|
|
|
62
62
|
indent: commander_1.program.opts().indent,
|
|
63
63
|
overrides: commander_1.program.opts().overrides,
|
|
64
64
|
peer: commander_1.program.opts().peer,
|
|
65
|
+
pnpmOverrides: commander_1.program.opts().pnpmOverrides,
|
|
65
66
|
prod: commander_1.program.opts().prod,
|
|
66
67
|
resolutions: commander_1.program.opts().resolutions,
|
|
67
68
|
source: commander_1.program.opts().source,
|
|
@@ -61,10 +61,11 @@ commander_1.program.on('--help', function () {
|
|
|
61
61
|
filter: commander_1.program.opts().filter,
|
|
62
62
|
overrides: commander_1.program.opts().overrides,
|
|
63
63
|
peer: commander_1.program.opts().peer,
|
|
64
|
+
pnpmOverrides: commander_1.program.opts().pnpmOverrides,
|
|
64
65
|
prod: commander_1.program.opts().prod,
|
|
65
66
|
resolutions: commander_1.program.opts().resolutions,
|
|
66
67
|
semverRange: commander_1.program.opts().semverRange,
|
|
67
68
|
source: commander_1.program.opts().source,
|
|
68
69
|
workspace: commander_1.program.opts().workspace
|
|
69
|
-
}));
|
|
70
|
+
}), disk_1.disk);
|
|
70
71
|
var templateObject_1, templateObject_2;
|
|
@@ -11,7 +11,7 @@ exports.lintSemverRanges = void 0;
|
|
|
11
11
|
var chalk_1 = __importDefault(require("chalk"));
|
|
12
12
|
var set_semver_range_1 = require("../lib/set-semver-range");
|
|
13
13
|
var list_semver_group_mismatches_1 = require("./list-semver-group-mismatches");
|
|
14
|
-
function lintSemverRanges(input) {
|
|
14
|
+
function lintSemverRanges(input, disk) {
|
|
15
15
|
var isInvalid = false;
|
|
16
16
|
/**
|
|
17
17
|
* Reverse the list so the default/ungrouped semver group is rendered first
|
|
@@ -33,7 +33,7 @@ function lintSemverRanges(input) {
|
|
|
33
33
|
}
|
|
34
34
|
});
|
|
35
35
|
if (isInvalid) {
|
|
36
|
-
process.exit(1);
|
|
36
|
+
disk.process.exit(1);
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
exports.lintSemverRanges = lintSemverRanges;
|
package/dist/bin-list/index.js
CHANGED
|
@@ -60,9 +60,10 @@ commander_1.program.on('--help', function () {
|
|
|
60
60
|
filter: commander_1.program.opts().filter,
|
|
61
61
|
overrides: commander_1.program.opts().overrides,
|
|
62
62
|
peer: commander_1.program.opts().peer,
|
|
63
|
+
pnpmOverrides: commander_1.program.opts().pnpmOverrides,
|
|
63
64
|
prod: commander_1.program.opts().prod,
|
|
64
65
|
resolutions: commander_1.program.opts().resolutions,
|
|
65
66
|
source: commander_1.program.opts().source,
|
|
66
67
|
workspace: commander_1.program.opts().workspace
|
|
67
|
-
}));
|
|
68
|
+
}), disk_1.disk);
|
|
68
69
|
var templateObject_1;
|
|
@@ -21,7 +21,8 @@ var expect_more_1 = require("expect-more");
|
|
|
21
21
|
var group_by_1 = require("../lib/group-by");
|
|
22
22
|
var sort_by_name_1 = require("../lib/sort-by-name");
|
|
23
23
|
function listVersionGroups(versionGroup) {
|
|
24
|
-
var
|
|
24
|
+
var instances = versionGroup.instances;
|
|
25
|
+
var instancesByName = (0, group_by_1.groupBy)('name', instances.sort(sort_by_name_1.sortByName));
|
|
25
26
|
return Object.entries(instancesByName).map(function (_a) {
|
|
26
27
|
var _b = __read(_a, 2), name = _b[0], instances = _b[1];
|
|
27
28
|
var pinnedVersion = versionGroup.pinVersion;
|
|
@@ -31,13 +32,16 @@ function listVersionGroups(versionGroup) {
|
|
|
31
32
|
return version;
|
|
32
33
|
});
|
|
33
34
|
var uniques = Array.from(new Set(versions));
|
|
34
|
-
var
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
var isBanned = versionGroup.isBanned === true;
|
|
36
|
+
var hasMismatches = isBanned ||
|
|
37
|
+
versions.some(function (version, i) {
|
|
38
|
+
return (hasPinnedVersion && version !== pinnedVersion) ||
|
|
39
|
+
(i > 0 && version !== versions[i - 1]);
|
|
40
|
+
});
|
|
38
41
|
return {
|
|
39
42
|
hasMismatches: hasMismatches,
|
|
40
43
|
instances: instances,
|
|
44
|
+
isBanned: isBanned,
|
|
41
45
|
name: name,
|
|
42
46
|
uniques: uniques
|
|
43
47
|
};
|
package/dist/bin-list/list.d.ts
CHANGED
package/dist/bin-list/list.js
CHANGED
|
@@ -10,7 +10,7 @@ exports.__esModule = true;
|
|
|
10
10
|
exports.list = void 0;
|
|
11
11
|
var chalk_1 = __importDefault(require("chalk"));
|
|
12
12
|
var list_version_groups_1 = require("./list-version-groups");
|
|
13
|
-
function list(input) {
|
|
13
|
+
function list(input, disk) {
|
|
14
14
|
var isInvalid = false;
|
|
15
15
|
/**
|
|
16
16
|
* Reverse the list so the default/ungrouped version group is rendered first
|
|
@@ -24,10 +24,11 @@ function list(input) {
|
|
|
24
24
|
console.log((0, chalk_1["default"])(templateObject_1 || (templateObject_1 = __makeTemplateObject(["{dim = Version Group ", " ", "}"], ["{dim = Version Group ", " ", "}"])), i, '='.repeat(63)));
|
|
25
25
|
}
|
|
26
26
|
groups.forEach(function (_a) {
|
|
27
|
-
var hasMismatches = _a.hasMismatches, name = _a.name, uniques = _a.uniques;
|
|
27
|
+
var hasMismatches = _a.hasMismatches, isBanned = _a.isBanned, name = _a.name, uniques = _a.uniques;
|
|
28
28
|
var versionList = uniques.sort().join(', ');
|
|
29
|
-
console.log(
|
|
30
|
-
? (0, chalk_1["default"])(templateObject_2 || (templateObject_2 = __makeTemplateObject(["{red \u2715 ", "} {dim.red
|
|
29
|
+
console.log(isBanned
|
|
30
|
+
? (0, chalk_1["default"])(templateObject_2 || (templateObject_2 = __makeTemplateObject(["{red \u2715 ", "} {dim.red remove this dependency}"], ["{red \u2715 ", "} {dim.red remove this dependency}"])), name) : hasMismatches
|
|
31
|
+
? (0, chalk_1["default"])(templateObject_3 || (templateObject_3 = __makeTemplateObject(["{red \u2715 ", "} {dim.red ", "}"], ["{red \u2715 ", "} {dim.red ", "}"])), name, versionList) : (0, chalk_1["default"])(templateObject_4 || (templateObject_4 = __makeTemplateObject(["{dim -} {white ", "} {dim ", "}"], ["{dim -} {white ", "} {dim ", "}"])), name, versionList));
|
|
31
32
|
});
|
|
32
33
|
if (groups.some(function (_a) {
|
|
33
34
|
var hasMismatches = _a.hasMismatches;
|
|
@@ -37,8 +38,8 @@ function list(input) {
|
|
|
37
38
|
}
|
|
38
39
|
});
|
|
39
40
|
if (isInvalid) {
|
|
40
|
-
process.exit(1);
|
|
41
|
+
disk.process.exit(1);
|
|
41
42
|
}
|
|
42
43
|
}
|
|
43
44
|
exports.list = list;
|
|
44
|
-
var templateObject_1, templateObject_2, templateObject_3;
|
|
45
|
+
var templateObject_1, templateObject_2, templateObject_3, templateObject_4;
|
|
@@ -60,9 +60,10 @@ commander_1.program.on('--help', function () {
|
|
|
60
60
|
filter: commander_1.program.opts().filter,
|
|
61
61
|
overrides: commander_1.program.opts().overrides,
|
|
62
62
|
peer: commander_1.program.opts().peer,
|
|
63
|
+
pnpmOverrides: commander_1.program.opts().pnpmOverrides,
|
|
63
64
|
prod: commander_1.program.opts().prod,
|
|
64
65
|
resolutions: commander_1.program.opts().resolutions,
|
|
65
66
|
source: commander_1.program.opts().source,
|
|
66
67
|
workspace: commander_1.program.opts().workspace
|
|
67
|
-
}));
|
|
68
|
+
}), disk_1.disk);
|
|
68
69
|
var templateObject_1;
|
|
@@ -13,7 +13,7 @@ var path_1 = require("path");
|
|
|
13
13
|
var get_expected_version_1 = require("../bin-fix-mismatches/get-expected-version");
|
|
14
14
|
var list_version_groups_1 = require("../bin-list/list-version-groups");
|
|
15
15
|
var constants_1 = require("../constants");
|
|
16
|
-
function listMismatches(input) {
|
|
16
|
+
function listMismatches(input, disk) {
|
|
17
17
|
var isInvalid = false;
|
|
18
18
|
/**
|
|
19
19
|
* Reverse the list so the default/ungrouped version group is rendered first
|
|
@@ -33,24 +33,25 @@ function listMismatches(input) {
|
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
groups.forEach(function (_a) {
|
|
36
|
-
var instances = _a.instances, name = _a.name;
|
|
36
|
+
var instances = _a.instances, isBanned = _a.isBanned, name = _a.name;
|
|
37
37
|
var expectedVersion = (0, get_expected_version_1.getExpectedVersion)(name, versionGroup, input);
|
|
38
|
-
console.log(
|
|
38
|
+
console.log(isBanned
|
|
39
|
+
? (0, chalk_1["default"])(templateObject_2 || (templateObject_2 = __makeTemplateObject(["{red \u2715 ", "} {dim.red remove this dependency}"], ["{red \u2715 ", "} {dim.red remove this dependency}"])), name) : (0, chalk_1["default"])(templateObject_3 || (templateObject_3 = __makeTemplateObject(["{dim -} ", " {green.dim ", "}"], ["{dim -} ", " {green.dim ", "}"])), name, expectedVersion));
|
|
39
40
|
instances.forEach(function (_a) {
|
|
40
41
|
var dependencyType = _a.dependencyType, version = _a.version, wrapper = _a.wrapper;
|
|
41
42
|
if (dependencyType === 'workspace') {
|
|
42
43
|
var shortPath = (0, path_1.relative)(constants_1.CWD, wrapper.filePath);
|
|
43
|
-
console.log((0, chalk_1["default"])(
|
|
44
|
+
console.log((0, chalk_1["default"])(templateObject_4 || (templateObject_4 = __makeTemplateObject(["{red ", " {dim at ", "}}"], ["{red ", " {dim at ", "}}"])), version, shortPath));
|
|
44
45
|
}
|
|
45
46
|
else {
|
|
46
|
-
console.log((0, chalk_1["default"])(
|
|
47
|
+
console.log((0, chalk_1["default"])(templateObject_5 || (templateObject_5 = __makeTemplateObject(["{red ", " {dim in ", " of ", "}}"], ["{red ", " {dim in ", " of ", "}}"])), version, dependencyType, wrapper.contents.name));
|
|
47
48
|
}
|
|
48
49
|
});
|
|
49
50
|
});
|
|
50
51
|
});
|
|
51
52
|
if (isInvalid) {
|
|
52
|
-
process.exit(1);
|
|
53
|
+
disk.process.exit(1);
|
|
53
54
|
}
|
|
54
55
|
}
|
|
55
56
|
exports.listMismatches = listMismatches;
|
|
56
|
-
var templateObject_1, templateObject_2, templateObject_3, templateObject_4;
|
|
57
|
+
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;
|
|
@@ -63,6 +63,7 @@ commander_1.program.on('--help', function () {
|
|
|
63
63
|
indent: commander_1.program.opts().indent,
|
|
64
64
|
overrides: commander_1.program.opts().overrides,
|
|
65
65
|
peer: commander_1.program.opts().peer,
|
|
66
|
+
pnpmOverrides: commander_1.program.opts().pnpmOverrides,
|
|
66
67
|
prod: commander_1.program.opts().prod,
|
|
67
68
|
resolutions: commander_1.program.opts().resolutions,
|
|
68
69
|
semverRange: commander_1.program.opts().semverRange,
|
|
@@ -10,7 +10,13 @@ var setSemverRanges = function (input, disk) {
|
|
|
10
10
|
mismatches.forEach(function (_a) {
|
|
11
11
|
var dependencyType = _a.dependencyType, name = _a.name, version = _a.version, wrapper = _a.wrapper;
|
|
12
12
|
var root = wrapper.contents;
|
|
13
|
-
|
|
13
|
+
var nextVersion = (0, set_semver_range_1.setSemverRange)(semverGroup.range, version);
|
|
14
|
+
if (dependencyType === 'pnpmOverrides') {
|
|
15
|
+
root.pnpm.overrides[name] = nextVersion;
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
root[dependencyType][name] = nextVersion;
|
|
19
|
+
}
|
|
14
20
|
});
|
|
15
21
|
});
|
|
16
22
|
input.wrappers.forEach(function (wrapper) {
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare type DependencyType = 'dependencies' | 'devDependencies' | 'overrides' | 'peerDependencies' | 'resolutions' | 'workspace';
|
|
1
|
+
export declare type DependencyType = 'dependencies' | 'devDependencies' | 'overrides' | 'peerDependencies' | 'pnpmOverrides' | 'resolutions' | 'workspace';
|
|
2
2
|
export declare type DependencyOption = Pick<SyncpackConfig, 'dev' | 'workspace' | 'overrides' | 'peer' | 'prod' | 'resolutions'>;
|
|
3
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
4
|
export interface SemverGroup {
|
|
@@ -30,6 +30,10 @@ export interface VersionGroup {
|
|
|
30
30
|
* the names of the dependencies (eg. "lodash") which belong to this group
|
|
31
31
|
*/
|
|
32
32
|
dependencies: string[];
|
|
33
|
+
/**
|
|
34
|
+
* optionally force all dependencies in this group to be removed
|
|
35
|
+
*/
|
|
36
|
+
isBanned?: true;
|
|
33
37
|
/**
|
|
34
38
|
* optionally force all dependencies in this group to have this version
|
|
35
39
|
*/
|
|
@@ -59,13 +63,17 @@ export declare type SyncpackConfig = Readonly<{
|
|
|
59
63
|
*/
|
|
60
64
|
indent: string;
|
|
61
65
|
/**
|
|
62
|
-
* whether to search within
|
|
66
|
+
* whether to search within npm overrides
|
|
63
67
|
*/
|
|
64
68
|
overrides: boolean;
|
|
65
69
|
/**
|
|
66
70
|
* whether to search within peerDependencies
|
|
67
71
|
*/
|
|
68
72
|
peer: boolean;
|
|
73
|
+
/**
|
|
74
|
+
* whether to search within pnpm overrides
|
|
75
|
+
*/
|
|
76
|
+
pnpmOverrides: boolean;
|
|
69
77
|
/**
|
|
70
78
|
* whether to search within dependencies
|
|
71
79
|
*/
|
package/dist/constants.js
CHANGED
|
@@ -7,6 +7,7 @@ exports.DEPENDENCY_TYPES = [
|
|
|
7
7
|
'devDependencies',
|
|
8
8
|
'overrides',
|
|
9
9
|
'peerDependencies',
|
|
10
|
+
'pnpmOverrides',
|
|
10
11
|
'resolutions',
|
|
11
12
|
'workspace',
|
|
12
13
|
];
|
|
@@ -40,6 +41,7 @@ exports.DEFAULT_CONFIG = {
|
|
|
40
41
|
indent: ' ',
|
|
41
42
|
overrides: true,
|
|
42
43
|
peer: true,
|
|
44
|
+
pnpmOverrides: true,
|
|
43
45
|
prod: true,
|
|
44
46
|
resolutions: true,
|
|
45
47
|
workspace: true,
|
package/dist/lib/disk.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { SyncpackConfig } from '../constants';
|
|
2
2
|
export declare type Disk = typeof disk;
|
|
3
3
|
export declare const disk: {
|
|
4
|
+
readonly process: {
|
|
5
|
+
readonly exit: (code: number) => void;
|
|
6
|
+
};
|
|
4
7
|
readonly globSync: (pattern: string) => string[];
|
|
5
8
|
readonly readConfigFileSync: (configPath?: string | undefined) => Partial<SyncpackConfig>;
|
|
6
9
|
readonly readFileSync: (filePath: string) => string;
|
package/dist/lib/disk.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
exports.__esModule = true;
|
|
3
3
|
exports.disk = void 0;
|
|
4
4
|
var cosmiconfig_1 = require("cosmiconfig");
|
|
5
|
-
var expect_more_1 = require("expect-more");
|
|
6
5
|
var fs_extra_1 = require("fs-extra");
|
|
7
6
|
var glob_1 = require("glob");
|
|
8
7
|
var read_yaml_file_1 = require("read-yaml-file");
|
|
@@ -10,7 +9,14 @@ var constants_1 = require("../constants");
|
|
|
10
9
|
var log_1 = require("./log");
|
|
11
10
|
var client = (0, cosmiconfig_1.cosmiconfigSync)('syncpack');
|
|
12
11
|
exports.disk = {
|
|
12
|
+
process: {
|
|
13
|
+
exit: function (code) {
|
|
14
|
+
(0, log_1.verbose)('exit(', code, ')');
|
|
15
|
+
process.exit(code);
|
|
16
|
+
}
|
|
17
|
+
},
|
|
13
18
|
globSync: function (pattern) {
|
|
19
|
+
(0, log_1.verbose)('globSync(', pattern, ')');
|
|
14
20
|
return (0, glob_1.sync)(pattern, {
|
|
15
21
|
ignore: '**/node_modules/**',
|
|
16
22
|
absolute: true,
|
|
@@ -18,29 +24,38 @@ exports.disk = {
|
|
|
18
24
|
});
|
|
19
25
|
},
|
|
20
26
|
readConfigFileSync: function (configPath) {
|
|
27
|
+
(0, log_1.verbose)('readConfigFileSync(', configPath, ')');
|
|
21
28
|
try {
|
|
22
29
|
var result = configPath ? client.load(configPath) : client.search();
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
30
|
+
if (result === null) {
|
|
31
|
+
(0, log_1.verbose)('no config file found');
|
|
32
|
+
return {};
|
|
33
|
+
}
|
|
34
|
+
var rcPath = result.filepath;
|
|
35
|
+
var rcConfig = result.config;
|
|
36
|
+
(0, log_1.verbose)('.syncpackrc path:', rcPath);
|
|
37
|
+
(0, log_1.verbose)('.syncpackrc contents:', rcConfig);
|
|
38
|
+
return rcConfig;
|
|
28
39
|
}
|
|
29
40
|
catch (err) {
|
|
30
|
-
(0, log_1.verbose)(
|
|
41
|
+
(0, log_1.verbose)('no config file found at:', configPath);
|
|
31
42
|
return {};
|
|
32
43
|
}
|
|
33
44
|
},
|
|
34
45
|
readFileSync: function (filePath) {
|
|
46
|
+
(0, log_1.verbose)('readFileSync(', filePath, ')');
|
|
35
47
|
return (0, fs_extra_1.readFileSync)(filePath, { encoding: 'utf8' });
|
|
36
48
|
},
|
|
37
49
|
readYamlFileSync: function (filePath) {
|
|
50
|
+
(0, log_1.verbose)('readYamlFileSync(', filePath, ')');
|
|
38
51
|
return (0, read_yaml_file_1.sync)(filePath);
|
|
39
52
|
},
|
|
40
53
|
removeSync: function (filePath) {
|
|
54
|
+
(0, log_1.verbose)('removeSync(', filePath, ')');
|
|
41
55
|
(0, fs_extra_1.removeSync)(filePath);
|
|
42
56
|
},
|
|
43
57
|
writeFileSync: function (filePath, contents) {
|
|
58
|
+
(0, log_1.verbose)('writeFileSync(', filePath, contents, ')');
|
|
44
59
|
(0, fs_extra_1.writeFileSync)(filePath, contents);
|
|
45
60
|
}
|
|
46
61
|
};
|
|
@@ -4,6 +4,7 @@ exports.getConfig = void 0;
|
|
|
4
4
|
var expect_more_1 = require("expect-more");
|
|
5
5
|
var constants_1 = require("../../constants");
|
|
6
6
|
var is_semver_1 = require("../../lib/is-semver");
|
|
7
|
+
var log_1 = require("../log");
|
|
7
8
|
/**
|
|
8
9
|
* Take all configuration from the command line and config file, combine it, and
|
|
9
10
|
* set defaults for anything which hasn't been defined.
|
|
@@ -12,11 +13,13 @@ var is_semver_1 = require("../../lib/is-semver");
|
|
|
12
13
|
* @param program Optional command line options
|
|
13
14
|
*/
|
|
14
15
|
var getConfig = function (disk, program) {
|
|
16
|
+
(0, log_1.verbose)('cli arguments:', program);
|
|
15
17
|
var rcFile = disk.readConfigFileSync(program.configPath);
|
|
16
18
|
var hasTypeOverride = (0, expect_more_1.isBoolean)(program.dev) ||
|
|
17
19
|
(0, expect_more_1.isBoolean)(program.workspace) ||
|
|
18
20
|
(0, expect_more_1.isBoolean)(program.overrides) ||
|
|
19
21
|
(0, expect_more_1.isBoolean)(program.peer) ||
|
|
22
|
+
(0, expect_more_1.isBoolean)(program.pnpmOverrides) ||
|
|
20
23
|
(0, expect_more_1.isBoolean)(program.prod) ||
|
|
21
24
|
(0, expect_more_1.isBoolean)(program.resolutions);
|
|
22
25
|
var dev = hasTypeOverride
|
|
@@ -31,19 +34,28 @@ var getConfig = function (disk, program) {
|
|
|
31
34
|
var peer = hasTypeOverride
|
|
32
35
|
? Boolean(program.peer)
|
|
33
36
|
: getOption('peer', expect_more_1.isBoolean);
|
|
37
|
+
var pnpmOverrides = hasTypeOverride
|
|
38
|
+
? Boolean(program.pnpmOverrides)
|
|
39
|
+
: getOption('pnpmOverrides', expect_more_1.isBoolean);
|
|
34
40
|
var prod = hasTypeOverride
|
|
35
41
|
? Boolean(program.prod)
|
|
36
42
|
: getOption('prod', expect_more_1.isBoolean);
|
|
37
43
|
var resolutions = hasTypeOverride
|
|
38
44
|
? Boolean(program.resolutions)
|
|
39
45
|
: getOption('resolutions', expect_more_1.isBoolean);
|
|
40
|
-
var dependencyTypes = dev ||
|
|
46
|
+
var dependencyTypes = dev ||
|
|
47
|
+
overrides ||
|
|
48
|
+
peer ||
|
|
49
|
+
pnpmOverrides ||
|
|
50
|
+
prod ||
|
|
51
|
+
resolutions ||
|
|
52
|
+
workspace
|
|
41
53
|
? constants_1.DEPENDENCY_TYPES.filter(function (type) {
|
|
42
|
-
return (type === '
|
|
43
|
-
(type === '
|
|
54
|
+
return (type === 'dependencies' && prod) ||
|
|
55
|
+
(type === 'devDependencies' && dev) ||
|
|
44
56
|
(type === 'overrides' && overrides) ||
|
|
45
57
|
(type === 'peerDependencies' && peer) ||
|
|
46
|
-
(type === '
|
|
58
|
+
(type === 'pnpmOverrides' && pnpmOverrides) ||
|
|
47
59
|
(type === 'resolutions' && resolutions);
|
|
48
60
|
})
|
|
49
61
|
: constants_1.DEPENDENCY_TYPES;
|
|
@@ -72,7 +84,7 @@ var getConfig = function (disk, program) {
|
|
|
72
84
|
dependencies: ['**']
|
|
73
85
|
};
|
|
74
86
|
var versionGroups = getOption('versionGroups', isArrayOfVersionGroups).concat(defaultVersionGroup);
|
|
75
|
-
|
|
87
|
+
var finalConfig = {
|
|
76
88
|
dependencyTypes: dependencyTypes,
|
|
77
89
|
dev: dev,
|
|
78
90
|
filter: filter,
|
|
@@ -80,6 +92,7 @@ var getConfig = function (disk, program) {
|
|
|
80
92
|
workspace: workspace,
|
|
81
93
|
overrides: overrides,
|
|
82
94
|
peer: peer,
|
|
95
|
+
pnpmOverrides: pnpmOverrides,
|
|
83
96
|
prod: prod,
|
|
84
97
|
resolutions: resolutions,
|
|
85
98
|
semverGroups: semverGroups,
|
|
@@ -89,6 +102,8 @@ var getConfig = function (disk, program) {
|
|
|
89
102
|
source: source,
|
|
90
103
|
versionGroups: versionGroups
|
|
91
104
|
};
|
|
105
|
+
(0, log_1.verbose)('final config:', finalConfig);
|
|
106
|
+
return finalConfig;
|
|
92
107
|
function getOption(name, isValid) {
|
|
93
108
|
var cliOption = program[name];
|
|
94
109
|
if (isValid(cliOption))
|
|
@@ -45,8 +45,8 @@ exports.getInstances = void 0;
|
|
|
45
45
|
var expect_more_1 = require("expect-more");
|
|
46
46
|
var minimatch_1 = __importDefault(require("minimatch"));
|
|
47
47
|
function getInstances(options, wrappers) {
|
|
48
|
-
var e_1, _a, e_2, _b, e_3, _c;
|
|
49
|
-
var
|
|
48
|
+
var e_1, _a, e_2, _b, e_3, _c, e_4, _d;
|
|
49
|
+
var _e, _f, _g, _h, _j;
|
|
50
50
|
var allInstances = {
|
|
51
51
|
all: [],
|
|
52
52
|
semverGroups: options.semverGroups.map(withInstances),
|
|
@@ -57,40 +57,22 @@ function getInstances(options, wrappers) {
|
|
|
57
57
|
var wrapper = wrappers_1_1.value;
|
|
58
58
|
var pkgName = wrapper.contents.name || 'packagewithoutaname';
|
|
59
59
|
try {
|
|
60
|
-
for (var
|
|
61
|
-
var dependencyType =
|
|
60
|
+
for (var _k = (e_2 = void 0, __values(options.dependencyTypes)), _l = _k.next(); !_l.done; _l = _k.next()) {
|
|
61
|
+
var dependencyType = _l.value;
|
|
62
62
|
if (dependencyType === 'workspace') {
|
|
63
|
-
var name = (
|
|
64
|
-
var version = (
|
|
65
|
-
|
|
66
|
-
continue;
|
|
67
|
-
if (name.search(new RegExp(options.filter)) === -1)
|
|
68
|
-
continue;
|
|
69
|
-
if (!(0, expect_more_1.isNonEmptyString)(version))
|
|
70
|
-
continue;
|
|
71
|
-
var instance = { dependencyType: dependencyType, name: name, version: version, wrapper: wrapper };
|
|
72
|
-
allInstances.all.push(instance);
|
|
73
|
-
groupInstancesBy('semverGroups', dependencyType, pkgName, instance);
|
|
74
|
-
groupInstancesBy('versionGroups', dependencyType, pkgName, instance);
|
|
63
|
+
var name = (_e = wrapper.contents) === null || _e === void 0 ? void 0 : _e.name;
|
|
64
|
+
var version = (_f = wrapper.contents) === null || _f === void 0 ? void 0 : _f.version;
|
|
65
|
+
addInstance(wrapper, dependencyType, pkgName, name, version);
|
|
75
66
|
}
|
|
76
|
-
else {
|
|
77
|
-
var versionsByName = (
|
|
67
|
+
else if (dependencyType === 'pnpmOverrides') {
|
|
68
|
+
var versionsByName = (_h = (_g = wrapper.contents) === null || _g === void 0 ? void 0 : _g.pnpm) === null || _h === void 0 ? void 0 : _h.overrides;
|
|
78
69
|
if (!(0, expect_more_1.isObject)(versionsByName))
|
|
79
70
|
continue;
|
|
80
71
|
var pkgs = Object.entries(versionsByName);
|
|
81
72
|
try {
|
|
82
73
|
for (var pkgs_1 = (e_3 = void 0, __values(pkgs)), pkgs_1_1 = pkgs_1.next(); !pkgs_1_1.done; pkgs_1_1 = pkgs_1.next()) {
|
|
83
|
-
var
|
|
84
|
-
|
|
85
|
-
continue;
|
|
86
|
-
if (name.search(new RegExp(options.filter)) === -1)
|
|
87
|
-
continue;
|
|
88
|
-
if (!(0, expect_more_1.isNonEmptyString)(version))
|
|
89
|
-
continue;
|
|
90
|
-
var instance = { dependencyType: dependencyType, name: name, version: version, wrapper: wrapper };
|
|
91
|
-
allInstances.all.push(instance);
|
|
92
|
-
groupInstancesBy('semverGroups', dependencyType, pkgName, instance);
|
|
93
|
-
groupInstancesBy('versionGroups', dependencyType, pkgName, instance);
|
|
74
|
+
var _m = __read(pkgs_1_1.value, 2), name = _m[0], version = _m[1];
|
|
75
|
+
addInstance(wrapper, dependencyType, pkgName, name, version);
|
|
94
76
|
}
|
|
95
77
|
}
|
|
96
78
|
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
@@ -101,12 +83,31 @@ function getInstances(options, wrappers) {
|
|
|
101
83
|
finally { if (e_3) throw e_3.error; }
|
|
102
84
|
}
|
|
103
85
|
}
|
|
86
|
+
else {
|
|
87
|
+
var versionsByName = (_j = wrapper.contents) === null || _j === void 0 ? void 0 : _j[dependencyType];
|
|
88
|
+
if (!(0, expect_more_1.isObject)(versionsByName))
|
|
89
|
+
continue;
|
|
90
|
+
var pkgs = Object.entries(versionsByName);
|
|
91
|
+
try {
|
|
92
|
+
for (var pkgs_2 = (e_4 = void 0, __values(pkgs)), pkgs_2_1 = pkgs_2.next(); !pkgs_2_1.done; pkgs_2_1 = pkgs_2.next()) {
|
|
93
|
+
var _o = __read(pkgs_2_1.value, 2), name = _o[0], version = _o[1];
|
|
94
|
+
addInstance(wrapper, dependencyType, pkgName, name, version);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
98
|
+
finally {
|
|
99
|
+
try {
|
|
100
|
+
if (pkgs_2_1 && !pkgs_2_1.done && (_d = pkgs_2["return"])) _d.call(pkgs_2);
|
|
101
|
+
}
|
|
102
|
+
finally { if (e_4) throw e_4.error; }
|
|
103
|
+
}
|
|
104
|
+
}
|
|
104
105
|
}
|
|
105
106
|
}
|
|
106
107
|
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
107
108
|
finally {
|
|
108
109
|
try {
|
|
109
|
-
if (
|
|
110
|
+
if (_l && !_l.done && (_b = _k["return"])) _b.call(_k);
|
|
110
111
|
}
|
|
111
112
|
finally { if (e_2) throw e_2.error; }
|
|
112
113
|
}
|
|
@@ -120,6 +121,18 @@ function getInstances(options, wrappers) {
|
|
|
120
121
|
finally { if (e_1) throw e_1.error; }
|
|
121
122
|
}
|
|
122
123
|
return allInstances;
|
|
124
|
+
function addInstance(wrapper, dependencyType, pkgName, name, version) {
|
|
125
|
+
if (!(0, expect_more_1.isNonEmptyString)(name))
|
|
126
|
+
return;
|
|
127
|
+
if (name.search(new RegExp(options.filter)) === -1)
|
|
128
|
+
return;
|
|
129
|
+
if (!(0, expect_more_1.isNonEmptyString)(version))
|
|
130
|
+
return;
|
|
131
|
+
var instance = { dependencyType: dependencyType, name: name, version: version, wrapper: wrapper };
|
|
132
|
+
allInstances.all.push(instance);
|
|
133
|
+
groupInstancesBy('semverGroups', dependencyType, pkgName, instance);
|
|
134
|
+
groupInstancesBy('versionGroups', dependencyType, pkgName, instance);
|
|
135
|
+
}
|
|
123
136
|
function withInstances(group) {
|
|
124
137
|
var instances = [];
|
|
125
138
|
var instancesByName = {};
|
|
@@ -52,7 +52,6 @@ exports.getPatterns = void 0;
|
|
|
52
52
|
var expect_more_1 = require("expect-more");
|
|
53
53
|
var function_1 = require("fp-ts/lib/function");
|
|
54
54
|
var O = __importStar(require("fp-ts/lib/Option"));
|
|
55
|
-
var path_1 = require("path");
|
|
56
55
|
var constants_1 = require("../../../../constants");
|
|
57
56
|
var tap_1 = require("../tap");
|
|
58
57
|
var get_lerna_patterns_1 = require("./get-lerna-patterns");
|
|
@@ -70,7 +69,9 @@ function getPatterns(disk, program) {
|
|
|
70
69
|
return __spreadArray(['.'], __read(patterns), false);
|
|
71
70
|
}
|
|
72
71
|
function limitToPackageJson(patterns) {
|
|
73
|
-
return patterns.map(function (pattern) {
|
|
72
|
+
return patterns.map(function (pattern) {
|
|
73
|
+
return pattern.includes('package.json') ? pattern : "".concat(pattern, "/package.json");
|
|
74
|
+
});
|
|
74
75
|
}
|
|
75
76
|
}
|
|
76
77
|
exports.getPatterns = getPatterns;
|
|
@@ -10,6 +10,9 @@ export interface Source {
|
|
|
10
10
|
keywords?: string[];
|
|
11
11
|
name?: string;
|
|
12
12
|
peerDependencies?: Record<string, string>;
|
|
13
|
+
pnpm?: {
|
|
14
|
+
overrides?: Record<string, string>;
|
|
15
|
+
};
|
|
13
16
|
repository?: {
|
|
14
17
|
type: string;
|
|
15
18
|
url: string;
|
|
@@ -18,7 +21,7 @@ export interface Source {
|
|
|
18
21
|
scripts?: Record<string, string>;
|
|
19
22
|
version?: string;
|
|
20
23
|
workspaces?: Record<string, string[]> | string[];
|
|
21
|
-
[otherProps: string]: Record<string, string | string[]
|
|
24
|
+
[otherProps: string]: Record<string, string | string[] | Record<string, string | string[]>> | string | string[] | undefined;
|
|
22
25
|
}
|
|
23
26
|
export interface SourceWrapper {
|
|
24
27
|
/** the absolute path on disk to this package.json file */
|
|
@@ -16,5 +16,5 @@ export declare type ProgramInput = SyncpackConfig & {
|
|
|
16
16
|
* @param program Options received from CLI arguments
|
|
17
17
|
*/
|
|
18
18
|
export declare function getInput(disk: Disk, program: Partial<SyncpackConfig & {
|
|
19
|
-
configPath: string;
|
|
19
|
+
configPath: string | undefined;
|
|
20
20
|
}>): ProgramInput;
|
package/dist/lib/log.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function verbose(
|
|
1
|
+
export declare function verbose(...values: any[]): void;
|
package/dist/lib/log.js
CHANGED
|
@@ -1,13 +1,48 @@
|
|
|
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
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
19
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
20
|
+
if (ar || !(i in from)) {
|
|
21
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
22
|
+
ar[i] = from[i];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
26
|
+
};
|
|
2
27
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
28
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
29
|
};
|
|
5
30
|
exports.__esModule = true;
|
|
6
31
|
exports.verbose = void 0;
|
|
7
32
|
var chalk_1 = __importDefault(require("chalk"));
|
|
8
|
-
|
|
33
|
+
var expect_more_1 = require("expect-more");
|
|
34
|
+
var util_1 = require("util");
|
|
35
|
+
function verbose() {
|
|
36
|
+
var values = [];
|
|
37
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
38
|
+
values[_i] = arguments[_i];
|
|
39
|
+
}
|
|
9
40
|
if (process.env.SYNCPACK_VERBOSE) {
|
|
10
|
-
console.
|
|
41
|
+
console.info.apply(console, __spreadArray([chalk_1["default"].yellow('?')], __read(values.map(function (value) {
|
|
42
|
+
return (0, expect_more_1.isString)(value)
|
|
43
|
+
? chalk_1["default"].yellow(value)
|
|
44
|
+
: (0, util_1.inspect)(value, false, null, true);
|
|
45
|
+
})), false));
|
|
11
46
|
}
|
|
12
47
|
}
|
|
13
48
|
exports.verbose = verbose;
|
package/dist/option.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export declare const option: {
|
|
|
6
6
|
readonly indent: readonly ["-i, --indent [value]", `override indentation. defaults to "${string}"`];
|
|
7
7
|
readonly overrides: readonly ["-o, --overrides", string];
|
|
8
8
|
readonly peer: readonly ["-P, --peer", string];
|
|
9
|
+
readonly pnpmOverrides: readonly ["-O, --overrides", string];
|
|
9
10
|
readonly prod: readonly ["-p, --prod", string];
|
|
10
11
|
readonly resolutions: readonly ["-R, --resolutions", string];
|
|
11
12
|
readonly semverRange: readonly ["-r, --semver-range <range>", "see supported ranges below. defaults to \"\"" | "see supported ranges below. defaults to \"*\"" | "see supported ranges below. defaults to \">\"" | "see supported ranges below. defaults to \">=\"" | "see supported ranges below. defaults to \".x\"" | "see supported ranges below. defaults to \"<\"" | "see supported ranges below. defaults to \"<=\"" | "see supported ranges below. defaults to \"^\"" | "see supported ranges below. defaults to \"~\""];
|
package/dist/option.js
CHANGED
|
@@ -22,12 +22,13 @@ exports.option = {
|
|
|
22
22
|
'-i, --indent [value]',
|
|
23
23
|
"override indentation. defaults to \"".concat(constants_1.DEFAULT_CONFIG.indent, "\""),
|
|
24
24
|
],
|
|
25
|
-
overrides: ['-o, --overrides', (0, chalk_1["default"])(templateObject_3 || (templateObject_3 = __makeTemplateObject(["include {yellow overrides} (
|
|
25
|
+
overrides: ['-o, --overrides', (0, chalk_1["default"])(templateObject_3 || (templateObject_3 = __makeTemplateObject(["include {yellow overrides} (npm)"], ["include {yellow overrides} (npm)"])))],
|
|
26
26
|
peer: ['-P, --peer', (0, chalk_1["default"])(templateObject_4 || (templateObject_4 = __makeTemplateObject(["include {yellow peerDependencies}"], ["include {yellow peerDependencies}"])))],
|
|
27
|
-
|
|
27
|
+
pnpmOverrides: ['-O, --overrides', (0, chalk_1["default"])(templateObject_5 || (templateObject_5 = __makeTemplateObject(["include {yellow overrides} (pnpm)"], ["include {yellow overrides} (pnpm)"])))],
|
|
28
|
+
prod: ['-p, --prod', (0, chalk_1["default"])(templateObject_6 || (templateObject_6 = __makeTemplateObject(["include {yellow dependencies}"], ["include {yellow dependencies}"])))],
|
|
28
29
|
resolutions: [
|
|
29
30
|
'-R, --resolutions',
|
|
30
|
-
(0, chalk_1["default"])(
|
|
31
|
+
(0, chalk_1["default"])(templateObject_7 || (templateObject_7 = __makeTemplateObject(["include {yellow resolutions} (yarn)"], ["include {yellow resolutions} (yarn)"]))),
|
|
31
32
|
],
|
|
32
33
|
semverRange: [
|
|
33
34
|
'-r, --semver-range <range>',
|
|
@@ -41,4 +42,4 @@ exports.option = {
|
|
|
41
42
|
],
|
|
42
43
|
workspace: ['-w, --workspace', 'include locally developed package versions']
|
|
43
44
|
};
|
|
44
|
-
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;
|
|
45
|
+
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "syncpack",
|
|
3
3
|
"description": "Manage multiple package.json files, such as in Lerna Monorepos and Yarn/Pnpm Workspaces",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "8.0.0",
|
|
5
5
|
"author": "Jamie Mason <jamie@foldleft.io> (https://github.com/JamieMason)",
|
|
6
6
|
"bin": {
|
|
7
7
|
"syncpack": "dist/bin.js",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"commander": "9.2.0",
|
|
29
29
|
"cosmiconfig": "7.0.1",
|
|
30
30
|
"expect-more": "1.2.0",
|
|
31
|
-
"fp-ts": "2.12.
|
|
31
|
+
"fp-ts": "2.12.1",
|
|
32
32
|
"fs-extra": "10.1.0",
|
|
33
33
|
"glob": "8.0.1",
|
|
34
34
|
"minimatch": "5.0.1",
|
|
@@ -39,10 +39,10 @@
|
|
|
39
39
|
"@types/fs-extra": "9.0.13",
|
|
40
40
|
"@types/glob": "7.2.0",
|
|
41
41
|
"@types/jest": "27.4.1",
|
|
42
|
-
"@types/node": "17.0.
|
|
42
|
+
"@types/node": "17.0.31",
|
|
43
43
|
"@types/semver": "7.3.9",
|
|
44
|
-
"@typescript-eslint/eslint-plugin": "5.
|
|
45
|
-
"@typescript-eslint/parser": "5.
|
|
44
|
+
"@typescript-eslint/eslint-plugin": "5.21.0",
|
|
45
|
+
"@typescript-eslint/parser": "5.21.0",
|
|
46
46
|
"eslint": "8.14.0",
|
|
47
47
|
"eslint-plugin-import": "2.26.0",
|
|
48
48
|
"expect-more-jest": "5.4.0",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"prettier": "2.6.2",
|
|
51
51
|
"rimraf": "3.0.2",
|
|
52
52
|
"ts-jest": "27.1.4",
|
|
53
|
-
"typescript": "4.6.
|
|
53
|
+
"typescript": "4.6.4"
|
|
54
54
|
},
|
|
55
55
|
"engines": {
|
|
56
56
|
"node": ">=10"
|
|
@@ -88,6 +88,6 @@
|
|
|
88
88
|
"format:source": "prettier --write .",
|
|
89
89
|
"lint": "eslint --ext .ts .",
|
|
90
90
|
"prepack": "yarn build",
|
|
91
|
-
"test": "jest"
|
|
91
|
+
"test": "jest src"
|
|
92
92
|
}
|
|
93
93
|
}
|