syncpack 10.5.1 → 10.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/README.md +8 -5
  2. package/dist/bin-fix-mismatches/effects.d.ts +2 -0
  3. package/dist/bin-fix-mismatches/effects.js +112 -0
  4. package/dist/bin-fix-mismatches/fix-mismatches.d.ts +4 -2
  5. package/dist/bin-fix-mismatches/fix-mismatches.js +38 -49
  6. package/dist/bin-fix-mismatches/index.js +28 -4
  7. package/dist/bin-format/format-cli.d.ts +4 -3
  8. package/dist/bin-format/format-cli.js +35 -4
  9. package/dist/bin-format/format.d.ts +3 -2
  10. package/dist/bin-format/format.js +25 -1
  11. package/dist/bin-format/index.js +27 -3
  12. package/dist/bin-lint/index.js +28 -4
  13. package/dist/bin-lint/lint.d.ts +4 -0
  14. package/dist/bin-lint/lint.js +44 -0
  15. package/dist/bin-lint-semver-ranges/effects.d.ts +2 -0
  16. package/dist/bin-lint-semver-ranges/effects.js +70 -0
  17. package/dist/bin-lint-semver-ranges/index.js +28 -4
  18. package/dist/bin-lint-semver-ranges/lint-semver-ranges.d.ts +4 -2
  19. package/dist/bin-lint-semver-ranges/lint-semver-ranges.js +14 -39
  20. package/dist/bin-list/effects.d.ts +2 -0
  21. package/dist/bin-list/effects.js +112 -0
  22. package/dist/bin-list/index.js +28 -4
  23. package/dist/bin-list/list.d.ts +4 -2
  24. package/dist/bin-list/list.js +14 -75
  25. package/dist/bin-list-mismatches/effects.d.ts +2 -0
  26. package/dist/bin-list-mismatches/effects.js +136 -0
  27. package/dist/bin-list-mismatches/index.js +28 -4
  28. package/dist/bin-list-mismatches/list-mismatches.d.ts +4 -2
  29. package/dist/bin-list-mismatches/list-mismatches.js +14 -87
  30. package/dist/bin-prompt/effects.d.ts +2 -0
  31. package/dist/bin-prompt/effects.js +110 -0
  32. package/dist/bin-prompt/index.js +28 -4
  33. package/dist/bin-prompt/prompt.d.ts +4 -0
  34. package/dist/bin-prompt/prompt.js +42 -0
  35. package/dist/bin-set-semver-ranges/effects.d.ts +2 -0
  36. package/dist/bin-set-semver-ranges/effects.js +61 -0
  37. package/dist/bin-set-semver-ranges/index.js +28 -4
  38. package/dist/bin-set-semver-ranges/set-semver-ranges.d.ts +4 -2
  39. package/dist/bin-set-semver-ranges/set-semver-ranges.js +39 -22
  40. package/dist/bin-update/effects.d.ts +11 -0
  41. package/dist/bin-update/effects.js +187 -0
  42. package/dist/bin-update/index.d.ts +2 -0
  43. package/dist/bin-update/index.js +80 -0
  44. package/dist/bin-update/update.d.ts +4 -0
  45. package/dist/bin-update/update.js +47 -0
  46. package/dist/bin.js +3 -0
  47. package/dist/config/get-custom-types.d.ts +2 -2
  48. package/dist/config/get-enabled-types.d.ts +12 -2
  49. package/dist/config/get-enabled-types.js +38 -4
  50. package/dist/config/get-filter.d.ts +2 -2
  51. package/dist/config/get-indent.d.ts +2 -2
  52. package/dist/config/get-semver-range.d.ts +2 -2
  53. package/dist/config/get-semver-range.js +4 -4
  54. package/dist/config/get-sort-az.d.ts +2 -2
  55. package/dist/config/get-sort-first.d.ts +2 -2
  56. package/dist/config/get-source.d.ts +2 -2
  57. package/dist/config/get-source.js +1 -2
  58. package/dist/config/types.d.ts +8 -6
  59. package/dist/config/types.js +26 -0
  60. package/dist/constants.d.ts +1 -1
  61. package/dist/constants.js +1 -1
  62. package/dist/create-program/effects.d.ts +40 -0
  63. package/dist/create-program/effects.js +2 -0
  64. package/dist/create-program/semver-ranges.d.ts +7 -0
  65. package/dist/create-program/semver-ranges.js +55 -0
  66. package/dist/create-program/versions.d.ts +7 -0
  67. package/dist/create-program/versions.js +70 -0
  68. package/dist/env/create-env.d.ts +21 -0
  69. package/dist/env/create-env.js +60 -0
  70. package/dist/env/default-env.d.ts +18 -0
  71. package/dist/env/default-env.js +95 -0
  72. package/dist/env/exit-if-invalid.d.ts +4 -0
  73. package/dist/env/exit-if-invalid.js +34 -0
  74. package/dist/env/tags.d.ts +58 -0
  75. package/dist/env/tags.js +50 -0
  76. package/dist/env/write-if-changed.d.ts +11 -0
  77. package/dist/env/write-if-changed.js +73 -0
  78. package/dist/error-handlers/create-error-handlers.d.ts +19 -0
  79. package/dist/error-handlers/create-error-handlers.js +57 -0
  80. package/dist/error-handlers/default-error-handlers.d.ts +2 -0
  81. package/dist/error-handlers/default-error-handlers.js +57 -0
  82. package/dist/get-context/index.d.ts +11 -8
  83. package/dist/get-context/index.js +31 -9
  84. package/dist/get-package-json-files/get-file-paths.d.ts +17 -8
  85. package/dist/get-package-json-files/get-file-paths.js +40 -20
  86. package/dist/get-package-json-files/get-patterns/get-lerna-patterns.d.ts +4 -3
  87. package/dist/get-package-json-files/get-patterns/get-lerna-patterns.js +31 -8
  88. package/dist/get-package-json-files/get-patterns/get-pnpm-patterns.d.ts +4 -3
  89. package/dist/get-package-json-files/get-patterns/get-pnpm-patterns.js +36 -14
  90. package/dist/get-package-json-files/get-patterns/get-yarn-patterns.d.ts +4 -3
  91. package/dist/get-package-json-files/get-patterns/get-yarn-patterns.js +37 -9
  92. package/dist/get-package-json-files/get-patterns/index.d.ts +4 -4
  93. package/dist/get-package-json-files/get-patterns/index.js +37 -18
  94. package/dist/get-package-json-files/get-patterns/read-json-safe.d.ts +15 -3
  95. package/dist/get-package-json-files/get-patterns/read-json-safe.js +36 -10
  96. package/dist/get-package-json-files/index.d.ts +7 -4
  97. package/dist/get-package-json-files/index.js +27 -9
  98. package/dist/get-package-json-files/instance.js +2 -2
  99. package/dist/get-package-json-files/package-json-file.d.ts +6 -10
  100. package/dist/get-package-json-files/package-json-file.js +5 -21
  101. package/dist/get-semver-groups/filtered-out.d.ts +12 -6
  102. package/dist/get-semver-groups/filtered-out.js +40 -14
  103. package/dist/get-semver-groups/ignored.d.ts +10 -4
  104. package/dist/get-semver-groups/ignored.js +34 -8
  105. package/dist/get-semver-groups/index.d.ts +80 -28
  106. package/dist/get-semver-groups/index.js +94 -42
  107. package/dist/get-semver-groups/with-range.d.ts +12 -5
  108. package/dist/get-semver-groups/with-range.js +49 -25
  109. package/dist/get-version-groups/banned.d.ts +10 -4
  110. package/dist/get-version-groups/banned.js +34 -8
  111. package/dist/get-version-groups/filtered-out.d.ts +12 -6
  112. package/dist/get-version-groups/filtered-out.js +40 -14
  113. package/dist/get-version-groups/ignored.d.ts +10 -4
  114. package/dist/get-version-groups/ignored.js +34 -8
  115. package/dist/get-version-groups/index.d.ts +131 -47
  116. package/dist/get-version-groups/index.js +123 -51
  117. package/dist/get-version-groups/lib/get-highest-version.js +2 -2
  118. package/dist/get-version-groups/lib/get-lowest-version.js +2 -2
  119. package/dist/get-version-groups/lib/get-range-score.js +1 -3
  120. package/dist/get-version-groups/lib/sort.js +3 -3
  121. package/dist/get-version-groups/pinned.d.ts +10 -4
  122. package/dist/get-version-groups/pinned.js +39 -16
  123. package/dist/get-version-groups/same-range.d.ts +10 -4
  124. package/dist/get-version-groups/same-range.js +38 -15
  125. package/dist/get-version-groups/snapped-to.d.ts +10 -4
  126. package/dist/get-version-groups/snapped-to.js +41 -16
  127. package/dist/get-version-groups/standard.d.ts +12 -5
  128. package/dist/get-version-groups/standard.js +63 -39
  129. package/dist/guards/can-add-to-group.d.ts +4 -0
  130. package/dist/guards/can-add-to-group.js +15 -0
  131. package/dist/guards/is-loose-semver.d.ts +1 -0
  132. package/dist/guards/is-loose-semver.js +9 -0
  133. package/dist/guards/is-semver.d.ts +1 -0
  134. package/dist/guards/is-semver.js +16 -0
  135. package/dist/guards/is-supported.d.ts +1 -0
  136. package/dist/guards/is-supported.js +17 -0
  137. package/dist/guards/is-valid-semver-range.d.ts +2 -0
  138. package/dist/guards/is-valid-semver-range.js +17 -0
  139. package/dist/lib/$R.js +2 -2
  140. package/dist/lib/log-group-header.d.ts +6 -0
  141. package/dist/lib/log-group-header.js +34 -0
  142. package/dist/lib/log-verbose.d.ts +1 -0
  143. package/dist/lib/log-verbose.js +24 -0
  144. package/dist/lib/set-semver-range.d.ts +1 -0
  145. package/dist/lib/set-semver-range.js +14 -6
  146. package/dist/option.js +1 -4
  147. package/dist/strategy/lib/get-non-empty-string-prop.js +2 -2
  148. package/dist/strategy/name-and-version-props.js +5 -5
  149. package/dist/strategy/named-version-string.js +4 -4
  150. package/dist/strategy/unnamed-version-string.js +4 -4
  151. package/dist/strategy/versions-by-name.js +3 -3
  152. package/package.json +28 -18
  153. package/dist/bin-fix-mismatches/fix-mismatches-cli.d.ts +0 -3
  154. package/dist/bin-fix-mismatches/fix-mismatches-cli.js +0 -12
  155. package/dist/bin-lint/lint-cli.d.ts +0 -3
  156. package/dist/bin-lint/lint-cli.js +0 -12
  157. package/dist/bin-lint-semver-ranges/lint-semver-ranges-cli.d.ts +0 -3
  158. package/dist/bin-lint-semver-ranges/lint-semver-ranges-cli.js +0 -11
  159. package/dist/bin-list/list-cli.d.ts +0 -3
  160. package/dist/bin-list/list-cli.js +0 -11
  161. package/dist/bin-list-mismatches/list-mismatches-cli.d.ts +0 -3
  162. package/dist/bin-list-mismatches/list-mismatches-cli.js +0 -11
  163. package/dist/bin-prompt/prompt-cli.d.ts +0 -3
  164. package/dist/bin-prompt/prompt-cli.js +0 -50
  165. package/dist/bin-set-semver-ranges/set-semver-ranges-cli.d.ts +0 -3
  166. package/dist/bin-set-semver-ranges/set-semver-ranges-cli.js +0 -11
  167. package/dist/get-package-json-files/get-patterns/read-yaml-safe.d.ts +0 -3
  168. package/dist/get-package-json-files/get-patterns/read-yaml-safe.js +0 -12
  169. package/dist/get-semver-groups/catch-all.d.ts +0 -4
  170. package/dist/get-semver-groups/catch-all.js +0 -11
  171. package/dist/get-version-groups/catch-all.d.ts +0 -4
  172. package/dist/get-version-groups/catch-all.js +0 -11
  173. package/dist/lib/disk.d.ts +0 -21
  174. package/dist/lib/disk.js +0 -79
  175. package/dist/lib/exit-if-invalid.d.ts +0 -2
  176. package/dist/lib/exit-if-invalid.js +0 -10
  177. package/dist/lib/is-semver.d.ts +0 -6
  178. package/dist/lib/is-semver.js +0 -49
  179. package/dist/lib/log.d.ts +0 -5
  180. package/dist/lib/log.js +0 -51
  181. package/dist/lib/newlines.d.ts +0 -6
  182. package/dist/lib/newlines.js +0 -24
  183. package/dist/lib/print-strings.d.ts +0 -1
  184. package/dist/lib/print-strings.js +0 -7
  185. package/dist/lib/write-if-changed.d.ts +0 -2
  186. package/dist/lib/write-if-changed.js +0 -21
@@ -1,11 +1,18 @@
1
- import type { VersionGroupReport } from '.';
1
+ import * as Data from '@effect/data/Data';
2
+ import * as Effect from '@effect/io/Effect';
3
+ import { VersionGroupReport } from '.';
2
4
  import type { VersionGroupConfig } from '../config/types';
3
5
  import type { Instance } from '../get-package-json-files/instance';
4
- export declare class StandardVersionGroup {
5
- _tag: string;
6
+ declare const StandardVersionGroup_base: new <A extends Record<string, any>>(args: Data.IsEqualTo<Omit<A, keyof import("@effect/data/Equal").Equal>, {}> extends true ? void : Omit<A, keyof import("@effect/data/Equal").Equal>) => Data.Data<A & {
7
+ _tag: "Standard";
8
+ }>;
9
+ export declare class StandardVersionGroup extends StandardVersionGroup_base<{
6
10
  config: VersionGroupConfig.Standard;
7
11
  instances: Instance[];
8
- constructor(config: VersionGroupConfig.Standard);
12
+ isCatchAll: boolean;
13
+ }> {
14
+ constructor(isCatchAll: boolean, config: VersionGroupConfig.Standard);
9
15
  canAdd(_: Instance): boolean;
10
- inspect(): VersionGroupReport[];
16
+ inspect(): Effect.Effect<never, VersionGroupReport.WorkspaceMismatch | VersionGroupReport.UnsupportedMismatch | VersionGroupReport.HighestSemverMismatch | VersionGroupReport.LowestSemverMismatch, VersionGroupReport.Valid>[];
11
17
  }
18
+ export {};
@@ -1,32 +1,58 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  Object.defineProperty(exports, "__esModule", { value: true });
3
26
  exports.StandardVersionGroup = void 0;
27
+ const Data = __importStar(require("@effect/data/Data"));
28
+ const Effect = __importStar(require("@effect/io/Effect"));
4
29
  const unwrap_1 = require("tightrope/result/unwrap");
5
- const is_semver_1 = require("../lib/is-semver");
30
+ const _1 = require(".");
31
+ const is_supported_1 = require("../guards/is-supported");
6
32
  const get_highest_version_1 = require("./lib/get-highest-version");
7
33
  const get_lowest_version_1 = require("./lib/get-lowest-version");
8
34
  const get_unique_versions_1 = require("./lib/get-unique-versions");
9
35
  const group_by_1 = require("./lib/group-by");
10
- class StandardVersionGroup {
11
- constructor(config) {
12
- this._tag = 'Standard';
13
- this.config = config;
14
- this.instances = [];
36
+ class StandardVersionGroup extends Data.TaggedClass('Standard') {
37
+ constructor(isCatchAll, config) {
38
+ super({
39
+ config,
40
+ instances: [],
41
+ isCatchAll,
42
+ });
15
43
  }
16
44
  canAdd(_) {
17
45
  return true;
18
46
  }
19
47
  inspect() {
20
- const report = [];
21
48
  const instancesByName = (0, group_by_1.groupBy)('name', this.instances);
22
- Object.entries(instancesByName).forEach(([name, instances]) => {
49
+ return Object.entries(instancesByName).map(([name, instances]) => {
23
50
  if (!hasMismatch(instances)) {
24
- return report.push({
25
- status: 'VALID',
51
+ return Effect.succeed(new _1.VersionGroupReport.Valid({
52
+ name,
26
53
  instances,
27
54
  isValid: true,
28
- name,
29
- });
55
+ }));
30
56
  }
31
57
  const wsInstance = getWorkspaceInstance(instances);
32
58
  const wsFile = wsInstance?.packageJsonFile;
@@ -35,57 +61,55 @@ class StandardVersionGroup {
35
61
  if (isWorkspacePackage) {
36
62
  const nonWsInstances = getNonWorkspaceInstances(instances);
37
63
  if (!hasMismatch(nonWsInstances)) {
38
- return report.push({
39
- status: 'VALID',
64
+ return Effect.succeed(new _1.VersionGroupReport.Valid({
65
+ name,
40
66
  instances,
41
67
  isValid: true,
42
- name,
43
- });
68
+ }));
44
69
  }
45
- return report.push({
46
- status: 'WORKSPACE_MISMATCH',
47
- expectedVersion: wsVersion,
70
+ return Effect.fail(new _1.VersionGroupReport.WorkspaceMismatch({
71
+ name,
48
72
  instances,
49
73
  isValid: false,
50
- name,
74
+ expectedVersion: wsVersion,
51
75
  workspaceInstance: wsInstance,
52
- });
76
+ }));
53
77
  }
54
78
  if (hasUnsupported(instances)) {
55
- return report.push({
56
- status: 'UNSUPPORTED_MISMATCH',
79
+ return Effect.fail(new _1.VersionGroupReport.UnsupportedMismatch({
80
+ name,
57
81
  instances,
58
82
  isValid: false,
59
- name,
60
- });
83
+ }));
61
84
  }
62
85
  const preferVersion = this.config.preferVersion;
63
86
  const expectedVersion = getExpectedVersion(preferVersion, instances);
64
- return report.push({
65
- status: preferVersion === 'highestSemver'
66
- ? 'HIGHEST_SEMVER_MISMATCH'
67
- : 'LOWEST_SEMVER_MISMATCH',
68
- expectedVersion,
69
- instances,
70
- isValid: false,
71
- name,
72
- });
87
+ return Effect.fail(preferVersion === 'highestSemver'
88
+ ? new _1.VersionGroupReport.HighestSemverMismatch({
89
+ name,
90
+ instances,
91
+ isValid: false,
92
+ expectedVersion,
93
+ })
94
+ : new _1.VersionGroupReport.LowestSemverMismatch({
95
+ name,
96
+ instances,
97
+ isValid: false,
98
+ expectedVersion,
99
+ }));
73
100
  });
74
- return report;
75
101
  }
76
102
  }
77
103
  exports.StandardVersionGroup = StandardVersionGroup;
78
104
  function getExpectedVersion(preferVersion, instances) {
79
105
  const versions = (0, get_unique_versions_1.getUniqueVersions)(instances);
80
- return (0, unwrap_1.unwrap)(preferVersion === 'highestSemver'
81
- ? (0, get_highest_version_1.getHighestVersion)(versions)
82
- : (0, get_lowest_version_1.getLowestVersion)(versions));
106
+ return (0, unwrap_1.unwrap)(preferVersion === 'highestSemver' ? (0, get_highest_version_1.getHighestVersion)(versions) : (0, get_lowest_version_1.getLowestVersion)(versions));
83
107
  }
84
108
  function hasMismatch(instances) {
85
109
  return (0, get_unique_versions_1.getUniqueVersions)(instances).length > 1;
86
110
  }
87
111
  function hasUnsupported(instances) {
88
- return instances.some((instance) => !(0, is_semver_1.isSupported)(instance.version));
112
+ return instances.some((instance) => !(0, is_supported_1.isSupported)(instance.version));
89
113
  }
90
114
  function getWorkspaceInstance(instances) {
91
115
  return instances.find((instance) => instance.strategy.name === 'workspace');
@@ -0,0 +1,4 @@
1
+ import type { Instance } from '../get-package-json-files/instance';
2
+ import type { AnySemverGroup } from '../get-semver-groups';
3
+ import type { AnyVersionGroup } from '../get-version-groups';
4
+ export declare function canAddToGroup(group: AnySemverGroup | AnyVersionGroup, instance: Instance): boolean;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.canAddToGroup = void 0;
4
+ const minimatch_1 = require("minimatch");
5
+ const is_non_empty_array_1 = require("tightrope/guard/is-non-empty-array");
6
+ function canAddToGroup(group, instance) {
7
+ const { dependencies, dependencyTypes, packages } = group.config;
8
+ return (group.canAdd(instance) &&
9
+ (!(0, is_non_empty_array_1.isNonEmptyArray)(dependencyTypes) || dependencyTypes.includes(instance.strategy.name)) &&
10
+ (!(0, is_non_empty_array_1.isNonEmptyArray)(packages) ||
11
+ packages.some((pattern) => (0, minimatch_1.minimatch)(instance.pkgName, pattern))) &&
12
+ (!(0, is_non_empty_array_1.isNonEmptyArray)(dependencies) ||
13
+ dependencies.some((pattern) => (0, minimatch_1.minimatch)(instance.name, pattern))));
14
+ }
15
+ exports.canAddToGroup = canAddToGroup;
@@ -0,0 +1 @@
1
+ export declare function isLooseSemver(version: unknown): boolean;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isLooseSemver = void 0;
4
+ const is_string_1 = require("tightrope/guard/is-string");
5
+ const is_semver_1 = require("./is-semver");
6
+ function isLooseSemver(version) {
7
+ return (0, is_string_1.isString)(version) && (0, is_semver_1.isSemver)(version) && version.search(/\.x(\.|$)/) !== -1;
8
+ }
9
+ exports.isLooseSemver = isLooseSemver;
@@ -0,0 +1 @@
1
+ export declare function isSemver(version: unknown): boolean;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isSemver = void 0;
4
+ const is_string_1 = require("tightrope/guard/is-string");
5
+ function isSemver(version) {
6
+ const range = '(~|\\^|>=|>|<=|<)?';
7
+ const ints = '[0-9]+';
8
+ const intsOrX = '([0-9]+|x)';
9
+ const dot = '\\.';
10
+ const major = new RegExp(`^${range}${ints}$`);
11
+ const minor = new RegExp(`^${range}${ints}${dot}${intsOrX}$`);
12
+ const patch = new RegExp(`^${range}${ints}${dot}${intsOrX}${dot}${intsOrX}$`);
13
+ return ((0, is_string_1.isString)(version) &&
14
+ (version.search(major) !== -1 || version.search(minor) !== -1 || version.search(patch) !== -1));
15
+ }
16
+ exports.isSemver = isSemver;
@@ -0,0 +1 @@
1
+ export declare function isSupported(version: unknown): version is string;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isSupported = void 0;
4
+ const is_string_1 = require("tightrope/guard/is-string");
5
+ const is_semver_1 = require("./is-semver");
6
+ function isSupported(version) {
7
+ return version === '*' || (0, is_semver_1.isSemver)(version) || isWorkspaceProtocol(version);
8
+ }
9
+ exports.isSupported = isSupported;
10
+ function isWorkspaceProtocol(version) {
11
+ if (!(0, is_string_1.isString)(version))
12
+ return false;
13
+ if (!version.startsWith('workspace:'))
14
+ return false;
15
+ const value = version.replace(/^workspace:/, '');
16
+ return value === '*' || (0, is_semver_1.isSemver)(value);
17
+ }
@@ -0,0 +1,2 @@
1
+ import type { SemverRange } from '../config/types';
2
+ export declare function isValidSemverRange(value: unknown): value is SemverRange;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isValidSemverRange = void 0;
4
+ const constants_1 = require("../constants");
5
+ function isValidSemverRange(value) {
6
+ return (value === constants_1.RANGE.ANY ||
7
+ value === constants_1.RANGE.EXACT ||
8
+ value === constants_1.RANGE.GT ||
9
+ value === constants_1.RANGE.GTE ||
10
+ value === constants_1.RANGE.LOOSE ||
11
+ value === constants_1.RANGE.LT ||
12
+ value === constants_1.RANGE.LTE ||
13
+ value === constants_1.RANGE.MINOR ||
14
+ value === constants_1.RANGE.PATCH ||
15
+ value === constants_1.RANGE.WORKSPACE);
16
+ }
17
+ exports.isValidSemverRange = isValidSemverRange;
package/dist/lib/$R.js CHANGED
@@ -4,7 +4,7 @@ exports.$R = void 0;
4
4
  const result_1 = require("tightrope/result");
5
5
  const is_err_1 = require("tightrope/result/is-err");
6
6
  const unwrap_1 = require("tightrope/result/unwrap");
7
- const log_1 = require("./log");
7
+ const log_verbose_1 = require("./log-verbose");
8
8
  exports.$R = {
9
9
  /**
10
10
  * Return a single `Ok<output[]>` containing an array of the output of every
@@ -28,7 +28,7 @@ exports.$R = {
28
28
  /** Log verbose only when Result is an Err */
29
29
  tapErrVerbose(result) {
30
30
  if ((0, is_err_1.isErr)(result))
31
- (0, log_1.verbose)(result.value);
31
+ (0, log_verbose_1.logVerbose)(result.value);
32
32
  return result;
33
33
  },
34
34
  };
@@ -0,0 +1,6 @@
1
+ import type { AnySemverGroup } from '../get-semver-groups';
2
+ import type { AnyVersionGroup } from '../get-version-groups';
3
+ export declare const logGroupHeader: {
4
+ semverGroup(group: AnySemverGroup, i: number): void;
5
+ versionGroup(group: AnyVersionGroup, i: number): void;
6
+ };
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.logGroupHeader = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ exports.logGroupHeader = {
9
+ semverGroup(group, i) {
10
+ log(group, 'Semver', i);
11
+ },
12
+ versionGroup(group, i) {
13
+ log(group, 'Version', i);
14
+ },
15
+ };
16
+ function log(group, type, i) {
17
+ const customLabel = group.config.label;
18
+ const labelWhenDefault = group.isCatchAll === true ? `Default ${type} Group` : '';
19
+ const anonymousLabel = `${type} Group ${i + 1}`;
20
+ const label = (customLabel || labelWhenDefault || anonymousLabel).trim();
21
+ const hasNewLines = label.search(/[\r\n]/) !== -1;
22
+ const header = hasNewLines ? formatMultiLine(label) : formatSingleLine(label);
23
+ console.log(chalk_1.default.blue(header));
24
+ }
25
+ function formatSingleLine(label) {
26
+ const leftSide = `= ${label} `;
27
+ const dividerWidth = 80 - leftSide.length;
28
+ const rightSide = dividerWidth > 0 ? '='.repeat(dividerWidth) : '';
29
+ return `${leftSide}${rightSide}`;
30
+ }
31
+ function formatMultiLine(label) {
32
+ const reindented = label.replace(/^\s+/gm, ' ');
33
+ return `= ${reindented}`;
34
+ }
@@ -0,0 +1 @@
1
+ export declare function logVerbose(...values: unknown[]): void;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.logVerbose = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const is_string_1 = require("tightrope/guard/is-string");
9
+ const util_1 = require("util");
10
+ const constants_1 = require("../constants");
11
+ function logVerbose(...values) {
12
+ /* istanbul ignore if */
13
+ if (process.env.SYNCPACK_VERBOSE) {
14
+ console.info(chalk_1.default.yellow(constants_1.ICON.debug), ...values.map((value) => (0, is_string_1.isString)(value)
15
+ ? chalk_1.default.yellow(value)
16
+ : (0, util_1.inspect)(value, {
17
+ colors: true,
18
+ compact: true,
19
+ depth: 20,
20
+ showHidden: false,
21
+ })));
22
+ }
23
+ }
24
+ exports.logVerbose = logVerbose;
@@ -1,2 +1,3 @@
1
1
  import type { SemverRange } from '../config/types';
2
+ export declare function getSemverRange(version: string): SemverRange;
2
3
  export declare function setSemverRange(semverRange: SemverRange, version: string): string;
@@ -1,16 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setSemverRange = void 0;
3
+ exports.setSemverRange = exports.getSemverRange = void 0;
4
4
  const constants_1 = require("../constants");
5
- const is_semver_1 = require("./is-semver");
5
+ const is_loose_semver_1 = require("../guards/is-loose-semver");
6
+ const is_semver_1 = require("../guards/is-semver");
7
+ const is_valid_semver_range_1 = require("../guards/is-valid-semver-range");
8
+ function getSemverRange(version) {
9
+ if (version === '*')
10
+ return version;
11
+ const from1stNumber = version.search(/[0-9]/);
12
+ const semverRange = version.slice(0, from1stNumber);
13
+ return (0, is_valid_semver_range_1.isValidSemverRange)(semverRange) ? semverRange : '';
14
+ }
15
+ exports.getSemverRange = getSemverRange;
6
16
  function setSemverRange(semverRange, version) {
7
- if (!(0, is_semver_1.isSemver)(version) || !(0, is_semver_1.isValidSemverRange)(semverRange))
17
+ if (!(0, is_semver_1.isSemver)(version) || !(0, is_valid_semver_range_1.isValidSemverRange)(semverRange))
8
18
  return version;
9
19
  if (semverRange === '*')
10
20
  return semverRange;
11
- const nextVersion = (0, is_semver_1.isLooseSemver)(version)
12
- ? version.replace(/\.x/g, '.0')
13
- : version;
21
+ const nextVersion = (0, is_loose_semver_1.isLooseSemver)(version) ? version.replace(/\.x/g, '.0') : version;
14
22
  const from1stNumber = nextVersion.search(/[0-9]/);
15
23
  const from1stDot = nextVersion.indexOf('.');
16
24
  return semverRange === constants_1.RANGE.LOOSE
package/dist/option.js CHANGED
@@ -12,10 +12,7 @@ exports.option = {
12
12
  '-f, --filter [pattern]',
13
13
  (0, chalk_1.default) `only include dependencies whose {yellow name} matches this regex`,
14
14
  ],
15
- indent: [
16
- '-i, --indent [value]',
17
- `override indentation. defaults to "${constants_1.DEFAULT_CONFIG.indent}"`,
18
- ],
15
+ indent: ['-i, --indent [value]', `override indentation. defaults to "${constants_1.DEFAULT_CONFIG.indent}"`],
19
16
  semverRange: [
20
17
  '-r, --semver-range <range>',
21
18
  `see supported ranges below. defaults to "${constants_1.DEFAULT_CONFIG.semverRange}"`,
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getNonEmptyStringProp = void 0;
4
+ const Function_1 = require("@effect/data/Function");
4
5
  const get_1 = require("tightrope/fn/get");
5
- const pipe_1 = require("tightrope/fn/pipe");
6
6
  const is_non_empty_string_1 = require("tightrope/guard/is-non-empty-string");
7
7
  const filter_1 = require("tightrope/result/filter");
8
8
  const map_err_1 = require("tightrope/result/map-err");
9
9
  function getNonEmptyStringProp(propPath, file) {
10
- return (0, pipe_1.pipe)((0, get_1.get)(file.contents, ...propPath.split('.')), (0, filter_1.filter)(is_non_empty_string_1.isNonEmptyString, ''), (0, map_err_1.mapErr)(() => new Error(`Failed to get ${propPath} in ${file.shortPath}`)));
10
+ return (0, Function_1.pipe)((0, get_1.get)(file.contents, ...propPath.split('.')), (0, filter_1.filter)(is_non_empty_string_1.isNonEmptyString, ''), (0, map_err_1.mapErr)(() => new Error(`Failed to get ${propPath} in ${file.shortPath}`)));
11
11
  }
12
12
  exports.getNonEmptyStringProp = getNonEmptyStringProp;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NameAndVersionPropsStrategy = void 0;
4
+ const Function_1 = require("@effect/data/Function");
4
5
  const get_1 = require("tightrope/fn/get");
5
- const pipe_1 = require("tightrope/fn/pipe");
6
6
  const and_then_1 = require("tightrope/result/and-then");
7
7
  const from_try_1 = require("tightrope/result/from-try");
8
8
  const map_1 = require("tightrope/result/map");
@@ -19,11 +19,11 @@ class NameAndVersionPropsStrategy {
19
19
  read(file) {
20
20
  const path = this.path;
21
21
  const namePath = this.namePath;
22
- return (0, pipe_1.pipe)(
22
+ return (0, Function_1.pipe)(
23
23
  // get name prop
24
24
  (0, get_non_empty_string_prop_1.getNonEmptyStringProp)(namePath, file),
25
25
  // add the version prop
26
- (0, and_then_1.andThen)((name) => (0, pipe_1.pipe)((0, get_non_empty_string_prop_1.getNonEmptyStringProp)(path, file), (0, map_1.map)((version) => ({ name, version })))),
26
+ (0, and_then_1.andThen)((name) => (0, Function_1.pipe)((0, get_non_empty_string_prop_1.getNonEmptyStringProp)(path, file), (0, map_1.map)((version) => ({ name, version })))),
27
27
  // if both are non empty strings, we can return them
28
28
  (0, map_1.map)(({ name, version }) => [[name, version]]));
29
29
  }
@@ -36,12 +36,12 @@ class NameAndVersionPropsStrategy {
36
36
  const fullPath = path.split('.');
37
37
  const pathToParent = fullPath.slice(0, fullPath.length - 1).join('.');
38
38
  const key = fullPath.slice(-1).join('');
39
- return (0, pipe_1.pipe)((0, get_1.get)(contents, ...pathToParent.split('.')), (0, tap_1.tap)((parent) => {
39
+ return (0, Function_1.pipe)((0, get_1.get)(contents, ...pathToParent.split('.')), (0, tap_1.tap)((parent) => {
40
40
  parent[key] = version;
41
41
  }), (0, map_1.map)(() => file));
42
42
  }
43
43
  else {
44
- return (0, pipe_1.pipe)((0, from_try_1.fromTry)(() => {
44
+ return (0, Function_1.pipe)((0, from_try_1.fromTry)(() => {
45
45
  contents[path] = nextValue;
46
46
  }), (0, map_1.map)(() => file));
47
47
  }
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NamedVersionStringStrategy = void 0;
4
+ const Function_1 = require("@effect/data/Function");
4
5
  const get_1 = require("tightrope/fn/get");
5
- const pipe_1 = require("tightrope/fn/pipe");
6
6
  const is_non_empty_string_1 = require("tightrope/guard/is-non-empty-string");
7
7
  const result_1 = require("tightrope/result");
8
8
  const and_then_1 = require("tightrope/result/and-then");
@@ -19,7 +19,7 @@ class NamedVersionStringStrategy {
19
19
  }
20
20
  read(file) {
21
21
  const path = this.path;
22
- return (0, pipe_1.pipe)(
22
+ return (0, Function_1.pipe)(
23
23
  // get version prop
24
24
  (0, get_non_empty_string_prop_1.getNonEmptyStringProp)(path, file),
25
25
  // if it is a non empty string, we can read it
@@ -39,12 +39,12 @@ class NamedVersionStringStrategy {
39
39
  const fullPath = path.split('.');
40
40
  const pathToParent = fullPath.slice(0, fullPath.length - 1).join('.');
41
41
  const key = fullPath.slice(-1).join('');
42
- return (0, pipe_1.pipe)((0, get_1.get)(contents, ...pathToParent.split('.')), (0, tap_1.tap)((parent) => {
42
+ return (0, Function_1.pipe)((0, get_1.get)(contents, ...pathToParent.split('.')), (0, tap_1.tap)((parent) => {
43
43
  parent[key] = nextValue;
44
44
  }), (0, map_1.map)(() => file));
45
45
  }
46
46
  else {
47
- return (0, pipe_1.pipe)((0, from_try_1.fromTry)(() => {
47
+ return (0, Function_1.pipe)((0, from_try_1.fromTry)(() => {
48
48
  contents[path] = nextValue;
49
49
  }), (0, map_1.map)(() => file));
50
50
  }
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.UnnamedVersionStringStrategy = void 0;
4
+ const Function_1 = require("@effect/data/Function");
4
5
  const get_1 = require("tightrope/fn/get");
5
- const pipe_1 = require("tightrope/fn/pipe");
6
6
  const from_try_1 = require("tightrope/result/from-try");
7
7
  const map_1 = require("tightrope/result/map");
8
8
  const tap_1 = require("tightrope/result/tap");
@@ -16,7 +16,7 @@ class UnnamedVersionStringStrategy {
16
16
  }
17
17
  read(file) {
18
18
  const path = this.path;
19
- return (0, pipe_1.pipe)(
19
+ return (0, Function_1.pipe)(
20
20
  // get version prop
21
21
  (0, get_non_empty_string_prop_1.getNonEmptyStringProp)(path, file),
22
22
  // if it is a non empty string, we can read it
@@ -34,12 +34,12 @@ class UnnamedVersionStringStrategy {
34
34
  const fullPath = path.split('.');
35
35
  const pathToParent = fullPath.slice(0, fullPath.length - 1).join('.');
36
36
  const key = fullPath.slice(-1).join('');
37
- return (0, pipe_1.pipe)((0, get_1.get)(contents, ...pathToParent.split('.')), (0, tap_1.tap)((parent) => {
37
+ return (0, Function_1.pipe)((0, get_1.get)(contents, ...pathToParent.split('.')), (0, tap_1.tap)((parent) => {
38
38
  parent[key] = nextValue;
39
39
  }), (0, map_1.map)(() => file));
40
40
  }
41
41
  else {
42
- return (0, pipe_1.pipe)((0, from_try_1.fromTry)(() => {
42
+ return (0, Function_1.pipe)((0, from_try_1.fromTry)(() => {
43
43
  contents[path] = nextValue;
44
44
  }), (0, map_1.map)(() => file));
45
45
  }
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VersionsByNameStrategy = void 0;
4
+ const Function_1 = require("@effect/data/Function");
4
5
  const get_1 = require("tightrope/fn/get");
5
- const pipe_1 = require("tightrope/fn/pipe");
6
6
  const is_non_empty_object_1 = require("tightrope/guard/is-non-empty-object");
7
7
  const filter_1 = require("tightrope/result/filter");
8
8
  const map_1 = require("tightrope/result/map");
@@ -16,12 +16,12 @@ class VersionsByNameStrategy {
16
16
  }
17
17
  read(file) {
18
18
  const path = this.path;
19
- return (0, pipe_1.pipe)((0, get_1.get)(file.contents, ...path.split('.')), (0, filter_1.filter)((is_non_empty_object_1.isNonEmptyObject), ''), (0, map_1.map)((Object.entries)));
19
+ return (0, Function_1.pipe)((0, get_1.get)(file.contents, ...path.split('.')), (0, filter_1.filter)((is_non_empty_object_1.isNonEmptyObject), ''), (0, map_1.map)((Object.entries)));
20
20
  }
21
21
  write(file, [name, version]) {
22
22
  const path = this.path;
23
23
  const nextValue = version === delete_1.DELETE ? undefined : version;
24
- return (0, pipe_1.pipe)((0, get_1.get)(file.contents, ...path.split('.')), (0, tap_1.tap)((parent) => {
24
+ return (0, Function_1.pipe)((0, get_1.get)(file.contents, ...path.split('.')), (0, tap_1.tap)((parent) => {
25
25
  parent[name] = nextValue;
26
26
  }), (0, map_1.map)(() => file));
27
27
  }