syncpack 11.2.1 → 12.0.0-alpha.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 (273) hide show
  1. package/dist/bin-fix-mismatches/fix-mismatches.d.ts +15 -3
  2. package/dist/bin-fix-mismatches/fix-mismatches.js +119 -35
  3. package/dist/bin-fix-mismatches/index.js +12 -32
  4. package/dist/bin-format/format.d.ts +11 -3
  5. package/dist/bin-format/format.js +46 -61
  6. package/dist/bin-format/index.js +11 -31
  7. package/dist/bin-lint/index.js +8 -28
  8. package/dist/bin-lint/lint.d.ts +10 -3
  9. package/dist/bin-lint/lint.js +11 -35
  10. package/dist/bin-lint-semver-ranges/index.js +11 -39
  11. package/dist/bin-lint-semver-ranges/lint-semver-ranges.d.ts +15 -3
  12. package/dist/bin-lint-semver-ranges/lint-semver-ranges.js +93 -34
  13. package/dist/bin-list/index.js +11 -31
  14. package/dist/bin-list/list.d.ts +11 -3
  15. package/dist/bin-list/list.js +120 -34
  16. package/dist/bin-list-mismatches/index.js +11 -31
  17. package/dist/bin-list-mismatches/list-mismatches.d.ts +18 -3
  18. package/dist/bin-list-mismatches/list-mismatches.js +253 -34
  19. package/dist/bin-prompt/index.js +15 -31
  20. package/dist/bin-prompt/prompt.d.ts +10 -3
  21. package/dist/bin-prompt/prompt.js +82 -33
  22. package/dist/bin-set-semver-ranges/index.js +12 -40
  23. package/dist/bin-set-semver-ranges/set-semver-ranges.d.ts +10 -3
  24. package/dist/bin-set-semver-ranges/set-semver-ranges.js +49 -35
  25. package/dist/bin-update/effects.d.ts +45 -5
  26. package/dist/bin-update/effects.js +214 -128
  27. package/dist/bin-update/index.js +4 -27
  28. package/dist/bin-update/update.d.ts +5 -3
  29. package/dist/bin-update/update.js +51 -37
  30. package/dist/bin.js +0 -1
  31. package/dist/config/get-custom-types.d.ts +11 -1
  32. package/dist/config/get-custom-types.js +26 -21
  33. package/dist/config/get-enabled-types.d.ts +7 -8
  34. package/dist/config/get-enabled-types.js +63 -73
  35. package/dist/config/get-indent.js +1 -1
  36. package/dist/config/tag.d.ts +1 -1
  37. package/dist/config/tag.js +2 -25
  38. package/dist/config/types.d.ts +8 -9
  39. package/dist/constants.d.ts +4 -1
  40. package/dist/constants.js +4 -2
  41. package/dist/create-program/effects.d.ts +51 -29
  42. package/dist/error-handlers/default-error-handlers.d.ts +38 -2
  43. package/dist/error-handlers/default-error-handlers.js +80 -37
  44. package/dist/get-context/index.d.ts +12 -6
  45. package/dist/get-context/index.js +13 -30
  46. package/dist/get-context/lib/key-by.d.ts +6 -0
  47. package/dist/get-context/lib/key-by.js +16 -0
  48. package/dist/get-instances/index.d.ts +14 -0
  49. package/dist/get-instances/index.js +46 -0
  50. package/dist/get-instances/instance.d.ts +25 -0
  51. package/dist/get-instances/instance.js +20 -0
  52. package/dist/get-package-json-files/get-file-paths.d.ts +6 -7
  53. package/dist/get-package-json-files/get-file-paths.js +10 -33
  54. package/dist/get-package-json-files/get-patterns/get-lerna-patterns.d.ts +3 -4
  55. package/dist/get-package-json-files/get-patterns/get-lerna-patterns.js +6 -32
  56. package/dist/get-package-json-files/get-patterns/get-pnpm-patterns.d.ts +3 -4
  57. package/dist/get-package-json-files/get-patterns/get-pnpm-patterns.js +6 -32
  58. package/dist/get-package-json-files/get-patterns/get-yarn-patterns.d.ts +3 -4
  59. package/dist/get-package-json-files/get-patterns/get-yarn-patterns.js +11 -40
  60. package/dist/get-package-json-files/get-patterns/index.d.ts +3 -5
  61. package/dist/get-package-json-files/get-patterns/index.js +6 -33
  62. package/dist/get-package-json-files/index.d.ts +6 -5
  63. package/dist/get-package-json-files/index.js +4 -28
  64. package/dist/get-package-json-files/package-json-file.d.ts +16 -16
  65. package/dist/get-package-json-files/package-json-file.js +13 -18
  66. package/dist/guards/can-add-to-group.d.ts +5 -4
  67. package/dist/guards/can-add-to-group.js +8 -4
  68. package/dist/guards/is-semver.d.ts +1 -1
  69. package/dist/guards/is-semver.js +1 -1
  70. package/dist/guards/is-valid-semver-range.d.ts +1 -1
  71. package/dist/guards/is-valid-semver-range.js +1 -1
  72. package/dist/io/ask-for-choice.d.ts +14 -0
  73. package/dist/io/ask-for-choice.js +22 -0
  74. package/dist/io/ask-for-input.d.ts +13 -0
  75. package/dist/io/ask-for-input.js +19 -0
  76. package/dist/io/exit-if-invalid.d.ts +4 -0
  77. package/dist/io/exit-if-invalid.js +13 -0
  78. package/dist/io/glob-sync.d.ts +11 -0
  79. package/dist/io/glob-sync.js +19 -0
  80. package/dist/io/index.d.ts +28 -0
  81. package/dist/{env/exit-if-invalid.js → io/index.js} +27 -9
  82. package/dist/io/read-config-file-sync.d.ts +7 -0
  83. package/dist/io/read-config-file-sync.js +26 -0
  84. package/dist/io/read-file-sync.d.ts +12 -0
  85. package/dist/io/read-file-sync.js +14 -0
  86. package/dist/io/read-json-file-sync.d.ts +30 -0
  87. package/dist/io/read-json-file-sync.js +25 -0
  88. package/dist/io/read-yaml-file-sync.d.ts +12 -0
  89. package/dist/io/read-yaml-file-sync.js +14 -0
  90. package/dist/io/write-file-sync.d.ts +12 -0
  91. package/dist/io/write-file-sync.js +15 -0
  92. package/dist/{env → io}/write-if-changed.d.ts +4 -4
  93. package/dist/io/write-if-changed.js +45 -0
  94. package/dist/lib/get-group-header.d.ts +10 -0
  95. package/dist/lib/get-group-header.js +31 -0
  96. package/dist/lib/get.d.ts +11 -0
  97. package/dist/lib/get.js +40 -0
  98. package/dist/lib/pad-start.d.ts +1 -0
  99. package/dist/lib/pad-start.js +7 -0
  100. package/dist/lib/ring-buffer.d.ts +10 -0
  101. package/dist/lib/ring-buffer.js +22 -0
  102. package/dist/lib/set-semver-range.d.ts +1 -1
  103. package/dist/lib/set-semver-range.js +7 -11
  104. package/dist/lib/with-logger.d.ts +2 -0
  105. package/dist/lib/with-logger.js +35 -0
  106. package/dist/option.d.ts +0 -1
  107. package/dist/option.js +0 -4
  108. package/dist/report.d.ts +166 -0
  109. package/dist/report.js +67 -0
  110. package/dist/schema.json +51 -20
  111. package/dist/semver-group/create-semver-groups.d.ts +4 -0
  112. package/dist/semver-group/create-semver-groups.js +77 -0
  113. package/dist/semver-group/disabled.d.ts +26 -0
  114. package/dist/semver-group/disabled.js +34 -0
  115. package/dist/semver-group/filtered-out.d.ts +27 -0
  116. package/dist/semver-group/filtered-out.js +40 -0
  117. package/dist/semver-group/ignored.d.ts +22 -0
  118. package/dist/semver-group/ignored.js +30 -0
  119. package/dist/semver-group/index.d.ts +22 -0
  120. package/dist/semver-group/index.js +10 -0
  121. package/dist/semver-group/with-range.d.ts +22 -0
  122. package/dist/semver-group/with-range.js +57 -0
  123. package/dist/specifier/alias.d.ts +15 -0
  124. package/dist/specifier/alias.js +25 -0
  125. package/dist/specifier/base.d.ts +39 -0
  126. package/dist/specifier/base.js +38 -0
  127. package/dist/specifier/delete.d.ts +15 -0
  128. package/dist/specifier/delete.js +16 -0
  129. package/dist/specifier/file.d.ts +6 -0
  130. package/dist/specifier/file.js +12 -0
  131. package/dist/specifier/hosted-git.d.ts +13 -0
  132. package/dist/specifier/hosted-git.js +27 -0
  133. package/dist/specifier/index.d.ts +27 -0
  134. package/dist/specifier/index.js +62 -0
  135. package/dist/specifier/lib/non-semver-error.d.ts +11 -0
  136. package/dist/specifier/lib/non-semver-error.js +10 -0
  137. package/dist/specifier/lib/parse-specifier.d.ts +14 -0
  138. package/dist/specifier/lib/parse-specifier.js +23 -0
  139. package/dist/specifier/lib/specific-registry-result.d.ts +9 -0
  140. package/dist/specifier/lib/specific-registry-result.js +2 -0
  141. package/dist/specifier/range.d.ts +18 -0
  142. package/dist/specifier/range.js +26 -0
  143. package/dist/specifier/tag.d.ts +9 -0
  144. package/dist/specifier/tag.js +15 -0
  145. package/dist/specifier/unsupported.d.ts +5 -0
  146. package/dist/specifier/unsupported.js +12 -0
  147. package/dist/specifier/url.d.ts +6 -0
  148. package/dist/specifier/url.js +13 -0
  149. package/dist/specifier/version.d.ts +18 -0
  150. package/dist/specifier/version.js +26 -0
  151. package/dist/specifier/workspace-protocol.d.ts +17 -0
  152. package/dist/specifier/workspace-protocol.js +38 -0
  153. package/dist/strategy/lib/get-non-empty-string-prop.d.ts +2 -2
  154. package/dist/strategy/lib/get-non-empty-string-prop.js +4 -5
  155. package/dist/strategy/name-and-version-props.d.ts +4 -4
  156. package/dist/strategy/name-and-version-props.js +32 -21
  157. package/dist/strategy/named-version-string.d.ts +4 -4
  158. package/dist/strategy/named-version-string.js +22 -24
  159. package/dist/strategy/unnamed-version-string.d.ts +4 -4
  160. package/dist/strategy/unnamed-version-string.js +20 -21
  161. package/dist/strategy/versions-by-name.d.ts +4 -4
  162. package/dist/strategy/versions-by-name.js +9 -11
  163. package/dist/version-group/banned.d.ts +17 -0
  164. package/dist/version-group/banned.js +32 -0
  165. package/dist/version-group/create-version-groups.d.ts +4 -0
  166. package/dist/version-group/create-version-groups.js +107 -0
  167. package/dist/version-group/filtered-out.d.ts +19 -0
  168. package/dist/version-group/filtered-out.js +34 -0
  169. package/dist/version-group/ignored.d.ts +17 -0
  170. package/dist/version-group/ignored.js +27 -0
  171. package/dist/version-group/index.d.ts +28 -0
  172. package/dist/version-group/index.js +10 -0
  173. package/dist/version-group/lib/get-highest-version.d.ts +6 -0
  174. package/dist/version-group/lib/get-highest-version.js +12 -0
  175. package/dist/version-group/lib/get-lowest-version.d.ts +6 -0
  176. package/dist/version-group/lib/get-lowest-version.js +12 -0
  177. package/dist/version-group/lib/get-preferred-version.d.ts +5 -0
  178. package/dist/{get-version-groups/lib/compare-semver.js → version-group/lib/get-preferred-version.js} +14 -2
  179. package/dist/version-group/lib/group-by.d.ts +5 -0
  180. package/dist/{get-version-groups → version-group}/lib/group-by.js +4 -0
  181. package/dist/version-group/pinned.d.ts +17 -0
  182. package/dist/version-group/pinned.js +30 -0
  183. package/dist/version-group/same-range.d.ts +19 -0
  184. package/dist/version-group/same-range.js +108 -0
  185. package/dist/version-group/snapped-to.d.ts +17 -0
  186. package/dist/version-group/snapped-to.js +83 -0
  187. package/dist/version-group/standard.d.ts +18 -0
  188. package/dist/version-group/standard.js +131 -0
  189. package/package.json +24 -23
  190. package/dist/bin-fix-mismatches/effects.d.ts +0 -2
  191. package/dist/bin-fix-mismatches/effects.js +0 -112
  192. package/dist/bin-format/format-cli.d.ts +0 -4
  193. package/dist/bin-format/format-cli.js +0 -42
  194. package/dist/bin-lint-semver-ranges/effects.d.ts +0 -2
  195. package/dist/bin-lint-semver-ranges/effects.js +0 -70
  196. package/dist/bin-list/effects.d.ts +0 -2
  197. package/dist/bin-list/effects.js +0 -114
  198. package/dist/bin-list-mismatches/effects.d.ts +0 -2
  199. package/dist/bin-list-mismatches/effects.js +0 -136
  200. package/dist/bin-prompt/effects.d.ts +0 -2
  201. package/dist/bin-prompt/effects.js +0 -110
  202. package/dist/bin-set-semver-ranges/effects.d.ts +0 -2
  203. package/dist/bin-set-semver-ranges/effects.js +0 -61
  204. package/dist/config/get-semver-range.d.ts +0 -3
  205. package/dist/config/get-semver-range.js +0 -12
  206. package/dist/create-program/semver-ranges.d.ts +0 -7
  207. package/dist/create-program/semver-ranges.js +0 -55
  208. package/dist/create-program/versions.d.ts +0 -7
  209. package/dist/create-program/versions.js +0 -70
  210. package/dist/env/create-env.d.ts +0 -21
  211. package/dist/env/create-env.js +0 -81
  212. package/dist/env/default-env.d.ts +0 -18
  213. package/dist/env/default-env.js +0 -100
  214. package/dist/env/exit-if-invalid.d.ts +0 -4
  215. package/dist/env/tags.d.ts +0 -58
  216. package/dist/env/tags.js +0 -50
  217. package/dist/env/write-if-changed.js +0 -73
  218. package/dist/error-handlers/create-error-handlers.d.ts +0 -20
  219. package/dist/error-handlers/create-error-handlers.js +0 -60
  220. package/dist/get-package-json-files/get-patterns/read-json-safe.d.ts +0 -23
  221. package/dist/get-package-json-files/get-patterns/read-json-safe.js +0 -43
  222. package/dist/get-semver-groups/filtered-out.d.ts +0 -19
  223. package/dist/get-semver-groups/filtered-out.js +0 -55
  224. package/dist/get-semver-groups/ignored.d.ts +0 -17
  225. package/dist/get-semver-groups/ignored.js +0 -48
  226. package/dist/get-semver-groups/index.d.ts +0 -84
  227. package/dist/get-semver-groups/index.js +0 -139
  228. package/dist/get-semver-groups/with-range.d.ts +0 -18
  229. package/dist/get-semver-groups/with-range.js +0 -79
  230. package/dist/get-version-groups/banned.d.ts +0 -17
  231. package/dist/get-version-groups/banned.js +0 -50
  232. package/dist/get-version-groups/filtered-out.d.ts +0 -19
  233. package/dist/get-version-groups/filtered-out.js +0 -57
  234. package/dist/get-version-groups/ignored.d.ts +0 -17
  235. package/dist/get-version-groups/ignored.js +0 -50
  236. package/dist/get-version-groups/index.d.ts +0 -187
  237. package/dist/get-version-groups/index.js +0 -246
  238. package/dist/get-version-groups/lib/compare-semver.d.ts +0 -1
  239. package/dist/get-version-groups/lib/get-highest-version.d.ts +0 -2
  240. package/dist/get-version-groups/lib/get-highest-version.js +0 -13
  241. package/dist/get-version-groups/lib/get-lowest-version.d.ts +0 -2
  242. package/dist/get-version-groups/lib/get-lowest-version.js +0 -13
  243. package/dist/get-version-groups/lib/get-unique-specifiers.d.ts +0 -2
  244. package/dist/get-version-groups/lib/get-unique-specifiers.js +0 -11
  245. package/dist/get-version-groups/lib/group-by.d.ts +0 -1
  246. package/dist/get-version-groups/pinned.d.ts +0 -17
  247. package/dist/get-version-groups/pinned.js +0 -66
  248. package/dist/get-version-groups/same-range.d.ts +0 -17
  249. package/dist/get-version-groups/same-range.js +0 -73
  250. package/dist/get-version-groups/snapped-to.d.ts +0 -17
  251. package/dist/get-version-groups/snapped-to.js +0 -78
  252. package/dist/get-version-groups/standard.d.ts +0 -18
  253. package/dist/get-version-groups/standard.js +0 -109
  254. package/dist/guards/is-loose-semver.d.ts +0 -2
  255. package/dist/guards/is-loose-semver.js +0 -10
  256. package/dist/instance/create.d.ts +0 -4
  257. package/dist/instance/create.js +0 -142
  258. package/dist/instance/index.d.ts +0 -122
  259. package/dist/instance/index.js +0 -154
  260. package/dist/lib/$R.d.ts +0 -12
  261. package/dist/lib/$R.js +0 -34
  262. package/dist/lib/log-group-header.d.ts +0 -6
  263. package/dist/lib/log-group-header.js +0 -34
  264. package/dist/lib/log-verbose.d.ts +0 -1
  265. package/dist/lib/log-verbose.js +0 -24
  266. package/dist/lib/split-name-and-version.d.ts +0 -5
  267. package/dist/lib/split-name-and-version.js +0 -12
  268. /package/dist/{get-version-groups → version-group}/lib/clean.d.ts +0 -0
  269. /package/dist/{get-version-groups → version-group}/lib/clean.js +0 -0
  270. /package/dist/{get-version-groups → version-group}/lib/delete.d.ts +0 -0
  271. /package/dist/{get-version-groups → version-group}/lib/delete.js +0 -0
  272. /package/dist/{get-version-groups → version-group}/lib/get-range-score.d.ts +0 -0
  273. /package/dist/{get-version-groups → version-group}/lib/get-range-score.js +0 -0
@@ -1,47 +1,61 @@
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;
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
4
  };
25
5
  Object.defineProperty(exports, "__esModule", { value: true });
26
6
  exports.update = void 0;
27
- const Context = __importStar(require("@effect/data/Context"));
28
- const Function_1 = require("@effect/data/Function");
29
- const Effect = __importStar(require("@effect/io/Effect"));
30
- // import { setSemverRangesEffects } from '../bin-set-semver-ranges/effects';
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const effect_1 = require("effect");
9
+ const semver_1 = require("semver");
31
10
  const tag_1 = require("../config/tag");
32
- // import { createSemverRangesProgram } from '../create-program/semver-ranges';
33
- const versions_1 = require("../create-program/versions");
34
- const create_env_1 = require("../env/create-env");
35
- const exit_if_invalid_1 = require("../env/exit-if-invalid");
36
- const tags_1 = require("../env/tags");
37
- const write_if_changed_1 = require("../env/write-if-changed");
38
- const create_error_handlers_1 = require("../error-handlers/create-error-handlers");
11
+ const constants_1 = require("../constants");
39
12
  const default_error_handlers_1 = require("../error-handlers/default-error-handlers");
40
13
  const get_context_1 = require("../get-context");
14
+ const get_instances_1 = require("../get-instances");
15
+ const io_1 = require("../io");
16
+ const exit_if_invalid_1 = require("../io/exit-if-invalid");
17
+ const write_if_changed_1 = require("../io/write-if-changed");
18
+ const with_logger_1 = require("../lib/with-logger");
19
+ const specifier_1 = require("../specifier");
41
20
  const effects_1 = require("./effects");
42
- function update(cli, env) {
43
- return (0, Function_1.pipe)((0, get_context_1.getContext)(), Effect.flatMap((ctx) => (0, versions_1.createVersionsProgram)(ctx, effects_1.updateEffects)),
44
- // Effect.flatMap((ctx) => createSemverRangesProgram(ctx, setSemverRangesEffects)),
45
- Effect.flatMap(write_if_changed_1.writeIfChanged), Effect.flatMap(exit_if_invalid_1.exitIfInvalid), Effect.catchTags((0, create_error_handlers_1.createErrorHandlers)(default_error_handlers_1.defaultErrorHandlers)), Effect.withConcurrency(10), Effect.provideContext((0, Function_1.pipe)(Context.empty(), Context.add(tag_1.CliConfigTag, cli), Context.add(tags_1.EnvTag, (0, create_env_1.createEnv)(env)))));
21
+ function update(io, cli, effects = effects_1.updateEffects, errorHandlers = default_error_handlers_1.defaultErrorHandlers) {
22
+ return (0, effect_1.pipe)(effect_1.Effect.Do, effect_1.Effect.bind('ctx', () => (0, get_context_1.getContext)({ io, cli, errorHandlers })), effect_1.Effect.bind('instances', ({ ctx }) => (0, get_instances_1.getInstances)(ctx, io, errorHandlers)), effect_1.Effect.bind('update', ({ instances }) => (0, effect_1.pipe)(effect_1.Effect.succeed(instances.all), effect_1.Effect.map((instances) => {
23
+ const isVisitedByName = {};
24
+ const updateable = [];
25
+ instances.forEach((instance) => {
26
+ if (!isVisitedByName[instance.name] &&
27
+ (instance.versionGroup._tag === 'SameRange' ||
28
+ instance.versionGroup._tag === 'Standard')) {
29
+ const specifier = specifier_1.Specifier.create(instance, instance.rawSpecifier);
30
+ if (specifier._tag === 'RangeSpecifier' || specifier._tag === 'VersionSpecifier') {
31
+ isVisitedByName[instance.name] = true;
32
+ updateable.push(instance);
33
+ }
34
+ }
35
+ });
36
+ return updateable;
37
+ }), effect_1.Effect.tap(effects_1.updateEffects.onFetchAllStart), effect_1.Effect.flatMap((instances) => (0, effect_1.pipe)(instances, effect_1.Effect.partition((instance) => (0, effect_1.pipe)(effect_1.Effect.succeed(instance), effect_1.Effect.tap(() => effects_1.updateEffects.onFetchStart(instance, instances.length)), effect_1.Effect.flatMap(effects.fetchLatestVersions), effect_1.Effect.tapBoth({
38
+ onFailure: () => effects_1.updateEffects.onFetchEnd(instance),
39
+ onSuccess: ({ versions }) => effects_1.updateEffects.onFetchEnd(instance, versions),
40
+ }),
41
+ // move up to date dependencies to error channel
42
+ effect_1.Effect.flatMap((updateable) => (0, semver_1.gtr)(updateable.versions.latest, instance.rawSpecifier)
43
+ ? (0, effect_1.pipe)(effects_1.updateEffects.onOutdated(instance, updateable.versions.latest), effect_1.Effect.map(() => updateable))
44
+ : (0, effect_1.pipe)(effects_1.updateEffects.onUpToDate(instance), effect_1.Effect.flatMap(() => effect_1.Effect.fail(updateable)))),
45
+ // log error but don't catch it
46
+ effect_1.Effect.tapErrorTag('HttpError', ({ error }) => effect_1.Effect.logError((0, chalk_1.default) `{red ${constants_1.ICON.cross} ${error}}`)),
47
+ // log error but don't catch it
48
+ effect_1.Effect.tapErrorTag('NpmRegistryError', ({ error }) => effect_1.Effect.logError((0, chalk_1.default) `{red ${constants_1.ICON.cross} ${error}}`))), { concurrency: 10 }),
49
+ // discard errors and up to date dependencies
50
+ effect_1.Effect.flatMap(([_, outOfDate]) => effect_1.Effect.succeed(outOfDate)))),
51
+ // always remove the spinner when we're done
52
+ effect_1.Effect.tapBoth({
53
+ onFailure: effects_1.updateEffects.onFetchAllEnd,
54
+ onSuccess: effects_1.updateEffects.onFetchAllEnd,
55
+ }),
56
+ // ask the user which updates they want
57
+ effect_1.Effect.flatMap(effects_1.updateEffects.promptForUpdates),
58
+ // if we think the user cancelled, say so
59
+ effect_1.Effect.catchTag('PromptCancelled', () => effect_1.Effect.logInfo((0, chalk_1.default) `{red ${constants_1.ICON.panic}} aborting after {blue syncpack update} was cancelled`)))), effect_1.Effect.flatMap(({ ctx }) => (0, effect_1.pipe)((0, write_if_changed_1.writeIfChanged)(ctx), effect_1.Effect.catchTags((0, default_error_handlers_1.chainErrorHandlers)(ctx, errorHandlers)))), effect_1.Effect.flatMap(exit_if_invalid_1.exitIfInvalid), effect_1.Effect.withConcurrency(10), effect_1.Effect.provide((0, effect_1.pipe)(effect_1.Context.empty(), effect_1.Context.add(tag_1.CliConfigTag, cli), effect_1.Context.add(io_1.IoTag, io))), with_logger_1.withLogger);
46
60
  }
47
61
  exports.update = update;
package/dist/bin.js CHANGED
@@ -21,7 +21,6 @@ commander_1.program
21
21
  })
22
22
  .command('list', 'list every dependency used in your packages', {
23
23
  executableFile: './bin-list/index.js',
24
- isDefault: true,
25
24
  })
26
25
  .command('prompt', 'fix mismatches which syncpack cannot fix automatically', {
27
26
  executableFile: './bin-prompt/index.js',
@@ -1,3 +1,4 @@
1
+ import { Data, Effect } from 'effect';
1
2
  import type { Ctx } from '../get-context';
2
3
  import { NameAndVersionPropsStrategy } from '../strategy/name-and-version-props';
3
4
  import { NamedVersionStringStrategy } from '../strategy/named-version-string';
@@ -6,4 +7,13 @@ import { VersionsByNameStrategy } from '../strategy/versions-by-name';
6
7
  export declare namespace Strategy {
7
8
  type Any = NameAndVersionPropsStrategy | NamedVersionStringStrategy | UnnamedVersionStringStrategy | VersionsByNameStrategy;
8
9
  }
9
- export declare function getCustomTypes({ rcFile }: Ctx['config']): Strategy.Any[];
10
+ declare const InvalidCustomTypeError_base: new <A extends Record<string, any>>(args: import("effect/Types").Equals<Omit<A, keyof import("effect/dist/declarations/src/Equal").Equal>, {}> extends true ? void : Omit<A, keyof import("effect/dist/declarations/src/Equal").Equal>) => Data.Data<A & {
11
+ readonly _tag: "InvalidCustomTypeError";
12
+ }>;
13
+ export declare class InvalidCustomTypeError extends InvalidCustomTypeError_base<{
14
+ readonly config: unknown;
15
+ readonly reason: string;
16
+ }> {
17
+ }
18
+ export declare function getCustomTypes({ rcFile, }: Ctx['config']): Effect.Effect<never, InvalidCustomTypeError, Strategy.Any[]>;
19
+ export {};
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getCustomTypes = void 0;
3
+ exports.getCustomTypes = exports.InvalidCustomTypeError = void 0;
4
+ const effect_1 = require("effect");
4
5
  const is_non_empty_object_1 = require("tightrope/guard/is-non-empty-object");
5
6
  const is_non_empty_string_1 = require("tightrope/guard/is-non-empty-string");
6
7
  const is_object_1 = require("tightrope/guard/is-object");
@@ -8,42 +9,46 @@ const name_and_version_props_1 = require("../strategy/name-and-version-props");
8
9
  const named_version_string_1 = require("../strategy/named-version-string");
9
10
  const unnamed_version_string_1 = require("../strategy/unnamed-version-string");
10
11
  const versions_by_name_1 = require("../strategy/versions-by-name");
11
- function getCustomTypes({ rcFile }) {
12
+ class InvalidCustomTypeError extends effect_1.Data.TaggedClass('InvalidCustomTypeError') {
13
+ }
14
+ exports.InvalidCustomTypeError = InvalidCustomTypeError;
15
+ function getCustomTypes({ rcFile, }) {
12
16
  if (!(0, is_non_empty_object_1.isNonEmptyObject)(rcFile.customTypes))
13
- return [];
14
- const ERR_OBJ = new Error('Invalid customType');
15
- const ERR_NAME = new Error('Invalid customType name');
16
- const ERR_PATH = new Error('Invalid customType.path');
17
- const ERR_NAME_PATH = new Error('Invalid customType namePath');
18
- const ERR_STRATEGY = new Error('Invalid customType.strategy');
19
- return Object.entries(rcFile.customTypes).map(([name, config]) => {
17
+ return effect_1.Effect.succeed([]);
18
+ return effect_1.Effect.all(Object.entries(rcFile.customTypes).map(([name, config]) => {
19
+ const ERR_OBJ = 'Invalid customType';
20
+ const ERR_PATH = 'Invalid customType.path';
21
+ const ERR_NAME_PATH = 'Invalid customType.namePath';
22
+ const ERR_STRATEGY = 'Invalid customType.strategy';
20
23
  if (!(0, is_object_1.isObject)(config))
21
- throw ERR_OBJ;
22
- if (!(0, is_non_empty_string_1.isNonEmptyString)(name))
23
- throw ERR_NAME;
24
+ return createError(config, ERR_OBJ);
24
25
  if (!(0, is_non_empty_string_1.isNonEmptyString)(config.path))
25
- throw ERR_PATH;
26
+ return createError(config, ERR_PATH);
26
27
  const path = config.path;
27
28
  const strategy = config.strategy;
28
29
  switch (strategy) {
29
30
  case 'name~version': {
30
31
  const namePath = config.namePath;
31
32
  if (!(0, is_non_empty_string_1.isNonEmptyString)(namePath))
32
- throw ERR_NAME_PATH;
33
- return new name_and_version_props_1.NameAndVersionPropsStrategy(name, path, namePath);
33
+ return createError(config, ERR_NAME_PATH);
34
+ return effect_1.Effect.succeed(new name_and_version_props_1.NameAndVersionPropsStrategy(name, path, namePath));
34
35
  }
35
36
  case 'name@version': {
36
- return new named_version_string_1.NamedVersionStringStrategy(name, path);
37
+ return effect_1.Effect.succeed(new named_version_string_1.NamedVersionStringStrategy(name, path));
37
38
  }
38
39
  case 'version': {
39
- return new unnamed_version_string_1.UnnamedVersionStringStrategy(name, path);
40
+ return effect_1.Effect.succeed(new unnamed_version_string_1.UnnamedVersionStringStrategy(name, path));
40
41
  }
41
42
  case 'versionsByName': {
42
- return new versions_by_name_1.VersionsByNameStrategy(name, path);
43
+ return effect_1.Effect.succeed(new versions_by_name_1.VersionsByNameStrategy(name, path));
44
+ }
45
+ default: {
46
+ return createError(config, ERR_STRATEGY);
43
47
  }
44
- default:
45
- throw ERR_STRATEGY;
46
48
  }
47
- });
49
+ }));
48
50
  }
49
51
  exports.getCustomTypes = getCustomTypes;
52
+ function createError(config, reason) {
53
+ return effect_1.Effect.fail(new InvalidCustomTypeError({ config, reason }));
54
+ }
@@ -1,18 +1,17 @@
1
- import * as Data from '@effect/data/Data';
2
- import * as Effect from '@effect/io/Effect';
1
+ import { Data, Effect } from 'effect';
3
2
  import type { Ctx } from '../get-context';
4
- import type { Strategy } from './get-custom-types';
5
- declare const DeprecatedTypesError_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 & {
6
- _tag: "DeprecatedTypesError";
3
+ import type { InvalidCustomTypeError, Strategy } from './get-custom-types';
4
+ declare const DeprecatedTypesError_base: new <A extends Record<string, any>>(args: import("effect/Types").Equals<Omit<A, keyof import("effect/dist/declarations/src/Equal").Equal>, {}> extends true ? void : Omit<A, keyof import("effect/dist/declarations/src/Equal").Equal>) => Data.Data<A & {
5
+ readonly _tag: "DeprecatedTypesError";
7
6
  }>;
8
7
  export declare class DeprecatedTypesError extends DeprecatedTypesError_base<{
9
8
  readonly types: string[];
10
9
  }> {
11
10
  }
12
- declare const RenamedWorkspaceTypeError_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 & {
13
- _tag: "RenamedWorkspaceTypeError";
11
+ declare const RenamedWorkspaceTypeError_base: new <A extends Record<string, any>>(args: import("effect/Types").Equals<Omit<A, keyof import("effect/dist/declarations/src/Equal").Equal>, {}> extends true ? void : Omit<A, keyof import("effect/dist/declarations/src/Equal").Equal>) => Data.Data<A & {
12
+ readonly _tag: "RenamedWorkspaceTypeError";
14
13
  }>;
15
14
  export declare class RenamedWorkspaceTypeError extends RenamedWorkspaceTypeError_base<Record<string, never>> {
16
15
  }
17
- export declare function getEnabledTypes({ cli, rcFile, }: Ctx['config']): Effect.Effect<never, DeprecatedTypesError | RenamedWorkspaceTypeError, Strategy.Any[]>;
16
+ export declare function getEnabledTypes({ cli, rcFile, }: Ctx['config']): Effect.Effect<never, DeprecatedTypesError | InvalidCustomTypeError | RenamedWorkspaceTypeError, Strategy.Any[]>;
18
17
  export {};
@@ -1,52 +1,39 @@
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
- };
25
2
  Object.defineProperty(exports, "__esModule", { value: true });
26
3
  exports.getEnabledTypes = exports.RenamedWorkspaceTypeError = exports.DeprecatedTypesError = void 0;
27
- const Data = __importStar(require("@effect/data/Data"));
28
- const ReadonlyArray_1 = require("@effect/data/ReadonlyArray");
29
- const Effect = __importStar(require("@effect/io/Effect"));
4
+ const effect_1 = require("effect");
30
5
  const is_array_of_strings_1 = require("tightrope/guard/is-array-of-strings");
31
6
  const is_boolean_1 = require("tightrope/guard/is-boolean");
32
7
  const is_empty_array_1 = require("tightrope/guard/is-empty-array");
8
+ const is_non_empty_array_1 = require("tightrope/guard/is-non-empty-array");
33
9
  const is_non_empty_string_1 = require("tightrope/guard/is-non-empty-string");
34
10
  const constants_1 = require("../constants");
35
11
  const name_and_version_props_1 = require("../strategy/name-and-version-props");
36
12
  const versions_by_name_1 = require("../strategy/versions-by-name");
37
13
  const get_custom_types_1 = require("./get-custom-types");
38
- class DeprecatedTypesError extends Data.TaggedClass('DeprecatedTypesError') {
14
+ class DeprecatedTypesError extends effect_1.Data.TaggedClass('DeprecatedTypesError') {
39
15
  }
40
16
  exports.DeprecatedTypesError = DeprecatedTypesError;
41
- class RenamedWorkspaceTypeError extends Data.TaggedClass('RenamedWorkspaceTypeError') {
17
+ class RenamedWorkspaceTypeError extends effect_1.Data.TaggedClass('RenamedWorkspaceTypeError') {
42
18
  }
43
19
  exports.RenamedWorkspaceTypeError = RenamedWorkspaceTypeError;
44
20
  function getEnabledTypes({ cli, rcFile, }) {
45
- const deprecatedTypeProps = getDeprecatedTypeProps();
46
- if (deprecatedTypeProps.length > 0) {
47
- return Effect.fail(new DeprecatedTypesError({ types: deprecatedTypeProps }));
48
- }
49
- const allStrategiesByName = Object.fromEntries([
21
+ return (0, effect_1.pipe)(
22
+ // Look for dependency types defined using the old `{ prod: true }` syntax
23
+ // deprecated in syncpack@9.0.0
24
+ effect_1.Effect.succeed(constants_1.INTERNAL_TYPES.filter((key) => (0, is_boolean_1.isBoolean)(rcFile[key]))),
25
+ // Short-circuit and quit if deprecated config is used
26
+ effect_1.Effect.flatMap((deprecatedTypeProps) => deprecatedTypeProps.length > 0
27
+ ? effect_1.Effect.fail(new DeprecatedTypesError({ types: deprecatedTypeProps }))
28
+ : effect_1.Effect.unit), effect_1.Effect.flatMap(() => (0, effect_1.pipe)(effect_1.Effect.Do,
29
+ // Get index of every available strategy, keyed by their names as
30
+ // they're referred to in config
31
+ effect_1.Effect.bind('allStrategiesByName', () => (0, effect_1.pipe)(
32
+ // Get custom types if any are defined, short-circuit and quit if
33
+ // any are invalid
34
+ (0, get_custom_types_1.getCustomTypes)({ cli, rcFile }),
35
+ // Combine them with the default/internal dependency types
36
+ effect_1.Effect.map((customTypes) => Object.fromEntries([
50
37
  ['dev', new versions_by_name_1.VersionsByNameStrategy('dev', 'devDependencies')],
51
38
  ['local', new name_and_version_props_1.NameAndVersionPropsStrategy('local', 'version', 'name')],
52
39
  ['overrides', new versions_by_name_1.VersionsByNameStrategy('overrides', 'overrides')],
@@ -54,10 +41,12 @@ function getEnabledTypes({ cli, rcFile, }) {
54
41
  ['pnpmOverrides', new versions_by_name_1.VersionsByNameStrategy('pnpmOverrides', 'pnpm.overrides')],
55
42
  ['prod', new versions_by_name_1.VersionsByNameStrategy('prod', 'dependencies')],
56
43
  ['resolutions', new versions_by_name_1.VersionsByNameStrategy('resolutions', 'resolutions')],
57
- ...(0, get_custom_types_1.getCustomTypes)({ cli, rcFile }).map((customType) => [customType.name, customType]),
58
- ]);
59
- const allStrategyNames = Object.keys(allStrategiesByName);
60
- const names = {
44
+ ...customTypes.map((type) => [type.name, type]),
45
+ ])))),
46
+ // The names of every available strategy
47
+ effect_1.Effect.bind('allStrategyNames', ({ allStrategiesByName }) => effect_1.Effect.succeed(Object.keys(allStrategiesByName))),
48
+ // Create groupings to assign each provided dependencyType to
49
+ effect_1.Effect.bind('strategyNamesByStatus', () => effect_1.Effect.succeed({
61
50
  provided: ((0, is_non_empty_string_1.isNonEmptyString)(cli.types)
62
51
  ? cli.types.split(',')
63
52
  : (0, is_array_of_strings_1.isArrayOfStrings)(rcFile.dependencyTypes)
@@ -66,45 +55,46 @@ function getEnabledTypes({ cli, rcFile, }) {
66
55
  enabled: [],
67
56
  positive: [],
68
57
  negative: [],
69
- };
70
- if ((0, is_empty_array_1.isEmptyArray)(names.provided) || names.provided.join('') === '**') {
71
- return Effect.succeed(allStrategyNames.map(getStrategyByName));
72
- }
73
- names.provided.forEach((name) => {
74
- if (name.startsWith('!')) {
75
- names.negative.push(name.replace('!', ''));
58
+ })))), effect_1.Effect.tap(({ strategyNamesByStatus }) => effect_1.Effect.logDebug(`dependency types provided by user: ${JSON.stringify(strategyNamesByStatus.provided)}`)),
59
+ // Determine which dependencyTypes should be enabled based on:
60
+ // * which are defined
61
+ // * which were listed to be enabled
62
+ // * which were listed but !negated
63
+ // * etc.
64
+ effect_1.Effect.flatMap(({ allStrategiesByName, allStrategyNames, strategyNamesByStatus }) => {
65
+ if ((0, is_empty_array_1.isEmptyArray)(strategyNamesByStatus.provided) ||
66
+ strategyNamesByStatus.provided.join('') === '**') {
67
+ return effect_1.Effect.succeed(allStrategyNames.map(getStrategyByName));
76
68
  }
77
- else {
78
- names.positive.push(name);
79
- }
80
- });
81
- if ((0, ReadonlyArray_1.isNonEmptyArray)(names.negative)) {
82
- allStrategyNames.forEach((name) => {
83
- if (!names.negative.includes(name)) {
84
- names.enabled.push(name);
69
+ strategyNamesByStatus.provided.forEach((name) => {
70
+ if (name.startsWith('!')) {
71
+ strategyNamesByStatus.negative.push(name.replace('!', ''));
85
72
  }
86
- });
87
- }
88
- if ((0, ReadonlyArray_1.isNonEmptyArray)(names.positive)) {
89
- names.positive.forEach((name) => {
90
- if (!names.enabled.includes(name)) {
91
- names.enabled.push(name);
73
+ else {
74
+ strategyNamesByStatus.positive.push(name);
92
75
  }
93
76
  });
94
- }
95
- if (names.enabled.includes('workspace')) {
96
- return Effect.fail(new RenamedWorkspaceTypeError({}));
97
- }
98
- return Effect.succeed(names.enabled.map(getStrategyByName));
99
- function getStrategyByName(type) {
100
- return allStrategiesByName[type];
101
- }
102
- /**
103
- * Look for dependency types defined using the old syntax of `{ prod: true }`
104
- * which was deprecated in syncpack@9.0.0.
105
- */
106
- function getDeprecatedTypeProps() {
107
- return constants_1.INTERNAL_TYPES.filter((key) => (0, is_boolean_1.isBoolean)(rcFile[key]));
108
- }
77
+ if ((0, is_non_empty_array_1.isNonEmptyArray)(strategyNamesByStatus.negative)) {
78
+ allStrategyNames.forEach((name) => {
79
+ if (!strategyNamesByStatus.negative.includes(name)) {
80
+ strategyNamesByStatus.enabled.push(name);
81
+ }
82
+ });
83
+ }
84
+ if ((0, is_non_empty_array_1.isNonEmptyArray)(strategyNamesByStatus.positive)) {
85
+ strategyNamesByStatus.positive.forEach((name) => {
86
+ if (!strategyNamesByStatus.enabled.includes(name)) {
87
+ strategyNamesByStatus.enabled.push(name);
88
+ }
89
+ });
90
+ }
91
+ if (strategyNamesByStatus.enabled.includes('workspace')) {
92
+ return effect_1.Effect.fail(new RenamedWorkspaceTypeError({}));
93
+ }
94
+ return effect_1.Effect.succeed(strategyNamesByStatus.enabled.map(getStrategyByName));
95
+ function getStrategyByName(type) {
96
+ return allStrategiesByName[type];
97
+ }
98
+ }), effect_1.Effect.tap((enabledTypes) => effect_1.Effect.logDebug(`enabled dependency types determined to be: ${JSON.stringify(enabledTypes)}`)));
109
99
  }
110
100
  exports.getEnabledTypes = getEnabledTypes;
@@ -4,7 +4,7 @@ exports.getIndent = void 0;
4
4
  const is_non_empty_string_1 = require("tightrope/guard/is-non-empty-string");
5
5
  function getIndent({ cli, rcFile }) {
6
6
  return (0, is_non_empty_string_1.isNonEmptyString)(cli.indent)
7
- ? cli.indent
7
+ ? cli.indent.replaceAll('\\t', '\t')
8
8
  : (0, is_non_empty_string_1.isNonEmptyString)(rcFile.indent)
9
9
  ? rcFile.indent
10
10
  : ' ';
@@ -1,3 +1,3 @@
1
- import * as Context from '@effect/data/Context';
1
+ import { Context } from 'effect';
2
2
  import type { CliConfig } from './types';
3
3
  export declare const CliConfigTag: Context.Tag<Partial<CliConfig>, Partial<CliConfig>>;
@@ -1,28 +1,5 @@
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
- };
25
2
  Object.defineProperty(exports, "__esModule", { value: true });
26
3
  exports.CliConfigTag = void 0;
27
- const Context = __importStar(require("@effect/data/Context"));
28
- exports.CliConfigTag = Context.Tag();
4
+ const effect_1 = require("effect");
5
+ exports.CliConfigTag = effect_1.Context.Tag();
@@ -2,9 +2,8 @@ import type { Union } from 'ts-toolbelt';
2
2
  /**
3
3
  * Aliases for semver range formats supported by syncpack
4
4
  *
5
- * Defaults to `""` to ensure that exact dependency versions are used
6
- * instead of loose ranges, but this can be overridden in your config file
7
- * or via the `--semver-range` command line option.
5
+ * Defaults to `""` to ensure that exact dependency versions are used instead of
6
+ * loose ranges, but this can be overridden in your config file.
8
7
  *
9
8
  * | Supported Range | Example |
10
9
  * | --------------- | --------: |
@@ -21,19 +20,22 @@ import type { Union } from 'ts-toolbelt';
21
20
  */
22
21
  export type SemverRange = '' | '*' | '>' | '>=' | '.x' | '<' | '<=' | '^' | '~';
23
22
  export interface GroupConfig {
24
- dependencies: string[];
23
+ dependencies?: string[];
25
24
  dependencyTypes?: string[];
26
25
  label?: string;
27
- packages: string[];
26
+ packages?: string[];
28
27
  }
29
28
  export declare namespace SemverGroupConfig {
29
+ interface Disabled extends GroupConfig {
30
+ isDisabled: true;
31
+ }
30
32
  interface Ignored extends GroupConfig {
31
33
  isIgnored: true;
32
34
  }
33
35
  interface WithRange extends GroupConfig {
34
36
  range: SemverRange;
35
37
  }
36
- type Any = Union.Strict<Ignored | WithRange>;
38
+ type Any = Union.Strict<Disabled | Ignored | WithRange>;
37
39
  }
38
40
  export declare namespace VersionGroupConfig {
39
41
  interface Banned extends GroupConfig {
@@ -83,7 +85,6 @@ export interface CliConfig {
83
85
  readonly configPath?: string;
84
86
  readonly filter: string;
85
87
  readonly indent: string;
86
- readonly semverRange: SemverRange;
87
88
  readonly source: string[];
88
89
  readonly types: string;
89
90
  }
@@ -98,8 +99,6 @@ export interface RcConfig {
98
99
  indent: string;
99
100
  /** @see https://jamiemason.github.io/syncpack/config/semver-groups */
100
101
  semverGroups: SemverGroupConfig.Any[];
101
- /** @see https://jamiemason.github.io/syncpack/config/semver-range */
102
- semverRange: SemverRange;
103
102
  /** @see https://jamiemason.github.io/syncpack/config/sort-az */
104
103
  sortAz: string[];
105
104
  /** @see https://jamiemason.github.io/syncpack/config/sort-first */
@@ -1,9 +1,12 @@
1
+ import type { SemverRange } from './config/types';
1
2
  /** Single source of truth, intended to aid testing or to override */
2
3
  export declare const CWD: string;
3
4
  /** Single source of truth for icons used in output */
4
5
  export declare const ICON: {
6
+ readonly banned: "⦸";
5
7
  readonly cross: "✘";
6
8
  readonly debug: "?";
9
+ readonly info: "i";
7
10
  readonly panic: "!";
8
11
  readonly rightArrow: "→";
9
12
  readonly skip: "-";
@@ -21,13 +24,13 @@ export declare const RANGE: {
21
24
  readonly PATCH: "~";
22
25
  readonly WORKSPACE: "workspace:";
23
26
  };
27
+ export declare const FIXABLE_RANGES: SemverRange[];
24
28
  export declare const INTERNAL_TYPES: readonly ["dev", "local", "overrides", "peer", "pnpmOverrides", "prod", "resolutions"];
25
29
  export declare const DEFAULT_CONFIG: {
26
30
  readonly dependencyTypes: readonly ["**"];
27
31
  readonly filter: ".";
28
32
  readonly indent: " ";
29
33
  readonly semverGroups: readonly [];
30
- readonly semverRange: "";
31
34
  readonly sortAz: readonly ["contributors", "dependencies", "devDependencies", "keywords", "peerDependencies", "resolutions", "scripts"];
32
35
  readonly sortFirst: readonly ["name", "description", "version", "author"];
33
36
  readonly source: readonly ["package.json", "packages/*/package.json"];
package/dist/constants.js CHANGED
@@ -1,12 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_CONFIG = exports.INTERNAL_TYPES = exports.RANGE = exports.ICON = exports.CWD = void 0;
3
+ exports.DEFAULT_CONFIG = exports.INTERNAL_TYPES = exports.FIXABLE_RANGES = exports.RANGE = exports.ICON = exports.CWD = void 0;
4
4
  /** Single source of truth, intended to aid testing or to override */
5
5
  exports.CWD = process.env.MOCK_CWD || process.cwd();
6
6
  /** Single source of truth for icons used in output */
7
7
  exports.ICON = {
8
+ banned: '⦸',
8
9
  cross: '✘',
9
10
  debug: '?',
11
+ info: 'i',
10
12
  panic: '!',
11
13
  rightArrow: '→',
12
14
  skip: '-',
@@ -24,6 +26,7 @@ exports.RANGE = {
24
26
  PATCH: '~',
25
27
  WORKSPACE: 'workspace:',
26
28
  };
29
+ exports.FIXABLE_RANGES = [exports.RANGE.EXACT, exports.RANGE.MINOR, exports.RANGE.PATCH];
27
30
  exports.INTERNAL_TYPES = [
28
31
  'dev',
29
32
  'local',
@@ -38,7 +41,6 @@ exports.DEFAULT_CONFIG = {
38
41
  filter: '.',
39
42
  indent: ' ',
40
43
  semverGroups: [],
41
- semverRange: '',
42
44
  sortAz: [
43
45
  'contributors',
44
46
  'dependencies',