syncpack 9.8.4 → 10.0.0

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 (212) hide show
  1. package/LICENSE +12 -13
  2. package/README.md +17 -19
  3. package/dist/bin-fix-mismatches/fix-mismatches-cli.d.ts +2 -2
  4. package/dist/bin-fix-mismatches/fix-mismatches-cli.js +3 -1
  5. package/dist/bin-fix-mismatches/fix-mismatches.d.ts +2 -2
  6. package/dist/bin-fix-mismatches/fix-mismatches.js +44 -25
  7. package/dist/bin-format/format-cli.d.ts +2 -2
  8. package/dist/bin-format/format-cli.js +2 -1
  9. package/dist/bin-format/format.d.ts +2 -2
  10. package/dist/bin-format/format.js +7 -4
  11. package/dist/bin-lint-semver-ranges/lint-semver-ranges-cli.d.ts +2 -2
  12. package/dist/bin-lint-semver-ranges/lint-semver-ranges-cli.js +2 -1
  13. package/dist/bin-lint-semver-ranges/lint-semver-ranges.d.ts +2 -2
  14. package/dist/bin-lint-semver-ranges/lint-semver-ranges.js +29 -25
  15. package/dist/bin-list/list-cli.d.ts +2 -2
  16. package/dist/bin-list/list-cli.js +2 -1
  17. package/dist/bin-list/list.d.ts +2 -2
  18. package/dist/bin-list/list.js +58 -52
  19. package/dist/bin-list-mismatches/list-mismatches-cli.d.ts +2 -2
  20. package/dist/bin-list-mismatches/list-mismatches-cli.js +2 -1
  21. package/dist/bin-list-mismatches/list-mismatches.d.ts +2 -2
  22. package/dist/bin-list-mismatches/list-mismatches.js +72 -105
  23. package/dist/bin-set-semver-ranges/set-semver-ranges-cli.d.ts +2 -2
  24. package/dist/bin-set-semver-ranges/set-semver-ranges-cli.js +2 -1
  25. package/dist/bin-set-semver-ranges/set-semver-ranges.d.ts +2 -2
  26. package/dist/bin-set-semver-ranges/set-semver-ranges.js +17 -3
  27. package/dist/config/get-custom-types.d.ts +9 -0
  28. package/dist/config/get-custom-types.js +49 -0
  29. package/dist/config/get-enabled-types.d.ts +3 -0
  30. package/dist/config/get-enabled-types.js +48 -0
  31. package/dist/config/get-filter.d.ts +2 -0
  32. package/dist/config/get-filter.js +13 -0
  33. package/dist/config/get-indent.d.ts +2 -0
  34. package/dist/config/get-indent.js +12 -0
  35. package/dist/config/get-semver-range.d.ts +3 -0
  36. package/dist/config/get-semver-range.js +12 -0
  37. package/dist/config/get-sort-az.d.ts +2 -0
  38. package/dist/config/get-sort-az.js +18 -0
  39. package/dist/config/get-sort-first.d.ts +2 -0
  40. package/dist/config/get-sort-first.js +10 -0
  41. package/dist/config/get-source.d.ts +2 -0
  42. package/dist/config/get-source.js +13 -0
  43. package/dist/config/types.d.ts +106 -0
  44. package/dist/constants.d.ts +1 -0
  45. package/dist/constants.js +1 -0
  46. package/dist/get-context/index.d.ts +8 -16
  47. package/dist/get-context/index.js +8 -31
  48. package/dist/get-package-json-files/get-file-paths.d.ts +13 -0
  49. package/dist/get-package-json-files/get-file-paths.js +30 -0
  50. package/dist/get-package-json-files/get-patterns/get-lerna-patterns.d.ts +3 -0
  51. package/dist/get-package-json-files/get-patterns/get-lerna-patterns.js +17 -0
  52. package/dist/get-package-json-files/get-patterns/get-pnpm-patterns.d.ts +3 -0
  53. package/dist/get-package-json-files/get-patterns/get-pnpm-patterns.js +22 -0
  54. package/dist/get-package-json-files/get-patterns/get-yarn-patterns.d.ts +3 -0
  55. package/dist/get-package-json-files/get-patterns/get-yarn-patterns.js +18 -0
  56. package/dist/get-package-json-files/get-patterns/index.d.ts +10 -0
  57. package/dist/get-package-json-files/get-patterns/index.js +35 -0
  58. package/dist/{get-context/get-package-json-files → get-package-json-files}/get-patterns/read-json-safe.d.ts +3 -4
  59. package/dist/get-package-json-files/get-patterns/read-json-safe.js +14 -0
  60. package/dist/get-package-json-files/get-patterns/read-yaml-safe.d.ts +3 -0
  61. package/dist/get-package-json-files/get-patterns/read-yaml-safe.js +12 -0
  62. package/dist/get-package-json-files/index.d.ts +6 -0
  63. package/dist/get-package-json-files/index.js +18 -0
  64. package/dist/{get-context/get-package-json-files/package-json-file → get-package-json-files}/instance.d.ts +6 -8
  65. package/dist/get-package-json-files/instance.js +23 -0
  66. package/dist/{get-context/get-package-json-files/package-json-file/index.d.ts → get-package-json-files/package-json-file.d.ts} +7 -9
  67. package/dist/get-package-json-files/package-json-file.js +45 -0
  68. package/dist/get-semver-groups/catch-all.d.ts +4 -0
  69. package/dist/get-semver-groups/catch-all.js +11 -0
  70. package/dist/get-semver-groups/filtered-out.d.ts +13 -0
  71. package/dist/get-semver-groups/filtered-out.js +29 -0
  72. package/dist/get-semver-groups/ignored.d.ts +11 -0
  73. package/dist/get-semver-groups/ignored.js +22 -0
  74. package/dist/get-semver-groups/index.d.ts +32 -0
  75. package/dist/get-semver-groups/index.js +90 -0
  76. package/dist/get-semver-groups/with-range.d.ts +11 -0
  77. package/dist/get-semver-groups/with-range.js +55 -0
  78. package/dist/get-version-groups/banned.d.ts +11 -0
  79. package/dist/get-version-groups/banned.js +24 -0
  80. package/dist/get-version-groups/catch-all.d.ts +4 -0
  81. package/dist/get-version-groups/catch-all.js +11 -0
  82. package/dist/get-version-groups/filtered-out.d.ts +13 -0
  83. package/dist/get-version-groups/filtered-out.js +31 -0
  84. package/dist/get-version-groups/ignored.d.ts +11 -0
  85. package/dist/get-version-groups/ignored.js +24 -0
  86. package/dist/get-version-groups/index.d.ts +57 -0
  87. package/dist/get-version-groups/index.js +119 -0
  88. package/dist/get-version-groups/lib/delete.d.ts +2 -0
  89. package/dist/get-version-groups/lib/delete.js +4 -0
  90. package/dist/get-version-groups/lib/get-highest-version.d.ts +2 -0
  91. package/dist/get-version-groups/lib/get-highest-version.js +13 -0
  92. package/dist/get-version-groups/lib/get-lowest-version.d.ts +2 -0
  93. package/dist/get-version-groups/lib/get-lowest-version.js +13 -0
  94. package/dist/{get-context/get-groups/version-group/instance-group → get-version-groups}/lib/get-range-score.js +3 -2
  95. package/dist/get-version-groups/lib/get-unique-versions.d.ts +2 -0
  96. package/dist/get-version-groups/lib/get-unique-versions.js +8 -0
  97. package/dist/get-version-groups/lib/group-by.d.ts +1 -0
  98. package/dist/get-version-groups/lib/group-by.js +11 -0
  99. package/dist/get-version-groups/lib/sort.d.ts +1 -0
  100. package/dist/get-version-groups/lib/sort.js +44 -0
  101. package/dist/get-version-groups/pinned.d.ts +11 -0
  102. package/dist/get-version-groups/pinned.js +43 -0
  103. package/dist/get-version-groups/snapped-to.d.ts +11 -0
  104. package/dist/get-version-groups/snapped-to.js +52 -0
  105. package/dist/get-version-groups/standard.d.ts +11 -0
  106. package/dist/get-version-groups/standard.js +95 -0
  107. package/dist/index.d.ts +2 -0
  108. package/dist/lib/$R.d.ts +12 -0
  109. package/dist/lib/$R.js +34 -0
  110. package/dist/lib/disk.d.ts +3 -2
  111. package/dist/lib/disk.js +1 -1
  112. package/dist/lib/exit-if-invalid.d.ts +2 -2
  113. package/dist/lib/is-semver.d.ts +5 -3
  114. package/dist/lib/is-semver.js +18 -4
  115. package/dist/lib/log.d.ts +4 -8
  116. package/dist/lib/log.js +4 -30
  117. package/dist/lib/set-semver-range.d.ts +2 -2
  118. package/dist/lib/write-if-changed.d.ts +2 -2
  119. package/dist/lib/write-if-changed.js +6 -25
  120. package/dist/strategy/lib/get-non-empty-string-prop.d.ts +3 -0
  121. package/dist/strategy/lib/get-non-empty-string-prop.js +12 -0
  122. package/dist/strategy/name-and-version-props.d.ts +12 -0
  123. package/dist/strategy/name-and-version-props.js +50 -0
  124. package/dist/strategy/named-version-string.d.ts +11 -0
  125. package/dist/strategy/named-version-string.js +53 -0
  126. package/dist/strategy/unnamed-version-string.d.ts +11 -0
  127. package/dist/strategy/unnamed-version-string.js +48 -0
  128. package/dist/strategy/versions-by-name.d.ts +11 -0
  129. package/dist/strategy/versions-by-name.js +29 -0
  130. package/package.json +23 -20
  131. package/dist/get-context/$R.d.ts +0 -13
  132. package/dist/get-context/$R.js +0 -34
  133. package/dist/get-context/get-config/get-core-types.d.ts +0 -36
  134. package/dist/get-context/get-config/get-core-types.js +0 -38
  135. package/dist/get-context/get-config/get-custom-types.d.ts +0 -4
  136. package/dist/get-context/get-config/get-custom-types.js +0 -16
  137. package/dist/get-context/get-config/get-enabled-types.d.ts +0 -4
  138. package/dist/get-context/get-config/get-enabled-types.js +0 -17
  139. package/dist/get-context/get-config/index.d.ts +0 -9
  140. package/dist/get-context/get-config/index.js +0 -91
  141. package/dist/get-context/get-config/path-strategy/index.d.ts +0 -8
  142. package/dist/get-context/get-config/path-strategy/index.js +0 -18
  143. package/dist/get-context/get-config/path-strategy/lib/get-non-empty-string-prop.d.ts +0 -4
  144. package/dist/get-context/get-config/path-strategy/lib/get-non-empty-string-prop.js +0 -11
  145. package/dist/get-context/get-config/path-strategy/name-and-version-props.d.ts +0 -2
  146. package/dist/get-context/get-config/path-strategy/name-and-version-props.js +0 -40
  147. package/dist/get-context/get-config/path-strategy/name-and-version-string.d.ts +0 -2
  148. package/dist/get-context/get-config/path-strategy/name-and-version-string.js +0 -44
  149. package/dist/get-context/get-config/path-strategy/types.d.ts +0 -15
  150. package/dist/get-context/get-config/path-strategy/version-string.d.ts +0 -2
  151. package/dist/get-context/get-config/path-strategy/version-string.js +0 -44
  152. package/dist/get-context/get-config/path-strategy/versions-by-name.d.ts +0 -2
  153. package/dist/get-context/get-config/path-strategy/versions-by-name.js +0 -23
  154. package/dist/get-context/get-config/schema/base-group.d.ts +0 -7
  155. package/dist/get-context/get-config/schema/base-group.js +0 -10
  156. package/dist/get-context/get-config/schema/index.d.ts +0 -1540
  157. package/dist/get-context/get-config/schema/index.js +0 -81
  158. package/dist/get-context/get-config/schema/lib/non-empty-string.d.ts +0 -2
  159. package/dist/get-context/get-config/schema/lib/non-empty-string.js +0 -5
  160. package/dist/get-context/get-config/schema/paths.d.ts +0 -89
  161. package/dist/get-context/get-config/schema/paths.js +0 -33
  162. package/dist/get-context/get-config/schema/semver-group.d.ts +0 -119
  163. package/dist/get-context/get-config/schema/semver-group.js +0 -43
  164. package/dist/get-context/get-config/schema/semver-range.d.ts +0 -2
  165. package/dist/get-context/get-config/schema/semver-range.js +0 -16
  166. package/dist/get-context/get-config/schema/version-group.d.ts +0 -230
  167. package/dist/get-context/get-config/schema/version-group.js +0 -36
  168. package/dist/get-context/get-groups/base-group.d.ts +0 -22
  169. package/dist/get-context/get-groups/base-group.js +0 -39
  170. package/dist/get-context/get-groups/index.d.ts +0 -12
  171. package/dist/get-context/get-groups/index.js +0 -51
  172. package/dist/get-context/get-groups/semver-group.d.ts +0 -15
  173. package/dist/get-context/get-groups/semver-group.js +0 -46
  174. package/dist/get-context/get-groups/version-group/index.d.ts +0 -15
  175. package/dist/get-context/get-groups/version-group/index.js +0 -36
  176. package/dist/get-context/get-groups/version-group/instance-group/get-highest-version.d.ts +0 -3
  177. package/dist/get-context/get-groups/version-group/instance-group/get-highest-version.js +0 -42
  178. package/dist/get-context/get-groups/version-group/instance-group/get-lowest-version.d.ts +0 -3
  179. package/dist/get-context/get-groups/version-group/instance-group/get-lowest-version.js +0 -44
  180. package/dist/get-context/get-groups/version-group/instance-group/index.d.ts +0 -35
  181. package/dist/get-context/get-groups/version-group/instance-group/index.js +0 -88
  182. package/dist/get-context/get-groups/version-group/instance-group/lib/compare-semver.d.ts +0 -4
  183. package/dist/get-context/get-groups/version-group/instance-group/lib/compare-semver.js +0 -38
  184. package/dist/get-context/get-package-json-files/get-file-paths.d.ts +0 -14
  185. package/dist/get-context/get-package-json-files/get-file-paths.js +0 -40
  186. package/dist/get-context/get-package-json-files/get-patterns/get-lerna-patterns.d.ts +0 -4
  187. package/dist/get-context/get-package-json-files/get-patterns/get-lerna-patterns.js +0 -16
  188. package/dist/get-context/get-package-json-files/get-patterns/get-pnpm-patterns.d.ts +0 -4
  189. package/dist/get-context/get-package-json-files/get-patterns/get-pnpm-patterns.js +0 -21
  190. package/dist/get-context/get-package-json-files/get-patterns/get-yarn-patterns.d.ts +0 -4
  191. package/dist/get-context/get-package-json-files/get-patterns/get-yarn-patterns.js +0 -17
  192. package/dist/get-context/get-package-json-files/get-patterns/index.d.ts +0 -11
  193. package/dist/get-context/get-package-json-files/get-patterns/index.js +0 -43
  194. package/dist/get-context/get-package-json-files/get-patterns/lib/get-array-of-strings.d.ts +0 -1
  195. package/dist/get-context/get-package-json-files/get-patterns/lib/get-array-of-strings.js +0 -8
  196. package/dist/get-context/get-package-json-files/get-patterns/props.d.ts +0 -6
  197. package/dist/get-context/get-package-json-files/get-patterns/props.js +0 -24
  198. package/dist/get-context/get-package-json-files/get-patterns/read-json-safe.js +0 -17
  199. package/dist/get-context/get-package-json-files/get-patterns/read-yaml-safe.d.ts +0 -4
  200. package/dist/get-context/get-package-json-files/get-patterns/read-yaml-safe.js +0 -11
  201. package/dist/get-context/get-package-json-files/index.d.ts +0 -7
  202. package/dist/get-context/get-package-json-files/index.js +0 -16
  203. package/dist/get-context/get-package-json-files/package-json-file/index.js +0 -63
  204. package/dist/get-context/get-package-json-files/package-json-file/instance.js +0 -46
  205. package/dist/lib/error.d.ts +0 -12
  206. package/dist/lib/error.js +0 -25
  207. package/dist/types.d.ts +0 -90
  208. /package/dist/{get-context/get-config/path-strategy → config}/types.js +0 -0
  209. /package/dist/{get-context/get-groups/version-group/instance-group → get-version-groups}/lib/clean.d.ts +0 -0
  210. /package/dist/{get-context/get-groups/version-group/instance-group → get-version-groups}/lib/clean.js +0 -0
  211. /package/dist/{get-context/get-groups/version-group/instance-group → get-version-groups}/lib/get-range-score.d.ts +0 -0
  212. /package/dist/{types.js → index.js} +0 -0
@@ -1,22 +0,0 @@
1
- import type { Syncpack } from '../../types';
2
- import type { PackageJsonFile } from '../get-package-json-files/package-json-file';
3
- import type { Instance } from '../get-package-json-files/package-json-file/instance';
4
- export declare class BaseGroup<T extends Syncpack.Config.SemverGroup.Any | Syncpack.Config.VersionGroup.Any> {
5
- /** Full config for this run of syncpack */
6
- syncpackConfig: Syncpack.Config.Private;
7
- /** The original config which created this `SemverGroup` */
8
- groupConfig: T;
9
- /** Instances which belong to this group */
10
- instances: Instance[];
11
- /** Instances which belong to this group, keyed by their .name property */
12
- instancesByName: Record<string, Instance[]>;
13
- /** Is this the catch-all group, not defined by the user? */
14
- isDefault: boolean;
15
- /** All package.json files */
16
- packageJsonFiles: PackageJsonFile[];
17
- constructor(config: Syncpack.Config.Private, group: T, packageJsonFiles: PackageJsonFile[]);
18
- /** Can this instance be added to this group? */
19
- canAdd(instance: Instance): boolean;
20
- /** Add this instance to this group */
21
- add(instance: Instance): void;
22
- }
@@ -1,39 +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.BaseGroup = void 0;
7
- const is_non_empty_array_1 = require("expect-more/dist/is-non-empty-array");
8
- const minimatch_1 = __importDefault(require("minimatch"));
9
- class BaseGroup {
10
- constructor(config, group, packageJsonFiles) {
11
- this.groupConfig = group;
12
- this.instances = [];
13
- this.instancesByName = {};
14
- this.isDefault =
15
- group === config.defaultSemverGroup ||
16
- group === config.defaultVersionGroup;
17
- this.packageJsonFiles = packageJsonFiles;
18
- this.syncpackConfig = config;
19
- }
20
- /** Can this instance be added to this group? */
21
- canAdd(instance) {
22
- const { dependencies, dependencyTypes, packages } = this.groupConfig;
23
- return ((!(0, is_non_empty_array_1.isNonEmptyArray)(dependencyTypes) ||
24
- dependencyTypes.includes(instance.pathDef.name)) &&
25
- (!(0, is_non_empty_array_1.isNonEmptyArray)(packages) ||
26
- packages.some((pattern) => (0, minimatch_1.default)(instance.pkgName, pattern))) &&
27
- (!(0, is_non_empty_array_1.isNonEmptyArray)(dependencies) ||
28
- dependencies.some((pattern) => (0, minimatch_1.default)(instance.name, pattern))));
29
- }
30
- /** Add this instance to this group */
31
- add(instance) {
32
- if (!this.instancesByName[instance.name]) {
33
- this.instancesByName[instance.name] = [];
34
- }
35
- this.instancesByName[instance.name]?.push(instance);
36
- this.instances.push(instance);
37
- }
38
- }
39
- exports.BaseGroup = BaseGroup;
@@ -1,12 +0,0 @@
1
- import { R } from '@mobily/ts-belt';
2
- import { BaseError } from '../../lib/error';
3
- import type { Syncpack } from '../../types';
4
- import type { PackageJsonFile } from '../get-package-json-files/package-json-file';
5
- import { SemverGroup } from './semver-group';
6
- import { VersionGroup } from './version-group';
7
- interface GroupsByPropName {
8
- semverGroups: SemverGroup[];
9
- versionGroups: VersionGroup[];
10
- }
11
- export declare function getGroups(config: Syncpack.Config.Private, packageJsonFiles: PackageJsonFile[]): R.Result<GroupsByPropName, BaseError>;
12
- export {};
@@ -1,51 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getGroups = void 0;
4
- const ts_belt_1 = require("@mobily/ts-belt");
5
- const error_1 = require("../../lib/error");
6
- const log_1 = require("../../lib/log");
7
- const sort_by_name_1 = require("../../lib/sort-by-name");
8
- const semver_group_1 = require("./semver-group");
9
- const version_group_1 = require("./version-group");
10
- function getGroups(config, packageJsonFiles) {
11
- const ERR_CREATING_GROUPS = 'Error creating semver and version groups';
12
- return (0, ts_belt_1.pipe)(ts_belt_1.R.fromExecution(() => unsafeGetGroups(config, packageJsonFiles)), ts_belt_1.R.mapError(error_1.BaseError.map(ERR_CREATING_GROUPS)));
13
- }
14
- exports.getGroups = getGroups;
15
- function unsafeGetGroups(config, packageJsonFiles) {
16
- const groupsByName = {
17
- semverGroups: config.semverGroups.map((group) => new semver_group_1.SemverGroup(config, group, packageJsonFiles)),
18
- versionGroups: config.versionGroups.map((group) => new version_group_1.VersionGroup(config, group, packageJsonFiles)),
19
- };
20
- const groupNames = Object.keys(groupsByName);
21
- const instances = packageJsonFiles
22
- .flatMap((pkg) => pkg.getInstances())
23
- .sort(sort_by_name_1.sortByName);
24
- instances.forEach((instance) => {
25
- const { name, pkgName } = instance;
26
- groupNames.forEach((key) => {
27
- for (const group of groupsByName[key]) {
28
- if (group.canAdd(instance)) {
29
- group.add(instance);
30
- return;
31
- }
32
- }
33
- throw new Error(`${name} in ${pkgName} did not match any ${key}`);
34
- });
35
- });
36
- /* istanbul ignore if */
37
- if (process.env.SYNCPACK_VERBOSE) {
38
- groupNames.forEach((key) => {
39
- groupsByName[key].forEach((group, i) => {
40
- const size = group.instances.length;
41
- const ref = `${key}[${group.isDefault ? 'default' : i}]`;
42
- (0, log_1.verbose)(`${ref} has ${size} instances`);
43
- group.instances.forEach(({ name, pathDef, version, packageJsonFile }) => {
44
- const shortPath = packageJsonFile.shortPath;
45
- (0, log_1.verbose)(`${ref} ← ${name}@${version} in ${pathDef.path} of ${shortPath}`);
46
- });
47
- });
48
- });
49
- }
50
- return groupsByName;
51
- }
@@ -1,15 +0,0 @@
1
- import type { Syncpack } from '../../types';
2
- import type { Instance } from '../get-package-json-files/package-json-file/instance';
3
- import { BaseGroup } from './base-group';
4
- type MismatchesByName = [string, Instance[]];
5
- export declare class SemverGroup extends BaseGroup<Syncpack.Config.SemverGroup.Any> {
6
- getExpectedVersion(instance: Instance): string;
7
- /** Does this `Instance` have a version which does not follow the rules? */
8
- isMismatch(instance: Instance): boolean;
9
- /** 1+ `Instance` has a version which does not follow the rules */
10
- hasMismatches(): boolean;
11
- isIgnored(): boolean;
12
- /** Get every `Instance` with a version which does not follow the rules */
13
- getMismatches(): MismatchesByName[];
14
- }
15
- export {};
@@ -1,46 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SemverGroup = void 0;
4
- const is_semver_1 = require("../../lib/is-semver");
5
- const set_semver_range_1 = require("../../lib/set-semver-range");
6
- const base_group_1 = require("./base-group");
7
- class SemverGroup extends base_group_1.BaseGroup {
8
- getExpectedVersion(instance) {
9
- const version = instance.version;
10
- // leave ignored versions alone
11
- if (this.isIgnored())
12
- return version;
13
- // leave unsupported versions alone
14
- if (!(0, is_semver_1.isSemver)(version))
15
- return version;
16
- // version property of package.json must always be exact
17
- if (instance.isWorkspace())
18
- return (0, set_semver_range_1.setSemverRange)('', version);
19
- // otherwise we can change it
20
- const range = this.groupConfig.range;
21
- return (0, set_semver_range_1.setSemverRange)(range, version);
22
- }
23
- /** Does this `Instance` have a version which does not follow the rules? */
24
- isMismatch(instance) {
25
- return instance.version !== this.getExpectedVersion(instance);
26
- }
27
- /** 1+ `Instance` has a version which does not follow the rules */
28
- hasMismatches() {
29
- return this.getMismatches().length > 0;
30
- }
31
- isIgnored() {
32
- return this.groupConfig.isIgnored === true;
33
- }
34
- /** Get every `Instance` with a version which does not follow the rules */
35
- getMismatches() {
36
- return this.isIgnored()
37
- ? []
38
- : Object.entries(this.instancesByName)
39
- .map(([name, instances]) => [
40
- name,
41
- instances.filter((instance) => this.isMismatch(instance)),
42
- ])
43
- .filter(([, arr]) => arr.length > 0);
44
- }
45
- }
46
- exports.SemverGroup = SemverGroup;
@@ -1,15 +0,0 @@
1
- import { O } from '@mobily/ts-belt';
2
- import type { Syncpack } from '../../../types';
3
- import { BaseGroup } from '../base-group';
4
- import { InstanceGroup } from './instance-group';
5
- export declare class VersionGroup extends BaseGroup<Syncpack.Config.VersionGroup.Any> {
6
- isBanned(): boolean;
7
- isIgnored(): boolean;
8
- hasSnappedToPackages(): boolean;
9
- getSnappedToPackages(): O.Option<string[]>;
10
- getAllInstanceGroups(): InstanceGroup[];
11
- getInvalidInstanceGroups(): InstanceGroup[];
12
- getPinnedVersion(): O.Option<string>;
13
- /** Is `pinVersion` defined and this group does not match that version? */
14
- isUnpinned(): boolean;
15
- }
@@ -1,36 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.VersionGroup = void 0;
4
- const ts_belt_1 = require("@mobily/ts-belt");
5
- const expect_more_1 = require("expect-more");
6
- const is_non_empty_string_1 = require("expect-more/dist/is-non-empty-string");
7
- const base_group_1 = require("../base-group");
8
- const instance_group_1 = require("./instance-group");
9
- class VersionGroup extends base_group_1.BaseGroup {
10
- isBanned() {
11
- return this.groupConfig.isBanned === true;
12
- }
13
- isIgnored() {
14
- return this.groupConfig.isIgnored === true;
15
- }
16
- hasSnappedToPackages() {
17
- return ts_belt_1.O.isSome(this.getSnappedToPackages());
18
- }
19
- getSnappedToPackages() {
20
- return ts_belt_1.O.fromPredicate(this.groupConfig.snapTo, expect_more_1.isArrayOfStrings);
21
- }
22
- getAllInstanceGroups() {
23
- return Object.entries(this.instancesByName).map(([name, instances]) => new instance_group_1.InstanceGroup(this, name, instances));
24
- }
25
- getInvalidInstanceGroups() {
26
- return this.getAllInstanceGroups().filter((group) => group.isInvalid());
27
- }
28
- getPinnedVersion() {
29
- return ts_belt_1.O.fromPredicate(this.groupConfig.pinVersion, is_non_empty_string_1.isNonEmptyString);
30
- }
31
- /** Is `pinVersion` defined and this group does not match that version? */
32
- isUnpinned() {
33
- return (0, ts_belt_1.pipe)(this.getPinnedVersion(), ts_belt_1.O.map((pinVersion) => this.instances.some((o) => o.version !== pinVersion)), ts_belt_1.O.getWithDefault(false));
34
- }
35
- }
36
- exports.VersionGroup = VersionGroup;
@@ -1,3 +0,0 @@
1
- import { R } from '@mobily/ts-belt';
2
- import { BaseError } from '../../../../lib/error';
3
- export declare function getHighestVersion(versions: string[]): R.Result<string, BaseError>;
@@ -1,42 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getHighestVersion = void 0;
4
- const ts_belt_1 = require("@mobily/ts-belt");
5
- const error_1 = require("../../../../lib/error");
6
- const clean_1 = require("./lib/clean");
7
- const compare_semver_1 = require("./lib/compare-semver");
8
- const get_range_score_1 = require("./lib/get-range-score");
9
- function getHighestVersion(versions) {
10
- let highest;
11
- for (const withRange of versions) {
12
- switch ((0, compare_semver_1.compareGt)(withRange, highest?.semver)) {
13
- // highest possible, quit early
14
- case '*': {
15
- return ts_belt_1.R.Ok(withRange);
16
- }
17
- // impossible to know how the user wants to resolve unsupported versions
18
- case 'invalid': {
19
- return ts_belt_1.R.Error(new error_1.BaseError(`"${withRange}" is not supported`));
20
- }
21
- // we found a new highest version
22
- case 'gt': {
23
- highest = newHighestVersion(withRange);
24
- continue;
25
- }
26
- // versions are the same, but one range might be greedier than another
27
- case 'eq': {
28
- const score = (0, get_range_score_1.getRangeScore)(withRange);
29
- const highestScore = (0, get_range_score_1.getRangeScore)(`${highest?.withRange}`);
30
- if (score > highestScore)
31
- highest = newHighestVersion(withRange);
32
- }
33
- }
34
- }
35
- return highest && highest.withRange
36
- ? ts_belt_1.R.Ok(highest.withRange)
37
- : ts_belt_1.R.Error(new error_1.BaseError(`getHighestVersion(): did not return a version`));
38
- }
39
- exports.getHighestVersion = getHighestVersion;
40
- function newHighestVersion(withRange) {
41
- return { withRange, semver: (0, clean_1.clean)(withRange) };
42
- }
@@ -1,3 +0,0 @@
1
- import { R } from '@mobily/ts-belt';
2
- import { BaseError } from '../../../../lib/error';
3
- export declare function getLowestVersion(versions: string[]): R.Result<string, BaseError>;
@@ -1,44 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getLowestVersion = void 0;
4
- const ts_belt_1 = require("@mobily/ts-belt");
5
- const error_1 = require("../../../../lib/error");
6
- const clean_1 = require("./lib/clean");
7
- const compare_semver_1 = require("./lib/compare-semver");
8
- const get_range_score_1 = require("./lib/get-range-score");
9
- function getLowestVersion(versions) {
10
- let lowest;
11
- for (const withRange of versions) {
12
- switch ((0, compare_semver_1.compareLt)(withRange, lowest?.semver)) {
13
- // lowest possible, quit early
14
- case '*': {
15
- if (!lowest)
16
- lowest = { withRange: '*', semver: '*' };
17
- continue;
18
- }
19
- // impossible to know how the user wants to resolve unsupported versions
20
- case 'invalid': {
21
- return ts_belt_1.R.Error(new error_1.BaseError(`"${withRange}" is not supported`));
22
- }
23
- // we found a new lowest version
24
- case 'lt': {
25
- lowest = newLowestVersion(withRange);
26
- continue;
27
- }
28
- // versions are the same, but one range might be greedier than another
29
- case 'eq': {
30
- const score = (0, get_range_score_1.getRangeScore)(withRange);
31
- const lowestScore = (0, get_range_score_1.getRangeScore)(`${lowest?.withRange}`);
32
- if (score < lowestScore)
33
- lowest = newLowestVersion(withRange);
34
- }
35
- }
36
- }
37
- return lowest && lowest.withRange
38
- ? ts_belt_1.R.Ok(lowest.withRange)
39
- : ts_belt_1.R.Error(new error_1.BaseError(`getLowestVersion(): did not return a version`));
40
- }
41
- exports.getLowestVersion = getLowestVersion;
42
- function newLowestVersion(withRange) {
43
- return { withRange, semver: (0, clean_1.clean)(withRange) };
44
- }
@@ -1,35 +0,0 @@
1
- import { O, R } from '@mobily/ts-belt';
2
- import type { VersionGroup } from '..';
3
- import { BaseError } from '../../../../lib/error';
4
- import type { Instance } from '../../../get-package-json-files/package-json-file/instance';
5
- export declare const DELETE: unique symbol;
6
- export type Delete = typeof DELETE;
7
- /** Every `Instance` of eg `"lodash"` for a given `VersionGroup` */
8
- export declare class InstanceGroup {
9
- /** Every package/pathName location where this dependency was found */
10
- instances: Instance[];
11
- /** @example `"lodash"` */
12
- name: string;
13
- /** The `VersionGroup` which this `InstanceGroup` belongs to */
14
- versionGroup: VersionGroup;
15
- constructor(versionGroup: VersionGroup, name: string, instances: Instance[]);
16
- hasUnsupportedVersion(): boolean;
17
- getUniqueVersions(): string[];
18
- hasMismatchingVersions(): boolean;
19
- isInvalid(): boolean;
20
- getExpectedVersion(): R.Result<string | Delete, BaseError>;
21
- /** If all versions are valid semver, return the newest one */
22
- getHighestVersion(): R.Result<string, BaseError>;
23
- /** If all versions are valid semver, return the lowest one */
24
- getLowestVersion(): R.Result<string, BaseError>;
25
- /** Get the first version matched by the `snapTo` packages */
26
- getSnappedVersion(): R.Result<string, BaseError>;
27
- /** Is `snapTo` defined and this group does not match that version? */
28
- isUnsnapped(): R.Result<boolean, BaseError>;
29
- /** Get version of dependency which is developed in this monorepo */
30
- getWorkspaceVersion(): R.Result<string, BaseError>;
31
- /** Find instance of this dependency which is developed in this monorepo */
32
- getWorkspaceInstance(): O.Option<Instance>;
33
- /** Is an instance of this dependency developed in this monorepo? */
34
- hasWorkspaceInstance(): boolean;
35
- }
@@ -1,88 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.InstanceGroup = exports.DELETE = void 0;
4
- const ts_belt_1 = require("@mobily/ts-belt");
5
- const expect_more_1 = require("expect-more");
6
- const error_1 = require("../../../../lib/error");
7
- const is_semver_1 = require("../../../../lib/is-semver");
8
- const print_strings_1 = require("../../../../lib/print-strings");
9
- const props_1 = require("../../../get-package-json-files/get-patterns/props");
10
- const get_highest_version_1 = require("./get-highest-version");
11
- const get_lowest_version_1 = require("./get-lowest-version");
12
- exports.DELETE = Symbol('DELETE');
13
- /** Every `Instance` of eg `"lodash"` for a given `VersionGroup` */
14
- class InstanceGroup {
15
- constructor(versionGroup, name, instances) {
16
- this.instances = instances;
17
- this.name = name;
18
- this.versionGroup = versionGroup;
19
- }
20
- hasUnsupportedVersion() {
21
- return this.instances.some((obj) => !(0, is_semver_1.isSemver)(obj.version));
22
- }
23
- getUniqueVersions() {
24
- return Array.from(new Set(this.instances.map((obj) => obj.version))).sort();
25
- }
26
- hasMismatchingVersions() {
27
- return this.getUniqueVersions().length > 1;
28
- }
29
- isInvalid() {
30
- return this.versionGroup.isIgnored()
31
- ? false
32
- : this.versionGroup.isBanned() ||
33
- this.versionGroup.isUnpinned() ||
34
- this.hasMismatchingVersions();
35
- }
36
- getExpectedVersion() {
37
- const versionGroup = this.versionGroup;
38
- if (versionGroup.isBanned())
39
- return ts_belt_1.R.Ok(exports.DELETE);
40
- if (versionGroup.isUnpinned())
41
- return (0, ts_belt_1.pipe)(versionGroup.getPinnedVersion(), ts_belt_1.O.toResult(new error_1.BaseError(`${this.name} is in a versionGroup with pinVersion configuration, but the pinVersion value is not valid`)));
42
- if (versionGroup.hasSnappedToPackages() && ts_belt_1.R.getExn(this.isUnsnapped()))
43
- return this.getSnappedVersion();
44
- if (this.hasWorkspaceInstance())
45
- return this.getWorkspaceVersion();
46
- if (this.hasUnsupportedVersion()) {
47
- return ts_belt_1.R.Error(new error_1.BaseError(`${this.name} contains unsupported versions: ${(0, print_strings_1.printStrings)(this.getUniqueVersions())}`));
48
- }
49
- return versionGroup.groupConfig.preferVersion ===
50
- 'lowestSemver'
51
- ? this.getLowestVersion()
52
- : this.getHighestVersion();
53
- }
54
- /** If all versions are valid semver, return the newest one */
55
- getHighestVersion() {
56
- return (0, get_highest_version_1.getHighestVersion)(this.getUniqueVersions());
57
- }
58
- /** If all versions are valid semver, return the lowest one */
59
- getLowestVersion() {
60
- return (0, get_lowest_version_1.getLowestVersion)(this.getUniqueVersions());
61
- }
62
- /** Get the first version matched by the `snapTo` packages */
63
- getSnappedVersion() {
64
- return (0, ts_belt_1.pipe)(this.versionGroup.getSnappedToPackages(), ts_belt_1.O.flatMap((pkgNames) => ts_belt_1.O.fromFalsy(this.instances
65
- .filter(({ pkgName }) => pkgNames.includes(pkgName))
66
- .map(({ version }) => version)
67
- .find(Boolean))), ts_belt_1.O.filter(expect_more_1.isNonEmptyString), ts_belt_1.O.toResult(new error_1.BaseError(`${this.name} is in a versionGroup with snapTo configuration, but ${this.name} was not found in those packages`)));
68
- }
69
- /** Is `snapTo` defined and this group does not match that version? */
70
- isUnsnapped() {
71
- return this.versionGroup.hasSnappedToPackages()
72
- ? (0, ts_belt_1.pipe)(this.getSnappedVersion(), ts_belt_1.R.map((nextVersion) => this.instances.some(({ version }) => version !== nextVersion)))
73
- : ts_belt_1.R.Ok(false);
74
- }
75
- /** Get version of dependency which is developed in this monorepo */
76
- getWorkspaceVersion() {
77
- return (0, ts_belt_1.pipe)(this.getWorkspaceInstance(), (0, props_1.props)('packageJsonFile.contents.version', expect_more_1.isNonEmptyString), ts_belt_1.O.toResult(new error_1.BaseError(`Expected to find a package.json file developed in this monorepo with a "name" property of "${this.name}" and a valid "version" property`)));
78
- }
79
- /** Find instance of this dependency which is developed in this monorepo */
80
- getWorkspaceInstance() {
81
- return ts_belt_1.O.fromFalsy(this.instances.find(({ pathDef }) => pathDef.name === 'workspace'));
82
- }
83
- /** Is an instance of this dependency developed in this monorepo? */
84
- hasWorkspaceInstance() {
85
- return (0, ts_belt_1.pipe)(this.getWorkspaceInstance(), ts_belt_1.O.toUndefined) !== undefined;
86
- }
87
- }
88
- exports.InstanceGroup = InstanceGroup;
@@ -1,4 +0,0 @@
1
- /** Is this next version to be inspected higher than the current highest? */
2
- export declare function compareGt(next: string, highest: string | undefined): '*' | 'invalid' | 'gt' | 'lt' | 'eq';
3
- /** Is this next version to be inspected lower than the current lowest? */
4
- export declare function compareLt(next: string, lowest: string | undefined): '*' | 'invalid' | 'gt' | 'lt' | 'eq';
@@ -1,38 +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.compareLt = exports.compareGt = void 0;
7
- const gt_1 = __importDefault(require("semver/functions/gt"));
8
- const lt_1 = __importDefault(require("semver/functions/lt"));
9
- const is_semver_1 = require("../../../../../lib/is-semver");
10
- const clean_1 = require("./clean");
11
- /** Is this next version to be inspected higher than the current highest? */
12
- function compareGt(next, highest) {
13
- if (next === '*')
14
- return '*';
15
- if (!(0, is_semver_1.isSemver)(next))
16
- return 'invalid';
17
- if (!highest || (0, gt_1.default)((0, clean_1.clean)(next), highest))
18
- return 'gt';
19
- if ((0, lt_1.default)((0, clean_1.clean)(next), highest))
20
- return 'lt';
21
- return 'eq';
22
- }
23
- exports.compareGt = compareGt;
24
- /** Is this next version to be inspected lower than the current lowest? */
25
- function compareLt(next, lowest) {
26
- if (next === '*')
27
- return '*';
28
- if (!(0, is_semver_1.isSemver)(next))
29
- return 'invalid';
30
- if (lowest === '*')
31
- return 'lt';
32
- if (!lowest || (0, lt_1.default)((0, clean_1.clean)(next), lowest))
33
- return 'lt';
34
- if ((0, gt_1.default)((0, clean_1.clean)(next), lowest))
35
- return 'gt';
36
- return 'eq';
37
- }
38
- exports.compareLt = compareLt;
@@ -1,14 +0,0 @@
1
- import { R } from '@mobily/ts-belt';
2
- import type { Disk } from '../../lib/disk';
3
- import { BaseError } from '../../lib/error';
4
- import type { Syncpack } from '../../types';
5
- type SafeFilePaths = R.Result<string[], BaseError>;
6
- /**
7
- * Using --source options and/or config files on disk from npm/pnpm/yarn/lerna,
8
- * return an array of absolute paths to every package.json file the user is
9
- * working with.
10
- *
11
- * @returns Array of absolute file paths to package.json files
12
- */
13
- export declare function getFilePaths(disk: Disk, program: Syncpack.Config.SyncpackRc): SafeFilePaths;
14
- export {};
@@ -1,40 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getFilePaths = void 0;
4
- const ts_belt_1 = require("@mobily/ts-belt");
5
- const is_array_of_strings_1 = require("expect-more/dist/is-array-of-strings");
6
- const is_empty_array_1 = require("expect-more/dist/is-empty-array");
7
- const _R_1 = require("../$R");
8
- const error_1 = require("../../lib/error");
9
- const print_strings_1 = require("../../lib/print-strings");
10
- const get_patterns_1 = require("./get-patterns");
11
- /**
12
- * Using --source options and/or config files on disk from npm/pnpm/yarn/lerna,
13
- * return an array of absolute paths to every package.json file the user is
14
- * working with.
15
- *
16
- * @returns Array of absolute file paths to package.json files
17
- */
18
- function getFilePaths(disk, program) {
19
- return (0, ts_belt_1.pipe)(program, (0, get_patterns_1.getPatterns)(disk), ts_belt_1.R.flatMap(resolvePatterns));
20
- function resolvePatterns(patterns) {
21
- const quoted = (0, print_strings_1.printStrings)(patterns);
22
- const ERR_NO_MATCH = `No package.json files matched the patterns: ${quoted}`;
23
- return (0, ts_belt_1.pipe)(patterns, _R_1.$R.onlyOk(resolvePattern), ts_belt_1.R.mapError(error_1.BaseError.map(ERR_NO_MATCH)), ts_belt_1.R.map((0, ts_belt_1.flow)(ts_belt_1.A.flat, ts_belt_1.A.uniq, removeReadonlyType)));
24
- }
25
- function resolvePattern(pattern) {
26
- const ERR_GLOB_MISS = `No package.json files match pattern "${pattern}"`;
27
- const ERR_INVALID = `"glob" returned unexpected data on pattern "${pattern}"`;
28
- const ERR_GLOB_THROW = `"glob" threw on pattern "${pattern}"`;
29
- return (0, ts_belt_1.pipe)(ts_belt_1.R.fromExecution(() => disk.globSync(pattern)), ts_belt_1.R.mapError(error_1.BaseError.map(ERR_GLOB_THROW)), ts_belt_1.R.flatMap((filePaths) => (0, is_empty_array_1.isEmptyArray)(filePaths)
30
- ? ts_belt_1.R.Error(new error_1.BaseError(ERR_GLOB_MISS))
31
- : (0, is_array_of_strings_1.isArrayOfStrings)(filePaths)
32
- ? ts_belt_1.R.Ok((0, ts_belt_1.pipe)(filePaths, ts_belt_1.A.flat, ts_belt_1.A.uniq, removeReadonlyType))
33
- : ts_belt_1.R.Error(new error_1.BaseError(ERR_INVALID))));
34
- }
35
- /** Remove unwanted readonly type */
36
- function removeReadonlyType(value) {
37
- return value;
38
- }
39
- }
40
- exports.getFilePaths = getFilePaths;
@@ -1,4 +0,0 @@
1
- import { R } from '@mobily/ts-belt';
2
- import type { Disk } from '../../../lib/disk';
3
- import { BaseError } from '../../../lib/error';
4
- export declare function getLernaPatterns(disk: Disk): () => R.Result<string[], BaseError>;
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getLernaPatterns = void 0;
4
- const ts_belt_1 = require("@mobily/ts-belt");
5
- const path_1 = require("path");
6
- const constants_1 = require("../../../constants");
7
- const error_1 = require("../../../lib/error");
8
- const get_array_of_strings_1 = require("./lib/get-array-of-strings");
9
- const read_json_safe_1 = require("./read-json-safe");
10
- function getLernaPatterns(disk) {
11
- const getPackages = (0, get_array_of_strings_1.getArrayOfStrings)('packages');
12
- return function getLernaPatterns() {
13
- return (0, ts_belt_1.pipe)((0, path_1.join)(constants_1.CWD, 'lerna.json'), (0, read_json_safe_1.readJsonSafe)(disk), ts_belt_1.R.flatMap(({ contents }) => (0, ts_belt_1.pipe)(getPackages(contents), ts_belt_1.O.toResult(new error_1.BaseError('no lerna patterns found')))));
14
- };
15
- }
16
- exports.getLernaPatterns = getLernaPatterns;
@@ -1,4 +0,0 @@
1
- import { R } from '@mobily/ts-belt';
2
- import type { Disk } from '../../../lib/disk';
3
- import { BaseError } from '../../../lib/error';
4
- export declare function getPnpmPatterns(disk: Disk): () => R.Result<string[], BaseError>;
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getPnpmPatterns = void 0;
4
- const ts_belt_1 = require("@mobily/ts-belt");
5
- const path_1 = require("path");
6
- const constants_1 = require("../../../constants");
7
- const error_1 = require("../../../lib/error");
8
- const get_array_of_strings_1 = require("./lib/get-array-of-strings");
9
- const read_yaml_safe_1 = require("./read-yaml-safe");
10
- const getPackages = (0, get_array_of_strings_1.getArrayOfStrings)('packages');
11
- function getPnpmPatterns(disk) {
12
- return function getPnpmPatterns() {
13
- return (0, ts_belt_1.pipe)(
14
- // packages:
15
- // - "packages/**"
16
- // - "components/**"
17
- // - "!**/test/**"
18
- (0, path_1.join)(constants_1.CWD, 'pnpm-workspace.yaml'), (0, read_yaml_safe_1.readYamlSafe)(disk), ts_belt_1.R.flatMap((packageJson) => (0, ts_belt_1.pipe)(getPackages(packageJson), ts_belt_1.O.match(ts_belt_1.F.identity, () => getPackages(packageJson)), ts_belt_1.O.toResult(new error_1.BaseError('no pnpm patterns found')))));
19
- };
20
- }
21
- exports.getPnpmPatterns = getPnpmPatterns;
@@ -1,4 +0,0 @@
1
- import { R } from '@mobily/ts-belt';
2
- import type { Disk } from '../../../lib/disk';
3
- import { BaseError } from '../../../lib/error';
4
- export declare function getYarnPatterns(disk: Disk): () => R.Result<string[], BaseError>;
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getYarnPatterns = void 0;
4
- const ts_belt_1 = require("@mobily/ts-belt");
5
- const path_1 = require("path");
6
- const constants_1 = require("../../../constants");
7
- const error_1 = require("../../../lib/error");
8
- const get_array_of_strings_1 = require("./lib/get-array-of-strings");
9
- const read_json_safe_1 = require("./read-json-safe");
10
- function getYarnPatterns(disk) {
11
- const getPackages = (0, get_array_of_strings_1.getArrayOfStrings)('workspaces');
12
- const getPackagesNested = (0, get_array_of_strings_1.getArrayOfStrings)('workspaces.packages');
13
- return function getYarnPatterns() {
14
- return (0, ts_belt_1.pipe)((0, path_1.join)(constants_1.CWD, 'package.json'), (0, read_json_safe_1.readJsonSafe)(disk), ts_belt_1.R.flatMap(({ contents }) => (0, ts_belt_1.pipe)(getPackages(contents), ts_belt_1.O.match(ts_belt_1.F.identity, () => getPackagesNested(contents)), ts_belt_1.O.toResult(new error_1.BaseError('no yarn patterns found')))));
15
- };
16
- }
17
- exports.getYarnPatterns = getYarnPatterns;