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,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getSemverRange = void 0;
4
- const is_semver_1 = require("../lib/is-semver");
5
- function getSemverRange({ cli, rcFile, }) {
6
- return (0, is_semver_1.isValidSemverRange)(cli.semverRange)
4
+ const is_valid_semver_range_1 = require("../guards/is-valid-semver-range");
5
+ function getSemverRange({ cli, rcFile }) {
6
+ return (0, is_valid_semver_range_1.isValidSemverRange)(cli.semverRange)
7
7
  ? cli.semverRange
8
- : (0, is_semver_1.isValidSemverRange)(rcFile.semverRange)
8
+ : (0, is_valid_semver_range_1.isValidSemverRange)(rcFile.semverRange)
9
9
  ? rcFile.semverRange
10
10
  : '';
11
11
  }
@@ -1,2 +1,2 @@
1
- import type { Context } from '../get-context';
2
- export declare function getSortAz({ rcFile }: Context['config']): string[];
1
+ import type { Ctx } from '../get-context';
2
+ export declare function getSortAz({ rcFile }: Ctx['config']): string[];
@@ -1,2 +1,2 @@
1
- import type { Context } from '../get-context';
2
- export declare function getSortFirst({ rcFile }: Context['config']): string[];
1
+ import type { Ctx } from '../get-context';
2
+ export declare function getSortFirst({ rcFile }: Ctx['config']): string[];
@@ -1,2 +1,2 @@
1
- import type { Context } from '../get-context';
2
- export declare function getSource({ cli, rcFile }: Context['config']): string[];
1
+ import type { Ctx } from '../get-context';
2
+ export declare function getSource({ cli, rcFile }: Ctx['config']): string[];
@@ -2,12 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getSource = void 0;
4
4
  const is_array_of_strings_1 = require("tightrope/guard/is-array-of-strings");
5
- const constants_1 = require("../constants");
6
5
  function getSource({ cli, rcFile }) {
7
6
  return (0, is_array_of_strings_1.isArrayOfStrings)(cli.source)
8
7
  ? cli.source
9
8
  : (0, is_array_of_strings_1.isArrayOfStrings)(rcFile.source)
10
9
  ? rcFile.source
11
- : [...constants_1.DEFAULT_CONFIG.source];
10
+ : [];
12
11
  }
13
12
  exports.getSource = getSource;
@@ -1,3 +1,4 @@
1
+ import * as Context from '@effect/data/Context';
1
2
  import type { Union } from 'ts-toolbelt';
2
3
  /**
3
4
  * Aliases for semver range formats supported by syncpack
@@ -80,13 +81,14 @@ declare namespace CustomTypeConfig {
80
81
  type Any = Union.Strict<NameAndVersionProps | NamedVersionString | UnnamedVersionString | VersionsByName>;
81
82
  }
82
83
  export interface CliConfig {
83
- configPath?: string;
84
- filter: string;
85
- indent: string;
86
- semverRange: SemverRange;
87
- source: string[];
88
- types: string;
84
+ readonly configPath?: string;
85
+ readonly filter: string;
86
+ readonly indent: string;
87
+ readonly semverRange: SemverRange;
88
+ readonly source: string[];
89
+ readonly types: string;
89
90
  }
91
+ export declare const CliConfigTag: Context.Tag<Partial<CliConfig>, Partial<CliConfig>>;
90
92
  export interface RcConfig {
91
93
  /** @see https://jamiemason.github.io/syncpack/config/custom-types */
92
94
  customTypes: Record<string, CustomTypeConfig.Any>;
@@ -1,2 +1,28 @@
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 });
26
+ exports.CliConfigTag = void 0;
27
+ const Context = __importStar(require("@effect/data/Context"));
28
+ exports.CliConfigTag = Context.Tag();
@@ -31,6 +31,6 @@ export declare const DEFAULT_CONFIG: {
31
31
  readonly semverRange: "";
32
32
  readonly sortAz: readonly ["contributors", "dependencies", "devDependencies", "keywords", "peerDependencies", "resolutions", "scripts"];
33
33
  readonly sortFirst: readonly ["name", "description", "version", "author"];
34
- readonly source: readonly [];
34
+ readonly source: string[];
35
35
  readonly versionGroups: readonly [];
36
36
  };
package/dist/constants.js CHANGED
@@ -50,6 +50,6 @@ exports.DEFAULT_CONFIG = {
50
50
  'scripts',
51
51
  ],
52
52
  sortFirst: ['name', 'description', 'version', 'author'],
53
- source: [],
53
+ source: exports.DEFAULT_SOURCES,
54
54
  versionGroups: [],
55
55
  };
@@ -0,0 +1,42 @@
1
+ import type * as Effect from '@effect/io/Effect';
2
+ import type { Env } from '../env/create-env';
3
+ import type { Ctx } from '../get-context';
4
+ import type { AnySemverGroup, SemverGroupReport as SR } from '../get-semver-groups';
5
+ import type { AnyVersionGroup, VersionGroupReport as VR } from '../get-version-groups';
6
+ type R = Effect.Effect<Env | never, never, void>;
7
+ export interface SemverRangeEffectInput<T> {
8
+ ctx: Ctx;
9
+ group: AnySemverGroup;
10
+ index: number;
11
+ report: T;
12
+ }
13
+ export interface VersionEffectInput<T> {
14
+ ctx: Ctx;
15
+ group: AnyVersionGroup;
16
+ index: number;
17
+ report: T;
18
+ }
19
+ export interface SemverRangeEffects {
20
+ FilteredOut: (input: SemverRangeEffectInput<SR.FilteredOut>) => R;
21
+ Ignored: (input: SemverRangeEffectInput<SR.Ignored>) => R;
22
+ SemverRangeMismatch: (input: SemverRangeEffectInput<SR.SemverRangeMismatch>) => R;
23
+ UnsupportedVersion: (input: SemverRangeEffectInput<SR.UnsupportedVersion>) => R;
24
+ Valid: (input: SemverRangeEffectInput<SR.Valid>) => R;
25
+ WorkspaceSemverRangeMismatch: (input: SemverRangeEffectInput<SR.WorkspaceSemverRangeMismatch>) => R;
26
+ TearDown: (ctx: Ctx) => R;
27
+ }
28
+ export interface VersionEffects {
29
+ Banned: (input: VersionEffectInput<VR.Banned>) => R;
30
+ FilteredOut: (input: VersionEffectInput<VR.FilteredOut>) => R;
31
+ HighestSemverMismatch: (input: VersionEffectInput<VR.HighestSemverMismatch>) => R;
32
+ Ignored: (input: VersionEffectInput<VR.Ignored>) => R;
33
+ LowestSemverMismatch: (input: VersionEffectInput<VR.LowestSemverMismatch>) => R;
34
+ PinnedMismatch: (input: VersionEffectInput<VR.PinnedMismatch>) => R;
35
+ SameRangeMismatch: (input: VersionEffectInput<VR.SameRangeMismatch>) => R;
36
+ SnappedToMismatch: (input: VersionEffectInput<VR.SnappedToMismatch>) => R;
37
+ UnsupportedMismatch: (input: VersionEffectInput<VR.UnsupportedMismatch>) => R;
38
+ Valid: (input: VersionEffectInput<VR.Valid>) => R;
39
+ WorkspaceMismatch: (input: VersionEffectInput<VR.WorkspaceMismatch>) => R;
40
+ TearDown: (ctx: Ctx) => R;
41
+ }
42
+ export {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ import * as Effect from '@effect/io/Effect';
2
+ import type { DeprecatedTypesError } from '../config/get-enabled-types';
3
+ import type { Env } from '../env/create-env';
4
+ import type { Ctx } from '../get-context';
5
+ import type { SemverGroupConfigError } from '../get-semver-groups';
6
+ import type { SemverRangeEffects } from './effects';
7
+ export declare function createSemverRangesProgram(ctx: Ctx, effects: SemverRangeEffects): Effect.Effect<Env, SemverGroupConfigError | DeprecatedTypesError, Ctx>;
@@ -0,0 +1,43 @@
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.createSemverRangesProgram = void 0;
27
+ const Function_1 = require("@effect/data/Function");
28
+ const Unify_1 = require("@effect/data/Unify");
29
+ const Effect = __importStar(require("@effect/io/Effect"));
30
+ const Match = __importStar(require("@effect/match"));
31
+ const get_semver_groups_1 = require("../get-semver-groups");
32
+ function createSemverRangesProgram(ctx, effects) {
33
+ return (0, Function_1.pipe)((0, get_semver_groups_1.getSemverGroups)(ctx), Effect.flatMap((semverGroups) => Effect.all(semverGroups.map((group) => Effect.all(group.inspect().map((reportEffect, index) => (0, Function_1.pipe)((0, Unify_1.unify)(reportEffect), Effect.flatMap((0, Function_1.pipe)(Match.type(), Match.tagsExhaustive({
34
+ FilteredOut: (report) => (0, Function_1.pipe)(effects.FilteredOut({ ctx, group, index, report }), Effect.map(() => report)),
35
+ Ignored: (report) => (0, Function_1.pipe)(effects.Ignored({ ctx, group, index, report }), Effect.map(() => report)),
36
+ Valid: (report) => (0, Function_1.pipe)(effects.Valid({ ctx, group, index, report }), Effect.map(() => report)),
37
+ }))), Effect.catchTags({
38
+ SemverRangeMismatch: (report) => (0, Function_1.pipe)(effects.SemverRangeMismatch({ ctx, group, index, report }), Effect.map(() => report)),
39
+ UnsupportedVersion: (report) => (0, Function_1.pipe)(effects.UnsupportedVersion({ ctx, group, index, report }), Effect.map(() => report)),
40
+ WorkspaceSemverRangeMismatch: (report) => (0, Function_1.pipe)(effects.WorkspaceSemverRangeMismatch({ ctx, group, index, report }), Effect.map(() => report)),
41
+ }))))))), Effect.flatMap(() => effects.TearDown(ctx)), Effect.map(() => ctx));
42
+ }
43
+ exports.createSemverRangesProgram = createSemverRangesProgram;
@@ -0,0 +1,7 @@
1
+ import * as Effect from '@effect/io/Effect';
2
+ import type { DeprecatedTypesError } from '../config/get-enabled-types';
3
+ import type { Env } from '../env/create-env';
4
+ import type { Ctx } from '../get-context';
5
+ import type { VersionGroupConfigError } from '../get-version-groups';
6
+ import type { VersionEffects } from './effects';
7
+ export declare function createVersionsProgram(ctx: Ctx, effects: VersionEffects): Effect.Effect<Env, VersionGroupConfigError | DeprecatedTypesError, Ctx>;
@@ -0,0 +1,48 @@
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.createVersionsProgram = void 0;
27
+ const Function_1 = require("@effect/data/Function");
28
+ const Unify_1 = require("@effect/data/Unify");
29
+ const Effect = __importStar(require("@effect/io/Effect"));
30
+ const Match = __importStar(require("@effect/match"));
31
+ const get_version_groups_1 = require("../get-version-groups");
32
+ function createVersionsProgram(ctx, effects) {
33
+ return (0, Function_1.pipe)((0, get_version_groups_1.getVersionGroups)(ctx), Effect.flatMap((versionGroups) => Effect.all(versionGroups.map((group) => Effect.all(group.inspect().map((reportEffect, index) => (0, Function_1.pipe)((0, Unify_1.unify)(reportEffect), Effect.flatMap((0, Function_1.pipe)(Match.type(), Match.tagsExhaustive({
34
+ FilteredOut: (report) => (0, Function_1.pipe)(effects.FilteredOut({ ctx, group, index, report }), Effect.map(() => report)),
35
+ Ignored: (report) => (0, Function_1.pipe)(effects.Ignored({ ctx, group, index, report }), Effect.map(() => report)),
36
+ Valid: (report) => (0, Function_1.pipe)(effects.Valid({ ctx, group, index, report }), Effect.map(() => report)),
37
+ }))), Effect.catchTags({
38
+ Banned: (report) => (0, Function_1.pipe)(effects.Banned({ ctx, group, index, report }), Effect.map(() => report)),
39
+ HighestSemverMismatch: (report) => (0, Function_1.pipe)(effects.HighestSemverMismatch({ ctx, group, index, report }), Effect.map(() => report)),
40
+ LowestSemverMismatch: (report) => (0, Function_1.pipe)(effects.LowestSemverMismatch({ ctx, group, index, report }), Effect.map(() => report)),
41
+ PinnedMismatch: (report) => (0, Function_1.pipe)(effects.PinnedMismatch({ ctx, group, index, report }), Effect.map(() => report)),
42
+ SameRangeMismatch: (report) => (0, Function_1.pipe)(effects.SameRangeMismatch({ ctx, group, index, report }), Effect.map(() => report)),
43
+ SnappedToMismatch: (report) => (0, Function_1.pipe)(effects.SnappedToMismatch({ ctx, group, index, report }), Effect.map(() => report)),
44
+ UnsupportedMismatch: (report) => (0, Function_1.pipe)(effects.UnsupportedMismatch({ ctx, group, index, report }), Effect.map(() => report)),
45
+ WorkspaceMismatch: (report) => (0, Function_1.pipe)(effects.WorkspaceMismatch({ ctx, group, index, report }), Effect.map(() => report)),
46
+ }))))))), Effect.flatMap(() => effects.TearDown(ctx)), Effect.map(() => ctx));
47
+ }
48
+ exports.createVersionsProgram = createVersionsProgram;
@@ -0,0 +1,21 @@
1
+ import * as Effect from '@effect/io/Effect';
2
+ import type { O } from 'ts-toolbelt';
3
+ import type { RcConfig } from '../config/types';
4
+ import type { DefaultEnv } from './default-env';
5
+ import { AskForChoiceError, AskForInputError, GlobError, ReadConfigFileError, ReadFileError, ReadYamlFileError, WriteFileError } from './tags';
6
+ export interface Env {
7
+ readonly askForChoice: (opts: {
8
+ message: string;
9
+ choices: string[];
10
+ }) => Effect.Effect<never, AskForChoiceError, string>;
11
+ readonly askForInput: (opts: {
12
+ message: string;
13
+ }) => Effect.Effect<never, AskForInputError, string>;
14
+ readonly exitProcess: (code: number) => Effect.Effect<never, never, void>;
15
+ readonly globSync: (patterns: string[]) => Effect.Effect<never, GlobError, string[]>;
16
+ readonly readConfigFileSync: (configPath?: string) => Effect.Effect<never, ReadConfigFileError, O.Partial<RcConfig, 'deep'>>;
17
+ readonly readFileSync: (filePath: string) => Effect.Effect<never, ReadFileError, string>;
18
+ readonly readYamlFileSync: <T = unknown>(filePath: string) => Effect.Effect<never, ReadYamlFileError, T>;
19
+ readonly writeFileSync: (filePath: string, contents: string) => Effect.Effect<never, WriteFileError, void>;
20
+ }
21
+ export declare function createEnv(env: DefaultEnv): Env;
@@ -0,0 +1,60 @@
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.createEnv = void 0;
27
+ const Effect = __importStar(require("@effect/io/Effect"));
28
+ const tags_1 = require("./tags");
29
+ function createEnv(env) {
30
+ return {
31
+ askForChoice(opts) {
32
+ return Effect.tryCatchPromise(() => env.askForChoice(opts), (err) => new tags_1.AskForChoiceError({ error: String(err) }));
33
+ },
34
+ askForInput(opts) {
35
+ return Effect.tryCatchPromise(() => env.askForInput(opts), (err) => new tags_1.AskForInputError({ error: String(err) }));
36
+ },
37
+ // @FIXME: process.exit is probably handled some other way in effect-ts
38
+ exitProcess(code) {
39
+ return Effect.sync(() => {
40
+ env.exitProcess(code);
41
+ });
42
+ },
43
+ globSync(patterns) {
44
+ return Effect.tryCatch(() => env.globSync(patterns), (err) => new tags_1.GlobError({ error: String(err) }));
45
+ },
46
+ readConfigFileSync(filePath) {
47
+ return Effect.tryCatch(() => env.readConfigFileSync(filePath), (err) => new tags_1.ReadConfigFileError({ filePath: filePath || '', error: String(err) }));
48
+ },
49
+ readFileSync(filePath) {
50
+ return Effect.tryCatch(() => env.readFileSync(filePath), (err) => new tags_1.ReadFileError({ filePath, error: String(err) }));
51
+ },
52
+ readYamlFileSync(filePath) {
53
+ return Effect.tryCatch(() => env.readYamlFileSync(filePath), (err) => new tags_1.ReadYamlFileError({ filePath, error: String(err) }));
54
+ },
55
+ writeFileSync(filePath, contents) {
56
+ return Effect.tryCatch(() => env.writeFileSync(filePath, contents), (err) => new tags_1.WriteFileError({ filePath, error: String(err) }));
57
+ },
58
+ };
59
+ }
60
+ exports.createEnv = createEnv;
@@ -0,0 +1,18 @@
1
+ import type { O } from 'ts-toolbelt';
2
+ import type { RcConfig } from '../config/types';
3
+ export interface DefaultEnv {
4
+ readonly askForChoice: (opts: {
5
+ message: string;
6
+ choices: string[];
7
+ }) => Promise<string>;
8
+ readonly askForInput: (opts: {
9
+ message: string;
10
+ }) => Promise<string>;
11
+ readonly exitProcess: (code: number) => void;
12
+ readonly globSync: (patterns: string[]) => string[];
13
+ readonly readConfigFileSync: (configPath?: string) => O.Partial<RcConfig, 'deep'>;
14
+ readonly readFileSync: (filePath: string) => string;
15
+ readonly readYamlFileSync: <T = unknown>(filePath: string) => T;
16
+ readonly writeFileSync: (filePath: string, contents: string) => void;
17
+ }
18
+ export declare const defaultEnv: DefaultEnv;
@@ -0,0 +1,95 @@
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.defaultEnv = void 0;
27
+ const cosmiconfig_1 = require("cosmiconfig");
28
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
29
+ // @ts-ignore Select *does* exist
30
+ const enquirer_1 = require("enquirer");
31
+ const fs_extra_1 = require("fs-extra");
32
+ const globby = __importStar(require("globby"));
33
+ const path_1 = require("path");
34
+ const readYamlFile = __importStar(require("read-yaml-file"));
35
+ const is_non_empty_object_1 = require("tightrope/guard/is-non-empty-object");
36
+ const constants_1 = require("../constants");
37
+ const log_verbose_1 = require("../lib/log-verbose");
38
+ exports.defaultEnv = {
39
+ /* istanbul ignore next */
40
+ askForChoice({ message, choices }) {
41
+ return new enquirer_1.Select({ name: 'choice', message, choices }).run();
42
+ },
43
+ /* istanbul ignore next */
44
+ askForInput({ message }) {
45
+ return new enquirer_1.Input({ message }).run();
46
+ },
47
+ /* istanbul ignore next */
48
+ globSync(patterns) {
49
+ (0, log_verbose_1.logVerbose)('globSync(', patterns, ')');
50
+ return globby.sync(patterns, {
51
+ ignore: ['**/node_modules/**'],
52
+ absolute: true,
53
+ cwd: constants_1.CWD,
54
+ });
55
+ },
56
+ /* istanbul ignore next */
57
+ exitProcess(code) {
58
+ (0, log_verbose_1.logVerbose)('exit(', code, ')');
59
+ process.exit(code);
60
+ },
61
+ readConfigFileSync(configPath) {
62
+ (0, log_verbose_1.logVerbose)('readConfigFileSync(', configPath, ')');
63
+ const client = (0, cosmiconfig_1.cosmiconfigSync)('syncpack');
64
+ const result = configPath ? client.load(configPath) : client.search();
65
+ if (!(0, is_non_empty_object_1.isNonEmptyObject)(result)) {
66
+ const rcPath = (0, path_1.join)(constants_1.CWD, 'package.json');
67
+ const pjson = (0, fs_extra_1.readJsonSync)(rcPath, { throws: false });
68
+ const rcConfig = pjson?.config?.syncpack;
69
+ if ((0, is_non_empty_object_1.isNonEmptyObject)(rcConfig))
70
+ return rcConfig;
71
+ (0, log_verbose_1.logVerbose)('no config file found');
72
+ return {};
73
+ }
74
+ const rcPath = result.filepath;
75
+ const rcConfig = result.config;
76
+ (0, log_verbose_1.logVerbose)('.syncpackrc path:', rcPath);
77
+ (0, log_verbose_1.logVerbose)('.syncpackrc contents:', rcConfig);
78
+ return rcConfig;
79
+ },
80
+ /* istanbul ignore next */
81
+ readFileSync(filePath) {
82
+ (0, log_verbose_1.logVerbose)('readFileSync(', filePath, ')');
83
+ return (0, fs_extra_1.readFileSync)(filePath, { encoding: 'utf8' });
84
+ },
85
+ /* istanbul ignore next */
86
+ readYamlFileSync(filePath) {
87
+ (0, log_verbose_1.logVerbose)('readYamlFileSync(', filePath, ')');
88
+ return readYamlFile.sync(filePath);
89
+ },
90
+ /* istanbul ignore next */
91
+ writeFileSync(filePath, contents) {
92
+ (0, log_verbose_1.logVerbose)('writeFileSync(', filePath, contents, ')');
93
+ (0, fs_extra_1.writeFileSync)(filePath, contents);
94
+ },
95
+ };
@@ -0,0 +1,4 @@
1
+ import * as Effect from '@effect/io/Effect';
2
+ import type { Ctx } from '../get-context';
3
+ import { type Env } from './create-env';
4
+ export declare function exitIfInvalid(ctx: Ctx): Effect.Effect<Env, never, Ctx>;
@@ -0,0 +1,34 @@
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.exitIfInvalid = void 0;
27
+ const Function_1 = require("@effect/data/Function");
28
+ const Effect = __importStar(require("@effect/io/Effect"));
29
+ const tags_1 = require("./tags");
30
+ // @TODO what's the effect-ts way to process.exit?
31
+ function exitIfInvalid(ctx) {
32
+ return (0, Function_1.pipe)(tags_1.EnvTag, Effect.flatMap((env) => (ctx.isInvalid ? env.exitProcess(1) : Effect.unit())), Effect.map(() => ctx));
33
+ }
34
+ exports.exitIfInvalid = exitIfInvalid;
@@ -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 {};