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,40 +1,62 @@
1
- import type * as Effect from '@effect/io/Effect';
2
- import type { Env } from '../env/create-env';
1
+ import type { Effect } from 'effect';
3
2
  import type { Ctx } from '../get-context';
4
- import type { AnySemverGroup, SemverGroupReport as SR } from '../get-semver-groups';
5
- import type { AnyVersionGroup, VersionGroupReport as VR } from '../get-version-groups';
6
- export interface SemverRangeEffectInput<T> {
3
+ import type { Io } from '../io';
4
+ import type { Report } from '../report';
5
+ import type { SemverGroup } from '../semver-group';
6
+ import type { VersionGroup } from '../version-group';
7
+ export interface SemverRangeEffectInput<T extends Report.Semver.Any> {
8
+ _tag: T['_tag'];
7
9
  ctx: Ctx;
8
- group: AnySemverGroup;
10
+ group: SemverGroup.Any;
9
11
  index: number;
10
12
  report: T;
11
13
  }
12
- export interface VersionEffectInput<T> {
14
+ export interface VersionEffectInput<T extends Report.Version.Any> {
15
+ _tag: T['_tag'];
13
16
  ctx: Ctx;
14
- group: AnyVersionGroup;
17
+ group: VersionGroup.Any;
15
18
  index: number;
16
19
  report: T;
17
20
  }
18
- export interface SemverRangeEffects<A> {
19
- onFilteredOut: (input: SemverRangeEffectInput<SR.FilteredOut>) => Effect.Effect<Env | never, never, A>;
20
- onIgnored: (input: SemverRangeEffectInput<SR.Ignored>) => Effect.Effect<Env | never, never, A>;
21
- onSemverRangeMismatch: (input: SemverRangeEffectInput<SR.SemverRangeMismatch>) => Effect.Effect<Env | never, never, A>;
22
- onNonSemverVersion: (input: SemverRangeEffectInput<SR.NonSemverVersion>) => Effect.Effect<Env | never, never, A>;
23
- onValid: (input: SemverRangeEffectInput<SR.Valid>) => Effect.Effect<Env | never, never, A>;
24
- onLocalPackageSemverRangeMismatch: (input: SemverRangeEffectInput<SR.LocalPackageSemverRangeMismatch>) => Effect.Effect<Env | never, never, A>;
25
- onComplete: (ctx: Ctx, results: A[]) => Effect.Effect<Env | never, never, A>;
21
+ export type Handler<I> = (input: I) => Effect.Effect<Io | never, never, void>;
22
+ type SemverHandler<I extends Report.Semver.Any> = Handler<SemverRangeEffectInput<I>>;
23
+ type VersionHandler<I extends Report.Version.Any> = Handler<VersionEffectInput<I>>;
24
+ export interface SemverRangeEffects {
25
+ onSemverGroup: Handler<{
26
+ ctx: Ctx;
27
+ group: SemverGroup.Any;
28
+ index: number;
29
+ }>;
30
+ onDisabled: SemverHandler<Report.Disabled>;
31
+ onFilteredOut: SemverHandler<Report.FilteredOut>;
32
+ onIgnored: SemverHandler<Report.Ignored>;
33
+ onValid: SemverHandler<Report.Valid>;
34
+ onSemverRangeMismatch: SemverHandler<Report.SemverRangeMismatch>;
35
+ onUnsupportedMismatch: SemverHandler<Report.UnsupportedMismatch>;
26
36
  }
27
- export interface VersionEffects<A> {
28
- onBanned: (input: VersionEffectInput<VR.Banned>) => Effect.Effect<Env | never, never, A>;
29
- onFilteredOut: (input: VersionEffectInput<VR.FilteredOut>) => Effect.Effect<Env | never, never, A>;
30
- onHighestSemverMismatch: (input: VersionEffectInput<VR.HighestSemverMismatch>) => Effect.Effect<Env | never, never, A>;
31
- onIgnored: (input: VersionEffectInput<VR.Ignored>) => Effect.Effect<Env | never, never, A>;
32
- onLowestSemverMismatch: (input: VersionEffectInput<VR.LowestSemverMismatch>) => Effect.Effect<Env | never, never, A>;
33
- onPinnedMismatch: (input: VersionEffectInput<VR.PinnedMismatch>) => Effect.Effect<Env | never, never, A>;
34
- onSameRangeMismatch: (input: VersionEffectInput<VR.SameRangeMismatch>) => Effect.Effect<Env | never, never, A>;
35
- onSnappedToMismatch: (input: VersionEffectInput<VR.SnappedToMismatch>) => Effect.Effect<Env | never, never, A>;
36
- onNonSemverMismatch: (input: VersionEffectInput<VR.NonSemverMismatch>) => Effect.Effect<Env | never, never, A>;
37
- onValid: (input: VersionEffectInput<VR.Valid>) => Effect.Effect<Env | never, never, A>;
38
- onLocalPackageMismatch: (input: VersionEffectInput<VR.LocalPackageMismatch>) => Effect.Effect<Env | never, never, A>;
39
- onComplete: (ctx: Ctx, results: A[]) => Effect.Effect<Env | never, never, A>;
37
+ export interface VersionEffects {
38
+ onComplete: (ctx: Ctx) => Effect.Effect<never, never, void>;
39
+ onVersionGroup: Handler<{
40
+ ctx: Ctx;
41
+ group: VersionGroup.Any;
42
+ index: number;
43
+ }>;
44
+ onDisabled: VersionHandler<Report.Disabled>;
45
+ onFilteredOut: VersionHandler<Report.FilteredOut>;
46
+ onIgnored: VersionHandler<Report.Ignored>;
47
+ onValid: VersionHandler<Report.Valid>;
48
+ onFixable: VersionHandler<Report.Version.Fixable.Any>;
49
+ onBanned: VersionHandler<Report.Banned>;
50
+ onHighestSemverMismatch: VersionHandler<Report.HighestSemverMismatch>;
51
+ onLocalPackageMismatch: VersionHandler<Report.LocalPackageMismatch>;
52
+ onLowestSemverMismatch: VersionHandler<Report.LowestSemverMismatch>;
53
+ onPinnedMismatch: VersionHandler<Report.PinnedMismatch>;
54
+ onSemverRangeMismatch: VersionHandler<Report.SemverRangeMismatch>;
55
+ onSnappedToMismatch: VersionHandler<Report.SnappedToMismatch>;
56
+ onUnfixable: VersionHandler<Report.Version.Unfixable.Any>;
57
+ onMissingLocalVersion: VersionHandler<Report.MissingLocalVersion>;
58
+ onMissingSnappedToMismatch: VersionHandler<Report.MissingSnappedToMismatch>;
59
+ onUnsupportedMismatch: VersionHandler<Report.UnsupportedMismatch>;
60
+ onSameRangeMismatch: VersionHandler<Report.SameRangeMismatch>;
40
61
  }
62
+ export {};
@@ -1,2 +1,38 @@
1
- import type { ErrorHandlers } from './create-error-handlers';
2
- export declare const defaultErrorHandlers: ErrorHandlers<void>;
1
+ import { Effect } from 'effect';
2
+ import type { InvalidCustomTypeError } from '../config/get-custom-types';
3
+ import type { DeprecatedTypesError, RenamedWorkspaceTypeError } from '../config/get-enabled-types';
4
+ import type { Ctx } from '../get-context';
5
+ import type { NoSourcesFoundError } from '../get-package-json-files/get-file-paths';
6
+ import type { GlobError } from '../io/glob-sync';
7
+ import type { ReadFileError } from '../io/read-file-sync';
8
+ import type { JsonParseError } from '../io/read-json-file-sync';
9
+ import type { WriteFileError } from '../io/write-file-sync';
10
+ import type { SemverGroup } from '../semver-group';
11
+ import type { VersionGroup } from '../version-group';
12
+ type R = Effect.Effect<never, never, void>;
13
+ export interface ErrorHandlers {
14
+ DeprecatedTypesError(err: DeprecatedTypesError): R;
15
+ InvalidCustomTypeError(err: InvalidCustomTypeError): R;
16
+ RenamedWorkspaceTypeError(err: RenamedWorkspaceTypeError): R;
17
+ SemverGroupConfigError(err: SemverGroup.ConfigError): R;
18
+ VersionGroupConfigError(err: VersionGroup.ConfigError): R;
19
+ GlobError(err: GlobError): R;
20
+ JsonParseError(err: JsonParseError): R;
21
+ NoSourcesFoundError(err: NoSourcesFoundError): R;
22
+ ReadFileError(err: ReadFileError): R;
23
+ WriteFileError(err: WriteFileError): R;
24
+ }
25
+ export declare function chainErrorHandlers(ctx: Ctx, errorHandlers: ErrorHandlers): {
26
+ DeprecatedTypesError: (err: DeprecatedTypesError) => Effect.Effect<never, never, Ctx>;
27
+ GlobError: (err: GlobError) => Effect.Effect<never, never, Ctx>;
28
+ InvalidCustomTypeError: (err: InvalidCustomTypeError) => Effect.Effect<never, never, Ctx>;
29
+ JsonParseError: (err: JsonParseError) => Effect.Effect<never, never, Ctx>;
30
+ NoSourcesFoundError: (err: NoSourcesFoundError) => Effect.Effect<never, never, Ctx>;
31
+ ReadFileError: (err: ReadFileError) => Effect.Effect<never, never, Ctx>;
32
+ RenamedWorkspaceTypeError: (err: RenamedWorkspaceTypeError) => Effect.Effect<never, never, Ctx>;
33
+ SemverGroupConfigError: (err: SemverGroup.ConfigError) => Effect.Effect<never, never, Ctx>;
34
+ VersionGroupConfigError: (err: VersionGroup.ConfigError) => Effect.Effect<never, never, Ctx>;
35
+ WriteFileError: (err: WriteFileError) => Effect.Effect<never, never, Ctx>;
36
+ };
37
+ export declare const defaultErrorHandlers: ErrorHandlers;
38
+ export {};
@@ -3,60 +3,103 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.defaultErrorHandlers = void 0;
6
+ exports.defaultErrorHandlers = exports.chainErrorHandlers = void 0;
7
7
  const chalk_1 = __importDefault(require("chalk"));
8
- const constants_1 = require("../constants");
8
+ const effect_1 = require("effect");
9
+ const os_1 = require("os");
10
+ function chainErrorHandlers(ctx, errorHandlers) {
11
+ const markAsInvalid = effect_1.Effect.map(() => {
12
+ ctx.isInvalid = true;
13
+ return ctx;
14
+ });
15
+ return {
16
+ DeprecatedTypesError: (0, effect_1.flow)(errorHandlers.DeprecatedTypesError, markAsInvalid),
17
+ GlobError: (0, effect_1.flow)(errorHandlers.GlobError, markAsInvalid),
18
+ InvalidCustomTypeError: (0, effect_1.flow)(errorHandlers.InvalidCustomTypeError, markAsInvalid),
19
+ JsonParseError: (0, effect_1.flow)(errorHandlers.JsonParseError, markAsInvalid),
20
+ NoSourcesFoundError: (0, effect_1.flow)(errorHandlers.NoSourcesFoundError, markAsInvalid),
21
+ ReadFileError: (0, effect_1.flow)(errorHandlers.ReadFileError, markAsInvalid),
22
+ RenamedWorkspaceTypeError: (0, effect_1.flow)(errorHandlers.RenamedWorkspaceTypeError, markAsInvalid),
23
+ SemverGroupConfigError: (0, effect_1.flow)(errorHandlers.SemverGroupConfigError, markAsInvalid),
24
+ VersionGroupConfigError: (0, effect_1.flow)(errorHandlers.VersionGroupConfigError, markAsInvalid),
25
+ WriteFileError: (0, effect_1.flow)(errorHandlers.WriteFileError, markAsInvalid),
26
+ };
27
+ }
28
+ exports.chainErrorHandlers = chainErrorHandlers;
9
29
  exports.defaultErrorHandlers = {
10
- DeprecatedTypesError(err) {
11
- const url = 'https://github.com/JamieMason/syncpack/releases/tag/9.0.0';
12
- console.log(chalk_1.default.red(constants_1.ICON.panic, `Your syncpack config file contains values deprecated in ${url}`));
13
- console.log(chalk_1.default.red(' Dependency Types:', err.types));
14
- console.log(chalk_1.default.red(' Docs: https://jamiemason.github.io/syncpack/config/dependency-types'));
15
- },
30
+ // getContext
16
31
  GlobError(err) {
17
- console.log(chalk_1.default.red(constants_1.ICON.panic, 'An error was found when processing your source globs'));
18
- console.log(chalk_1.default.red(' Error:', err.error));
32
+ return effect_1.Effect.logError([
33
+ chalk_1.default.red('An error was found when processing your source globs'),
34
+ chalk_1.default.red(' Error:', err.error),
35
+ ].join(os_1.EOL));
19
36
  },
20
37
  JsonParseError(err) {
21
- console.log(chalk_1.default.red(constants_1.ICON.panic, 'An error was found when parsing a JSON file'));
22
- console.log(chalk_1.default.red(' File:', err.filePath));
23
- console.log(chalk_1.default.red(' Error:', err.error));
38
+ return effect_1.Effect.logError([
39
+ chalk_1.default.red('An error was found when parsing a JSON file'),
40
+ chalk_1.default.red(' File:', err.filePath),
41
+ chalk_1.default.red(' Error:', err.error),
42
+ ].join(os_1.EOL));
24
43
  },
25
44
  NoSourcesFoundError(err) {
26
- console.log(chalk_1.default.red(constants_1.ICON.panic, 'No package.json files were found'));
27
- console.log(chalk_1.default.red(' CWD:'), err.CWD);
28
- console.log(chalk_1.default.red(' Sources:', err.patterns));
29
- },
30
- ReadConfigFileError(err) {
31
- console.log(chalk_1.default.red(constants_1.ICON.panic, 'Your syncpack config file contains an error'));
32
- console.log(chalk_1.default.red(' File:', err.filePath || 'not known (discovered by cosmiconfig)'));
33
- console.log(chalk_1.default.red(' Error:', err.error));
45
+ return effect_1.Effect.logError([
46
+ chalk_1.default.red('No package.json files were found'),
47
+ chalk_1.default.red(' CWD:', err.CWD),
48
+ chalk_1.default.red(' Sources:', err.patterns),
49
+ ].join(os_1.EOL));
34
50
  },
35
51
  ReadFileError(err) {
36
- console.log(chalk_1.default.red(constants_1.ICON.panic, 'An error was found when reading a file'));
37
- console.log(chalk_1.default.red(' File:', err.filePath));
38
- console.log(chalk_1.default.red(' Error:', err.error));
52
+ return effect_1.Effect.logError([
53
+ chalk_1.default.red('An error was found when reading a file'),
54
+ chalk_1.default.red(' File:', err.filePath),
55
+ chalk_1.default.red(' Error:', err.error),
56
+ ].join(os_1.EOL));
57
+ },
58
+ // Others
59
+ DeprecatedTypesError(err) {
60
+ const url = 'https://github.com/JamieMason/syncpack/releases/tag/9.0.0';
61
+ return effect_1.Effect.logError([
62
+ chalk_1.default.red(`Your syncpack config file contains values deprecated in ${url}`),
63
+ chalk_1.default.red(' Dependency Types:', err.types),
64
+ chalk_1.default.red(' Docs: https://jamiemason.github.io/syncpack/config/dependency-types'),
65
+ ].join(os_1.EOL));
66
+ },
67
+ InvalidCustomTypeError(err) {
68
+ return effect_1.Effect.logError([
69
+ chalk_1.default.red('Your syncpack config file contains an invalid custom type'),
70
+ chalk_1.default.red(' Error:', err.reason),
71
+ chalk_1.default.red(' Config:', err.config),
72
+ chalk_1.default.red(' Docs: https://jamiemason.github.io/syncpack/config/custom-types'),
73
+ ].join(os_1.EOL));
39
74
  },
40
75
  RenamedWorkspaceTypeError() {
41
76
  const url = 'https://github.com/JamieMason/syncpack/releases/tag/11.2.1';
42
- console.log(chalk_1.default.red(constants_1.ICON.panic, `The "workspace" dependency type was renamed to "local" in ${url}`));
43
- console.log(chalk_1.default.red(' Docs: https://jamiemason.github.io/syncpack/config/dependency-types'));
77
+ return effect_1.Effect.logError([
78
+ chalk_1.default.red(`The "workspace" dependency type was renamed to "local" in ${url}`),
79
+ chalk_1.default.red(' Docs: https://jamiemason.github.io/syncpack/config/dependency-types'),
80
+ ].join(os_1.EOL));
44
81
  },
45
82
  SemverGroupConfigError(err) {
46
- console.log(chalk_1.default.red(constants_1.ICON.panic, 'Your semver group config contains an error'));
47
- console.log(chalk_1.default.red(' Error:', err.error));
48
- console.log(chalk_1.default.red(' Config:'), err.config);
49
- console.log(chalk_1.default.red(' Docs: https://jamiemason.github.io/syncpack/config/semver-groups'));
83
+ return effect_1.Effect.logError([
84
+ chalk_1.default.red('Your semver group config contains an error'),
85
+ chalk_1.default.red(' Error:', err.error),
86
+ chalk_1.default.red(' Config:', err.config),
87
+ chalk_1.default.red(' Docs: https://jamiemason.github.io/syncpack/config/semver-groups'),
88
+ ].join(os_1.EOL));
50
89
  },
51
90
  VersionGroupConfigError(err) {
52
- console.log(chalk_1.default.red(constants_1.ICON.panic, 'Your version group config contains an error'));
53
- console.log(chalk_1.default.red(' Error:', err.error));
54
- console.log(chalk_1.default.red(' Config:'), err.config);
55
- console.log(chalk_1.default.red(' Docs: https://jamiemason.github.io/syncpack/config/version-groups'));
91
+ return effect_1.Effect.logError([
92
+ chalk_1.default.red('Your version group config contains an error'),
93
+ chalk_1.default.red(' Error:', err.error),
94
+ chalk_1.default.red(' Config:', err.config),
95
+ chalk_1.default.red(' Docs: https://jamiemason.github.io/syncpack/config/version-groups'),
96
+ ].join(os_1.EOL));
56
97
  },
57
98
  WriteFileError(err) {
58
- console.log(chalk_1.default.red(constants_1.ICON.panic, 'An error was found when writing to a file'));
59
- console.log(chalk_1.default.red(' File:', err.filePath));
60
- console.log(chalk_1.default.red(' Error:', err.error));
99
+ return effect_1.Effect.logError([
100
+ chalk_1.default.red('An error was found when writing to a file'),
101
+ chalk_1.default.red(' File:', err.filePath),
102
+ chalk_1.default.red(' Error:', err.error),
103
+ ].join(os_1.EOL));
61
104
  },
62
105
  };
@@ -1,17 +1,23 @@
1
- import * as Effect from '@effect/io/Effect';
1
+ import { Effect } from 'effect';
2
2
  import type { O } from 'ts-toolbelt';
3
3
  import { type CliConfig, type RcConfig } from '../config/types';
4
- import type { Env } from '../env/create-env';
5
- import type { GlobError, ReadConfigFileError, ReadFileError } from '../env/tags';
6
- import type { NoSourcesFoundError } from '../get-package-json-files/get-file-paths';
7
- import type { JsonParseError } from '../get-package-json-files/get-patterns/read-json-safe';
4
+ import type { ErrorHandlers } from '../error-handlers/default-error-handlers';
8
5
  import type { PackageJsonFile } from '../get-package-json-files/package-json-file';
6
+ import type { Io } from '../io';
9
7
  export interface Ctx {
10
8
  readonly config: {
11
9
  readonly cli: Partial<CliConfig>;
12
10
  readonly rcFile: O.Partial<RcConfig, 'deep'>;
13
11
  };
12
+ /** @TODO: Replace with Effect Exit/Cause */
14
13
  isInvalid: boolean;
15
14
  packageJsonFiles: PackageJsonFile[];
15
+ packageJsonFilesByName: Record<string, PackageJsonFile>;
16
16
  }
17
- export declare function getContext(): Effect.Effect<Partial<CliConfig> | Env, NoSourcesFoundError | GlobError | ReadFileError | JsonParseError | ReadConfigFileError, Ctx>;
17
+ interface Input {
18
+ io: Io;
19
+ cli: Partial<CliConfig>;
20
+ errorHandlers: ErrorHandlers;
21
+ }
22
+ export declare function getContext({ io, cli, errorHandlers }: Input): Effect.Effect<never, never, Ctx>;
23
+ export {};
@@ -1,39 +1,22 @@
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.getContext = void 0;
27
- const Function_1 = require("@effect/data/Function");
28
- const Effect = __importStar(require("@effect/io/Effect"));
29
- const tag_1 = require("../config/tag");
30
- const tags_1 = require("../env/tags");
4
+ const effect_1 = require("effect");
31
5
  const get_package_json_files_1 = require("../get-package-json-files");
32
- function getContext() {
33
- return (0, Function_1.pipe)(Effect.Do, Effect.bind('cli', () => tag_1.CliConfigTag), Effect.bind('env', () => tags_1.EnvTag), Effect.bind('rcFile', ({ cli, env }) => env.readConfigFileSync(cli.configPath)), Effect.bind('packageJsonFiles', get_package_json_files_1.getPackageJsonFiles), Effect.map(({ cli, rcFile, packageJsonFiles }) => ({
6
+ const read_config_file_sync_1 = require("../io/read-config-file-sync");
7
+ const key_by_1 = require("./lib/key-by");
8
+ function getContext({ io, cli, errorHandlers }) {
9
+ const exitOnError = effect_1.Effect.flatMap(() => effect_1.Effect.failSync(() => io.process.exit(1)));
10
+ return (0, effect_1.pipe)(effect_1.Effect.Do, effect_1.Effect.bind('rcFile', () => (0, read_config_file_sync_1.readConfigFileSync)(io, cli.configPath)), effect_1.Effect.bind('packageJsonFiles', ({ rcFile }) => (0, get_package_json_files_1.getPackageJsonFiles)(io, { cli, rcFile })), effect_1.Effect.map(({ rcFile, packageJsonFiles }) => ({
34
11
  config: { cli, rcFile },
35
12
  isInvalid: false,
36
13
  packageJsonFiles,
37
- })));
14
+ packageJsonFilesByName: (0, key_by_1.keyBy)('name', packageJsonFiles),
15
+ })), effect_1.Effect.catchTags({
16
+ GlobError: (0, effect_1.flow)(errorHandlers.GlobError, exitOnError),
17
+ JsonParseError: (0, effect_1.flow)(errorHandlers.JsonParseError, exitOnError),
18
+ NoSourcesFoundError: (0, effect_1.flow)(errorHandlers.NoSourcesFoundError, exitOnError),
19
+ ReadFileError: (0, effect_1.flow)(errorHandlers.ReadFileError, exitOnError),
20
+ }));
38
21
  }
39
22
  exports.getContext = getContext;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Convert an array of objects to an object, where each member of the array has
3
+ * a unique value for the given key. The new object keys each object by its
4
+ * value for the given key.
5
+ */
6
+ export declare function keyBy<A extends any[]>(key: string, array: A): Record<string, A[number]>;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ /**
3
+ * Convert an array of objects to an object, where each member of the array has
4
+ * a unique value for the given key. The new object keys each object by its
5
+ * value for the given key.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.keyBy = void 0;
9
+ function keyBy(key, array) {
10
+ return array.reduce((objectsByKeyValue, obj) => {
11
+ const value = obj[key];
12
+ objectsByKeyValue[value] = obj;
13
+ return objectsByKeyValue;
14
+ }, {});
15
+ }
16
+ exports.keyBy = keyBy;
@@ -0,0 +1,14 @@
1
+ import { Effect } from 'effect';
2
+ import type { ErrorHandlers } from '../error-handlers/default-error-handlers';
3
+ import type { Ctx } from '../get-context';
4
+ import type { Io } from '../io';
5
+ import type { SemverGroup } from '../semver-group';
6
+ import type { VersionGroup } from '../version-group';
7
+ import type { Instance } from './instance';
8
+ interface Instances {
9
+ all: Instance[];
10
+ semverGroups: SemverGroup.Any[];
11
+ versionGroups: VersionGroup.Any[];
12
+ }
13
+ export declare function getInstances(ctx: Ctx, io: Io, errorHandlers: ErrorHandlers): Effect.Effect<never, never, Instances>;
14
+ export {};
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getInstances = void 0;
4
+ const effect_1 = require("effect");
5
+ const get_enabled_types_1 = require("../config/get-enabled-types");
6
+ const can_add_to_group_1 = require("../guards/can-add-to-group");
7
+ const sort_by_name_1 = require("../lib/sort-by-name");
8
+ const create_semver_groups_1 = require("../semver-group/create-semver-groups");
9
+ const create_version_groups_1 = require("../version-group/create-version-groups");
10
+ function getInstances(ctx, io, errorHandlers) {
11
+ const exitOnError = effect_1.Effect.flatMap(() => effect_1.Effect.failSync(() => io.process.exit(1)));
12
+ return (0, effect_1.pipe)(effect_1.Effect.Do, effect_1.Effect.bind('enabledTypes', () => (0, get_enabled_types_1.getEnabledTypes)(ctx.config)), effect_1.Effect.bind('semverGroups', () => (0, create_semver_groups_1.createSemverGroups)(ctx)), effect_1.Effect.bind('versionGroups', () => (0, create_version_groups_1.createVersionGroups)(ctx)), effect_1.Effect.bind('instances', (acc) => (0, effect_1.pipe)(ctx.packageJsonFiles, effect_1.Effect.forEach((file) => file.getInstances(acc.enabledTypes)), effect_1.Effect.map((instancesByFile) => instancesByFile.flat()))), effect_1.Effect.tap(({ instances, semverGroups, versionGroups }) => effect_1.Effect.sync(() => {
13
+ for (const instance of instances) {
14
+ // assign each instance to its semver group, first match wins
15
+ assignToSemverGroup: for (const group of semverGroups) {
16
+ if ((0, can_add_to_group_1.canAddToGroup)(ctx.packageJsonFilesByName, group, instance)) {
17
+ instance.semverGroup = group;
18
+ group.instances.push(instance);
19
+ break assignToSemverGroup;
20
+ }
21
+ }
22
+ // assign each instance to its version group, first match wins
23
+ assignToVersionGroup: for (const group of versionGroups) {
24
+ if ((0, can_add_to_group_1.canAddToGroup)(ctx.packageJsonFilesByName, group, instance)) {
25
+ instance.versionGroup = group;
26
+ group.instances.push(instance);
27
+ break assignToVersionGroup;
28
+ }
29
+ }
30
+ }
31
+ })), effect_1.Effect.map(({ instances, semverGroups, versionGroups }) => ({
32
+ all: instances,
33
+ semverGroups: getSortedAndFiltered(semverGroups),
34
+ versionGroups: getSortedAndFiltered(versionGroups),
35
+ })), effect_1.Effect.catchTags({
36
+ DeprecatedTypesError: (0, effect_1.flow)(errorHandlers.DeprecatedTypesError, exitOnError),
37
+ InvalidCustomTypeError: (0, effect_1.flow)(errorHandlers.InvalidCustomTypeError, exitOnError),
38
+ RenamedWorkspaceTypeError: (0, effect_1.flow)(errorHandlers.RenamedWorkspaceTypeError, exitOnError),
39
+ SemverGroupConfigError: (0, effect_1.flow)(errorHandlers.SemverGroupConfigError, exitOnError),
40
+ VersionGroupConfigError: (0, effect_1.flow)(errorHandlers.VersionGroupConfigError, exitOnError),
41
+ }));
42
+ function getSortedAndFiltered(groups) {
43
+ return groups.filter((group) => group.instances.sort(sort_by_name_1.sortByName).length > 0);
44
+ }
45
+ }
46
+ exports.getInstances = getInstances;
@@ -0,0 +1,25 @@
1
+ import type { Effect } from 'effect';
2
+ import type { Strategy } from '../config/get-custom-types';
3
+ import type { PackageJsonFile } from '../get-package-json-files/package-json-file';
4
+ import type { SemverGroup } from '../semver-group';
5
+ import type { VersionGroup } from '../version-group';
6
+ import type { Delete } from '../version-group/lib/delete';
7
+ export declare class Instance {
8
+ /** The name of this dependency */
9
+ name: string;
10
+ /** The .name property of the package.json file of this instance */
11
+ pkgName: string;
12
+ /** The specifier as it is on disk before being fixed */
13
+ rawSpecifier: string;
14
+ /** The package this dependency is installed in this specific time */
15
+ packageJsonFile: PackageJsonFile;
16
+ /** Locates where in the file this dependency is installed */
17
+ strategy: Strategy.Any;
18
+ /** The semver group this instance belongs to */
19
+ semverGroup: SemverGroup.Any;
20
+ /** The version group this instance belongs to */
21
+ versionGroup: VersionGroup.Any;
22
+ constructor(name: string, rawSpecifier: string, packageJsonFile: PackageJsonFile, strategy: Strategy.Any);
23
+ /** Mutate the package.json file in memory with the latest version specifier */
24
+ write(rawSpecifier: string | Delete): Effect.Effect<never, never, PackageJsonFile>;
25
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Instance = void 0;
4
+ class Instance {
5
+ constructor(name, rawSpecifier, packageJsonFile, strategy) {
6
+ this.name = name;
7
+ this.pkgName = packageJsonFile.jsonFile.contents.name || 'PACKAGE_JSON_HAS_NO_NAME';
8
+ this.rawSpecifier = rawSpecifier;
9
+ this.packageJsonFile = packageJsonFile;
10
+ this.strategy = strategy;
11
+ this.semverGroup = null;
12
+ this.versionGroup = null;
13
+ }
14
+ /** Mutate the package.json file in memory with the latest version specifier */
15
+ write(rawSpecifier) {
16
+ this.rawSpecifier = rawSpecifier;
17
+ return this.strategy.write(this.packageJsonFile, [this.name, this.rawSpecifier]);
18
+ }
19
+ }
20
+ exports.Instance = Instance;
@@ -1,10 +1,9 @@
1
- import * as Data from '@effect/data/Data';
2
- import * as Effect from '@effect/io/Effect';
3
- import { type Env } from '../env/create-env';
4
- import type { GlobError } from '../env/tags';
1
+ import { Data, Effect } from 'effect';
5
2
  import type { Ctx } from '../get-context';
6
- declare const NoSourcesFoundError_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: "NoSourcesFoundError";
3
+ import type { Io } from '../io';
4
+ import type { GlobError } from '../io/glob-sync';
5
+ declare const NoSourcesFoundError_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 & {
6
+ readonly _tag: "NoSourcesFoundError";
8
7
  }>;
9
8
  export declare class NoSourcesFoundError extends NoSourcesFoundError_base<{
10
9
  readonly CWD: string;
@@ -18,5 +17,5 @@ export declare class NoSourcesFoundError extends NoSourcesFoundError_base<{
18
17
  *
19
18
  * @returns Array of absolute file paths to package.json files
20
19
  */
21
- export declare function getFilePaths(config: Ctx['config']): Effect.Effect<Env, GlobError | NoSourcesFoundError, string[]>;
20
+ export declare function getFilePaths(io: Io, config: Ctx['config']): Effect.Effect<never, GlobError | NoSourcesFoundError, string[]>;
22
21
  export {};
@@ -1,38 +1,12 @@
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.getFilePaths = exports.NoSourcesFoundError = void 0;
27
- const Data = __importStar(require("@effect/data/Data"));
28
- const Function_1 = require("@effect/data/Function");
29
- const Effect = __importStar(require("@effect/io/Effect"));
4
+ const effect_1 = require("effect");
30
5
  const uniq_1 = require("tightrope/array/uniq");
31
6
  const is_non_empty_array_1 = require("tightrope/guard/is-non-empty-array");
32
- const constants_1 = require("../constants");
33
- const tags_1 = require("../env/tags");
7
+ const glob_sync_1 = require("../io/glob-sync");
34
8
  const get_patterns_1 = require("./get-patterns");
35
- class NoSourcesFoundError extends Data.TaggedClass('NoSourcesFoundError') {
9
+ class NoSourcesFoundError extends effect_1.Data.TaggedClass('NoSourcesFoundError') {
36
10
  }
37
11
  exports.NoSourcesFoundError = NoSourcesFoundError;
38
12
  /**
@@ -42,9 +16,12 @@ exports.NoSourcesFoundError = NoSourcesFoundError;
42
16
  *
43
17
  * @returns Array of absolute file paths to package.json files
44
18
  */
45
- function getFilePaths(config) {
46
- return (0, Function_1.pipe)((0, get_patterns_1.getPatterns)(config), Effect.flatMap((patterns) => (0, Function_1.pipe)(tags_1.EnvTag, Effect.flatMap((env) => env.globSync(patterns)), Effect.map((arr) => (0, uniq_1.uniq)(arr.flat())), Effect.flatMap((filePaths) => (0, is_non_empty_array_1.isNonEmptyArray)(filePaths)
47
- ? Effect.succeed(filePaths)
48
- : Effect.fail(new NoSourcesFoundError({ CWD: constants_1.CWD, patterns }))))));
19
+ function getFilePaths(io, config) {
20
+ return (0, effect_1.pipe)(effect_1.Effect.Do, effect_1.Effect.bind('patterns', () => (0, get_patterns_1.getPatterns)(io, config)), effect_1.Effect.bind('filePaths', ({ patterns }) => (0, glob_sync_1.globSync)(io, patterns)), effect_1.Effect.bind('flatFilePaths', ({ filePaths }) => effect_1.Effect.sync(() => (0, uniq_1.uniq)(filePaths.flat()))), effect_1.Effect.flatMap(({ flatFilePaths, patterns }) => (0, is_non_empty_array_1.isNonEmptyArray)(flatFilePaths)
21
+ ? effect_1.Effect.succeed(flatFilePaths)
22
+ : effect_1.Effect.fail(new NoSourcesFoundError({
23
+ CWD: io.process.cwd(),
24
+ patterns,
25
+ }))));
49
26
  }
50
27
  exports.getFilePaths = getFilePaths;
@@ -1,4 +1,3 @@
1
- import * as O from '@effect/data/Option';
2
- import * as Effect from '@effect/io/Effect';
3
- import type { Env } from '../../env/create-env';
4
- export declare function getLernaPatterns(): Effect.Effect<Env, never, O.Option<string[]>>;
1
+ import { Effect, Option as O } from 'effect';
2
+ import type { Io } from '../../io';
3
+ export declare function getLernaPatterns(io: Io): Effect.Effect<never, never, O.Option<string[]>>;