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,24 +1,50 @@
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
+ };
2
25
  Object.defineProperty(exports, "__esModule", { value: true });
3
26
  exports.IgnoredVersionGroup = void 0;
27
+ const Data = __importStar(require("@effect/data/Data"));
28
+ const Effect = __importStar(require("@effect/io/Effect"));
29
+ const _1 = require(".");
4
30
  const group_by_1 = require("./lib/group-by");
5
- class IgnoredVersionGroup {
31
+ class IgnoredVersionGroup extends Data.TaggedClass('Ignored') {
6
32
  constructor(config) {
7
- this._tag = 'Ignored';
8
- this.config = config;
9
- this.instances = [];
33
+ super({
34
+ config,
35
+ instances: [],
36
+ });
10
37
  }
11
38
  canAdd(_) {
12
39
  return true;
13
40
  }
14
41
  inspect() {
15
42
  const instancesByName = (0, group_by_1.groupBy)('name', this.instances);
16
- return Object.entries(instancesByName).map(([name, instances]) => ({
43
+ return Object.entries(instancesByName).map(([name, instances]) => Effect.succeed(new _1.VersionGroupReport.Ignored({
44
+ name,
17
45
  instances,
18
46
  isValid: true,
19
- name,
20
- status: 'IGNORED',
21
- }));
47
+ })));
22
48
  }
23
49
  }
24
50
  exports.IgnoredVersionGroup = IgnoredVersionGroup;
@@ -1,57 +1,139 @@
1
- import type { Context } from '../get-context';
1
+ import * as Data from '@effect/data/Data';
2
+ import * as Effect from '@effect/io/Effect';
3
+ import type { Union } from 'ts-toolbelt';
4
+ import type { DeprecatedTypesError } from '../config/get-enabled-types';
5
+ import type { Ctx } from '../get-context';
2
6
  import type { Instance } from '../get-package-json-files/instance';
3
7
  import { BannedVersionGroup } from './banned';
4
- import { CatchAllVersionGroup } from './catch-all';
5
8
  import { FilteredOutVersionGroup } from './filtered-out';
6
9
  import { IgnoredVersionGroup } from './ignored';
7
10
  import { PinnedVersionGroup } from './pinned';
11
+ import { SameRangeVersionGroup } from './same-range';
8
12
  import { SnappedToVersionGroup } from './snapped-to';
9
13
  import { StandardVersionGroup } from './standard';
10
- export type AnyVersionGroup = BannedVersionGroup | CatchAllVersionGroup | FilteredOutVersionGroup | IgnoredVersionGroup | PinnedVersionGroup | SnappedToVersionGroup | StandardVersionGroup;
11
- export type VersionGroupReport = {
12
- name: string;
13
- instances: Instance[];
14
- } & ({
15
- status: 'BANNED';
16
- isValid: false;
17
- } | {
18
- status: 'FILTERED_OUT';
19
- isValid: true;
20
- } | {
21
- status: 'HIGHEST_SEMVER_MISMATCH';
22
- isValid: false;
23
- expectedVersion: string;
24
- } | {
25
- status: 'IGNORED';
26
- isValid: true;
27
- } | {
28
- status: 'LOWEST_SEMVER_MISMATCH';
29
- isValid: false;
30
- expectedVersion: string;
31
- } | {
32
- status: 'PINNED_MISMATCH';
33
- isValid: false;
34
- expectedVersion: string;
35
- } | {
36
- status: 'SEMVER_UNSATISFIED';
37
- isValid: false;
38
- } | {
39
- status: 'SNAPPED_TO_MISMATCH';
40
- isValid: false;
41
- expectedVersion: string;
42
- } | {
43
- status: 'UNSUPPORTED_MISMATCH';
44
- isValid: false;
45
- } | {
46
- status: 'VALID';
47
- isValid: true;
48
- } | {
49
- status: 'WORKSPACE_MISMATCH';
50
- isValid: false;
51
- expectedVersion: string;
52
- workspaceInstance: Instance;
53
- } | {
54
- status: 'WORKSPACE_UNSATISFIED';
55
- isValid: false;
56
- });
57
- export declare function getVersionGroups(ctx: Context): AnyVersionGroup[];
14
+ export type AnyVersionGroup = Union.Strict<BannedVersionGroup | FilteredOutVersionGroup | IgnoredVersionGroup | PinnedVersionGroup | SameRangeVersionGroup | SnappedToVersionGroup | StandardVersionGroup>;
15
+ export declare namespace VersionGroupReport {
16
+ const Banned_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 & {
17
+ _tag: "Banned";
18
+ }>;
19
+ export class Banned extends Banned_base<{
20
+ name: string;
21
+ instances: Instance[];
22
+ readonly isValid: false;
23
+ }> {
24
+ }
25
+ const FilteredOut_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 & {
26
+ _tag: "FilteredOut";
27
+ }>;
28
+ export class FilteredOut extends FilteredOut_base<{
29
+ name: string;
30
+ instances: Instance[];
31
+ readonly isValid: true;
32
+ }> {
33
+ }
34
+ const HighestSemverMismatch_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: "HighestSemverMismatch";
36
+ }>;
37
+ export class HighestSemverMismatch extends HighestSemverMismatch_base<{
38
+ name: string;
39
+ instances: Instance[];
40
+ readonly isValid: false;
41
+ readonly expectedVersion: string;
42
+ }> {
43
+ }
44
+ const Ignored_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 & {
45
+ _tag: "Ignored";
46
+ }>;
47
+ export class Ignored extends Ignored_base<{
48
+ name: string;
49
+ instances: Instance[];
50
+ readonly isValid: true;
51
+ }> {
52
+ }
53
+ const LowestSemverMismatch_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 & {
54
+ _tag: "LowestSemverMismatch";
55
+ }>;
56
+ export class LowestSemverMismatch extends LowestSemverMismatch_base<{
57
+ name: string;
58
+ instances: Instance[];
59
+ readonly isValid: false;
60
+ readonly expectedVersion: string;
61
+ }> {
62
+ }
63
+ const PinnedMismatch_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 & {
64
+ _tag: "PinnedMismatch";
65
+ }>;
66
+ export class PinnedMismatch extends PinnedMismatch_base<{
67
+ name: string;
68
+ instances: Instance[];
69
+ readonly isValid: false;
70
+ readonly expectedVersion: string;
71
+ }> {
72
+ }
73
+ const SameRangeMismatch_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 & {
74
+ _tag: "SameRangeMismatch";
75
+ }>;
76
+ export class SameRangeMismatch extends SameRangeMismatch_base<{
77
+ name: string;
78
+ instances: Instance[];
79
+ readonly isValid: false;
80
+ }> {
81
+ }
82
+ const SnappedToMismatch_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 & {
83
+ _tag: "SnappedToMismatch";
84
+ }>;
85
+ export class SnappedToMismatch extends SnappedToMismatch_base<{
86
+ name: string;
87
+ instances: Instance[];
88
+ readonly isValid: false;
89
+ readonly expectedVersion: string;
90
+ readonly snapTo: string[];
91
+ }> {
92
+ }
93
+ const UnsupportedMismatch_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 & {
94
+ _tag: "UnsupportedMismatch";
95
+ }>;
96
+ export class UnsupportedMismatch extends UnsupportedMismatch_base<{
97
+ name: string;
98
+ instances: Instance[];
99
+ readonly isValid: false;
100
+ }> {
101
+ }
102
+ const Valid_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 & {
103
+ _tag: "Valid";
104
+ }>;
105
+ export class Valid extends Valid_base<{
106
+ name: string;
107
+ instances: Instance[];
108
+ readonly isValid: true;
109
+ }> {
110
+ }
111
+ const WorkspaceMismatch_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 & {
112
+ _tag: "WorkspaceMismatch";
113
+ }>;
114
+ export class WorkspaceMismatch extends WorkspaceMismatch_base<{
115
+ name: string;
116
+ instances: Instance[];
117
+ readonly isValid: false;
118
+ readonly expectedVersion: string;
119
+ readonly workspaceInstance: Instance;
120
+ }> {
121
+ }
122
+ export type ValidCases = Union.Strict<FilteredOut | Ignored | Valid>;
123
+ export type InvalidCases = Union.Strict<Banned | HighestSemverMismatch | LowestSemverMismatch | PinnedMismatch | SameRangeMismatch | SnappedToMismatch | UnsupportedMismatch | WorkspaceMismatch>;
124
+ export type FixableCases = Union.Strict<HighestSemverMismatch | LowestSemverMismatch | PinnedMismatch | SnappedToMismatch | WorkspaceMismatch>;
125
+ export type UnfixableCases = Union.Strict<SameRangeMismatch | UnsupportedMismatch | WorkspaceMismatch>;
126
+ export type HighLowSemverMismatch = VersionGroupReport.HighestSemverMismatch | VersionGroupReport.LowestSemverMismatch;
127
+ export type Any = Union.Strict<ValidCases | InvalidCases>;
128
+ export {};
129
+ }
130
+ declare const VersionGroupConfigError_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 & {
131
+ _tag: "VersionGroupConfigError";
132
+ }>;
133
+ export declare class VersionGroupConfigError extends VersionGroupConfigError_base<{
134
+ readonly config: unknown;
135
+ readonly error: string;
136
+ }> {
137
+ }
138
+ export declare function getVersionGroups(ctx: Ctx): Effect.Effect<never, VersionGroupConfigError | DeprecatedTypesError, AnyVersionGroup[]>;
139
+ export {};
@@ -1,119 +1,198 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
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;
4
24
  };
5
25
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getVersionGroups = void 0;
7
- const minimatch_1 = __importDefault(require("minimatch"));
26
+ exports.getVersionGroups = exports.VersionGroupConfigError = exports.VersionGroupReport = 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"));
8
30
  const is_array_of_strings_1 = require("tightrope/guard/is-array-of-strings");
9
31
  const is_non_empty_array_1 = require("tightrope/guard/is-non-empty-array");
10
32
  const is_non_empty_string_1 = require("tightrope/guard/is-non-empty-string");
11
33
  const is_object_1 = require("tightrope/guard/is-object");
12
34
  const get_enabled_types_1 = require("../config/get-enabled-types");
35
+ const can_add_to_group_1 = require("../guards/can-add-to-group");
36
+ const sort_by_name_1 = require("../lib/sort-by-name");
13
37
  const banned_1 = require("./banned");
14
- const catch_all_1 = require("./catch-all");
15
38
  const filtered_out_1 = require("./filtered-out");
16
39
  const ignored_1 = require("./ignored");
17
40
  const pinned_1 = require("./pinned");
41
+ const same_range_1 = require("./same-range");
18
42
  const snapped_to_1 = require("./snapped-to");
19
43
  const standard_1 = require("./standard");
44
+ var VersionGroupReport;
45
+ (function (VersionGroupReport) {
46
+ class Banned extends Data.TaggedClass('Banned') {
47
+ }
48
+ VersionGroupReport.Banned = Banned;
49
+ class FilteredOut extends Data.TaggedClass('FilteredOut') {
50
+ }
51
+ VersionGroupReport.FilteredOut = FilteredOut;
52
+ class HighestSemverMismatch extends Data.TaggedClass('HighestSemverMismatch') {
53
+ }
54
+ VersionGroupReport.HighestSemverMismatch = HighestSemverMismatch;
55
+ class Ignored extends Data.TaggedClass('Ignored') {
56
+ }
57
+ VersionGroupReport.Ignored = Ignored;
58
+ class LowestSemverMismatch extends Data.TaggedClass('LowestSemverMismatch') {
59
+ }
60
+ VersionGroupReport.LowestSemverMismatch = LowestSemverMismatch;
61
+ class PinnedMismatch extends Data.TaggedClass('PinnedMismatch') {
62
+ }
63
+ VersionGroupReport.PinnedMismatch = PinnedMismatch;
64
+ class SameRangeMismatch extends Data.TaggedClass('SameRangeMismatch') {
65
+ }
66
+ VersionGroupReport.SameRangeMismatch = SameRangeMismatch;
67
+ class SnappedToMismatch extends Data.TaggedClass('SnappedToMismatch') {
68
+ }
69
+ VersionGroupReport.SnappedToMismatch = SnappedToMismatch;
70
+ class UnsupportedMismatch extends Data.TaggedClass('UnsupportedMismatch') {
71
+ }
72
+ VersionGroupReport.UnsupportedMismatch = UnsupportedMismatch;
73
+ class Valid extends Data.TaggedClass('Valid') {
74
+ }
75
+ VersionGroupReport.Valid = Valid;
76
+ class WorkspaceMismatch extends Data.TaggedClass('WorkspaceMismatch') {
77
+ }
78
+ VersionGroupReport.WorkspaceMismatch = WorkspaceMismatch;
79
+ })(VersionGroupReport || (exports.VersionGroupReport = VersionGroupReport = {}));
80
+ class VersionGroupConfigError extends Data.TaggedClass('VersionGroupConfigError') {
81
+ }
82
+ exports.VersionGroupConfigError = VersionGroupConfigError;
20
83
  function getVersionGroups(ctx) {
21
- const enabledTypes = (0, get_enabled_types_1.getEnabledTypes)(ctx.config);
22
- const versionGroups = createVersionGroups(ctx);
23
- ctx.packageJsonFiles.forEach((file) => {
24
- file.getInstances(enabledTypes).forEach((instance) => {
25
- const { name, pkgName } = instance;
26
- for (const group of versionGroups) {
27
- const { dependencies, dependencyTypes, packages } = group.config;
28
- if (group.canAdd(instance) &&
29
- (!(0, is_non_empty_array_1.isNonEmptyArray)(dependencyTypes) ||
30
- dependencyTypes.includes(instance.strategy.name)) &&
31
- (!(0, is_non_empty_array_1.isNonEmptyArray)(packages) ||
32
- packages.some((pattern) => (0, minimatch_1.default)(instance.pkgName, pattern))) &&
33
- (!(0, is_non_empty_array_1.isNonEmptyArray)(dependencies) ||
34
- dependencies.some((pattern) => (0, minimatch_1.default)(instance.name, pattern)))) {
35
- group.instances.push(instance);
36
- return;
84
+ return (0, Function_1.pipe)(Effect.Do(), Effect.bind('enabledTypes', () => (0, get_enabled_types_1.getEnabledTypes)(ctx.config)), Effect.bind('versionGroups', () => createVersionGroups(ctx)), Effect.flatMap(({ enabledTypes, versionGroups }) => {
85
+ for (const file of ctx.packageJsonFiles) {
86
+ instances: for (const instance of file.getInstances(enabledTypes)) {
87
+ for (const group of versionGroups) {
88
+ if ((0, can_add_to_group_1.canAddToGroup)(group, instance)) {
89
+ group.instances.push(instance);
90
+ continue instances;
91
+ }
37
92
  }
38
93
  }
39
- throw new Error(`${name} in ${pkgName} did not match any version groups`);
40
- });
41
- });
42
- return versionGroups.filter((group) => (0, is_non_empty_array_1.isNonEmptyArray)(group.instances));
94
+ }
95
+ return Effect.succeed(versionGroups.filter((group) => (0, is_non_empty_array_1.isNonEmptyArray)(group.instances.sort(sort_by_name_1.sortByName))));
96
+ }));
43
97
  }
44
98
  exports.getVersionGroups = getVersionGroups;
45
99
  function createVersionGroups(ctx) {
46
100
  const { rcFile } = ctx.config;
47
- const versionGroups = [new filtered_out_1.FilteredOutVersionGroup(ctx)];
101
+ const versionGroups = [
102
+ Effect.succeed(new filtered_out_1.FilteredOutVersionGroup(ctx)),
103
+ ];
48
104
  if ((0, is_non_empty_array_1.isNonEmptyArray)(rcFile.versionGroups)) {
49
- const ERR_OBJ = new Error('Invalid versionGroup');
50
- const ERR_DEPS = new Error('Invalid versionGroup dependencies');
51
- const ERR_PKGS = new Error('Invalid versionGroup packages');
52
105
  rcFile.versionGroups.forEach((config) => {
53
- if (!(0, is_object_1.isObject)(config))
54
- throw ERR_OBJ;
55
- if (!(0, is_array_of_strings_1.isArrayOfStrings)(config.dependencies))
56
- throw ERR_DEPS;
57
- if (!(0, is_array_of_strings_1.isArrayOfStrings)(config.packages))
58
- throw ERR_PKGS;
106
+ if (!(0, is_object_1.isObject)(config)) {
107
+ return versionGroups.push(Effect.fail(new VersionGroupConfigError({
108
+ config,
109
+ error: 'config is not an object',
110
+ })));
111
+ }
112
+ if (!(0, is_array_of_strings_1.isArrayOfStrings)(config.dependencies)) {
113
+ return versionGroups.push(Effect.fail(new VersionGroupConfigError({
114
+ config,
115
+ error: 'config.dependencies is not an array of strings',
116
+ })));
117
+ }
118
+ if (!(0, is_array_of_strings_1.isArrayOfStrings)(config.packages)) {
119
+ return versionGroups.push(Effect.fail(new VersionGroupConfigError({
120
+ config,
121
+ error: 'config.packages is not an array of strings',
122
+ })));
123
+ }
124
+ const mutuallyExclusiveProps = ['isBanned', 'isIgnored', 'pinVersion', 'snapTo', 'policy'].filter((prop) => Boolean(config[prop]));
125
+ if (mutuallyExclusiveProps.length > 1) {
126
+ return versionGroups.push(Effect.fail(new VersionGroupConfigError({
127
+ config,
128
+ error: `it's unclear what kind of version group you want, as it contains both ${mutuallyExclusiveProps.join(' and ')}`,
129
+ })));
130
+ }
59
131
  const { dependencies, packages } = config;
60
132
  const label = (0, is_non_empty_string_1.isNonEmptyString)(config.label) ? config.label : '';
61
133
  const dependencyTypes = (0, is_array_of_strings_1.isArrayOfStrings)(config.dependencyTypes)
62
134
  ? config.dependencyTypes
63
135
  : [];
64
136
  if (config.isBanned === true) {
65
- versionGroups.push(new banned_1.BannedVersionGroup({
137
+ versionGroups.push(Effect.succeed(new banned_1.BannedVersionGroup({
66
138
  dependencies,
67
139
  dependencyTypes,
68
140
  isBanned: true,
69
141
  label,
70
142
  packages,
71
- }));
143
+ })));
72
144
  }
73
145
  else if (config.isIgnored === true) {
74
- versionGroups.push(new ignored_1.IgnoredVersionGroup({
146
+ versionGroups.push(Effect.succeed(new ignored_1.IgnoredVersionGroup({
75
147
  dependencies,
76
148
  dependencyTypes,
77
149
  isIgnored: true,
78
150
  label,
79
151
  packages,
80
- }));
152
+ })));
81
153
  }
82
154
  else if ((0, is_non_empty_string_1.isNonEmptyString)(config.pinVersion)) {
83
- versionGroups.push(new pinned_1.PinnedVersionGroup({
155
+ versionGroups.push(Effect.succeed(new pinned_1.PinnedVersionGroup({
84
156
  dependencies,
85
157
  dependencyTypes,
86
158
  label,
87
159
  packages,
88
160
  pinVersion: config.pinVersion,
89
- }));
161
+ })));
90
162
  }
91
163
  else if ((0, is_array_of_strings_1.isArrayOfStrings)(config.snapTo)) {
92
- versionGroups.push(new snapped_to_1.SnappedToVersionGroup({
164
+ versionGroups.push(Effect.succeed(new snapped_to_1.SnappedToVersionGroup({
93
165
  dependencies,
94
166
  dependencyTypes,
95
167
  label,
96
168
  packages,
97
169
  snapTo: config.snapTo,
98
- }));
170
+ })));
171
+ }
172
+ else if (config.policy === 'sameRange') {
173
+ versionGroups.push(Effect.succeed(new same_range_1.SameRangeVersionGroup({
174
+ dependencies,
175
+ dependencyTypes,
176
+ label,
177
+ packages,
178
+ policy: config.policy,
179
+ })));
99
180
  }
100
181
  else {
101
- versionGroups.push(new standard_1.StandardVersionGroup({
182
+ versionGroups.push(Effect.succeed(new standard_1.StandardVersionGroup(false, {
102
183
  dependencies,
103
184
  dependencyTypes,
104
185
  label,
105
186
  packages,
106
- preferVersion: config.preferVersion === 'lowestSemver'
107
- ? 'lowestSemver'
108
- : 'highestSemver',
109
- }));
187
+ preferVersion: config.preferVersion === 'lowestSemver' ? 'lowestSemver' : 'highestSemver',
188
+ })));
110
189
  }
111
190
  });
112
191
  }
113
- versionGroups.push(new catch_all_1.CatchAllVersionGroup({
192
+ versionGroups.push(Effect.succeed(new standard_1.StandardVersionGroup(true, {
114
193
  dependencies: ['**'],
115
194
  packages: ['**'],
116
195
  preferVersion: 'highestSemver',
117
- }));
118
- return versionGroups;
196
+ })));
197
+ return Effect.all(versionGroups);
119
198
  }
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getHighestVersion = void 0;
4
- const pipe_1 = require("tightrope/fn/pipe");
4
+ const Function_1 = require("@effect/data/Function");
5
5
  const is_non_empty_string_1 = require("tightrope/guard/is-non-empty-string");
6
6
  const filter_1 = require("tightrope/result/filter");
7
7
  const from_try_1 = require("tightrope/result/from-try");
8
8
  const map_1 = require("tightrope/result/map");
9
9
  const sort_1 = require("./sort");
10
10
  function getHighestVersion(versions) {
11
- return (0, pipe_1.pipe)((0, from_try_1.fromTry)(() => [...versions].sort(sort_1.compareSemver)), (0, map_1.map)((sorted) => sorted[sorted.length - 1]), (0, filter_1.filter)(is_non_empty_string_1.isNonEmptyString, 'getHighestVersion(): did not return a version'));
11
+ return (0, Function_1.pipe)((0, from_try_1.fromTry)(() => [...versions].sort(sort_1.compareSemver)), (0, map_1.map)((sorted) => sorted[sorted.length - 1]), (0, filter_1.filter)(is_non_empty_string_1.isNonEmptyString, 'getHighestVersion(): did not return a version'));
12
12
  }
13
13
  exports.getHighestVersion = getHighestVersion;
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getLowestVersion = void 0;
4
- const pipe_1 = require("tightrope/fn/pipe");
4
+ const Function_1 = require("@effect/data/Function");
5
5
  const is_non_empty_string_1 = require("tightrope/guard/is-non-empty-string");
6
6
  const filter_1 = require("tightrope/result/filter");
7
7
  const from_try_1 = require("tightrope/result/from-try");
8
8
  const map_1 = require("tightrope/result/map");
9
9
  const sort_1 = require("./sort");
10
10
  function getLowestVersion(versions) {
11
- return (0, pipe_1.pipe)((0, from_try_1.fromTry)(() => [...versions].sort(sort_1.compareSemver)), (0, map_1.map)(([lowest]) => lowest), (0, filter_1.filter)(is_non_empty_string_1.isNonEmptyString, 'getLowestVersion(): did not return a version'));
11
+ return (0, Function_1.pipe)((0, from_try_1.fromTry)(() => [...versions].sort(sort_1.compareSemver)), (0, map_1.map)(([lowest]) => lowest), (0, filter_1.filter)(is_non_empty_string_1.isNonEmptyString, 'getLowestVersion(): did not return a version'));
12
12
  }
13
13
  exports.getLowestVersion = getLowestVersion;
@@ -16,9 +16,7 @@ const scoresByRange = {
16
16
  };
17
17
  /** Rank a Semver Range according to its greediness */
18
18
  function getRangeScore(version) {
19
- const range = version.indexOf('.x') !== -1
20
- ? constants_1.RANGE.LOOSE
21
- : version.slice(0, version.search(/[0-9]/));
19
+ const range = version.indexOf('.x') !== -1 ? constants_1.RANGE.LOOSE : version.slice(0, version.search(/[0-9]/));
22
20
  return scoresByRange[range] || 0;
23
21
  }
24
22
  exports.getRangeScore = getRangeScore;
@@ -6,16 +6,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.compareSemver = void 0;
7
7
  const gt_1 = __importDefault(require("semver/functions/gt"));
8
8
  const lt_1 = __importDefault(require("semver/functions/lt"));
9
- const is_semver_1 = require("../../lib/is-semver");
9
+ const is_supported_1 = require("../../guards/is-supported");
10
10
  const clean_1 = require("./clean");
11
11
  const get_range_score_1 = require("./get-range-score");
12
12
  const EQ = 0;
13
13
  const LT = -1;
14
14
  const GT = 1;
15
15
  function compareSemver(a, b) {
16
- if (!(0, is_semver_1.isSupported)(a))
16
+ if (!(0, is_supported_1.isSupported)(a))
17
17
  throw new Error(`"${a}" is not supported`);
18
- if (!(0, is_semver_1.isSupported)(b))
18
+ if (!(0, is_supported_1.isSupported)(b))
19
19
  throw new Error(`"${b}" is not supported`);
20
20
  if (a.startsWith('workspace:'))
21
21
  return LT;
@@ -1,11 +1,17 @@
1
- import type { VersionGroupReport } from '.';
1
+ import * as Data from '@effect/data/Data';
2
+ import * as Effect from '@effect/io/Effect';
3
+ import { VersionGroupReport } from '.';
2
4
  import type { VersionGroupConfig } from '../config/types';
3
5
  import type { Instance } from '../get-package-json-files/instance';
4
- export declare class PinnedVersionGroup {
5
- _tag: string;
6
+ declare const PinnedVersionGroup_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: "Pinned";
8
+ }>;
9
+ export declare class PinnedVersionGroup extends PinnedVersionGroup_base<{
6
10
  config: VersionGroupConfig.Pinned;
7
11
  instances: Instance[];
12
+ }> {
8
13
  constructor(config: VersionGroupConfig.Pinned);
9
14
  canAdd(_: Instance): boolean;
10
- inspect(): VersionGroupReport[];
15
+ inspect(): Effect.Effect<never, VersionGroupReport.PinnedMismatch, VersionGroupReport.Valid>[];
11
16
  }
17
+ export {};