syncpack 10.5.1 → 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 (177) 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 -49
  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 -75
  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 -87
  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.js +28 -4
  32. package/dist/bin-prompt/prompt.d.ts +4 -0
  33. package/dist/bin-prompt/prompt.js +42 -0
  34. package/dist/bin-set-semver-ranges/effects.d.ts +2 -0
  35. package/dist/bin-set-semver-ranges/effects.js +61 -0
  36. package/dist/bin-set-semver-ranges/index.js +28 -4
  37. package/dist/bin-set-semver-ranges/set-semver-ranges.d.ts +4 -2
  38. package/dist/bin-set-semver-ranges/set-semver-ranges.js +39 -22
  39. package/dist/config/get-custom-types.d.ts +2 -2
  40. package/dist/config/get-enabled-types.d.ts +12 -2
  41. package/dist/config/get-enabled-types.js +38 -4
  42. package/dist/config/get-filter.d.ts +2 -2
  43. package/dist/config/get-indent.d.ts +2 -2
  44. package/dist/config/get-semver-range.d.ts +2 -2
  45. package/dist/config/get-semver-range.js +4 -4
  46. package/dist/config/get-sort-az.d.ts +2 -2
  47. package/dist/config/get-sort-first.d.ts +2 -2
  48. package/dist/config/get-source.d.ts +2 -2
  49. package/dist/config/get-source.js +1 -2
  50. package/dist/config/types.d.ts +8 -6
  51. package/dist/config/types.js +26 -0
  52. package/dist/constants.d.ts +1 -1
  53. package/dist/constants.js +1 -1
  54. package/dist/create-program/effects.d.ts +42 -0
  55. package/dist/create-program/effects.js +2 -0
  56. package/dist/create-program/semver-ranges.d.ts +7 -0
  57. package/dist/create-program/semver-ranges.js +43 -0
  58. package/dist/create-program/versions.d.ts +7 -0
  59. package/dist/create-program/versions.js +48 -0
  60. package/dist/env/create-env.d.ts +21 -0
  61. package/dist/env/create-env.js +60 -0
  62. package/dist/env/default-env.d.ts +18 -0
  63. package/dist/env/default-env.js +95 -0
  64. package/dist/env/exit-if-invalid.d.ts +4 -0
  65. package/dist/env/exit-if-invalid.js +34 -0
  66. package/dist/env/tags.d.ts +58 -0
  67. package/dist/env/tags.js +50 -0
  68. package/dist/env/write-if-changed.d.ts +11 -0
  69. package/dist/env/write-if-changed.js +73 -0
  70. package/dist/error-handlers/create-error-handlers.d.ts +19 -0
  71. package/dist/error-handlers/create-error-handlers.js +57 -0
  72. package/dist/error-handlers/default-error-handlers.d.ts +2 -0
  73. package/dist/error-handlers/default-error-handlers.js +57 -0
  74. package/dist/get-context/index.d.ts +11 -8
  75. package/dist/get-context/index.js +31 -9
  76. package/dist/get-package-json-files/get-file-paths.d.ts +17 -8
  77. package/dist/get-package-json-files/get-file-paths.js +40 -20
  78. package/dist/get-package-json-files/get-patterns/get-lerna-patterns.d.ts +4 -3
  79. package/dist/get-package-json-files/get-patterns/get-lerna-patterns.js +31 -8
  80. package/dist/get-package-json-files/get-patterns/get-pnpm-patterns.d.ts +4 -3
  81. package/dist/get-package-json-files/get-patterns/get-pnpm-patterns.js +36 -14
  82. package/dist/get-package-json-files/get-patterns/get-yarn-patterns.d.ts +4 -3
  83. package/dist/get-package-json-files/get-patterns/get-yarn-patterns.js +37 -9
  84. package/dist/get-package-json-files/get-patterns/index.d.ts +4 -4
  85. package/dist/get-package-json-files/get-patterns/index.js +37 -18
  86. package/dist/get-package-json-files/get-patterns/read-json-safe.d.ts +15 -3
  87. package/dist/get-package-json-files/get-patterns/read-json-safe.js +36 -10
  88. package/dist/get-package-json-files/index.d.ts +7 -4
  89. package/dist/get-package-json-files/index.js +27 -9
  90. package/dist/get-package-json-files/instance.js +2 -2
  91. package/dist/get-package-json-files/package-json-file.d.ts +6 -10
  92. package/dist/get-package-json-files/package-json-file.js +5 -21
  93. package/dist/get-semver-groups/filtered-out.d.ts +12 -6
  94. package/dist/get-semver-groups/filtered-out.js +40 -14
  95. package/dist/get-semver-groups/ignored.d.ts +10 -4
  96. package/dist/get-semver-groups/ignored.js +34 -8
  97. package/dist/get-semver-groups/index.d.ts +80 -28
  98. package/dist/get-semver-groups/index.js +94 -42
  99. package/dist/get-semver-groups/with-range.d.ts +12 -5
  100. package/dist/get-semver-groups/with-range.js +49 -25
  101. package/dist/get-version-groups/banned.d.ts +10 -4
  102. package/dist/get-version-groups/banned.js +34 -8
  103. package/dist/get-version-groups/filtered-out.d.ts +12 -6
  104. package/dist/get-version-groups/filtered-out.js +40 -14
  105. package/dist/get-version-groups/ignored.d.ts +10 -4
  106. package/dist/get-version-groups/ignored.js +34 -8
  107. package/dist/get-version-groups/index.d.ts +131 -47
  108. package/dist/get-version-groups/index.js +123 -51
  109. package/dist/get-version-groups/lib/get-highest-version.js +2 -2
  110. package/dist/get-version-groups/lib/get-lowest-version.js +2 -2
  111. package/dist/get-version-groups/lib/get-range-score.js +1 -3
  112. package/dist/get-version-groups/lib/sort.js +3 -3
  113. package/dist/get-version-groups/pinned.d.ts +10 -4
  114. package/dist/get-version-groups/pinned.js +39 -16
  115. package/dist/get-version-groups/same-range.d.ts +10 -4
  116. package/dist/get-version-groups/same-range.js +38 -15
  117. package/dist/get-version-groups/snapped-to.d.ts +10 -4
  118. package/dist/get-version-groups/snapped-to.js +41 -16
  119. package/dist/get-version-groups/standard.d.ts +12 -5
  120. package/dist/get-version-groups/standard.js +63 -39
  121. package/dist/guards/can-add-to-group.d.ts +4 -0
  122. package/dist/guards/can-add-to-group.js +15 -0
  123. package/dist/guards/is-loose-semver.d.ts +1 -0
  124. package/dist/guards/is-loose-semver.js +9 -0
  125. package/dist/guards/is-semver.d.ts +1 -0
  126. package/dist/guards/is-semver.js +16 -0
  127. package/dist/guards/is-supported.d.ts +1 -0
  128. package/dist/guards/is-supported.js +17 -0
  129. package/dist/guards/is-valid-semver-range.d.ts +2 -0
  130. package/dist/guards/is-valid-semver-range.js +17 -0
  131. package/dist/lib/$R.js +2 -2
  132. package/dist/lib/log-group-header.d.ts +6 -0
  133. package/dist/lib/log-group-header.js +34 -0
  134. package/dist/lib/log-verbose.d.ts +1 -0
  135. package/dist/lib/log-verbose.js +24 -0
  136. package/dist/lib/set-semver-range.js +5 -5
  137. package/dist/option.js +1 -4
  138. package/dist/strategy/lib/get-non-empty-string-prop.js +2 -2
  139. package/dist/strategy/name-and-version-props.js +5 -5
  140. package/dist/strategy/named-version-string.js +4 -4
  141. package/dist/strategy/unnamed-version-string.js +4 -4
  142. package/dist/strategy/versions-by-name.js +3 -3
  143. package/package.json +16 -11
  144. package/dist/bin-fix-mismatches/fix-mismatches-cli.d.ts +0 -3
  145. package/dist/bin-fix-mismatches/fix-mismatches-cli.js +0 -12
  146. package/dist/bin-lint/lint-cli.d.ts +0 -3
  147. package/dist/bin-lint/lint-cli.js +0 -12
  148. package/dist/bin-lint-semver-ranges/lint-semver-ranges-cli.d.ts +0 -3
  149. package/dist/bin-lint-semver-ranges/lint-semver-ranges-cli.js +0 -11
  150. package/dist/bin-list/list-cli.d.ts +0 -3
  151. package/dist/bin-list/list-cli.js +0 -11
  152. package/dist/bin-list-mismatches/list-mismatches-cli.d.ts +0 -3
  153. package/dist/bin-list-mismatches/list-mismatches-cli.js +0 -11
  154. package/dist/bin-prompt/prompt-cli.d.ts +0 -3
  155. package/dist/bin-prompt/prompt-cli.js +0 -50
  156. package/dist/bin-set-semver-ranges/set-semver-ranges-cli.d.ts +0 -3
  157. package/dist/bin-set-semver-ranges/set-semver-ranges-cli.js +0 -11
  158. package/dist/get-package-json-files/get-patterns/read-yaml-safe.d.ts +0 -3
  159. package/dist/get-package-json-files/get-patterns/read-yaml-safe.js +0 -12
  160. package/dist/get-semver-groups/catch-all.d.ts +0 -4
  161. package/dist/get-semver-groups/catch-all.js +0 -11
  162. package/dist/get-version-groups/catch-all.d.ts +0 -4
  163. package/dist/get-version-groups/catch-all.js +0 -11
  164. package/dist/lib/disk.d.ts +0 -21
  165. package/dist/lib/disk.js +0 -79
  166. package/dist/lib/exit-if-invalid.d.ts +0 -2
  167. package/dist/lib/exit-if-invalid.js +0 -10
  168. package/dist/lib/is-semver.d.ts +0 -6
  169. package/dist/lib/is-semver.js +0 -49
  170. package/dist/lib/log.d.ts +0 -5
  171. package/dist/lib/log.js +0 -51
  172. package/dist/lib/newlines.d.ts +0 -6
  173. package/dist/lib/newlines.js +0 -24
  174. package/dist/lib/print-strings.d.ts +0 -1
  175. package/dist/lib/print-strings.js +0 -7
  176. package/dist/lib/write-if-changed.d.ts +0 -2
  177. package/dist/lib/write-if-changed.js +0 -21
@@ -1,12 +1,33 @@
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.getPatterns = void 0;
4
- const pipe_1 = require("tightrope/fn/pipe");
27
+ const Function_1 = require("@effect/data/Function");
28
+ const O = __importStar(require("@effect/data/Option"));
29
+ const Effect = __importStar(require("@effect/io/Effect"));
5
30
  const is_array_of_strings_1 = require("tightrope/guard/is-array-of-strings");
6
- const result_1 = require("tightrope/result");
7
- const from_guard_1 = require("tightrope/result/from-guard");
8
- const map_1 = require("tightrope/result/map");
9
- const or_else_1 = require("tightrope/result/or-else");
10
31
  const get_source_1 = require("../../config/get-source");
11
32
  const constants_1 = require("../../constants");
12
33
  const get_lerna_patterns_1 = require("./get-lerna-patterns");
@@ -18,18 +39,16 @@ const get_yarn_patterns_1 = require("./get-yarn-patterns");
18
39
  *
19
40
  * @returns `['./package.json', './packages/* /package.json']`
20
41
  */
21
- function getPatterns(disk) {
22
- return function getPatterns(config) {
23
- return (0, pipe_1.pipe)(getCliPatterns(), (0, or_else_1.orElse)((0, get_yarn_patterns_1.getYarnPatterns)(disk)), (0, or_else_1.orElse)((0, get_pnpm_patterns_1.getPnpmPatterns)(disk)), (0, or_else_1.orElse)((0, get_lerna_patterns_1.getLernaPatterns)(disk)), (0, map_1.map)(addRootDir), (0, map_1.map)(limitToPackageJson), (0, or_else_1.orElse)(() => new result_1.Ok(constants_1.DEFAULT_SOURCES)));
24
- function getCliPatterns() {
25
- return (0, from_guard_1.fromGuard)(is_array_of_strings_1.isArrayOfStrings, new Error('No --source options provided'), (0, get_source_1.getSource)(config));
26
- }
27
- function addRootDir(patterns) {
28
- return ['package.json', ...patterns];
29
- }
30
- function limitToPackageJson(patterns) {
31
- return patterns.map((pattern) => pattern.includes('package.json') ? pattern : `${pattern}/package.json`);
32
- }
33
- };
42
+ function getPatterns(config) {
43
+ return (0, Function_1.pipe)(getCliPatterns(), Effect.flatMap((option) => (O.isSome(option) ? Effect.succeed(option) : (0, get_yarn_patterns_1.getYarnPatterns)())), Effect.flatMap((option) => (O.isSome(option) ? Effect.succeed(option) : (0, get_pnpm_patterns_1.getPnpmPatterns)())), Effect.flatMap((option) => (O.isSome(option) ? Effect.succeed(option) : (0, get_lerna_patterns_1.getLernaPatterns)())), Effect.map((option) => (0, Function_1.pipe)(option, O.map(addRootDir), O.map(limitToPackageJson), O.getOrElse(() => constants_1.DEFAULT_SOURCES))));
44
+ function getCliPatterns() {
45
+ return (0, Function_1.pipe)(O.some((0, get_source_1.getSource)(config)), O.filter(is_array_of_strings_1.isArrayOfStrings), Effect.succeed);
46
+ }
47
+ function addRootDir(patterns) {
48
+ return ['package.json', ...patterns];
49
+ }
50
+ function limitToPackageJson(patterns) {
51
+ return patterns.map((pattern) => pattern.includes('package.json') ? pattern : `${pattern}/package.json`);
52
+ }
34
53
  }
35
54
  exports.getPatterns = getPatterns;
@@ -1,5 +1,7 @@
1
- import type { Result } from 'tightrope/result';
2
- import type { Disk } from '../../lib/disk';
1
+ import * as Data from '@effect/data/Data';
2
+ import * as Effect from '@effect/io/Effect';
3
+ import type { Env } from '../../env/create-env';
4
+ import type { ReadFileError } from '../../env/tags';
3
5
  export interface JsonFile<T> {
4
6
  /** absolute path on disk to this file */
5
7
  readonly filePath: string;
@@ -8,4 +10,14 @@ export interface JsonFile<T> {
8
10
  /** raw file contents of the file */
9
11
  readonly json: string;
10
12
  }
11
- export declare function readJsonSafe<T>(disk: Disk): (filePath: string) => Result<JsonFile<T>>;
13
+ declare const JsonParseError_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 & {
14
+ _tag: "JsonParseError";
15
+ }>;
16
+ export declare class JsonParseError extends JsonParseError_base<{
17
+ readonly error: string;
18
+ readonly filePath: string;
19
+ readonly json: string;
20
+ }> {
21
+ }
22
+ export declare function readJsonSafe<T>(filePath: string): Effect.Effect<Env, ReadFileError | JsonParseError, JsonFile<T>>;
23
+ export {};
@@ -1,14 +1,40 @@
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.readJsonSafe = void 0;
4
- const pipe_1 = require("tightrope/fn/pipe");
5
- const and_then_1 = require("tightrope/result/and-then");
6
- const from_try_1 = require("tightrope/result/from-try");
7
- const map_1 = require("tightrope/result/map");
8
- const map_err_1 = require("tightrope/result/map-err");
9
- function readJsonSafe(disk) {
10
- return function readJsonSafe(filePath) {
11
- return (0, pipe_1.pipe)((0, from_try_1.fromTry)(() => disk.readFileSync(filePath)), (0, and_then_1.andThen)((json) => (0, pipe_1.pipe)((0, from_try_1.fromTry)(() => JSON.parse(json)), (0, map_1.map)((contents) => ({ contents, json })))), (0, map_1.map)(({ contents, json }) => ({ contents, filePath, json })), (0, map_err_1.mapErr)(() => new Error(`Failed to read JSON file at ${filePath}`)));
12
- };
26
+ exports.readJsonSafe = exports.JsonParseError = 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"));
30
+ const tags_1 = require("../../env/tags");
31
+ class JsonParseError extends Data.TaggedClass('JsonParseError') {
32
+ }
33
+ exports.JsonParseError = JsonParseError;
34
+ // @TODO: move to env.readJsonFileSync
35
+ function readJsonSafe(filePath) {
36
+ return (0, Function_1.pipe)(Effect.Do(), Effect.bind('env', () => tags_1.EnvTag), Effect.bind('json', ({ env }) => env.readFileSync(filePath)), Effect.bind('contents', ({ json }) =>
37
+ // @TODO: move to env.parseJson
38
+ Effect.tryCatch(() => JSON.parse(json), (err) => new JsonParseError({ error: String(err), filePath, json }))), Effect.map(({ contents, json }) => ({ contents, filePath, json })));
13
39
  }
14
40
  exports.readJsonSafe = readJsonSafe;
@@ -1,6 +1,9 @@
1
- import type { Result } from 'tightrope/result';
2
- import type { Context } from '../get-context';
3
- import type { Disk } from '../lib/disk';
1
+ import * as Effect from '@effect/io/Effect';
2
+ import type { Env } from '../env/create-env';
3
+ import type { GlobError, ReadFileError } from '../env/tags';
4
+ import type { Ctx } from '../get-context';
5
+ import type { NoSourcesFoundError } from './get-file-paths';
6
+ import type { JsonParseError } from './get-patterns/read-json-safe';
4
7
  import { PackageJsonFile } from './package-json-file';
5
8
  /** Create an API for every package.json file needed. */
6
- export declare function getPackageJsonFiles(disk: Disk, config: Context['config']): Result<PackageJsonFile[]>;
9
+ export declare function getPackageJsonFiles(config: Ctx['config']): Effect.Effect<Env, NoSourcesFoundError | GlobError | ReadFileError | JsonParseError, PackageJsonFile[]>;
@@ -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 {};