syncpack 11.2.1 → 12.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 (274) hide show
  1. package/README.md +24 -26
  2. package/dist/bin-fix-mismatches/fix-mismatches.d.ts +15 -3
  3. package/dist/bin-fix-mismatches/fix-mismatches.js +124 -35
  4. package/dist/bin-fix-mismatches/index.js +12 -32
  5. package/dist/bin-format/format.d.ts +11 -3
  6. package/dist/bin-format/format.js +51 -61
  7. package/dist/bin-format/index.js +11 -31
  8. package/dist/bin-lint/index.js +8 -28
  9. package/dist/bin-lint/lint.d.ts +10 -3
  10. package/dist/bin-lint/lint.js +11 -35
  11. package/dist/bin-lint-semver-ranges/index.js +11 -39
  12. package/dist/bin-lint-semver-ranges/lint-semver-ranges.d.ts +15 -3
  13. package/dist/bin-lint-semver-ranges/lint-semver-ranges.js +93 -34
  14. package/dist/bin-list/index.js +11 -31
  15. package/dist/bin-list/list.d.ts +11 -3
  16. package/dist/bin-list/list.js +120 -34
  17. package/dist/bin-list-mismatches/index.js +11 -31
  18. package/dist/bin-list-mismatches/list-mismatches.d.ts +18 -3
  19. package/dist/bin-list-mismatches/list-mismatches.js +253 -34
  20. package/dist/bin-prompt/index.js +15 -31
  21. package/dist/bin-prompt/prompt.d.ts +10 -3
  22. package/dist/bin-prompt/prompt.js +87 -33
  23. package/dist/bin-set-semver-ranges/index.js +12 -40
  24. package/dist/bin-set-semver-ranges/set-semver-ranges.d.ts +10 -3
  25. package/dist/bin-set-semver-ranges/set-semver-ranges.js +54 -35
  26. package/dist/bin-update/effects.d.ts +45 -5
  27. package/dist/bin-update/effects.js +214 -128
  28. package/dist/bin-update/index.js +4 -27
  29. package/dist/bin-update/update.d.ts +5 -3
  30. package/dist/bin-update/update.js +56 -37
  31. package/dist/bin.js +0 -1
  32. package/dist/config/get-custom-types.d.ts +11 -1
  33. package/dist/config/get-custom-types.js +26 -21
  34. package/dist/config/get-enabled-types.d.ts +7 -8
  35. package/dist/config/get-enabled-types.js +63 -73
  36. package/dist/config/get-indent.js +1 -1
  37. package/dist/config/tag.d.ts +1 -1
  38. package/dist/config/tag.js +2 -25
  39. package/dist/config/types.d.ts +8 -9
  40. package/dist/constants.d.ts +2 -1
  41. package/dist/constants.js +2 -1
  42. package/dist/error-handlers/default-error-handlers.d.ts +25 -2
  43. package/dist/error-handlers/default-error-handlers.js +60 -36
  44. package/dist/get-context/index.d.ts +12 -6
  45. package/dist/get-context/index.js +13 -30
  46. package/dist/get-context/lib/key-by.d.ts +6 -0
  47. package/dist/get-context/lib/key-by.js +16 -0
  48. package/dist/get-instances/index.d.ts +14 -0
  49. package/dist/get-instances/index.js +46 -0
  50. package/dist/get-instances/instance.d.ts +25 -0
  51. package/dist/get-instances/instance.js +34 -0
  52. package/dist/get-package-json-files/get-file-paths.d.ts +6 -7
  53. package/dist/get-package-json-files/get-file-paths.js +10 -33
  54. package/dist/get-package-json-files/get-patterns/get-lerna-patterns.d.ts +3 -4
  55. package/dist/get-package-json-files/get-patterns/get-lerna-patterns.js +6 -32
  56. package/dist/get-package-json-files/get-patterns/get-pnpm-patterns.d.ts +3 -4
  57. package/dist/get-package-json-files/get-patterns/get-pnpm-patterns.js +6 -32
  58. package/dist/get-package-json-files/get-patterns/get-yarn-patterns.d.ts +3 -4
  59. package/dist/get-package-json-files/get-patterns/get-yarn-patterns.js +11 -40
  60. package/dist/get-package-json-files/get-patterns/index.d.ts +3 -5
  61. package/dist/get-package-json-files/get-patterns/index.js +6 -33
  62. package/dist/get-package-json-files/index.d.ts +6 -5
  63. package/dist/get-package-json-files/index.js +4 -28
  64. package/dist/get-package-json-files/package-json-file.d.ts +16 -16
  65. package/dist/get-package-json-files/package-json-file.js +21 -18
  66. package/dist/guards/can-add-to-group.d.ts +5 -4
  67. package/dist/guards/can-add-to-group.js +8 -4
  68. package/dist/guards/is-semver.d.ts +1 -1
  69. package/dist/guards/is-semver.js +1 -1
  70. package/dist/guards/is-valid-semver-range.d.ts +1 -1
  71. package/dist/guards/is-valid-semver-range.js +1 -1
  72. package/dist/io/ask-for-choice.d.ts +14 -0
  73. package/dist/io/ask-for-choice.js +21 -0
  74. package/dist/io/ask-for-input.d.ts +13 -0
  75. package/dist/io/ask-for-input.js +18 -0
  76. package/dist/io/exit-if-invalid.d.ts +4 -0
  77. package/dist/io/exit-if-invalid.js +13 -0
  78. package/dist/io/glob-sync.d.ts +11 -0
  79. package/dist/io/glob-sync.js +19 -0
  80. package/dist/io/index.d.ts +28 -0
  81. package/dist/{env/exit-if-invalid.js → io/index.js} +27 -9
  82. package/dist/io/read-config-file-sync.d.ts +7 -0
  83. package/dist/io/read-config-file-sync.js +26 -0
  84. package/dist/io/read-file-sync.d.ts +12 -0
  85. package/dist/io/read-file-sync.js +14 -0
  86. package/dist/io/read-json-file-sync.d.ts +30 -0
  87. package/dist/io/read-json-file-sync.js +25 -0
  88. package/dist/io/read-yaml-file-sync.d.ts +12 -0
  89. package/dist/io/read-yaml-file-sync.js +13 -0
  90. package/dist/io/write-file-sync.d.ts +12 -0
  91. package/dist/io/write-file-sync.js +15 -0
  92. package/dist/{env → io}/write-if-changed.d.ts +4 -4
  93. package/dist/io/write-if-changed.js +45 -0
  94. package/dist/lib/get-group-header.d.ts +10 -0
  95. package/dist/lib/get-group-header.js +31 -0
  96. package/dist/lib/get.d.ts +11 -0
  97. package/dist/lib/get.js +40 -0
  98. package/dist/lib/pad-start.d.ts +1 -0
  99. package/dist/lib/pad-start.js +7 -0
  100. package/dist/lib/ring-buffer.d.ts +10 -0
  101. package/dist/lib/ring-buffer.js +24 -0
  102. package/dist/lib/set-semver-range.d.ts +1 -1
  103. package/dist/lib/set-semver-range.js +7 -11
  104. package/dist/lib/with-logger.d.ts +2 -0
  105. package/dist/lib/with-logger.js +35 -0
  106. package/dist/option.d.ts +0 -1
  107. package/dist/option.js +0 -4
  108. package/dist/report.d.ts +166 -0
  109. package/dist/report.js +67 -0
  110. package/dist/schema.json +51 -20
  111. package/dist/semver-group/create-semver-groups.d.ts +4 -0
  112. package/dist/semver-group/create-semver-groups.js +77 -0
  113. package/dist/semver-group/disabled.d.ts +26 -0
  114. package/dist/semver-group/disabled.js +34 -0
  115. package/dist/semver-group/filtered-out.d.ts +27 -0
  116. package/dist/semver-group/filtered-out.js +40 -0
  117. package/dist/semver-group/ignored.d.ts +22 -0
  118. package/dist/semver-group/ignored.js +30 -0
  119. package/dist/semver-group/index.d.ts +22 -0
  120. package/dist/semver-group/index.js +10 -0
  121. package/dist/semver-group/with-range.d.ts +22 -0
  122. package/dist/semver-group/with-range.js +57 -0
  123. package/dist/specifier/alias.d.ts +15 -0
  124. package/dist/specifier/alias.js +22 -0
  125. package/dist/specifier/base.d.ts +39 -0
  126. package/dist/specifier/base.js +56 -0
  127. package/dist/specifier/delete.d.ts +15 -0
  128. package/dist/specifier/delete.js +18 -0
  129. package/dist/specifier/file.d.ts +6 -0
  130. package/dist/specifier/file.js +9 -0
  131. package/dist/specifier/hosted-git.d.ts +13 -0
  132. package/dist/specifier/hosted-git.js +24 -0
  133. package/dist/specifier/index.d.ts +27 -0
  134. package/dist/specifier/index.js +62 -0
  135. package/dist/specifier/lib/non-semver-error.d.ts +11 -0
  136. package/dist/specifier/lib/non-semver-error.js +10 -0
  137. package/dist/specifier/lib/parse-specifier.d.ts +14 -0
  138. package/dist/specifier/lib/parse-specifier.js +23 -0
  139. package/dist/specifier/lib/specific-registry-result.d.ts +9 -0
  140. package/dist/specifier/range.d.ts +18 -0
  141. package/dist/specifier/range.js +23 -0
  142. package/dist/specifier/tag.d.ts +9 -0
  143. package/dist/specifier/tag.js +12 -0
  144. package/dist/specifier/unsupported.d.ts +5 -0
  145. package/dist/specifier/unsupported.js +9 -0
  146. package/dist/specifier/url.d.ts +6 -0
  147. package/dist/specifier/url.js +9 -0
  148. package/dist/specifier/version.d.ts +18 -0
  149. package/dist/specifier/version.js +23 -0
  150. package/dist/specifier/workspace-protocol.d.ts +17 -0
  151. package/dist/specifier/workspace-protocol.js +35 -0
  152. package/dist/strategy/lib/get-non-empty-string-prop.d.ts +2 -2
  153. package/dist/strategy/lib/get-non-empty-string-prop.js +4 -5
  154. package/dist/strategy/name-and-version-props.d.ts +4 -4
  155. package/dist/strategy/name-and-version-props.js +36 -22
  156. package/dist/strategy/named-version-string.d.ts +4 -4
  157. package/dist/strategy/named-version-string.js +25 -25
  158. package/dist/strategy/unnamed-version-string.d.ts +4 -4
  159. package/dist/strategy/unnamed-version-string.js +23 -22
  160. package/dist/strategy/versions-by-name.d.ts +4 -4
  161. package/dist/strategy/versions-by-name.js +12 -12
  162. package/dist/version-group/banned.d.ts +17 -0
  163. package/dist/version-group/banned.js +32 -0
  164. package/dist/version-group/create-version-groups.d.ts +4 -0
  165. package/dist/version-group/create-version-groups.js +107 -0
  166. package/dist/version-group/filtered-out.d.ts +19 -0
  167. package/dist/version-group/filtered-out.js +34 -0
  168. package/dist/version-group/ignored.d.ts +17 -0
  169. package/dist/version-group/ignored.js +27 -0
  170. package/dist/version-group/index.d.ts +28 -0
  171. package/dist/version-group/index.js +10 -0
  172. package/dist/version-group/lib/get-highest-version.d.ts +6 -0
  173. package/dist/version-group/lib/get-highest-version.js +12 -0
  174. package/dist/version-group/lib/get-lowest-version.d.ts +6 -0
  175. package/dist/version-group/lib/get-lowest-version.js +12 -0
  176. package/dist/version-group/lib/get-preferred-version.d.ts +5 -0
  177. package/dist/{get-version-groups/lib/compare-semver.js → version-group/lib/get-preferred-version.js} +14 -2
  178. package/dist/version-group/lib/group-by.d.ts +5 -0
  179. package/dist/{get-version-groups → version-group}/lib/group-by.js +4 -0
  180. package/dist/version-group/pinned.d.ts +17 -0
  181. package/dist/version-group/pinned.js +30 -0
  182. package/dist/version-group/same-range.d.ts +19 -0
  183. package/dist/version-group/same-range.js +108 -0
  184. package/dist/version-group/snapped-to.d.ts +17 -0
  185. package/dist/version-group/snapped-to.js +83 -0
  186. package/dist/version-group/standard.d.ts +18 -0
  187. package/dist/version-group/standard.js +131 -0
  188. package/package.json +33 -33
  189. package/dist/bin-fix-mismatches/effects.d.ts +0 -2
  190. package/dist/bin-fix-mismatches/effects.js +0 -112
  191. package/dist/bin-format/format-cli.d.ts +0 -4
  192. package/dist/bin-format/format-cli.js +0 -42
  193. package/dist/bin-lint-semver-ranges/effects.d.ts +0 -2
  194. package/dist/bin-lint-semver-ranges/effects.js +0 -70
  195. package/dist/bin-list/effects.d.ts +0 -2
  196. package/dist/bin-list/effects.js +0 -114
  197. package/dist/bin-list-mismatches/effects.d.ts +0 -2
  198. package/dist/bin-list-mismatches/effects.js +0 -136
  199. package/dist/bin-prompt/effects.d.ts +0 -2
  200. package/dist/bin-prompt/effects.js +0 -110
  201. package/dist/bin-set-semver-ranges/effects.d.ts +0 -2
  202. package/dist/bin-set-semver-ranges/effects.js +0 -61
  203. package/dist/config/get-semver-range.d.ts +0 -3
  204. package/dist/config/get-semver-range.js +0 -12
  205. package/dist/create-program/effects.d.ts +0 -40
  206. package/dist/create-program/semver-ranges.d.ts +0 -7
  207. package/dist/create-program/semver-ranges.js +0 -55
  208. package/dist/create-program/versions.d.ts +0 -7
  209. package/dist/create-program/versions.js +0 -70
  210. package/dist/env/create-env.d.ts +0 -21
  211. package/dist/env/create-env.js +0 -81
  212. package/dist/env/default-env.d.ts +0 -18
  213. package/dist/env/default-env.js +0 -100
  214. package/dist/env/exit-if-invalid.d.ts +0 -4
  215. package/dist/env/tags.d.ts +0 -58
  216. package/dist/env/tags.js +0 -50
  217. package/dist/env/write-if-changed.js +0 -73
  218. package/dist/error-handlers/create-error-handlers.d.ts +0 -20
  219. package/dist/error-handlers/create-error-handlers.js +0 -60
  220. package/dist/get-package-json-files/get-patterns/read-json-safe.d.ts +0 -23
  221. package/dist/get-package-json-files/get-patterns/read-json-safe.js +0 -43
  222. package/dist/get-semver-groups/filtered-out.d.ts +0 -19
  223. package/dist/get-semver-groups/filtered-out.js +0 -55
  224. package/dist/get-semver-groups/ignored.d.ts +0 -17
  225. package/dist/get-semver-groups/ignored.js +0 -48
  226. package/dist/get-semver-groups/index.d.ts +0 -84
  227. package/dist/get-semver-groups/index.js +0 -139
  228. package/dist/get-semver-groups/with-range.d.ts +0 -18
  229. package/dist/get-semver-groups/with-range.js +0 -79
  230. package/dist/get-version-groups/banned.d.ts +0 -17
  231. package/dist/get-version-groups/banned.js +0 -50
  232. package/dist/get-version-groups/filtered-out.d.ts +0 -19
  233. package/dist/get-version-groups/filtered-out.js +0 -57
  234. package/dist/get-version-groups/ignored.d.ts +0 -17
  235. package/dist/get-version-groups/ignored.js +0 -50
  236. package/dist/get-version-groups/index.d.ts +0 -187
  237. package/dist/get-version-groups/index.js +0 -246
  238. package/dist/get-version-groups/lib/compare-semver.d.ts +0 -1
  239. package/dist/get-version-groups/lib/get-highest-version.d.ts +0 -2
  240. package/dist/get-version-groups/lib/get-highest-version.js +0 -13
  241. package/dist/get-version-groups/lib/get-lowest-version.d.ts +0 -2
  242. package/dist/get-version-groups/lib/get-lowest-version.js +0 -13
  243. package/dist/get-version-groups/lib/get-unique-specifiers.d.ts +0 -2
  244. package/dist/get-version-groups/lib/get-unique-specifiers.js +0 -11
  245. package/dist/get-version-groups/lib/group-by.d.ts +0 -1
  246. package/dist/get-version-groups/pinned.d.ts +0 -17
  247. package/dist/get-version-groups/pinned.js +0 -66
  248. package/dist/get-version-groups/same-range.d.ts +0 -17
  249. package/dist/get-version-groups/same-range.js +0 -73
  250. package/dist/get-version-groups/snapped-to.d.ts +0 -17
  251. package/dist/get-version-groups/snapped-to.js +0 -78
  252. package/dist/get-version-groups/standard.d.ts +0 -18
  253. package/dist/get-version-groups/standard.js +0 -109
  254. package/dist/guards/is-loose-semver.d.ts +0 -2
  255. package/dist/guards/is-loose-semver.js +0 -10
  256. package/dist/instance/create.d.ts +0 -4
  257. package/dist/instance/create.js +0 -142
  258. package/dist/instance/index.d.ts +0 -122
  259. package/dist/instance/index.js +0 -154
  260. package/dist/lib/$R.d.ts +0 -12
  261. package/dist/lib/$R.js +0 -34
  262. package/dist/lib/log-group-header.d.ts +0 -6
  263. package/dist/lib/log-group-header.js +0 -34
  264. package/dist/lib/log-verbose.d.ts +0 -1
  265. package/dist/lib/log-verbose.js +0 -24
  266. package/dist/lib/split-name-and-version.d.ts +0 -5
  267. package/dist/lib/split-name-and-version.js +0 -12
  268. /package/dist/{create-program/effects.js → specifier/lib/specific-registry-result.js} +0 -0
  269. /package/dist/{get-version-groups → version-group}/lib/clean.d.ts +0 -0
  270. /package/dist/{get-version-groups → version-group}/lib/clean.js +0 -0
  271. /package/dist/{get-version-groups → version-group}/lib/delete.d.ts +0 -0
  272. /package/dist/{get-version-groups → version-group}/lib/delete.js +0 -0
  273. /package/dist/{get-version-groups → version-group}/lib/get-range-score.d.ts +0 -0
  274. /package/dist/{get-version-groups → version-group}/lib/get-range-score.js +0 -0
@@ -1,109 +0,0 @@
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.StandardVersionGroup = void 0;
27
- const Data = __importStar(require("@effect/data/Data"));
28
- const Option = __importStar(require("@effect/data/Option"));
29
- const Effect = __importStar(require("@effect/io/Effect"));
30
- const unwrap_1 = require("tightrope/result/unwrap");
31
- const _1 = require(".");
32
- const get_highest_version_1 = require("./lib/get-highest-version");
33
- const get_lowest_version_1 = require("./lib/get-lowest-version");
34
- const get_unique_specifiers_1 = require("./lib/get-unique-specifiers");
35
- const group_by_1 = require("./lib/group-by");
36
- class StandardVersionGroup extends Data.TaggedClass('Standard') {
37
- constructor(isCatchAll, config) {
38
- super({
39
- config,
40
- instances: [],
41
- isCatchAll,
42
- });
43
- }
44
- canAdd(_) {
45
- return true;
46
- }
47
- inspect() {
48
- const instancesByName = (0, group_by_1.groupBy)('name', this.instances);
49
- return Object.entries(instancesByName).map(([name, instances]) => {
50
- var _a;
51
- if (!hasMismatch(instances)) {
52
- return Effect.succeed(new _1.VersionGroupReport.Valid({
53
- name,
54
- instances,
55
- isValid: true,
56
- }));
57
- }
58
- if (hasNonSemverSpecifiers(instances)) {
59
- return Effect.fail(new _1.VersionGroupReport.NonSemverMismatch({
60
- name,
61
- instances,
62
- isValid: false,
63
- }));
64
- }
65
- const localPackageInstance = getLocalPackageInstance(instances);
66
- const localPackageFile = localPackageInstance === null || localPackageInstance === void 0 ? void 0 : localPackageInstance.packageJsonFile;
67
- const localPackageVersion = (_a = localPackageFile === null || localPackageFile === void 0 ? void 0 : localPackageFile.contents) === null || _a === void 0 ? void 0 : _a.version;
68
- const isLocalPackage = localPackageInstance && localPackageVersion;
69
- if (isLocalPackage) {
70
- return Effect.fail(new _1.VersionGroupReport.LocalPackageMismatch({
71
- name,
72
- instances,
73
- isValid: false,
74
- expectedVersion: localPackageVersion,
75
- localPackageInstance,
76
- }));
77
- }
78
- const preferVersion = this.config.preferVersion;
79
- const expectedVersion = getExpectedVersion(preferVersion, instances);
80
- return Effect.fail(preferVersion === 'highestSemver'
81
- ? new _1.VersionGroupReport.HighestSemverMismatch({
82
- name,
83
- instances,
84
- isValid: false,
85
- expectedVersion,
86
- })
87
- : new _1.VersionGroupReport.LowestSemverMismatch({
88
- name,
89
- instances,
90
- isValid: false,
91
- expectedVersion,
92
- }));
93
- });
94
- }
95
- }
96
- exports.StandardVersionGroup = StandardVersionGroup;
97
- function getExpectedVersion(preferVersion, instances) {
98
- const versions = (0, get_unique_specifiers_1.getUniqueSpecifiers)(instances).map((i) => i.specifier);
99
- return (0, unwrap_1.unwrap)(preferVersion === 'highestSemver' ? (0, get_highest_version_1.getHighestVersion)(versions) : (0, get_lowest_version_1.getLowestVersion)(versions));
100
- }
101
- function hasMismatch(instances) {
102
- return (0, get_unique_specifiers_1.getUniqueSpecifiers)(instances).length > 1;
103
- }
104
- function hasNonSemverSpecifiers(instances) {
105
- return instances.some((instance) => Option.isNone(instance.getSemverSpecifier()));
106
- }
107
- function getLocalPackageInstance(instances) {
108
- return instances.find((instance) => instance.strategy.name === 'local');
109
- }
@@ -1,2 +0,0 @@
1
- /** @deprecated */
2
- export declare function isLooseSemver(version: unknown): boolean;
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isLooseSemver = void 0;
4
- const is_string_1 = require("tightrope/guard/is-string");
5
- const is_semver_1 = require("./is-semver");
6
- /** @deprecated */
7
- function isLooseSemver(version) {
8
- return (0, is_string_1.isString)(version) && (0, is_semver_1.isSemver)(version) && version.search(/\.x(\.|$)/) !== -1;
9
- }
10
- exports.isLooseSemver = isLooseSemver;
@@ -1,4 +0,0 @@
1
- import { Instance } from '.';
2
- import type { Strategy } from '../config/get-custom-types';
3
- import type { PackageJsonFile } from '../get-package-json-files/package-json-file';
4
- export declare function createInstance(strategy: Strategy.Any, name: string, packageJsonFile: PackageJsonFile, specifier: string): Instance.Any;
@@ -1,142 +0,0 @@
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.createInstance = void 0;
7
- const npm_package_arg_1 = __importDefault(require("npm-package-arg"));
8
- const _1 = require(".");
9
- function createInstance(strategy, name, packageJsonFile, specifier) {
10
- const pkgName = packageJsonFile.contents.name || 'PACKAGE_JSON_HAS_NO_NAME';
11
- try {
12
- const parsedSpecifier = parseSpecifier(name, specifier, packageJsonFile);
13
- switch (parsedSpecifier.type) {
14
- case 'file':
15
- case 'directory': {
16
- return new _1.Instance.FileInstance({
17
- name,
18
- packageJsonFile,
19
- parsedSpecifier,
20
- pkgName,
21
- specifier,
22
- strategy,
23
- });
24
- }
25
- case 'remote': {
26
- return new _1.Instance.UrlInstance({
27
- name,
28
- packageJsonFile,
29
- parsedSpecifier,
30
- pkgName,
31
- specifier,
32
- strategy,
33
- });
34
- }
35
- case 'git': {
36
- return 'hosted' in parsedSpecifier
37
- ? new _1.Instance.HostedGitInstance({
38
- name,
39
- packageJsonFile,
40
- parsedSpecifier: parsedSpecifier,
41
- pkgName,
42
- specifier,
43
- strategy,
44
- })
45
- : new _1.Instance.UrlInstance({
46
- name,
47
- packageJsonFile,
48
- parsedSpecifier,
49
- pkgName,
50
- specifier,
51
- strategy,
52
- });
53
- }
54
- case 'alias': {
55
- return new _1.Instance.AliasInstance({
56
- name,
57
- packageJsonFile,
58
- parsedSpecifier,
59
- pkgName,
60
- specifier,
61
- strategy,
62
- });
63
- }
64
- case 'version': {
65
- return new _1.Instance.VersionInstance({
66
- name,
67
- packageJsonFile,
68
- parsedSpecifier: parsedSpecifier,
69
- pkgName,
70
- specifier,
71
- strategy,
72
- });
73
- }
74
- case 'range': {
75
- return new _1.Instance.RangeInstance({
76
- name,
77
- packageJsonFile,
78
- parsedSpecifier: parsedSpecifier,
79
- pkgName,
80
- specifier,
81
- strategy,
82
- });
83
- }
84
- case 'tag': {
85
- return new _1.Instance.TagInstance({
86
- name,
87
- packageJsonFile,
88
- parsedSpecifier: parsedSpecifier,
89
- pkgName,
90
- specifier,
91
- strategy,
92
- });
93
- }
94
- case 'workspaceProtocol': {
95
- return new _1.Instance.WorkspaceProtocolInstance({
96
- name,
97
- packageJsonFile,
98
- parsedSpecifier: parsedSpecifier,
99
- pkgName,
100
- specifier,
101
- strategy,
102
- });
103
- }
104
- default: {
105
- return new _1.Instance.UnsupportedInstance({
106
- name,
107
- packageJsonFile,
108
- parsedSpecifier,
109
- pkgName,
110
- specifier,
111
- strategy,
112
- });
113
- }
114
- }
115
- }
116
- catch (err) {
117
- return new _1.Instance.UnsupportedInstance({
118
- name,
119
- packageJsonFile,
120
- parsedSpecifier: err,
121
- pkgName,
122
- specifier,
123
- strategy,
124
- });
125
- }
126
- }
127
- exports.createInstance = createInstance;
128
- function parseSpecifier(name, specifier, packageJsonFile) {
129
- if (specifier.startsWith('workspace:')) {
130
- const parsed = npm_package_arg_1.default.resolve(name, specifier.replace('workspace:', 'file:'), packageJsonFile.dirPath);
131
- return {
132
- type: 'workspaceProtocol',
133
- raw: parsed.raw.replace('file:', 'workspace:'),
134
- name: parsed.name,
135
- escapedName: parsed.escapedName,
136
- scope: parsed.scope,
137
- rawSpec: parsed.rawSpec.replace('file:', 'workspace:'),
138
- saveSpec: parsed.saveSpec.replace('file:', 'workspace:'),
139
- };
140
- }
141
- return npm_package_arg_1.default.resolve(name, specifier, packageJsonFile.dirPath);
142
- }
@@ -1,122 +0,0 @@
1
- import * as Data from '@effect/data/Data';
2
- import * as Option from '@effect/data/Option';
3
- import type npa from 'npm-package-arg';
4
- import type { AliasResult, FileResult, HostedGitResult, RegistryResult, URLResult } from 'npm-package-arg';
5
- import type { Strategy } from '../config/get-custom-types';
6
- import type { PackageJsonFile } from '../get-package-json-files/package-json-file';
7
- import { type Delete } from '../get-version-groups/lib/delete';
8
- /** Extends npm/npm-package-arg to support "workspace:*" */
9
- export interface WorkspaceProtocolResult {
10
- type: 'workspaceProtocol';
11
- raw: string;
12
- name: string | null;
13
- escapedName: string | null;
14
- scope: string | null;
15
- rawSpec: string;
16
- saveSpec: string;
17
- }
18
- export type NpmPackageArgResult = ReturnType<typeof npa.resolve> | WorkspaceProtocolResult;
19
- interface BaseInstance<T extends NpmPackageArgResult | unknown> {
20
- /** the name of this dependency */
21
- name: string;
22
- /** The package this dependency is installed in this specific time */
23
- packageJsonFile: PackageJsonFile;
24
- /** @see https://github.com/npm/npm-package-arg */
25
- parsedSpecifier: T;
26
- /** The .name property of the package.json file of this instance */
27
- pkgName: string;
28
- /** The raw: semver, git, workspace: etc version value */
29
- specifier: string;
30
- /** locates where in the file this dependency is installed */
31
- strategy: Strategy.Any;
32
- }
33
- export declare namespace Instance {
34
- /**
35
- * A helper to create specific classes for each of the possible
36
- * `RegistryResult` types from npm/npm-package-arg. Instead of grouping them
37
- * together we are being more specific
38
- */
39
- type SpecificRegistryResult<T extends RegistryResult['type'] | 'local'> = Omit<RegistryResult, 'type'> & {
40
- type: T;
41
- };
42
- const FileInstance_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: "FileInstance";
44
- }>;
45
- /** An `Instance` whose specifier is a path to a local file or directory */
46
- export class FileInstance extends FileInstance_base<BaseInstance<FileResult>> {
47
- setSpecifier: typeof setSpecifier;
48
- getSemverSpecifier(): Option.Option<string>;
49
- }
50
- const HostedGitInstance_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: "HostedGitInstance";
52
- }>;
53
- /** An `Instance` whose specifier is a Git URL */
54
- export class HostedGitInstance extends HostedGitInstance_base<BaseInstance<HostedGitResult>> {
55
- setSpecifier: typeof setSpecifier;
56
- getSemverSpecifier(): Option.Option<string>;
57
- }
58
- const UrlInstance_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 & {
59
- _tag: "URLInstance";
60
- }>;
61
- /** An `Instance` whose specifier is a URL to a tarball */
62
- export class UrlInstance extends UrlInstance_base<BaseInstance<URLResult>> {
63
- setSpecifier: typeof setSpecifier;
64
- getSemverSpecifier(): Option.Option<string>;
65
- }
66
- const AliasInstance_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 & {
67
- _tag: "AliasInstance";
68
- }>;
69
- /** An `Instance` whose specifier is eg "npm:imageoptim-cli@3.1.7" */
70
- export class AliasInstance extends AliasInstance_base<BaseInstance<AliasResult>> {
71
- setSpecifier(version: string | Delete): void;
72
- getSemverSpecifier(): Option.Option<string>;
73
- }
74
- const VersionInstance_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 & {
75
- _tag: "VersionInstance";
76
- }>;
77
- /** An `Instance` whose specifier is exact semver */
78
- export class VersionInstance extends VersionInstance_base<BaseInstance<SpecificRegistryResult<'version'>>> {
79
- setSpecifier: typeof setSpecifier;
80
- getSemverSpecifier(): Option.Option<string>;
81
- }
82
- const RangeInstance_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 & {
83
- _tag: "RangeInstance";
84
- }>;
85
- /** An `Instance` whose specifier is eg. "*" or "^1.2.3" */
86
- export class RangeInstance extends RangeInstance_base<BaseInstance<SpecificRegistryResult<'range'>>> {
87
- setSpecifier: typeof setSpecifier;
88
- getSemverSpecifier(): Option.Option<string>;
89
- }
90
- const TagInstance_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 & {
91
- _tag: "TagInstance";
92
- }>;
93
- /** An `Instance` whose specifier is eg. "latest" or "made-up-by-some-dev" */
94
- export class TagInstance extends TagInstance_base<BaseInstance<SpecificRegistryResult<'tag'>>> {
95
- setSpecifier: typeof setSpecifier;
96
- getSemverSpecifier(): Option.Option<string>;
97
- }
98
- const WorkspaceProtocolInstance_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 & {
99
- _tag: "WorkspaceProtocolInstance";
100
- }>;
101
- /** An `Instance` whose specifier is "workspace:*" */
102
- export class WorkspaceProtocolInstance extends WorkspaceProtocolInstance_base<BaseInstance<WorkspaceProtocolResult>> {
103
- setSpecifier: typeof setSpecifier;
104
- getSemverSpecifier(): Option.Option<string>;
105
- }
106
- const UnsupportedInstance_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 & {
107
- _tag: "UnsupportedInstance";
108
- }>;
109
- /** An `Instance` whose specifier is not supported by npm */
110
- export class UnsupportedInstance extends UnsupportedInstance_base<BaseInstance<unknown>> {
111
- setSpecifier: typeof setSpecifier;
112
- getSemverSpecifier(): Option.Option<string>;
113
- }
114
- export type Any = FileInstance | HostedGitInstance | UrlInstance | AliasInstance | VersionInstance | RangeInstance | TagInstance | WorkspaceProtocolInstance | UnsupportedInstance;
115
- export {};
116
- }
117
- /**
118
- * In the case of banned dependencies, their version is set to `undefined`,
119
- * which causes them to be removed by `JSON.stringify`.
120
- */
121
- declare function setSpecifier(this: Instance.Any, version: string | Delete): void;
122
- export {};
@@ -1,154 +0,0 @@
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.Instance = void 0;
27
- const Data = __importStar(require("@effect/data/Data"));
28
- const Function_1 = require("@effect/data/Function");
29
- const Option = __importStar(require("@effect/data/Option"));
30
- const delete_1 = require("../get-version-groups/lib/delete");
31
- const _R_1 = require("../lib/$R");
32
- var Instance;
33
- (function (Instance) {
34
- /** An `Instance` whose specifier is a path to a local file or directory */
35
- class FileInstance extends Data.TaggedClass('FileInstance') {
36
- constructor() {
37
- super(...arguments);
38
- this.setSpecifier = setSpecifier;
39
- }
40
- getSemverSpecifier() {
41
- return Option.none();
42
- }
43
- }
44
- Instance.FileInstance = FileInstance;
45
- /** An `Instance` whose specifier is a Git URL */
46
- class HostedGitInstance extends Data.TaggedClass('HostedGitInstance') {
47
- constructor() {
48
- super(...arguments);
49
- this.setSpecifier = setSpecifier;
50
- }
51
- getSemverSpecifier() {
52
- // @TODO: If git tag is semver, return that
53
- return Option.none();
54
- }
55
- }
56
- Instance.HostedGitInstance = HostedGitInstance;
57
- /** An `Instance` whose specifier is a URL to a tarball */
58
- class UrlInstance extends Data.TaggedClass('URLInstance') {
59
- constructor() {
60
- super(...arguments);
61
- this.setSpecifier = setSpecifier;
62
- }
63
- getSemverSpecifier() {
64
- // @TODO: If file name is semver, return that
65
- return Option.none();
66
- }
67
- }
68
- Instance.UrlInstance = UrlInstance;
69
- /** An `Instance` whose specifier is eg "npm:imageoptim-cli@3.1.7" */
70
- class AliasInstance extends Data.TaggedClass('AliasInstance') {
71
- setSpecifier(version) {
72
- if (version === delete_1.DELETE) {
73
- setSpecifier.call(this, version);
74
- }
75
- else {
76
- const subSpec = this.parsedSpecifier.subSpec;
77
- const name = subSpec.name || '';
78
- const specifier = `npm:${name}@${version}`;
79
- setSpecifier.call(this, specifier);
80
- }
81
- }
82
- getSemverSpecifier() {
83
- const subSpec = this.parsedSpecifier.subSpec;
84
- if (['range', 'version'].includes(subSpec.type) && subSpec.fetchSpec !== null) {
85
- return Option.some(subSpec.fetchSpec);
86
- }
87
- return Option.none();
88
- }
89
- }
90
- Instance.AliasInstance = AliasInstance;
91
- /** An `Instance` whose specifier is exact semver */
92
- class VersionInstance extends Data.TaggedClass('VersionInstance') {
93
- constructor() {
94
- super(...arguments);
95
- this.setSpecifier = setSpecifier;
96
- }
97
- getSemverSpecifier() {
98
- return Option.some(this.parsedSpecifier.fetchSpec);
99
- }
100
- }
101
- Instance.VersionInstance = VersionInstance;
102
- /** An `Instance` whose specifier is eg. "*" or "^1.2.3" */
103
- class RangeInstance extends Data.TaggedClass('RangeInstance') {
104
- constructor() {
105
- super(...arguments);
106
- this.setSpecifier = setSpecifier;
107
- }
108
- getSemverSpecifier() {
109
- return Option.some(this.parsedSpecifier.fetchSpec);
110
- }
111
- }
112
- Instance.RangeInstance = RangeInstance;
113
- /** An `Instance` whose specifier is eg. "latest" or "made-up-by-some-dev" */
114
- class TagInstance extends Data.TaggedClass('TagInstance') {
115
- constructor() {
116
- super(...arguments);
117
- this.setSpecifier = setSpecifier;
118
- }
119
- getSemverSpecifier() {
120
- return Option.none();
121
- }
122
- }
123
- Instance.TagInstance = TagInstance;
124
- /** An `Instance` whose specifier is "workspace:*" */
125
- class WorkspaceProtocolInstance extends Data.TaggedClass('WorkspaceProtocolInstance') {
126
- constructor() {
127
- super(...arguments);
128
- this.setSpecifier = setSpecifier;
129
- }
130
- getSemverSpecifier() {
131
- return Option.none();
132
- }
133
- }
134
- Instance.WorkspaceProtocolInstance = WorkspaceProtocolInstance;
135
- /** An `Instance` whose specifier is not supported by npm */
136
- class UnsupportedInstance extends Data.TaggedClass('UnsupportedInstance') {
137
- constructor() {
138
- super(...arguments);
139
- this.setSpecifier = setSpecifier;
140
- }
141
- getSemverSpecifier() {
142
- return Option.none();
143
- }
144
- }
145
- Instance.UnsupportedInstance = UnsupportedInstance;
146
- })(Instance || (exports.Instance = Instance = {}));
147
- /**
148
- * In the case of banned dependencies, their version is set to `undefined`,
149
- * which causes them to be removed by `JSON.stringify`.
150
- */
151
- function setSpecifier(version) {
152
- const file = this.packageJsonFile;
153
- (0, Function_1.pipe)(this.strategy.write(file, [this.name, version]), _R_1.$R.tapErrVerbose);
154
- }
package/dist/lib/$R.d.ts DELETED
@@ -1,12 +0,0 @@
1
- import type { AnyResult } from 'tightrope/fn/types';
2
- import type { Result } from 'tightrope/result';
3
- export declare const $R: {
4
- /**
5
- * Return a single `Ok<output[]>` containing an array of the output of every
6
- * `Result` returned by `getResult(input)` which succeeded, or a single
7
- * `Err<Error>` if none succeeded.
8
- */
9
- onlyOk<Input, Output = Input>(getResult: (value: Input) => Result<Output>): (inputs: Input[]) => Result<Output[]>;
10
- /** Log verbose only when Result is an Err */
11
- tapErrVerbose<T extends AnyResult>(result: T): T;
12
- };
package/dist/lib/$R.js DELETED
@@ -1,34 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.$R = void 0;
4
- const result_1 = require("tightrope/result");
5
- const is_err_1 = require("tightrope/result/is-err");
6
- const unwrap_1 = require("tightrope/result/unwrap");
7
- const log_verbose_1 = require("./log-verbose");
8
- exports.$R = {
9
- /**
10
- * Return a single `Ok<output[]>` containing an array of the output of every
11
- * `Result` returned by `getResult(input)` which succeeded, or a single
12
- * `Err<Error>` if none succeeded.
13
- */
14
- onlyOk(getResult) {
15
- return (inputs) => {
16
- const outputs = [];
17
- for (const value of inputs) {
18
- const result = getResult(value);
19
- if ((0, is_err_1.isErr)(result))
20
- continue;
21
- outputs.push((0, unwrap_1.unwrap)(result));
22
- }
23
- return outputs.length > 0
24
- ? new result_1.Ok(outputs)
25
- : new result_1.Err(new Error('No Ok() returned by $R.onlyOk'));
26
- };
27
- },
28
- /** Log verbose only when Result is an Err */
29
- tapErrVerbose(result) {
30
- if ((0, is_err_1.isErr)(result))
31
- (0, log_verbose_1.logVerbose)(result.value);
32
- return result;
33
- },
34
- };
@@ -1,6 +0,0 @@
1
- import type { AnySemverGroup } from '../get-semver-groups';
2
- import type { AnyVersionGroup } from '../get-version-groups';
3
- export declare const logGroupHeader: {
4
- semverGroup(group: AnySemverGroup, i: number): void;
5
- versionGroup(group: AnyVersionGroup, i: number): void;
6
- };
@@ -1,34 +0,0 @@
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.logGroupHeader = void 0;
7
- const chalk_1 = __importDefault(require("chalk"));
8
- exports.logGroupHeader = {
9
- semverGroup(group, i) {
10
- log(group, 'Semver', i);
11
- },
12
- versionGroup(group, i) {
13
- log(group, 'Version', i);
14
- },
15
- };
16
- function log(group, type, i) {
17
- const customLabel = group.config.label;
18
- const labelWhenDefault = group.isCatchAll === true ? `Default ${type} Group` : '';
19
- const anonymousLabel = `${type} Group ${i + 1}`;
20
- const label = (customLabel || labelWhenDefault || anonymousLabel).trim();
21
- const hasNewLines = label.search(/[\r\n]/) !== -1;
22
- const header = hasNewLines ? formatMultiLine(label) : formatSingleLine(label);
23
- console.log(chalk_1.default.blue(header));
24
- }
25
- function formatSingleLine(label) {
26
- const leftSide = `= ${label} `;
27
- const dividerWidth = 80 - leftSide.length;
28
- const rightSide = dividerWidth > 0 ? '='.repeat(dividerWidth) : '';
29
- return `${leftSide}${rightSide}`;
30
- }
31
- function formatMultiLine(label) {
32
- const reindented = label.replace(/^\s+/gm, ' ');
33
- return `= ${reindented}`;
34
- }
@@ -1 +0,0 @@
1
- export declare function logVerbose(...values: unknown[]): void;
@@ -1,24 +0,0 @@
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.logVerbose = void 0;
7
- const chalk_1 = __importDefault(require("chalk"));
8
- const is_string_1 = require("tightrope/guard/is-string");
9
- const util_1 = require("util");
10
- const constants_1 = require("../constants");
11
- function logVerbose(...values) {
12
- /* istanbul ignore if */
13
- if (process.env.SYNCPACK_VERBOSE) {
14
- console.info(chalk_1.default.yellow(constants_1.ICON.debug), ...values.map((value) => (0, is_string_1.isString)(value)
15
- ? chalk_1.default.yellow(value)
16
- : (0, util_1.inspect)(value, {
17
- colors: true,
18
- compact: true,
19
- depth: 20,
20
- showHidden: false,
21
- })));
22
- }
23
- }
24
- exports.logVerbose = logVerbose;