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,43 +1,57 @@
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.setSemverRanges = 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"));
4
+ const effect_1 = require("effect");
5
+ const is_non_empty_array_1 = require("tightrope/guard/is-non-empty-array");
6
+ const fix_mismatches_1 = require("../bin-fix-mismatches/fix-mismatches");
7
+ const lint_semver_ranges_1 = require("../bin-lint-semver-ranges/lint-semver-ranges");
8
+ const list_mismatches_1 = require("../bin-list-mismatches/list-mismatches");
30
9
  const tag_1 = require("../config/tag");
31
- const semver_ranges_1 = require("../create-program/semver-ranges");
32
- const create_env_1 = require("../env/create-env");
33
- const exit_if_invalid_1 = require("../env/exit-if-invalid");
34
- const tags_1 = require("../env/tags");
35
- const write_if_changed_1 = require("../env/write-if-changed");
36
- const create_error_handlers_1 = require("../error-handlers/create-error-handlers");
37
10
  const default_error_handlers_1 = require("../error-handlers/default-error-handlers");
38
11
  const get_context_1 = require("../get-context");
39
- const effects_1 = require("./effects");
40
- function setSemverRanges(cli, env) {
41
- return (0, Function_1.pipe)((0, get_context_1.getContext)(), Effect.flatMap((ctx) => (0, semver_ranges_1.createSemverRangesProgram)(ctx, effects_1.setSemverRangesEffects)), 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.provideContext((0, Function_1.pipe)(Context.empty(), Context.add(tag_1.CliConfigTag, cli), Context.add(tags_1.EnvTag, (0, create_env_1.createEnv)(env)))));
12
+ const get_instances_1 = require("../get-instances");
13
+ const io_1 = require("../io");
14
+ const exit_if_invalid_1 = require("../io/exit-if-invalid");
15
+ const write_if_changed_1 = require("../io/write-if-changed");
16
+ const with_logger_1 = require("../lib/with-logger");
17
+ function setSemverRanges({ io, cli, errorHandlers = default_error_handlers_1.defaultErrorHandlers }) {
18
+ return (0, effect_1.pipe)((0, get_context_1.getContext)({ io, cli, errorHandlers }), effect_1.Effect.flatMap((ctx) => (0, effect_1.pipe)(effect_1.Effect.gen(function* ($) {
19
+ // no semver groups have been configured, they are disabled by default
20
+ if (!(0, is_non_empty_array_1.isNonEmptyArray)(ctx.config.rcFile.semverGroups)) {
21
+ ctx.isInvalid = true;
22
+ yield* $((0, lint_semver_ranges_1.logSemverGroupsDisabledWarning)());
23
+ return ctx;
24
+ }
25
+ const { semverGroups } = yield* $((0, get_instances_1.getInstances)(ctx, io, errorHandlers));
26
+ let fixedCount = 0;
27
+ let unfixableCount = 0;
28
+ let validCount = 0;
29
+ for (const group of semverGroups) {
30
+ if (group._tag === 'WithRange') {
31
+ for (const instance of group.instances) {
32
+ const report = yield* $(group.inspect(instance));
33
+ const _tag = report._tag;
34
+ if (_tag === 'SemverRangeMismatch') {
35
+ yield* $((0, fix_mismatches_1.fixMismatch)(report));
36
+ fixedCount++;
37
+ }
38
+ else if (_tag === 'UnsupportedMismatch') {
39
+ yield* $((0, list_mismatches_1.logUnsupportedMismatch)(report));
40
+ unfixableCount++;
41
+ }
42
+ else {
43
+ validCount++;
44
+ }
45
+ }
46
+ }
47
+ }
48
+ if (validCount)
49
+ yield* $((0, fix_mismatches_1.logAlreadyValidSize)(validCount));
50
+ if (fixedCount)
51
+ yield* $((0, fix_mismatches_1.logFixedSize)(fixedCount));
52
+ if (unfixableCount)
53
+ yield* $((0, fix_mismatches_1.logUnfixableSize)(unfixableCount));
54
+ return ctx;
55
+ }), effect_1.Effect.flatMap(write_if_changed_1.writeIfChanged), effect_1.Effect.catchTags((0, default_error_handlers_1.chainErrorHandlers)(ctx, errorHandlers)), effect_1.Effect.flatMap(exit_if_invalid_1.exitIfInvalid))), 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);
42
56
  }
43
57
  exports.setSemverRanges = setSemverRanges;
@@ -1,11 +1,51 @@
1
- import type { VersionEffectInput as Input, VersionEffects } from '../create-program/effects';
2
- import type { VersionGroupReport } from '../get-version-groups';
3
- interface InputWithVersions {
4
- input: Input<VersionGroupReport.Any>;
1
+ import { Data, Effect } from 'effect';
2
+ import type { Instance } from '../get-instances/instance';
3
+ declare const Releases_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 & {
4
+ readonly _tag: "Releases";
5
+ }>;
6
+ /** full release history from the npm registry for a given package */
7
+ declare class Releases extends Releases_base<{
8
+ instance: Instance;
5
9
  versions: {
6
10
  all: string[];
7
11
  latest: string;
8
12
  };
13
+ }> {
9
14
  }
10
- export declare const updateEffects: VersionEffects<InputWithVersions | void>;
15
+ declare const PromptCancelled_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 & {
16
+ readonly _tag: "PromptCancelled";
17
+ }>;
18
+ declare class PromptCancelled extends PromptCancelled_base<{
19
+ name: string;
20
+ }> {
21
+ }
22
+ declare const HttpError_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 & {
23
+ readonly _tag: "HttpError";
24
+ }>;
25
+ declare class HttpError extends HttpError_base<{
26
+ error: string;
27
+ }> {
28
+ }
29
+ declare const NpmRegistryError_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 & {
30
+ readonly _tag: "NpmRegistryError";
31
+ }>;
32
+ declare class NpmRegistryError extends NpmRegistryError_base<{
33
+ error: string;
34
+ }> {
35
+ }
36
+ export declare const updateEffects: {
37
+ onFetchAllStart(): Effect.Effect<never, never, void>;
38
+ onFetchStart(instance: Instance, totalCount: number): Effect.Effect<never, never, void>;
39
+ onFetchEnd(instance: Instance, versions?: Releases['versions']): Effect.Effect<never, never, void>;
40
+ /** After checking the registry, store this instance known to be up to date */
41
+ onUpToDate(instance: Instance): Effect.Effect<never, never, void>;
42
+ /** After checking the registry, store this instance known to have newer versions available */
43
+ onOutdated(instance: Instance, latest: string): Effect.Effect<never, never, void>;
44
+ /** As the last request completes, remove the progress information */
45
+ onFetchAllEnd(): Effect.Effect<never, never, void>;
46
+ /** Fetch available versions for a given package from the npm registry */
47
+ fetchLatestVersions(instance: Instance): Effect.Effect<never, HttpError | NpmRegistryError, Releases>;
48
+ /** Given responses from npm, ask the user which they want */
49
+ promptForUpdates(outdated: Releases[]): Effect.Effect<never, PromptCancelled, void>;
50
+ };
11
51
  export {};
@@ -27,151 +27,237 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.updateEffects = void 0;
30
- const Data = __importStar(require("@effect/data/Data"));
31
- const Function_1 = require("@effect/data/Function");
32
- const Effect = __importStar(require("@effect/io/Effect"));
33
30
  const Schema = __importStar(require("@effect/schema/Schema"));
34
31
  const chalk_1 = __importDefault(require("chalk"));
32
+ const effect_1 = require("effect");
35
33
  const https_1 = __importDefault(require("https"));
36
34
  const ora_1 = __importDefault(require("ora"));
35
+ const os_1 = require("os");
37
36
  const prompts_1 = __importDefault(require("prompts"));
38
- const unwrap_1 = require("tightrope/result/unwrap");
37
+ const semver_1 = require("semver");
38
+ const gtr_1 = __importDefault(require("semver/ranges/gtr"));
39
+ const is_array_1 = require("tightrope/guard/is-array");
40
+ const is_empty_object_1 = require("tightrope/guard/is-empty-object");
39
41
  const constants_1 = require("../constants");
40
- const get_highest_version_1 = require("../get-version-groups/lib/get-highest-version");
41
- const get_unique_specifiers_1 = require("../get-version-groups/lib/get-unique-specifiers");
42
- const log_verbose_1 = require("../lib/log-verbose");
42
+ const ring_buffer_1 = require("../lib/ring-buffer");
43
43
  const set_semver_range_1 = require("../lib/set-semver-range");
44
- let spinner;
45
- let fetchCount = 0;
44
+ const specifier_1 = require("../specifier");
45
+ /** full release history from the npm registry for a given package */
46
+ class Releases extends effect_1.Data.TaggedClass('Releases') {
47
+ }
48
+ // https://github.com/terkelg/prompts?tab=readme-ov-file#prompts
49
+ class PromptCancelled extends effect_1.Data.TaggedClass('PromptCancelled') {
50
+ }
51
+ class HttpError extends effect_1.Data.TaggedClass('HttpError') {
52
+ }
53
+ class NpmRegistryError extends effect_1.Data.TaggedClass('NpmRegistryError') {
54
+ }
55
+ /** the API client for the terminal spinner */
56
+ let spinner = null;
57
+ /** how many HTTP requests have been sent */
58
+ let fetchedCount = 0;
59
+ /** how many instances have updates available */
60
+ let outdatedCount = 0;
61
+ /** names of instances currently being fetched from npm */
62
+ const inFlight = new Set();
63
+ /** names of instances most recently finished being fetched from npm */
64
+ const mostRecent = new ring_buffer_1.RingBuffer(5);
65
+ /** page size when prompting */
66
+ const optionsPerPage = 50;
67
+ /** instance names in `inFlight` are formatted for display */
68
+ function format(instance) {
69
+ return (0, chalk_1.default) `{gray ${instance.name}}`;
70
+ }
71
+ /** we need to remove colours when sorting loading status output */
72
+ function stripAnsi(str) {
73
+ // eslint-disable-next-line no-control-regex
74
+ const ansiChars = /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g;
75
+ return str.replace(ansiChars, '');
76
+ }
46
77
  exports.updateEffects = {
47
- onFilteredOut() {
48
- return Effect.unit;
49
- },
50
- onIgnored() {
51
- return Effect.unit;
78
+ onFetchAllStart() {
79
+ if (!spinner)
80
+ spinner = (0, ora_1.default)().start();
81
+ fetchedCount = 0;
82
+ return effect_1.Effect.unit;
52
83
  },
53
- onValid(input) {
54
- return fetchPackageVersions(input);
84
+ onFetchStart(instance, totalCount) {
85
+ inFlight.add(format(instance));
86
+ fetchedCount++;
87
+ if (spinner) {
88
+ const indent = `${os_1.EOL} `;
89
+ const progress = new Set([...mostRecent.filter(Boolean), ...inFlight.values()]);
90
+ const sortedProgress = Array.from(progress).sort((a, b) => stripAnsi(a).localeCompare(stripAnsi(b)));
91
+ const suffixText = sortedProgress.join(indent);
92
+ spinner.text = (0, chalk_1.default) `${outdatedCount} updates found in ${fetchedCount}/${totalCount} dependencies${indent}${suffixText}`;
93
+ }
94
+ return effect_1.Effect.unit;
55
95
  },
56
- onBanned() {
57
- return Effect.unit;
96
+ onFetchEnd(instance, versions) {
97
+ inFlight.delete(format(instance));
98
+ const latest = versions?.latest;
99
+ if (latest) {
100
+ if ((0, gtr_1.default)(latest, instance.rawSpecifier, true)) {
101
+ outdatedCount++;
102
+ mostRecent.push((0, chalk_1.default) `${instance.name} {gray {red ${instance.rawSpecifier}} ${constants_1.ICON.rightArrow}} {green ${latest}}`);
103
+ }
104
+ else {
105
+ mostRecent.push((0, chalk_1.default) `{green ${instance.name}}`);
106
+ }
107
+ }
108
+ return effect_1.Effect.unit;
58
109
  },
59
- onHighestSemverMismatch(input) {
60
- return fetchPackageVersions(input);
110
+ /** After checking the registry, store this instance known to be up to date */
111
+ onUpToDate(instance) {
112
+ mostRecent.push((0, chalk_1.default) `{green ${instance.name}}`);
113
+ return effect_1.Effect.unit;
61
114
  },
62
- onLowestSemverMismatch() {
63
- return Effect.unit;
115
+ /** After checking the registry, store this instance known to have newer versions available */
116
+ onOutdated(instance, latest) {
117
+ outdatedCount++;
118
+ mostRecent.push((0, chalk_1.default) `${instance.name} {gray {red ${instance.rawSpecifier}} ${constants_1.ICON.rightArrow}} {green ${latest}}`);
119
+ return effect_1.Effect.unit;
64
120
  },
65
- onPinnedMismatch() {
66
- return Effect.unit;
121
+ /** As the last request completes, remove the progress information */
122
+ onFetchAllEnd() {
123
+ if (spinner)
124
+ spinner.stop();
125
+ spinner = null;
126
+ fetchedCount = 0;
127
+ return effect_1.Effect.unit;
67
128
  },
68
- onSameRangeMismatch(input) {
69
- return fetchPackageVersions(input);
70
- },
71
- onSnappedToMismatch() {
72
- return Effect.unit;
73
- },
74
- onNonSemverMismatch() {
75
- return Effect.unit;
76
- },
77
- onLocalPackageMismatch() {
78
- return Effect.unit;
129
+ /** Fetch available versions for a given package from the npm registry */
130
+ fetchLatestVersions(instance) {
131
+ return (0, effect_1.pipe)(fetchJson(`https://registry.npmjs.org/${instance.name}`),
132
+ // parse and validate the specific data we expect
133
+ effect_1.Effect.flatMap(Schema.parse(Schema.struct({
134
+ 'dist-tags': Schema.struct({ latest: Schema.string }),
135
+ 'time': Schema.record(Schema.string, Schema.string),
136
+ }))),
137
+ // transform it into something more appropriate
138
+ effect_1.Effect.map((struct) => new Releases({
139
+ instance,
140
+ versions: {
141
+ all: Object.keys(struct.time).filter((key) => key !== 'modified' && key !== 'created'),
142
+ latest: struct['dist-tags'].latest,
143
+ },
144
+ })),
145
+ // hide ParseErrors and just treat them as another kind of NpmRegistryError
146
+ effect_1.Effect.catchTags({
147
+ ParseError: () => effect_1.Effect.fail(new NpmRegistryError({ error: `Invalid response for ${instance.name}` })),
148
+ }));
79
149
  },
80
- onComplete(ctx, results) {
81
- return promptForUpdates(results);
150
+ /** Given responses from npm, ask the user which they want */
151
+ promptForUpdates(outdated) {
152
+ return (0, effect_1.pipe)(effect_1.Effect.Do, effect_1.Effect.bind('releasesByType', () => groupByReleaseType(outdated)),
153
+ // Create choices to ask if they want major, minor, patch etc
154
+ effect_1.Effect.bind('releaseTypeQuestions', ({ releasesByType }) => effect_1.Effect.succeed(Object.keys(releasesByType)
155
+ .filter((type) => releasesByType[type].length > 0)
156
+ .map((type) => ({
157
+ title: (0, chalk_1.default) `${releasesByType[type].length} ${type}`,
158
+ selected: true,
159
+ value: type,
160
+ })))),
161
+ // Ask which release types (major, minor, patch etc) they want
162
+ effect_1.Effect.bind('releaseTypeAnswers', ({ releaseTypeQuestions }) => releaseTypeQuestions.length > 0
163
+ ? (0, effect_1.pipe)(effect_1.Effect.tryPromise({
164
+ try: () => (0, prompts_1.default)({
165
+ name: 'releaseTypeAnswers',
166
+ type: 'multiselect',
167
+ instructions: true,
168
+ message: `${outdated.length} updates are available`,
169
+ choices: releaseTypeQuestions,
170
+ }).then((res) => res?.releaseTypeAnswers || []),
171
+ catch: effect_1.identity,
172
+ }), effect_1.Effect.catchAll(() => (0, effect_1.pipe)(effect_1.Effect.logError('Error when prompting for releaseTypeAnswers'), effect_1.Effect.map(() => []))))
173
+ : effect_1.Effect.succeed([])),
174
+ // For each chosen release type, list the available updates to choose from
175
+ effect_1.Effect.bind('prepatchAnswers', (doState) => promptForReleaseType('prepatch', doState)), effect_1.Effect.bind('patchAnswers', (doState) => promptForReleaseType('patch', doState)), effect_1.Effect.bind('preminorAnswers', (doState) => promptForReleaseType('preminor', doState)), effect_1.Effect.bind('minorAnswers', (doState) => promptForReleaseType('minor', doState)), effect_1.Effect.bind('premajorAnswers', (doState) => promptForReleaseType('premajor', doState)), effect_1.Effect.bind('majorAnswers', (doState) => promptForReleaseType('major', doState)), effect_1.Effect.bind('prereleaseAnswers', (doState) => promptForReleaseType('prerelease', doState)),
176
+ /** Apply every update to the package.json files */
177
+ effect_1.Effect.flatMap((doState) => (0, effect_1.pipe)([
178
+ ...doState.prepatchAnswers,
179
+ ...doState.patchAnswers,
180
+ ...doState.preminorAnswers,
181
+ ...doState.minorAnswers,
182
+ ...doState.premajorAnswers,
183
+ ...doState.majorAnswers,
184
+ ...doState.prereleaseAnswers,
185
+ ], effect_1.Effect.forEach(({ instance, versions }) => (0, effect_1.pipe)(instance.semverGroup.getFixed(specifier_1.Specifier.create(instance, versions.latest)), effect_1.Effect.flatMap((latestWithRange) => instance.write(latestWithRange.raw)), effect_1.Effect.catchTag('NonSemverError', effect_1.Effect.logError))), effect_1.Effect.flatMap(() => effect_1.Effect.unit))));
82
186
  },
83
187
  };
84
- const safeGetVersion = Schema.parseEither(Schema.struct({
85
- 'dist-tags': Schema.struct({ latest: Schema.string }),
86
- 'time': Schema.record(Schema.string, Schema.string),
87
- }));
88
- class HttpError extends Data.TaggedClass('HttpError') {
89
- }
90
- class JsonParseError extends Data.TaggedClass('JsonParseError') {
91
- }
92
- function fetchPackageVersions(input) {
93
- if (!spinner)
94
- spinner = (0, ora_1.default)().start();
95
- fetchCount++;
96
- spinner.text = chalk_1.default.blue(`Checked updates for ${fetchCount} dependencies`);
97
- return (0, Function_1.pipe)(fetchUrl(`https://registry.npmjs.org/${input.report.name}`), Effect.flatMap(safeGetVersion), Effect.map((struct) => ({
98
- input,
99
- versions: {
100
- all: Object.keys(struct.time).filter((key) => key !== 'modified' && key !== 'created'),
101
- latest: struct['dist-tags'].latest,
102
- },
103
- })), Effect.catchTags({
104
- HttpError(err) {
105
- return Effect.sync(() => {
106
- (0, log_verbose_1.logVerbose)(`HttpError for "${input.report.name}" ${err}`);
107
- });
108
- },
109
- JsonParseError(err) {
110
- return Effect.sync(() => {
111
- (0, log_verbose_1.logVerbose)(`JsonParseError for "${input.report.name}" ${err}`);
112
- });
113
- },
114
- ParseError(err) {
115
- return Effect.sync(() => {
116
- (0, log_verbose_1.logVerbose)(`ParseError for "${input.report.name}" ${err}`);
117
- });
118
- },
119
- }));
120
- }
121
- function promptForUpdates(results) {
122
- spinner.stop();
123
- return (0, Function_1.pipe)(Effect.Do, Effect.bind('choices', () => Effect.sync(() => results.reduce((arr, result) => {
124
- if (!result)
125
- return arr;
126
- if (!['SameRange', 'Standard'].includes(result.input.group._tag))
127
- return arr;
128
- const input = result.input;
129
- const latestVersion = result.versions.latest;
130
- const uniqueVersions = (0, get_unique_specifiers_1.getUniqueSpecifiers)(input.report.instances).map((i) => i.specifier);
131
- const highestVersion = (0, unwrap_1.unwrap)((0, get_highest_version_1.getHighestVersion)(uniqueVersions));
132
- const exactHighestVersion = (0, set_semver_range_1.setSemverRange)('', highestVersion);
133
- if (exactHighestVersion === latestVersion)
134
- return arr;
135
- const semverRange = (0, set_semver_range_1.getSemverRange)(highestVersion);
136
- const latestWithRange = (0, set_semver_range_1.setSemverRange)(semverRange, latestVersion);
137
- arr.push({
138
- result,
139
- selected: true,
140
- title: (0, chalk_1.default) `NAME {red OLD} ARROW {green NEW}`
141
- .replace('NAME', input.report.name)
142
- .replace('OLD', uniqueVersions.join(chalk_1.default.dim(', ')))
143
- .replace('ARROW', constants_1.ICON.rightArrow)
144
- .replace('NEW', latestWithRange),
145
- });
146
- return arr;
147
- }, []))), Effect.bind('chosenUpdates', ({ choices }) => Effect.tryPromise({
148
- try: () => (0, prompts_1.default)([
149
- {
150
- name: 'indexes',
188
+ function promptForReleaseType(releaseType, doState) {
189
+ const { releasesByType, releaseTypeAnswers } = doState;
190
+ const prop = `${releaseType}Answers`;
191
+ const releases = releasesByType[releaseType];
192
+ return releaseTypeAnswers.includes(releaseType)
193
+ ? (0, effect_1.pipe)(effect_1.Effect.tryPromise({
194
+ try: () => (0, prompts_1.default)({
195
+ name: prop,
151
196
  type: 'multiselect',
152
- message: 'Choose which packages to upgrade',
153
- instructions: true,
197
+ instructions: false,
154
198
  // @ts-expect-error optionsPerPage *does* exist https://github.com/terkelg/prompts#options-7
155
- optionsPerPage: 50,
156
- choices: choices,
157
- },
158
- ])
159
- .then(({ indexes = [] }) => ({ choices, indexes }))
160
- .then(({ choices, indexes }) => indexes.map((i) => choices[i].result)),
161
- catch: () => new Error('Prompt failed'),
162
- })), Effect.flatMap(({ chosenUpdates }) => Effect.sync(() => {
163
- chosenUpdates.forEach(({ input, versions }) => {
164
- input.report.instances.forEach((instance) => {
165
- const semverRange = (0, set_semver_range_1.getSemverRange)(instance.specifier);
166
- const latestWithRange = (0, set_semver_range_1.setSemverRange)(semverRange, versions.latest);
167
- instance.setSpecifier(latestWithRange);
168
- });
169
- });
170
- })), Effect.catchAll(() => Effect.unit));
199
+ optionsPerPage,
200
+ message: `${releases.length} ${releaseType} updates`,
201
+ choices: releases.map((updateable) => ({
202
+ title: (0, chalk_1.default) `${updateable.instance.name} {gray ${updateable.instance.rawSpecifier} ${constants_1.ICON.rightArrow}} {green ${updateable.versions.latest}}`,
203
+ selected: true,
204
+ value: updateable,
205
+ })),
206
+ }),
207
+ catch: effect_1.identity,
208
+ }),
209
+ // Paper over errors in terkelg/prompts for now
210
+ effect_1.Effect.catchAll(() => (0, effect_1.pipe)(effect_1.Effect.logError(`terkelg/prompts errored while prompting for ${prop}`), effect_1.Effect.map(() => ({ [prop]: [] })))),
211
+ // In terkelg/prompts, an empty object means that the user cancelled via
212
+ // ctrl+c or the escape key etc. Handle this case so we can skip any
213
+ // remaining steps.
214
+ effect_1.Effect.flatMap((res) => (0, is_empty_object_1.isEmptyObject)(res)
215
+ ? effect_1.Effect.fail(new PromptCancelled({ name: releaseType }))
216
+ : effect_1.Effect.succeed((0, is_array_1.isArray)(res?.[prop]) ? res?.[prop] : [])))
217
+ : effect_1.Effect.succeed([]);
218
+ }
219
+ function groupByReleaseType(releases) {
220
+ return effect_1.Effect.succeed(releases.reduce((releasesByType, release) => {
221
+ const previous = (0, set_semver_range_1.setSemverRange)('', release.instance.rawSpecifier);
222
+ const latest = release.versions.latest;
223
+ try {
224
+ const type = (0, semver_1.diff)(previous, latest);
225
+ if (type && releasesByType[type]) {
226
+ releasesByType[type].push(release);
227
+ }
228
+ }
229
+ catch {
230
+ //
231
+ }
232
+ return releasesByType;
233
+ }, {
234
+ prepatch: [],
235
+ patch: [],
236
+ preminor: [],
237
+ minor: [],
238
+ premajor: [],
239
+ major: [],
240
+ prerelease: [],
241
+ }));
171
242
  }
172
243
  // @TODO: add a cache with a short TTL on disk in $TMPDIR
173
- function fetchUrl(url) {
174
- return (0, Function_1.pipe)(Effect.async((resume) => {
244
+ function fetchJson(url) {
245
+ return (0, effect_1.pipe)(effect_1.Effect.async((resume) => {
246
+ // setTimeout(
247
+ // () => {
248
+ // resume(
249
+ // Effect.succeed(
250
+ // JSON.stringify({
251
+ // 'dist-tags': { latest: '3.1.1' },
252
+ // 'time': {
253
+ // '0.3.1': new Date().toJSON(),
254
+ // },
255
+ // }),
256
+ // ),
257
+ // );
258
+ // },
259
+ // Math.floor(Math.random() * 500) + 1,
260
+ // );
175
261
  https_1.default
176
262
  .get(url, (res) => {
177
263
  let body = '';
@@ -180,14 +266,14 @@ function fetchUrl(url) {
180
266
  body = `${body}${chunk}`;
181
267
  });
182
268
  res.on('end', () => {
183
- resume(Effect.succeed(body));
269
+ resume(effect_1.Effect.succeed(body));
184
270
  });
185
271
  })
186
272
  .on('error', (err) => {
187
- resume(Effect.fail(new HttpError({ error: String(err) })));
273
+ resume(effect_1.Effect.fail(new HttpError({ error: `Node https threw on ${url}: ${String(err)}` })));
188
274
  });
189
- }), Effect.flatMap((body) => Effect.try({
275
+ }), effect_1.Effect.flatMap((body) => effect_1.Effect.try({
190
276
  try: () => JSON.parse(body),
191
- catch: (err) => new JsonParseError({ error: String(err) }),
277
+ catch: () => new NpmRegistryError({ error: `JSON.parse threw on response from ${url}` }),
192
278
  })));
193
279
  }
@@ -1,36 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
- if (k2 === undefined) k2 = k;
5
- var desc = Object.getOwnPropertyDescriptor(m, k);
6
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
- desc = { enumerable: true, get: function() { return m[k]; } };
8
- }
9
- Object.defineProperty(o, k2, desc);
10
- }) : (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k;
12
- o[k2] = m[k];
13
- }));
14
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
- Object.defineProperty(o, "default", { enumerable: true, value: v });
16
- }) : function(o, v) {
17
- o["default"] = v;
18
- });
19
- var __importStar = (this && this.__importStar) || function (mod) {
20
- if (mod && mod.__esModule) return mod;
21
- var result = {};
22
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
- __setModuleDefault(result, mod);
24
- return result;
25
- };
26
3
  var __importDefault = (this && this.__importDefault) || function (mod) {
27
4
  return (mod && mod.__esModule) ? mod : { "default": mod };
28
5
  };
29
6
  Object.defineProperty(exports, "__esModule", { value: true });
30
- const Effect = __importStar(require("@effect/io/Effect"));
31
7
  const chalk_1 = __importDefault(require("chalk"));
32
8
  const commander_1 = require("commander");
33
- const default_env_1 = require("../env/default-env");
9
+ const effect_1 = require("effect");
10
+ const io_1 = require("../io");
34
11
  const show_help_on_error_1 = require("../lib/show-help-on-error");
35
12
  const option_1 = require("../option");
36
13
  const update_1 = require("./update");
@@ -72,9 +49,9 @@ commander_1.program
72
49
  .option(...option_1.option.config)
73
50
  .option(...option_1.option.types)
74
51
  .parse(process.argv);
75
- Effect.runPromise((0, update_1.update)({
52
+ effect_1.Effect.runPromise((0, update_1.update)(io_1.io, {
76
53
  configPath: commander_1.program.opts().config,
77
54
  filter: commander_1.program.opts().filter,
78
55
  source: commander_1.program.opts().source,
79
56
  types: commander_1.program.opts().types,
80
- }, default_env_1.defaultEnv));
57
+ }));
@@ -1,4 +1,6 @@
1
- import * as Effect from '@effect/io/Effect';
1
+ import { Effect } from 'effect';
2
2
  import { type CliConfig } from '../config/types';
3
- import type { DefaultEnv } from '../env/default-env';
4
- export declare function update(cli: Partial<CliConfig>, env: DefaultEnv): Effect.Effect<never, never, void | import("../get-context").Ctx>;
3
+ import type { ErrorHandlers } from '../error-handlers/default-error-handlers';
4
+ import type { Io } from '../io';
5
+ import { updateEffects } from './effects';
6
+ export declare function update(io: Io, cli: Partial<CliConfig>, effects?: typeof updateEffects, errorHandlers?: ErrorHandlers): Effect.Effect<never, never, unknown>;