syncpack 10.2.0 → 10.6.1

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 (180) hide show
  1. package/dist/bin-fix-mismatches/effects.d.ts +2 -0
  2. package/dist/bin-fix-mismatches/effects.js +112 -0
  3. package/dist/bin-fix-mismatches/fix-mismatches.d.ts +4 -2
  4. package/dist/bin-fix-mismatches/fix-mismatches.js +38 -50
  5. package/dist/bin-fix-mismatches/index.js +28 -4
  6. package/dist/bin-format/format-cli.d.ts +4 -3
  7. package/dist/bin-format/format-cli.js +35 -4
  8. package/dist/bin-format/format.d.ts +3 -2
  9. package/dist/bin-format/format.js +25 -1
  10. package/dist/bin-format/index.js +27 -3
  11. package/dist/bin-lint/index.js +28 -4
  12. package/dist/bin-lint/lint.d.ts +4 -0
  13. package/dist/bin-lint/lint.js +44 -0
  14. package/dist/bin-lint-semver-ranges/effects.d.ts +2 -0
  15. package/dist/bin-lint-semver-ranges/effects.js +70 -0
  16. package/dist/bin-lint-semver-ranges/index.js +28 -4
  17. package/dist/bin-lint-semver-ranges/lint-semver-ranges.d.ts +4 -2
  18. package/dist/bin-lint-semver-ranges/lint-semver-ranges.js +14 -39
  19. package/dist/bin-list/effects.d.ts +2 -0
  20. package/dist/bin-list/effects.js +112 -0
  21. package/dist/bin-list/index.js +28 -4
  22. package/dist/bin-list/list.d.ts +4 -2
  23. package/dist/bin-list/list.js +14 -72
  24. package/dist/bin-list-mismatches/effects.d.ts +2 -0
  25. package/dist/bin-list-mismatches/effects.js +136 -0
  26. package/dist/bin-list-mismatches/index.js +28 -4
  27. package/dist/bin-list-mismatches/list-mismatches.d.ts +4 -2
  28. package/dist/bin-list-mismatches/list-mismatches.js +14 -82
  29. package/dist/bin-prompt/effects.d.ts +2 -0
  30. package/dist/bin-prompt/effects.js +110 -0
  31. package/dist/bin-prompt/index.d.ts +2 -0
  32. package/dist/bin-prompt/index.js +80 -0
  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.js +3 -0
  41. package/dist/config/get-custom-types.d.ts +2 -2
  42. package/dist/config/get-enabled-types.d.ts +12 -2
  43. package/dist/config/get-enabled-types.js +38 -4
  44. package/dist/config/get-filter.d.ts +2 -2
  45. package/dist/config/get-indent.d.ts +2 -2
  46. package/dist/config/get-semver-range.d.ts +2 -2
  47. package/dist/config/get-semver-range.js +4 -4
  48. package/dist/config/get-sort-az.d.ts +2 -2
  49. package/dist/config/get-sort-az.js +1 -0
  50. package/dist/config/get-sort-first.d.ts +2 -2
  51. package/dist/config/get-source.d.ts +2 -2
  52. package/dist/config/get-source.js +1 -2
  53. package/dist/config/types.d.ts +15 -7
  54. package/dist/config/types.js +26 -0
  55. package/dist/constants.d.ts +1 -1
  56. package/dist/constants.js +1 -1
  57. package/dist/create-program/effects.d.ts +42 -0
  58. package/dist/create-program/effects.js +2 -0
  59. package/dist/create-program/semver-ranges.d.ts +7 -0
  60. package/dist/create-program/semver-ranges.js +43 -0
  61. package/dist/create-program/versions.d.ts +7 -0
  62. package/dist/create-program/versions.js +48 -0
  63. package/dist/env/create-env.d.ts +21 -0
  64. package/dist/env/create-env.js +60 -0
  65. package/dist/env/default-env.d.ts +18 -0
  66. package/dist/env/default-env.js +95 -0
  67. package/dist/env/exit-if-invalid.d.ts +4 -0
  68. package/dist/env/exit-if-invalid.js +34 -0
  69. package/dist/env/tags.d.ts +58 -0
  70. package/dist/env/tags.js +50 -0
  71. package/dist/env/write-if-changed.d.ts +11 -0
  72. package/dist/env/write-if-changed.js +73 -0
  73. package/dist/error-handlers/create-error-handlers.d.ts +19 -0
  74. package/dist/error-handlers/create-error-handlers.js +57 -0
  75. package/dist/error-handlers/default-error-handlers.d.ts +2 -0
  76. package/dist/error-handlers/default-error-handlers.js +57 -0
  77. package/dist/get-context/index.d.ts +11 -8
  78. package/dist/get-context/index.js +31 -9
  79. package/dist/get-package-json-files/get-file-paths.d.ts +17 -8
  80. package/dist/get-package-json-files/get-file-paths.js +40 -20
  81. package/dist/get-package-json-files/get-patterns/get-lerna-patterns.d.ts +4 -3
  82. package/dist/get-package-json-files/get-patterns/get-lerna-patterns.js +31 -8
  83. package/dist/get-package-json-files/get-patterns/get-pnpm-patterns.d.ts +4 -3
  84. package/dist/get-package-json-files/get-patterns/get-pnpm-patterns.js +36 -14
  85. package/dist/get-package-json-files/get-patterns/get-yarn-patterns.d.ts +4 -3
  86. package/dist/get-package-json-files/get-patterns/get-yarn-patterns.js +37 -9
  87. package/dist/get-package-json-files/get-patterns/index.d.ts +4 -4
  88. package/dist/get-package-json-files/get-patterns/index.js +37 -18
  89. package/dist/get-package-json-files/get-patterns/read-json-safe.d.ts +15 -3
  90. package/dist/get-package-json-files/get-patterns/read-json-safe.js +36 -10
  91. package/dist/get-package-json-files/index.d.ts +7 -4
  92. package/dist/get-package-json-files/index.js +27 -9
  93. package/dist/get-package-json-files/instance.js +2 -2
  94. package/dist/get-package-json-files/package-json-file.d.ts +6 -10
  95. package/dist/get-package-json-files/package-json-file.js +5 -21
  96. package/dist/get-semver-groups/filtered-out.d.ts +12 -6
  97. package/dist/get-semver-groups/filtered-out.js +40 -14
  98. package/dist/get-semver-groups/ignored.d.ts +10 -4
  99. package/dist/get-semver-groups/ignored.js +34 -8
  100. package/dist/get-semver-groups/index.d.ts +80 -28
  101. package/dist/get-semver-groups/index.js +93 -44
  102. package/dist/get-semver-groups/with-range.d.ts +12 -5
  103. package/dist/get-semver-groups/with-range.js +49 -25
  104. package/dist/get-version-groups/banned.d.ts +10 -4
  105. package/dist/get-version-groups/banned.js +34 -8
  106. package/dist/get-version-groups/filtered-out.d.ts +12 -6
  107. package/dist/get-version-groups/filtered-out.js +40 -14
  108. package/dist/get-version-groups/ignored.d.ts +10 -4
  109. package/dist/get-version-groups/ignored.js +34 -8
  110. package/dist/get-version-groups/index.d.ts +132 -50
  111. package/dist/get-version-groups/index.js +130 -51
  112. package/dist/get-version-groups/lib/get-highest-version.js +2 -2
  113. package/dist/get-version-groups/lib/get-lowest-version.js +2 -2
  114. package/dist/get-version-groups/lib/get-range-score.js +1 -3
  115. package/dist/get-version-groups/lib/sort.js +3 -3
  116. package/dist/get-version-groups/pinned.d.ts +10 -4
  117. package/dist/get-version-groups/pinned.js +39 -16
  118. package/dist/get-version-groups/same-range.d.ts +17 -0
  119. package/dist/get-version-groups/same-range.js +70 -0
  120. package/dist/get-version-groups/snapped-to.d.ts +10 -4
  121. package/dist/get-version-groups/snapped-to.js +41 -16
  122. package/dist/get-version-groups/standard.d.ts +12 -5
  123. package/dist/get-version-groups/standard.js +63 -39
  124. package/dist/guards/can-add-to-group.d.ts +4 -0
  125. package/dist/guards/can-add-to-group.js +15 -0
  126. package/dist/guards/is-loose-semver.d.ts +1 -0
  127. package/dist/guards/is-loose-semver.js +9 -0
  128. package/dist/guards/is-semver.d.ts +1 -0
  129. package/dist/guards/is-semver.js +16 -0
  130. package/dist/guards/is-supported.d.ts +1 -0
  131. package/dist/guards/is-supported.js +17 -0
  132. package/dist/guards/is-valid-semver-range.d.ts +2 -0
  133. package/dist/guards/is-valid-semver-range.js +17 -0
  134. package/dist/lib/$R.js +2 -2
  135. package/dist/lib/log-group-header.d.ts +6 -0
  136. package/dist/lib/log-group-header.js +34 -0
  137. package/dist/lib/log-verbose.d.ts +1 -0
  138. package/dist/lib/log-verbose.js +24 -0
  139. package/dist/lib/set-semver-range.js +5 -5
  140. package/dist/lib/split-name-and-version.d.ts +5 -0
  141. package/dist/lib/split-name-and-version.js +12 -0
  142. package/dist/option.js +1 -4
  143. package/dist/strategy/lib/get-non-empty-string-prop.js +2 -2
  144. package/dist/strategy/name-and-version-props.js +5 -5
  145. package/dist/strategy/named-version-string.js +5 -5
  146. package/dist/strategy/unnamed-version-string.js +4 -4
  147. package/dist/strategy/versions-by-name.js +3 -3
  148. package/package.json +28 -17
  149. package/dist/bin-fix-mismatches/fix-mismatches-cli.d.ts +0 -3
  150. package/dist/bin-fix-mismatches/fix-mismatches-cli.js +0 -12
  151. package/dist/bin-lint/lint-cli.d.ts +0 -3
  152. package/dist/bin-lint/lint-cli.js +0 -12
  153. package/dist/bin-lint-semver-ranges/lint-semver-ranges-cli.d.ts +0 -3
  154. package/dist/bin-lint-semver-ranges/lint-semver-ranges-cli.js +0 -11
  155. package/dist/bin-list/list-cli.d.ts +0 -3
  156. package/dist/bin-list/list-cli.js +0 -11
  157. package/dist/bin-list-mismatches/list-mismatches-cli.d.ts +0 -3
  158. package/dist/bin-list-mismatches/list-mismatches-cli.js +0 -11
  159. package/dist/bin-set-semver-ranges/set-semver-ranges-cli.d.ts +0 -3
  160. package/dist/bin-set-semver-ranges/set-semver-ranges-cli.js +0 -11
  161. package/dist/get-package-json-files/get-patterns/read-yaml-safe.d.ts +0 -3
  162. package/dist/get-package-json-files/get-patterns/read-yaml-safe.js +0 -12
  163. package/dist/get-semver-groups/catch-all.d.ts +0 -4
  164. package/dist/get-semver-groups/catch-all.js +0 -11
  165. package/dist/get-version-groups/catch-all.d.ts +0 -4
  166. package/dist/get-version-groups/catch-all.js +0 -11
  167. package/dist/lib/disk.d.ts +0 -14
  168. package/dist/lib/disk.js +0 -68
  169. package/dist/lib/exit-if-invalid.d.ts +0 -2
  170. package/dist/lib/exit-if-invalid.js +0 -10
  171. package/dist/lib/is-semver.d.ts +0 -6
  172. package/dist/lib/is-semver.js +0 -49
  173. package/dist/lib/log.d.ts +0 -5
  174. package/dist/lib/log.js +0 -51
  175. package/dist/lib/newlines.d.ts +0 -6
  176. package/dist/lib/newlines.js +0 -24
  177. package/dist/lib/print-strings.d.ts +0 -1
  178. package/dist/lib/print-strings.js +0 -7
  179. package/dist/lib/write-if-changed.d.ts +0 -2
  180. package/dist/lib/write-if-changed.js +0 -21
@@ -1,15 +1,39 @@
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
+ };
3
26
  var __importDefault = (this && this.__importDefault) || function (mod) {
4
27
  return (mod && mod.__esModule) ? mod : { "default": mod };
5
28
  };
6
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
+ const Effect = __importStar(require("@effect/io/Effect"));
7
31
  const chalk_1 = __importDefault(require("chalk"));
8
32
  const commander_1 = require("commander");
9
- const disk_1 = require("../lib/disk");
33
+ const default_env_1 = require("../env/default-env");
10
34
  const show_help_on_error_1 = require("../lib/show-help-on-error");
11
35
  const option_1 = require("../option");
12
- const lint_semver_ranges_cli_1 = require("./lint-semver-ranges-cli");
36
+ const lint_semver_ranges_1 = require("./lint-semver-ranges");
13
37
  commander_1.program.description((0, chalk_1.default) `
14
38
  Check dependency versions within {yellow dependencies}, {yellow devDependencies},
15
39
  {yellow peerDependencies}, {yellow overrides}, and {yellow resolutions} follow a consistent format.`.replace(/^\n/, ''));
@@ -63,10 +87,10 @@ commander_1.program
63
87
  .option(...option_1.option.config)
64
88
  .option(...option_1.option.types)
65
89
  .parse(process.argv);
66
- (0, lint_semver_ranges_cli_1.lintSemverRangesCli)({
90
+ Effect.runSync((0, lint_semver_ranges_1.lintSemverRanges)({
67
91
  configPath: commander_1.program.opts().config,
68
92
  filter: commander_1.program.opts().filter,
69
93
  semverRange: commander_1.program.opts().semverRange,
70
94
  source: commander_1.program.opts().source,
71
95
  types: commander_1.program.opts().types,
72
- }, disk_1.disk);
96
+ }, default_env_1.defaultEnv));
@@ -1,2 +1,4 @@
1
- import type { Context } from '../get-context';
2
- export declare function lintSemverRanges(ctx: Context): Context;
1
+ import * as Effect from '@effect/io/Effect';
2
+ import { type CliConfig } from '../config/types';
3
+ import type { DefaultEnv } from '../env/default-env';
4
+ export declare function lintSemverRanges(cli: Partial<CliConfig>, env: DefaultEnv): Effect.Effect<never, never, void | import("../get-context").Ctx>;
@@ -22,46 +22,21 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
25
  Object.defineProperty(exports, "__esModule", { value: true });
29
26
  exports.lintSemverRanges = void 0;
30
- const chalk_1 = __importDefault(require("chalk"));
31
- const is_non_empty_array_1 = require("tightrope/guard/is-non-empty-array");
32
- const constants_1 = require("../constants");
33
- const get_semver_groups_1 = require("../get-semver-groups");
34
- const log = __importStar(require("../lib/log"));
35
- const sort_by_name_1 = require("../lib/sort-by-name");
36
- function lintSemverRanges(ctx) {
37
- const semverGroups = (0, get_semver_groups_1.getSemverGroups)(ctx);
38
- const hasUserGroups = (0, is_non_empty_array_1.isNonEmptyArray)(ctx.config.rcFile.semverGroups);
39
- semverGroups.forEach((semverGroup, i) => {
40
- semverGroup
41
- .inspect()
42
- .sort(sort_by_name_1.sortByName)
43
- .forEach((report, ii) => {
44
- // Allow eg. CLI to exit with the correct status code.
45
- if (!report.isValid)
46
- ctx.isInvalid = true;
47
- switch (report.status) {
48
- case 'WORKSPACE_SEMVER_RANGE_MISMATCH':
49
- case 'SEMVER_RANGE_MISMATCH': {
50
- // Annotate each group
51
- if (ii === 0 && hasUserGroups)
52
- log.semverGroupHeader(semverGroup, i);
53
- console.log((0, chalk_1.default) `{red %s} %s {red %s} %s {green %s} {dim in %s of %s}`, constants_1.ICON.cross, report.name, report.instance.version, constants_1.ICON.rightArrow, report.expectedVersion, report.instance.strategy.path, report.instance.packageJsonFile.shortPath);
54
- break;
55
- }
56
- case 'IGNORED':
57
- case 'UNSUPPORTED_VERSION':
58
- case 'VALID': {
59
- // no action needed
60
- break;
61
- }
62
- }
63
- });
64
- });
65
- return ctx;
27
+ const Context = __importStar(require("@effect/data/Context"));
28
+ const Function_1 = require("@effect/data/Function");
29
+ const Effect = __importStar(require("@effect/io/Effect"));
30
+ const types_1 = require("../config/types");
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 create_error_handlers_1 = require("../error-handlers/create-error-handlers");
36
+ const default_error_handlers_1 = require("../error-handlers/default-error-handlers");
37
+ const get_context_1 = require("../get-context");
38
+ const effects_1 = require("./effects");
39
+ function lintSemverRanges(cli, env) {
40
+ return (0, Function_1.pipe)((0, get_context_1.getContext)(), Effect.flatMap((ctx) => (0, semver_ranges_1.createSemverRangesProgram)(ctx, effects_1.lintSemverRangesEffects)), 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(types_1.CliConfigTag, cli), Context.add(tags_1.EnvTag, (0, create_env_1.createEnv)(env)))));
66
41
  }
67
42
  exports.lintSemverRanges = lintSemverRanges;
@@ -0,0 +1,2 @@
1
+ import type { VersionEffects } from '../create-program/effects';
2
+ export declare const listEffects: VersionEffects;
@@ -0,0 +1,112 @@
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.listEffects = 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 uniq_1 = require("tightrope/array/uniq");
34
+ const constants_1 = require("../constants");
35
+ const get_unique_versions_1 = require("../get-version-groups/lib/get-unique-versions");
36
+ const is_supported_1 = require("../guards/is-supported");
37
+ const log_group_header_1 = require("../lib/log-group-header");
38
+ exports.listEffects = {
39
+ FilteredOut() {
40
+ return Effect.unit();
41
+ },
42
+ Ignored(input) {
43
+ return Effect.sync(() => (0, Function_1.pipe)(input, logHeader, logIgnored));
44
+ },
45
+ Valid(input) {
46
+ return Effect.sync(() => (0, Function_1.pipe)(input, logHeader, logValid));
47
+ },
48
+ Banned(input) {
49
+ return Effect.sync(() => (0, Function_1.pipe)(input, logHeader, logBanned));
50
+ },
51
+ HighestSemverMismatch(input) {
52
+ return Effect.sync(() => (0, Function_1.pipe)(input, logHeader, logFixableMismatch));
53
+ },
54
+ LowestSemverMismatch(input) {
55
+ return Effect.sync(() => (0, Function_1.pipe)(input, logHeader, logFixableMismatch));
56
+ },
57
+ PinnedMismatch(input) {
58
+ return Effect.sync(() => (0, Function_1.pipe)(input, logHeader, logFixableMismatch));
59
+ },
60
+ SameRangeMismatch(input) {
61
+ return Effect.sync(() => (0, Function_1.pipe)(input, logHeader, logUnfixableMismatch));
62
+ },
63
+ SnappedToMismatch(input) {
64
+ return Effect.sync(() => (0, Function_1.pipe)(input, logHeader, logFixableMismatch));
65
+ },
66
+ UnsupportedMismatch(input) {
67
+ return Effect.sync(() => (0, Function_1.pipe)(input, logHeader, logUnfixableMismatch));
68
+ },
69
+ WorkspaceMismatch(input) {
70
+ return Effect.sync(() => (0, Function_1.pipe)(input, logHeader, logFixableMismatch));
71
+ },
72
+ TearDown() {
73
+ return Effect.unit();
74
+ },
75
+ };
76
+ function logHeader(input) {
77
+ if (input.index === 0) {
78
+ log_group_header_1.logGroupHeader.versionGroup(input.group, input.index);
79
+ }
80
+ return input;
81
+ }
82
+ function logFixableMismatch({ report, ctx }) {
83
+ ctx.isInvalid = true;
84
+ console.log((0, chalk_1.default) `{red %s %s} %s`, constants_1.ICON.cross, report.name, listColouredVersions(report.expectedVersion, report.instances));
85
+ }
86
+ function logUnfixableMismatch({ report, ctx, }) {
87
+ ctx.isInvalid = true;
88
+ console.log((0, chalk_1.default) `{red %s %s} %s`, constants_1.ICON.cross, report.name, (0, get_unique_versions_1.getUniqueVersions)(report.instances)
89
+ .map((version) => ((0, is_supported_1.isSupported)(version) ? chalk_1.default.red(version) : chalk_1.default.yellow(version)))
90
+ .join(chalk_1.default.dim(', ')));
91
+ }
92
+ function logBanned({ report, ctx }) {
93
+ ctx.isInvalid = true;
94
+ console.log((0, chalk_1.default) `{red %s %s} {dim.red is banned in this version group}`, constants_1.ICON.cross, report.name);
95
+ }
96
+ function logIgnored({ report }) {
97
+ console.log((0, chalk_1.default) `{dim -} {dim %s} {white is ignored in this version group}`, report.name);
98
+ }
99
+ function logValid({ report }) {
100
+ console.log((0, chalk_1.default) `{dim -} {white %s} {dim %s}`, report.name, report.instances?.[0]?.version);
101
+ }
102
+ function listColouredVersions(pinVersion, instances) {
103
+ return getAllVersions(pinVersion, instances)
104
+ .map((version) => withColour(pinVersion, version))
105
+ .join(chalk_1.default.dim(', '));
106
+ }
107
+ function withColour(pinVersion, version) {
108
+ return version === pinVersion ? chalk_1.default.green(version) : chalk_1.default.red(version);
109
+ }
110
+ function getAllVersions(pinVersion, instances) {
111
+ return (0, uniq_1.uniq)([pinVersion].concat(instances.map((i) => i.version)));
112
+ }
@@ -1,15 +1,39 @@
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
+ };
3
26
  var __importDefault = (this && this.__importDefault) || function (mod) {
4
27
  return (mod && mod.__esModule) ? mod : { "default": mod };
5
28
  };
6
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
+ const Effect = __importStar(require("@effect/io/Effect"));
7
31
  const chalk_1 = __importDefault(require("chalk"));
8
32
  const commander_1 = require("commander");
9
- const disk_1 = require("../lib/disk");
33
+ const default_env_1 = require("../env/default-env");
10
34
  const show_help_on_error_1 = require("../lib/show-help-on-error");
11
35
  const option_1 = require("../option");
12
- const list_cli_1 = require("./list-cli");
36
+ const list_1 = require("./list");
13
37
  commander_1.program.description(' List all dependencies required by your packages.');
14
38
  commander_1.program.on('--help', () => {
15
39
  console.log((0, chalk_1.default) `
@@ -48,9 +72,9 @@ commander_1.program
48
72
  .option(...option_1.option.config)
49
73
  .option(...option_1.option.types)
50
74
  .parse(process.argv);
51
- (0, list_cli_1.listCli)({
75
+ Effect.runSync((0, list_1.list)({
52
76
  configPath: commander_1.program.opts().config,
53
77
  filter: commander_1.program.opts().filter,
54
78
  source: commander_1.program.opts().source,
55
79
  types: commander_1.program.opts().types,
56
- }, disk_1.disk);
80
+ }, default_env_1.defaultEnv));
@@ -1,2 +1,4 @@
1
- import type { Context } from '../get-context';
2
- export declare function list(ctx: Context): Context;
1
+ import * as Effect from '@effect/io/Effect';
2
+ import { type CliConfig } from '../config/types';
3
+ import type { DefaultEnv } from '../env/default-env';
4
+ export declare function list(cli: Partial<CliConfig>, env: DefaultEnv): Effect.Effect<never, never, void | import("../get-context").Ctx>;
@@ -22,79 +22,21 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
25
  Object.defineProperty(exports, "__esModule", { value: true });
29
26
  exports.list = void 0;
30
- const chalk_1 = __importDefault(require("chalk"));
31
- const uniq_1 = require("tightrope/array/uniq");
32
- const is_non_empty_array_1 = require("tightrope/guard/is-non-empty-array");
33
- const constants_1 = require("../constants");
34
- const get_version_groups_1 = require("../get-version-groups");
35
- const log = __importStar(require("../lib/log"));
36
- const sort_by_name_1 = require("../lib/sort-by-name");
37
- function list(ctx) {
38
- const versionGroups = (0, get_version_groups_1.getVersionGroups)(ctx);
39
- const hasUserGroups = (0, is_non_empty_array_1.isNonEmptyArray)(ctx.config.rcFile.versionGroups);
40
- versionGroups.forEach((versionGroup, i) => {
41
- // Annotate each group
42
- hasUserGroups && log.versionGroupHeader(versionGroup, i);
43
- versionGroup
44
- .inspect()
45
- .sort(sort_by_name_1.sortByName)
46
- .forEach((report) => {
47
- // Allow eg. CLI to exit with the correct status code.
48
- if (!report.isValid)
49
- ctx.isInvalid = true;
50
- switch (report.status) {
51
- case 'HIGHEST_SEMVER_MISMATCH':
52
- case 'LOWEST_SEMVER_MISMATCH':
53
- case 'PINNED_MISMATCH':
54
- case 'SNAPPED_TO_MISMATCH':
55
- case 'WORKSPACE_MISMATCH': {
56
- console.log((0, chalk_1.default) `{red %s %s} %s`, constants_1.ICON.cross, report.name, listColouredVersions(report.expectedVersion, report.instances));
57
- break;
58
- }
59
- case 'BANNED': {
60
- console.log((0, chalk_1.default) `{red %s %s} {dim.red is banned in this version group}`, constants_1.ICON.cross, report.name);
61
- break;
62
- }
63
- // ignored completely
64
- case 'FILTERED_OUT':
65
- break;
66
- case 'IGNORED': {
67
- console.log((0, chalk_1.default) `{dim -} {dim %s} {white is ignored in this version group}`, report.name);
68
- break;
69
- }
70
- case 'VALID': {
71
- console.log((0, chalk_1.default) `{dim -} {white %s} {dim %s}`, report.name, report.instances?.[0]?.version);
72
- break;
73
- }
74
- case 'UNSUPPORTED_MISMATCH': {
75
- console.log((0, chalk_1.default) `{red %s %s} %s`, constants_1.ICON.cross, report.name, report.instances
76
- .map((instance) => chalk_1.default.red(instance.version))
77
- .join(chalk_1.default.dim(', ')));
78
- break;
79
- }
80
- // @TODO case 'SEMVER_UNSATISFIED': break;
81
- // @TODO case 'WORKSPACE_UNSATISFIED': break;
82
- }
83
- function listColouredVersions(pinVersion, instances) {
84
- return getAllVersions(pinVersion, instances)
85
- .map((version) => withColour(pinVersion, version))
86
- .join(chalk_1.default.dim(', '));
87
- }
88
- function withColour(pinVersion, version) {
89
- return version === pinVersion
90
- ? chalk_1.default.green(version)
91
- : chalk_1.default.red(version);
92
- }
93
- function getAllVersions(pinVersion, instances) {
94
- return (0, uniq_1.uniq)([pinVersion].concat(instances.map((i) => i.version)));
95
- }
96
- });
97
- });
98
- return ctx;
27
+ const Context = __importStar(require("@effect/data/Context"));
28
+ const Function_1 = require("@effect/data/Function");
29
+ const Effect = __importStar(require("@effect/io/Effect"));
30
+ const types_1 = require("../config/types");
31
+ const versions_1 = require("../create-program/versions");
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 create_error_handlers_1 = require("../error-handlers/create-error-handlers");
36
+ const default_error_handlers_1 = require("../error-handlers/default-error-handlers");
37
+ const get_context_1 = require("../get-context");
38
+ const effects_1 = require("./effects");
39
+ function list(cli, env) {
40
+ return (0, Function_1.pipe)((0, get_context_1.getContext)(), Effect.flatMap((ctx) => (0, versions_1.createVersionsProgram)(ctx, effects_1.listEffects)), 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(types_1.CliConfigTag, cli), Context.add(tags_1.EnvTag, (0, create_env_1.createEnv)(env)))));
99
41
  }
100
42
  exports.list = list;
@@ -0,0 +1,2 @@
1
+ import type { VersionEffects } from '../create-program/effects';
2
+ export declare const listMismatchesEffects: VersionEffects;
@@ -0,0 +1,136 @@
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.listMismatchesEffects = 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 constants_1 = require("../constants");
35
+ const log_group_header_1 = require("../lib/log-group-header");
36
+ exports.listMismatchesEffects = {
37
+ FilteredOut() {
38
+ return Effect.unit();
39
+ },
40
+ Ignored() {
41
+ return Effect.unit();
42
+ },
43
+ Valid() {
44
+ return Effect.unit();
45
+ },
46
+ Banned(input) {
47
+ return Effect.sync(() => (0, Function_1.pipe)(input, logHeader, logBanned));
48
+ },
49
+ HighestSemverMismatch(input) {
50
+ return Effect.sync(() => (0, Function_1.pipe)(input, logHeader, logHighLowSemverMismatch));
51
+ },
52
+ LowestSemverMismatch(input) {
53
+ return Effect.sync(() => (0, Function_1.pipe)(input, logHeader, logHighLowSemverMismatch));
54
+ },
55
+ PinnedMismatch(input) {
56
+ return Effect.sync(() => (0, Function_1.pipe)(input, logHeader, logPinnedMismatch));
57
+ },
58
+ SameRangeMismatch(input) {
59
+ return Effect.sync(() => (0, Function_1.pipe)(input, logHeader, logSameRangeMismatch));
60
+ },
61
+ SnappedToMismatch(input) {
62
+ return Effect.sync(() => (0, Function_1.pipe)(input, logHeader, logSnappedToMismatch));
63
+ },
64
+ UnsupportedMismatch(input) {
65
+ return Effect.sync(() => (0, Function_1.pipe)(input, logHeader, logUnsupportedMismatch));
66
+ },
67
+ WorkspaceMismatch(input) {
68
+ return Effect.sync(() => (0, Function_1.pipe)(input, logHeader, logWorkspaceMismatch));
69
+ },
70
+ TearDown() {
71
+ return Effect.unit();
72
+ },
73
+ };
74
+ function logHeader(input) {
75
+ if (input.index === 0) {
76
+ log_group_header_1.logGroupHeader.versionGroup(input.group, input.index);
77
+ }
78
+ return input;
79
+ }
80
+ function logBanned({ report, ctx }) {
81
+ ctx.isInvalid = true;
82
+ console.log((0, chalk_1.default) ` {red %s} %s {dim is banned in this version group}`, constants_1.ICON.cross, report.name);
83
+ report.instances.forEach((instance) => {
84
+ console.log((0, chalk_1.default) ` {red %s} {dim in %s of %s}`, instance.version, instance.strategy.path, instance.packageJsonFile.shortPath);
85
+ });
86
+ }
87
+ function logHighLowSemverMismatch({ report, ctx, }) {
88
+ ctx.isInvalid = true;
89
+ console.log((0, chalk_1.default) `{red %s} %s {green %s} {dim is the %s valid semver version in use}`, constants_1.ICON.cross, report.name, report.expectedVersion, report._tag === 'LowestSemverMismatch' ? 'lowest' : 'highest');
90
+ report.instances.forEach((instance) => {
91
+ if (instance.version !== report.expectedVersion) {
92
+ console.log((0, chalk_1.default) ` {red %s} {dim in %s of %s}`, instance.version, instance.strategy.path, instance.packageJsonFile.shortPath);
93
+ }
94
+ });
95
+ }
96
+ function logPinnedMismatch({ report, ctx }) {
97
+ ctx.isInvalid = true;
98
+ console.log((0, chalk_1.default) `{red %s} %s {dim is pinned in this version group at} {green %s}`, constants_1.ICON.cross, report.name, report.expectedVersion);
99
+ report.instances.forEach((instance) => {
100
+ if (instance.version !== report.expectedVersion) {
101
+ console.log((0, chalk_1.default) ` {red %s} {dim in %s of %s}`, instance.version, instance.strategy.path, instance.packageJsonFile.shortPath);
102
+ }
103
+ });
104
+ }
105
+ function logSnappedToMismatch({ report, ctx }) {
106
+ ctx.isInvalid = true;
107
+ console.log((0, chalk_1.default) `{red %s} %s {dim should snap to {reset.green %s}, used by %s}`, constants_1.ICON.cross, report.name, report.expectedVersion, report.snapTo.join(' || '));
108
+ report.instances.forEach((instance) => {
109
+ if (instance.version !== report.expectedVersion) {
110
+ console.log((0, chalk_1.default) ` {red %s} {dim in %s of %s}`, instance.version, instance.strategy.path, instance.packageJsonFile.shortPath);
111
+ }
112
+ });
113
+ }
114
+ function logSameRangeMismatch({ report, ctx }) {
115
+ ctx.isInvalid = true;
116
+ console.log((0, chalk_1.default) `{yellow %s %s} {dim has mismatched versions under the "sameRange" policy which syncpack cannot auto fix}%s`, constants_1.ICON.panic, report.name, (0, chalk_1.default) `${os_1.EOL} use {blue syncpack prompt} to fix manually`);
117
+ report.instances.forEach((instance) => {
118
+ console.log((0, chalk_1.default) ` {yellow %s} {dim in %s of %s}`, instance.version, instance.strategy.path, instance.packageJsonFile.shortPath);
119
+ });
120
+ }
121
+ function logUnsupportedMismatch({ report, ctx }) {
122
+ ctx.isInvalid = true;
123
+ console.log((0, chalk_1.default) `{yellow %s %s} {dim has mismatched unsupported versions which syncpack cannot auto fix}%s`, constants_1.ICON.panic, report.name, (0, chalk_1.default) `${os_1.EOL} use {blue syncpack prompt} to fix manually`);
124
+ report.instances.forEach((instance) => {
125
+ console.log((0, chalk_1.default) ` {yellow %s} {dim in %s of %s}`, instance.version, instance.strategy.path, instance.packageJsonFile.shortPath);
126
+ });
127
+ }
128
+ function logWorkspaceMismatch({ report, ctx }) {
129
+ ctx.isInvalid = true;
130
+ console.log((0, chalk_1.default) `{red %s} %s {green %s} {dim is developed in this repo at %s}`, constants_1.ICON.cross, report.name, report.expectedVersion, report.workspaceInstance.packageJsonFile.shortPath);
131
+ report.instances.forEach((instance) => {
132
+ if (instance.version !== report.expectedVersion) {
133
+ console.log((0, chalk_1.default) ` {red %s} {dim in %s of %s}`, instance.version, instance.strategy.path, instance.packageJsonFile.shortPath);
134
+ }
135
+ });
136
+ }
@@ -1,15 +1,39 @@
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
+ };
3
26
  var __importDefault = (this && this.__importDefault) || function (mod) {
4
27
  return (mod && mod.__esModule) ? mod : { "default": mod };
5
28
  };
6
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
+ const Effect = __importStar(require("@effect/io/Effect"));
7
31
  const chalk_1 = __importDefault(require("chalk"));
8
32
  const commander_1 = require("commander");
9
- const disk_1 = require("../lib/disk");
33
+ const default_env_1 = require("../env/default-env");
10
34
  const show_help_on_error_1 = require("../lib/show-help-on-error");
11
35
  const option_1 = require("../option");
12
- const list_mismatches_cli_1 = require("./list-mismatches-cli");
36
+ const list_mismatches_1 = require("./list-mismatches");
13
37
  commander_1.program.description(`
14
38
  List dependencies which are required by multiple packages, where the version
15
39
  is not the same across every package.`.replace(/^\n/, ''));
@@ -50,9 +74,9 @@ commander_1.program
50
74
  .option(...option_1.option.config)
51
75
  .option(...option_1.option.types)
52
76
  .parse(process.argv);
53
- (0, list_mismatches_cli_1.listMismatchesCli)({
77
+ Effect.runSync((0, list_mismatches_1.listMismatches)({
54
78
  configPath: commander_1.program.opts().config,
55
79
  filter: commander_1.program.opts().filter,
56
80
  source: commander_1.program.opts().source,
57
81
  types: commander_1.program.opts().types,
58
- }, disk_1.disk);
82
+ }, default_env_1.defaultEnv));
@@ -1,2 +1,4 @@
1
- import type { Context } from '../get-context';
2
- export declare function listMismatches(ctx: Context): Context;
1
+ import * as Effect from '@effect/io/Effect';
2
+ import { type CliConfig } from '../config/types';
3
+ import type { DefaultEnv } from '../env/default-env';
4
+ export declare function listMismatches(cli: Partial<CliConfig>, env: DefaultEnv): Effect.Effect<never, never, void | import("../get-context").Ctx>;