syncpack 12.2.0 → 12.3.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 (209) hide show
  1. package/README.md +5 -5
  2. package/dist/bin-fix-mismatches/fix-mismatches.d.ts +9 -9
  3. package/dist/bin-fix-mismatches/fix-mismatches.js +43 -54
  4. package/dist/bin-fix-mismatches/index.js +26 -31
  5. package/dist/bin-format/format.d.ts +6 -4
  6. package/dist/bin-format/format.js +78 -53
  7. package/dist/bin-format/index.js +20 -25
  8. package/dist/bin-lint/index.js +15 -20
  9. package/dist/bin-lint/lint.d.ts +4 -4
  10. package/dist/bin-lint/lint.js +51 -19
  11. package/dist/bin-lint-semver-ranges/index.js +24 -29
  12. package/dist/bin-lint-semver-ranges/lint-semver-ranges.d.ts +8 -8
  13. package/dist/bin-lint-semver-ranges/lint-semver-ranges.js +34 -44
  14. package/dist/bin-list/index.js +24 -29
  15. package/dist/bin-list/list.d.ts +7 -7
  16. package/dist/bin-list/list.js +55 -64
  17. package/dist/bin-list-mismatches/index.js +24 -29
  18. package/dist/bin-list-mismatches/list-mismatches.d.ts +10 -10
  19. package/dist/bin-list-mismatches/list-mismatches.js +62 -70
  20. package/dist/bin-prompt/index.js +26 -31
  21. package/dist/bin-prompt/prompt.d.ts +4 -4
  22. package/dist/bin-prompt/prompt.js +41 -48
  23. package/dist/bin-set-semver-ranges/index.js +26 -31
  24. package/dist/bin-set-semver-ranges/set-semver-ranges.d.ts +4 -4
  25. package/dist/bin-set-semver-ranges/set-semver-ranges.js +26 -30
  26. package/dist/bin-update/effects.d.ts +18 -18
  27. package/dist/bin-update/effects.js +77 -106
  28. package/dist/bin-update/index.js +23 -28
  29. package/dist/bin-update/update.d.ts +5 -5
  30. package/dist/bin-update/update.js +37 -45
  31. package/dist/bin.js +8 -5
  32. package/dist/config/get-custom-types.d.ts +9 -9
  33. package/dist/config/get-custom-types.js +22 -27
  34. package/dist/config/get-enabled-types.d.ts +8 -8
  35. package/dist/config/get-enabled-types.js +42 -48
  36. package/dist/config/get-filter.d.ts +1 -1
  37. package/dist/config/get-filter.js +6 -9
  38. package/dist/config/get-indent.d.ts +1 -1
  39. package/dist/config/get-indent.js +6 -9
  40. package/dist/config/get-sort-az.d.ts +1 -1
  41. package/dist/config/get-sort-az.js +6 -17
  42. package/dist/config/get-sort-exports.d.ts +2 -0
  43. package/dist/config/get-sort-exports.js +8 -0
  44. package/dist/config/get-sort-first.d.ts +1 -1
  45. package/dist/config/get-sort-first.js +6 -8
  46. package/dist/config/get-source.d.ts +1 -1
  47. package/dist/config/get-source.js +4 -8
  48. package/dist/config/tag.d.ts +1 -1
  49. package/dist/config/tag.js +2 -5
  50. package/dist/config/types.d.ts +16 -5
  51. package/dist/config/types.js +1 -2
  52. package/dist/constants.d.ts +7 -0
  53. package/dist/constants.js +25 -10
  54. package/dist/error-handlers/default-error-handlers.d.ts +10 -10
  55. package/dist/error-handlers/default-error-handlers.js +55 -61
  56. package/dist/get-context/index.d.ts +5 -5
  57. package/dist/get-context/index.js +13 -17
  58. package/dist/get-context/lib/key-by.js +1 -5
  59. package/dist/get-instances/index.d.ts +7 -7
  60. package/dist/get-instances/index.js +19 -23
  61. package/dist/get-instances/instance.d.ts +7 -7
  62. package/dist/get-instances/instance.js +4 -8
  63. package/dist/get-package-json-files/get-file-paths.d.ts +7 -7
  64. package/dist/get-package-json-files/get-file-paths.js +10 -15
  65. package/dist/get-package-json-files/get-patterns/get-lerna-patterns.d.ts +2 -2
  66. package/dist/get-package-json-files/get-patterns/get-lerna-patterns.js +8 -12
  67. package/dist/get-package-json-files/get-patterns/get-pnpm-patterns.d.ts +2 -2
  68. package/dist/get-package-json-files/get-patterns/get-pnpm-patterns.js +8 -12
  69. package/dist/get-package-json-files/get-patterns/get-yarn-patterns.d.ts +2 -2
  70. package/dist/get-package-json-files/get-patterns/get-yarn-patterns.js +14 -18
  71. package/dist/get-package-json-files/get-patterns/index.d.ts +3 -3
  72. package/dist/get-package-json-files/get-patterns/index.js +11 -15
  73. package/dist/get-package-json-files/index.d.ts +8 -8
  74. package/dist/get-package-json-files/index.js +6 -10
  75. package/dist/get-package-json-files/package-json-file.d.ts +6 -6
  76. package/dist/get-package-json-files/package-json-file.js +8 -12
  77. package/dist/guards/can-add-to-group.d.ts +4 -4
  78. package/dist/guards/can-add-to-group.js +10 -14
  79. package/dist/guards/is-semver.js +3 -7
  80. package/dist/guards/is-valid-semver-range.d.ts +1 -1
  81. package/dist/guards/is-valid-semver-range.js +12 -16
  82. package/dist/index.d.ts +1 -1
  83. package/dist/index.js +1 -2
  84. package/dist/io/ask-for-choice.d.ts +5 -5
  85. package/dist/io/ask-for-choice.js +5 -9
  86. package/dist/io/ask-for-input.d.ts +5 -5
  87. package/dist/io/ask-for-input.js +5 -9
  88. package/dist/io/exit-if-invalid.d.ts +3 -3
  89. package/dist/io/exit-if-invalid.js +5 -9
  90. package/dist/io/glob-sync.d.ts +5 -5
  91. package/dist/io/glob-sync.js +4 -9
  92. package/dist/io/index.d.ts +8 -8
  93. package/dist/io/index.js +12 -38
  94. package/dist/io/read-config-file.d.ts +7 -0
  95. package/dist/io/read-config-file.js +22 -0
  96. package/dist/io/read-file-sync.d.ts +5 -5
  97. package/dist/io/read-file-sync.js +4 -9
  98. package/dist/io/read-json-file-sync.d.ts +8 -8
  99. package/dist/io/read-json-file-sync.js +10 -16
  100. package/dist/io/read-yaml-file-sync.d.ts +5 -5
  101. package/dist/io/read-yaml-file-sync.js +4 -8
  102. package/dist/io/to-json.d.ts +9 -0
  103. package/dist/io/to-json.js +29 -0
  104. package/dist/io/write-file-sync.d.ts +5 -5
  105. package/dist/io/write-file-sync.js +5 -10
  106. package/dist/io/write-if-changed.d.ts +4 -10
  107. package/dist/io/write-if-changed.js +9 -44
  108. package/dist/lib/format-repository-url.js +1 -5
  109. package/dist/lib/get-group-header.d.ts +2 -2
  110. package/dist/lib/get-group-header.js +4 -12
  111. package/dist/lib/get.d.ts +10 -10
  112. package/dist/lib/get.js +15 -19
  113. package/dist/lib/pad-start.js +1 -5
  114. package/dist/lib/ring-buffer.js +1 -5
  115. package/dist/lib/set-semver-range.d.ts +1 -1
  116. package/dist/lib/set-semver-range.js +8 -12
  117. package/dist/lib/show-help-on-error.js +3 -10
  118. package/dist/lib/sort-by-name.js +1 -5
  119. package/dist/lib/with-logger.d.ts +1 -1
  120. package/dist/lib/with-logger.js +17 -24
  121. package/dist/option.d.ts +1 -1
  122. package/dist/option.js +8 -14
  123. package/dist/report.d.ts +2 -2
  124. package/dist/report.js +2 -5
  125. package/dist/schema.json +24 -0
  126. package/dist/semver-group/create-semver-groups.d.ts +3 -3
  127. package/dist/semver-group/create-semver-groups.js +28 -32
  128. package/dist/semver-group/disabled.d.ts +11 -11
  129. package/dist/semver-group/disabled.js +6 -10
  130. package/dist/semver-group/filtered-out.d.ts +12 -12
  131. package/dist/semver-group/filtered-out.js +8 -12
  132. package/dist/semver-group/ignored.d.ts +11 -11
  133. package/dist/semver-group/ignored.js +6 -10
  134. package/dist/semver-group/index.d.ts +6 -7
  135. package/dist/semver-group/index.js +4 -7
  136. package/dist/semver-group/with-range.d.ts +11 -11
  137. package/dist/semver-group/with-range.js +13 -17
  138. package/dist/specifier/alias.d.ts +5 -5
  139. package/dist/specifier/alias.js +9 -13
  140. package/dist/specifier/base.d.ts +7 -7
  141. package/dist/specifier/base.js +9 -13
  142. package/dist/specifier/delete.d.ts +5 -5
  143. package/dist/specifier/delete.js +5 -9
  144. package/dist/specifier/exact.d.ts +6 -6
  145. package/dist/specifier/exact.js +7 -11
  146. package/dist/specifier/file.d.ts +1 -1
  147. package/dist/specifier/file.js +2 -6
  148. package/dist/specifier/hosted-git.d.ts +5 -5
  149. package/dist/specifier/hosted-git.js +9 -13
  150. package/dist/specifier/index.d.ts +13 -13
  151. package/dist/specifier/index.js +28 -31
  152. package/dist/specifier/latest.d.ts +6 -6
  153. package/dist/specifier/latest.js +7 -11
  154. package/dist/specifier/lib/non-semver-error.d.ts +5 -5
  155. package/dist/specifier/lib/non-semver-error.js +3 -7
  156. package/dist/specifier/lib/parse-specifier.d.ts +1 -1
  157. package/dist/specifier/lib/parse-specifier.js +4 -11
  158. package/dist/specifier/lib/specific-registry-result.js +1 -2
  159. package/dist/specifier/range.d.ts +6 -6
  160. package/dist/specifier/range.js +7 -11
  161. package/dist/specifier/tag.d.ts +2 -2
  162. package/dist/specifier/tag.js +2 -6
  163. package/dist/specifier/unsupported.d.ts +1 -1
  164. package/dist/specifier/unsupported.js +2 -6
  165. package/dist/specifier/url.d.ts +1 -1
  166. package/dist/specifier/url.js +2 -6
  167. package/dist/specifier/workspace-protocol.d.ts +7 -7
  168. package/dist/specifier/workspace-protocol.js +9 -13
  169. package/dist/strategy/lib/get-non-empty-string-prop.d.ts +2 -2
  170. package/dist/strategy/lib/get-non-empty-string-prop.js +6 -10
  171. package/dist/strategy/name-and-version-props.d.ts +4 -4
  172. package/dist/strategy/name-and-version-props.js +19 -23
  173. package/dist/strategy/named-version-string.d.ts +4 -4
  174. package/dist/strategy/named-version-string.js +20 -24
  175. package/dist/strategy/unnamed-version-string.d.ts +4 -4
  176. package/dist/strategy/unnamed-version-string.js +17 -21
  177. package/dist/strategy/versions-by-name.d.ts +4 -4
  178. package/dist/strategy/versions-by-name.js +11 -15
  179. package/dist/version-group/banned.d.ts +7 -7
  180. package/dist/version-group/banned.js +8 -12
  181. package/dist/version-group/create-version-groups.d.ts +3 -3
  182. package/dist/version-group/create-version-groups.js +34 -38
  183. package/dist/version-group/filtered-out.d.ts +8 -8
  184. package/dist/version-group/filtered-out.js +8 -12
  185. package/dist/version-group/ignored.d.ts +7 -7
  186. package/dist/version-group/ignored.js +6 -10
  187. package/dist/version-group/index.d.ts +9 -10
  188. package/dist/version-group/index.js +4 -7
  189. package/dist/version-group/lib/clean.js +4 -11
  190. package/dist/version-group/lib/delete.js +1 -4
  191. package/dist/version-group/lib/get-highest-version.d.ts +2 -2
  192. package/dist/version-group/lib/get-highest-version.js +3 -7
  193. package/dist/version-group/lib/get-lowest-version.d.ts +2 -2
  194. package/dist/version-group/lib/get-lowest-version.js +3 -7
  195. package/dist/version-group/lib/get-preferred-version.d.ts +4 -4
  196. package/dist/version-group/lib/get-preferred-version.js +17 -24
  197. package/dist/version-group/lib/get-range-score.js +13 -17
  198. package/dist/version-group/lib/group-by.js +1 -5
  199. package/dist/version-group/pinned.d.ts +7 -7
  200. package/dist/version-group/pinned.js +8 -12
  201. package/dist/version-group/same-range.d.ts +8 -8
  202. package/dist/version-group/same-range.js +23 -30
  203. package/dist/version-group/snapped-to.d.ts +7 -7
  204. package/dist/version-group/snapped-to.js +20 -24
  205. package/dist/version-group/standard.d.ts +7 -7
  206. package/dist/version-group/standard.js +29 -33
  207. package/package.json +30 -37
  208. package/dist/io/read-config-file-sync.d.ts +0 -7
  209. package/dist/io/read-config-file-sync.js +0 -26
@@ -1,19 +1,14 @@
1
1
  #!/usr/bin/env node
2
- "use strict";
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- const chalk_1 = __importDefault(require("chalk"));
8
- const commander_1 = require("commander");
9
- const effect_1 = require("effect");
10
- const io_1 = require("../io");
11
- const show_help_on_error_1 = require("../lib/show-help-on-error");
12
- const option_1 = require("../option");
13
- const update_1 = require("./update");
14
- commander_1.program.description(' Update to the latest versions on the npm registry.');
15
- commander_1.program.on('--help', () => {
16
- console.log((0, chalk_1.default) `
2
+ import chalk from 'chalk-template';
3
+ import { program } from 'commander';
4
+ import { Effect } from 'effect';
5
+ import { io } from '../io/index.js';
6
+ import { showHelpOnError } from '../lib/show-help-on-error.js';
7
+ import { option } from '../option.js';
8
+ import { update } from './update.js';
9
+ program.description(' Update to the latest versions on the npm registry.');
10
+ program.on('--help', () => {
11
+ console.log(chalk `
17
12
  Examples:
18
13
  {dim # uses defaults for resolving packages}
19
14
  syncpack update
@@ -42,18 +37,18 @@ Reference:
42
37
  Pnpm Workspaces {blue.underline https://pnpm.js.org/en/workspaces}
43
38
  `);
44
39
  });
45
- (0, show_help_on_error_1.showHelpOnError)(commander_1.program);
46
- commander_1.program
47
- .option(...option_1.option.source)
48
- .option(...option_1.option.filter)
49
- .option(...option_1.option.config)
50
- .option(...option_1.option.specs)
51
- .option(...option_1.option.types)
40
+ showHelpOnError(program);
41
+ program
42
+ .option(...option.source)
43
+ .option(...option.filter)
44
+ .option(...option.config)
45
+ .option(...option.specs)
46
+ .option(...option.types)
52
47
  .parse(process.argv);
53
- effect_1.Effect.runPromise((0, update_1.update)(io_1.io, {
54
- configPath: commander_1.program.opts().config,
55
- filter: commander_1.program.opts().filter,
56
- source: commander_1.program.opts().source,
57
- specs: commander_1.program.opts().specs,
58
- types: commander_1.program.opts().types,
48
+ Effect.runPromise(update(io, {
49
+ configPath: program.opts().config,
50
+ filter: program.opts().filter,
51
+ source: program.opts().source,
52
+ specs: program.opts().specs,
53
+ types: program.opts().types,
59
54
  }));
@@ -1,6 +1,6 @@
1
1
  import { Effect } from 'effect';
2
- import { type CliConfig } from '../config/types';
3
- import type { ErrorHandlers } from '../error-handlers/default-error-handlers';
4
- import type { Io } from '../io';
5
- import { updateEffects } from './effects';
6
- export declare function update(io: Io, cli: Partial<CliConfig>, effects?: typeof updateEffects, errorHandlers?: ErrorHandlers): Effect.Effect<never, never, unknown>;
2
+ import { type CliConfig } from '../config/types.js';
3
+ import type { ErrorHandlers } from '../error-handlers/default-error-handlers.js';
4
+ import type { Io } from '../io/index.js';
5
+ import { updateEffects } from './effects.js';
6
+ export declare function update(io: Io, cli: Partial<CliConfig>, effects?: typeof updateEffects, errorHandlers?: ErrorHandlers): Effect.Effect<unknown, never, never>;
@@ -1,66 +1,58 @@
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.update = void 0;
7
- const chalk_1 = __importDefault(require("chalk"));
8
- const effect_1 = require("effect");
9
- const semver_1 = require("semver");
10
- const tag_1 = require("../config/tag");
11
- const constants_1 = require("../constants");
12
- const default_error_handlers_1 = require("../error-handlers/default-error-handlers");
13
- const get_context_1 = require("../get-context");
14
- const get_instances_1 = require("../get-instances");
15
- const io_1 = require("../io");
16
- const exit_if_invalid_1 = require("../io/exit-if-invalid");
17
- const write_if_changed_1 = require("../io/write-if-changed");
18
- const with_logger_1 = require("../lib/with-logger");
19
- const specifier_1 = require("../specifier");
20
- const effects_1 = require("./effects");
21
- function update(io, cli, effects = effects_1.updateEffects, errorHandlers = default_error_handlers_1.defaultErrorHandlers) {
22
- return (0, effect_1.pipe)(effect_1.Effect.Do, effect_1.Effect.bind('ctx', () => (0, get_context_1.getContext)({ io, cli, errorHandlers })), effect_1.Effect.bind('instances', ({ ctx }) => (0, get_instances_1.getInstances)(ctx, io, errorHandlers)), effect_1.Effect.bind('update', ({ instances }) => (0, effect_1.pipe)(effect_1.Effect.succeed(instances.all), effect_1.Effect.map((instances) => {
1
+ import chalk from 'chalk-template';
2
+ import { Context, Effect, flow, pipe } from 'effect';
3
+ import { gtr } from 'semver';
4
+ import { CliConfigTag } from '../config/tag.js';
5
+ import { ICON } from '../constants.js';
6
+ import { defaultErrorHandlers } from '../error-handlers/default-error-handlers.js';
7
+ import { getContext } from '../get-context/index.js';
8
+ import { getInstances } from '../get-instances/index.js';
9
+ import { exitIfInvalid } from '../io/exit-if-invalid.js';
10
+ import { IoTag } from '../io/index.js';
11
+ import { writeIfChanged } from '../io/write-if-changed.js';
12
+ import { withLogger } from '../lib/with-logger.js';
13
+ import { Specifier } from '../specifier/index.js';
14
+ import { updateEffects } from './effects.js';
15
+ export function update(io, cli, effects = updateEffects, errorHandlers = defaultErrorHandlers) {
16
+ return pipe(Effect.Do, Effect.bind('ctx', () => getContext({ io, cli, errorHandlers })), Effect.bind('instances', ({ ctx }) => getInstances(ctx, io, errorHandlers)), Effect.bind('updateable', ({ instances }) => {
23
17
  const isVisitedByName = {};
24
18
  const updateable = [];
25
- instances.forEach((instance) => {
26
- if (!isVisitedByName[instance.name] &&
27
- (instance.versionGroup._tag === 'SameRange' ||
28
- instance.versionGroup._tag === 'Standard')) {
29
- const specifier = specifier_1.Specifier.create(instance, instance.rawSpecifier.raw);
19
+ instances.all.forEach((instance) => {
20
+ const _tag = instance.versionGroup._tag;
21
+ if (!isVisitedByName[instance.name] && (_tag === 'SameRange' || _tag === 'Standard')) {
22
+ const specifier = Specifier.create(instance, instance.rawSpecifier.raw);
30
23
  if (specifier._tag === 'Range' || specifier._tag === 'Exact') {
31
24
  isVisitedByName[instance.name] = true;
32
25
  updateable.push(instance);
33
26
  }
34
27
  }
35
28
  });
36
- return updateable;
37
- }), effect_1.Effect.tap(effects_1.updateEffects.onFetchAllStart), effect_1.Effect.flatMap((instances) => (0, effect_1.pipe)(instances, effect_1.Effect.partition((instance) => (0, effect_1.pipe)(effect_1.Effect.succeed(instance), effect_1.Effect.tap(() => effects_1.updateEffects.onFetchStart(instance, instances.length)), effect_1.Effect.flatMap(effects.fetchLatestVersions), effect_1.Effect.tapBoth({
38
- onFailure: () => effects_1.updateEffects.onFetchEnd(instance),
39
- onSuccess: ({ versions }) => effects_1.updateEffects.onFetchEnd(instance, versions),
29
+ return Effect.succeed(updateable);
30
+ }), Effect.bind('update', ({ updateable }) => pipe(Effect.succeed(updateable), Effect.tap(effects.onFetchAllStart), Effect.flatMap((instances) => pipe(instances, Effect.partition((instance) => pipe(Effect.succeed(instance), Effect.tap(() => effects.onFetchStart(instance, instances.length)), Effect.flatMap(effects.fetchLatestVersions), Effect.tapBoth({
31
+ onFailure: () => effects.onFetchEnd(instance),
32
+ onSuccess: ({ versions }) => effects.onFetchEnd(instance, versions),
40
33
  }),
41
34
  // move up to date dependencies to error channel
42
- effect_1.Effect.flatMap((updateable) => (0, semver_1.gtr)(updateable.versions.latest, String(instance.rawSpecifier.raw))
43
- ? (0, effect_1.pipe)(effects_1.updateEffects.onOutdated(instance, updateable.versions.latest), effect_1.Effect.map(() => updateable))
44
- : (0, effect_1.pipe)(effects_1.updateEffects.onUpToDate(instance), effect_1.Effect.flatMap(() => effect_1.Effect.fail(updateable)))),
35
+ Effect.flatMap((updateable) => gtr(updateable.versions.latest, String(instance.rawSpecifier.raw))
36
+ ? pipe(effects.onOutdated(instance, updateable.versions.latest), Effect.map(() => updateable))
37
+ : pipe(effects.onUpToDate(instance), Effect.flatMap(() => Effect.fail(updateable)))),
45
38
  // log error but don't catch it
46
- effect_1.Effect.tapErrorTag('HttpError', ({ error }) => effect_1.Effect.logError((0, chalk_1.default) `{red ${constants_1.ICON.cross} ${error}}`)),
39
+ Effect.tapErrorTag('HttpError', ({ error }) => Effect.logError(chalk `{red ${ICON.cross} ${error}}`)),
47
40
  // log error but don't catch it
48
- effect_1.Effect.tapErrorTag('NpmRegistryError', ({ error }) => effect_1.Effect.logError((0, chalk_1.default) `{red ${constants_1.ICON.cross} ${error}}`))), { concurrency: 10 }),
41
+ Effect.tapErrorTag('NpmRegistryError', ({ error }) => Effect.logError(chalk `{red ${ICON.cross} ${error}}`))), { concurrency: 10 }),
49
42
  // discard errors and up to date dependencies
50
- effect_1.Effect.flatMap(([_, outOfDate]) => effect_1.Effect.succeed(outOfDate)))),
43
+ Effect.flatMap(([_, outOfDate]) => Effect.succeed(outOfDate)))),
51
44
  // always remove the spinner when we're done
52
- effect_1.Effect.tapBoth({
53
- onFailure: effects_1.updateEffects.onFetchAllEnd,
54
- onSuccess: effects_1.updateEffects.onFetchAllEnd,
45
+ Effect.tapBoth({
46
+ onFailure: effects.onFetchAllEnd,
47
+ onSuccess: effects.onFetchAllEnd,
55
48
  }),
56
49
  // ask the user which updates they want
57
- effect_1.Effect.flatMap(effects_1.updateEffects.promptForUpdates),
50
+ Effect.flatMap(effects.promptForUpdates),
58
51
  // if we think the user cancelled, say so
59
- effect_1.Effect.catchTag('PromptCancelled', () => effect_1.Effect.logInfo((0, chalk_1.default) `{red ${constants_1.ICON.panic}} aborting after {blue syncpack update} was cancelled`)))), effect_1.Effect.flatMap(({ ctx }) => (0, effect_1.pipe)((0, write_if_changed_1.writeIfChanged)(ctx), effect_1.Effect.catchTags({
60
- WriteFileError: (0, effect_1.flow)(errorHandlers.WriteFileError, effect_1.Effect.map(() => {
52
+ Effect.catchTag('PromptCancelled', () => Effect.logInfo(chalk `{red ${ICON.panic}} aborting after {blue syncpack update} was cancelled`)))), Effect.flatMap(({ ctx }) => pipe(writeIfChanged(ctx), Effect.catchTags({
53
+ WriteFileError: flow(errorHandlers.WriteFileError, Effect.map(() => {
61
54
  ctx.isInvalid = true;
62
55
  return ctx;
63
56
  })),
64
- }))), effect_1.Effect.flatMap(exit_if_invalid_1.exitIfInvalid), effect_1.Effect.withConcurrency(10), effect_1.Effect.provide((0, effect_1.pipe)(effect_1.Context.empty(), effect_1.Context.add(tag_1.CliConfigTag, cli), effect_1.Context.add(io_1.IoTag, io))), with_logger_1.withLogger);
57
+ }))), Effect.flatMap(exitIfInvalid), Effect.withConcurrency(10), Effect.provide(pipe(Context.empty(), Context.add(CliConfigTag, cli), Context.add(IoTag, io))), withLogger);
65
58
  }
66
- exports.update = update;
package/dist/bin.js CHANGED
@@ -1,9 +1,12 @@
1
1
  #!/usr/bin/env node
2
- "use strict";
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- const commander_1 = require("commander");
5
- commander_1.program
6
- .version(require('../package.json').version)
2
+ import { program } from 'commander';
3
+ import fs from 'fs';
4
+ import path from 'path';
5
+ import { fileURLToPath } from 'url';
6
+ const __filename = fileURLToPath(import.meta.url);
7
+ const __dirname = path.dirname(__filename);
8
+ program
9
+ .version(JSON.parse(fs.readFileSync(`${__dirname}/../package.json`, 'utf8')).version)
7
10
  .command('fix-mismatches', 'set dependencies used with different versions to the same version', {
8
11
  executableFile: './bin-fix-mismatches/index.js',
9
12
  })
@@ -1,19 +1,19 @@
1
- import { Data, Effect } from 'effect';
2
- import type { Ctx } from '../get-context';
3
- import { NameAndVersionPropsStrategy } from '../strategy/name-and-version-props';
4
- import { NamedVersionStringStrategy } from '../strategy/named-version-string';
5
- import { UnnamedVersionStringStrategy } from '../strategy/unnamed-version-string';
6
- import { VersionsByNameStrategy } from '../strategy/versions-by-name';
1
+ import { Effect } from 'effect';
2
+ import type { Ctx } from '../get-context/index.js';
3
+ import { NameAndVersionPropsStrategy } from '../strategy/name-and-version-props.js';
4
+ import { NamedVersionStringStrategy } from '../strategy/named-version-string.js';
5
+ import { UnnamedVersionStringStrategy } from '../strategy/unnamed-version-string.js';
6
+ import { VersionsByNameStrategy } from '../strategy/versions-by-name.js';
7
7
  export declare namespace Strategy {
8
8
  type Any = NameAndVersionPropsStrategy | NamedVersionStringStrategy | UnnamedVersionStringStrategy | VersionsByNameStrategy;
9
9
  }
10
- declare const InvalidCustomTypeError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<Omit<A, keyof import("effect/Equal").Equal>, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" | keyof import("effect/Equal").Equal ? never : P]: A[P]; }) => Data.Data<Readonly<A> & {
10
+ declare const InvalidCustomTypeError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Readonly<A> & {
11
11
  readonly _tag: "InvalidCustomTypeError";
12
- }>;
12
+ };
13
13
  export declare class InvalidCustomTypeError extends InvalidCustomTypeError_base<{
14
14
  readonly config: unknown;
15
15
  readonly reason: string;
16
16
  }> {
17
17
  }
18
- export declare function getCustomTypes({ rcFile, }: Ctx['config']): Effect.Effect<never, InvalidCustomTypeError, Strategy.Any[]>;
18
+ export declare function getCustomTypes({ rcFile, }: Ctx['config']): Effect.Effect<Strategy.Any[], InvalidCustomTypeError>;
19
19
  export {};
@@ -1,47 +1,43 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getCustomTypes = exports.InvalidCustomTypeError = void 0;
4
- const effect_1 = require("effect");
5
- const is_non_empty_object_1 = require("tightrope/guard/is-non-empty-object");
6
- const is_non_empty_string_1 = require("tightrope/guard/is-non-empty-string");
7
- const is_object_1 = require("tightrope/guard/is-object");
8
- const constants_1 = require("../constants");
9
- const name_and_version_props_1 = require("../strategy/name-and-version-props");
10
- const named_version_string_1 = require("../strategy/named-version-string");
11
- const unnamed_version_string_1 = require("../strategy/unnamed-version-string");
12
- const versions_by_name_1 = require("../strategy/versions-by-name");
13
- class InvalidCustomTypeError extends effect_1.Data.TaggedClass('InvalidCustomTypeError') {
1
+ import { Data, Effect } from 'effect';
2
+ import { isNonEmptyObject } from 'tightrope/guard/is-non-empty-object.js';
3
+ import { isNonEmptyString } from 'tightrope/guard/is-non-empty-string.js';
4
+ import { isObject } from 'tightrope/guard/is-object.js';
5
+ import { DEFAULT_CONFIG } from '../constants.js';
6
+ import { NameAndVersionPropsStrategy } from '../strategy/name-and-version-props.js';
7
+ import { NamedVersionStringStrategy } from '../strategy/named-version-string.js';
8
+ import { UnnamedVersionStringStrategy } from '../strategy/unnamed-version-string.js';
9
+ import { VersionsByNameStrategy } from '../strategy/versions-by-name.js';
10
+ export class InvalidCustomTypeError extends Data.TaggedClass('InvalidCustomTypeError') {
14
11
  }
15
- exports.InvalidCustomTypeError = InvalidCustomTypeError;
16
- function getCustomTypes({ rcFile, }) {
17
- if (!(0, is_non_empty_object_1.isNonEmptyObject)(rcFile.customTypes))
18
- return effect_1.Effect.succeed([]);
19
- return effect_1.Effect.all([...Object.entries(rcFile.customTypes), ...Object.entries(constants_1.DEFAULT_CONFIG.customTypes)].map(([name, config]) => {
12
+ export function getCustomTypes({ rcFile, }) {
13
+ if (!isNonEmptyObject(rcFile.customTypes))
14
+ return Effect.succeed([]);
15
+ return Effect.all([...Object.entries(rcFile.customTypes), ...Object.entries(DEFAULT_CONFIG.customTypes)].map(([name, config]) => {
20
16
  const ERR_OBJ = 'Invalid customType';
21
17
  const ERR_PATH = 'Invalid customType.path';
22
18
  const ERR_NAME_PATH = 'Invalid customType.namePath';
23
19
  const ERR_STRATEGY = 'Invalid customType.strategy';
24
- if (!(0, is_object_1.isObject)(config))
20
+ if (!isObject(config))
25
21
  return createError(config, ERR_OBJ);
26
- if (!(0, is_non_empty_string_1.isNonEmptyString)(config.path))
22
+ if (!isNonEmptyString(config.path))
27
23
  return createError(config, ERR_PATH);
28
24
  const path = config.path;
29
25
  const strategy = config.strategy;
30
26
  switch (strategy) {
31
27
  case 'name~version': {
32
28
  const namePath = config.namePath;
33
- if (!(0, is_non_empty_string_1.isNonEmptyString)(namePath))
29
+ if (!isNonEmptyString(namePath))
34
30
  return createError(config, ERR_NAME_PATH);
35
- return effect_1.Effect.succeed(new name_and_version_props_1.NameAndVersionPropsStrategy(name, path, namePath));
31
+ return Effect.succeed(new NameAndVersionPropsStrategy(name, path, namePath));
36
32
  }
37
33
  case 'name@version': {
38
- return effect_1.Effect.succeed(new named_version_string_1.NamedVersionStringStrategy(name, path));
34
+ return Effect.succeed(new NamedVersionStringStrategy(name, path));
39
35
  }
40
36
  case 'version': {
41
- return effect_1.Effect.succeed(new unnamed_version_string_1.UnnamedVersionStringStrategy(name, path));
37
+ return Effect.succeed(new UnnamedVersionStringStrategy(name, path));
42
38
  }
43
39
  case 'versionsByName': {
44
- return effect_1.Effect.succeed(new versions_by_name_1.VersionsByNameStrategy(name, path));
40
+ return Effect.succeed(new VersionsByNameStrategy(name, path));
45
41
  }
46
42
  default: {
47
43
  return createError(config, ERR_STRATEGY);
@@ -49,7 +45,6 @@ function getCustomTypes({ rcFile, }) {
49
45
  }
50
46
  }));
51
47
  }
52
- exports.getCustomTypes = getCustomTypes;
53
48
  function createError(config, reason) {
54
- return effect_1.Effect.fail(new InvalidCustomTypeError({ config, reason }));
49
+ return Effect.fail(new InvalidCustomTypeError({ config, reason }));
55
50
  }
@@ -1,17 +1,17 @@
1
- import { Data, Effect } from 'effect';
2
- import type { Ctx } from '../get-context';
3
- import type { InvalidCustomTypeError, Strategy } from './get-custom-types';
4
- declare const DeprecatedTypesError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<Omit<A, keyof import("effect/Equal").Equal>, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" | keyof import("effect/Equal").Equal ? never : P]: A[P]; }) => Data.Data<Readonly<A> & {
1
+ import { Effect } from 'effect';
2
+ import type { Ctx } from '../get-context/index.js';
3
+ import type { InvalidCustomTypeError, Strategy } from './get-custom-types.js';
4
+ declare const DeprecatedTypesError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Readonly<A> & {
5
5
  readonly _tag: "DeprecatedTypesError";
6
- }>;
6
+ };
7
7
  export declare class DeprecatedTypesError extends DeprecatedTypesError_base<{
8
8
  readonly types: string[];
9
9
  }> {
10
10
  }
11
- declare const RenamedWorkspaceTypeError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<Omit<A, keyof import("effect/Equal").Equal>, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" | keyof import("effect/Equal").Equal ? never : P]: A[P]; }) => Data.Data<Readonly<A> & {
11
+ declare const RenamedWorkspaceTypeError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Readonly<A> & {
12
12
  readonly _tag: "RenamedWorkspaceTypeError";
13
- }>;
13
+ };
14
14
  export declare class RenamedWorkspaceTypeError extends RenamedWorkspaceTypeError_base<Record<string, never>> {
15
15
  }
16
- export declare function getEnabledTypes({ cli, rcFile, }: Ctx['config']): Effect.Effect<never, DeprecatedTypesError | InvalidCustomTypeError | RenamedWorkspaceTypeError, Strategy.Any[]>;
16
+ export declare function getEnabledTypes({ cli, rcFile, }: Ctx['config']): Effect.Effect<Strategy.Any[], DeprecatedTypesError | InvalidCustomTypeError | RenamedWorkspaceTypeError>;
17
17
  export {};
@@ -1,70 +1,65 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getEnabledTypes = exports.RenamedWorkspaceTypeError = exports.DeprecatedTypesError = void 0;
4
- const effect_1 = require("effect");
5
- const is_array_of_strings_1 = require("tightrope/guard/is-array-of-strings");
6
- const is_boolean_1 = require("tightrope/guard/is-boolean");
7
- const is_empty_array_1 = require("tightrope/guard/is-empty-array");
8
- const is_non_empty_array_1 = require("tightrope/guard/is-non-empty-array");
9
- const is_non_empty_string_1 = require("tightrope/guard/is-non-empty-string");
10
- const constants_1 = require("../constants");
11
- const name_and_version_props_1 = require("../strategy/name-and-version-props");
12
- const versions_by_name_1 = require("../strategy/versions-by-name");
13
- const get_custom_types_1 = require("./get-custom-types");
14
- class DeprecatedTypesError extends effect_1.Data.TaggedClass('DeprecatedTypesError') {
1
+ import { Data, Effect, pipe } from 'effect';
2
+ import { isArrayOfStrings } from 'tightrope/guard/is-array-of-strings.js';
3
+ import { isBoolean } from 'tightrope/guard/is-boolean.js';
4
+ import { isEmptyArray } from 'tightrope/guard/is-empty-array.js';
5
+ import { isNonEmptyArray } from 'tightrope/guard/is-non-empty-array.js';
6
+ import { isNonEmptyString } from 'tightrope/guard/is-non-empty-string.js';
7
+ import { INTERNAL_TYPES } from '../constants.js';
8
+ import { NameAndVersionPropsStrategy } from '../strategy/name-and-version-props.js';
9
+ import { VersionsByNameStrategy } from '../strategy/versions-by-name.js';
10
+ import { getCustomTypes } from './get-custom-types.js';
11
+ export class DeprecatedTypesError extends Data.TaggedClass('DeprecatedTypesError') {
15
12
  }
16
- exports.DeprecatedTypesError = DeprecatedTypesError;
17
- class RenamedWorkspaceTypeError extends effect_1.Data.TaggedClass('RenamedWorkspaceTypeError') {
13
+ export class RenamedWorkspaceTypeError extends Data.TaggedClass('RenamedWorkspaceTypeError') {
18
14
  }
19
- exports.RenamedWorkspaceTypeError = RenamedWorkspaceTypeError;
20
- function getEnabledTypes({ cli, rcFile, }) {
21
- return (0, effect_1.pipe)(
15
+ export function getEnabledTypes({ cli, rcFile, }) {
16
+ return pipe(
22
17
  // Look for dependency types defined using the old `{ prod: true }` syntax
23
18
  // deprecated in syncpack@9.0.0
24
- effect_1.Effect.succeed(constants_1.INTERNAL_TYPES.filter((key) => (0, is_boolean_1.isBoolean)(rcFile[key]))),
19
+ Effect.succeed(INTERNAL_TYPES.filter((key) => isBoolean(rcFile[key]))),
25
20
  // Short-circuit and quit if deprecated config is used
26
- effect_1.Effect.flatMap((deprecatedTypeProps) => deprecatedTypeProps.length > 0
27
- ? effect_1.Effect.fail(new DeprecatedTypesError({ types: deprecatedTypeProps }))
28
- : effect_1.Effect.unit), effect_1.Effect.flatMap(() => (0, effect_1.pipe)(effect_1.Effect.Do,
21
+ Effect.flatMap((deprecatedTypeProps) => deprecatedTypeProps.length > 0
22
+ ? Effect.fail(new DeprecatedTypesError({ types: deprecatedTypeProps }))
23
+ : Effect.void), Effect.flatMap(() => pipe(Effect.Do,
29
24
  // Get index of every available strategy, keyed by their names as
30
25
  // they're referred to in config
31
- effect_1.Effect.bind('allStrategiesByName', () => (0, effect_1.pipe)(
26
+ Effect.bind('allStrategiesByName', () => pipe(
32
27
  // Get custom types if any are defined, short-circuit and quit if
33
28
  // any are invalid
34
- (0, get_custom_types_1.getCustomTypes)({ cli, rcFile }),
29
+ getCustomTypes({ cli, rcFile }),
35
30
  // Combine them with the default/internal dependency types
36
- effect_1.Effect.map((customTypes) => Object.fromEntries([
37
- ['dev', new versions_by_name_1.VersionsByNameStrategy('dev', 'devDependencies')],
38
- ['local', new name_and_version_props_1.NameAndVersionPropsStrategy('local', 'version', 'name')],
39
- ['overrides', new versions_by_name_1.VersionsByNameStrategy('overrides', 'overrides')],
40
- ['peer', new versions_by_name_1.VersionsByNameStrategy('peer', 'peerDependencies')],
41
- ['pnpmOverrides', new versions_by_name_1.VersionsByNameStrategy('pnpmOverrides', 'pnpm.overrides')],
42
- ['prod', new versions_by_name_1.VersionsByNameStrategy('prod', 'dependencies')],
43
- ['resolutions', new versions_by_name_1.VersionsByNameStrategy('resolutions', 'resolutions')],
31
+ Effect.map((customTypes) => Object.fromEntries([
32
+ ['dev', new VersionsByNameStrategy('dev', 'devDependencies')],
33
+ ['local', new NameAndVersionPropsStrategy('local', 'version', 'name')],
34
+ ['overrides', new VersionsByNameStrategy('overrides', 'overrides')],
35
+ ['peer', new VersionsByNameStrategy('peer', 'peerDependencies')],
36
+ ['pnpmOverrides', new VersionsByNameStrategy('pnpmOverrides', 'pnpm.overrides')],
37
+ ['prod', new VersionsByNameStrategy('prod', 'dependencies')],
38
+ ['resolutions', new VersionsByNameStrategy('resolutions', 'resolutions')],
44
39
  ...customTypes.map((type) => [type.name, type]),
45
40
  ])))),
46
41
  // The names of every available strategy
47
- effect_1.Effect.bind('allStrategyNames', ({ allStrategiesByName }) => effect_1.Effect.succeed(Object.keys(allStrategiesByName))),
42
+ Effect.bind('allStrategyNames', ({ allStrategiesByName }) => Effect.succeed(Object.keys(allStrategiesByName))),
48
43
  // Create groupings to assign each provided dependencyType to
49
- effect_1.Effect.bind('strategyNamesByStatus', () => effect_1.Effect.succeed({
50
- provided: ((0, is_non_empty_string_1.isNonEmptyString)(cli.types)
44
+ Effect.bind('strategyNamesByStatus', () => Effect.succeed({
45
+ provided: (isNonEmptyString(cli.types)
51
46
  ? cli.types.split(',')
52
- : (0, is_array_of_strings_1.isArrayOfStrings)(rcFile.dependencyTypes)
47
+ : isArrayOfStrings(rcFile.dependencyTypes)
53
48
  ? rcFile.dependencyTypes
54
- : []).filter(is_non_empty_string_1.isNonEmptyString),
49
+ : []).filter(isNonEmptyString),
55
50
  enabled: [],
56
51
  positive: [],
57
52
  negative: [],
58
- })))), effect_1.Effect.tap(({ strategyNamesByStatus }) => effect_1.Effect.logDebug(`dependency types provided by user: ${JSON.stringify(strategyNamesByStatus.provided)}`)),
53
+ })))), Effect.tap(({ strategyNamesByStatus }) => Effect.logDebug(`dependency types provided by user: ${JSON.stringify(strategyNamesByStatus.provided)}`)),
59
54
  // Determine which dependencyTypes should be enabled based on:
60
55
  // * which are defined
61
56
  // * which were listed to be enabled
62
57
  // * which were listed but !negated
63
58
  // * etc.
64
- effect_1.Effect.flatMap(({ allStrategiesByName, allStrategyNames, strategyNamesByStatus }) => {
65
- if ((0, is_empty_array_1.isEmptyArray)(strategyNamesByStatus.provided) ||
59
+ Effect.flatMap(({ allStrategiesByName, allStrategyNames, strategyNamesByStatus }) => {
60
+ if (isEmptyArray(strategyNamesByStatus.provided) ||
66
61
  strategyNamesByStatus.provided.join('') === '**') {
67
- return effect_1.Effect.succeed(allStrategyNames.map(getStrategyByName));
62
+ return Effect.succeed(allStrategyNames.map(getStrategyByName));
68
63
  }
69
64
  strategyNamesByStatus.provided.forEach((name) => {
70
65
  if (name.startsWith('!')) {
@@ -74,14 +69,14 @@ function getEnabledTypes({ cli, rcFile, }) {
74
69
  strategyNamesByStatus.positive.push(name);
75
70
  }
76
71
  });
77
- if ((0, is_non_empty_array_1.isNonEmptyArray)(strategyNamesByStatus.negative)) {
72
+ if (isNonEmptyArray(strategyNamesByStatus.negative)) {
78
73
  allStrategyNames.forEach((name) => {
79
74
  if (!strategyNamesByStatus.negative.includes(name)) {
80
75
  strategyNamesByStatus.enabled.push(name);
81
76
  }
82
77
  });
83
78
  }
84
- if ((0, is_non_empty_array_1.isNonEmptyArray)(strategyNamesByStatus.positive)) {
79
+ if (isNonEmptyArray(strategyNamesByStatus.positive)) {
85
80
  strategyNamesByStatus.positive.forEach((name) => {
86
81
  if (!strategyNamesByStatus.enabled.includes(name)) {
87
82
  strategyNamesByStatus.enabled.push(name);
@@ -89,12 +84,11 @@ function getEnabledTypes({ cli, rcFile, }) {
89
84
  });
90
85
  }
91
86
  if (strategyNamesByStatus.enabled.includes('workspace')) {
92
- return effect_1.Effect.fail(new RenamedWorkspaceTypeError({}));
87
+ return Effect.fail(new RenamedWorkspaceTypeError({}));
93
88
  }
94
- return effect_1.Effect.succeed(strategyNamesByStatus.enabled.map(getStrategyByName));
89
+ return Effect.succeed(strategyNamesByStatus.enabled.map(getStrategyByName));
95
90
  function getStrategyByName(type) {
96
91
  return allStrategiesByName[type];
97
92
  }
98
- }), effect_1.Effect.tap((enabledTypes) => effect_1.Effect.logDebug(`enabled dependency types determined to be: ${JSON.stringify(enabledTypes)}`)));
93
+ }), Effect.tap((enabledTypes) => Effect.logDebug(`enabled dependency types determined to be: ${JSON.stringify(enabledTypes)}`)));
99
94
  }
100
- exports.getEnabledTypes = getEnabledTypes;
@@ -1,2 +1,2 @@
1
- import type { Ctx } from '../get-context';
1
+ import type { Ctx } from '../get-context/index.js';
2
2
  export declare function getFilter({ cli, rcFile }: Ctx['config']): string;
@@ -1,13 +1,10 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getFilter = void 0;
4
- const is_non_empty_string_1 = require("tightrope/guard/is-non-empty-string");
5
- function getFilter({ cli, rcFile }) {
1
+ import { isNonEmptyString } from 'tightrope/guard/is-non-empty-string.js';
2
+ import { DEFAULT_CONFIG } from '../constants.js';
3
+ export function getFilter({ cli, rcFile }) {
6
4
  // @TODO Deprecate `filter` in .syncpackrc
7
- return (0, is_non_empty_string_1.isNonEmptyString)(cli.filter)
5
+ return isNonEmptyString(cli.filter)
8
6
  ? cli.filter
9
- : (0, is_non_empty_string_1.isNonEmptyString)(rcFile.filter)
7
+ : isNonEmptyString(rcFile.filter)
10
8
  ? rcFile.filter
11
- : '.';
9
+ : DEFAULT_CONFIG.filter;
12
10
  }
13
- exports.getFilter = getFilter;
@@ -1,2 +1,2 @@
1
- import type { Ctx } from '../get-context';
1
+ import type { Ctx } from '../get-context/index.js';
2
2
  export declare function getIndent({ cli, rcFile }: Ctx['config']): string;
@@ -1,12 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getIndent = void 0;
4
- const is_non_empty_string_1 = require("tightrope/guard/is-non-empty-string");
5
- function getIndent({ cli, rcFile }) {
6
- return (0, is_non_empty_string_1.isNonEmptyString)(cli.indent)
1
+ import { isNonEmptyString } from 'tightrope/guard/is-non-empty-string.js';
2
+ import { DEFAULT_CONFIG } from '../constants.js';
3
+ export function getIndent({ cli, rcFile }) {
4
+ return isNonEmptyString(cli.indent)
7
5
  ? cli.indent.replaceAll('\\t', '\t')
8
- : (0, is_non_empty_string_1.isNonEmptyString)(rcFile.indent)
6
+ : isNonEmptyString(rcFile.indent)
9
7
  ? rcFile.indent
10
- : ' ';
8
+ : DEFAULT_CONFIG.indent;
11
9
  }
12
- exports.getIndent = getIndent;
@@ -1,2 +1,2 @@
1
- import type { Ctx } from '../get-context';
1
+ import type { Ctx } from '../get-context/index.js';
2
2
  export declare function getSortAz({ rcFile }: Ctx['config']): string[];
@@ -1,19 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSortAz = void 0;
4
- const is_array_of_strings_1 = require("tightrope/guard/is-array-of-strings");
5
- function getSortAz({ rcFile }) {
6
- return (0, is_array_of_strings_1.isArrayOfStrings)(rcFile.sortAz)
1
+ import { isArrayOfStrings } from 'tightrope/guard/is-array-of-strings.js';
2
+ import { isEmptyArray } from 'tightrope/guard/is-empty-array.js';
3
+ import { DEFAULT_CONFIG } from '../constants.js';
4
+ export function getSortAz({ rcFile }) {
5
+ return isArrayOfStrings(rcFile.sortAz) || isEmptyArray(rcFile.sortAz)
7
6
  ? rcFile.sortAz
8
- : [
9
- 'bin',
10
- 'contributors',
11
- 'dependencies',
12
- 'devDependencies',
13
- 'keywords',
14
- 'peerDependencies',
15
- 'resolutions',
16
- 'scripts',
17
- ];
7
+ : DEFAULT_CONFIG.sortAz;
18
8
  }
19
- exports.getSortAz = getSortAz;
@@ -0,0 +1,2 @@
1
+ import type { Ctx } from '../get-context/index.js';
2
+ export declare function getSortExports({ rcFile }: Ctx['config']): string[];
@@ -0,0 +1,8 @@
1
+ import { isArrayOfStrings } from 'tightrope/guard/is-array-of-strings.js';
2
+ import { isEmptyArray } from 'tightrope/guard/is-empty-array.js';
3
+ import { DEFAULT_CONFIG } from '../constants.js';
4
+ export function getSortExports({ rcFile }) {
5
+ return isArrayOfStrings(rcFile.sortExports) || isEmptyArray(rcFile.sortExports)
6
+ ? rcFile.sortExports
7
+ : DEFAULT_CONFIG.sortExports;
8
+ }
@@ -1,2 +1,2 @@
1
- import type { Ctx } from '../get-context';
1
+ import type { Ctx } from '../get-context/index.js';
2
2
  export declare function getSortFirst({ rcFile }: Ctx['config']): string[];
@@ -1,10 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSortFirst = void 0;
4
- const is_array_of_strings_1 = require("tightrope/guard/is-array-of-strings");
5
- function getSortFirst({ rcFile }) {
6
- return (0, is_array_of_strings_1.isArrayOfStrings)(rcFile.sortFirst)
1
+ import { isArrayOfStrings } from 'tightrope/guard/is-array-of-strings.js';
2
+ import { isEmptyArray } from 'tightrope/guard/is-empty-array.js';
3
+ import { DEFAULT_CONFIG } from '../constants.js';
4
+ export function getSortFirst({ rcFile }) {
5
+ return isArrayOfStrings(rcFile.sortFirst) || isEmptyArray(rcFile.sortFirst)
7
6
  ? rcFile.sortFirst
8
- : ['name', 'description', 'version', 'author'];
7
+ : DEFAULT_CONFIG.sortFirst;
9
8
  }
10
- exports.getSortFirst = getSortFirst;