syncpack 12.4.0 → 14.0.0-alpha.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 (232) hide show
  1. package/index.js +48 -0
  2. package/package.json +17 -76
  3. package/schema.json +917 -0
  4. package/syncpack.d.ts +122 -0
  5. package/LICENSE +0 -20
  6. package/dist/bin-fix-mismatches/fix-mismatches.d.ts +0 -16
  7. package/dist/bin-fix-mismatches/fix-mismatches.js +0 -110
  8. package/dist/bin-fix-mismatches/index.d.ts +0 -2
  9. package/dist/bin-fix-mismatches/index.js +0 -64
  10. package/dist/bin-format/format.d.ts +0 -13
  11. package/dist/bin-format/format.js +0 -90
  12. package/dist/bin-format/index.d.ts +0 -2
  13. package/dist/bin-format/index.js +0 -53
  14. package/dist/bin-lint/index.d.ts +0 -2
  15. package/dist/bin-lint/index.js +0 -38
  16. package/dist/bin-lint/lint.d.ts +0 -11
  17. package/dist/bin-lint/lint.js +0 -52
  18. package/dist/bin-lint-semver-ranges/index.d.ts +0 -2
  19. package/dist/bin-lint-semver-ranges/index.js +0 -65
  20. package/dist/bin-lint-semver-ranges/lint-semver-ranges.d.ts +0 -16
  21. package/dist/bin-lint-semver-ranges/lint-semver-ranges.js +0 -91
  22. package/dist/bin-list/index.d.ts +0 -2
  23. package/dist/bin-list/index.js +0 -57
  24. package/dist/bin-list/list.d.ts +0 -14
  25. package/dist/bin-list/list.js +0 -147
  26. package/dist/bin-list-mismatches/index.d.ts +0 -2
  27. package/dist/bin-list-mismatches/index.js +0 -59
  28. package/dist/bin-list-mismatches/list-mismatches.d.ts +0 -18
  29. package/dist/bin-list-mismatches/list-mismatches.js +0 -218
  30. package/dist/bin-prompt/index.d.ts +0 -2
  31. package/dist/bin-prompt/index.js +0 -61
  32. package/dist/bin-prompt/prompt.d.ts +0 -11
  33. package/dist/bin-prompt/prompt.js +0 -93
  34. package/dist/bin-set-semver-ranges/index.d.ts +0 -2
  35. package/dist/bin-set-semver-ranges/index.js +0 -69
  36. package/dist/bin-set-semver-ranges/set-semver-ranges.d.ts +0 -11
  37. package/dist/bin-set-semver-ranges/set-semver-ranges.js +0 -58
  38. package/dist/bin-update/effects.d.ts +0 -52
  39. package/dist/bin-update/effects.js +0 -267
  40. package/dist/bin-update/index.d.ts +0 -2
  41. package/dist/bin-update/index.js +0 -54
  42. package/dist/bin-update/update.d.ts +0 -6
  43. package/dist/bin-update/update.js +0 -59
  44. package/dist/bin.d.ts +0 -2
  45. package/dist/bin.js +0 -37
  46. package/dist/config/get-custom-types.d.ts +0 -19
  47. package/dist/config/get-custom-types.js +0 -50
  48. package/dist/config/get-enabled-types.d.ts +0 -17
  49. package/dist/config/get-enabled-types.js +0 -94
  50. package/dist/config/get-filter.d.ts +0 -2
  51. package/dist/config/get-filter.js +0 -10
  52. package/dist/config/get-indent.d.ts +0 -2
  53. package/dist/config/get-indent.js +0 -9
  54. package/dist/config/get-sort-az.d.ts +0 -2
  55. package/dist/config/get-sort-az.js +0 -8
  56. package/dist/config/get-sort-exports.d.ts +0 -2
  57. package/dist/config/get-sort-exports.js +0 -8
  58. package/dist/config/get-sort-first.d.ts +0 -2
  59. package/dist/config/get-sort-first.js +0 -8
  60. package/dist/config/get-source.d.ts +0 -2
  61. package/dist/config/get-source.js +0 -8
  62. package/dist/config/tag.d.ts +0 -3
  63. package/dist/config/tag.js +0 -2
  64. package/dist/config/types.d.ts +0 -132
  65. package/dist/config/types.js +0 -1
  66. package/dist/constants.d.ts +0 -106
  67. package/dist/constants.js +0 -103
  68. package/dist/error-handlers/default-error-handlers.d.ts +0 -25
  69. package/dist/error-handlers/default-error-handlers.js +0 -80
  70. package/dist/get-context/index.d.ts +0 -23
  71. package/dist/get-context/index.js +0 -18
  72. package/dist/get-context/lib/key-by.d.ts +0 -6
  73. package/dist/get-context/lib/key-by.js +0 -12
  74. package/dist/get-instances/index.d.ts +0 -14
  75. package/dist/get-instances/index.js +0 -42
  76. package/dist/get-instances/instance.d.ts +0 -26
  77. package/dist/get-instances/instance.js +0 -31
  78. package/dist/get-package-json-files/get-file-paths.d.ts +0 -21
  79. package/dist/get-package-json-files/get-file-paths.js +0 -22
  80. package/dist/get-package-json-files/get-patterns/get-lerna-patterns.d.ts +0 -3
  81. package/dist/get-package-json-files/get-patterns/get-lerna-patterns.js +0 -10
  82. package/dist/get-package-json-files/get-patterns/get-pnpm-patterns.d.ts +0 -3
  83. package/dist/get-package-json-files/get-patterns/get-pnpm-patterns.js +0 -14
  84. package/dist/get-package-json-files/get-patterns/get-yarn-patterns.d.ts +0 -3
  85. package/dist/get-package-json-files/get-patterns/get-yarn-patterns.js +0 -16
  86. package/dist/get-package-json-files/get-patterns/index.d.ts +0 -8
  87. package/dist/get-package-json-files/get-patterns/index.js +0 -23
  88. package/dist/get-package-json-files/index.d.ts +0 -10
  89. package/dist/get-package-json-files/index.js +0 -8
  90. package/dist/get-package-json-files/package-json-file.d.ts +0 -47
  91. package/dist/get-package-json-files/package-json-file.js +0 -29
  92. package/dist/guards/can-add-to-group.d.ts +0 -5
  93. package/dist/guards/can-add-to-group.js +0 -52
  94. package/dist/guards/is-semver.d.ts +0 -2
  95. package/dist/guards/is-semver.js +0 -13
  96. package/dist/guards/is-valid-semver-range.d.ts +0 -3
  97. package/dist/guards/is-valid-semver-range.js +0 -14
  98. package/dist/index.d.ts +0 -2
  99. package/dist/index.js +0 -1
  100. package/dist/io/ask-for-choice.d.ts +0 -14
  101. package/dist/io/ask-for-choice.js +0 -17
  102. package/dist/io/ask-for-input.d.ts +0 -13
  103. package/dist/io/ask-for-input.js +0 -14
  104. package/dist/io/exit-if-invalid.d.ts +0 -4
  105. package/dist/io/exit-if-invalid.js +0 -9
  106. package/dist/io/glob-sync.d.ts +0 -11
  107. package/dist/io/glob-sync.js +0 -14
  108. package/dist/io/index.d.ts +0 -27
  109. package/dist/io/index.js +0 -26
  110. package/dist/io/read-config-file.d.ts +0 -7
  111. package/dist/io/read-config-file.js +0 -22
  112. package/dist/io/read-file-sync.d.ts +0 -12
  113. package/dist/io/read-file-sync.js +0 -9
  114. package/dist/io/read-json-file-sync.d.ts +0 -30
  115. package/dist/io/read-json-file-sync.js +0 -19
  116. package/dist/io/read-yaml-file-sync.d.ts +0 -12
  117. package/dist/io/read-yaml-file-sync.js +0 -9
  118. package/dist/io/to-json.d.ts +0 -9
  119. package/dist/io/to-json.js +0 -29
  120. package/dist/io/write-file-sync.d.ts +0 -12
  121. package/dist/io/write-file-sync.js +0 -10
  122. package/dist/io/write-if-changed.d.ts +0 -5
  123. package/dist/io/write-if-changed.js +0 -10
  124. package/dist/lib/format-repository-url.d.ts +0 -1
  125. package/dist/lib/format-repository-url.js +0 -37
  126. package/dist/lib/get-group-header.d.ts +0 -10
  127. package/dist/lib/get-group-header.js +0 -23
  128. package/dist/lib/get.d.ts +0 -11
  129. package/dist/lib/get.js +0 -36
  130. package/dist/lib/pad-start.d.ts +0 -1
  131. package/dist/lib/pad-start.js +0 -3
  132. package/dist/lib/ring-buffer.d.ts +0 -10
  133. package/dist/lib/ring-buffer.js +0 -20
  134. package/dist/lib/set-semver-range.d.ts +0 -3
  135. package/dist/lib/set-semver-range.js +0 -20
  136. package/dist/lib/show-help-on-error.d.ts +0 -2
  137. package/dist/lib/show-help-on-error.js +0 -32
  138. package/dist/lib/sort-by-name.d.ts +0 -5
  139. package/dist/lib/sort-by-name.js +0 -9
  140. package/dist/lib/with-logger.d.ts +0 -2
  141. package/dist/lib/with-logger.js +0 -29
  142. package/dist/option.d.ts +0 -10
  143. package/dist/option.js +0 -27
  144. package/dist/report.d.ts +0 -131
  145. package/dist/report.js +0 -129
  146. package/dist/schema.json +0 -544
  147. package/dist/semver-group/create-semver-groups.d.ts +0 -4
  148. package/dist/semver-group/create-semver-groups.js +0 -79
  149. package/dist/semver-group/disabled.d.ts +0 -26
  150. package/dist/semver-group/disabled.js +0 -28
  151. package/dist/semver-group/filtered-out.d.ts +0 -27
  152. package/dist/semver-group/filtered-out.js +0 -34
  153. package/dist/semver-group/ignored.d.ts +0 -22
  154. package/dist/semver-group/ignored.js +0 -24
  155. package/dist/semver-group/index.d.ts +0 -20
  156. package/dist/semver-group/index.js +0 -7
  157. package/dist/semver-group/with-range.d.ts +0 -22
  158. package/dist/semver-group/with-range.js +0 -45
  159. package/dist/specifier/alias.d.ts +0 -17
  160. package/dist/specifier/alias.js +0 -20
  161. package/dist/specifier/base.d.ts +0 -41
  162. package/dist/specifier/base.js +0 -54
  163. package/dist/specifier/delete.d.ts +0 -17
  164. package/dist/specifier/delete.js +0 -16
  165. package/dist/specifier/exact.d.ts +0 -20
  166. package/dist/specifier/exact.js +0 -21
  167. package/dist/specifier/file.d.ts +0 -8
  168. package/dist/specifier/file.js +0 -7
  169. package/dist/specifier/hosted-git.d.ts +0 -15
  170. package/dist/specifier/hosted-git.js +0 -22
  171. package/dist/specifier/index.d.ts +0 -28
  172. package/dist/specifier/index.js +0 -63
  173. package/dist/specifier/latest.d.ts +0 -19
  174. package/dist/specifier/latest.js +0 -20
  175. package/dist/specifier/lib/non-semver-error.d.ts +0 -11
  176. package/dist/specifier/lib/non-semver-error.js +0 -6
  177. package/dist/specifier/lib/parse-specifier.d.ts +0 -14
  178. package/dist/specifier/lib/parse-specifier.js +0 -16
  179. package/dist/specifier/lib/specific-registry-result.d.ts +0 -9
  180. package/dist/specifier/lib/specific-registry-result.js +0 -1
  181. package/dist/specifier/range.d.ts +0 -19
  182. package/dist/specifier/range.js +0 -20
  183. package/dist/specifier/tag.d.ts +0 -11
  184. package/dist/specifier/tag.js +0 -10
  185. package/dist/specifier/unsupported.d.ts +0 -7
  186. package/dist/specifier/unsupported.js +0 -7
  187. package/dist/specifier/url.d.ts +0 -8
  188. package/dist/specifier/url.js +0 -7
  189. package/dist/specifier/workspace-protocol.d.ts +0 -19
  190. package/dist/specifier/workspace-protocol.js +0 -34
  191. package/dist/strategy/lib/get-non-empty-string-prop.d.ts +0 -3
  192. package/dist/strategy/lib/get-non-empty-string-prop.js +0 -7
  193. package/dist/strategy/name-and-version-props.d.ts +0 -12
  194. package/dist/strategy/name-and-version-props.js +0 -60
  195. package/dist/strategy/named-version-string.d.ts +0 -11
  196. package/dist/strategy/named-version-string.js +0 -49
  197. package/dist/strategy/unnamed-version-string.d.ts +0 -11
  198. package/dist/strategy/unnamed-version-string.js +0 -45
  199. package/dist/strategy/versions-by-name.d.ts +0 -11
  200. package/dist/strategy/versions-by-name.js +0 -25
  201. package/dist/version-group/banned.d.ts +0 -17
  202. package/dist/version-group/banned.js +0 -26
  203. package/dist/version-group/create-version-groups.d.ts +0 -4
  204. package/dist/version-group/create-version-groups.js +0 -114
  205. package/dist/version-group/filtered-out.d.ts +0 -19
  206. package/dist/version-group/filtered-out.js +0 -30
  207. package/dist/version-group/ignored.d.ts +0 -17
  208. package/dist/version-group/ignored.js +0 -23
  209. package/dist/version-group/index.d.ts +0 -26
  210. package/dist/version-group/index.js +0 -7
  211. package/dist/version-group/lib/clean.d.ts +0 -2
  212. package/dist/version-group/lib/clean.js +0 -6
  213. package/dist/version-group/lib/delete.d.ts +0 -2
  214. package/dist/version-group/lib/delete.js +0 -1
  215. package/dist/version-group/lib/get-highest-version.d.ts +0 -6
  216. package/dist/version-group/lib/get-highest-version.js +0 -8
  217. package/dist/version-group/lib/get-lowest-version.d.ts +0 -6
  218. package/dist/version-group/lib/get-lowest-version.js +0 -8
  219. package/dist/version-group/lib/get-preferred-version.d.ts +0 -5
  220. package/dist/version-group/lib/get-preferred-version.js +0 -44
  221. package/dist/version-group/lib/get-range-score.d.ts +0 -2
  222. package/dist/version-group/lib/get-range-score.js +0 -18
  223. package/dist/version-group/lib/group-by.d.ts +0 -5
  224. package/dist/version-group/lib/group-by.js +0 -11
  225. package/dist/version-group/pinned.d.ts +0 -17
  226. package/dist/version-group/pinned.js +0 -26
  227. package/dist/version-group/same-range.d.ts +0 -19
  228. package/dist/version-group/same-range.js +0 -96
  229. package/dist/version-group/snapped-to.d.ts +0 -17
  230. package/dist/version-group/snapped-to.js +0 -69
  231. package/dist/version-group/standard.d.ts +0 -18
  232. package/dist/version-group/standard.js +0 -116
@@ -1,8 +0,0 @@
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)
6
- ? rcFile.sortAz
7
- : DEFAULT_CONFIG.sortAz;
8
- }
@@ -1,2 +0,0 @@
1
- import type { Ctx } from '../get-context/index.js';
2
- export declare function getSortExports({ rcFile }: Ctx['config']): string[];
@@ -1,8 +0,0 @@
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 +0,0 @@
1
- import type { Ctx } from '../get-context/index.js';
2
- export declare function getSortFirst({ rcFile }: Ctx['config']): string[];
@@ -1,8 +0,0 @@
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)
6
- ? rcFile.sortFirst
7
- : DEFAULT_CONFIG.sortFirst;
8
- }
@@ -1,2 +0,0 @@
1
- import type { Ctx } from '../get-context/index.js';
2
- export declare function getSource({ cli, rcFile }: Ctx['config']): string[];
@@ -1,8 +0,0 @@
1
- import { isArrayOfStrings } from 'tightrope/guard/is-array-of-strings.js';
2
- export function getSource({ cli, rcFile }) {
3
- return isArrayOfStrings(cli.source)
4
- ? cli.source
5
- : isArrayOfStrings(rcFile.source)
6
- ? rcFile.source
7
- : [];
8
- }
@@ -1,3 +0,0 @@
1
- import { Context } from 'effect';
2
- import type { CliConfig } from './types.js';
3
- export declare const CliConfigTag: Context.Tag<Partial<CliConfig>, Partial<CliConfig>>;
@@ -1,2 +0,0 @@
1
- import { Context } from 'effect';
2
- export const CliConfigTag = Context.GenericTag('@services/CliConfigTag');
@@ -1,132 +0,0 @@
1
- import type { CUSTOM_TYPES } from '../constants.js';
2
- import type { Specifier } from '../specifier/index.js';
3
- /**
4
- * Aliases for semver range formats supported by syncpack
5
- *
6
- * Defaults to `""` to ensure that exact dependency versions are used instead of
7
- * loose ranges, but this can be overridden in your config file.
8
- *
9
- * | Supported Range | Example |
10
- * | --------------- | --------: |
11
- * | `"<"` | `<1.4.2` |
12
- * | `"<="` | `<=1.4.2` |
13
- * | `""` | `1.4.2` |
14
- * | `"~"` | `~1.4.2` |
15
- * | `"^"` | `^1.4.2` |
16
- * | `">="` | `>=1.4.2` |
17
- * | `">"` | `>1.4.2` |
18
- * | `"*"` | `*` |
19
- *
20
- * @default ""
21
- */
22
- export type SemverRange = '' | '*' | '>' | '>=' | '.x' | '<' | '<=' | '^' | '~' | 'workspace:';
23
- type DefaultDependencyType = keyof typeof CUSTOM_TYPES;
24
- export type DependencyType = DefaultDependencyType | `!${DefaultDependencyType}` | (string & {});
25
- export type SpecifierType = Specifier.Any['name'] | `!${Specifier.Any['name']}` | (string & {});
26
- export interface GroupConfig {
27
- dependencies?: string[];
28
- dependencyTypes?: DependencyType[];
29
- label?: string;
30
- packages?: string[];
31
- specifierTypes?: SpecifierType[];
32
- }
33
- export declare namespace SemverGroupConfig {
34
- interface Disabled extends GroupConfig {
35
- isDisabled: true;
36
- }
37
- interface Ignored extends GroupConfig {
38
- isIgnored: true;
39
- }
40
- interface WithRange extends GroupConfig {
41
- range: SemverRange;
42
- }
43
- type Any = Disabled | Ignored | WithRange;
44
- }
45
- export declare namespace VersionGroupConfig {
46
- interface Banned extends GroupConfig {
47
- isBanned: true;
48
- }
49
- interface Ignored extends GroupConfig {
50
- isIgnored: true;
51
- }
52
- interface Pinned extends GroupConfig {
53
- pinVersion: string;
54
- }
55
- interface SnappedTo extends GroupConfig {
56
- snapTo: string[];
57
- }
58
- interface SameRange extends GroupConfig {
59
- policy: 'sameRange';
60
- }
61
- interface Standard extends GroupConfig {
62
- preferVersion?: 'highestSemver' | 'lowestSemver';
63
- }
64
- type Any = Banned | Ignored | Pinned | SameRange | SnappedTo | Standard;
65
- }
66
- declare namespace CustomTypeConfig {
67
- interface NameAndVersionProps {
68
- namePath: string;
69
- path: string;
70
- strategy: 'name~version';
71
- }
72
- interface NamedVersionString {
73
- path: string;
74
- strategy: 'name@version';
75
- }
76
- interface UnnamedVersionString {
77
- path: string;
78
- strategy: 'version';
79
- }
80
- interface VersionsByName {
81
- path: string;
82
- strategy: 'versionsByName';
83
- }
84
- type Any = NameAndVersionProps | NamedVersionString | UnnamedVersionString | VersionsByName;
85
- }
86
- export interface CliConfig {
87
- readonly configPath?: string;
88
- readonly filter: string;
89
- readonly indent: string;
90
- readonly source: string[];
91
- readonly specs: string;
92
- readonly types: string;
93
- }
94
- export interface RcConfig {
95
- /** @see https://jamiemason.github.io/syncpack/integrations/json-schema */
96
- $schema?: string;
97
- /** @see https://jamiemason.github.io/syncpack/config/custom-types */
98
- customTypes: Record<string, CustomTypeConfig.Any>;
99
- /** @see https://jamiemason.github.io/syncpack/config/dependency-types */
100
- dependencyTypes: DependencyType[];
101
- /** @see https://jamiemason.github.io/syncpack/config/filter */
102
- filter: string;
103
- /** @see https://jamiemason.github.io/syncpack/config/format-bugs */
104
- formatBugs: boolean;
105
- /** @see https://jamiemason.github.io/syncpack/config/format-repository */
106
- formatRepository: boolean;
107
- /** @see https://jamiemason.github.io/syncpack/config/indent */
108
- indent: string;
109
- /** @see https://jamiemason.github.io/syncpack/config/lint-formatting */
110
- lintFormatting: boolean;
111
- /** @see https://jamiemason.github.io/syncpack/config/lint-semver-ranges */
112
- lintSemverRanges: boolean;
113
- /** @see https://jamiemason.github.io/syncpack/config/lint-versions */
114
- lintVersions: boolean;
115
- /** @see https://jamiemason.github.io/syncpack/config/semver-groups */
116
- semverGroups: SemverGroupConfig.Any[];
117
- /** @see https://jamiemason.github.io/syncpack/config/sort-az */
118
- sortAz: string[];
119
- /** @see https://jamiemason.github.io/syncpack/config/sort-exports */
120
- sortExports: string[];
121
- /** @see https://jamiemason.github.io/syncpack/config/sort-first */
122
- sortFirst: string[];
123
- /** @see https://jamiemason.github.io/syncpack/config/sort-packages */
124
- sortPackages: boolean;
125
- /** @see https://jamiemason.github.io/syncpack/config/source */
126
- source: string[];
127
- /** @see https://jamiemason.github.io/syncpack/config/specifier-types */
128
- specifierTypes: SpecifierType[];
129
- /** @see https://jamiemason.github.io/syncpack/config/version-groups */
130
- versionGroups: VersionGroupConfig.Any[];
131
- }
132
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1,106 +0,0 @@
1
- /** Single source of truth, intended to aid testing or to override */
2
- export declare const CWD: string;
3
- /** Single source of truth for icons used in output */
4
- export declare const ICON: {
5
- readonly banned: "⦸";
6
- readonly cross: "✘";
7
- readonly debug: "?";
8
- readonly info: "i";
9
- readonly panic: "!";
10
- readonly rightArrow: "→";
11
- readonly skip: "-";
12
- readonly tick: "✓";
13
- };
14
- export declare const RANGE: {
15
- readonly ANY: "*";
16
- readonly EXACT: "";
17
- readonly GT: ">";
18
- readonly GTE: ">=";
19
- readonly LOOSE: ".x";
20
- readonly LT: "<";
21
- readonly LTE: "<=";
22
- readonly MINOR: "^";
23
- readonly PATCH: "~";
24
- readonly WORKSPACE: "workspace:";
25
- };
26
- export declare const INTERNAL_TYPES: readonly ["dev", "local", "overrides", "peer", "pnpmOverrides", "prod", "resolutions"];
27
- export declare const CUSTOM_TYPES: {
28
- readonly dev: {
29
- readonly strategy: "versionsByName";
30
- readonly path: "devDependencies";
31
- };
32
- readonly local: {
33
- readonly strategy: "name~version";
34
- readonly namePath: "name";
35
- readonly path: "version";
36
- };
37
- readonly overrides: {
38
- readonly strategy: "versionsByName";
39
- readonly path: "overrides";
40
- };
41
- readonly peer: {
42
- readonly strategy: "versionsByName";
43
- readonly path: "peerDependencies";
44
- };
45
- readonly pnpmOverrides: {
46
- readonly strategy: "versionsByName";
47
- readonly path: "pnpm.overrides";
48
- };
49
- readonly prod: {
50
- readonly strategy: "versionsByName";
51
- readonly path: "dependencies";
52
- };
53
- readonly resolutions: {
54
- readonly strategy: "versionsByName";
55
- readonly path: "resolutions";
56
- };
57
- };
58
- export declare const DEFAULT_CONFIG: {
59
- customTypes: {
60
- readonly dev: {
61
- readonly strategy: "versionsByName";
62
- readonly path: "devDependencies";
63
- };
64
- readonly local: {
65
- readonly strategy: "name~version";
66
- readonly namePath: "name";
67
- readonly path: "version";
68
- };
69
- readonly overrides: {
70
- readonly strategy: "versionsByName";
71
- readonly path: "overrides";
72
- };
73
- readonly peer: {
74
- readonly strategy: "versionsByName";
75
- readonly path: "peerDependencies";
76
- };
77
- readonly pnpmOverrides: {
78
- readonly strategy: "versionsByName";
79
- readonly path: "pnpm.overrides";
80
- };
81
- readonly prod: {
82
- readonly strategy: "versionsByName";
83
- readonly path: "dependencies";
84
- };
85
- readonly resolutions: {
86
- readonly strategy: "versionsByName";
87
- readonly path: "resolutions";
88
- };
89
- };
90
- dependencyTypes: "**"[];
91
- filter: string;
92
- formatBugs: true;
93
- formatRepository: true;
94
- indent: string;
95
- lintFormatting: true;
96
- lintSemverRanges: true;
97
- lintVersions: true;
98
- semverGroups: never[];
99
- sortAz: string[];
100
- sortExports: string[];
101
- sortFirst: string[];
102
- sortPackages: true;
103
- source: string[];
104
- specifierTypes: "**"[];
105
- versionGroups: never[];
106
- };
package/dist/constants.js DELETED
@@ -1,103 +0,0 @@
1
- /** Single source of truth, intended to aid testing or to override */
2
- export const CWD = process.env.MOCK_CWD || process.cwd();
3
- /** Single source of truth for icons used in output */
4
- export const ICON = {
5
- banned: '⦸',
6
- cross: '✘',
7
- debug: '?',
8
- info: 'i',
9
- panic: '!',
10
- rightArrow: '→',
11
- skip: '-',
12
- tick: '✓',
13
- };
14
- export const RANGE = {
15
- ANY: '*',
16
- EXACT: '',
17
- GT: '>',
18
- GTE: '>=',
19
- LOOSE: '.x',
20
- LT: '<',
21
- LTE: '<=',
22
- MINOR: '^',
23
- PATCH: '~',
24
- WORKSPACE: 'workspace:',
25
- };
26
- export const INTERNAL_TYPES = [
27
- 'dev',
28
- 'local',
29
- 'overrides',
30
- 'peer',
31
- 'pnpmOverrides',
32
- 'prod',
33
- 'resolutions',
34
- ];
35
- export const CUSTOM_TYPES = {
36
- dev: {
37
- strategy: 'versionsByName',
38
- path: 'devDependencies',
39
- },
40
- local: {
41
- strategy: 'name~version',
42
- namePath: 'name',
43
- path: 'version',
44
- },
45
- overrides: {
46
- strategy: 'versionsByName',
47
- path: 'overrides',
48
- },
49
- peer: {
50
- strategy: 'versionsByName',
51
- path: 'peerDependencies',
52
- },
53
- pnpmOverrides: {
54
- strategy: 'versionsByName',
55
- path: 'pnpm.overrides',
56
- },
57
- prod: {
58
- strategy: 'versionsByName',
59
- path: 'dependencies',
60
- },
61
- resolutions: {
62
- strategy: 'versionsByName',
63
- path: 'resolutions',
64
- },
65
- };
66
- export const DEFAULT_CONFIG = {
67
- customTypes: CUSTOM_TYPES,
68
- dependencyTypes: ['**'],
69
- filter: '.',
70
- formatBugs: true,
71
- formatRepository: true,
72
- indent: ' ',
73
- lintFormatting: true,
74
- lintSemverRanges: true,
75
- lintVersions: true,
76
- semverGroups: [],
77
- sortAz: [
78
- 'bin',
79
- 'contributors',
80
- 'dependencies',
81
- 'devDependencies',
82
- 'keywords',
83
- 'peerDependencies',
84
- 'resolutions',
85
- 'scripts',
86
- ],
87
- sortExports: [
88
- 'types',
89
- 'node-addons',
90
- 'node',
91
- 'browser',
92
- 'import',
93
- 'require',
94
- 'development',
95
- 'production',
96
- 'default',
97
- ],
98
- sortFirst: ['name', 'description', 'version', 'author'],
99
- sortPackages: true,
100
- source: ['package.json', 'packages/*/package.json'],
101
- specifierTypes: ['**'],
102
- versionGroups: [],
103
- };
@@ -1,25 +0,0 @@
1
- import { Effect } from 'effect';
2
- import type { InvalidCustomTypeError } from '../config/get-custom-types.js';
3
- import type { DeprecatedTypesError, RenamedWorkspaceTypeError } from '../config/get-enabled-types.js';
4
- import type { NoSourcesFoundError } from '../get-package-json-files/get-file-paths.js';
5
- import type { GlobError } from '../io/glob-sync.js';
6
- import type { ReadFileError } from '../io/read-file-sync.js';
7
- import type { JsonParseError } from '../io/read-json-file-sync.js';
8
- import type { WriteFileError } from '../io/write-file-sync.js';
9
- import type { SemverGroup } from '../semver-group/index.js';
10
- import type { VersionGroup } from '../version-group/index.js';
11
- type R = Effect.Effect<void>;
12
- export interface ErrorHandlers {
13
- DeprecatedTypesError(err: DeprecatedTypesError): R;
14
- InvalidCustomTypeError(err: InvalidCustomTypeError): R;
15
- RenamedWorkspaceTypeError(err: RenamedWorkspaceTypeError): R;
16
- SemverGroupConfigError(err: SemverGroup.ConfigError): R;
17
- VersionGroupConfigError(err: VersionGroup.ConfigError): R;
18
- GlobError(err: GlobError): R;
19
- JsonParseError(err: JsonParseError): R;
20
- NoSourcesFoundError(err: NoSourcesFoundError): R;
21
- ReadFileError(err: ReadFileError): R;
22
- WriteFileError(err: WriteFileError): R;
23
- }
24
- export declare const defaultErrorHandlers: ErrorHandlers;
25
- export {};
@@ -1,80 +0,0 @@
1
- import chalk from 'chalk';
2
- import { Effect } from 'effect';
3
- import { EOL } from 'os';
4
- export const defaultErrorHandlers = {
5
- // getContext
6
- GlobError(err) {
7
- return Effect.logError([
8
- chalk.red('An error was found when processing your source globs'),
9
- chalk.red(' Error:', err.error),
10
- ].join(EOL));
11
- },
12
- JsonParseError(err) {
13
- return Effect.logError([
14
- chalk.red('An error was found when parsing a JSON file'),
15
- chalk.red(' File:', err.filePath),
16
- chalk.red(' Error:', err.error),
17
- ].join(EOL));
18
- },
19
- NoSourcesFoundError(err) {
20
- return Effect.logError([
21
- chalk.red('No package.json files were found'),
22
- chalk.red(' CWD:', err.CWD),
23
- chalk.red(' Sources:', err.patterns),
24
- ].join(EOL));
25
- },
26
- ReadFileError(err) {
27
- return Effect.logError([
28
- chalk.red('An error was found when reading a file'),
29
- chalk.red(' File:', err.filePath),
30
- chalk.red(' Error:', err.error),
31
- ].join(EOL));
32
- },
33
- // Others
34
- DeprecatedTypesError(err) {
35
- const url = 'https://github.com/JamieMason/syncpack/releases/tag/9.0.0';
36
- return Effect.logError([
37
- chalk.red(`Your syncpack config file contains values deprecated in ${url}`),
38
- chalk.red(' Dependency Types:', err.types),
39
- chalk.red(' Docs: https://jamiemason.github.io/syncpack/config/dependency-types'),
40
- ].join(EOL));
41
- },
42
- InvalidCustomTypeError(err) {
43
- return Effect.logError([
44
- chalk.red('Your syncpack config file contains an invalid custom type'),
45
- chalk.red(' Error:', err.reason),
46
- chalk.red(' Config:', err.config),
47
- chalk.red(' Docs: https://jamiemason.github.io/syncpack/config/custom-types'),
48
- ].join(EOL));
49
- },
50
- RenamedWorkspaceTypeError() {
51
- const url = 'https://github.com/JamieMason/syncpack/releases/tag/11.2.1';
52
- return Effect.logError([
53
- chalk.red(`The "workspace" dependency type was renamed to "local" in ${url}`),
54
- chalk.red(' Docs: https://jamiemason.github.io/syncpack/config/dependency-types'),
55
- ].join(EOL));
56
- },
57
- SemverGroupConfigError(err) {
58
- return Effect.logError([
59
- chalk.red('Your semver group config contains an error'),
60
- chalk.red(' Error:', err.error),
61
- chalk.red(' Config:', err.config),
62
- chalk.red(' Docs: https://jamiemason.github.io/syncpack/config/semver-groups'),
63
- ].join(EOL));
64
- },
65
- VersionGroupConfigError(err) {
66
- return Effect.logError([
67
- chalk.red('Your version group config contains an error'),
68
- chalk.red(' Error:', err.error),
69
- chalk.red(' Config:', err.config),
70
- chalk.red(' Docs: https://jamiemason.github.io/syncpack/config/version-groups'),
71
- ].join(EOL));
72
- },
73
- WriteFileError(err) {
74
- return Effect.logError([
75
- chalk.red('An error was found when writing to a file'),
76
- chalk.red(' File:', err.filePath),
77
- chalk.red(' Error:', err.error),
78
- ].join(EOL));
79
- },
80
- };
@@ -1,23 +0,0 @@
1
- import { Effect } from 'effect';
2
- import type { O } from 'ts-toolbelt';
3
- import { type CliConfig, type RcConfig } from '../config/types.js';
4
- import type { ErrorHandlers } from '../error-handlers/default-error-handlers.js';
5
- import type { PackageJsonFile } from '../get-package-json-files/package-json-file.js';
6
- import type { Io } from '../io/index.js';
7
- export interface Ctx {
8
- readonly config: {
9
- readonly cli: Partial<CliConfig>;
10
- readonly rcFile: O.Partial<RcConfig, 'deep'>;
11
- };
12
- /** @TODO: Replace with Effect Exit/Cause */
13
- isInvalid: boolean;
14
- packageJsonFiles: PackageJsonFile[];
15
- packageJsonFilesByName: Record<string, PackageJsonFile>;
16
- }
17
- interface Input {
18
- io: Io;
19
- cli: Partial<CliConfig>;
20
- errorHandlers: ErrorHandlers;
21
- }
22
- export declare function getContext({ io, cli, errorHandlers }: Input): Effect.Effect<Ctx>;
23
- export {};
@@ -1,18 +0,0 @@
1
- import { Effect, flow, pipe } from 'effect';
2
- import { getPackageJsonFiles } from '../get-package-json-files/index.js';
3
- import { readConfigFile } from '../io/read-config-file.js';
4
- import { keyBy } from './lib/key-by.js';
5
- export function getContext({ io, cli, errorHandlers }) {
6
- const exitOnError = Effect.flatMap(() => Effect.failSync(() => io.process.exit(1)));
7
- return pipe(Effect.Do, Effect.bind('rcFile', () => readConfigFile(io, cli.configPath)), Effect.bind('packageJsonFiles', ({ rcFile }) => getPackageJsonFiles(io, { cli, rcFile })), Effect.map(({ rcFile, packageJsonFiles }) => ({
8
- config: { cli, rcFile },
9
- isInvalid: false,
10
- packageJsonFiles,
11
- packageJsonFilesByName: keyBy('name', packageJsonFiles),
12
- })), Effect.catchTags({
13
- GlobError: flow(errorHandlers.GlobError, exitOnError),
14
- JsonParseError: flow(errorHandlers.JsonParseError, exitOnError),
15
- NoSourcesFoundError: flow(errorHandlers.NoSourcesFoundError, exitOnError),
16
- ReadFileError: flow(errorHandlers.ReadFileError, exitOnError),
17
- }));
18
- }
@@ -1,6 +0,0 @@
1
- /**
2
- * Convert an array of objects to an object, where each member of the array has
3
- * a unique value for the given key. The new object keys each object by its
4
- * value for the given key.
5
- */
6
- export declare function keyBy<A extends any[]>(key: string, array: A): Record<string, A[number]>;
@@ -1,12 +0,0 @@
1
- /**
2
- * Convert an array of objects to an object, where each member of the array has
3
- * a unique value for the given key. The new object keys each object by its
4
- * value for the given key.
5
- */
6
- export function keyBy(key, array) {
7
- return array.reduce((objectsByKeyValue, obj) => {
8
- const value = obj[key];
9
- objectsByKeyValue[value] = obj;
10
- return objectsByKeyValue;
11
- }, {});
12
- }
@@ -1,14 +0,0 @@
1
- import { Effect } from 'effect';
2
- import type { ErrorHandlers } from '../error-handlers/default-error-handlers.js';
3
- import type { Ctx } from '../get-context/index.js';
4
- import type { Io } from '../io/index.js';
5
- import type { SemverGroup } from '../semver-group/index.js';
6
- import type { VersionGroup } from '../version-group/index.js';
7
- import type { Instance } from './instance.js';
8
- interface Instances {
9
- all: Instance[];
10
- semverGroups: SemverGroup.Any[];
11
- versionGroups: VersionGroup.Any[];
12
- }
13
- export declare function getInstances(ctx: Ctx, io: Io, errorHandlers: ErrorHandlers): Effect.Effect<Instances>;
14
- export {};
@@ -1,42 +0,0 @@
1
- import { Effect, flow, pipe } from 'effect';
2
- import { getEnabledTypes } from '../config/get-enabled-types.js';
3
- import { canAddToGroup } from '../guards/can-add-to-group.js';
4
- import { sortByName } from '../lib/sort-by-name.js';
5
- import { createSemverGroups } from '../semver-group/create-semver-groups.js';
6
- import { createVersionGroups } from '../version-group/create-version-groups.js';
7
- export function getInstances(ctx, io, errorHandlers) {
8
- const exitOnError = Effect.flatMap(() => Effect.failSync(() => io.process.exit(1)));
9
- return pipe(Effect.Do, Effect.bind('enabledTypes', () => getEnabledTypes(ctx.config)), Effect.bind('semverGroups', () => createSemverGroups(ctx)), Effect.bind('versionGroups', () => createVersionGroups(ctx)), Effect.bind('instances', (acc) => pipe(ctx.packageJsonFiles, Effect.forEach((file) => file.getInstances(acc.enabledTypes)), Effect.map((instancesByFile) => instancesByFile.flat()))), Effect.tap(({ instances, semverGroups, versionGroups }) => Effect.sync(() => {
10
- for (const instance of instances) {
11
- // assign each instance to its semver group, first match wins
12
- assignToSemverGroup: for (const group of semverGroups) {
13
- if (canAddToGroup(ctx.packageJsonFilesByName, group, instance)) {
14
- instance.semverGroup = group;
15
- group.instances.push(instance);
16
- break assignToSemverGroup;
17
- }
18
- }
19
- // assign each instance to its version group, first match wins
20
- assignToVersionGroup: for (const group of versionGroups) {
21
- if (canAddToGroup(ctx.packageJsonFilesByName, group, instance)) {
22
- instance.versionGroup = group;
23
- group.instances.push(instance);
24
- break assignToVersionGroup;
25
- }
26
- }
27
- }
28
- })), Effect.map(({ instances, semverGroups, versionGroups }) => ({
29
- all: instances,
30
- semverGroups: getSortedAndFiltered(semverGroups),
31
- versionGroups: getSortedAndFiltered(versionGroups),
32
- })), Effect.catchTags({
33
- DeprecatedTypesError: flow(errorHandlers.DeprecatedTypesError, exitOnError),
34
- InvalidCustomTypeError: flow(errorHandlers.InvalidCustomTypeError, exitOnError),
35
- RenamedWorkspaceTypeError: flow(errorHandlers.RenamedWorkspaceTypeError, exitOnError),
36
- SemverGroupConfigError: flow(errorHandlers.SemverGroupConfigError, exitOnError),
37
- VersionGroupConfigError: flow(errorHandlers.VersionGroupConfigError, exitOnError),
38
- }));
39
- function getSortedAndFiltered(groups) {
40
- return groups.filter((group) => group.instances.sort(sortByName).length > 0);
41
- }
42
- }
@@ -1,26 +0,0 @@
1
- import type { Effect } from 'effect';
2
- import type { Strategy } from '../config/get-custom-types.js';
3
- import type { PackageJsonFile } from '../get-package-json-files/package-json-file.js';
4
- import type { SemverGroup } from '../semver-group/index.js';
5
- import { Specifier } from '../specifier/index.js';
6
- import type { VersionGroup } from '../version-group/index.js';
7
- import type { Delete } from '../version-group/lib/delete.js';
8
- export declare class Instance {
9
- /** The name of this dependency */
10
- name: string;
11
- /** The .name property of the package.json file of this instance */
12
- pkgName: string;
13
- /** The specifier as it is on disk before being fixed */
14
- rawSpecifier: Specifier.Any;
15
- /** The package this dependency is installed in this specific time */
16
- packageJsonFile: PackageJsonFile;
17
- /** Locates where in the file this dependency is installed */
18
- strategy: Strategy.Any;
19
- /** The semver group this instance belongs to */
20
- semverGroup: SemverGroup.Any;
21
- /** The version group this instance belongs to */
22
- versionGroup: VersionGroup.Any;
23
- constructor(name: string, rawSpecifier: string, packageJsonFile: PackageJsonFile, strategy: Strategy.Any);
24
- /** Mutate the package.json file in memory with the latest version specifier */
25
- write(rawSpecifier: string | Delete): Effect.Effect<PackageJsonFile>;
26
- }