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
@@ -1,18 +1,36 @@
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.getPackageJsonFiles = void 0;
4
- const flow_1 = require("tightrope/fn/flow");
5
- const pipe_1 = require("tightrope/fn/pipe");
6
- const result_1 = require("tightrope/result");
7
- const and_then_1 = require("tightrope/result/and-then");
8
- const map_1 = require("tightrope/result/map");
9
- const or_1 = require("tightrope/result/or");
10
- const _R_1 = require("../lib/$R");
27
+ const Function_1 = require("@effect/data/Function");
28
+ const Effect = __importStar(require("@effect/io/Effect"));
11
29
  const get_file_paths_1 = require("./get-file-paths");
12
30
  const read_json_safe_1 = require("./get-patterns/read-json-safe");
13
31
  const package_json_file_1 = require("./package-json-file");
14
32
  /** Create an API for every package.json file needed. */
15
- function getPackageJsonFiles(disk, config) {
16
- return (0, pipe_1.pipe)((0, get_file_paths_1.getFilePaths)(disk, config), (0, and_then_1.andThen)(_R_1.$R.onlyOk((0, flow_1.flow)((0, read_json_safe_1.readJsonSafe)(disk), (0, map_1.map)((jsonFile) => new package_json_file_1.PackageJsonFile(jsonFile, config, disk)), _R_1.$R.tapErrVerbose))), (0, or_1.or)(new result_1.Ok([])));
33
+ function getPackageJsonFiles(config) {
34
+ return (0, Function_1.pipe)((0, get_file_paths_1.getFilePaths)(config), Effect.flatMap((paths) => Effect.all(paths.map((read_json_safe_1.readJsonSafe)))), Effect.map((files) => files.map((file) => new package_json_file_1.PackageJsonFile(file, config))));
17
35
  }
18
36
  exports.getPackageJsonFiles = getPackageJsonFiles;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Instance = void 0;
4
- const pipe_1 = require("tightrope/fn/pipe");
4
+ const Function_1 = require("@effect/data/Function");
5
5
  const _R_1 = require("../lib/$R");
6
6
  class Instance {
7
7
  constructor(strategy, name, packageJsonFile, version) {
@@ -17,7 +17,7 @@ class Instance {
17
17
  */
18
18
  setVersion(version) {
19
19
  const file = this.packageJsonFile;
20
- (0, pipe_1.pipe)(this.strategy.write(file, [this.name, version]), _R_1.$R.tapErrVerbose);
20
+ (0, Function_1.pipe)(this.strategy.write(file, [this.name, version]), _R_1.$R.tapErrVerbose);
21
21
  }
22
22
  }
23
23
  exports.Instance = Instance;
@@ -1,6 +1,5 @@
1
1
  import type { Strategy } from '../config/get-custom-types';
2
- import type { Context } from '../get-context';
3
- import type { Disk } from '../lib/disk';
2
+ import type { Ctx } from '../get-context';
4
3
  import type { JsonFile } from './get-patterns/read-json-safe';
5
4
  import { Instance } from './instance';
6
5
  export interface PackageJson {
@@ -25,25 +24,22 @@ export interface PackageJson {
25
24
  resolutions?: Record<string, string>;
26
25
  scripts?: Record<string, string>;
27
26
  version?: string;
28
- workspaces?: Record<string, string[]> | string[];
27
+ workspaces?: string[] | {
28
+ packages?: string[];
29
+ };
29
30
  [otherProps: string]: Record<string, string | string[] | Record<string, string | string[]>> | string | string[] | undefined;
30
31
  }
31
32
  export declare class PackageJsonFile {
32
33
  /** parsed JSON contents of the file */
33
34
  contents: PackageJson;
34
- /** api for writing to disk */
35
- readonly disk: Disk;
36
35
  /** absolute path on disk to this file */
37
36
  readonly filePath: string;
38
37
  /** raw file contents of the file */
39
38
  readonly json: string;
40
39
  /** resolved configuration */
41
- readonly config: Context['config'];
40
+ readonly config: Ctx['config'];
42
41
  /** relative path on disk to this file */
43
42
  readonly shortPath: string;
44
- constructor(jsonFile: JsonFile<PackageJson>, config: Context['config'], disk: Disk);
45
- hasChanged(): boolean;
46
- write(): void;
47
- getSource(): string;
43
+ constructor(jsonFile: JsonFile<PackageJson>, config: Ctx['config']);
48
44
  getInstances(enabledTypes: Strategy.Any[]): Instance[];
49
45
  }
@@ -1,41 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PackageJsonFile = void 0;
4
+ const Function_1 = require("@effect/data/Function");
4
5
  const path_1 = require("path");
5
- const pipe_1 = require("tightrope/fn/pipe");
6
6
  const map_1 = require("tightrope/result/map");
7
- const get_indent_1 = require("../config/get-indent");
8
7
  const constants_1 = require("../constants");
9
- const log_1 = require("../lib/log");
10
- const newlines_1 = require("../lib/newlines");
8
+ const log_verbose_1 = require("../lib/log-verbose");
11
9
  const instance_1 = require("./instance");
12
10
  class PackageJsonFile {
13
- constructor(jsonFile, config, disk) {
11
+ constructor(jsonFile, config) {
14
12
  this.config = config;
15
13
  this.contents = jsonFile.contents;
16
- this.disk = disk;
17
14
  this.filePath = jsonFile.filePath;
18
15
  this.json = jsonFile.json;
19
16
  this.shortPath = (0, path_1.relative)(constants_1.CWD, jsonFile.filePath);
20
17
  }
21
- hasChanged() {
22
- return this.json !== this.getSource();
23
- }
24
- write() {
25
- this.disk.writeFileSync(this.filePath, this.getSource());
26
- }
27
- getSource() {
28
- const contents = this.contents;
29
- const indent = (0, get_indent_1.getIndent)(this.config);
30
- const EOL = newlines_1.newlines.detect(this.json);
31
- const source = `${JSON.stringify(contents, null, indent)}${EOL}`;
32
- return newlines_1.newlines.fix(source, EOL);
33
- }
34
18
  getInstances(enabledTypes) {
35
19
  const instances = [];
36
20
  enabledTypes.forEach((strategy) => {
37
- (0, pipe_1.pipe)(strategy.read(this), (0, map_1.map)((entries) => entries.forEach(([name, version]) => {
38
- (0, log_1.verbose)(`add ${name}@${version} to ${strategy.name}:${strategy._tag} ${this.shortPath}`);
21
+ (0, Function_1.pipe)(strategy.read(this), (0, map_1.map)((entries) => entries.forEach(([name, version]) => {
22
+ (0, log_verbose_1.logVerbose)(`add ${name}@${version} to ${strategy.name}:${strategy._tag} ${this.shortPath}`);
39
23
  instances.push(new instance_1.Instance(strategy, name, this, version));
40
24
  })));
41
25
  });
@@ -1,13 +1,19 @@
1
- import type { SemverGroupReport } from '.';
1
+ import * as Data from '@effect/data/Data';
2
+ import * as Effect from '@effect/io/Effect';
3
+ import { SemverGroupReport } from '.';
2
4
  import type { GroupConfig } from '../config/types';
3
- import type { Context } from '../get-context';
5
+ import type { Ctx } from '../get-context';
4
6
  import type { Instance } from '../get-package-json-files/instance';
5
- export declare class FilteredOutSemverGroup {
6
- _tag: string;
7
+ declare const FilteredOutSemverGroup_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 & {
8
+ _tag: "FilteredOut";
9
+ }>;
10
+ export declare class FilteredOutSemverGroup extends FilteredOutSemverGroup_base<{
7
11
  config: GroupConfig;
8
12
  filter: string;
9
13
  instances: Instance[];
10
- constructor(ctx: Context);
14
+ }> {
15
+ constructor(ctx: Ctx);
11
16
  canAdd(instance: Instance): boolean;
12
- inspect(): SemverGroupReport[];
17
+ inspect(): Effect.Effect<never, never, SemverGroupReport.FilteredOut>[];
13
18
  }
19
+ export {};
@@ -1,29 +1,55 @@
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.FilteredOutSemverGroup = 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 get_filter_1 = require("../config/get-filter");
5
- class FilteredOutSemverGroup {
31
+ class FilteredOutSemverGroup extends Data.TaggedClass('FilteredOut') {
6
32
  constructor(ctx) {
7
- this._tag = 'FilteredOut';
8
- this.config = {
9
- dependencies: ['**'],
10
- dependencyTypes: [],
11
- label: 'Filtered out',
12
- packages: ['**'],
13
- };
14
- this.filter = (0, get_filter_1.getFilter)(ctx.config);
15
- this.instances = [];
33
+ super({
34
+ config: {
35
+ dependencies: ['**'],
36
+ dependencyTypes: [],
37
+ label: 'Filtered out',
38
+ packages: ['**'],
39
+ },
40
+ filter: (0, get_filter_1.getFilter)(ctx.config),
41
+ instances: [],
42
+ });
16
43
  }
17
44
  canAdd(instance) {
18
45
  return instance.name.search(new RegExp(this.filter)) === -1;
19
46
  }
20
47
  inspect() {
21
- return this.instances.map((instance) => ({
22
- status: 'FILTERED_OUT',
48
+ return this.instances.map((instance) => Effect.succeed(new _1.SemverGroupReport.FilteredOut({
49
+ name: instance.name,
23
50
  instance,
24
51
  isValid: true,
25
- name: instance.name,
26
- }));
52
+ })));
27
53
  }
28
54
  }
29
55
  exports.FilteredOutSemverGroup = FilteredOutSemverGroup;
@@ -1,11 +1,17 @@
1
- import type { SemverGroupReport } from '.';
1
+ import * as Data from '@effect/data/Data';
2
+ import * as Effect from '@effect/io/Effect';
3
+ import { SemverGroupReport } from '.';
2
4
  import type { SemverGroupConfig } from '../config/types';
3
5
  import type { Instance } from '../get-package-json-files/instance';
4
- export declare class IgnoredSemverGroup {
5
- _tag: string;
6
+ declare const IgnoredSemverGroup_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: "Ignored";
8
+ }>;
9
+ export declare class IgnoredSemverGroup extends IgnoredSemverGroup_base<{
6
10
  config: SemverGroupConfig.Ignored;
7
11
  instances: Instance[];
12
+ }> {
8
13
  constructor(config: SemverGroupConfig.Ignored);
9
14
  canAdd(_: Instance): boolean;
10
- inspect(): SemverGroupReport[];
15
+ inspect(): Effect.Effect<never, never, SemverGroupReport.Ignored>[];
11
16
  }
17
+ export {};
@@ -1,22 +1,48 @@
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.IgnoredSemverGroup = void 0;
4
- class IgnoredSemverGroup {
27
+ const Data = __importStar(require("@effect/data/Data"));
28
+ const Effect = __importStar(require("@effect/io/Effect"));
29
+ const _1 = require(".");
30
+ class IgnoredSemverGroup extends Data.TaggedClass('Ignored') {
5
31
  constructor(config) {
6
- this._tag = 'Ignored';
7
- this.config = config;
8
- this.instances = [];
32
+ super({
33
+ config,
34
+ instances: [],
35
+ });
9
36
  }
10
37
  canAdd(_) {
11
38
  return true;
12
39
  }
13
40
  inspect() {
14
- return this.instances.map((instance) => ({
15
- status: 'IGNORED',
41
+ return this.instances.map((instance) => Effect.succeed(new _1.SemverGroupReport.Ignored({
42
+ name: instance.name,
16
43
  instance,
17
44
  isValid: true,
18
- name: instance.name,
19
- }));
45
+ })));
20
46
  }
21
47
  }
22
48
  exports.IgnoredSemverGroup = IgnoredSemverGroup;
@@ -1,32 +1,84 @@
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
- import { CatchAllSemverGroup } from './catch-all';
4
7
  import { FilteredOutSemverGroup } from './filtered-out';
5
8
  import { IgnoredSemverGroup } from './ignored';
6
9
  import { WithRangeSemverGroup } from './with-range';
7
- export type AnySemverGroup = CatchAllSemverGroup | FilteredOutSemverGroup | IgnoredSemverGroup | WithRangeSemverGroup;
8
- export type SemverGroupReport = {
9
- name: string;
10
- instance: Instance;
11
- } & ({
12
- status: 'FILTERED_OUT';
13
- isValid: true;
14
- } | {
15
- status: 'IGNORED';
16
- isValid: true;
17
- } | {
18
- status: 'VALID';
19
- isValid: true;
20
- } | {
21
- status: 'WORKSPACE_SEMVER_RANGE_MISMATCH';
22
- isValid: false;
23
- expectedVersion: string;
24
- } | {
25
- status: 'SEMVER_RANGE_MISMATCH';
26
- isValid: false;
27
- expectedVersion: string;
28
- } | {
29
- status: 'UNSUPPORTED_VERSION';
30
- isValid: false;
31
- });
32
- export declare function getSemverGroups(ctx: Context): AnySemverGroup[];
10
+ export type AnySemverGroup = Union.Strict<FilteredOutSemverGroup | IgnoredSemverGroup | WithRangeSemverGroup>;
11
+ export declare namespace SemverGroupReport {
12
+ 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 & {
13
+ _tag: "FilteredOut";
14
+ }>;
15
+ export class FilteredOut extends FilteredOut_base<{
16
+ name: string;
17
+ instance: Instance;
18
+ readonly isValid: true;
19
+ }> {
20
+ }
21
+ 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 & {
22
+ _tag: "Ignored";
23
+ }>;
24
+ export class Ignored extends Ignored_base<{
25
+ name: string;
26
+ instance: Instance;
27
+ readonly isValid: true;
28
+ }> {
29
+ }
30
+ 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 & {
31
+ _tag: "Valid";
32
+ }>;
33
+ export class Valid extends Valid_base<{
34
+ name: string;
35
+ instance: Instance;
36
+ readonly isValid: true;
37
+ }> {
38
+ }
39
+ const WorkspaceSemverRangeMismatch_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 & {
40
+ _tag: "WorkspaceSemverRangeMismatch";
41
+ }>;
42
+ export class WorkspaceSemverRangeMismatch extends WorkspaceSemverRangeMismatch_base<{
43
+ name: string;
44
+ instance: Instance;
45
+ readonly isValid: false;
46
+ readonly expectedVersion: string;
47
+ }> {
48
+ }
49
+ const SemverRangeMismatch_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 & {
50
+ _tag: "SemverRangeMismatch";
51
+ }>;
52
+ export class SemverRangeMismatch extends SemverRangeMismatch_base<{
53
+ name: string;
54
+ instance: Instance;
55
+ readonly isValid: false;
56
+ readonly expectedVersion: string;
57
+ }> {
58
+ }
59
+ const UnsupportedVersion_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 & {
60
+ _tag: "UnsupportedVersion";
61
+ }>;
62
+ export class UnsupportedVersion extends UnsupportedVersion_base<{
63
+ name: string;
64
+ instance: Instance;
65
+ readonly isValid: false;
66
+ }> {
67
+ }
68
+ export type ValidCases = Union.Strict<FilteredOut | Ignored | Valid>;
69
+ export type InvalidCases = Union.Strict<SemverRangeMismatch | UnsupportedVersion | WorkspaceSemverRangeMismatch>;
70
+ export type FixableCases = Union.Strict<SemverRangeMismatch | WorkspaceSemverRangeMismatch>;
71
+ export type UnfixableCases = Union.Strict<UnsupportedVersion>;
72
+ export type Any = Union.Strict<ValidCases | InvalidCases>;
73
+ export {};
74
+ }
75
+ declare const SemverGroupConfigError_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 & {
76
+ _tag: "SemverGroupConfigError";
77
+ }>;
78
+ export declare class SemverGroupConfigError extends SemverGroupConfigError_base<{
79
+ readonly config: unknown;
80
+ readonly error: string;
81
+ }> {
82
+ }
83
+ export declare function getSemverGroups(ctx: Ctx): Effect.Effect<never, SemverGroupConfigError | DeprecatedTypesError, AnySemverGroup[]>;
84
+ export {};
@@ -1,87 +1,139 @@
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
- exports.getSemverGroups = void 0;
4
- const minimatch_1 = require("minimatch");
26
+ exports.getSemverGroups = exports.SemverGroupConfigError = exports.SemverGroupReport = 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"));
5
30
  const is_array_of_strings_1 = require("tightrope/guard/is-array-of-strings");
6
31
  const is_non_empty_array_1 = require("tightrope/guard/is-non-empty-array");
7
32
  const is_non_empty_string_1 = require("tightrope/guard/is-non-empty-string");
8
33
  const is_object_1 = require("tightrope/guard/is-object");
9
34
  const get_enabled_types_1 = require("../config/get-enabled-types");
10
35
  const get_semver_range_1 = require("../config/get-semver-range");
11
- const is_semver_1 = require("../lib/is-semver");
12
- const catch_all_1 = require("./catch-all");
36
+ const can_add_to_group_1 = require("../guards/can-add-to-group");
37
+ const is_valid_semver_range_1 = require("../guards/is-valid-semver-range");
38
+ const sort_by_name_1 = require("../lib/sort-by-name");
13
39
  const filtered_out_1 = require("./filtered-out");
14
40
  const ignored_1 = require("./ignored");
15
41
  const with_range_1 = require("./with-range");
42
+ var SemverGroupReport;
43
+ (function (SemverGroupReport) {
44
+ class FilteredOut extends Data.TaggedClass('FilteredOut') {
45
+ }
46
+ SemverGroupReport.FilteredOut = FilteredOut;
47
+ class Ignored extends Data.TaggedClass('Ignored') {
48
+ }
49
+ SemverGroupReport.Ignored = Ignored;
50
+ class Valid extends Data.TaggedClass('Valid') {
51
+ }
52
+ SemverGroupReport.Valid = Valid;
53
+ class WorkspaceSemverRangeMismatch extends Data.TaggedClass('WorkspaceSemverRangeMismatch') {
54
+ }
55
+ SemverGroupReport.WorkspaceSemverRangeMismatch = WorkspaceSemverRangeMismatch;
56
+ class SemverRangeMismatch extends Data.TaggedClass('SemverRangeMismatch') {
57
+ }
58
+ SemverGroupReport.SemverRangeMismatch = SemverRangeMismatch;
59
+ class UnsupportedVersion extends Data.TaggedClass('UnsupportedVersion') {
60
+ }
61
+ SemverGroupReport.UnsupportedVersion = UnsupportedVersion;
62
+ })(SemverGroupReport || (exports.SemverGroupReport = SemverGroupReport = {}));
63
+ class SemverGroupConfigError extends Data.TaggedClass('SemverGroupConfigError') {
64
+ }
65
+ exports.SemverGroupConfigError = SemverGroupConfigError;
16
66
  function getSemverGroups(ctx) {
17
- const enabledTypes = (0, get_enabled_types_1.getEnabledTypes)(ctx.config);
18
- const semverGroups = createSemverGroups(ctx);
19
- ctx.packageJsonFiles.forEach((file) => {
20
- file.getInstances(enabledTypes).forEach((instance) => {
21
- const { name, pkgName } = instance;
22
- for (const group of semverGroups) {
23
- const { dependencies, dependencyTypes, packages } = group.config;
24
- if (group.canAdd(instance) &&
25
- (!(0, is_non_empty_array_1.isNonEmptyArray)(dependencyTypes) ||
26
- dependencyTypes.includes(instance.strategy.name)) &&
27
- (!(0, is_non_empty_array_1.isNonEmptyArray)(packages) ||
28
- packages.some((pattern) => (0, minimatch_1.minimatch)(instance.pkgName, pattern))) &&
29
- (!(0, is_non_empty_array_1.isNonEmptyArray)(dependencies) ||
30
- dependencies.some((pattern) => (0, minimatch_1.minimatch)(instance.name, pattern)))) {
31
- group.instances.push(instance);
32
- return;
67
+ return (0, Function_1.pipe)(Effect.Do(), Effect.bind('enabledTypes', () => (0, get_enabled_types_1.getEnabledTypes)(ctx.config)), Effect.bind('semverGroups', () => createSemverGroups(ctx)), Effect.flatMap(({ enabledTypes, semverGroups }) => {
68
+ for (const file of ctx.packageJsonFiles) {
69
+ instances: for (const instance of file.getInstances(enabledTypes)) {
70
+ for (const group of semverGroups) {
71
+ if ((0, can_add_to_group_1.canAddToGroup)(group, instance)) {
72
+ group.instances.push(instance);
73
+ continue instances;
74
+ }
33
75
  }
34
76
  }
35
- throw new Error(`${name} in ${pkgName} did not match any semver groups`);
36
- });
37
- });
38
- return semverGroups.filter((group) => (0, is_non_empty_array_1.isNonEmptyArray)(group.instances));
77
+ }
78
+ return Effect.succeed(semverGroups.filter((group) => (0, is_non_empty_array_1.isNonEmptyArray)(group.instances.sort(sort_by_name_1.sortByName))));
79
+ }));
39
80
  }
40
81
  exports.getSemverGroups = getSemverGroups;
41
82
  function createSemverGroups(ctx) {
42
83
  const { cli, rcFile } = ctx.config;
43
- const semverGroups = [new filtered_out_1.FilteredOutSemverGroup(ctx)];
84
+ const semverGroups = [
85
+ Effect.succeed(new filtered_out_1.FilteredOutSemverGroup(ctx)),
86
+ ];
44
87
  if ((0, is_non_empty_array_1.isNonEmptyArray)(rcFile.semverGroups)) {
45
- const ERR_OBJ = new Error('Invalid semverGroup');
46
- const ERR_DEPS = new Error('Invalid semverGroup dependencies');
47
- const ERR_PKGS = new Error('Invalid semverGroup packages');
48
88
  rcFile.semverGroups.forEach((config) => {
49
- if (!(0, is_object_1.isObject)(config))
50
- throw ERR_OBJ;
51
- if (!(0, is_array_of_strings_1.isArrayOfStrings)(config.dependencies))
52
- throw ERR_DEPS;
53
- if (!(0, is_array_of_strings_1.isArrayOfStrings)(config.packages))
54
- throw ERR_PKGS;
89
+ if (!(0, is_object_1.isObject)(config)) {
90
+ return semverGroups.push(Effect.fail(new SemverGroupConfigError({
91
+ config,
92
+ error: 'config is not an object',
93
+ })));
94
+ }
95
+ if (!(0, is_array_of_strings_1.isArrayOfStrings)(config.dependencies)) {
96
+ return semverGroups.push(Effect.fail(new SemverGroupConfigError({
97
+ config,
98
+ error: 'config.dependencies is not an array of strings',
99
+ })));
100
+ }
101
+ if (!(0, is_array_of_strings_1.isArrayOfStrings)(config.packages)) {
102
+ return semverGroups.push(Effect.fail(new SemverGroupConfigError({
103
+ config,
104
+ error: 'config.packages is not an array of strings',
105
+ })));
106
+ }
55
107
  const { dependencies, packages } = config;
56
108
  const label = (0, is_non_empty_string_1.isNonEmptyString)(config.label) ? config.label : '';
57
109
  const dependencyTypes = (0, is_array_of_strings_1.isArrayOfStrings)(config.dependencyTypes)
58
110
  ? config.dependencyTypes
59
111
  : [];
60
112
  if (config.isIgnored === true) {
61
- semverGroups.push(new ignored_1.IgnoredSemverGroup({
113
+ semverGroups.push(Effect.succeed(new ignored_1.IgnoredSemverGroup({
62
114
  dependencies,
63
115
  dependencyTypes,
64
116
  isIgnored: true,
65
117
  label,
66
118
  packages,
67
- }));
119
+ })));
68
120
  }
69
- else if ((0, is_semver_1.isValidSemverRange)(config.range)) {
70
- semverGroups.push(new with_range_1.WithRangeSemverGroup({
121
+ else if ((0, is_valid_semver_range_1.isValidSemverRange)(config.range)) {
122
+ semverGroups.push(Effect.succeed(new with_range_1.WithRangeSemverGroup(false, {
71
123
  dependencies,
72
124
  dependencyTypes,
73
125
  label,
74
126
  packages,
75
127
  range: config.range,
76
- }));
128
+ })));
77
129
  }
78
130
  });
79
131
  }
80
- semverGroups.push(new catch_all_1.CatchAllSemverGroup({
132
+ semverGroups.push(Effect.succeed(new with_range_1.WithRangeSemverGroup(true, {
81
133
  dependencies: ['**'],
82
134
  label: '',
83
135
  packages: ['**'],
84
136
  range: (0, get_semver_range_1.getSemverRange)({ cli, rcFile }),
85
- }));
86
- return semverGroups;
137
+ })));
138
+ return Effect.all(semverGroups);
87
139
  }