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.
Files changed (33) hide show
  1. package/README.md +57 -19
  2. package/dist/bin-fix-mismatches/fix-mismatches.js +19 -1
  3. package/dist/bin-fix-mismatches/get-expected-version/index.d.ts +1 -1
  4. package/dist/bin-fix-mismatches/get-expected-version/index.js +12 -8
  5. package/dist/bin-fix-mismatches/index.js +1 -0
  6. package/dist/bin-lint-semver-ranges/index.js +2 -1
  7. package/dist/bin-lint-semver-ranges/lint-semver-ranges.d.ts +2 -1
  8. package/dist/bin-lint-semver-ranges/lint-semver-ranges.js +2 -2
  9. package/dist/bin-list/index.js +2 -1
  10. package/dist/bin-list/list-version-groups.d.ts +1 -0
  11. package/dist/bin-list/list-version-groups.js +9 -5
  12. package/dist/bin-list/list.d.ts +2 -1
  13. package/dist/bin-list/list.js +7 -6
  14. package/dist/bin-list-mismatches/index.js +2 -1
  15. package/dist/bin-list-mismatches/list-mismatches.d.ts +2 -1
  16. package/dist/bin-list-mismatches/list-mismatches.js +8 -7
  17. package/dist/bin-set-semver-ranges/index.js +1 -0
  18. package/dist/bin-set-semver-ranges/set-semver-ranges.js +7 -1
  19. package/dist/constants.d.ts +10 -2
  20. package/dist/constants.js +2 -0
  21. package/dist/lib/disk.d.ts +3 -0
  22. package/dist/lib/disk.js +22 -7
  23. package/dist/lib/get-input/get-config.d.ts +1 -1
  24. package/dist/lib/get-input/get-config.js +20 -5
  25. package/dist/lib/get-input/get-instances.js +43 -30
  26. package/dist/lib/get-input/get-wrappers/get-patterns/index.js +3 -2
  27. package/dist/lib/get-input/get-wrappers/index.d.ts +4 -1
  28. package/dist/lib/get-input/index.d.ts +1 -1
  29. package/dist/lib/log.d.ts +1 -1
  30. package/dist/lib/log.js +37 -2
  31. package/dist/option.d.ts +1 -0
  32. package/dist/option.js +5 -4
  33. 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 (pnpm)
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 (pnpm)
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 (pnpm)
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 (pnpm)
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 (pnpm)
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` (Pnpm), and the `version` property of the
343
- package.json files of your own packages developed within your `workspace`
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`, or `--workspace`
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 *to each other* and not have `syncpack` make them all the same.
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 some examples, they work the same way.
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
- root[dependencyType][name] = nextVersion_1;
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 ((0, get_pinned_version_1.getPinnedVersion)(versionGroup) ||
9
- (input.workspace === true && (0, get_workspace_version_1.getWorkspaceVersion)(name, input.wrappers)) ||
10
- (0, get_highest_version_1.getHighestVersion)(versionGroup.instances
11
- .filter(function (instance) { return instance.name === name; })
12
- .map(function (_a) {
13
- var version = _a.version;
14
- return version;
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;
@@ -1,2 +1,3 @@
1
+ import type { Disk } from '../lib/disk';
1
2
  import type { ProgramInput } from '../lib/get-input';
2
- export declare function lintSemverRanges(input: ProgramInput): void;
3
+ export declare function lintSemverRanges(input: ProgramInput, disk: Disk): void;
@@ -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;
@@ -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;
@@ -2,6 +2,7 @@ import type { IndexedVersionGroup, Instance } from '../lib/get-input/get-instanc
2
2
  export interface ListItem {
3
3
  hasMismatches: boolean;
4
4
  instances: Instance[];
5
+ isBanned: boolean;
5
6
  name: string;
6
7
  uniques: string[];
7
8
  }
@@ -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 instancesByName = (0, group_by_1.groupBy)('name', versionGroup.instances.sort(sort_by_name_1.sortByName));
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 hasMismatches = versions.some(function (version, i) {
35
- return (hasPinnedVersion && version !== pinnedVersion) ||
36
- (i > 0 && version !== versions[i - 1]);
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
  };
@@ -1,2 +1,3 @@
1
+ import type { Disk } from '../lib/disk';
1
2
  import type { ProgramInput } from '../lib/get-input';
2
- export declare function list(input: ProgramInput): void;
3
+ export declare function list(input: ProgramInput, disk: Disk): void;
@@ -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(hasMismatches
30
- ? (0, chalk_1["default"])(templateObject_2 || (templateObject_2 = __makeTemplateObject(["{red \u2715 ", "} {dim.red ", "}"], ["{red \u2715 ", "} {dim.red ", "}"])), name, versionList) : (0, chalk_1["default"])(templateObject_3 || (templateObject_3 = __makeTemplateObject(["{dim -} {white ", "} {dim ", "}"], ["{dim -} {white ", "} {dim ", "}"])), name, versionList));
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;
@@ -1,2 +1,3 @@
1
+ import type { Disk } from '../lib/disk';
1
2
  import type { ProgramInput } from '../lib/get-input';
2
- export declare function listMismatches(input: ProgramInput): void;
3
+ export declare function listMismatches(input: ProgramInput, disk: Disk): void;
@@ -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((0, chalk_1["default"])(templateObject_2 || (templateObject_2 = __makeTemplateObject(["{dim -} ", " {green.dim ", "}"], ["{dim -} ", " {green.dim ", "}"])), name, expectedVersion));
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"])(templateObject_3 || (templateObject_3 = __makeTemplateObject(["{red ", " {dim at ", "}}"], ["{red ", " {dim at ", "}}"])), version, shortPath));
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"])(templateObject_4 || (templateObject_4 = __makeTemplateObject(["{red ", " {dim in ", " of ", "}}"], ["{red ", " {dim in ", " of ", "}}"])), version, dependencyType, wrapper.contents.name));
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
- root[dependencyType][name] = (0, set_semver_range_1.setSemverRange)(semverGroup.range, version);
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) {
@@ -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 pnpm overrides
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,
@@ -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
- var rcConfig = result !== null ? result.config : {};
24
- var rcFile = (0, expect_more_1.isObject)(rcConfig)
25
- ? rcConfig
26
- : {};
27
- return rcFile;
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)("no config file found at ".concat(configPath));
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
  };
@@ -8,5 +8,5 @@ import type { Disk } from '../disk';
8
8
  * @param program Optional command line options
9
9
  */
10
10
  export declare const getConfig: (disk: Disk, program: Partial<SyncpackConfig & {
11
- configPath: string;
11
+ configPath: string | undefined;
12
12
  }>) => SyncpackConfig;
@@ -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 || workspace || overrides || peer || prod || resolutions
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 === 'devDependencies' && dev) ||
43
- (type === 'workspace' && workspace) ||
54
+ return (type === 'dependencies' && prod) ||
55
+ (type === 'devDependencies' && dev) ||
44
56
  (type === 'overrides' && overrides) ||
45
57
  (type === 'peerDependencies' && peer) ||
46
- (type === 'dependencies' && prod) ||
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
- return {
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 _d, _e, _f;
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 _g = (e_2 = void 0, __values(options.dependencyTypes)), _h = _g.next(); !_h.done; _h = _g.next()) {
61
- var dependencyType = _h.value;
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 = (_d = wrapper.contents) === null || _d === void 0 ? void 0 : _d.name;
64
- var version = (_e = wrapper.contents) === null || _e === void 0 ? void 0 : _e.version;
65
- if (!(0, expect_more_1.isNonEmptyString)(name))
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 = (_f = wrapper.contents) === null || _f === void 0 ? void 0 : _f[dependencyType];
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 _j = __read(pkgs_1_1.value, 2), name = _j[0], version = _j[1];
84
- if (!(0, expect_more_1.isNonEmptyString)(name))
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 (_h && !_h.done && (_b = _g["return"])) _b.call(_g);
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) { return (0, path_1.join)(pattern, 'package.json'); });
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[]> | string | string[] | undefined;
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(message: string): void;
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
- function verbose(message) {
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.log(chalk_1["default"].yellow("? ".concat(message)));
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} (pnpm)"], ["include {yellow overrides} (pnpm)"])))],
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
- prod: ['-p, --prod', (0, chalk_1["default"])(templateObject_5 || (templateObject_5 = __makeTemplateObject(["include {yellow dependencies}"], ["include {yellow dependencies}"])))],
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"])(templateObject_6 || (templateObject_6 = __makeTemplateObject(["include {yellow resolutions} (yarn)"], ["include {yellow resolutions} (yarn)"]))),
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": "7.1.0",
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.0",
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.25",
42
+ "@types/node": "17.0.31",
43
43
  "@types/semver": "7.3.9",
44
- "@typescript-eslint/eslint-plugin": "5.20.0",
45
- "@typescript-eslint/parser": "5.20.0",
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.3"
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
  }