syncpack 10.5.1 → 10.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/README.md +8 -5
  2. package/dist/bin-fix-mismatches/effects.d.ts +2 -0
  3. package/dist/bin-fix-mismatches/effects.js +112 -0
  4. package/dist/bin-fix-mismatches/fix-mismatches.d.ts +4 -2
  5. package/dist/bin-fix-mismatches/fix-mismatches.js +38 -49
  6. package/dist/bin-fix-mismatches/index.js +28 -4
  7. package/dist/bin-format/format-cli.d.ts +4 -3
  8. package/dist/bin-format/format-cli.js +35 -4
  9. package/dist/bin-format/format.d.ts +3 -2
  10. package/dist/bin-format/format.js +25 -1
  11. package/dist/bin-format/index.js +27 -3
  12. package/dist/bin-lint/index.js +28 -4
  13. package/dist/bin-lint/lint.d.ts +4 -0
  14. package/dist/bin-lint/lint.js +44 -0
  15. package/dist/bin-lint-semver-ranges/effects.d.ts +2 -0
  16. package/dist/bin-lint-semver-ranges/effects.js +70 -0
  17. package/dist/bin-lint-semver-ranges/index.js +28 -4
  18. package/dist/bin-lint-semver-ranges/lint-semver-ranges.d.ts +4 -2
  19. package/dist/bin-lint-semver-ranges/lint-semver-ranges.js +14 -39
  20. package/dist/bin-list/effects.d.ts +2 -0
  21. package/dist/bin-list/effects.js +112 -0
  22. package/dist/bin-list/index.js +28 -4
  23. package/dist/bin-list/list.d.ts +4 -2
  24. package/dist/bin-list/list.js +14 -75
  25. package/dist/bin-list-mismatches/effects.d.ts +2 -0
  26. package/dist/bin-list-mismatches/effects.js +136 -0
  27. package/dist/bin-list-mismatches/index.js +28 -4
  28. package/dist/bin-list-mismatches/list-mismatches.d.ts +4 -2
  29. package/dist/bin-list-mismatches/list-mismatches.js +14 -87
  30. package/dist/bin-prompt/effects.d.ts +2 -0
  31. package/dist/bin-prompt/effects.js +110 -0
  32. package/dist/bin-prompt/index.js +28 -4
  33. package/dist/bin-prompt/prompt.d.ts +4 -0
  34. package/dist/bin-prompt/prompt.js +42 -0
  35. package/dist/bin-set-semver-ranges/effects.d.ts +2 -0
  36. package/dist/bin-set-semver-ranges/effects.js +61 -0
  37. package/dist/bin-set-semver-ranges/index.js +28 -4
  38. package/dist/bin-set-semver-ranges/set-semver-ranges.d.ts +4 -2
  39. package/dist/bin-set-semver-ranges/set-semver-ranges.js +39 -22
  40. package/dist/bin-update/effects.d.ts +11 -0
  41. package/dist/bin-update/effects.js +187 -0
  42. package/dist/bin-update/index.d.ts +2 -0
  43. package/dist/bin-update/index.js +80 -0
  44. package/dist/bin-update/update.d.ts +4 -0
  45. package/dist/bin-update/update.js +47 -0
  46. package/dist/bin.js +3 -0
  47. package/dist/config/get-custom-types.d.ts +2 -2
  48. package/dist/config/get-enabled-types.d.ts +12 -2
  49. package/dist/config/get-enabled-types.js +38 -4
  50. package/dist/config/get-filter.d.ts +2 -2
  51. package/dist/config/get-indent.d.ts +2 -2
  52. package/dist/config/get-semver-range.d.ts +2 -2
  53. package/dist/config/get-semver-range.js +4 -4
  54. package/dist/config/get-sort-az.d.ts +2 -2
  55. package/dist/config/get-sort-first.d.ts +2 -2
  56. package/dist/config/get-source.d.ts +2 -2
  57. package/dist/config/get-source.js +1 -2
  58. package/dist/config/types.d.ts +8 -6
  59. package/dist/config/types.js +26 -0
  60. package/dist/constants.d.ts +1 -1
  61. package/dist/constants.js +1 -1
  62. package/dist/create-program/effects.d.ts +40 -0
  63. package/dist/create-program/effects.js +2 -0
  64. package/dist/create-program/semver-ranges.d.ts +7 -0
  65. package/dist/create-program/semver-ranges.js +55 -0
  66. package/dist/create-program/versions.d.ts +7 -0
  67. package/dist/create-program/versions.js +70 -0
  68. package/dist/env/create-env.d.ts +21 -0
  69. package/dist/env/create-env.js +60 -0
  70. package/dist/env/default-env.d.ts +18 -0
  71. package/dist/env/default-env.js +95 -0
  72. package/dist/env/exit-if-invalid.d.ts +4 -0
  73. package/dist/env/exit-if-invalid.js +34 -0
  74. package/dist/env/tags.d.ts +58 -0
  75. package/dist/env/tags.js +50 -0
  76. package/dist/env/write-if-changed.d.ts +11 -0
  77. package/dist/env/write-if-changed.js +73 -0
  78. package/dist/error-handlers/create-error-handlers.d.ts +19 -0
  79. package/dist/error-handlers/create-error-handlers.js +57 -0
  80. package/dist/error-handlers/default-error-handlers.d.ts +2 -0
  81. package/dist/error-handlers/default-error-handlers.js +57 -0
  82. package/dist/get-context/index.d.ts +11 -8
  83. package/dist/get-context/index.js +31 -9
  84. package/dist/get-package-json-files/get-file-paths.d.ts +17 -8
  85. package/dist/get-package-json-files/get-file-paths.js +40 -20
  86. package/dist/get-package-json-files/get-patterns/get-lerna-patterns.d.ts +4 -3
  87. package/dist/get-package-json-files/get-patterns/get-lerna-patterns.js +31 -8
  88. package/dist/get-package-json-files/get-patterns/get-pnpm-patterns.d.ts +4 -3
  89. package/dist/get-package-json-files/get-patterns/get-pnpm-patterns.js +36 -14
  90. package/dist/get-package-json-files/get-patterns/get-yarn-patterns.d.ts +4 -3
  91. package/dist/get-package-json-files/get-patterns/get-yarn-patterns.js +37 -9
  92. package/dist/get-package-json-files/get-patterns/index.d.ts +4 -4
  93. package/dist/get-package-json-files/get-patterns/index.js +37 -18
  94. package/dist/get-package-json-files/get-patterns/read-json-safe.d.ts +15 -3
  95. package/dist/get-package-json-files/get-patterns/read-json-safe.js +36 -10
  96. package/dist/get-package-json-files/index.d.ts +7 -4
  97. package/dist/get-package-json-files/index.js +27 -9
  98. package/dist/get-package-json-files/instance.js +2 -2
  99. package/dist/get-package-json-files/package-json-file.d.ts +6 -10
  100. package/dist/get-package-json-files/package-json-file.js +5 -21
  101. package/dist/get-semver-groups/filtered-out.d.ts +12 -6
  102. package/dist/get-semver-groups/filtered-out.js +40 -14
  103. package/dist/get-semver-groups/ignored.d.ts +10 -4
  104. package/dist/get-semver-groups/ignored.js +34 -8
  105. package/dist/get-semver-groups/index.d.ts +80 -28
  106. package/dist/get-semver-groups/index.js +94 -42
  107. package/dist/get-semver-groups/with-range.d.ts +12 -5
  108. package/dist/get-semver-groups/with-range.js +49 -25
  109. package/dist/get-version-groups/banned.d.ts +10 -4
  110. package/dist/get-version-groups/banned.js +34 -8
  111. package/dist/get-version-groups/filtered-out.d.ts +12 -6
  112. package/dist/get-version-groups/filtered-out.js +40 -14
  113. package/dist/get-version-groups/ignored.d.ts +10 -4
  114. package/dist/get-version-groups/ignored.js +34 -8
  115. package/dist/get-version-groups/index.d.ts +131 -47
  116. package/dist/get-version-groups/index.js +123 -51
  117. package/dist/get-version-groups/lib/get-highest-version.js +2 -2
  118. package/dist/get-version-groups/lib/get-lowest-version.js +2 -2
  119. package/dist/get-version-groups/lib/get-range-score.js +1 -3
  120. package/dist/get-version-groups/lib/sort.js +3 -3
  121. package/dist/get-version-groups/pinned.d.ts +10 -4
  122. package/dist/get-version-groups/pinned.js +39 -16
  123. package/dist/get-version-groups/same-range.d.ts +10 -4
  124. package/dist/get-version-groups/same-range.js +38 -15
  125. package/dist/get-version-groups/snapped-to.d.ts +10 -4
  126. package/dist/get-version-groups/snapped-to.js +41 -16
  127. package/dist/get-version-groups/standard.d.ts +12 -5
  128. package/dist/get-version-groups/standard.js +63 -39
  129. package/dist/guards/can-add-to-group.d.ts +4 -0
  130. package/dist/guards/can-add-to-group.js +15 -0
  131. package/dist/guards/is-loose-semver.d.ts +1 -0
  132. package/dist/guards/is-loose-semver.js +9 -0
  133. package/dist/guards/is-semver.d.ts +1 -0
  134. package/dist/guards/is-semver.js +16 -0
  135. package/dist/guards/is-supported.d.ts +1 -0
  136. package/dist/guards/is-supported.js +17 -0
  137. package/dist/guards/is-valid-semver-range.d.ts +2 -0
  138. package/dist/guards/is-valid-semver-range.js +17 -0
  139. package/dist/lib/$R.js +2 -2
  140. package/dist/lib/log-group-header.d.ts +6 -0
  141. package/dist/lib/log-group-header.js +34 -0
  142. package/dist/lib/log-verbose.d.ts +1 -0
  143. package/dist/lib/log-verbose.js +24 -0
  144. package/dist/lib/set-semver-range.d.ts +1 -0
  145. package/dist/lib/set-semver-range.js +14 -6
  146. package/dist/option.js +1 -4
  147. package/dist/strategy/lib/get-non-empty-string-prop.js +2 -2
  148. package/dist/strategy/name-and-version-props.js +5 -5
  149. package/dist/strategy/named-version-string.js +4 -4
  150. package/dist/strategy/unnamed-version-string.js +4 -4
  151. package/dist/strategy/versions-by-name.js +3 -3
  152. package/package.json +28 -18
  153. package/dist/bin-fix-mismatches/fix-mismatches-cli.d.ts +0 -3
  154. package/dist/bin-fix-mismatches/fix-mismatches-cli.js +0 -12
  155. package/dist/bin-lint/lint-cli.d.ts +0 -3
  156. package/dist/bin-lint/lint-cli.js +0 -12
  157. package/dist/bin-lint-semver-ranges/lint-semver-ranges-cli.d.ts +0 -3
  158. package/dist/bin-lint-semver-ranges/lint-semver-ranges-cli.js +0 -11
  159. package/dist/bin-list/list-cli.d.ts +0 -3
  160. package/dist/bin-list/list-cli.js +0 -11
  161. package/dist/bin-list-mismatches/list-mismatches-cli.d.ts +0 -3
  162. package/dist/bin-list-mismatches/list-mismatches-cli.js +0 -11
  163. package/dist/bin-prompt/prompt-cli.d.ts +0 -3
  164. package/dist/bin-prompt/prompt-cli.js +0 -50
  165. package/dist/bin-set-semver-ranges/set-semver-ranges-cli.d.ts +0 -3
  166. package/dist/bin-set-semver-ranges/set-semver-ranges-cli.js +0 -11
  167. package/dist/get-package-json-files/get-patterns/read-yaml-safe.d.ts +0 -3
  168. package/dist/get-package-json-files/get-patterns/read-yaml-safe.js +0 -12
  169. package/dist/get-semver-groups/catch-all.d.ts +0 -4
  170. package/dist/get-semver-groups/catch-all.js +0 -11
  171. package/dist/get-version-groups/catch-all.d.ts +0 -4
  172. package/dist/get-version-groups/catch-all.js +0 -11
  173. package/dist/lib/disk.d.ts +0 -21
  174. package/dist/lib/disk.js +0 -79
  175. package/dist/lib/exit-if-invalid.d.ts +0 -2
  176. package/dist/lib/exit-if-invalid.js +0 -10
  177. package/dist/lib/is-semver.d.ts +0 -6
  178. package/dist/lib/is-semver.js +0 -49
  179. package/dist/lib/log.d.ts +0 -5
  180. package/dist/lib/log.js +0 -51
  181. package/dist/lib/newlines.d.ts +0 -6
  182. package/dist/lib/newlines.js +0 -24
  183. package/dist/lib/print-strings.d.ts +0 -1
  184. package/dist/lib/print-strings.js +0 -7
  185. package/dist/lib/write-if-changed.d.ts +0 -2
  186. package/dist/lib/write-if-changed.js +0 -21
@@ -0,0 +1,55 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.createSemverRangesProgram = void 0;
27
+ const Function_1 = require("@effect/data/Function");
28
+ const Unify_1 = require("@effect/data/Unify");
29
+ const Effect = __importStar(require("@effect/io/Effect"));
30
+ const Match = __importStar(require("@effect/match"));
31
+ const get_semver_groups_1 = require("../get-semver-groups");
32
+ function createSemverRangesProgram(ctx, effects) {
33
+ return (0, Function_1.pipe)((0, get_semver_groups_1.getSemverGroups)(ctx), Effect.flatMap((semverGroups) => Effect.allPar(semverGroups.flatMap((group) => group.inspect().map((reportEffect, index) => (0, Function_1.pipe)((0, Unify_1.unify)(reportEffect), Effect.flatMap((0, Function_1.pipe)(Match.type(), Match.tagsExhaustive({
34
+ FilteredOut(report) {
35
+ return effects.onFilteredOut({ ctx, group, index, report });
36
+ },
37
+ Ignored(report) {
38
+ return effects.onIgnored({ ctx, group, index, report });
39
+ },
40
+ Valid(report) {
41
+ return effects.onValid({ ctx, group, index, report });
42
+ },
43
+ }))), Effect.catchTags({
44
+ SemverRangeMismatch(report) {
45
+ return effects.onSemverRangeMismatch({ ctx, group, index, report });
46
+ },
47
+ UnsupportedVersion(report) {
48
+ return effects.onUnsupportedVersion({ ctx, group, index, report });
49
+ },
50
+ WorkspaceSemverRangeMismatch(report) {
51
+ return effects.onWorkspaceSemverRangeMismatch({ ctx, group, index, report });
52
+ },
53
+ })))))), Effect.flatMap((results) => effects.onComplete(ctx, results)), Effect.map(() => ctx));
54
+ }
55
+ exports.createSemverRangesProgram = createSemverRangesProgram;
@@ -0,0 +1,7 @@
1
+ import * as Effect from '@effect/io/Effect';
2
+ import type { DeprecatedTypesError } from '../config/get-enabled-types';
3
+ import type { Env } from '../env/create-env';
4
+ import type { Ctx } from '../get-context';
5
+ import type { VersionGroupConfigError } from '../get-version-groups';
6
+ import type { VersionEffects } from './effects';
7
+ export declare function createVersionsProgram<T extends VersionEffects<any>>(ctx: Ctx, effects: T): Effect.Effect<Env, VersionGroupConfigError | DeprecatedTypesError, Ctx>;
@@ -0,0 +1,70 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.createVersionsProgram = void 0;
27
+ const Function_1 = require("@effect/data/Function");
28
+ const Unify_1 = require("@effect/data/Unify");
29
+ const Effect = __importStar(require("@effect/io/Effect"));
30
+ const Match = __importStar(require("@effect/match"));
31
+ const get_version_groups_1 = require("../get-version-groups");
32
+ function createVersionsProgram(ctx, effects) {
33
+ return (0, Function_1.pipe)((0, get_version_groups_1.getVersionGroups)(ctx), Effect.flatMap((versionGroups) => Effect.allPar(versionGroups.flatMap((group) => group.inspect().map((reportEffect, index) => (0, Function_1.pipe)((0, Unify_1.unify)(reportEffect), Effect.flatMap((0, Function_1.pipe)(Match.type(), Match.tagsExhaustive({
34
+ FilteredOut(report) {
35
+ return effects.onFilteredOut({ ctx, group, index, report });
36
+ },
37
+ Ignored(report) {
38
+ return effects.onIgnored({ ctx, group, index, report });
39
+ },
40
+ Valid(report) {
41
+ return effects.onValid({ ctx, group, index, report });
42
+ },
43
+ }))), Effect.catchTags({
44
+ Banned(report) {
45
+ return effects.onBanned({ ctx, group, index, report });
46
+ },
47
+ HighestSemverMismatch(report) {
48
+ return effects.onHighestSemverMismatch({ ctx, group, index, report });
49
+ },
50
+ LowestSemverMismatch(report) {
51
+ return effects.onLowestSemverMismatch({ ctx, group, index, report });
52
+ },
53
+ PinnedMismatch(report) {
54
+ return effects.onPinnedMismatch({ ctx, group, index, report });
55
+ },
56
+ SameRangeMismatch(report) {
57
+ return effects.onSameRangeMismatch({ ctx, group, index, report });
58
+ },
59
+ SnappedToMismatch(report) {
60
+ return effects.onSnappedToMismatch({ ctx, group, index, report });
61
+ },
62
+ UnsupportedMismatch(report) {
63
+ return effects.onUnsupportedMismatch({ ctx, group, index, report });
64
+ },
65
+ WorkspaceMismatch(report) {
66
+ return effects.onWorkspaceMismatch({ ctx, group, index, report });
67
+ },
68
+ })))))), Effect.flatMap((results) => effects.onComplete(ctx, results)), Effect.map(() => ctx));
69
+ }
70
+ exports.createVersionsProgram = createVersionsProgram;
@@ -0,0 +1,21 @@
1
+ import * as Effect from '@effect/io/Effect';
2
+ import type { O } from 'ts-toolbelt';
3
+ import type { RcConfig } from '../config/types';
4
+ import type { DefaultEnv } from './default-env';
5
+ import { AskForChoiceError, AskForInputError, GlobError, ReadConfigFileError, ReadFileError, ReadYamlFileError, WriteFileError } from './tags';
6
+ export interface Env {
7
+ readonly askForChoice: (opts: {
8
+ message: string;
9
+ choices: string[];
10
+ }) => Effect.Effect<never, AskForChoiceError, string>;
11
+ readonly askForInput: (opts: {
12
+ message: string;
13
+ }) => Effect.Effect<never, AskForInputError, string>;
14
+ readonly exitProcess: (code: number) => Effect.Effect<never, never, void>;
15
+ readonly globSync: (patterns: string[]) => Effect.Effect<never, GlobError, string[]>;
16
+ readonly readConfigFileSync: (configPath?: string) => Effect.Effect<never, ReadConfigFileError, O.Partial<RcConfig, 'deep'>>;
17
+ readonly readFileSync: (filePath: string) => Effect.Effect<never, ReadFileError, string>;
18
+ readonly readYamlFileSync: <T = unknown>(filePath: string) => Effect.Effect<never, ReadYamlFileError, T>;
19
+ readonly writeFileSync: (filePath: string, contents: string) => Effect.Effect<never, WriteFileError, void>;
20
+ }
21
+ export declare function createEnv(env: DefaultEnv): Env;
@@ -0,0 +1,60 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.createEnv = void 0;
27
+ const Effect = __importStar(require("@effect/io/Effect"));
28
+ const tags_1 = require("./tags");
29
+ function createEnv(env) {
30
+ return {
31
+ askForChoice(opts) {
32
+ return Effect.tryCatchPromise(() => env.askForChoice(opts), (err) => new tags_1.AskForChoiceError({ error: String(err) }));
33
+ },
34
+ askForInput(opts) {
35
+ return Effect.tryCatchPromise(() => env.askForInput(opts), (err) => new tags_1.AskForInputError({ error: String(err) }));
36
+ },
37
+ // @FIXME: process.exit is probably handled some other way in effect-ts
38
+ exitProcess(code) {
39
+ return Effect.sync(() => {
40
+ env.exitProcess(code);
41
+ });
42
+ },
43
+ globSync(patterns) {
44
+ return Effect.tryCatch(() => env.globSync(patterns), (err) => new tags_1.GlobError({ error: String(err) }));
45
+ },
46
+ readConfigFileSync(filePath) {
47
+ return Effect.tryCatch(() => env.readConfigFileSync(filePath), (err) => new tags_1.ReadConfigFileError({ filePath: filePath || '', error: String(err) }));
48
+ },
49
+ readFileSync(filePath) {
50
+ return Effect.tryCatch(() => env.readFileSync(filePath), (err) => new tags_1.ReadFileError({ filePath, error: String(err) }));
51
+ },
52
+ readYamlFileSync(filePath) {
53
+ return Effect.tryCatch(() => env.readYamlFileSync(filePath), (err) => new tags_1.ReadYamlFileError({ filePath, error: String(err) }));
54
+ },
55
+ writeFileSync(filePath, contents) {
56
+ return Effect.tryCatch(() => env.writeFileSync(filePath, contents), (err) => new tags_1.WriteFileError({ filePath, error: String(err) }));
57
+ },
58
+ };
59
+ }
60
+ exports.createEnv = createEnv;
@@ -0,0 +1,18 @@
1
+ import type { O } from 'ts-toolbelt';
2
+ import type { RcConfig } from '../config/types';
3
+ export interface DefaultEnv {
4
+ readonly askForChoice: (opts: {
5
+ message: string;
6
+ choices: string[];
7
+ }) => Promise<string>;
8
+ readonly askForInput: (opts: {
9
+ message: string;
10
+ }) => Promise<string>;
11
+ readonly exitProcess: (code: number) => void;
12
+ readonly globSync: (patterns: string[]) => string[];
13
+ readonly readConfigFileSync: (configPath?: string) => O.Partial<RcConfig, 'deep'>;
14
+ readonly readFileSync: (filePath: string) => string;
15
+ readonly readYamlFileSync: <T = unknown>(filePath: string) => T;
16
+ readonly writeFileSync: (filePath: string, contents: string) => void;
17
+ }
18
+ export declare const defaultEnv: DefaultEnv;
@@ -0,0 +1,95 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.defaultEnv = void 0;
27
+ const cosmiconfig_1 = require("cosmiconfig");
28
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
29
+ // @ts-ignore Select *does* exist
30
+ const enquirer_1 = require("enquirer");
31
+ const fs_extra_1 = require("fs-extra");
32
+ const globby = __importStar(require("globby"));
33
+ const path_1 = require("path");
34
+ const readYamlFile = __importStar(require("read-yaml-file"));
35
+ const is_non_empty_object_1 = require("tightrope/guard/is-non-empty-object");
36
+ const constants_1 = require("../constants");
37
+ const log_verbose_1 = require("../lib/log-verbose");
38
+ exports.defaultEnv = {
39
+ /* istanbul ignore next */
40
+ askForChoice({ message, choices }) {
41
+ return new enquirer_1.Select({ name: 'choice', message, choices }).run();
42
+ },
43
+ /* istanbul ignore next */
44
+ askForInput({ message }) {
45
+ return new enquirer_1.Input({ message }).run();
46
+ },
47
+ /* istanbul ignore next */
48
+ globSync(patterns) {
49
+ (0, log_verbose_1.logVerbose)('globSync(', patterns, ')');
50
+ return globby.sync(patterns, {
51
+ ignore: ['**/node_modules/**'],
52
+ absolute: true,
53
+ cwd: constants_1.CWD,
54
+ });
55
+ },
56
+ /* istanbul ignore next */
57
+ exitProcess(code) {
58
+ (0, log_verbose_1.logVerbose)('exit(', code, ')');
59
+ process.exit(code);
60
+ },
61
+ readConfigFileSync(configPath) {
62
+ (0, log_verbose_1.logVerbose)('readConfigFileSync(', configPath, ')');
63
+ const client = (0, cosmiconfig_1.cosmiconfigSync)('syncpack');
64
+ const result = configPath ? client.load(configPath) : client.search();
65
+ if (!(0, is_non_empty_object_1.isNonEmptyObject)(result)) {
66
+ const rcPath = (0, path_1.join)(constants_1.CWD, 'package.json');
67
+ const pjson = (0, fs_extra_1.readJsonSync)(rcPath, { throws: false });
68
+ const rcConfig = pjson?.config?.syncpack;
69
+ if ((0, is_non_empty_object_1.isNonEmptyObject)(rcConfig))
70
+ return rcConfig;
71
+ (0, log_verbose_1.logVerbose)('no config file found');
72
+ return {};
73
+ }
74
+ const rcPath = result.filepath;
75
+ const rcConfig = result.config;
76
+ (0, log_verbose_1.logVerbose)('.syncpackrc path:', rcPath);
77
+ (0, log_verbose_1.logVerbose)('.syncpackrc contents:', rcConfig);
78
+ return rcConfig;
79
+ },
80
+ /* istanbul ignore next */
81
+ readFileSync(filePath) {
82
+ (0, log_verbose_1.logVerbose)('readFileSync(', filePath, ')');
83
+ return (0, fs_extra_1.readFileSync)(filePath, { encoding: 'utf8' });
84
+ },
85
+ /* istanbul ignore next */
86
+ readYamlFileSync(filePath) {
87
+ (0, log_verbose_1.logVerbose)('readYamlFileSync(', filePath, ')');
88
+ return readYamlFile.sync(filePath);
89
+ },
90
+ /* istanbul ignore next */
91
+ writeFileSync(filePath, contents) {
92
+ (0, log_verbose_1.logVerbose)('writeFileSync(', filePath, contents, ')');
93
+ (0, fs_extra_1.writeFileSync)(filePath, contents);
94
+ },
95
+ };
@@ -0,0 +1,4 @@
1
+ import * as Effect from '@effect/io/Effect';
2
+ import type { Ctx } from '../get-context';
3
+ import { type Env } from './create-env';
4
+ export declare function exitIfInvalid(ctx: Ctx): Effect.Effect<Env, never, Ctx>;
@@ -0,0 +1,34 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.exitIfInvalid = void 0;
27
+ const Function_1 = require("@effect/data/Function");
28
+ const Effect = __importStar(require("@effect/io/Effect"));
29
+ const tags_1 = require("./tags");
30
+ // @TODO what's the effect-ts way to process.exit?
31
+ function exitIfInvalid(ctx) {
32
+ return (0, Function_1.pipe)(tags_1.EnvTag, Effect.flatMap((env) => (ctx.isInvalid ? env.exitProcess(1) : Effect.unit())), Effect.map(() => ctx));
33
+ }
34
+ exports.exitIfInvalid = exitIfInvalid;
@@ -0,0 +1,58 @@
1
+ import * as Context from '@effect/data/Context';
2
+ import * as Data from '@effect/data/Data';
3
+ import type { Env } from './create-env';
4
+ export declare const EnvTag: Context.Tag<Env, Env>;
5
+ declare const AskForChoiceError_base: new <A extends Record<string, any>>(args: Data.IsEqualTo<Omit<A, keyof import("@effect/data/Equal").Equal>, {}> extends true ? void : Omit<A, keyof import("@effect/data/Equal").Equal>) => Data.Data<A & {
6
+ _tag: "AskForChoiceError";
7
+ }>;
8
+ export declare class AskForChoiceError extends AskForChoiceError_base<{
9
+ readonly error: string;
10
+ }> {
11
+ }
12
+ declare const AskForInputError_base: new <A extends Record<string, any>>(args: Data.IsEqualTo<Omit<A, keyof import("@effect/data/Equal").Equal>, {}> extends true ? void : Omit<A, keyof import("@effect/data/Equal").Equal>) => Data.Data<A & {
13
+ _tag: "AskForInputError";
14
+ }>;
15
+ export declare class AskForInputError extends AskForInputError_base<{
16
+ readonly error: string;
17
+ }> {
18
+ }
19
+ declare const GlobError_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 & {
20
+ _tag: "GlobError";
21
+ }>;
22
+ export declare class GlobError extends GlobError_base<{
23
+ readonly error: string;
24
+ }> {
25
+ }
26
+ declare const ReadConfigFileError_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 & {
27
+ _tag: "ReadConfigFileError";
28
+ }>;
29
+ export declare class ReadConfigFileError extends ReadConfigFileError_base<{
30
+ readonly filePath: string;
31
+ readonly error: string;
32
+ }> {
33
+ }
34
+ declare const ReadFileError_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 & {
35
+ _tag: "ReadFileError";
36
+ }>;
37
+ export declare class ReadFileError extends ReadFileError_base<{
38
+ readonly filePath: string;
39
+ readonly error: string;
40
+ }> {
41
+ }
42
+ declare const ReadYamlFileError_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 & {
43
+ _tag: "ReadYamlFileError";
44
+ }>;
45
+ export declare class ReadYamlFileError extends ReadYamlFileError_base<{
46
+ readonly filePath: string;
47
+ readonly error: string;
48
+ }> {
49
+ }
50
+ declare const WriteFileError_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 & {
51
+ _tag: "WriteFileError";
52
+ }>;
53
+ export declare class WriteFileError extends WriteFileError_base<{
54
+ readonly filePath: string;
55
+ readonly error: string;
56
+ }> {
57
+ }
58
+ export {};
@@ -0,0 +1,50 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.WriteFileError = exports.ReadYamlFileError = exports.ReadFileError = exports.ReadConfigFileError = exports.GlobError = exports.AskForInputError = exports.AskForChoiceError = exports.EnvTag = void 0;
27
+ const Context = __importStar(require("@effect/data/Context"));
28
+ const Data = __importStar(require("@effect/data/Data"));
29
+ exports.EnvTag = Context.Tag();
30
+ class AskForChoiceError extends Data.TaggedClass('AskForChoiceError') {
31
+ }
32
+ exports.AskForChoiceError = AskForChoiceError;
33
+ class AskForInputError extends Data.TaggedClass('AskForInputError') {
34
+ }
35
+ exports.AskForInputError = AskForInputError;
36
+ class GlobError extends Data.TaggedClass('GlobError') {
37
+ }
38
+ exports.GlobError = GlobError;
39
+ class ReadConfigFileError extends Data.TaggedClass('ReadConfigFileError') {
40
+ }
41
+ exports.ReadConfigFileError = ReadConfigFileError;
42
+ class ReadFileError extends Data.TaggedClass('ReadFileError') {
43
+ }
44
+ exports.ReadFileError = ReadFileError;
45
+ class ReadYamlFileError extends Data.TaggedClass('ReadYamlFileError') {
46
+ }
47
+ exports.ReadYamlFileError = ReadYamlFileError;
48
+ class WriteFileError extends Data.TaggedClass('WriteFileError') {
49
+ }
50
+ exports.WriteFileError = WriteFileError;
@@ -0,0 +1,11 @@
1
+ import * as Effect from '@effect/io/Effect';
2
+ import type { Ctx } from '../get-context';
3
+ import { type Env } from './create-env';
4
+ import type { WriteFileError } from './tags';
5
+ export declare function writeIfChanged(ctx: Ctx): Effect.Effect<Env, WriteFileError, Ctx>;
6
+ type Ending = '\n' | '\r' | '\r\n' | string;
7
+ export declare const newlines: {
8
+ detect(source: string): Ending;
9
+ fix(source: string, lineEnding: Ending): string;
10
+ };
11
+ export {};
@@ -0,0 +1,73 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.newlines = exports.writeIfChanged = void 0;
30
+ const Function_1 = require("@effect/data/Function");
31
+ const Effect = __importStar(require("@effect/io/Effect"));
32
+ const chalk_1 = __importDefault(require("chalk"));
33
+ const os_1 = require("os");
34
+ const get_indent_1 = require("../config/get-indent");
35
+ const constants_1 = require("../constants");
36
+ const tags_1 = require("./tags");
37
+ function writeIfChanged(ctx) {
38
+ return (0, Function_1.pipe)(tags_1.EnvTag, Effect.flatMap((env) => Effect.all(ctx.packageJsonFiles.map((file) => (0, Function_1.pipe)(Effect.Do(), Effect.bind('nextJson', () => toJson(file)), Effect.bind('hasChanged', ({ nextJson }) => Effect.succeed(file.json !== nextJson)), Effect.flatMap(({ hasChanged, nextJson }) => hasChanged
39
+ ? (0, Function_1.pipe)(env.writeFileSync(file.filePath, nextJson), Effect.flatMap(() => Effect.sync(() => {
40
+ console.log((0, chalk_1.default) `{green ${constants_1.ICON.tick}}`, file.shortPath);
41
+ })))
42
+ : Effect.sync(() => {
43
+ console.log(chalk_1.default.dim(constants_1.ICON.skip), chalk_1.default.dim(file.shortPath));
44
+ })))))), Effect.map(() => ctx));
45
+ function toJson(file) {
46
+ const contents = file.contents;
47
+ const indent = (0, get_indent_1.getIndent)(ctx.config);
48
+ const EOL = exports.newlines.detect(file.json);
49
+ const source = `${JSON.stringify(contents, null, indent)}${EOL}`;
50
+ return Effect.succeed(exports.newlines.fix(source, EOL));
51
+ }
52
+ }
53
+ exports.writeIfChanged = writeIfChanged;
54
+ const CR = '\r';
55
+ const CRLF = '\r\n';
56
+ const LF = '\n';
57
+ exports.newlines = {
58
+ detect(source) {
59
+ const cr = source.split(CR).length;
60
+ const lf = source.split(LF).length;
61
+ const crlf = source.split(CRLF).length;
62
+ if (cr + lf === 0)
63
+ return os_1.EOL;
64
+ if (crlf === cr && crlf === lf)
65
+ return CRLF;
66
+ if (cr > lf)
67
+ return CR;
68
+ return LF;
69
+ },
70
+ fix(source, lineEnding) {
71
+ return source.replace(/\r\n|\n|\r/g, lineEnding);
72
+ },
73
+ };
@@ -0,0 +1,19 @@
1
+ import * as Effect from '@effect/io/Effect';
2
+ import type { DeprecatedTypesError } from '../config/get-enabled-types';
3
+ import type { GlobError, ReadConfigFileError, ReadFileError, WriteFileError } from '../env/tags';
4
+ import type { NoSourcesFoundError } from '../get-package-json-files/get-file-paths';
5
+ import type { JsonParseError } from '../get-package-json-files/get-patterns/read-json-safe';
6
+ import type { SemverGroupConfigError } from '../get-semver-groups';
7
+ import type { VersionGroupConfigError } from '../get-version-groups';
8
+ export interface ErrorHandlers<R = Effect.Effect<never, never, void>> {
9
+ DeprecatedTypesError(err: DeprecatedTypesError): R;
10
+ GlobError(err: GlobError): R;
11
+ JsonParseError(err: JsonParseError): R;
12
+ NoSourcesFoundError(err: NoSourcesFoundError): R;
13
+ ReadConfigFileError(err: ReadConfigFileError): R;
14
+ ReadFileError(err: ReadFileError): R;
15
+ SemverGroupConfigError(err: SemverGroupConfigError): R;
16
+ VersionGroupConfigError(err: VersionGroupConfigError): R;
17
+ WriteFileError(err: WriteFileError): R;
18
+ }
19
+ export declare const createErrorHandlers: (errorHandlers: ErrorHandlers<void>) => ErrorHandlers;
@@ -0,0 +1,57 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.createErrorHandlers = void 0;
27
+ const Effect = __importStar(require("@effect/io/Effect"));
28
+ const createErrorHandlers = (errorHandlers) => ({
29
+ DeprecatedTypesError(err) {
30
+ return Effect.sync(() => errorHandlers.DeprecatedTypesError(err));
31
+ },
32
+ GlobError(err) {
33
+ return Effect.sync(() => errorHandlers.GlobError(err));
34
+ },
35
+ JsonParseError(err) {
36
+ return Effect.sync(() => errorHandlers.JsonParseError(err));
37
+ },
38
+ NoSourcesFoundError(err) {
39
+ return Effect.sync(() => errorHandlers.NoSourcesFoundError(err));
40
+ },
41
+ ReadConfigFileError(err) {
42
+ return Effect.sync(() => errorHandlers.ReadConfigFileError(err));
43
+ },
44
+ ReadFileError(err) {
45
+ return Effect.sync(() => errorHandlers.ReadFileError(err));
46
+ },
47
+ SemverGroupConfigError(err) {
48
+ return Effect.sync(() => errorHandlers.SemverGroupConfigError(err));
49
+ },
50
+ VersionGroupConfigError(err) {
51
+ return Effect.sync(() => errorHandlers.VersionGroupConfigError(err));
52
+ },
53
+ WriteFileError(err) {
54
+ return Effect.sync(() => errorHandlers.WriteFileError(err));
55
+ },
56
+ });
57
+ exports.createErrorHandlers = createErrorHandlers;
@@ -0,0 +1,2 @@
1
+ import type { ErrorHandlers } from './create-error-handlers';
2
+ export declare const defaultErrorHandlers: ErrorHandlers<void>;