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
@@ -0,0 +1,58 @@
1
+ import * as Context from '@effect/data/Context';
2
+ import * as Data from '@effect/data/Data';
3
+ import type { Env } from './create-env';
4
+ export declare const EnvTag: Context.Tag<Env, Env>;
5
+ declare const AskForChoiceError_base: new <A extends Record<string, any>>(args: Data.IsEqualTo<Omit<A, keyof import("@effect/data/Equal").Equal>, {}> extends true ? void : Omit<A, keyof import("@effect/data/Equal").Equal>) => Data.Data<A & {
6
+ _tag: "AskForChoiceError";
7
+ }>;
8
+ export declare class AskForChoiceError extends AskForChoiceError_base<{
9
+ readonly error: string;
10
+ }> {
11
+ }
12
+ declare const AskForInputError_base: new <A extends Record<string, any>>(args: Data.IsEqualTo<Omit<A, keyof import("@effect/data/Equal").Equal>, {}> extends true ? void : Omit<A, keyof import("@effect/data/Equal").Equal>) => Data.Data<A & {
13
+ _tag: "AskForInputError";
14
+ }>;
15
+ export declare class AskForInputError extends AskForInputError_base<{
16
+ readonly error: string;
17
+ }> {
18
+ }
19
+ declare const GlobError_base: new <A extends Record<string, any>>(args: Data.IsEqualTo<Omit<A, keyof import("@effect/data/Equal").Equal>, {}> extends true ? void : Omit<A, keyof import("@effect/data/Equal").Equal>) => Data.Data<A & {
20
+ _tag: "GlobError";
21
+ }>;
22
+ export declare class GlobError extends GlobError_base<{
23
+ readonly error: string;
24
+ }> {
25
+ }
26
+ declare const ReadConfigFileError_base: new <A extends Record<string, any>>(args: Data.IsEqualTo<Omit<A, keyof import("@effect/data/Equal").Equal>, {}> extends true ? void : Omit<A, keyof import("@effect/data/Equal").Equal>) => Data.Data<A & {
27
+ _tag: "ReadConfigFileError";
28
+ }>;
29
+ export declare class ReadConfigFileError extends ReadConfigFileError_base<{
30
+ readonly filePath: string;
31
+ readonly error: string;
32
+ }> {
33
+ }
34
+ declare const ReadFileError_base: new <A extends Record<string, any>>(args: Data.IsEqualTo<Omit<A, keyof import("@effect/data/Equal").Equal>, {}> extends true ? void : Omit<A, keyof import("@effect/data/Equal").Equal>) => Data.Data<A & {
35
+ _tag: "ReadFileError";
36
+ }>;
37
+ export declare class ReadFileError extends ReadFileError_base<{
38
+ readonly filePath: string;
39
+ readonly error: string;
40
+ }> {
41
+ }
42
+ declare const ReadYamlFileError_base: new <A extends Record<string, any>>(args: Data.IsEqualTo<Omit<A, keyof import("@effect/data/Equal").Equal>, {}> extends true ? void : Omit<A, keyof import("@effect/data/Equal").Equal>) => Data.Data<A & {
43
+ _tag: "ReadYamlFileError";
44
+ }>;
45
+ export declare class ReadYamlFileError extends ReadYamlFileError_base<{
46
+ readonly filePath: string;
47
+ readonly error: string;
48
+ }> {
49
+ }
50
+ declare const WriteFileError_base: new <A extends Record<string, any>>(args: Data.IsEqualTo<Omit<A, keyof import("@effect/data/Equal").Equal>, {}> extends true ? void : Omit<A, keyof import("@effect/data/Equal").Equal>) => Data.Data<A & {
51
+ _tag: "WriteFileError";
52
+ }>;
53
+ export declare class WriteFileError extends WriteFileError_base<{
54
+ readonly filePath: string;
55
+ readonly error: string;
56
+ }> {
57
+ }
58
+ export {};
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.WriteFileError = exports.ReadYamlFileError = exports.ReadFileError = exports.ReadConfigFileError = exports.GlobError = exports.AskForInputError = exports.AskForChoiceError = exports.EnvTag = void 0;
27
+ const Context = __importStar(require("@effect/data/Context"));
28
+ const Data = __importStar(require("@effect/data/Data"));
29
+ exports.EnvTag = Context.Tag();
30
+ class AskForChoiceError extends Data.TaggedClass('AskForChoiceError') {
31
+ }
32
+ exports.AskForChoiceError = AskForChoiceError;
33
+ class AskForInputError extends Data.TaggedClass('AskForInputError') {
34
+ }
35
+ exports.AskForInputError = AskForInputError;
36
+ class GlobError extends Data.TaggedClass('GlobError') {
37
+ }
38
+ exports.GlobError = GlobError;
39
+ class ReadConfigFileError extends Data.TaggedClass('ReadConfigFileError') {
40
+ }
41
+ exports.ReadConfigFileError = ReadConfigFileError;
42
+ class ReadFileError extends Data.TaggedClass('ReadFileError') {
43
+ }
44
+ exports.ReadFileError = ReadFileError;
45
+ class ReadYamlFileError extends Data.TaggedClass('ReadYamlFileError') {
46
+ }
47
+ exports.ReadYamlFileError = ReadYamlFileError;
48
+ class WriteFileError extends Data.TaggedClass('WriteFileError') {
49
+ }
50
+ exports.WriteFileError = WriteFileError;
@@ -0,0 +1,11 @@
1
+ import * as Effect from '@effect/io/Effect';
2
+ import type { Ctx } from '../get-context';
3
+ import { type Env } from './create-env';
4
+ import type { WriteFileError } from './tags';
5
+ export declare function writeIfChanged(ctx: Ctx): Effect.Effect<Env, WriteFileError, Ctx>;
6
+ type Ending = '\n' | '\r' | '\r\n' | string;
7
+ export declare const newlines: {
8
+ detect(source: string): Ending;
9
+ fix(source: string, lineEnding: Ending): string;
10
+ };
11
+ export {};
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.newlines = exports.writeIfChanged = void 0;
30
+ const Function_1 = require("@effect/data/Function");
31
+ const Effect = __importStar(require("@effect/io/Effect"));
32
+ const chalk_1 = __importDefault(require("chalk"));
33
+ const os_1 = require("os");
34
+ const get_indent_1 = require("../config/get-indent");
35
+ const constants_1 = require("../constants");
36
+ const tags_1 = require("./tags");
37
+ function writeIfChanged(ctx) {
38
+ return (0, Function_1.pipe)(tags_1.EnvTag, Effect.flatMap((env) => Effect.all(ctx.packageJsonFiles.map((file) => (0, Function_1.pipe)(Effect.Do(), Effect.bind('nextJson', () => toJson(file)), Effect.bind('hasChanged', ({ nextJson }) => Effect.succeed(file.json !== nextJson)), Effect.flatMap(({ hasChanged, nextJson }) => hasChanged
39
+ ? (0, Function_1.pipe)(env.writeFileSync(file.filePath, nextJson), Effect.flatMap(() => Effect.sync(() => {
40
+ console.log((0, chalk_1.default) `{green ${constants_1.ICON.tick}}`, file.shortPath);
41
+ })))
42
+ : Effect.sync(() => {
43
+ console.log(chalk_1.default.dim(constants_1.ICON.skip), chalk_1.default.dim(file.shortPath));
44
+ })))))), Effect.map(() => ctx));
45
+ function toJson(file) {
46
+ const contents = file.contents;
47
+ const indent = (0, get_indent_1.getIndent)(ctx.config);
48
+ const EOL = exports.newlines.detect(file.json);
49
+ const source = `${JSON.stringify(contents, null, indent)}${EOL}`;
50
+ return Effect.succeed(exports.newlines.fix(source, EOL));
51
+ }
52
+ }
53
+ exports.writeIfChanged = writeIfChanged;
54
+ const CR = '\r';
55
+ const CRLF = '\r\n';
56
+ const LF = '\n';
57
+ exports.newlines = {
58
+ detect(source) {
59
+ const cr = source.split(CR).length;
60
+ const lf = source.split(LF).length;
61
+ const crlf = source.split(CRLF).length;
62
+ if (cr + lf === 0)
63
+ return os_1.EOL;
64
+ if (crlf === cr && crlf === lf)
65
+ return CRLF;
66
+ if (cr > lf)
67
+ return CR;
68
+ return LF;
69
+ },
70
+ fix(source, lineEnding) {
71
+ return source.replace(/\r\n|\n|\r/g, lineEnding);
72
+ },
73
+ };
@@ -0,0 +1,19 @@
1
+ import * as Effect from '@effect/io/Effect';
2
+ import type { DeprecatedTypesError } from '../config/get-enabled-types';
3
+ import type { GlobError, ReadConfigFileError, ReadFileError, WriteFileError } from '../env/tags';
4
+ import type { NoSourcesFoundError } from '../get-package-json-files/get-file-paths';
5
+ import type { JsonParseError } from '../get-package-json-files/get-patterns/read-json-safe';
6
+ import type { SemverGroupConfigError } from '../get-semver-groups';
7
+ import type { VersionGroupConfigError } from '../get-version-groups';
8
+ export interface ErrorHandlers<R = Effect.Effect<never, never, void>> {
9
+ DeprecatedTypesError(err: DeprecatedTypesError): R;
10
+ GlobError(err: GlobError): R;
11
+ JsonParseError(err: JsonParseError): R;
12
+ NoSourcesFoundError(err: NoSourcesFoundError): R;
13
+ ReadConfigFileError(err: ReadConfigFileError): R;
14
+ ReadFileError(err: ReadFileError): R;
15
+ SemverGroupConfigError(err: SemverGroupConfigError): R;
16
+ VersionGroupConfigError(err: VersionGroupConfigError): R;
17
+ WriteFileError(err: WriteFileError): R;
18
+ }
19
+ export declare const createErrorHandlers: (errorHandlers: ErrorHandlers<void>) => ErrorHandlers;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.createErrorHandlers = void 0;
27
+ const Effect = __importStar(require("@effect/io/Effect"));
28
+ const createErrorHandlers = (errorHandlers) => ({
29
+ DeprecatedTypesError(err) {
30
+ return Effect.sync(() => errorHandlers.DeprecatedTypesError(err));
31
+ },
32
+ GlobError(err) {
33
+ return Effect.sync(() => errorHandlers.GlobError(err));
34
+ },
35
+ JsonParseError(err) {
36
+ return Effect.sync(() => errorHandlers.JsonParseError(err));
37
+ },
38
+ NoSourcesFoundError(err) {
39
+ return Effect.sync(() => errorHandlers.NoSourcesFoundError(err));
40
+ },
41
+ ReadConfigFileError(err) {
42
+ return Effect.sync(() => errorHandlers.ReadConfigFileError(err));
43
+ },
44
+ ReadFileError(err) {
45
+ return Effect.sync(() => errorHandlers.ReadFileError(err));
46
+ },
47
+ SemverGroupConfigError(err) {
48
+ return Effect.sync(() => errorHandlers.SemverGroupConfigError(err));
49
+ },
50
+ VersionGroupConfigError(err) {
51
+ return Effect.sync(() => errorHandlers.VersionGroupConfigError(err));
52
+ },
53
+ WriteFileError(err) {
54
+ return Effect.sync(() => errorHandlers.WriteFileError(err));
55
+ },
56
+ });
57
+ exports.createErrorHandlers = createErrorHandlers;
@@ -0,0 +1,2 @@
1
+ import type { ErrorHandlers } from './create-error-handlers';
2
+ export declare const defaultErrorHandlers: ErrorHandlers<void>;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.defaultErrorHandlers = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const constants_1 = require("../constants");
9
+ exports.defaultErrorHandlers = {
10
+ DeprecatedTypesError(err) {
11
+ const url = 'https://github.com/JamieMason/syncpack/releases/tag/9.0.0';
12
+ console.log(chalk_1.default.red(constants_1.ICON.panic, `Your syncpack config file contains values deprecated in ${url}`));
13
+ console.log(chalk_1.default.red(' Dependency Types:', err.types));
14
+ console.log(chalk_1.default.red(' Docs: https://jamiemason.github.io/syncpack/config/dependency-types'));
15
+ },
16
+ GlobError(err) {
17
+ console.log(chalk_1.default.red(constants_1.ICON.panic, 'An error was found when processing your source globs'));
18
+ console.log(chalk_1.default.red(' Error:', err.error));
19
+ },
20
+ JsonParseError(err) {
21
+ console.log(chalk_1.default.red(constants_1.ICON.panic, 'An error was found when parsing a JSON file'));
22
+ console.log(chalk_1.default.red(' File:', err.filePath));
23
+ console.log(chalk_1.default.red(' Error:', err.error));
24
+ },
25
+ NoSourcesFoundError(err) {
26
+ console.log(chalk_1.default.red(constants_1.ICON.panic, 'No package.json files were found'));
27
+ console.log(chalk_1.default.red(' CWD:'), err.CWD);
28
+ console.log(chalk_1.default.red(' Sources:', err.patterns));
29
+ },
30
+ ReadConfigFileError(err) {
31
+ console.log(chalk_1.default.red(constants_1.ICON.panic, 'Your syncpack config file contains an error'));
32
+ console.log(chalk_1.default.red(' File:', err.filePath || 'not known (discovered by cosmiconfig)'));
33
+ console.log(chalk_1.default.red(' Error:', err.error));
34
+ },
35
+ ReadFileError(err) {
36
+ console.log(chalk_1.default.red(constants_1.ICON.panic, 'An error was found when reading a file'));
37
+ console.log(chalk_1.default.red(' File:', err.filePath));
38
+ console.log(chalk_1.default.red(' Error:', err.error));
39
+ },
40
+ SemverGroupConfigError(err) {
41
+ console.log(chalk_1.default.red(constants_1.ICON.panic, 'Your semver group config contains an error'));
42
+ console.log(chalk_1.default.red(' Error:', err.error));
43
+ console.log(chalk_1.default.red(' Config:'), err.config);
44
+ console.log(chalk_1.default.red(' Docs: https://jamiemason.github.io/syncpack/config/semver-groups'));
45
+ },
46
+ VersionGroupConfigError(err) {
47
+ console.log(chalk_1.default.red(constants_1.ICON.panic, 'Your version group config contains an error'));
48
+ console.log(chalk_1.default.red(' Error:', err.error));
49
+ console.log(chalk_1.default.red(' Config:'), err.config);
50
+ console.log(chalk_1.default.red(' Docs: https://jamiemason.github.io/syncpack/config/version-groups'));
51
+ },
52
+ WriteFileError(err) {
53
+ console.log(chalk_1.default.red(constants_1.ICON.panic, 'An error was found when writing to a file'));
54
+ console.log(chalk_1.default.red(' File:', err.filePath));
55
+ console.log(chalk_1.default.red(' Error:', err.error));
56
+ },
57
+ };
@@ -1,14 +1,17 @@
1
+ import * as Effect from '@effect/io/Effect';
1
2
  import type { O } from 'ts-toolbelt';
2
- import type { CliConfig, RcConfig } from '../config/types';
3
+ import { type CliConfig, type RcConfig } from '../config/types';
4
+ import type { Env } from '../env/create-env';
5
+ import type { GlobError, ReadConfigFileError, ReadFileError } from '../env/tags';
6
+ import type { NoSourcesFoundError } from '../get-package-json-files/get-file-paths';
7
+ import type { JsonParseError } from '../get-package-json-files/get-patterns/read-json-safe';
3
8
  import type { PackageJsonFile } from '../get-package-json-files/package-json-file';
4
- import type { Disk } from '../lib/disk';
5
- export interface Context {
6
- config: {
7
- cli: Partial<CliConfig>;
8
- rcFile: O.Partial<RcConfig, 'deep'>;
9
+ export interface Ctx {
10
+ readonly config: {
11
+ readonly cli: Partial<CliConfig>;
12
+ readonly rcFile: O.Partial<RcConfig, 'deep'>;
9
13
  };
10
- disk: Disk;
11
14
  isInvalid: boolean;
12
15
  packageJsonFiles: PackageJsonFile[];
13
16
  }
14
- export declare function getContext(cli: Partial<CliConfig>, disk: Disk): Context;
17
+ export declare function getContext(): Effect.Effect<Partial<CliConfig> | Env, NoSourcesFoundError | GlobError | ReadFileError | JsonParseError | ReadConfigFileError, Ctx>;
@@ -1,17 +1,39 @@
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.getContext = void 0;
4
- const unwrap_1 = require("tightrope/result/unwrap");
27
+ const Function_1 = require("@effect/data/Function");
28
+ const Effect = __importStar(require("@effect/io/Effect"));
29
+ const types_1 = require("../config/types");
30
+ const tags_1 = require("../env/tags");
5
31
  const get_package_json_files_1 = require("../get-package-json-files");
6
- function getContext(cli, disk) {
7
- const rcFile = disk.readConfigFileSync(cli.configPath);
8
- const config = { cli, rcFile };
9
- const packageJsonFiles = (0, unwrap_1.unwrap)((0, get_package_json_files_1.getPackageJsonFiles)(disk, config));
10
- return {
11
- config,
12
- disk,
32
+ function getContext() {
33
+ return (0, Function_1.pipe)(Effect.Do(), Effect.bind('cli', () => types_1.CliConfigTag), Effect.bind('env', () => tags_1.EnvTag), Effect.bind('rcFile', ({ cli, env }) => env.readConfigFileSync(cli.configPath)), Effect.bind('packageJsonFiles', get_package_json_files_1.getPackageJsonFiles), Effect.map(({ cli, rcFile, packageJsonFiles }) => ({
34
+ config: { cli, rcFile },
13
35
  isInvalid: false,
14
36
  packageJsonFiles,
15
- };
37
+ })));
16
38
  }
17
39
  exports.getContext = getContext;
@@ -1,13 +1,22 @@
1
- import type { Result } from 'tightrope/result';
2
- import type { Context } from '../get-context';
3
- import type { Disk } from '../lib/disk';
4
- type SafeFilePaths = Result<string[]>;
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 { GlobError } from '../env/tags';
5
+ import type { Ctx } from '../get-context';
6
+ declare const NoSourcesFoundError_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: "NoSourcesFoundError";
8
+ }>;
9
+ export declare class NoSourcesFoundError extends NoSourcesFoundError_base<{
10
+ readonly CWD: string;
11
+ readonly patterns: string[];
12
+ }> {
13
+ }
5
14
  /**
6
- * Using --source options and/or config files on disk from npm/pnpm/yarn/lerna,
7
- * return an array of absolute paths to every package.json file the user is
8
- * working with.
15
+ * Using --source options and/or config files on disk from
16
+ * npm/pnpm/yarn/lerna, return an array of absolute paths to every package.json
17
+ * file the user is working with.
9
18
  *
10
19
  * @returns Array of absolute file paths to package.json files
11
20
  */
12
- export declare function getFilePaths(disk: Disk, config: Context['config']): SafeFilePaths;
21
+ export declare function getFilePaths(config: Ctx['config']): Effect.Effect<Env, GlobError | NoSourcesFoundError, string[]>;
13
22
  export {};
@@ -1,30 +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
- exports.getFilePaths = void 0;
4
- const flat_1 = require("tightrope/array/flat");
26
+ exports.getFilePaths = exports.NoSourcesFoundError = 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 uniq_1 = require("tightrope/array/uniq");
6
- const pipe_1 = require("tightrope/fn/pipe");
7
- const is_array_of_strings_1 = require("tightrope/guard/is-array-of-strings");
8
- const and_then_1 = require("tightrope/result/and-then");
9
- const filter_1 = require("tightrope/result/filter");
10
- const from_try_1 = require("tightrope/result/from-try");
11
- const map_1 = require("tightrope/result/map");
12
- const map_err_1 = require("tightrope/result/map-err");
13
- const _R_1 = require("../lib/$R");
14
- const print_strings_1 = require("../lib/print-strings");
31
+ const is_non_empty_array_1 = require("tightrope/guard/is-non-empty-array");
32
+ const constants_1 = require("../constants");
33
+ const tags_1 = require("../env/tags");
15
34
  const get_patterns_1 = require("./get-patterns");
35
+ class NoSourcesFoundError extends Data.TaggedClass('NoSourcesFoundError') {
36
+ }
37
+ exports.NoSourcesFoundError = NoSourcesFoundError;
16
38
  /**
17
- * Using --source options and/or config files on disk from npm/pnpm/yarn/lerna,
18
- * return an array of absolute paths to every package.json file the user is
19
- * working with.
39
+ * Using --source options and/or config files on disk from
40
+ * npm/pnpm/yarn/lerna, return an array of absolute paths to every package.json
41
+ * file the user is working with.
20
42
  *
21
43
  * @returns Array of absolute file paths to package.json files
22
44
  */
23
- function getFilePaths(disk, config) {
24
- return (0, pipe_1.pipe)(config, (0, get_patterns_1.getPatterns)(disk), (0, and_then_1.andThen)(function resolvePatterns(patterns) {
25
- return (0, pipe_1.pipe)(patterns, _R_1.$R.onlyOk(function resolvePattern(pattern) {
26
- return (0, pipe_1.pipe)((0, from_try_1.fromTry)(() => disk.globSync(pattern)), (0, filter_1.filter)(is_array_of_strings_1.isArrayOfStrings, `"glob" did not match "${pattern}"`), (0, map_1.map)(flat_1.flat), (0, map_1.map)(uniq_1.uniq), _R_1.$R.tapErrVerbose);
27
- }), (0, map_1.map)(flat_1.flat), (0, map_1.map)(uniq_1.uniq), (0, map_err_1.mapErr)(() => new Error(`No files matched ${(0, print_strings_1.printStrings)(patterns)}`)));
28
- }));
45
+ function getFilePaths(config) {
46
+ return (0, Function_1.pipe)((0, get_patterns_1.getPatterns)(config), Effect.flatMap((patterns) => (0, Function_1.pipe)(tags_1.EnvTag, Effect.flatMap((env) => env.globSync(patterns)), Effect.map((arr) => (0, uniq_1.uniq)(arr.flat())), Effect.flatMap((filePaths) => (0, is_non_empty_array_1.isNonEmptyArray)(filePaths)
47
+ ? Effect.succeed(filePaths)
48
+ : Effect.fail(new NoSourcesFoundError({ CWD: constants_1.CWD, patterns }))))));
29
49
  }
30
50
  exports.getFilePaths = getFilePaths;
@@ -1,3 +1,4 @@
1
- import type { Result } from 'tightrope/result';
2
- import type { Disk } from '../../lib/disk';
3
- export declare function getLernaPatterns(disk: Disk): () => Result<string[]>;
1
+ import * as O from '@effect/data/Option';
2
+ import * as Effect from '@effect/io/Effect';
3
+ import type { Env } from '../../env/create-env';
4
+ export declare function getLernaPatterns(): Effect.Effect<Env, never, O.Option<string[]>>;
@@ -1,17 +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
26
  exports.getLernaPatterns = void 0;
27
+ const Function_1 = require("@effect/data/Function");
28
+ const O = __importStar(require("@effect/data/Option"));
29
+ const Effect = __importStar(require("@effect/io/Effect"));
4
30
  const path_1 = require("path");
5
- const get_1 = require("tightrope/fn/get");
6
- const pipe_1 = require("tightrope/fn/pipe");
7
31
  const is_array_of_strings_1 = require("tightrope/guard/is-array-of-strings");
8
- const and_then_1 = require("tightrope/result/and-then");
9
- const filter_1 = require("tightrope/result/filter");
10
32
  const constants_1 = require("../../constants");
11
33
  const read_json_safe_1 = require("./read-json-safe");
12
- function getLernaPatterns(disk) {
13
- return function getLernaPatterns() {
14
- return (0, pipe_1.pipe)((0, path_1.join)(constants_1.CWD, 'lerna.json'), (0, read_json_safe_1.readJsonSafe)(disk), (0, and_then_1.andThen)((file) => (0, get_1.get)(file, 'contents', 'packages')), (0, filter_1.filter)(is_array_of_strings_1.isArrayOfStrings, 'no lerna patterns found'));
15
- };
34
+ function getLernaPatterns() {
35
+ return (0, Function_1.pipe)((0, read_json_safe_1.readJsonSafe)((0, path_1.join)(constants_1.CWD, 'lerna.json')), Effect.map((file) => (0, is_array_of_strings_1.isArrayOfStrings)(file?.contents?.packages) ? O.some(file.contents.packages) : O.none()), Effect.catchTags({
36
+ ReadFileError: () => Effect.succeed(O.none()),
37
+ JsonParseError: () => Effect.succeed(O.none()),
38
+ }));
16
39
  }
17
40
  exports.getLernaPatterns = getLernaPatterns;
@@ -1,3 +1,4 @@
1
- import type { Result } from 'tightrope/result';
2
- import type { Disk } from '../../lib/disk';
3
- export declare function getPnpmPatterns(disk: Disk): () => Result<string[]>;
1
+ import * as O from '@effect/data/Option';
2
+ import * as Effect from '@effect/io/Effect';
3
+ import { type Env } from '../../env/create-env';
4
+ export declare function getPnpmPatterns(): Effect.Effect<Env, never, O.Option<string[]>>;